LinuxQuestions.org
Review your favorite Linux distribution.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Networking
User Name
Password
Linux - Networking This forum is for any issue related to networks or networking.
Routing, network cards, OSI, etc. Anything is fair game.

Notices

Reply
 
Search this Thread
Old 08-10-2006, 01:50 PM   #1
Bloomberger
LQ Newbie
 
Registered: Aug 2006
Posts: 1

Rep: Reputation: 0
Question Mangled incoming TCP packets confuse outgoing ACK processing


Has anyone seen or know of a problem with the handling of mangled incoming TCP packets in Linux 2.4.21 or 2.6.16 during "bulk delivery" -- like FTP? Essentially, one of incoming packets has a bad TCP checksum, mangled by some intervening switch no doubt. This apparently causes the TCP stack to NOT respond with duplicate ACKs for all subsequent packets, but it knows the mangled packet is bad and drops it. The sender waits 0.4 seconds and resends the missing packet. The receiver responds immedeiately with an ACK for all remaining packets. Below is an trace of such an incident from the sender side:

No. Time Source Destination Protocol Info
519 0.890490057 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [ACK] Seq=359165 Ack=0 Win=32942 Len=881 TSV=2997354060 TSER=274491797
520 0.890508126 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [ACK] Seq=360046 Ack=0 Win=32942 Len=881 TSV=2997354060 TSER=274491797
521 0.890526195 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [ACK] Seq=360927 Ack=0 Win=32942 Len=881 TSV=2997354060 TSER=274491797
522 0.890544264 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [ACK] Seq=361808 Ack=0 Win=32942 Len=881 TSV=2997354060 TSER=274491797
523 0.890562333 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [ACK] Seq=362689 Ack=0 Win=32942 Len=881 TSV=2997354060 TSER=274491797
524 0.890580402 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [ACK] Seq=363570 Ack=0 Win=32942 Len=881 TSV=2997354060 TSER=274491797
525 0.890599801 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [ACK] Seq=364451 Ack=0 Win=32942 Len=881 TSV=2997354060 TSER=274491797
526 0.890640694 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [PSH, ACK] Seq=365332 Ack=0 Win=32942 Len=881 TSV=2997354060 TSER=274491797
527 0.891022601 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [PSH, ACK] Seq=366213 Ack=0 Win=32942 Len=555 TSV=2997354061 TSER=274491797
528 0.891111503 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [PSH, ACK] Seq=366768 Ack=0 Win=32942 Len=326 TSV=2997354061 TSER=274491797
529 0.891784979 172.23.11.45 172.17.133.10 TCP 32002 > 56394 [ACK] Seq=0 Ack=360927 Win=48455 Len=0 TSV=274491797 TSER=2997354060
530 0.892018410 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [PSH, ACK] Seq=367094 Ack=0 Win=32942 Len=881 TSV=2997354062 TSER=274491797
531 0.892249940 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [PSH, ACK] Seq=367975 Ack=0 Win=32942 Len=881 TSV=2997354062 TSER=274491797
532 0.892899659 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [PSH, ACK] Seq=368856 Ack=0 Win=32942 Len=881 TSV=2997354062 TSER=274491797
533 0.893148821 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [PSH, ACK] Seq=369737 Ack=0 Win=32942 Len=881 TSV=2997354063 TSER=274491797
534 0.893542315 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [PSH, ACK] Seq=370618 Ack=0 Win=32942 Len=246 TSV=2997354063 TSER=274491797
535 0.893588683 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [PSH, ACK] Seq=370864 Ack=0 Win=32942 Len=635 TSV=2997354063 TSER=274491797
536 0.894447856 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [PSH, ACK] Seq=371499 Ack=0 Win=32942 Len=881 TSV=2997354064 TSER=274491797
537 0.895108942 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [PSH, ACK] Seq=372380 Ack=0 Win=32942 Len=881 TSV=2997354064 TSER=274491797
538 1.309210769 172.17.133.10 172.23.11.45 TCP [TCP Retransmission] 56394 > 32002 [ACK] Seq=360927 Ack=0 Win=32942 Len=1448 TSV=2997354480 TSER=2
74491797

539 1.309213063 172.23.11.45 172.17.133.10 TCP 32002 > 56394 [ACK] Seq=0 Ack=373261 Win=48675 Len=0 TSV=274491839 TSER=2997354060
540 1.309214071 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [ACK] Seq=373261 Ack=0 Win=32942 Len=869 TSV=2997354481 TSER=274491839
541 1.309215023 172.17.133.10 172.23.11.45 TCP 56394 > 32002 [ACK] Seq=374130 Ack=0 Win=32942 Len=881 TSV=2997354481 TSER=27449183


Pkt#521 is mangled (bad TCP checksum). The rcver ACKs in Pkt#529 up to and including Pkt#520. At Pkt#538, the sender has waited 0.4 seconds and resends Pkt#521 as Pkt#538. The rcver immediately responds with Pkt#539, which ACKs up to and including Pkt#537. NOTICE that Linux is NOT sending any duplicate ACKs for Pkts 522 thru 537!!!!

Does anyone have any clues about this?

Thanks,
Neil B.
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Disntiguishing between ACK packets in a TCP connection!! vishamr2000 Linux - Networking 3 05-23-2006 01:08 AM
Incoming, but no Outgoing Access belorion Linux - General 4 05-09-2005 07:37 PM
drop incoming/outgoing packets using iptables doshiaj Linux - Security 1 06-08-2004 10:38 AM
TCP retransmission and duplicated ack enjoyzj Linux - Networking 0 06-05-2004 06:19 PM
Forwarding ACK Packets snufferz Linux - Newbie 0 05-12-2004 02:10 AM


All times are GMT -5. The time now is 07:14 AM.

Main Menu
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration