Scalable Data Naming for Application Level Framing in Reliable Multicast

Suchitra Raman and Steven McCanne (UCB), 1998

Summary. Current transport level protocols name data with sequential numbers, a scheme that does not permit receivers to "flexibly tailor their reliability semantics" leading to more efficient use of the underlying network. The authors propose a naming scheme that exposes the structure of application data to the transport layer, enhancing the applications's control over the reliability.


More Detail

Announce-listen. In this approach to RM, a source periodically multicasts the data to some agreed upon address and interested parties listen in. Eventually, all parties will have a consistent copy of the data. Although simple and robust, announce-listen is suboptimal for two reasons: does not scale well in terms of bandwidth and the time-to-convergence may be too great.

"SRM adds a level of indirection to the announce/listen framework. In SRM, a source enlists the announce/listen framework to disseminate 'meta-data' that summarizes al the available data without actually sending it...As an optimization, a source might multicast data once upon creation to avoid delay."

ALF. To perform receiver-reliability on traditional protocols, need:

  1. rich naming scheme -> not mapping to linear namespace
  2. scalability
SNAP solves (1) with two-dimensional naming scheme: it uses announce/listen to disseminate page structure that provides a common-syntax that enables receiver reliability. SNAP addresses (2) by exploiting hierarchy to gain a level-of-indirection by providing a summary fingerprint.

SNAP Overview.

Fragmentation. Relying on IP to do link-level frag and reassembly can be inefficient since the loss of one fragment could result in the retransmission (multicast) of an entire packet. To avoid fragmentation, SRMv2 uses 1024 byte MTU.

Source IDs. The Source ID needs to meet the following three requirements:

  1. Uniqueness. RTP uses random 32-bit words; okay for non-reliable protocol, but not reliable protocol.
  2. Time invariance. Unlike RTP apps where "app state is ephemeral", rm apps require that a source have the same state (id) throughout the entire session - possibly even through leave and joins / crashes and recoveries.
  3. Terminal independence. A source could move from machine to machine; can't use IP address/port pair.
SNAP uses MD-5 hashed, application-supplied arbitrary strings.

Loss Recovery \ Namespace Discovery. Non-tail losses are detected via gaps in sequence numbers (fragments), CID's (containers), ADU seqnos (ADUs). Tail losses are discovered via mismatches between signatures sent out in session announcments.

Should losses in anything other than fragments be detected (fragment loss can be detected but not repaired because the app supplies repair data and it does not deal in fragments - only ADUs), SRMv2 informs the application. It is then the applications responsibility to determine if a repair is desired and, if so, trigger the repair.

Assuming the app desires repairs, if a signature mismatch is detected, a namespace repair request is sent. In response, a list of the children and their signatures is sent. The source can then traverse the response and send repair requests for specific ADU's. If a whole container is lost (caused by a tail loss in the name map), the container name in the map and the ADU's are repaired. (?)

A namespace repair request is expected not to be the common case; the common case is that the container signature will be sent in the session announcent (not sure what the reasoning is here).

Performance. Three components to delay for tail losses:

  1. State update (can't detect until
  2. SRM damping delay
  3. Repair response time
Showed constant (non-increasing) number of duplicates for requests and replies. Showed linear convergence time as a function of the state update period.

API. API presented.

Questions/Comments.

Other: