Next: 5.2 Application Layer
Up: 5 High-Level System Design
Previous: 5 High-Level System Design
- Application Layer
- XUDP runs on a variety of UNIX variants.
- XUDP is implemented in user space (rather than kernel space) as daemon.
- The protocol's functions run as a process separate from the
application.
- IPC between the protocol daemon and the application is handled
through a Berkeley sockets-like API, transparent to the application
layer
- The basic unit of data transfer is the parcel, an entity
similar to a datagram, with the following characteristics:
- Parcels are not necessarily part of a continuous stream of data,
and thus preserve record boundaries.
- Parcels will be of arbitrary length, determined at the time of
sending.
- Each parcel can be labeled with a finite expiration time, a
one-shot delivery or as fully-reliable delivery.
- Parcels will be received one at a time, preserving parcel
boundaries.
- Due to the timed-obsolescence feature, parcels are not
guaranteed to be received in-order, however, order will be preserved
for the data forming a parcel.
- All information related to the connection will be stored in a
simple C structure, usually referenced with a structure pointer.
- Transport layer
- XUDP is connection-oriented.
- UDP is used as the delivery mechanism, one layer below.
- UDP's payload checksum is used to ensure error-free
delivery.
- Parcels are fragmented into packets of a given, maximum
allowable size.
- Flow control of the connection is achieved through
algorithms similar to those in place in TCP:
- The connection is sliding window based.
- Flow control is not based off of 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 according to some
function.
- Packet round trip time variance estimation and per-packet
time-stamping is used to aid in retransmission timer timeout
prediction.
- 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 is used at the packet level.
- Fine-grained timers (1ms period) with 32-bit timestamps are
used, no signals will be generated in the current implementation.
Next: 5.2 Application Layer
Up: 5 High-Level System Design
Previous: 5 High-Level System Design
Mike Andrews
Wed Mar 19 16:07:58 EST 1997