TCP Dup ACK Linux kernel 3.2

1

Eu estou baixando muito lentamente em alguns servidores que hospedamos quando usamos HTTPS no Debian 8.1 kernel 3.16.0-4-amd64 Apache 2.4.10-10

A arquitetura é: CLIENTE X.X.X.X = > NAT NO FIREWALL: Y.Y.Y.Y = > HTTP (S) WEB SERVER LAN IP: 10.254.248.101

Teste com HTTPS:

wget --no-check-certificate https://Y.Y.Y.Y/test/debian-8.5.0-amd64-netinst.iso
debian-8.5.0-amd64-netinst.iso.5            0%[      ] 632.00K  15.5KB/s   eta 4h 30m

Ao executar o rastreamento tcpdump no servidor (rastrear abaixo), o cliente X.X.X.X solicita que 10.254.248.101 reenvie o pacote várias vezes. O servidor aguarda quase 4 segundos para reenviar o pacote solicitado pelo cliente. É por isso que estou baixando tão lentamente no servidor. O que eu não entendo é por que o servidor leva tanto tempo para reenviar o pacote. Há algo de novo no kernel Kernel 3 para TCP? Algo novo no Apache 2.4? Algo que o FIREWALL não é capaz de gerenciar?

Observe que não temos esse problema nesses casos:

  • Ao usar HTTP (sem TLS) (teste abaixo).
  • Quando os clientes vêm de ISP com maior latência (200 a 250 ms) para o nosso datacenter.
  • Com a mesma arquitetura, o mesmo certificado SSL, mas o kernel Linux mais antigo 2.6 e mais antigo apache 2.2.16-6.
  • Quando colocamos o WEB SERVER antes do firewall com IP pulic: CLIENTE X.X.X.X = > Y.Y.Y.Y.

Teste com HTTP:

wget http://Y.Y.Y.Y//test/debian-8.5.0-amd64-netinst.iso
debian-8.5.0-amd64-netinst.iso.6           35%[=============================>   ]  86.53M  1.34MB/s   eta 2m 2s

Rastreamento do servidor:

