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-00.txt < prev    next >
Text File  |  1996-11-27  |  92KB  |  2,127 lines

  1.  
  2. Routing Over Large Clouds Working Group                 James V. Luciani
  3. INTERNET-DRAFT                                            (Bay Networks)
  4. <draft-ietf-ion-scsp-00.txt>                          Grenville Armitage
  5.                                                               (Bellcore)
  6.                                                             Joel Halpern
  7.                                                              (Newbridge)
  8.                                                        Expires June 1997
  9.  
  10.  
  11.  
  12.  
  13.  
  14.               Server Cache Synchronization Protocol (SCSP)
  15.  
  16.  
  17. Status of this Memo
  18.  
  19.    This document is an Internet-Draft.  Internet-Drafts are working
  20.    documents of the Internet Engineering Task Force (IETF), its areas,
  21.    and its working groups.  Note that other groups may also distribute
  22.    working documents as Internet-Drafts.
  23.  
  24.    Internet-Drafts are draft documents valid for a maximum of six months
  25.    and may be updated, replaced, or obsoleted by other documents at any
  26.    time.  It is inappropriate to use Internet-Drafts as reference
  27.    material or to cite them other than as ``work in progress.''
  28.  
  29.    To learn the current status of any Internet-Draft, please check the
  30.    ``1id-abstracts.txt'' listing contained in the Internet-Drafts Shadow
  31.    Directories on ds.internic.net (US East Coast), nic.nordu.net
  32.    (Europe), ftp.isi.edu (US West Coast), or munnari.oz.au (Pacific
  33.    Rim).
  34.  
  35. Abstract
  36.  
  37.    This document describes the Server Cache Synchronization Protocol
  38.    (SCSP) for Non Broadcast Multiple Access (NBMA) networks.  SCSP
  39.    attempts to solve the generalized server synchronization/cache-
  40.    replication problem wherein a set of server entities which are bound
  41.    to a Server Group (SG) through some means (e.g., all servers
  42.    belonging to the same Logical IP Subnet (LIS)[1]) wish to synchronize
  43.    the contents (or a portion thereof) of their caches.  These caches
  44.    contain information on the state of the clients within the scope of
  45.    interest of the SG.  An example of types of information that must be
  46.    synchronized can be seen in NHRP using IP where the information
  47.    includes the REGISTERED clients' IP to NBMA mappings in the SG LIS.
  48.  
  49.  
  50.  
  51.  
  52.  
  53. Luciani, et al.                                                 [Page 1]
  54.  
  55. INTERNET-DRAFT                    SCSP                 Expires June 1997
  56.  
  57.  
  58. 1. Introduction
  59.  
  60.    It is perhaps an obvious goal for any protocol to not limit itself to
  61.    a single point of failure such as having a single server in a
  62.    client/server paradigm.  Even when there are redundant servers, there
  63.    still remains the problem of cache synchronization; i.e.,  when one
  64.    server becomes aware of a change in state of cache information then
  65.    that server must propagate the knowledge of the change in state to
  66.    all servers which are actively mirroring that state information.
  67.    Further, this must be done in a timely fashion without putting undo
  68.    resource strains on the servers. Assuming that the state information
  69.    kept in the server cache is the state of clients of the server, then
  70.    in order to minimize the burden placed upon the client it is also
  71.    highly desirable that clients need not have complete knowledge of all
  72.    servers which they may use.  However, any mechanism for
  73.    synchronization should not preclude a client from having access to
  74.    several (or all) servers.  Of course, any solution must be reasonably
  75.    scalable, capable of using some autoconfiguration service, and lend
  76.    itself to a wide range of authentication methodologies
  77.  
  78.    This document describes the Server Cache Synchronization Protocol
  79.    (SCSP). SCSP solves the generalized server synchronization/cache-
  80.    replication problem while addressing the issues described above.
  81.    SCSP synchronizes caches (or a portion of the caches) of a set of
  82.    server entities which are bound to a Server Group (SG) through some
  83.    means (e.g., all NHRP servers belonging to a Logical IP Subnet
  84.    (LIS)[1]).  SGs are identified by an ID which, not surprisingly, is
  85.    called a SGID.  Note therefore that a SGID identifies both the
  86.    client/server protocol for which the servers of the SG are being
  87.    synchronized as well as the instance of that protocol.  This implies
  88.    that multiple instances of the same protocol may be in operation at
  89.    the same time and have their servers synchronized independently of
  90.    each other.  SGs may exist in any topology as long as the resultant
  91.    graph spans the set of servers that need to be synchronized.  The
  92.    caches which are to be synchronized contain information on the state
  93.    of the clients within the scope of interest of the SG.  An example of
  94.    types of information that must be synchronized can be seen in NHRP[2]
  95.    using IP where the information includes the REGISTERED clients' IP to
  96.    NBMA mappings in the SG LIS.
  97.  
  98.    Only the first few pages of this document constitute the SCSP
  99.    description proper.  However, this document also includes a
  100.    description of the use of SCSP by a number of protocols (e.g., NHRP,
  101.    ATMARP, etc.) and some optional functionality which may be
  102.    implemented as deemed appropriate.  It is hoped that these appendices
  103.    will spark interest in applying SCSP to the server synchronization
  104.    needs of other protocols by supplying examples of SCSP's use.
  105.  
  106.  
  107.  
  108.  
  109. Luciani, et al.                                                 [Page 2]
  110.  
  111. INTERNET-DRAFT                    SCSP                 Expires June 1997
  112.  
  113.  
  114. 2. Overview
  115.  
  116.    SCSP places no topological requirements upon upon the SG.  Obviously,
  117.    however, the resultant graph must span the set of servers to be
  118.    synchronized.  SCSP borrows heavily from the link state protocols
  119.    [3,4].  However, unlike those technologies, there is no Shortest Path
  120.    First (SPF) calculation and there are little or no additional memory
  121.    requirements imposed above and beyond that which is required to save
  122.    the cached information which would exist regardless of the
  123.    synchronization technology.
  124.  
  125.    In order to give a frame of reference for the following discussion,
  126.    the terms Local Server (LS), Directly Connected Server (DCS), and
  127.    Remote Server (RS) are introduced.  The LS is the server under
  128.    scrutiny; i.e., all statements are made from the perspective of the
  129.    LS when discussing the SCSP protocol. The DCS is a server which is
  130.    directly connected to the LS;  e.g., there exists a VC between the LS
  131.    and DCS.  Thus, every server is a DCS from the point of view of every
  132.    other server which connects to it directly, and every server is an LS
  133.    which has zero or more DCSs directly connected to it.  An RS is a
  134.    server that is neither an LS nor a DCS; i.e, an RS is always two or
  135.    more hops away from an LS (whereas a DCS is always one hop away from
  136.    an LS).
  137.  
  138.    SCSP contains three sub protocols: the "Hello" protocol, the "Cache
  139.    Alignment" protocol, and the "Client State Update" protocol.  The
  140.    "Hello" protocol is used to ascertain whether a DCS is operational
  141.    and whether the connection between the LS and DCS is bidirectional,
  142.    unidirectional, or non-functional.  The "Cache Alignment" (CA)
  143.    protocol allows an LS to synchronize its entire cache with that of
  144.    the cache of its DCSs. The "Client State Update" (CSU) protocol is
  145.    used to update the state of cache entries in servers for a given SG.
  146.    Sections 2.1, 2.2, and 2.3 contain a more in depth explanation of the
  147.    Hello, CA, and CSU protocols and the messages they use.
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165. Luciani, et al.                                                 [Page 3]
  166.  
  167. INTERNET-DRAFT                    SCSP                 Expires June 1997
  168.  
  169.  
  170.                        +---------------+
  171.                        |               |
  172.               +-------@|     DOWN      |@-------+
  173.               |        |               |        |
  174.               |        +---------------+        |
  175.               |            |       @            |
  176.               |            |       |            |
  177.               |            |       |            |
  178.               |            |       |            |
  179.               |            @       |            |
  180.               |        +---------------+        |
  181.               |        |               |        |
  182.               |        |    WAITING    |        |
  183.               |     +--|               |--+     |
  184.               |     |  +---------------+  |     |
  185.               |     |    @           @    |     |
  186.               |     |    |           |    |     |
  187.               |     @    |           |    @     |
  188.             +---------------+     +---------------+
  189.             |  BIDIRECTION  |----@|  UNIDIRECTION |
  190.             |               |     |               |
  191.             |  CONNECTION   |@----|  CONNECTION   |
  192.             +---------------+     +---------------+
  193.  
  194.  
  195.           Figure 1: Hello Finite State Machine (HFSM)
  196.  
  197.  
  198. 2.1  Hello Protocol
  199.  
  200.  
  201.    "Hello" messages are used to ascertain whether a DCS is operational
  202.    and whether the connections between the LS and DCS are bidirectional,
  203.    unidirectional, or non-functional. In order to do this, every LS MUST
  204.    periodically send a Hello message to its DCSs.
  205.  
  206.    An LS must be configured with a list of NBMA addresses. These NBMA
  207.    addresses are the addresses of peer servers in a SG to which the LS
  208.    wishes to have a direct connection for the purpose of running SCSP;
  209.    that is, these addresses are the addresses of would-be DCSs.  The
  210.    mechanism for the configuration of an LS with these NBMA address is
  211.    beyond the scope of this document; although one possible mechanism
  212.    would be an autoconfiguration server.
  213.  
  214.    An LS has a Hello Finite State Machine (HFSM) associated with each of
  215.    its DCSs (see Figure 1) for a given SG, and the HFSM monitors the
  216.    state of the connectivity between the servers.  Thus, for example, if
  217.    there are two servers  (one in SG A and the other in SG B) associated
  218.  
  219.  
  220.  
  221. Luciani, et al.                                                 [Page 4]
  222.  
  223. INTERNET-DRAFT                    SCSP                 Expires June 1997
  224.  
  225.  
  226.    with an NBMA address X and another two servers (also one in SG A and
  227.    the other in SG B) associated with NBMA address Y and there is a
  228.    suitable point-to-point VC between the NBMA addresses then there are
  229.    two HFSMs running on each side of the VC (one per SGID).
  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 (SID) which is set to the
  235.    LS's ID (LSID), zero or more Receiver IDs which identify the DCSs
  236.    from which the LS has heard a Hello message, and a HelloInterval and
  237.    DeadFactor which will be described below.   At this point, the DCS
  238.    may or may 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 and the LS
  241.    is in any state other than the Down state, the LS checks to see if
  242.    its LSID is in one of the Receiver ID fields of that message which it
  243.    just received, and the LS saves the SID from that Hello message. If
  244.    the LSID is in one of the Receiver ID fields then the LS transitions
  245.    the HFSM to the Bidirectional Connection state otherwise it
  246.    transitions the HFSM into the Unidirectional Connection state.  The
  247.    SID which was saved is the DCS's ID (DCSID).  The next time that the
  248.    LS sends its own Hello message to the DCS, the LS will check the
  249.    saved DCSID against a list of Receiver IDs which the LS uses when
  250.    sending the LS's own Hello messages.  If the DCSID is not found in
  251.    the list of Receiver IDs then it is added to that list before the LS
  252.    sends its Hello message.
  253.  
  254.    Hello messages also contain a HelloInterval and a DeadFactor.  The
  255.    Hello interval advertises the time between sending of consecutive
  256.    Hello messages by a server.  That is, if the time between reception
  257.    of 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 within the interval
  260.    HelloInterval*DeadFactor seconds then the LS MUST consider the DCS to
  261.    be stalled at which point the LS should transition the HFSM for that
  262.    DCS to the Waiting State and remove the DCSID from the Receiver ID
  263.    list.  Note that the Hello Protocol is on a per SG basis.
  264.  
  265.    Hello messages contain a list of Receiver IDs instead of a single
  266.    Receiver ID in order to make use of point to multipoint connections.
  267.    While there is an HFSM per DCS, an LS MUST send only a single Hello
  268.    message to its DCSs attached as leaves of a point to multipoint
  269.    connection.  The LS does this by including DCSIDs in the list of
  270.    Receiver IDs when the LS's sends its next Hello message.  Only the
  271.    DCSIDs from non-stalled DCSs from which the LS has heard a Hello
  272.    message are included.
  273.  
  274.  
  275.  
  276.  
  277. Luciani, et al.                                                 [Page 5]
  278.  
  279. INTERNET-DRAFT                    SCSP                 Expires June 1997
  280.  
  281.  
  282.    Any abnormal event, such as receiving a malformed Hello message,
  283.    causes the HFSM to transition to the Waiting State; however, a loss
  284.    of NBMA connectivity causes the HFSM to transition to the Down State.
  285.  
  286.  
  287.                    +------------+
  288.                    |            |
  289.               +---@|    DOWN    |
  290.               |    |            |
  291.               |    +------------+
  292.               |          |
  293.               |          |
  294.               |          @
  295.               |    +------------+
  296.               |    |Master/Slave|
  297.               |----|            |@---+
  298.               |    |Negotiation |    |
  299.               |    +------------+    |
  300.               |          |           |
  301.               |          |           |
  302.               |          @           |
  303.               |    +------------+    |
  304.               |    |   Cache    |    |
  305.               |----|            |----|
  306.               |    | Summarize  |    |
  307.               |    +------------+    |
  308.               |          |           |
  309.               |          |           |
  310.               |          @           |
  311.               |    +------------+    |
  312.               |    |   Update   |    |
  313.               |----|            |----|
  314.               |    |   Cache    |    |
  315.               |    +------------+    |
  316.               |          |           |
  317.               |          |           |
  318.               |          @           |
  319.               |    +------------+    |
  320.               |    |            |    |
  321.               +----|  Aligned   |----+
  322.                    |            |
  323.                    +------------+
  324.  
  325.      Figure 2: Cache Alignment Finite State Machine
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333. Luciani, et al.                                                 [Page 6]
  334.  
  335. INTERNET-DRAFT                    SCSP                 Expires June 1997
  336.  
  337.  
  338. 2.2 Cache Alignment Protocol
  339.  
  340.    "Cache Alignment" (CA) messages are used by an LS to synchronize its
  341.    cache with that of the cache of each of its DCSs.  That is, CA
  342.    messages allow a booting LS to synchronize with each of its DCSs.  A
  343.    CA message contains a CA header followed by zero or more Client State
  344.    Advertisement Summary records (CSAS records).
  345.  
  346.    An LS has a Cache Alignment Finite State Machine (CAFSM) associated
  347.    (see Figure 2) with each of its DCSs on a per SG basis, and the CAFSM
  348.    monitors the state of the cache alignment between the servers.  The
  349.    CAFSM starts in the Down State.  The CAFSM is associated with an
  350.    HFSM, and when that HFSM reaches the Bidirectional State, the CAFSM
  351.    transitions to the Master/Slave Negotiation State.  The Master/Slave
  352.    Negotiation State causes either the LS or DCS to take on the role of
  353.    master over the cache alignment process.
  354.  
  355.    When the LS's CAFSM reaches the Master/Slave Negotiation State, the
  356.    LS will send a CA message to the DCS associated with the CAFSM.  The
  357.    format of CA messages are described in Section B.1.1.  The first CA
  358.    message which the LS sends includes no CSAS records and a CA header
  359.    which contains the LSID in the Sender ID field, the DCSID in the
  360.    Receiver ID field, a CA sequence number, and three bits.  These three
  361.    bits are the M (Master/Slave) bit, the I (Initialization of master)
  362.    bit, and the O (More) bit. In the first CA message sent by the LS to
  363.    a particular DCS, the M, O, and I bits are set to one.  If the LS
  364.    does not receive a CA message from the DCS in CAReXmtInterval seconds
  365.    then it resends the CA message it just sent.  The LS continues to do
  366.    this until the CAFSM transitions to the Cache Summarize State or
  367.    until the HFSM transitions out of the Bidirectional State. Any time
  368.    the HFSM transitions out of the Bidirectional State, the CAFSM
  369.    transitions to the Down State.
  370.  
  371.    When the LS receives a CA message from the DCS while in the
  372.    Master/Slave Negotiation State, the role the LS plays in the exchange
  373.    depends on packet processing as follows:
  374.  
  375.    1) If the CA from the DCS has the M, I, and O bits set to one and there are
  376.       no CSAS records in the CA message and the Sender ID as specified in the
  377.       DCS's CA message is larger than the LSID then
  378.      a) The timer counting down the CAReXmtInterval is stopped.
  379.      b) The CAFSM corresponding to that DCS transitions to the Cache Summarize
  380.         State and the LS takes on the role of slave.
  381.      c) The LS adopts the CA sequence number it received in the CA message as its
  382.         own CA sequence number.
  383.      d) The LS sends a CA message to the DCS which is formated as follows:
  384.         the M and I bits are set to zero, the Sender ID field is set to the
  385.         LSID, the Receiver ID field is set to the DCSID, and the CA sequence
  386.  
  387.  
  388.  
  389. Luciani, et al.                                                 [Page 7]
  390.  
  391. INTERNET-DRAFT                    SCSP                 Expires June 1997
  392.  
  393.  
  394.         number is set to the CA sequence number that appeared in the DCS's
  395.         CA message.  If there are CSAS records to be sent (i.e., if the LS's
  396.         cache is not empty) then the O bit is set to one and the initial set
  397.         of CSAS records are included in the CA message.
  398.  
  399.    2) If the CA message from the DCS has the M and I bits off and the Sender ID
  400.       as specified in the DCS's CA message is smaller than the LSID then
  401.      a) The timer counting down the CAReXmtInterval is stopped.
  402.      b) The CAFSM corresponding to that DCS transitions to the Cache Summarize
  403.         State and the LS takes on the role of master.
  404.      c) The LS must process any CSAS records in the received CA.
  405.         An explanation of record processing is given below.
  406.      d) The LS sends a CA message to the DCS which is formated as follows:
  407.         the M bit is set to one, I bit is set to zero, the Sender ID
  408.         field is set to the LSID, the Receiver ID field is set to the DCSID,
  409.         and the LS's current CA sequence number is incremented by one and placed
  410.         in the CA message.   If there are any CSAS records to be sent from the
  411.         LS to the DCS (i.e., if the LS's cache is not empty) then the O bit is
  412.         set to one and the initial set of CSAS records are included in the
  413.         CA message that the LS is sending to the DCS.
  414.  
  415.    3) Otherwise, the packet must be ignored.
  416.  
  417.    At any given time, the master or slave have at most one outstanding
  418.    CA message.  Once the LS's CAFSM has transitioned to the Cache
  419.    Summarize State the sequence of exchanges of CA messages occurs as
  420.    follows.
  421.  
  422.    1) If the LS receives a CA message with the M bit set incorrectly
  423.       (e.g., the M bit is set in the CA of the DCS and the LS is master)
  424.       or if the I bit is set then the CAFSM transitions back to the
  425.       Master/Slave Negotiation State.
  426.  
  427.    2) If the LS is master and the LS receives a CA message with a CA sequence
  428.       number which is one less than the LS's current CA sequence number then
  429.       the message is a duplicate and the message MUST be discarded.
  430.  
  431.    3) If the LS is master and the LS receives a CA message with a CA sequence
  432.       number which is equal to the LS's current CA sequence number then the
  433.       CA message MUST be processed.  An explanation of "CA message processing"
  434.       is given below.  As a result of having received the CA message from
  435.       the DCS the following will occur:
  436.      a) The timer counting down the CAReXmtInterval is stopped.
  437.      b) The LS must process any CSAS records in the received CA message.
  438.      c) Increment the LS's CA sequence number by one.
  439.      d) The cache exchange continues as follows:
  440.        1) If the LS has no more CSAS records to send and the received CA
  441.           message has the O bit off then the CAFSM transitions to the Update
  442.  
  443.  
  444.  
  445. Luciani, et al.                                                 [Page 8]
  446.  
  447. INTERNET-DRAFT                    SCSP                 Expires June 1997
  448.  
  449.  
  450.           Cache State.
  451.        2) If the LS has no more CSAS records to send and the received CA
  452.           message has the O bit on then the LS sends back a CA message
  453.           (with new CA sequence number) which contains no CSAS records and
  454.           with the O bit off.  Reset the timer counting down the
  455.           CAReXmtInterval.
  456.        3) If the LS has more CSAS records to send then the LS sends the next
  457.           CA message with the LS's next set of CSAS records.  If LS is sending
  458.           its last set of CSAS records then the O bit is set off otherwise the
  459.           O bit is set on. Reset the timer counting down the CAReXmtInterval.
  460.  
  461.    4) If the LS is slave and the LS receives a CA message with a CA sequence
  462.       number which is equal to the LS's current CA sequence number then the
  463.       CA message is a duplicate and the LS MUST resend the CA message
  464.       which it had just sent to the DCS.
  465.  
  466.    5) If the LS is slave and the LS receives a CA message with a CA sequence
  467.       number which is one more than the LS's current CA sequence number then
  468.       the message is valid and MUST be processed.  An explanation of "CA message
  469.       processing" is given below.  As a result of having received the CA
  470.       message from the DCS the following will occur:
  471.  
  472.      a) The LS must process any CSAS records in the received CA message.
  473.      b) Set the LS's CA sequence number to the CA sequence number in the CA
  474.         message.
  475.      c) The cache exchange continues as follows:
  476.        1) If the LS had just sent a CA message with the O bit off and the
  477.           received CA message has the O bit off then the CAFSM transitions to
  478.           the Update Cache State and the LS sends a CA message with no CSAS
  479.           records and with the O bit off.
  480.        2) If the LS still has CSAS records to send then the LS MUST send
  481.           a CA message with CSAS records in it.  If the message being sent
  482.           from the LS to the DCS contains the last CSAS records that the
  483.           LS needs to send then the CA is sent with the O bit off.
  484.  
  485.    6) If the LS is slave and the LS receives a CA message with a CA sequence
  486.       number that is neither equal to or one more than the current LS's
  487.       CA sequence number then an error has occurred and the CAFSM transitions
  488.       to the Master/Slave Negotiation State.
  489.  
  490.    "CA message processing" occurs as follows:
  491.  
  492.    The LS makes a list of those cache entries which are more "up to
  493.    date" in the DCS than the LS's own cache.  The previously mentioned
  494.    list is called the CSA Request List (CRL).  See Section 2.4 for a
  495.    description of what it means for a CSA or CSAS to be more "up to
  496.    date" than an LS's cache entry.
  497.  
  498.  
  499.  
  500.  
  501. Luciani, et al.                                                 [Page 9]
  502.  
  503. INTERNET-DRAFT                    SCSP                 Expires June 1997
  504.  
  505.  
  506.    If the CRL of the LS is empty upon transition into the Update Cache
  507.    State then the CAFSM immediately transitions into the Aligned State.
  508.    If the CRL is not empty then the LS solicits the DCS to send the CSA
  509.    records corresponding to the summaries (i.e., CSAS records) which the
  510.    LS holds in its CRL.  The solicited CSA records will contain the
  511.    entirety of the client information held in the DCS's cache for the
  512.    given client.  The LS solicits the relevant CSA records by forming
  513.    CSU Solicit (CSUS) messages from the CRL. CSUS messages contain a
  514.    CSUS header and CSAS records from the CRL.  The LS then sends the
  515.    CSUS messages to the DCS. The DCS responds to the CSUS messages by
  516.    sending CSU messages (see Section 2.3) containing the appropriate CSA
  517.    records to the LS.  At most one CSUS message may be outstanding at
  518.    any given time.
  519.  
  520.    Just before the first CSUS message is sent from an LS to the DCS
  521.    associated with the CAFSM, a timer is set to CSUSReXmtInterval
  522.    seconds.  If all the CSA records corresponding to the CSAS records in
  523.    the CSUS message have not been received by the time that the timer
  524.    expires then a new CSUS message will be created which contains all
  525.    the CSAS records for which no appropriate CSA record has been
  526.    received plus additional CSAS records not covered in the previous
  527.    CSUS message.  The new CSUS message is then sent to the DCS.  If, at
  528.    some point before the timer expires, all CSA record updates have been
  529.    received for all the CSAS records included in the previously sent
  530.    CSUS message then the timer is stopped and if there are additional
  531.    CSAS records that were not covered in the previous CSUS message but
  532.    were in the CRL then the timer is reset and a new CSUS message is
  533.    created which contains only those CSAS records from the CRL which
  534.    have not yet been sent to the DCS. This process continues until all
  535.    the CSA records corresponding CSAS records that were in the CRL have
  536.    been received by the LS.  When the LS has a completely updated cache
  537.    then the LS transitions CAFSM associated with the DCS to the Aligned
  538.    State.
  539.  
  540.    If an LS receives a CSUS message or a CA message with a Receiver ID
  541.    which is not the LSID then the message must be discarded and ignored.
  542.    This is necessary since an LS may be in a point to multipoint mesh
  543.    with some of its DCSs.
  544.  
  545.  
  546. 2.3 Client State Update Protocol
  547.  
  548.    "Client State Update" (CSU) messages are used to update the state of
  549.    cache entries in servers. CSU messages contain zero or more "Client
  550.    State Advertisement" (CSA) records each of which contains a SGID in
  551.    the record.  Thus CSU messages may service more than one SG as long
  552.    as the sending and receiving servers in a given SG have a CAFSM in
  553.    the Aligned state (or sometimes the Update Cache state).  This is a
  554.  
  555.  
  556.  
  557. Luciani, et al.                                                [Page 10]
  558.  
  559. INTERNET-DRAFT                    SCSP                 Expires June 1997
  560.  
  561.  
  562.    fundamental difference between the CSU protocol and either the Hello
  563.    protocol or the Cache Alignment protocol.  An LS may send/receive a
  564.    CSU to/from a DCS only when the corresponding CAFSM is in either the
  565.    Aligned State or the Update Cache State.
  566.  
  567.    There are two types of CSU messages: CSU Requests and CSU Replies.  A
  568.    CSU Request message is sent from an LS to each of its DCSs when the
  569.    LS directly observes changes in the state of one or more clients in
  570.    the SG. The change in state of a particular client is noted in a CSA
  571.    record which is then embedded in the CSU Request message.  In this
  572.    way, state changes are propagated throughout the SG.
  573.  
  574.    Examples of such changes in state are as follows:
  575.  
  576.  
  577.        1) an LS receives a request from a client to add an entry to its cache
  578.           (e.g., NHRP Registration Request or an administrative
  579.           intervention),
  580.  
  581.        2) an LS receives a request from a client to remove an entry from its cache
  582.           (e.g., NHRP Purge Request or administrative intervention),
  583.  
  584.        3) a cache entry has timed out in the LS's cache, has been refreshed
  585.           in the LS's cache, or has been administratively modified
  586.           (e.g., in NHRP, an Internetworking address to NBMA address binding
  587.           has timed out or has been refreshed).
  588.  
  589.    When an LS receives a CSU Request from one of its DCSs, the LS
  590.    acknowledges the CSU Request by sending a CSU Reply. The CSU Reply
  591.    contains those CSA records which were contained in the CSU Request
  592.    which the LS is capable of processing;  e.g., if a CSA record is
  593.    dropped because there are insufficient resources to process it then
  594.    that CSA record is not included in the CSU Reply.  When a CSA record
  595.    received in a CSU Request is considered by the LS to represent client
  596.    information which is more "up to date" (see Section 2.4) than the
  597.    client information contained within the cache of the LS then two
  598.    things happen:  1) the LS's cache is updated with the more up to date
  599.    information, and 2) the LS sends a CSU Request containing the CSA
  600.    Record to each of its DCSs except the one from which the CSA Record
  601.    arrived.  In this way,  state changes are propagated throughout the
  602.    SG.
  603.  
  604.    When an LS sends a new CSU Request to one of its DCSs, the LS keeps
  605.    track of the outstanding CSA records (i.e., those which have not been
  606.    acknowledged yet) in that CSU Request, the CSU Sequence number in
  607.    that CSU Request, and to which DCS the LS sent the CSU Request.  A
  608.    timer set to CSUReXmtInterval seconds is started just prior to
  609.    sending a new CSU Request and that timer is associated with the CSU
  610.  
  611.  
  612.  
  613. Luciani, et al.                                                [Page 11]
  614.  
  615. INTERNET-DRAFT                    SCSP                 Expires June 1997
  616.  
  617.  
  618.    Sequence number in the CSU Request such that if that timer expires
  619.    prior to the receipt of a CSU Reply containing the same CSU Sequence
  620.    number then an exact copy of the CSU Request (including the same CSU
  621.    Sequence number) is re-sent.
  622.  
  623.    When an LS receives a CSU Reply from one of its DCSs, the LS checks
  624.    the CSU Sequence number in the CSU Reply against the CSU Sequence
  625.    number of outstanding CSU Requests which have not yet been
  626.    acknowledged.   Processing proceeds as follows:
  627.      1) If a match is found then
  628.        a) If the "A" bit is zero in the CSU Reply then
  629.          1) The LS checks the CSA records in the CSU Reply against the
  630.             CSA Records    which    were sent in the CSU Request and
  631.             any discrepancies will cause a "follow up" CSU Request
  632.             containing an new CSU Sequence Number to be sent which will
  633.             contain exactly those CSA Records which were in the previous
  634.             matching CSU Request but were not in the CSU Reply.  Note
  635.             that follow up CSU Request follows the same time-out and
  636.             retransmit rules for "new" CSU Requests.  This process
  637.             continues until all CSA records are acknowledged by the
  638.             receipt of a CSU Reply which contains them.  When a
  639.             CSA Record is acknowledged in a CSU Reply then that
  640.             CSA record is removed from the list of outstanding
  641.             CSA records for that DCS.  CSA records in a "follow up"
  642.             CSU Request are associated with the new CSU Sequence number
  643.             rather than the previous CSU Sequence number with which they
  644.             were formerly associated.
  645.        b) If the "A" bit is set to one in the CSU Reply then
  646.          1) All CSA records associated with the CSU Sequence number
  647.             in the CSU Reply are acknowledged even though they do not
  648.             actually appear in the CSU Reply.  This is by far the
  649.             preferred method of operation since it is much less
  650.             computationally intensive.
  651.          2) It is strongly RECOMMENDED that as new protocols make use
  652.             SCSP that those protocols mandate setting of the A bit
  653.             whenever possible.
  654.      2) If no match is found then
  655.        a) The CSU Reply is silently dropped.
  656.  
  657.    An LS responds to CSUS messages from its DCSs by sending CSU Request
  658.    messages containing the appropriate CSA records to the DCS.  If an LS
  659.    receives a CSUS message containing a CSAS record for an entry which
  660.    is no longer in its database (e.g., the entry timed out and was
  661.    discarded after the Cache Alignment exchange completed but before the
  662.    entry was requested through a CSUS message), then the LS will respond
  663.    with a CSU message containing a CSA record which indicates a client
  664.    state of "client entry does not exist".
  665.  
  666.  
  667.  
  668.  
  669. Luciani, et al.                                                [Page 12]
  670.  
  671. INTERNET-DRAFT                    SCSP                 Expires June 1997
  672.  
  673.  
  674.    If an LS receives a CSU with a Receiver ID which is not equal to the
  675.    LSID and is not set to all 0xFFs then the CSU must be discarded and
  676.    ignored.  This is necessary since the LS may be a leaf of a point to
  677.    multipoint connection in a point to multipoint mesh with a set of its
  678.    DCSs.
  679.  
  680.    An LS MAY send a CSU Request to the all 0xFFs Receiver ID when the LS
  681.    is in a point to multipoint mesh with a set of its DCSs.  If an LS
  682.    receives a CSU Request with the all 0xFFs Receiver ID then it MUST
  683.    use the Sender ID in the CSU Request as the Receiver ID of the CSU
  684.    Reply (i.e., it MUST unicast its response to the sender of the
  685.    request) when responding.  If the LS wishes to send a CSU Request to
  686.    the all 0xFFs Receiver ID then it MUST create a time-out and
  687.    retransmit timer for each of the DCSs which are in the point to
  688.    multipoint mesh prior to sending the CSU Request.  If in this case,
  689.    the time-out and retransmit timer expires for a given DCS prior to
  690.    acknowledgment of the CSU Request then the LS MUST use the specific
  691.    DCSID as the Receiver ID rather than the all 0xFFs Receiver ID.
  692.    Similarly, if it is necessary to send a follow up CSU Request then
  693.    the LS MUST specify the specific DCSID as the Receiver ID rather than
  694.    the all 0xFFs Receiver ID.
  695.  
  696. 2.4 The meaning of "More Up To Date"
  697.  
  698.    During the cache alignment process and during normal CSU processing,
  699.    a CSA record or CSAS record is compared against the contents of an
  700.    LS's cache entry to decide whether the information contained in the
  701.    record is more "up to date" than the corresponding cache entry of the
  702.    LS.  Unfortunately, this is not a simple decision and is highly
  703.    dependent on the type of server which is being synchronized with its
  704.    peer servers.  A given server type has a particular set of search
  705.    keys when looking up information in its database, and the choice of
  706.    search keys is highly dependent on the given client/server protocol
  707.    in which the server participates.  This set of keys will be referred
  708.    to as the "search string" for the rest of this section.  The search
  709.    string is extracted from the given record (CSA or CSAS).  The search
  710.    string is insufficient, however, to divine the "up to date"-ness of a
  711.    given record over that of a server's cache entry. This is because a
  712.    server may employ the concept of "refreshing client information", and
  713.    thus it would be difficult to tell the difference between a record
  714.    which is being used to perform a refresh and a record which has
  715.    merely circulated around the servers in a SG and has subsequently
  716.    returned to a server to which the record has already been.  Thus, a
  717.    CSA record has a CSA Sequence number associated with it which says
  718.    this is a "newer" CSA record than any previously received.  This
  719.    newness is a result of the fact that, with the exception of the use
  720.    of fragments which are described in the CSA record packet format
  721.    sections below, CSA Sequence numbers are assigned in a monotonically
  722.  
  723.  
  724.  
  725. Luciani, et al.                                                [Page 13]
  726.  
  727. INTERNET-DRAFT                    SCSP                 Expires June 1997
  728.  
  729.  
  730.    increasing fashion by an LS to each new CSA record (be it for new
  731.    client information or for refresh) that an LS originates.  An LS
  732.    originates a CSA record if it is the server which inserted the client
  733.    information into the SG.  The LS is not an originator if the LS
  734.    received the CSA record from one of its DCSs and merely passed on the
  735.    CSA record to its DCSs.  Thus if an LS is not an originator for the
  736.    CSA record then the LS does not fiddle with the CSA Sequence number
  737.    before passing the CSA record onto to its DCSs.  Note that the CSAS
  738.    records contains a CSA Sequence number which is partly how newness is
  739.    measured during the cache alignment process.
  740.  
  741.    Given the previous paragraph, there would appear to be three pieces
  742.    of information which are used in the divination of whether a record
  743.    contains information which is more "up to date" than the information
  744.    contained in the cache entry of an LS which is processing the record:
  745.    1) the search string, 2) the CSA Sequence number, and 3) the
  746.    Originator which is described by an Originator ID (OID).  Note that
  747.    in some case the OID may actually be part of the search string
  748.    depending on the client/server protocol.  Given these three pieces of
  749.    information, a record is considered to be more "up to date" than the
  750.    information contained in the cache of an LS if one of the following
  751.    is true:
  752.      1) The search string does not match a cache entry in the LS
  753.      2) The search string does match a cache entry in the LS and
  754.         the OID in the record is the same as the OID in the LS's
  755.         cache entry but the CSA Sequence number in the record is
  756.         larger than the CSA Sequence number in the LS's cache
  757.         entry
  758.      3) The search string does match a cache entry in the LS and
  759.         the OID in the record is different from the OID in the
  760.         LS's cache entry
  761.        a) If a given client/server protocol permits client
  762.           information to be simultaneously originated by two or more
  763.           servers then this represents a new cache entry for the LS
  764.           and not an update of the existing one
  765.          1) This occurs, for example, in NHRP when an NHC is registered
  766.             with two or more NHSs
  767.        b) If a given client/server protocol does not permits client
  768.           information to be simultaneously originated by two or more
  769.           servers then some other method of determination must be used
  770.           which is specific to the client/server protocol
  771.          1) For example, always choose either the record or the cache
  772.             entry with the larger OID
  773.  
  774.    Note that ideally, the CSAS record (including both the generic and
  775.    client/server protocol specific parts) contains only the three pieces
  776.    of information mentioned above and nothing else.
  777.  
  778.  
  779.  
  780.  
  781. Luciani, et al.                                                [Page 14]
  782.  
  783. INTERNET-DRAFT                    SCSP                 Expires June 1997
  784.  
  785.  
  786. Discussion and conclusions
  787.  
  788.    While the above text is couched in terms of synchronizing the
  789.    knowledge of the state of a client within the cache of servers
  790.    contained in a SG, this solution generalizes easily to any number of
  791.    database synchronization problems (e.g., LECS synchronization).
  792.  
  793.    If it were desirable to advertise adjacency information between
  794.    servers then this could be done trivially by appropriating a bit in
  795.    the CSU message which merely stated that the information contained in
  796.    the one and only CSA record contained therein holds adjacency
  797.    information.  Such a CSA record's protocol specific part would
  798.    contain the OID (the LSID) and the DCSID (and potentially a link cost
  799.    if one wanted to get fancy).  This technique might allow for an
  800.    entity to semi-trivially obtain a topo-map of the servers in a SG.
  801.  
  802.    The appendices below show examples of how SCSP is to be implemented
  803.    for the specified protocols.
  804.  
  805. Appendix A:  Terminology
  806.  
  807.   This appendix introduces the terminology associated with SCSP.
  808.  
  809. A.1 Abbreviations
  810.  
  811.    CA - Cache Alignment Message
  812.  
  813.    CAFSM - Cache Alignment Finite State Machine
  814.  
  815.    CID - Client ID
  816.  
  817.    CRL - CSA Request List
  818.  
  819.    CSA - Client State Advertisement
  820.  
  821.    CSAS - Client State Advertisement Summary
  822.  
  823.    CSU - Client State Update
  824.  
  825.    CSUS - Client State Update Solicit
  826.  
  827.    DCS - Directly Connected Server
  828.  
  829.    HFSM - Hello Finite State Machine
  830.  
  831.    I - Initialize bit
  832.  
  833.    LS - Local Server
  834.  
  835.  
  836.  
  837. Luciani, et al.                                                [Page 15]
  838.  
  839. INTERNET-DRAFT                    SCSP                 Expires June 1997
  840.  
  841.  
  842.    LSID - Local Server ID
  843.  
  844.    M - Master/Slave bit
  845.  
  846.    O - More bit
  847.  
  848.    RS - Remote Server
  849.  
  850.    SG - Server Group
  851.  
  852.    SID - Server ID
  853.  
  854. A.2 Definitions
  855.  
  856.    Cache Alignment message (CA message)
  857.      These messages allow an LS to synchronize its entire cache
  858.      with that of the cache of one of its DCSs.
  859.  
  860.    Cache Alignment Finite State Machine (CAFSM)
  861.      The CAFSM monitors the state of the cache alignment between an LS
  862.      and a particular DCS.  There exists one CAFSM per DCS as seen from
  863.      an LS.
  864.  
  865.    Client ID (CID)
  866.      The CID is an unique token which identifies a client whose state
  867.      is being kept in a server's cache.  This value
  868.      might be taken from the protocol address of the client.
  869.  
  870.    CSA Request List (CRL)
  871.      When CA messages are exchanged between an LS and one of its DCSs,
  872.      the LS makes a list of those cache entries which are more recent
  873.      in the DCS (based on a CSAS sequence number) than the LS's own
  874.      entry and adds to that list any entry in the DCS which is not already
  875.      in its cache. This list is the CRL.
  876.  
  877.    Client State Advertisement record (CSA record)
  878.      A CSA is a record within a CSU message which identifies an update
  879.      to the status of a "particular" client.
  880.  
  881.    Client State Advertisement Summary record (CSAS record)
  882.      A CSAS contains a summary of the information in a CSA.  A server will
  883.      send CSAS records describing its cache entries to another server
  884.      during the cache alignment process.  CSAS records are also included
  885.      in a CSUS messages when an LS wants to request the entire CSA from
  886.      the DCS.  The LS is requesting the CSA from the DCS because the LS
  887.      believes that the DCS has a more recent view of the state of the
  888.      cache entry in question.
  889.  
  890.  
  891.  
  892.  
  893. Luciani, et al.                                                [Page 16]
  894.  
  895. INTERNET-DRAFT                    SCSP                 Expires June 1997
  896.  
  897.  
  898.    Client State Update message (CSU message)
  899.      This is a message sent from an LS to its DCSs when the LS
  900.      becomes aware of a change in state of a client.
  901.  
  902.    Client State Update Solicit message (CSUS message)
  903.      This message is sent by an LS to its DCS after the LS and DCS
  904.      have exchanged CA messages.   The CSUS message contains one or more
  905.      CSAS records which represent solicitations for entire CSA records
  906.      (as opposed to just the summary information held in the CSAS).
  907.  
  908.    Directly Connected Server (DCS)
  909.      The DCS is a server which is directly connected to the LS;
  910.      e.g., there exists a VC between the LS and DCS.
  911.      This term, along with the terms LS and RS, is used to give a frame
  912.      of reference when talking about servers and their synchronization.
  913.      Unless explicitly stated to the contrary, there is no implied
  914.      difference in functionality between a DCS, LS, and RS.
  915.  
  916.    Hello Finite State Machine (HFSM)
  917.      An LS has a HFSM associated with each of its DCSs.  The HFSM monitors
  918.      the state of the connectivity between the LS and a particular DCS.
  919.  
  920.    Initialize bit (I bit)
  921.      This bit is included in a CA message.  When set, this bit indicates
  922.      that the sender of the CA wishes to negotiate for Master/Slave server
  923.      status in the cache alignment process.
  924.  
  925.    Local Server (LS)
  926.      The LS is the server under scrutiny; i.e., all statements are made
  927.      from the perspective of the LS.
  928.      This term, along with the terms DCS and RS, is used to give a frame
  929.      of reference when talking about servers and their synchronization.
  930.      Unless explicitly stated to the contrary, there is no implied
  931.      difference in functionality between a DCS, LS, and RS.
  932.  
  933.    Local Server ID (LSID)
  934.      The LSID is a unique token that identifies an LS.  This value
  935.      might be taken from the protocol address of the LS.
  936.  
  937.    Master/Slave bit (M bit)
  938.      This bit is included in a CA message.  When set, this bit indicates
  939.      that the sender of the CA wishes to be Master of the cache alignment
  940.      process.
  941.  
  942.    More bit (O bit)
  943.      This bit is included in a CA message.  When set, this bit indicates
  944.      that the sender of the CA has more CA messages to send above and
  945.      beyond the message it is currently sending.
  946.  
  947.  
  948.  
  949. Luciani, et al.                                                [Page 17]
  950.  
  951. INTERNET-DRAFT                    SCSP                 Expires June 1997
  952.  
  953.  
  954.    Remote Server (RS)
  955.      An RS is a server that is neither an LS nor a DCS and unless otherwise
  956.      stated an RS refers to a server in the SG.
  957.      This term, along with the terms LS and DCS, is used to give a frame
  958.      of reference when talking about servers and their synchronization.
  959.      Unless explicitly stated to the contrary, there is no implied
  960.      difference in functionality between a DCS, LS, and RS.
  961.  
  962.    Server Group (SG)
  963.      The SCSP synchronizes caches (or a portion of the caches) of a set
  964.      of server entities which are bound to a SG through some means
  965.      (e.g., all servers belonging to a Logical IP Subnet (LIS)[1]).  Thus
  966.      an SG is just a grouping of servers around some commonality.
  967.  
  968.    Server Group ID (SGID)
  969.      This ID is a 32 bit identification field that uniquely identifies
  970.      both the client/server protocol for which the servers of the SG are
  971.      being synchronized as well as the instance of that protocol.
  972.      This implies that multiple instances of the same protocol may be in
  973.      operation at the same time and have their servers synchronized
  974.      independently of each other.
  975.  
  976.    Server ID (SID)
  977.      The SID is a unique token that identifies a given server.  This value
  978.      might be taken from the protocol address of the server.
  979.  
  980. Appendix B:  Packet Formats
  981.  
  982. B.1 SCSP Message Formats
  983.  
  984.    This section of the appendix includes the message formats for SCSP.
  985.    SCSP protocols are LLC/SNAP encapsulated with an LLC=0xAA-AA-03 and
  986.    OUI=0x00-00-5e and PID=0x00-05.
  987.  
  988.    SCSP has 3 parts to every packet: the fixed part, the mandatory part,
  989.    and the TLV part.  The fixed part of the message exists in every
  990.    packet and is shown below.  The mandatory part is specific to the
  991.    particular message type (i.e., CA, CSU Request/Reply, Hello, CSUS).
  992.    The TLV part has not yet been defined for SCSP but it will contain
  993.    the set of TLVs for a particular SCSP message.
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005. Luciani, et al.                                                [Page 18]
  1006.  
  1007. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1008.  
  1009.  
  1010.    Fixed Header:
  1011.  
  1012.     0                   1                   2                   3
  1013.     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
  1014.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1015.    |    Version    |  Type Code    |        Packet Size            |
  1016.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1017.    |          Checksum             |          Start Of TLVs        |
  1018.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1019.  
  1020.    Version
  1021.      This is the version of the SCSP protocol being used.  The current
  1022.      version is 1.
  1023.  
  1024.    Type Code
  1025.      This is the code for the message type (e.g., Hello (5), CSU
  1026.      Request(2), CSU Reply(3), CSUS (4), CA (1)).
  1027.  
  1028.    Packet Size
  1029.      The total length of the SCSP packet, in octets (excluding link
  1030.      layer and/or other protocol encapsulation).
  1031.  
  1032.    Checksum
  1033.      The standard IP checksum over the entire NHRP packet (starting with
  1034.      the fixed header).  If only the hop count field is changed, the
  1035.      checksum is adjusted without full recomputation.  The checksum is
  1036.      completely recomputed when other header fields are changed.
  1037.  
  1038.    Start Of TLVs
  1039.      There are no TLVs currently specified for SCSP. This field will be
  1040.      coded as zero until such time that TLVs are defined at which point
  1041.      this field will be coded with the offset from the top of the fixed
  1042.      header to the beginning of the first TLV.
  1043.  
  1044.  
  1045. B.1.1 Cache Alignment (CA)
  1046.  
  1047.    The Cache Alignment (CA) message allows an LS to synchronize its
  1048.    entire cache with that of the cache of its DCSs within a server
  1049.    group. The CA message type code is 1. The CA message format is as
  1050.    follows:
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061. Luciani, et al.                                                [Page 19]
  1062.  
  1063. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1064.  
  1065.  
  1066.     0                   1                   2                   3
  1067.     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
  1068.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1069.    | Sender ID Len | Recvr ID Len  |M|I|O|u|    Number of CSASs    |
  1070.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1071.    |                   CA  Sequence Number                         |
  1072.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1073.    |                        Server Group ID                        |
  1074.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1075.    |                  Sender ID (variable length)                  |
  1076.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1077.    |                Receiver ID (variable length)                  |
  1078.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1079.    |                        CSAS Record                            |
  1080.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1081.                               .......
  1082.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1083.    |                        CSAS Record                            |
  1084.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1085.  
  1086.    Sender ID Len
  1087.      This field holds the length in octets of the Sender ID.
  1088.  
  1089.    Recvr ID Len
  1090.      This field holds the length in octets of the Receiver ID.
  1091.  
  1092.    M
  1093.      This bit is part of the negotiation process for the cache
  1094.      alignment.  When this bit is set then the sender of the CA message
  1095.      is indicating that it wishes to lead the alignment process.  This
  1096.      bit is the "Master/Slave bit".
  1097.  
  1098.    I
  1099.      When set, this bit indicates that the sender of the CA message
  1100.      believes that it is in a state where it is negotiating for the
  1101.      status of master or slave.  This bit is the "Initialization bit".
  1102.  
  1103.    O
  1104.      This bit indicates that the sender of the CA message has more CSAS
  1105.      records to send.  This implies that the cache alignment process
  1106.      must continue.  This bit is the "More bit" despite its dubious
  1107.      name.
  1108.  
  1109.    u
  1110.      unused
  1111.  
  1112.    Number of CSASs
  1113.      This field contains the number of Client State Advertisements
  1114.  
  1115.  
  1116.  
  1117. Luciani, et al.                                                [Page 20]
  1118.  
  1119. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1120.  
  1121.  
  1122.      Summaries (CSASs) contained in the CA message.
  1123.  
  1124.    CA Sequence Number
  1125.      A value which provides a unique identifier to aid in the sequencing
  1126.      of the cache alignment process.  The slave server always copies the
  1127.      sequence number from the master server's previous CA message into
  1128.      its current CA message thus acknowledging the master's CA message.
  1129.      When the slave receives a "higher" sequence number then the number
  1130.      that the slave previously sent then the slave's previous CA message
  1131.      is acknowledged.  A "larger" sequence number means a more recent CA
  1132.      message.  Note that there is a separate CA Sequence Number space
  1133.      associated with each CAFSM.
  1134.  
  1135.    Server Group ID
  1136.      This ID is a 32 bit identification field that uniquely identifies
  1137.      both the client/server protocol for which the servers of the SG are
  1138.      being synchronized as well as the instance of that protocol.  This
  1139.      implies that multiple instances of the same protocol may be in
  1140.      operation at the same time and have their servers synchronized
  1141.      independently of each other.
  1142.  
  1143.    Sender ID
  1144.      This is the protocol address of the server which is sending the CA
  1145.      message.
  1146.  
  1147.    Receiver ID
  1148.      This is the protocol address of the server which is to receive the
  1149.      CA message.
  1150.  
  1151.    CSAS record
  1152.      See Section B.1.1.1.
  1153.  
  1154.  
  1155. B.1.1.1 Client State Advertisement Summary Record (CSAS record)
  1156.  
  1157.    CSAS records contain a generic header and a client/server protocol
  1158.    specific part.  The generic header is shown below and the
  1159.    client/server protocol specific part MUST be documented separately
  1160.    for each such protocol.  Examples of the protocol specific parts for
  1161.    NHRP and ATMARP are shown in appendices below.  See the specific
  1162.    protocol appendix or the appropriate other document for the protocol
  1163.    specific part of the CSAS.
  1164.  
  1165.    Note that CSAS records do not contain a Server Group ID (SGID) since
  1166.    cache alignments are performed on a per SG basis.
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173. Luciani, et al.                                                [Page 21]
  1174.  
  1175. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1176.  
  1177.  
  1178.     0                   1                   2                   3
  1179.     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
  1180.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1181.    |                    CSA Sequence Number                        |
  1182.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1183.    |           Client/Server Protocol Specific Part ...            |
  1184.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1185.  
  1186.    CSA Sequence Number
  1187.      This field contains a sequence number that identifies the CSA
  1188.      record instance for the given client.  A "larger" sequence number
  1189.      means a more recent advertisement.
  1190.  
  1191.  
  1192. B.1.2 Client State Update Request (CSU Request)
  1193.  
  1194.    The Client State Update Request (CSU Request) message is used to
  1195.    update the state of cache entries in servers which are attached to
  1196.    the server sending the message.   A CSU Request message is sent from
  1197.    one server (the LS) to another directly connected server (the DCS)
  1198.    when the LS observes changes in the state of one or more clients.
  1199.    This observation may be a result of receiving a CSU from another DCS
  1200.    or as a result of some event occurring for a client that has
  1201.    registered with it.  The change in state of a "particular" client is
  1202.    noted in a CSU message via a "Client State Advertisement" (CSA)
  1203.    record within the CSU.  The CSU Request message type code is 2.  The
  1204.    CSU Request message format is as follows:
  1205.  
  1206.     0                   1                   2                   3
  1207.     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
  1208.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1209.    | Sender ID Len | Recvr ID Len  |A|P|uuu|    Number of CSAs     |
  1210.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1211.    |                   CSU Sequence Number                         |
  1212.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1213.    |                  Sender ID (variable length)                  |
  1214.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1215.    |                Receiver ID (variable length)                  |
  1216.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1217.    |                         CSA Record                            |
  1218.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1219.                               .......
  1220.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1221.    |                         CSA Record                            |
  1222.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1223.  
  1224.    Sender ID Len
  1225.      This field holds the length in octets of the Sender ID.
  1226.  
  1227.  
  1228.  
  1229. Luciani, et al.                                                [Page 22]
  1230.  
  1231. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1232.  
  1233.  
  1234.    Recvr ID Len
  1235.      This field holds the length in octets of the Receiver ID.
  1236.  
  1237.    A
  1238.      The A bit is not meaningful in the CSU Request and MUST be set to
  1239.      zero.  In the CSU Reply, when the A bit is set, it signifies that
  1240.      all CSA records from the CSU Request are being acknowledged, and
  1241.      the CSA records are not repeated in the CSU Reply message.  In this
  1242.      case, the Number of CSAs field is set to 0 and the CSU Sequence
  1243.      Number in the CSU Reply is used to verify the acknowledgement of
  1244.      CSU Request which contained the same CSU Sequence Number.
  1245.  
  1246.    P
  1247.      When the P bit is set in a CSU Request it means that this CSU
  1248.      contains CSA records which are of highest priority and that
  1249.      processing of this CSU takes precedence over all other CSU
  1250.      processing for the SG.  The rules for setting of the P bit are on a
  1251.      SG basis (e.g., NHRP may have a different set of rules from
  1252.      ATMARP); i.e., the implementor MAY NOT indiscriminately set this
  1253.      bit and still be compliant with the SCSP protocol.  One side effect
  1254.      of setting this bit is that the CSU MUST carry exactly one SG's CSA
  1255.      records.
  1256.  
  1257.    Number of CSAs
  1258.      This field contains the number of Client State Advertisements
  1259.      (CSAs) contained in the CSU message.
  1260.  
  1261.    CSU Sequence Number
  1262.      A value which, when coupled with the address of the source,
  1263.      provides a unique identifier for the CSU Request This value is
  1264.      equivalent to the CSU Sequence Number in SCSP. A "larger" sequence
  1265.      number means a more recent advertisement.
  1266.  
  1267.    Sender ID
  1268.      This is the protocol address of the server which is sending the CSU
  1269.      message.
  1270.  
  1271.    Receiver ID
  1272.      This is the protocol address of the server which is to receive the
  1273.      CSU message. The use of the all 0xFFs Receiver ID is described in
  1274.      Section 2.3 for CSU messages.
  1275.  
  1276.    CSA Record
  1277.      See Section B.1.2.1.
  1278.  
  1279.  
  1280. B.1.2.1 Client State Advertisement Record (CSA record)
  1281.  
  1282.  
  1283.  
  1284.  
  1285. Luciani, et al.                                                [Page 23]
  1286.  
  1287. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1288.  
  1289.  
  1290.    CSA records contain the information necessary to relate the current
  1291.    state of a client in an SG to the servers being synchronized.  CSA
  1292.    records contain a generic header and a client/server protocol
  1293.    specific part.  The generic header is shown below and the
  1294.    client/server protocol specific part MUST be documented separately
  1295.    for each such protocol.  Examples of the protocol specific parts for
  1296.    NHRP and ATMARP are shown in appendices below.  See the specific
  1297.    protocol appendix or the appropriate other document for the protocol
  1298.    specific part of the CSA.
  1299.  
  1300.    Note that CSA records do contain a Server Group ID (SGID) since CSU
  1301.    messages may carry CSA records from multiple SGs.
  1302.  
  1303.    The amount of information carried by a specific CSA record may exceed
  1304.    the size of a link layer PDU.  Hence, such CSA records MUST be
  1305.    fragmented across a number of CSU Request messages. CSA Record
  1306.    fragments carry a 15 bit Fragment Number and an F bit which denotes
  1307.    that this fragment is the last fragment for the CSA.  Fragments MUST
  1308.    be transmitted in order of their fragment sequence numbers. All
  1309.    fragments of a CSA record MUST carry the same CSA Sequence number.
  1310.    All but the final fragment MUST have the F bit set to zero. The final
  1311.    fragment SHALL have the F bit set to one.  Complete re-assembly of a
  1312.    CSA record requires collecting all CSA record fragments referring to
  1313.    the same client information.  A CSA record MUST NOT be processed
  1314.    until it is completely re-assembled.  If the CSA Sequence Number
  1315.    changes during the re-assembly of a fragmented CSA record then the
  1316.    fragments collected thus far are discarded.  In terms of time-out and
  1317.    retransmit of CSA record fragments in CSU messages, the same rules
  1318.    apply as described in Section 2.3.
  1319.  
  1320.    Thus, for example, if it takes three CSU packets to contain the
  1321.    entire CSA record then the first packet has 0x00 in the combination
  1322.    of "F" and Fragment Number fields, the next CSU packet has 0x01 in
  1323.    those fields, and the final packet has 0x82 in that field.  However,
  1324.    in general, fragmentation will not be necessary and the F bit
  1325.    concatenated with the Fragment Number will be coded as 0x81 since the
  1326.    Fragment Number starts at one for each CSA Record.
  1327.  
  1328.    It is strongly RECOMMENDED that if a CSA record cannot fit into a
  1329.    single link layer PDU then each CSA record fragment is assigned to
  1330.    CSU Request message which carries only that CSA record fragment and
  1331.    that the CSU Reply message set the "A" flag to one (see Section
  1332.    B.1.2).
  1333.  
  1334.    The content of a CSA record is as follows:
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341. Luciani, et al.                                                [Page 24]
  1342.  
  1343. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1344.  
  1345.  
  1346.     0                   1                   2                   3
  1347.     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
  1348.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1349.    |F|    Fragment Number          |            TTL                |
  1350.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1351.    |                    CSA Sequence Number                        |
  1352.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1353.    |                        Server Group ID                        |
  1354.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1355.    |           Client/Server Protocol Specific Part ...            |
  1356.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1357.  
  1358.    F
  1359.      The F bit is used to denote that the current fragment is the final
  1360.      fragment of the CSA record.  When a single CSA record cannot fit
  1361.      within an SCSP PDU, it is necessary to break the CSA record up into
  1362.      fragments each of which contains the same CSA Sequence number but a
  1363.      different Fragment Number (described below).
  1364.  
  1365.    Fragment Number
  1366.      When a single CSA record cannot fit within an SCSP PDU, it is
  1367.      necessary to break the CSA record up into fragments each of which
  1368.      contains the same CSA Sequence number but a different Fragment
  1369.      Number.  This number starts at one and increments by for each CSU
  1370.      packet that the fragment is spread across.  Thus if it takes three
  1371.      CSU packets to contain the entire CSA record then the first packet
  1372.      has 0x01 in the combination of "F" and Fragment Number fields, the
  1373.      next CSU packet has 0x02 in those fields, and the final packet has
  1374.      0x83 in that field.  In general, fragmentation will not be
  1375.      necessary and the F bit concatenated with the Fragment Number will
  1376.      be merely coded as 0x81 for each CSA record.
  1377.  
  1378.    TTL
  1379.      Time to live for the packet.  This represents the number of hops
  1380.      that the CSA takes before it is dropped and thus at each server
  1381.      that the CSA record traverses, the TTL is decremented.
  1382.  
  1383.    CSA Sequence Number
  1384.      This field contains a sequence number that identifies the CSA
  1385.      record instance for the given client.  A "larger" sequence number
  1386.      means a more recent advertisement.
  1387.  
  1388.    Server Group ID
  1389.      This ID is a 32 bit identification field that uniquely identifies
  1390.      both the client/server protocol for which the servers of the SG are
  1391.      being synchronized as well as the instance of that protocol.  This
  1392.      implies that multiple instances of the same protocol may be in
  1393.      operation at the same time and have their servers synchronized
  1394.  
  1395.  
  1396.  
  1397. Luciani, et al.                                                [Page 25]
  1398.  
  1399. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1400.  
  1401.  
  1402.      independently of each other.
  1403.  
  1404.  
  1405. B.1.3 Client State Update Reply (CSU Reply)
  1406.  
  1407.    The Client State Update Reply (CSU Reply) message is used to
  1408.    acknowledge the reception of Client State Update Request.  A CSU
  1409.    Reply message is sent from one server (the DCS) to the server (the
  1410.    LS) which sent the original CSU Request.  The CSU Reply message type
  1411.    code is 3.  The CSU Reply message format is the same as that of the
  1412.    CSU Request so that when an server receives an CSU Request all that
  1413.    needs to be done to reply to it is to change the type code to 3 and
  1414.    send the message back.
  1415.  
  1416. B.1.4 Client State Update Solicit Message (CSUS message)
  1417.  
  1418.    This message allows one server (LS) to solicit the entirety of CSA
  1419.    data stored in the cache of a directly connected server (DCS).  The
  1420.    DCS responds with CSU messages containing the appropriate CSAs.  The
  1421.    CSUS message type code is 4.  The CSUS message format is the same as
  1422.    that of the CA message; however the M, I, and O bits are not
  1423.    meaningful in this context and are set to zero.  Also, the CSUS
  1424.    Sequence Number is from a different numbering space than the CA
  1425.    Sequence number.  CSUS messages solicit CSUs from only one server of
  1426.    a SG at a time. That SG is the one identified by the SGID in the CSUS
  1427.    header and the server is identified by the Receiver ID field in CSUS
  1428.    header.
  1429.  
  1430.  
  1431. B.1.5 Hello:
  1432.  
  1433.    The Hello message is used to check connectivity between the sending
  1434.    server (the LS) and one of its directly connected neighbor servers
  1435.    (the DCSs).  The Hello message type code is 5.  The Hello message
  1436.    format is as follows:
  1437.  
  1438.  
  1439.  
  1440.  
  1441.  
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453. Luciani, et al.                                                [Page 26]
  1454.  
  1455. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1456.  
  1457.  
  1458.     0                   1                   2                   3
  1459.     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
  1460.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1461.    | Sender ID Len | Recvr ID Len  |  Number of Receiver IDs Heard |
  1462.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1463.    |         HelloInterval         |          DeadFactor           |
  1464.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1465.    |                        Server Group ID                        |
  1466.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1467.    |                    Sender ID (variable length)                |
  1468.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1469.    |                  Receiver ID (variable length)                |
  1470.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1471.                            .........
  1472.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1473.    |                  Receiver ID (variable length)                |
  1474.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1475.  
  1476.    Sender ID Len
  1477.      This field holds the length in octets of the Sender ID.
  1478.  
  1479.    Recvr ID Len
  1480.      This field holds the length in octets of the Receiver ID.
  1481.  
  1482.    Number of Receiver IDs Heard
  1483.      This field holds the count of the Receiver ID which are listed in
  1484.      this packet.
  1485.  
  1486.    HelloInterval
  1487.      The hello interval advertises the time between sending of
  1488.      consecutive Hello Messages by an LS.  If the time between Hello
  1489.      messages exceeds the HelloInterval then the Hello is to be
  1490.      considered late by the DCS.  On the other hand, if the LS does not
  1491.      receive a Hello Reply within its HelloInterval then the LS resends
  1492.      the same Hello message it sent previously
  1493.  
  1494.    DeadFactor
  1495.      This is a multiplier to the HelloInterval. If a DCS does not
  1496.      receive a Hello message within the interval
  1497.      HelloInterval*DeadFactor from an LS that advertised the
  1498.      HelloInterval then the DCS MUST consider the LS to be stalled at
  1499.      which point the DCS should transition to the Waiting State.   On
  1500.      the other hand, if the LS does not receive a Hello Reply within
  1501.      DeadFactor*HelloInterval then one of two things happens: 1) if the
  1502.      LS has received Hello messages from the DCS during this time then
  1503.      the LS transitions to the Unidirectional State; otherwise, 2) the
  1504.      LS transitions to the Waiting State.
  1505.  
  1506.  
  1507.  
  1508.  
  1509. Luciani, et al.                                                [Page 27]
  1510.  
  1511. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1512.  
  1513.  
  1514.    Server Group ID
  1515.      This ID is a 32 bit identification field that uniquely identifies
  1516.      both the client/server protocol for which the servers of the SG are
  1517.      being synchronized as well as the instance of that protocol.  This
  1518.      implies that multiple instances of the same protocol may be in
  1519.      operation at the same time and have their servers synchronized
  1520.      independently of each other.
  1521.  
  1522.    Sender ID
  1523.      This is the protocol address of the server which is sending the
  1524.      Hello.
  1525.  
  1526.    Receiver ID
  1527.      This is the ID of a DCS from which the LS has heard a recent Hello.
  1528.      If the LS has not heard from any such DCS then the LS sets the
  1529.      "Number of Receiver IDs Heard" field to zero and allocates no
  1530.      storage for the Receiver ID in the Hello message.
  1531.  
  1532.  
  1533. B.2:  Packet Formats For NHRP
  1534.  
  1535. For NHRP, SCSP functionality may be obtained by using the SCSP packet
  1536. formats as described in Section B.1 (minus the LLC/SNAP and SCSP Fixed
  1537. part) by including them as the "mandatory part" part of an NHRP message
  1538. with the appropriate NHRP packet type code (described in Section B.2.1
  1539. through B.2.5).  This usage of SCSP is not the preferred method.
  1540. However, for consistency with previous revisions of SCSP, Sections B.2.1
  1541. through B.2.5 have been included below.
  1542.  
  1543. Section B.2.6 shows the correct format for the NHRP specific portion of
  1544. the CSA and CSAS records.
  1545.  
  1546. B.2.1 CA message as an NHRP mandatory part
  1547.    The NHRP CA packet has an SCSP CA message as its mandatory part and
  1548.    this NHRP packet has a type code of 11.
  1549.  
  1550. B.2.2 CSU Request message as an NHRP mandatory part
  1551.    The NHRP CSU Request packet has an SCSP CSU Request message as its
  1552.    mandatory part and this NHRP packet has a type code of 12.
  1553.  
  1554. B.2.3 CSU Reply message as an NHRP mandatory part
  1555.    The NHRP CSU Reply packet has an SCSP CSU Reply message as its
  1556.    mandatory part and this NHRP packet has a type code of 13.
  1557.  
  1558. B.2.4 CSU Solicit message as an NHRP mandatory part
  1559.    The NHRP CSU Solicit packet has an SCSP CSU Solicit message as its
  1560.    mandatory part and this NHRP packet has a type code of 14.
  1561.  
  1562.  
  1563.  
  1564.  
  1565. Luciani, et al.                                                [Page 28]
  1566.  
  1567. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1568.  
  1569.  
  1570. B.2.5 Hello message as an NHRP mandatory part
  1571.    The NHRP Hello packet has an Hello message as its mandatory part and
  1572.    this NHRP packet has a type code of 15.
  1573.  
  1574. B.2.6 CSA record and CSAS record for NHRP
  1575.  
  1576.    The CSA record and CSAS record are protocol specific (e.g., NHRP,
  1577.    IPMC, ATMARP, etc.) because they carry protocol specific data.  This
  1578.    section describes the information carried in CSA records and CSAS
  1579.    records for NHRP.
  1580.  
  1581. B.2.6.1 CSA Record
  1582.  
  1583.    The Client State Advertisement (CSA) record contains the information
  1584.    necessary to relate the current state of a client to the servers
  1585.    being synchronized.  There are zero or more CSA records in an CSU
  1586.    Request message.  This section contains the NHRP specific portion of
  1587.    the CSA.  The NHRP specific portion of the CSA is made up of a Client
  1588.    Information Entry (CIE) as defined in [2] where the CIE Code field
  1589.    gives the "State" of the client and the previously unused field has
  1590.    been used as a "Flags" field which contains cache entry specific
  1591.    information which was registered with the server (see below for
  1592.    example).  Appended to the CIE is an "Other State" field which
  1593.    contains other information about the cache entry. The format of the
  1594.    NHRP specific part of the CSA record is as follows:
  1595.  
  1596.     0                   1                   2                   3
  1597.     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
  1598.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1599.    |    State      | Prefix Length |         Flags                 |
  1600.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1601.    |  Maximum Transmission Unit    |        Holding Time           |
  1602.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1603.    |  Cli Addr T/L | Cli SAddr T/L | Cli Proto Len |  Preference   |
  1604.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1605.    |            Client NBMA Address (variable length)              |
  1606.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1607.    |           Client NBMA Subaddress (variable length)            |
  1608.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1609.    |          Client Protocol Address (variable length)            |
  1610.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1611.    |               Other State  (variable length)                  |
  1612.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1613.  
  1614.    State
  1615.      This field contains a value which represents the change in state of
  1616.      the client.  For example:
  1617.  
  1618.  
  1619.  
  1620.  
  1621. Luciani, et al.                                                [Page 29]
  1622.  
  1623. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1624.  
  1625.  
  1626.        0 - Client is registered and available.
  1627.  
  1628.        1 - Holding timer expired for client.
  1629.  
  1630.        2 - Client reregistered.
  1631.  
  1632.        3 - Client has been purged.
  1633.  
  1634.        4 - No such client data in server cache
  1635.  
  1636.    Prefix Length
  1637.      This field is message specific.  See the relevant message sections
  1638.      below.  In general, however, this fields is used to indicate that
  1639.  
  1640.    Flags
  1641.      Defined flags are as follows:
  1642.  
  1643.       0                   1
  1644.       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  1645.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1646.      |U|         unused              |
  1647.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1648.  
  1649.        U
  1650.          This is the Uniqueness bit.
  1651.  
  1652.  
  1653.    Maximum Transmission Unit
  1654.      This field gives the maximum transmission unit for the relevant
  1655.      client station.  If this value is 0 then either the default MTU is
  1656.      used or the MTU negotiated via signaling is used if such
  1657.      negotiation is possible for the given NBMA.
  1658.  
  1659.    Holding Time
  1660.      The Holding Time field specifies the number of seconds for which
  1661.      the Next Hop NBMA information specified in the CIE is considered to
  1662.      be valid.  Cached information SHALL be discarded when the holding
  1663.      time expires.  This field must be set to 0 on a NAK.
  1664.  
  1665.    Cli Addr T/L
  1666.      Type & length of next hop NBMA address specified in the CIE.  This
  1667.      field is interpreted in the context of the 'address family number'
  1668.      indicated by ar$afn (e.g., ar$afn=0x0003 for ATM).
  1669.  
  1670.    Cli SAddr T/L
  1671.      Type & length of next hop NBMA subaddress specified in the CIE.
  1672.      This field is interpreted in the context of the 'address family
  1673.      number' indicated by ar$afn (e.g., ar$afn=0x0015 for ATM makes the
  1674.  
  1675.  
  1676.  
  1677. Luciani, et al.                                                [Page 30]
  1678.  
  1679. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1680.  
  1681.  
  1682.      address an E.164 and the subaddress an ATM Forum NSAP address).
  1683.      When an NBMA technology has no concept of a subaddress, the
  1684.      subaddress is always null with a length of 0.  When the address
  1685.      length is specified as 0 no storage is allocated for the address.
  1686.  
  1687.    Cli Proto Len
  1688.      This field holds the length in octets of the Client Protocol
  1689.      Address specified in the CIE.
  1690.  
  1691.    Preference
  1692.      This field specifies the preference for use of the specific CIE
  1693.      relative to other CIEs.  Higher values indicate higher preference.
  1694.      Action taken when multiple CIEs have equal or highest preference
  1695.      value is a local matter.
  1696.  
  1697.    Client NBMA Address
  1698.      This is the client's NBMA address.
  1699.  
  1700.    Client NBMA SubAddress
  1701.      This is the client's NBMA subaddress.
  1702.  
  1703.    Client Protocol Address
  1704.      This is the client's internetworking layer address specified.  This
  1705.      field is generically referred to in this document as the Client ID
  1706.      (CID).
  1707.  
  1708.    Other State
  1709.      At present, the other state record contains only the CSA Originator
  1710.      ID information and a place holder for Vendor private information:
  1711.  
  1712.       0                   1                   2                   3
  1713.       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
  1714.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1715.      |CSA Orig ID Len|      CSA Originator ID (variable length)      |
  1716.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1717.      |          Vendor Private Information (variable length)         |
  1718.      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1719.  
  1720.      CSA Orig ID Len
  1721.        This field holds the length in octets of the CSA Originator ID.
  1722.  
  1723.      CSA Originator ID
  1724.        This field contains the protocol address of the server which
  1725.        originated the CSA record.
  1726.  
  1727.      Vendor Private Information
  1728.        This is a variable length octet string which is potentially
  1729.        vendor specific.  This may be encoded in a way similar to the
  1730.  
  1731.  
  1732.  
  1733. Luciani, et al.                                                [Page 31]
  1734.  
  1735. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1736.  
  1737.  
  1738.        Vendor Private extension of [2].
  1739.  
  1740.  
  1741. B.2.6.2 Client State Advertisement Summary Record (CSAS record):
  1742.  
  1743.    The client state advertisement summary is a summarization of the CSA.
  1744.    A CSAS contains the following:
  1745.  
  1746.     0                   1                   2                   3
  1747.     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
  1748.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1749.    | Cli Proto Len |CSA Orig ID Len|            unused             |
  1750.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1751.    |          Client Protocol Address (variable length)            |
  1752.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1753.    |     CSA Originator Protocol Address (variable length)         |
  1754.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1755.  
  1756.    Cli Proto Len
  1757.      This field holds the length in octets of the Client Protocol
  1758.      Address.
  1759.  
  1760.    CSA Orig ID Len
  1761.      This field holds the length in octets of the CSA Originator ID.
  1762.  
  1763.    Client Protocol Address
  1764.      This is the client's internetworking layer address specified.  This
  1765.      field is generically referred to in this document as the Client ID
  1766.      (CID).
  1767.  
  1768.    CSA Originator ID
  1769.      This field contains the protocol address of the server which
  1770.      originated the CSA record.
  1771.  
  1772.  
  1773. B.3  Packet Formats For ATMARP
  1774.  
  1775.    For ATMARP, SCSP functionality may be obtained by using the SCSP
  1776.    packet formats as described in Section B.1 (minus the LLC/SNAP and
  1777.    SCSP Fixed part) by including them part of an ATMARP message with the
  1778.    appropriate ATMARP packet type code (described in Section B.3.1
  1779.    through B.3.5).  This usage of SCSP is not the preferred method.
  1780.    However, for consistency with previous revisions of SCSP, Sections
  1781.    B.3.1 through B.3.5 have been included below.  When using this method
  1782.    to obtain SCSP functionality an ATMARP header/fixed-part needs to be
  1783.    appended to the SCSP packets which makes them look like every other
  1784.    ATMARP packet.  The format of that header is given below.  Consult
  1785.    Section 6.6 and 6.7 of [1] for more details.
  1786.  
  1787.  
  1788.  
  1789. Luciani, et al.                                                [Page 32]
  1790.  
  1791. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1792.  
  1793.  
  1794.     0                   1                   2                   3
  1795.     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
  1796.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1797.    |           ar$hrd              |           ar$pro              |
  1798.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1799.    |            unused             |           ar$op               |
  1800.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1801.  
  1802.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1803.    |                    ATMARP "mandatory parts"                   |
  1804.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1805.  
  1806.  
  1807.    ar$hrd
  1808.      The "Hardware type" is assigned to ATM Forum address family and is
  1809.      19 decimal (0x0013).
  1810.  
  1811.    ar$pro
  1812.      The "Protocol type" is (see Assigned Numbers) for protocol type
  1813.      number for the protocol using ATMARP. (IP is 0x0800).
  1814.  
  1815.    ar$op
  1816.      The operation type value is 3 for SCSP.
  1817.  
  1818.    ATMARP "mandatory parts"
  1819.      This part depends on the value of ar$op.  This part/field is
  1820.      analogous to the use of the mandatory part in NHRP while the
  1821.      preceding fields are directly analogous to the "Fixed" part in
  1822.      NHRP.  See Sections B.3.1 through B.3.5 for details of packet
  1823.      content based on the value in ar$op.
  1824.  
  1825. Section B.3.6 shows the correct format for the ATMARP specific portion
  1826. of the CSA and CSAS records.
  1827.  
  1828.  
  1829. B.3.1 CA message as an ATMARP mandatory part
  1830.    The ATMARP CA packet has an SCSP CA message as its mandatory part and
  1831.    this ATMARP packet has a ar$op value of 3.
  1832.  
  1833. B.3.2 CSU Request message as an ATMARP mandatory part
  1834.    The ATMARP CSU Request packet has an SCSP CSU Request message as its
  1835.    mandatory part and this ATMARP packet has a ar$op value of 4.  For
  1836.    ATMARP, since ATMARP clients have no concept of a sequence number,
  1837.    SCSP must generate a sequence number for each client request which
  1838.    causes a database update to occur since SCSP cannot acquire a unique
  1839.    sequence number from the client for the given update.
  1840.  
  1841. B.3.3 CSU Reply message as an ATMARP mandatory part
  1842.  
  1843.  
  1844.  
  1845. Luciani, et al.                                                [Page 33]
  1846.  
  1847. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1848.  
  1849.  
  1850.    The ATMARP CSU Reply packet has an SCSP CSU Reply message as its
  1851.    mandatory part and this ATMARP packet has a ar$op value of 5.
  1852.  
  1853. B.3.4 CSU Solicit message as an ATMARP mandatory part
  1854.    The ATMARP CSU Solicit packet has an SCSP CSU Solicit message as its
  1855.    mandatory part and this ATMARP packet has a ar$op value of 6.
  1856.  
  1857. B.3.5 Hello message as an ATMARP mandatory part
  1858.    The ATMARP Hello packet has an Hello message as its mandatory part
  1859.    and this ATMARP packet has a ar$op value of 7.
  1860.  
  1861. B.3.6 CSA record and CSAS record for ATMARP
  1862.  
  1863.    These records are the same as those found in Sections B.2.6.1 and
  1864.    B.2.6.2 of this document with several exceptions:
  1865.  
  1866.      1) The Holding Time is always set to 1200 seconds.
  1867.  
  1868.      2) The "Cli NBMA T/L" and "Cli NBMA SubT/L" fields are coded in a
  1869.      manner similar to ar$sstl and ar$shtl respectively as seen in
  1870.      Section 6.6 of [1].
  1871.  
  1872.      3) Prefix length is always set to 0xff.
  1873.  
  1874.      4) Preference is always set to zero.
  1875.  
  1876.  
  1877. Appendix C:  A Canonical Point Of Query
  1878.  
  1879. The following sections of this appendix describe optional Designated
  1880. Server (DS) functionality which is not completely within the realm of
  1881. server synchronization but is closely related. One use of this
  1882. Designated Server functionality might be to have a dynamically elected
  1883. server be responsible for assigning CMIs [5] to clients in an IPMC
  1884. implementation.
  1885.  
  1886. One way to obtain a Designated Server is described below while another
  1887. may be simply run a spanning tree like protocol over all servers in a SG
  1888. and choose the root server as the Designated Server.
  1889.  
  1890. CSU messages are used to elect the "Designated" Server (DS) from the set
  1891. of "Eligible" Servers (ESs).  A server must also be configured with its
  1892. Designated Server Priority (DSP) which relates its priority in the
  1893. election of a DS.  An ES is a server that is eligible to become the DS
  1894. by virtue of the fact that it has a DSP which is greater than zero.
  1895.  
  1896. C.1 Additional Abbreviations
  1897.  
  1898.  
  1899.  
  1900.  
  1901. Luciani, et al.                                                [Page 34]
  1902.  
  1903. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1904.  
  1905.  
  1906.    DS - Designated Server
  1907.  
  1908.    DSID - Designated Server ID
  1909.  
  1910.    DSP - Designated Server Priority
  1911.  
  1912.    ES - Eligible Server
  1913.  
  1914. C.2 Additional Definitions
  1915.  
  1916.    Designated Server (DS)
  1917.      The DS is the contact point within the SG for off-SG stations
  1918.      wishing to query the state of the SG.
  1919.  
  1920.    Designated Server ID (DSID)
  1921.      The DSID is a unique token that identifies the DS in an SG.  This value
  1922.      might be taken from the protocol address of the DS.
  1923.  
  1924.    Designated Server Priority (DSP)
  1925.      The DSP identifies the priority of a given server to become
  1926.      the DS.  If the DSP is 0 then the server is ineligible to become
  1927.      the DS.
  1928.  
  1929.    Eligible Server (ES)
  1930.      An ES is a server that is eligible to become the DS as a result
  1931.      of having a DSP greater than zero.
  1932.  
  1933. C.3 The Designated Server Functionality
  1934.  
  1935.    The remainder of this section assumes that the canonical point of
  1936.    query functionality is to be implemented.
  1937.  
  1938. C.3.1 Overview
  1939.  
  1940.    When an LS has one or more CAFSMs in the Aligned State, the LS
  1941.    participates in the Designated Server (DS) election process for the
  1942.    given SG.  Once a CAFSM has reached the Aligned State, the LS starts
  1943.    the DSTimer which is set to DSInitTime.  Before this DSTimer expires,
  1944.    the LS MUST not include a Preferred DSID or Preferred DSP in the CSU
  1945.    messages it originates.  While the DSTimer is running, the LS keeps
  1946.    track of its preferred DS from knowledge contained in its cache and
  1947.    from knowledge of its own DS Priority (DSP) and LSID.  The preferred
  1948.    DS is the server with the highest DSP and in the case of a tie, the
  1949.    largest Server ID (SID) wins.  CSU messages contain CSA records. Each
  1950.    CSA contains the following additional fields: a DS bit (which
  1951.    proclaims that the originator believes that it is DS) and a C/S bit
  1952.    (which proclaims that the cache entry refers to a Client (bit is
  1953.    zero) or a Server (bit is set to one)).  Further, if the C/S bit is
  1954.  
  1955.  
  1956.  
  1957. Luciani, et al.                                                [Page 35]
  1958.  
  1959. INTERNET-DRAFT                    SCSP                 Expires June 1997
  1960.  
  1961.  
  1962.    set then the CSA also contains a Preferred DSID field and a Preferred
  1963.    DSP field. Note that clients are assumed to have a DSP of zero.
  1964.    Servers are clients of themselves in the sense of keeping their own
  1965.    state in their own cache; thus a server always advertises itself.
  1966.  
  1967. C.3.2 The Election Algorithm
  1968.  
  1969.    When the DSTimer expires the LS chooses its preferred DS and starts
  1970.    advertising it as well as the preferred DSP.  The LS then does the
  1971.    following:
  1972.    1) If the LS thinks that it is the preferred DS then
  1973.       a) If all known servers have chosen this LS as leader then
  1974.          the LS becomes the DS (see below)
  1975.       b) If one or more servers are advertising a different DS from the LS then
  1976.          1) Start the DSOverrideTimer with DSOverrideInterval in it
  1977.          2) When the DSOverrideTimer expires
  1978.             a) If 2/3 of the servers believe the LS to be leader then
  1979.                the LS becomes the DS (see below)
  1980.  
  1981.    2) If the LS becomes DS it does the following:
  1982.       a) It increases its DSP by DSPIncrement or to DSPMax whichever is least
  1983.       b) It sends out a CSU message with its new DSP in Preferred DSP field,
  1984.          its LSID in the preferred DSID field, the DS bit set, the
  1985.          Originator ID field set to its LSID, and the Originator DSP field set
  1986.          to its new DSP.
  1987.  
  1988.    3) At all times an LS is listening for a new DS with higher DSP then
  1989.       the current preferred DSP (and preferred DSID).
  1990.  
  1991.    If at any time the LS sees a DSP higher then the preferred DSP or a
  1992.    DSP which is equal to the current preferred DSP but with an
  1993.    associated DSID which is larger than the preferred DSID then the LS
  1994.    acts as follows:
  1995.    1) If the LS was the DS then
  1996.       a) The LS announces that the other server is the DS by sending out a CSU
  1997.          message with the new DS's DSID in the preferred DSID, with the new
  1998.          DS's DSP in the preferred DSP field, the DS bit set off,
  1999.          and the Originator DSP field set to its original DSP (not its
  2000.          incremented DSP).
  2001.       b) The LS sets its DSP to its original value.
  2002.  
  2003.    2) If the LS was not the DS then
  2004.       a) If the new preferred DS is not the LS then
  2005.          the LS simply advertises the new information pertaining to the new DS
  2006.       b) If the new preferred DS is the LS then
  2007.          restart the election process as if the DSTimer had just expired.
  2008.  
  2009.    If the LS loses "connectivity" with the DS (e.g., the cache entry in
  2010.  
  2011.  
  2012.  
  2013. Luciani, et al.                                                [Page 36]
  2014.  
  2015. INTERNET-DRAFT                    SCSP                 Expires June 1997
  2016.  
  2017.  
  2018.    the LS for the DS is removed) then the LS acts as follows:
  2019.    1) The LS starts a Re-electionTimer
  2020.       a) If connectivity is reestablished before the timer expires then
  2021.          stop the timer and continue as normal
  2022.       b) else restart the election process as if the DSTimer had just expired
  2023.  
  2024.    If at any time the last CAFSM of the LS for the given SG leaves the
  2025.    Aligned State then all memory of the DS for that SG is erased from
  2026.    the LS and re-election will not take place until at least one CAFSM
  2027.    of the LS for the given SG reaches the Aligned State at which point
  2028.    the election process will start from the beginning.
  2029.  
  2030. C.3.3  Message Additions
  2031.  
  2032.    A CSU message carries 0 or more CSA records.  When designated server
  2033.    functionality is used, CSA records have the following fields appended
  2034.    to them:
  2035.  
  2036.     0                   1                   2                   3
  2037.     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
  2038.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2039.    | DS Proto Len  |   Pref DSP    |            unused             |
  2040.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2041.    |            Preferred Designated NHS Protocol Address          |
  2042.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  2043.  
  2044.    DS Proto Len
  2045.      This field holds the length in octets of the Preferred Designated
  2046.      NHS's Protocol Address.
  2047.  
  2048.    Pref DSP
  2049.      This field contains the priority of the preferred Designated NHS as
  2050.      seen from the perspective of the server creating the CSA record.
  2051.      This field does not exist in a record when the C/S bit is zero.
  2052.  
  2053.    Preferred DSID
  2054.      This field contains the ID of the preferred designated as seen from
  2055.      the perspective of the server creating the CSA record.  This field
  2056.      does not exist in a record when the C/S bit is zero.
  2057.  
  2058.  
  2059.  
  2060. References
  2061.  
  2062. [1] "Classical IP and ARP over ATM", Laubach, RFC 1577.
  2063.  
  2064. [2] "NBMA Next Hop Resolution Protocol (NHRP)", Luciani, Katz, Piscitello,
  2065.     Cole, draft-ietf-rolc-nhrp-08.txt.
  2066.  
  2067.  
  2068.  
  2069. Luciani, et al.                                                [Page 37]
  2070.  
  2071. INTERNET-DRAFT                    SCSP                 Expires June 1997
  2072.  
  2073.  
  2074. [3] "OSPF Version 2", Moy, RFC1583.
  2075.  
  2076. [4] "PNNI Draft Specification", Dykeman, Goguen, ATM Forum 94-0471R16
  2077.     (Straw Vote), 1996.
  2078.  
  2079. [5] "Support for Multicast over UNI 3.0/3.1 based ATM Networks.",
  2080.     Armitage, draft-ietf-ipatm-ipmc-12.txt.
  2081.  
  2082. [6] LAN Emulation over ATM Version 2 - LNNI specification - Draft 3
  2083.     ATM Forum 95-1082R3, April 1996
  2084.  
  2085. [7] Assigned Numbers, J. Reynolds and J. Postel, RFC 1700.
  2086.  
  2087.  
  2088. Acknowledgments
  2089.  
  2090.    This I-D is a distillation of issues raised during private
  2091.    discussions, on the IP-ATM mailing list, and during the Dallas IETF
  2092.    (12/95). Thanks to all who have contributed but particular thanks to
  2093.    Andy Malis, Raj Nair, and Matthew Doar of Ascom Nexion.  I would also
  2094.    like to thank James Watt of Newbridge for comments that lead to a
  2095.    tighter document.
  2096.  
  2097. Author's Address
  2098.  
  2099.    James V. Luciani
  2100.    Bay Networks, Inc.
  2101.    3 Federal Street, BL3-04
  2102.    Billerica, MA  01821
  2103.    phone: +1-508-439-4734
  2104.    email: luciani@baynetworks.com
  2105.  
  2106.    Grenville Armitage
  2107.    Bellcore, 445 South Street
  2108.    Morristown, NJ, 07960
  2109.    Email: gja@thumper.bellcore.com
  2110.    Ph. +1 201 829 2635
  2111.  
  2112.    Joel M. Halpern
  2113.    Newbridge Networks Corp.
  2114.    593 Herndon Parkway
  2115.    Herndon, VA 22070-5241
  2116.    Phone: +1-703-708-5954
  2117.    Email: jhalpern@Newbridge.COM
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125. Luciani, et al.                                                [Page 38]
  2126.  
  2127.