WinXP tcp ignores window size setting

M

Mats

Hello,

Network
XP Prof FTP Server ---- 1 Mbit/s wireless -------- XP Prof, FTP client
The Round Trip Time (RTT) is about 125ms, i.e. the tcp window size should be
at least 1Mbps * 125ms = 15,6kB

Problem
- tcp window size is correctly negotiated (e.g. 128kB) in the tcp syn
messages at the beginning of e.g. a FTP session.
- During the data transfer, tcp only uses up to ca. 6kB and waits until the
accks are received from the FTP client.

Below is a typical trace extracted from a WireShark trace on the FTP server.
Frame 31760, 31761 an 31762 are send with high speed and than tcp waits 124
ms until the acks are received. Due to these pauses, only about 20% of the
available bandwidth is used. (UDP uses 100% of the available bandwidth.)

31760 214.542589: Send, 64395
31761 214.542591: Send, 65537
31762 214.542921: Send, 66947
31763 214.656427: Ack, winSize = 66947 - 64395 = 2552 Bytes, AckDelay =
000.113838
31766 214.659753: Send, 68357
31767 214.676404: Ack, winSize = 68357 - 66947 = 1410 Bytes, AckDelay =
000.133483
31771 214.681036: Send, 69633
31772 214.681306: Send, 71043
31773 214.796140: Ack, winSize = 71043 - 69633 = 1410 Bytes, AckDelay =
000.115104
31778 214.802790: Send, 72453
31779 214.802791: Send, 73729
31780 214.802792: Send, 75139
31781 214.926274: Ack, winSize = 75139 - 72453 = 2686 Bytes, AckDelay =
000.123484
31785 214.931598: Send, 76549
31786 214.931600: Send, 77825
31787 214.956236: Ack, winSize = 77825 - 75139 = 2686 Bytes, AckDelay =
000.153444
31791 214.961553: Send, 79235
31792 214.961885: Send, 80645
31793 215.056412: Ack, winSize = 80645 - 76549 = 4096 Bytes, AckDelay =
000.124814
31796 215.059407: Send, 81921
31797 215.076382: Ack, winSize = 81921 - 79235 = 2686 Bytes, AckDelay =
000.114829
31802 215.083040: Send, 83331
31803 215.083042: Send, 84741
31804 215.083043: Send, 86017
31805 215.166581: Ack, winSize = 86017 - 81921 = 4096 Bytes, AckDelay =
000.107174
31809 215.171910: Send, 87427
31810 215.172243: Send, 88837

In Microsoft TechNet:
http://technet2.microsoft.com/windo...8b46-4870-a83e-8032637a87c81033.mspx?mfr=true

I have found

"TcpWindowSize
.....
The stack also tunes itself based on the media speed:
- Below 1 Mbps: 8 KB
- 1 Mbps 100 Mbps: 17 KB
- Greater than 100 Mbps: 64 KB"

- Is this true for a WinXP professional? The tcp window size depends on the
RTT and media speed - not only media speed.
- If true, the theoretical max bandwidth is 8kB * 8 bit / 125ms = 512kbps -
never 100% of the vailable bandwidth! (In my case less because of packet loss)
- Is it possible to disable this "tuning"?

Regards, Mats
 
M

Mats

Hello again,

SP3 has been installed - exactly the same problem. TCP sends about 6KB and
waits for acknowledge. Due to the gaps, only about 20% of the availsble 1Mbps
is used.

Regards, Mats
 
M

Mats

Hello,

instead of the FTP server on WinXP Prof, I have now used aFTP on a SUSE
Linux 9.3 PC. About 1Mbps is achieved, i.e. 100% of the available bandwidth
is used. The listing below (extracted from a WireShark trace), you can see
that the window increases as expected.
Frame 3095 acknowldeges the packet 1154791 and 32430 bytes have not not been
acknowledged yet, i.e. the current send window is 32430 bytes.

