The transport layer consists of the entire XUDP server implementation, from reception of data from the application layer to delivery of fragmented data to the network layer.
UDP will act as the delivery service for XUDP data. Although XUDP could have been implemented directly on top of IP, UDP relieves the burden of a few difficult low level operations from XUDP:
XUDP won't rely on UDP for fragmentation of datagrams. Instead, XUDP will supply UDP with data intended to pass atomically onto the network, with a typical maximum packet size of 512 bytes.
XUDP liberally uses doubly-linked lists to manage data internally at various points in the transmission process. The queues are presented graphically in figure 5.6.
The outgoing parcel queue holds parcels after they have been received from the application process. The parcel fragmentation process strips data from the beginning of the parcel, one packet at a time, until the end of the parcel has been reached. The parcel is then dequeued.
The incoming parcel queue holds completely reassembled parcels for a short time until they are read by the application layer.
The fragmented parcel acknowledgment wait queue holds fragmented parcels until all of the packets that comprise the parcel have been acknowledged.
The incoming fragment parcel queue holds onto partially formed parcels until they are completed.
The outgoing command queue holds commands intended for the connection endpoint's XUDP server that will be inserted at the end of the header in the next available packet. Commands are currently only different types of acknowledgments for received packets and parcels.
This queue holds incoming commands that have been received from the network and stripped out of their packets. The incoming command queue holds onto the commands until they can be processed by their respective functions.
The outgoing list of packets is maintained until the packets can be transmitted onto the network. Packets on this list are considered to be in the network already by the flow control algorithms.
The incoming packet queue is maintained for packets that have been received but not placed on a partially assembled parcel in the received, fragmented parcel queue.
XUDP implements a number of flow control related algorithms based on the ones developed for the Transmission Control Protocol.
The connection is sliding window based. Flow control is not based upon individual bytes, as in TCP, but on packets, regardless of their length.
There is a slow-start on connection initiation that ramps up the number of packets in the data window linearly.
Round trip time variance estimation uses the same method described in section 3.2.2.
Congestion anticipation is implemented by scaling the size of the window through close monitoring of RTT's and comparisons with recent RTT's.
There is an exponential retransmit timer backoff on successive retransmits.
Selective acknowledgment is used at both the parcel and packet level. Selective retransmit will be used at the packet level.