AVT A. Begen
Internet-Draft E. Friedrich
Intended status: Standards Track Cisco
Expires: October 13, 2011 April 11, 2011
Multicast Acquisition Report Block Type for RTP Control Protocol (RTCP)
Extended Reports (XRs)
draft-ietf-avtext-multicast-acq-rtcp-xr-03
Abstract
In most RTP-based multicast applications, the RTP source sends inter-
related data. Due to this interdependency, randomly joining RTP
receivers usually cannot start consuming the multicast data right
after they join the session. Thus, they often experience a random
acquisition delay. An RTP receiver can use one ore more different
approaches to achieve rapid acquisition. Yet, due to various
factors, performance of the rapid acquisition methods usually varies.
Furthermore, in some cases the RTP receiver can (or be compelled to)
do a simple multicast join. For quality reporting, monitoring and
diagnostics purposes, it is important to collect detailed information
from the RTP receivers about their acquisition and presentation
experiences. This document addresses this issue by defining a new
report block type, called Multicast Acquisition (MA) Report Block,
within the framework of RTP Control Protocol (RTCP) Extended Reports
(XR) (RFC 3611). This document also defines the necessary signaling
of the new MA report block type in the Session Description Protocol
(SDP).
Status of this Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 13, 2011.
Copyright Notice
Begen & Friedrich Expires October 13, 2011 [Page 1]

Internet-Draft MA Report Block Type for RTCP XR April 20111. Introduction
RTP Control Protocol (RTCP) is the out-of-band control protocol for
the applications that are using the Real-time Transport Protocol
(RTP) for media transport [RFC3550]. In addition to providing
minimal control functionality to RTP entities, RTCP also enables a
basic level monitoring of RTP sessions via sender and receiver
reports. More statistically detailed monitoring as well as
application-specific monitoring is usually achieved through the RTCP
Extended Reports (XRs) [RFC3611].
In most RTP-based multicast applications such as the ones carrying
video content, the RTP source sends inter-related data.
Consequently, the RTP application may not be able to decode and
present the data in an RTP packet before decoding one or more earlier
RTP packets and/or before acquiring some Reference Information about
the content itself. Thus, RTP receivers that are randomly joining a
multicast session often experience a random acquisition delay. In
order to reduce this delay, [I-D.ietf-avt-rapid-acquisition-for-rtp]
proposes an approach where an auxiliary unicast RTP session is
established between a retransmission server and the joining RTP
receiver. Over this unicast RTP session, the retransmission server
provides the Reference Information, which is all the information the
RTP receiver needs to rapidly acquire the multicast stream. This
method is referred to as the Rapid Acquisition of Multicast Sessions
(RAMS). However, depending on the variability in the Source
Filtering Group Management Protocol (SFGMP) processing times,
availability of network resources for rapid acquisition and nature of
the RTP data, not all RTP receivers can acquire the multicast stream
in the same amount of time. The performance of rapid acquisition may
vary not only for different RTP receivers but also over time.
To increase the visibility of the multicast service provider into its
network, to diagnose slow multicast acquisition issues and to collect
the acquisition experiences of the RTP receivers, this document
defines a new report block type, which is called Multicast
Acquisition (MA) Report Block, within the framework of RTCP XR. RTP
receivers that are using the method described in
[I-D.ietf-avt-rapid-acquisition-for-rtp] may use this report every
time they join a new multicast RTP session. RTP receivers that use a
different method for rapid acquisition or those do not use any method
but rather do a simple multicast join may also use this report to
collect information. This way, the multicast service provider can
quantitatively compare the improvements achieved by different
methods.
Begen & Friedrich Expires October 13, 2011 [Page 3]

