INTERNET DRAFT                                            Weibin Zhao
Service Location Group                            Henning Schulzrinne
draft-zhao-slp-da-interaction-07.txt              Columbia University
Expires: December 30, 2000                               Erik Guttman
                                                     Sun Microsystems
                                                        June 30, 2000


             mSLP - Mesh-enhanced Service Location Protocol
                  draft-zhao-slp-da-interaction-07.txt


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 (2000).  All Rights Reserved.

Abstract

   This document presents mSLP - Mesh-enhanced Service Location
   Protocol, which enhances SLPv2 with a scheme for the interaction of
   Directory Agents (DAs). mSLP proposes to use a fully meshed peering
   DA architecture. Peer DAs exchange service registration information,
   and maintain the same consistent data for the shared scopes. mSLP
   provides a reliable directory service for an SLP system. It also
   greatly simplifies Service Agent (SA) registrations. mSLP is backward
   compatible with SLPv2, and incremental deployment is supported.




Zhao, et al.           Expires: December 30, 2000               [Page 1]


Internet Draft               DA Interaction                June 30, 2000


1. Introduction

   In the Service Location Protocol (RFC 2608 [1]), Directory Agents
   (DAs) are introduced for caching service advertisements from Service
   Agents (SAs), and answering queries from User Agents (UAs). They
   exist to enhance the performance and scalability of SLP.

   When multiple DAs are present, how should they interact with each
   other? This is an open issue in SLPv2. This document presents mSLP -
   Mesh-enhanced Service Location Protocol, which enhances SLPv2 with a
   scheme for the interaction of DAs. mSLP proposes that if DAs are
   needed in an SLP system, 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 data for the shared
   scopes when they set up a peer relationship, and continue to exchange
   new service registration information during the entire peering
   period. As a result, they maintain the same consistent data for the
   shared scopes. mSLP provides a reliable directory service for an SLP
   system. It also greatly simplifies SA registrations. The scalability
   of SLP is thereby enhanced. mSLP is backward compatible with SLPv2,
   and incremental deployment is supported.

   The rest of this document is organized as follows: Section 2 defines
   the terminology. Section 3 reviews the current DA message flows in
   SLPv2. Section 4 defines the mesh-enhancement extension. In Section
   5, we describe the DA peer relationship. In Section 6, we present the
   message forwarding control among DAs. We discuss our design in
   Section 7, list constants in Section 8, and give security
   considerations in Section 9.

2. Terminology

      Peer DAs
                If two DAs have one or more scopes in common within one
                administrative domain, they are peers. Peer DAs
                coordinate with each other and store the same consistent
                data for the shared scopes.

      Peering TCP connection
                A persistent TCP connection that is kept between a pair
                of peer DAs for the entire peering period. It provides a
                reliable communication channel for the peer DAs to
                exchange messages. Therefore, a DA implementation is not
                burdened by managing message retransmissions. Its
                closing can be an indication of the termination of the
                peer relationship.




Zhao, et al.           Expires: December 30, 2000               [Page 2]


Internet Draft               DA Interaction                June 30, 2000


      Mesh-enhanced DA
                A DA who maintains a peering TCP connection to each of
                its peers and forwards messages to its peers according
                to the rules given in this document. A mesh-enhanced DA
                MUST carry the "mesh-enhanced" attribute keyword in its
                DAAdvert messages.

      Mesh-aware SA
                An SA who understands the "mesh-enhanced" attribute in a
                DAAdvert message and uses the mesh-enhanced DA
                capability accordingly.

   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 [5].


3. DA Message Flows in SLPv2

   This section reviews the DA message flows defined in SLPv2. Figure 1
   illustrates SA registrations with DAs. For each service registration
   (SrvReg) and deregistration (SrvDeReg) message, a DA replies with a
   service acknowledgment (SrvAck) message.

   +----+                         +----+
   |    | --- SrvReg/SrvDeReg --> |    |
   | SA |                         | DA |
   |    | <------- SrvAck ------- |    |
   +----+                         +----+

         Figure 1. SA Registrations

   Figure 2 shows UA queries with DAs. A DA replies with a service reply
   (SrvRply) message to a service request (SrvRqst) message, a service
   type reply (SrvTypeRply) message to a service type request
   (SrvTypeRqst) message, and an attribute reply (AttrRply) message to
   an attribute request (AttrRqst) message.

   +----+                                          +----+
   |    | ----- SrvTypeRqst/SrvRqst/AttrRqst ----> |    |
   | UA |                                          | DA |
   |    | <---- SrvTypeRply/SrvRply/AttrRply ----- |    |
   +----+                                          +----+

                    Figure 2. UA Queries

   Figure 3 depicts DA discovery. A DA replies with a unicast DA
   advertisement (DAAdvert) message to a multicast SrvRqst message which



