RMT Working Group Miriam Kadansky/Sun Microsystems Internet Engineering Task Force Dah Ming Chiu/Sun Microsystems INTERNET-DRAFT Brian Whetten/Talarian draft-ietf-rmt-bb-tree-config-02.txt Brian Neil Levine/UMass March 2, 2001 Gursel Taskale/Talarian Expires 2 September, 2001 Brad Cain/Cereva Networks Dave Thaler/Microsoft Seok Joo Koh/ETRI/Korea 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 [WLKHFL00][HWKFV00]. draft-ietf-rmt-bb-tree-config-02 [Page 1] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 Table of Contents 1. Introduction 1.1 Terminology 1.2 Assumptions 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 POC 4.1.4 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. Configuration Variables 9.1 ERS Configuration Variables 9.2 POS Configuration Variables 9.3 Advertised Variables 10. References Authors' Addresses draft-ietf-rmt-bb-tree-config-02 [Page 2] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 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 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 on 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, Point-of-Contact, and Mesh. Discovering neighboring service nodes is a necessary condition for getting connected, so each node in the session 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 draft-ietf-rmt-bb-tree-config-02 [Page 3] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 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 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. 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 draft-ietf-rmt-bb-tree-config-02 [Page 4] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 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. 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. draft-ietf-rmt-bb-tree-config-02 [Page 5] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 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 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) draft-ietf-rmt-bb-tree-config-02 [Page 6] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 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 leafs. 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 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 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. (Note, in the case when the POC algorithm is used for neighbor discovery, neighbor discovery and selection may become a combined step, performed at the POC). 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 the tree if it has not already, discovering an SN of its own, possibly using a different method than leaf Receivers. draft-ietf-rmt-bb-tree-config-02 [Page 7] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 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. draft-ietf-rmt-bb-tree-config-02 [Page 8] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 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 +--------------------+ 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. draft-ietf-rmt-bb-tree-config-02 [Page 9] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 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 (such as a sender POC), described in section 9.3. 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 four algorithms for discovering SNs: Static, Expanding Ring Search (ERS), Point-of-Contact (POC), 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). 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. 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 A list of Neighbors is made available to a Node in a file with a well-known name. The list of Neighbors is ordered in decreasing levels of preference (based on static information available to the administrator). The Node MAY proceed to try to bind to a Neighbor following the given order, or first send Query messages to each Neighbor in the list to obtain more (dynamic) information before draft-ietf-rmt-bb-tree-config-02 [Page 10] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 deciding which Neighbor to try first. In the latter case, the SN selection rules in section 4.3 MUST be used. 4.1.2 ERS Nodes 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. 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. 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. 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. 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. 4.1.3 POC Nodes query a designated node, the POC, for Neighbors. The POC returns one or more choices of SN, from which the node chooses. The POC scheme is suited for scenarios where receivers lack the ability to use multicast for ERS, no mesh is deployed, and dynamic construction of the session tree is required. POCs are well-known or discovered using a suitable discovery mechanism. POCs do not join the multicast tree of a session. Receivers and SNs inform the POC they wish to join the session tree and the POC recommends an SN to use. Local POCs contact the Sender's POC for interdomain connectivity. POCs are not necessarily specialized infrastructure. Any receiver, SN, or the Sender may be assigned the role at the start of the session, as long as all hosts have a unified view of who the local draft-ietf-rmt-bb-tree-config-02 [Page 11] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 POC is. For example, an existing local SN may typically be appointed as the POC. Alternatively, POCs could be specially deployed redirection servers similar to DNS redirect servers implementing the messages and interfaces described in this BB. If POCs are used, the address of the Sender's POC MUST be included with the session advertisement. Local POCs are used to configure trees within a single domain. Receivers and SNs may discover local POCs via a static configuration or other more dynamic mechanisms such as an anycast service [PTM93] or directory services. These local POCs MUST be told of the Sender's POC in order to connect all trees across domains. POCs also serve as an interface between interdomain and intradomain tree construction. SN discovery with POCs proceeds as follows: 1. The node joins the multicast session and learns of the Sender's POC (from the session announcement) or a local POC. 2. The node optionally discovers its distance from the Sender. Any metric described in Section 4.2 may be used. 3. Meanwhile, SNs wishing to accept children send (unicast) Advertise messages to POCs. POCs use these Advertise messages as replies to Query messages. The Advertise messages are stored in the POC as soft states that time out every BetweenAdvertise seconds. Therefore, an SN wishing to accept children MUST send an Advertise message to its POC every BetweenAdvertise seconds, to refresh the POC's state. 4. The node sends a Query message to the POC for a parent. The request includes (optionally) the node's distance to the sender. 5. The POC chooses a parent for the node and sends the IP address (and port) of the parent in an Advertise packet. 4.1.4 Mesh The mesh approach relies on a set of SN's already deployed as 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: 1) Each SN knows a subset of SN's in the mesh as its immediate neighbors. 2) 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. draft-ietf-rmt-bb-tree-config-02 [Page 12] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 3) 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). 4) 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. The tree building procedure using the mesh of SN's works as follows: a) The sender locates a neighbor SN in the mesh. This SN is referred to as the sender's SN. b) 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. c) 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. d) The sender multicasts its session announcement to the multicast receivers (this is a normal step in all tree forming procedures). e) The sender's SN binds to the sender. f) Each multicast receiver locates one or more neighboring SN's in the mesh. If more than one SN from the mesh is found, the receiver MUST intelligently select an SN that provides the shortest distance to the sender (which is the sum of the distance from the SN to the sender's SN and the distance from the SN to the receiver). The receiver tries to bind to the selected SN. If an SN rejects a receiver (perhaps due to over-subscription), it MAY refer the "next-hop" SN in its forwarding table to the requesting receiver (in the BindReject message). g) Each SN in the mesh tries to bind to its "next-hop" SN; again, the "next-hop" SN MAY choose to reject a binding SN, and do the reference as in (f). 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. Steps (e) through (g) MAY proceed simultaneously, or one before the other. The loop freedom is guaranteed by the algorithm in section 5. In other words, the mesh approach uses the next-hop neighbor as the draft-ietf-rmt-bb-tree-config-02 [Page 13] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 selection for the best neighbor service node to bind to for SN-SN bindings, whereas receiver to SN bindings are based on local SN discovery mechanisms. During a session, the loss of any SN can be remedied using regular tree formation techniques. The exception is when the sender's SN is out of service. In this case, the sender MUST select an alternative neighbor SN and resend its abbreviated session announcement to that SN. Upon receiving this message from the sender, the SN realizes that it has become the sender's SN during an on-going session. It proceeds to broadcast this information to the rest of the SN's in the mesh and re-affiliations take place, especially for those SN's that used to be the children of the earlier sender's SN. Note, this recovery process does not involve the receivers. 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 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 draft-ietf-rmt-bb-tree-config-02 [Page 14] INTERNET DRAFT draft-ietf-rmt-bb-tree-config-02.txt 2 March 2001 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