Today I will begin explaining Pipeline Computing And Protocol by a hypothetical scenario: Suppose an application wants to send a file of 8MB size, packet size equals to 10000bits, Round Trip Time (RTT) equals to 40msec and data rate / bandwidth equals to 1Gbps.
In the above scenario, next packet is sent by the sender after receiving the acknowledgement of the previous one.
Now let us calculate the efficiency of utilizing the bandwidth:
(Us) Utilization Sender = L/R
RTT + L/R
Where, L= Length of Packet, R = Bandwidth / Data rate and RTT= Round trip time
Us = 10000/10^9 = 0.000249938
(40 x 10^-3) + 10000/10^9
Bandwidth Utilization = 10^9 x 0.000249938 = 249937.5 bps = 249.9375 Kbps
The problem with above scenario (stop and wait protocol) is that the waiting time is very long, due to which, out of 1 Gbps the sender is only utilizing 249.9375 Kbps of the bandwidth and remaining is getting wasted.
We can optimize the above scenario by keep on sending the packets and not waiting for the acknowledgement. The sender buffer starts pushing multiple packets into a network and at the other hand the receiver buffers starts sending the acknowledgement packet as soon as it receives data packets from the sender. So in a way, we are utilizing RTT and instead of just sending one packet, we are sending burst of packets. This is known as pipeline protocol.
Suppose sender sends burst of packets through pipeline protocol, however, in the middle few packet in different orders gets lost. Then what?
Solution:
We can have two possible solutions to the above problem.
Application layer does not ensure reliable delivery, neither IP does, it is the transport layer that stores data and ensures the reliability of data transfer.
For the receiver buffer, those packets which have been acknowledged, they will be delivered to the application and if the receiver gets duplicate packets, then one packet will be discarded.
Pipeline protocol has the following consequences:
The sequence number is required as the packets are sent in bulk and may not be in a sequence when traveling through pipeline and therefore to rearrange the packets in proper sequence.
The packets that are being transferred from the sender to the receiver needs to be buffered at both ends. At the sender end, buffer is required to store the data and wait till all packets acknowledgement has been received by the sender. On the other hand buffer is required to store the data till all of the packets are correctly received by the receiver and then the complete final data is provided to the application layer.
The sequence number is required to identify the packets received by the receiver and to sequence the data accordingly. But here a question arises that what should be the maximum number used for the sequence and what should be the size of the buffer holding such packets? In TCP protocol, sequence number is of 32 bits, therefore maximum number of packets at a time can be 2^32 = 4294967296 packets. Suppose, we have 8 bit sequence number, then this means we can have 2^8 packets.
For Further
What is the Main Cause of a Heart Attack? What is its Solution? A heart attack is the blockage of… Read More
In the vast economic arena, one term that often takes center stage, inciting extensive debates and discussions, is the "debt… Read More
De-Dollarization: The Changing Face of Global Finance The financial landscape is in a state of flux, with an intriguing economic… Read More
The curtains closed on a dramatic Bundesliga season with Bayern Munich standing tall once again, clinching their 11th straight title.… Read More
The Unfolding Story of Celine Dion's Health In recent news that has left fans across the globe stunned, iconic singer… Read More
As the echoes of the recent NBA season start to fade, the attention of enthusiasts is firmly glued to one… Read More