In computer networking, pipelining is the method of sending multiple data units without waiting for an acknowledgment for the first frame sent. Pipelining ensures better utilization of network resources and also increases the speed of delivery, particularly in situations where a large number of data units make up a message to be sent.
The following flow diagram depicts data transmission in a pipelined system versus that in a non-pipelined system. Here, pipelining is incorporated in the data link layer, and four data link layer frames are sequentially transmitted.
Two data link layer protocols use the concept of pipelining −
Go – Back – N
Go – Back – N protocol provides for pipelining of frames, i.e. sending multiple frames before receiving the acknowledgment for the first frame. The frames are sequentially numbered and a finite number of frames are sent depending upon the size of the sending window. If the Non-pipelined Transmission Pipelined Transmission Sender Receiver Sender Receiver Time acknowledgment of a frame is not received within the time period, all frames starting from that frame are retransmitted. The size of the receiving window in 1 in this case.
This protocol also incorporates the concept of pipelining. Here, the receiver window is of size greater than 1. In this protocol, only the erroneous or lost frames are retransmitted, while the good frames are received and buffered. When the sender times out, the oldest unacknowledged frame is retransmitted. If the retransmitted frame is received correctly, then the receiver delivers all the frames it has buffered starting with the retransmitted frame.