diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc2334.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc2334.txt')
-rw-r--r-- | doc/rfc/rfc2334.txt | 2243 |
1 files changed, 2243 insertions, 0 deletions
diff --git a/doc/rfc/rfc2334.txt b/doc/rfc/rfc2334.txt new file mode 100644 index 0000000..721018e --- /dev/null +++ b/doc/rfc/rfc2334.txt @@ -0,0 +1,2243 @@ + + + + + + +Network Working Group J. Luciani +Request for Comments: 2334 Bay Networks +Category: Standards Track G. Armitage + Bellcore + J. Halpern + Newbridge + N. Doraswamy + Bay Networks + April 1998 + + + Server Cache Synchronization Protocol (SCSP) + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (1998). All Rights Reserved. + +Abstract + + This document describes the Server Cache Synchronization Protocol + (SCSP) and is written in terms of SCSP's use within Non Broadcast + Multiple Access (NBMA) networks; although, a somewhat straight + forward usage is applicable to BMA networks. SCSP attempts to solve + the generalized cache synchronization/cache-replication problem for + distributed protocol entities. However, in this document, SCSP is + couched in terms of the client/server paradigm in which distributed + server entities, which are bound to a Server Group (SG) through some + means, wish to synchronize the contents (or a portion thereof) of + their caches which contain information about the state of clients + being served. + +1. Introduction + + The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, + SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, when they appear in this + document, are to be interpreted as described in [10]. + + It is perhaps an obvious goal for any protocol to not limit itself to + a single point of failure such as having a single server in a + client/server paradigm. Even when there are redundant servers, there + + + +Luciani, et. al. Standards Track [Page 1] + +RFC 2334 SCSP April 1998 + + + still remains the problem of cache synchronization; i.e., when one + server becomes aware of a change in state of cache information then + that server must propagate the knowledge of the change in state to + all servers which are actively mirroring that state information. + Further, this must be done in a timely fashion without putting undue + resource strains on the servers. Assuming that the state information + kept in the server cache is the state of clients of the server, then + in order to minimize the burden placed upon the client it is also + highly desirable that clients need not have complete knowledge of all + servers which they may use. However, any mechanism for + synchronization should not preclude a client from having access to + several (or all) servers. Of course, any solution must be reasonably + scalable, capable of using some auto-configuration service, and lend + itself to a wide range of authentication methodologies. + + This document describes the Server Cache Synchronization Protocol + (SCSP). SCSP solves the generalized server synchronization/cache- + replication problem while addressing the issues described above. + SCSP synchronizes caches (or a portion of the caches) of a set of + server entities of a particular protocol which are bound to a Server + Group (SG) through some means (e.g., all NHRP servers belonging to a + Logical IP Subnet (LIS)[1]). The client/server protocol which a + particular server uses is identified by a Protocol ID (PID). SGs are + identified by an ID which, not surprisingly, is called a SGID. Note, + therefore, that the combination PID/SGID identifies both the + client/server protocol for which the servers of the SG are being + synchronized as well as the instance of that protocol. This implies + that multiple instances of the same protocol may be in operation at + the same time and have their servers synchronized independently of + each other. An example of types of information that must be + synchronized can be seen in NHRP[2] using IP where the information + includes the registered clients' IP to NBMA mappings in the SG LIS. + + The simplest way to understand SCSP is to understand that the + algorithm used here is quite similar to that used in OSPF[3]. In + fact, if the reader wishes to understand more details of the + tradeoffs and reliability aspects of SCSP, they should refer to the + Hello, Database Synchronization, and Flooding Procedures in OSPF [3]. + + As described later, the protocol goes through three phases. The + first, very brief phase is the hello phase where two devices + determine that they can talk to each other. Following that is + database synchronization. The operation of SCSP assumes that up to + the point when new information is received, two entities have the + same data available. The database synchronization phase ensures + this. + + + + + +Luciani, et. al. Standards Track [Page 2] + +RFC 2334 SCSP April 1998 + + + In database synchronization, the two neighbors exchange summary + information about each entry in their database. Summaries are used + since the database itself is potentially quite large. Based on these + summaries, the neighbors can determine if there is information that + each needs from the other. If so, that is requested and provided. + Therefore, at the end of this phase of operation, the two neighbors + have the same data in their databases. + + After that, the entities enter and remain in flooding state. In + flooding state, any new information that is learned is sent to all + neighbors, except the one (if any) that the information was learned + from. This causes all new information in the system to propagate to + all nodes, thus restoring the state that everyone knows the same + thing. Flooding is done reliably on each link, so no pattern of low + rate packet loss will cause a disruption. (Obviously, a sufficiently + high rate of packet loss will cause the entire neighbor relationship + to come down, but if the link does not work, then that is what one + wants.) + + Because the database synchronization procedure is run whenever a link + comes up, the system robustly ensures that all participating nodes + have all available information. It properly recovers from + partitions, and copes with other failures. + + The SCSP specification is not useful as a stand alone protocol. It + must be coupled with the use of an SCSP Protocol Specific + specification which defines how a given protocol would make use of + the synchronization primitives supplied by SCSP. Such specification + will be done in separate documents; e.g., [8] [9]. + +2. Overview + + SCSP places no topological requirements upon the SG. Obviously, + however, the resultant graph must span the set of servers to be + synchronized. SCSP borrows its cache distribution mechanism from the + link state protocols [3,4]. However, unlike those technologies, + there is no mandatory Shortest Path First (SPF) calculation, and SCSP + imposes no additional memory requirements above and beyond that which + is required to save the cached information which would exist + regardless of the synchronization technology. + + + + + + + + + + + +Luciani, et. al. Standards Track [Page 3] + +RFC 2334 SCSP April 1998 + + + In order to give a frame of reference for the following discussion, + the terms Local Server (LS), Directly Connected Server (DCS), and + Remote Server (RS) are introduced. The LS is the server under + scrutiny; i.e., all statements are made from the perspective of the + LS when discussing the SCSP protocol. The DCS is a server which is + directly connected to the LS; e.g., there exists a VC between the LS + and DCS. Thus, every server is a DCS from the point of view of every + other server which connects to it directly, and every server is an LS + which has zero or more DCSs directly connected to it. From the + perspective of an LS, an RS is a server, separate from the LS, which + is not directly connected to the LS (i.e., an RS is always two or + more hops away from an LS whereas a DCS is always one hop away from + an LS). + + SCSP contains three sub protocols: the "Hello" protocol, the "Cache + Alignment" protocol, and the "Cache State Update" protocol. The + "Hello" protocol is used to ascertain whether a DCS is operational + and whether the connection between the LS and DCS is bidirectional, + unidirectional, or non-functional. The "Cache Alignment" (CA) + protocol allows an LS to synchronize its entire cache with that of + the cache of its DCSs. The "Cache State Update" (CSU) protocol is + used to update the state of cache entries in servers for a given SG. + Sections 2.1, 2.2, and 2.3 contain a more in-depth explanation of the + Hello, CA, and CSU protocols and the messages they use. + + SCSP based synchronization is performed on a per protocol instance + basis. That is, a separate instance of SCSP is run for each instance + of the given protocol running in a given box. The protocol is + identified in SCSP via a Protocol ID and the instance of the protocol + is identified by a Server Group ID (SGID). Thus the PID/SGID pair + uniquely identify an instance of SCSP. In general, this is not an + issue since it is seldom the case that many instances of a given + protocol (which is distributed and needs cache synchronization) are + running within the same physical box. However, when this is the + case, there is a mechanism called the Family ID (described briefly in + the Hello Protocol) which enables a substantial reduction in + maintenance traffic at little real cost in terms of control. The use + of the Family ID mechanism, when appropriate for a given protocol + which is using SCSP, will be fully defined in the given SCSP protocol + specific specification. + + + + + + + + + + + +Luciani, et. al. Standards Track [Page 4] + +RFC 2334 SCSP April 1998 + + + +---------------+ + | | + +------->| DOWN |<-------+ + | | | | + | +---------------+ | + | | ^ | + | | | | + | | | | + | | | | + | @ | | + | +---------------+ | + | | | | + | | WAITING | | + | +--| |--+ | + | | +---------------+ | | + | | ^ ^ | | + | | | | | | + | @ | | @ | + +---------------+ +---------------+ + | BIDIRECTIONAL |---->| UNIDIRECTIONAL| + | | | | + | CONNECTION |<----| CONNECTION | + +---------------+ +---------------+ + + + Figure 1: Hello Finite State Machine (HFSM) + + +2.1 Hello Protocol + + "Hello" messages are used to ascertain whether a DCS is operational + and whether the connections between the LS and DCS are bidirectional, + unidirectional, or non-functional. In order to do this, every LS MUST + periodically send a Hello message to its DCSs. + + An LS must be configured with a list of NBMA addresses which + represent the addresses of peer servers in a SG to which the LS + wishes to have a direct connection for the purpose of running SCSP; + that is, these addresses are the addresses of would-be DCSs. The + mechanism for the configuration of an LS with these NBMA address is + beyond the scope of this document; although one possible mechanism + would be an autoconfiguration server. + + An LS has a Hello Finite State Machine (HFSM) associated with each of + its DCSs (see Figure 1) for a given SG, and the HFSM monitors the + state of the connectivity between the servers. + + + + + +Luciani, et. al. Standards Track [Page 5] + +RFC 2334 SCSP April 1998 + + + The HFSM starts in the "Down" State and transitions to the "Waiting" + State after NBMA level connectivity has been established. Once in + the Waiting State, the LS starts sending Hello messages to the DCS. + The Hello message includes: a Sender ID which is set to the LS's ID + (LSID), zero or more Receiver IDs which identify the DCSs from which + the LS has recently heard a Hello message (as described below), and a + HelloInterval and DeadFactor which will be described below. At this + point, the DCS may or may not already be sending its own Hello + messages to the LS. + + When the LS receives a Hello message from one of its DCSs, the LS + checks to see if its LSID is in one of the Receiver ID fields of that + message which it just received, and the LS saves the Sender ID from + that Hello message. If the LSID is in one of the Receiver ID fields + then the LS transitions the HFSM to the Bidirectional Connection + state otherwise it transitions the HFSM into the Unidirectional + Connection state. The Sender ID which was saved is the DCS's ID + (DCSID). At some point before the next time that the LS sends its + own Hello message to the DCS, the LS will check the saved DCSID + against a list of Receiver IDs which the LS uses when sending the + LS's own Hello messages. If the DCSID is not found in the list of + Receiver IDs then it is added to that list before the LS sends its + Hello message. + + Hello messages also contain a HelloInterval and a DeadFactor. The + Hello interval advertises the time (in seconds) between sending of + consecutive Hello messages by the server which is sending the + "current" Hello message. That is, if the time between reception of + Hello messages from a DCS exceeds the HelloInterval advertised by + that DCS then the next Hello message is to be considered late by the + LS. If the LS does not receive a Hello message, which contains the + LS's LSID in one of the Receiver ID fields, within the interval + HelloInterval*DeadFactor seconds (where DeadFactor was advertised by + the DCS in a previous Hello message) then the LS MUST consider the + DCS to be stalled. At which point one of two things will happen: 1) + if any Hello messages have been received during the last + HelloInterval*DeadFactor seconds then the LS should transition the + HFSM for that DCS to the Unidirectional Connection State; otherwise, + the LS should transition the HFSM for that DCS to the Waiting State + and remove the DCSID from the Receiver ID list. + + Note that the Hello Protocol is on a per PID/SGID basis. Thus, for + example, if there are two servers (one in SG A and the other in SG B) + associated with an NBMA address X and another two servers (also one + in SG A and the other in SG B) associated with NBMA address Y and + there is a suitable point-to-point VC between the NBMA addresses then + there are two HFSMs running on each side of the VC (one per + PID/SGID). + + + +Luciani, et. al. Standards Track [Page 6] + +RFC 2334 SCSP April 1998 + + + Hello messages contain a list of Receiver IDs instead of a single + Receiver ID in order to make use of point to multipoint connections. + While there is an HFSM per DCS, an LS MUST send only a single Hello + message to its DCSs attached as leaves of a point to multipoint + connection. The LS does this by including DCSIDs in the list of + Receiver IDs when the LS's sends its next Hello message. Only the + DCSIDs from non-stalled DCSs from which the LS has heard a Hello + message are included. + + Any abnormal event, such as receiving a malformed SCSP message, + causes the HFSM to transition to the Waiting State; however, a loss + of NBMA connectivity causes the HFSM to transition to the Down State. + Until the HFSM is in the Bidirectional Connection State, if any + properly formed SCSP messages other than Hello messages are received + then those messages MUST be ignored (this is for the case where, for + example, there is a point to multipoint connection involved). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Luciani, et. al. Standards Track [Page 7] + +RFC 2334 SCSP April 1998 + + + +------------+ + | | + +--->| DOWN | + | | | + | +------------+ + | | + ^ | + | @ + | +------------+ + | |Master/Slave| + |-<--| |<---+ + | |Negotiation | | + | +------------+ | + | | | + ^ | ^ + | @ | + | +------------+ | + | | Cache | | + |-<--| |-->-| + | | Summarize | | + | +------------+ | + | | | + ^ | ^ + | @ | + | +------------+ | + | | Update | | + |-<--| |-->-| + | | Cache | | + | +------------+ | + | | | + ^ | ^ + | @ | + | +------------+ | + | | | | + +-<--| Aligned |-->-+ + | | + +------------+ + + Figure 2: Cache Alignment Finite State Machine + + +2.2 Cache Alignment Protocol + + "Cache Alignment" (CA) messages are used by an LS to synchronize its + cache with that of the cache of each of its DCSs. That is, CA + messages allow a booting LS to synchronize with each of its DCSs. A + CA message contains a CA header followed by zero or more Cache State + Advertisement Summary records (CSAS records). + + + +Luciani, et. al. Standards Track [Page 8] + +RFC 2334 SCSP April 1998 + + + An LS has a Cache Alignment Finite State Machine (CAFSM) associated + (see Figure 2) with each of its DCSs on a per PID/SGID basis, and the + CAFSM monitors the state of the cache alignment between the servers. + The CAFSM starts in the Down State. The CAFSM is associated with an + HFSM, and when that HFSM reaches the Bidirectional State, the CAFSM + transitions to the Master/Slave Negotiation State. The Master/Slave + Negotiation State causes either the LS or DCS to take on the role of + master over the cache alignment process. In a sense, the master + server sets the tempo for the cache alignment. + + When the LS's CAFSM reaches the Master/Slave Negotiation State, the + LS will send a CA message to the DCS associated with the CAFSM. The + format of CA messages are described in Section B.2.1. The first CA + message which the LS sends includes no CSAS records and a CA header + which contains the LSID in the Sender ID field, the DCSID in the + Receiver ID field, a CA sequence number, and three bits. These three + bits are the M (Master/Slave) bit, the I (Initialization of master) + bit, and the O (More) bit. In the first CA message sent by the LS to + a particular DCS, the M, O, and I bits are set to one. If the LS + does not receive a CA message from the DCS in CAReXmtInterval seconds + then it resends the CA message it just sent. The LS continues to do + this until the CAFSM transitions to the Cache Summarize State or + until the HFSM transitions out of the Bidirectional State. Any time + the HFSM transitions out of the Bidirectional State, the CAFSM + transitions to the Down State. + +2.2.1 Master Slave Negotiation State + + When the LS receives a CA message from the DCS while in the + Master/Slave Negotiation State, the role the LS plays in the exchange + depends on packet processing as follows: + + 1) If the CA from the DCS has the M, I, and O bits set to one and + there are no CSAS records in the CA message and the Sender ID + as specified in the DCS's CA message is larger than the LSID then + + a) The timer counting down the CAReXmtInterval is stopped. + b) The CAFSM corresponding to that DCS transitions to the + Cache Summarize State and the LS takes on the role of slave. + c) The LS adopts the CA sequence number it received in the CA + message as its own CA sequence number. + d) The LS sends a CA message to the DCS which is formated as + follows: the M and I bits are set to zero, the Sender ID field + is set to the LSID, the Receiver ID field is set to the DCSID, + and the CA sequence number is set to the CA sequence number that + appeared in the DCS's CA message. If there are CSAS records to + be sent (i.e., if the LS's cache is not empty), and if all of + them will not fit into this CA message then the O bit is set to + + + +Luciani, et. al. Standards Track [Page 9] + +RFC 2334 SCSP April 1998 + + + one and the initial set of CSAS records are included in the CA + message; otherwise the O bit is set to zero and if any CSAS + Records need to be sent then those records are included in the + CA message. + + 2) If the CA message from the DCS has the M and I bits off and the + Sender ID as specified in the DCS's CA message is smaller than + the LSID then + + a) The timer counting down the CAReXmtInterval is stopped. + b) The CAFSM corresponding to that DCS transitions to the + Cache Summarize State and the LS takes on the role of master. + c) The LS must process the received CA message. + An explanation of CA message processing is given below. + d) The LS sends a CA message to the DCS which is formated as + follows: the M bit is set to one, I bit is set to zero, the + Sender ID field is set to the LSID, the Receiver ID field is set + to the DCSID, and the LS's current CA sequence number is + incremented by one and placed in the CA message. If there are + any CSAS records to be sent from the LS to the DCS (i.e., if the + LS's cache is not empty) then the O bit is set to one and the + initial set of CSAS records are included in the CA message that + the LS is sending to the DCS. + + 3) Otherwise, the packet must be ignored. + +2.2.2 The Cache Summarize State + + At any given time, the master or slave have at most one outstanding + CA message. Once the LS's CAFSM has transitioned to the Cache + Summarize State the sequence of exchanges of CA messages occurs as + follows: + + 1) If the LS receives a CA message with the M bit set incorrectly + (e.g., the M bit is set in the CA of the DCS and the LS is master) + or if the I bit is set then the CAFSM transitions back to the + Master/Slave Negotiation State. + + 2) If the LS is master and the LS receives a CA message with a + CA sequence number which is one less than the LS's current + CA sequence number then the message is a duplicate and the message + MUST be discarded. + + 3) If the LS is master and the LS receives a CA message with a + CA sequence number which is equal to the LS's current CA sequence + number then the CA message MUST be processed. An explanation of + "CA message processing" is given below. As a result of having + received the CA message from the DCS the following will occur: + + + +Luciani, et. al. Standards Track [Page 10] + +RFC 2334 SCSP April 1998 + + + a) The timer counting down the CAReXmtInterval is stopped. + b) The LS must process any CSAS records in the received CA message. + c) Increment the LS's CA sequence number by one. + d) The cache exchange continues as follows: + + 1) If the LS has no more CSAS records to send and the received CA + message has the O bit off then the CAFSM transitions to the + Update Cache State. + 2) If the LS has no more CSAS records to send and the received CA + message has the O bit on then the LS sends back a CA message + (with new CA sequence number) which contains no CSAS records + and with the O bit off. Reset the timer counting down the + CAReXmtInterval. + 3) If the LS has more CSAS records to send then the LS sends the + next CA message with the LS's next set of CSAS records. If LS + is sending its last set of CSAS records then the O bit is set + off otherwise the O bit is set on. Reset the timer counting + down the CAReXmtInterval. + + 4) If the LS is slave and the LS receives a CA message with a + CA sequence number which is equal to the LS's current + CA sequence number then the CA message is a duplicate and the + LS MUST resend the CA message which it had just sent to the DCS. + + 5) If the LS is slave and the LS receives a CA message with a + CA sequence number which is one more than the LS's current + CA sequence number then the message is valid and MUST be + processed. An explanation of "CA message processing" is given + below. As a result of having received the CA message from the + DCS the following will occur: + + a) The LS must process any CSAS records in the received CA message. + b) Set the LS's CA sequence number to the CA sequence number in the + CA message. + c) The cache exchange continues as follows: + + 1) If the LS had just sent a CA message with the O bit off and + the received CA message has the O bit off then the CAFSM + transitions to the Update Cache State and the LS sends a CA + message with no CSAS records and with the O bit off. + 2) If the LS still has CSAS records to send then the LS MUST send + a CA message with CSAS records in it. + + a) If the message being sent from the LS to the DCS does not + contain the last CSAS records that the LS needs to send + then the CA message is sent with the O bit on. + b) If the message being sent from the LS to the DCS does + contain the last CSAS records that the LS needs to + + + +Luciani, et. al. Standards Track [Page 11] + +RFC 2334 SCSP April 1998 + + + send and the CA message just received from the DCS had the + O bit off then the CA message is sent with the O bit off, + and the LS transitions the CAFSM to the Update Cache State. + c) If the message being sent from the LS to the DCS does + contain the last CSAS records that the LS needs to send + and the CA message just received from the DCS had the O bit + on then the CA message is sent with the O bit off and the + alignment process continues. + + 6) If the LS is slave and the LS receives a CA message with a + CA sequence number that is neither equal to nor one more than + the current LS's CA sequence number then an error has occurred + and the CAFSM transitions to the Master/Slave Negotiation State. + + Note that if the LS was slave during the CA process then the LS upon + transitioning the CAFSM to the Update Cache state MUST keep a copy of + the last CA message it sent and the LS SHOULD set a timer equal to + CAReXmtInterval. If either the timer expires or the LS receives a CSU + Solicit (CSUS) message (CSUS messages are described in Section 2.2.3) + from the DCS then the LS releases the copy of the CA message. The + reason for this is that if the DCS (which is master) loses the last + CA message sent by the LS then the DCS will resend its previous CA + message with the last CA Sequence number used. If that were to occur + the LS would need to resend its last sent CA message as well. + +2.2.2.1 "CA message processing": + + The LS makes a list of those cache entries which are more "up to + date" in the DCS than the LS's own cache. This list is called the + CSA Request List (CRL). See Section 2.4 for a description of what it + means for a CSA (Client State Advertisement) record or CSAS record to + be more "up to date" than an LS's cache entry. + +2.2.3 The Update Cache State + + If the CRL of the associated CAFSM of the LS is empty upon transition + into the Update Cache State then the CAFSM immediately transitions + into the Aligned State. + + If the CRL is not empty upon transition into the Update Cache State + then the LS solicits the DCS to send the CSA records corresponding to + the summaries (i.e., CSAS records) which the LS holds in its CRL. The + solicited CSA records will contain the entirety of the cached + information held in the DCS's cache for the given cache entry. The + LS solicits the relevant CSA records by forming CSU Solicit (CSUS) + messages from the CRL. See Section B.2.4 for the description of the + CSUS message format. The LS then sends the CSUS messages to the DCS. + The DCS responds to the CSUS message by sending to the LS one or more + + + +Luciani, et. al. Standards Track [Page 12] + +RFC 2334 SCSP April 1998 + + + CSU Request messages containing the entirety of newer cached + information identified in the CSUS message. Upon receiving the CSU + Request the LS will send one or more CSU Replies as described in + Section 2.3. Note that the LS may have at most one CSUS message + outstanding at any given time. + + Just before the first CSUS message is sent from an LS to the DCS + associated with the CAFSM, a timer is set to CSUSReXmtInterval + seconds. If all the CSA records corresponding to the CSAS records in + the CSUS message have not been received by the time that the timer + expires then a new CSUS message will be created which contains all + the CSAS records for which no appropriate CSA record has been + received plus additional CSAS records not covered in the previous + CSUS message. The new CSUS message is then sent to the DCS. If, at + some point before the timer expires, all CSA record updates have been + received for all the CSAS records included in the previously sent + CSUS message then the timer is stopped. Once the timer is stopped, + if there are additional CSAS records that were not covered in the + previous CSUS message but were in the CRL then the timer is reset and + a new CSUS message is created which contains only those CSAS records + from the CRL which have not yet been sent to the DCS. This process + continues until all the CSA records corresponding CSAS records that + were in the CRL have been received by the LS. When the LS has a + completely updated cache then the LS transitions CAFSM associated + with the DCS to the Aligned State. + + If an LS receives a CSUS message or a CA message with a Receiver ID + which is not the LS's LSID then the message must be discarded and + ignored. This is necessary since an LS may be a leaf of a point to + multipoint connection with other servers in the SG. + +2.2.4 The Aligned State + + While in the Aligned state, an LS will perform the Cache State Update + Protocol as described in Section 2.3. + + Note that an LS may receive a CSUS message while in the Aligned State + and, the LS MUST respond to the CSUS message with the appropriate CSU + Request message in a similar fashion to the method previously + described in Section 2.2.3. + +2.3 Cache State Update Protocol + + "Cache State Update" (CSU) messages are used to dynamically update + the state of cache entries in servers on a given PID/SGID basis. CSU + messages contain zero or more "Cache State Advertisement" (CSA) + records each of which contains its own snapshot of the state of a + particular cache entry. An LS may send/receive a CSU to/from a DCS + + + +Luciani, et. al. Standards Track [Page 13] + +RFC 2334 SCSP April 1998 + + + only when the corresponding CAFSM is in either the Aligned State or + the Update Cache State. + + There are two types of CSU messages: CSU Requests and CSU Replies. + See Sections B.2.2 and B.2.3 respectively for message formats. A CSU + Request message is sent from an LS to one or more DCSs for one of two + reasons: either the LS has received a CSUS message and MUST respond + only to the DCS which originated the CSUS message, or the LS has + become aware of a change of state of a cache entry. An LS becomes + aware of a change of state of a cache entry either through receiving + a CSU Request from one of its DCSs or as a result of a change of + state being observed in a cached entry originated by the LS. In the + former case, the LS will send a CSU Request to each of its DCSs + except the DCS from which the LS became aware of the change in state. + In the latter case, the LS will send a CSU Request to each of its + DCSs. The change in state of a particular cache entry is noted in a + CSA record which is then appended to the end of the CSU Request + message mandatory part. In this way, state changes are propagated + throughout the SG. + + Examples of such changes in state are as follows: + + 1) a server receives a request from a client to add an entry to + its cache, + 2) a server receives a request from a client to remove an entry + from its cache, + 3) a cache entry has timed out in the server's cache, has been + refreshed in the server's cache, or has been administratively + modified. + + When an LS receives a CSU Request from one of its DCSs, the LS + acknowledges one or more CSA Records which were contained in the CSU + Request by sending a CSU Reply. The CSU Reply contains one or more + CSAS records which correspond to those CSA records which are being + acknowledged. Thus, for example, if a CSA record is dropped (or + delayed in processing) by the LS because there are insufficient + resources to process it then a corresponding CSAS record is not + included in the CSU Reply to the DCS. + + Note that an LS may send multiple CSU Request messages before + receiving a CSU Reply acknowledging any of the CSA Records contained + in the CSU Requests. Note also that a CSU Reply may contain + acknowledgments for CSA Records from multiple CSU Requests. Thus, + the terms "request" and "reply" may be a bit confusing. + + Note that a CSA Record contains a CSAS Record followed by + client/server protocol specific information contained in a cache + entry (see Section B.2.0.2 for CSAS record format information and + + + +Luciani, et. al. Standards Track [Page 14] + +RFC 2334 SCSP April 1998 + + + Section B.2.2.1 for CSA record format information). When a CSA + record is considered by the LS to represent cached information which + is more "up to date" (see Section 2.4) than the cached information + contained within the cache of the LS then two things happen: 1) the + LS's cache is updated with the more up to date information, and 2) + the LS sends a CSU Request containing the CSA Record to each of its + DCSs except the one from which the CSA Record arrived. In this way, + state changes are propagated within the PID/SGID. Of course, at some + point, the LS will also acknowledge the reception of the CSA Record + by sending the appropriate DCS a CSU Reply message containing the + corresponding CSAS Record. + + When an LS sends a new CSU Request, the LS keeps track of the + outstanding CSA records in that CSU Request and to which DCSs the LS + sent the CSU Request. For each DCS to which the CSU Request was + sent, a timer set to CSUReXmtInterval seconds is started just prior + to sending the CSU Request. This timer is associated with the CSA + Records contained in that CSU Request such that if that timer expires + prior to having all CSA Records acknowledged from that DCS then (and + only then) a CSU Request is re-sent by the LS to that DCS. However, + the re-sent CSU Request only contains those CSA Records which have + not yet been acknowledged. If all CSA Records associated with a + timer becomes acknowledged then the timer is stopped. Note that the + re-sent CSA Records follow the same time-out and retransmit rules as + if they were new. Retransmission will occur a configured number of + times for a given CSA Record and if acknowledgment fails to occur + then an "abnormal event" has occurred at which point the then the + HFSM associated with the DCS is transitioned to the Waiting State. + + A CSA Record instance is said to be on a "DCS retransmit queue" when + it is associated with the previously mentioned timer. Only the most + up-to-date CSA Record is permitted to be queued to a given DCS + retransmit queue. Thus, if a less up-to-date CSA Record is queued to + the DCS retransmit queue when a newer CSA Record instance is about to + be queued to that DCS retransmit queue then the older CSA Record + instance is dequeued and disassociated with its timer immediately + prior to enqueuing the newer instance of the CSA Record. + + When an LS receives a CSU Reply from one of its DCSs then the LS + checks each CSAS record in the CSU Reply against the CSAS Record + portion of the CSA Records which are queued to the DCS retransmit + queue. + + 1) If there exists an exact match between the CSAS record portion + of the CSA record and a CSAS Record in the CSU Reply then + that CSA Record is considered to be acknowledged and is thus + dequeued from the DCS retransmit queue and is + disassociated with its timer. + + + +Luciani, et. al. Standards Track [Page 15] + +RFC 2334 SCSP April 1998 + + + 2) If there exists a match between the CSAS record portion + of the CSA record and a CSAS Record in the CSU Reply except + for the CSA Sequence number then + + a) If the CSA Record queued to the DCS retransmit queue has a + CSA Sequence Number which is greater than the + CSA Sequence Number in the CSAS Record of the the CSU Reply + then the CSAS Record in the CSU Reply is ignored. + b) If the CSA Record queued to the DCS retransmit queue has a + CSA Sequence Number which is less than the + CSA Sequence Number in the CSAS Record of the the CSU Reply + then CSA Record which is queued to the DCS retransmit queue is + dequeued and the CSA Record is disassociated with its timer. + Further, a CSUS Message is sent to that DCS which sent the + more up-to-date CSAS Record. All normal CSUS processing + occurs as if the CSUS were sent as part of the CA protocol. + + When an LS receives a CSU Request message which contains a CSA Record + which contains a CSA Sequence Number which is smaller than the CSA + Sequence number of the cached CSA then the LS MUST acknowledge the + CSA record in the CSU Request but it MUST do so by sending a CSU + Reply message containing the CSAS Record portion of the CSA Record + stored in the cache and not the CSAS Record portion of the CSA Record + contained in the CSU Request. + + An LS responds to CSUS messages from its DCSs by sending CSU Request + messages containing the appropriate CSA records to the DCS. If an LS + receives a CSUS message containing a CSAS record for an entry which + is no longer in its database (e.g., the entry timed out and was + discarded after the Cache Alignment exchange completed but before the + entry was requested through a CSUS message), then the LS will respond + by copying the CSAS Record from the CSUS message into a CSU Request + message and the LS will set the N bit signifying that this record is + a NULL record since the cache entry no longer exists in the LS's + cache. Note that in this case, the "CSA Record" included in the CSU + Request to signify the NULL cache entry is literally only a CSAS + Record since no client/server protocol specific information exists + for the cache entry. + + If an LS receives a CSA Record in a CSU Request from a DCS for which + the LS has an identical CSA record posted to the corresponding DCS's + DCS retransmit queue then the CSA Record on the DCS retransmit queue + is considered to be implicitly acknowledged. Thus, the CSA Record is + dequeued from the DCS retransmit queue and is disassociated with its + timer. The CSA Record sent by the DCS MUST still be acknowledged by + the LS in a CSU Reply, however. This is useful in the case of point + + + + + +Luciani, et. al. Standards Track [Page 16] + +RFC 2334 SCSP April 1998 + + + to multipoint connections where the rule that "when an LS receives a + CSA record from a DCS, that LS floods the CSA Record to every DCS + except the DCS from which it was received" might be broken. + + If an LS receives a CSU with a Receiver ID which is not equal to the + LSID and is not set to all 0xFFs then the CSU must be discarded and + ignored. This is necessary since the LS may be a leaf of a point to + multipoint connection with other servers in the LS's SG. + + An LS MAY send a CSU Request to the all 0xFFs Receiver ID when the LS + is a root of a point to multipoint connection with a set of its DCSs. + If an LS receives a CSU Request with the all 0xFFs Receiver ID then + it MUST use the Sender ID in the CSU Request as the Receiver ID of + the CSU Reply (i.e., it MUST unicast its response to the sender of + the request) when responding. If the LS wishes to send a CSU Request + to the all 0xFFs Receiver ID then it MUST create a time-out and + retransmit timer for each of the DCSs which are leaves of the point + to multipoint connection prior to sending the CSU Request. If in + this case, the time-out and retransmit timer expires for a given DCS + prior to acknowledgment of a given CSA Record then the LS MUST use + the specific DCSID as the Receiver ID rather than the all 0xFFs + Receiver ID. Similarly, if it is necessary to re-send a CSA Record + then the LS MUST specify the specific DCSID as the Receiver ID rather + than the all 0xFFs Receiver ID. + + Note that if a set of servers are in a full mesh of point to + multipoint connections, and one server of that mesh sends a CSU + Request into that full mesh, and the sending server sends the CSA + Records in the CSU Request to the all 0xFFs Receiver ID then it would + not be necessary for every other server in the mesh to source their + own CSU Request containing those CSA Records into the mesh in order + to properly flood the CSA Records. This is because every server in + the mesh would have heard the CSU Request and would have processed + the included CSA Records as appropriate. Thus, a server in a full + mesh could consider the mesh to be a single logical port and so the + rule that "when an LS receives a CSA record from a DCS, that LS + floods the CSA Record to every DCS except the DCS from which it was + received" is not broken. A receiving server in the full mesh would + still need to acknowledge the CSA records with CSU Reply messages + which contain the LSID of the replying server as the Sender ID and + the ID of the server which sent the CSU Request as the Receiver ID + field. In the time out and retransmit case, the Receiver ID of the + CSU Request would be set to the specific DCSID which did not + acknowledge the CSA Record (as opposed to the all 0xFFs Receiver ID). + Since a full mesh emulates a broadcast media for the servers attached + to the full mesh, use of SCSP on a broadcast medium might use this + technique as well. Further discussion of this use of a full mesh or + use of a broadcast media is left to the client/server protocol + + + +Luciani, et. al. Standards Track [Page 17] + +RFC 2334 SCSP April 1998 + + + specific documents. + +2.4 The meaning of "More Up To Date"/"Newness" + + During the cache alignment process and during normal CSU processing, + a CSAS Record is compared against the contents of an LS's cache entry + to decide whether the information contained in the record is more "up + to date" than the corresponding cache entry of the LS. + + There are three pieces of information which are used in determining + whether a record contains information which is more "up to date" than + the information contained in the cache entry of an LS which is + processing the record: 1) the Cache Key, 2) the Originator which is + described by an Originator ID (OID), and 3) the CSA Sequence number. + See Section B.2.0.2 for more information on these fields. + + Given these three pieces of information, a CSAS record (be it part of + a CSA Record or be it stand-alone) is considered to be more "up to + date" than the information contained in the cache of an LS if all of + the following are true: + + 1) The Cache Key in the CSAS Record matches the stored Cache Key + in the LS's cache entry, + 2) The OID in the CSAS Record matches the stored OID + in the LS's cache entry, + 3) The CSA Sequence Number in the CSAS Record is greater than + CSA Sequence Number in the LS's cache entry. + +Discussion and Conclusions + + While the above text is couched in terms of synchronizing the + knowledge of the state of a client within the cache of servers + contained in a SG, this solution generalizes easily to any number of + database synchronization problems (e.g., LECS synchronization). + + SCSP defines a generic flooding protocol. There are a number of + related issues relative to cache maintenance and topology maintenance + which are more appropriately defined in the client/server protocol + specific documents; for example, it might be desirable to define a + generic cache entry time-out mechanism for a given protocol or to + advertise adjacency information between servers so that one could + obtain a topo-map of the servers in a SG. When mechanisms like these + are desirable, they will be defined in the client/server protocol + specific documents. + + + + + + + +Luciani, et. al. Standards Track [Page 18] + +RFC 2334 SCSP April 1998 + + +Appendix A: Terminology and Definitions + + CA Message - Cache Alignment Message + These messages allow an LS to synchronize its entire cache with + that of the cache of one of its DCSs. + + CAFSM - Cache Alignment Finite State Machine + The CAFSM monitors the state of the cache alignment between an LS + and a particular DCS. There exists one CAFSM per DCS as seen from + an LS. + + CSA Record - Cache State Advertisement Record + A CSA is a record within a CSU message which identifies an update + to the status of a "particular" cache entry. + + CSAS Record - Cache State Advertisement Summary Record + A CSAS contains a summary of the information in a CSA. A server + will send CSAS records describing its cache entries to another + server during the cache alignment process. CSAS records are also + included in a CSUS messages when an LS wants to request the entire + CSA from the DCS. The LS is requesting the CSA from the DCS + because the LS believes that the DCS has a more recent view of the + state of the cache entry in question. + + CSU Message - Cache State Update message + This is a message sent from an LS to its DCSs when the LS becomes + aware of a change in state of a cache entry. + + CSUS Message - Cache State Update Solicit Message + This message is sent by an LS to its DCS after the LS and DCS have + exchanged CA messages. The CSUS message contains one or more CSAS + records which represent solicitations for entire CSA records (as + opposed to just the summary information held in the CSAS). + + DCS - Directly Connected Server + The DCS is a server which is directly connected to the LS; e.g., + there exists a VC between the LS and DCS. This term, along with the + terms LS and RS, is used to give a frame of reference when talking + about servers and their synchronization. Unless explicitly stated + to the contrary, there is no implied difference in functionality + between a DCS, LS, and RS. + + HFSM - Hello Finite State Machine + An LS has a HFSM associated with each of its DCSs. The HFSM + monitors the state of the connectivity between the LS and a + particular DCS. + + + + + +Luciani, et. al. Standards Track [Page 19] + +RFC 2334 SCSP April 1998 + + + LS - Local Server + The LS is the server under scrutiny; i.e., all statements are made + from the perspective of the LS. This term, along with the terms + DCS and RS, is used to give a frame of reference when talking about + servers and their synchronization. Unless explicitly stated to the + contrary, there is no implied difference in functionality between a + DCS, LS, and RS. + + LSID - Local Server ID + The LSID is a unique token that identifies an LS. This value might + be taken from the protocol address of the LS. + + PID - Protocol ID + This field contains an identifier which identifies the + client/server protocol which is making use of SCSP for the given + message. The assignment of Protocol IDs for this field is given + over to IANA as described in Section C. + + RS - Remote Server (RS) + From the perspective of an LS, an RS is a server, separate from the + LS, which is not directly connected to the LS (i.e., an RS is + always two or more hops away from an LS whereas a DCS is always one + hop away from an LS). Unless otherwise stated an RS refers to a + server in the SG. This term, along with the terms LS and DCS, is + used to give a frame of reference when talking about servers and + their synchronization. Unless explicitly stated to the contrary, + there is no implied difference in functionality between a DCS, LS, + and RS. + + SG - Server Group + The SCSP synchronizes caches (or a portion of the caches) of a set + of server entities which are bound to a SG through some means + (e.g., all servers belonging to a Logical IP Subnet (LIS)[1]). + Thus an SG is just a grouping of servers around some commonality. + + SGID - Server Group ID + This ID is a 16 bit identification field that uniquely identifies + the instance client/server protocol for which the servers of the SG + are being synchronized. This implies that multiple instances of + the same protocol may be in operation at the same time and have + their servers synchronized independently of each other. + + + + + + + + + + +Luciani, et. al. Standards Track [Page 20] + +RFC 2334 SCSP April 1998 + + +Appendix B: SCSP Message Formats + + This section of the appendix includes the message formats for SCSP. + SCSP protocols are LLC/SNAP encapsulated with an LLC=0xAA-AA-03 and + OUI=0x00-00-5e and PID=0x00-05. + + SCSP has 3 parts to every packet: the fixed part, the mandatory part, + and the extensions part. The fixed part of the message exists in + every packet and is shown below. The mandatory part is specific to + the particular message type (i.e., CA, CSU Request/Reply, Hello, + CSUS) and, it includes (among other packet elements) a Mandatory + Common Part and zero or more records each of which contains + information pertinent to the state of a particular cache entry + (except in the case of a Hello message) whose information is being + synchronized within a SG. The extensions part contains the set of + extensions for the SCSP message. + + In the following message formats, the fields marked as "unused" MUST + be set to zero upon transmission of such a message and ignored upon + receipt of such a message. + +B.1 Fixed Part + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Version | Type Code | Packet Size | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Checksum | Start Of Extensions | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Version + This is the version of the SCSP protocol being used. The current + version is 1. + + Type Code + This is the code for the message type (e.g., Hello (5), CSU + Request(2), CSU Reply(3), CSUS (4), CA (1)). + + Packet Size + The total length of the SCSP packet, in octets (excluding link + layer and/or other protocol encapsulation). + + Checksum + The standard IP checksum over the entire SCSP packet starting at + the fixed header. If the packet is an odd number of bytes in + length then this calculation is performed as if a byte set to 0x00 + is appended to the end of the packet. + + + +Luciani, et. al. Standards Track [Page 21] + +RFC 2334 SCSP April 1998 + + + Start Of Extensions + This field is coded as zero when no extensions are present in the + message. If extensions are present then this field will be coded + with the offset from the top of the fixed header to the beginning + of the first extension. + +B.2.0 Mandatory Part + + The mandatory part of the SCSP packet contains the operation specific + information for a given message type (e.g., SCSP Cache State Update + Request/Reply, etc.), and it includes (among other packet elements) a + Mandatory Common Part (described in Section B.2.0.1) and zero or more + records each of which contains information pertinent to the state of + a particular cache entry (except in the case of a Hello message) + whose information is being synchronized within a SG. These records + may, depending on the message type, be either Cache State + Advertisement Summary (CSAS) Records (described in Section B.2.0.2) + or Cache State Advertisement (CSA) Records (described in Section + B.2.2.1). CSA Records contain a summary of a cache entry's + information (i.e., a CSAS Record) plus some additional client/server + protocol specific information. The mandatory common part format and + CSAS Record format is shown immediately below, prior to showing their + use in SCSP messages, in order to prevent replication within the + message descriptions. + +B.2.0.1 Mandatory Common Part + + Sections B.2.1 through B.2.5 have a substantial overlap in format. + This overlapping format is called the mandatory common part and its + format is shown below: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Protocol ID | Server Group ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | unused | Flags | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Sender ID Len | Recvr ID Len | Number of Records | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Sender ID (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Receiver ID (variable length) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + +Luciani, et. al. Standards Track [Page 22] + +RFC 2334 SCSP April 1998 + + + Protocol ID + This field contains an identifier which identifies the + client/server protocol which is making use of SCSP for the given + message. The assignment of Protocol IDs for this field is given + over to IANA as described in Section C. Protocols with current + documents have the following defined values: + + 1 - ATMARP + 2 - NHRP + 3 - MARS + 4 - DHCP + 5 - LNNI + + Server Group ID + This ID is uniquely identifies the instance of a given + client/server protocol for which servers are being synchronized. + + Flags + The Flags field is message specific, and its use will be described + in the specific message format sections below. + + Sender ID Len + This field holds the length in octets of the Sender ID. + + Recvr ID Len + This field holds the length in octets of the Receiver ID. + + Number of Records + This field contains the number of additional records associated + with the given message. The exact format of these records is + specific to the message and will be described for each message type + in the sections below. + + Sender ID + This is an identifier assigned to the server which is sending the + given message. One possible assignment might be the protocol + address of the sending server. + + Receiver ID + This is an identifier assigned to the server which is to receive + the given message. One possible assignment might be the protocol + address of the server which is to receive the given message. + + + + + + + + + +Luciani, et. al. Standards Track [Page 23] + +RFC 2334 SCSP April 1998 + + +B.2.0.2 Cache State Advertisement Summary Record (CSAS record) + + CSAS records contain a summary of information contained in a cache + entry of a given client/server database which is being synchronized + through the use of SCSP. The summary includes enough information for + SCSP to look into the client/server database for the appropriate + database cache entry and then compare the "newness" of the summary + against the "newness" of the cached entry. + + Note that CSAS records do not contain a Server Group ID (SGID) nor do + they contain a Protocol ID. These IDs are necessary to identify + which protocol and which instance of that protocol for which the + summary is applicable. These IDs are present in the mandatory common + part of each message. + + Note also that the values of the Hop Count and Record Length fields + of a CSAS Record are dependent on whether the CSAS record exists as a + "stand-alone" record or whether the CSAS record is "embedded" in CSA + Record. This is further described below. + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Hop Count | Record Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Cache Key Len | Orig ID Len |N| unused | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | CSA Sequence Number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Cache Key ... | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Originator ID ... | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Hop Count + This field represents the number of hops that the record may take + before being dropped. Thus, at each server that the record + traverses, the Hop Count is decremented. This field is set to 1 + when the CSAS record is a "stand-alone" record (i.e., it is not + embedded within a CSA record) since summaries do not go beyond one + hop during the cache alignment process. If a CSAS record is + "embedded" within a CSA record then the Hop Count is set to an + administratively defined value which is almost certainly greater + than or equal to the the cardinality of the SG minus one. Note + that an exception to the previous rule occurs when the CSA Record + is carried within a CSU Request which was sent in response to a + solicitation (i.e., in response to a CSAS Record which was sent in + a CSUS message); in which case, the Hop Count SHOULD be set to 1. + + + +Luciani, et. al. Standards Track [Page 24] + +RFC 2334 SCSP April 1998 + + + Record Length + If the CSAS record is a "stand-alone" record then this value is + 12+"Cache Key Leng"+"Orig ID Len" in bytes; otherwise, this value + is set to 12+"Cache Key Leng"+"Orig ID Len"+ sizeof("Client/Server + Protocol Specific Part for cache entry"). The size of the + Client/Server Protocol Specific Part may be obtained from the + client/server protocol specific document for the given Protocol ID. + + Cache Key Len + Length of the Cache Key field in bytes. + + Orig ID Len. + Length of the Originator ID field in bytes. + + N + The "N" bit signifies that this CSAS Record is actually a Null + record. This bit is only used in a CSAS Record contained in a CSU + Request/Reply which is sent in response to a CSUS message. It is + possible that an LS may receive a solicitation for a CSA record + when the cache entry represented by the solicited CSA Record no + longer exists in the LS's cache (see Section 2.3 for details). In + this case, the LS copies the CSAS Record directly from the CSUS + message into the CSU Request, and the LS sets the N bit signifying + that the cache entry does not exist any longer. The DCS which + solicited the CSA record which no longer exists will still respond + with a CSU Reply. This bit is usually set to zero. + + CSA Sequence Number + This field contains a sequence number that identifies the "newness" + of a CSA record instance being summarized. A "larger" sequence + number means a more recent advertisement. Thus, if the state of + part (or all) of a cache entry needs to be updated then the CSA + record advertising the new state MUST contain a CSA Sequence Number + which is larger than the one corresponding to the previous + advertisement. This number is assigned by the originator of the + CSA record. The CSA Sequence Number may be assigned by the + originating server or by the client which caused its server to + advertise its existence. + + The CSA Sequence Number is a signed 32 bit number. Within the CSA + Sequence Number space, the number -2^31 (0x80000000) is reserved. + Thus, the usable portion of the CSA Sequence Number space for a + given Cache Key is between the numbers -2^31+1 (0x80000001) and + 2^31-1 (0x7fffffff). An LS uses -2^31+1 the first time it + originates a CSA Record for a cache entry that it created. Each + time the cache entry is modified in some manner and when that + modification needs to be synchronized with the other servers in the + SG, the LS increments the CSA Sequence number associated with the + + + +Luciani, et. al. Standards Track [Page 25] + +RFC 2334 SCSP April 1998 + + + given Cache Key and uses that new CSA Sequence Number when + advertising the update. If it is ever the case that a given CSA + Sequence Number has reached 2^31-2 and the associated cache entry + has been modified such that an update must be sent to the rest of + the servers in the SG then the given cache entry MUST first be + purged from the SG by the LS by sending a CSA Record which causes + the cache entry to be removed from other servers and this CSA + Record carries a CSA Sequence Number of 2^31-1. The exact packet + format and mechanism by which a cache entry is purged is defined in + the appropriate protocol specific document. After the purging CSA + Record has been acknowledged by each DCS, an LS will then send a + new CSA Record carrying the updated information, and this new CSA + Record will carry a CSA Sequence Number of -2^31+1. + + After a restart occurs and after the restarting LS's CAFSM has + achieved the Aligned state, if an update to an existing cache entry + needs to be synchronized or a new cache entry needs to be + synchronized then the ensuing CSA Record MUST contain a CSA + Sequence Number which is unique within the SG for the given OID and + Cache Key. The RECOMMENDED method of obtaining this number (unless + explicitly stated to the contrary in the protocol specific + document) is to set the CSA Sequence Number in the CSA Record to + the CSA Sequence Number associated with the existing cache entry + (if an out of date cache entry already exists and zero if not) plus + a configured constant. Note that the protocol specific document + may require that all cache entries containing the OID of the + restarting LS be purged prior to updating the cache entries; in + this case, the updating CSA Record will still contain a CSA + Sequence Number set to the CSA Sequence Number associated with the + previously existing cache entry plus a configured constant. + + Cache Key + This is a database lookup key that uniquely identifies a piece of + data which the originator of a CSA Record wishes to synchronize + with its peers for a given "Protocol ID/Server Group ID" pair. + This key will generally be a small opaque byte string which SCSP + will associate with a given piece of data in a cache. Thus, for + example, an originator might assign a particular 4 byte string to + the binding of an IP address with that of an ATM address. + Generally speaking, the originating server of a CSA record is + responsible for generating a Cache Key for every element of data + that the the given server originates and which the server wishes to + synchronize with its peers in the SG. + + Originator ID + This field contains an ID administratively assigned to the server + which is the originator of CSA Records. + + + + +Luciani, et. al. Standards Track [Page 26] + +RFC 2334 SCSP April 1998 + + +B.2.1 Cache Alignment (CA) + + The Cache Alignment (CA) message allows an LS to synchronize its + entire cache with that of the cache of its DCSs within a server + group. The CA message type code is 1. The CA message mandatory part + format is as follows: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | CA Sequence Number | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mandatory Common Part | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | CSAS Record | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + ....... + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | CSAS Record | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + CA Sequence Number + A value which provides a unique identifier to aid in the sequencing + of the cache alignment process. A "larger" sequence number means a + more recent CA message. The slave server always copies the + sequence number from the master server's previous CA message into + its current CA message which it is sending and the the slave + acknowledges the master's CA message. Since the initial CA process + is lock-step, if the slave does not receive the same sequence + number which it previously received then the information in the + slave's previous CA message is implicitly acknowledged. Note that + there is a separate CA Sequence Number space associated with each + CAFSM. + + Whenever it is necessary to (re)start cache alignment and the CAFSM + enters the Master/Slave Negotiation state, the CA Sequence Number + should be set to a value not previously seen by the DCS. One + possible scheme is to use the machine's time of day counter. + + Mandatory Common Part + The mandatory common part is described in detail in Section + B.2.0.1. There are two fields in the mandatory common part whose + codings are specific to a given message type. These fields are the + "Number of Records" field and the "Flags" field. + + + + + + + +Luciani, et. al. Standards Track [Page 27] + +RFC 2334 SCSP April 1998 + + + Number of Records + The Number of Records field of the mandatory common part for the + CA message gives the number of CSAS Records appended to the CA + message mandatory part. + + Flags + The Flags field of the mandatory common part for the CA message + has the following format: + + 0 1 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + |M|I|O| unused | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + M + This bit is part of the negotiation process for the cache + alignment. When this bit is set then the sender of the CA + message is indicating that it wishes to lead the alignment + process. This bit is the "Master/Slave bit". + + I + When set, this bit indicates that the sender of the CA message + believes that it is in a state where it is negotiating for the + status of master or slave. This bit is the "Initialization + bit". + + O + This bit indicates that the sender of the CA message has more + CSAS records to send. This implies that the cache alignment + process must continue. This bit is the "mOre bit" despite its + dubious name. + + All other fields of the mandatory common part are coded as + described in Section B.2.0.1. + + CSAS record + The CA message appends CSAS records to the end of its mandatory + part. These CSAS records are NOT embedded in CSA records. See + Section B.2.0.2 for details on CSAS records. + +B.2.2 Cache State Update Request (CSU Request) + + The Cache State Update Request (CSU Request) message is used to + update the state of cache entries in servers which are directly + connected to the server sending the message. A CSU Request message + is sent from one server (the LS) to directly connected server (the + DCS) when the LS observes changes in the state of one or more cache + + + +Luciani, et. al. Standards Track [Page 28] + +RFC 2334 SCSP April 1998 + + + entries. An LS observes such a change in state by either receiving a + CSU request which causes an update to the LS's database or by + observing a change of state of a cached entry originated by the LS. + The change in state of a cache entry is noted in a CSU message by + appending a "Cache State Advertisement" (CSA) record to the end of + the mandatory part of the CSU Request as shown below. + + The CSU Request message type code is 2. The CSU Request message + mandatory part format is as follows: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mandatory Common Part | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | CSA Record | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + ....... + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | CSA Record | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + Mandatory Common Part + The mandatory common part is described in detail in Section + B.2.0.1. There are two fields in the mandatory common part whose + codings are specific to a given message type. These fields are the + "Number of Records" field and the "Flags" field. + + Number of Records + The Number of Records field of the mandatory common part for the + CSU Request message gives the number of CSA Records appended to + the CSU Request message mandatory part. + + Flags + Currently, there are no flags defined for the Flags field of the + mandatory common part for the CSU Request message. + + All other fields of the mandatory common part are coded as + described in Section B.2.0.1. + + CSA Record + See Section B.2.2.1. + + + + + + + + +Luciani, et. al. Standards Track [Page 29] + +RFC 2334 SCSP April 1998 + + +B.2.2.1 Cache State Advertisement Record (CSA record) + + CSA records contain the information necessary to relate the current + state of a cache entry in an SG to the servers being synchronized. + CSA records contain a CSAS Record header and a client/server protocol + specific part. The CSAS Record includes enough information for SCSP + to look into the client/server database for the appropriate database + cache entry and then compare the "newness" of the summary against the + "newness" of the cached entry. If the information contained in the + CSA is more new than the cached entry of the receiving server then + the cached entry is updated accordingly with the contents of the CSA + Record. The client/server protocol specific part of the CSA Record + is documented separately for each such protocol. Examples of the + protocol specific parts for NHRP and ATMARP are shown in [8] and [9] + respectively. + + The amount of information carried by a specific CSA record may exceed + the size of a link layer PDU. Hence, such CSA records MUST be + fragmented across a number of CSU Request messages. The method by + which this is done, is client/server protocol specific and is + documented in the appropriate protocol specific document. + + The content of a CSA record is as follows: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | CSAS Record | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Client/Server Protocol Specific Part for cache entry ... | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + CSAS Record + See Section B.2.0.2 for rules and format for filling out a CSAS + Record when it is "embedded" in a CSA Record. + + Client/Server Protocol Specific Part for cache entry + This field contains the fields which are specific to the protocol + specific portion of SCSP processing. The particular set of fields + are defined in separate documents for each protocol user of SCSP. + The Protocol ID, which identifies which protocol is using SCSP in + the given packet, is located in the mandatory part of the message. + + + + + + + + + +Luciani, et. al. Standards Track [Page 30] + +RFC 2334 SCSP April 1998 + + +B.2.3 Cache State Update Reply (CSU Reply) + + The Cache State Update Reply (CSU Reply) message is sent from a DCS + to an LS to acknowledge one or more CSA records which were received + in a CSU Request. Reception of a CSA record in a CSU Request is + acknowledged by including a CSAS record in the CSU Reply which + corresponds to the CSA record being acknowledged. The CSU Reply + message is the same in format as the CSU Request message except for + the following: the type code is 3, only CSAS Records (rather than CSA + records) are returned, and only those CSAS Records for which CSA + Records are being acknowledged are returned. This implies that a + given LS sending a CSU Request may not receive an acknowledgment in a + single CSU Reply for all the CSA Records included in the CSU Request. + +B.2.4 Cache State Update Solicit Message (CSUS message) + + This message allows one server (LS) to solicit the entirety of CSA + record data stored in the cache of a directly connected server (DCS). + The DCS responds with CSU Request messages containing the appropriate + CSA records. The CSUS message type code is 4. The CSUS message + format is the same as that of the CSU Reply message. CSUS messages + solicit CSU Requests from only one server (the one identified by the + Receiver ID in the Mandatory Part of the message). + +B.2.5 Hello: + + The Hello message is used to check connectivity between the sending + server (the LS) and one of its directly connected neighbor servers + (the DCSs). The Hello message type code is 5. The Hello message + mandatory part format is as follows: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | HelloInterval | DeadFactor | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | unused | Family ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Mandatory Common Part | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Additional Receiver ID Record | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + ......... + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Additional Receiver ID Record | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + +Luciani, et. al. Standards Track [Page 31] + +RFC 2334 SCSP April 1998 + + + HelloInterval + The hello interval advertises the time between sending of + consecutive Hello Messages. If the LS does not receive a Hello + message from the DCS (which contains the LSID as a Receiver ID) + within the HelloInterval advertised by the DCS then the DCS's Hello + is considered to be late. Also, the LS MUST send its own Hello + message to a DCS within the HelloInterval which it advertised to + the DCS in the LS's previous Hello message to that DCS (otherwise + the DCS would consider the LS's Hello to be late). + + DeadFactor + This is a multiplier to the HelloInterval. If an LS does not + receive a Hello message which contains the LS's LSID as a Receiver + ID within the interval HelloInterval*DeadFactor from a given DCS, + which advertised the HelloInterval and DeadFactor in a previous + Hello message, then the LS MUST consider the DCS to be stalled; at + this point, one of two things MUST happen: 1) if the LS has + received any Hello messages from the DCS during this time then the + LS transitions the corresponding HFSM to the Unidirectional State; + otherwise, 2) the LS transitions the corresponding HFSM to the + Waiting State. + + Family ID + This is an opaque bit string which is used to refer to an aggregate + of Protocol ID/SGID pairs. Only a single HFSM is run for all + Protocol ID/SGID pairs assigned to a Family ID. Thus, there is a + one to many mapping between the single HFSM and the CAFSMs + corresponding to each of the Protocol ID/SGID pairs. This might + have the net effect of substantially reducing HFSM maintenance + traffic. See the protocol specific SCSP documents for further + details. + + Mandatory Common Part + The mandatory common part is described in detail in Section + B.2.0.1. There are two fields in the mandatory common part whose + codings are specific to a given message type. These fields are the + "Number of Records" field and the "Flags" field. + + Number of Records + The Number of Records field of the mandatory common part for the + Hello message contains the number of "Additional Receiver ID" + records which are included in the Hello. Additional Receiver ID + records contain a length field and a Receiver ID field. Note + that the count in "Number of Records" does NOT include the + Receiver ID which is included in the Mandatory Common Part. + + + + + + +Luciani, et. al. Standards Track [Page 32] + +RFC 2334 SCSP April 1998 + + + Flags + Currently, there are no flags defined for the Flags field of the + mandatory common part for the Hello message. + + All other fields of the mandatory common part are coded as + described in Section B.2.0.1. + + Additional Receiver ID Record + This record contains a length field followed by a Receiver ID. + Since it is conceivable that the length of a given Receiver ID may + vary even within an SG, each additional Receiver ID heard (beyond + the first one) will have both its length in bytes and value encoded + in an "Additional Receiver ID Record". Receiver IDs are IDs of a + DCS from which the LS has heard a recent Hello (i.e., within + DeadFactor*HelloInterval as advertised by the DCS in a previous + Hello message). + + The format for this record is as follows: + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Rec ID Len | Receiver ID | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + If the LS has not heard from any DCS then the LS sets the Hello + message fields as follows: Recvr ID Len is set to zero and no + storage is allocated for the Receiver ID in the Common Mandatory + Part, "Number of Records" is set to zero, and no storage is + allocated for "Additional Receiver ID Records". + + If the LS has heard from exactly one DCS then the LS sets the Hello + message fields as follows: the Receiver ID of the DCS which was + heard and the length of that Receiver ID are encoded in the Common + Mandatory Part, "Number of Records" is set to zero, and no storage is + allocated for "Additional Receiver ID Records". + + If the LS has heard from two or more DCSs then the LS sets the Hello + message fields as follows: the Receiver ID of the first DCS which + was heard and the length of that Receiver ID are encoded in the + Common Mandatory Part, "Number of Records" is set to the number of + "Additional" DCSs heard, and for each additional DCS an "Additional + Receiver ID Record" is formed and appended to the end of the Hello + message. + + + + + + + +Luciani, et. al. Standards Track [Page 33] + +RFC 2334 SCSP April 1998 + + +B.3 Extensions Part + + The Extensions Part, if present, carries one or more extensions in + {Type, Length, Value} triplets. + + Extensions have the following 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Type | Length | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Value... | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Type + The extension type code (see below). + + Length + The length in octets of the value (not including the Type and + Length fields; a null extension will have only an extension header + and a length of zero). + + When extensions exist, the extensions part is terminated by the End + of Extensions extension, having Type = 0 and Length = 0. + + Extensions may occur in any order but any particular extension type + may occur only once in an SCSP packet. An LS MUST NOT change the + order of extensions. + +B.3.0 The End Of Extensions + + Type = 0 + Length = 0 + + When extensions exist, the extensions part is terminated by the End + Of Extensions extension. + +B.3.1 SCSP Authentication Extension + + Type = 1 Length = variable + + The SCSP Authentication Extension is carried in SCSP packets to + convey the authentication information between an LS and a DCS in the + same SG. + + + + + + +Luciani, et. al. Standards Track [Page 34] + +RFC 2334 SCSP April 1998 + + + Authentication is done pairwise on an LS to DCS basis; i.e., the + authentication extension is generated at each LS. If a received + packet fails the authentication test then an "abnormal event" has + occurred. The packet is discarded and this event is logged. + + The presence or absence of authentication is a local matter. + +B.3.1.1 Header Format + + The authentication header has the following 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Security Parameter Index (SPI) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+ Authentication Data... -+-+-+-+-+-+-+-+-+-+ + | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Security Parameter Index (SPI) can be thought of as an index into a + table that maintains the keys and other information such as hash + algorithm. LS and DCS communicate either off-line using manual keying + or online using a key management protocol to populate this table. The + receiving SCSP entity always allocates the SPI and the parameters + associated with it. + + The authentication data field contains the MAC (Message + Authentication Code) calculated over the entire SCSP payload. The + length of this field is dependent on the hash algorithm used to + calculate the MAC. + +B.3.1.2 Supported Hash Algorithms + + The default hash algorithm to be supported is HMAC-MD5-128 [11]. HMAC + is safer than normal keyed hashes. Other hash algorithms MAY be + supported by def. + + IANA will assign the numbers to identify the algorithm being used as + described in Section C. + +B.3.1.3 SPI and Security Parameters Negotiation + + SPI's can be negotiated either manually or using an Internet Key + Management protocol. Manual keying MUST be supported. The following + parameters are associated with the tuple <SPI, DCS ID>- lifetime, + Algorithm, Key. Lifetime indicates the duration in seconds for which + + + +Luciani, et. al. Standards Track [Page 35] + +RFC 2334 SCSP April 1998 + + + the key is valid. In case of manual keying, this duration can be + infinite. Also, in order to better support manual keying, there may + be multiple tuples active at the same time (DCS ID being the same). + + Any Internet standard key management protocol MAY be used to + negotiate the SPI and parameters. + +B.3.1.4 Message Processing + + At the time of adding the authentication extension header, LS looks + up in a table to fetch the SPI and the security parameters based on + the DCS ID. If there are no entries in the table and if there is + support for key management, the LS initiates the key management + protocol to fetch the necessary parameters. The LS then calculates + the hash by zeroing authentication data field before calculating the + MAC on the sending end. The result replaces in the zeroed + authentication data field. If key management is not supported and + authentication is mandatory, the packet is dropped and this + information is logged. + + When receiving traffic, an LS fetches the parameters based on the SPI + and its ID. The authentication data field is extracted before zeroing + out to calculate the hash. It computes the hash on the entire payload + and if the hash does not match, then an "abnormal event" has + occurred. + +B.3.1.5 Security Considerations + + It is important that the keys chosen are strong as the security of + the entire system depends on the keys being chosen properly and the + correct implementation of the algorithms. + + SCSP has a peer to peer trust model. It is recommended to use an + Internet standard key management protocol to negotiate the keys + between the neighbors. Transmitting the keys in clear text, if other + methods of negotiation is used, compromises the security completely. + + Data integrity covers the entire SCSP payload. This guarantees that + the message was not modified and the source is authenticated as well. + If authentication extension is not used or if the security is + compromised, then SCSP servers are liable to both spoofing attacks, + active attacks and passive attacks. + + There is no mechanism to encrypt the messages. It is assumed that a + standard layer 3 confidentiality mechanism will be used to encrypt + and decrypt messages. As integrity is calculated on an SCSP message + + + + + +Luciani, et. al. Standards Track [Page 36] + +RFC 2334 SCSP April 1998 + + + and not on each record, there is an implied trust between all the + servers in a domain. It is recommend to use the security extension + between all the servers in a domain and not just a subset servers. + + Any SCSP server is susceptible to Denial of Service (DOS) attacks. A + rouge host can inundate its neighboring SCSP server with SCSP + packets. However, if the authentication option is used, SCSP + databases will not become corrupted, as the bogus packets will be + discarded when the authentication check fails. + + Due to the pairwise authentication model of SCSP, the information + received from any properly authenticated server is trusted and + propagated throughout the server group. Consequently, if security of + any SCSP server is compromised, the entire database becomes + vulnerable to curruption originating from the compromised server. + +B.3.2 SCSP Vendor-Private Extension + + Type = 2 + Length = variable + + The SCSP Vendor-Private Extension is carried in SCSP packets to + convey vendor-private information between an LS and a DCS in the same + SG and is thus of limited use. If a finer granularity (e.g., CSA + record level) is desired then then given client/server protocol + specific SCSP document MUST define such a mechanism. Obviously, + however, such a protocol specific mechanism might look exactly like + this extension. The Vendor Private Extension MAY NOT appear more + than once in an SCSP packet for a given Vendor ID value. + + 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 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Vendor ID | Data.... | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + Vendor ID + 802 Vendor ID as assigned by the IEEE [7]. + + Data + The remaining octets after the Vendor ID in the payload are + vendor-dependent data. + + If the receiver does not handle this extension, or does not match the + Vendor ID in the extension then the extension may be completely + ignored by the receiver. + + + + + +Luciani, et. al. Standards Track [Page 37] + +RFC 2334 SCSP April 1998 + + +C. IANA Considerations + + Any and all requests for value assignment from the various number + spaces described in this document require proper documentation. + Possible forms of documentation include, but are not limited to, RFCs + or the product of another cooperative standards body (e.g., the MPOA + and LANE subworking group of the ATM Forum). Other requests may also + be accepted, under the advice of a "designated expert". (Contact the + IANA for the contact information of the current expert.) + +References + + [1] Laubach, M., and J. Halpern, "Classical IP and ARP over ATM", + Laubach, RFC 2225, April 1998. + + [2] Luciani, J., Katz, D., Piscitello, D., Cole, B., and N. + Doraswamy, "NMBA Next Hop Resolution Protocol (NHRP)", RFC 2332, + April 1998. + + [3] Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998. + + [4] "P-NNI V1", Dykeman, Goguen, 1996. + + [5] Armitage, G., "Support for Multicast over UNI 3.0/3.1 based ATM + Networks", RFC 2022, November 1996. + + [6] Keene, "LAN Emulation over ATM Version 2 - LNNI specification", + btd-lane-lnni-02.08 + + [7] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1700, + October 1994. + + [8] Luciani, J., "A Distributed NHRP Service Using SCSP", RFC 2335, + April 1998. + + [9] Luciani, J., "A Distributed ATMARP Service Using SCSP", Work In + Progress. + + [10] Bradner, S., "Key words for use in RFCs to Indicate Requirement + Levels", BCP 14, RFC 2119, March 1997. + + [11] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed Hashing + for Message Authentication", RFC 2104, February 1997. + + + + + + + + +Luciani, et. al. Standards Track [Page 38] + +RFC 2334 SCSP April 1998 + + +Acknowledgments + + This memo is a distillation of issues raised during private + discussions, on the IP-ATM mailing list, and during the Dallas IETF + (12/95). Thanks to all who have contributed but particular thanks to + following people (in no particular order): Barbara Fox of Harris and + Jeffries; Colin Verrilli of IBM; Raj Nair, and Matthew Doar of Ascom + Nexion; Andy Malis of Cascade; Andre Fredette of Bay Networks; James + Watt of Newbridge; and Carl Marcinik of Fore. + +Authors' Addresses + + James V. Luciani + Bay Networks, Inc. + 3 Federal Street, BL3-03 + Billerica, MA 01821 + + Phone: +1-978-916-4734 + EMail: luciani@baynetworks.com + + + Grenville Armitage + Bell Labs Lucent Technologies + 101 Crawfords Corner Road + Holmdel, NJ 07733 + + Phone: +1 201 829 2635 + EMail: gja@lucent.com + + + Joel M. Halpern + Newbridge Networks Corp. + 593 Herndon Parkway + Herndon, VA 22070-5241 + + Phone: +1-703-708-5954 + EMail: jhalpern@Newbridge.COM + + + Naganand Doraswamy + Bay Networks, Inc. + 3 Federal St, BL3-03 + Billerice, MA 01821 + + Phone: +1-978-916-1323 + EMail: naganand@baynetworks.com + + + + + +Luciani, et. al. Standards Track [Page 39] + +RFC 2334 SCSP April 1998 + + +Full Copyright Statement + + Copyright (C) The Internet Society (1998). 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. + + + + + + + + + + + + + + + + + + + + + + + + +Luciani, et. al. Standards Track [Page 40] + |