Unformatted text preview: ow that the other end has
ever advertised, or (c) we can send everything we have and either we are not
expecting an ACK (i.e., we have no outstanding unacknowledged data) or the
Nagle algorithm is disabled for this connection (Section 19.4).
Condition (b) deals with hosts that always advertise tiny windows, perhaps
smaller than the segment size. Condition (c) prevents us from sending small
segments when we have unacknowledged data that is waiting to be ACKed and
the Nagle algorithm is enabled. If the application is doing small writes (e.g.,
smaller than the segment size), it is condition (c) that avoids the silly window
These three conditions also let us answer the question: if the Nagle algorithm
prevents us from sending small segments while there is outstanding
unacknowledged data, how small is small? From condition (a) we see that "small"
means the number of bytes is less than the segment size. Condition (b) only comes
into play with older, primitive hosts.
Condition (b) in step 2 requires that the sender keep track of the maximum window size
advertised by the other end. This is an attempt by the sender to guess the size of the other
end's receive buffer. Although the size of the receiver buffer could decrease while the
connection is established, in practice this is rare.
We'll now go through a detailed example to see the silly window syndrome avoidance in
action, which also involves the persist timer. We'll use our sock program with the
sending host, sun, doing six 1024-byte writes to the network:
sun % sock -i -n6 bsdi 7777
But we'll put some pauses in the receiving process on the host bsdi, pausing 4 seconds
before doing the first read, and then pausing 2 seconds between successive reads.
Additionally, the receiver issues 256-byte reads;
bsdi % sock -i -s -P4 -p2 -r256 7777
The reason for the initial pause is to let the receiver's buffer fill, forcing it to stop the
transmitter. Since the receiver then performs small reads from the n...
View Full Document
This test prep was uploaded on 04/04/2014 for the course ECE EL5373 taught by Professor Guoyang during the Spring '12 term at NYU Poly.
- Spring '12