home *** CD-ROM | disk | FTP | other *** search
/ The Hacker's Encyclopedia 1998 / hackers_encyclopedia.iso / rfc / 3 / rfc2334.txt < prev    next >
Encoding:
Text File  |  2003-06-11  |  95.9 KB  |  2,244 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                         J. Luciani
  8. Request for Comments: 2334                                  Bay Networks
  9. Category: Standards Track                                    G. Armitage
  10.                                                                 Bellcore
  11.                                                               J. Halpern
  12.                                                                Newbridge
  13.                                                             N. Doraswamy
  14.                                                             Bay Networks
  15.                                                               April 1998
  16.  
  17.  
  18.               Server Cache Synchronization Protocol (SCSP)
  19.  
  20. Status of this Memo
  21.  
  22.    This document specifies an Internet standards track protocol for the
  23.    Internet community, and requests discussion and suggestions for
  24.    improvements.  Please refer to the current edition of the "Internet
  25.    Official Protocol Standards" (STD 1) for the standardization state
  26.    and status of this protocol.  Distribution of this memo is unlimited.
  27.  
  28. Copyright Notice
  29.  
  30.    Copyright (C) The Internet Society (1998).  All Rights Reserved.
  31.  
  32. Abstract
  33.  
  34.    This document describes the Server Cache Synchronization Protocol
  35.    (SCSP) and is written in terms of SCSP's use within Non Broadcast
  36.    Multiple Access (NBMA) networks; although, a somewhat straight
  37.    forward usage is applicable to BMA networks.  SCSP attempts to solve
  38.    the generalized cache synchronization/cache-replication problem for
  39.    distributed protocol entities.  However, in this document, SCSP is
  40.    couched in terms of the client/server paradigm in which distributed
  41.    server entities, which are bound to a Server Group (SG) through some
  42.    means, wish to synchronize the contents (or a portion thereof) of
  43.    their caches which contain information about the state of clients
  44.    being served.
  45.  
  46. 1. Introduction
  47.  
  48.    The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD,
  49.    SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, when they appear in this
  50.    document, are to be interpreted as described in [10].
  51.  
  52.    It is perhaps an obvious goal for any protocol to not limit itself to
  53.    a single point of failure such as having a single server in a
  54.    client/server paradigm.  Even when there are redundant servers, there
  55.  
  56.  
  57.  
  58. Luciani, et. al.            Standards Track                     [Page 1]
  59.  
  60. RFC 2334                          SCSP                        April 1998
  61.  
  62.  
  63.    still remains the problem of cache synchronization; i.e.,  when one
  64.    server becomes aware of a change in state of cache information then
  65.    that server must propagate the knowledge of the change in state to
  66.    all servers which are actively mirroring that state information.
  67.    Further, this must be done in a timely fashion without putting undue
  68.    resource strains on the servers. Assuming that the state information
  69.    kept in the server cache is the state of clients of the server, then
  70.    in order to minimize the burden placed upon the client it is also
  71.    highly desirable that clients need not have complete knowledge of all
  72.    servers which they may use.  However, any mechanism for
  73.    synchronization should not preclude a client from having access to
  74.    several (or all) servers.  Of course, any solution must be reasonably
  75.    scalable, capable of using some auto-configuration service, and lend
  76.    itself to a wide range of authentication methodologies.
  77.  
  78.    This document describes the Server Cache Synchronization Protocol
  79.    (SCSP). SCSP solves the generalized server synchronization/cache-
  80.    replication problem while addressing the issues described above.
  81.    SCSP synchronizes caches (or a portion of the caches) of a set of
  82.    server entities of a particular protocol which are bound to a Server
  83.    Group (SG) through some means (e.g., all NHRP servers belonging to a
  84.    Logical IP Subnet (LIS)[1]).  The client/server protocol which a
  85.    particular server uses is identified by a Protocol ID (PID).  SGs are
  86.    identified by an ID which, not surprisingly, is called a SGID. Note,
  87.    therefore, that the combination PID/SGID identifies both the
  88.    client/server protocol for which the servers of the SG are being
  89.    synchronized as well as the instance of that protocol.  This implies
  90.    that multiple instances of the same protocol may be in operation at
  91.    the same time and have their servers synchronized independently of
  92.    each other.  An example of types of information that must be
  93.    synchronized can be seen in NHRP[2] using IP where the information
  94.    includes the registered clients' IP to NBMA mappings in the SG LIS.
  95.  
  96.    The simplest way to understand SCSP is to understand that the
  97.    algorithm used here is quite similar to that used in OSPF[3].  In
  98.    fact, if the reader wishes to understand more details of the
  99.    tradeoffs and reliability aspects of SCSP, they should refer to the
  100.    Hello, Database Synchronization, and Flooding Procedures in OSPF [3].
  101.  
  102.    As described later, the protocol goes through three phases.  The
  103.    first, very brief phase is the hello phase where two devices
  104.    determine that they can talk to each other.  Following that is
  105.    database synchronization.  The operation of SCSP assumes that up to
  106.    the point when new information is received, two entities have the
  107.    same data available.  The database synchronization phase ensures
  108.    this.
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Luciani, et. al.            Standards Track                     [Page 2]
  115.  
  116. RFC 2334                          SCSP                        April 1998
  117.  
  118.  
  119.    In database synchronization, the two neighbors exchange summary
  120.    information about each entry in their database.  Summaries are used
  121.    since the database itself is potentially quite large.  Based on these
  122.    summaries, the neighbors can determine if there is information that
  123.    each needs from the other.  If so, that is requested and provided.
  124.    Therefore, at the end of this phase of operation, the two neighbors
  125.    have the same data in their databases.
  126.  
  127.    After that, the entities enter and remain in flooding state.  In
  128.    flooding state, any new information that is learned is sent to all
  129.    neighbors, except the one (if any) that the information was learned
  130.    from.  This causes all new information in the system to propagate to
  131.    all nodes, thus restoring the state that everyone knows the same
  132.    thing.  Flooding is done reliably on each link, so no pattern of low
  133.    rate packet loss will cause a disruption.  (Obviously, a sufficiently
  134.    high rate of packet loss will cause the entire neighbor relationship
  135.    to come down, but if the link does not work, then that is what one
  136.    wants.)
  137.  
  138.    Because the database synchronization procedure is run whenever a link
  139.    comes up, the system robustly ensures that all participating nodes
  140.    have all available information.  It properly recovers from
  141.    partitions, and copes with other failures.
  142.  
  143.    The SCSP specification is not useful as a stand alone protocol.  It
  144.    must be coupled with the use of an SCSP Protocol Specific
  145.    specification which defines how a given protocol would make use of
  146.    the synchronization primitives supplied by SCSP.  Such specification
  147.    will be done in separate documents; e.g., [8] [9].
  148.  
  149. 2. Overview
  150.  
  151.    SCSP places no topological requirements upon the SG.  Obviously,
  152.    however, the resultant graph must span the set of servers to be
  153.    synchronized.  SCSP borrows its cache distribution mechanism from the
  154.    link state protocols [3,4].  However, unlike those technologies,
  155.    there is no mandatory Shortest Path First (SPF) calculation, and SCSP
  156.    imposes no additional memory requirements above and beyond that which
  157.    is required to save the cached information which would exist
  158.    regardless of the synchronization technology.
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Luciani, et. al.            Standards Track                     [Page 3]
  171.  
  172. RFC 2334                          SCSP                        April 1998
  173.  
  174.  
  175.    In order to give a frame of reference for the following discussion,
  176.    the terms Local Server (LS), Directly Connected Server (DCS), and
  177.    Remote Server (RS) are introduced.  The LS is the server under
  178.    scrutiny; i.e., all statements are made from the perspective of the
  179.    LS when discussing the SCSP protocol. The DCS is a server which is
  180.    directly connected to the LS;  e.g., there exists a VC between the LS
  181.    and DCS.  Thus, every server is a DCS from the point of view of every
  182.    other server which connects to it directly, and every server is an LS
  183.    which has zero or more DCSs directly connected to it. From the
  184.    perspective of an LS, an RS is a server, separate from the LS, which
  185.    is not directly connected to the LS (i.e., an RS is always two or
  186.    more hops away from an LS whereas a DCS is always one hop away from
  187.    an LS).
  188.  
  189.    SCSP contains three sub protocols: the "Hello" protocol, the "Cache
  190.    Alignment" protocol, and the "Cache State Update" protocol.  The
  191.    "Hello" protocol is used to ascertain whether a DCS is operational
  192.    and whether the connection between the LS and DCS is bidirectional,
  193.    unidirectional, or non-functional.  The "Cache Alignment" (CA)
  194.    protocol allows an LS to synchronize its entire cache with that of
  195.    the cache of its DCSs. The "Cache State Update" (CSU) protocol is
  196.    used to update the state of cache entries in servers for a given SG.
  197.    Sections 2.1, 2.2, and 2.3 contain a more in-depth explanation of the
  198.    Hello, CA, and CSU protocols and the messages they use.
  199.  
  200.    SCSP based synchronization is performed on a per protocol instance
  201.    basis.  That is, a separate instance of SCSP is run for each instance
  202.    of the given protocol running in a given box.  The protocol is
  203.    identified in SCSP via a Protocol ID and the instance of the protocol
  204.    is identified by a Server Group ID (SGID).  Thus the PID/SGID pair
  205.    uniquely identify an instance of SCSP.  In general, this is not an
  206.    issue since it is seldom the case that many instances of a given
  207.    protocol (which is distributed and needs cache synchronization) are
  208.    running within the same physical box.  However, when this is the
  209.    case, there is a mechanism called the Family ID (described briefly in
  210.    the Hello Protocol) which enables a substantial reduction in
  211.    maintenance traffic at little real cost in terms of control.  The use
  212.    of the Family ID mechanism, when appropriate for a given protocol
  213.    which is using SCSP, will be fully defined in the given SCSP protocol
  214.    specific specification.
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226. Luciani, et. al.            Standards Track                     [Page 4]
  227.  
  228. RFC 2334                          SCSP                        April 1998
  229.  
  230.  
  231.                        +---------------+
  232.                        |               |
  233.               +------->|     DOWN      |<-------+
  234.               |        |               |        |
  235.               |        +---------------+        |
  236.               |            |       ^            |
  237.               |            |       |            |
  238.               |            |       |            |
  239.               |            |       |            |
  240.               |            @       |            |
  241.               |        +---------------+        |
  242.               |        |               |        |
  243.               |        |    WAITING    |        |
  244.               |     +--|               |--+     |
  245.               |     |  +---------------+  |     |
  246.               |     |    ^           ^    |     |
  247.               |     |    |           |    |     |
  248.               |     @    |           |    @     |
  249.             +---------------+     +---------------+
  250.             | BIDIRECTIONAL |---->| UNIDIRECTIONAL|
  251.             |               |     |               |
  252.             |  CONNECTION   |<----|  CONNECTION   |
  253.             +---------------+     +---------------+
  254.  
  255.  
  256.           Figure 1: Hello Finite State Machine (HFSM)
  257.  
  258.  
  259. 2.1  Hello Protocol
  260.  
  261.    "Hello" messages are used to ascertain whether a DCS is operational
  262.    and whether the connections between the LS and DCS are bidirectional,
  263.    unidirectional, or non-functional. In order to do this, every LS MUST
  264.    periodically send a Hello message to its DCSs.
  265.  
  266.    An LS must be configured with a list of NBMA addresses which
  267.    represent the addresses of peer servers in a SG to which the LS
  268.    wishes to have a direct connection for the purpose of running SCSP;
  269.    that is, these addresses are the addresses of would-be DCSs.  The
  270.    mechanism for the configuration of an LS with these NBMA address is
  271.    beyond the scope of this document; although one possible mechanism
  272.    would be an autoconfiguration server.
  273.  
  274.    An LS has a Hello Finite State Machine (HFSM) associated with each of
  275.    its DCSs (see Figure 1) for a given SG, and the HFSM monitors the
  276.    state of the connectivity between the servers.
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Luciani, et. al.            Standards Track                     [Page 5]
  283.  
  284. RFC 2334                          SCSP                        April 1998
  285.  
  286.  
  287.    The HFSM starts in the "Down" State and transitions to the "Waiting"
  288.    State after NBMA level connectivity has been established.  Once in
  289.    the Waiting State, the LS starts sending Hello messages to the DCS.
  290.    The Hello message includes: a Sender ID which is set to the LS's ID
  291.    (LSID), zero or more Receiver IDs which identify the DCSs from which
  292.    the LS has recently heard a Hello message (as described below), and a
  293.    HelloInterval and DeadFactor which will be described below.   At this
  294.    point, the DCS may or may not already be sending its own Hello
  295.    messages to the LS.
  296.  
  297.    When the LS receives a Hello message from one of its DCSs, the LS
  298.    checks to see if its LSID is in one of the Receiver ID fields of that
  299.    message which it just received, and the LS saves the Sender ID from
  300.    that Hello message. If the LSID is in one of the Receiver ID fields
  301.    then the LS transitions the HFSM to the Bidirectional Connection
  302.    state otherwise it transitions the HFSM into the Unidirectional
  303.    Connection state.  The Sender ID which was saved is the DCS's ID
  304.    (DCSID).  At some point before the next time that the LS sends its
  305.    own Hello message to the DCS, the LS will check the saved DCSID
  306.    against a list of Receiver IDs which the LS uses when sending the
  307.    LS's own Hello messages.  If the DCSID is not found in the list of
  308.    Receiver IDs then it is added to that list before the LS sends its
  309.    Hello message.
  310.  
  311.    Hello messages also contain a HelloInterval and a DeadFactor.  The
  312.    Hello interval advertises the time (in seconds) between sending of
  313.    consecutive Hello messages by the server which is sending the
  314.    "current" Hello message.  That is, if the time between reception of
  315.    Hello messages from a DCS exceeds the HelloInterval advertised by
  316.    that DCS then the next Hello message is to be considered late by the
  317.    LS.  If the LS does not receive a Hello message, which contains the
  318.    LS's LSID in one of the Receiver ID fields, within the interval
  319.    HelloInterval*DeadFactor seconds (where DeadFactor was advertised by
  320.    the DCS in a previous Hello message) then the LS MUST consider the
  321.    DCS to be stalled.  At which point one of two things will happen: 1)
  322.    if any Hello messages have been received during the last
  323.    HelloInterval*DeadFactor seconds then the LS should transition the
  324.    HFSM for that DCS to the Unidirectional Connection State; otherwise,
  325.    the LS should transition the HFSM for that DCS to the Waiting State
  326.    and remove the DCSID from the Receiver ID list.
  327.  
  328.    Note that the Hello Protocol is on a per PID/SGID basis. Thus, for
  329.    example, if there are two servers (one in SG A and the other in SG B)
  330.    associated with an NBMA address X and another two servers (also one
  331.    in SG A and the other in SG B) associated with NBMA address Y and
  332.    there is a suitable point-to-point VC between the NBMA addresses then
  333.    there are two HFSMs running on each side of the VC (one per
  334.    PID/SGID).
  335.  
  336.  
  337.  
  338. Luciani, et. al.            Standards Track                     [Page 6]
  339.  
  340. RFC 2334                          SCSP                        April 1998
  341.  
  342.  
  343.    Hello messages contain a list of Receiver IDs instead of a single
  344.    Receiver ID in order to make use of point to multipoint connections.
  345.    While there is an HFSM per DCS, an LS MUST send only a single Hello
  346.    message to its DCSs attached as leaves of a point to multipoint
  347.    connection.  The LS does this by including DCSIDs in the list of
  348.    Receiver IDs when the LS's sends its next Hello message.  Only the
  349.    DCSIDs from non-stalled DCSs from which the LS has heard a Hello
  350.    message are included.
  351.  
  352.    Any abnormal event, such as receiving a malformed SCSP message,
  353.    causes the HFSM to transition to the Waiting State; however, a loss
  354.    of NBMA connectivity causes the HFSM to transition to the Down State.
  355.    Until the HFSM is in the Bidirectional Connection State, if any
  356.    properly formed SCSP messages other than Hello messages are received
  357.    then those messages MUST be ignored (this is for the case where, for
  358.    example, there is a point to multipoint connection involved).
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Luciani, et. al.            Standards Track                     [Page 7]
  395.  
  396. RFC 2334                          SCSP                        April 1998
  397.  
  398.  
  399.                    +------------+
  400.                    |            |
  401.               +--->|    DOWN    |
  402.               |    |            |
  403.               |    +------------+
  404.               |          |
  405.               ^          |
  406.               |          @
  407.               |    +------------+
  408.               |    |Master/Slave|
  409.               |-<--|            |<---+
  410.               |    |Negotiation |    |
  411.               |    +------------+    |
  412.               |          |           |
  413.               ^          |           ^
  414.               |          @           |
  415.               |    +------------+    |
  416.               |    |   Cache    |    |
  417.               |-<--|            |-->-|
  418.               |    | Summarize  |    |
  419.               |    +------------+    |
  420.               |          |           |
  421.               ^          |           ^
  422.               |          @           |
  423.               |    +------------+    |
  424.               |    |   Update   |    |
  425.               |-<--|            |-->-|
  426.               |    |   Cache    |    |
  427.               |    +------------+    |
  428.               |          |           |
  429.               ^          |           ^
  430.               |          @           |
  431.               |    +------------+    |
  432.               |    |            |    |
  433.               +-<--|  Aligned   |-->-+
  434.                    |            |
  435.                    +------------+
  436.  
  437.      Figure 2: Cache Alignment Finite State Machine
  438.  
  439.  
  440. 2.2 Cache Alignment Protocol
  441.  
  442.    "Cache Alignment" (CA) messages are used by an LS to synchronize its
  443.    cache with that of the cache of each of its DCSs.  That is, CA
  444.    messages allow a booting LS to synchronize with each of its DCSs.  A
  445.    CA message contains a CA header followed by zero or more Cache State
  446.    Advertisement Summary records (CSAS records).
  447.  
  448.  
  449.  
  450. Luciani, et. al.            Standards Track                     [Page 8]
  451.  
  452. RFC 2334                          SCSP                        April 1998
  453.  
  454.  
  455.    An LS has a Cache Alignment Finite State Machine (CAFSM) associated
  456.    (see Figure 2) with each of its DCSs on a per PID/SGID basis, and the
  457.    CAFSM monitors the state of the cache alignment between the servers.
  458.    The CAFSM starts in the Down State.  The CAFSM is associated with an
  459.    HFSM, and when that HFSM reaches the Bidirectional State, the CAFSM
  460.    transitions to the Master/Slave Negotiation State.  The Master/Slave
  461.    Negotiation State causes either the LS or DCS to take on the role of
  462.    master over the cache alignment process.  In a sense, the master
  463.    server sets the tempo for the cache alignment.
  464.  
  465.    When the LS's CAFSM reaches the Master/Slave Negotiation State, the
  466.    LS will send a CA message to the DCS associated with the CAFSM.  The
  467.    format of CA messages are described in Section B.2.1.  The first CA
  468.    message which the LS sends includes no CSAS records and a CA header
  469.    which contains the LSID in the Sender ID field, the DCSID in the
  470.    Receiver ID field, a CA sequence number, and three bits.  These three
  471.    bits are the M (Master/Slave) bit, the I (Initialization of master)
  472.    bit, and the O (More) bit. In the first CA message sent by the LS to
  473.    a particular DCS, the M, O, and I bits are set to one.  If the LS
  474.    does not receive a CA message from the DCS in CAReXmtInterval seconds
  475.    then it resends the CA message it just sent.  The LS continues to do
  476.    this until the CAFSM transitions to the Cache Summarize State or
  477.    until the HFSM transitions out of the Bidirectional State.  Any time
  478.    the HFSM transitions out of the Bidirectional State, the CAFSM
  479.    transitions to the Down State.
  480.  
  481. 2.2.1 Master Slave Negotiation State
  482.  
  483.    When the LS receives a CA message from the DCS while in the
  484.    Master/Slave Negotiation State, the role the LS plays in the exchange
  485.    depends on packet processing as follows:
  486.  
  487.    1) If the CA from the DCS has the M, I, and O bits set to one and
  488.       there are no CSAS records in the CA message and the Sender ID
  489.       as specified in the DCS's CA message is larger than the LSID then
  490.  
  491.      a) The timer counting down the CAReXmtInterval is stopped.
  492.      b) The CAFSM corresponding to that DCS transitions to the
  493.         Cache Summarize    State and the LS takes on the role of slave.
  494.      c) The LS adopts the CA sequence number it received in the CA
  495.         message as its own CA sequence number.
  496.      d) The LS sends a CA message to the DCS which is formated as
  497.         follows: the M and I bits are set to zero, the Sender ID field
  498.         is set to the LSID, the Receiver ID field is set to the DCSID,
  499.         and the CA sequence number is set to the CA sequence number that
  500.         appeared in the DCS's CA message.  If there are CSAS records to
  501.         be sent (i.e., if the LS's cache is not empty), and if all of
  502.         them will not fit into this CA message then the O bit is set to
  503.  
  504.  
  505.  
  506. Luciani, et. al.            Standards Track                     [Page 9]
  507.  
  508. RFC 2334                          SCSP                        April 1998
  509.  
  510.  
  511.         one and the initial set of CSAS records are included in the CA
  512.         message; otherwise the O bit is set to zero and if any CSAS
  513.         Records need to be sent then those records are included in the
  514.         CA message.
  515.  
  516.    2) If the CA message from the DCS has the M and I bits off and the
  517.       Sender ID as specified in the DCS's CA message is smaller than
  518.       the LSID then
  519.  
  520.      a) The timer counting down the CAReXmtInterval is stopped.
  521.      b) The CAFSM corresponding to that DCS transitions to the
  522.         Cache Summarize State and the LS takes on the role of master.
  523.      c) The LS must process the received CA message.
  524.         An explanation of CA message processing is given below.
  525.      d) The LS sends a CA message to the DCS which is formated as
  526.         follows: the M bit is set to one, I bit is set to zero, the
  527.         Sender ID field is set to the LSID, the Receiver ID field is set
  528.         to the DCSID, and the LS's current CA sequence number is
  529.         incremented by one and placed in the CA message.   If there are
  530.         any CSAS records to be sent from the LS to the DCS (i.e., if the
  531.         LS's cache is not empty) then the O bit is set to one and the
  532.         initial set of CSAS records are included in the CA message that
  533.         the LS is sending to the DCS.
  534.  
  535.    3) Otherwise, the packet must be ignored.
  536.  
  537. 2.2.2 The Cache Summarize State
  538.  
  539.    At any given time, the master or slave have at most one outstanding
  540.    CA message.  Once the LS's CAFSM has transitioned to the Cache
  541.    Summarize State the sequence of exchanges of CA messages occurs as
  542.    follows:
  543.  
  544.    1) If the LS receives a CA message with the M bit set incorrectly
  545.       (e.g., the M bit is set in the CA of the DCS and the LS is master)
  546.       or if the I bit is set then the CAFSM transitions back to the
  547.       Master/Slave Negotiation State.
  548.  
  549.    2) If the LS is master and the LS receives a CA message with a
  550.       CA sequence number which is one less than the LS's current
  551.       CA sequence number then the message is a duplicate and the message
  552.       MUST be discarded.
  553.  
  554.    3) If the LS is master and the LS receives a CA message with a
  555.       CA sequence number which is equal to the LS's current CA sequence
  556.       number then the CA message MUST be processed.  An explanation of
  557.       "CA message processing" is given below.  As a result of having
  558.       received the CA message from the DCS the following will occur:
  559.  
  560.  
  561.  
  562. Luciani, et. al.            Standards Track                    [Page 10]
  563.  
  564. RFC 2334                          SCSP                        April 1998
  565.  
  566.  
  567.      a) The timer counting down the CAReXmtInterval is stopped.
  568.      b) The LS must process any CSAS records in the received CA message.
  569.      c) Increment the LS's CA sequence number by one.
  570.      d) The cache exchange continues as follows:
  571.  
  572.        1) If the LS has no more CSAS records to send and the received CA
  573.           message has the O bit off then the CAFSM transitions to the
  574.           Update Cache State.
  575.        2) If the LS has no more CSAS records to send and the received CA
  576.           message has the O bit on then the LS sends back a CA message
  577.           (with new CA sequence number) which contains no CSAS records
  578.           and with the O bit off.  Reset the timer counting down the
  579.           CAReXmtInterval.
  580.        3) If the LS has more CSAS records to send then the LS sends the
  581.           next CA message with the LS's next set of CSAS records.  If LS
  582.           is sending its last set of CSAS records then the O bit is set
  583.           off otherwise the O bit is set on. Reset the timer counting
  584.           down the CAReXmtInterval.
  585.  
  586.    4) If the LS is slave and the LS receives a CA message with a
  587.       CA sequence number which is equal to the LS's current
  588.       CA sequence number then the CA message is a duplicate and the
  589.       LS MUST resend the CA message which it had just sent to the DCS.
  590.  
  591.    5) If the LS is slave and the LS receives a CA message with a
  592.       CA sequence number which is one more than the LS's current
  593.       CA sequence number then the message is valid and MUST be
  594.       processed.  An explanation of "CA message processing" is given
  595.       below.  As a result of having received the CA message from the
  596.       DCS the following will occur:
  597.  
  598.      a) The LS must process any CSAS records in the received CA message.
  599.      b) Set the LS's CA sequence number to the CA sequence number in the
  600.         CA message.
  601.      c) The cache exchange continues as follows:
  602.  
  603.        1) If the LS had just sent a CA message with the O bit off and
  604.           the received CA message has the O bit off then the CAFSM
  605.           transitions to the Update Cache State and the LS sends a CA
  606.           message with no CSAS records and with the O bit off.
  607.        2) If the LS still has CSAS records to send then the LS MUST send
  608.           a CA message with CSAS records in it.
  609.  
  610.          a) If the message being sent from the LS to the DCS does not
  611.             contain the last CSAS records that the LS needs to send
  612.             then the CA message is sent with the O bit on.
  613.          b) If the message being sent from the LS to the DCS does
  614.             contain the last CSAS records that the LS needs to
  615.  
  616.  
  617.  
  618. Luciani, et. al.            Standards Track                    [Page 11]
  619.  
  620. RFC 2334                          SCSP                        April 1998
  621.  
  622.  
  623.             send and the CA message just received from the DCS had the
  624.             O bit off then the CA message is sent with the O bit off,
  625.             and the LS transitions the CAFSM to the Update Cache State.
  626.          c) If the message being sent from the LS to the DCS does
  627.             contain the last CSAS records that the LS needs to send
  628.             and the CA message just received from the DCS had the O bit
  629.             on then the CA message is sent with the O bit off and the
  630.             alignment process continues.
  631.  
  632.    6) If the LS is slave and the LS receives a CA message with a
  633.       CA sequence number that is neither equal to nor one more than
  634.       the current LS's CA sequence number then an error has occurred
  635.       and the CAFSM transitions to the Master/Slave Negotiation State.
  636.  
  637.    Note that if the LS was slave during the CA process then the LS upon
  638.    transitioning the CAFSM to the Update Cache state MUST keep a copy of
  639.    the last CA message it sent and the LS SHOULD set a timer equal to
  640.    CAReXmtInterval. If either the timer expires or the LS receives a CSU
  641.    Solicit (CSUS) message (CSUS messages are described in Section 2.2.3)
  642.    from the DCS then the LS releases the copy of the CA message.  The
  643.    reason for this is that if the DCS (which is master) loses the last
  644.    CA message sent by the LS then the DCS will resend its previous CA
  645.    message with the last CA Sequence number used.  If that were to occur
  646.    the LS would need to resend its last sent CA message as well.
  647.  
  648. 2.2.2.1 "CA message processing":
  649.  
  650.    The LS makes a list of those cache entries which are more "up to
  651.    date" in the DCS than the LS's own cache.  This list is called the
  652.    CSA Request List (CRL).  See Section 2.4 for a description of what it
  653.    means for a CSA (Client State Advertisement) record or CSAS record to
  654.    be more "up to date" than an LS's cache entry.
  655.  
  656. 2.2.3 The Update Cache State
  657.  
  658.    If the CRL of the associated CAFSM of the LS is empty upon transition
  659.    into the Update Cache State then the CAFSM immediately transitions
  660.    into the Aligned State.
  661.  
  662.    If the CRL is not empty upon transition into the Update Cache State
  663.    then the LS solicits the DCS to send the CSA records corresponding to
  664.    the summaries (i.e., CSAS records) which the LS holds in its CRL. The
  665.    solicited CSA records will contain the entirety of the cached
  666.    information held in the DCS's cache for the given cache entry.  The
  667.    LS solicits the relevant CSA records by forming CSU Solicit (CSUS)
  668.    messages from the CRL. See Section B.2.4 for the description of the
  669.    CSUS message format.  The LS then sends the CSUS messages to the DCS.
  670.    The DCS responds to the CSUS message by sending to the LS one or more
  671.  
  672.  
  673.  
  674. Luciani, et. al.            Standards Track                    [Page 12]
  675.  
  676. RFC 2334                          SCSP                        April 1998
  677.  
  678.  
  679.    CSU Request messages containing the entirety of newer cached
  680.    information identified in the CSUS message.  Upon receiving the CSU
  681.    Request the LS will send one or more CSU Replies as described in
  682.    Section 2.3.  Note that the LS may have at most one CSUS message
  683.    outstanding at any given time.
  684.  
  685.    Just before the first CSUS message is sent from an LS to the DCS
  686.    associated with the CAFSM, a timer is set to CSUSReXmtInterval
  687.    seconds.  If all the CSA records corresponding to the CSAS records in
  688.    the CSUS message have not been received by the time that the timer
  689.    expires then a new CSUS message will be created which contains all
  690.    the CSAS records for which no appropriate CSA record has been
  691.    received plus additional CSAS records not covered in the previous
  692.    CSUS message.  The new CSUS message is then sent to the DCS.  If, at
  693.    some point before the timer expires, all CSA record updates have been
  694.    received for all the CSAS records included in the previously sent
  695.    CSUS message then the timer is stopped.  Once the timer is stopped,
  696.    if there are additional CSAS records that were not covered in the
  697.    previous CSUS message but were in the CRL then the timer is reset and
  698.    a new CSUS message is created which contains only those CSAS records
  699.    from the CRL which have not yet been sent to the DCS. This process
  700.    continues until all the CSA records corresponding CSAS records that
  701.    were in the CRL have been received by the LS.  When the LS has a
  702.    completely updated cache then the LS transitions CAFSM associated
  703.    with the DCS to the Aligned State.
  704.  
  705.    If an LS receives a CSUS message or a CA message with a Receiver ID
  706.    which is not the LS's LSID then the message must be discarded and
  707.    ignored.  This is necessary since an LS may be a leaf of a point to
  708.    multipoint connection with other servers in the SG.
  709.  
  710. 2.2.4 The Aligned State
  711.  
  712.    While in the Aligned state, an LS will perform the Cache State Update
  713.    Protocol as described in Section 2.3.
  714.  
  715.    Note that an LS may receive a CSUS message while in the Aligned State
  716.    and, the LS MUST respond to the CSUS message with the appropriate CSU
  717.    Request message in a similar fashion to the method previously
  718.    described in Section 2.2.3.
  719.  
  720. 2.3 Cache State Update Protocol
  721.  
  722.    "Cache State Update" (CSU) messages are used to dynamically update
  723.    the state of cache entries in servers on a given PID/SGID basis. CSU
  724.    messages contain zero or more "Cache State Advertisement" (CSA)
  725.    records each of which contains its own snapshot of the state of a
  726.    particular cache entry.  An LS may send/receive a CSU to/from a DCS
  727.  
  728.  
  729.  
  730. Luciani, et. al.            Standards Track                    [Page 13]
  731.  
  732. RFC 2334                          SCSP                        April 1998
  733.  
  734.  
  735.    only when the corresponding CAFSM is in either the Aligned State or
  736.    the Update Cache State.
  737.  
  738.    There are two types of CSU messages: CSU Requests and CSU Replies.
  739.    See Sections B.2.2 and B.2.3 respectively for message formats.  A CSU
  740.    Request message is sent from an LS to one or more DCSs for one of two
  741.    reasons: either the LS has received a CSUS message and MUST respond
  742.    only to the DCS which originated the CSUS message, or the LS has
  743.    become aware of a change of state of a cache entry.  An LS becomes
  744.    aware of a change of state of a cache entry either through receiving
  745.    a CSU Request from one of its DCSs or as a result of a change of
  746.    state being observed in a cached entry originated by the LS.  In the
  747.    former case, the LS will send a CSU Request to each of its DCSs
  748.    except the DCS from which the LS became aware of the change in state.
  749.    In the latter case, the LS will send a CSU Request to each of its
  750.    DCSs.  The change in state of a particular cache entry is noted in a
  751.    CSA record which is then appended to the end of the CSU Request
  752.    message mandatory part. In this way, state changes are propagated
  753.    throughout the SG.
  754.  
  755.    Examples of such changes in state are as follows:
  756.  
  757.        1) a server receives a request from a client to add an entry to
  758.           its cache,
  759.        2) a server receives a request from a client to remove an entry
  760.           from its cache,
  761.        3) a cache entry has timed out in the server's cache, has been
  762.           refreshed in the server's cache, or has been administratively
  763.           modified.
  764.  
  765.    When an LS receives a CSU Request from one of its DCSs, the LS
  766.    acknowledges one or more CSA Records which were contained in the CSU
  767.    Request by sending a CSU Reply.  The CSU Reply contains one or more
  768.    CSAS records which correspond to those CSA records which are being
  769.    acknowledged.  Thus, for example, if a CSA record is dropped (or
  770.    delayed in processing) by the LS because there are insufficient
  771.    resources to process it then a corresponding CSAS record is not
  772.    included in the CSU Reply to the DCS.
  773.  
  774.    Note that an LS may send multiple CSU Request messages before
  775.    receiving a CSU Reply acknowledging any of the CSA Records contained
  776.    in the CSU Requests.  Note also that a CSU Reply may contain
  777.    acknowledgments for CSA Records from multiple CSU Requests.  Thus,
  778.    the terms "request" and "reply" may be a bit confusing.
  779.  
  780.    Note that a CSA Record contains a CSAS Record followed by
  781.    client/server protocol specific information contained in a cache
  782.    entry  (see Section B.2.0.2 for CSAS record format information and
  783.  
  784.  
  785.  
  786. Luciani, et. al.            Standards Track                    [Page 14]
  787.  
  788. RFC 2334                          SCSP                        April 1998
  789.  
  790.  
  791.    Section B.2.2.1 for CSA record format information).  When a CSA
  792.    record is considered by the LS to represent cached information which
  793.    is more "up to date" (see Section 2.4) than the cached information
  794.    contained within the cache of the LS then two things happen:  1) the
  795.    LS's cache is updated with the more up to date information, and 2)
  796.    the LS sends a CSU Request containing the CSA Record to each of its
  797.    DCSs except the one from which the CSA Record arrived.  In this way,
  798.    state changes are propagated within the PID/SGID.  Of course, at some
  799.    point, the LS will also acknowledge the reception of the CSA Record
  800.    by sending the appropriate DCS a CSU Reply message containing the
  801.    corresponding CSAS Record.
  802.  
  803.    When an LS sends a new CSU Request, the LS keeps track of the
  804.    outstanding CSA records in that CSU Request and to which DCSs the LS
  805.    sent the CSU Request.  For each DCS to which the CSU Request was
  806.    sent, a timer set to CSUReXmtInterval seconds is started just prior
  807.    to sending the CSU Request.  This timer is associated with the CSA
  808.    Records contained in that CSU Request such that if that timer expires
  809.    prior to having all CSA Records acknowledged from that DCS then (and
  810.    only then) a CSU Request is re-sent by the LS to that DCS.  However,
  811.    the re-sent CSU Request only contains those CSA Records which have
  812.    not yet been acknowledged.  If all CSA Records associated with a
  813.    timer becomes acknowledged then the timer is stopped. Note that the
  814.    re-sent CSA Records follow the same time-out and retransmit rules as
  815.    if they were new.  Retransmission will occur a configured number of
  816.    times for a given CSA Record and if acknowledgment fails to occur
  817.    then an "abnormal event" has occurred at which point the then the
  818.    HFSM associated with the DCS is transitioned to the Waiting State.
  819.  
  820.    A CSA Record instance is said to be on a "DCS retransmit queue" when
  821.    it is associated with the previously mentioned timer.  Only the most
  822.    up-to-date CSA Record is permitted to be queued to a given DCS
  823.    retransmit queue.  Thus, if a less up-to-date CSA Record is queued to
  824.    the DCS retransmit queue when a newer CSA Record instance is about to
  825.    be queued to that DCS retransmit queue then the older CSA Record
  826.    instance is dequeued and disassociated with its timer immediately
  827.    prior to enqueuing the newer instance of the CSA Record.
  828.  
  829.    When an LS receives a CSU Reply from one of its DCSs then the LS
  830.    checks each CSAS record in the CSU Reply against the CSAS Record
  831.    portion of the CSA Records which are queued to the DCS retransmit
  832.    queue.
  833.  
  834.      1) If there exists an exact match between the CSAS record portion
  835.         of the CSA record and a CSAS Record in the CSU Reply then
  836.         that CSA Record is considered to be acknowledged and is thus
  837.         dequeued from the DCS retransmit queue and is
  838.         disassociated with its timer.
  839.  
  840.  
  841.  
  842. Luciani, et. al.            Standards Track                    [Page 15]
  843.  
  844. RFC 2334                          SCSP                        April 1998
  845.  
  846.  
  847.      2) If there exists a match between the CSAS record portion
  848.         of the CSA record and a CSAS Record in the CSU Reply except
  849.         for the CSA Sequence number then
  850.  
  851.        a) If the CSA Record queued to the DCS retransmit queue has a
  852.           CSA Sequence Number which is greater than the
  853.           CSA Sequence Number in the CSAS Record of the the CSU Reply
  854.           then the CSAS Record in the CSU Reply is ignored.
  855.        b) If the CSA Record queued to the DCS retransmit queue has a
  856.           CSA Sequence Number which is less than the
  857.           CSA Sequence Number in the CSAS Record of the the CSU Reply
  858.           then CSA Record which is queued to the DCS retransmit queue is
  859.           dequeued and the CSA Record is disassociated with its timer.
  860.           Further, a CSUS Message is sent to that DCS which sent the
  861.           more up-to-date CSAS Record.  All normal CSUS processing
  862.           occurs as if the CSUS were sent as part of the CA protocol.
  863.  
  864.    When an LS receives a CSU Request message which contains a CSA Record
  865.    which contains a CSA Sequence Number which is smaller than the CSA
  866.    Sequence number of the cached CSA then the LS MUST acknowledge the
  867.    CSA record in the CSU Request but it MUST do so by sending a CSU
  868.    Reply message containing the CSAS Record portion of the CSA Record
  869.    stored in the cache and not the CSAS Record portion of the CSA Record
  870.    contained in the CSU Request.
  871.  
  872.    An LS responds to CSUS messages from its DCSs by sending CSU Request
  873.    messages containing the appropriate CSA records to the DCS.  If an LS
  874.    receives a CSUS message containing a CSAS record for an entry which
  875.    is no longer in its database (e.g., the entry timed out and was
  876.    discarded after the Cache Alignment exchange completed but before the
  877.    entry was requested through a CSUS message), then the LS will respond
  878.    by copying the CSAS Record from the CSUS message into a CSU Request
  879.    message and the LS will set the N bit signifying that this record is
  880.    a NULL record since the cache entry no longer exists in the LS's
  881.    cache.  Note that in this case, the "CSA Record" included in the CSU
  882.    Request to signify the NULL cache entry is literally only a CSAS
  883.    Record since no client/server protocol specific information exists
  884.    for the cache entry.
  885.  
  886.    If an LS receives a CSA Record in a CSU Request from a DCS for which
  887.    the LS has an identical CSA record posted to the corresponding DCS's
  888.    DCS retransmit queue then the CSA Record on the DCS retransmit queue
  889.    is considered to be implicitly acknowledged.  Thus, the CSA Record is
  890.    dequeued from the DCS retransmit queue and is disassociated with its
  891.    timer.  The CSA Record sent by the DCS MUST still be acknowledged by
  892.    the LS in a CSU Reply, however.  This is useful in the case of point
  893.    to multipoint connections where the rule that "when an LS receives a
  894.    CSA record from a DCS, that LS floods the CSA Record to every DCS
  895.  
  896.  
  897.  
  898. Luciani, et. al.            Standards Track                    [Page 16]
  899.  
  900. RFC 2334                          SCSP                        April 1998
  901.  
  902.  
  903.    except the DCS from which it was received" might be broken.
  904.  
  905.    If an LS receives a CSU with a Receiver ID which is not equal to the
  906.    LSID and is not set to all 0xFFs then the CSU must be discarded and
  907.    ignored.  This is necessary since the LS may be a leaf of a point to
  908.    multipoint connection with other servers in the LS's SG.
  909.  
  910.    An LS MAY send a CSU Request to the all 0xFFs Receiver ID when the LS
  911.    is a root of a point to multipoint connection with a set of its DCSs.
  912.    If an LS receives a CSU Request with the all 0xFFs Receiver ID then
  913.    it MUST use the Sender ID in the CSU Request as the Receiver ID of
  914.    the CSU Reply (i.e., it MUST unicast its response to the sender of
  915.    the request) when responding.  If the LS wishes to send a CSU Request
  916.    to the all 0xFFs Receiver ID then it MUST create a time-out and
  917.    retransmit timer for each of the DCSs which are leaves of the point
  918.    to multipoint connection prior to sending the CSU Request.  If in
  919.    this case, the time-out and retransmit timer expires for a given DCS
  920.    prior to acknowledgment of a given CSA Record then the LS MUST use
  921.    the specific DCSID as the Receiver ID rather than the all 0xFFs
  922.    Receiver ID.  Similarly, if it is necessary to re-send a CSA Record
  923.    then the LS MUST specify the specific DCSID as the Receiver ID rather
  924.    than the all 0xFFs Receiver ID.
  925.  
  926.    Note that if a set of servers are in a full mesh of point to
  927.    multipoint connections, and one server of that mesh sends a CSU
  928.    Request into that full mesh, and the sending server sends the CSA
  929.    Records in the CSU Request to the all 0xFFs Receiver ID then it would
  930.    not be necessary for every other server in the mesh to source their
  931.    own CSU Request containing those CSA Records into the mesh in order
  932.    to properly flood the CSA Records. This is because every server in
  933.    the mesh would have heard the CSU Request and would have processed
  934.    the included CSA Records as appropriate.  Thus, a server in a full
  935.    mesh could consider the mesh to be a single logical port and so the
  936.    rule that "when an LS receives a CSA record from a DCS, that LS
  937.    floods the CSA Record to every DCS except the DCS from which it was
  938.    received" is not broken.  A receiving server in the full mesh would
  939.    still need to acknowledge the CSA records with CSU Reply messages
  940.    which contain the LSID of the replying server as the Sender ID and
  941.    the ID of the server which sent the CSU Request as the Receiver ID
  942.    field.  In the time out and retransmit case, the Receiver ID of the
  943.    CSU Request would be set to the specific DCSID which did not
  944.    acknowledge the CSA Record (as opposed to the all 0xFFs Receiver ID).
  945.    Since a full mesh emulates a broadcast media for the servers attached
  946.    to the full mesh, use of SCSP on a broadcast medium might use this
  947.    technique as well.  Further discussion of this use of a full mesh or
  948.    use of a broadcast media is left to the client/server protocol
  949.    specific documents.
  950.  
  951.  
  952.  
  953.  
  954. Luciani, et. al.            Standards Track                    [Page 17]
  955.  
  956. RFC 2334                          SCSP                        April 1998
  957.  
  958.  
  959. 2.4 The meaning of "More Up To Date"/"Newness"
  960.  
  961.    During the cache alignment process and during normal CSU processing,
  962.    a CSAS Record is compared against the contents of an LS's cache entry
  963.    to decide whether the information contained in the record is more "up
  964.    to date" than the corresponding cache entry of the LS.
  965.  
  966.    There are three pieces of information which are used in determining
  967.    whether a record contains information which is more "up to date" than
  968.    the information contained in the cache entry of an LS which is
  969.    processing the record: 1) the Cache Key, 2) the Originator which is
  970.    described by an Originator ID (OID), and 3) the CSA Sequence number.
  971.    See Section B.2.0.2 for more information on these fields.
  972.  
  973.    Given these three pieces of information, a CSAS record (be it part of
  974.    a CSA Record or be it stand-alone) is considered to be more "up to
  975.    date" than the information contained in the cache of an LS if all of
  976.    the following are true:
  977.  
  978. Discussion and Conclusions
  979.  
  980.    While the above text is couched in terms of synchronizing the
  981.    knowledge of the state of a client within the cache of servers
  982.    contained in a SG, this solution generalizes easily to any number of
  983.    database synchronization problems (e.g., LECS synchronization).
  984.  
  985.    SCSP defines a generic flooding protocol.  There are a number of
  986.    related issues relative to cache maintenance and topology maintenance
  987.    which are more appropriately defined in the client/server protocol
  988.    specific documents; for example, it might be desirable to define a
  989.    generic cache entry time-out mechanism for a given protocol or to
  990.    advertise adjacency information between servers so that one could
  991.    obtain a topo-map of the servers in a SG.  When mechanisms like these
  992.    are desirable, they will be defined in the client/server protocol
  993.    specific documents.
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010. Luciani, et. al.            Standards Track                    [Page 18]
  1011.  
  1012. RFC 2334                          SCSP                        April 1998
  1013.  
  1014.  
  1015. Appendix A: Terminology and Definitions
  1016.  
  1017.    CA Message - Cache Alignment Message
  1018.      These messages allow an LS to synchronize its entire cache with
  1019.      that of the cache of one of its DCSs.
  1020.  
  1021.    CAFSM - Cache Alignment Finite State Machine
  1022.      The CAFSM monitors the state of the cache alignment between an LS
  1023.      and a particular DCS.  There exists one CAFSM per DCS as seen from
  1024.      an LS.
  1025.  
  1026.    CSA Record - Cache State Advertisement Record
  1027.      A CSA is a record within a CSU message which identifies an update
  1028.      to the status of a "particular" cache entry.
  1029.  
  1030.    CSAS Record - Cache State Advertisement Summary Record
  1031.      A CSAS contains a summary of the information in a CSA.  A server
  1032.      will send CSAS records describing its cache entries to another
  1033.      server during the cache alignment process.  CSAS records are also
  1034.      included in a CSUS messages when an LS wants to request the entire
  1035.      CSA from the DCS.  The LS is requesting the CSA from the DCS
  1036.      because the LS believes that the DCS has a more recent view of the
  1037.      state of the cache entry in question.
  1038.  
  1039.    CSU Message - Cache State Update message
  1040.      This is a message sent from an LS to its DCSs when the LS becomes
  1041.      aware of a change in state of a cache entry.
  1042.  
  1043.    CSUS Message - Cache State Update Solicit Message
  1044.      This message is sent by an LS to its DCS after the LS and DCS have
  1045.      exchanged CA messages.   The CSUS message contains one or more CSAS
  1046.      records which represent solicitations for entire CSA records (as
  1047.      opposed to just the summary information held in the CSAS).
  1048.  
  1049.    DCS - Directly Connected Server
  1050.      The DCS is a server which is directly connected to the LS; e.g.,
  1051.      there exists a VC between the LS and DCS. This term, along with the
  1052.      terms LS and RS, is used to give a frame of reference when talking
  1053.      about servers and their synchronization.  Unless explicitly stated
  1054.      to the contrary, there is no implied difference in functionality
  1055.      between a DCS, LS, and RS.
  1056.  
  1057.    HFSM - Hello Finite State Machine
  1058.      An LS has a HFSM associated with each of its DCSs.  The HFSM
  1059.      monitors the state of the connectivity between the LS and a
  1060.      particular DCS.
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066. Luciani, et. al.            Standards Track                    [Page 19]
  1067.  
  1068. RFC 2334                          SCSP                        April 1998
  1069.  
  1070.  
  1071.    LS - Local Server
  1072.      The LS is the server under scrutiny; i.e., all statements are made
  1073.      from the perspective of the LS.  This term, along with the terms
  1074.      DCS and RS, is used to give a frame of reference when talking about
  1075.      servers and their synchronization.  Unless explicitly stated to the
  1076.      contrary, there is no implied difference in functionality between a
  1077.      DCS, LS, and RS.
  1078.  
  1079.    LSID - Local Server ID
  1080.      The LSID is a unique token that identifies an LS.  This value might
  1081.      be taken from the protocol address of the LS.
  1082.  
  1083.    PID - Protocol ID
  1084.      This field contains an identifier which identifies the
  1085.      client/server protocol which is making use of SCSP for the given
  1086.      message.  The assignment of Protocol IDs for this field is given
  1087.      over to IANA as described in Section C.
  1088.  
  1089.    RS - Remote Server (RS)
  1090.      From the perspective of an LS, an RS is a server, separate from the
  1091.      LS, which is not directly connected to the LS (i.e., an RS is
  1092.      always two or more hops away from an LS whereas a DCS is always one
  1093.      hop away from an LS).  Unless otherwise stated an RS refers to a
  1094.      server in the SG.  This term, along with the terms LS and DCS, is
  1095.      used to give a frame of reference when talking about servers and
  1096.      their synchronization.  Unless explicitly stated to the contrary,
  1097.      there is no implied difference in functionality between a DCS, LS,
  1098.      and RS.
  1099.  
  1100.    SG - Server Group
  1101.      The SCSP synchronizes caches (or a portion of the caches) of a set
  1102.      of server entities which are bound to a SG through some means
  1103.      (e.g., all servers belonging to a Logical IP Subnet (LIS)[1]).
  1104.      Thus an SG is just a grouping of servers around some commonality.
  1105.  
  1106.    SGID - Server Group ID
  1107.      This ID is a 16 bit identification field that uniquely identifies
  1108.      the instance client/server protocol for which the servers of the SG
  1109.      are being synchronized.  This implies that multiple instances of
  1110.      the same protocol may be in operation at the same time and have
  1111.      their servers synchronized independently of each other.
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122. Luciani, et. al.            Standards Track                    [Page 20]
  1123.  
  1124. RFC 2334                          SCSP                        April 1998
  1125.  
  1126.  
  1127. Appendix B:  SCSP Message Formats
  1128.  
  1129.    This section of the appendix includes the message formats for SCSP.
  1130.    SCSP protocols are LLC/SNAP encapsulated with an LLC=0xAA-AA-03 and
  1131.    OUI=0x00-00-5e and PID=0x00-05.
  1132.  
  1133.    SCSP has 3 parts to every packet: the fixed part, the mandatory part,
  1134.    and the extensions part.  The fixed part of the message exists in
  1135.    every packet and is shown below.  The mandatory part is specific to
  1136.    the particular message type (i.e., CA, CSU Request/Reply, Hello,
  1137.    CSUS) and, it includes (among other packet elements) a Mandatory
  1138.    Common Part and zero or more records each of which contains
  1139.    information pertinent to the state of a particular cache entry
  1140.    (except in the case of a Hello message) whose information is being
  1141.    synchronized within a SG. The extensions part contains the set of
  1142.    extensions for the SCSP message.
  1143.  
  1144.    In the following message formats, the fields marked as "unused" MUST
  1145.    be set to zero upon transmission of such a message and ignored upon
  1146.    receipt of such a message.
  1147.  
  1148. B.1 Fixed Part
  1149.  
  1150.     0                   1                   2                   3
  1151.     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
  1152.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1153.    |    Version    |  Type Code    |        Packet Size            |
  1154.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1155.    |          Checksum             |      Start Of Extensions      |
  1156.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1157.  
  1158.    Version
  1159.      This is the version of the SCSP protocol being used.  The current
  1160.      version is 1.
  1161.  
  1162.    Type Code
  1163.      This is the code for the message type (e.g., Hello (5), CSU
  1164.      Request(2), CSU Reply(3), CSUS (4), CA (1)).
  1165.  
  1166.    Packet Size
  1167.      The total length of the SCSP packet, in octets (excluding link
  1168.      layer and/or other protocol encapsulation).
  1169.  
  1170.    Checksum
  1171.      The standard IP checksum over the entire SCSP packet starting at
  1172.      the fixed header.  If the packet is an odd number of bytes in
  1173.      length then this calculation is performed as if a byte set to 0x00
  1174.      is appended to the end of the packet.
  1175.  
  1176.  
  1177.  
  1178. Luciani, et. al.            Standards Track                    [Page 21]
  1179.  
  1180. RFC 2334                          SCSP                        April 1998
  1181.  
  1182.  
  1183.    Start Of Extensions
  1184.      This field is coded as zero when no extensions are present in the
  1185.      message.  If extensions are present then this field will be coded
  1186.      with the offset from the top of the fixed header to the beginning
  1187.      of the first extension.
  1188.  
  1189. B.2.0 Mandatory Part
  1190.  
  1191.    The mandatory part of the SCSP packet contains the operation specific
  1192.    information for a given message type (e.g., SCSP Cache State Update
  1193.    Request/Reply, etc.), and it includes (among other packet elements) a
  1194.    Mandatory Common Part (described in Section B.2.0.1) and zero or more
  1195.    records each of which contains information pertinent to the state of
  1196.    a particular cache entry (except in the case of a Hello message)
  1197.    whose information is being synchronized within a SG.  These records
  1198.    may, depending on the message type, be either Cache State
  1199.    Advertisement Summary (CSAS) Records (described in Section B.2.0.2)
  1200.    or Cache State Advertisement (CSA) Records (described in Section
  1201.    B.2.2.1).  CSA Records contain a summary of a cache entry's
  1202.    information (i.e., a CSAS Record) plus some additional client/server
  1203.    protocol specific information.  The mandatory common part format and
  1204.    CSAS Record format is shown immediately below, prior to showing their
  1205.    use in SCSP messages, in order to prevent replication within the
  1206.    message descriptions.
  1207.  
  1208. B.2.0.1 Mandatory Common Part
  1209.  
  1210.    Sections B.2.1 through B.2.5 have a substantial overlap in format.
  1211.    This overlapping format is called the mandatory common part and its
  1212.    format is shown below:
  1213.  
  1214.     0                   1                   2                   3
  1215.     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
  1216.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1217.    |         Protocol ID           |        Server Group ID        |
  1218.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1219.    |            unused             |             Flags             |
  1220.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1221.    | Sender ID Len | Recvr ID Len  |       Number of Records       |
  1222.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1223.    |                  Sender ID (variable length)                  |
  1224.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1225.    |                Receiver ID (variable length)                  |
  1226.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Luciani, et. al.            Standards Track                    [Page 22]
  1235.  
  1236. RFC 2334                          SCSP                        April 1998
  1237.  
  1238.  
  1239.    Protocol ID
  1240.      This field contains an identifier which identifies the
  1241.      client/server protocol which is making use of SCSP for the given
  1242.      message.  The assignment of Protocol IDs for this field is given
  1243.      over to IANA as described in Section C.  Protocols with current
  1244.      documents have the following defined values:
  1245.  
  1246.        1 - ATMARP
  1247.        2 - NHRP
  1248.        3 - MARS
  1249.        4 - DHCP
  1250.        5 - LNNI
  1251.  
  1252.    Server Group ID
  1253.      This ID is uniquely identifies the instance of a given
  1254.      client/server protocol for which servers are being synchronized.
  1255.  
  1256.    Flags
  1257.      The Flags field is message specific, and its use will be described
  1258.      in the specific message format sections below.
  1259.  
  1260.    Sender ID Len
  1261.      This field holds the length in octets of the Sender ID.
  1262.  
  1263.    Recvr ID Len
  1264.      This field holds the length in octets of the Receiver ID.
  1265.  
  1266.    Number of Records
  1267.      This field contains the number of additional records associated
  1268.      with the given message.  The exact format of these records is
  1269.      specific to the message and will be described for each message type
  1270.      in the sections below.
  1271.  
  1272.    Sender ID
  1273.      This is an identifier assigned to the server which is sending the
  1274.      given message.  One possible assignment might be the protocol
  1275.      address of the sending server.
  1276.  
  1277.    Receiver ID
  1278.      This is an identifier assigned to the server which is to receive
  1279.      the given message.  One possible assignment might be the protocol
  1280.      address of the server which is to receive the given message.
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290. Luciani, et. al.            Standards Track                    [Page 23]
  1291.  
  1292. RFC 2334                          SCSP                        April 1998
  1293.  
  1294.  
  1295. B.2.0.2 Cache State Advertisement Summary Record (CSAS record)
  1296.  
  1297.    CSAS records contain a summary of information contained in a cache
  1298.    entry of a given client/server database which is being synchronized
  1299.    through the use of SCSP.  The summary includes enough information for
  1300.    SCSP to look into the client/server database for the appropriate
  1301.    database cache entry and then compare the "newness" of the summary
  1302.    against the "newness" of the cached entry.
  1303.  
  1304.    Note that CSAS records do not contain a Server Group ID (SGID) nor do
  1305.    they contain a Protocol ID.  These IDs are necessary to identify
  1306.    which protocol and which instance of that protocol for which the
  1307.    summary is applicable.  These IDs are present in the mandatory common
  1308.    part of each message.
  1309.  
  1310.    Note also that the values of the Hop Count and Record Length fields
  1311.    of a CSAS Record are dependent on whether the CSAS record exists as a
  1312.    "stand-alone" record or whether the CSAS record is "embedded" in CSA
  1313.    Record.  This is further described below.
  1314.  
  1315.     0                   1                   2                   3
  1316.     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
  1317.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1318.    |           Hop Count           |        Record Length          |
  1319.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1320.    | Cache Key Len |  Orig ID Len  |N|          unused             |
  1321.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1322.    |                       CSA Sequence Number                     |
  1323.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1324.    |                           Cache Key  ...                      |
  1325.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1326.    |                         Originator ID   ...                   |
  1327.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1328.  
  1329.    Hop Count
  1330.      This field represents the number of hops that the record may take
  1331.      before being dropped.  Thus, at each server that the record
  1332.      traverses, the Hop Count is decremented.  This field is set to 1
  1333.      when the CSAS record is a "stand-alone" record (i.e., it is not
  1334.      embedded within a CSA record) since summaries do not go beyond one
  1335.      hop during the cache alignment process.  If a CSAS record is
  1336.      "embedded" within a CSA record then the Hop Count is set to an
  1337.      administratively defined value which is almost certainly greater
  1338.      than or equal to the the cardinality of the SG minus one.  Note
  1339.      that an exception to the previous rule occurs when the CSA Record
  1340.      is carried within a CSU Request which was sent in response to a
  1341.      solicitation (i.e., in response to a CSAS Record which was sent in
  1342.      a CSUS message); in which case, the Hop Count SHOULD be set to 1.
  1343.  
  1344.  
  1345.  
  1346. Luciani, et. al.            Standards Track                    [Page 24]
  1347.  
  1348. RFC 2334                          SCSP                        April 1998
  1349.  
  1350.  
  1351.    Record Length
  1352.      If the CSAS record is a "stand-alone" record then this value is
  1353.      12+"Cache Key Leng"+"Orig ID Len" in bytes; otherwise, this value
  1354.      is set to 12+"Cache Key Leng"+"Orig ID Len"+ sizeof("Client/Server
  1355.      Protocol Specific Part for cache entry").  The size of the
  1356.      Client/Server Protocol Specific Part may be obtained from the
  1357.      client/server protocol specific document for the given Protocol ID.
  1358.  
  1359.    Cache Key Len
  1360.      Length of the Cache Key field in bytes.
  1361.  
  1362.    Orig ID Len.
  1363.      Length of the Originator ID field in bytes.
  1364.  
  1365.    N
  1366.      The "N" bit signifies that this CSAS Record is actually a Null
  1367.      record.  This bit is only used in a CSAS Record contained in a CSU
  1368.      Request/Reply which is sent in response to a CSUS message.  It is
  1369.      possible that an LS may receive a solicitation for a CSA record
  1370.      when the cache entry represented by the solicited CSA Record no
  1371.      longer exists in the LS's cache (see Section 2.3 for details).  In
  1372.      this case, the LS copies the CSAS Record directly from the CSUS
  1373.      message into the CSU Request, and the LS sets the N bit signifying
  1374.      that the cache entry does not exist any longer.  The DCS which
  1375.      solicited the CSA record which no longer exists will still respond
  1376.      with a CSU Reply.  This bit is usually set to zero.
  1377.  
  1378.    CSA Sequence Number
  1379.      This field contains a sequence number that identifies the "newness"
  1380.      of a CSA record instance being summarized.  A "larger" sequence
  1381.      number means a more recent advertisement.  Thus, if the state of
  1382.      part (or all) of a cache entry needs to be updated then the CSA
  1383.      record advertising the new state MUST contain a CSA Sequence Number
  1384.      which is larger than the one corresponding to the previous
  1385.      advertisement.  This number is assigned by the originator of the
  1386.      CSA record.  The CSA Sequence Number may be assigned by the
  1387.      originating server or by the client which caused its server to
  1388.      advertise its existence.
  1389.  
  1390.      The CSA Sequence Number is a signed 32 bit number.  Within the CSA
  1391.      Sequence Number space, the number -2^31 (0x80000000) is reserved.
  1392.      Thus, the usable portion of the CSA Sequence Number space for a
  1393.      given Cache Key is between the numbers -2^31+1 (0x80000001) and
  1394.      2^31-1 (0x7fffffff).  An LS uses -2^31+1 the first time it
  1395.      originates a CSA Record for a cache entry that it created.  Each
  1396.      time the cache entry is modified in some manner and when that
  1397.      modification needs to be synchronized with the other servers in the
  1398.      SG, the LS increments the CSA Sequence number associated with the
  1399.  
  1400.  
  1401.  
  1402. Luciani, et. al.            Standards Track                    [Page 25]
  1403.  
  1404. RFC 2334                          SCSP                        April 1998
  1405.  
  1406.  
  1407.      given Cache Key and uses that new CSA Sequence Number when
  1408.      advertising the update.  If it is ever the case that a given CSA
  1409.      Sequence Number has reached 2^31-2 and the associated cache entry
  1410.      has been modified such that an update must be sent to the rest of
  1411.      the servers in the SG then the given cache entry MUST first be
  1412.      purged from the SG by the LS by sending a CSA Record which causes
  1413.      the cache entry to be removed from other servers and this CSA
  1414.      Record carries a CSA Sequence Number of 2^31-1.  The exact packet
  1415.      format and mechanism by which a cache entry is purged is defined in
  1416.      the appropriate protocol specific document.  After the purging CSA
  1417.      Record has been acknowledged by each DCS, an LS will then send a
  1418.      new CSA Record carrying the updated information, and this new CSA
  1419.      Record will carry a CSA Sequence Number of -2^31+1.
  1420.  
  1421.      After a restart occurs and after the restarting LS's CAFSM has
  1422.      achieved the Aligned state, if an update to an existing cache entry
  1423.      needs to be synchronized or a new cache entry needs to be
  1424.      synchronized then the ensuing CSA Record MUST contain a CSA
  1425.      Sequence Number which is unique within the SG for the given OID and
  1426.      Cache Key.  The RECOMMENDED method of obtaining this number (unless
  1427.      explicitly stated to the contrary in the protocol specific
  1428.      document) is to set the CSA Sequence Number in the CSA Record to
  1429.      the CSA Sequence Number associated with the existing cache entry
  1430.      (if an out of date cache entry already exists and zero if not) plus
  1431.      a configured constant.  Note that the protocol specific document
  1432.      may require that all cache entries containing the OID of the
  1433.      restarting LS be purged prior to updating the cache entries; in
  1434.      this case, the updating CSA Record will still contain a CSA
  1435.      Sequence Number set to the CSA Sequence Number associated with the
  1436.      previously existing cache entry plus a configured constant.
  1437.  
  1438.    Cache Key
  1439.      This is a database lookup key that uniquely identifies a piece of
  1440.      data which the originator of a CSA Record wishes to synchronize
  1441.      with its peers for a given "Protocol ID/Server Group ID" pair.
  1442.      This key will generally be a small opaque byte string which SCSP
  1443.      will associate with a given piece of data in a cache.  Thus, for
  1444.      example, an originator might assign a particular 4 byte string to
  1445.      the binding of an IP address with that of an ATM address.
  1446.      Generally speaking, the originating server of a CSA record is
  1447.      responsible for generating a Cache Key for every element of data
  1448.      that the the given server originates and which the server wishes to
  1449.      synchronize with its peers in the SG.
  1450.  
  1451.    Originator ID
  1452.      This field contains an ID administratively assigned to the server
  1453.      which is the originator of CSA Records.
  1454.  
  1455.  
  1456.  
  1457.  
  1458. Luciani, et. al.            Standards Track                    [Page 26]
  1459.  
  1460. RFC 2334                          SCSP                        April 1998
  1461.  
  1462.  
  1463. B.2.1 Cache Alignment (CA)
  1464.  
  1465.    The Cache Alignment (CA) message allows an LS to synchronize its
  1466.    entire cache with that of the cache of its DCSs within a server
  1467.    group. The CA message type code is 1. The CA message mandatory part
  1468.    format is as follows:
  1469.  
  1470.     0                   1                   2                   3
  1471.     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
  1472.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1473.    |                     CA  Sequence Number                       |
  1474.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1475.    |                    Mandatory Common Part                      |
  1476.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1477.    |                          CSAS Record                          |
  1478.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1479.                                 .......
  1480.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1481.    |                          CSAS Record                          |
  1482.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1483.  
  1484.    CA Sequence Number
  1485.      A value which provides a unique identifier to aid in the sequencing
  1486.      of the cache alignment process.  A "larger" sequence number means a
  1487.      more recent CA message.  The slave server always copies the
  1488.      sequence number from the master server's previous CA message into
  1489.      its current CA message which it is sending and the the slave
  1490.      acknowledges the master's CA message.  Since the initial CA process
  1491.      is lock-step, if the slave does not receive the same sequence
  1492.      number which it previously received then the information in the
  1493.      slave's previous CA message is implicitly acknowledged. Note that
  1494.      there is a separate CA Sequence Number space associated with each
  1495.      CAFSM.
  1496.  
  1497.      Whenever it is necessary to (re)start cache alignment and the CAFSM
  1498.      enters the Master/Slave Negotiation state, the CA Sequence Number
  1499.      should be set to a value not previously seen by the DCS.  One
  1500.      possible scheme is to use the machine's time of day counter.
  1501.  
  1502.    Mandatory Common Part
  1503.      The mandatory common part is described in detail in Section
  1504.      B.2.0.1.  There are two fields in the mandatory common part whose
  1505.      codings are specific to a given message type.  These fields are the
  1506.      "Number of Records" field and the "Flags" field.
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514. Luciani, et. al.            Standards Track                    [Page 27]
  1515.  
  1516. RFC 2334                          SCSP                        April 1998
  1517.  
  1518.  
  1519.      Number of Records
  1520.        The Number of Records field of the mandatory common part for the
  1521.        CA message gives the number of CSAS Records appended to the CA
  1522.        message mandatory part.
  1523.  
  1524.      Flags
  1525.        The Flags field of the mandatory common part for the CA message
  1526.        has the following format:
  1527.  
  1528.         0                   1
  1529.         0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  1530.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1531.        |M|I|O|         unused          |
  1532.        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1533.  
  1534.        M
  1535.          This bit is part of the negotiation process for the cache
  1536.          alignment.  When this bit is set then the sender of the CA
  1537.          message is indicating that it wishes to lead the alignment
  1538.          process.  This bit is the "Master/Slave bit".
  1539.  
  1540.        I
  1541.          When set, this bit indicates that the sender of the CA message
  1542.          believes that it is in a state where it is negotiating for the
  1543.          status of master or slave.  This bit is the "Initialization
  1544.          bit".
  1545.  
  1546.        O
  1547.          This bit indicates that the sender of the CA message has more
  1548.          CSAS records to send.  This implies that the cache alignment
  1549.          process must continue.  This bit is the "mOre bit" despite its
  1550.          dubious name.
  1551.  
  1552.      All other fields of the mandatory common part are coded as
  1553.      described in Section B.2.0.1.
  1554.  
  1555.    CSAS record
  1556.      The CA message appends CSAS records to the end of its mandatory
  1557.      part.  These CSAS records are NOT embedded in CSA records.  See
  1558.      Section B.2.0.2 for details on CSAS records.
  1559.  
  1560. B.2.2 Cache State Update Request (CSU Request)
  1561.  
  1562.    The Cache State Update Request (CSU Request) message is used to
  1563.    update the state of cache entries in servers which are directly
  1564.    connected to the server sending the message.   A CSU Request message
  1565.    is sent from one server (the LS) to directly connected server (the
  1566.    DCS) when the LS observes changes in the state of one or more cache
  1567.  
  1568.  
  1569.  
  1570. Luciani, et. al.            Standards Track                    [Page 28]
  1571.  
  1572. RFC 2334                          SCSP                        April 1998
  1573.  
  1574.  
  1575.    entries.  An LS observes such a change in state by either receiving a
  1576.    CSU request which causes an update to the LS's database or by
  1577.    observing a change of state of a cached entry originated by the LS.
  1578.    The change in state of a cache entry is noted in a CSU message by
  1579.    appending a "Cache State Advertisement" (CSA) record to the end of
  1580.    the mandatory part of the CSU Request as shown below.
  1581.  
  1582.    The CSU Request message type code is 2.  The CSU Request message
  1583.    mandatory part format is as follows:
  1584.  
  1585.     0                   1                   2                   3
  1586.     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
  1587.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1588.    |                    Mandatory Common Part                      |
  1589.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1590.    |                         CSA Record                            |
  1591.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1592.                               .......
  1593.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1594.    |                         CSA Record                            |
  1595.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1596.  
  1597.  
  1598.    Mandatory Common Part
  1599.      The mandatory common part is described in detail in Section
  1600.      B.2.0.1.  There are two fields in the mandatory common part whose
  1601.      codings are specific to a given message type.  These fields are the
  1602.      "Number of Records" field and the "Flags" field.
  1603.  
  1604.      Number of Records
  1605.        The Number of Records field of the mandatory common part for the
  1606.        CSU Request message gives the number of CSA Records appended to
  1607.        the CSU Request message mandatory part.
  1608.  
  1609.      Flags
  1610.        Currently, there are no flags defined for the Flags field of the
  1611.        mandatory common part for the CSU Request message.
  1612.  
  1613.      All other fields of the mandatory common part are coded as
  1614.      described in Section B.2.0.1.
  1615.  
  1616.    CSA Record
  1617.      See Section B.2.2.1.
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626. Luciani, et. al.            Standards Track                    [Page 29]
  1627.  
  1628. RFC 2334                          SCSP                        April 1998
  1629.  
  1630.  
  1631. B.2.2.1 Cache State Advertisement Record (CSA record)
  1632.  
  1633.    CSA records contain the information necessary to relate the current
  1634.    state of a cache entry in an SG to the servers being synchronized.
  1635.    CSA records contain a CSAS Record header and a client/server protocol
  1636.    specific part. The CSAS Record includes enough information for SCSP
  1637.    to look into the client/server database for the appropriate database
  1638.    cache entry and then compare the "newness" of the summary against the
  1639.    "newness" of the cached entry.  If the information contained in the
  1640.    CSA is more new than the cached entry of the receiving server then
  1641.    the cached entry is updated accordingly with the contents of the CSA
  1642.    Record.  The client/server protocol specific part of the CSA Record
  1643.    is documented separately for each such protocol.  Examples of the
  1644.    protocol specific parts for NHRP and ATMARP are shown in [8] and [9]
  1645.    respectively.
  1646.  
  1647.    The amount of information carried by a specific CSA record may exceed
  1648.    the size of a link layer PDU.  Hence, such CSA records MUST be
  1649.    fragmented across a number of CSU Request messages. The method by
  1650.    which this is done, is client/server protocol specific and is
  1651.    documented in the appropriate protocol specific document.
  1652.  
  1653.    The content of a CSA record is as follows:
  1654.  
  1655.     0                   1                   2                   3
  1656.     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
  1657.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1658.    |                          CSAS Record                          |
  1659.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1660.    |   Client/Server Protocol Specific Part for cache entry ...    |
  1661.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1662.  
  1663.    CSAS Record
  1664.      See Section B.2.0.2 for rules and format for filling out a CSAS
  1665.      Record when it is "embedded" in a CSA Record.
  1666.  
  1667.    Client/Server Protocol Specific Part for cache entry
  1668.      This field contains the fields which are specific to the protocol
  1669.      specific portion of SCSP processing.  The particular set of fields
  1670.      are defined in separate documents for each protocol user of SCSP.
  1671.      The Protocol ID, which identifies which protocol is using SCSP in
  1672.      the given packet, is located in the mandatory part of the message.
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682. Luciani, et. al.            Standards Track                    [Page 30]
  1683.  
  1684. RFC 2334                          SCSP                        April 1998
  1685.  
  1686.  
  1687. B.2.3 Cache State Update Reply (CSU Reply)
  1688.  
  1689.    The Cache State Update Reply (CSU Reply) message is sent from a DCS
  1690.    to an LS to acknowledge one or more CSA records which were received
  1691.    in a CSU Request.  Reception of a CSA record in a CSU Request is
  1692.    acknowledged by including a CSAS record in the CSU Reply which
  1693.    corresponds to the CSA record being acknowledged.  The CSU Reply
  1694.    message is the same in format as the CSU Request message except for
  1695.    the following: the type code is 3, only CSAS Records (rather than CSA
  1696.    records) are returned, and only those CSAS Records for which CSA
  1697.    Records are being acknowledged are returned.  This implies that a
  1698.    given LS sending a CSU Request may not receive an acknowledgment in a
  1699.    single CSU Reply for all the CSA Records included in the CSU Request.
  1700.  
  1701. B.2.4 Cache State Update Solicit Message (CSUS message)
  1702.  
  1703.    This message allows one server (LS) to solicit the entirety of CSA
  1704.    record data stored in the cache of a directly connected server (DCS).
  1705.    The DCS responds with CSU Request messages containing the appropriate
  1706.    CSA records.  The CSUS message type code is 4.  The CSUS message
  1707.    format is the same as that of the CSU Reply message.  CSUS messages
  1708.    solicit CSU Requests from only one server (the one identified by the
  1709.    Receiver ID in the Mandatory Part of the message).
  1710.  
  1711. B.2.5 Hello:
  1712.  
  1713.    The Hello message is used to check connectivity between the sending
  1714.    server (the LS) and one of its directly connected neighbor servers
  1715.    (the DCSs).  The Hello message type code is 5.  The Hello message
  1716.    mandatory part format is as follows:
  1717.  
  1718.     0                   1                   2                   3
  1719.     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
  1720.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1721.    |         HelloInterval         |          DeadFactor           |
  1722.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1723.    |            unused             |          Family ID            |
  1724.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1725.    |                    Mandatory Common Part                      |
  1726.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1727.    |                 Additional Receiver ID Record                 |
  1728.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1729.                                .........
  1730.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1731.    |                 Additional Receiver ID Record                 |
  1732.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738. Luciani, et. al.            Standards Track                    [Page 31]
  1739.  
  1740. RFC 2334                          SCSP                        April 1998
  1741.  
  1742.  
  1743.    HelloInterval
  1744.      The hello interval advertises the time between sending of
  1745.      consecutive Hello Messages.  If the LS does not receive a Hello
  1746.      message from the DCS (which contains the LSID as a Receiver ID)
  1747.      within the HelloInterval advertised by the DCS then the DCS's Hello
  1748.      is considered to be late.  Also, the LS MUST send its own Hello
  1749.      message to a DCS within the HelloInterval which it advertised to
  1750.      the DCS in the LS's previous Hello message to that DCS (otherwise
  1751.      the DCS would consider the LS's Hello to be late).
  1752.  
  1753.    DeadFactor
  1754.      This is a multiplier to the HelloInterval. If an LS does not
  1755.      receive a Hello message which contains the LS's LSID as a Receiver
  1756.      ID within the interval HelloInterval*DeadFactor from a given DCS,
  1757.      which advertised the HelloInterval and DeadFactor in a previous
  1758.      Hello message, then the LS MUST consider the DCS to be stalled; at
  1759.      this point, one of two things MUST happen: 1) if the LS has
  1760.      received any Hello messages from the DCS during this time then the
  1761.      LS transitions the corresponding HFSM to the Unidirectional State;
  1762.      otherwise, 2) the LS transitions the corresponding HFSM to the
  1763.      Waiting State.
  1764.  
  1765.    Family ID
  1766.      This is an opaque bit string which is used to refer to an aggregate
  1767.      of Protocol ID/SGID pairs.  Only a single HFSM is run for all
  1768.      Protocol ID/SGID pairs assigned to a Family ID.  Thus, there is a
  1769.      one to many mapping between the single HFSM and the CAFSMs
  1770.      corresponding to each of the Protocol ID/SGID pairs.  This might
  1771.      have the net effect of substantially reducing HFSM maintenance
  1772.      traffic.  See the protocol specific SCSP documents for further
  1773.      details.
  1774.  
  1775.    Mandatory Common Part
  1776.      The mandatory common part is described in detail in Section
  1777.      B.2.0.1.  There are two fields in the mandatory common part whose
  1778.      codings are specific to a given message type.  These fields are the
  1779.      "Number of Records" field and the "Flags" field.
  1780.  
  1781.      Number of Records
  1782.        The Number of Records field of the mandatory common part for the
  1783.        Hello message contains the number of "Additional Receiver ID"
  1784.        records which are included in the Hello.  Additional Receiver ID
  1785.        records contain a length field and a Receiver ID field.  Note
  1786.        that the count in "Number of Records" does NOT include the
  1787.        Receiver ID which is included in the Mandatory Common Part.
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794. Luciani, et. al.            Standards Track                    [Page 32]
  1795.  
  1796. RFC 2334                          SCSP                        April 1998
  1797.  
  1798.  
  1799.      Flags
  1800.        Currently, there are no flags defined for the Flags field of the
  1801.        mandatory common part for the Hello message.
  1802.  
  1803.      All other fields of the mandatory common part are coded as
  1804.      described in Section B.2.0.1.
  1805.  
  1806.    Additional Receiver ID Record
  1807.      This record contains a length field followed by a Receiver ID.
  1808.      Since it is conceivable that the length of a given Receiver ID may
  1809.      vary even within an SG, each additional Receiver ID heard (beyond
  1810.      the first one) will have both its length in bytes and value encoded
  1811.      in an "Additional Receiver ID Record".  Receiver IDs are IDs of a
  1812.      DCS from which the LS has heard a recent Hello (i.e., within
  1813.      DeadFactor*HelloInterval as advertised by the DCS in a previous
  1814.      Hello message).
  1815.  
  1816.      The format for this record is as follows:
  1817.  
  1818.       0                   1                   2                   3
  1819.       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
  1820.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1821.      |  Rec ID Len   |                 Receiver ID                   |
  1822.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1823.  
  1824.    If the LS has not heard from any DCS then the LS sets the Hello
  1825.    message fields as follows: Recvr ID Len is set to zero and no storage
  1826.    is allocated for the Receiver ID in the Common Mandatory Part,
  1827.    "Number of Records" is set to zero, and no storage is allocated for
  1828.    "Additional Receiver ID Records".
  1829.  
  1830.    If the LS has heard from exactly one DCS then the LS sets the Hello
  1831.    message fields as follows: the Receiver ID of the DCS which was heard
  1832.    and the length of that Receiver ID are encoded in the Common
  1833.    Mandatory Part, "Number of Records" is set to zero, and no storage is
  1834.    allocated for "Additional Receiver ID Records".
  1835.  
  1836.    If the LS has heard from two or more DCSs then the LS sets the Hello
  1837.    message fields as follows: the Receiver ID of the first DCS which was
  1838.    heard and the length of that Receiver ID are encoded in the Common
  1839.    Mandatory Part, "Number of Records" is set to the number of
  1840.    "Additional" DCSs heard, and for each additional DCS an "Additional
  1841.    Receiver ID Record" is formed and appended to the end of the Hello
  1842.    message.
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850. Luciani, et. al.            Standards Track                    [Page 33]
  1851.  
  1852. RFC 2334                          SCSP                        April 1998
  1853.  
  1854.  
  1855. B.3  Extensions Part
  1856.  
  1857.    The Extensions Part, if present, carries one or more extensions in
  1858.    {Type, Length, Value} triplets.
  1859.  
  1860.    Extensions have the following format:
  1861.  
  1862.     0                   1                   2                   3
  1863.     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
  1864.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1865.    |            Type               |           Length              |
  1866.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1867.    |                         Value...                              |
  1868.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1869.  
  1870.    Type
  1871.      The extension type code (see below).
  1872.  
  1873.    Length
  1874.      The length in octets of the value (not including the Type and
  1875.      Length fields;  a null extension will have only an extension header
  1876.      and a length of zero).
  1877.  
  1878.    When extensions exist, the extensions part is terminated by the End
  1879.    of Extensions extension, having Type = 0 and Length = 0.
  1880.  
  1881.    Extensions may occur in any order but any particular extension type
  1882.    may occur only once in an SCSP packet.  An LS MUST NOT change the
  1883.    order of extensions.
  1884.  
  1885. B.3.0  The End Of Extensions
  1886.  
  1887.     Type = 0
  1888.     Length = 0
  1889.  
  1890.    When extensions exist, the extensions part is terminated by the End
  1891.    Of Extensions extension.
  1892.  
  1893. B.3.1 SCSP Authentication Extension
  1894.  
  1895.    Type = 1 Length = variable
  1896.  
  1897.    The SCSP Authentication Extension is carried in SCSP packets to
  1898.    convey the authentication information between an LS and a DCS in the
  1899.    same SG.
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906. Luciani, et. al.            Standards Track                    [Page 34]
  1907.  
  1908. RFC 2334                          SCSP                        April 1998
  1909.  
  1910.  
  1911.    Authentication is done pairwise on an LS to DCS basis; i.e., the
  1912.    authentication extension is generated at each LS. If a received
  1913.    packet fails the authentication test then an "abnormal event" has
  1914.    occurred. The packet is discarded and this event is logged.
  1915.  
  1916.    The presence or absence of authentication is a local matter.
  1917.  
  1918. B.3.1.1 Header Format
  1919.  
  1920.    The authentication header has the following format:
  1921.  
  1922.    0                   1                   2                   3
  1923.    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
  1924.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1925.    |               Security Parameter Index (SPI)                  |
  1926.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1927.    |                                                               |
  1928.    +-+-+-+-+-+-+-+-+-+-+ Authentication Data... -+-+-+-+-+-+-+-+-+-+
  1929.    |                                                               |
  1930.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1931.  
  1932.    Security Parameter Index (SPI) can be thought of as an index into a
  1933.    table that maintains the keys and other information such as hash
  1934.    algorithm. LS and DCS communicate either off-line using manual keying
  1935.    or online using a key management protocol to populate this table. The
  1936.    receiving SCSP entity always allocates the SPI and the parameters
  1937.    associated with it.
  1938.  
  1939.    The authentication data field contains the MAC (Message
  1940.    Authentication Code) calculated over the entire SCSP payload. The
  1941.    length of this field is dependent on the hash algorithm used to
  1942.    calculate the MAC.
  1943.  
  1944. B.3.1.2 Supported Hash Algorithms
  1945.  
  1946.    The default hash algorithm to be supported is HMAC-MD5-128 [11]. HMAC
  1947.    is safer than normal keyed hashes. Other hash algorithms MAY be
  1948.    supported by def.
  1949.  
  1950.    IANA will assign the numbers to identify the algorithm being used as
  1951.    described in Section C.
  1952.  
  1953. B.3.1.3 SPI and Security Parameters Negotiation
  1954.  
  1955.    SPI's can be negotiated either manually or using an Internet Key
  1956.    Management protocol. Manual keying MUST be supported. The following
  1957.    parameters are associated with the tuple <SPI, DCS ID>- lifetime,
  1958.    Algorithm, Key. Lifetime indicates the duration in seconds for which
  1959.  
  1960.  
  1961.  
  1962. Luciani, et. al.            Standards Track                    [Page 35]
  1963.  
  1964. RFC 2334                          SCSP                        April 1998
  1965.  
  1966.  
  1967.    the key is valid. In case of manual keying, this duration can be
  1968.    infinite. Also, in order to better support manual keying, there may
  1969.    be multiple tuples active at the same time (DCS ID being the same).
  1970.  
  1971.    Any Internet standard key management protocol MAY be used to
  1972.    negotiate the SPI and parameters.
  1973.  
  1974. B.3.1.4 Message Processing
  1975.  
  1976.    At the time of adding the authentication extension header, LS looks
  1977.    up in a table to fetch the SPI and the security parameters based on
  1978.    the DCS ID. If there are no entries in the table and if there is
  1979.    support for key management, the LS initiates the key management
  1980.    protocol to fetch the necessary parameters. The LS then calculates
  1981.    the hash by zeroing authentication data field before calculating the
  1982.    MAC on the sending end. The result replaces in the zeroed
  1983.    authentication data field. If key management is not supported and
  1984.    authentication is mandatory, the packet is dropped and this
  1985.    information is logged.
  1986.  
  1987.    When receiving traffic, an LS fetches the parameters based on the SPI
  1988.    and its ID. The authentication data field is extracted before zeroing
  1989.    out to calculate the hash. It computes the hash on the entire payload
  1990.    and if the hash does not match, then an "abnormal event" has
  1991.    occurred.
  1992.  
  1993. B.3.1.5 Security Considerations
  1994.  
  1995.    It is important that the keys chosen are strong as the security of
  1996.    the entire system depends on the keys being chosen properly and the
  1997.    correct implementation of the algorithms.
  1998.  
  1999.    SCSP has a peer to peer trust model. It is recommended to use an
  2000.    Internet standard key management protocol to negotiate the keys
  2001.    between the neighbors. Transmitting the keys in clear text, if other
  2002.    methods of negotiation is used, compromises the security completely.
  2003.  
  2004.    Data integrity covers the entire SCSP payload. This guarantees that
  2005.    the message was not modified and the source is authenticated as well.
  2006.    If authentication extension is not used or if the security is
  2007.    compromised, then SCSP servers are liable to both spoofing attacks,
  2008.    active attacks and passive attacks.
  2009.  
  2010.    There is no mechanism to encrypt the messages. It is assumed that a
  2011.    standard layer 3 confidentiality mechanism will be used to encrypt
  2012.    and decrypt messages.  As integrity is calculated on an SCSP message
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018. Luciani, et. al.            Standards Track                    [Page 36]
  2019.  
  2020. RFC 2334                          SCSP                        April 1998
  2021.  
  2022.  
  2023.    and not on each record, there is an implied trust between all the
  2024.    servers in a domain. It is recommend to use the security extension
  2025.    between all the servers in a domain and not just a subset servers.
  2026.  
  2027.    Any SCSP server is susceptible to Denial of Service (DOS) attacks. A
  2028.    rouge host can inundate its neighboring SCSP server with SCSP
  2029.    packets. However, if the authentication option is used, SCSP
  2030.    databases will not become corrupted, as the bogus packets will be
  2031.    discarded when the authentication check fails.
  2032.  
  2033.    Due to the pairwise authentication model of SCSP, the information
  2034.    received from any properly authenticated server is trusted and
  2035.    propagated throughout the server group.  Consequently, if security of
  2036.    any SCSP server is compromised, the entire database becomes
  2037.    vulnerable to curruption originating from the compromised server.
  2038.  
  2039. B.3.2  SCSP Vendor-Private Extension
  2040.  
  2041.     Type = 2
  2042.     Length = variable
  2043.  
  2044.    The SCSP Vendor-Private Extension is carried in SCSP packets to
  2045.    convey vendor-private information between an LS and a DCS in the same
  2046.    SG and is thus of limited use.  If a finer granularity (e.g., CSA
  2047.    record level) is desired then then given client/server protocol
  2048.    specific SCSP document MUST define such a mechanism.  Obviously,
  2049.    however, such a protocol specific mechanism might look exactly like
  2050.    this extension.  The Vendor Private Extension MAY NOT appear more
  2051.    than once in an SCSP packet for a given Vendor ID value.
  2052.  
  2053.     0                   1                   2                   3
  2054.     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
  2055.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2056.    |                  Vendor ID                    |  Data....     |
  2057.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2058.  
  2059.    Vendor ID
  2060.      802 Vendor ID as assigned by the IEEE [7].
  2061.  
  2062.    Data
  2063.      The remaining octets after the Vendor ID in the payload are
  2064.      vendor-dependent data.
  2065.  
  2066.    If the receiver does not handle this extension, or does not match the
  2067.    Vendor ID in the extension then the extension may be completely
  2068.    ignored by the receiver.
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074. Luciani, et. al.            Standards Track                    [Page 37]
  2075.  
  2076. RFC 2334                          SCSP                        April 1998
  2077.  
  2078.  
  2079. C. IANA Considerations
  2080.  
  2081.    Any and all requests for value assignment from the various number
  2082.    spaces described in this document require proper documentation.
  2083.    Possible forms of documentation include, but are not limited to, RFCs
  2084.    or the product of another cooperative standards body (e.g., the MPOA
  2085.    and LANE subworking group of the ATM Forum). Other requests may also
  2086.    be accepted, under the advice of a "designated expert". (Contact the
  2087.    IANA for the contact information of the current expert.)
  2088.  
  2089. References
  2090.  
  2091.    [1] Laubach, M., and J. Halpern, "Classical IP and ARP over ATM",
  2092.    Laubach, RFC 2225, April 1998.
  2093.  
  2094.    [2] Luciani, J., Katz, D., Piscitello, D., Cole, B., and N.
  2095.    Doraswamy, "NMBA Next Hop Resolution Protocol (NHRP)", RFC 2332,
  2096.    April 1998.
  2097.  
  2098.    [3] Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998.
  2099.  
  2100.    [4] "P-NNI V1", Dykeman, Goguen, 1996.
  2101.  
  2102.    [5] Armitage, G., "Support for Multicast over UNI 3.0/3.1 based ATM
  2103.    Networks", RFC 2022, November 1996.
  2104.  
  2105.    [6] Keene, "LAN Emulation over ATM Version 2 - LNNI specification",
  2106.    btd-lane-lnni-02.08
  2107.  
  2108.    [7] Reynolds, J., and J. Postel, "Assigned Numbers", STD 2, RFC 1700,
  2109.    October 1994.
  2110.  
  2111.    [8] Luciani, J., "A Distributed NHRP Service Using SCSP", RFC 2335,
  2112.    April 1998.
  2113.  
  2114.    [9] Luciani, J., "A Distributed ATMARP Service Using SCSP", Work In
  2115.    Progress.
  2116.  
  2117.    [10] Bradner, S., "Key words for use in RFCs to Indicate Requirement
  2118.    Levels", BCP 14, RFC 2119, March 1997.
  2119.  
  2120.    [11] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed Hashing
  2121.    for Message Authentication", RFC 2104, February 1997.
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130. Luciani, et. al.            Standards Track                    [Page 38]
  2131.  
  2132. RFC 2334                          SCSP                        April 1998
  2133.  
  2134.  
  2135. Acknowledgments
  2136.  
  2137.    This memo is a distillation of issues raised during private
  2138.    discussions, on the IP-ATM mailing list, and during the Dallas IETF
  2139.    (12/95). Thanks to all who have contributed but particular thanks to
  2140.    following people (in no particular order): Barbara Fox of Harris and
  2141.    Jeffries; Colin Verrilli of IBM; Raj Nair, and Matthew Doar of Ascom
  2142.    Nexion; Andy Malis of Cascade; Andre Fredette of Bay Networks; James
  2143.    Watt of Newbridge; and Carl Marcinik of Fore.
  2144.  
  2145. Authors' Addresses
  2146.  
  2147.    James V. Luciani
  2148.    Bay Networks, Inc.
  2149.    3 Federal Street, BL3-03
  2150.    Billerica, MA  01821
  2151.  
  2152.    Phone: +1-978-916-4734
  2153.    EMail: luciani@baynetworks.com
  2154.  
  2155.  
  2156.    Grenville Armitage
  2157.    Bell Labs Lucent Technologies
  2158.    101 Crawfords Corner Road
  2159.    Holmdel, NJ 07733
  2160.  
  2161.    Phone: +1 201 829 2635
  2162.    EMail: gja@lucent.com
  2163.  
  2164.  
  2165.    Joel M. Halpern
  2166.    Newbridge Networks Corp.
  2167.    593 Herndon Parkway
  2168.    Herndon, VA 22070-5241
  2169.  
  2170.    Phone: +1-703-708-5954
  2171.    EMail: jhalpern@Newbridge.COM
  2172.  
  2173.  
  2174.    Naganand Doraswamy
  2175.    Bay Networks, Inc.
  2176.    3 Federal St, BL3-03
  2177.    Billerice, MA 01821
  2178.  
  2179.    Phone: +1-978-916-1323
  2180.    EMail: naganand@baynetworks.com
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186. Luciani, et. al.            Standards Track                    [Page 39]
  2187.  
  2188. RFC 2334                          SCSP                        April 1998
  2189.  
  2190.  
  2191. Full Copyright Statement
  2192.  
  2193.    Copyright (C) The Internet Society (1998).  All Rights Reserved.
  2194.  
  2195.    This document and translations of it may be copied and furnished to
  2196.    others, and derivative works that comment on or otherwise explain it
  2197.    or assist in its implementation may be prepared, copied, published
  2198.    and distributed, in whole or in part, without restriction of any
  2199.    kind, provided that the above copyright notice and this paragraph are
  2200.    included on all such copies and derivative works.  However, this
  2201.    document itself may not be modified in any way, such as by removing
  2202.    the copyright notice or references to the Internet Society or other
  2203.    Internet organizations, except as needed for the purpose of
  2204.    developing Internet standards in which case the procedures for
  2205.    copyrights defined in the Internet Standards process must be
  2206.    followed, or as required to translate it into languages other than
  2207.    English.
  2208.  
  2209.    The limited permissions granted above are perpetual and will not be
  2210.    revoked by the Internet Society or its successors or assigns.
  2211.  
  2212.    This document and the information contained herein is provided on an
  2213.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  2214.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  2215.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  2216.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  2217.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  2218.  
  2219.  
  2220.  
  2221.  
  2222.  
  2223.  
  2224.  
  2225.  
  2226.  
  2227.  
  2228.  
  2229.  
  2230.  
  2231.  
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242. Luciani, et. al.            Standards Track                    [Page 40]
  2243.  
  2244.