RFC 5303
Three-Way Handshake for IS-IS Point-to-Point Adjacencies
Three-Way Handshake for IS-IS Point-to-Point Adjacencies π¦
RFC 5303 π Category: Standards Track β¨ Date: October 2008 πΈ Authors: D. Katz (Juniper Networks), R. Saluja (Tenet Technologies), and D. Eastlake 3rd (Eastlake Enterprises) π Obsoletes: RFC 3373 π
Okay so this one is an IS-IS extension (IS-IS is the routing protocol) that adds a three-way handshake for point-to-point adjacencies. It obsoletes RFC 3373, which means this is the newer version that replaces it. It's on the Standards Track, so it's an official spec and not just a vibe π
Status of This Memo
This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. π
Abstract
Okay, the IS-IS routing protocol (Intermediate System to Intermediate System, ISO 10589) assumes that the link layer is reliable on point-to-point links. Because of that, it doesn't use a three-way handshake when it sets up adjacencies on point-to-point media. π€
This document defines a backward-compatible extension that adds a three-way handshake. It's fully interoperable with systems that don't support the extension, so nobody gets left out π«Ά
The extension also lets a single router run more than 256 point-to-point links, and it does that robustly β¨
Multiple router vendors have already implemented this extension. This document is shared with the Internet community so other vendors can build interoperable implementations too π₯
Table of Contents
1. Introduction ....................................................2
1.1. Terminology ................................................3
2. Overview of Extensions ..........................................3
2.1. Handshaking ................................................3
2.2. More than 256 Interfaces ...................................4
3. Details .........................................................5
3.1. Syntax .....................................................5
3.2. Elements of Procedure ......................................6
4. IANA Considerations .............................................8
5. Security Considerations .........................................9
6. Changes from RFC 3373 ...........................................9
7. Acknowledgements ................................................9
8. Normative References ............................................9
9. Informative References ..........................................9
1. Introduction π§
Okay so the IS-IS protocol [ISIS] assumes certain requirements from ISO 10589 (section 6.7.2) for running over point-to-point links. Because of that, it only does a two-way handshake when setting up adjacencies on those links. If those subnetwork requirements for point-to-point links aren't met, the protocol doesn't work correctly. π
The basic mechanism in the standard goes like this: each side declares the other side reachable once it hears a Hello packet from it. Then each side sends a Complete Sequence Number PDU (CSNP) to kick off database synchronization.
There are three known failure modes, and they're giving chaos π
First, the link goes down and comes back up, or one of the systems restarts, and the CSNP packet gets lost. If the network has a cut set of one through that link, the link state databases on either side won't synchronize for a full Link State Protocol Data Unit (LSP) refresh period, which can be up to 18 hours. Not iconic at all π
Second, and this one is more serious, if the link fails in only one direction, only one of the two systems detects the failure. Normally only one of the systems announces the adjacency in its link state packets, so the SPF algorithm ignores the link. But if there are two parallel links between systems and one of them fails in one direction, SPF still calculates paths between the two systems. The system that doesn't notice the failure will then try to send traffic down the broken link, in the direction that doesn't work. π
Third, on some physical layers, the connection between endpoints can change without causing a link-layer-down condition. In that case, a system may receive packets meant for a different system (or a different link on the same system). The receiving system may end up thinking it has an adjacency with the remote system, when the remote system is actually adjacent to a third system. Wild π
The solution here makes sure the protocol runs correctly over unreliable point-to-point links. As part of fixing the three-way handshaking issue, it also removes the 255 point-to-point interface limit that IS-IS [ISIS] imposes. This method is more robust than the ad hoc methods people are using right now. π
1.1. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. π
2. Overview of Extensions πΈ
This section gives a general overview of the three-way handshaking and how more than 256 interfaces are handled.
2.1. Handshaking
The goal is a three-way handshake for point-to-point adjacency establishment that stays backward-compatible. It works through an optional mechanism that lets each system report its adjacency three-way state. That way a system only declares an adjacency up when it knows the other system is receiving its IS-IS Hello (IIH) packets. It's giving careful π«Ά
The adjacency three-way state can be one of the following:
- Down: This is the initial point-to-point adjacency three-way state. The system has not received any IIH packet containing the three-way handshake option on this point-to-point circuit.
- Initializing: The system has received an IIH packet containing the three-way handshake option from a neighbor, but it doesn't know whether the neighbor is receiving its IIH packets.
- Up: The system knows that the neighbor is receiving its IIH packets. β¨
The adjacency three-way state reported by this mechanism is not equal or equivalent to the adjacency state described in ISO 10589 [ISIS]. If this mechanism is supported, an adjacency may have two states: its state as defined in ISO 10589 [ISIS], and its three-way state. For example, under ISO 10589, receiving an Intermediate System Hello (ISH) moves an adjacency to Initializing state. But receiving an ISH has no effect on the three-way state of an adjacency. That one stays firmly Down until it gets an IIH from a neighbor that contains the three-way handshaking option. Two different tracks, bestie π
The neighbor's system ID and (newly defined) extended circuit ID are also reported. This is how the protocol catches the case where the same stream is being received by multiple systems, and only one of them can talk back. π
This mechanism is pretty similar to the one in the Netware Link Services Protocol (NLSP) [NetLink], which is a variant of IS-IS used for routing Internetwork Packet Exchange (IPX) traffic. The differences are where the information gets carried and whether the neighbor's system ID and circuit ID are included. NLSP uses two of the reserved bits in the IIH header. This solution adds a separate option to the IIH instead. In theory, using the reserved header bits should be backward compatible, since systems are supposed to ignore them. But it was felt that this was risky, because untested mechanisms like that have caused problems in other protocols before. New option codes, on the other hand, have been shown to work properly, since the deployment of Integrated IS-IS for IP [RFC1195] did exactly that π
The new mechanism only kicks in when the remote system includes the new option in its IIH packet. If the option isn't present, the system is assumed not to support the new mechanism, so the old procedures get used. Fair and simple π
2.2. More than 256 Interfaces
The IS-IS specification has an implicit limit of 256 interfaces, because of the eight-bit Circuit ID field carried in various packets. π Clever implementers noticed that the only real constraint is 256 LAN interfaces. And to be exact, it's only 256 LAN interfaces where a system is the Designated IS. That's because the circuit ID only gets advertised in LSPs through the pseudo-node LSP ID.
Implementers have treated the point-to-point circuit ID number space as independent from the LAN interfaces. That makes sense, since these circuit IDs only appear in IIH PDUs and are only used to detect when the identity at the other end of a link changes. To support more than 256 point-to-point interfaces, implementers have been sending the same circuit ID on multiple interfaces. That weakens the ID change detection algorithm, though, because it would then be possible to switch links between interfaces on a system without anyone noticing the change. Oof π¬
Since the circuit ID is an integral part of the new handshaking mechanism, this specification includes a backward-compatible way to expand the circuit ID number space. Glow-up era π
3. Details π
The detailed syntax and procedures for this IS-IS option are given below. π§
3.1. Syntax β¨
okay bestie, so the new IS-IS option is called "Point-to-Point Three-Way Adjacency" and it's giving main character energy π Here's how its header and value look:
Type - 0xF0 (decimal 240)
Length - total length of the value field (1 to 17 octets)
Value -
No. of Octets
+-----------------------------------+
| Adjacency Three-Way State | 1
+-----------------------------------+
| Extended Local Circuit ID | 4
+-----------------------------------+
| Neighbor System ID | ID Length
+-----------------------------------+
| Neighbor Extended Local Circuit ID| 4
+-----------------------------------+
Here's what each piece does π§
Adjacency Three-Way State: the three-way state of the point-to-point adjacency. The values are:
0 - Up
1 - Initializing
2 - Down
Extended Local Circuit ID: a unique ID given to this circuit when this Intermediate system creates it π₯Neighbor System ID: the System ID of the neighboring Intermediate system, if it's known. Its length matches the "ID Length" of the IIH PDU from "Point-to-point IS to IS hello PDU" (section 9.7 of [ISIS]) πΈNeighbor Extended Local Circuit ID: the Extended Local Circuit ID on the other end of the point-to-point adjacency, if it's known π«Ά
Now the rules, and these ones are serious π
Any system that supports this mechanism SHALL include this option in its Point-to-Point IIH packets.
Any system that does not understand this option SHALL ignore it, and (of course) SHALL NOT include it in its own IIH packets. π
Any system that supports this mechanism MUST include the Adjacency Three-Way State field in this option. The other fields in this option SHOULD be included as explained below in section 3.2. π
Any system that is able to process this option SHALL follow the procedures below. β¨
3.2. Elements of Procedure π¦
okay so the new handshake procedure gets added to the IS-IS point-to-point IIH state machine after the PDU acceptance tests have run π
Even though the extended circuit ID only matters during the three-way handshake, it's lowkey really useful. If a link gets moved to another interface on a system that has the same local circuit ID (super unlikely, but still), the received PDUs get ignored by the checks below and the existing adjacency fails π
Next, add a clause e) to the end of "Receiving ISH PDUs by an intermediate system" (section 8.2.2 of [ISIS]). It says:
"Set the state to be reported in the Adjacency Three-Way State field of the Point-to-Point Three-Way Adjacency option to Down."
Then add a clause e) to the end of "Sending point-to-point IIH PDUs" (section 8.2.3 of [ISIS]). This is the big one π₯
"The IS SHALL include the Point-to-Point Three-Way Adjacency option in the transmitted Point-to-Point IIH PDU. The current three-way state of the adjacency with its neighbor on the link (as defined in new section 8.2.4.1.1 introduced later in the document) SHALL be reported in the Adjacency Three-Way State field. If no adjacency exists, the state SHALL be reported as Down."
"The Extended Local Circuit ID field SHALL contain a value assigned by this IS when the circuit is created. This value SHALL be unique among all the circuits of this Intermediate System. The value is not necessarily related to that carried in the Local Circuit ID field of the IIH PDU."
"If the system ID and Extended Local Circuit ID of the neighboring system are known (in adjacency three-way state Initializing or Up), the neighbor's system ID SHALL be reported in the Neighbor System ID field, and the neighbor's Extended Local Circuit ID SHALL be reported in the Neighbor Extended Local Circuit ID field."
Now add a section 8.2.4.1.1, "Three-Way Handshake", right before "IIH PDU Processing" (section 8.2.4.2 of [ISIS]). This is where the magic happens β¨
"A received Point-to-Point IIH PDU may or may not contain the Point-to-Point Three-Way Adjacency option. If it does not, the link is assumed to be functional in both directions, and the procedures described in section 8.2.4.2 are followed."
"If the option is present and contains invalid Adjacency Three-Way State, the PDU SHALL be discarded and no further action is taken."
"If the option with a valid Adjacency Three-Way State is present, the Neighbor System ID and Neighbor Extended Local Circuit ID fields, if present, SHALL be examined. If they are present, and the Neighbor System ID contained therein does not match the local system's ID, or the Neighbor Extended Local Circuit ID does not match the local system's extended circuit ID, the PDU SHALL be discarded and no further action is taken."
"If the Neighbor System ID and Neighbor Extended Local Circuit ID fields match those of the local system, or are not present, the procedures described in section 8.2.4.2 are followed with the following changes:"
a) "In section 8.2.4.2 a and b, the action "Up" from state tables 5, 6, 7, and 8 may create a new adjacency but the three-way state of the adjacency SHALL be Down."
b) "If the action taken from section 8.2.4.2 a or b is "Up" or "Accept", the IS SHALL perform the action indicated by the new adjacency three-way state table below, based on the current adjacency three-way state and the received Adjacency Three-Way State value from the option. (Note that the procedure works properly if neither field is ever included. This provides backward compatibility to an earlier version of this option.)"
Received Adjacency Three-Way State
Down Initializing Up
--------------------------------------
Down | Initialize Up Down
|
Adj. Initializing | Initialize Up Up
Three- |
Way Up | Initialize Accept Accept
State |
|
Adjacency Three-Way State Table
"If the new action is "Down", an adjacencyStateChange(Down) event is generated with the reason "Neighbor restarted" and the adjacency SHALL be deleted."
"If the new action is "Initialize", no event is generated and the adjacency three-way state SHALL be set to "Initializing"."
"If the new action is "Up", an adjacencyStateChange(Up) event is generated."
c) "Skip section 8.2.4.2 c and d."
d) "If the new action is "Initialize", "Up", or "Accept", follow section 8.2.4.2 e."
4. IANA Considerations π
This document specifies IS-IS Option 240 (0xF0), which has already been allocated. See [RFC3359]. π
5. Security Considerations π
This document raises no new security issues for IS-IS. IS-IS security may be used to secure the IS-IS messages discussed here. See [RFC5304]. π
6. Changes from RFC 3373 β
This document is a minor edit of [RFC3373] with the intent of advancing it from Informational to Standards Track. It also updates the ISP 10589 reference to refer to the current "2002" version. π
7. Acknowledgements π«Ά
Thanks to Tony Li, Henk Smit, Naiming Shen, Dave Ward, Jeff Learman, Les Ginsberg, and Philip Christian for their contributions to the document. π
8. Normative References π
- [ISIS] ISO, "Intermediate System to Intermediate System intra-domain routeing information exchange protocol for use in conjunction with the protocol for providing the connectionless-mode network service (ISO 8473)", International Standard 10589:2002, Second Edition, 2002.
- [NetLink] "Netware Link Services Protocol Specification, Version 1.0", Novell, Inc., February 1994.
- [RFC1195] Callon, R., "Use of OSI IS-IS for routing in TCP/IP and dual environments", RFC 1195, December 1990.
- [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
9. Informative References π
- [RFC3373] Katz, D. and R. Saluja, "Three-Way Handshake for Intermediate System to Intermediate System (IS-IS) Point-to-Point Adjacencies", RFC 3373, September 2002.
- [RFC3359] Przygienda, T., "Reserved Type, Length and Value (TLV) Codepoints in Intermediate System to Intermediate System", RFC 3359, August 2002.
- [RFC5304] Li, T. and R. Atkinson, "IS-IS Cryptographic Authentication", RFC 5304, October 2008.
Authors' Addresses π
Dave Katz
Juniper Networks
1194 N. Mathilda Ave.
Sunnyvale, CA 94089
USA
Phone: +1-408-745-2073
EMail: dkatz@juniper.net
Rajesh Saluja
Tenet Technologies
30/31, 100 Feet Road, Madiwala
Bangalore - 560 068
INDIA
Phone: +91 80 552 2215
EMail: rajesh.saluja@tenetindia.com
Donald E. Eastlake 3rd
Eastlake Enterprises
155 Beaver Street
Milford, MA 01757
USA
Phone: +1-508-634-2066
EMail: d3e3e3@gmail.com
Full Copyright Statement Β©
Copyright (C) The IETF Trust (2008).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.
Intellectual Property π
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
π¦ where this page comes from
- ietf: rfc5303 2008-10
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms