The DIS and the Pseudonode
When several routers sit on one broadcast segment, IS-IS elects one of them as the representative: the DIS (Designated Intermediate System). The role corresponds to OSPF’s DR, but the resemblance stops at the name and the idea of electing a representative — the mechanics differ considerably.
The DIS’s central job is to build, on everyone’s behalf, a fictitious node in the database called the pseudonode. This article looks at what the pseudonode solves, how the DIS is elected, and where it parts company with OSPF’s DR, checking each point on real equipment.
Where the Priority and LAN ID fields sit inside a LAN IIH is covered in IS-IS Packet Types and Header Format. This article is about what they are for: how the DIS gets decided, and how the pseudonode is built.
What the Pseudonode Solves
A broadcast segment is a place where everyone reaches everyone directly. Represented literally in a link-state database, that is n routers in a full mesh, which is n(n−1)/2 links: 6 for four routers, 45 for ten. It grows fast.
To avoid that, clause 3.6.7 of ISO/IEC 10589:2002 treats the segment itself as a single node.
Where a broadcast subnetwork has n connected Intermediate systems, the broadcast subnetwork itself is considered to be a pseudonode. The pseudonode has links to each of the n Intermediate and End systems. Each of the ISs has a single link to the pseudonode (rather than n-1 links to each of the other Intermediate systems).
The link count drops from n(n−1)/2 to n. Clause 7.2.3 then states that each router reports only its link to the pseudonode, and the DIS constructs the pseudonode’s own LSPs on its behalf.
That is what the DIS fundamentally does. Not “speak for the others” so much as ghost-write the LSP of a fictitious node called the LAN — reading it that way makes the rest of the behaviour follow naturally.
The Pseudonode LSP Carries a Metric of Zero
Introducing a pseudonode creates a risk of counting a path’s cost twice, since getting from R2 to R3 now traverses two links: R2 to the pseudonode, and the pseudonode to R3.
ISO/IEC 10589:2002 resolves this by making every metric in the pseudonode’s LSP zero. The footnote to clause 7.2.3 gives the reason.
They are set to zero metric values since they have already been assigned metrics by the link to the pseudonode. Assigning a non-zero metric in the pseudonode LSP would have the effect of doubling the actual value.
In other words the cost is paid only in the router-to-pseudonode direction; pseudonode-to-router is free. That asymmetry is what lets a broadcast segment count correctly as a single hop.
Electing the DIS
The rule is in clause 8.4.5 of ISO/IEC 10589:2002, and it is very short.
A LAN Designated Intermediate System is the highest priority Intermediate system in a particular set on the LAN, with numerically highest MAC source SNPAAddress breaking ties.
| Order | Condition |
|---|---|
| 1 | The IS with the highest priority. IOS XR defaults to 64, configurable from 0 to 127 |
| 2 | On a tie, the IS with the numerically highest SNPA (MAC address) |
The standard adds that a router must not declare itself DIS until it has at least one Up adjacency — a guard against a box with a broken receiver deciding it is the DIS while hearing nobody.
Level 1 and Level 2 elect their DIS separately. On one LAN the Level 1 DIS and the Level 2 DIS can be different routers, in which case two pseudonodes exist.
Differences from OSPF’s DR
The names are alike; the designs are not. These three points prevent most of the confusion.
| Aspect | OSPF DR | IS-IS DIS |
|---|---|---|
| Backup | There is a BDR, ready to take over instantly | There is none. ISO/IEC 10589 has no concept of a backup DIS; when one goes, the election simply re-runs |
| Raising a priority | Does not take over (non-preemptive). The existing DR stays | Takes over (preemptive). Clause 8.4.5 says a router resigns because “some other Intermediate system of higher priority has taken over that function” |
| Adjacencies | Full adjacency only with the DR and BDR | Adjacency with everyone. What is collapsed is the database representation, not the adjacencies |
The third is the one most often misread. The pseudonode is purely a database representation; it does not reduce IIH exchanges or the number of adjacencies. On real equipment, each router on a four-router LAN holds three adjacencies.
Re-election is quick because the election re-runs on every IIH sent or received (8.4.5). With no need to decide a successor in advance, nothing like a BDR is required.
Verification on Real Equipment
The test environment
Four routers were placed on a single broadcast segment (10.1.0.0/24). All are in area 49.0001, all are level-1-2, and none of the LAN interfaces carries point-to-point.
| Router | NET | SNPA (MAC address) |
|---|---|---|
| R1 | 49.0001.0010.0100.1001.00 | 5254.00a3.a6fa |
| R2 | 49.0001.0020.0200.2002.00 | 5254.0075.d9dc |
| R3 | 49.0001.0030.0300.3003.00 | 5254.003a.d413 |
| R4 | 49.0001.0040.0400.4004.00 | 5254.0089.cc01 |
Every priority is the default 64, so R1, with the highest SNPA, should become the DIS.
The test STEPs
| STEP | Action | Purpose |
|---|---|---|
| 0 | Initial state | The election result and the contents of the pseudonode LSP |
| 1 | Set R3’s priority to 100 | Preemption. Can R3, with the lowest MAC, take the role? |
| 2 | Set R2’s priority to 110 for Level 2 only | A per-level DIS. Do two pseudonodes appear on one LAN? |
| 3 | shutdown R3’s LAN interface | Re-election. Confirming there is no backup |
| 4 | Restore the priorities and the shutdown (final state) | Same as the initial state |
Two IOS XR commands proved useful.
| Command | What it shows |
|---|---|
show isis trace all | include ELECT | DIS_RUN_ELECTION / DIS_TRIGGER_ELECTION / DIS_ELECTION_RESULT_* — the election itself |
show isis trace all | include PSEUDO | LOCAL_PSEUDO_BUILD_START to LOCAL_PSEUDO_NARROW_LINK_ADD to LOCAL_PSEUDO_BUILD_END — the pseudonode LSP being assembled |
show isis trace selects by severity (all / detailed / only / severe / standard); all runs to nearly 4000 lines, so narrow it on the device with | include. Note that | include DIS matches the unrelated DIST_ distribution entries and is not usable.
The Initial DIS (STEP 0)
Level-1
Adjacency Count: 3
Adjacency Flaps: 0
LAN ID: R1.01
Priority (Local/DIS): 64/64
Next LAN IIH in: 1 s
LSP Pacing Interval: 33 ms
PSNP Entry Queue Size: 0
Hello Interval: 10 s
Hello Multiplier: 3
Level-2
Adjacency Count: 3
Adjacency Flaps: 0
LAN ID: R1.01
Priority (Local/DIS): 64/64LAN ID: R1.01 is the same at both levels, so R1 is the DIS for Level 1 and Level 2 alike. With every priority at 64, R1 won on having the highest SNPA. Priority (Local/DIS): 64/64 reads “our priority / the DIS’s priority”, and both are 64.
Note Adjacency Count: 3 as well. A pseudonode does not reduce the number of adjacencies. On a four-router LAN each router is adjacent to all three others.
Inside the pseudonode LSP
R1.01-00 0x00000008 0xb492 636 /* 0/0/0
Metric: 0 IS R4.00
Metric: 0 IS R3.00
Metric: 0 IS R2.00
Metric: 0 IS R1.00
R2.00-00 0x00000006 0x8090 619 /1200 0/0/0
Area Address: 49.0001
LSP MTU: 1492
NLPID: 0xcc
IP Address: 2.2.2.2
Hostname: R2
Metric: 0 IP 2.2.2.2/32
Metric: 10 IP 10.1.0.0/24
Metric: 10 IS R1.01The first part is the pseudonode LSP R1.01-00. It lists all four routers on the LAN, and every metric is zero.
The second part is R2’s own LSP, whose only reference to an intermediate system is the single line Metric: 10 IS R1.01. There is no direct link to R3 or R4. Each router reports only its one link to the pseudonode, exactly as 7.2.3 requires.
Put together, the cost from R2 to R3 is 10 (R2 to the pseudonode) plus 0 (pseudonode to R3), giving 10. Had the pseudonode LSP carried a metric of 10, the answer would be 20 — twice the real cost, exactly as the standard’s footnote warns.
Taking the Role by Priority (STEP 1)
R3’s priority was raised to 100. R3 has the lowest SNPA of the four, which makes it plain whether priority alone can win the role.
router isis 1
interface GigabitEthernet0/0/0/0
priority 100IS-IS 1 (Level-1) Link State Database
LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL
R1.00-00 * 0x00000007 0x24d2 1100 /* 0/0/0
R1.01-00 0x00000009 0x9aef 0 (1099)/* 0/0/0
R2.00-00 0x00000008 0xa228 1100 /1200 0/0/0
R3.00-00 0x00000007 0x257b 1099 /1200 0/0/0
R3.01-00 0x00000001 0x60a9 1099 /1200 0/0/0
R4.00-00 0x00000008 0xa3d0 1100 /1200 0/0/0The old DIS’s pseudonode LSP R1.01-00 now shows a Holdtime of 0 — it has been purged. In its place R3.01-00 has appeared with sequence number 0x00000001, freshly created.
This is the behaviour clause 7.2.3 of ISO/IEC 10589:2002 prescribes.
When an Intermediate system resigns as Designated Intermediate System, it shall initiate a network wide purge of its pseudonode Link State PDU(s) by setting their Remaining Lifetime to zero.
A single screen shows both that priority overrides the lowest MAC and that a change of DIS entails rebuilding the pseudonode LSP.
The handover in the capture
No type LSP-ID life seq
23 L1 LSP 0010.0100.1001.01-00 0 0x00000008
24 L2 LSP 0010.0100.1001.01-00 0 0x00000008
...
41 L1 LSP 0030.0300.3003.01-00 1200 0x00000001
43 L2 LSP 0030.0300.3003.01-00 1199 0x000000010010.0100.1001.01-00 is R1.01 and 0030.0300.3003.01-00 is R3.01. The old DIS’s pseudonode is purged with life=0 and the new one is born with seq=1, right there on the wire.
The router re-running the election
Sep 9 06:51:42.059 isis/1/det ... isis_dis_run_election:778 DIS_ELECTION_RESULT_DIS_EXISTS L1 Gi0/0/0/0
Sep 9 06:51:42.059 isis/1/det ... isis_dis_run_election:778 DIS_ELECTION_RESULT_DIS_EXISTS L2 Gi0/0/0/0
Sep 9 06:51:43.049 isis/1/det ... isis_dis_trigger_election:964 DIS_TRIGGER_ELECTION L1 Gi0/0/0/0 0030.0300.3003
Sep 9 06:51:43.049 isis/1/det ... isis_dis_trigger_election:964 DIS_TRIGGER_ELECTION L2 Gi0/0/0/0 0030.0300.3003DIS_TRIGGER_ELECTION ends with 0030.0300.3003 (R3): a record that receiving R3’s IIH is what made R1 re-run the election. The commit on R3 happened at 06:51:41, so the reaction came two seconds later.
On R3, the new DIS, the assembly of the pseudonode LSP was recorded.
Sep 9 06:51:42.103 isis/1/lsp ... LOCAL_PSEUDO_BUILD_START L1 Gi0/0/0/0 Node Num: 1
Sep 9 06:51:42.103 isis/1/std ... LOCAL_PSEUDO_NARROW_LINK_ADD L1 Gi0/0/0/0 Node Num: 1 0030.0300.3003.00
Sep 9 06:51:42.103 isis/1/std ... LOCAL_PSEUDO_NARROW_LINK_ADD L1 Gi0/0/0/0 Node Num: 1 0010.0100.1001.00
Sep 9 06:51:42.103 isis/1/std ... LOCAL_PSEUDO_NARROW_LINK_ADD L1 Gi0/0/0/0 Node Num: 1 0020.0200.2002.00
Sep 9 06:51:42.103 isis/1/std ... LOCAL_PSEUDO_NARROW_LINK_ADD L1 Gi0/0/0/0 Node Num: 1 0040.0400.4004.00
Sep 9 06:51:42.103 isis/1/lsp ... LOCAL_PSEUDO_BUILD_END L1 Gi0/0/0/0 Node Num: 1 1BUILD_START is followed by NARROW_LINK_ADD four times — the four routers on the LAN, R3 included — and closed by BUILD_END. The pseudonode LSP being assembled as “links to everyone on the LAN” is recorded step by step.
A Different DIS per Level (STEP 2)
IOS XR can set the priority per level. R2’s Level 2 priority alone was raised to 110.
router isis 1
interface GigabitEthernet0/0/0/0
priority 110 level 2 Level-1
Adjacency Count: 3
Adjacency Flaps: 0
LAN ID: R3.01
Priority (Local/DIS): 64/100
Level-2
Adjacency Count: 3
Adjacency Flaps: 0
LAN ID: R2.01
Priority (Local/DIS): 64/110The Level 1 DIS is now R3 (priority 100) and the Level 2 DIS is R2 (priority 110). The right-hand number of Priority (Local/DIS) is the priority of that level’s DIS.
The database shows two pseudonodes on the same LAN.
IS-IS 1 (Level-1) Link State Database
LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL
R1.00-00 * 0x00000007 0x24d2 839 /* 0/0/0
R1.01-00 0x00000009 0x9aef 0 (838)/* 0/0/0
R2.00-00 0x00000008 0xa228 839 /1200 0/0/0
R3.00-00 0x00000007 0x257b 838 /1200 0/0/0
R3.01-00 0x00000001 0x60a9 838 /1200 0/0/0
R4.00-00 0x00000008 0xa3d0 839 /1200 0/0/0
Total Level-1 LSP count: 6 Local Level-1 LSP count: 1
IS-IS 1 (Level-2) Link State Database
LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL
R1.00-00 * 0x0000000f 0xfa2b 1097 /* 0/0/0
R1.01-00 0x00000009 0x9aef 0 (838)/* 0/0/0
R2.00-00 0x0000000f 0x807e 1096 /1200 0/0/0
R2.01-00 0x00000001 0xd556 1096 /1200 0/0/0
R3.00-00 0x0000000d 0x0acf 1097 /1200 0/0/0
R4.00-00 0x0000000e 0x8d24 1097 /1200 0/0/0The Level 1 database holds R3.01-00, the Level 2 database R2.01-00. One physical LAN, represented by a different pseudonode at each level — a vivid illustration of the Level 1 and Level 2 databases being entirely separate (levels are covered in Level 1 and Level 2).
Note that R3.01-00 has disappeared from the Level 2 database. R3 stopped being the Level 2 DIS, so it purged only its Level 2 pseudonode LSP. Resignation happens per level.
When the DIS Goes Away (STEP 3)
R3, the Level 1 DIS, had its LAN interface shut down.
interface GigabitEthernet0/0/0/0
shutdown Level-1
Adjacency Count: 2
LAN ID: R1.01
Priority (Local/DIS): 64/64
Level-2
Adjacency Count: 2
LAN ID: R2.01
Priority (Local/DIS): 64/110The Level 1 DIS moved to R1. The remaining R1, R2 and R4 all sit at priority 64 (R2’s 110 applies only to Level 2), so the highest SNPA won again. The Level 2 DIS is still R2, untouched.
IS-IS 1 (Level-1) Link State Database
LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL
R1.00-00 * 0x00000008 0xfb3e 1092 /* 0/0/0
R1.01-00 0x0000000a 0xe651 1092 /* 0/0/0
R2.00-00 0x0000000a 0x7894 1093 /1200 0/0/0
R3.00-00 0x00000007 0x257b 594 /1200 0/0/0
R3.01-00 0x00000001 0xe16c 0 (1092)/* 0/0/0
R4.00-00 0x0000000a 0x793d 1093 /1200 0/0/0R3.01-00 is purged and R1.01-00 is back.
What this STEP set out to confirm is that no backup had been prepared. OSPF would have had a BDR decided in advance and ready to promote; IS-IS has no such thing. Once R3 was gone, the remaining three re-ran the election on the spot and settled on R1. Because the election runs on every IIH sent or received, there is no need to nominate a successor ahead of time.
The lost adjacency is in the log as well.
07:00:00.552 R3 Gi0/0/0/0 u -> d Holdtime expired
IPv4 Unicast DownSTEP 4 restored the priorities and the shutdown, and the DIS returned to R1 at both levels, matching the initial state.
Verification Config and show Output
At every STEP the following three files were collected from all four routers, separately per router. The verification config is the ..._run.txt file (the final state being the STEP 4 one).
| File | Content |
|---|---|
..._show.txt | show version / show interface description / show route / show route isis / show isis / show isis hostname / show isis interface / show isis interface brief / show isis neighbors / show isis neighbors detail / show isis database / show isis database detail / show isis topology / show isis adjacency / show isis adjacency detail / show isis adjacency-log / show isis trace all | include ELECT / show isis trace all | include PSEUDO / show isis spf-log / show isis lsp-log / show isis statistics / show cef |
..._log.txt | show logging narrowed to that STEP (STEP 0 holds the full history since boot) |
..._run.txt | show running-config at that STEP (that is, the verification config for the STEP) |
In the final configuration none of the four routers has a priority configured, leaving the default of 64. The priority from STEPs 1 and 2 and the shutdown from STEP 3 were all removed in STEP 4.
STEP 0: initial state
| Router | show output | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
STEP 1: R3’s priority set to 100
| Router | show output | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
STEP 2: R2’s Level 2 priority set to 110
| Router | show output | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
STEP 3: R3’s LAN interface shut down
| Router | show output | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
STEP 4: priorities and the shutdown restored (final state)
| Router | show output | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| There are three capture files. |
Download the capture from preemption, STEP 1 (isis-dis-preempt.pcap)
Download the capture from splitting the DIS per level, STEP 2 (isis-dis-level.pcap)
Download the capture from re-election, STEP 3 (isis-dis-reelect.pcap)
References
| Standard | Title | Summary |
|---|---|---|
| ISO/IEC 10589:2002 (Second Edition) | Intermediate System to Intermediate System intra-domain routeing information exchange protocol | The IS-IS specification itself. This article draws on 3.6.6 / 3.6.7 (definitions of the DIS and the pseudonode), 7.2.3 (how a broadcast subnetwork is handled, and the zero metric), 7.3.8 (generating pseudonode LSPs), 7.3.16.4 (purging an LSP), 8.4.5 (electing the DIS), 9.5 / 9.6 (the Priority and LAN ID fields of a LAN IIH) and 11.3 (management-parameter defaults). |
| RFC 1142 | OSI IS-IS Intra-domain Routing Protocol | A republication of the ISO 10589 Draft Proposal (1990), now Historic. It must not be referenced in place of ISO/IEC 10589 (see RFC 7142). |
| RFC 7142 | Reclassification of RFC 1142 to Historic | States that references should be to ISO/IEC 10589:2002, Second Edition. |
| RFC 1195 | Use of OSI IS-IS for Routing in TCP/IP and Dual Environments | The extension that carries IP routes. |