OSI CLNP, ES-IS, and IS-IS PDUs
IS-IS and ES-IS PDUs are encapsulated directly in a data link PDU – frame, without CLNP header; CLNP PDUs contain a CLNP header between the data link headers and higher-layer CLNS info. The IS-IS and ES-IS PDUs contain variable-length fields depends upon the function of the PDU. Each field contains a TLV, which contains a type code, length, and appropriate value.
IS-IS defines the following 4 types of PDUs:
|Hello PDU||Establishes and maintains adjacencies. Includes ESH, ISH, and IIH.|
|Link-State PDU (LSP)||Distributes link-state information. The flooding or propagation of LSPs differs upon broadcast networks and point-to-point links.|
|Complete Sequence Number PDU (CSNP)||SNPs function similar to OSPF DBD, LSR, and LSAck packets which are being used to synchronize LSDBs. |
CSNP briefly describes all the LSPs in the IS-IS LSDB of a router. PSNP may implicitly or explicitly acknowledges receives LSPs, and requests partial or missing pieces of link-state information;
|Partial Sequence Number PDU (PSNP)|
IS-IS PDU Format and IS-IS PDU Type Numbers
The first 8 bytes of all IS-IS PDUs are header fields that are common to all types of IS-IS PDUs.
PDU Header Length Indicator specifies the length of the fixed header in bytes.
Version / Protocol ID Extension is always set to 0x01.
System ID Length describes the length of the System ID field of NSAP addresses and NETs in a routing domain. This field is set to one of the following values:
- An integer between 1 – 8 inclusive, indicating the length of the System ID field in bytes.
- 0, indicating a System ID field of 6 bytes.
- 255, indicating a null System ID field (0 bytes).
PDU Type is a 5-bit field that contains one of the PDU type numbers. The preceding 3 bits are reserved and are always set to 0.
Version is always set to 0x01, same as the Version / Protocol ID Extension in the 3rd octet.
Reserved are always set to all zeros – 0x00.
Maximum Area Addresses describes the number of area addresses permitted for this IS (router). This field is set to one of the following values:
- An integer between 1 – 254 inclusive, indicating the number of areas allowed.
- 0, indicating that the router supports a maximum of 3 area addresses.
The PDU-specific fields following the common header fields are also part of the IS-IS header. They vary upon the different types of PDUs.
IS-IS PDU Format – LAN Hello PDU, Point-to-Point Hello PDU, LSP, CSNP, and PSNP
Below describes the various IS-IS PDU-specific fields:
|Circuit Type||A 2-bit field specifies whether the router is an L1 (01), L2 (10), or L1/L2 (11). If both bits are zero (00), the entire PDU is ignored. The preceding 6 bits are reserved and are always zero (000000).|
|Source System ID||The System ID of the originating router for the PDU.|
|Holding Time||The period a neighbor router should wait for the next IIH before declaring the originating router is dead.|
|PDU Length||The length of the entire PDU in bytes or octets.|
|Priority||A 7-bit field used for DR election. It contains a value between 0 – 127; higher number has higher priority. L1 and L2 DRs are elected separately according to the priority values in L1 and L2 LAN IIHs.|
|LAN Designated IS System ID / LAN ID||The System ID of the DIS + the Pseudonode ID (1 byte) to differentiate a LAN from other LAN connections that might have the same DIS.|
|Local Circuit ID||Assigned to a circuit by the router originating the P2P IIH and is unique among the interfaces of the originating router. The Local Circuit ID in the IIHs arrived at the other end of the P2P link might or might not contain the same value.|
|Remaining Lifetime||The LSP aging process ages out or removes outdated / expired, or invalid LSPs from the LSDB based on this value of the LSPs. The process uses a decreasing timer and is known as the count-to-zero operation. 1200 seconds (20 minutes) is the default start value.|
|LSP ID||The System ID + the Pseudonode ID + the Fragment ID of the LSP.|
|Sequence Number||Identifies duplicate LSPs and ensures that the latest LSP information is maintained in the link-state topology database for route computation. The sequence number of a router is set to 1 upon its reboot. The router then receives its previous LSPs back from its neighbors, which have the last sequence number before the router rebooted. The router then uses this number and reoriginates its LSPs with the next sequence number. This field contains a 32-bit (4-byte) unsigned integer.|
|Checksum||The checksum upon the contents of the LSP.|
|Partition Repair (P)||Although this bit exists in both L1 and L2 LSPs, it is relevant only in L2 LSPs. When this bit is set to 1, it indicates that the originating router supports the automatic repair of area partitions. Cisco IOS does not support this feature; it always originates LSPs with the P bit set to 0.|
|Attachment (ATT)||A 4-bit field indicating whether the originating router is attached to one or more areas. Although this bit exists in both L1 and L2 LSPs, it is relevant only in L1 LSPs originated by L1/L2 routers to indicate that it is also a L2 router, which is a potential exit to reach other areas. Reading from left to right (bits 7 – 4), the bits indicate the Error metric, the Expense metric, the Delay metric, and the Default metric. Cisco IOS supports only the default metric, so bits 5 – 7 are always 0.|
|Overload (OL)||The Link-State Database Overload bit. This bit is often set to 0. A router set this bit on its LSPs when unable to store the entire LSDB. Routers receiving an LSP with the OL bit set will not use the originating router as a transit router as its routing table is incomplete, which may result in suboptimal routing and even routing loops; but they will still forward packets destined to the directly connected networks or interfaces of the originating router.|
|IS Type||A 2-bit field indicating whether the originating router is an L1 or L2 IS. |
01 – L1; 11 – L2; 00 and 10 are unused values.
An L1/L2 router sets the bits accordingly upon its L1 and L2 LSPs.
|Start LSP ID and End LSP ID||A DIS periodically  multicasts a CSNP to describe all the LSPs in the link-state database of the pseudonode. Since there is an L1 database and an L2 database, therefore there are also L1 and L2 CSNPs. Some LSDBs can be really large that all the LSPs cannot be described in a single CSNP; the last 2 fields of the CSNP header, the Start LSP ID and the End LSP ID, describe the range of LSPs described in the CSNP for fragmentation purpose. The values of the Start LSP ID and End LSP ID are 0x0000.0000.0000.00-00 and 0xFFFF.FFFF.FFFF.FF-FF when all LSPs in the LSDB can be fit into a single CSNP. |
 – every 10 seconds
Various router characteristics (eg: neighbor ISs, authentication, etc) are defined by an IS-IS LSP. An IS-IS LSP contains a common IS-IS PDU header and an IS-IS LSP header, followed by various TLV fields. IS-IS TLV triplets have similar functionalities as the TLV triplets in EIGRP. The TLV mechanism provides a flexible way of adding new data fields upon future extensions.
Note: Sometime TLV is also being referred to as Code, Length, Value (CLV). ISO uses the term Code, while IETF uses the term Type.
The 1-byte Type (or Code) specifies the type of information or content of the Value field, the 1-byte Length specifies the length of the Value field, and the Value field contains the info itself.
The Length field is important for error detection because the Value field is variable length.
Due to the 1-byte size of the Length field, the maximum size of the Value field is 255 bytes.
Below lists the basic and common IS-IS TLVs. The ISO-specified TLVs are designed for use with CLNP; however, most of them are also used with IP. The RFC-specified TLVs are designed only for IP. A router will ignore a TLV if it doesn’t recognize and support the TLV Type / Code. This allows TLVs for CNLP, IP, or both to be carried using the same IS-IS LSP format.
Basic and Common IS-IS TLVs
It is important to know the support of different TLVs on the network equipments because this determines the design and configuration of an Integrated IS-IS network.