INTERNET DRAFT Weibin Zhao Service Location Group Henning Schulzrinne draft-zhao-slp-da-interaction-12.txt Columbia University July 12, 2001 Erik Guttman Expires: January 12, 2002 Sun Microsystems mSLP - Mesh-enhanced Service Location Protocol 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 working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts as reference material or to cite them other than as "work in progress." 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. Copyright Notice Copyright (C) The Internet Society (2001). All Rights Reserved. Abstract This document presents the Mesh-enhanced Service Location Protocol (mSLP). mSLP enhances SLP with a fully-meshed peering Directory Agent (DA) architecture. Peer DAs exchange service registration information and maintain the same consistent data for shared scopes. mSLP improves the reliability and consistency of SLP directory services. It also simplifies Service Agent (SA) registrations in systems with multiple DAs. mSLP is backward compatible with SLPv2 and can be deployed incrementally. Zhao, et al. Expires: January 12, 2002 [Page 1] Internet Draft DA Interaction July 12, 2001 1. Introduction In the Service Location Protocol (SLPv2 [1]), Directory Agents (DAs) accept service registrations from Service Agents (SAs) and answer queries from User Agents (UAs). They enhance the performance and scalability of SLP. However, when multiple DAs are present, how should they interact with each other? To address this open issue in SLPv2, we present the Mesh-enhanced Service Location Protocol (mSLP). mSLP proposes that if DAs are needed in an SLP deployment, a fully- meshed peering DA architecture should be used, i.e., more than one DA should be present for each scope and they should maintain a fully- meshed peer relationship (similar to IBGP [2]). Peer DAs exchange their service registration states for shared scopes when they set up a peer relationship and continue to exchange new service registration updates during the entire peering period. As a result, they maintain the same consistent data for shared scopes. mSLP improves the reliability and consistency of SLP directory services. It also simplifies SA registrations in systems with multiple DAs. mSLP is backward compatible with SLPv2 and can be deployed incrementally. Currently, there are three types of DA message flows in SLPv2 [1]: acknowledging SA registrations, answering UA queries and enabling DA discovery. SLPv2 does not explicitly define message flows among DAs - the only message that a DA may receive from other DAs is DAAdvert. We will define a set of message flows for DA interactions in this document. 2. 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 [3]. Peer DAs DAs that have one or more scopes in common are peers. Peer DAs coordinate with each other and maintain the same consistent data for shared scopes. Peering Connection A peering connection is a persistent TCP connection between two peer DAs for reliable FIFO message exchange. The closing of it terminates the peer relationship. Mesh-enhanced DA A mesh-enhanced DA MUST carry the "mesh-enhanced" attribute keyword in its DAAdvert, maintain peering connections to all peers and properly interact with peers. Zhao, et al. Expires: January 12, 2002 [Page 2] Internet Draft DA Interaction July 12, 2001 Mesh-aware SA A mesh-aware SA understands the "mesh-enhanced" attribute keyword in the DAAdvert and uses the Mesh Forwarding extension in its SrvReg/SrvDeReg messages. Registration Update A registration update refers to a SrvReg/SrvDeReg message. Registration State A registration state refers to an entry in the registration database. Accept DA For each registration update from mesh-aware SAs, the first mesh-enhanced DA that accepts the update is the Accept DA for the update. Normally, a registration update is propagated from its Accept DA to other DAs in the registration scopes. Accept Timestamp The Accept Timestamp of a registration update is the millisecond-accuracy system clock value at its Accept DA when the update is accepted. Any two updates accepted by the same DA MUST have different Accept Timestamps. Version Timestamp A mesh-aware SA MUST provide a Version Timestamp in the Mesh Forwarding extension for each SrvReg/SrvDeReg message sent to a mesh-enhanced DA. This Version Timestamp is the millisecond-accuracy system clock value at the SA when it issues the message. Any two SrvReg/SrvDeReg messages from the same SA MUST have different Version Timestamps. 3. Fully-meshed Peering DA Architecture In SLPv2, there is a many-to-many relationship between DAs and service scopes, i.e., a DA can serve multiple scopes and a scope can be served by multiple DAs. To enhance SLP DA services and simplify SA registrations, mSLP defined a fully-meshed peering DA architecture based on service scopes. The first part of this architecture is on DA peer relationship management. DAs that share service scopes are peers. Peer DAs may have exactly the same service scopes or only one scope in common. Each pair of peer DAs maintain a single persistent peering connection which provides a reliable FIFO channel for their message exchange. In other words, there is a set of fully-meshed peering connections among peer DAs. Zhao, et al. Expires: January 12, 2002 [Page 3] Internet Draft DA Interaction July 12, 2001 In Figure 1, as DA3 shares service scopes with DA1, DA2 and DA4, it maintains peering connections to them and exchanges registration updates with them in scope y, y and z, respectively. DA1 and DA2 have exactly the same service scopes, they exchange registration updates in scope x and y using a single peering connection. +-----------+ | DA4 (z) | +-----------+ | (z) +-----------+ (y) +-----------+ (y) +-----------+ | DA1 (x,y) | ---------- | DA3 (y,z) | ---------- | DA2 (x,y) | +-----------+ +-----------+ +-----------+ | (x,y) | +-------------------------------------------------+ Figure 1. Fully-meshed Peering Relationships among DAs The second part of this architecture is on registration update propagation control. Registration updates received by one DA are properly propagated to its peers, thus peer DAs maintain the same consistent registration states for their common scopes. This architecture improves SLP DA services. It avoids a single point of failure by replicating data among at least two peer DAs, automatically synchronizing data among these DAs. The full mesh topology provides maximum robustness. We anticipate that a small number of DAs for each service scope is sufficient to achieve high reliability; peer sets that are too large are not desirable as they significantly increase management overhead. This architecture also enables a DA to recover from a crash with much less effort since a rebooted DA can get the existing registrations from its peering DA set purely through DA coordination, without involving SAs. Furthermore, this architecture simplifies SA registrations. In SLPv2, an SA needs to register with all existing DAs in its scopes and re- register when new DAs are discovered or old DAs are found to have rebooted. This places a substantial burden on an SA implementation. mSLP provides an alternate and more efficient way for distributing registrations, which moves the burden from many SAs to a few DAs. In mSLP, a mesh-aware SA only needs to register with sufficient number of mesh-enhanced DAs such that the union of their service scopes covers its scopes. The registrations will then be propagated automatically to other DAs in their scopes. In Figure 2, SA1 may choose to register with DA2 only or to register with both DA1 and DA3. For compatibility reason, mSLP supports two registration models: the original SLPv2 model in which an SA Zhao, et al. Expires: January 12, 2002 [Page 4] Internet Draft DA Interaction July 12, 2001 registers with all DAs and the new model in which a mesh-aware SA uses the Mesh Forwarding extension to request that mesh-enhanced DAs distribute its registrations. By simplifying SAs, the overall SLP system scalability can be improved. (x) +-----------+ (y) +----------------- | SA1 (x,y) | -----------------+ | (option2) +-----------+ (option2) | | (x,y) | (option1) | +---------+ (x) +-----------+ (y) +---------+ | DA1 (x) | ----------- | DA2 (x,y) | ----------- | DA3 (y) | +---------+ +-----------+ +---------+ Figure 2. Options for Registration with Mesh-enhanced DAs For easy of presentation, we first focus discussion only on mesh- enhanced DAs and mesh-aware SAs (Section 4, 5), then address the mixed deployment of mesh-enhanced DAs, non-mesh-enhanced DAs, mesh- aware SAs and non-mesh-aware SAs, and mSLP compatibility with SLPv2 (Section 6). 4. Registration Update Propagation Control mSLP defined a new SLP message - Data Request, and a new SLP extension - Mesh Forwarding for registration update propagation control. A mesh-enhanced DA MUST support the Data Request message and the Mesh Forwarding extension. 4.1. Accept ID and Propagation Order An Accept ID has two components: Accept DA and Accept Timestamp. Each registration update has a unique Accept ID, and a registration state has the same Accept ID as that of the latest update applied to it. The Accept ID is used in the Mesh Forwarding extension and the Data Request message. Figure 3 shows its format. 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Accept Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Accept Timestamp, cont'd. | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Length of Accept DA URL | Accept DA URL \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 3. Accept ID Zhao, et al. Expires: January 12, 2002 [Page 5] Internet Draft DA Interaction July 12, 2001 Accept IDs define a total order for all updates accepted by the same DA and a partial order for all updates in the system. Thus, Accept IDs can be used to propagate registration updates in order. In mSLP, a mesh-enhanced DA MUST propagate registration updates in the increasing order of their Accept IDs, which means that all updates accepted by the same DA MUST be propagated in the increasing order of their Accept Timestamps, and updates accepted by different DAs MAY be propagated in any orders. The ordering propagation enables a receiving DA to represent its received registration updates using a State Summary, i.e., up to what points (in term of Accept Timestamps) the receiving DA has received updates accepted by DAs in its peer set. A State Summary at a DA includes all the latest Accept IDs it has received. For example, if DAi has a State Summary of ((DA1, T1), (DA2, T2), ..., (DAn, Tn)), then it means that DAi has received all registration updates prior to timestamp Tj accepted by DAj, where 1<=i,j<=n. A direct consequence of the ordering propagation is that when a mesh-enhanced DA receives an update propagated from a peer DA, the Accept ID of this update MUST be bigger than the corresponding entry in its State Summary - if there is no corresponding entry in its State Summary, the receiving DA needs to add an entry for this Accept DA. If a received update has a smaller Accept ID (this indicates an error), the receiving DA SHOULD discard the update. The ordering propagation ensures that no update is missed for propagation. By using the State Summary, each pair of peer DAs can easily determine the difference of their received updates, and exchange only new updates, not the whole database, to synchronize their registration states whenever they need to catch up registration updates with each other (after failure, boot, or reboot). 4.2. Version Timestamp and Registration Version Resolution When registrations are propagated among DAs, their arrival timestamps at DAs cannot be used for version resolution. For example, assume SA1 sends a registration (R1) to DA1 first and a new version of the same registration (R2) to DA2 later. When R1 and R2 are propagated, the arrival timestamp of R1 at DA2 is later than that of R2, but R1 SHOULD NOT overwrite R2 at DA2 as R2 is a newer version. In mSLP, a mesh-enhanced DA MUST use the Version Timestamp for registration version resolution. mSLP assumes that each registration is updated only by one SA, thus a mesh-enhanced DA doesn't need to compare Version Timestamps from two different SAs. Zhao, et al. Expires: January 12, 2002 [Page 6] Internet Draft DA Interaction July 12, 2001 A mesh-enhanced DA installs a registration update if and only if the update has a newer Version Timestamp (from a mesh-aware SA) or it doesn't have the Mesh Forwarding extension (from a non-mesh-aware SA). As incremental registrations and partial deregistrations may result in incomplete registration states, especially when updates are propagated, a mesh-aware SA MUST use the Mesh Forwarding extension with a fresh SrvReg and a complete SrvDeReg only. 4.3. Mesh Forwarding Extension The Mesh Forwarding (MeshFwd) extension is used in the SrvReg/SrvDeReg message. It carries a Version Timestamp and an Accept ID. Its extension ID is 6. Figure 4 shows its format and two defined Forward IDs (Fwd-IDs). 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MeshFwd Extension ID = 6 | Next Extension Offset (NEO) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NEO, cont'd. | Fwd-ID | Version Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version Timestamp | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version Timestamp, cont'd. | Accept ID \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fwd-ID Abbreviation 1 RqstFwd 2 Fwded Figure 4. MeshFwd Extension and its Fwd-IDs A mesh-aware SA uses the RqstFwd Mesh Forwarding extension (Fwd-ID = RqstFwd, Accept Timestamp = 0) in a SrvReg/SrvDeReg to explicitly request a mesh-enhanced DA (the Accept DA) forward the message. In other words, a mesh-enhanced DA propagates a registration update from an SA if and only if the update has the RqstFwd Mesh Forwarding extension. A mesh-enhanced DA uses the Fwded Mesh Forwarding extension (Fwd-ID = Fwded, Accept Timestamp != 0) in a forwarded SrvReg/SrvDeReg message sent from it to another DA. 4.4. Data Request Message The Data Request (DataRqst) message carries an Accept ID. Its Function-ID is 12. Figure 5 shows its format. Zhao, et al. Expires: January 12, 2002 [Page 7] Internet Draft DA Interaction July 12, 2001 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Service Location header (function = DataRqst = 12) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Accept ID \ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Figure 5. DataRqst Message The DataRqst message is used by a mesh-enhanced DA to request new registration states from a peer. The requested new registration states have the same Accept DA as the specified Accept DA in the DataRqst message, but have a bigger Accept Timestamp. Note that one DataRqst message pulls new registration states of one Accept DA at a time; pulling new registration states of all Accept DAs needs to use multiple DataRqst messages with different Accept DAs. When a mesh-enhanced DA receives a DataRqst from a peer, it SHOULD check its State Summary and send the requested new registration states it has to the peer in the increasing order of their Accept Timestamps (Figure 6). A new registration state is sent as a fresh SrvReg with a re-calculated new lifetime computed as its old lifetime minus the elapsed time. A newly deleted registration state is propagated as a SrvDeReg. +-----+ DataRqst +-----+ | | -------------------------------------------> | | | DA1 | (Peering Connection) | DA2 | | | <------------------------------------------- | | +-----+ New Registration States via Srv(De)Reg(s) +-----+ Figure 6. Pulling New Registration States via a DataRqst As mSLP uses the fully-meshed peering DA architecture, normally a mesh-enhanced DA only needs to pull new registration states directly from their Accept DAs. Only when failures occur, it needs to pull new registration states indirectly. For example, DA1 with scope x and y, DA2 with scope x, and DA3 with scope y have already set up peer relationships. Now DA1 crashes, then DA4 with scope x and y joins, and DA4 wants to get all existing registrations accepted by DA1, DA2, and DA3. DA4 pulls DA2 and DA3 accepted registrations directly from DA2 and DA3, respectively, but pulls DA1 accepted registrations indirectly from DA2 for scope x and from DA3 for scope y (Figure 7). Zhao, et al. Expires: January 12, 2002 [Page 8] Internet Draft DA Interaction July 12, 2001 DA4 ---- DataRqst (DA2, 0) ---> DA2 DA4 ---- DataRqst (DA3, 0) ---> DA3 DA4 ---- DataRqst (DA1, 0) ---> DA2 DA4 ---- DataRqst (DA1, 0) ---> DA3 Figure 7. Pulling New Registration States Directly and Indirectly The DataRqst message is used in the initial population exchange among peer DAs. It is also used after failures (DA crashes and network partitions) to enable peer DAs to catch up the difference of their observed registration updates. The DataRqst message enables a lightweight anti-entropy [5, 6] among peer DAs. In the traditional anti-entropy, a DA pulls updates of all Accept DAs in one round (in this case the DataRqst should carry a list of Accept IDs - the State Summary of the sending DA, not only one Accept ID), but the DA needs to pull updates from one peer at a time, otherwise it will get repeated updates. In mSLP, a DA pulls updates of one Accept DA at a time from a peer, thus a newly joined (rebooted, or reconnected) DA can directly pull updates from all existing peer DAs at the same time without getting repeated updates. This data pulling scheme is simple for use, efficient in the normal case (no failures) and flexible to support different requirements. 4.5. Propagation Model Once a mesh-enhanced DA has sent all new registration updates accepted by itself to a peer in answering the peer's DataRqst, it starts to direct forward newly received updates from mesh-aware SAs to the peer in a push fashion. If any failure occurs in the direct forwarding, a mesh-enhanced DA MUST stop the direct forwarding to the peer. The typical update propagation model from DA1 to DA2 is a loop of the following four steps. (1) DA1 receives a DataRqst (DA1, TSx) from DA2. (2) DA1 sends new states to DA2 in answering DA2's DataRqst. (3) DA1 direct forwards DA1 accepted updates to DA2. (4) DA1 stops direct forwarding to DA2 if any failure occurs. 4.6. Direct Forwarding In Figure 8, when DA1 directly forwards an update from SA1 to DA2, it sets the message's Fwd-ID to Fwded and changes the message's Accept Timestamp to its arrival timestamp. A direct forwarding is performed asynchronously, DA1 can send a SrvAck to SA1 before it gets the SrvAck from DA2. Zhao, et al. Expires: January 12, 2002 [Page 9] Internet Draft DA Interaction July 12, 2001 +-----+ RqstFwd Srv(De)Reg +-----+ Fwded Srv(De)Reg +-----+ | | ---------------------> | | ---------------------> | | | SA1 | (Peering Connection) | DA1 | (Peering Connection) | DA2 | | | <--------------------- | | <--------------------- | | +-----+ SrvAck +-----+ SrvAck +-----+ Figure 8. Direct Forwarding of a SrvReg/SrvDeReg Note that the direct forwarding of a registration update only goes one-hop from its Accept DA to other DAs in the registration scopes. As peer DAs are in a fully connected mesh, the one-hop forwarding is sufficient to distribute registration updates rapidly among peer DAs when there is no failure. 4.7. SrvDeReg Messages When a SrvDeReg arrives, a mesh-enhanced DA needs to mark the corresponding service entry in the database as deleted so that the entry will not appear in any query reply. However, no matter a deregistered service entry exists or not, a mesh-enhanced DA needs to retain the SrvDeReg information properly to prevent earlier SrvReg messages from mistakenly causing this service entry to reappear in the database. A registration state (whether deregistered or not) will be purged from the database when it expires. 4.8. SrvAck Messages A mesh-enhanced DA MUST properly reply with a SrvAck to a SrvReg/SrvDeReg no matter the message is received from an SA or from a peer DA. Also, a mesh-enhanced DA MUST properly handle SrvAck messages from its peer DAs. 4.9. Control Information for Each Registration URL For each registration URL from mesh-aware SAs, a mesh-enhanced DA needs to maintain the following control information: the latest update (SrvReg or SrvDeReg), Accept ID (for update propagation), and Version Timestamp (for registration version resolution - rejecting previous updates). 4.10. State Summary for All Received Registrations A mesh-enhanced DA needs to maintain a State Summary to reflect its received registrations so far. When a SrvReg/SrvDeReg is received from an SA or from its Accept DA, a mesh-enhanced DA updates its State Summary directly, otherwise, the DA needs to update its State Summary on scope basis. Consider the example in Figure 7, when DA4 receives DA1 accepted registrations from DA2, it updates DA1 latest Zhao, et al. Expires: January 12, 2002 [Page 10] Internet Draft DA Interaction July 12, 2001 Accept Timestamp for scope x, similarly, when DA4 receives DA1 accepted registrations from DA3, it updates DA1 latest Accept Timestamp for scope y. Thus, when pulling new registration states form a peer indirectly via a DataRqst, a mesh-enhanced DA needs to use a scope-based Accept ID. 5. Peer Relationship Management A mesh-enhanced DA maintains a peer table. For each peer, the DA needs to keep the peer DAAdvert and a reference to the peering connection. 5.1. Learning about a New Peer A mesh-enhanced DA can learn about a new peer via static configuration, DHCP [4], DAAdvert multicast, solicited DAAdvert unicast [1], and unsolicited DAAdvert unicast (Section 5.2, 5.3). In any case, a mesh-enhanced DA MUST obtain a DAAdvert from a new peer before establishing the peer relationship to it. 5.2. Establishing a Peering Connection After a mesh-enhanced DA gets a DAAdvert from a new peer, if there does not exist a peering connection to the peer, then it MUST create such a connection and send its DAAdvert via the connection (Figure 9). A mesh-enhanced DA can identify a peering connection initiated by a peer by receiving the peer's DAAdvert from the connection. +-----+ (1) DA2 DAAdvert | +-----+ | | <--------------------+ | | | DA1 | (2) Create a Peering Connection | DA2 | | | ---------------------------------------> | | +-----+ (3) DA1 DAAdvert +-----+ Figure 9. Establishing a Peering Connection Normally, only a single peering connection SHOULD be set up between two peers. However, there is a small possibility that a pair of such connections might be created if two peers try to initiate a connection to each other almost at the same time. That is inefficient, but it does not affect the correctness. 5.3. Forwarding DAAdvert Messages After establishing a new peering connection, a mesh-enhanced DA forwards the new peer DAAdvert to its existing peers, and sends a DAAdvert for each of its existing peers and the Accept DAs in its State Summary to the new peer (Figure 10). The DAAdvert forwarding Zhao, et al. Expires: January 12, 2002 [Page 11] Internet Draft DA Interaction July 12, 2001 enables a DA to learn peers incrementally from its known peers, and to know the Accept DA set of the new peer. +-----+ DAAdvert(s) of DA1's Peers +-----+ | | ---------------------------------------> | | | DA1 | (Peering Connection) | DA2 | | | <--------------------------------------- | | +-----+ DAAdvert(s) of DA2's Peers +-----+ | | V DA2 DAAdvert DA1 DAAdvert V +----------------------+ +----------------------+ | DA1's Existing Peers | | DA2's Existing Peers | +----------------------+ +----------------------+ Figure 10. Forwarding DAAdvert Messages 5.4. Maintaining a Peer Relationship To detect failures (network partitions and peer crashes), mSLP uses a heat-beat mechanism. A mesh-enhanced DA SHOULD send its DAAdvert to peers (Figure 11) every CONFIG_DA_KEEPALIVE seconds. The timeout value for this message is CONFIG_DA_TIMEOUT seconds (Section 8). +-----+ DA1 DAAdvert +-----+ | | ---------------------------------------> | | | DA1 | (Peering Connection) | DA2 | | | <--------------------------------------- | | +-----+ DA2 DAAdvert +-----+ Figure 11. Maintaining a Peer Relationship 5.5. Tearing Down a Peer Relationship A mesh-enhanced DA SHOULD tear down a peer relationship when it finds that the peer has closed the peering connection, when it receives a multicast DAAdvert message from the peer with a DA stateless boot timestamp set to 0 (meaning the peer is going to shutdown), or when the peer DAAdvert is timeout. To tear down a peer relationship, a mesh-enhanced DA removes the peer from its peer table and closes the peering connection. 6. Compatibility and Incremental Deployment mSLP is fully backward compatible with SLPv2. It defines a new attribute ("mesh-enhanced"), a new message type (DataRqst) and a new extension (MeshFwd). A mesh-enhanced DA supports extended operations without affecting its original functions. Moreover, the changes at mesh-enhanced DAs are mostly transparent to UAs and SAs. UAs can be Zhao, et al. Expires: January 12, 2002 [Page 12] Internet Draft DA Interaction July 12, 2001 kept unchanged. SAs can simplify their service registrations by using the RqstFwd Mesh Forwarding extension. mSLP supports incremental deployment of mesh-enhanced DAs and mesh- aware SAs. In a mixed deployment of mesh-enhanced DAs, non-mesh- enhanced DAs, mesh-aware SAs and non-mesh-aware SAs, there are six types of interactions among DAs and SAs. Mesh-enhanced DAs vs. Mesh-enhanced DAs A mesh-enhanced DA interacts with other mesh-enhanced DAs as described in Section 4 and 5 of this document. Mesh-enhanced DAs vs. Mesh-aware SAs A mesh-enhanced DA interacts with mesh-aware SAs as described in Section 4 of this document. Mesh-enhanced DAs vs. Non-mesh-enhanced DAs A mesh-enhanced DA MUST establish a TCP connection with non-mesh-enhanced DAs in its scopes, and forward newly received SrvReg/SrvDeReg messages on behalf of mesh-aware SAs to non-mesh-enhanced peers (registrations from non- mesh-aware SAs SHOULD not be forwarded). A mesh-enhanced DA MUST be prepared for a non-mesh-enhanced peer to drop the connection. In this case, the mesh-enhanced DA reopens a TCP connection. Note that a mesh-enhanced DA doesn't send the DataRqst message, nor DAAdvert messages of other DAs to a non-mesh-enhanced peer. Mesh-enhanced DAs vs. Non-mesh-aware SAs A mesh-enhanced DA operates in the same way as a non-mesh- enhanced DA [1] for all non-mesh-aware SAs. Mesh-aware SAs vs. Non-mesh-enhanced DAs If there are no mesh-enhanced DAs cover its scopes, for uncovered scopes, a mesh-aware SA operates in the same way as a non-mesh-aware SA [1] to interact with non-mesh- enhanced DAs. Non-mesh-aware SAs vs. Non-mesh-enhanced DAs They operate as described in [1]. In a mixed deployment of mesh-enhanced DAs and non-mesh-enhanced DAs, a mesh-aware SA still needs to take care of newly found and rebooted non-mesh-enhanced DAs as these DAs cannot get existing registrations from other DAs, therefore, uniform deployment of mesh-enhanced DAs is much more desirable than partial deployment. Zhao, et al. Expires: January 12, 2002 [Page 13] Internet Draft DA Interaction July 12, 2001 7. Summary UA It MAY prefer to use a mesh-enhanced DA to a non-mesh- enhanced DA since a mesh-enhanced DA is more likely to reliably contain the complete set of current service registration data for the UA's scopes. Non-mesh-aware SA It needs to discover and register with all DAs in its scopes. It does not use the Mesh Forwarding extension. Non-mesh-enhanced DA It accepts SrvReg/SrvDeReg messages from SAs and mesh- enhanced DAs normally. It does not forward them. Mesh-aware SA It only needs to discover sufficient number of mesh-enhanced DAs that cover its scopes. It MUST register with mesh- enhanced DAs via the fresh SrvReg and complete SrvDeReg messages using the RqstFwd Mesh Forwarding extension. Mesh-enhanced DA It MUST carry the "mesh-enhanced" attribute keyword in its DAAdvert, maintain a peer table, and have peering connections to all peers. For each mesh-enhanced peer, the DataRqst message MUST be sent AND processed. Also, it accepts registrations from SAs and mesh-enhanced DAs, propagates registrations in order and processes SrvAck messages from mesh-enhanced DAs. Furthermore, it SHOULD forward the DAAdvert message from a new peer to its existing peers and vice versa. 8. Constants Mesh Forwarding Extension ID 6 (Section 4.3) Data Request Message Type 12 (Section 4.4) CONFIG_DA_KEEPALIVE 200 seconds (Section 5.4) CONFIG_DA_TIMEOUT 300 seconds (Section 5.4) 9. Security Considerations mSLP uses standard SLPv2 authentication. However, the DA and SA authentications are more important in mSLP than in original SLP. First, a mesh-enhanced DA SHOULD authenticate other DAs before setting up a peer relationship with them to prevent any malicious DA from joining the meshed DA set. Second, a successful attack at a mesh-enhanced DA may affect all DAs in the meshed DA set, a mesh- Zhao, et al. Expires: January 12, 2002 [Page 14] Internet Draft DA Interaction July 12, 2001 enhanced DA SHOULD authenticate SAs before accepting and forwarding their SrvReg/SrvDeReg messages to prevent illegitimate modification or elimination of service registrations. On the other hand, as a mesh-aware SA depends on the mesh-enhanced DA it registers with to forward its SrvReg/SrvDeReg messages, it SHOULD authenticate the DA to avoid using a malicious mesh-enhanced DA. 10. References [1] E. Guttman, C. Perkins, J. Veizades and M. Day, "Service location protocol, version 2", RFC 2608, June 1999. [2] Y. Rekhter and T. Li, "A border gateway protocol 4 (BGP-4)", RFC 1771, March 1995. [3] S. Bradner, "Key words for use in RFCs to indicate requirement levels", BCP 14, RFC 2119, March 1997. [4] C. Perkins and E. Guttman, "DHCP options for service location protocol", RFC 2610, June, 1999. [5] A. Demers, D. Greene, C. Hauser, W. Irish, J. Larson, S. Shenker, H. Sturgis, D. Swinehart and D. Terry, "Epidemic algorithms for replicated database maintenance", the sixth ACM symposium on principles of distributed computing, Vancouver, Canada, 1987. [6] K. Petersen, M. Spreizer, D. Terry, M. Theimer and A. Demers, "Flexible update propagation for weakly consistent replication", the sixteenth ACM symposium on operating systems principles, Saint Malo, France, 1997. 11. Authors' Addresses Weibin Zhao Henning Schulzrinne Department of Computer Science Columbia University 1214 Amsterdam Avenue, MC 0401 New York, NY 10027-7003 Email: {zwb,hgs}@cs.columbia.edu Erik Guttman Sun Microsystems Eichhoelzelstr. 7 74915 Waibstadt Germany Email: Erik.Guttman@sun.com Zhao, et al. Expires: January 12, 2002 [Page 15] Internet Draft DA Interaction July 12, 2001 12. Full Copyright Statement Copyright (C) The Internet Society (2001). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Zhao, et al. Expires: January 12, 2002 [Page 16]