11. Link State Advertisement Formats
Link state advertisements are used to describe various pieces of the routing topology within the switch fabric. Each switch in the fabric maintains a complete set of all link state advertisements generated throughout the fabric. (Section 8.1 describes the circumstances under which a link state advertisement is originated. Section 8.2 describes how advertisements are distributed throughout the switch fabric.) This collection of advertisements, known as the link state (or topological) database, is used to calculate a set of best paths to all other switches in the fabric. There are two types of link state advertisement, as listed in Table 8. Type Name Function Description 1 Switch link Lists all network Section 11.2 advertisement linksattached to a switch 2 Network link Lists all adjacen- Section 11.3 advertisement cies on a network link Table 8: Link State Advertisement Types Each link state advertisement begins with a standard header, described in Section 11.1.11.1 Link State Advertisement Headers
All link state advertisements begin with a common 32-octet header. This header contains information that uniquely identifies the advertisement -- its type, link state ID, and the switch ID of its advertising switch. Also, since multiple instances of a link state advertisement can exist concurrently in the switch fabric, the header contains information that permits a switch to determine which instance is the most recent -- the age, sequence number and checksum. The format of the link state advertisement header is shown below.
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 00 | Age | Options | LS Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 04 | | + Link state ID + 08 | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 12 | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 16 | | + Advertising switch ID + 20 | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 24 | Sequence number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 28 | Checksum | Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Age This 2-octet field contains the time, in seconds, since this instance of the link state advertisement was originated. Options This 1-octet field contains the optional capabilities supported by the advertising switch, as described in Section 10.5. LS type This 1-octet field contains the type of the link state advertisement. Possible values are: 1 Switch link advertisement 2 Network link advertisement Link state ID This 10-octet field identifies the switch that originates advertisements for the link. The content of this field depends on the advertisement's type. o For a switch link advertisement, this field contains the switch ID of the originating switch
o For a network link advertisement, this field contains the switch ID of the designated switch for the link Note: In VLSP, the link state ID of an advertisement is always the same as the advertising switch. This level of redundancy results from the fact that OSPF uses additional types of link state advertisements for which the originating switch is not the advertising switch. Advertising switch This 10-octet field contains the switch ID of the switch that originated the link state advertisement. Sequence number This 4-octet field is used to sequence the instances of a particular link state advertisement. The number is incremented for each new instance. Checksum This 2-octet field contains the checksum of the complete contents of the link state advertisement, excluding the age field. The checksum used is commonly referred to as the Fletcher checksum and is documented in [RFC905]. Note that since this checksum is calculated for each separate advertisement, a protocol packet containing lists of advertisements or advertisement headers will contain multiple checksum values. Length This 2-octet field contains the total length, in octets, of the link state advertisement, including the header.11.2 Switch Link Advertisements
A switch link advertisement is used to describe all functioning network links of a switch, including the cost of using each link. Each functioning switch in the fabric originates one, and only one, switch link advertisement -- all of the switch's links must be described in a single advertisement. A switch originates its first switch link advertisement (containing no links) when it first becomes functional. It then originates a new instance of the advertisement each time any of its neighbor states changes such that the contents of the advertisement changes. See Section 8.1 for details on originating a switch link advertisement.
The format of a switch link advertisement is shown below. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 00 | | : Link state header : | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 32 | (unused -- must be 0) | # links | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 36 | | + Link ID + 40 | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 44 | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 48 | | + Link data + 52 | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 56 | Link type | # TOS | TOS 0 metric | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 60 | | : . . . : | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Link state header This 32-octet field contains the standard link state advertisement header. The type field contains a 1, and the link state ID field contains the switch ID of the advertising switch. # links This 2-octet field contains the number of links described by this advertisement. This value must be equal to the total number of functioning network links attached to the switch.
Link ID This 10-octet field identifies the other switch that originates link state advertisements for the link, providing a key for accessing other link state advertisements for the link. The value here is based on the link type, as follows: o For point-to-point links, this field contains the switch ID of the neighbor switch connected to the other end of the link. o For multi-access links, this field contains the switch ID of the designated switch for the link. Link data This 10-octet field contains additional data necessary to calculate the set of best paths. Typically, this field contains the interface ID of the link. Link type This 1-octet field contains the type of link being described. Possible values are as follows: 1 Point-to-point link 2 Multi-access link # TOS This 1-octet field contains the number of nonzero type of service metrics specified for the link. Since the current version of VLSP does not support routing based on nonzero types of service, this field contains a value of zero. TOS 0 metric This 2-octet field contains the cost of using this link for the zero TOS. This value is expressed in the link state metric and must be greater than zero. Note that the last five fields are repeated for all functioning network links attached to the advertising switch. If the interface state of attached link changes, the switch must originate a new instance of the switch link advertisement.
11.3 Network Link Advertisements
A network link advertisement is originated by the designated switch of each multi-access network link. The advertisement describes all switches attached to the link that are currently fully adjacent to the designated switch, including the designated switch itself. See Section 8.1 for details on originating a switch link advertisement. Network link advertisements are not generated for point-to-point network links. The format of a network link advertisement is show below. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 00 | | : Link state header : | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 32 | (unused) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 36 | | + + : Switch list : + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Link state header This 32-octet field contains the standard link state advertisement header. The type field contains a 2, and the link state ID field contains the switch ID of the designated switch. Switch list The switch IDs of all switches attached to the network link that are currently fully adjacent to the designated switch. The designated switch includes itself in this list.12. Protocol Parameters
This section contains a compendium of the parameters used in the VLS protocol.
12.1 Architectural Constants
Several VLS protocol parameters have fixed architectural values. The name of each architectural constant follows, together with its value and a short description of its function. AllSPFSwitches The multicast switch ID to which Hello packets and certain other protocol packets are addressed, as specified in the destination switch ID field of the network layer address information (see Section 10.3). The value of AllSPFSwitches is E0-00-00-05-00-00- 00-00. AllDSwitches The multicast switch ID to which Link State Update packets and Link State Acknowledgment packets are addressed, as specified in the destination switch ID field of the network layer address information (see Section 10.3), when they are destined for the designated switch or the backup designated switch of a network link. The value of AllDSwitches is E0-00-00-06-00-00-00-00. LSRefreshTime The interval at which the set of best paths recalculated if no other state changes have forced a recalculation. The value of LSRefreshTime is set to 1800 seconds (30 minutes). MinLSInterval The minimum time between distinct originations of any particular link state advertisement. The value of MinLSInterval is set to 5 seconds. MaxAge The maximum age that a link state advertisement can attain. When an advertisement's age reaches MaxAge, it is redistributed throughout the switch fabric. When the originating switch receives an acknowledgment for the advertisement, indicating that the advertisement has been removed from all neighbor Link state retransmission lists, the advertisement is removed from the originating switch's database. Advertisements having age MaxAge are not used to calculate the set of best paths. The value of MaxAge must be greater than LSRefreshTime. The value of MaxAge is set to 3600 seconds (1 hour).
MaxAgeDiff The maximum time disparity in ages that can occur for a single link state instance as it is distributed throughout the switch fabric. Most of this time is accounted for by the time the advertisement sits on switch output queues (and therefore not aging) during the distribution process. The value of MaxAgeDiff is set to 900 seconds (15 minutes). LSInfinity The link state metric value indicating that the destination is unreachable. It is defined to be a binary value of all ones.12.2 Configurable Parameters
Many of the switch interface parameters used by VLSP may be made configurable if the implementer so desires. These parameters are listed below. Sample default values are given for some of the parameters. Note that some of these parameters specify properties of the individual interfaces and their attached network links. These parameters must be consistent across all the switches attached to that link. Interface output cost(s) The cost of sending a packet over the interface, expressed in the link state metric. This is advertised as the link cost for this interface in the switch's switch link advertisement. The interface output cost must always be greater than zero. RxmtInterval The number of seconds between link state advertisement retransmissions for adjacencies established on this interface. This value is also used when retransmitting Database Description packets and Link State Request packets. This value must be greater than the expected round-trip delay between any two switches on the attached link. However, the value should be conservative or needless retransmissions will result. A typical value for a local area network would be 5 seconds.
InfTransDelay The estimated number of seconds it takes to transmit a Link State Update packet over this interface. Link state advertisements contained in the Link State Update packet must have their age incremented by this amount before transmission. This value must take into account the transmission and propagation delays for the interface and must be greater than zero. A typical value for a local area network would be 1 second. Switch priority An 8-bit unsigned integer. When two switches attached to the same network link contend for selection as the designated switch, the switch with the highest priority takes precedence. If both switches have the same priority, the switch with the highest base MAC address becomes the designated switch. A switch whose switch priority is set to zero is ineligible to become the designated switch on the attached link. HelloInterval The length of time, in seconds, between the Hello packets that the switch sends over the interface. This value is advertised in the switch's Hello packets. It must be the same for all switches attached to a common network link. The smaller this value is set, the faster topological changes will be detected. However, a smaller interval will also generate more routing traffic. A typical value for a local area network would be 10 seconds. SwitchDeadInterval The length of time, in seconds, that neighboring switches will wait before declaring the interface down once they stop receiving Hello packets over the interface. This value is advertised in the switch's Hello packets. It must be the same for all switches attached to a common network link and should be some multiple of the HelloInterval parameter. A typical value would be 4 times HelloInterval.
13. End Notes
[1] During calculation of the set of best paths, a network link advertisement must be located based solely on its link state ID. Note, however, that the lookup in this case is still well defined, since no two network advertisements can have the same link state ID. [2] It is instructive to see what happens when the designated switch for a network link fails. Call the designated switch for the link S1 and the backup designated switch S2. If switch S1 fails (or its interface to the link goes down), the other switches on the link will detect S1's absence within SwitchDeadInterval seconds. All switches may not detect this condition at precisely the same time. The switches that detect S1's absence before S2 does will temporarily select S2 as both designated switch and backup designated switch. When S2 detects that S1 is down, it will move itself to designated switch. At this time, the remaining switch with the highest switch priority will be selected as the backup designated switch. [3] Note that it is possible for a switch to resynchronize any of its fully established adjacencies by setting the neighbor state back to ExStart. This causes the switch on the other end of the adjacency to process a SeqNumberMismatch event and also revert to the ExStart state. [4] When two advertisements have different checksum values, they are assumed to be separate instances. This can occur when a switch restarts and loses track of its previous sequence number. In this case, since the two advertisements have the same sequence number, it is not possible to determine which advertisement is actually newer. If the wrong advertisement is accepted as newer, the originating switch will originate another instance. [5] An instance of an advertisement is originated with an age of MaxAge only when it is to be flushed from the database. This is done either when the advertisement has naturally aged to MaxAge, or (more typically) when the sequence number must wrap. Therefore, a received instance with an age of MaxAge must be processed as the most recent in order to flush it properly from the database. [6] MaxAgeDiff is an architectural constant that defines the maximum disparity in ages, in seconds, that can occur for a single link state instance as it is distributed throughout the switch fabric. If two advertisements differ by more than this amount, they are assumed to be different instances of the same advertisement. This can occur when a switch restarts and loses track of its previous sequence number.
[7] This is how the link state request list is emptied, causing the neighbor state to change to Full.14. Security Considerations
Security concerns are not addressed in this document.15. References
[Perlman] Perlman, R., Interconnections: Bridges and Routers. Addison-Wesley Publishing Company. 1992. [RFC905] McKenzie, A., "ISO Transport Protocol specification ISO DP 8073", RFC 905, April 1984. [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998. [RFC1700] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, RFC 1700, October 1994. [IDsfvlan] Ruffen, D., Len, T. and J. Yanacek, "Cabletron's SecureFast VLAN Operational Model", RFC 2643, August 1999. [IDhello] Hamilton, D. and D. Ruffen, "Cabletron's VlanHello Protocol Specification", RFC 2641, August 1999.16. Author's Address
Laura Kane Cabletron Systems, Inc. Post Office Box 5005 Rochester, NH 03866-5005 Phone:(603) 332-9400 EMail: lkane@ctron.com
17. Full Copyright Statement
Copyright (C) The Internet Society (1999). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Acknowledgement Funding for the RFC Editor function is currently provided by the Internet Society.