Internet-Draft MA Report Block Type for RTCP XR April 20113. Definitions
This document uses the following acronyms and definitions from
[I-D.ietf-avt-rapid-acquisition-for-rtp]:
(Primary) Multicast Session: The multicast session to which RTP
receivers can join at a random point in time.
Primary Multicast RTP Session: The multicast RTP session an RTP
receiver is interested in acquiring.
Source Filtering Group Management Protocol (SFGMP): Following the
definition in [RFC4604], SFGMP refers to the Internet Group
Management Protocol (IGMP) version 3 [RFC3376] and the Multicast
Listener Discovery Protocol (MLD) version 2 [RFC3810] in the IPv4 and
IPv6 networks, respectively. However, the report block type
introduced in this document does not depend on a specific version of
either of these group management protocols. In the remainder of this
document, SFGMP will refer to any group management protocol that has
Join and Leave functionalities.
Retransmission (Burst) Packet: An RTP packet that is formatted as
defined in Section 4 of [RFC4588].
Reference Information: The set of certain media content and metadata
information that is sufficient for an RTP receiver to start usefully
consuming a media stream. The meaning, format and size of this
information are specific to the application and are out of scope of
this document.
(Unicast) Burst (Stream): A unicast stream of RTP retransmission
packets that enable an RTP receiver to rapidly acquire the Reference
Information associated with a primary multicast stream. Each burst
stream is identified by its Synchronization Source (SSRC) identifier
that is unique in the primary multicast RTP session.
Retransmission Server (RS): The RTP/RTCP endpoint that can generate
the retransmission packets and the burst streams. The RS may also
generate other non-retransmission packets to aid the rapid
acquisition process.
Begen & Friedrich Expires October 13, 2011 [Page 5]

Internet-Draft MA Report Block Type for RTCP XR April 20114. Multicast Acquisition (MA) Report Block
This section defines the format of the MA report block. The base
report is payload-independent. An extension mechanism is provided
where further optional payload-independent and payload-specific
information can be included in the report as desired.
The optional extensions that are defined in this document are
primarily developed for the method presented in
[I-D.ietf-avt-rapid-acquisition-for-rtp]. Other methods that provide
rapid acquisition can define their own extensions to be used in the
MA report block.
The packet format for the RTCP XR is defined in Section 2 of
[RFC3611]. Each XR packet has a fixed-length field for version,
padding, reserved bits, payload type (PT), length, SSRC of packet
sender as well as a variable-length field for report blocks. In the
XR packets, the PT field is set to XR (207).
It is better to send the MA report block after all the necessary
information is collected and computed. Partial reporting is
generally not useful as it cannot give the full picture of the
multicast acquisition, and causes additional complexity in terms of
report block matching and correlation. The MA report block is only
sent as a part of an RTCP compound packet, and it is sent in the
primary multicast session.
The need for reliability of the MA report block is not any greater
than other report blocks or types. If desired, the report block
could be repeated for redundancy purposes while respecting to the
RTCP scheduling algorithms.
4.1. Base Report
The base report format is shown in Figure 1.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| BT=11 | MA Method | Block Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SSRC of the Primary Multicast Stream |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Status | Rsvd. |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1: Base report format for the MA report block
Begen & Friedrich Expires October 13, 2011 [Page 6]

Internet-Draft MA Report Block Type for RTCP XR April 2011
o BT (8 bits): Mandatory field that denotes the type for this block
format. The MA report block is identified by the constant 11.
o MA Method (8 bits): Mandatory field that denotes the type of the
MA method (e.g., simple join, RAMS, etc.). See Section 7.3 for
the values registered with IANA.
o Block Length (16 bits): The length of this report block,
including the header, in 32-bit words minus one.
o SSRC of the Primary Multicast Stream (32 bits): Mandatory field
that denotes the SSRC of the primary multicast stream.
o Status (16 bits): Mandatory field that denotes the status code
for the MA operation.
This document defines several status codes and registers them with
IANA in Section 7.5. If a new vendor-neutral status code will be
defined, it MUST be registered with IANA through the guidelines
specified in Section 7.5. If the new status code is intended to
be used privately by a vendor, there is no need for IANA
management. Section 4.2.2 defines how a vendor defines and uses
private extensions to convey its messages. To indicate a private
extension, the RTP receiver MUST set the Status field to zero.
o Rsvd. (16 bits): The RTP receiver MUST set this bit to zero. The
recipient MUST ignore this bit when received.
If the multicast join was successful meaning that at least one
multicast packet has been received, some additional information MUST
be appended to the base report as will be described in Section 4.2.1.
4.1.1. Status Code Rules for New MA Methods
Different MA methods usually use different status codes, although
some status codes (e.g., a code indicating that multicast join has
failed) can be common among multiple MA methods. The status code
reported in the base report MUST always be within the scope of the
particular MA method specified in the MA Method field.
In certain MA methods, the RTP receiver can generate a status code
for its multicast acquisition attempt, or can be told by another
network element or RTP endpoint what the current status is via a
response code. In such cases, the RTP receiver MAY report the value
of the received response code as its status code if the response code
has a higher priority. Each MA method needs to outline the rules
pertaining to its response and status codes so that RTP receiver
implementations can determine what to report in any given scenario.
Begen & Friedrich Expires October 13, 2011 [Page 7]

