Jump to content

Problem TCP/IP Performance über WAN


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

hoffe mal das hier jemand schon Erfahrung hat.

 

Verbindung:

 

1) Client (XP SP2) und Server (2003 SP1) über WAN Latency ca. 20 ms

2) Client (XP SP2) und Client (XP SP2) über cross over Kabel

 

HP Netzwerkarten auf Clients und Server!

 

Probelm:

 

Druch die Latency veringert sich die Performance des Datendurchsatzes.

 

Versuchte Lösung:

 

Testweise erhöhung folgende 2 Parameter:

 

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

 

DWORD TcpWindowSize 524280 = decimal

 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

 

DWORD Tcp1323Opts 3 = decimal

 

 

Testbericht:

 

Keine Veränderung der Performance sowohl von Client zu Server als auch von Client zu Client.

 

Ich habe das ganze mal mit protokoliert und mir ist vorallem aufgefallen, dass trozt des setzens der Parameter in der Registry kein scaling (siehe Window: 65535 (scale factor not found) durchgeführt wir.

 

Kann mir das jemand erklären oder mir ein Hinweis senden wo der Hund begraben sein könnte?

 

Anbei das Log:

 

Frame:

- Ethernet: Etype = Internet IP (IPv4)

- DestinationAddress: Compaq Computer Corporation E958FE

IG: (0.......) Individual address

UL: (.0......) Universally Administered Address

Rsv: (..000000)

- SourceAddress: Hewlett Packard 3C1358

UL: .0...... Universally Administered Address

EthernetType: Internet IP (IPv4), 2048(0x800)

UnkownData: Binary Large Object (6 Bytes)

- Ipv4: Next Protocol = TCP, Packet ID = 20699, Total IP Length = 40

- Versions: IPv4, Internet Protocol; Header Length = 20

Version: (0100....) IPv4, Internet Protocol

HeaderLength: (....0101) 20 bytes (0x5)

- DifferentiatedServicesField: DSCP: 0, ECN: 0

DSCP: (000000..) Differentiated services codepoint 0

ECT: (......0.) ECN-Capable Transport not set

CE: (.......0) ECN-CE not set

TotalLength: 40 (0x28)

Identification: 20699 (0x50DB)

- FragmentFlags: 16384 (0x4000)

Reserved: (0...............)

DF: (.1..............) Do not fragment

MF: (..0.............) This is the last fragment

Offset: (...0000000000000) 0

TimeToLive: 128 (0x80)

NextProtocol: TCP, 6(0x6)

Checksum: 20419 (0x4FC3)

SourceAddress: 172.23.1.1

DestinationAddress: 172.23.1.2

- Tcp: Flags=....A..., SrcPort=Microsoft-DS(445), DstPort=1106, Len=0, Seq=1531078484, Ack=671147358, Win=65535 (scale factor not found)

SrcPort: Microsoft-DS(445)

DstPort: 1106

SequenceNumber: 1531078484 (0x5B426754)

AcknowledgementNumber: 671147358 (0x2800E55E)

- DataOffset: 80 (0x50)

DataOffset: (0101....) (20 bytes)

Reserved: (....000.)

NS: (.......0) Nonce Sum not significant

- Flags: ....A...

CWR: (0.......) CWR not significant

ECE: (.0......) ECN-Echo not significant

Urgent: (..0.....) Not Urgent Data

Ack: (...1....) Acknowledgement field significant

Push: (....0...) No Push Function

Reset: (.....0..) No Reset

Syn: (......0.) Not Synchronize sequence numbers

Fin: (.......0) Not End of data

Window: 65535 (scale factor not found)

Checksum: 32670 (0x7F9E)

UrgentPointer: 0 (0x0)

 

 

LG Jerome

Link zu diesem Kommentar

Hm so schlecht ist die Latenz mit 20ms garnicht.... ohne deinen Trace genau gelesen zu haben würde ich mal mit den Treiber experimentieren, sprich auf den neusten Stand bringen.

 

Druch die Latency veringert sich die Performance des Datendurchsatzes.

 

Kannst du das quantifizieren? Was geht denn wirklich durch die Leitung? Wie misst du das? Weisst ja, wer misst misst Mist...

Link zu diesem Kommentar

Danke Sammy

 

Die Latenz ist mit 20 ms über WAN tatsächlich nicht schlecht aber darum geht es mir auch gar nicht. Mit 20 ms hat man durch den Aufbau von TCP/IP jedoch automatisch eine veringerte Bandbreitenausnützung.

 

Beispiel:

 

True Flow Control Windows Size 70080 Bytes (das konnte ich ja mitschniffen Window: 65535 (scale factor not found)

 

bei 1ms max Durchsatz 560 Mbps

bei 5ms max Durchsatz 112 Mbps

bei 10ms max Durchsatz 56 Mbps

bei 20ms max Durchsatz 28 Mbps

 

Das ganze ist auch durch eine Auswertung durch einen Netzwerksniffer "IT Guru" mit einer Analyse bestätigt worden.

 

Mein Problem ist, das Windows XP und Windows 2003 die Windows Size bis 65535 automatisch erweitert bei Bedarf.Windows TCP/IP unterstütz jedoch Scaling womit ich den Windows Size erweitern kann bis zu einem Faktor X um den Durchsatz der mir durch die Latency verloren geht wieder zu kompensieren.

 

Genau das funktioniert bei mir leider nicht habe mir bereits die Netzwerktreiber angeschaut aber nicht wirklich ein Problem festgestellt.

 

Falls noch jemand eine Idee hat einfach her damit :-)

 

Was muss gegeben sein das windows ein scaling betreibt?

Vielleicht gibts ja hier jemand der das bewußt einsetzt.

(Mit Google gibts da wirklich wenig)

Link zu diesem Kommentar
Mit 20 ms hat man durch den Aufbau von TCP/IP jedoch automatisch eine veringerte Bandbreitenausnützung.

 

Beispiel:

 

True Flow Control Windows Size 70080 Bytes (das konnte ich ja mitschniffen Window: 65535 (scale factor not found)

 

bei 1ms max Durchsatz 560 Mbps

bei 5ms max Durchsatz 112 Mbps

bei 10ms max Durchsatz 56 Mbps

bei 20ms max Durchsatz 28 Mbps

 

das musst du mir erklaeren...vor allem wie du auf die Werte kommst...

 

Mein Problem ist, das Windows XP und Windows 2003 die Windows Size bis 65535 automatisch erweitert bei Bedarf.Windows TCP/IP unterstütz jedoch Scaling womit ich den Windows Size erweitern kann bis zu einem Faktor X um den Durchsatz der mir durch die Latency verloren geht wieder zu kompensieren.

Die Window Size wird von der eigentlichen Applikation bestimmt und gibt die groesse des Empfangspuffers an... ich weiss nicht genau was du mit scaling meinst. Meinst du vielleicht congestion control?

Link zu diesem Kommentar

Das PDF das ich hier habe ist zu groß.

 

Aber folgende links erklären in etwa was ich machen möchte: (Fensterskalierung)

 

Description of Windows 2000 and Windows Server 2003 TCP Features

(am Ende des artikels gibt es zusätzlich noch ein Download link für TCP/IP bei Windows)

 

Enabling High Performance Data Transfers [PSC]

 

LG Jerome

Link zu diesem Kommentar

Hm interessant... mit den TCP Options hatte ich mich noch nie beschäftigt.

 

Wenn ich das bei meiner WinXP und W2K3 Kiste setze scheinen die TCP Options gesetzt zu werden. Sprich DWORD Tcp1323Opts 3 = decimal und die Window Size habe ich gelassen wie sie war... Mir ist noch nicht klar, wo ich den eigentlichen Skailierungsfaktor setzen kann...

 

Hab das noch gefunden vielleicht hilfts ja... TCP Receive Window Size and Window Scaling

 

Werd morgen weiterexperimentieren...

Link zu diesem Kommentar

Also, bei mir hat das wunderbar funktioniert...habe für die WindowSize ein Vielfaches der MSS (1460 Byte) genommen, also:

 

44 x 1460 = 64240 x 2^2 = 256960

 

Client:

TcpWindowSize Dword dezimal = 256960

Tcp1323Opts Dword dezimal = 3

 

Server:

TcpWindowSize Dword dezimal = 256960

Tcp1323Opts Dword dezimal = 3

 

GlobalMaxTcpWindowSize="256960" hat bei mir keine Wirkung gezeigt...

 

windowscalezn4.th.jpg

 

Versuch mal die gleichen Werte wie ich zu verwenden!

Link zu diesem Kommentar

@Squire WAN Wide Area Network in diesem Fall ein SDH Ring mit 100 MBits und einer Latency auf der Strecke mit ca. 20ms.

 

@Sammy Vielen Dank ich komme der Sache deutlich näher. Man(n) sieht wieder 4 Augen sind besser als 2.

 

Ich habe das ganze auch mal mit Deinen Werten nachgestellt.

 

44 x 1460 = 64240 x 2^2 = 256960

 

Client:

TcpWindowSize Dword dezimal = 256960

Tcp1323Opts Dword dezimal = 3

 

Server:

Einträge sind beim Empfänger nicht notwendig laut meinen Tests bei Windows 2003.

TcpWindowSize Dword dezimal = 256960

Tcp1323Opts Dword dezimal = 3

 

Ich habe das ganze mal mit Telnet und FTP überprüft und siehe da scaling wurde gemacht.

Danach habe ich mir vom Client ein Server Share gemountet und Daten vom Client auf den Server kopiert.

Hier wurde kein scaling gemacht. :-(

 

So wie es für mich aussieht muss auch die dahinter stehende Anwendung dieses scaling unterstützen und da Share mounten und Daten kopieren wohl über NetBios (ohne scaling Unterstützung) läuft funktioniert das ganze für diesen Einsatzzweck nicht!

 

Falls jemand bei einem weiteren Test was anderes Feststellt oder Workaround kennt gerne her damit.

Link zu diesem Kommentar

http://www.ietf.org/rfc/rfc1323.txt Abschnitt 2.1

 

...

The scale factor is carried in a new TCP option, Window

Scale. This option is sent only in a SYN segment (a segment with

the SYN bit on), hence the window scale is fixed in each direction

when a connection is opened.

...

 

und weiter unten

 

...

This option is an offer, not a promise; both sides must send

Window Scale options in their SYN segments to enable window

scaling in either direction.

...

 

Window Scaling spielt sich nicht auf dem Application Layer ab sondern auf dem Transport Layer und sollte somit unabhängig von NetBIOS sein.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...