home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_n_r / draft-rfced-info-kane-00.txt < prev    next >
Text File  |  1997-05-21  |  205KB  |  5,357 lines

  1.  
  2.  
  3. INTERNET-DRAFT               EXPIRES NOVEMBER 1997      INTERNET-DRAFT
  4. Network Working Group                                        L. Kane
  5. INTERNET-DRAFT                                            K. Dobbins
  6. Category:  Informational                              R. Soczewinski
  7.                                       Cabletron Systems Incorporated
  8.                                                             May 1997
  9.  
  10.  
  11.  
  12.                     VLS Protocol Specification
  13.                     <draft-rfced-info-kane-00.txt>    
  14.  
  15. Status of this Memo
  16.  
  17.    This document is an Internet-Draft.  Internet-Drafts are working
  18.    documents of the Internet Engineering task Force (IETF), its areas,
  19.    and its working groups.  Note that other groups may also distribute
  20.    working documents as Internet-Drafts.
  21.  
  22.    Internet-Drafts are draft documents valid for a maximum of six
  23.    months and may be updated, replaced, or obsoleted by other
  24.    documents at any time.  It is inappropriate to use Internet-Drafts
  25.    as reference material or to cite them other than as "work in
  26.    progress".
  27.  
  28.    To learn the current status of any Internet-Draft, please check the
  29.    "1id-abstract.txt" listing contained in the Internet-Drafts Shadow
  30.    Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  31.    munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
  32.    ftp.isi.edu (US West Coast).
  33.  
  34.  
  35. Abstract
  36.  
  37.    The Virtual LAN Link State Protocol (VLSP) is part of the 
  38.    InterSwitch Message Protocol (ISMP).  ISMP was designed to 
  39.    facilitate interswitch communication within distributed 
  40.    connection-oriented switching networks.  VLSP is used to 
  41.    determine and maintain a fully connected mesh topology graph of 
  42.    the switch fabric.  Each switch maintains an identical database 
  43.    describing the topology.  Call-originating switches use the 
  44.    topology database to determine the path over which to route a 
  45.    call connection.
  46.  
  47.    VLSP provides support for equal-cost multipath routing, and 
  48.    recalculates routes quickly in the face of topological changes, 
  49.    utilizing a minimum of routing protocol traffic.
  50.  
  51.  
  52. Table of Contents
  53.  
  54.    Status of this Memo                                        1
  55.    Abstract                                                   1
  56.    1.  Introduction                                           3
  57.        1.1  Acknowledgments                                   3
  58.        1.2  Data Conventions                                  4
  59.    2.  ISMP Overview                                          4
  60.    3.  General ISMP Packet Format                             5
  61.        3.1  Frame Header                                      5
  62.        3.2  ISMP Packet Header                                6
  63.        3.3  ISMP Message Body                                 7
  64.    4.  VLS Protocol Overview                                  8
  65.        4.1  Definitions of Commonly Used Terms                8
  66.        4.2  Differences Between VLSP and OSPF                10
  67.             4.2.1  Operation at the Physical Layer           10
  68.             4.2.2  All Links Treated as Broadcast            10
  69.             4.2.3  Routing Path Information                  11
  70.             4.2.4  Configurable Parameters                   11
  71.             4.2.5  Features Not Supported                    11
  72.  
  73.  
  74. L. Kane, et. al.                                           [Page 1]
  75. I-D                VLS Protocol Specification            May 1997
  76.  
  77.  
  78.        4.3  Functional Summary                               12
  79.             4.3.1  Discovery Process                         12
  80.             4.3.2  Synchronizing the Databases               12
  81.             4.3.3  Maintaining the Databases                 12
  82.             4.3.4  Calculating the Routing Table             12
  83.        4.4  Protocol Packets                                 13
  84.        4.5  Protocol Data Structures                         14
  85.        4.6  Basic Implementation Requirements                14
  86.        4.7  Organization of the Remainder of This Document   15
  87.    5.  Interface Data Structure                              15
  88.        5.1  Interface States                                 18
  89.        5.2  Events Causing Interface State Changes           20
  90.        5.3  Interface State Machine                          22
  91.    6.  Neighbor Data Structure                               24
  92.        6.1  Neighbor States                                  26
  93.        6.2  Events Causing Neighbor State Changes            29
  94.        6.3  Neighbor State Machine                           31
  95.    7.  Area Data Structure                                   34
  96.        7.1  Adding and Deleting Link State Advertisements    35
  97.        7.2  Accessing Link State Advertisements              36
  98.    8.  Routing Table                                         36
  99.        8.1  Routing Table Lookup                             37
  100.    9.  Discovery Process                                     38
  101.        9.1  Hello Packets                                    38
  102.        9.2  Bidirectional Communication                      39
  103.        9.3  Designated Switch                                39
  104.             9.3.1  Selecting the Designated Switch           40
  105.        9.4  Adjacencies                                      43
  106.    10. Synchronizing the Databases                           44
  107.        10.1 Link State Advertisements                        44
  108.             10.1.1 Determining Which Link State 
  109.                    Advertisement Is Newer                    45
  110.        10.2 Database Exchange Process                        46
  111.             10.2.1 Database Description Packets              46
  112.             10.2.2 Negotiating the Master/Slave Relationship 47
  113.             10.2.3 Exchanging Database Description Packets   48
  114.        10.3 Updating the Database                            50
  115.        10.4 An Example                                       51
  116.    11. Maintaining the Databases                             53
  117.        11.1 Originating Link State Advertisements            53
  118.             11.1.1 Switch Link Advertisements                54
  119.             11.1.2 Network Link Advertisements               57
  120.        11.2 Distributing Link State Advertisements           58
  121.             11.2.1 Overview                                  58
  122.             11.2.2 Processing an Incoming Link State 
  123.                    Update Packet                             60
  124.             11.2.3 Forwarding a Link State Update Packet     62
  125.             11.2.4 Installing Link State Advertisements 
  126.                    in the Database                           64
  127.             11.2.5 Retransmitting Link State Advertisements  64
  128.             11.2.6 Acknowledging Link State Advertisements   65
  129.  
  130.  
  131.  
  132. L. Kane, et. al.                                           [Page 2]
  133. I/D               VLS Protocol Specification            May 1997
  134.  
  135.  
  136.        11.3 Aging the Link State Database                    67
  137.             11.3.1 Premature Aging of Advertisements         68
  138.    12. Calculating the Routing Table                         68
  139.    13. Protocol Packets                                      69
  140.        13.1 Packet Processing                                70
  141.        13.2 Network Layer Address Information                70
  142.        13.3 VLSP Packet Header                               72
  143.        13.4 Options Field                                    74
  144.        13.5 Packet Formats                                   75
  145.             13.5.1 Hello Packets                             75
  146.             13.5.2 Database Description Packets              77
  147.             13.5.3 Link State Request Packets                79
  148.             13.5.4 Link State Update Packets                 80
  149.             13.5.5 Link State Acknowledgment Packets         81
  150.    14. Link State Advertisement Formats                      82
  151.        14.1 Link State Advertisement Headers                 82
  152.        14.2 Switch Link Advertisements                       85
  153.        14.3 Network Link Advertisements                      87
  154.    15. Protocol Parameters                                   88
  155.        15.1 Architectural Constants                          88
  156.        15.2 Configurable Parameters                          89
  157.    Footnotes                                                 91
  158.    References                                                92
  159.    Security Considerations                                   92
  160.    Authors Addresses                                        92
  161.  
  162.  
  163. 1.  Introduction
  164.  
  165.    This memo is being distributed to members of the Internet 
  166.    community in order to solicit reactions to the proposals 
  167.    contained herein.  While the specification discussed here may 
  168.    not be directly relevant to the research problems of the 
  169.    Internet, it may be of interest to researchers and 
  170.    implementers.  
  171.  
  172.  
  173. 1.1  Acknowledgments
  174.  
  175.    VLSP is derived from the OSPF link-state routing protocol 
  176.    described in [RFC1583], written by John Moy, formerly of 
  177.    Proteon, Inc., Westborough, Massachusetts.  Much of the current 
  178.    RFC has been drawn from [RFC1583].  Therefore, this author 
  179.    wishes to acknowledge the contribution Mr. Moy has 
  180.    (unknowingly) made to this document.
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190. L. Kane, et. al.                                           [Page 3]
  191. I/D              VLS Protocol Specification            May 1997
  192.  
  193.  
  194. 1.2  Data Conventions
  195.  
  196.    The methods used in this memo to describe and picture data 
  197.    adhere to the standards of Internet Protocol documentation 
  198.    [RFC1700].  In particular:
  199.  
  200.       The convention in the documentation of Internet 
  201.       Protocols is to express numbers in decimal and to 
  202.       picture data in "big-endian" order.  That is, fields 
  203.       are described left to right, with the most 
  204.       significant octet on the left and the least 
  205.       significant octet on the right.
  206.  
  207.       The order of transmission of the header and data 
  208.       described in this document is resolved to the octet 
  209.       level.  Whenever a diagram shows a group of octets, 
  210.       the order of transmission of those octets is the 
  211.       normal order in which they are read in English. 
  212.  
  213.       Whenever an octet represents a numeric quantity the 
  214.       left most bit in the diagram is the high order or 
  215.       most significant bit.  That is, the bit labeled 0 is 
  216.       the most significant bit.
  217.  
  218.       Similarly, whenever a multi-octet field represents a 
  219.       numeric quantity the left most bit of the whole field 
  220.       is the most significant bit.  When a multi-octet 
  221.       quantity is transmitted the most significant octet is 
  222.       transmitted first.
  223.  
  224.  
  225. 2.  ISMP Overview
  226.  
  227.    The InterSwitch Message Protocol (ISMP) is used for interswitch 
  228.    communication within distributed connection-oriented switching 
  229.    networks.  ISMP provides the following services:
  230.  
  231.    -  Topology services.  Each switch maintains a distributed 
  232.       topology of the switch fabric by exchanging the following 
  233.       interswitch messages with other switches:
  234.  
  235.       -  Interswitch Keepalive messages (SNDM protocol) are sent by 
  236.          each switch to announce its existence to its neighboring 
  237.          switches and to establish the topology of the switch 
  238.          fabric.
  239.  
  240.       -  Interswitch Spanning Tree BPDU messages and Interswitch 
  241.          Remote Blocking messages (LSMP protocol) are used to 
  242.          determine and maintain a loop-free flood path between all 
  243.          network switches in the fabric.  This flood path is used 
  244.          for all undirected interswitch messages -- that is, 
  245.          messages of the ARLD, SBCD, and SFCT protocols.
  246.  
  247.  
  248. L. Kane, et. al.                                           [Page 4]
  249. I/D              VLS Protocol Specification            May 1997
  250.  
  251.  
  252.       -  Interswitch Link State messages (VLS protocol) are used to 
  253.          determine and maintain a fully connected mesh topology 
  254.          graph of the switch fabric.  Call-originating switches use 
  255.          the topology graph to determine the path over which to 
  256.          route a call connection.
  257.  
  258.    -  Address resolution services.  Interswitch Resolve messages 
  259.       (ARLD protocol) are used to resolve a packet destination 
  260.       address when the packet source and destination pair does not 
  261.       match a known connection.  Interswitch New User messages 
  262.       (also part of the ARLD protocol) are used to provide end-
  263.       station address mobility between switches.
  264.  
  265.    -  Tag-based flooding.  A tag-based broadcast method (SBCD 
  266.       protocol) is used to restrict the broadcast of unresolved 
  267.       packets to only those ports within the fabric that belong to 
  268.       the same VLAN as the source.
  269.  
  270.    -  Call tapping services.  Interswitch Tap messages (SFCT 
  271.       protocol) are used to monitor traffic moving between two end 
  272.       stations.  Traffic can be monitored in one or both 
  273.       directions along the connection path.
  274.  
  275.  
  276.                                  NOTE
  277.  
  278.  
  279.             This document describes the VLS protocol.  
  280.             Other ISMP protocols are described in other 
  281.             RFCs.  See the References section for a 
  282.             list of these related RFCs.
  283.  
  284.  
  285.  
  286. 3.  General ISMP Packet Format
  287.  
  288.    ISMP packets are of variable length and have the following 
  289.    general structure:
  290.  
  291.    -  Frame header
  292.    -  ISMP packet header
  293.    -  ISMP message body
  294.  
  295.  
  296. 3.1  Frame Header
  297.  
  298.    ISMP packets are encapsulated within an IEEE 802-compliant 
  299.    frame using a standard header as shown below:
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307. L. Kane, et. al.                                           [Page 5]
  308. I/D                VLS Protocol Specification            May 1997
  309.  
  310.  
  311.     0                   1                   2                   3
  312.     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
  313.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  314. 00 |                                                               |
  315.    +      Destination address      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  316. 04 |                               |                               |
  317.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+        Source address         +
  318. 08 |                                                               |
  319.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  320. 12 |             Type              |                               |
  321.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
  322. 16 |                                                               |
  323.    +                                                               +
  324.    :                                                               :
  325.  
  326.    Destination address
  327.  
  328.       This 6-octet field contains the Media Access Control (MAC) 
  329.       address of the multicast channel over which all switches in 
  330.       the fabric receive ISMP packets.  The destination address of 
  331.       all ISMP packets contain a value of 01-00-1D-00-00-00.
  332.  
  333.    Source address
  334.  
  335.       This 6-octet field contains the physical (MAC) address of 
  336.       the switch originating the ISMP packet.
  337.  
  338.    Type
  339.  
  340.       This 2-octet field identifies the type of data carried 
  341.       within the frame.  The type field of ISMP packets contains 
  342.       the value 0x81FD.
  343.  
  344.  
  345. 3.2  ISMP Packet Header
  346.  
  347.    The ISMP packet header consists of 6 octets, as shown below: 
  348.  
  349.  
  350.     0                   1                   2                   3
  351.     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
  352.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  353. 00 
  354. |///////////////////////////////////////////////////////////////|
  355.    ://////// Frame header /////////////////////////////////////////:
  356.    +//////// (14 octets)  /////////+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  357. 12 |///////////////////////////////|            Version            |
  358.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  359. 16 |       ISMP message type       |        Sequence number        |
  360.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  361. 20 |                                                               |
  362.    +                                                               +
  363.    :                                                               :
  364.  
  365.  
  366. L. Kane, et. al.                                           [Page 6]
  367. I/D                 VLS Protocol Specification            May 1997
  368.  
  369.  
  370.    Frame header
  371.  
  372.       This 14-octet field contains the frame header.
  373.  
  374.    Version
  375.  
  376.       This 2-octet field contains the version number of the 
  377.       InterSwitch Message Protocol to which this ISMP packet 
  378.       adheres.  This document describes ISMP Version 2.0.
  379.  
  380.    ISMP message type
  381.  
  382.       This 2-octet field contains a value indicating which type of 
  383.       ISMP message is contained within the message body.  Valid 
  384.       values are as follows:
  385.  
  386.       1    (reserved)
  387.       2    Interswitch Keepalive messages (SNDM protocol)
  388.       3    Interswitch Link State messages (VLS protocol)
  389.       4    Interswitch Spanning Tree BPDU messages and Remote 
  390.            Blocking messages (LSMP protocol)
  391.       5    Interswitch Resolve and New User messages (ARLD 
  392.            protocol)
  393.       6    (reserved)
  394.       7    Tag-Based Flood messages (SBCD protocol)
  395.       8    Interswitch Tap messages (SFCT protocol)
  396.  
  397.       VLS protocol messages have a message type of 3.
  398.  
  399.    Sequence number
  400.  
  401.       This 2-octet field contains an internally generated sequence 
  402.       number used by the various protocol handlers for internal 
  403.       synchronization of messages.
  404.  
  405.  
  406. 3.3  ISMP Message Body
  407.  
  408.    The ISMP message body is a variable-length field containing the 
  409.    actual data of the ISMP message.  The length and content of 
  410.    this field are determined by the value found in the message 
  411.    type field.
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424. L. Kane, et. al.                                           [Page 7]
  425. I/D               VLS Protocol Specification            May 1997
  426.  
  427.  
  428. 4.  VLS Protocol Overview
  429.  
  430.    VLSP is a dynamic routing protocol.  It quickly detects 
  431.    topological changes in the switch fabric (such as, switch 
  432.    interface failures) and calculates new loop-free routes after a 
  433.    period of convergence.  This period of convergence is short and 
  434.    involves a minimum of routing traffic.  
  435.  
  436.    All switches in the fabric run the same algorithm and maintain 
  437.    identical databases describing the switch fabric topology.  
  438.    This database contains each switchs local state, including its 
  439.    usable interfaces and reachable neighbors.  Each switch 
  440.    distributes its local state throughout the switch fabric by 
  441.    flooding.  From the topological database, each switch 
  442.    constructs a set of best path trees (using itself as the root) 
  443.    that specify routes to all other switches in the fabric.  
  444.  
  445.  
  446. 4.1  Definitions of Commonly Used Terms
  447.  
  448.    This section contains a collection of definitions for terms 
  449.    that have a specific meaning to the protocol and that are used 
  450.    throughout the text. 
  451.  
  452.    Switch ID
  453.  
  454.       A 10-octet value that uniquely identifies the switch within 
  455.       the switch fabric.  The value consists of the 6-octet base 
  456.       MAC address of the switch, followed by 4 octets of zeroes. 
  457.  
  458.    Network link
  459.  
  460.       The physical connection between two switches.  A link is 
  461.       associated with a switch interface.  
  462.       There are two physical types of network links supported by 
  463.       VLSP:
  464.  
  465.       -  Point-to-point links that join a single pair of switches.  
  466.          A serial line is an example of a point-to-point network 
  467.          link.
  468.  
  469.       -  Multi-access broadcast links that support the attachment 
  470.          of multiple switches, along with the capability to address 
  471.          a single message to all the attached switches.  An 
  472.          attached ethernet is an example of a multi-access 
  473.          broadcast network link.
  474.  
  475.       A single topology can contain both types of links.  Note, 
  476.       however, the current version of VLSP treats all links as if 
  477.       they were multi-access.
  478.  
  479.  
  480.  
  481.  
  482. L. Kane, et. al.                                           [Page 8]
  483. I/D               VLS Protocol Specification            May 1997
  484.  
  485.  
  486.    Interface
  487.  
  488.       The port over which a switch accesses one of its links.  
  489.       Interfaces are identified by their interface ID, a 10-octet 
  490.       value consisting of the 6-octet base MAC address of the 
  491.       switch, followed by the 4-octet local port number of the 
  492.       interface.
  493.  
  494.    Neighboring switches
  495.  
  496.       Two switches attached to a common link.  Neighbors are 
  497.       dynamically discovered by the Hello protocol.
  498.  
  499.    Adjacency
  500.  
  501.       A relationship formed between selected neighboring switches 
  502.       for the purpose of exchanging routing information.  Not 
  503.       every pair of neighboring switches become adjacent.
  504.  
  505.    Link state advertisement
  506.  
  507.       Describes the local state of a switch or a link.  Each link 
  508.       state advertisement is flooded throughout the switch fabric.  
  509.       The collected link state advertisements of all switches and 
  510.       links form the protocol's topological database.
  511.  
  512.    Hello protocol
  513.  
  514.       That part of VLSP used to establish and maintain neighbor 
  515.       relationships.  
  516.  
  517.    Designated switch
  518.  
  519.       Each multi-access network link has a designated switch.  The 
  520.       designated switch generates a link state advertisement for 
  521.       the link and has other special responsibilities in the 
  522.       running of the protocol.  
  523.  
  524.       The use of a designated switch permits a reduction in the 
  525.       number of adjacencies required on multi-access links.  This 
  526.       in turn reduces the amount of routing protocol traffic and 
  527.       the size of the topological database.
  528.  
  529.       The designated switch is elected by the Hello protocol.  A 
  530.       designated switch is not selected for a point-to-point 
  531.       network link.
  532.  
  533.    Backup designated switch
  534.  
  535.       Each multi-access network link has a backup designated 
  536.       switch.  The backup designated switch maintains adjacencies 
  537.       with the same switches on the link as the designated switch.  
  538.  
  539.  
  540. L. Kane, et. al.                                           [Page 9]
  541. I/D                VLS Protocol Specification            May 1997
  542.  
  543.  
  544.       This optimizes the failover time when the backup designated 
  545.       switch must take over for the (failed) designated switch. 
  546.  
  547.       The backup designated switch is elected by the Hello 
  548.       protocol.  A backup designated switch is not selected for a 
  549.       point-to-point network link.
  550.  
  551.  
  552. 4.2  Differences Between VLSP and OSPF
  553.  
  554.    The VLS protocol is derived from the OSPF link-state routing 
  555.    protocol described in [RFC1583].  
  556.  
  557.  
  558. 4.2.1  Operation at the Physical Layer
  559.  
  560.    The primary differences between the VLS and OSPF protocols stem 
  561.    from the fact that OSPF runs over the IP layer, while VLSP runs 
  562.    at the physical MAC layer.  This difference has the following 
  563.    repercussions:
  564.  
  565.    -  VLSP does not support features (such as fragmentation) that 
  566.       are typically provided by network layer service providers.
  567.  
  568.    -  Due to the unrelated nature of MAC address assignments, VLSP 
  569.       provides no summarization of the address space (such as, 
  570.       classical IP subnet information) or level 2 routing (such 
  571.       as, IS-IS Phase V DECnet).  Thus, VLSP does not support 
  572.       grouping switches into areas.  All switches exist in a 
  573.       single area.  Since a single domain exists within any switch 
  574.       fabric, there is no need for VLSP to provide interdomain 
  575.       reachability.
  576.  
  577.    -  As mentioned in Section 3.1, ISMP uses a single well-known 
  578.       multicast address for all packets.  However, parts of the 
  579.       VLS protocol (as derived from OSPF) are dependent on certain 
  580.       network layer addresses -- in particular, the AllSPFSwitches 
  581.       and AllDSwitches multicast addresses that drive the 
  582.       distribution of link state advertisements throughout the 
  583.       switch fabric.  In order to facilitate the implementation of 
  584.       the protocol at the physical MAC layer, network layer 
  585.       address information is encapsulated in the protocol packets 
  586.       (see Section 13.2).  This information is unbundled and 
  587.       packets are then processed as if they had been sent or 
  588.       received on that multicast address. 
  589.  
  590.  
  591. 4.2.2  All Links Treated as Broadcast
  592.  
  593.    The current version of VLSP treats all network links as multi-
  594.    access broadcast media, regardless of whether the link is 
  595.    actually point-to-point or multi-access.
  596.  
  597.  
  598. L. Kane, et. al.                                           [Page 10]
  599. I/D                 VLS Protocol Specification            May 1997
  600.  
  601.  
  602. 4.2.3  Routing Path Information
  603.  
  604.    Instead of providing the next hop to a destination, VLSP 
  605.    calculates and maintains complete end-to-end path information.  
  606.    On request, a list of individual port identifiers is generated 
  607.    describing a complete path from the source switch to the 
  608.    destination switch.  If multiple equal-cost routes exist to a 
  609.    destination switch, up to three paths are calculated and 
  610.    returned.
  611.  
  612.  
  613. 4.2.4  Configurable Parameters
  614.  
  615.    OSPF supports (and requires) configurable parameters.  In fact, 
  616.    even the default OSPF configuration requires that IP address 
  617.    assignments be specified.  On the other hand, no configuration 
  618.    information is ever required for the VLS protocol.  Switches 
  619.    are uniquely identified by their base MAC addresses and ports 
  620.    are uniquely identified by the base MAC address of the switch 
  621.    and a port number.
  622.  
  623.    While a developer is free to implement configurable parameters 
  624.    for the VLS protocol, the current version of VLSP supports 
  625.    configurable path metrics only.  Note that this has the 
  626.    following repercussions:
  627.  
  628.    -  All switches have a switch priority of 1.  This forces the 
  629.       selection of the designated switch to be based solely on 
  630.       base MAC address.
  631.  
  632.    -  Authentication is not supported.
  633.  
  634.  
  635. 4.2.5  Features Not supported
  636.  
  637.    In addition to those features mentioned in the previous 
  638.    sections, the following OSPF features are not supported by the 
  639.    current version of VLSP:
  640.  
  641.    -  Periodic refresh of link state advertisements.  (This 
  642.       optimizes performance by eliminating unnecessary traffic 
  643.       between the switches.)
  644.  
  645.    -  Routing based on non-zero type of service (TOS).
  646.  
  647.    -  Use of external routing information for destinations outside 
  648.       the switch fabric.
  649.  
  650.   
  651.  
  652.  
  653.  
  654.  
  655.  
  656. L. Kane, et. al.                                           [Page 11]
  657. I/D                 VLS Protocol Specification            May 1997
  658.  
  659.  
  660. 4.3  Functional Summary
  661.  
  662.    There are essentially four operational stages of the VLS 
  663.    protocol.
  664.  
  665.  
  666. 4.3.1  Discovery Process
  667.  
  668.    When a switch comes on-line, it initializes its routing data 
  669.    structures.  It then waits for notification from the SNDM 
  670.    protocol [RFCxxxx] that its interfaces are functional.  
  671.  
  672.    Once the switch learns that its interfaces are functional, it 
  673.    uses the Hello protocol to dynamically discover its neighbors 
  674.    by sending Hello packets over its outports and receiving Hello 
  675.    packets back in return.  The Hello protocol is also used to 
  676.    select a designated switch for each multi-access network link.  
  677.    The designated switch on each link determines which switches 
  678.    will become adjacent.  
  679.  
  680.  
  681. 4.3.2  Synchronizing the Databases
  682.  
  683.    Adjacencies are used to simplify and speed up the process of 
  684.    synchronizing the topological database (also known as the link 
  685.    state database) maintained by each switch in the fabric.  Each 
  686.    switch is only required to synchronize its database with those 
  687.    neighbors to which it is adjacent.  This reduces the amount of 
  688.    routing protocol traffic across the fabric, particularly for 
  689.    multi-access links with multiple switches. 
  690.  
  691.  
  692. 4.3.3  Maintaining the Databases
  693.  
  694.    Each switch advertises its state (also known as its link state) 
  695.    any time its link state changes.  Link state advertisements are 
  696.    distributed throughout the switch fabric using a reliable 
  697.    flooding algorithm that ensures that all switches in the fabric 
  698.    are notified of any link state changes.  
  699.  
  700.  
  701. 4.3.4  Calculating the Routing Table
  702.  
  703.    The link state database consists of the collection of link 
  704.    state advertisements received from each switch.  Each switch 
  705.    uses its link state database to calculate a set of best paths, 
  706.    using itself as root, to all other switches in the fabric.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714. L. Kane, et. al.                                           [Page 12]
  715. I/D                 VLS Protocol Specification            May 1997
  716.  
  717.  
  718. 4.4  Protocol Packets
  719.  
  720.    In addition to the frame header and the ISMP packet header 
  721.    described in Section 3, all VLS protocol packets share a common 
  722.    protocol header, described in Section 13.3.  
  723.  
  724.    The VLSP packet types are listed below in Table 1.  Their 
  725.    formats are described in Section 13.5.
  726.  
  727.  
  728.      Type    Packet Name              Protocol Function
  729.  
  730.      1       Hello                    Discover/maintain neighbors
  731.      2       Database Description     Summarize database contents
  732.      3       Link State Request       Database download
  733.      4       Link State Update        Database update
  734.      5       Link State Ack           Flooding acknowledgment
  735.  
  736.                      Table 1: VLSP Packet Types
  737.  
  738.  
  739.    The Hello packets are used to discover and maintain neighbor 
  740.    relationships.  The Database Description and Link State Request 
  741.    packets are used to form  adjacencies.  Link State Update and 
  742.    Link State Acknowledgment packets are used to update the 
  743.    topological database.
  744.  
  745.    Each Link State Update packet carries a set of link state 
  746.    advertisements.  A single Link State Update packet may contain 
  747.    the link state advertisements of several switches.  There are 
  748.    two different types of link state advertisement, as shown below 
  749.    in Table 2.
  750.  
  751.  
  752.      LS    Advertisement    Advertisement Description
  753.      Type  Name
  754.  
  755.      1     Switch link      Originated by all switches. This
  756.            advertisements   advertisement describes the collected
  757.                             states of the switch's interfaces.
  758.  
  759.      2     Network link     Originated by the designated switch. 
  760.            advertisements   This advertisement contains the list of
  761.                             switches connected to the network link.
  762.  
  763.              Table 2: VLSP Link State Advertisements
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772. L. Kane, et. al.                                           [Page 13]
  773. I/D                  VLS Protocol Specification            May 1997
  774.  
  775.  
  776. 4.5  Protocol Data Structures
  777.  
  778.    The VLS protocol is described in this specification in terms of 
  779.    its operation on various protocol data structures.  Table 3 
  780.    lists the primary VLSP data structures, along with the section 
  781.    in which they are described in detail.   
  782.  
  783.  
  784.           Structure Name                        Description
  785.  
  786.           Interface Data Structure              Section 5
  787.           Neighbor Data Structure               Section 6
  788.           Area Data Structure                   Section 7
  789.           Routing Table                         Section 8
  790.  
  791.                     Table 3: VLSP Data Structures
  792.  
  793.  
  794. 4.6  Basic Implementation Requirements
  795.  
  796.    An implementation of the VLS protocol requires the following 
  797.    pieces of system support:
  798.  
  799.    Timers
  800.  
  801.       Two types of timer are required.  The first type, known as a 
  802.       one-shot timer, expires once and triggers an event.  The 
  803.       second type, known as an interval timer, expires at preset 
  804.       intervals.  Interval timers are used to trigger events at 
  805.       periodic intervals. The granularity of both types of timers 
  806.       is one second.
  807.  
  808.       Interval timers should be implemented in such a way as to 
  809.       avoid drift.  In some switch implementations, packet 
  810.       processing can affect timer execution.  For example, on a 
  811.       multi-access link with multiple switches, regular broadcasts 
  812.       can lead to undesirable synchronization of routing packets 
  813.       unless the interval timers have been implemented to avoid 
  814.       drift.  If it is not possible to implement drift-free 
  815.       timers, small random amounts of time should be added to or 
  816.       subtracted from the timer interval at each firing.
  817.  
  818.    List manipulation primitives
  819.  
  820.       Much of the functionality of VLSP is described here in terms 
  821.       of its operation on lists of link state advertisements.  Any 
  822.       particular advertisement may be on many such lists.  
  823.       Implementation of VLSP must be able to manipulate these 
  824.       lists, adding and deleting constituent advertisements as 
  825.       necessary.
  826.  
  827.  
  828.  
  829.  
  830. L. Kane, et. al.                                           [Page 14]
  831. I/D                VLS Protocol Specification            May 1997
  832.  
  833.  
  834.    Tasking support
  835.  
  836.       Certain procedures described in this specification invoke 
  837.       other procedures.  At times, these other procedures should 
  838.       be executed in-line -- that is, before the current procedure 
  839.       has finished.  This is indicated in the text by instructions 
  840.       to "execute" a procedure.  At other times, the other 
  841.       procedures are to be executed only when the current 
  842.       procedure has finished.  This is indicated by instructions 
  843.       to "schedule" a task.  Implementation of VLSP must provide 
  844.       these two types of tasking support.
  845.  
  846.  
  847. 4.7  Organization of the Remainder of This Document
  848.  
  849.    The remainder of this document is organized as follows:
  850.  
  851.    -  Section 5 through Section 8 describe the primary data 
  852.       structures used by the protocol.  Note that this 
  853.       specification is presented in terms of these data structures 
  854.       in order to make explanations more precise.  Implementations 
  855.       of the protocol must support the functionality described, 
  856.       but need not use the exact data structures that appear in 
  857.       this specification.
  858.  
  859.    -  Section 9 through Section 12 describe the four operational 
  860.       stages of the protocol:  the discovery process, 
  861.       synchronizing the databases, maintaining the databases, and 
  862.       calculating the routing table.
  863.  
  864.    -  Section 13 describes the processing of VLSP packets and 
  865.       presents detailed descriptions of their formats.
  866.  
  867.    -  Section 14 presents detailed descriptions of link state 
  868.       advertisements.
  869.  
  870.    -  Section 15 summarizes the protocol parameters.
  871.  
  872.  
  873. 5.  Interface Data Structure
  874.  
  875.    The port over which a switch accesses a network link is known 
  876.    as the link interface.  Each switch maintains a separate 
  877.    interface data structure for each network link.
  878.  
  879.    The following data items are associated with each interface:
  880.  
  881.    Type
  882.  
  883.       The type of network to which the interface is attached -- 
  884.       point-to-point or broadcast (multi-access).  Note that the 
  885.       current version of VLSP treats all links as broadcast media.
  886.  
  887.  
  888. L. Kane, et. al.                                           [Page 15]
  889. I/D                VLS Protocol Specification            May 1997
  890.  
  891.  
  892.    State
  893.  
  894.       The functional level of the interface.  The state of the 
  895.       interface is included in all switch link advertisements 
  896.       generated by the switch, and is also used to determine 
  897.       whether full adjacencies are allowed on the interface.  See 
  898.       Section 5.1 for a complete description of interface states.
  899.  
  900.    Interface identifier
  901.  
  902.       A 10-octet value that uniquely identifies the interface.  
  903.       This value consists of the 6-octet base MAC address of the 
  904.       neighbor switch, followed by the 4-octet local port number 
  905.       of the interface.
  906.  
  907.    Area ID
  908.  
  909.       A 4-octet value identifying the area.  Since VLSP does not 
  910.       support multiple areas, the value here is always zero.
  911.  
  912.    HelloInterval
  913.  
  914.       The interval, in seconds, at which the switch sends Hello 
  915.       packets over the interface.  
  916.  
  917.    SwitchDeadInterval
  918.  
  919.       The length of time, in seconds, that neighboring switches 
  920.       will wait before declaring the local switch down once they 
  921.       stop receiving Hello packets from the local switch.
  922.  
  923.    InfTransDelay
  924.  
  925.       The estimated number of seconds it should take to transmit a 
  926.       Link State Update packet over this interface.  Link state 
  927.       advertisements contained in the update packet will have 
  928.       their age incremented by this amount before transmission.  
  929.       This value must be greater than zero and must take into 
  930.       account transmission and propagation delays.
  931.  
  932.    Switch priority
  933.  
  934.       An 8-bit unsigned integer.  When two switches attached to 
  935.       the same network link contend for selection as the 
  936.       designated switch, the switch with the highest priority 
  937.       takes precedence.  If both switches have the same priority, 
  938.       the switch with the highest base MAC address becomes the 
  939.       designated switch.  A switch whose switch priority is set to 
  940.       zero is ineligible to become the designated switch on the 
  941.       attached link. 
  942.  
  943.  
  944.  
  945.  
  946. L. Kane, et. al.                                           [Page 16]
  947. I/D                 VLS Protocol Specification            May 1997
  948.  
  949.  
  950.    Hello timer
  951.  
  952.       The interval timer used to regulate the transmission of 
  953.       Hello packets over the interface.  This timer expires every 
  954.       HelloInterval seconds.  
  955.  
  956.    Wait timer
  957.  
  958.       The one-shot timer used to time the Waiting state.  When 
  959.       this timer expires, the interface exits the Waiting state 
  960.       and begins selection of the designated switch on the link.  
  961.       The length of the timer is switchDeadInterval seconds.
  962.  
  963.    Neighboring switches
  964.  
  965.       A list of the neighboring switches attached to this network 
  966.       link.  This list is created by the Hello protocol.  
  967.       Adjacencies are formed to one or more of these neighbors.  
  968.       The set of adjacent neighbors can be determined by examining 
  969.       the states of the neighboring switches as shown in their 
  970.       link state advertisements.
  971.  
  972.    Designated switch
  973.  
  974.       The designated switch selected for the multi-access network 
  975.       link.  (A designated switch is not selected for a point-to-
  976.       point link.)  This data item is initialized to zero when the 
  977.       switch comes on-line, indicating that no designated switch 
  978.       has been chosen for the link.
  979.  
  980.    Backup designated switch
  981.  
  982.       The backup designated switch selected for the multi-access 
  983.       network link.  (A backup designated switch is not selected 
  984.       for a point-to-point link.)  This data item is initialized 
  985.       to zero when the switch comes on-line, indicating that no 
  986.       backup designated switch has been chosen for the link.
  987.  
  988.    Interface output cost(s)
  989.  
  990.       The cost of sending a packet over the interface.  The link 
  991.       cost is expressed in the link state metric and must be 
  992.       greater than zero.
  993.  
  994.    RxmtInterval
  995.  
  996.       The number of seconds between link state advertisement 
  997.       retransmissions, for adjacencies belonging to this 
  998.       interface.  This value is also used to time the 
  999.       retransmission of Database Description and Link State 
  1000.       Request packets.
  1001.  
  1002.  
  1003.  
  1004. L. Kane, et. al.                                           [Page 17]
  1005. I/D                 VLS Protocol Specification            May 1997
  1006.  
  1007.  
  1008. 5.1  Interface States
  1009.  
  1010.    This section describes the various states of a switch 
  1011.    interface.  The states are listed in order of progressing 
  1012.    functionality.  For example, the inoperative state is listed 
  1013.    first, followed by a list of the intermediate states through 
  1014.    which the interface passes before attaining the final, fully 
  1015.    functional state.  The specification makes use of this ordering 
  1016.    by references such as "those interfaces in state greater than 
  1017.    X".
  1018.  
  1019.    Figure 1 represents the interface state machine, showing the 
  1020.    progression of interface state changes.  The arrows on the 
  1021.    graph represent the events causing each state change.  These 
  1022.    events are described in Section 5.2.  The interface state 
  1023.    machine is described in detail in Section 5.3.
  1024.  
  1025.    Down
  1026.  
  1027.       This is the initial state of the interface.  In this state, 
  1028.       the SNDM protocol [RFCxxxx] has indicated that the interface 
  1029.       is unusable, and no protocol traffic is sent or received on 
  1030.       the interface.  In this state, interface parameters are set 
  1031.       to their initial values, all interface timers are disabled, 
  1032.       and no adjacencies are associated with the interface.
  1033.  
  1034.    Loopback
  1035.  
  1036.       In this state, the switch interface is looped back, either 
  1037.       in hardware or in software.  The interface is unavailable 
  1038.       for regular data traffic. 
  1039.  
  1040.    Waiting
  1041.  
  1042.       In this state, the switch is attempting to identify the 
  1043.       backup designated switch for the link by monitoring the 
  1044.       Hello packets it receives.  The switch does not attempt to 
  1045.       select a designated switch or a backup designated switch 
  1046.       until it changes out of this state, thereby preventing 
  1047.       unnecessary changes of the designated switch and its backup.
  1048.  
  1049.    Point-to-Point
  1050.  
  1051.       In this state, the interface is operational and is connected 
  1052.       to a physical point-to-point link.  On entering this state, 
  1053.       the switch attempts to form an adjacency with the 
  1054.       neighboring switch.
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062. L. Kane, et. al.                                           [Page 18]
  1063. I/D                 VLS Protocol Specification            May 1997
  1064.  
  1065.  
  1066.                                  Note
  1067.  
  1068.                In the current version of VLSP, network 
  1069.                links are always considered to be multi-
  1070.                access, regardless of the physical nature 
  1071.                of the link, and this state is not used.
  1072.  
  1073.  
  1074.  
  1075.  
  1076.       +-------+  Interface   +----------+  Unloop Ind  +----------+
  1077.       |  any  | -----------> |   Down   | <----------- | Loopback |
  1078.       | state |    Down      +----------+              +----------+
  1079.       +-------+                   |                         ^
  1080.                                   | Interface Up            |
  1081.         +----------------+        |                         |
  1082.         | Point-to-Point | <------+                Loop Ind |
  1083.         +----------------+        |                         |
  1084.                                   V                         |
  1085.                             +-----------+               +-------+
  1086.                             |  Waiting  |               |  any  |
  1087.                             +-----------+               | state |
  1088.                                   |                     +-------+
  1089.                       Backup Seen |
  1090.                                   | Wait Timer
  1091.                                   |
  1092.                                   |
  1093.      +----------+    Neighbor     V     Neighbor    +----------+
  1094.      |    DS    | <------------> [ ] <------------> | DS Other |
  1095.      +----------+     Change      ^      Change     +----------+
  1096.                                   |
  1097.                                   |
  1098.                   Neighbor Change |
  1099.                                   |
  1100.                                   V
  1101.                              +----------+
  1102.                              |  Backup  |
  1103.                              +----------+
  1104.  
  1105.  
  1106.                    Figure 1: Interface State Machine
  1107.  
  1108.  
  1109.  
  1110.    DS Other
  1111.  
  1112.       In this state, the interface is operational and is connected 
  1113.       to a link on which other switches have been selected as the 
  1114.       designated switch and the backup designated switch.   On 
  1115.       entering this state, the switch attempts to form adjacencies 
  1116.       with both the designated switch and the backup designated 
  1117.       switch.
  1118.  
  1119.  
  1120. L. Kane, et. al.                                           [Page 19]
  1121. I/D                  VLS Protocol Specification            May 1997
  1122.  
  1123.  
  1124.    Backup
  1125.  
  1126.       In this state, the switch itself is the backup designated 
  1127.       switch on the attached link.  It will be promoted to 
  1128.       designated switch if the current designated switch fails.  
  1129.       The switch establishes adjacencies with all other switches 
  1130.       attached to the link.  (See Section 9.3 for more information 
  1131.       on the functions performed by the backup designated switch.)
  1132.  
  1133.    DS
  1134.  
  1135.       In this state, this switch itself is the designated switch 
  1136.       on the attached link.  The switch establishes adjacencies 
  1137.       with all other switches attached to the link.  The switch is 
  1138.       responsible for originating network link advertisements for 
  1139.       the link, containing link information for all switches 
  1140.       attached to the link, including the designated switch 
  1141.       itself.   (See Section 9.3 for more information on the 
  1142.       functions performed by the designated switch.)
  1143.  
  1144.  
  1145. 5.2  Events Causing Interface State Changes
  1146.  
  1147.    The state of an interface changes due to an interface event.  
  1148.    This section describes these events.
  1149.  
  1150.    Interface events are shown as arrows in Figure 1, the graphic 
  1151.    representation of the interface state machine.  For more 
  1152.    information on the interface state machine, see Section 5.3.
  1153.  
  1154.    Interface Up
  1155.  
  1156.       This event is generated by the SNDM protocol [RFCxxxx] and 
  1157.       indicates that the interface is now operational.  This event 
  1158.       causes the interface to change out of the Down state.
  1159.  
  1160.    Wait Timer
  1161.  
  1162.       This event is generated when the one-shot Wait timer 
  1163.       expires, triggering the end of the required waiting period 
  1164.       before the switch can begin the process of selecting a 
  1165.       designated switch and a backup designated switch.
  1166.  
  1167.    Backup Seen
  1168.  
  1169.       This event is generated when the switch has detected the 
  1170.       existence or non-existence of a backup designated switch for 
  1171.       the link, as determined in one of the following two ways:
  1172.  
  1173.       -  A Hello packet has been received from a neighbor that 
  1174.          claims to be the backup designated switch.  
  1175.  
  1176.  
  1177.  
  1178. L. Kane, et. al.                                           [Page 20]
  1179. I/D                 VLS Protocol Specification            May 1997
  1180.  
  1181.  
  1182.       -  A Hello packet has been received from a neighbor that 
  1183.          claims to be the designated switch.  In addition, the 
  1184.          packet indicated that there is no backup.  
  1185.  
  1186.       In either case, the interface must have bidirectional 
  1187.       communication with its neighbor -- that is, the local switch 
  1188.       must be listed in the neighbor's Hello packet.  
  1189.  
  1190.       This event signals the end of the Waiting state.
  1191.  
  1192.    Neighbor change
  1193.  
  1194.       This event is generated when there has been one of the 
  1195.       following changes in the set of bidirectional neighbors 
  1196.       associated with the interface.  (See Section 6.1 for 
  1197.       information on neighbor states.)
  1198.  
  1199.       -  Bidirectional communication has been established with a 
  1200.          neighbor -- the state of the neighbor has changed to 2-Way 
  1201.          or higher.
  1202.  
  1203.       -  Bidirectional communication with a neighbor has been lost 
  1204.          --  the state of the neighbor has changed to Init or 
  1205.          lower.
  1206.  
  1207.       -  A bidirectional neighbor has just declaring itself to be 
  1208.          either the designated switch or the backup designated 
  1209.          switch, as detected by examination of that neighbor's 
  1210.          Hello packets.
  1211.  
  1212.       -  A bidirectional neighbor is no longer declaring itself to 
  1213.          be either the designated switch or the backup designated 
  1214.          switch, as detected by examination of that neighbor's 
  1215.          Hello packets.
  1216.  
  1217.       -  The advertised switch priority of a bidirectional neighbor 
  1218.          has changed, as detected by examination of that neighbor's 
  1219.          Hello packets.
  1220.  
  1221.       When this event occurs, the designated switch and the backup 
  1222.       designated switch must be reselected. 
  1223.  
  1224.    Loop Ind
  1225.  
  1226.       This event is generated when an interface enters the 
  1227.       Loopback state.  This event can be generated by either the 
  1228.       network management service or by the lower-level protocols.
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236. L. Kane, et. al.                                           [Page 21]
  1237. I/D                 VLS Protocol Specification            May 1997
  1238.  
  1239.  
  1240.    Unloop Ind
  1241.  
  1242.       This event is generated when an interface leaves the 
  1243.       Loopback state.  This event can be generated by either the 
  1244.       network management service or by the lower-level protocols.
  1245.  
  1246.    Interface Down
  1247.  
  1248.       This event is generated by the SNDM protocol [RFCxxxx] and 
  1249.       indicates that the interface is no longer functional.  This 
  1250.       event forces the interface state to Down.
  1251.  
  1252.  
  1253. 5.3  Interface State Machine
  1254.  
  1255.    This section presents a detailed description of the interface 
  1256.    state machine.
  1257.  
  1258.    Interface states (see Section 5.1) change as the result of 
  1259.    various events (see Section 5.2).  However, the effect of each 
  1260.    event can vary, depending on the current state of the 
  1261.    interface.  For this reason, the state machine described in 
  1262.    this section is organized according to the current interface 
  1263.    state and the occurring event.  For each state/event pair, the 
  1264.    new interface state is listed, along with a description of the 
  1265.    required processing.
  1266.  
  1267.    Note that when the state of an interface changes, it may be 
  1268.    necessary to originate a new switch link advertisement.  See 
  1269.    Section 11.1 for more information.
  1270.  
  1271.    Some of the processing described here includes generating 
  1272.    events for the neighbor state machine.  For example, when an 
  1273.    interface becomes inoperative, all neighbor connections 
  1274.    associated with the interface must be destroyed.  For more 
  1275.    information on the neighbor state machine, see Section 6.3.
  1276.  
  1277.    State(s):  Down
  1278.    Event:  Interface Up
  1279.    New state:  Depends on action routine
  1280.    Action:  
  1281.       Start the Hello interval timer, enabling the periodic 
  1282.       sending of Hello packets over the interface.  If the 
  1283.       interface is attached to a physical point-to-point link, the 
  1284.       interface state is set to Point-to-Point.  Otherwise, the 
  1285.       attached link is a multi-access link.  If the switch is not 
  1286.       eligible to become the designated switch, the interface 
  1287.       state changes to DS Other.  Otherwise, the interface state 
  1288.       is set to Waiting and the one-shot wait timer is started. 
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294. L. Kane, et. al.                                           [Page 22]
  1295. I/D                  VLS Protocol Specification            May 1997
  1296.  
  1297.  
  1298.                                 Note
  1299.  
  1300.                In the current version of VLSP, network 
  1301.                links are always considered to be multi-
  1302.                access, regardless of the physical nature 
  1303.                of the link.
  1304.  
  1305.  
  1306.    State(s):  Waiting
  1307.    Event:  Backup Seen
  1308.    New state:  Depends on action routine
  1309.    Action:  
  1310.       Select the designated switch and backup designated switch 
  1311.       for the attached link, as described in Section 9.3.1.  As a 
  1312.       result of this selection, the new state of the interface 
  1313.       will be either DS Other, Backup or DS.
  1314.  
  1315.    State(s):  Waiting
  1316.    Event:  Wait Timer
  1317.    New state:  Depends on action routine
  1318.    Action:  
  1319.       Select the designated switch and backup designated switch 
  1320.       for the attached link, as described in Section 9.3.1.  As a 
  1321.       result of this selection, the new state of the interface 
  1322.       will be either DS Other, Backup or DS.
  1323.  
  1324.    State(s):  DS Other, Backup or DS
  1325.    Event:  Neighbor Change
  1326.    New state:  Depends on action routine
  1327.    Action:  
  1328.       Reselect the designated switch and backup designated switch 
  1329.       for the attached link, as described in Section 9.3.1.  As a 
  1330.       result of this selection, the new state of the interface 
  1331.       will be either DS Other, Backup or DS.
  1332.  
  1333.    State(s):  Any State
  1334.    Event:  Interface Down
  1335.    New state:  Down
  1336.    Action:  
  1337.       All variables in the interface data structure are reset and 
  1338.       all timers are disabled.  In addition, all neighbor 
  1339.       connections associated with the interface are destroyed by 
  1340.       generating the KillNbr event on all neighbors listed in the 
  1341.       interface data structure.
  1342.  
  1343.    State(s):  Any State
  1344.    Event:  Loop Ind
  1345.    New state:  Loopback
  1346.    Action:  
  1347.       All variables in the interface data structure are reset and 
  1348.       all timers are disabled.  In addition, all neighbor 
  1349.       connections associated with the interface are destroyed by 
  1350.  
  1351.  
  1352. L. Kane, et. al.                                           [Page 23]
  1353. I/D                 VLS Protocol Specification            May 1997
  1354.  
  1355.  
  1356.       generating the KillNbr event on all neighbors listed in the 
  1357.       interface data structure.
  1358.  
  1359.    State(s):  Loopback
  1360.    Event:  Unloop Ind
  1361.    New state:  Down
  1362.    Action:  
  1363.       No action is necessary beyond changing the interface state 
  1364.       to Down because the interface was reset on entering the 
  1365.       Loopback state.  
  1366.  
  1367.  
  1368. 6.  Neighbor Data Structure
  1369.  
  1370.    Each switch conducts a conversation with its neighboring 
  1371.    switches and each  conversation is described by a neighbor data 
  1372.    structure.  A conversation is associated with a switch 
  1373.    interface, and is identified by the neighboring switch ID. 
  1374.  
  1375.    Note that if two switches have multiple attached links in 
  1376.    common, multiple conversations ensue, each described by a 
  1377.    unique neighbor data structure.  Each separate conversation is 
  1378.    treated as a separate neighbor.
  1379.  
  1380.    The neighbor data structure contains all information relevant 
  1381.    to any adjacency formed between the two neighbors.  Remember, 
  1382.    however, that not all neighbors become adjacent.  An adjacency 
  1383.    can be thought of as a highly developed conversation between 
  1384.    two switches.
  1385.  
  1386.    State
  1387.  
  1388.       The functional level of the neighbor conversation.  See 
  1389.       Section 6.1 for a complete description of neighbor states.
  1390.  
  1391.    Inactivity timer
  1392.  
  1393.       A one-shot timer used to determine when to declare the 
  1394.       neighbor down if no Hello packet is received from this 
  1395.       neighbor.  The length of the timer is SwitchDeadInterval 
  1396.       seconds, as contained in the neighbors Hello packet.
  1397.  
  1398.    Master/slave flag
  1399.  
  1400.       A flag indicating whether the local switch is to act as the 
  1401.       master or the slave in the database exchange process (see 
  1402.       Section 10.2).  The master/slave relationship is negotiated 
  1403.       when the conversation changes to the ExStart state.
  1404.  
  1405.  
  1406.  
  1407.  
  1408.  
  1409.  
  1410. L. Kane, et. al.                                           [Page 24]  
  1411. I/D                  VLS Protocol Specification            May 1997
  1412.  
  1413.  
  1414.    Sequence number
  1415.  
  1416.       A 4-octet number identifying individual Database Description 
  1417.       packets. When the neighbor state ExStart is entered and the 
  1418.       database exchange process is started, the sequence number is 
  1419.       set to a value not previously seen by the neighboring 
  1420.       switch.  (One possible scheme is to use the switch's time of 
  1421.       day counter.)  The sequence number is then incremented by 
  1422.       the master with each new Database Description packet sent.  
  1423.       See Section 10.2 for more information on the database 
  1424.       exchange process.
  1425.  
  1426.    Neighbor ID
  1427.  
  1428.       The switch ID of the neighboring switch, as contained in the 
  1429.       neighbors Hello packets.
  1430.  
  1431.    Neighbor priority
  1432.  
  1433.       The switch priority of the neighboring switch, as contained 
  1434.       in the neighbor's Hello packets.  Switch priorities are used 
  1435.       when selecting the designated switch for the attached link.
  1436.  
  1437.    Interface identifier
  1438.  
  1439.       A 10-octet value that uniquely identifies the interface over 
  1440.       which this conversation is being held.  This value consists 
  1441.       of the 6-octet base MAC address of the neighbor switch, 
  1442.       followed by the 4-octet local port number of the interface.
  1443.  
  1444.    Neighbor's designated switch
  1445.  
  1446.       The switch ID identifying the neighbors idea of the 
  1447.       designated switch, as contained in the neighbors Hello 
  1448.       packets.  This value is used in the local selection of the 
  1449.       designated switch.  It is not used on point-to-point links.
  1450.  
  1451.    Neighbor's backup designated switch
  1452.  
  1453.       The switch ID identifying the neighbors idea of the backup 
  1454.       designated switch, as contained in the neighbors Hello 
  1455.       packets.  This value is used in the local selection of the 
  1456.       backup designated switch.  It is not used on point-to-point 
  1457.       links.
  1458.  
  1459.    Link state retransmission list
  1460.  
  1461.       The list of link state advertisements that have been 
  1462.       forwarded over but not acknowledged on this adjacency.  The 
  1463.       local switch retransmits these link state advertisements at 
  1464.       periodic intervals until they are acknowledged or until the 
  1465.       adjacency is destroyed.  (For more information on 
  1466.  
  1467.  
  1468. L. Kane, et. al.                                           [Page 25]
  1469. I/D                  VLS Protocol Specification            May 1997
  1470.  
  1471.  
  1472.       retransmitting link state advertisements, see Section 
  1473.       11.2.5.)
  1474.  
  1475.    Database summary list
  1476.  
  1477.       The set of link state advertisement headers that summarize 
  1478.       the local link state database.  When the conversation 
  1479.       changes to the Exchange state, this list is sent to the 
  1480.       neighbor via Database Description packets.  (For more 
  1481.       information on the synchronization of databases, see Section 
  1482.       10.)
  1483.  
  1484.    Link state request list
  1485.  
  1486.       The list of link state advertisements that must be received 
  1487.       in order to synchronize with the neighbor switchs link 
  1488.       state database.  This list is created as Database 
  1489.       Description packets are received, and is then sent to the 
  1490.       neighbor in Link State Request packets.  (For more 
  1491.       information on the synchronization of databases, see Section 
  1492.       10.)
  1493.  
  1494.  
  1495. 6.1  Neighbor States
  1496.  
  1497.       This section describes the various states of a conversation 
  1498.       with a neighbor switch.  The states are listed in order of 
  1499.       progressing functionality.  For example, the inoperative state 
  1500.       is listed first, followed by a list of the intermediate states 
  1501.       through which the conversation passes before attaining the 
  1502.       final, fully functional state.  The specification makes use of 
  1503.       this ordering by references such as "those 
  1504.       neighbors/adjacencies in state greater than X".
  1505.  
  1506.       Figure 2 represents the neighbor state machine.  The arrows on 
  1507.       the graph represent the events causing each state change.  
  1508.       These events are described in Section 6.2.  The neighbor state 
  1509.       machine is described in detail in Section 6.3.
  1510.  
  1511.    Down
  1512.  
  1513.       This is the initial state of a neighbor conversation.  In 
  1514.       this state, there has been no recent information received 
  1515.       from the neighbor.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526. L. Kane, et. al.                                           [Page 26]
  1527. I/D                  VLS Protocol Specification            May 1997
  1528.  
  1529.  
  1530.        +----------+     KillNbr, LLDown,   +-----------+
  1531.        |   Down   | <--------------------- | any state |
  1532.        +----------+   or Inactivity Timer  +-----------+
  1533.             |
  1534.  Hello Rcvd |
  1535.             |
  1536.             V
  1537.        +----------+   1-Way   +----------+
  1538.        |   Init   | <-------- | >= 2-way |
  1539.        +----------+           +----------+
  1540.             |
  1541.             |
  1542.  2-Way Rcvd |                  +-------+   AdjOK?/no  +------------+
  1543.             +----------------> | 2-Way | <----------- | >= ExStart |
  1544.             | (no adjacency)   +-------+              +------------+
  1545.             |
  1546.             V
  1547.        +---------+   Seq Number Mismatch  +-------------+
  1548.        | ExStart | <--------------------- | >= Exchange |
  1549.        +---------+       or BadLSReq      +-------------+
  1550.             |
  1551. Negotiation |
  1552.     Done    |
  1553.             V
  1554.        +----------+
  1555.        | Exchange |
  1556.        +----------+
  1557.             |
  1558.    Exchange |                        +--------+
  1559.      Done   +----------------------> |  Full  |
  1560.             | (request list empty)   +--------+
  1561.             |                             ^
  1562.             V                             |
  1563.        +---------+      Loading Done      |
  1564.        | Loading | ----------------------->
  1565.        +---------+
  1566.  
  1567.  
  1568.                     Figure 2: Neighbor State Machine
  1569.  
  1570.  
  1571.  
  1572.    Init
  1573.  
  1574.       In this state, a Hello packet has been received from the 
  1575.       neighbor.  However, bidirectional communication has not yet 
  1576.       been established with the neighbor -- that is, the local 
  1577.       switch has not yet appeared in the neighbor's Hello packets.  
  1578.       All neighbors in this state (or higher) are listed in the 
  1579.       Hello packets sent by the local switch over the associated 
  1580.       interface.
  1581.  
  1582.  
  1583.  
  1584. L. Kane, et. al.                                           [Page 27]
  1585. I/D                 VLS Protocol Specification            May 1997
  1586.  
  1587.  
  1588.    2-Way
  1589.  
  1590.       In this state, communication between the two switches is   
  1591.       bidirectional -- that is, the local switch has seen its own 
  1592.       switch ID listed in the neighbor switchs Hello packets.  
  1593.       This is the most advanced state short of beginning to 
  1594.       establish an adjacency.  The designated switch and the 
  1595.       backup designated switch are selected from the set of 
  1596.       neighbors in state 2-Way or greater.
  1597.  
  1598.    ExStart
  1599.  
  1600.       This state indicates that the two switches have begun to 
  1601.       establish an adjacency by determining which switch is the 
  1602.       master, as well as the initial sequence number for Database 
  1603.       Descriptor packets.  Neighbor conversations in this state or 
  1604.       greater are called adjacencies.
  1605.  
  1606.    Exchange
  1607.  
  1608.       In this state, the switches are exchanging Database 
  1609.       Description packets.  (See Section 10.2 for a complete 
  1610.       description of this process.)  All adjacencies in the 
  1611.       Exchange state or greater are used by the distribution 
  1612.       procedure (see Section 11.2), and are capable of 
  1613.       transmitting and receiving all types of VLSP routing 
  1614.       packets.
  1615.  
  1616.    Loading
  1617.  
  1618.       In this state, the local switch is sending Link State 
  1619.       Request packets to the neighbor asking for the more recent 
  1620.       advertisements that were discovered in the Exchange state.
  1621.  
  1622.    Full
  1623.  
  1624.       In this state, the two switches are fully adjacent.  These 
  1625.       adjacencies will now appear in switch link and network link 
  1626.       advertisements generated for the link.
  1627.  
  1628.  
  1629.  
  1630.  
  1631.  
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.  
  1642. L. Kane, et. al.                                           [Page 28]
  1643. I/D                 VLS Protocol Specification            May 1997
  1644.  
  1645.  
  1646. 6.2  Events Causing Neighbor State Changes
  1647.  
  1648.    The state of a neighbor conversation changes due to neighbor 
  1649.    events.  This section describes these events.
  1650.  
  1651.    Neighbor events are shown as arrows in Figure 2, the graphic 
  1652.    representation of the neighbor state machine.  For more 
  1653.    information on the neighbor state machine, see Section 6.3.
  1654.  
  1655.  
  1656.    Hello Received
  1657.  
  1658.       This event is generated when a Hello packet has been 
  1659.       received from a neighbor.
  1660.  
  1661.    2-Way Received
  1662.  
  1663.       This event is generated when the local switch sees its own 
  1664.       switch ID listed in the neighbors Hello packet, indicating 
  1665.       that bidirectional communication has been established 
  1666.       between the two switches.  
  1667.  
  1668.    Negotiation Done
  1669.  
  1670.       This event is generated when the master/slave relationship 
  1671.       has been successfully negotiated and initial packet sequence 
  1672.       numbers have been exchanged.  This event signals the start 
  1673.       of the database exchange process (see Section 10.2).
  1674.  
  1675.    Exchange Done
  1676.  
  1677.       This event is generated when the database exchange process 
  1678.       is complete and both switches have successfully transmitted 
  1679.       a full sequence of Database Description packets.  (For more 
  1680.       information on the database exchange process, see Section 
  1681.       10.2.)
  1682.  
  1683.    BadLSReq
  1684.  
  1685.       This event is generated when a Link State Request has been 
  1686.       received for a link state advertisement that is not 
  1687.       contained in the database.  This event indicates an error in 
  1688.       the synchronization process.
  1689.  
  1690.    Loading Done
  1691.  
  1692.       This event is generated when all Link State Updates have 
  1693.       been received for all out-of-date portions of the database.  
  1694.       (See Section 10.3.)
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700. L. Kane, et. al.                                           [Page 29]
  1701. I/D                VLS Protocol Specification            May 1997
  1702.  
  1703.  
  1704.    AdjOK?
  1705.  
  1706.       This event is generated when a decision must be made as to 
  1707.       whether an adjacency will be established or maintained with 
  1708.       the neighbor.  This event will initiate some adjacencies and 
  1709.       destroy others.
  1710.  
  1711.    Seq Number Mismatch
  1712.  
  1713.       This event is generated when a Database Description packet 
  1714.       has been received with any of the following conditions:   
  1715.  
  1716.       -  The packet contains an unexpected sequence number. 
  1717.       -  The packet (unexpectedly) has the Init bit set.
  1718.       -  The packet has a different Options field than was 
  1719.          previously seen.
  1720.  
  1721.       These conditions all indicate that an error has occurred 
  1722.       during the establishment of the adjacency.
  1723.  
  1724.    1-Way
  1725.  
  1726.       This event is generated when bidirectional communication 
  1727.       with the neighbor has been lost.  That is, a Hello packet 
  1728.       has been received from the neighbor in which the local 
  1729.       switch is not listed.
  1730.  
  1731.    KillNbr
  1732.  
  1733.       This event is generated when further  communication  with  
  1734.       the neighbor  is  impossible.  
  1735.  
  1736.    Inactivity Timer
  1737.  
  1738.       This event is generated when the inactivity timer has 
  1739.       expired, indicating that no Hello packets have been received 
  1740.       from the neighbor in switchDeadInterval seconds.
  1741.  
  1742.    LLDown
  1743.  
  1744.       This event is generated by the lower-level protocols and 
  1745.       indicates that the neighbor is now unreachable.
  1746.  
  1747.  
  1748.  
  1749.  
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758. L. Kane, et. al.                                           [Page 30]
  1759. I/D                 VLS Protocol Specification            May 1997
  1760.  
  1761.  
  1762. 6.3  Neighbor State Machine
  1763.  
  1764.    This section presents a detailed description of the neighbor 
  1765.    state machine.
  1766.  
  1767.    Neighbor states (see Section 6.1) change as the result of 
  1768.    various events (see Section 6.2).  However, the effect of each 
  1769.    event can vary, depending on the current state of the 
  1770.    conversation with the neighbor.  For this reason, the state 
  1771.    machine described in this section is organized according to the 
  1772.    current neighbor state and the occurring event.  For each 
  1773.    state/event pair, the new neighbor state is listed, along with 
  1774.    a description of the required processing.
  1775.  
  1776.    Note that when the neighbor state changes as a result of an 
  1777.    interface Neighbor Change event (see Section 5.2), it may be 
  1778.    necessary to rerun the designated switch selection algorithm.  
  1779.    In addition, if the interface associated with the neighbor 
  1780.    conversation is in the DS state (that is, the local switch is 
  1781.    the designated switch), changes in the neighbor state may cause 
  1782.    a new network link advertisement to be originated (see Section 
  1783.    11.1).
  1784.  
  1785.    When the neighbor state machine must invoke the interface state 
  1786.    machine, it is invoked as a scheduled task.  This simplifies 
  1787.    processing, by ensuring that neither state machine executes 
  1788.    recursively.
  1789.  
  1790.    State(s):  Down
  1791.    Event:  Hello Received
  1792.    New state:  Init
  1793.    Action:  
  1794.       Start the inactivity timer for the neighbor.  If the timer 
  1795.       expires before another Hello packet is received, the 
  1796.       neighbor switch is declared dead.
  1797.  
  1798.    State(s):  Init or greater
  1799.    Event:  Hello Received
  1800.    New state:  No state change
  1801.    Action:  
  1802.       Reset the inactivity timer for the neighbor.
  1803.  
  1804.    State(s):  Init
  1805.    Event:  2-Way Received
  1806.    New state:  Depends on action routine
  1807.    Action:  
  1808.       Determine whether an adjacency will be formed with the 
  1809.       neighbor (see Section 9.4).  If no adjacency is to be 
  1810.       formed, the neighbor state changes to 2-Way.
  1811.  
  1812.       Otherwise, the neighbor state changes to ExStart.  The 
  1813.       switch initializes the sequence number for this neighbor.  
  1814.  
  1815.  
  1816. L. Kane, et. al.                                           [Page 31]
  1817. I/D                 VLS Protocol Specification            May 1997
  1818.  
  1819.  
  1820.       It then declares itself master for the database exchange 
  1821.       process.  (See Section 10.2.)
  1822.  
  1823.    State(s):  ExStart
  1824.    Event:  Negotiation Done
  1825.    New state:  Exchange
  1826.    Action:  
  1827.       The Negotiation Done event signals the start of the database 
  1828.       exchange process.  See Section 10.2 for a detailed 
  1829.       description of this process.
  1830.  
  1831.    State(s):  Exchange
  1832.    Event:  Exchange Done
  1833.    New state:  Depends on action routine
  1834.    Action:  
  1835.       If the neighbor Link state request list is empty, the 
  1836.       neighbor state changes to Full.  This is the adjacency's 
  1837.       final state.
  1838.  
  1839.       Otherwise, the neighbor state changes to Loading.  The 
  1840.       switch begins sending Link State Request packets to the 
  1841.       neighbor requesting the most recent link state 
  1842.       advertisements, as discovered during the database exchange 
  1843.       process.  (See Section 10.2.)  These advertisements are 
  1844.       listed in the link state request list associated with the 
  1845.       neighbor.
  1846.  
  1847.    State(s):  Loading
  1848.    Event:  Loading Done
  1849.    New state:  Full
  1850.    Action:  
  1851.       No action is required beyond changing the neighbor state to 
  1852.       Full.  This is the adjacency's final state.
  1853.  
  1854.    State(s):  2-Way
  1855.    Event:  AdjOK?
  1856.    New state:  Depends on action routine
  1857.    Action:  
  1858.       If no adjacency is to be formed with the neighboring switch 
  1859.       (see Section 9.4), the neighbor state remains at 2-Way.  
  1860.       Otherwise, the neighbor state changes to ExStart.  The 
  1861.       switch initializes the sequence number for this neighbor.  
  1862.       It then declares itself master for the database exchange 
  1863.       process.  (See Section 10.2.)
  1864.  
  1865.    State(s):  ExStart or greater
  1866.    Event:  AdjOK?
  1867.    New state:  Depends on action routine
  1868.    Action:  
  1869.       If an adjacency should still be formed with the neighboring 
  1870.       switch (see Section 9.4), no state change and no further 
  1871.       action is necessary.
  1872.  
  1873.  
  1874. L. Kane, et. al.                                           [Page 32]
  1875. I/D                 VLS Protocol Specification            May 1997
  1876.  
  1877.  
  1878.       Otherwise, the (possibly partially formed) adjacency is torn 
  1879.       down.  The link state retransmission list, database summary 
  1880.       list and link state request list are cleared of link state 
  1881.       advertisements.  The neighbor state changes to 2-Way.
  1882.  
  1883.    State(s):  Exchange or greater
  1884.    Event:  Seq Number Mismatch
  1885.    New state:  ExStart
  1886.    Action:  
  1887.       The (possibly partially formed) adjacency is torn down.  The 
  1888.       link state retransmission list, database summary list and 
  1889.       link state request list are cleared of link state 
  1890.       advertisements.  The neighbor state then changes to ExStart 
  1891.       and another attempt is made to establish the adjacency. 
  1892.  
  1893.    State(s):  Exchange or greater
  1894.    Event:  BadLSReq
  1895.    New state:  ExStart
  1896.    Action:  
  1897.       The (possibly partially formed) adjacency is torn down.  The 
  1898.       link state retransmission list, database summary list and 
  1899.       link state request list are cleared of link state 
  1900.       advertisements.  The neighbor state then changes to ExStart 
  1901.       and another attempt is made to establish the adjacency. 
  1902.  
  1903.    State(s):  Any state
  1904.    Event:  KillNbr
  1905.    New state:  Down
  1906.    Action:  
  1907.       The neighbor conversation is terminated.  The inactivity 
  1908.       timer is disabled, and the link state retransmission list, 
  1909.       database summary list and link state request list are 
  1910.       cleared of link state advertisements.  
  1911.  
  1912.    State(s):  Any state
  1913.    Event:  LLDown
  1914.    New state:  Down
  1915.    Action:  
  1916.       The neighbor conversation is terminated.  The inactivity 
  1917.       timer is disabled, and the link state retransmission list, 
  1918.       database summary list and link state request list are 
  1919.       cleared of link state advertisements.  
  1920.  
  1921.    State(s):  Any state
  1922.    Event:  Inactivity Timer
  1923.    New state:  Down
  1924.    Action:  
  1925.       The neighbor conversation is terminated.  The inactivity 
  1926.       timer is disabled, and the link state retransmission list, 
  1927.       database summary list and link state request list are 
  1928.       cleared of link state advertisements.  
  1929.  
  1930.  
  1931.  
  1932. L. Kane, et. al.                                           [Page 33]
  1933. I/D                 VLS Protocol Specification            May 1997
  1934.  
  1935.  
  1936.    State(s):  2-Way or greater
  1937.    Event:  1-Way Received
  1938.    New state:  Init
  1939.    Action:  
  1940.       The adjacency between the switches, if any, is torn down.  
  1941.       The link state retransmission list, database summary list 
  1942.       and link state request list are cleared of link state 
  1943.       advertisements.
  1944.  
  1945.    State(s):  2-Way or greater
  1946.    Event:  2-Way received
  1947.    New state:  No state change
  1948.    Action:  
  1949.       No action required.
  1950.  
  1951.    State(s):  Init
  1952.    Event:  1-Way received
  1953.    New state:  No state change
  1954.    Action:  
  1955.       No action required.
  1956.  
  1957.  
  1958. 7.  Area Data Structure
  1959.  
  1960.    The area data structure contains all the information needed to 
  1961.    run the basic routing algorithm.  One of its components is the 
  1962.    link state database -- the collection of all switch link and 
  1963.    network link advertisements generated by the switches.  
  1964.  
  1965.    The area data structure contains the following items:
  1966.  
  1967.    Area ID
  1968.  
  1969.       A 4-octet value identifying the area.  Since VLSP does not 
  1970.       support multiple areas, the value here is always zero.
  1971.  
  1972.    Associated switch interfaces
  1973.  
  1974.       A list of interface IDs of the local switch interfaces 
  1975.       connected to network links.
  1976.  
  1977.    Link state database
  1978.  
  1979.       The collection of all current link state advertisements for 
  1980.       the switch fabric.  This collection consists of the 
  1981.       following:
  1982.  
  1983.       Switch link advertisements
  1984.  
  1985.          A list of the switch link advertisements for all switches 
  1986.          in the fabric.  Switch link advertisements describe the 
  1987.          state of each switchs interfaces.
  1988.  
  1989.  
  1990. L. Kane, et. al.                                           [Page 34]
  1991. I/D                 VLS Protocol Specification            May 1997
  1992.  
  1993.  
  1994.       Network link advertisements
  1995.  
  1996.          A list of the network link advertisements for all multi-
  1997.          access network links in the switch fabric.  Network link 
  1998.          advertisements describe the set of switches currently 
  1999.          connected to each link.
  2000.  
  2001.    Best path(s)
  2002.  
  2003.       A set of end-to-end hop descriptions for all equal-cost best 
  2004.       paths from the local switch to every other switch in the 
  2005.       fabric.  Each hop is specified by the interface ID of the 
  2006.       next link in the path.  Best paths are derived from the 
  2007.       collected switch link and network link advertisements using 
  2008.       the Dijkstra algorithm. [Perlman]
  2009.  
  2010.  
  2011. 7.1  Adding and Deleting Link State Advertisements
  2012.  
  2013.    The link state database within the area data structure must 
  2014.    contain, at most, a single instance of each link state 
  2015.    advertisement.  To keep the database current, a switch adds 
  2016.    link state advertisements to the database under the following 
  2017.    conditions:
  2018.  
  2019.    -  When a link state advertisement is received during the 
  2020.       distribution process 
  2021.  
  2022.    -  When the switch itself generates a link state advertisement
  2023.  
  2024.    (See Section 11.2.4 for information on installing link state 
  2025.    advertisements.)
  2026.  
  2027.    Likewise, a switch deletes link state advertisements from the 
  2028.    database under the following conditions:
  2029.  
  2030.    -  When a link state advertisement has been superseded by a 
  2031.       newer instance during the flooding process
  2032.  
  2033.    -  When the switch generates a newer instance of one of its 
  2034.       self-originated advertisements
  2035.  
  2036.    Note that when an advertisement is deleted from the link state 
  2037.    database, it must also be removed from the link state 
  2038.    retransmission list of all neighboring switches.
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048. L. Kane, et. al.                                           [Page 35]
  2049. I/D                 VLS Protocol Specification            May 1997
  2050.  
  2051.  
  2052. 7.2  Accessing Link State Advertisements
  2053.  
  2054.    An implementation of the VLS protocol must provide access to 
  2055.    individual link state advertisements, based on the 
  2056.    advertisement's type, link state identifier, and advertising 
  2057.    switch.[1]  This lookup function is invoked during the link 
  2058.    state distribution procedure and during calculation of the 
  2059.    routing table.  In addition, a switch can use the function to 
  2060.    determine whether it has originated a particular link state 
  2061.    advertisement, and if so, with what sequence number.
  2062.  
  2063.  
  2064. 8.  Routing Table
  2065.  
  2066.    The routing table contains all the information necessary to 
  2067.    forward a data packet toward its destination.  There is a 
  2068.    single routing table in each switch.  Each routing table entry 
  2069.    describes the collection of best paths to a particular 
  2070.    destination switch, using the local switch as the start of the 
  2071.    path.
  2072.  
  2073.    Each entry in the routing table contains the following data 
  2074.    items:
  2075.  
  2076.    Destination ID
  2077.  
  2078.       The interface ID of the destination switch, as known by its 
  2079.       adjacent designated switch.  That is, the value here 
  2080.       consists of the 6-octet base MAC address of the destination 
  2081.       switch, followed by the 4-octet port number of the 
  2082.       interface, local to the designated switch of the network 
  2083.       link.
  2084.  
  2085.    Destination type
  2086.  
  2087.       The type of the destination switch.  The value here is   
  2088.       always Network.
  2089.  
  2090.    Type of service
  2091.  
  2092.       The type of service (TOS) of the paths.  Note that since the 
  2093.       current version of VLSP does not support routing based on 
  2094.       non-zero TOS, the value here is always zero.
  2095.  
  2096.    Area ID
  2097.  
  2098.       The 4-octet identifier of the area.  Since VLSP does not 
  2099.       support multiple areas, the value here is always zero.
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106. L. Kane, et. al.                                           [Page 36]
  2107. I/D                  VLS Protocol Specification            May 1997
  2108.  
  2109.  
  2110.    Cost metric
  2111.  
  2112.       The link state cost of the path(s), calculated as the sum of 
  2113.       the costs of a path's constituent links.  Note that even 
  2114.       when multiple paths to the destination are calculated, there 
  2115.       is only one path cost because, by definition, such multiple 
  2116.       paths are of equal cost.
  2117.  
  2118.    Link state ID
  2119.  
  2120.       The link state identifier of the network link advertisement 
  2121.       that references the destination switch.  This value consists 
  2122.       of the interface ID of the network link, as known by the 
  2123.       designated switch of the link.
  2124.  
  2125.    Advertising switch
  2126.  
  2127.       The switch ID of the designated switch that originated the 
  2128.       network link advertisement specified by the link state ID 
  2129.       data item.
  2130.  
  2131.    Next hop(s)
  2132.  
  2133.       The interface ID(s) of the local outgoing interface(s) over 
  2134.       which to forward traffic to the destination switch.  When 
  2135.       multiple paths of equal cost exist to the destination 
  2136.       switch, their initial hops are all stored here.  End-to-end 
  2137.       path information for all equal-cost paths are stored in the 
  2138.       area data structure (see Section 7).
  2139.  
  2140.  
  2141. 8.1  Routing Table Lookup
  2142.  
  2143.    An implementation of the VLS protocol must provide access to 
  2144.    multiple equal-cost best paths, based on the base MAC addresses 
  2145.    of the source and destination switches.  This lookup function 
  2146.    should return up to three equal-cost paths.  Paths should be 
  2147.    returned as lists of end-to-end hop information, with each hop 
  2148.    specified as a interface ID of the next link in the path -- the 
  2149.    6-octet base MAC address of the next switch and the 4-octet 
  2150.    local port number of the link interface.
  2151.  
  2152.  
  2153.  
  2154.  
  2155.  
  2156.  
  2157.  
  2158.  
  2159.  
  2160.  
  2161.  
  2162.  
  2163.  
  2164. L. Kane, et. al.                                           [Page 37]
  2165. I/D                 VLS Protocol Specification            May 1997
  2166.  
  2167.  
  2168. 9.  Discovery Process
  2169.  
  2170.    The first operational stage of the VLS protocol is the 
  2171.    discovery process.  During this stage, each switch dynamically 
  2172.    detects its neighboring switches and establishes a relationship 
  2173.    with each of these neighbors.  This process has the following 
  2174.    component steps:
  2175.  
  2176.    -  Neighboring switches are discovered through the exchange of 
  2177.       Hello packets over each functioning interface. 
  2178.  
  2179.    -  Bidirectional communication is established with each 
  2180.       neighbor switch.
  2181.  
  2182.    -  A designated switch and backup designated switch are 
  2183.       selected for each multi-access network link.  
  2184.  
  2185.    -  An adjacent relationship is established with selected 
  2186.       neighbors on each link.  
  2187.  
  2188.    The following subsections describe each of these steps in 
  2189.    detail.
  2190.  
  2191.  
  2192. 9.1  Hello Packets
  2193.  
  2194.    Each functioning switch in the fabric periodically sends a 
  2195.    Hello packet out each of its functioning switch interfaces.  
  2196.    Each Hello packet contains the following data used during the 
  2197.    discovery process:
  2198.  
  2199.    -  The switch ID and priority of the sending switch
  2200.  
  2201.    -  Values specifying the interval timers to be used for sending 
  2202.       Hello packets and deciding whether to declare a neighbor 
  2203.       switch Down
  2204.  
  2205.    -  The switch ID of the designated switch and the backup 
  2206.       designated switch for the interface link, as understood by 
  2207.       the sending switch
  2208.  
  2209.    -  A list of switch IDs of all neighboring switches seen so far 
  2210.       on the interface link
  2211.  
  2212.    For a detailed description of the Hello packet format, see 
  2213.    Section 13.5.1.
  2214.  
  2215.    When a switch receives a Hello packet, it first attempts to 
  2216.    identify the sending switch by matching its switch ID to one of 
  2217.    the known neighbors listed in the interface data structure.  If 
  2218.    this is the first Hello packet received from the switch, the 
  2219.    switch ID is entered in the list of known neighbors and a new 
  2220.  
  2221.  
  2222. L. Kane, et. al.                                           [Page 38]
  2223. I/D                  VLS Protocol Specification            May 1997
  2224.  
  2225.  
  2226.    neighbor data structure is created with a neighbor status of 
  2227.    Down.
  2228.  
  2229.    At this point, the remainder of the Hello packet is examined 
  2230.    and the appropriate interface and neighbor events are 
  2231.    generated.  In all cases, a neighbor Hello Received event is 
  2232.    generated.  Other events may also be generated, triggering 
  2233.    further steps in the discovery process or other actions, as 
  2234.    appropriate.  
  2235.  
  2236.    For a detailed description of the interface state machine, see 
  2237.    Section 5.3.  For a detailed description of the neighbor state 
  2238.    machine, see Section 6.3.
  2239.  
  2240.  
  2241. 9.2  Bidirectional Communication
  2242.  
  2243.    When a switch sees its own switch ID listed in a Hello packet 
  2244.    received from one of its neighbors, bidirectional communication 
  2245.    has been established with that neighbor.  A neighbor 2-Way 
  2246.    Received event is generated.  
  2247.  
  2248.    Once bidirectional communication has been established with a 
  2249.    neighbor, the local switch determines whether an adjacency will 
  2250.    be formed with the neighbor.  However, before that decision can 
  2251.    be made, a designated switch and a backup designated switch 
  2252.    must be selected for the link, if the link is a multi-access 
  2253.    link.  The next section contains a description of the 
  2254.    designated switch, the backup designated switch, and the 
  2255.    selection process.
  2256.  
  2257.  
  2258. 9.3  Designated Switch
  2259.  
  2260.    Every multi-access network link has a designated switch.  The 
  2261.    designated switch performs the following functions for the 
  2262.    routing protocol:
  2263.  
  2264.    -  The designated switch originates a network link 
  2265.       advertisement on behalf of the link, listing the set of 
  2266.       switches (including the designated switch itself) currently 
  2267.       attached to the link.  For a detailed description of network 
  2268.       link advertisements, see Section 14.3.
  2269.  
  2270.    -  The designated switch becomes adjacent to all other switches 
  2271.       on the link.  Since the link state databases are 
  2272.       synchronized across adjacencies, the designated switch plays 
  2273.       a central part in the synchronization process.  For a 
  2274.       description of the synchronization process, see Section 10.
  2275.  
  2276.    Each multi-access network link also has a backup designated 
  2277.    switch.  The primary function of the backup designated switch 
  2278.  
  2279.  
  2280. L. Kane, et. al.                                           [Page 39]
  2281. I/D                  VLS Protocol Specification            May 1997
  2282.  
  2283.  
  2284.    is to act as a standby for the designated switch.  If the 
  2285.    current designated switch fails, the backup designated switch 
  2286.    becomes the designated switch.
  2287.  
  2288.    To facilitate this transition, the backup designated switch 
  2289.    forms an adjacency with every other switch on the link.  Thus, 
  2290.    when the backup designated switch must take over for the 
  2291.    designated switch, its link state database is already 
  2292.    synchronized with the databases of all other switches on the 
  2293.    link.
  2294.  
  2295.  
  2296.                                Note
  2297.  
  2298.              Point-to-point network links have neither a 
  2299.              designated switch or a backup designated 
  2300.              switch.  However, in the current version of 
  2301.              VLSP, network links are always treated as 
  2302.              multi-access, regardless of the physical 
  2303.              nature of the link.  Therefore, all network 
  2304.              links have both a designated switch and a 
  2305.              backup designated switch.
  2306.  
  2307.  
  2308. 9.3.1  Selecting the Designated Switch
  2309.  
  2310.    When a link interface first becomes functional, the switch sets 
  2311.    a one-shot Wait timer (with a value of SwitchDeadInterval 
  2312.    seconds) for the interface.  The purpose of this timer is to 
  2313.    ensure that all switches attached to the link have a chance to 
  2314.    establish bidirectional communication before the designated 
  2315.    switch and backup designated switch are selected for the link.
  2316.  
  2317.    When the Wait timer is set, the interface enters the Waiting 
  2318.    state.  During this state, the switch exchanges Hello packets 
  2319.    with its neighbors attempting to establish bidirectional 
  2320.    communication.  The interface leaves the Waiting state under 
  2321.    one of the following conditions:  
  2322.  
  2323.    -  The Wait timer expires.
  2324.  
  2325.    -  A Hello packet is received indicating that a designated 
  2326.       switch or a backup designated switch has already been 
  2327.       specified for the interface.
  2328.  
  2329.    At this point, if the switch sees that a designated switch has 
  2330.    already been selected for the link, the switch accepts that 
  2331.    designated switch, regardless of its own switch priority and 
  2332.    MAC address.  This situation typically means the switch has 
  2333.    come up late on a fully functioning link.  Although this makes 
  2334.    it harder to predict the identity of the designated switch on a 
  2335.    particular link, it ensures that the designated switch does not 
  2336.  
  2337.  
  2338. L. Kane, et. al.                                           [Page 40]
  2339. I/D                 VLS Protocol Specification            May 1997
  2340.  
  2341.  
  2342.    change needlessly, necessitating a resynchronization of the 
  2343.    databases.
  2344.  
  2345.    If no designated switch is currently specified for the link, 
  2346.    the switch begins the actual selection process.  Note that this 
  2347.    selection algorithm operates only on a list of neighbor 
  2348.    switches that are eligible to become the designated switch.  A 
  2349.    neighbor is eligible to be the designated switch if it has a 
  2350.    switch priority greater than zero and its neighbor state is 2-
  2351.    Way or greater.  The local switch includes itself on the list 
  2352.    of eligible switches as long as it has a switch priority 
  2353.    greater than zero.
  2354.  
  2355.    The selection process includes the following steps:
  2356.  
  2357.    1) The current values of the link's designated switch and 
  2358.       backup designated switch are saved for use in step 6.
  2359.  
  2360.    2) The new backup designated switch is selected as follows:  
  2361.  
  2362.       a) Eliminate from consideration those switches that have 
  2363.          declared themselves to be the designated switch.
  2364.  
  2365.       b) If one or more of the remaining switches have declared 
  2366.          themselves to be the backup designated switch, eliminate 
  2367.          from consideration all other switches.
  2368.  
  2369.       c) From the remaining list of eligible switches, select the 
  2370.          switch having the highest switch priority as the backup 
  2371.          designated switch.  If multiple switches have the same 
  2372.          (highest) priority, select the switch with the highest 
  2373.          switch ID as the backup designated switch.  
  2374.  
  2375.    3) The new designated switch is selected as follows:  
  2376.  
  2377.       a) If one or more of the switches have declared themselves to 
  2378.          be the designated switch, eliminate from consideration all 
  2379.          other switches.
  2380.  
  2381.       b) From the remaining list of eligible switches, select the 
  2382.          switch having the highest switch priority as the 
  2383.          designated switch.  If multiple switches have the same 
  2384.          (highest) priority, select the switch with the highest 
  2385.          switch ID as the designated switch.  
  2386.  
  2387.    4) If the local switch has been newly selected as either the 
  2388.       designated switch or the backup designated switch, or is now 
  2389.       no longer the designated switch or the backup designated 
  2390.       switch, repeat steps 2 and 3, above, and then proceed to 
  2391.       step 5.  
  2392.  
  2393.  
  2394.  
  2395.  
  2396. L. Kane, et. al.                                           [Page 41]
  2397. I/D                  VLS Protocol Specification            May 1997
  2398.  
  2399.  
  2400.       If the local switch is now the designated switch, it will 
  2401.       eliminate itself from consideration at step 2a when the 
  2402.       selection of the backup designated switch is repeated.  
  2403.       Likewise, if the local switch is now the backup designated 
  2404.       switch, it will eliminate itself from consideration at step 
  2405.       3a when the selection of the designated switch is repeated.  
  2406.       This ensures that no switch will select itself as both 
  2407.       backup designated switch and designated switch.[2]  
  2408.  
  2409.    5) Set the interface state to the appropriate value, as 
  2410.       follows:
  2411.  
  2412.       -  If the local switch is now the designated switch, set the 
  2413.          interface state to DS.
  2414.  
  2415.       -  If the local switch is now the backup designated switch, 
  2416.          set the interface state to Backup.
  2417.  
  2418.       -  Otherwise, set the interface state to DS Other.
  2419.  
  2420.    6) If either the designated switch or backup designated switch 
  2421.       has now changed, the set of adjacencies associated with this 
  2422.       link must be modified.  Some adjacencies may need to be 
  2423.       formed, while others may need to be broken.  Generate the 
  2424.       neighbor AdjOK? event for all neighbors with a state of 2-
  2425.       Way or higher to trigger a reexamination of adjacency 
  2426.       eligibility. 
  2427.  
  2428.  
  2429.                               Caution
  2430.  
  2431.          If VLSP is implemented with configurable parameters, 
  2432.          care must be exercised in specifying the switch 
  2433.          priorities.  Note that if the local switch is not 
  2434.          itself eligible to become the designated switch 
  2435.          (i.e., it has a switch priority of 0), it is 
  2436.          possible that neither a backup designated switch 
  2437.          nor a designated switch will be selected by the 
  2438.          above procedure.  Note also that if the local 
  2439.          switch is the only attached switch that is eligible 
  2440.          to become the designated switch, it will select 
  2441.          itself as designated switch and there will be no 
  2442.          backup designated switch for the link.  For this 
  2443.          reason, it is advisable to specify a default switch 
  2444.          priority of 1 for all switches.
  2445.  
  2446.  
  2447.  
  2448.  
  2449.  
  2450.  
  2451.  
  2452.  
  2453.  
  2454. L. Kane, et. al.                                           [Page 42]
  2455. I/D                  VLS Protocol Specification            May 1997
  2456.  
  2457.  
  2458. 9.4  Adjacencies
  2459.  
  2460.    VLSP creates adjacencies between neighboring switches for the 
  2461.    purpose of exchanging routing information.  Not every two 
  2462.    neighboring switches will become adjacent.  On a multi-access 
  2463.    link, an adjacency is only formed between two switches if one 
  2464.    of them is either the designated switch or the backup 
  2465.    designated switch.
  2466.  
  2467.    Note that an adjacency is bound to the network link that the 
  2468.    two switches have in common.  Therefore, if two switches have 
  2469.    multiple links in common, they may have multiple adjacencies 
  2470.    between them.
  2471.  
  2472.    The decision to form an adjacency occurs in two places in the 
  2473.    neighbor state machine: 
  2474.  
  2475.    -  When bidirectional communication is initially established 
  2476.       with the neighbor
  2477.  
  2478.    -  When the designated switch  or backup designated switch on 
  2479.       the attached link changes.  
  2480.  
  2481.    The rules for establishing an adjacency between two neighboring 
  2482.    switches are as follows:
  2483.  
  2484.    -  On a point-to-point link, the two neighboring switches 
  2485.       always establish an adjacency.
  2486.  
  2487.    -  On a multi-access link, an adjacency is established with the 
  2488.       neighboring switch under one of the following conditions:
  2489.  
  2490.       -  The local switch itself is the designated switch.
  2491.  
  2492.       -  The local switch itself is the backup designated switch.
  2493.  
  2494.       -  The neighboring switch is the designated switch.
  2495.  
  2496.       -  The neighboring switch is the backup designated switch.
  2497.  
  2498.    If no adjacency is formed between two neighboring switches, the 
  2499.    state of the neighbor conversation remains set to 2-Way.
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512. L. Kane, et. al.                                           [Page 43]
  2513. I/D                 VLS Protocol Specification            May 1997
  2514.  
  2515.  
  2516. 10.  Synchronizing the Databases
  2517.  
  2518.    In an SPF-based routing algorithm, it is important for the link 
  2519.    state databases of all switches to stay synchronized.  VLSP 
  2520.    simplifies this process by requiring only adjacent switches to 
  2521.    remain synchronized.  
  2522.  
  2523.    The synchronization process begins when the switches attempt to 
  2524.    bring up the adjacency.  Each switch in the adjacency describes 
  2525.    its database by sending a sequence of Database Description 
  2526.    packets to its neighbor.  Each Database Description packet 
  2527.    describes a set of link state advertisements belonging to the 
  2528.    database.  When the neighbor sees a link state advertisement 
  2529.    that is more recent than its own database copy, it makes a note 
  2530.    to request this newer advertisement.
  2531.  
  2532.    During this exchange of Database Description packets (known as 
  2533.    the database exchange process), the two switches form a 
  2534.    master/slave relationship.  Database Description packets sent 
  2535.    by the master are known as polls, and each poll contains a 
  2536.    sequence number.  Polls are acknowledged by the slave by 
  2537.    echoing the sequence number in the Database Description 
  2538.    response packet.   
  2539.  
  2540.    When all Database Description packets have been sent and 
  2541.    acknowledged, the database exchange process is completed.  At 
  2542.    this point, each switch in the exchange has a list of link 
  2543.    state advertisements for which its neighbor has more recent 
  2544.    instances.  These advertisements are requested using Link State 
  2545.    Request packets.  
  2546.  
  2547.    Once the database exchange process has completed and all Link 
  2548.    State Requests have been satisfied, the databases are deemed 
  2549.    synchronized and the neighbor states of the two switches are 
  2550.    set to Full, indicating that the adjacency is fully functional.  
  2551.    Fully functional adjacencies are advertised in the link state 
  2552.    advertisements of the two switches.[3]
  2553.  
  2554.  
  2555. 10.1  Link State Advertisements
  2556.  
  2557.    Link state advertisements form the core of the database from 
  2558.    which a switch builds its routing table and calculates the set 
  2559.    of best paths to the other switches in the fabric.
  2560.  
  2561.    Each link state advertisement begins with a standard header.  
  2562.    This header contains three data items that uniquely identify 
  2563.    the link state advertisement:
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570. L. Kane, et. al.                                           [Page 44]
  2571. I/D                  VLS Protocol Specification            May 1997
  2572.  
  2573.  
  2574.    -  The link state type.  Possible values are as follows:
  2575.  
  2576.       1  Switch link advertisement -- describes the collected 
  2577.          states of the switch's interfaces.
  2578.  
  2579.       2  Network link advertisement -- describes the set of 
  2580.          switches attached to the network link.
  2581.  
  2582.    -  The link state ID, defined as follows:
  2583.  
  2584.       -  For a switch link advertisement -- the switch ID of the 
  2585.          originating switch
  2586.  
  2587.       -  For a network link advertisement -- the switch ID of the 
  2588.          designated switch for the link
  2589.  
  2590.    -  The switch ID of the advertising switch -- the switch that 
  2591.       generated the advertisement
  2592.  
  2593.    The link state advertisement header also contains three data 
  2594.    items that are used to determine which instance of a particular 
  2595.    link state advertisement is the most current.  (See Section 
  2596.    10.1.1 for a description of how to determine which instance of 
  2597.    a link state advertisement is the most current.)
  2598.  
  2599.    -  The link state sequence number
  2600.  
  2601.    -  The link state age, stored in seconds
  2602.  
  2603.    -  The link state checksum, a 16-bit unsigned value calculated 
  2604.       for the entire contents of the link state advertisement, 
  2605.       with the exception of the age field
  2606.  
  2607.    The remainder of each link state advertisement contains data 
  2608.    specific to the type of the advertisement.  See Section 14 for 
  2609.    a detailed description of the link state header, as well as the 
  2610.    format of a switch link or network link advertisement.
  2611.  
  2612.  
  2613. 10.1.1  Determining Which Link State Advertisement Is Newer
  2614.  
  2615.    At various times while synchronizing or updating the link state 
  2616.    database, a switch must determine which instance of a 
  2617.    particular link state advertisement is the most current.  This 
  2618.    decision is made as follows:
  2619.  
  2620.    -  The advertisement having the greater sequence number is the 
  2621.       most current.  
  2622.  
  2623.    -  If both instances have the same sequence number, then:
  2624.  
  2625.  
  2626.  
  2627.  
  2628. L. Kane, et. al.                                           [Page 45]
  2629. I/D                  VLS Protocol Specification            May 1997
  2630.  
  2631.  
  2632.       -  If the two instances have different checksum values, then 
  2633.          the instance having the larger checksum is considered the 
  2634.          most current.[4]
  2635.  
  2636.    -  If both instances have the same sequence number and the same 
  2637.       checksum value, then:
  2638.  
  2639.       -  If one (and only one) of the instances is of age MaxAge, 
  2640.          then the instance of age MaxAge is considered the most 
  2641.          current.[5]
  2642.  
  2643.       -  Else, if the ages of the two instances differ by more than 
  2644.          MaxAgeDiff, the instance having the smaller (younger) age 
  2645.          is considered the most current.[6]
  2646.  
  2647.       -  Else, the two instances are considered identical.
  2648.  
  2649.  
  2650. 10.2  Database Exchange Process
  2651.  
  2652.    There are two stages to the database exchange process:
  2653.  
  2654.    -  Negotiating the master/slave relationship
  2655.    -  Exchanging database summary information
  2656.  
  2657.    In both these stages, the neighboring switches exchange 
  2658.    Database Description packets.
  2659.  
  2660.  
  2661. 10.2.1  Database Description Packets
  2662.  
  2663.    Database Description packets are used to describe a switchs 
  2664.    link state database during the database exchange process.  Each 
  2665.    Database Description packet contains a list of headers of the 
  2666.    link state advertisements currently stored in the sending 
  2667.    switchs database.   (See Section 14.1 for a description of a 
  2668.    link state advertisement header.)
  2669.  
  2670.    In addition to the link state headers, each Database 
  2671.    Description packet contains the following data items:
  2672.  
  2673.    -  A flag (the M-bit) indicating whether or not more packets 
  2674.       are to follow.  Depending on the size of the local database 
  2675.       and the maximum size of the packet, the list of headers in 
  2676.       any particular Database Description packet may be only a 
  2677.       partial list of the total database.  When the M-bit is set, 
  2678.       the list of headers is only a partial list and more headers 
  2679.       are to follow in subsequent packets.
  2680.  
  2681.    -  A flag (the I-bit) indicating whether or not this is the 
  2682.       first Database Description packet sent for this execution of 
  2683.       the database exchange process.
  2684.  
  2685.  
  2686. L. Kane, et. al.                                           [Page 46]
  2687. I/D                 VLS Protocol Specification            May 1997
  2688.  
  2689.  
  2690.    -  A flag (the MS-bit) indicating whether the sending switch 
  2691.       thinks it is the master or the slave in the database 
  2692.       exchange process.  If the flag is set, the switch thinks it 
  2693.       is the master.
  2694.  
  2695.    -  A 4-octet sequence number for the packet.
  2696.  
  2697.    While the switches are negotiating the master/slave 
  2698.    relationship, they exchange "empty" Database Description 
  2699.    packets.  That is, packets that contain no link summary 
  2700.    information.  Instead, the flags and sequence number constitute 
  2701.    the information required for the negotiation process.
  2702.  
  2703.    See Section 13.5.2 for a more detailed description of a 
  2704.    Database Description packet.
  2705.  
  2706.  
  2707. 10.2.2  Negotiating the Master/Slave Relationship
  2708.  
  2709.    Before two switches can begin the actual exchange of database 
  2710.    information, they must decide between themselves who will be 
  2711.    the master in the exchange process and who will be the slave.  
  2712.    They must also agree on the starting sequence number for the 
  2713.    Database Description packets.
  2714.  
  2715.    Once a switch has decided to form an adjacency with a 
  2716.    neighboring switch, it sets the neighbor state to ExStart and 
  2717.    begins sending empty Database Description packets to its 
  2718.    neighbor.  These packets contain the starting sequence number 
  2719.    the switch plans to use in the exchange process.  Also, the I-
  2720.    bit and M-bit flags are set, as well as the MS-bit.  Thus, each 
  2721.    switch in the exchange begins by believing it will be the 
  2722.    master.
  2723.  
  2724.    Empty Database Description packets are retransmitted every 
  2725.    RxmtInterval seconds until the neighbor responds.
  2726.  
  2727.    When a switch receives an empty Database Description packet 
  2728.    from its neighbor, it determines which switch will be the 
  2729.    master by comparing the switch IDs.  The switch with the 
  2730.    highest switch ID becomes the master of the exchange.  Based on 
  2731.    this determination, the switch proceeds as follows:
  2732.  
  2733.    -  If the switch is to be the slave of the database exchange 
  2734.       process, it acknowledges that it is the slave by sending 
  2735.       another empty Database Description packet to the master.  
  2736.       This packet contains the masters sequence number and has 
  2737.       the MS-bit and the I-bit cleared.  
  2738.  
  2739.  
  2740.  
  2741.  
  2742.  
  2743.  
  2744. L. Kane, et. al.                                           [Page 47]
  2745. I/D                  VLS Protocol Specification            May 1997
  2746.  
  2747.  
  2748.       The switch then generates a neighbor event of Negotiation 
  2749.       Done to change its neighbor state to Exchange and waits for 
  2750.       the first non-empty Database Description packet from the 
  2751.       master.
  2752.  
  2753.    -  If the switch is to be the master of the database exchange, 
  2754.       it waits to receive an acknowledgment from its neighbor -- 
  2755.       that is, an empty Database Description packet with the MS-
  2756.       bit and I-bit cleared and containing the sequence number it 
  2757.       (the master) previously sent.  
  2758.  
  2759.       When it receives the acknowledgment, it generates a neighbor 
  2760.       event of Negotiation Done to change its neighbor state to 
  2761.       Exchange and begin the actual exchange of Database 
  2762.       Description packets.
  2763.  
  2764.    Note that during the negotiation process, the receipt of an 
  2765.    inconsistent packet will result in a neighbor event of Seq 
  2766.    Number Mismatch, terminating the process.  See Section 6.3 for 
  2767.    more information.
  2768.  
  2769.  
  2770. 10.2.3  Exchanging Database Description Packets
  2771.  
  2772.    Once the neighbor state changes to Exchange, the switches begin 
  2773.    the exchange of Database Description packets containing link 
  2774.    state summary data.  The process proceeds as follows:
  2775.  
  2776.    1) The master sends a packet containing a list of link state 
  2777.       headers.  If the packet contains only a portion of the 
  2778.       unexchanged database -- that is, more Database Description 
  2779.       packets are to follow -- the packet has the M-bit set.  The 
  2780.       MS-bit is set and the I-bit is clear.
  2781.  
  2782.       If the slave does not acknowledge the packet within 
  2783.       RxmtInterval seconds, the master retransmits the packet.
  2784.  
  2785.    2) When the slave receives a packet, it first checks the 
  2786.       sequence number to see if the packet is a duplicate.  If so, 
  2787.       it simply acknowledges the packet by clearing the MS-bit and 
  2788.       returning the packet to the master.  (Note that the slave 
  2789.       acknowledges all Database Description packets that it 
  2790.       receives, even those that are duplicates.) 
  2791.  
  2792.       Otherwise, the slave processes the packet by doing the 
  2793.       following:
  2794.  
  2795.       -  For each link state header listed in the packet, the slave 
  2796.          searches its own link state database to determine whether 
  2797.          it has an instance of the advertisement.
  2798.  
  2799.  
  2800.  
  2801.  
  2802. L. Kane, et. al.                                           [Page 48]
  2803. I/D                 VLS Protocol Specification            May 1997
  2804.  
  2805.  
  2806.       -  If the slave does not have an instance of the link state 
  2807.          advertisement, or if the instance it does have is older 
  2808.          than the instance listed in the packet, it creates an 
  2809.          entry in its link state request list in the neighbor data 
  2810.          structure.  See Section 10.1.1 for a description of how to 
  2811.          determine which instance of a link state advertisement is 
  2812.          the newest.
  2813.  
  2814.       -  When the slave has examined all headers, it acknowledges 
  2815.          the packet by turning the MS-bit off and returning the 
  2816.          packet to the master. 
  2817.  
  2818.    3) When the master receives the first acknowledgment for a 
  2819.       particular Database Description packet, it processes the 
  2820.       acknowledgment as follows:
  2821.  
  2822.       -  For each link state header listed in the packet, the 
  2823.          master checks to see if the slave has indicated it has an 
  2824.          instance of the link state advertisement that is newer 
  2825.          than the instance the master has in its own database.  If 
  2826.          so, the master creates an entry in its link state request 
  2827.          list in the neighbor data structure.  
  2828.  
  2829.       -  The master then increments the sequence number and sends 
  2830.          another packet containing the next set of link state 
  2831.          summary information, if any.
  2832.  
  2833.       Subsequent acknowledgments for the Database Description 
  2834.       packet (those with the same sequence number) are discarded.  
  2835.  
  2836.       When the master sends the last portion of its database 
  2837.       summary information, it clears the M-bit in the packet to 
  2838.       indicate that no more packets are to be sent.
  2839.  
  2840.    4) When the slave receives a Database Description packet with 
  2841.       the M-bit clear, it processes the packet, as described above 
  2842.       in step 2.  After it has completed processing and has 
  2843.       acknowledged the packet to the master, it generates an 
  2844.       Exchange Done neighbor event and its neighbor state changes 
  2845.       to Loading.  
  2846.  
  2847.       The database exchange process is now complete for the slave, 
  2848.       and it begins the process of requesting those link state 
  2849.       advertisements for which the master has more current 
  2850.       instances (see Section 10.3).
  2851.  
  2852.    5) When the master receives an acknowledgment for the final 
  2853.       Database Description packet, it processes the acknowledgment 
  2854.       as described above in step 3.  Then it generates an Exchange 
  2855.       Done neighbor event and its neighbor state changes to 
  2856.       Loading.
  2857.  
  2858.  
  2859.  
  2860. L. Kane, et. al.                                           [Page 49]
  2861. I/D                  VLS Protocol Specification            May 1997
  2862.  
  2863.   
  2864.       The database exchange process is now complete for the 
  2865.       master, and it begins the process of requesting those link 
  2866.       state advertisements for which the slave has more current 
  2867.       instances (see Section 10.3).
  2868.  
  2869.    Note that during this exchange, the receipt of an inconsistent 
  2870.    packet will result in a neighbor event of Seq Number Mismatch, 
  2871.    terminating the process.  See Section 6.3 for more information.
  2872.  
  2873.  
  2874. 10.3  Updating the Database
  2875.  
  2876.    When either switch completes the database exchange process and 
  2877.    its neighbor state changes to Loading, it has a list of link 
  2878.    state advertisements for which the neighboring switch has a 
  2879.    more recent instance.  This list is stored in the neighbor data 
  2880.    structure as the link state request list.  
  2881.  
  2882.    To complete the synchronization of its database with that of 
  2883.    its neighbor, the switch must obtain the most current instances 
  2884.    of those link state advertisements.
  2885.  
  2886.    The switch requests these advertisements by sending its 
  2887.    neighbor a Link State Request packet containing the description 
  2888.    of one or more link state advertisement, as defined by the 
  2889.    advertisements type, link state ID, and advertising switch.  
  2890.    (For a detailed description of the Link State Request packet, 
  2891.    see Section 13.5.3.)  The switch continues to retransmit this 
  2892.    packet every RxmtInterval seconds until it receives a reply 
  2893.    from the neighbor.
  2894.  
  2895.    When the neighbor switch receives the Link State Request 
  2896.    packet, it responds with a Link State Update packet containing 
  2897.    its most current instance of each of the requested 
  2898.    advertisements.  (Note that the neighboring switch can be in 
  2899.    any of the Exchange, Loading or Full neighbor states when it 
  2900.    responds to a Link State Request packet.)  
  2901.  
  2902.    If the neighbor cannot locate a particular link state 
  2903.    advertisement in its database, something has gone wrong with 
  2904.    the synchronization process.  The switch generates a BadLSReq 
  2905.    neighbor event and the partially formed adjacency is torn down.  
  2906.    See Section 6.3 for more information.
  2907.  
  2908.    Depending on the size of the link state request list, it may 
  2909.    take more than one Link State Request packet to obtain all the 
  2910.    necessary advertisements.  Note, however, that there must at 
  2911.    most one Link State Request packet outstanding at any one time.
  2912.  
  2913.  
  2914.  
  2915.  
  2916.  
  2917.  
  2918. L. Kane, et. al.                                           [Page 50]
  2919. I/D                  VLS Protocol Specification            May 1997
  2920.  
  2921.  
  2922. 10.4  An Example
  2923.  
  2924.    Figure 3 shows an example of an adjacency being formed between 
  2925.    two switches -- S1 and S2 -- connected to a network link.  S2 
  2926.    is the designated switch for the link and has a higher switch 
  2927.    ID than S1.
  2928.  
  2929.    The neighbor state changes that each switch goes through are 
  2930.    listed on the sides of the figure.
  2931.  
  2932.    At the top of Figure 3, S1's interface to the link becomes 
  2933.    operational, and S1 begins sending Hello packets over the 
  2934.    interface.  At this point, S1 does not yet know the identity of 
  2935.    the designated switch or of any other neighboring switches.
  2936.    S2 receives the Hello packet from S1 and changes its neighbor 
  2937.    state to Init.  In its next Hello packet, S2 indicates that it 
  2938.    is itself the designated switch and that it has received a 
  2939.    Hello packet from S1.  S1 receives the Hello packet and changes 
  2940.    its state to ExStart, starting the process of bringing up the 
  2941.    adjacency.
  2942.  
  2943.    S1 begins by asserting itself as the master.  When it sees that 
  2944.    S2 is indeed the master (because of S2's higher switch ID), S1 
  2945.    changes to slave and adopts S2's sequence number.  Database 
  2946.    Description packets are then exchanged, with polls coming from 
  2947.    the master (S2) and acknowledgments from the slave (S1).  This 
  2948.    sequence of Database Description packets ends when both the 
  2949.    poll and associated acknowledgment have the M-bit off.
  2950.  
  2951.    In this example, it is assumed that S2 has a completely up-to-
  2952.    date database and immediately changes to the Full state. S1 
  2953.    will change to the Full state after updating its database by 
  2954.    sending Link State Request packets and receiving Link State 
  2955.    Update packets in response.  
  2956.  
  2957.    Note that in this example, S1 has waited until all Database 
  2958.    Description packets have been received from S2 before sending 
  2959.    any Link State Request packets.  However, this need not be the 
  2960.    case.  S1 could interleave the sending of Link State Request 
  2961.    packets with the reception of Database Description packets.
  2962.  
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976. L. Kane, et. al.                                           [Page 51]
  2977. I/D                 VLS Protocol Specification            May 1997
  2978.  
  2979.  
  2980.        +--------+                                     +--------+
  2981.        | Switch |                                     | Switch |
  2982.        +   S1   +                                     +   S2   +
  2983.        +--------+                                     +--------+
  2984.  
  2985.           Down                                           Down
  2986.                          Hello (DS=0, seen=0)
  2987.                 ------------------------------------->
  2988.                                                          Init
  2989.                       Hello (DS=S2, seen=...,S1)
  2990.                 <-------------------------------------
  2991.        ExStart
  2992.                  DB Description (Seq=x, I, M, Master)
  2993.                 ------------------------------------->
  2994.                                                          ExStart
  2995.                  DB Description (Seq=y, I, M, Master)
  2996.                 <-------------------------------------
  2997.       Exchange
  2998.                    DB Description (Seq=y, M, Slave)
  2999.                 ------------------------------------->
  3000.                                                          Exchange
  3001.                  DB Description (Seq=y+1, M, Master)
  3002.                 <-------------------------------------
  3003.  
  3004.                  DB Description (Seq=y+1, M, Slave)
  3005.                 ------------------------------------->
  3006.                                   .
  3007.                                   .
  3008.                                   .
  3009.                    DB Description (Seq=y+n, Master)
  3010.                 <-------------------------------------
  3011.  
  3012.                    DB Description (Seq=y+n, Slave)
  3013.                 ------------------------------------->
  3014.        Loading                                           Full
  3015.  
  3016.                           Link State Request
  3017.                 <-------------------------------------
  3018.  
  3019.                           Link State Update
  3020.                 ------------------------------------->
  3021.                                   .
  3022.                                   .
  3023.                                   .
  3024.                           Link State Request
  3025.                 <-------------------------------------
  3026.  
  3027.                           Link State Update
  3028.                 ------------------------------------->
  3029.         Full
  3030.  
  3031.             Figure 3: An Example of Bringing Up an Adjacency
  3032.  
  3033.  
  3034. L. Kane, et. al.                                           [Page 52]
  3035. I/D                  VLS Protocol Specification            May 1997
  3036.  
  3037.  
  3038. 11.  Maintaining the Databases
  3039.  
  3040.    Each switch advertises its state (also known as its link state) 
  3041.    by originating switch link advertisements.  In addition, the 
  3042.    designated switch on each network link advertises the state of 
  3043.    the link by originating network link advertisements.  
  3044.  
  3045.    As described in Section 10.1, link state advertisements are 
  3046.    uniquely identified by their type, link state ID, and 
  3047.    advertising switch.  
  3048.  
  3049.    Link state advertisements are distributed throughout the switch 
  3050.    fabric using a reliable flooding algorithm that ensures that 
  3051.    all switches in the fabric are notified of any link state 
  3052.    changes.  
  3053.  
  3054.  
  3055. 11.1  Originating Link State Advertisements
  3056.  
  3057.    A new instance of each link state advertisement is originated 
  3058.    any time the state of the switch or link changes.  When a new 
  3059.    instance of a link state advertisement is originated, its 
  3060.    sequence number is incremented, its age is set to zero, and its 
  3061.    checksum is calculated.  The advertisement is then installed 
  3062.    into the local link state database and forwarded out all fully 
  3063.    operational interfaces (that is, those interfaces with a state 
  3064.    greater than Waiting) for distribution throughout the switch 
  3065.    fabric.  See Section 11.2.4 for a description of the 
  3066.    installation of the advertisement into the link state database 
  3067.    and Section 11.2.3 for a description of how advertisements are 
  3068.    forwarded.
  3069.  
  3070.    A switch originates a new instance of a link state 
  3071.    advertisement as a result of the following events:
  3072.  
  3073.    1) The state of one of the switchs interfaces changes such 
  3074.       that the contents of the associated switch link 
  3075.       advertisement changes.
  3076.  
  3077.    2) The designated switch on any of the switchs attached 
  3078.       network links changes.  The switch originates a new switch 
  3079.       link advertisement.  Also, if the switch itself is now the 
  3080.       designated switch, it originates a new network link 
  3081.       advertisement for the link.
  3082.  
  3083.    3) One of the switchs neighbor states changes to or from Full.  
  3084.       If this changes the contents of the associated switch link 
  3085.       advertisement, a new instance is generated.  Also, if the 
  3086.       switch is the designated switch for the attached network 
  3087.       link, it originates a new network link advertisement for the 
  3088.       link.
  3089.  
  3090.  
  3091.  
  3092. L. Kane, et. al.                                           [Page 53]
  3093. I/D                 VLS Protocol Specification            May 1997
  3094.  
  3095.  
  3096.    Two instances of the same link state advertisement must not be 
  3097.    originated within the time period MinLSInterval.  Note that 
  3098.    this may require that the generation of the second instance to 
  3099.    be delayed up to MinLSInterval seconds. 
  3100.  
  3101.  
  3102. 11.1.1  Switch Link Advertisements
  3103.  
  3104.    A switch link advertisement describes the collected states of 
  3105.    all functioning links attached to the originating switch -- 
  3106.    that is, all attached links with an interface state greater 
  3107.    than Down.  A switch originates a switch link advertisement 
  3108.    when it first becomes functional.  It then generates a new 
  3109.    instance of the advertisement each time one of its interfaces 
  3110.    changes state.
  3111.  
  3112.    Each link in the advertisement is assigned a type, based on the 
  3113.    state of interface, as shown in Table 4.  
  3114.  
  3115.  
  3116.                                Note
  3117.  
  3118.             A stub link is a link that is unavailable 
  3119.             for network traffic.
  3120.  
  3121.  
  3122.  
  3123.       Interface state     Link type     Description
  3124.  
  3125.       Down                (n/a)         (n/a)
  3126.       Loopback            3             Stub link
  3127.       Waiting             3             Stub link
  3128.       Point-to-Point      1             Point-to-point link
  3129.       DS Other*           2             Multi-access link
  3130.       Backup*             2             Multi-access link
  3131.       DS**                2             Multi-access link
  3132.  
  3133.         *If a full adjacency has been formed with the designated
  3134.          switch.  Otherwise, the link type is 3 until the 
  3135.          adjacency has been established.
  3136.  
  3137.        **If a full adjacency has been formed with at least one 
  3138.          other switch on the link.  Otherwise, the link type is 3 
  3139.          until an adjacency has been established.
  3140.  
  3141.           Table 4: Link Types in a Switch Link Advertisement
  3142.  
  3143.  
  3144.    Each link in the advertisement is also assigned a link 
  3145.    identifier based on its link type.  In general, this value 
  3146.    identifies another switch that also originates advertisements 
  3147.    for the link, thereby providing a key for accessing other link 
  3148.  
  3149.  
  3150. L. Kane, et. al.                                           [Page 54]
  3151. I/D                  VLS Protocol Specification            May 1997
  3152.  
  3153.  
  3154.    state advertisements for the link.  The relationship between 
  3155.    link type and ID is shown in Table 5. 
  3156.  
  3157.  
  3158.       Link type   Description               Link ID
  3159.  
  3160.       1           Point-to-point link       Switch ID of neighbor 
  3161.                                             switch
  3162.       2           Multi-access link         Switch ID of 
  3163.                                             designated switch
  3164.       3           Stub link                 (n/a)
  3165.  
  3166.            Table 5: Link IDs in a Switch Link Advertisement
  3167.  
  3168.  
  3169.    In addition to a type and an identifier, the description of 
  3170.    each link specifies the interface ID of the associated network 
  3171.    link. 
  3172.  
  3173.    Finally, each link description includes the cost of sending a 
  3174.    packet over the link.  This output cost is expressed in the 
  3175.    link state metric and must be greater than zero.
  3176.  
  3177.    To illustrate the format of a switch link advertisement, 
  3178.    consider the switch fabric shown in Figure 4. 
  3179.  
  3180.  
  3181.                            00-00-1d-22-23-c5
  3182.                                +-------+
  3183.                                |  SW2  |
  3184.                                +-------+
  3185.                                    |
  3186.                                    | Point-to-Point
  3187.                                    |
  3188.                                    | 01
  3189.       +-------+    Waiting     +-------+
  3190.       |  SW3  |----------------|  SW1  | 00-00-1d-1f-05-81
  3191.       +-------+             02 +-------+
  3192.   00-00-1d-17-35-a4                | 03
  3193.                                    |
  3194.                                    | DS Other
  3195.                                    |
  3196.          +-------------------------+-------------------------+
  3197.       DS |                         |                         |
  3198.          |                         |                         |
  3199.      +-------+                 +-------+                 +-------+
  3200.      |  SW4  |                 |  SW5  |                 |  SW6  |
  3201.      +-------+                 +-------+                 +-------+
  3202.    00-00-1d-4a-26-b3       00-00-1d-4a-27-1c       00-00-1d-7e-84-2e
  3203.  
  3204.  
  3205.                     Figure 4: Sample Switch Fabric
  3206.  
  3207.  
  3208. L. Kane, et. al.                                           [Page 55]
  3209. I/D                 VLS Protocol Specification            May 1997
  3210.  
  3211.  
  3212.    In this example, switch SW1 has 5 neighboring switches (shown 
  3213.    as boxes) distributed over 3 network links (shown as lines).  
  3214.    The base MAC address of each switch is also shown adjacent to 
  3215.    each box.  On switch SW1, ports 01 and 02 attach to point-to-
  3216.    point network links, while port 03 attaches to a multi-access 
  3217.    network link with three attached switches.  The interface state 
  3218.    of each port is shown next to the line representing the 
  3219.    corresponding link.  
  3220.  
  3221.    The switch link advertisement generated by switch SW1 would 
  3222.    contain the following data items:
  3223.  
  3224.    ; switch link advertisement for switch SW1
  3225.  
  3226.    LS age = 0                 ; always true on origination
  3227.    Options = (T-bit|E-bit)    ; options
  3228.    LS type = 1                ; this is a switch link advertisement
  3229.                               ; SW1s switch ID
  3230.    Link State ID = 00-00-1d-1f-05-81-00-00-00-00
  3231.    Advertising switch = 00-00-1d-1f-05-81-00-00-00-00
  3232.    # links = 3
  3233.  
  3234.       ; link on interface port 1
  3235.       Link ID = 00-00-1d-22-23-c5-00-00-00-00      ; switch ID
  3236.       Link Data = 00-00-1d-1f-05-81-00-00-00-01    ; interface ID
  3237.       Type = 1                                     ; pt-to-pt link
  3238.       # other metrics = 0                          ; TOS 0 only
  3239.       TOS 0 metric = 1
  3240.  
  3241.       ; link on interface port 2
  3242.       Link ID = 00-00-1d-17-35-a4-00-00-00-00      ; switch ID
  3243.       Link Data = 00-00-1d-1f-05-81-00-00-00-02    ; interface ID
  3244.       Type = 3                                     ; stub link
  3245.       # other metrics = 0                          ; TOS 0 only
  3246.       TOS 0 metric = 1
  3247.  
  3248.       ; link on interface port 3
  3249.       Link ID = 00-00-1d-4a-26-b3-00-00-00-00      ; switch ID of DS
  3250.       Link Data = 00-00-1d-1f-05-81-00-00-00-03    ; interface ID
  3251.       Type = 1                                     ; multi-ax link
  3252.       # other metrics = 0                          ; TOS 0 only
  3253.       TOS 0 metric = 2
  3254.  
  3255.    (See Section 14.2 for a detailed description of the format of a 
  3256.    switch link advertisement.)
  3257.  
  3258.  
  3259.  
  3260.  
  3261.  
  3262.  
  3263.  
  3264.  
  3265.  
  3266. L. Kane, et. al.                                           [Page 56]
  3267. I/D                 VLS Protocol Specification            May 1997
  3268.  
  3269.  
  3270. 11.1.2  Network Link Advertisements
  3271.  
  3272.    Network link advertisements are used to describe the switches 
  3273.    attached to each multi-access network link.  
  3274.  
  3275.  
  3276.                                Note
  3277.  
  3278.          Network link advertisements are not generated for 
  3279.          point-to-point links.  However, in the current 
  3280.          version of VLSP, network links are always treated 
  3281.          as multi-access, regardless of the physical nature 
  3282.          of the link.  Therefore, network link advertisements 
  3283.          are generated for all network links, regardless of 
  3284.          physical type.
  3285.  
  3286.  
  3287.    A network link advertisement is originated by the designated 
  3288.    switch for the associated link once the switch has established 
  3289.    a full adjacency with at least one other switch on the link.  
  3290.    Each advertisement lists the switch IDs of those switches that 
  3291.    are fully adjacent to the designated switch.  The designated 
  3292.    switch includes itself in this list.
  3293.  
  3294.    To illustrate the format of a network link advertisement, 
  3295.    consider again the switch fabric shown in Figure 4.  In this 
  3296.    example, network link advertisements will be generated only 
  3297.    switch SW4, the designated switch of the multi-access network 
  3298.    link between switches SW1 and SW4.
  3299.  
  3300.    The network link advertisement generated by switch SW4 would 
  3301.    contain the following data items:
  3302.  
  3303.    ; network link advertisement for switch SW4
  3304.  
  3305.    LS age = 0                 ; always true on origination
  3306.    Options = (T-bit|E-bit)    ; options
  3307.    LS type = 2                ; this is a switch link advertisement
  3308.                               ; SW4s switch ID
  3309.    Link State ID = 00-00-1d-4a-26-b3-00-00-00-00
  3310.    Advertising switch = 00-00-1d-4a-26-b3-00-00-00-00
  3311.  
  3312.       Attached switch = 00-00-1d-4a-26-b3-00-00-00-00
  3313.       Attached switch = 00-00-1d-1f-05-81-00-00-00-00
  3314.       Attached switch = 00-00-1d-4a-27-1c-00-00-00-00
  3315.       Attached switch = 00-00-1d-7e-84-2e-00-00-00-00
  3316.  
  3317.    (See Section 14.3 for a detailed description of the format of a 
  3318.    network link advertisement.)
  3319.  
  3320.  
  3321.  
  3322.  
  3323.  
  3324. L. Kane, et. al.                                           [Page 57]
  3325. I/D                 VLS Protocol Specification            May 1997
  3326.  
  3327.  
  3328. 11.2  Distributing Link State Advertisements
  3329.  
  3330.    Link state advertisements are distributed throughout the switch 
  3331.    fabric encapsulated within Link State Update packets.  A single 
  3332.    Link State Update packet may contain several distinct   
  3333.    advertisements.  
  3334.  
  3335.    To make the distribution process reliable, each advertisement 
  3336.    must be explicitly acknowledged in a Link State Acknowledgment 
  3337.    packet.  Note, however, that multiple acknowledgments can be 
  3338.    grouped together into a single Link State Acknowledgment 
  3339.    packet.  A sending switch retransmits unacknowledged Link State 
  3340.    Update packets at regular intervals until they are 
  3341.    acknowledged. 
  3342.  
  3343.    The remainder of this section is structured as follows:
  3344.  
  3345.    -  Section 11.2.1 presents an overview of the distribution 
  3346.       process.  
  3347.  
  3348.    -  Section 11.2.2 describes how an incoming Link State Update 
  3349.       packet is processed.  
  3350.  
  3351.    -  Section 11.2.3 describes how a Link State Packet is 
  3352.       forwarded -- both by the originating switch and an 
  3353.       intermediate receiving switch.  
  3354.  
  3355.    -  Section 11.2.4 describes how advertisements are installed 
  3356.       into the local database.
  3357.  
  3358.    -  Section 11.2.5 describes the retransmission of 
  3359.       unacknowledged advertisements.
  3360.  
  3361.    -  Section 11.2.6 describes how advertisements are acknowledged.
  3362.  
  3363.  
  3364. 11.2.1  Overview
  3365.  
  3366.    The philosophy behind the distribution of link state 
  3367.    advertisements is based on the concept of adjacencies -- that 
  3368.    is, each switch is only required to remain synchronized with 
  3369.    its adjacent neighbors.  
  3370.  
  3371.    When a switch originates a new instance of a link state 
  3372.    advertisement, it formats the advertisement into a Link State 
  3373.    Update packet and floods the packet out each fully operational 
  3374.    interface -- that is, each interface with a state greater than 
  3375.    Waiting.  However, only those neighbors that are adjacent to 
  3376.    the sending switch need to process the packet.
  3377.  
  3378.    The sending switch indicates which of its neighbor switches 
  3379.    should process the advertisement by specifying a particular 
  3380.  
  3381.  
  3382. L. Kane, et. al.                                           [Page 58]
  3383. I/D                  VLS Protocol Specification            May 1997
  3384.  
  3385.  
  3386.    multicast destination in the network layer address information 
  3387.    (see Section 13.2).  The sending switch sets the value of the 
  3388.    network layer destination switch ID field according to the 
  3389.    state of the interface over which the packet is sent:
  3390.  
  3391.    -  If the interface state is Point-to-Point, DS, or Backup, the 
  3392.       switch is adjacent to all other switches on the link and all 
  3393.       neighboring switches must process the packet.  Therefore, 
  3394.       the destination field is set to the multicast switch ID 
  3395.       AllSPFSwitches.
  3396.  
  3397.    -  If the interface state is DS Other, the switch is only 
  3398.       adjacent to the designated switch and the backup designated 
  3399.       switch and only those two neighboring switches must process 
  3400.       the packet.  Therefore, the destination field is set to the 
  3401.       multicast switch ID AllDSwitches. 
  3402.  
  3403.    A similar logic is used when a switch receives a Link State 
  3404.    Update packet containing a new instance of a link state   
  3405.    advertisement.  After processing and acknowledging the packet, 
  3406.    the receiving switch forwards the Link State Update packet as 
  3407.    follows:
  3408.  
  3409.    -  On the interface over which the original Link State Update 
  3410.       packet was received:
  3411.  
  3412.       -  If the receiving switch is the designated switch for the 
  3413.          attached network link, the packet is forwarded to all 
  3414.          other switches on the link.  (The destination field is set 
  3415.          to AllSPFSwitches.)  The originating switch will recognize 
  3416.          that it was the advertisement originator and discard the 
  3417.          packet.
  3418.  
  3419.       -  If the receiving switch is not the designated switch for 
  3420.          the attached network link, the packet is not sent back out 
  3421.          the interface over which it was received.
  3422.  
  3423.    -  On all other interfaces:
  3424.  
  3425.       -  If the receiving switch is the designated switch for the 
  3426.          attached network link, the packet is forwarded to all 
  3427.          switches on the link.  (The destination field is set to 
  3428.          AllSPFSwitches.)
  3429.  
  3430.       -  If the receiving switch is neither the designated switch 
  3431.          or the backup designated switch for the attached network 
  3432.          link, the packet is forwarded only to the designated 
  3433.          switch and the backup designated switch.  (The destination 
  3434.          field is set to AllDSwitches.)
  3435.  
  3436.    Each Link State Update packet is forwarded and processed in 
  3437.    this fashion until all switches in the fabric have received 
  3438.  
  3439.  
  3440. L. Kane, et. al.                                           [Page 59]
  3441. I/D                  VLS Protocol Specification            May 1997
  3442.  
  3443.  
  3444.    notification of the new instance of the link state 
  3445.    advertisement.
  3446.  
  3447.  
  3448. 11.2.2  Processing an Incoming Link State Update Packet
  3449.  
  3450.    When the a Link State Update packet is received, it is first 
  3451.    subjected to a number of consistency checks.  In particular, 
  3452.    the Link State Update packet is associated with a specific 
  3453.    neighbor.  If the state of that neighbor is less than Exchange, 
  3454.    the entire Link State Update packet is discarded.
  3455.  
  3456.    Each link state advertisement contained in the packet is 
  3457.    processed as follows:
  3458.  
  3459.    1) Validate the advertisement's link state checksum and type.  
  3460.       If the checksum is invalid or the type is unknown, discard 
  3461.       the advertisement without acknowledging it.
  3462.  
  3463.    2) If the advertisement's age is equal to MaxAge and there is 
  3464.       currently no instance of the advertisement in the local link 
  3465.       state database, then do the following:
  3466.  
  3467.       a) Acknowledge the advertisement by sending a Link State 
  3468.          Acknowledgment packet to the sending neighbor (see Section 
  3469.          11.2.6).
  3470.  
  3471.       b) Purge all outstanding requests for equal or previous 
  3472.          instances of the advertisement from the sending neighbor's 
  3473.          Link State Request list.
  3474.  
  3475.       c) If the neighbor is Exchange or Loading, install the 
  3476.          advertisement in the link state database (see Section 
  3477.          11.2.4).  Otherwise, discard the advertisement.
  3478.  
  3479.    3) If the advertisements age is equal to MaxAge and there is 
  3480.       an instance of the advertisement in the local link state 
  3481.       database, then do the following:
  3482.  
  3483.       a) If the advertisement is listed in the link state 
  3484.          retransmission list of any neighbor, remove the 
  3485.          advertisement from the retransmission list(s) and delete 
  3486.          the database copy of the advertisement.
  3487.  
  3488.       b) Discard the received (MaxAge) advertisement without 
  3489.          acknowledging it.
  3490.  
  3491.    4) If the advertisement's age is less than MaxAge, attempt to 
  3492.       locate an instance of the advertisement in the local link 
  3493.       state database.  If there is no database copy of this 
  3494.  
  3495.  
  3496.  
  3497.  
  3498. L. Kane, et. al.                                           [Page 60]
  3499. I/D                  VLS Protocol Specification            May 1997
  3500.  
  3501.  
  3502.       advertisement, or the received advertisement is more recent 
  3503.       than the database copy (see Section 10.1.1), do the 
  3504.       following:
  3505.  
  3506.       a) If there is already a database copy, and if the database 
  3507.          copy was installed less than MinLSInterval seconds ago, 
  3508.          discard the new advertisement without acknowledging it.
  3509.  
  3510.       b) Otherwise, forward the new advertisement out some subset 
  3511.          of the local interfaces (see Section 11.2.3).  Note 
  3512.          whether the advertisement was sent back out the receiving 
  3513.          interface for later use by the acknowledgment process.
  3514.  
  3515.       c) Remove the current database copy from the Link state 
  3516.          retransmission lists of all neighbors.
  3517.  
  3518.       d) Install the new advertisement in the link state database, 
  3519.          replacing the current database copy.  (Note that this may 
  3520.          cause the routing table calculation to be scheduled.  See 
  3521.          Section 12.)  Timestamp the new advertisement with the 
  3522.          time that it was received to prevent installation of 
  3523.          another instance within MinLSInterval seconds.
  3524.  
  3525.       e) Acknowledge the advertisement, if necessary, by sending a 
  3526.          Link State Acknowledgment packet back out the receiving 
  3527.          interface.  (See Section 11.2.6.)
  3528.  
  3529.       f) If the link state advertisement was initially advertised 
  3530.          by the local switch itself, advance the advertisement 
  3531.          sequence number and issue a new instance of the 
  3532.          advertisement.  (Receipt of a newer instance of an 
  3533.          advertisement means that the local copy of the 
  3534.          advertisement is left over from before the last time the 
  3535.          switch was restarted.)
  3536.  
  3537.    5) If the received advertisement is the same instance as the 
  3538.       database copy (as determined by the algorithm described in 
  3539.       Section 10.1.1), do the following:
  3540.  
  3541.       a) If the advertisement is listed in the neighbors link 
  3542.          state retransmission list, the local switch is expecting 
  3543.          an acknowledgment for this advertisement.  Treat the 
  3544.          received advertisement as an implied acknowledgment, and 
  3545.          remove the advertisement from the link state 
  3546.          retransmission list.  Note this implied acknowledgment for 
  3547.          later use by the acknowledgment process (Section 11.2.6).
  3548.  
  3549.       b) Acknowledge the advertisement, if necessary, by sending a 
  3550.          Link State Acknowledgment packet back out the receiving 
  3551.          interface.  (See Section 11.2.6.)
  3552.  
  3553.  
  3554.  
  3555.  
  3556. L. Kane, et. al.                                           [Page 61]
  3557. I/D                 VLS Protocol Specification            May 1997
  3558.  
  3559.  
  3560.    6) If the database copy of the advertisement is more recent 
  3561.       than the instance just received, do the following:
  3562.  
  3563.       a) Determine whether the instance is listed in the neighbor 
  3564.          link state request list.  If so, an error has occurred in 
  3565.          the database exchange process.  Restart the database 
  3566.          exchange process by generating a neighbor BadLSReq event 
  3567.          for the sending neighbor and terminate processing of the 
  3568.          Link State Update packet.
  3569.  
  3570.       b) Otherwise, generate an unusual event to network management 
  3571.          and discard the advertisement.
  3572.  
  3573.  
  3574. 11.2.3  Forwarding Link State Advertisements
  3575.  
  3576.    When a new instance of an advertisement is originated or after 
  3577.    an incoming advertisement has been processed, the switch must 
  3578.    decide over which interfaces and to which neighbors the 
  3579.    advertisement will be forwarded.  In some instances, the switch 
  3580.    may decide not to forward the advertisement over a particular 
  3581.    interface because it is able to determine that the neighbors on 
  3582.    that attached link have or will receive the advertisement from 
  3583.    another switch on the link.
  3584.  
  3585.    The decision of whether to forward an advertisement over each 
  3586.    of the switchs interfaces is made as follows:
  3587.  
  3588.    1) Each neighboring switch attached to the interface is 
  3589.       examined to determine whether it should receive and process 
  3590.       the new advertisement.  For each neighbor, the following 
  3591.       steps are executed:
  3592.  
  3593.       a) If the neighbor state is less than Exchange, the neighbor 
  3594.          need not receive or process the new advertisement.
  3595.  
  3596.       b) If the neighbor state is Exchange or Loading, examine the 
  3597.          link state request list associated with the neighbor.  If 
  3598.          an instance of the new advertisement is on the list, the 
  3599.          neighboring switch already has an instance of the 
  3600.          advertisement.  Compare the new advertisement to the 
  3601.          neighbor's copy:
  3602.  
  3603.          -  If the new advertisement is less recent, the neighbor 
  3604.             need not receive or process the new advertisement.
  3605.  
  3606.          -  If the two copies are the same instance, delete the 
  3607.             advertisement from the link state request list.  The 
  3608.             neighbor need not receive or process the new 
  3609.             advertisement.[7]
  3610.  
  3611.  
  3612.  
  3613.  
  3614. L. Kane, et. al.                                           [Page 62]
  3615. I/D                 VLS Protocol Specification            May 1997
  3616.  
  3617.  
  3618.          -  Otherwise, the new advertisement is more recent.  
  3619.             Delete the advertisement from the link state request 
  3620.             list.  The neighbor may need to receive and process the 
  3621.             new advertisement.
  3622.  
  3623.       c) If the new advertisement was received from this neighbor, 
  3624.          the neighbor need not receive or process the 
  3625.          advertisement.
  3626.  
  3627.       d) Add the new advertisement to the link state retransmission 
  3628.          list for the neighbor.
  3629.  
  3630.    2) The switch must now decide whether to forward the new 
  3631.       advertisement out the interface.  
  3632.  
  3633.       a) If the link state advertisement was not added to any of 
  3634.          the link state retransmission lists for neighbors attached 
  3635.          to the interface, there is no need to forward the 
  3636.          advertisement out the interface.
  3637.  
  3638.       b) If the new advertisement was received on this interface, 
  3639.          and it was received from either the designated switch or 
  3640.          the backup designated switch, there is no need to forward 
  3641.          the advertisement out the interface.  Chances are all 
  3642.          neighbors on the attached network link have also received 
  3643.          the advertisement already.  
  3644.  
  3645.       c) If the new advertisement was received on this interface 
  3646.          and the state of the interface is Point-to-Point, there is 
  3647.          no need to forward the advertisement since the received 
  3648.          advertisement was originated by the neighbor switch.
  3649.  
  3650.       d) If the new advertisement was received on this interface, 
  3651.          and the interface state is Backup -- that is, the switch 
  3652.          itself is the backup designated switch -- there is no need 
  3653.          to forward the advertisement out the interface.  The 
  3654.          designated switch will distribute advertisements on the 
  3655.          attached network link.
  3656.  
  3657.       e) Otherwise, the advertisement must be forwarded out the 
  3658.          interface.  
  3659.  
  3660.       To forward a link state advertisement, the switch first 
  3661.       increments the advertisements age by InfTransDelay seconds 
  3662.       to account for the transmission time over the link.  The 
  3663.       switch then copies the advertisement into a Link State 
  3664.       Update packet
  3665.  
  3666.       Forwarded advertisements are sent to all adjacent switches 
  3667.       associated with the interface.  If the interface state is 
  3668.       Point-to-Point, DS, or Backup, the destination switch ID 
  3669.       field of the network layer address information is set to the 
  3670.  
  3671.  
  3672. L. Kane, et. al.                                           [Page 63]
  3673. I/D                  VLS Protocol Specification            May 1997
  3674.  
  3675.  
  3676.       multicast switch ID AllSPFSwitches.  If the interface state 
  3677.       is DS Other, the destination switch ID field is set to the 
  3678.       multicast switch ID AllDSwitches.  
  3679.  
  3680.  
  3681. 11.2.4  Installing Link State Advertisements in the Database
  3682.  
  3683.    When a new link state advertisement is installed into the link 
  3684.    state database, as the result of either originating or 
  3685.    receiving a new instance of an advertisement, the switch must 
  3686.    determine whether the routing table and best paths need to be 
  3687.    recalculated.  To make this determination, do the following: 
  3688.  
  3689.    1) Compare the contents of the new instance with the contents 
  3690.       of the old instance (assuming the older instance is 
  3691.       available).  Note that this comparison does not include any 
  3692.       data from the link state header.  Differences in fields 
  3693.       within the header (such as the sequence number and checksum, 
  3694.       which are guaranteed to be different in different instances 
  3695.       of an advertisement) are of no consequence when deciding 
  3696.       whether or not to recalculate the routing table.
  3697.  
  3698.    2) If there are no differences in the contents of the two 
  3699.       advertisement instances, there is no need to recalculate the 
  3700.       routing table.
  3701.  
  3702.    3) Otherwise, the entire routing table must be recalculated, 
  3703.       starting with the best path calculations 
  3704.  
  3705.    Note also that the older instance of the advertisement must be 
  3706.    removed from the link state database when the new advertisement 
  3707.    is installed.  The older instance must also be removed from the 
  3708.    link state retransmission lists of all neighbors.
  3709.  
  3710.  
  3711. 11.2.5  Retransmitting Link State Advertisements
  3712.  
  3713.    When a switch sends a link state advertisement to an adjacent 
  3714.    neighbor, it records the advertisement in the neighbors link 
  3715.    state retransmission list.  To ensure the reliability of the 
  3716.    distribution process, the switch continues to periodically 
  3717.    retransmit the advertisements specified in the list until they 
  3718.    are acknowledged.  
  3719.  
  3720.    The interval timer used to trigger retransmission of the 
  3721.    advertisements is set to RxmtInterval seconds, as found in the 
  3722.    interface data structure.  Note that if this value is too low, 
  3723.    needless retransmissions will ensue.  If the value is too high, 
  3724.    the speed with which the databases synchronize across adjacencies 
  3725.    may be affected if there are lost packets.
  3726.  
  3727.  
  3728.  
  3729.  
  3730. L. Kane, et. al.                                           [Page 64]
  3731. I/D                 VLS Protocol Specification            May 1997
  3732.  
  3733.  
  3734.    When the interval timer expires, entries in the retransmission 
  3735.    list are formatted into one or more Link State Update packets.  
  3736.    (Remember that multiple advertisements can fit into a single 
  3737.    Link State Update packet.)  The age field of each advertisement 
  3738.    is incremented by InfTransDelay, as found in the interface data 
  3739.    structure, before the advertisement is copied into the outgoing 
  3740.    packet.
  3741.  
  3742.    Link State Update packets containing retransmitted 
  3743.    advertisements are always sent directly to the adjacent switch.  
  3744.    That is, the destination field of the network layer addressing 
  3745.    information is set to the switch ID of the neighboring switch.
  3746.  
  3747.    If the adjacent switch goes down, retransmissions will continue 
  3748.    until the switch failure is detected and the adjacency is torn 
  3749.    down by the VLSP Hello protocol.  When the adjacency is torn 
  3750.    down, the link state retransmission list is cleared.
  3751.  
  3752.  
  3753. 11.2.6  Acknowledging Link State Advertisements
  3754.  
  3755.    Each link state advertisement received by a switch must be 
  3756.    acknowledged.  In most cases, this is done by sending a Link 
  3757.    State Acknowledgment packet.  However, acknowledgments can also 
  3758.    be done implicitly by sending Link State Update packets (see 
  3759.    step 4a of Section 11.2.2).
  3760.  
  3761.    Multiple acknowledgments can be grouped together into a single 
  3762.    Link State Acknowledgment packet.  
  3763.  
  3764. Sending an acknowledgment
  3765.  
  3766.    Link State Acknowledgment packets are sent back out the 
  3767.    interface over which the advertisement was received.  The 
  3768.    packet can be sent immediately to the sending neighbor, or it 
  3769.    can be delayed and sent when an interval timer expires. 
  3770.  
  3771.    -  Sending delayed acknowledgments facilitates the formatting 
  3772.       of multiple acknowledgments into a single packet.  This 
  3773.       enables a single packet to send acknowledgments to several 
  3774.       neighbors at once by using a multicast switch ID in the 
  3775.       destination field of the network layer addressing 
  3776.       information (see below).  Delaying acknowledgments also 
  3777.       randomizes the acknowledgment packets sent by the multiple 
  3778.       switches attached to a multi-access network link.  
  3779.  
  3780.       Note that the interval used to time delayed acknowledgments 
  3781.       must be short (less than RxmtInterval) or needless 
  3782.       retransmissions will ensue.
  3783.  
  3784.       Delayed acknowledgments are sent to all adjacent switches 
  3785.       associated with the interface.  If the interface state is 
  3786.  
  3787.  
  3788. L. Kane, et. al.                                           [Page 65]
  3789. I/D                 VLS Protocol Specification            May 1997
  3790.  
  3791.  
  3792.       Point-to-Point, DS, or Backup, the destination field of the 
  3793.       network layer addressing information is set to the multicast 
  3794.       switch ID AllSPFSwitches.  If the interface state is DS Other, 
  3795.       the destination field is set to the multicast switch ID 
  3796.       AllDSwitches. 
  3797.  
  3798.    -  Immediate acknowledgments are sent directly to a specific 
  3799.       neighbor in response to the receipt of duplicate link state 
  3800.       advertisements.  These acknowledgments are sent immediately 
  3801.       when the duplicate is received.
  3802.  
  3803.    The method used to send a Link State Acknowledgment packet -- 
  3804.    either delayed or immediate -- depends on the circumstances 
  3805.    surrounding the receipt of the advertisement, as shown in 
  3806.    Table 6.  Note that switches with an interface state of Backup 
  3807.    send acknowledgments differently than other switches because 
  3808.    they play a slightly different role in the distribution 
  3809.    process (see Section 11.2.3). 
  3810.  
  3811.  
  3812.  
  3813.                                   Acknowledgment type by state
  3814.     Circumstance                Backup                 All others
  3815.  
  3816.     Advertisement was           None                   None 
  3817.     forwarded back out
  3818.     receiving interface
  3819.  
  3820.     Advertisement more          Delayed if advert      Delayed
  3821.     recent than database        received from DS,
  3822.     copy, but was not           else do nothing
  3823.     forwarded back out
  3824.     receiving interface
  3825.  
  3826.     Advertisement was a         Delayed if advert      None   
  3827.     duplicate treated           received from DS,
  3828.     as an implied acknow-       else do nothing
  3829.     ledgment (step 4a of
  3830.     Section 11.2.2)
  3831.  
  3832.     Advertisement was a         Immediate              Immediate 
  3833.     duplicate not treated
  3834.     as an implied acknow-
  3835.     ledgment
  3836.  
  3837.     Advertisement age           Immediate              Immediate 
  3838.     equal to MaxAge and
  3839.     no current instance
  3840.     found in database 
  3841.  
  3842.                 Table 6: Sending Link State Acknowledgments
  3843.  
  3844.   
  3845.  
  3846. L. Kane, et. al.                                           [Page 66]
  3847. I/D                 VLS Protocol Specification            May 1997
  3848.  
  3849.  
  3850. Receiving an acknowledgment
  3851.  
  3852.    When the a Link State Acknowledgment packet is received, it is 
  3853.    first subjected to a number of consistency checks.  In 
  3854.    particular, the packet is associated with a specific neighbor.  
  3855.    If the state of that neighbor is less than Exchange, the entire 
  3856.    Link State Acknowledgment packet is discarded.
  3857.  
  3858.    Each acknowledgment contained in the packet is processed as 
  3859.    follows:
  3860.  
  3861.    -  If the advertisement being acknowledged has an instance in 
  3862.       the link state retransmission list for the sending neighbor, 
  3863.       do the following:
  3864.  
  3865.       -  If the acknowledgment is for the same instance as that 
  3866.          specified in the list (as determined by the procedure 
  3867.          described in Section 10.1.1), remove the instance from the 
  3868.          retransmission list.
  3869.  
  3870.       -  Otherwise, log the acknowledgment as questionable.
  3871.  
  3872.  
  3873. 11.3  Aging the Link State Database
  3874.  
  3875.    Each link state advertisement has an age field, containing the 
  3876.    advertisements age, expressed in seconds.  When the 
  3877.    advertisement is copied into a Link State Update packet for 
  3878.    forwarding out a particular interface, the age is incremented 
  3879.    by InfTransDelay seconds to account for the transmission time 
  3880.    over the link.  An advertisement's age is never incremented 
  3881.    past the value MaxAge. Advertisements with an age of MaxAge are 
  3882.    not used to build the routing table or calculate best paths.  
  3883.  
  3884.    If a link state advertisements age reaches MaxAge, the switch 
  3885.    flushes the advertisement from the switch fabric by doing the 
  3886.    following:
  3887.  
  3888.    -  Originate a new instance of the advertisement with the age 
  3889.       field set to MaxAge.  The distribution process will 
  3890.       eventually result in the advertisement being removed from 
  3891.       the retransmission lists of all switches in the fabric. 
  3892.  
  3893.    -  Once the advertisement is no longer contained in the link 
  3894.       state retransmission list of any neighbor and no neighbor is 
  3895.       in a state of Exchange or Loading, remove  the advertisement 
  3896.       from the local link state database.
  3897.  
  3898.  
  3899.  
  3900.  
  3901.  
  3902.  
  3903.  
  3904. L. Kane, et. al.                                           [Page 67]
  3905. I/D                 VLS Protocol Specification            May 1997
  3906.  
  3907.  
  3908. 11.3.1  Premature Aging of Advertisements
  3909.  
  3910.    A link state advertisement can be prematurely flushed from the 
  3911.    switch fabric by forcing its age to MaxAge and redistributing 
  3912.    the advertisement.  
  3913.  
  3914.    A switch that was previously the designated switch for a multi-
  3915.    access network link but has lost that status due to a failover 
  3916.    to the backup designated switch prematurely ages the network 
  3917.    link advertisements it originated for the link.
  3918.  
  3919.    Premature aging also occurs when an advertisement's sequence 
  3920.    number must wrap -- that is, when the current advertisement 
  3921.    instance has a sequence number of 0x7fffffff.  In this 
  3922.    circumstance, the advertisement is prematurely aged so that the 
  3923.    next instance of the advertisement can be originated with a 
  3924.    sequence number of 0x80000001 and be recognized as the most 
  3925.    recent instance.
  3926.  
  3927.    A switch may only prematurely age those link state 
  3928.    advertisements for which it is the advertising switch.
  3929.  
  3930.  
  3931. 12.  Calculating the Routing Table
  3932.  
  3933.    Once an adjacency has been formed and the two switches have 
  3934.    synchronized their databases, each switch in the adjacency 
  3935.    builds its routing table and calculates the best path(s) to all 
  3936.    other switches in the fabric, using itself as the root of each 
  3937.    path.  In this context, "best" path means that path with the 
  3938.    lowest total cost metric across all hops.  If there are 
  3939.    multiple paths with the same (lowest) total cost metric, they 
  3940.    are all calculated.  Best paths are stored in the area data 
  3941.    structure.
  3942.  
  3943.    Paths are calculated using the well-known Dijkstra algorithm.  
  3944.    For a detailed description of this algorithm, the reader is 
  3945.    referred to [Perlman], or any of a number of standard textbooks 
  3946.    dealing with network routing. 
  3947.  
  3948.    Note that whenever there is a change in an adjacency 
  3949.    relationship, or any change that alters the topology of the 
  3950.    switch fabric, the routing table must be rebuilt and the best 
  3951.    paths recalculated.
  3952.  
  3953.  
  3954.  
  3955.  
  3956.  
  3957.  
  3958.  
  3959.  
  3960.  
  3961.  
  3962. L. Kane, et. al.                                           [Page 68]
  3963. I/D                VLS Protocol Specification            May 1997
  3964.  
  3965.  
  3966. 13.  Protocol Packets
  3967.  
  3968.    This section describes VLS protocol packets and link state 
  3969.    advertisements.
  3970.  
  3971.  
  3972.                              Note
  3973.  
  3974.          All VLSP packets are encapsulated in a standard ISMP 
  3975.          packet, as described in Section 3.  In the current 
  3976.          section, the term "packet" refers to the payload of 
  3977.          the ISMP packet -- that is, the ISMP message body.  
  3978.          It is understood that the packet format descriptions 
  3979.          that follow are preceded by the ISMP frame header and 
  3980.          ISMP packet header, as described in Sections 3.1 and 
  3981.          3.2.
  3982.  
  3983.  
  3984.    There are five distinct VLSP packet types, as listed in Table 7.
  3985.  
  3986.  
  3987.       Type  Packet Name            Function               Section
  3988.  
  3989.        1    Hello                  Discover/maintain
  3990.                                    neighbors              13.5.1
  3991.        2    Database Description   Summarize database
  3992.                                    contents               13.5.2
  3993.        3    Link State Request     Database download      13.5.3
  3994.        4    Link State Update      Database update        13.5.4
  3995.        5    Link State Ack         Flooding acknow-
  3996.                                    ledgment               13.5.5
  3997.  
  3998.                     Table 7: VLSP Packet Types
  3999.  
  4000.  
  4001.  
  4002.    Since it is important that the link state databases remain 
  4003.    synchronized throughout the switch fabric, processing of both 
  4004.    incoming and outgoing routing protocol packets should take 
  4005.    priority over ordinary data packets.  Section 13.1 discusses 
  4006.    packet processing.
  4007.  
  4008.    All VLSP packets begin with network layer addressing 
  4009.    information, described in Section 13.2, followed by a standard 
  4010.    header, described in Section 13.3.
  4011.  
  4012.    With the exception of Hello packets, all VLSP packets deal with 
  4013.    lists of link state advertisements.  The format of a link state 
  4014.    advertisement is described in Section 14.
  4015.  
  4016.  
  4017.  
  4018.  
  4019.  
  4020. L. Kane, et. al.                                           [Page 69]
  4021. I/D               VLS Protocol Specification            May 1997
  4022.  
  4023.  
  4024. 13.1  Packet Processing
  4025.  
  4026.    Note that with the exception of Hello packets, VLSP packets are 
  4027.    sent only between adjacent neighbors.  Therefore, all packets 
  4028.    travel a single hop.
  4029.  
  4030.    VLSP does not support fragmentation and reassembly of packets.  
  4031.    Therefore, packets containing lists of link state 
  4032.    advertisements or advertisement headers must be formatted such 
  4033.    that they contain only as many advertisements or headers as 
  4034.    will fit within the size constraints of a standard ethernet 
  4035.    frame.
  4036.  
  4037.    When a protocol packet is received by a switch, it must first 
  4038.    pass the following criteria before being accepted for further 
  4039.    processing:
  4040.  
  4041.    -  The checksum and protocol version number must be correct.
  4042.  
  4043.    -  The destination switch ID (as found in the network layer 
  4044.       address information) must be the switch ID of the receiving 
  4045.       switch, or one of the multicast switch IDs AllSPFSwitches or 
  4046.       AllDSwitches.
  4047.  
  4048.       If the destination switch ID is the multicast switch ID 
  4049.       AllDSwitches, the state of the receiving interface must be 
  4050.       Point-to-Point, DS, or Backup.
  4051.  
  4052.    -  The source switch ID (as found in the network layer address 
  4053.       information) must not be that of the receiving switch.  
  4054.       (That is, locally originated packets should be discarded.)
  4055.  
  4056.    At this point, if the packet is a Hello packet, it is accepted 
  4057.    for further processing. 
  4058.  
  4059.    Since all other packet types are only sent between adjacent 
  4060.    neighbors, the packet must have been sent by one of the 
  4061.    switch's active neighbors.  If the source switch ID matches the 
  4062.    switch ID of one of the receiving switchs active neighbors (as 
  4063.    stored in the interface data structure associated with the 
  4064.    inport interface), the packet is accepted for further 
  4065.    processing.  Otherwise, the packet is discarded.
  4066.  
  4067.  
  4068. 13.2  Network Layer Address Information
  4069.  
  4070.    As mentioned in Section 4.2.1, portions of the VLS protocol (as 
  4071.    derived from OSPF) are dependent on certain network layer 
  4072.    addresses -- in particular, the AllSPFSwitches and AllDSwitches 
  4073.    multicast addresses that drive the distribution of link state 
  4074.    advertisements throughout the switch fabric.  In order to 
  4075.    facilitate the implementation of the protocol at the physical 
  4076.  
  4077.  
  4078. L. Kane, et. al.                                           [Page 70]
  4079. I/D               VLS Protocol Specification            May 1997
  4080.  
  4081.  
  4082.    MAC layer, network layer address information is encapsulated in 
  4083.    the VSLP packets.  This information immediately follows the 
  4084.    ISMP frame and packet header and immediately precedes the VLSP 
  4085.    packet header, as shown below:
  4086.  
  4087.  
  4088.     0                   1                   2                   3
  4089.     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
  4090.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4091.    |                                                               |
  4092.    :                  frame header / ISMP header                   :
  4093.    |                                                               |
  4094.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4095. 00 |                                                               |
  4096.    :                       Unused (16 octets)                      :
  4097.    |                                                               |
  4098.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4099. 16 |                                                               |
  4100.    +                     Destination switch ID                     +
  4101. 20 |                                                               |
  4102.    +                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4103. 24 |                               |                               |
  4104.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
  4105. 28 |                                                               |
  4106.    +                       Source switch ID                        +
  4107. 32 |                                                               |
  4108.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4109. 36 |                                                               |
  4110.    :                          VLSP header                          :
  4111.    |                                                               |
  4112.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4113.  
  4114.  
  4115.    Destination switch ID
  4116.  
  4117.       This 10-octet field contains the switch ID of the packet 
  4118.       destination.  The value here is set as follows:
  4119.  
  4120.       -  Hello packets are addressed to the multicast switch ID 
  4121.          AllSPFSwitches.
  4122.  
  4123.       -  The designated switch and the backup designated switch 
  4124.          address initial Link State Update packets and Link State 
  4125.          Acknowledgment packets to the multicast switch ID 
  4126.          AllSPFSwitches.
  4127.  
  4128.       -  All other switches address initial Link State Update 
  4129.          packets and Link State Acknowledgment packets to the 
  4130.          multicast switch ID AllDSwitches.
  4131.  
  4132.       -  Retransmissions of Link State Update packets are always 
  4133.          addressed directly to the nonresponding switch.
  4134.  
  4135.  
  4136. L. Kane, et. al.                                           [Page 71]
  4137. I/D                 VLS Protocol Specification            May 1997
  4138.  
  4139.  
  4140.       -  Database Description packets and Link State Request are 
  4141.          always addressed directly to the other switch 
  4142.          participating in the database exchange process.
  4143.  
  4144.    Source switch ID
  4145.  
  4146.       This 10-octet field contains the switch ID of the sending 
  4147.       switch.
  4148.  
  4149.  
  4150. 13.3  VLSP Packet Header
  4151.  
  4152.    Every VLSP packet starts with a common 30-octet header.  This 
  4153.    header, along with the data found in the network layer address 
  4154.    information, contains all the data necessary to determine 
  4155.    whether the packet should be accepted for further processing.  
  4156.    (See Section 13.1.)
  4157.  
  4158.    The format of the VLSP header is shown below.  Note that the 
  4159.    header starts at offset 36 of the ISMP message body, following 
  4160.    the network layer address information.
  4161.  
  4162.  
  4163.     0                   1                   2                   3
  4164.     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
  4165.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4166.    |                                                               |
  4167.    :                  frame header / ISMP header                   :
  4168.    |                                                               |
  4169.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4170. 00 |                                                               |
  4171.    :               Network layer address information               :
  4172.    |                                                               |
  4173.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4174. 36 |   Version #   |     Type      |         Packet length         |
  4175.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4176. 40 |                                                               |
  4177.    +                       Source switch ID                        +
  4178. 44 |                                                               |
  4179.    +                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4180. 48 |                               |         Area ID . . .         |
  4181.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4182. 52 |         Area ID . . .         |           Checksum            |
  4183.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4184. 56 |            Autype             |                               |
  4185.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+        Authentication         +
  4186. 60 |                                                               |
  4187.  
  4188.    +                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4189. 64 |                               |
  4190.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4191.  
  4192.  
  4193.  
  4194.  
  4195. L. Kane, et. al.                                           [Page 72]
  4196. I/D                 VLS Protocol Specification            May 1997
  4197.  
  4198.  
  4199.    Version #
  4200.  
  4201.       This 1-octet field contains the version number of the VLS 
  4202.       protocol to which this packet adheres.  This document 
  4203.       describes VLSP Version 1.
  4204.  
  4205.    Type
  4206.  
  4207.       This 1-octet field contains the packet type.  Possible 
  4208.       values are as follows:
  4209.  
  4210.          1   Hello
  4211.          2   Database Description
  4212.          3   Link State Request
  4213.          4   Link State Update
  4214.          5   Link State Acknowledgment
  4215.  
  4216.    Packet length
  4217.  
  4218.       This 2-octet field contains the length of the protocol 
  4219.       packet, in bytes, calculated from the start of the VLSP 
  4220.       header, at offset 20 of the ISMP message body.  If the 
  4221.       packet length is not an integral number of 16-bit words, the 
  4222.       packet is padded with an octet of zero (see the description 
  4223.       of the checksum field, below).
  4224.  
  4225.    Switch ID
  4226.  
  4227.       This 10-octet field contains the switch ID of the sending 
  4228.       switch.
  4229.  
  4230.    Area ID
  4231.  
  4232.       This 4-octet field contains the area identifier.  Since VLSP 
  4233.       does not support multiple areas, the value here is always 
  4234.       zero.
  4235.  
  4236.    Checksum
  4237.  
  4238.       This 2-octet field contains the packet checksum value.  The 
  4239.       checksum is calculated as the 16-bit one's complement of the 
  4240.       one's complement sum of all the 16-bit words in the packet, 
  4241.       beginning with the VLSP header, excluding the authentication 
  4242.       field.  If the packet length is not an integral number of 
  4243.       16-bit words, the packet is padded with an octet of zero 
  4244.       before calculating the checksum.
  4245.  
  4246.    AuType
  4247.  
  4248.       This 2-octet field identifies the authentication scheme to 
  4249.       be used for the packet.  Since authentication is not 
  4250.       supported by this version of VLSP, this field contains zero.
  4251.  
  4252.  
  4253. L. Kane, et. al.                                           [Page 73]
  4254. I/D               VLS Protocol Specification            May 1997
  4255.  
  4256.  
  4257.    Authentication
  4258.  
  4259.       This 8-octet field is reserved for use by the authentication 
  4260.       scheme.  Since authentication is not supported by this 
  4261.       version of VLSP, this field contains zeroes.
  4262.  
  4263.  
  4264. 13.4  Options Field
  4265.  
  4266.    Hello packets and Database Description packets, as well as link 
  4267.    state advertisements, contain a 1-octet options field.  Using 
  4268.    this field, a switch can communicate its optional capabilities 
  4269.    to other VLSP switches.  The receiving switch can then choose 
  4270.    whether or not to support those optional capabilities.  Thus, 
  4271.    switches of differing capabilities potentially can be mixed 
  4272.    within a single VLSP routing domain.
  4273.  
  4274.    Two optional capabilities are currently defined in the options 
  4275.    field:  routing based on Type of Service (TOS) and support for 
  4276.    external routing beyond the local switch fabric.  These two 
  4277.    capabilities are specified in the options field as shown below.
  4278.  
  4279.  
  4280.                        +-+-+-+-+-+-+-+-+
  4281.                        |0|0|0|0|0|0|E|T|
  4282.                        +-+-+-+-+-+-+-+-+
  4283.  
  4284.                        The options field
  4285.  
  4286.  
  4287.    T-bit
  4288.  
  4289.       The T-bit specifies the switchs Type of Service (TOS) 
  4290.       capability.  If the T-bit is set, the switch supports 
  4291.       routing based on nonzero types of service. 
  4292.  
  4293.    E-bit
  4294.  
  4295.       The E-bit specifies the switchs external routing 
  4296.       capability.  If the E-bit is set, the switch supports 
  4297.       external routing. 
  4298.  
  4299.  
  4300.                                Note
  4301.  
  4302.             The current version of VLSP supports 
  4303.             neither of these capabilities.  Therefore, 
  4304.             both the T-bit and the E-bit are clear and 
  4305.             the options field contains a value of zero.
  4306.  
  4307.  
  4308.  
  4309.  
  4310.  
  4311. L. Kane, et. al.                                           [Page 74]
  4312. I/D                 VLS Protocol Specification            May 1997
  4313.  
  4314.  
  4315. 13.5  Packet Formats
  4316.  
  4317.    This section contains detailed descriptions of the five VLS 
  4318.    protocol packets.
  4319.  
  4320.  
  4321. 13.5.1  Hello Packets
  4322.  
  4323.    Hello packets are sent periodically over all switch interfaces 
  4324.    in order to discover and maintain neighbor relationships.  
  4325.    Since all switches connected to a common network link must 
  4326.    agree on certain interface parameters, these parameters are 
  4327.    included in each Hello packet.  A switch receiving a Hello 
  4328.    packet that contains parameters inconsistent with its own view 
  4329.    of the interface will not establish a neighbor relationship 
  4330.    with the sending switch. 
  4331.  
  4332.    The format of a Hello packet is shown below.
  4333.  
  4334.  
  4335.     0                   1                   2                   3
  4336.     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
  4337.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4338. 00 |                                                               |
  4339.    :              Network layer addressing / VLSP header           :
  4340.    |                                                               |
  4341.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4342. 66 |                      (unused - must be 0)                     |
  4343.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4344. 70 |         HelloInt              |    Options    |   Priority    |
  4345.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4346. 74 |                            DeadInt                            |
  4347.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4348. 78 |                                                               |
  4349.    +                      Designated switch ID                     +
  4350. 82 |                                                               |
  4351.    +                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4352. 86 |                               |                               |
  4353.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
  4354. 90 |                                                               |
  4355.    +                   Backup designated switch ID                 +
  4356. 94 |                                                               |
  4357.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4358. 98 |                                                               |
  4359.    +                                                               +
  4360.    :                          Neighbor list                        :
  4361.    +                                                               +
  4362.    |                                                               |
  4363.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4364.  
  4365.  
  4366.  
  4367.  
  4368.  
  4369. L. Kane, et. al.                                           [Page 75]
  4370. I/D                 VLS Protocol Specification            May 1997
  4371.  
  4372.  
  4373.    Network layer addressing / VLSP header
  4374.  
  4375.       This 66-octet field contains the network layer addressing 
  4376.       information and the standard VLS protocol packet header.  
  4377.       The packet header type field contains a value of 1.
  4378.  
  4379.    HelloInt
  4380.  
  4381.       This 2-octet field contains the interval, in seconds, at 
  4382.       which this switch sends Hello packets.
  4383.  
  4384.    Options
  4385.  
  4386.       This 1-octet field contains the optional capabilities 
  4387.       supported by the switch, as described in Section 13.4.
  4388.  
  4389.    Priority
  4390.  
  4391.       This 1-octet field contains the switch priority used in 
  4392.       selecting the designated switch and backup designated switch 
  4393.       (see Section 9.3.1).  If the value here is zero, the switch 
  4394.       is ineligible to become the designated switch or the backup 
  4395.       designated switch.
  4396.  
  4397.    DeadInt
  4398.  
  4399.       This 4-octet field contains the length of time, in seconds, 
  4400.       that neighboring switches will wait before declaring the 
  4401.       interface down once they stop receiving Hello packets over 
  4402.       the interface.  The value here is equal to the value of 
  4403.       SwitchDeadInterval, as found in the interface data 
  4404.       structure.
  4405.  
  4406.    Designated switch
  4407.  
  4408.       This 10-octet field contains the switch ID of the designated 
  4409.       switch for this network link, as currently understood by the 
  4410.       sending switch.  This value is set to zero if the designated 
  4411.       switch selection process has not yet begun.
  4412.  
  4413.    Backup designated switch
  4414.  
  4415.       This 10-octet field contains the switch ID of the backup 
  4416.       designated switch for this network link, as currently 
  4417.       understood by the sending switch.  This value is set to zero 
  4418.       if the backup designated switch selection process has not 
  4419.       yet begun.
  4420.  
  4421.    Neighbor list
  4422.  
  4423.       This variable-length field contains a list of switch IDs of 
  4424.       each switch from which the sending switch has received a 
  4425.  
  4426.  
  4427. L. Kane, et. al.                                           [Page 76]
  4428. I/D                 VLS Protocol Specification            May 1997
  4429.  
  4430.  
  4431.       valid Hello packet within the last SwitchDeadInterval 
  4432.       seconds.
  4433.  
  4434.  
  4435. 13.5.2  Database Description Packets
  4436.  
  4437.    Database Description packets are exchanged while an adjacency 
  4438.    is being formed between two neighboring switches and are used 
  4439.    to describe the contents of the topological database.  For a 
  4440.    complete description of the database exchange process, see 
  4441.    Section 10.2.
  4442.  
  4443.    The format of a Database Description packet is shown below.
  4444.  
  4445.  
  4446.     0                   1                   2                   3
  4447.     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
  4448.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4449. 00 |                                                               |
  4450.    :              Network layer addressing / VLSP header           :
  4451.    |                                                               |
  4452.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4453. 66 |     (unused - must be 0)      |    Options    |     Flags     |
  4454.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4455. 70 |                        Sequence number                        |
  4456.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4457. 74 |                                                               |
  4458.    +                                                               +
  4459.    :                 Link state advertisement headers              :
  4460.    +                                                               +
  4461.    |                                                               |
  4462.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4463.  
  4464.  
  4465.    Network layer addressing / VLSP header
  4466.  
  4467.       This 66-octet field contains the network layer addressing 
  4468.       information and the standard VLS protocol packet header.  
  4469.       The packet header type field contains a value of 2.
  4470.  
  4471.    Options
  4472.  
  4473.       This 1-octet field contains the optional capabilities 
  4474.       supported by the switch, as described in Section Section 
  4475.       13.4.
  4476.  
  4477.    Flags
  4478.  
  4479.       This 1-octet field contains a set of bit flags that are used 
  4480.       to coordinate the database exchange process.  The format of 
  4481.       this octet is as follows:
  4482.  
  4483.  
  4484.  
  4485. L. Kane, et. al.                                           [Page 77]
  4486. I/D                 VLS Protocol Specification            May 1997
  4487.  
  4488.  
  4489.                        +-+-+-+-+-+-+-+-+
  4490.                        |0|0|0|0|0|I|M|MS
  4491.                        +-+-+-+-+-+-+-+-+
  4492.  
  4493.       I-bit (Init)
  4494.  
  4495.          The I-bit is used to signal the start of the exchange.  It 
  4496.          is set while the two switches negotiate the master/slave 
  4497.          relationship and the starting sequence number.
  4498.  
  4499.       M-bit (More)
  4500.  
  4501.          The M-bit is set to indicate that more Database 
  4502.          Description packets to follow. 
  4503.  
  4504.       MS-bit (Master/Slave)
  4505.  
  4506.          The MS-bit is used to indicate which switch is the master 
  4507.          of the exchange.  If the bit is set, the sending switch is 
  4508.          the master during the database exchange process.  If the 
  4509.          bit is clear, the switch is the slave.
  4510.  
  4511.    Sequence number
  4512.  
  4513.       This 4-octet field is used to sequence the Database 
  4514.       Description packets during the database exchange process.  
  4515.       The two switches involved in the exchange process agree on 
  4516.       the initial value of the sequence number during the 
  4517.       master/slave negotiation.  The number is then incremented 
  4518.       for each Database Description packet in the exchange.
  4519.  
  4520.       To acknowledge each Database Description packet sent by the 
  4521.       master, the slave sends a Database Description packet that 
  4522.       echoes the sequence number of the packet being acknowledged.
  4523.  
  4524.    Link state advertisement headers
  4525.  
  4526.       This variable-length field contains a list of link state 
  4527.       headers that describe a portion of the masters topological 
  4528.       database.  Each header uniquely identifies a link state 
  4529.       advertisement and its current instance.  (See Section 14.1 
  4530.       for a detailed description of a link state advertisement 
  4531.       header.)  The number of headers included in the list is 
  4532.       calculated implicitly from the length of the packet, as 
  4533.       stored in the VLSP packet header (see Section 13.3).
  4534.  
  4535.  
  4536.  
  4537.  
  4538.  
  4539.  
  4540.  
  4541.  
  4542.  
  4543. L. Kane, et. al.                                           [Page 78]
  4544. I/D               VLS Protocol Specification            May 1997
  4545.  
  4546.  
  4547. 13.5.3  Link State Request Packets
  4548.  
  4549.    Link State Request packets are used to request those pieces of 
  4550.    the neighbor's database that the sending switch has discovered 
  4551.    (during the database exchange process) are more up-to-date than 
  4552.    instances in its own database.  Link State Request packets are 
  4553.    sent as the last step in bringing up an adjacency.  (See 
  4554.    Section 10.3.)
  4555.  
  4556.    The format of a Link State Request packet is shown below.
  4557.  
  4558.  
  4559.     0                   1                   2                   3
  4560.     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
  4561.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4562. 00 |                                                               |
  4563.    :              Network layer addressing / VLSP header           :
  4564.    |                                                               |
  4565.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4566. 66 |                        Link state type                        |
  4567.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4568. 70 |                                                               |
  4569.    +                         Link state ID                         +
  4570. 74 |                                                               |
  4571.    +                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4572. 78 |                               |                               |
  4573.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
  4574. 82 |                                                               |
  4575.    +                      Advertising switch ID                    +
  4576. 86 |                                                               |
  4577.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4578. 90 |                                                               |
  4579.    :                            . . .                              :
  4580.    |                                                               |
  4581.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4582.  
  4583.  
  4584.    Network layer addressing / VLSP header
  4585.  
  4586.       This 66-octet field contains the network layer addressing 
  4587.       information and the standard VLS protocol packet header.  
  4588.       The packet header type field contains a value of 3.
  4589.  
  4590.    Link state type
  4591.  
  4592.       This 4-octet field contains the link state type of the 
  4593.       requested link state advertisement, as stored in the 
  4594.       advertisement header.
  4595.  
  4596.  
  4597.  
  4598.  
  4599.  
  4600.  
  4601. L. Kane, et. al.                                           [Page 79]
  4602. I/D               VLS Protocol Specification            May 1997
  4603.  
  4604.  
  4605.    Link state ID
  4606.  
  4607.       This 10-octet field contains the link state ID of the 
  4608.       requested link state advertisement, as stored in the 
  4609.       advertisement header.
  4610.  
  4611.    Advertising switch
  4612.  
  4613.       This 10-octet field contains the switch ID of advertising 
  4614.       switch for the requested link state advertisement, as stored 
  4615.       in the advertisement header.
  4616.  
  4617.    Note that the last three fields uniquely identify the 
  4618.    advertisement, but not its instance.  The receiving switch will 
  4619.    respond with its most recent instance of the specified 
  4620.    advertisement.
  4621.  
  4622.    Multiple link state advertisements can be requested in a single 
  4623.    Link State Request packet by repeating the link state type, ID, 
  4624.    and advertising switch for each requested advertisement.  The 
  4625.    number of advertisements requested is calculated implicitly 
  4626.    from the length of the packet, as stored in the VLSP packet 
  4627.    header.
  4628.  
  4629.  
  4630. 13.5.4  Link State Update Packets
  4631.  
  4632.    Link State Update packets are used to respond to a Link State 
  4633.    Request packet or to advertise a new instance of one or more 
  4634.    link state advertisements.  Link State Update packets are 
  4635.    acknowledged with Link State Acknowledgment packets.  For more 
  4636.    information on the use of Link State Update packets, see 
  4637.    Section 10 and Section 11.
  4638.  
  4639.    The format of a Link State Update packet is shown below.
  4640.  
  4641.  
  4642.     0                   1                   2                   3
  4643.     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
  4644.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4645. 00 |                                                               |
  4646.    :              Network layer addressing / VLSP header           :
  4647.    |                                                               |
  4648.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4649. 66 |                        # advertisements                       |
  4650.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4651. 70 |                                                               |
  4652.    +                                                               +
  4653.    :                    Link state advertisements                  :
  4654.    +                                                               +
  4655.    |                                                               |
  4656.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4657.  
  4658.  
  4659. L. Kane, et. al.                                           [Page 80]
  4660. I/D                 VLS Protocol Specification            May 1997
  4661.  
  4662.  
  4663.    Network layer addressing / VLSP header
  4664.  
  4665.       This 66-octet field contains the network layer addressing 
  4666.       information and the standard VLS protocol packet header.  
  4667.       The packet header type field contains a value of 4.
  4668.  
  4669.    # advertisements
  4670.  
  4671.       This 4-octet field contains the number of link state 
  4672.       advertisements included in the packet.
  4673.  
  4674.    Link state advertisements
  4675.  
  4676.       This variable-length field contains a list of link state 
  4677.       advertisements.  For a detailed description of the different 
  4678.       types of link state advertisements, see Section 14.
  4679.  
  4680.  
  4681. 13.5.5  Link State Acknowledgment Packets
  4682.  
  4683.    Link State Acknowledgment Packets are used to explicitly 
  4684.    acknowledge one or more Link State Update packets, thereby 
  4685.    making the distribution of link state advertisements reliable.  
  4686.    (See Section 11.2.6.)
  4687.  
  4688.    The format of a Link State Acknowledgment packet is shown 
  4689.    below.
  4690.  
  4691.  
  4692.     0                   1                   2                   3
  4693.     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
  4694.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4695. 00 |                                                               |
  4696.    :              Network layer addressing / VLSP header           :
  4697.    |                                                               |
  4698.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4699. 66 |                                                               |
  4700.    +                                                               +
  4701.    :                 Link state advertisement headers              :
  4702.    +                                                               +
  4703.    |                                                               |
  4704.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4705.  
  4706.  
  4707.    Network layer addressing / VLSP header
  4708.  
  4709.       This 66-octet field contains the network layer addressing 
  4710.       information and the standard VLS protocol packet header.  
  4711.       The packet header type field contains a value of 5.
  4712.  
  4713.  
  4714.  
  4715.  
  4716.  
  4717. L. Kane, et. al.                                           [Page 81]
  4718. I/D                 VLS Protocol Specification            May 1997
  4719.  
  4720.  
  4721.    Link state advertisement headers
  4722.  
  4723.       This variable-length field contains a list of link state 
  4724.       headers that are being acknowledged by this packet.  Each 
  4725.       header uniquely identifies a link state advertisement and 
  4726.       its current instance.  (See Section 14.1 for a detailed 
  4727.       description of a link state advertisement header.)  The 
  4728.       number of headers included in the list is calculated 
  4729.       implicitly from the length of the packet, as stored in the 
  4730.       VLSP packet header (see Section 13.3).
  4731.  
  4732.  
  4733. 14.  Link State Advertisement Formats
  4734.  
  4735.    Link state advertisements are used to describe various pieces 
  4736.    of the routing topology within the switch fabric.  Each switch 
  4737.    in the fabric maintains a complete set of all link state 
  4738.    advertisements generated throughout the fabric.  (Section 11.1 
  4739.    describes the circumstances under which a link state 
  4740.    advertisement is originated.  Section 11.2 describes how 
  4741.    advertisements are distributed throughout the switch fabric.)  
  4742.    This collection of advertisements, known as the link state (or 
  4743.    topological) database, is used to build the switchs routing 
  4744.    table and calculate a set of best paths to all other switches 
  4745.    in the fabric.  
  4746.  
  4747.    There are two types of link state advertisement, as listed in 
  4748.    Table 8.
  4749.  
  4750.  
  4751.       Type   Name              Function                    Section
  4752.  
  4753.       1      Switch link       Lists all network links
  4754.              advertisement     attached to a switch        14.2
  4755.  
  4756.       2      Network link      Lists all adjacencies on
  4757.              advertisement     a network link              14.3
  4758.  
  4759.                Table 8: Link State Advertisement Types
  4760.  
  4761.  
  4762.    Each link state advertisement begins with a standard header, 
  4763.    described in Section 14.1. 
  4764.  
  4765.  
  4766. 14.1  Link State Advertisement Headers
  4767.  
  4768.    All link state advertisements begin with a common 32-octet 
  4769.    header.  This header contains information that uniquely 
  4770.    identifies the advertisement -- its type, link state ID, and 
  4771.    the switch ID of its advertising switch.  Also, since multiple 
  4772.    instances of a link state advertisement can exist concurrently 
  4773.  
  4774.  
  4775. L. Kane, et. al.                                           [Page 82]
  4776. I/D                 VLS Protocol Specification            May 1997
  4777.  
  4778.  
  4779.    in the switch fabric, the header contains information that 
  4780.    permits a switch to determine which instance is the most recent 
  4781.    -- the age, sequence number and checksum.
  4782.  
  4783.    The format of the link state advertisement header is shown 
  4784.    below.
  4785.  
  4786.  
  4787.     0                   1                   2                   3
  4788.     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
  4789.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4790. 00 |              Age              |    Options    |    LS Type    |
  4791.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4792. 04 |                                                               |
  4793.    +                         Link state ID                         +
  4794. 08 |                                                               |
  4795.    +                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4796. 12 |                               |                               |
  4797.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
  4798. 16 |                                                               |
  4799.    +                      Advertising switch ID                    +
  4800. 20 |                                                               |
  4801.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4802. 24 |                         Sequence number                       |
  4803.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4804. 28 |           Checksum            |             Length            |
  4805.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4806.  
  4807.  
  4808.    Age
  4809.  
  4810.       This 2-octet field contains the time, in seconds, since this 
  4811.       instance of the link state advertisement was originated.
  4812.  
  4813.    Options
  4814.  
  4815.       This 1-octet field contains the optional capabilities 
  4816.       supported by the advertising switch, as described in Section 
  4817.       13.4.
  4818.  
  4819.    LS type
  4820.  
  4821.       This 1-octet field contains the type of the link state 
  4822.       advertisement.  Possible values are:
  4823.  
  4824.          1   Switch link advertisement
  4825.          2   Network link advertisement
  4826.  
  4827.  
  4828.  
  4829.  
  4830.  
  4831.  
  4832.  
  4833. L. Kane, et. al.                                           [Page 83]
  4834. I/D               VLS Protocol Specification            May 1997
  4835.  
  4836.  
  4837.    Link state ID
  4838.  
  4839.       This 10-octet field identifies the switch that originates 
  4840.       advertisements for the link.  The content of this field 
  4841.       depends on the advertisement's type.
  4842.  
  4843.       -  For a switch link advertisement, this field contains the 
  4844.          switch ID of the originating switch
  4845.  
  4846.       -  For a network link advertisement, this field contains the 
  4847.          switch ID of the designated switch for the link
  4848.  
  4849.  
  4850.                                   Note
  4851.  
  4852.             In VLSP, the link state ID of an advertisement is 
  4853.             always the same as the advertising switch.  This level 
  4854.             of redundancy results from the fact that OSPF uses 
  4855.             additional types of link state advertisements for 
  4856.             which the originating switch is not the advertising 
  4857.             switch.
  4858.  
  4859.  
  4860.    Advertising switch
  4861.  
  4862.       This 10-octet field contains the switch ID of the switch 
  4863.       that originated the link state advertisement.
  4864.  
  4865.    Sequence number
  4866.  
  4867.       This 4-octet field is used to sequence the instances of a 
  4868.       particular link state advertisement.  The number is 
  4869.       incremented for each new instance.
  4870.  
  4871.    Checksum
  4872.  
  4873.       This 2-octet field contains the checksum of the complete 
  4874.       contents of the link state advertisement, excluding the age 
  4875.       field.  The checksum used is commonly referred to as the 
  4876.       Fletcher checksum and is documented in [RFC905].  Note that 
  4877.       since this checksum is calculated for each separate 
  4878.       advertisement, a protocol packet containing lists of 
  4879.       advertisements or advertisement headers will contain 
  4880.       multiple checksum values.
  4881.  
  4882.    Length
  4883.  
  4884.       This 2-octet field contains the total length, in octets, of 
  4885.       the link state advertisement, including the header.
  4886.  
  4887.  
  4888.  
  4889.   
  4890.  
  4891. L. Kane, et. al.                                           [Page 84]
  4892. I/D                 VLS Protocol Specification            May 1997
  4893.  
  4894.  
  4895. 14.2  Switch Link Advertisements
  4896.  
  4897.    A switch link advertisement is used to describe all functioning 
  4898.    network links of a switch, including the cost of using each 
  4899.    link.  
  4900.  
  4901.    Each functioning switch in the fabric originates one, and only 
  4902.    one, switch link advertisement -- all of the switch's links 
  4903.    must be described in a single advertisement.  A switch 
  4904.    originates its first switch link advertisement (containing no 
  4905.    links) when it first becomes functional.  It then originates a 
  4906.    new instance of the advertisement each time any of its neighbor 
  4907.    states changes such that the contents of the advertisement 
  4908.    changes. 
  4909.  
  4910.    The format of a switch link advertisement is shown below.
  4911.  
  4912.  
  4913.     0                   1                   2                   3
  4914.     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
  4915.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4916. 00 |                                                               |
  4917.    :                       Link state header                       :
  4918.    |                                                               |
  4919.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4920. 32 |      (unused - must be 0)     |            # links            |
  4921.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4922. 36 |                                                               |
  4923.    +                            Link ID                            +
  4924. 40 |                                                               |
  4925.    +                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4926. 44 |                               |                               |
  4927.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               +
  4928. 48 |                                                               |
  4929.    +                           Link data                           +
  4930. 52 |                                                               |
  4931.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4932. 56 |   Link type   |     # TOS     |         TOS 0 metric          |
  4933.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4934. 60 |                                                               |
  4935.    :                            . . .                              :
  4936.    |                                                               |
  4937.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  4938.  
  4939.  
  4940.    Link state header
  4941.  
  4942.       This 32-octet field contains the standard link state 
  4943.       advertisement header.  The type field contains a 1, and the 
  4944.       link state ID field contains the switch ID of the 
  4945.       advertising switch.
  4946.  
  4947.  
  4948.  
  4949. L. Kane, et. al.                                           [Page 85]
  4950. I/D                 VLS Protocol Specification            May 1997
  4951.  
  4952.  
  4953.    # links
  4954.  
  4955.       This 2-octet field contains the number of links described by 
  4956.       this advertisement.  This value must be equal to the total 
  4957.       number of functioning network links attached to the switch.
  4958.  
  4959.    Link ID
  4960.  
  4961.       This 10-octet field identifies the other switch that 
  4962.       originates link state advertisements for the link, providing 
  4963.       a key for accessing other link state advertisements for the 
  4964.       link.  The value here is based on the link type, as follow:  
  4965.  
  4966.       -  For point-to-point links, this field contains the switch 
  4967.          ID of the neighbor switch connected to the other end of 
  4968.          the link.
  4969.  
  4970.       -  For multi-access links, this field contains the switch ID 
  4971.          of the designated switch for the link.
  4972.  
  4973.       -  For stub links, this field does not apply.
  4974.  
  4975.    Link data
  4976.  
  4977.       This 10-octet field contains additional data necessary to 
  4978.       build the routing table and calculate the set of best paths.  
  4979.       Typically, this field contains the interface ID of the link.
  4980.  
  4981.    Link type
  4982.  
  4983.       This 1-octet field contains the type of link being 
  4984.       described.  Possible values are as follows: 
  4985.  
  4986.          1   Point-to-point link
  4987.          2   Multi-access link
  4988.          3   Stub link (unavailable for network traffic)
  4989.  
  4990.    # TOS
  4991.  
  4992.       This 1-octet field contains the number of nonzero type of 
  4993.       service metrics specified for the link.  Since the current 
  4994.       version of VLSP does not support routing based on nonzero 
  4995.       types of service, this field contains a value of zero.
  4996.  
  4997.    TOS 0 metric
  4998.  
  4999.       This 2-octet field contains the cost of using this link for 
  5000.       the zero TOS.  This value is expressed in the link state 
  5001.       metric and must be greater than zero.
  5002.  
  5003.    Note that the last five fields are repeated for all functioning 
  5004.    network links attached to the advertising switch.  If the 
  5005.  
  5006.  
  5007. L. Kane, et. al.                                           [Page 86]
  5008. I/D                 VLS Protocol Specification            May 1997
  5009.  
  5010.  
  5011.    interface state of attached link changes, the switch must 
  5012.    originate a new instance of the switch link advertisement.
  5013.  
  5014.  
  5015. 14.3  Network Link Advertisements
  5016.  
  5017.    A network link advertisement is originated by the designated 
  5018.    switch of each multi-access network link.  The advertisement 
  5019.    describes all switches attached to the link that are currently 
  5020.    fully adjacent to the designated switch, including the   
  5021.    designated switch itself.  
  5022.  
  5023.    Network link advertisements are not generated for point-to-
  5024.    point network links.
  5025.  
  5026.    The format of a network link advertisement is show below.
  5027.  
  5028.  
  5029.     0                   1                   2                   3
  5030.     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
  5031.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5032. 00 |                                                               |
  5033.    :                       Link state header                       :
  5034.    |                                                               |
  5035.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5036. 32 |                           (unused)                            |
  5037.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5038. 36 |                                                               |
  5039.    +                                                               +
  5040.    :                          Switch list                          :
  5041.    +                                                               +
  5042.    |                                                               |
  5043.    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  5044.  
  5045.  
  5046.    Link state header
  5047.  
  5048.       This 32-octet field contains the standard link state 
  5049.       advertisement header.  The type field contains a 2, and the 
  5050.       link state ID field contains the switch ID of the designated 
  5051.       switch.
  5052.  
  5053.    Switch list
  5054.  
  5055.       The switch IDs of all switches attached to the network link 
  5056.       that are currently fully adjacent to the designated switch.  
  5057.       The designated switch includes itself in this list. 
  5058.  
  5059.  
  5060.  
  5061.  
  5062.  
  5063.  
  5064.  
  5065. L. Kane, et. al.                                           [Page 87]
  5066. I/D                  VLS Protocol Specification            May 1997
  5067.  
  5068.  
  5069. 15.  Protocol Parameters
  5070.  
  5071.    This section contains a compendium of the parameters used in 
  5072.    the VLS protocol.
  5073.  
  5074.  
  5075. 15.1  Architectural Constants
  5076.  
  5077.    Several VLS protocol parameters have fixed architectural 
  5078.    values.  The name of each architectural constant follows, 
  5079.    together with its value and a short description of its 
  5080.    function.
  5081.  
  5082.    AllSPFSwitches
  5083.  
  5084.       The multicast switch ID to which Hello packets and certain 
  5085.       other protocol packets are addressed, as specified in the 
  5086.       destination switch ID field of the network layer address 
  5087.       information (see Section 13.2).  The value of AllSPFSwitches 
  5088.       is E0-00-00-05-00-00-00-00.
  5089.  
  5090.    AllDSwitches
  5091.  
  5092.       The multicast switch ID to which Link State Update packets 
  5093.       and Link State Acknowledgment packets are addressed, as 
  5094.       specified in the destination switch ID field of the network 
  5095.       layer address information (see Section 13.2), when they are 
  5096.       destined for the designated switch or the backup designated 
  5097.       switch of a network link.  The value of AllDSwitches is 
  5098.       E0-00-00-06-00-00-00-00.
  5099.  
  5100.    LSRefreshTime
  5101.  
  5102.       The interval at which the routing table is rebuilt and the 
  5103.       set of best paths recalculated if no other state changes 
  5104.       have forced a recalculation.  The value of LSRefreshTime is 
  5105.       set to 1800 seconds (30 minutes).
  5106.  
  5107.    MinLSInterval
  5108.  
  5109.       The minimum time between distinct originations of any 
  5110.       particular link state advertisement.  The value of 
  5111.       MinLSInterval is set to 5 seconds.
  5112.  
  5113.    MaxAge
  5114.  
  5115.       The maximum age that a link state advertisement can attain.  
  5116.       When an advertisement's age reaches MaxAge, it is 
  5117.       redistributed throughout the switch fabric.  When the 
  5118.       originating switch receives an acknowledgment for the 
  5119.       advertisement, indicating that the advertisement has been 
  5120.       removed from all neighbor Link state retransmission lists, 
  5121.  
  5122.  
  5123. L. Kane, et. al.                                           [Page 88]
  5124. I/D                 VLS Protocol Specification            May 1997
  5125.  
  5126.  
  5127.       the advertisement is removed from the originating switchs 
  5128.       database.  Advertisements having age MaxAge are not used in 
  5129.       the routing table calculation.  The value of MaxAge must be 
  5130.       greater than LSRefreshTime.  The value of MaxAge is set to 
  5131.       3600 seconds (1 hour).
  5132.  
  5133.    MaxAgeDiff
  5134.  
  5135.       The maximum time disparity in ages that can occur for a 
  5136.       single link state instance as it is distributed throughout 
  5137.       the switch fabric.  Most of this time is accounted for by 
  5138.       the time the advertisement sits on switch output queues (and 
  5139.       therefore not aging) during the distribution process. The 
  5140.       value of MaxAgeDiff is set to 900 seconds (15 minutes).  
  5141.  
  5142.    LSInfinity
  5143.  
  5144.       The link state metric value indicating that the destination 
  5145.       is unreachable.  It is defined to be a binary value of all 
  5146.       ones.
  5147.  
  5148.  
  5149. 15.2  Configurable Parameters
  5150.  
  5151.    Many of the switch interface parameters used by VLSP may be 
  5152.    made configurable if the implementer so desires.  These 
  5153.    parameters are listed below.  Sample default values are given 
  5154.    for some of the parameters.
  5155.  
  5156.    Note that some of these parameters specify properties of the 
  5157.    individual interfaces and their attached network links.  These 
  5158.    parameters must be consistent across all the switches attached 
  5159.    to that link.  
  5160.  
  5161.    Interface output cost(s)
  5162.  
  5163.       The cost of sending a packet over the interface, expressed 
  5164.       in the link state metric.  This is advertised as the link 
  5165.       cost for this interface in the switch's switch link 
  5166.       advertisement.  The interface output cost must always be 
  5167.       greater than zero.
  5168.  
  5169.    RxmtInterval
  5170.  
  5171.       The number of seconds between link state advertisement 
  5172.       retransmissions for adjacencies established on this 
  5173.       interface.  This value is also used when retransmitting 
  5174.       Database Description packets and Link State Request packets.  
  5175.       This value must be greater than the expected round-trip 
  5176.       delay between any two switches on the attached link.  
  5177.  
  5178.  
  5179.  
  5180.  
  5181. L. Kane, et. al.                                           [Page 89]
  5182. I/D                 VLS Protocol Specification            May 1997
  5183.  
  5184.  
  5185.       However, the value should be conservative or needless 
  5186.       retransmissions will result.  A typical value for a local 
  5187.       area network would be 5 seconds.
  5188.  
  5189.    InfTransDelay
  5190.  
  5191.       The estimated number of seconds it takes to transmit a Link 
  5192.       State Update packet over this interface.  Link state 
  5193.       advertisements contained in the Link State Update packet 
  5194.       must have their age incremented by this amount before 
  5195.       transmission.  This value must take into account the 
  5196.       transmission and propagation delays for the interface and 
  5197.       must be greater than zero.  A typical value for a local area 
  5198.       network would be 1 second.
  5199.  
  5200.    Switch priority
  5201.  
  5202.       An 8-bit unsigned integer.  When two switches attached to 
  5203.       the same network link contend for selection as the 
  5204.       designated switch, the switch with the highest priority 
  5205.       takes precedence.  If both switches have the same priority, 
  5206.       the switch with the highest base MAC address becomes the 
  5207.       designated switch.  A switch whose switch priority is set to 
  5208.       zero is ineligible to become the designated switch on the 
  5209.       attached link.  
  5210.  
  5211.    HelloInterval
  5212.  
  5213.       The length of time, in seconds, between the Hello packets 
  5214.       that the switch sends over the interface.  This value is 
  5215.       advertised in the switch's Hello packets.  It must be the 
  5216.       same for all switches attached to a common network link.  
  5217.       The smaller this value is set, the faster topological 
  5218.       changes will be detected.  However, a smaller interval will 
  5219.       also generate more routing traffic.  A typical value for a 
  5220.       local area network would be 10 seconds.
  5221.  
  5222.    SwitchDeadInterval
  5223.  
  5224.       The length of time, in seconds, that neighboring switches 
  5225.       will wait before declaring the interface down once they stop 
  5226.       receiving Hello packets over the interface.  This value is 
  5227.       advertised in the switch's Hello packets.  It must be the 
  5228.       same for all switches attached to a common network link and 
  5229.       should be some multiple of the HelloInterval parameter.  A 
  5230.       typical value would be 4 times HelloInterval. 
  5231.  
  5232.  
  5233.  
  5234.  
  5235.  
  5236.  
  5237.  
  5238.  
  5239. L. Kane, et. al.                                           [Page 90]
  5240. I/D                 VLS Protocol Specification            May 1997
  5241.  
  5242.  
  5243. Footnotes
  5244.  
  5245.    [1]During calculation of the routing table, a network link 
  5246.       advertisement must be located based solely on its link state 
  5247.       ID.  Note, however, that the lookup in this case is still well 
  5248.       defined, since no two network advertisements can have the same 
  5249.       link state ID.
  5250.  
  5251.    [2]It is instructive to see what happens when the designated 
  5252.       switch for a network link fails.  Call the designated switch 
  5253.       for the link S1 and the backup designated switch S2.  If 
  5254.       switch S1 fails (or its interface to the link goes down), the 
  5255.       other switches on the link will detect S1's absence within 
  5256.       switchDeadInterval seconds.  All switches may not detect this 
  5257.       condition at precisely the same time.  The switches that 
  5258.       detect S1's absence before S2 does will temporarily select S2 
  5259.       as both designated switch and backup designated switch.  When 
  5260.       S2 detects that S1 is down, it will move itself to designated 
  5261.       switch and a new backup designated switch is selected.
  5262.  
  5263.    [3]Note that it is possible for a switch to resynchronize any 
  5264.       of its fully established adjacencies by setting the neighbor 
  5265.       state back to ExStart.  This causes the switch on the other 
  5266.       end of the adjacency to process a SeqNumberMismatch event and 
  5267.       also revert to the ExStart state.
  5268.  
  5269.    [4]When two advertisements have different checksum values, they 
  5270.       are assumed to be separate instances.  This can occur when a 
  5271.       switch restarts and loses track of its previous sequence 
  5272.       number.  In this case, since the two advertisements have the 
  5273.       same sequence number, it is not possible to determine which 
  5274.       advertisement is actually newer.  If the wrong advertisement 
  5275.       is accepted as newer, the originating switch will originate 
  5276.       another instance. 
  5277.  
  5278.    [5]An instance of an advertisement is originated with an age of 
  5279.       MaxAge only when it is to be flushed from the database.  This 
  5280.       is done either when the advertisement has naturally aged to 
  5281.       MaxAge, or (more typically) when the sequence number must 
  5282.       wrap.  Therefore, a received instance with an age of MaxAge 
  5283.       must be processed as the most recent in order to flush it 
  5284.       properly from the database.
  5285.  
  5286.    [6]MaxAgeDiff is an architectural constant that defines the 
  5287.       maximum disparity in ages, in seconds, that can occur for a 
  5288.       single link state instance as it is distributed throughout the 
  5289.       switch fabric.  If two advertisements differ by more than this 
  5290.       amount, they are assumed to be different instances of the same 
  5291.       advertisement.  This can occur when a switch restarts and 
  5292.       loses track of its previous sequence number.
  5293.  
  5294.  
  5295.  
  5296.  
  5297. L. Kane, et. al.                                           [Page 91]
  5298. I/D                 VLS Protocol Specification            May 1997
  5299.  
  5300.  
  5301.    [7]This is how the link state request list is emptied, causing 
  5302.       the neighbor state to change to Full.
  5303.  
  5304.  
  5305. References
  5306.  
  5307.    [Perlman]   Perlman, Radia.  Interconnections: Bridges and 
  5308.                Routers.  Addison-Wesley Publishing Company.  1992.
  5309.  
  5310.    [RFC905]    McKenzie, A., ISO Transport Protocol specification 
  5311.                ISO DP 8073. April 1984.
  5312.  
  5313.    [RFC1583]   Moy, J.  OSPF Version 2.  March 1994.
  5314.  
  5315.    [RFC1700]   Reynolds, S.J., Postel, J.  Assigned Numbers.  
  5316.                October 1994.
  5317.  
  5318.    [RFCxxxx]   Dobbins, K., et. al.  ARLD Protocol Specification
  5319.  
  5320.    [RFCxxxx]   Dobbins, K., et. al.  LSMP Protocol Specification
  5321.  
  5322.    [RFCxxxx]   Dobbins, K., et. al.  SBCD Protocol Specification
  5323.  
  5324.    [RFCxxxx]   Dobbins, K., et. al.  SFCT Protocol Specification
  5325.  
  5326.    [RFCxxxx]   Dobbins, K., et. al.  SNDM Protocol Specification
  5327.  
  5328.  
  5329. Security Considerations
  5330.  
  5331.    Security issues are not discussed in this document.
  5332.  
  5333.  
  5334. Authors Addresses
  5335.  
  5336.    Cabletron Systems, Inc., is located at:
  5337.  
  5338.       Post Office Box 5005
  5339.       Rochester, NH  03866-5005
  5340.       (603) 332-9400
  5341.  
  5342.    Laura Kane         Email:  lkane@ctron.com
  5343.    Kurt Dobbins       Email:  dobbins@ctron.com
  5344.    Rich Soczewinski   Email:  soczew@ctron.com
  5345.  
  5346.  
  5347.  
  5348.  
  5349.  
  5350.  
  5351.  
  5352.  
  5353.  
  5354.  
  5355. L. Kane, et. al.                                           [Page 92]
  5356. INTERNET-DRAFT           EXPIRES: NOVEMBER 1997        INTERNET-DRAFT
  5357.