Internet-Draft MA Report Block Type for RTCP XR April 20114.1.2. Status Code Rules for the RAMS Method
In this section, we provide the status code rules for the RAMS method
described in [I-D.ietf-avt-rapid-acquisition-for-rtp].
Section 11.6 of [I-D.ietf-avt-rapid-acquisition-for-rtp] defines
several response codes. The 1xx and 2xx-level response codes are
informational and success response codes, respectively. If the RTP
receiver receives a 1xx or 2xx-level response code, then the RTP
receiver MUST use one of the 1xxx-level status codes defined in
Section 7.5 of this document. If the RTP receiver receives a 4xx or
5xx-level response code (indicating receiver-side and server-side
errors, respectively), then the RTP receiver MUST use the response
code as its status code. In other words, the 4xx and 5xx-level
response codes have a higher priority than the 1xxx-level status
codes.
4.2. Extensions
To improve the reporting scope, it might be desirable to define new
fields in the MA report block. Such fields are to be encoded as TLV
elements as described below and sketched in Figure 2:
o Type: A single-octet identifier that defines the type of the
parameter represented in this TLV element.
o Length: A two-octet field that indicates the length (in octets)
of the TLV element excluding the Type and Length fields, and the
8-bit Reserved field between them. Note that this length does not
include any padding that is needed for alignment.
o Value: Variable-size set of octets that contains the specific
value for the parameter.
In the extensions, the Reserved field MUST be set to zero and ignored
on reception. If a TLV element does not fall on a 32-bit boundary,
the last word MUST be padded to the boundary using further bits set
to zero.
In the MA report block, the RTP receiver MUST place any vendor-
neutral or private extension after the base report.
Begen & Friedrich Expires October 13, 2011 [Page 8]

Internet-Draft MA Report Block Type for RTCP XR April 2011
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Reserved | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
: Value :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: Structure of a TLV element
4.2.1. Vendor-Neutral Extensions
If the goal in defining new TLV elements is to extend the report
block in a vendor-neutral manner, they need to be registered with
IANA through the guidelines provided in Section 7.4.
The current document defines several vendor-neutral extensions.
First, we present the TLV elements that can be used by any RTP-based
multicast application.
o RTP Seqnum of the First Multicast Packet (16 bits): TLV element
that specifies the RTP sequence number of the first multicast
packet received for the primary multicast stream. If the
multicast join was successful, this element MUST be included. If
no multicast packet has been received, this element MUST NOT exist
in the report block.
Type: 1
o SFGMP Join Time (32 bits): TLV element that denotes the greater
of zero or the time difference (in ms) between the instant SFGMP
Join message has been sent and the instant the first packet was
received in the multicast session. If the multicast join was
successful, this element MUST be included. If no multicast packet
has been received, this element MUST NOT exist in the report
block.
Type: 2
o Application Request-to-Multicast Delta Time (32 bits): Optional
TLV element that denotes the time difference (in ms) between the
instant the application became aware it would join a new multicast
session and the instant the first RTP packet was received from the
primary multicast stream. If no such packet has been received,
this element MUST NOT exist in the report block.
Type: 3
Begen & Friedrich Expires October 13, 2011 [Page 9]

