home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_i / draft-ietf-ion-scsp-01.txt < prev    next >
Text File  |  1997-04-16  |  86KB  |  1,968 lines

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