Zhao, et al.           Expires: December 30, 2000               [Page 3]


Internet Draft               DA Interaction                June 30, 2000


   has "service:directory-agent" as service type.

   +-------+           Multicast SrvRqst           +----+
   |       | ----- (service:directory-agent) ----> |    |
   | UA/SA |                                       | DA |
   |       | <-------- Unicast DAAdvert ---------- |    |
   +-------+                                       +----+

                    Figure 3. DA Discovery

   Figure 4 shows DA advertisements which are multicast periodically.

   +----+                              +-------+
   |    |                              |       |
   | DA | ---- Multicast DAAdvert ---> | UA/SA |
   |    |                              |       |
   +----+                              +-------+

              Figure 4. DA Advertisement

   From Figure 1 to 4, we can see that SLPv2 does not define the message
   flows among DAs. We will define these flows for the interaction of
   DAs and refine above flows in the following sections.

4. Mesh-enhancement Extension

   We define a new SLP extension - "mesh-enhancement extension" for
   specifying the interaction operations of mesh-enhanced DAs. This
   extension has a five-byte extension header, a one-byte field denoted
   as "Action-ID", and an optional part of DA list. Figure 5 illustrates
   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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | Mesh-Enhancement Extension ID |  Next Extension Offset (NEO)  |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     | NEO, contd.   |   Action-ID   |       Number of DA URLs       |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     Length of DA URL #1       |           DA URL #1           \
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                   . . .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     Length of DA URL #N       |           DA URL #N           \
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


                  Figure 5. Mesh-Enhancement Extension



Zhao, et al.           Expires: December 30, 2000               [Page 4]


Internet Draft               DA Interaction                June 30, 2000


   The Action-ID is used to specify the requested operations from the
   receiving DA or to indicate the status information to the receiving
   DA. Table 1 lists the defined Action-IDs.

           Action-ID       Abbreviation

               0           No_Action
               1           Mesh_Forward_Rqst
               2           Data_Dump_Rqst
               3           Peer_Conn_Indication
               4           Peer_DA_Indication
               5           Peer_Conn_Keepalive

       Table 1. Actions in Mesh-Enhancement Extension

   No_Action: null operation. It is used to turn off other operations.

   Mesh_Forward_Rqst: mesh forwarding request. It requests that the
   receiving DA forward the message to all DAs (both mesh-enhanced and
   non-mesh-enhanced) in the registration scope.

   Data_Dump_Rqst: data dump request. It requests that the receiving DA
   dump all the service registration data in the shared scopes to the
   requesting DA.

   Peer_Conn_Indication: peer connection indication. It informs the
   receiving DA that this is a peering TCP connection.

   Peer_DA_Indication: peer DAs indication. It carries the optional DA
   list in the form of URLs. The receiving DA SHOULD peer with all DAs
   in this list.

   Peer_Conn_Keepalive: peer connection keepalive. It indicates that
   this peering TCP connection is alive. The receiving DA SHOULD not
   close it.

5. Peer Relationship

   We use a set of fully meshed peering TCP connections among peer DAs.
   A mesh-enhanced DA maintains a peer list. Each entry in this peer
   list includes peer URL, shared scopes, boot timestamp, peering TCP
   connection ID, and mesh flag. The boot timestamp is to identify a
   rebooted peer. The peering TCP connection is used for message
   forwarding. The mesh flag indicates whether the peer is mesh-enhanced
   or not. A mesh-enhanced DA adds an entry to its peer list whenever it
   discovers a new peer, removes an entry from the peer list when it
   finds the corresponding peer is down, and updates an entry when it
   detects the corresponding peer is rebooted.



Zhao, et al.           Expires: December 30, 2000               [Page 5]