3060 690.517982: Ack, winSize = 1151971 - 1126591 = 25380 Bytes, AckDelay =
000.237313
3061 690.517983: Send, 1153381
3062 690.519985: Ack, winSize = 1153381 - 1129411 = 23970 Bytes, AckDelay =
000.228333
3063 690.519986: Send, 1154791
3064 690.520315: Send, 1156201
3065 690.520319: Send, 1157611
3066 690.522473: Send, 1159021
3067 690.524472: Send, 1160431
3068 690.526470: Send, 1161841
3069 690.526471: Send, 1163251
3070 690.527467: Ack, winSize = 1163251 - 1132231 = 31020 Bytes, AckDelay =
000.232487
3071 690.530463: Send, 1164661
3072 690.531462: Send, 1166071
3073 690.547771: Ack, winSize = 1166071 - 1135051 = 31020 Bytes, AckDelay =
000.226496
3074 690.550769: Send, 1167481
3075 690.551766: Send, 1168891
3076 690.588052: Ack, winSize = 1168891 - 1137871 = 31020 Bytes, AckDelay =
000.246141
3077 690.591046: Send, 1170301
3078 690.592042: Send, 1171711
3079 690.597039: Ack, winSize = 1171711 - 1140691 = 31020 Bytes, AckDelay =
000.245809
3080 690.598699: Ack, winSize = 1171711 - 1143511 = 28200 Bytes, AckDelay =
000.217513
3081 690.600029: Send, 1173121
3082 690.602358: Send, 1174531
3083 690.604360: Send, 1175941
3084 690.604364: Send, 1177351
3085 690.604687: Send, 1178761
3086 690.607686: Ack, winSize = 1178761 - 1146331 = 32430 Bytes, AckDelay =
000.196537
3087 690.611017: Send, 1180171
3088 690.612012: Send, 1181581
3089 690.627994: Ack, winSize = 1181581 - 1149151 = 32430 Bytes, AckDelay =
000.116004
3090 690.630985: Send, 1182991
3091 690.631982: Send, 1184401
3092 690.657620: Ack, winSize = 1184401 - 1151971 = 32430 Bytes, AckDelay =
000.141636
3093 690.660609: Send, 1185811
3094 690.661602: Send, 1187221
3095 690.677577: Ack, winSize = 1187221 - 1154791 = 32430 Bytes, AckDelay =
000.157591
3096 690.679241: Ack, winSize = 1187221 - 1157611 = 29610 Bytes, AckDelay =
000.158922
3097 690.680573: Send, 1188631
3098 690.681904: Send, 1190041
3099 690.683901: Send, 1191451
3100 690.684899: Send, 1192861
3101 690.687229: Ack, winSize = 1192861 - 1160431 = 32430 Bytes, AckDelay =
000.162757
 
M

Mats

Hello,

on the winXP PC a virtual machine (VMware) has been installed. The virtual
machine is running a native Linux (Unbuntu) with a FTP-server (vsftp), i.e
the winXP FTP server (192.168.2.10) and the Linux FTP server (192.168.2.20)
are running at the same time on the same PC to get the same environment.
Results:

1) Linux tcp (see traces below)
- tcp send window increases to about 70kB
- 140 kByte/s
- packets not fragmented

2) WinXP tcp (see traces below)
- tcp send window increases to max 6kB - the values defined in the registry
are ignored
- 45kByte/s, i.e. only about 33% of the available bandwidth
- packets fragmented

3) The results have been compared with a UMTS modem (wireless) sending from
a winXP to a FTP server (put). In case 1 and 2 above the connection is a
cable to the wireless network.
- tcp send window increases to about 50kB
- 1Mbit/s
- packets fragmented

Is the reason for the bad results in case 2 compared to 3 that a Lan
connection on the winXP is used and winXP therefore assumes small delays
(<1ms)?


