RFCs in HTML Format

RFC 1819

                Internet Stream Protocol Version 2 (ST2)
                 Protocol Specification - Version ST2+


   This memo contains a revised specification of the Internet STream
   Protocol Version 2 (ST2). ST2 is an experimental resource reservation
   protocol intended to provide end-to-end real-time guarantees over an
   internet. It allows applications to build multi-destination simplex
   data streams with a desired quality of service. The revised version
   of ST2 specified in this memo is called ST2+.

   This specification is a product of the STream Protocol Working Group
   of the Internet Engineering Task Force.

Delgrossi & Berger, Editors   Experimental                      [Page 1]

RFC 1819 ST2+ Protocol Specification August 1995 Table of Contents 1 Introduction 6 1.1 What is ST2? 6 1.2 ST2 and IP 8 1.3 Protocol History 8 1.3.1 RFC1190 ST and ST2+ Major Differences 9 1.4 Supporting Modules for ST2 10 1.4.1 Data Transfer Protocol 11 1.4.2 Setup Protocol 11 1.4.3 Flow Specification 11 1.4.4 Routing Function 12 1.4.5 Local Resource Manager 12 1.5 ST2 Basic Concepts 15 1.5.1 Streams 16 1.5.2 Data Transmission 16 1.5.3 Flow Specification 17 1.6 Outline of This Document 19 2 ST2 User Service Description 19 2.1 Stream Operations and Primitive Functions 19 2.2 State Diagrams 21 2.3 State Transition Tables 25 3 The ST2 Data Transfer Protocol 26 3.1 Data Transfer with ST 26 3.2 ST Protocol Functions 27 3.2.1 Stream Identification 27 3.2.2 Packet Discarding based on Data Priority 27 4 SCMP Functional Description 28 4.1 Types of Streams 29 4.1.1 Stream Building 30 4.1.2 Knowledge of Receivers 30 4.2 Control PDUs 31 4.3 SCMP Reliability 32 4.4 Stream Options 33 4.4.1 No Recovery 33 4.4.2 Join Authorization Level 34 4.4.3 Record Route 34 4.4.4 User Data 35 4.5 Stream Setup 35 4.5.1 Information from the Application 35 4.5.2 Initial Setup at the Origin 35 Invoking the Routing Function 36 Reserving Resources 36 4.5.3 Sending CONNECT Messages 37 Empty Target List 37 Delgrossi & Berger, Editors Experimental [Page 2]
RFC 1819 ST2+ Protocol Specification August 1995 4.5.4 CONNECT Processing by an Intermediate ST agent 37 4.5.5 CONNECT Processing at the Targets 38 4.5.6 ACCEPT Processing by an Intermediate ST agent 38 4.5.7 ACCEPT Processing by the Origin 39 4.5.8 REFUSE Processing by the Intermediate ST agent 39 4.5.9 REFUSE Processing by the Origin 39 4.5.10 Other Functions during Stream Setup 40 4.6 Modifying an Existing Stream 40 4.6.1 The Origin Adding New Targets 41 4.6.2 The Origin Removing a Target 41 4.6.3 A Target Joining a Stream 42 Intermediate Agent (Router) as Origin 43 4.6.4 A Target Deleting Itself 43 4.6.5 Changing a Stream's FlowSpec 44 4.7 Stream Tear Down 45 5 Exceptional Cases 45 5.1 Long ST Messages 45 5.1.1 Handling of Long Data Packets 45 5.1.2 Handling of Long Control Packets 46 5.2 Timeout Failures 47 5.2.1 Failure due to ACCEPT Acknowledgment Timeout 47 5.2.2 Failure due to CHANGE Acknowledgment Timeout 47 5.2.3 Failure due to CHANGE Response Timeout 48 5.2.4 Failure due to CONNECT Acknowledgment Timeout 48 5.2.5 Failure due to CONNECT Response Timeout 48 5.2.6 Failure due to DISCONNECT Acknowledgment Timeout 48 5.2.7 Failure due to JOIN Acknowledgment Timeout 48 5.2.8 Failure due to JOIN Response Timeout 49 5.2.9 Failure due to JOIN-REJECT Acknowledgment Timeout 49 5.2.10 Failure due to NOTIFY Acknowledgment Timeout 49 5.2.11 Failure due to REFUSE Acknowledgment Timeout 49 5.2.12 Failure due to STATUS Response Timeout 49 5.3 Setup Failures due to Routing Failures 50 5.3.1 Path Convergence 50 5.3.2 Other Cases 51 5.4 Problems due to Routing Inconsistency 52 5.5 Problems in Reserving Resources 53 5.5.1 Mismatched FlowSpecs 53 5.5.2 Unknown FlowSpec Version 53 5.5.3 LRM Unable to Process FlowSpec 53 5.5.4 Insufficient Resources 53 5.6 Problems Caused by CHANGE Messages 54 5.7 Unknown Targets in DISCONNECT and CHANGE 55 Delgrossi & Berger, Editors Experimental [Page 3]
RFC 1819 ST2+ Protocol Specification August 1995 6 Failure Detection and Recovery 55 6.1 Failure Detection 55 6.1.1 Network Failures 56 6.1.2 Detecting ST Agents Failures 56 6.2 Failure Recovery 58 6.2.1 Problems in Stream Recovery 60 6.3 Stream Preemption 62 7 A Group of Streams 63 7.1 Basic Group Relationships 63 7.1.1 Bandwidth Sharing 63 7.1.2 Fate Sharing 64 7.1.3 Route Sharing 65 7.1.4 Subnet Resources Sharing 65 7.2 Relationships Orthogonality 65 8 Ancillary Functions 66 8.1 Stream ID Generation 66 8.2 Group Name Generator 66 8.3 Checksum Computation 67 8.4 Neighbor ST Agent Identification and Information Collection 67 8.5 Round Trip Time Estimation 68 8.6 Network MTU Discovery 68 8.7 IP Encapsulation of ST 69 8.8 IP Multicasting 70 9 The ST2+ Flow Specification 71 9.1 FlowSpec Version #0 - (Null FlowSpec) 72 9.2 FlowSpec Version #7 - ST2+ FlowSpec 72 9.2.1 QoS Classes 73 9.2.2 Precedence 74 9.2.3 Maximum Data Size 74 9.2.4 Message Rate 74 9.2.5 Delay and Delay Jitter 74 9.2.6 ST2+ FlowSpec Format 75 10 ST2 Protocol Data Units Specification 77 10.1 Data PDU 77 10.1.1 ST Data Packets 78 10.2 Control PDUs 78 10.3 Common SCMP Elements 80 10.3.1 FlowSpec 80 10.3.2 Group 81 10.3.3 MulticastAddress 82 10.3.4 Origin 82 10.3.5 RecordRoute 83 10.3.6 Target and TargetList 84 Delgrossi & Berger, Editors Experimental [Page 4]
RFC 1819 ST2+ Protocol Specification August 1995 10.3.7 UserData 85 10.3.8 Handling of Undefined Parameters 86 10.4 ST Control Message PDUs 86 10.4.1 ACCEPT 86 10.4.2 ACK 88 10.4.3 CHANGE 89 10.4.4 CONNECT 89 10.4.5 DISCONNECT 92 10.4.6 ERROR 93 10.4.7 HELLO 94 10.4.8 JOIN 95 10.4.9 JOIN-REJECT 96 10.4.10 NOTIFY 97 10.4.11 REFUSE 98 10.4.12 STATUS 100 10.4.13 STATUS-RESPONSE 100 10.5 Suggested Protocol Constants 101 10.5.1 SCMP Messages 102 10.5.2 SCMP Parameters 102 10.5.3 ReasonCode 102 10.5.4 Timeouts and Other Constants 104 10.6 Data Notations 105 11 References 106 12 Security Considerations 108 13 Acknowledgments and Authors' Addresses 108 Delgrossi & Berger, Editors Experimental [Page 5]
RFC 1819 ST2+ Protocol Specification August 1995 1. Introduction 1.1 What is ST2? The Internet Stream Protocol, Version 2 (ST2) is an experimental connection-oriented internetworking protocol that operates at the same layer as connectionless IP. It has been developed to support the efficient delivery of data streams to single or multiple destinations in applications that require guaranteed quality of service. ST2 is part of the IP protocol family and serves as an adjunct to, not a replacement for, IP. The main application areas of the protocol are the real-time transport of multimedia data, e.g., digital audio and video packet streams, and distributed simulation/gaming, across internets. ST2 can be used to reserve bandwidth for real-time streams across network routes. This reservation, together with appropriate network access and packet scheduling mechanisms in all nodes running the protocol, guarantees a well-defined Quality of Service (QoS) to ST2 applications. It ensures that real-time packets are delivered within their deadlines, that is, at the time where they need to be presented. This facilitates a smooth delivery of data that is essential for time- critical applications, but can typically not be provided by best- effort IP communication. DATA PATH CONTROL PATH ========= ============ Upper +------------------+ +---------+ Layer | Application data | | Control | +------------------+ +---------+ | | | V | +-------------------+ SCMP | | SCMP | | | +-------------------+ | | V V +-----------------------+ +------------------------+ ST | ST | | | ST | | | +-----------------------+ +------------------------+ D-bit=1 D-bit=0 Figure 1: ST2 Data and Control Path Just like IP, ST2 actually consists of two protocols: ST for the data transport and SCMP, the Stream Control Message Protocol, for all control functions. ST is simple and contains only a single PDU format that is designed for fast and efficient data forwarding in order to Delgrossi & Berger, Editors Experimental [Page 6]
RFC 1819 ST2+ Protocol Specification August 1995 achieve low communication delays. SCMP, however, is more complex than IP's ICMP. As with ICMP and IP, SCMP packets are transferred within ST packets as shown in Figure 1. +--------------------+ | Conference Control | +--------------------+ +-------+ +-------+ | | Video | | Voice | | +-----+ +------+ +-----+ +-----+ Application | Appl | | Appl | | | SNMP| |Telnet| | FTP | ... | | Layer +-------+ +-------+ | +-----+ +------+ +-----+ +-----+ | | | | | | | V V | | | | | ------------ +-----+ +-----+ | | | | | | PVP | | NVP | | | | | | +-----+ +-----+ + | | | | | \ | \ \ | | | | | +-----|--+-----+ | | | | | Appl.|control V V V V V | ST data | +-----+ +-------+ +-----+ | & control| | UDP | | TCP | ... | RTP | Transport | | +-----+ +-------+ +-----+ Layer | /| / | \ / / | / /| |\ / | +------+--|--\-----+-/--|--- ... -+ / | | \ / | | | \ / | / | | \ / | | | \ +----|--- ... -+ | ----------- | \ / | | | \ / | | | V | | | V | | | +------+ | | | +------+ | +------+ | | | SCMP | | | | | ICMP | | | IGMP | | Internet | +------+ | | | +------+ | +------+ | Layer | | | | | | | | | V V V V V V V V V +-----------------+ +-----------------------------------+ | STream protocol |->| Internet Protocol | +-----------------+ +-----------------------------------+ | \ / | | \ / | | X | ------------ | / \ | | / \ | VV VV +----------------+ +----------------+ | (Sub-) Network |...| (Sub-) Network | (Sub-)Network | Protocol | | Protocol | Layer +----------------+ +----------------+ Figure 2. Protocol Relationships Delgrossi & Berger, Editors Experimental [Page 7]
RFC 1819 ST2+ Protocol Specification August 1995 1.2 ST2 and IP ST2 is designed to coexist with IP on each node. A typical distributed multimedia application would use both protocols: IP for the transfer of traditional data and control information, and ST2 for the transfer of real-time data. Whereas IP typically will be accessed from TCP or UDP, ST2 will be accessed via new end-to-end real-time protocols. The position of ST2 with respect to the other protocols of the Internet family is represented in Figure 2. Both ST2 and IP apply the same addressing schemes to identify different hosts. ST2 and IP packets differ in the first four bits, which contain the internetwork protocol version number: number 5 is reserved for ST2 (IP itself has version number 4). As a network layer protocol, like IP, ST2 operates independently of its underlying subnets. Existing implementations use ARP for address resolution, and use the same Layer 2 SAPs as IP. As a special function, ST2 messages can be encapsulated in IP packets. This is represented in Figure 2 as a link between ST2 and IP. This link allows ST2 messages to pass through routers which do not run ST2. Resource management is typically not available for these IP route segments. IP encapsulation is, therefore, suggested only for portions of the network which do not constitute a system bottleneck. In Figure 2, the RTP protocol is shown as an example of transport layer on top of ST2. Others include the Packet Video Protocol (PVP) [Cole81], the Network Voice Protocol (NVP) [Cohe81], and others such as the Heidelberg Transport Protocol (HeiTP) [DHHS92]. 1.3 Protocol History The first version of ST was published in the late 1970's and was used throughout the 1980's for experimental transmission of voice, video, and distributed simulation. The experience gained in these applications led to the development of the revised protocol version ST2. The revision extends the original protocol to make it more complete and more applicable to emerging multimedia environments. The specification of this protocol version is contained in Internet RFC 1190 which was published in October 1990 [RFC1190]. With more and more developments of commercial distributed multimedia applications underway and with a growing dissatisfaction at the transmission quality for audio and video over IP in the MBONE, interest in ST2 has grown over the last years. Companies have products available incorporating the protocol. The BERKOM MMTS project of the German PTT [DeAl92] uses ST2 as its core protocol for Delgrossi & Berger, Editors Experimental [Page 8]
RFC 1819 ST2+ Protocol Specification August 1995 the provision of multimedia teleservices such as conferencing and mailing. In addition, implementations of ST2 for Digital Equipment, IBM, NeXT, Macintosh, PC, Silicon Graphics, and Sun platforms are available. In 1993, the IETF started a new working group on ST2 as part of ongoing efforts to develop protocols that address resource reservation issues. The group's mission was to clean up the existing protocol specification to ensure better interoperability between the existing and emerging implementations. It was also the goal to produce an updated experimental protocol specification that reflected the experiences gained with the existing ST2 implementations and applications. Which led to the specification of the ST2+ protocol contained in this document. 1.3.1 RFC1190 ST and ST2+ Major Differences The protocol changes from RFC1190 were motivated by protocol simplification and clarification, and codification of extensions in existing implementations. This section provides a list of major differences, and is probably of interest only to those who have knowledge of RFC1190. The major differences between the versions are: o Elimination of "Hop IDentifiers" or HIDs. HIDs added much complexity to the protocol and was found to be a major impediment to interoperability. HIDs have been replaced by globally unique identifiers called "Stream IDentifiers" or SIDs. o Elimination of a number of stream options. A number of options were found to not be used by any implementation, or were thought to add more complexity than value. These options were removed. Removed options include: point-to-point, full-duplex, reverse charge, and source route. o Elimination of the concept of "subset" implementations. RFC1190 permitted subset implementations, to allow for easy implementation and experimentation. This led to interoperability problems. Agents implementing the protocol specified in this document, MUST implement the full protocol. A number of the protocol functions are best- effort. It is expected that some implementations will make more effort than others in satisfying particular protocol requests. o Clarification of the capability of targets to request to join a steam. RFC1190 can be interpreted to support target requests, but most implementors did not understand this and did not add support for this capability. The lack of this capability was found to be a significant limitation in the ability to scale the number of participants in a single ST stream. This clarification is based on Delgrossi & Berger, Editors Experimental [Page 9]
RFC 1819 ST2+ Protocol Specification August 1995 work done by IBM Heidelberg. o Separation of functions between ST and supporting modules. An effort was made to improve the separation of functions provided by ST and those provided by other modules. This is reflected in reorganization of some text and some PDU formats. ST was also made FlowSpec independent, although it does define a FlowSpec for testing and interoperability purposes. o General reorganization and re-write of the specification. This document has been organized with the goal of improved readability and clarity. Some sections have been added, and an effort was made to improve the introduction of concepts. 1.4 Supporting Modules for ST2 ST2 is one piece of a larger mosaic. This section presents the overall communication architecture and clarifies the role of ST2 with respect to its supporting modules. ST2 proposes a two-step communication model. In the first step, the real-time channels for the subsequent data transfer are built. This is called stream setup. It includes selecting the routes to the destinations and reserving the correspondent resources. In the second step, the data is transmitted over the previously established streams. This is called data transfer. While stream setup does not have to be completed in real-time, data transfer has stringent real- time requirements. The architecture used to describe the ST2 communication model includes: o a data transfer protocol for the transmission of real-time data over the established streams, o a setup protocol to establish real-time streams based on the flow specification, o a flow specification to express user real-time requirements, o a routing function to select routes in the Internet, o a local resource manager to appropriately handle resources involved in the communication. This document defines a data protocol (ST), a setup protocol (SCMP), and a flow specification (ST2+ FlowSpec). It does not define a routing function and a local resource manager. However, ST2 assumes their existence. Delgrossi & Berger, Editors Experimental [Page 10]
RFC 1819 ST2+ Protocol Specification August 1995 Alternative architectures are possible, see [RFC1633] for an example alternative architecture that could be used when implementing ST2. 1.4.1 Data Transfer Protocol The data transfer protocol defines the format of the data packets belonging to the stream. Data packets are delivered to the targets along the stream paths previously established by the setup protocol. Data packets are delivered with the quality of service associated with the stream. Data packets contain a globally unique stream identifier that indicates which stream they belong to. The stream identifier is also known by the setup protocol, which uses it during stream establishment. The data transfer protocol for ST2, known simply as ST, is completely defined by this document. 1.4.2 Setup Protocol The setup protocol is responsible for establishing, maintaining, and releasing real-time streams. It relies on the routing function to select the paths from the source to the destinations. At each host/router on these paths, it presents the flow specification associated with the stream to the local resource manager. This causes the resource managers to reserve appropriate resources for the stream. The setup protocol for ST2 is called Stream Control Message Protocol, or SCMP, and is completely defined by this document. 1.4.3 Flow Specification The flow specification is a data structure including the ST2 applications' QoS requirements. At each host/router, it is used by the local resource manager to appropriately handle resources so that such requirements are met. Distributing the flow specification to all resource managers along the communication paths is the task of the setup protocol. However, the contents of the flow specification are transparent to the setup protocol, which simply carries the flow specification. Any operations on the flow specification, including updating internal fields and comparing flow specifications are performed by the resource managers. This document defines a specific flow specification format that allows for interoperability among ST2 implementations. This flow specification is intended to support a flow with a single transmission rate for all destinations in the stream. Implementations may support more than one flow specification format and the means are provided to add new formats as they are defined in the future. However, the flow specification format has to be consistent Delgrossi & Berger, Editors Experimental [Page 11]
RFC 1819 ST2+ Protocol Specification August 1995 throughout the stream, i.e., it is not possible to use different flow specification formats for different parts of the same stream. 1.4.4 Routing Function The routing function is an external unicast route generation capability. It provides the setup protocol with the path to reach each of the desired destinations. The routing function is called on a hop-by-hop basis and provides next-hop information. Once a route is selected by the routing function, it persists for the whole stream lifetime. The routing function may try to optimize based on the number of targets, the requested resources, or use of local network multicast or bandwidth capabilities. Alternatively, the routing function may even be based on simple connectivity information. The setup protocol is not necessarily aware of the criteria used by the routing function to select routes. It works with any routing function algorithm. The algorithm adopted is a local matter at each host/router and different hosts/routers may use different algorithms. The interface between setup protocol and routing function is also a local matter and therefore it is not specified by this document. This version of ST does not support source routing. It does support route recording. It does include provisions that allow identification of ST capable neighbors. Identification of remote ST hosts/routers is not specifically addressed. 1.4.5 Local Resource Manager At each host/router traversed by a stream, the Local Resource Manager (LRM) is responsible for handling local resources. The LRM knows which resources are on the system and what capacity they can provide. Resources include: o CPUs on end systems and routers to execute the application and protocol software, o main memory space for this software (as in all real-time systems, code should be pinned in main memory, as swapping it out would have detrimental effects on system performance), o buffer space to store the data, e.g., communication packets, passing through the nodes, o network adapters, and Delgrossi & Berger, Editors Experimental [Page 12]
RFC 1819 ST2+ Protocol Specification August 1995 o transmission networks between the nodes. Networks may be as simple as point-to-point links or as complex as switched networks such as Frame Relay and ATM networks. During stream setup and modification, the LRM is presented by the setup protocol with the flow specification associated to the stream. For each resource it handles, the LRM is expected to perform the following functions: o Stream Admission Control: it checks whether, given the flow specification, there are sufficient resources left to handle the new data stream. If the available resources are insufficient, the new data stream must be rejected. o QoS Computation: it calculates the best possible performance the resource can provide for the new data stream under the current traffic conditions, e.g., throughput and delay values are computed. o Resource Reservation: it reserves the resource capacities required to meet the desired QoS. During data transfer, the LRM is responsible for: o QoS Enforcement: it enforces the QoS requirements by appropriate scheduling of resource access. For example, data packets from an application with a short guaranteed delay must be served prior to data from an application with a less strict delay bound. The LRM may also provide the following additional functions: o Data Regulation: to smooth a stream's data traffic, e.g., as with the leaky bucket algorithm. o Policing: to prevent applications exceed their negotiated QoS, e.g., to send data at a higher rate than indicated in the flow specification. o Stream Preemption: to free up resources for other streams with higher priority or importance. The strategies adopted by the LRMs to handle resources are resource- dependent and may vary at every host/router. However, it is necessary that all LRMs have the same understanding of the flow specification. The interface between setup protocol and LRM is a local matter at every host and therefore it is not specified by this document. An example of LRM is the Heidelberg Resource Administration Technique (HeiRAT) [VoHN93]. Delgrossi & Berger, Editors Experimental [Page 13]
RFC 1819 ST2+ Protocol Specification August 1995 It is also assumed that the LRM provides functions to compare flow specifications, i.e., to decide whether a flow specification requires a greater, equal, or smaller amount of resource capacities to be reserved. Delgrossi & Berger, Editors Experimental [Page 14]
RFC 1819 ST2+ Protocol Specification August 1995 1.5 ST2 Basic Concepts The following sections present at an introductory level some of the fundamental ST2 concepts including streams, data transfer, and flow specification. Hosts Connections... : ...and Streams ==================== : ============== data Origin : Origin packets +-----------+ : +----+ +----|Application| : | | | |-----------| : +----+ +--->| ST Agent | : | | +-----------+ : | | | : | | V : | | +-------------+ : | | | | : | | +-------------| Network A | : +-------+ +--+ | | | : | | | +-------------+ : | Target 2| | | Target 2 : | & Router| | Target 1 | and Router : | | | +-----------+ | +-----------+ : V V | |Application|<-+ | |Application|<-+ : +----+ +----+ | |-----------| | | |-----------| | : | | | | +->| ST Agent |--+ +->| ST Agent |--+ : +----+ +----+ +-----------+ +-----------+ :Target 1 | | | : | | V : | | +-------------+ : | | | | : | | +-------------| Network B | : +-----+ | | | | : | | | +-------------+ : | | | Target 3 | Target 4 : | | | +-----------+ | +-----------+ : V V | |Application|<-+ | |Application|<-+ : +----+ +----+ | |-----------| | | |-----------| | : | | | | +->| ST Agent |--+ +->| ST Agent |--+ : +----+ +----+ +-----------+ +-----------+ : Target 3 Target 4 : Figure 3: The Stream Concept Delgrossi & Berger, Editors Experimental [Page 15]
RFC 1819 ST2+ Protocol Specification August 1995 1.5.1 Streams Streams form the core concepts of ST2. They are established between a sending origin and one or more receiving targets in the form of a routing tree. Streams are uni-directional from the origin to the targets. Nodes in the tree represent so-called ST agents, entities executing the ST2 protocol; links in the tree are called hops. Any node in the middle of the tree is called an intermediate agent, or router. An agent may have any combination of origin, target, or intermediate capabilities. Figure 3 illustrates a stream from an origin to four targets, where the ST agent on Target 2 also functions as an intermediate agent. Let us use this Target 2/Router node to explain some basic ST2 terminology: the direction of the stream from this node to Target 3 and 4 is called downstream, the direction towards the Origin node upstream. ST agents that are one hop away from a given node are called previous-hops in the upstream, and next-hops in the downstream direction. Streams are maintained using SCMP messages. Typical SCMP messages are CONNECT and ACCEPT to build a stream, DISCONNECT and REFUSE to close a stream, CHANGE to modify the quality of service associated with a stream, and JOIN to request to be added to a stream. Each ST agent maintains state information describing the streams flowing through it. It can actively gather and distribute such information. It can recognize failed neighbor ST agents through the use of periodic HELLO message exchanges. It can ask other ST agents about a particular stream via a STATUS message. These ST agents then send back a STATUS-RESPONSE message. NOTIFY messages can be used to inform other ST agents of significant events. ST2 offers a wealth of functionalities for stream management. Streams can be grouped together to minimize allocated resources or to process them in the same way in case of failures. During audio conferences, for example, only a limited set of participants may talk at once. Using the group mechanism, resources for only a portion of the audio streams of the group need to be reserved. Using the same concept, an entire group of related audio and video streams can be dropped if one of them is preempted. 1.5.2 Data Transmission Data transfer in ST2 is simplex in the downstream direction. Data transport through streams is very simple. ST2 puts only a small header in front of the user data. The header contains a protocol identification that distinguishes ST2 from IP packets, an ST2 version Delgrossi & Berger, Editors Experimental [Page 16]
RFC 1819 ST2+ Protocol Specification August 1995 number, a priority field (specifying a relative importance of streams in cases of conflict), a length counter, a stream identification, and a checksum. These elements form a 12-byte header. Efficiency is also achieved by avoiding fragmentation and reassembly on all agents. Stream establishment yields a maximum message size for data packets on a stream. This maximum message size is communicated to the upper layers, so that they provide data packets of suitable size to ST2. Communication with multiple next-hops can be made even more efficient using MAC Layer multicast when it is available. If a subnet supports multicast, a single multicast packet is sufficient to reach all next-hops connected to this subnet. This leads to a significant reduction of the bandwidth requirements of a stream. If multicast is not provided, separate packets need to be sent to each next-hop. As ST2 relies on reservation, it does not contain error correction mechanisms features for data exchange such as those found in TCP. It is assumed that real-time data, such as digital audio and video, require partially correct delivery only. In many cases, retransmitted packets would arrive too late to meet their real-time delivery requirements. Also, depending on the data encoding and the particular application, a small number of errors in stream data are acceptable. In any case, reliability can be provided by layers on top of ST2 when needed. 1.5.3 Flow Specification As part of establishing a connection, SCMP handles the negotiation of quality-of-service parameters for a stream. In ST2 terminology, these parameters form a flow specification (FlowSpec) which is associated with the stream. Different versions of FlowSpecs exist, see [RFC1190], [DHHS92] and [RFC1363], and can be distinguished by a version number. Typically, they contain parameters such as average and maximum throughput, end-to-end delay, and delay variance of a stream. SCMP itself only provides the mechanism for relaying the quality-of-service parameters. Three kinds of entities participate in the quality-of-service negotiation: application entities on the origin and target sites as the service users, ST agents, and local resource managers (LRM). The origin application supplies the initial FlowSpec requesting a particular service quality. Each ST agent which obtains the FlowSpec as part of a connection establishment message, it presents the local resource manager with it. ST2 does not determine how resource managers make reservations and how resources are scheduled according to these reservations; ST2, however, assumes these mechanisms as its Delgrossi & Berger, Editors Experimental [Page 17]
RFC 1819 ST2+ Protocol Specification August 1995 basis. An example of the FlowSpec negotiation procedure is illustrated in Figure 4. Depending on the success of its local reservations, the LRM updates the FlowSpec fields and returns the FlowSpec to the ST agent, which passes it downstream as part of the connection message. Eventually, the FlowSpec is communicated to the application at the target which may base its accept/reject decision for establishing the connection on it and may finally also modify the FlowSpec. If a target accepts the connection, the (possibly modified) FlowSpec is propagated back to the origin which can then calculate an overall service quality for all targets. The application entity at the origin may later request a CHANGE to adjust reservations. Origin Router Target 1 +------+ 1a +------+ 1b +------+ | |-------------->| |------------->| | +------+ +------+ +------+ ^ | ^ | | | | 2 | | | +------------------------------------------+ + + +-------------+ \ \ +-------------+ +-------------+ |Max Delay: 12| \ \ |Max Delay: 12| |Max Delay: 12| |-------------| \ \ |-------------| |-------------| |Min Delay: 2| \ \ |Min Delay: 5| |Min Delay: 9| |-------------| \ \ |-------------| |-------------| |Max Size:4096| + + |Max Size:2048| |Max Size:2048| +-------------+ | | +-------------+ +-------------+ FlowSpec | | 1 | +---------------+ | | | V 2 | +------+ +---------------| | +------+ Target 2 +-------------+ |Max Delay: 12| |-------------| |Min Delay: 4| |-------------| |Max Size:4096| +-------------+ Figure 4: Quality-of-Service Negotiation with FlowSpecs Delgrossi & Berger, Editors Experimental [Page 18]
RFC 1819 ST2+ Protocol Specification August 1995 1.6 Outline of This Document This document contains the specification of the ST2+ version of the ST2 protocol. In the rest of the document, whenever the terms "ST" or "ST2" are used, they refer to the ST2+ version of ST2. The document is organized as follows: o Section 2 describes the ST2 user service from an application point of view. o Section 3 illustrates the ST2 data transfer protocol, ST. o Section 4 through Section 8 specify the ST2 setup protocol, SCMP. o the ST2 flow specification is presented in Section 9. o the formats of protocol elements and PDUs are defined in Section 10. 2. ST2 User Service Description This section describes the ST user service from the high-level point of view of an application. It defines the ST stream operations and primitive functions. It specifies which operations on streams can be invoked by the applications built on top of ST and when the ST primitive functions can be legally executed. Note that the presented ST primitives do not specify an API. They are used here with the only purpose of illustrating the service model for ST. 2.1 Stream Operations and Primitive Functions An ST application at the origin may create, expand, reduce, change, send data to, and delete a stream. When a stream is expanded, new targets are added to the stream; when a stream is reduced, some of the current targets are dropped from it. When a stream is changed, the associated quality of service is modified. An ST application at the target may join, receive data from, and leave a stream. This translates into the following stream operations: o OPEN: create new stream [origin], CLOSE: delete stream [origin], o ADD: expand stream, i.e., add new targets to it [origin], o DROP: reduce stream, i.e., drop targets from it [origin], o JOIN: join a stream [target], LEAVE: leave a stream [target], Delgrossi & Berger, Editors Experimental [Page 19]
RFC 1819 ST2+ Protocol Specification August 1995 o DATA: send data through stream [origin], o CHG: change a stream's QoS [origin], Each stream operation may require the execution of several primitive functions to be completed. For instance, to open a new stream, a request is first issued by the sender and an indication is generated at one or more receivers; then, the receivers may each accept or refuse the request and the correspondent indications are generated at the sender. A single receiver case is shown in Figure 5 below. Sender Network Receiver | | | OPEN.req | | | |-----------------> | | | |-----------------> | | | | OPEN.ind | | | OPEN.accept | |<----------------- | |<----------------- | | OPEN.accept-ind | | | | | | Figure 5: Primitives for the OPEN Stream Operation Delgrossi & Berger, Editors Experimental [Page 20]
RFC 1819 ST2+ Protocol Specification August 1995 Table 1 defines the ST service primitive functions associated to each stream operation. The column labelled "O/T" indicates whether the primitive is executed at the origin or at the target. +===================================================+ |Primitive | Descriptive |O/T| |===================================================| |OPEN.req | open a stream | O | |OPEN.ind | connection request indication | T | |OPEN.accept | accept stream | T | |OPEN.refuse | refuse stream | T | |OPEN.accept-ind| connection accept indication | O | |OPEN.refuse-ind| connection refuse indication | O | |ADD.req | add targets to stream | O | |ADD.ind | add request indication | T | |ADD.accept | accept stream | T | |ADD.refuse | refuse stream | T | |ADD.accept-ind | add accept indication | O | |ADD.refuse-ind | add refuse indication | O | |JOIN.req | join a stream | T | |JOIN.ind | join request indication | O | |JOIN.reject | reject a join | O | |JOIN.reject-ind| join reject indication | T | |DATA.req | send data | O | |DATA.ind | receive data indication | T | |CHG.req | change stream QoS | O | |CHG.ind | change request indication | T | |CHG.accept | accept change | T | |CHG.refuse | refuse change | T | |CHG.accept-ind | change accept indication | O | |CHG.refuse-ind | change refuse indication | O | |DROP.req | drop targets | O | |DROP.ind | disconnect indication | T | |LEAVE.req | leave stream | T | |LEAVE.ind | leave stream indication | O | |CLOSE.req | close stream | O | |CLOSE.ind | close stream indication | T | +---------------------------------------------------+ Table 1: ST Primitives 2.2 State Diagrams It is not sufficient to define the set of ST stream operations. It is also necessary to specify when the operations can be legally executed. For this reason, a set of states is now introduced and the transitions from one state to the others are specified. States are defined with respect to a single stream. The previously defined Delgrossi & Berger, Editors Experimental [Page 21]
RFC 1819 ST2+ Protocol Specification August 1995 stream operations can be legally executed only from an appropriate state. An ST agent may, with respect to an ST stream, be in one of the following states: o IDLE: the stream has not been created yet. o PENDING: the stream is in the process of being established. o ACTIVE: the stream is established and active. o ADDING: the stream is established. A stream expansion is underway. o CHGING: the stream is established. A stream change is underway. Previous experience with ST has lead to limits on stream operations that can be executed simultaneously. These restrictions are: 1. A single ADD or CHG operation can be processed at one time. If an ADD or CHG is already underway, further requests are queued by the ST agent and handled only after the previous operation has been completed. This also applies to two subsequent requests of the same kind, e.g., two ADD or two CHG operations. The second operation is not executed until the first one has been completed. 2. Deleting a stream, leaving a stream, or dropping targets from a stream is possible only after stream establishment has been completed. A stream is considered to be established when all the next-hops of the origin have either accepted or refused the stream. Note that stream refuse is automatically forced after timeout if no reply comes from a next-hop. 3. An ST agent forwards data only along already established paths to the targets, see also Section 3.1. A path is considered to be established when the next-hop on the path has explicitly accepted the stream. This implies that the target and all other intermediate ST agents are ready to handle the incoming data packets. In no cases an ST agent will forward data to a next-hop ST agent that has not explicitly accepted the stream. To be sure that all targets receive the data, an application should send the data only after all paths have been established, i.e., the stream is established. Delgrossi & Berger, Editors Experimental [Page 22]
RFC 1819 ST2+ Protocol Specification August 1995
RFC 1819 ST2+ Protocol Specification August 1995 10.4.7 HELLO HELLO (OpCode = 7) is used as part of the ST failure detection mechanism, see Section 6.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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OpCode = 7 |R| 0 | TotalBytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reference = 0 | LnkReference = 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SenderIPAddress | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | ReasonCode = 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HelloTimer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 27: HELLO Control Message o R (bit 8) is used for the Restarted-bit. o HelloTimer represents the time in millisecond since the agent was restarted, modulo the precision of the field. It is used to detect duplicate or delayed HELLO messages. Delgrossi & Berger, Editors Experimental [Page 94]
RFC 1819 ST2+ Protocol Specification August 1995 10.4.8 JOIN JOIN (OpCode = 8) is used as part of the ST steam joining mechanism, see Section 4.6.3. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OpCode = 8 | 0 | TotalBytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reference | LnkReference = 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SenderIPAddress | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | ReasonCode = 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GeneratorIPAddress | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : TargetList : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 28: JOIN Control Message o Reference contains a number assigned by the ST agent sending JOIN for use in the acknowledging ACK. o GeneratorIPAddress is the 32-bit IP address of the host that generated the JOIN message. o TargetList is the information associated with the target to be added to the stream. Delgrossi & Berger, Editors Experimental [Page 95]
RFC 1819 ST2+ Protocol Specification August 1995 10.4.9 JOIN-REJECT JOIN-REJECT (OpCode = 9) is used as part of the ST steam joining mechanism, see Section 4.6.3. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OpCode = 9 | 0 | TotalBytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reference | LnkReference | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SenderIPAddress | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | ReasonCode | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GeneratorIPAddress | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 29: JOIN-REJECT Control Message o Reference contains a number assigned by the ST agent sending the REFUSE for use in the acknowledging ACK. o LnkReference is the Reference number from the corresponding JOIN message. o ReasonCode reflects the reason why the JOIN request was rejected. o GeneratorIPAddress is the 32-bit IP address of the host that first generated the JOIN-REJECT message. Delgrossi & Berger, Editors Experimental [Page 96]
RFC 1819 ST2+ Protocol Specification August 1995 10.4.10 NOTIFY NOTIFY (OpCode = 10) is issued by an ST agent to inform other ST agents of events that may be significant. NOTIFY may be propagated beyond the previous-hop or next-hop ST agent depending on the ReasonCode, see Section 10.5.3; NOTIFY must be acknowledged with an ACK. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OpCode = 10 | 0 | TotalBytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reference | LnkReference = 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SenderIPAddress | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | ReasonCode | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DetectorIPAddress | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MaxMsgSize | RecoveryTimeout | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : FlowSpec : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : TargetList : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : UserData : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 30: NOTIFY Control Message o Reference contains a number assigned by the ST agent sending the NOTIFY for use in the acknowledging ACK. o ReasonCode identifies the reason for the notification. o DetectorIPAddress is the 32-bit IP address of the ST agent that detects the event. o MaxMsgSize is set when the MTU of the listed targets has changed (e.g., due to recovery), or when the notification is generated after a successful JOIN. Otherwise it is set to zero (0). Delgrossi & Berger, Editors Experimental [Page 97]
RFC 1819 ST2+ Protocol Specification August 1995 o RecoveryTimeout is set when the notification is generated after a successful JOIN. Otherwise it is set to zero (0). o FlowSpec is present when the notification is generated after a successful JOIN. o TargetList is present when the notification is related to one or more targets, or when MaxMsgSize is set o UserData is present if the notification is generated after a successful JOIN and the UserData parameter was set in the ACCEPT message. 10.4.11 REFUSE REFUSE (OpCode = 11) is issued by a target that either does not wish to accept a CONNECT message or wishes to remove itself from an established stream. It might also be issued by an intermediate ST agent in response to a CONNECT or CHANGE either to terminate a routing loop, or when a satisfactory next-hop to a target cannot be found. It may also be a separate command when an existing stream has been preempted by a higher precedence stream or an ST agent detects the failure of a previous-hop, next-hop, or the network between them. In all cases, the TargetList specifies the targets that are affected by the condition. Each REFUSE must be acknowledged by an ACK. The REFUSE is relayed back by the ST agents to the origin (or intermediate ST agent that created the CONNECT or CHANGE) along the path traced by the CONNECT. The ST agent receiving the REFUSE will process it differently depending on the condition that caused it, as specified in the ReasonCode field. No special effort is made to combine multiple REFUSE messages since it is considered most unlikely that separate REFUSEs will happen to both pass through an ST agent at the same time and be easily combined, e.g., have identical ReasonCodes and parameters. Delgrossi & Berger, Editors Experimental [Page 98]
RFC 1819 ST2+ Protocol Specification August 1995 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OpCode = 11 |G|E|N| 0 | TotalBytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reference | LnkReference | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SenderIPAddress | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | ReasonCode | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DetectorIPAddress | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ValidTargetIPAddress | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : TargetList : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : RecordRoute : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : UserData : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 31: REFUSE Control Message o G (bit 8) is used to indicate that all targets down stream from the sender are refusing. It is expected that this will be set most commonly due to network failures. The TargetList parameter is ignored or not present when this bit is set, and must be included when not set. o E (bit 9) is set by an ST agent to indicate that the request failed and that the pre-change stream attributes, including resources, and the stream itself still exist. o N (bit 10) is used to indicate that no further attempts to recover the stream should be made. This bit must be set when stream recovery should not be attempted, even in the case where the target application has shut down normally (ApplDisconnect). o Reference contains a number assigned by the ST agent sending the REFUSE for use in the acknowledging ACK. o LnkReference is either the Reference number from the corresponding CONNECT or CHANGE, if it is the result of such a message, or zero when the REFUSE was originated as a separate command. Delgrossi & Berger, Editors Experimental [Page 99]
RFC 1819 ST2+ Protocol Specification August 1995 o DetectorIPAddress is the 32-bit IP address of the host that first generated the REFUSE message. o ValidTargetIPAddress is the 32-bit IP address of a host that is properly connected as part of the stream. This parameter is only used when recovering from stream convergence, otherwise it is set to zero (0). 10.4.12 STATUS STATUS (OpCode = 12) is used to inquire about the existence of a particular stream identified by the SID. Use of STATUS is intended for collecting information from an neighbor ST agent, including general and specific stream information, and round trip time estimation. The use of this message type is described in Section 8.4. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OpCode = 12 | 0 | TotalBytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reference | LnkReference = 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SenderIPAddress | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | ReasonCode = 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : TargetList : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 32: STATUS Control Message o Reference contains a number assigned by the ST agent sending STATUS for use in the replying STATUS-RESPONSE. o TargetList is an optional parameter that when present indicates that only information related to the specific targets should be relayed in the STATUS-RESPONSE. 10.4.13 STATUS-RESPONSE STATUS-RESPONSE (OpCode = 13) is the reply to a STATUS message. If the stream specified in the STATUS message is not known, the STATUS- RESPONSE will contain the specified SID but no other parameters. It will otherwise contain the current SID, FlowSpec, TargetList, and possibly Groups of the stream. It the full target list can not fit in a single message, only those targets that can be included in one Delgrossi & Berger, Editors Experimental [Page 100]
RFC 1819 ST2+ Protocol Specification August 1995 message will be included. As mentioned in Section 10.4.12, it is possible to request information on a specific target. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OpCode = 13 | 0 | TotalBytes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Reference | LnkReference = 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SenderIPAddress | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | ReasonCode = 0 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : FlowSpec : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : Groups : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ : TargetList : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 33: STATUS-RESPONSE Control Message o Reference contains a number assigned by the ST agent sending the STATUS. 10.5 Suggested Protocol Constants The ST Protocol uses several fields that must have specific values for the protocol to work, and also several values that an implementation must select. This section specifies the required values and suggests initial values for others. It is recommended that the latter be implemented as variables so that they may be easily changed when experience indicates better values. Eventually, they should be managed via the normal network management facilities. ST uses IP Version Number 5. When encapsulated in IP, ST uses IP Protocol Number 5. Delgrossi & Berger, Editors Experimental [Page 101]
RFC 1819 ST2+ Protocol Specification August 1995 10.5.1 SCMP Messages 1) ACCEPT 2) ACK 3) CHANGE 4) CONNECT 5) DISCONNECT 6) ERROR 7) HELLO 8) JOIN 9) JOIN-REJECT 10) NOTIFY 11) REFUSE 12) STATUS 13) STATUS-RESPONSE 10.5.2 SCMP Parameters 1) FlowSpec 2) Group 3) MulticastAddress 4) Origin 5) RecordRoute 6) TargetList 7) UserData 10.5.3 ReasonCode Several errors may occur during protocol processing. All ST error codes are taken from a single number space. The currently defined values and their meaning is presented in the list below. Note that new error codes may be defined from time to time. All implementations are expected to handle new codes in a graceful manner. If an unknown ReasonCode is encountered, it should be assumed to be fatal. The ReasonCode is an 8-bit field. Following values are defined: 1 NoError No error has occurred. 2 ErrorUnknown An error not contained in this list has been detected. 3 AccessDenied Access denied. 4 AckUnexpected An unexpected ACK was received. 5 ApplAbort The application aborted the stream abnormally. 6 ApplDisconnect The application closed the stream normally. 7 ApplRefused Applications refused requested connection or change. 8 AuthentFailed The authentication function failed. 9 BadMcastAddress IP Multicast address is unacceptable in CONNECT 10 CantGetResrc Unable to acquire (additional) resources. Delgrossi & Berger, Editors Experimental [Page 102]
RFC 1819 ST2+ Protocol Specification August 1995 11 CantRelResrc Unable to release excess resources. 12 CantRecover Unable to recover failed stream. 13 CksumBadCtl Control PDU has a bad message checksum. 14 CksumBadST PDU has a bad ST Header checksum. 15 DuplicateIgn Control PDU is a duplicate and is being acknowledged. 16 DuplicateTarget Control PDU contains a duplicate target, or an attempt to add an existing target. 17 FlowSpecMismatch FlowSpec in request does not match existing FlowSpec. 18 FlowSpecError An error occurred while processing the FlowSpec 19 FlowVerUnknown Control PDU has a FlowSpec Version Number that is not supported. 20 GroupUnknown Control PDU contains an unknown Group Name. 21 InconsistGroup An inconsistency has been detected with the streams forming a group. 22 IntfcFailure A network interface failure has been detected. 23 InvalidSender Control PDU has an invalid SenderIPAddress field. 24 InvalidTotByt Control PDU has an invalid TotalBytes field. 25 JoinAuthFailure Join failed due to stream authorization level. 26 LnkRefUnknown Control PDU contains an unknown LnkReference. 27 NetworkFailure A network failure has been detected. 28 NoRouteToAgent Cannot find a route to an ST agent. 29 NoRouteToHost Cannot find a route to a host. 30 NoRouteToNet Cannot find a route to a network. 31 OpCodeUnknown Control PDU has an invalid OpCode field. 32 PCodeUnknown Control PDU has a parameter with an invalid PCode. 33 ParmValueBad Control PDU contains an invalid parameter value. 34 PathConvergence Two branches of the stream join during the CONNECT setup. 35 ProtocolUnknown Control PDU contains an unknown next-higher layer protocol identifier. 36 RecordRouteSize RecordRoute parameter is too long to permit message to fit a network's MTU. 37 RefUnknown Control PDU contains an unknown Reference. 38 ResponseTimeout Control message has been acknowledged but not answered by an appropriate control message. 39 RestartLocal The local ST agent has recently restarted. 40 RestartRemote The remote ST agent has recently restarted. 41 RetransTimeout An acknowledgment has not been received after several retransmissions. 42 RouteBack Route to next-hop through same interface as previous-hop and is not previous-hop. 43 RouteInconsist A routing inconsistency has been detected. 44 RouteLoop A routing loop has been detected. Delgrossi & Berger, Editors Experimental [Page 103]
RFC 1819 ST2+ Protocol Specification August 1995 45 SAPUnknown Control PDU contains an unknown next-higher layer SAP (port). 46 SIDUnknown Control PDU contains an unknown SID. 47 STAgentFailure An ST agent failure has been detected. 48 STVer3Bad A received PDU is not ST Version 3. 49 StreamExists A stream with the given SID already exists. 50 StreamPreempted The stream has been preempted by one with a higher precedence. 51 TargetExists A CONNECT was received that specified an existing target. 52 TargetUnknown A target is not a member of the specified stream. 53 TargetMissing A target parameter was expected and is not included, or is empty. 54 TruncatedCtl Control PDU is shorter than expected. 55 TruncatedPDU A received ST PDU is shorter than the ST Header indicates. 56 UserDataSize UserData parameter too large to permit a message to fit into a network's MTU. 10.5.4 Timeouts and Other Constants SCMP uses retransmission to effect reliability and thus has several "retransmission timers". Each "timer" is modeled by an initial time interval (ToXxx), which may get updated dynamically through measurement of control traffic, and a number of times (NXxx) to retransmit a message before declaring a failure. All time intervals are in units of milliseconds. Note that the variables are described for reference purposes only, different implementations may not include the identical variables. Value Timeout Name Meaning ------------------------------------------------------------------------ 500 ToAccept Initial hop-by-hop timeout for acknowledgment of ACCEPT 3 NAccept ACCEPT retries before failure 500 ToChange Initial hop-by-hop timeout for acknowledgment of CHANGE 3 NChange CHANGE retries before failure 5000 ToChangeResp End-to-End CHANGE timeout for receipt of ACCEPT or REFUSE 500 ToConnect Initial hop-by-hop timeout for acknowledgment of CONNECT 5 NConnect CONNECT retries before failure 5000 ToConnectResp End-to-End CONNECT timeout for receipt of ACCEPT or REFUSE from targets by origin 500 ToDisconnect Initial hop-by-hop timeout for acknowledgment of DISCONNECT Delgrossi & Berger, Editors Experimental [Page 104]
RFC 1819 ST2+ Protocol Specification August 1995 3 NDisconnect DISCONNECT retries before failure 500 ToJoin Initial hop-by-hop timeout for acknowledgment of JOIN 3 NJoin JOIN retries before failure 500 ToJoinReject Initial hop-by-hop timeout for acknowledgment of JOIN-REJECT 3 NJoinReject JOIN-REJECT retries before failure 5000 ToJoinResp Timeout for receipt of CONNECT or JOIN-REJECT from origin or intermediate hop 500 ToNotify Initial hop-by-hop timeout for acknowledgment of NOTIFY 3 NNotify NOTIFY retries before failure 500 ToRefuse Initial hop-by-hop timeout for acknowledgment of REFUSE 3 NRefuse REFUSE retries before failure 500 ToRetryRoute Timeout for receipt of ACCEPT or REFUSE from targets during failure recovery 5 NRetryRoute CONNECT retries before failure 1000 ToStatusResp Timeout for receipt of STATUS-RESPONSE 3 NStatus STATUS retries before failure 10000 HelloTimerHoldDown Interval that Restarted bit must be set after ST restart 5 HelloLossFactor Number of consecutively missed HELLO messages before declaring link failure 2000 DefaultRecoveryTimeout Interval between successive HELLOs to/from active neighbors 10.6 Data Notations The convention in the documentation of Internet Protocols is to express numbers in decimal and to picture data with the most significant octet on the left and the least significant octet on the right. The order of transmission of the header and data described in this document is resolved to the octet level. Whenever a diagram shows a group of octets, the order of transmission of those octets is the normal order in which they are read in English. For example, in the following diagram the octets are transmitted in the order they are numbered. Delgrossi & Berger, Editors Experimental [Page 105]
RFC 1819 ST2+ Protocol Specification August 1995 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 1 | 2 | 3 | 4 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 5 | 6 | 7 | 8 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 9 | 10 | 11 | 12 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 34: Transmission Order of Bytes Whenever an octet represents a numeric quantity the left most bit in the diagram is the high order or most significant bit. That is, the bit labeled 0 is the most significant bit. For example, the following diagram represents the value 170 (decimal). 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |1 0 1 0 1 0 1 0| +-+-+-+-+-+-+-+-+ Figure 35: Significance of Bits Similarly, whenever a multi-octet field represents a numeric quantity the left most bit of the whole field is the most significant bit. When a multi-octet quantity is transmitted the most significant octet is transmitted first. Fields whose length is fixed and fully illustrated are shown with a vertical bar (|) at the end; fixed fields whose contents are abbreviated are shown with an exclamation point (!); variable fields are shown with colons (:). Optional parameters are separated from control messages with a blank line. The order of parameters is not meaningful. 11. References [RFC1071] Braden, R., Borman, D., and C. Partridge, "Computing the Internet Checksum", RFC 1071, USC/Information Sciences Institute, Cray Research, BBN Laboratories, September 1988. [RFC1112] Deering, S., "Host Extensions for IP Multicasting", STD 5, RFC 1112, Stanford University, August 1989. Delgrossi & Berger, Editors Experimental [Page 106]
RFC 1819 ST2+ Protocol Specification August 1995 [WoHD95] L. Wolf, R. G. Herrtwich, L. Delgrossi: Filtering Multimedia Data in Reservation-based Networks, Kommunikation in Verteilten Systemen 1995 (KiVS), Chemnitz-Zwickau, Germany, February 1995. [RFC1122] Braden, R., "Requirements for Internet Hosts -- Communication Layers", STD 3, RFC 1122, USC/Information Sciences Institute, October 1989. [Jaco88] Jacobson, V.: Congestion Avoidance and Control, ACM SIGCOMM-88, August 1988. [KaPa87] Karn, P. and C. Partridge: Round Trip Time Estimation, ACM SIGCOMM-87, August 1987. [RFC1141] Mallory, T., and A. Kullberg, "Incremental Updating of the Internet Checksum", RFC 1141, BBN, January 1990. [RFC1363] Partridge, C., "A Proposal Flow Specification", RFC 1363, BBN, September 1992. [RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791, DARPA, September 1981. [RFC1700] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1700, USC/Information Sciences Institute, October 1994. [RFC1190] Topolcic C., "Internet Stream Protocol Version 2 (ST-II)", RFC 1190, CIP Working Group, October 1990. [RFC1633] Braden, R., Clark, D., and S. Shenker, "Integrated Services in the Internet Architecture: an Overview", RFC 1633, USC/Information Sciences Institute, MIT, Xerox PARC, June 1994. [VoHN93] C. Vogt, R. G. Herrtwich, R. Nagarajan: HeiRAT: the Heidelberg Resource Administration Technique - Design Philosophy and Goals, Kommunikation In Verteilten Systemen, Munich, Informatik Aktuell, Springer-Verlag, Heidelberg, 1993. [Cohe81] D. Cohen: A Network Voice Protocol NVP-II, University of Southern California, Los Angeles, 1981. [Cole81] R. Cole: PVP - A Packet Video Protocol, University of Southern California, Los Angeles, 1981. Delgrossi & Berger, Editors Experimental [Page 107]
RFC 1819 ST2+ Protocol Specification August 1995 [DeAl92] L. Delgrossi (Ed.) The BERKOM-II Multimedia Transport System, Version 1, BERKOM Working Document, October, 1992 [DHHS92] L. Delgrossi, C. Halstrick, R. G. Herrtwich, H. Stuettgen: HeiTP: a Transport Protocol for ST-II, GLOBECOM'92, Orlando (Florida), December 1992. [Schu94] H. Schulzrinne: RTP: A Transport Protocol for Real-Time Applications. Work in Progress, 1994. 12. Security Considerations Security issues are not discussed in this memo. 13. Acknowledgments and Authors' Addresses Many individuals have contributed to the work described in this memo. We thank the participants in the ST Working Group for their input, review, and constructive comments. George Mason University C3I Center for hosting an interim meeting. Murali Rajagopal for his efforts on ST2+ state machines. Special thanks are due to Steve DeJarnett, who served as working group co-chair until summer 1993. We would also like to acknowledge the authors of [RFC1190]. All authors of [RFC1190] should be considered authors of this document since this document contains much of their text and ideas. Delgrossi & Berger, Editors Experimental [Page 108]
RFC 1819 ST2+ Protocol Specification August 1995 Louis Berger BBN Systems and Technologies 1300 North 17th Street, Suite 1200 Arlington, VA 22209 Phone: 703-284-4651 EMail: lberger@bbn.com

Back to RFC index





Register domain name and transfer | Cheap webhosting service | Domain name registration