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

5.1 System Specifications Per Layer

  1. Application Layer

    1. XUDP runs on a variety of UNIX variants.
    2. XUDP is implemented in user space (rather than kernel space) as daemon.
    3. The protocol's functions run as a process separate from the application.
    4. IPC between the protocol daemon and the application is handled through a Berkeley sockets-like API, transparent to the application layer
    5. The basic unit of data transfer is the parcel, an entity similar to a datagram, with the following characteristics:

      1. Parcels are not necessarily part of a continuous stream of data, and thus preserve record boundaries.
      2. Parcels will be of arbitrary length, determined at the time of sending.
      3. Each parcel can be labeled with a finite expiration time, a one-shot delivery or as fully-reliable delivery.
      4. Parcels will be received one at a time, preserving parcel boundaries.
      5. 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.
    6. All information related to the connection will be stored in a simple C structure, usually referenced with a structure pointer.
  2. Transport layer

    1. XUDP is connection-oriented.
    2. UDP is used as the delivery mechanism, one layer below.
    3. UDP's payload checksum is used to ensure error-free delivery.
    4. Parcels are fragmented into packets of a given, maximum allowable size.
    5. Flow control of the connection is achieved through algorithms similar to those in place in TCP:

      1. The connection is sliding window based.
      2. Flow control is not based off of individual bytes, as in TCP, but on packets, regardless of their length.
      3. There is a slow-start on connection initiation that ramps up the number of packets in the data window according to some function.
      4. Packet round trip time variance estimation and per-packet time-stamping is used to aid in retransmission timer timeout prediction.
      5. Congestion anticipation is implemented by scaling the size of the window through close monitoring of RTT's and comparisons with recent RTT's.
      6. There is an exponential retransmit timer backoff on successive retransmits.
      7. Selective acknowledgment is used at both the parcel and packet level.
      8. Selective retransmit is used at the packet level.
      9. Fine-grained timers (1ms period) with 32-bit timestamps are used, no signals will be generated in the current implementation.

next up previous contents
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