Internet Draft               DA Interaction                June 30, 2000


   A peer relationship has three stages: setting up, keeping and tearing
   down. We describe each stage in detail next. We consider the
   situation where mesh-enhanced DAs, non-mesh-enhanced DAs, mesh-aware
   SAs and non-mesh-aware SAs are coexisted. Our scheme works even if
   multicast is NOT supported or a DA's multicast DAAdvert can not reach
   all of its peer DAs.

5.1. Setting Up a Peer Relationship

   In SLP, each DA periodically sends DA Advertisement (DAAdvert)
   messages to the administratively scoped SLP multicast [3] address
   (239.255.255.253 is the default address in the IPv4 local scope). All
   DAs listen to this address. A DAAdvert message from a mesh-enhanced
   DA MUST carry the "mesh-enhanced" attribute keyword (Figure 6).

   +-----+                                    +-----------+
   |     |                                    |           |
   | DA1 | ------- Multicast DAAdvert ------> | DA2/UA/SA |
   |     |       [attr = mesh-enhanced]       |           |
   +-----+                                    +-----------+

         Figure 6. Mesh-enhanced DA Advertisement

   When a mesh-enhanced DA learns about a new peer (either mesh-enhanced
   or non-mesh-enhanced), it creates a peering TCP connection to the
   peer if such connection does not yet exist. The mesh-enhanced DA uses
   this peering TCP connection to forward messages to the peer. The
   peer, if mesh-enhanced, also uses this peering TCP connection to
   forward messages in the opposite direction. Therefore, a peering TCP
   connection can be set up between two mesh-enhanced DAs or between a
   mesh-enhanced DA and a non-mesh-enhanced DA. In the latter case, the
   message forwarding only goes in uni-direction from the mesh-enhanced
   DA to the non-mesh-enhanced DA.

   For a non-mesh-enhanced peer, the mesh-enhanced DA just sets up a
   peering TCP connection with it and forwards message to it through the
   peering TCP connection. But for a mesh-enhanced peer, the mesh-
   enhanced DA MUST take the following additional steps:

   (1) Peering Connection Indication: After a peering TCP connection is
   established, the DA who initiates the connection sends a
   "Peer_Conn_Indication" DAAdvert message (it has a mesh-enhancement
   extension with the Action-ID set to "Peer_Conn_Indication"; similar
   notations are used in the rest of this document) through the
   connection to mark it as the peering TCP connection (Figure 7).

   (2) Peer DAs Indication: After sending the "Peer_Conn_Indication"
   DAAdvert message, the mesh-enhanced DA sends a "Peer_DA_Indication"



Zhao, et al.           Expires: December 30, 2000               [Page 6]


Internet Draft               DA Interaction                June 30, 2000


   DAAdvert message through the peering TCP connection (Figure 7). This
   message carries a list of DAs that the receiving DA MUST peer with.
   This DA list is constructed based on the sending DA's peer
   information and the receiving DA's service scopes. More precisely,
   this list includes those DAs in the sending DA's peer list that share
   some scopes with the receiving DA.

             (1) "Peer_Conn_Indication" DAAdvert
   +-----+   (2) "Peer_DA_Indication" DAAdvert        +-----+
   |     | <----------------- (TCP) ----------------- |     |
   | DA1 |                                            | DA2 |
   |     | ------------------ (TCP) ----------------> |     |
   +-----+       "Peer_DA_Indication" DAAdvert        +-----+

      Figure 7. Peering Connection and Peer DAs Indication

   How does a mesh-enhanced DA react when it receives the
   "Peer_Conn_Indication" and "Peer_DA_Indication" DAAdvert messages?

   When a mesh-enhanced DA receives a "Peer_Conn_Indication" DAAdvert
   message, it SHOULD use the TCP connection from which the message is
   received as the peering TCP connection to the sending DA instead of
   establishing another one (there is a small possibility that a pair of
   peering TCP connections might be created between the two peer DAs if
   they try to set up a peering TCP connection to each other almost at
   the same time), and reply with a "Peer_DA_Indication" DAAdvert
   message (Figure 7). By exchanging the peer information through
   "Peer_DA_Indication" DAAdvert messages, the mesh-enhanced DAs can
   learn about other DAs in the shared scopes even if multicast is not
   supported (the initial peer relationships can be configured by hand
   or through DHCP [4]).

   The interaction sequence in Figure 6 and 7 can be summarized as
   follows (assume DA2 is mesh-enhanced):

   DA1 is a mesh-enhanced peer of DA2:
       <1> DA2 discovers DA1.
       <2> DA2 creates peering TCP connection to DA1.
       <3> DA2 sends "Peer_Conn_Indication" DAAdvert to DA1.
       <4> DA2 sends "Peer_DA_Indication" DAAdvert to DA1.
       <5> DA1 sends "Peer_DA_Indication" DAAdvert to DA2.

   DA1 is a non-mesh-enhanced peer of DA2:
       <1> DA2 discovers DA1.
       <2> DA2 creates peering TCP connection to DA1.

   When a mesh-enhanced DA receives a "Peer_DA_Indication" DAAdvert
   message, it checks the DA list in the message. This DA list can be