1) Linux tcp
55369 1571.646695: 192.168.2.103 Ack, winSize = 48181 - 32121 = 16060 Bytes,
AckDelay = 000.216005
55371 1571.650358: 192.168.2.20 Send, 49641 Len: 1460 SendDelay=000.137126
55373 1571.651690: 192.168.2.20 Send, 51101 Len: 1460 SendDelay=000.001332
55375 1571.652688: 192.168.2.20 Send, 52561 Len: 1460 SendDelay=000.000998
55376 1571.746549: 192.168.2.103 Ack, winSize = 52561 - 33581 = 18980 Bytes,
AckDelay = 000.314528
55378 1571.750209: 192.168.2.20 Send, 54021 Len: 1460 SendDelay=000.097521
55380 1571.751207: 192.168.2.20 Send, 55481 Len: 1460 SendDelay=000.000998
55381 1571.757864: 192.168.2.103 Ack, winSize = 55481 - 36501 = 18980 Bytes,
AckDelay = 000.297551
55382 1571.767180: 192.168.2.103 Ack, winSize = 55481 - 39421 = 16060 Bytes,
AckDelay = 000.304539
55383 1571.768844: 192.168.2.103 Ack, winSize = 55481 - 42341 = 13140 Bytes,
AckDelay = 000.282573
55385 1571.770178: 192.168.2.20 Send, 56941 Len: 1460 SendDelay=000.018971
55387 1571.772840: 192.168.2.20 Send, 58401 Len: 1460 SendDelay=000.002662
55389 1571.774837: 192.168.2.20 Send, 59861 Len: 1460 SendDelay=000.001997
55391 1571.777834: 192.168.2.20 Send, 61321 Len: 1460 SendDelay=000.002997
55393 1571.779831: 192.168.2.20 Send, 62781 Len: 1460 SendDelay=000.001997
55395 1571.779834: 192.168.2.20 Send, 64241 Len: 1460 SendDelay=000.000003
55397 1571.780164: 192.168.2.20 Send, 65701 Len: 1460 SendDelay=000.000330
55399 1571.780166: 192.168.2.20 Send, 67161 Len: 1460 SendDelay=000.000002
55401 1571.780170: 192.168.2.20 Send, 68621 Len: 1460 SendDelay=000.000004
55402 1571.787041: 192.168.2.103 Ack, winSize = 68621 - 45261 = 23360 Bytes,
AckDelay = 000.276139
55404 1571.791039: 192.168.2.20 Send, 70081 Len: 1460 SendDelay=000.010869
55406 1571.792370: 192.168.2.20 Send, 71541 Len: 1460 SendDelay=000.001331
55408 1571.793367: 192.168.2.20 Send, 73001 Len: 1460 SendDelay=000.000997
55409 1571.797360: 192.168.2.103 Ack, winSize = 73001 - 48181 = 24820 Bytes,
AckDelay = 000.284128
55410 1571.798691: 192.168.2.103 Ack, winSize = 73001 - 51101 = 21900 Bytes,
AckDelay = 000.147001
55412 1571.806349: 192.168.2.20 Send, 74461 Len: 1460 SendDelay=000.012982
55414 1571.809678: 192.168.2.20 Send, 75921 Len: 1460 SendDelay=000.003329