Internet-Draft MA Report Block Type for RTCP XR April 2011
o Application Request-to-Presentation Delta Time (32 bits):
Optional TLV element that denotes the time difference (in ms)
between the instant the application became aware it would join a
new multicast session and the instant the media is first
presented. If the RTP receiver cannot successfully present the
media, this element MUST NOT exist in the report block.
Type: 4
We next present the TLV elements that can be used when the RTP
receiver supports and uses the RAMS method described in
[I-D.ietf-avt-rapid-acquisition-for-rtp]. However, if the RTP
receiver does not send a rapid acquisition request, the following TLV
elements MUST NOT exist in the MA report block. Some elements may or
may not exist depending on whether the RTP receiver receives any
packet from the unicast burst and/or the primary multicast stream or
not. These are explained below.
o Application Request-to-RAMS Request Delta Time (32 bits):
Optional TLV element that denotes the time difference (in ms)
between the instant the application became aware it would request
a rapid acquisition and the instant the rapid acquisition request
was actually sent by the application.
Type: 11
o RAMS Request-to-RAMS Information Delta Time (32 bits): Optional
TLV element that denotes the time difference (in ms) between the
instant the rapid acquisition request has been sent and the
instant the first RAMS Information message was received in the
unicast session. If no such message has been received, this
element MUST NOT exist in the report block.
Type: 12
o RAMS Request-to-Burst Delta Time (32 bits): Optional TLV element
that denotes the time difference (in ms) between the instant the
rapid acquisition request has been sent and the instant the first
burst packet was received in the unicast session. If no burst
packet has been received, this element MUST NOT exist in the
report block.
Type: 13
o RAMS Request-to-Multicast Delta Time (32 bits): Optional TLV
element that denotes the time difference (in ms) between the
instant the rapid acquisition request has been sent and the
instant the first RTP packet was received from the primary
Begen & Friedrich Expires October 13, 2011 [Page 10]

Internet-Draft MA Report Block Type for RTCP XR April 2011
multicast stream. If no such packet has been received, this
element MUST NOT exist in the report block.
Type: 14
o RAMS Request-to-Burst-Completion Delta Time (32 bits): Optional
TLV element that denotes the time difference (in ms) between the
instant the rapid acquisition request has been sent and the
instant the last burst packet was received in the unicast session.
If no burst packet has been received, this element MUST NOT exist
in the report block.
Type: 15
o Number of Duplicate Packets (32 bits): Optional TLV element that
denotes the number of duplicate packets due to receiving the same
packet in both unicast and primary multicast RTP sessions. If no
RTP packet has been received from the primary multicast stream,
this element MUST NOT exist. If no burst packet has been received
in the unicast session, the value of this element MUST be set to
zero.
Type: 16
o Size of Burst-to-Multicast Gap (32 bits): Optional TLV element
that denotes the greater of zero or the difference between the
sequence number of the first multicast packet (received from the
primary multicast stream) and the sequence number of the last
burst packet minus 1 (considering the wrapping of the sequence
numbers). If no burst packet has been received in the unicast
session or no RTP packet has been received from the primary
multicast stream, this element MUST NOT exist in the report block.
Type: 17
4.2.2. Private Extensions
It is desirable to allow vendors to use private extensions in TLV
format. The range of [128-254] of TLV Types is reserved for private
extensions. IANA management for these extensions is unnecessary and
they are the responsibility of individual vendors.
Implementations use the structure depicted in Figure 3 for the
private extensions. Here, the private enterprise numbers are used
from http://www.iana.org/assignments/enterprise-numbers. This will
ensure the uniqueness of the private extensions and avoid any
collision.
Begen & Friedrich Expires October 13, 2011 [Page 11]

