ISIS PDU – Types and Wireshark sample packets
Intermediate systems send and receive packets and relay (forward) packets. ISO packets are called ISIS Protocol Data Unit packets, or in short ISIS PDU.
There are four PDU types and all share a common header. This common header has the same structure and information for all four PDU types, except the ‘PDU Type’ filed as highlighted in the sample bellow.
Sample ISIS common header:
ISO 10589 ISIS InTRA Domain Routeing Information Exchange Protocol
Intradomain Routing Protocol Discriminator: ISIS (0x83)
Length Indicator: 20
Version/Protocol ID Extension: 1
ID Length: 0
000. .... = Reserved: 0x0
...1 0001 = PDU Type: P2P HELLO (17)
Version: 1
Reserved: 0
Maximum Area Addresses: 0
IS-IS uses the following 4 x PDUs to exchange protocol information:
- IS-IS hello (IIH) PDUs – identify neighboring ISIS system and establish adjacencies
- Broadcast to discover the identity of neighboring IS-IS systems and to determine whether the neighbors are Level 1 or Level 2 intermediate systems.
- IS-IS hello PDUs establish adjacencies with other routers and have three different formats: one for point-to-point hello packets, one for Level 1 broadcast links, and one for Level 2 broadcast links. Level 1 routers must share the same area address to form an adjacency, while Level 2 routers do not have this limitation. The request for adjacency is encoded in the Circuit type field of the PDU.
- Hello PDUs have a preset length assigned to them. The IS-IS router does not resize any PDU to match the maximum transmission unit (MTU) on a router interface. Each interface supports the maximum IS-IS PDU of 1492 bytes, and hello PDUs are padded to meet the maximum value. When the hello is sent to a neighboring router, the connecting interface supports the maximum PDU size.
- Link-state PDUs (LSP) – used to advertise link-state information about themselves and their connected links to other routers in the network.
- Contain information about the state of adjacencies to neighboring IS-IS systems. Link-state PDUs are flooded periodically throughout an area.
Also included is metric and IS-IS neighbor information. Each link-state PDU must be refreshed periodically on the network and is acknowledged by information within a sequence number PDU. - On point-to-point links, each link-state PDU is acknowledged by a partial sequence number PDU (PSNP), but on broadcast links, a complete sequence number PDU (CSNP) is sent out over the network. Any router that finds newer link-state PDU information in the CSNP then purges the out-of-date entry and updates the link-state database.
- Link-state PDUs support variable-length subnet mask addressing.
- Contain information about the state of adjacencies to neighboring IS-IS systems. Link-state PDUs are flooded periodically throughout an area.
- Complete sequence number PDUs (CSNPs) – Contain a complete list of all link-state PDUs in the IS-IS database.
- CSNPs are sent periodically on all links, and the receiving systems use the information in the CSNP to update and synchronize their link-state PDU databases. The designated router multicasts CSNPs on broadcast links in place of sending explicit acknowledgments for each link-state PDU.
- Contained within the CSNP is a link-state PDU identifier, a lifetime, a sequence number, and a checksum for each entry in the database. Periodically, a CSNP is sent on both broadcast and point-to-point links to maintain a correct database. Also, the advertisement of CSNPs occurs when an adjacency is formed with another router. Like IS-IS hello PDUs, CSNPs come in two types: Level 1 and Level 2.
- When a device receives a CSNP, it checks the database entries against its own local link-state database. If it detects missing information, the device requests specific link-state PDU details using a partial sequence number PDU (PSNP).
- Partial sequence number PDUs (PSNPs) – message used to acknowledge received LSPs or request missing LSPs during database synchronization.
- Sent multicast by a receiver when it detects that it is missing a link-state PDU (when its link-state PDU database is out of date). The receiver sends a PSNP to the system that transmitted the CSNP, effectively requesting that the missing link-state PDU be transmitted. That routing device, in turn, forwards the missing link-state PDU to the requesting routing device.
- A PSNP is used by an IS-IS router to request link-state PDU information from a neighboring router. A PSNP can also explicitly acknowledge the receipt of a link-state PDU on a point-to-point link. On a broadcast link, a CSNP is used as implicit knowledge. Like hello PDUs and CSNPs, the PSNP also has two types: Level 1 and Level 2.
- When a device compares a CSNP to its local database and determines that a link-state PDU is missing, the router issues a PSNP for the missing link-state PDU, which is returned in a link-state PDU from the router sending the CSNP. The received link-state PDU is then stored in the local database, and an acknowledgment is sent back to the originating router.
For a more in depth understanding of ISIS PDUs, what can be better than actually seeing the sample packets with a Wireshark capture?
IIH PDU
ISIS HELLO
.... ..10 = Circuit type: Level 2 only (0x2)
0000 00.. = Reserved: 0x00
SystemID {Sender of PDU}: 0100.4922.7100
Holding timer: 27
PDU length: 108
Local circuit ID: 1
Point-to-point Adjacency State (t=240, l=15)
Type: 240
Length: 15
Adjacency State: Up (0)
Extended Local circuit ID: 0x00000165
Neighbor SystemID: 0100.4923.5018
Neighbor Extended Local circuit ID: 0x00000166
Protocols Supported (t=129, l=2)
Type: 129
Length: 2
NLPIDs: IP (0xcc), IPv6 (0x8e)
NLPID: 0xcc
NLPID: 0x8e
IP Interface address(es) (t=132, l=4)
Type: 132
Length: 4
IPv4 interface address: 17.8.1.2
IPv6 Global Interface Address (t=233, l=16)
Type: 233
Length: 16
IPv6 Global interface address: 2001:db88:8:1::2
IPv6 Interface address(es) (t=232, l=16)
Type: 232
Length: 16
IPv6 interface address: fe80::5604:dff:fe00:5c2a
Area address(es) (t=1, l=18)
Type: 1
Length: 18
Area address (13): 47.0005.80ff.f800.0000.0108.0001
Area address (3): 49.0001
Restart Signaling (t=211, l=3)
Type: 211
Length: 3
Restart Signaling Flags: 0x00
.... .0.. = Suppress Adjacency: False
.... ..0. = Restart Acknowledgment: False
.... ...0 = Restart Request: False
LSP PDU
ISO 10589 ISIS Link State Protocol Data Unit
PDU length: 370
Remaining lifetime: 1196
LSP-ID: 0100.4922.6166.00-00
Sequence number: 0x0000000b
Checksum: 0x9869 [correct]
[Checksum Status: Good]
Type block(0x03): Partition Repair:0, Attached bits:0, Overload bit:0, IS type:3
0... .... = Partition Repair: Not supported
.000 0... = Attachment: 0
.0.. .... = Error metric: Not set
..0. .... = Expense metric: Not set
...0 .... = Delay metric: Not set
0... .... = Default metric: Not set
.... .0.. = Overload bit: Not set
.... ..11 = Type of Intermediate System: Level 2 (3)
Area address(es) (t=1, l=18)
Type: 1
Length: 18
Area address (13): 47.0005.80ff.f800.0000.0108.0001
Area address (3): 49.0001
Originating neighbor buffer size (t=14, l=2)
Type: 14
Length: 2
Neighbor originating buffer size: 1492
Protocols supported (t=129, l=2)
Type: 129
Length: 2
NLPIDs: IP (0xcc), IPv6 (0x8e)
NLPID: 0xcc
NLPID: 0x8e
Traffic Engineering Router ID (t=134, l=4)
Type: 134
Length: 4
Traffic Engineering Router ID: 17.0.0.4
IP Interface address(es) (t=132, l=4)
Type: 132
Length: 4
IPv4 interface address: 17.0.0.4
IPv6 TE Router ID (t=140, l=16)
Type: 140
Length: 16
IPv6 TE Router ID: abcd::128:49:226:166
Hostname (t=137, l=2)
Type: 137
Length: 2
Hostname: r4
Extended IS reachability (t=22, l=138)
Type: 22
Length: 138
IS Neighbor: 0100.4922.9056.00
IS neighbor ID: 0100.4922.9056.00
Metric: 1000
SubCLV Length: 58
subTLV: IPv4 interface address (c=6, l=4)
Code: IPv4 interface address (6)
Length: 4
IPv4 interface address: 17.8.2.2
subTLV: IPv6 Interface Address (c=12, l=16)
Code: IPv6 Interface Address (12)
Length: 16
IPv6 interface address: 2001:db88:8:2::2
subTLV: IPv4 neighbor address (c=8, l=4)
Code: IPv4 neighbor address (8)
Length: 4
IPv4 neighbor address: 17.8.2.1
subTLV: IPv6 Neighbor Address (c=13, l=16)
Code: IPv6 Neighbor Address (13)
Length: 16
IPv6 neighbor address: 2001:db88:8:2::1
subTLV: Link Local/Remote Identifiers (c=4, l=8)
Code: Link Local/Remote Identifiers (4)
Length: 8
Link Local Identifier: 357
Link Remote Identifier: 358
IS Neighbor: 0100.4922.7100.00
IS neighbor ID: 0100.4922.7100.00
Metric: 10
SubCLV Length: 58
subTLV: IPv4 interface address (c=6, l=4)
Code: IPv4 interface address (6)
Length: 4
IPv4 interface address: 17.8.3.2
subTLV: IPv6 Interface Address (c=12, l=16)
Code: IPv6 Interface Address (12)
Length: 16
IPv6 interface address: 2001:db88:8:3::2
subTLV: IPv4 neighbor address (c=8, l=4)
Code: IPv4 neighbor address (8)
Length: 4
IPv4 neighbor address: 17.8.3.1
subTLV: IPv6 Neighbor Address (c=13, l=16)
Code: IPv6 Neighbor Address (13)
Length: 16
IPv6 neighbor address: 2001:db88:8:3::1
subTLV: Link Local/Remote Identifiers (c=4, l=8)
Code: Link Local/Remote Identifiers (4)
Length: 8
Link Local Identifier: 358
Link Remote Identifier: 358
Extended IP Reachability (t=135, l=34)
Type: 135
Length: 34
Ext. IP Reachability: 128.49.226.166/32
Metric: 0
0... .... = Distribution: Up
.0.. .... = Sub-TLV: No
..10 0000 = Prefix Length: 32
IPv4 prefix: 128.49.226.166
no sub-TLVs present
Ext. IP Reachability: 17.8.2.0/24
Metric: 1000
0... .... = Distribution: Up
.0.. .... = Sub-TLV: No
..01 1000 = Prefix Length: 24
IPv4 prefix: 17.8.2.0
no sub-TLVs present
Ext. IP Reachability: 17.0.0.4/32
Metric: 0
0... .... = Distribution: Up
.0.. .... = Sub-TLV: No
..10 0000 = Prefix Length: 32
IPv4 prefix: 17.0.0.4
no sub-TLVs present
Ext. IP Reachability: 17.8.3.0/24
Metric: 10
0... .... = Distribution: Up
.0.. .... = Sub-TLV: No
..01 1000 = Prefix Length: 24
IPv4 prefix: 17.8.3.0
no sub-TLVs present
IP Interface address(es) (t=132, l=4)
Type: 132
Length: 4
IPv4 interface address: 128.49.226.166
IPv6 reachability (t=236, l=72)
Type: 236
Length: 72
IPv6 Reachability: abcd::128:49:226:166/128
Metric: 0
0... .... = Distribution: Up
.0.. .... = Distribution: Internal
..0. .... = Sub-TLV: No
Prefix Length: 128
IPv6 prefix: abcd::128:49:226:166
no sub-TLVs present
IPv6 Reachability: 2001:db88::4/128
Metric: 0
0... .... = Distribution: Up
.0.. .... = Distribution: Internal
..0. .... = Sub-TLV: No
Prefix Length: 128
IPv6 prefix: 2001:db88::4
no sub-TLVs present
IPv6 Reachability: 2001:db88:8:2::/64
Metric: 1000
0... .... = Distribution: Up
.0.. .... = Distribution: Internal
..0. .... = Sub-TLV: No
Prefix Length: 64
IPv6 prefix: 2001:db88:8:2::
no sub-TLVs present
IPv6 Reachability: 2001:db88:8:3::/64
Metric: 10
0... .... = Distribution: Up
.0.. .... = Distribution: Internal
..0. .... = Sub-TLV: No
Prefix Length: 64
IPv6 prefix: 2001:db88:8:3::
no sub-TLVs present
Router Capability (t=242, l=23)
Type: 242
Length: 23
Router ID: 0x11000004
.... ...0 = S bit: False
.... ..0. = D bit: False
IPv6 TE Router ID (t=12, l=16)
IPv6 TE Router ID: abcd::128:49:226:166
CSNP PDU
ISO 10589 ISIS Complete Sequence Numbers Protocol Data Unit
PDU length: 115
Source-ID: 0100.4922.7100
Source-ID-Circuit: 00
Start LSP-ID: 0000.0000.0000.00-00
End LSP-ID: ffff.ffff.ffff.ff-ff
LSP entries (t=9, l=80)
Type: 9
Length: 80
LSP Entry
LSP Sequence Number: 0x0000000a
Remaining Lifetime: 421
LSP checksum: 0x9a68
LSP-ID: 0100.4922.6166.00-00
LSP Entry
LSP Sequence Number: 0x0000000c
Remaining Lifetime: 623
LSP checksum: 0x5111
LSP-ID: 0100.4922.7100.00-00
LSP Entry
LSP Sequence Number: 0x0000000b
Remaining Lifetime: 902
LSP checksum: 0x99e7
LSP-ID: 0100.4922.9056.00-00
LSP Entry
LSP Sequence Number: 0x00000009
Remaining Lifetime: 632
LSP checksum: 0x76be
LSP-ID: 0100.4923.4086.00-00
LSP Entry
LSP Sequence Number: 0x0000000a
Remaining Lifetime: 1057
LSP checksum: 0xf074
LSP-ID: 0100.4923.5018.00-00
PSNP PDU
ISO 10589 ISIS Partial Sequence Numbers Protocol Data Unit
PDU length: 35
Source-ID: 0100.4923.5018
Source-ID-Circuit: 00
LSP entries (t=9, l=16)
Type: 9
Length: 16
LSP Entry
LSP Sequence Number: 0x0000000c
Remaining Lifetime: 1196
LSP checksum: 0x5111
LSP-ID: 0100.4922.7100.00-00
External Resources:
- ISIS Packets (Juniper)
- IS-IS TLV Codepoints (IANA)