Zhao, et al.           Expires: December 30, 2000               [Page 7]


Internet Draft               DA Interaction                June 30, 2000


   empty in which case the number of DA URLs equals 0. If any URL in the
   list is NOT in its peer list, the mesh-enhanced DA unicasts an active
   DA discovery service request (a SrvRqst message with service type =
   "service:directory-agent") to the DA corresponding to the URL, to
   obtain a DAAdvert message from it (Figure 8). For example, if DA2
   received the URL for DA3 from DA1 in the "Peer_DA_Indication"
   DAAdvert message (Figure 7), and DA3 is NOT in DA2's peer list, DA2
   MUST then acquire a DAAdvert message from DA3 (Figure 8). Upon
   receiving the DAAdvert message from DA3, DA2 can go through the whole
   process to set up a peer relationship with DA3.

   +-----+            Unicast SrvRqst            +-----+
   |     | ----- (service:directory-agent) ----> |     |
   | DA2 |                                       | DA3 |
   |     | <-------- Unicast DAAdvert ---------- |     |
   +-----+                                       +-----+

                    Figure 8. Obtaining DAAdvert

   (3) Getting Data: After sending the "Peer_DA_Indication" DAAdvert
   message, the mesh-enhanced DA SHOULD decide whether it needs to get
   the data from the new peer. If it needs, it sends a "Data_Dump_Rqst"
   DAAdvert message to the peer (Figure 9).

   +-----+     "Data_Dump_Rqst" DAAdvert      +-----+
   |     | -------------- (TCP) ------------> |     |
   | DA1 |                                    | DA2 |
   |     | <--------- SrvReg (TCP) ---------- |     |
   +-----+       (data of shared scopes)      +-----+

                 Figure 9. Dumping Data

   Please note that a mesh-enhanced DA does not need to download data
   from all of its new peers. For example, when a newly booted DA joins
   a peering DA set of three DAs, it needs to get a copy of the existing
   registration data from one of these three DAs, but not from all of
   them, which incurs a lot of redundant transmissions. How to choose a
   DA to download the data from the peering DA set is implementation
   dependent. There are a variety of choices for doing this. The new DA
   can randomly choose one DA from the peering DA set or just use the
   first DA it found. Other criteria, such as the nearest DA or the most
   lightly loaded DA, can also be used for the selection. The choice
   only affects performance.

   On the other hand, when a mesh-enhanced DA receives a
   "Data_Dump_Rqst" DAAdvert message, it dumps all the data of the
   shared scopes to the requesting DA. Each data record is sent as a
   SrvReg message, with a re-calculated new lifetime (= old lifetime -



Zhao, et al.           Expires: December 30, 2000               [Page 8]


Internet Draft               DA Interaction                June 30, 2000


   elapsed time). After exchanging their data in both directions, peer
   DAs have the same consistent data for the shared scopes.

5.2. Keeping a Peer Relationship

   In SLPv2, a DA could close an idle TCP connection after
   CONFIG_CLOSE_CONN seconds (5 minutes at least). To keep a peering TCP
   connection alive, a mesh-enhanced DA SHOULD send a
   "Peer_Conn_Keepalive" DAAdvert message via the channel every
   CONFIG_DA_KEEPALIVE (see Section 8) seconds (Figure 10).

   +-----+                                          +-----+
   |     |                                          |     |
   | DA1 | ---------------- (TCP) ----------------> | DA2 |
   |     |      "Peer_Conn_Keepalive" DAAdvert      |     |
   +-----+                                          +-----+

                     Figure 10. DA Keepalive

