rfc-5303

Three-Way Handshake for IS-IS Point-to-Point Adjacencies

D. Katz, R. Saluja, D. Eastlake 3rd
date2008-10 streamIETF areartg wgisis statusPROPOSED STANDARD pages11 canonicalhttps://www.rfc-editor.org/rfc/rfc5303 doi10.17487/RFC5303 errataview
The IS-IS routing protocol (Intermediate System to Intermediate System, ISO 10589) requires reliable protocols at the link layer for point-to-point links. As a result, it does not use a three-way handshake when establishing adjacencies on point-to-point media. This paper defines a backward-compatible extension to the protocol that provides for a three-way handshake. It is fully interoperable with systems that do not support the extension. Additionally, the extension allows the robust operation of more than 256 point-to-point links on a single router. This extension has been implemented by multiple router vendors; this paper is provided to the Internet community in order to allow interoperable implementations to be built by other vendors. [STANDARDS-TRACK]

obsoletes

Extracted elements (20)

design-rationale §1

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.

routing, security

design-rationale §2.2

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.

routing

design-rationale §2.1

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).

routing

interoperability-note §3.2

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.

routing

interoperability-note §3.2

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.

routing

normative-requirement §3.1 MUST NOT

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.

routing

normative-requirement §3.1 MUST

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.

routing

normative-requirement §3.1 MUST

Any system that supports this mechanism SHALL include the Point-to-Point Three-Way Adjacency option in its Point-to-Point IIH packets.

routing

normative-requirement §3.2 MUST

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.

routing

normative-requirement §3.2 MUST

If the option is present but contains an invalid Adjacency Three-Way State value, the PDU SHALL be discarded and no further action taken.

routing

normative-requirement §3.2 MUST

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.

routing

normative-requirement §3.2 MUST

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.

routing

normative-requirement §3.2 MUST

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.

routing

normative-requirement §3.2 MUST

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.

routing

protocol-element §3.1

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).

routing

registry §4

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.

routing, registry

security-consideration §5

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.

routing, security

state-machine §3.2

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).

routing

state-machine §2.1

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.

routing

wire-format §3.1

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.

routing