2) winXP tcp, cable to wireless network
32038 492.363217: 192.168.2.10 Send, 62901 Len: 1460 SendDelay=000.087871
32040 492.364217: 192.168.2.10 Send, 64361 Len: 1460 SendDelay=000.001000
32041 492.365212: 192.168.2.10 Send, 65537 Len: 1176 SendDelay=000.000995
32042 492.371868: 192.168.2.103 Ack, winSize = 65537 - 60265 = 5272 Bytes,
AckDelay = 000.097518
32043 492.439439: 192.168.2.103 Ack, winSize = 65537 - 62901 = 2636 Bytes,
AckDelay = 000.076222
32045 492.443097: 192.168.2.10 Send, 66997 Len: 1460 SendDelay=000.077885
32047 492.444095: 192.168.2.10 Send, 68457 Len: 1460 SendDelay=000.000998
32048 492.445091: 192.168.2.10 Send, 69633 Len: 1176 SendDelay=000.000996
32049 492.460735: 192.168.2.103 Ack, winSize = 69633 - 64361 = 5272 Bytes,
AckDelay = 000.096518
32050 492.519654: 192.168.2.103 Ack, winSize = 69633 - 66997 = 2636 Bytes,
AckDelay = 000.076557
32052 492.522981: 192.168.2.10 Send, 71093 Len: 1460 SendDelay=000.077890
32054 492.524313: 192.168.2.10 Send, 72553 Len: 1460 SendDelay=000.001332

