Three-Way Handshake for IS-IS Point-to-Point Adjacencies
obsoletes
- rfc-3373 — Three-Way Handshake for Intermediate System to Intermediate System (IS-IS) Point-to-Point Adjacencies
Extracted elements (20)
IS-IS originally assumed reliable link-layer protocols on point-to-point links (ISO 10589 section 6.7.2) and therefore only implemented a two-way handshake. Three failure modes motivated the extension: CSNP loss after link restart causing 18-hour sync failures, unidirectional link failures being detected by only one side, and physical layer topology changes causing a system to receive packets destined for a different system.
The extension also addresses IS-IS's implicit 256-interface limit caused by the 8-bit Circuit ID field. Existing workarounds (sharing circuit IDs across point-to-point interfaces) reduced robustness of identity-change detection. A new 32-bit Extended Local Circuit ID field provides a backward-compatible expansion of the circuit ID number space.
The three-way state is carried in a new IS-IS option (type 0xF0) rather than using reserved bits in the IIH header, unlike the NLSP approach. This was chosen because use of reserved header bits was considered risky, as untested mechanisms of this kind had caused problems in other protocols, while new option codes had been proven to work via deployment of Integrated IS-IS for IP (RFC 1195).
If the Point-to-Point Three-Way Adjacency option is not present in a received IIH, the link is assumed to be functional in both directions and standard ISO 10589 section 8.2.4.2 procedures are followed. This ensures full interoperability with systems that do not support the extension.
The three-way handshake procedure works properly if neither the Neighbor System ID nor Neighbor Extended Local Circuit ID fields are ever included (minimum option with only the state field). This provides backward compatibility to an earlier version of this option.
Any system that does not understand this option SHALL ignore it and SHALL NOT include it in its own IIH packets, ensuring backward compatibility with non-supporting systems.
Any system that supports this mechanism MUST include the Adjacency Three-Way State field in the option. The other fields (Extended Local Circuit ID, Neighbor System ID, Neighbor Extended Local Circuit ID) SHOULD be included as explained in section 3.2.
Any system that supports this mechanism SHALL include the Point-to-Point Three-Way Adjacency option in its Point-to-Point IIH packets.
If the 'Down' action results from the three-way state table, an adjacencyStateChange(Down) event SHALL be generated with the reason 'Neighbor restarted' and the adjacency SHALL be deleted.
If the option is present but contains an invalid Adjacency Three-Way State value, the PDU SHALL be discarded and no further action taken.
If the option is present with valid state, and the Neighbor System ID and Neighbor Extended Local Circuit ID fields are present but do not match the local system's ID and extended circuit ID respectively, the PDU SHALL be discarded and no further action taken.
If the system ID and Extended Local Circuit ID of the neighboring system are known (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.
On receipt of ISH PDUs, the three-way state SHALL be set to Down (new clause e added to ISO 10589 section 8.2.2). The ISO 10589 ISH processing does not affect three-way state except to set it Down.
The Extended Local Circuit ID field SHALL contain a value assigned by the IS when the circuit is created, and SHALL be unique among all circuits of the Intermediate System. This value is not necessarily related to the Local Circuit ID field in the IIH PDU.
The 'Point-to-Point Three-Way Adjacency' IS-IS option is defined with type 0xF0 (decimal 240) and a value field of 1 to 17 octets containing: Adjacency Three-Way State (1 octet), Extended Local Circuit ID (4 octets), Neighbor System ID (ID Length octets), and Neighbor Extended Local Circuit ID (4 octets).
This document specifies IS-IS Option type 240 (0xF0), 'Point-to-Point Three-Way Adjacency', which had already been allocated prior to this document. See RFC 3359 for the reserved TLV codepoints registry.
This document raises no new security issues for IS-IS. IS-IS security mechanisms (see RFC 5304, IS-IS Cryptographic Authentication) may be used to secure the IIH messages containing the three-way adjacency option.
The adjacency three-way state transition table defines: from Down, receiving Down→Initialize, Initializing→Up, Up→Down; from Initializing, receiving Down→Initialize, Initializing→Up, Up→Up; from Up, receiving Down→Initialize, Initializing→Accept, Up→Accept. 'Down' action triggers adjacencyStateChange(Down) and deletes the adjacency; 'Initialize' sets three-way state to Initializing; 'Up' generates adjacencyStateChange(Up).
The three-way adjacency state machine has three states: Down (initial, no IIH with the option received), Initializing (option received from neighbor but bidirectional reception unconfirmed), and Up (neighbor confirmed to be receiving local IIH packets). This three-way state is distinct from and coexists with the ISO 10589 adjacency state.
The Adjacency Three-Way State field is 1 octet with values: 0=Up, 1=Initializing, 2=Down. The Extended Local Circuit ID field is 4 octets, uniquely identifying the circuit on the local IS. The Neighbor System ID field length equals the ID Length of the IIH PDU. The Neighbor Extended Local Circuit ID field is 4 octets.