RMT Working Group Brian Whetten/Consultant Internet Engineering Task Force Dah Ming Chiu/Sun Microsystems Internet Draft Miriam Kadansky/Sun Microsystems draft-ietf-rmt-bb-tree-config-03.txt Seok Joo Koh/ETRI/KOREA 18 November, 2002 Gursel Taskale/Tibco Expires 18 May, 2003 Brian Neil Levine/Umass Reliable Multicast Transport Building Block: Tree Auto-Configuration Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are 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 a "work in progress". The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. Abstract The Reliable Multicast Transport Working Group has been chartered to standardize multicast transport services. This working group expects to initially standardize three protocol instantiations. This draft is concerned with the requirements of the tree-based ACK protocol. In particular, it is concerned with defining the building block for auto-configuration of the logical ACK-tree. According to the charter, a building block is "a coarse-grained modular component that is common to multiple protocols along with abstract APIs that define a building block's access methods and their arguments." For more information, see the Reliable Multicast Transport Building Blocks and Reliable Multicast Design Space documents [WLKHFL01][HWKFV00]. Table of Contents 1. Introduction 1.1 Terminology 1.2 Assumptions INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt 1 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 1.3 Requirements 1.4 Applicability Statement 2. Overview 3. Session Announcement 4. Service Node Discovery and Selection 4.1 Service Node Discovery Algorithms 4.1.1 Static 4.1.2 ERS 4.1.3 Mesh 4.2 Distance Metrics 4.2.1 TTL Hop-Count 4.2.2 Number of Levels 4.2.3 Delay 4.2.4 Address 4.2.5 Static 4.2.6 GRA 4.3 Service Node Selection 5. Tree Formation 6. Tree Maintenance 6.1 Monitoring Parents and Children 6.2 Optimizing the Tree 7. Messages 8. External Interfaces 8.1 Interfaces to the BB 8.1.1 start 8.1.2 end 8.1.3 incomingMessage 8.1.4 getStatistics 8.1.5 getSNs 8.1.6 setSN 8.1.7 acceptChild 8.1.8 removeChild 8.1.9 treeLevelUpdate 8.1.10 lostSN 8.1.11 setOptimization 8.1.12 recordSNs 8.2 Interfaces from the BB 8.2.1 outgoingMessage 8.2.2 SNlist 9. References Authors' Addresses 1. Introduction The Reliable Multicast Transport (RMT) working group has been chartered to standardize IP multicast transport services. This draft is concerned with the requirements of the tree-based ACK protocol [WCPKT00]. In particular, this draft defines a building block for auto-configuration of a tree comprised of a single Sender, Service Nodes, and Receivers into a tree (called a Session INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 2 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 Tree in this document). The design goals of this draft are motivated by the needs of TRACK-based protocols, however the trees it constructs are useful for other services. This building block can be interfaced to any other BB or PI wishing to use a tree structure. To actually use this BB's features, the PI needs to includes the messages described in this BB in its packets. An example of how to use this BB can be found in the TRACK PI[WCPKT01]. The process of session tree construction is difficult for IP multicast. The best session trees match the underlying multicast routing tree topology [LPG98], however the multicast service model [DEE89] does not provide explicit support for discovering routing tree topology. Furthermore, deployed multicast architectures can vary; for example, hosts may be restricted to multicast reception and not transmission with Source-Specific multicast routing [HC00]; and routers may provide special extended routing services with Generic Router Assist [CST00]. The RMT charter does not restrict the use of any particular network service in constructing the tree. It only suggests preferred scenarios. Accordingly, there are several viable solutions for constructing a tree, depending on network conditions. The optimality of a tree may also depend on other factors, such as the need for load balancing, and the need to minimize the depth when used for collecting feedback information. The goal of this building block is to specify a distributed procedure for automatically constructing a tree that is loop-free and as efficient as possible given the information available. This draft describes a unified solution for tree construction in the presence of different multicast service models and routing protocols. In particular, it specifies a single procedure which may be used with various techniques for service node discovery and distance measurements, several of which are specified within this document. The difference in these techniques primarily affects the optimality of the tree. The unified algorithm ensures that different implementations can interoperate and construct a loop- free tree. In order to accommodate various multicast deployments, this document divides the tree building process into the following major components: 1. Several techniques for discovering neighboring service nodes. In particular: Static, Expanding Ring Search, and Mesh. Discovering neighboring service nodes is a necessary condition for getting connected, so each node in the session INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 3 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 must implement at least one of the above techniques. 2. Several algorithms for selecting neighboring service nodes. In particular, the measurement and use of neighbor distance and sender distance are described. These service node selection algorithms help produce a good tree. 3. A single distributed procedure for construction and maintenance of loop-free Session Trees. 1.1 Terminology The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119. Session A session is used to distribute data over a multicast address. A Session Tree is used to provide reliability and feedback services for a session. Sender The single sender of data on a multicast session. The Sender is the root of the Session Tree. Receiver A receiver receives data from the sender via the multicast session. Session Identifier A fixed-size number, chosen either by the application that creates the session or by the transport. Senders and Receivers use the Session Identifier to distinguish sessions. The size of this number is specified by the Protocol Instantiation (PI). Service Node (SN) A node within the tree which receives and retransmits data, and aggregates and forwards control information toward the Sender. The Sender operates as the root Service Node in any session tree. Service Nodes MAY be dedicated servers within a network designed to participate in multiple Sessions and support multiple trees, or they MAY be Receivers participating in an individual session. SNs MAY limit the number of Children they choose to service, and MAY also make other restrictions on the characteristics of each Child (distance, location, etc.). An SN that has accepted Children for a session is called a Parent. In other documents, Service Node is sometimes referred to as Repair INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 4 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 Head (RH). Session Tree (ST) The Session Tree is a tree spanning all receivers of a multicast session. It is rooted at the Sender, consisting of zero of more Service Nodes as interior nodes, and zero or more receivers as leaf nodes. An ST is constructed for the forwarding of control information back to the Sender as well as for the resending of missed data to the Receivers. The ST for a particular session may change over the course of the session. Parent A Parent is an SN or Receiver's predecessor in the ST on the path toward the Sender. Every SN or Receiver on the tree except the Sender itself has a parent. Each Parent communicates with its children using either an assigned multicast address or through unicast. If a multicast address is used, this may be the same address used by the session, or one specifically assigned to the Parent. Children The set of Receivers and SNs for which an SN or the Sender is providing repair and feedback services. Tree Level A number indicating the number of "generations" a node is from the root. The sender is at TL=0. Those that use the sender as their parent are at TL=1 and so on. When a receiver is not connected to the tree yet, it has a tree level value greater or equal to 128. The reason for reserving part of the space (of tree levels) for indicating "off-tree" is so that special measures can be used to prevent forming loops. The largest value is 255, so the range of off-tree levels are in the range 128 - 255. Initially, all receivers have a TL value of 128. Once a Node joins the tree, its Tree Level is updated to be one more than its Parent's level. Distance Metric There are several techniques to quantify distances between nodes (Receivers, SNs, and the Sender) in a session. Each type of quantification is called a distance metric. Several Distance Metrics are described in this draft. Sender Distance The distance from a node to the Sender. INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 5 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 Neighbor Distance The distance from a node to a Neighbor. Neighbor A node's (Receiver or SN) Neighbors are SNs that are close to the node, according to the Distance Metric(s) used by the node. 1.2 Assumptions This document describes how to build trees under the following conditions: a. The multicast group has only a single sender. b. A single SN can serve multiple sessions. c. Sessions can take advantage of a pre-deployed infrastructure of SNs (ones that are not necessarily aware of a session before the receivers), or recruit Receivers to be SNs. d. Generic Router Assist[CST00] and Expanding Ring Search[YGS95] are not required of the network infrastructure, but if available they should be able to be utilized. 1.3 Requirements The following are specifically required: a. While tree-building may take advantage of information from the routing layer, the mechanisms described are independent of the routing protocol(s) used by the underlying multicast tree. b. All trees constructed must be loop-free c. These mechanisms must support late joiners and tree optimization 1.4 Applicability Statement The authors recognize that automatic tree construction is a very difficult problem. Nonetheless, complete reliance on manual configuration is very user unfriendly and error prone as well. This building block describes a procedure for constructing loop- free trees when there is minimal manual configured information available. This is analogous to providing a system with default configurations that allow the system to work correctly, but not necessarily optimally. There are many possible criteria for tree optimality. This BB does INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 6 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 not attempt to define a single optimality criterion, nor does it try to produce an optimal tree. It is, however, the goal of the BB to construct better trees as more configuration and measurement data are introduced to the procedure. This BB describes only a subset of the possible parameters for constructing optimal trees, in particular sender distance and neighbor distance. There are many techniques for measuring these distances. Some of the techniques may not be applicable globally. Expanding ring search (ERS) is an effective technique in a local subnet or intranet (especially when the IP multicast routing protocol is dense-mode based). On the other hand, it is not practical in a multi-domain network; it is not effective when the routing protocol is sparse-mode based; and it can add significant control traffic overhead. Generic Router Assist (GRA) can provide measurement hooks to determine SNs that are located along the path for multicast data distribution. However, such facilities may not be available in all networks. The tree construction procedure does allow manual configuration and various distance measurement techniques to be selectively and independently applied for different subgroups of receivers and SNs, to achieve incremental improvement to the quality of the tree. There are many other criteria for tree-building than what is described in this document, for instance, methods based on load balancing and minimizing feedback latency. 2. Overview The tree building process described within this document builds logical trees which consist of: 1. A root node (the Sender) 2. Intermediate nodes (Service Nodes or SNs) which may be either Receivers or nodes specifically allocated to the task of repair and aggregation 3. Leaf nodes which are Receivers only Session trees are spanning trees rooted at the Sender. Session trees can be used for the forwarding of control information (i.e. ACKs) towards the root, or for forwarding of data (i.e. repairs) towards the leaf nodes. Session trees are constructed per Sender; each node wishing to join the tree discovers its neighboring SNs and then selects its best parent based on locally available information, such as the relative INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 7 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 sender distances and neighbor distances. This document specifies several techniques for measuring distances. It is important to note that SNs may be actual Receivers (e.g. Receivers willing and able to also function as SNs) or pre-deployed "specialized" servers that are signaled to join the tree by Receivers. We use the term Service Node to refer to either a Receiver or "server" which is participating as part of the logical tree formation. Tree construction, regardless of SN discovery and selection algorithm, proceeds generically as follows. 1. Session Announcement Receivers of a session use standard out-of-band mechanisms for discovery of a session's existence (e.g. Session Advertisement ([HPW00], URL, etc). In this way, a Receiver discovers the multicast group address, the Sender's address, and other information necessary for logical tree construction. Sessions may be announced in two parts, the first part containing generic information about the session, such as the multicast address, and the second part, announced on the multicast address, containing additional information. 2. Measurements to the Sender (optional) All SNs and Receivers that know about the session optionally determine their distance to the Sender. 3. Neighbor Discovery Meanwhile, each Receiver discovers nearby SNs (candidate parents) for the Session using the neighbor discovery algorithm(s). 4. Service Node Selection Once a Receiver (or SN needing to join the tree) discovers a nearby SN, it obtains the SN's distance to the Sender as well as the SN's distance to the Receiver, tree level, and other suitability values, if available. After discovery is complete, the best SN is selected. 5. Binding to Service Node The Receiver or SN then binds to the chosen SN. If a bind is unsuccessful, the Receiver or SN retries with another nearby SN, or starts the discovery process all over again. Once an SN receives a bind from a child, that SN must then also join INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 8 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 the tree if it has not already, discovering an SN of its own, possibly using a different method than leaf Receivers. 6. Optimization (optional) and Fault Recovery During a session, a Receiver or SN may change to a different SN for a number of reasons described below, including fault tolerance. The Session Tree is maintained and optimized over time. This building block provides mechanisms for maintaining and optimizing the tree, as well as tearing it down when the Sender is done with it. In the rest of this document, the term 'Node' denotes a Receiver or SN. +--------------------+ | 1. Session | | Advertisement | +--------------------+ | | Node receives tree-building parameters V +--------------------+ | 2. Measurements |<-------------------------| | to the Sender | | | (optional) | | +--------------------+ | | | | | V | +--------------------+ | | 3. Neighbor | | | Discovery | | +--------------------+ | | | | | V | +--------------------+ | | 4. Service Node | | | Selection | | +--------------------+ | | | | Node picks best Neighbor | V | +--------------------+ | | 5. Binding to |--------------------------- | Service Node | 6. Optimization (optional) | | and Fault Recovery +--------------------+ INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 9 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 3. Session Announcement The first step in the tree-building process is for a node to be informed of the session's existence. This can be done using some out-of-band method, such as Session Advertisement [HPW00], URL, e- mail, etc. SNs do not necessarily receive these advertisements. If an SN is not a Receiver, it obtains the advertisement information once it is contacted by a Receiver. The advertisement includes the multicast address being used, the Sender's address, the Session Identifier, any specific port numbers to be used, and any global information useful for tree construction. The advertisement may also contain information about one or more Service Node Discovery options (such as Static, ERS, and Mesh) that can possibly be used by Receivers in the session. 4. Service Node Discovery and Selection Discovery is the process by which a node determines a suitable Service Node. During the discovery process, suitable neighbors are found, Sender distances are optionally exchanged, and the best SN is selected. 4.1 Service Node Discovery Algorithms This draft describes three algorithms for discovering SNs: Static, Expanding Ring Search (ERS), and Mesh. Multiple algorithms may be used within a single session. For example, SNs may use the Mesh algorithm, while the receivers use static configuration to discover the SNs; alternatively, some Receivers may use static configuration while other Receivers depend on ERS (in an intranet where ERS is available). Each Receiver may pre-configure which algorithm to use before it starts. The transport protocols request the following information from this BB using the getSNs interface. Service Nodes: 1. ParentAddress: the address and port of the parent node to which the node should connect 2. UDPListenPort: the number of the port on which the node will listen for its children's control messages 3. RepairAddr: the multicast address, UDP port, and TTL on which this node sends control messages to its children. INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 10 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 Receivers: 1. ParentAddress. Senders: 1. UDPListenPort 2. RepairAddr After the above information is obtained from auto-tree-config, the transport protocol may perform the necessary Bind operations for participating in the Session Tree. 4.1.1 Static Static algotirhm relies on a functional entity, named Tree Configurator (TC), which is pre-configured by Sender for tree configuration in a static manner. TC may be simply implemented by a program and thus installed at Sender or any other host. It is not necessarily specialized infrastructure. Static scheme is a typical top-down tree configuration approach. TC is used to govern the tree building based on its own (session- specific) tree configuration and SN(s) selection rules for the new joiners. If a TC is used for tree building, its address and port MUST be included with the session advertisement. Receivers and SNs will realize there is a TC for the session via Session Announcement, and they can contact with the TC to get a list of candidate SNs by sending a unicast Query message. In response to a Query message, the TC replies with a Advertise message that contains a list of candidate SNs available to the new joiner. The rule of determining such candidate SNs may depend on the pre-configured mechanism taken by TC. For example, TC may determine the candidate SN list for a Node among the possible SNs (it contains at that time) by considering which SNs are in the same network domain with the Node (i.e., via comparing their network prefix), or by considering the load balancing for the tree topology it has configured until then. For this purpose, TC maintains a pool of active SNs for the session. The list of candidate SNs carried by Advertise message is ordered in decreasing levels of preference, in which a lower number represents a higher preference. When a Receiver Node receives the responding Advertise message from TC, the Node MAY proceed to try to bind to a candidate SN following the given order by sending a BindRequestmessage, and INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 11 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 then waits for the responding message such as BindConfirm or BindReject from TC. These binding steps will be done according to the TRACK mechanism, as described in the TRACK PI [WCMKT02] In the Static algorithm, SN discovery with a TC proceeds as follows: 1. The node joins the multicast session and learns of the location of TC (from the session announcement). 2. The node optionally discovers its distance from the Sender. Any metric described in Section 4.2 may be used. 3. The node sends a Query message to the TC for a parent. The request includes (optionally) the node's distance to the sender and whether the node functions as an SN or not. 4. The TC chooses one or more candidate parents (SNs) for the node from the active SNs by its own tree configuration rule. The selection of candidate parents may be done by comparing the network prefix or by referring to any other information such as the number of currently attached children, etc. 5. The TC MUST responds to the Query message with an Advertise message, which include the candidate parent list. In the list, each entry contains the corresponding IP address and port of an SN. All the entries in the list SHOULD be arranged in the decreasing order of preference levels. In the rejection case, the Advertise message does not include any candidate parent. In this case, the Node may resort to the other mechanism such as ERS and Mesh. In the success case, the node will be enrolled as an active SN by the TC, if it functions as an SN in the session. Each active SN (functioning as a parent for the Session Tree) SHOULD send the TC the periodic Query messages with a flag indicating that it is active over a specific time interval. Based on the Query messages, the TC updates a pool of active SNs in the session. In response to the Query message, the TC sends a Advertise with a flag simply indicating that the Query message is received. 6. After receiving a successful Advertise message from the TC, the node will try to connect to its parent by sending BindRequest messages based on the candidate parent list, as described in Section 5. INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 12 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 4.1.2 ERS ERS is a typical bottom-up tree configuration approach, which can be used only in the network environments where IP multicast transmissions are allowed by Receivers and SNs. In ERS algorithm, SN discovery with a TC proceeds as follows: 1. The Nodes first look for Neighbors using a multicast Query message. The initial TTL value in the Query message, TTLNeighborInit, is specified in the session announcement and may be as large as the session TTL (TTLSession). An SN that is able to handle additional Children MUST respond to a Query message by multicasting an Advertise message. If the SN is not yet a Parent, the TTL used in this response is the same TTL used in the Query message. If the SN is a Parent, the TTL used is the greater of the Query TTL and the Parent's current Advertise TTL. 2. The Node listens for Advertise messages after sending the Query message. If one or more Advertise messages are received during a SolicitPeriod, the best SN among them is selected as described in section 4.3. 3. If no Advertise messages are received, the Node sends another multicast Query message with a TTL that is incremented by TTLIncrement. The process of sending the multicast Query message with an increasing TTL value continues until a response is received. The TTL value is limited by a value, TTLMax, also specified in the session announcement. TTLMax defaults to the value of TTLSession. If the TTL value required to reach the soliciting Node is greater than the TTL used to reach the SN, an Advertise message may not reach the Node. However, if future Query messages have increased TTL values, the TTL may eventually be large enough for the Advertise message to reach the Node. However, it is possible that the Node will not locate any SNs using Expanding Ring Search. It is advisable that a backup method, such as static, be available. 4. SNs MUST suppress sending Advertise messages in response to Query messages if one was sent with at least the Query's TTL within the last SolicitPeriod. INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 13 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 After multicasting a Query message, a node MUST wait for an interval, BetweenQuery, before sending another Query message. Nodes SHOULD suppress sending Query messages for BetweenQuery seconds when they first start in order to collect information from Advertise messages already solicited by other nodes. 5. Getting a successful Advertise message via ERS, the Node will try to connect to the parent by sending BindRequest messages, which are described in Section 5. The following variables are used in the Expanding Ring Search algorithm. - TTLNeighborInit: This is the initial TTL value to be used by the ERS if no other TTL value is specified by the algorithm. - TTLIncrement: This is the periodic increment for the TTL used in ERS. - TTLMax: This is a configured maximum TTL value to be used by either Query or Advertise messages. - TTLSession: This is the session TTL value for the multicast session. - SolicitPeriod: Each receiver MUST not send more than one QUERY message per SolicitPeriod. When SN's responds to QUERY messages, it also suppresses its ADVERTISE message if one has been sent less than SolicitPeriod ago. This parameter is used to control the amount of control traffic during tree construction if ERS is used. - BetweenQuery: This is the time interval a node must wait before sending successive Query messages. - MaxBindAttempts: This variable is an integer used to control how many times a receiver tries to bind to a SN before giving up and try another one. - BindPeriod: In order to prevent loops, sometimes a SN must reject a BindRequest (for example, when the SN is not on the tree yet and has a BindRequest outstanding itself) from a receiver. In this case, if the receiver needs to retry binding to the same SN again (perhaps because the receiver does not discover any alternative SN's), then it must wait for BindPeriod seconds. 4.1.3 Mesh The mesh approach relies on a set of SN's already deployed as INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 14 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 infrastructure servers. These SN's are on-line, but are not necessarily aware of any particular session unless informed by the following mechanisms. SN's in the mesh are configured to know who their neighbor SN's are, and exchange reachability information with their neighbors in a way analogous to routers in a network. The actually protocol used by SN's to exchange such reachability information is outside the scope of this BB. (In principle, a routing protocol such as shortest- path-first, or a link-state-protocol can be adapted for this purpose). Instead, this BB specifies the following properties that the mesh of SN's MUST satisfy: a) Each SN knows a subset of SN's in the mesh as its immediate neighbors. b) Each SN has a "forwarding table", such that given any other (destination) SN in the mesh, the forwarding table gives a "next-hop" SN that can be used to reach the destination SN, plus the distance to the destination SN from the local SN. c) A given SN in the mesh can "broadcast" information to all other SN's in the mesh (in the sense of having a means of sending the same information to all other SN's, but not necessarily simultaneously). d) All potential sender and receivers of a multicast session can discover a "neighboring" SN in the mesh, using the neighbor discovery mechanisms described in Section 4.1. The reason for running a routing-like algorithm to maintain the forwarding tables in each SN is to provide fault tolerance when some SN's in the mesh fail. When that happens, the remaining SN's exchange information with each other to update the forwarding tables. In steady state, the mesh of SN's must still satisfy the above 4 properties. In the simplest form, each SN in the mesh has a forwarding table that contains all other SN's in the mesh. This is called a fully- connected mesh. As mentioned earlier, the Mesh scheme assumes that there is a pre- deployed infrastructures of SN servers. That is, the SN-SN bindings and Sender-SN (Sender's SNs) will be performed internally by the provider's own policy. The only thing done by Sender is to inform its SN's that a session starts. The relationships between Sender and its SN's (i.e., Sender-SN bindings) MUST also be pre- configured. For example, the internal bindings between Sender and SN's MAY be done as follows: INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 15 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 1. The sender locates a neighbor SN in the mesh by a pre- configured mechanism. This SN is referred to as the sender's SN. 2. The sender sends the multicast session id, address and port (all these can be set as a abbreviated session announcement message) to the sender's SN. 3. The sender's SN in turn "broadcasts" the session information to all SN's in the mesh; since SN's can support multiple sessions simultaneously, they keep the information about each session in an entry in a session table. 4. After the Sender-SN bindings, Sender will multicasts its session announcement to the multicast receivers. Then, the sender's SN binds to the sender by sending a BindRequest message. During the internal processings of Sender-SN binding described until now, any Query and Advertise messages are not used. When a session starts, the bindings between SN and Receivers will be done. The tree binding of SN-receiver is done with the Tree Configurator (TC), which was used in the Static algorithm. The main difference between Static algorithm with TC and Mesh algorithm with TC is that the active SNs are considered as candidate SNs in the Static scheme, while the pre-deployed SNs are considered as candidates in the Mesh scheme. That is, in the Mesh scheme, the TC is required to already get the information on the locations of the pre-deployed SNs. Then the tree buildings between receivers and SNs are done as follows: 1. When a session starts, a receiver sends a Query message to the TC. The receiver may optionally discovers its distance from the Sender. Any metric described in Section 4.2 may be used. 2. The TC chooses one or more candidate parents SNs for the receiver from the pre-deployed SNs by its own tree configuration rule, as described in Section 4.1.1. 3. TC MUST respond to the Query message with an Advertise message, which include the candidate parent list. In the list, each entry contains the corresponding IP address and port of the parent. 4. Receiving a successful Advertise message from the TC, the Node will try to connect to its parent by sending BindRequest INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 16 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 messages based on the candidate parent list, as described in Section 5. Once a receiver is connected to a parent SN, the SN-SN bindings will also be done internally by the pre-configured provider's policy. For example, each SN in the mesh tries to bind to its "next-hop" SN. If the "next-hop" SN is not reachable for some reason, an SN may also try to bind to any neighbor SN as a back-up alternative. These procedures will be devised to ensure that the loop freedom is guaranteed in section 5. 4.2. Distance Measurement Different techniques can be used to determine distances between nodes in a session. The distances of interest are: Sender distance - the distance from a SN to sender Neighbor distance - the distance from a receiver to a neighboring SN These distances can be used in selecting a Service Node ifseveral are discovered. These techniques quantify distance differently. Each specific way of quantifying distance is called a metric. Different Metrics are not necessarily comparable. For example, if distance between A and B is X using metric m1, and distance between A and C is Y using metric m2, then X > Y does not necessarily imply B is farther from A than C. Only distances of the same metric should be compared and ranked. Therefore, a receiver SHOULD only rank two SN's based on their respective sender distance if those distances are based on the same metric. On the other hand, it is not necessary for all receivers to use the same metric to select theirneighboring SN to connect to. Suppose receivers use neighbor distance as a selection criterion. One receiver may determine neighbor distances to SN's based on hop count, whereas another receiver may determine neighbor distances to its neighboring SN's based on delay. 4.2.1 TTL Hop-Count If this metric is used, a node periodically sends a Beacon message on the Session's multicast address. The Beacon message includes the original time-to-live value set by the node. The distance to the node is then calculated as INTERNET DRAFT draft-ietf-rmt-bb-track-01.txt 17 INTERNET DRAFT draft-ietf-rmt-bb-tree-config-03.txt November 2002 Beacon's original TTL - Beacon's current TTL One node is closer than another if its distance is a lower number. Note that the TTL value may not be available in some implementation environments. 4.2.2 Number of Levels One metric a receiver can use for SN selection is the number of levels the SN is from the sender. For example, given two SN's in close proximity to a receiver, if one SN is n levels from the sender and the other is m levels, where m