Adaption layer enhancement : an investigation of support for independent link ARQ
The most commonly used transport protocol, TCP (Transport Control protocol) reacts to loss by throttling the transmission rate. This impacts performance if the loss is non-congestion related, corruption loss. A link layer protocol may use ARQ to provide reliability and shield TCP from corruption loss. The advantage of fragmentation together with link ARQ is; it is able to retransmit the requested frame and instead of the entire data packet. For a link to perform transparent fragmentation, an adaption layer (AL) protocol is needed. Although link ARQ may improve TCP performance, it introduces undesirable delay (i.e. receiver side head of line blocking) and negatively impacts the end-to-end TCP performance. This thesis presents new results on the impacts link ARQ have on the cwnd (congestion window) limited TCP sessions sharing the same link ARQ. To minimise the delay, we proposed to use a more assertive link layer protocol (APRIL). To eliminate the interaction between classes of flow sharing the link with ARQ, flow isolation is required. We discussed the role of the virtual channel (VC) and how it can be used to provide flow isolation. We identified the role of the VC as related to the reassembly process at the receiver end. It allows different traffic classes/flows to be reassembled independently. Therefore, multiple reassembly processes are desirable, one for each traffic class/flow. Our novel approach performs reassembly in the link receive buffer, without demultiplexing frames into the respective channel (as in ATM and X.25) to eliminate the interaction between flows sent on different virtual channel. An approach to increase the robustness of sequence number wrapping in a VC reassembly process without increasing the protocol overhead is also proposed. The inefficiency in the multiple reassembly processes is discussed in the thesis. A simple reassembly process requires massive CPU effort at the receiver since it does not know what exists in the buffer before the process is triggered. We proposed the use of three lists, channel, retransmission and suspended list to minimise this inefficiency in the multiple reassembly processes. During link layer frame processing, it updates all the VC encountered in the block in the channel and retransmission lists. The adaption layer can refer back to these lists prior commencing reassembly process. Therefore, irrelevant blocks, frames and VC can be identified and ignored during the reassembly process. We demonstrate that these lists greatly reduced the processing cost.