5.3. 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 TCP 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 it
   has not received the keepalive DAAdvert message from the peer for
   more than CONFIG_DA_KEEPALIVE seconds. In the last case, there may be
   a network partition and peer DA states get inconsistent.

   To tear down a peer relationship, a DA stops forwarding messages to
   this peer, closes TCP connection with this peer, and removes this
   peer from its peer list.

6. Message Forwarding Control

6.1. Forwarding SrvReg and SrvDeReg Messages

   A mesh-enhanced DA forwards SrvReg and SrvDeReg messages from mesh-
   aware SAs. The forwarding rules are as follows:

   (1) Explicit Forwarding: A SrvReg or SrvDeReg message is forwarded
   only when it explicitly requests to be forwarded. A mesh-aware SA
   needs to add the mesh-enhancement extension to a SrvReg or SrvDeReg
   message and set the Action-ID to "Mesh_Forward_Rqst" if it wants the
   message to be forwarded by a mesh-enhanced DA. This is for the
   compatibility with SLPv2, where SAs need to register with all
   existing DAs. To avoid unnecessary forwarding, the explicit
   forwarding rule is used.



Zhao, et al.           Expires: December 30, 2000               [Page 9]


Internet Draft               DA Interaction                June 30, 2000


   (2) One-hop Forwarding: A SrvReg or SrvDeReg message is forwarded
   only once by a mesh-enhanced DA to all of its peers (both mesh-
   enhanced and non-mesh-enhanced) in the registration scope. Before
   forwarding a message, a mesh-enhanced DA sets the Action-ID in the
   mesh-enhancement extension to "No_Action". In this way, a forwarded
   message will never be forwarded again. Since the peering DA set is in
   a fully connected mesh, one-hop forwarding is enough to ensure that a
   message can reach all peer DAs. Figure 11 shows how a SrvReg/SrvDeReg
   message is forwarded.

   +----+  "Mesh_Forward_Rqst"  +-----+       "No_Action"       +-----+
   |    | -- SrvReg/SrvDeReg -> |     | --- SrvReg/SrvDeReg --> |     |
   | SA |                       | DA1 |                         | DA2 |
   |    | <------ SrvAck ------ |     | <------- SrvAck ------- |     |
   +----+                       +-----+                         +-----+

                  Figure 11. Forwarding Registration

   (3) Handling SrvAck: Since a DA always replies with a SrvAck message
   when it receives a SrvReg or SrvDeReg message, a mesh-enhanced DA
   SHOULD process SrvAck messages from other DAs. In Figure 11, DA1
   returns a SrvAck message to SA upon receiving and processing a
   SrvReg/SrvDeReg message. As DA1 also forwards the message to DA2, it
   SHOULD properly handle the SrvAck message from DA2.

6.2. Forwarding DAAdvert Messages

   A mesh-enhanced DA also forwards DAAdvert messages from its non-
   mesh-enhanced peers. The forwarding rules are as follows:

   (1) A DAAdvert message is forwarded only when it comes from a new or
   rebooted non-mesh-enhanced peer.

   (2) A mesh-enhanced DA forwards a DAAdvert message to all of its
   mesh-enhanced peers that share some scopes with the advertised DA.

   (3) A forwarded DAAdvert message SHOULD not be forwarded again. It
   can be identified easily since the sending DA and the advertised DA
   are different for a forwarded DAAdvert message.

   Forwarding the DAAdvert message from a new or rebooted non-mesh-
   enhanced peer can ensure that the DA is known to all of its mesh-
   enhanced peers even if multicast is NOT supported or its multicast
   DAAdvert messages can NOT reach all of its mesh-enhanced peers. With
   the peer setting up procedure described in Section 5.1 and the
   forwarding rules given in this section, a DA (mesh-enhanced or non-
   mesh-enhanced) known to one mesh-enhanced peer can be known to all of
   its mesh-enhanced peers. Therefore, a mesh-enhanced DA can know all



Zhao, et al.           Expires: December 30, 2000              [Page 10]


Internet Draft               DA Interaction                June 30, 2000


   of its peers (mesh-enhanced and non-mesh-enhanced), and forward
   service registration information from mesh-aware SAs to them
   properly.

