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 4.5.2.1 Invoking the Routing Function 36 4.5.2.2 Reserving Resources 36 4.5.3 Sending CONNECT Messages 37 4.5.3.1 Empty Target List 37 Page 3 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 4.6.3.1 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 Page 4 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 Page 5 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