summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc3528.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc3528.txt')
-rw-r--r--doc/rfc/rfc3528.txt843
1 files changed, 843 insertions, 0 deletions
diff --git a/doc/rfc/rfc3528.txt b/doc/rfc/rfc3528.txt
new file mode 100644
index 0000000..8dec0c8
--- /dev/null
+++ b/doc/rfc/rfc3528.txt
@@ -0,0 +1,843 @@
+
+
+
+
+
+
+Network Working Group W. Zhao
+Request for Comments: 3528 H. Schulzrinne
+Category: Experimental Columbia University
+ E. Guttman
+ Sun Microsystems
+ April 2003
+
+
+ Mesh-enhanced Service Location Protocol (mSLP)
+
+Status of this Memo
+
+ This memo defines an Experimental Protocol for the Internet
+ community. It does not specify an Internet standard of any kind.
+ Discussion and suggestions for improvement are requested.
+ Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2003). All Rights Reserved.
+
+Abstract
+
+ This document describes the Mesh-enhanced Service Location Protocol
+ (mSLP). mSLP enhances the Service Location Protocol (SLP) with a
+ scope-based fully-meshed peering Directory Agent (DA) architecture.
+ Peer DAs exchange new service registrations in shared scopes via
+ anti-entropy and direct forwarding. mSLP improves the reliability
+ and consistency of SLP DA services, and simplifies Service Agent (SA)
+ registrations in systems with multiple DAs. mSLP is backward
+ compatible with SLPv2 and can be deployed incrementally.
+
+Table of Contents
+
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
+ 1.1. Notation Conventions . . . . . . . . . . . . . . . . . . 2
+ 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . 3
+ 1.3. Compatibility . . . . . . . . . . . . . . . . . . . . . 3
+ 2. Scope-based Fully-meshed Peering DA Architecture . . . . . . . 4
+ 3. Peer Relationship Management . . . . . . . . . . . . . . . . . 6
+ 3.1. Learning about New Peers . . . . . . . . . . . . . . . . 6
+ 3.2. Establishing a Peering Connection . . . . . . . . . . . 6
+ 3.3. Exchanging Information about Existing Peers . . . . . . 6
+ 3.4. Maintaining a Peer Relationship . . . . . . . . . . . . 7
+ 3.5. Tearing Down a Peer Relationship . . . . . . . . . . . . 7
+ 4. Registration Propagation Control . . . . . . . . . . . . . . . 7
+ 4.1. Accept ID and Propagation Order . . . . . . . . . . . . 7
+ 4.2. Version Timestamp and Registration Version Resolution . 8
+
+
+
+Zhao, et al. Experimental [Page 1]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+ 4.3. Mesh Forwarding Extension . . . . . . . . . . . . . . . 8
+ 4.4. Summary Vector . . . . . . . . . . . . . . . . . . . . . 9
+ 4.5. Service Deregistration . . . . . . . . . . . . . . . . . 10
+ 4.6. Anti-entropy Request Message . . . . . . . . . . . . . . 10
+ 4.7. Anti-entropy . . . . . . . . . . . . . . . . . . . . . . 11
+ 4.8. Direct Forwarding . . . . . . . . . . . . . . . . . . . 11
+ 4.9. SrvAck Message . . . . . . . . . . . . . . . . . . . . . 12
+ 4.10. Control Information . . . . . . . . . . . . . . . . . . 12
+ 5. Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
+ 6. Protocol Timing Defaults . . . . . . . . . . . . . . . . . . . 13
+ 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13
+ 8. Security Considerations . . . . . . . . . . . . . . . . . . . 13
+ 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13
+ 10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 13
+ 10.1. Normative References . . . . . . . . . . . . . . . . . . 13
+ 10.2. Informative References . . . . . . . . . . . . . . . . . 14
+ 11. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 14
+ 12. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 15
+
+1. Introduction
+
+ In the Service Location Protocol (SLPv2 [RFC2608]), Directory Agents
+ (DAs) accept service registrations from Service Agents (SAs) and
+ answer queries from User Agents (UAs); they enhance the performance
+ and scalability of SLPv2. The use of scopes in SLPv2 further
+ improves its scalability. In general, a DA can serve multiple
+ scopes, and a scope can be served by multiple DAs. When multiple DAs
+ are present for a scope, how should they interact with each other?
+ This document describes the Mesh-enhanced Service Location Protocol
+ (mSLP), addressing this open issue in SLPv2.
+
+ mSLP defines a scope-based fully-meshed peering DA architecture: for
+ each scope, all DAs serving the scope form a fully-meshed peer
+ relationship (similar to IBGP [RFC1771]). Peer DAs exchange new
+ service registrations in shared scopes via anti-entropy [EPID-
+ ALGO,UPDA-PROP] and direct forwarding. mSLP improves the reliability
+ and consistency of SLP DA services, and simplifies SA registrations
+ in systems with multiple DAs.
+
+1.1. Notation Conventions
+
+ 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 BCP 14, RFC 2119
+ [RFC2119].
+
+
+
+
+
+
+Zhao, et al. Experimental [Page 2]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+1.2. Terminology
+
+ Peer DAs (or Peers)
+ DAs that share one or multiple scopes are peers.
+
+ Peering Connection
+ A persistent connection (e.g., TCP) that provides reliable and
+ ordered transfers between two peers. The closing of a peering
+ connection terminates the peer relationship.
+
+ Mesh-enhanced DA (MDA)
+ An MDA carries the "mesh-enhanced" attribute keyword in its DA
+ Advertisement (DAAdvert) message, maintains peering connections to
+ all peers, and properly interacts with peers.
+
+ Mesh-enhanced SA (MSA)
+ An MSA uses the Mesh Forwarding extension (Section 4.3) when it
+ registers with MDAs.
+
+ Registration Update
+ A registration update refers to a Service Registration (SrvReg) or
+ Service Deregistration (SrvDeReg) message.
+
+ Registration State
+ A registration state refers to an entry in the registration
+ database.
+
+ Accept DA
+ When a DA accepts a registration update from an SA, the DA is the
+ accept DA for the update.
+
+ Accept Timestamp
+ The arrival timestamp of a registration update at its accept DA is
+ the accept timestamp of the update. All accept timestamps
+ assigned by the same DA MUST be monotonically increasing.
+
+ Version Timestamp
+ When an MSA sends a registration update to an MDA, the MSA assigns
+ a version timestamp to the update. All version timestamps
+ assigned by the same MSA MUST be monotonically increasing.
+
+1.3. Compatibility
+
+ mSLP is designed as a lightweight enhancement to SLPv2. It is
+ backward compatible with SLPv2. mSLP defines two enhanced entities:
+ MDAs and MSAs. They can be deployed incrementally. An enhanced
+ entity supports extended operations without affecting its original
+ functionality as defined in RFC 2608 [RFC2608]. For simplicity and
+
+
+
+Zhao, et al. Experimental [Page 3]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+ compatibility, an enhanced entity works as a non-enhanced entity to
+ interact with non-enhanced entities. Table 1 summarizes all
+ interactions involving an MDA or MSA.
+
+ Interaction Equivalent To Defined In
+ ----------------------------------------------
+ MDA <--> MDA mSLP
+ MDA <--> MSA mSLP
+ MDA <--> DA DA <--> DA RFC 2608
+ MDA <--> SA DA <--> SA RFC 2608
+ MDA <--> UA DA <--> UA RFC 2608
+ MSA <--> DA SA <--> DA RFC 2608
+ MSA <--> UA SA <--> UA RFC 2608
+
+ Table 1. Interactions involving an MDA or MSA
+
+2. Scope-based Fully-meshed Peering DA Architecture
+
+ (x,y)
+ +--------------------------------------------------+
+ | +------------+ |
+ | | MDA4 (z) | |
+ | +------------+ |
+ | | (z) |
+ +------------+ (y) +------------+ (y) +------------+
+ | MDA1 (x,y) | ---------- | MDA3 (y,z) | ---------- | MDA2 (x,y) |
+ +------------+ +------------+ +------------+
+
+ Figure 1. A scope-based fully-meshed peering DA architecture
+
+ mSLP employs a scope-based fully-meshed peering DA architecture. For
+ each scope, all MDAs that serve the scope form a fully-meshed peer
+ relationship. Figure 1 shows an example for four MDAs and three
+ scopes (x, y, and z). Note that a single peering connection is
+ needed between two peers for exchanging all service registrations in
+ their shared scopes.
+
+ This architecture enhances SLP DA services. First, it improves the
+ consistency among peer DAs by automatically reconciling inconsistent
+ states among them. Second, it enables newly booted and rebooted MDAs
+ to catch up on all new registrations at once from their peers, purely
+ through DA interaction, without involving SAs.
+
+ This architecture also simplifies SA registrations. In SLPv2, an SA
+ needs to discover and register with all existing DAs in its scopes,
+ and re-register when new DAs are discovered or old DAs are found to
+ have rebooted. In mSLP, for all MDAs, an MSA only needs to discover
+ and register with a sufficient number of them, such that the union of
+
+
+
+Zhao, et al. Experimental [Page 4]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+ their scopes covers its scopes; the registrations will then be
+ propagated automatically to other MDAs in the registration scopes.
+ For example, in Figure 2, MSA1 only needs to discover and register
+ with MDA2, or with both MDA1 and MDA3.
+
+ (option2) +------------+ (option2)
+ +----------------- | MSA1 (x,y) | -----------------+
+ | +------------+ |
+ | | (option1) |
+ V V V
+ +----------+ +------------+ +----------+
+ | MDA1 (x) | ----------- | MDA2 (x,y) | ----------- | MDA3 (y) |
+ +----------+ +------------+ +----------+
+
+ Figure 2. Options for registering with MDAs
+
+ Furthermore, this architecture provides scaling advantages. Consider
+ a scope that has N SAs and M DAs, and assume N > M >= 2. Although
+ mSLP and SLPv2 need the same number of SLP messages to distribute
+ registrations from N SAs to M DAs, mSLP can reduce the number of
+ agents needed for taking care of registration distribution, and
+ reduce the number of TCP connections needed if each SA uses TCP for
+ its registrations. More specifically, the agents that need to take
+ care of registration distribution are all N SAs in SLPv2, but only M
+ DAs in mSLP. Also, the number of needed TCP connections is N*M in
+ SLPv2 as each SA has to connect with each DA and register, but only
+ N+M*(M-1)/2 in mSLP as each SA only needs to connect to one
+ contacting DA of a full mesh of M node and register, then
+ registrations are propagated through the DA mesh. For N=100 and
+ M=10, SLPv2 needs 1000 TCP connections, but mSLP only needs 145 such
+ connections.
+
+ Note that as mSLP employs full-mesh topology, which is mainly for
+ simplicity and reliability, it cannot scale to a large number of MDAs
+ in a single mesh. In general, mSLP can be applied if the number of
+ MDAs in a mesh is on the order of tens or below. One way to avoid
+ having a large number of MDAs in a mesh is to split the scope into
+ several finer scopes. For example, if we have N MDAs for scope "x",
+ and N is too large, then we can split "x" into two finer scopes:
+ "x-1" and "x-2", with N1 MDAs for "x-1" only, N2 MDAs for "x-2" only,
+ N3 MDAs for both "x-1" and "x-2", and N1+N2+N3=N. Thus, instead of
+ having a large full mesh of size N, we now have two smaller full
+ meshes of size N1+N3 and N2+N3, respectively. Accordingly, a service
+ registration that previously targets for scope "x", now needs to be
+ registered under both "x-1" and "x-2".
+
+
+
+
+
+
+Zhao, et al. Experimental [Page 5]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+3. Peer Relationship Management
+
+3.1. Learning about New Peers
+
+ An MDA can learn about new peers via static configuration, DHCP
+ [RFC2610], and DAAdvert multicast and unicast. In any case, an MDA
+ MUST get a peer's DAAdvert before establishing a peer relationship to
+ the peer.
+
+3.2. Establishing a Peering Connection
+
+ After getting a new peer's DAAdvert, an MDA establishes a peering
+ connection (if such a connection does not exist yet) to the peer, and
+ sends its DAAdvert via the connection (Figure 3). An MDA can
+ identify a peering connection initiated by a peer by receiving the
+ peer's DAAdvert from the connection. Normally, a single peering
+ connection is set up between two peers, but there is a small
+ possibility that a pair of peering connections might be created
+ between two peers if they try to initiate a connection to each other
+ at almost the same time. Thus, when an MDA identifies a new peering
+ connection initiated by a peer, it SHOULD check whether it has
+ initiated another peering connection to the peer. If this is the
+ case, and it has a lower-numbered IP address than the peer, then the
+ MDA SHOULD terminate the connection it has initiated.
+
+ +------+ (1) MDA2's DAAdvert | +------+
+ | | <----------------------+ | |
+ | MDA1 | (2) Create a Peering Connection | MDA2 |
+ | | ---------------------------------------> | |
+ +------+ (3) MDA1's DAAdvert +------+
+
+ Figure 3. Establishing a peering connection
+
+3.3. Exchanging Information about Existing Peers
+
+ After establishing a peering connection, two peers (say, MDA1 and
+ MDA2) exchange information about their existing peers by forwarding
+ peers' DAAdverts via the peering connection (Figure 4). MDA1 will
+ forward the DAAdvert of a peer (say, MDA3) to MDA2 if:
+
+ (1) MDA3 shares scopes with MDA2, and
+ (2) MDA3 is an active peer of MDA1 (i.e., there is a peering
+ connection between MDA3 and MDA1) or an accept DA for
+ registrations currently maintained by MDA1 (i.e., MDA1
+ has registrations originally accepted by MDA3).
+
+
+
+
+
+
+Zhao, et al. Experimental [Page 6]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+ MDA2 operates similarly. Note that all DAAdverts can be sent as one
+ TCP stream for efficiency. Exchanging information about existing
+ peers enables an MDA to learn about new peers incrementally.
+
+ +------+ DAAdverts of MDA1's existing peers +------+
+ | | ------------------------------------------> | |
+ | MDA1 | (Peering Connection) | MDA2 |
+ | | <------------------------------------------ | |
+ +------+ DAAdverts of MDA2's existing peers +------+
+
+ Figure 4. Exchanging information about existing peers
+
+3.4. Maintaining a Peer Relationship
+
+ +------+ MDA1's DAAdvert +------+
+ | | ---------------------------------------> | |
+ | MDA1 | (Peering Connection) | MDA2 |
+ | | <--------------------------------------- | |
+ +------+ MDA2's DAAdvert +------+
+
+ Figure 5. Maintaining a peer relationship
+
+ To detect failures (network partitions and peer crashes), mSLP uses a
+ heart-beat mechanism. An MDA sends its DAAdvert to peers (Figure 5)
+ every CONFIG_DA_KEEPALIVE seconds. The timeout value for this
+ message is CONFIG_DA_TIMEOUT seconds (Section 6).
+
+3.5. Tearing Down a Peer Relationship
+
+ An MDA SHOULD tear down a peer relationship when it finds that the
+ peer has closed the peering connection, when it receives a DAAdvert
+ multicast from the peer with a DA stateless boot timestamp set to 0
+ (meaning that the peer is going to shutdown), or when it has not
+ received the peer's DAAdvert for more than CONFIG_DA_TIMEOUT seconds.
+
+4. Registration Propagation Control
+
+4.1. Accept ID and Propagation Order
+
+ When an MDA accepts a registration update from an MSA, the MDA
+ assigns a unique accept ID to the update. An accept ID has two
+ components: an accept DA URL and an accept timestamp. The accept
+ timestamp is a 64-bit integer representing elapsed microseconds since
+ 00:00 Coordinated Universal Time (UTC), January 1, 1900. Figure 6
+ shows the format for an accept ID entry. A registration state has
+ the same accept ID as that of the latest update applied to it.
+
+
+
+
+
+Zhao, et al. Experimental [Page 7]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+ 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 6. Accept ID entry
+
+ An MDA MUST propagate registrations in the increasing order of their
+ accept IDs, i.e., registrations having the same accept DA MUST be
+ propagated in the increasing order of their accept timestamps. Note
+ that registrations having different accept DAs MAY be propagated in
+ any order.
+
+4.2. Version Timestamp and Registration Version Resolution
+
+ When registrations are propagated among MDAs, their arrival
+ timestamps at MDAs cannot be used for version resolution. For
+ example, assume that MSA1 sends a registration (R1) to MDA1 first,
+ and a new version of the same registration (R2) to MDA2 later. When
+ R1 and R2 are propagated, the arrival timestamp of R1 at MDA2 is
+ later than that of R2, but R1 SHOULD NOT overwrite R2 at MDA2 as R2
+ is a newer version.
+
+ mSLP resolves registration versions using version timestamps. When
+ an MSA sends a registration update to an MDA, the MSA assigns a
+ version timestamp to the update. The version timestamp is a 64-bit
+ integer representing elapsed microseconds since 00:00 UTC, January 1,
+ 1900. mSLP assumes that each registration is updated only by one SA,
+ thus an MDA does not need to compare version timestamps from
+ different MSAs. An MDA installs a registration update if the update
+ has a newer version timestamp (from an MSA), or the update does not
+ have the Mesh Forwarding extension (from a non-MSA).
+
+4.3. Mesh Forwarding Extension
+
+ The Mesh Forwarding (MeshFwd) extension carries a version timestamp
+ and an accept ID entry. Figure 7 shows its format and two defined
+ Forwarding IDs (Fwd-IDs).
+
+ The MeshFwd extension is used with a Srv(De)Reg message, but it can
+ only be used with a fresh SrvReg, or a complete SrvDeReg.
+
+
+
+
+
+Zhao, et al. Experimental [Page 8]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+ 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 = 0x0006 | Next Extension Offset (NEO) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | NEO, cont'd. | Fwd-ID | Version Timestamp |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Version Timestamp, cont'd. |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Version Timestamp, cont'd. | Accept ID Entry \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Fwd-ID Abbreviation
+ 1 RqstFwd
+ 2 Fwded
+
+ Figure 7. MeshFwd extension and its Fwd-IDs
+
+ An MSA uses the RqstFwd MeshFwd extension (Fwd-ID = RqstFwd, accept
+ timestamp = 0) in a Srv(De)Reg to explicitly request an MDA (the
+ accept DA) to forward the message.
+
+ An MDA uses the Fwded MeshFwd extension (Fwd-ID = Fwded, accept
+ timestamp != 0) in each Srv(De)Reg sent from it to another MDA,
+ either forwarding a Srv(De)Reg received from an MSA (if the message
+ has the RqstFwd MeshFwd extension), or propagating a registration
+ state in its database.
+
+4.4. Summary Vector
+
+ An MDA uses a summary vector to represent its received Srv(De)Reg(s)
+ that have a MeshFwd extension. This summary vector records the
+ latest accept timestamp for each accept DA that appears in the
+ MeshFwd extension. For example, consider n MDAs for a scope, if MDAi
+ has a summary vector as ((MDA1, T1), (MDA2, T2), ..., (MDAn, Tn)),
+ then MDAi has received all registrations originally accepted by MDAj
+ up to timestamp Tj, where 1<=i,j<=n.
+
+ An MDA updates its summary vector when it receives a Srv(De)Reg that
+ has a MeshFwd extension. The MDA adds a new accept ID to its summary
+ vector if the Srv(De)Reg has a new accept DA; the MDA updates the
+ accept timestamp of an existing accept ID in its summary vector if
+ the Srv(De)Reg has an existing accept DA.
+
+
+
+
+
+
+
+
+Zhao, et al. Experimental [Page 9]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+4.5. Service Deregistration
+
+ When an MDA receives a SrvDeReg that has a MeshFwd extension, it
+ SHOULD retain the corresponding registration in the database, and
+ mark it as deleted. This way, the registration will not appear in
+ any query reply, and an earlier SrvReg will not mistakenly cause the
+ registration to reappear in the database. A registration state will
+ be purged from the database when it expires.
+
+4.6. Anti-entropy Request Message
+
+ The Anti-entropy Request (AntiEtrpRqst) message carries an anti-
+ entropy type ID and a list of accept ID entries. Figure 8 shows its
+ format and two defined anti-entropy type 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Service Location Header (AntiEtrpRqst Function-ID = 12) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Anti-Entropy Type ID | Number of Accept ID Entries |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Accept ID Entry 1 . . . Accept ID Entry k \
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Anti-Entropy Type Type ID
+ selective 1
+ complete 2
+
+ Figure 8. AntiEtrpRqst message and anti-entropy types
+
+ The AntiEtrpRqst message is used by an MDA to request new
+ registration states from a peer. The anti-entropy type is either
+ selective or complete. If the anti-entropy type is selective, only
+ registration states that have an accept ID greater than any specified
+ accept ID in the message are requested. If the anti-entropy type is
+ complete, all registration states that have an accept ID greater than
+ any specified accept ID in the message or have an accept DA not
+ specified in the message are requested.
+
+ For example, consider three MDAs (MDA1, MDA2, and MDA3) for a scope.
+ MDA2 has registration states originally accepted by MDA1, MDA2, and
+ MDA3. If MDA1 sends a selective AntiEtrpRqst to MDA2 using an accept
+ ID list as ((MDA2, T2)), then MDA1 only requests registration states
+ that are originally accepted by MDA2, and have an accept timestamp
+ greater than T2. If MDA1 sends a complete AntiEtrpRqst to MDA2 using
+ an accept ID list as ((MDA2, T2)), then MDA1 requests all
+
+
+
+
+Zhao, et al. Experimental [Page 10]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+ registration states originally accepted by MDA1 and MDA3, plus those
+ originally accepted by MDA2 and having an accept timestamp greater
+ than T2.
+
+4.7. Anti-entropy
+
+ Anti-entropy is used for exchanging initial registration states when
+ two peers recognize each other for the first time, and for updating
+ new registration states after failures.
+
+ When an MDA receives an AntiEtrpRqst from a peer, it sends the
+ requested new registration states in the increasing order of their
+ accept IDs. At last a Service Acknowledgment (SrvAck) message is
+ sent to indicate that the processing of a corresponding AntiEtrpRqst
+ has been completed (Figure 9). A new registration state is sent as a
+ fresh SrvReg with its remaining lifetime. A newly deregistered state
+ is propagated as a SrvDeReg. Note that multiple Srv(De)Reg(s) can be
+ sent as one TCP stream for efficiency.
+
+ +------+ AntiEtrpRqst +------+
+ | | -------------------------------------------> | |
+ | MDA1 | (Peering Connection) | MDA2 |
+ | | <------------------------------------------- | |
+ +------+ New States via Srv(De)Reg(s) + SrvAck +------+
+
+ Figure 9. Anti-entropy via AntiEtrpRqst, Srv(De)Reg(s) and SrvAck
+
+4.8. Direct Forwarding
+
++------+ RqstFwd Srv(De)Reg +------+ Fwded Srv(De)Reg +------+
+| | ---------------------> | | --------------------> | |
+| MSA1 | | MDA1 | | MDA2 |
+| | <--------------------- | | | |
++------+ SrvAck +------+ +------+
+
+ Figure 10. Direct forwarding of a Srv(De)Reg
+
+ After sending all new registration states accepted by itself to a
+ peer (via anti-entropy), an MDA directly forwards newly received
+ registration updates from MSAs to the peer until a failure occurs.
+
+ In Figure 10, when a Srv(De)Reg is directly forwarded from MDA1 to
+ MDA2, its Fwd-ID is set to Fwded, and its accept timestamp is set to
+ its arrival timestamp at MDA1. Note that a direct forwarding is
+ performed asynchronously: MDA1 can send a SrvAck to MSA1 before it
+ forwards the Srv(De)Reg to MDA2. Also note that the direct
+ forwarding of a Srv(De)Reg goes only one-hop from its accept DA (say,
+ MDA1) to all MDA1's peers that are in the registration scopes.
+
+
+
+Zhao, et al. Experimental [Page 11]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+4.9. SrvAck Message
+
+ According to [RFC2608], a DA MUST reply with a SrvAck to a Srv(De)Reg
+ when the message is received from an SA. However, an MDA SHOULD NOT
+ reply with a SrvAck to a Srv(De)Reg if the message is received from a
+ peer. This is for efficiency because peers exchange Srv(De)Reg
+ messages via reliable peering connections. Note that an MDA MUST
+ reply with a SrvAck to an AntiEtrpRqst.
+
+4.10. Control Information
+
+ For each registration entry, an MDA maintains the following control
+ information: an accept ID (for registration propagation), a version
+ timestamp (for registration version resolution - rejecting previous
+ updates), and a deletion flag (deregistered or not).
+
+ For all registration entries, an MDA maintains a summary vector to
+ reflect its received registrations so far.
+
+5. Summary
+
+ mSLP extends SLPv2 with three new definitions: a new attribute -
+ "mesh-enhanced" for DAAdvert, a new message extension - MeshFwd, and
+ a new message type - AntiEtrpRqst.
+
+ A UA MAY prefer an MDA to a non-MDA since an MDA is more likely to
+ reliably contain the complete set of current service registrations
+ for the UA's scopes.
+
+ A non-MSA needs to discover and register with all DAs in its scopes.
+ It does not use the MeshFwd extension.
+
+ A non-MDA accepts Srv(De)Reg(s) from SAs. It does not forward them.
+
+ For all MDAs, an MSA only needs to discover and register with
+ sufficient number of them, such that they cover its scopes. It uses
+ the MeshFwd extension when it registers with MDAs.
+
+ An MDA carries the "mesh-enhanced" attribute keyword in its DAAdvert.
+ It maintains a peer relationship to each peer. It accepts
+ registrations from SAs and peers, propagates registrations via anti-
+ entropy and direct forwarding to peers.
+
+
+
+
+
+
+
+
+
+Zhao, et al. Experimental [Page 12]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+6. Protocol Timing Defaults
+
+ Interval Name Default Value Defined in
+ ------------------- ------------- -----------
+ CONFIG_DA_KEEPALIVE 200 seconds Section 3.4
+ CONFIG_DA_TIMEOUT 300 seconds Section 3.4
+
+7. IANA Considerations
+
+ The Mesh Forwarding (MeshFwd) extension ID, 0x0006, described in
+ Section 4.3, has been assigned by IANA out of the SLP extension space
+ (RFC 2608, Section 9.1) reserved for "optional to implement"
+ extensions (i.e., the 0x0000-0x3FFF range).
+
+ The function-ID of the Anti-entropy Request (AntiEtrpRqst) message
+ type, 12, described in Section 4.6, has been assigned by IANA (RFC
+ 2608, Section 15).
+
+8. Security Considerations
+
+ mSLP uses standard SLPv2 authentication. First, an MDA SHOULD
+ authenticate other MDAs before setting up a peer relationship with
+ them so as to prevent any malicious MDA from joining the DA mesh.
+ Second, as a successful attack at an MDA may affect all MDAs in the
+ DA mesh, an MDA SHOULD authenticate MSAs before accepting and
+ forwarding their Srv(De)Reg messages to prevent illegitimate
+ modification or elimination of service registrations. Third, as an
+ MSA depends on the MDA with which it registers to forward its
+ Srv(De)Reg messages, it SHOULD authenticate the MDA to avoid using a
+ malicious MDA.
+
+9. Acknowledgments
+
+ Thomas Narten, James Kempf, Mike Day, Mikael Pahmp, Ira McDonald,
+ Qiaobing Xie and Xingang Guo provided valuable comments for this
+ document.
+
+10. References
+
+10.1. Normative References
+
+ [RFC2608] Guttman, E., Perkins, C., Veizades, J. and M. Day,
+ "Service Location Protocol, Version 2", RFC 2608, June
+ 1999.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119, March 1997.
+
+
+
+
+Zhao, et al. Experimental [Page 13]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+10.2. Informative References
+
+ [RFC1771] Rekhter, R. and T. Li, "A Border Gateway Protocol 4
+ (BGP-4)", RFC 1771, March 1995.
+
+ [RFC2610] Perkins, C. and E. Guttman, "DHCP Options for Service
+ Location Protocol", RFC 2610, June, 1999.
+
+ [EPID-ALGO] 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.
+
+ [UPDA-PROP] 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
+ 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
+ Germany
+
+ EMail: Erik.Guttman@sun.com
+
+
+
+
+
+Zhao, et al. Experimental [Page 14]
+
+RFC 3528 Mesh-enhanced Service Location Protocol (mSLP) April 2003
+
+
+12. Full Copyright Statement
+
+ Copyright (C) The Internet Society (2003). 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.
+
+Acknowledgement
+
+ Funding for the RFC Editor function is currently provided by the
+ Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Zhao, et al. Experimental [Page 15]
+