Bug 195617 - TCP may send small segments limited to initial window size
Summary: TCP may send small segments limited to initial window size
Status: NEW
Alias: None
Product: Networking
Classification: Unclassified
Component: IPV4 (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: Stephen Hemminger
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-04-30 00:50 UTC by Ambroz Bizjak
Modified: 2017-04-30 00:50 UTC (History)
0 users

See Also:
Kernel Version: 4.9.24
Subsystem:
Regression: No
Bisected commit-id:


Attachments
packet trace (1.54 KB, application/octet-stream)
2017-04-30 00:50 UTC, Ambroz Bizjak
Details

Description Ambroz Bizjak 2017-04-30 00:50:22 UTC
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.

Note You need to log in before you can comment on or make changes to this bug.