Bug 195617
Summary: | TCP may send small segments limited to initial window size | ||
---|---|---|---|
Product: | Networking | Reporter: | Ambroz Bizjak (ambrop7) |
Component: | IPV4 | Assignee: | Stephen Hemminger (stephen) |
Status: | NEW --- | ||
Severity: | normal | ||
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 4.9.24 | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: | packet trace |
Created attachment 256141 [details] packet trace I am seeing what I believe is faulty behavior when a Linux client connects to a TCP/IPv4 server which advertises a very small initial window. After the client sends a small segment limited to this small window, the server ACKs the data and extends the window considerably, but the client proceeds to send very small segments. Here is a summary of the packets: - Client: SYN - Server: SYN,ACK,Win=1 - Client: ACK - Client: ACK,Data=1B - Server: ACK,Win=49984 - Client: ACK,Data=47B - Client: ACK,Data=48B - Client: ACK,Data=48B - Client: ACK,Data=48B ... This example was with initially advertised window (WIN) equal to 1, but generally it appears that Linux will limit outgoing segments to no more than max(48,WIN). I have tested the server with a Windows 10 client which does not have this problem, the client starts sending fully sized segments when the window is extended.