Silly Window Syndrome is a problem that arises due to poor implementation of TCP. It degrades the TCP performance and makes the data transmission extremely inefficient. The problem is called so because:
The two major causes of this syndrome are as follows:
Cause-1: Sender window transmitting one byte of data repeatedly:
Suppose only one byte of data is generated by an application . The poor implementation of TCP leads to transmit this small segment of data.Every time the application generates a byte of data, the window transmits it. This makes the transmission process slow and inefficient.The problem is solved by Nagle’s algorithm.
Nagle’s algorithm suggests:
After receiving the acknowledgement, sender should send the buffered data in one TCP segment. Then, sender should buffer the data again until the previously sent data gets acknowledged.
Cause-2: Receiver window accepting one byte of data repeatedly
Suppose consider the case when the receiver is unable to process all the incoming data.In such a case, the receiver will advertise a small window size.The process continues and the window size becomes smaller and smaller.A stage arrives when it repeatedly advertises window size of 1 byte.This makes receiving process slow and inefficient.The solution to this problem is Clark’s Solution.
Clark’s solution suggests:
Note:
Example:
A fast typist can do 100 words a minute and each word has an average of 6 characters. Demonstrate Nagle’s algorithm by showing the sequence of TCP segment exchanges between a client with input from our fast typist and a server. Indicate how many characters are contained in each segment sent from the client.Assume that the client and server are in the same LAN and the RTT is 20 ms?
Nagle’s algorithm suggests:
Sender should wait for 1 RTT before sending the data. The amount of data received from the application layer in 1 RTT should be sent to the receiver.
Amount of data accumulated in 1 RTT,
= (600 characters / 1 minute) x 20 msec
= (600 characters / 60 sec) x 20 msec
= (10 characters / 103 msec) x 20 msec
= 0.2 characters
From here, we observe:
Even if the sender waits for 1 RTT, not even a single character is produced. So, sender will have to wait till it receives at least 1 character. Then, sender sends it in one segment. Thus, one character will be sent per segment. Assuming the TCP header length is 20 bytes, 41 bytes of data will be sent in each segment.
21 videos|113 docs|66 tests
|
|
Explore Courses for Computer Science Engineering (CSE) exam
|