7. Design Discussion

   In this section, we discuss several important design issues.

7.1 Meshed Peering TCP Connections

   The fully meshed peering DA architecture is built on top of a set of
   fully meshed peering TCP connections, which greatly facilitates
   message forwarding control. Any message received by a DA only needs
   one-hop forwarding to reach all other DAs in the peering DA set. We
   anticipate a small number of DAs for each service scope, and 2-4 is
   the recommended value. There is no need to have separate DA for each
   scope. A DA can serve multiple scopes, and a peering TCP connection
   is used for all shared scopes between each pair of peer DAs.

7.2 Reliability

   The fully meshed peering DA architecture provides maximum robustness.
   It ensures that no single failure point exists in the SLP directory
   service. All service registrations are kept by at least two DAs. If
   one DA is down, at least one other peer DA can continue to provide
   the service information for the scope. Moreover, the peering DA
   architecture ensures the data consistency among peer DAs
   automatically. It also enables a DA to recover from crash with much
   less effort since a rebooted DA can get the existing data from its
   peering DA set. This is done through DA coordination, no SA
   involvement is needed.

7.3 Simplifying SA Registrations and Scalability

   The fully meshed peering DA architecture greatly simplifies SA
   registrations. A mesh-aware SA only needs to register with one mesh-
   enhanced DA in the registration scope. The information will be
   propagated automatically within the peering DA set. Thus, a mesh-
   aware SA does not need to implement the complicated algorithm to
   register with all existing DAs and to re-register when new mesh-
   enhanced DAs are discovered, or old mesh-enhanced DAs are found to
   have rebooted. With mesh-enhanced DAs and simplified SAs, the overall
   SLP system scalability can be enhanced.

7.4 Forwarding UA Queries

   A further extension to the interaction of SLP DAs is to forward UA
   queries besides SA registrations. It works as follows: When a mesh-



Zhao, et al.           Expires: December 30, 2000              [Page 11]


Internet Draft               DA Interaction                June 30, 2000


   enhanced DA receives a UA query which is not in its scope, it
   forwards the query to another DA which supports the scope. This can
   simplify UA implementation since UAs do not need to keep track of DA
   scopes. A UA can send its queries to any mesh-enhanced DA. However,
   this adds much complexity to the mesh-enhanced DA implementation.
   First, a mesh-enhanced DA needs to keep track of all DAs of all
   scopes, not only the DAs that share some scopes with it. Second, a
   mesh-enhanced DA needs to forward the query to another DA, and it
   also needs to forward the reply from another DA back to the UA. We
   did not include this extension in our scheme mainly due to its
   complexity. However, for a thin-client UA implementation, it might
   deserve further consideration.

7.5 Compatibility

   mSLP is backward compatible with SLPv2. It only defines a new
   attribute ("mesh-enhanced") for the DAAdvert message and a new SLP
   extension (mesh-enhancement extension) which is used by DAAdvert,
   SrvReg and SrvDeReg messages. In mSLP, DAs are enhanced with very
   little added complexity, and the changes are almost transparent to
   UAs and SAs. UAs can be kept unchanged. SAs can be greatly simplified
   by using the mesh-forwarding capability for the service
   registrations.

   mSLP supports incremental deployment of mesh-enhanced DAs. A mesh-
   enhanced DA MUST set up peer relationships with both mesh-enhanced
   DAs and non-mesh-enhanced DAs. A mesh-aware SA only needs to register
   with one mesh-enhanced DA. However, it still needs to take care of
   newly found non-mesh-enhanced DAs and rebooted non-mesh-enhanced DAs
   since these non-mesh-enhanced DAs can not get the existing data from
   other DAs. Therefore, uniformly mesh-enhanced DAs can provide a much
   easier job for mesh-aware SAs.

7.6 Summary

   We summarize the operations for UAs, mesh-aware SAs, non-mesh-aware
   SAs, mesh-enhanced DAs and non-mesh-enhanced DAs as follows:

   UA

       A UA 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 scope.

   Non-mesh-aware SA

       It needs to discover all DAs in its scope and register with all



Zhao, et al.           Expires: December 30, 2000              [Page 12]