Internet-Draft MA Report Block Type for RTCP XR April 20115. Session Description Protocol Signaling
A new unilateral parameter is defined for the MA report block to be
used with the Session Description Protocol (SDP) [RFC4566] using the
Augmented Backus-Naur Form (ABNF) [RFC5234]. It has the following
syntax within the 'rtcp-xr' attribute [RFC3611]:
xr-format = <See RFC 3611>
xr-format /= multicast-acq-ext
multicast-acq-ext = "multicast-acq"
Figure 4
Refer to Section 5.1 of [RFC3611] for a detailed description and the
full syntax of the "rtcp-xr" attribute. The "multicast-acq-ext"
parameter is compatible with the definition of "format-ext" in the
"rtcp-xr" attribute.
Begen & Friedrich Expires October 13, 2011 [Page 13]

Internet-Draft MA Report Block Type for RTCP XR April 20116. Security Considerations
The security considerations of [RFC3611] apply in this document as
well.
The information contained in MA reports could be stolen as any other
RTCP reports if proper protection mechanism(s) are not in place. If
desired, similar to other RTCP XR reports, the MA reports MAY be
protected by using Secure RTP (SRTP) and Secure RTP Control Protocol
(SRTCP) [RFC3711].
Malicious sniffing or otherwise obtaining MA report blocks can reveal
performance characteristics of the RTP service and underlying
network. This information is mostly available to an observer with
the ability to capture RTP and RTCP session traffic. The contents
and value of any private extensions need to be studied when
considering the necessity to secure the MA reports since application-
level performance data might be present that is not otherwise
available to an attacker as with the required fields and vendor-
neutral extensions.
Using the MA reports to provide feedback into the acquisition of the
multicast streams can introduce possible additional security
implications. If a forged or otherwise modified MA report is
received for an earlier acquisition attempt, invalid data can be used
as input in later rapid acquisition attempts. For example,
incorrectly small SFGMP join times could cause the unicast burst to
be too short, leading to gaps in sequence numbers in the approach
discussed in [I-D.ietf-avt-rapid-acquisition-for-rtp]. Additionally,
forged reports could give the appearance that rapid acquisition is
performing correctly, when it is in fact failing, or vice versa.
However, the MA reports are believed not to introduce any additional
risks from a confidentiality viewpoint.
Begen & Friedrich Expires October 13, 2011 [Page 14]

Internet-Draft MA Report Block Type for RTCP XR April 20117. IANA Considerations
The following contact information is provided for all registrations
in this document:
Ali Begen
abegen@cisco.com
Note to the RFC Editor: In the following, please replace "XXXX" with
the number of this document prior to publication as an RFC.
7.1. RTCP XR Block Type
Note to IANA: Type value 11 has been pre-registered with IANA for
the "Multicast Acquisition Report Block" in the RTCP XR Block Type
Registry. Please replace the existing reference with the RFC number
of this document.
7.2. RTCP XR SDP Parameter
This document registers the SDP [RFC4566] parameter 'multicast-acq'
for the 'rtcp-xr' attribute in the RTCP XR SDP Parameters Registry.
7.3. Multicast Acquisition Method Registry
This document creates a new IANA registry for the MA methods. The
registry is called the Multicast Acquisition Method Registry. This
registry is to be managed by the IANA according to the Specification
Required policy of [RFC5226].
The length of the MA Method field is a single octet, allowing 256
values. The registry is initialized with the following entries:
MA Method Description Reference
--------- ------------------------------------ -------------
0 Reserved [RFCXXXX]
1 Simple join (No explicit method) [RFCXXXX]
2 RAMS [I-D.ietf-avt-rapid-acquisition-for-rtp]
3-254 Specification Required
255 Reserved [RFCXXXX]
The MA Method values 0 and 255 are reserved for future use.
Any registration for an unassigned value needs to contain the
following information:
Begen & Friedrich Expires October 13, 2011 [Page 15]