366 7.930488    X.X.X.X 10.254.248.101  66  TCP 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668402 TSecr=44657604
369 7.931293    X.X.X.X 10.254.248.101  78  TCP [TCP Dup ACK 366#1] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668402 TSecr=44657604 SLE=3546403322 SRE=3546404710
370 7.933094    X.X.X.X 10.254.248.101  78  TCP [TCP Dup ACK 366#2] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668402 TSecr=44657604 SLE=3546403322 SRE=3546406098
371 7.933984    X.X.X.X 10.254.248.101  78  TCP [TCP Dup ACK 366#3] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668402 TSecr=44657604 SLE=3546403322 SRE=3546407486
372 7.934031    X.X.X.X 10.254.248.101  78  TCP [TCP Dup ACK 366#4] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668402 TSecr=44657604 SLE=3546403322 SRE=3546408874
373 7.935729    X.X.X.X 10.254.248.101  78  TCP [TCP Dup ACK 366#5] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668403 TSecr=44657604 SLE=3546403322 SRE=3546410262
374 7.936154    X.X.X.X 10.254.248.101  78  TCP [TCP Dup ACK 366#6] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668403 TSecr=44657604 SLE=3546403322 SRE=3546411650
375 7.937320    X.X.X.X 10.254.248.101  78  TCP [TCP Dup ACK 366#7] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668403 TSecr=44657604 SLE=3546403322 SRE=3546413038
376 7.938613    X.X.X.X 10.254.248.101  86  TCP [TCP Dup ACK 366#8] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668403 TSecr=44657604 SLE=3546414426 SRE=3546415814 SLE=3546403322 SRE=3546413038
377 7.940425    X.X.X.X 10.254.248.101  86  TCP [TCP Dup ACK 366#9] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668403 TSecr=44657604 SLE=3546414426 SRE=3546417202 SLE=3546403322 SRE=3546413038
378 7.941661    X.X.X.X 10.254.248.101  86  TCP [TCP Dup ACK 366#10] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668403 TSecr=44657604 SLE=3546414426 SRE=3546418590 SLE=3546403322 SRE=3546413038
379 7.942561    X.X.X.X 10.254.248.101  86  TCP [TCP Dup ACK 366#11] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668403 TSecr=44657604 SLE=3546414426 SRE=3546419978 SLE=3546403322 SRE=3546413038
380 7.943155    X.X.X.X 10.254.248.101  86  TCP [TCP Dup ACK 366#12] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668403 TSecr=44657604 SLE=3546414426 SRE=3546421366 SLE=3546403322 SRE=3546413038
381 7.945145    X.X.X.X 10.254.248.101  86  TCP [TCP Dup ACK 366#13] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668403 TSecr=44657604 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
382 7.945992    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#14] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668403 TSecr=44657604 SLE=3546424142 SRE=3546425530 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
383 7.946974    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#15] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668403 TSecr=44657604 SLE=3546424142 SRE=3546426918 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
384 7.948476    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#16] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668404 TSecr=44657604 SLE=3546424142 SRE=3546428306 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
385 7.949704    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#17] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668404 TSecr=44657604 SLE=3546424142 SRE=3546429694 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
386 7.950628    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#18] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668404 TSecr=44657604 SLE=3546424142 SRE=3546431082 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
387 7.951890    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#19] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668404 TSecr=44657604 SLE=3546424142 SRE=3546432470 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
388 7.953365    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#20] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668404 TSecr=44657604 SLE=3546424142 SRE=3546433858 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
389 7.954028    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#21] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668404 TSecr=44657604 SLE=3546424142 SRE=3546435246 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
390 7.955327    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#22] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668404 TSecr=44657604 SLE=3546424142 SRE=3546436634 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
391 7.956139    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#23] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668404 TSecr=44657604 SLE=3546424142 SRE=3546438022 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
392 7.957504    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#24] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668404 TSecr=44657604 SLE=3546424142 SRE=3546439410 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
393 7.958271    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#25] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668404 TSecr=44657604 SLE=3546424142 SRE=3546440798 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
394 7.963017    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#26] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668404 TSecr=44657604 SLE=3546424142 SRE=3546442186 SLE=3546414426 SRE=3546422754 SLE=3546403322 SRE=3546413038
395 7.963080    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#27] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668405 TSecr=44657604 SLE=3546443574 SRE=3546444962 SLE=3546424142 SRE=3546442186 SLE=3546414426 SRE=3546422754
396 7.963091    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#28] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668405 TSecr=44657604 SLE=3546443574 SRE=3546446350 SLE=3546424142 SRE=3546442186 SLE=3546414426 SRE=3546422754
397 7.963127    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#29] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668405 TSecr=44657604 SLE=3546443574 SRE=3546447738 SLE=3546424142 SRE=3546442186 SLE=3546414426 SRE=3546422754
398 7.963912    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#30] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668405 TSecr=44657604 SLE=3546443574 SRE=3546449126 SLE=3546424142 SRE=3546442186 SLE=3546414426 SRE=3546422754
399 7.965634    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#31] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668405 TSecr=44657604 SLE=3546443574 SRE=3546450514 SLE=3546424142 SRE=3546442186 SLE=3546414426 SRE=3546422754
400 7.966653    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#32] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668405 TSecr=44657604 SLE=3546443574 SRE=3546451902 SLE=3546424142 SRE=3546442186 SLE=3546414426 SRE=3546422754
401 7.967402    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#33] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668405 TSecr=44657604 SLE=3546443574 SRE=3546453290 SLE=3546424142 SRE=3546442186 SLE=3546414426 SRE=3546422754
402 7.968499    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#34] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668405 TSecr=44657604 SLE=3546443574 SRE=3546454678 SLE=3546424142 SRE=3546442186 SLE=3546414426 SRE=3546422754
403 7.969984    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#35] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668405 TSecr=44657604 SLE=3546443574 SRE=3546456066 SLE=3546424142 SRE=3546442186 SLE=3546414426 SRE=3546422754
404 7.971168    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#36] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668405 TSecr=44657604 SLE=3546443574 SRE=3546457454 SLE=3546424142 SRE=3546442186 SLE=3546414426 SRE=3546422754
405 7.972479    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#37] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668406 TSecr=44657604 SLE=3546443574 SRE=3546458842 SLE=3546424142 SRE=3546442186 SLE=3546414426 SRE=3546422754
406 7.973633    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#38] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668406 TSecr=44657604 SLE=3546460230 SRE=3546461618 SLE=3546443574 SRE=3546458842 SLE=3546424142 SRE=3546442186
407 7.974609    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#39] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668406 TSecr=44657604 SLE=3546460230 SRE=3546463006 SLE=3546443574 SRE=3546458842 SLE=3546424142 SRE=3546442186
408 7.975828    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#40] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668406 TSecr=44657604 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842 SLE=3546424142 SRE=3546442186
409 7.976604    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#41] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668406 TSecr=44657604 SLE=3546465782 SRE=3546467170 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
410 7.977806    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#42] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668406 TSecr=44657604 SLE=3546465782 SRE=3546468558 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
411 7.979200    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#43] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668406 TSecr=44657604 SLE=3546465782 SRE=3546469946 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
412 7.982792    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#44] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668406 TSecr=44657604 SLE=3546465782 SRE=3546471334 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
413 7.982817    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#45] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668406 TSecr=44657604 SLE=3546465782 SRE=3546472722 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
414 7.983331    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#46] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668406 TSecr=44657604 SLE=3546465782 SRE=3546474110 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
415 7.983631    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#47] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668406 TSecr=44657604 SLE=3546465782 SRE=3546475498 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
416 7.984371    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#48] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668407 TSecr=44657604 SLE=3546465782 SRE=3546476886 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
417 7.986238    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#49] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668407 TSecr=44657604 SLE=3546465782 SRE=3546478274 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
418 7.987165    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#50] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668407 TSecr=44657604 SLE=3546465782 SRE=3546479662 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
419 7.988157    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#51] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668407 TSecr=44657604 SLE=3546465782 SRE=3546481050 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
421 8.113745    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#52] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668420 TSecr=44657604 SLE=3546465782 SRE=3546482438 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
424 8.150664    X.X.X.X 10.254.248.101  60  TCP 65259  >  443 [ACK] Seq=1251 Ack=2197 Win=65700 Len=0
428 8.373938    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#54] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668446 TSecr=44657604 SLE=3546465782 SRE=3546485214 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
434 8.504768    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#55] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668459 TSecr=44657604 SLE=3546465782 SRE=3546486602 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
436 8.630589    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#56] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668472 TSecr=44657604 SLE=3546465782 SRE=3546487990 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
439 8.759603    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#57] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668485 TSecr=44657604 SLE=3546465782 SRE=3546489378 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
441 8.886688    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#58] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668498 TSecr=44657604 SLE=3546465782 SRE=3546490766 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
443 9.015359    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#59] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668510 TSecr=44657604 SLE=3546465782 SRE=3546492154 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
445 9.141981    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#60] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668523 TSecr=44657604 SLE=3546465782 SRE=3546493542 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
447 9.271283    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#61] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668536 TSecr=44657604 SLE=3546465782 SRE=3546494930 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
449 9.398242    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#62] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668549 TSecr=44657604 SLE=3546465782 SRE=3546496318 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
451 9.525714    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#63] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668562 TSecr=44657604 SLE=3546465782 SRE=3546497706 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
453 9.653846    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#64] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668574 TSecr=44657604 SLE=3546465782 SRE=3546499094 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
455 9.782376    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#65] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668587 TSecr=44657604 SLE=3546465782 SRE=3546500482 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
457 9.909855    X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#66] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668600 TSecr=44657604 SLE=3546465782 SRE=3546501870 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
459 10.038509   X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#67] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668613 TSecr=44657604 SLE=3546465782 SRE=3546503258 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
461 10.166752   X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#68] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668626 TSecr=44657604 SLE=3546465782 SRE=3546504646 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
467 10.303645   X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#69] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668639 TSecr=44657604 SLE=3546465782 SRE=3546506034 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
474 10.430023   X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#70] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668652 TSecr=44657604 SLE=3546465782 SRE=3546507422 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
476 10.557951   X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#71] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668665 TSecr=44657604 SLE=3546465782 SRE=3546508810 SLE=3546460230 SRE=3546464394 SLE=3546443574 SRE=3546458842
478 10.689920   X.X.X.X 10.254.248.101  94  TCP [TCP Dup ACK 366#72] 33426  >  443 [ACK] Seq=831 Ack=223341 Win=248576 Len=0 TSval=94668678 TSecr=44657604 SLE=3546507422 SRE=3546508810 SLE=3546465782 SRE=3546508810 SLE=3546460230 SRE=3546464394
482 11.045636   X.X.X.X 62.61.231.82    1454    TCP [TCP Retransmission] 443  >  33426 [ACK] Seq=223341 Ack=831 Win=31104 Len=1388 TSval=44658396 TSecr=94668678
    
por Benoit974 27.08.2016 / 00:55

1 resposta

3

Obrigado por enviar essas capturas.

O problema

Os problemas de taxa de transferência parecem ser causados por uma implementação com bugs da aleatorização do número de seqüência TCP. Eu já vi isso no passado em Cisco ASAs.

Para dar um pouco de fundo, foi observado no passado que algumas implementações do TCP não usavam aleatoriedade suficiente ao escolher um Número de Sequência Inicial (ISN) que tornava mais fácil para os invasores manipularem as conexões TCP fazendo suposições o número da sequência seria.

Para tentar corrigir esse problema, alguns provedores de firewall implementaram um recurso chamado aleatoriedade do número de seqüência TCP, que reescreve o número Sequence (SEQ) para um valor mais aleatório, quando ele vê pacotes TCP fluindo pelo firewall. Infelizmente, algumas implementações desse recurso são um pouco problemáticas e não levam em conta o recurso de Confirmação Seletiva (SACK) dos TCPs.

Você pode ver a randomização do Número de Sequência em ação no seu rastreio. Observe o pacote SYN / ACK do servidor (captura de servidor de pacote # 51), onde você pode ver que o ISN escolhido é 2847541373 . No entanto, observe o mesmo pacote SYN / ACK quando ele é recebido no lado do cliente (captura de cliente do pacote nº 8), o ISN foi alterado para 2098751282 !

Este comportamento é bom até o ponto em que a perda de pacotes é experimentada na rede.

No lado do cliente, observe a primeira Confirmação Duplicada (Dup ACK) no pacote 259. Você pode ver que um bloco SACK foi configurado cobrindo os bytes 2098977399-2098978787. Este pacote informa efetivamente ao servidor, estou aguardando o pacote com a SEQ 2098974623, no entanto, recebi 2098977399-2098978787 para que você não precise enviá-los novamente.

Agora, se você observar o mesmo Dup ACK recebido no lado do servidor (# 369), poderá ver que o número ACK foi convertido corretamente pelo firewall (2098974623 > 2847764714); no entanto, o bloco SACK não tem e ainda mostra 2098977399-2098978787!

Quando um Dup ACK é recebido com um bloco SACK inválido, o Dup ACK é ignorado.

Como resultado, você perde a capacidade de usar Fast Retransmission (retransmitir após 3 ACKs duplicados recebidos) e depende exclusivamente dos tempos limite de retranmission. Isso é muito ruim para o desempenho e reduzirá substancialmente sua taxa de transferência.

Então, o que você pode fazer?

Você pode investigar se a randomização do Número de Seqüência do TCP ainda é necessária para seus propósitos e, caso contrário, considerar o teste com ele desativado. Talvez este problema tenha sido resolvido em um novo firmware?

Você também pode desativar a opção TCP SACK no (s) seu (s) servidor (es) para evitar que clientes usem SACK em primeiro lugar /proc/sys/net/ipv4/tcp_sack no entanto, note que SACK é significado a ser usado para melhorar O desempenho do TCP e o problema real são com a implementação de firewalls (buggy) da randomização do número de sequência. Desativar o SACK significa que os clientes do Dup ACK não serão mais ignorados e a conexão poderá se recuperar da perda muito mais rapidamente. A taxa de transferência deve subir.

    
por 29.08.2016 / 14:28