Internet Draft               DA Interaction                June 30, 2000


       of them. It does NOT use the mesh-enhancement extension.

   Mesh-aware SA

       It identifies mesh-enhanced DAs from the "mesh-enhanced"
       attribute in the DAAdvert messages. It only needs to discover one
       mesh-enhanced DA and register with it using a mesh-enhancement
       extension with the Action-ID set to "Mesh_Forward_Rqst". If there
       are no mesh-enhanced DAs in its scope, it operates in the same
       way as a non-mesh-aware SA [1].

   Non-mesh-enhanced DA

       It accepts SrvReg and SrvDeReg messages from SAs and mesh-
       enhanced DAs normally. It dose NOT forward them.

   Mesh-enhanced DA

       (1) It MUST carry the "mesh-enhanced" attribute keyword in its
       DAAdvert messages (Section 2).

       (2) It MUST keep a list of peer DAs (mesh-enhanced and non-mesh-
       enhanced) that share some scopes with it, and maintain a peering
       TCP connection to each of them. For each mesh-enhanced peer, a
       "Peer_Conn_Indication" DAAdvert message SHOULD be sent OR
       processed, a "Peer_DA_Indication" DAAdvert message SHOULD be sent
       AND processed, a "Data_Dump_Rqst" DAAdvert message MAY be sent OR
       processed (Section 5).

       (3) It accepts SrvReg and SrvDeReg messages from SAs and mesh-
       enhanced DAs. It MUST forward the "Mesh_Forward_Rqst" SrvReg and
       SrvDeReg to all peer DAs (both mesh-enhanced and non-mesh-
       enhanced) in the registration scope. It also processes SrvAck
       messages from mesh-enhanced DAs (Section 6.1).

       (4) When it receives a DAAdvert messages from a new or rebooted
       non-mesh-enhanced peer, it MUST forward the message to all of its
       mesh-enhanced peers that share some scopes with the advertised DA
       (Section 6.2).

8. Constants

   Mesh-enhancement Extension ID   0x0006          (Section 4)

   CONFIG_DA_KEEPALIVE             290 seconds     (Section 5.2)

   Note: CONFIG_DA_KEEPALIVE < CONFIG_CLOSE_CONN, which has a default
   value of 300 seconds [1].



Zhao, et al.           Expires: December 30, 2000              [Page 13]


Internet Draft               DA Interaction                June 30, 2000


9. Security Considerations

   DA authentication is more important in mSLP since a mesh-aware SA
   depends on the mesh-enhanced DA it registers with to forward its
   SrvReg and SrvDeReg messages. A mesh-enhanced DA SHOULD use standard
   SLPv2 authentication to authenticate other DAs in the mesh. A mesh-
   enhanced DA SHOULD also perform authentication before accepting
   SrvReg and SrvDeReg messages to prevent illegitimate modification or
   elimination of legitimate service registrations. mSLP is just as
   secure as SLPv2.

10. References

   [1] E. Guttman, C. Perkins, J. Veizades, M. Day, "Service Location
       Protocol Version 2", RFC 2608, June 1999.

   [2] Y. Rekhter, T. Li, "A Border Gateway Protocol 4 (BGP-4)",
       RFC 1771, March 1995.

   [3] D. Meyer, "Administratively Scoped IP Multicast", RFC 2365,
       July 1998.

   [4] R. Droms, "Dynamic Host Configuration Protocol", RFC 2131,
       March 1997.

   [5] S. Bradner, "Key words for use in RFCs to Indicate Requirement
       Levels", BCP 14, RFC 2119, March 1997.

11. Authors' Addresses

   Weibin Zhao
   Department of Computer Science
   Columbia University
   1214 Amsterdam Avenue, MC 0401
   New York, NY 10027-7003
   Email: zwb@cs.columbia.edu

   Henning Schulzrinne
   Department of Computer Science
   Columbia University
   1214 Amsterdam Avenue, MC 0401
   New York, NY 10027-7003
   Email: hgs@cs.columbia.edu

   Erik Guttman
   Sun Microsystems
   Eichhoelzelstr. 7
   74915 Waibstadt



Zhao, et al.           Expires: December 30, 2000              [Page 14]


Internet Draft               DA Interaction                June 30, 2000


   Germany
   Email: Erik.Guttman@sun.com

12. Full Copyright Statement

   Copyright (C) The Internet Society (2000).  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: December 30, 2000              [Page 15]