next up previous contents
Next: 6 Application Layer Sample Up: 5 High-Level System Design Previous: 5.2 Application Layer

5.3 Transport Layer

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.

5.3.1 Interface to UDP

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.

5.3.2 XUDP's Queues

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.

Figure 5.6: XUDP's Queues

Outgoing Parcel Queue

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.

Incoming Parcel Queue

The incoming parcel queue holds completely reassembled parcels for a short time until they are read by the application layer.

Fragmented Parcel Acknowledgment Wait Queue

The fragmented parcel acknowledgment wait queue holds fragmented parcels until all of the packets that comprise the parcel have been acknowledged.

Partially Received Fragmented Parcel Queue

The incoming fragment parcel queue holds onto partially formed parcels until they are completed.

Outgoing Command Queue

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.

Incoming Command Queue

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.

Outgoing Packet Queue

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.

Incoming Packet Queue

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.

5.3.3 Flow Control

XUDP implements a number of flow control related algorithms based on the ones developed for the Transmission Control Protocol.

Sliding Window

The connection is sliding window based. Flow control is not based upon individual bytes, as in TCP, but on packets, regardless of their length.

Slow Start

There is a slow-start on connection initiation that ramps up the number of packets in the data window linearly.

RTT Variance Estimation

Round trip time variance estimation uses the same method described in section 3.2.2.

Congestion Anticipation

Congestion anticipation is implemented by scaling the size of the window through close monitoring of RTT's and comparisons with recent RTT's.

Exponential Backoff Upon Successive Retransmits

There is an exponential retransmit timer backoff on successive retransmits.

Selective Acknowledgment and Retransmit

Selective acknowledgment is used at both the parcel and packet level. Selective retransmit will be used at the packet level.

next up previous contents
Next: 6 Application Layer Sample Up: 5 High-Level System Design Previous: 5.2 Application Layer

Mike Andrews
Wed Mar 19 16:07:58 EST 1997