Internet-Draft MA Report Block Type for RTCP XR April 2011
o Contact information of the one doing the registration, including
at least name, address, and email.
o A detailed description of how the MA method works.
7.4. Multicast Acquisition Report Block TLV Space Registry
This document creates a new IANA TLV space registry for the MA report
block extensions. The registry is called the Multicast Acquisition
Report Block TLV Space Registry. This registry is to be managed by
the IANA according to the Specification Required policy of [RFC5226].
The length of the Type field in the TLV elements is a single octet,
allowing 256 values. The registry is initialized with the following
entries:
Type Description Reference
---- -------------------------------------------------- -------------
1 RTP Seqnum of the First Multicast Packet [RFCXXXX]
2 SFGMP Join Time [RFCXXXX]
3 Application Request-to-Multicast Delta Time [RFCXXXX]
4 Application Request-to-Presentation Delta Time [RFCXXXX]
11 Application Request-to-RAMS Request Delta Time [RFCXXXX]
12 RAMS Request-to-RAMS Information Delta Time [RFCXXXX]
13 RAMS Request-to-Burst Delta Time [RFCXXXX]
14 RAMS Request-to-Multicast Delta Time [RFCXXXX]
15 RAMS Request-to-Burst-Completion Delta Time [RFCXXXX]
16 Number of Duplicate Packets [RFCXXXX]
17 Size of Burst-to-Multicast Gap [RFCXXXX]
The Type values 0 and 255 are reserved for future use. The Type
values between (and including) 128 and 254 are reserved for private
extensions.
Any registration for an unassigned Type value needs to contain the
following information:
o Contact information of the one doing the registration, including
at least name, address, and email.
o A detailed description of what the new TLV element represents and
how it is interpreted.
Begen & Friedrich Expires October 13, 2011 [Page 16]

Internet-Draft MA Report Block Type for RTCP XR April 20117.5. Multicast Acquisition Status Code Space Registry
This document creates a new IANA TLV space registry for the status
codes. The registry is called the Multicast Acquisition Status Code
Space Registry. This registry is to be managed by the IANA according
to the Specification Required policy of [RFC5226].
The length of the Status field is two octets, allowing 65536 codes.
However, the status codes have been registered to allow for an easier
classification. For example, the values between (and including) 1
and 1000 are primarily used by the MA method of simple join. The
values between (and including) 1001 and 2000 are used by the MA
method described in [I-D.ietf-avt-rapid-acquisition-for-rtp]. When
registering new status codes for the existing MA methods or newly
defined MA methods, a similar classification scheme is encouraged to
be followed.
The Status code 65535 is reserved for future use. The registry is
initialized with the following entries:
Code Description Reference
----- -------------------------------------------------- -------------
0 A private status code is included in the message [RFCXXXX]
1 Multicast join was successful [RFCXXXX]
2 Multicast join has failed [RFCXXXX]
3 A presentation error has occurred [RFCXXXX]
4 An unspecified RR internal error has occurred [RFCXXXX]
1001 RAMS has been successfully completed [RFCXXXX]
1002 No RAMS-R message has been sent [RFCXXXX]
1003 Invalid RAMS-I message syntax [RFCXXXX]
1004 RAMS-I message has timed out [RFCXXXX]
1005 RAMS unicast burst has timed out [RFCXXXX]
1006 An unspecified RR internal error has occurred
during RAMS [RFCXXXX]
1007 A presentation error has occurred during RAMS [RFCXXXX]
Any registration for an unassigned Status code needs to contain the
following information:
o Contact information of the one doing the registration, including
at least name, address, and email.
o A detailed description of what the new Status code describes and
how it is interpreted.
Begen & Friedrich Expires October 13, 2011 [Page 17]

Internet-Draft MA Report Block Type for RTCP XR April 20118. Acknowledgments
This specification has greatly benefited from discussions with
Michael Lague, Dong Hsu, Carol Iturralde, Xuan Zhong, Dave Oran, Tom
Van Caenegem and many others. The authors would like to thank each
of these individuals for their contributions.
Begen & Friedrich Expires October 13, 2011 [Page 18]