Bug 65271

Summary: Acceptable RST packets (with seq number in window) are ignored in LAST_ACK state (and previously sent data pending acknowledgement)
Product: Networking Reporter: Julien Delacroix (julien.delacroix)
Component: IPV4Assignee: Stephen Hemminger (stephen)
Status: RESOLVED OBSOLETE    
Severity: normal CC: alan, julien.delacroix
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 2.6.32.59-0.7-default Subsystem:
Regression: No Bisected commit-id:
Attachments: TCP dump showing described scenario

Description Julien Delacroix 2013-11-20 15:03:47 UTC
Created attachment 115271 [details]
TCP dump showing described scenario

PCAP file of traffic capture is attached.
Note that capture was taken directly on server host, so RST packets definitely reached the server host.


Here is the flow:

1: Client ---- SYN ----> Server
2: Client <- SYN, ACK -- Server
3: Client ---- ACK ----> Server 
4: Client ---- FIN ----> Server ( server in CLOSE_WAIT state)
5: Client <- PSH, ACK -- Server 
6: Client <- FIN, ACK -- Server ( server in LAST_ACK state)

7: Client ---- RST ----> Server 

Then repeat N times:
    8: Client <- PSH, ACK -- Server 
    9: Client ---RST, ACK -> Server 


Notes:
5: packet contains 3 bytes of data
7: no ACK flag, and sequence number is correct, but RST packet is ignored
8: retransmission of step 5
9: the sequence number is correct as well as the acknowledgment number (acknowledging data in 5, but not yet FIN in 6), but this RST is again ignored.

From this point client keeps retransmitting 5, while server keeps answering with acceptable RST packets.

You can observe this scenario (with 5 retransmissions and 5 RST) in the attached PCAP file.