3) winXP UMTS modem (wireless)
118 6.769531: 172.30.14.124 Send, 75049 Len: 1460 SendDelay=000.000000
119 6.789063: 10.8.16.119 Ack, winSize = 75049 - 38549 = 36500 Bytes,
AckDelay = 000.140625
120 6.789063: 172.30.14.124 Send, 76509 Len: 1460 SendDelay=000.019532
121 6.789063: 172.30.14.124 Send, 77969 Len: 1460 SendDelay=000.000000
122 6.792969: 172.30.14.124 Send, 79429 Len: 1460 SendDelay=000.003906
123 6.808594: 10.8.16.119 Ack, winSize = 79429 - 41469 = 37960 Bytes,
AckDelay = 000.148438
124 6.808594: 172.30.14.124 Send, 80889 Len: 1460 SendDelay=000.015625
125 6.808594: 172.30.14.124 Send, 82349 Len: 1460 SendDelay=000.000000
126 6.812500: 172.30.14.124 Send, 83809 Len: 1460 SendDelay=000.003906
127 6.828125: 10.8.16.119 Ack, winSize = 83809 - 44389 = 39420 Bytes,
AckDelay = 000.160156
128 6.828125: 172.30.14.124 Send, 85269 Len: 1460 SendDelay=000.015625
129 6.828125: 172.30.14.124 Send, 86729 Len: 1460 SendDelay=000.000000
130 6.832031: 172.30.14.124 Send, 88189 Len: 1460 SendDelay=000.003906
131 6.847656: 10.8.16.119 Ack, winSize = 88189 - 47309 = 40880 Bytes,
AckDelay = 000.167968
132 6.847656: 172.30.14.124 Send, 89649 Len: 1460 SendDelay=000.015625
133 6.847656: 172.30.14.124 Send, 91109 Len: 1460 SendDelay=000.000000
134 6.851563: 172.30.14.124 Send, 92569 Len: 1460 SendDelay=000.003907
135 6.871094: 10.8.16.119 Ack, winSize = 92569 - 50229 = 42340 Bytes,
AckDelay = 000.183594
136 6.871094: 172.30.14.124 Send, 94029 Len: 1460 SendDelay=000.019531
137 6.871094: 172.30.14.124 Send, 95489 Len: 1460 SendDelay=000.000000
138 6.875000: 172.30.14.124 Send, 96769 Len: 1280 SendDelay=000.003906
139 6.890625: 10.8.16.119 Ack, winSize = 96769 - 53149 = 43620 Bytes,
AckDelay = 000.191406
140 6.890625: 172.30.14.124 Send, 98229 Len: 1460 SendDelay=000.015625
141 6.890625: 172.30.14.124 Send, 99689 Len: 1460 SendDelay=000.000000
142 6.890625: 172.30.14.124 Send, 99841 Len: 152 SendDelay=000.000000
143 6.894531: 172.30.14.124 Send, 101301 Len: 1460 SendDelay=000.003906
144 6.910156: 10.8.16.119 Ack, winSize = 101301 - 56069 = 45232 Bytes,
AckDelay = 000.199218
145 6.910156: 172.30.14.124 Send, 102401 Len: 1100 SendDelay=000.015625
146 6.910156: 172.30.14.124 Send, 103861 Len: 1460 SendDelay=000.000000
147 6.910156: 172.30.14.124 Send, 103937 Len: 76 SendDelay=000.000000
148 6.914063: 172.30.14.124 Send, 105397 Len: 1460 SendDelay=000.003907
149 6.914063: 172.30.14.124 Send, 105473 Len: 76 SendDelay=000.000000
150 6.929688: 10.8.16.119 Ack, winSize = 105473 - 58989 = 46484 Bytes,
AckDelay = 000.210938
151 6.929688: 172.30.14.124 Send, 106933 Len: 1460 SendDelay=000.015625
152 6.929688: 172.30.14.124 Send, 107009 Len: 76 SendDelay=000.000000
153 6.933594: 172.30.14.124 Send, 108469 Len: 1460 SendDelay=000.003906
154 6.933594: 172.30.14.124 Send, 108545 Len: 76 SendDelay=000.000000
155 6.949219: 10.8.16.119 Ack, winSize = 108545 - 61909 = 46636 Bytes,
AckDelay = 000.218750
156 6.949219: 172.30.14.124 Send, 110005 Len: 1460 SendDelay=000.015625
157 6.949219: 172.30.14.124 Send, 110081 Len: 76 SendDelay=000.000000
158 6.968750: 10.8.16.119 Ack, winSize = 110081 - 64829 = 45252 Bytes,
AckDelay = 000.230469
159 6.968750: 172.30.14.124 Send, 111105 Len: 1024 SendDelay=000.019531
160 6.968750: 172.30.14.124 Send, 112565 Len: 1460 SendDelay=000.000000
161 6.972656: 172.30.14.124 Send, 112641 Len: 76 SendDelay=000.003906
162 6.972656: 172.30.14.124 Send, 114101 Len: 1460 SendDelay=000.000000
163 6.972656: 172.30.14.124 Send, 114177 Len: 76 SendDelay=000.000000
164 6.988281: 10.8.16.119 Ack, winSize = 114177 - 67749 = 46428 Bytes,
AckDelay = 000.238281
165 6.988281: 172.30.14.124 Send, 115637 Len: 1460 SendDelay=000.015625
166 6.988281: 172.30.14.124 Send, 115713 Len: 76 SendDelay=000.000000
167 6.992188: 172.30.14.124 Send, 117173 Len: 1460 SendDelay=000.003907
168 6.992188: 172.30.14.124 Send, 117249 Len: 76 SendDelay=000.000000
169 7.007813: 10.8.16.119 Ack, winSize = 117249 - 70669 = 46580 Bytes,
AckDelay = 000.250000
170 7.007813: 172.30.14.124 Send, 118709 Len: 1460 SendDelay=000.015625
171 7.007813: 172.30.14.124 Send, 118785 Len: 76 SendDelay=000.000000
172 7.011719: 172.30.14.124 Send, 120245 Len: 1460 SendDelay=000.003906
173 7.011719: 172.30.14.124 Send, 120321 Len: 76 SendDelay=000.000000
174 7.027344: 10.8.16.119 Ack, winSize = 120321 - 73589 = 46732 Bytes,
AckDelay = 000.257813
175 7.027344: 172.30.14.124 Send, 121781 Len: 1460 SendDelay=000.015625
176 7.027344: 172.30.14.124 Send, 121857 Len: 76 SendDelay=000.000000
177 7.078125: 10.8.16.119 Ack, winSize = 121857 - 76509 = 45348 Bytes,
AckDelay = 000.289062
178 7.078125: 172.30.14.124 Send, 122881 Len: 1024 SendDelay=000.050781
179 7.078125: 172.30.14.124 Send, 124341 Len: 1460 SendDelay=000.000000
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top