↓ Skip to main content
  1. Network Articles/
  2. IS-IS Articles/

IS-IS Multiple Area Addresses (Multihoming), Merging and Splitting Areas

Table of Contents

IS-IS Multiple Area Addresses (Multihoming), Merging and Splitting Areas

An IS-IS router is configured with a NET (Network Entity Title), the ISO-style address (see IS-IS NSAP Addresses and the NET). A router can hold several of them. That is the mechanism for reshaping areas without an outage, and merging or splitting areas is done with it.

The standard allows several synonymous area addresses per area

Clause 7.1.5 of ISO/IEC 10589:2002 (second edition) permits an area to have several area addresses. Two reasons are given.

  1. More than one addressing authority may be involved in a routeing domain, and giving each one its own area is not efficient
  2. A domain sometimes has to be reconfigured: an area split in two, or several areas combined into one. With only one address per area, that reconfiguration could not be done while the domain is running

The addresses are held in the management parameter manualAreaAddresses, and all of an IS’s manualAreaAddresses combined with its System ID are valid NETs for that IS.

ConstraintDetail
System IDMust be the same in every NET. Only the Area ID may differ
How manyThe management parameter maximumAreaAddresses. All ISs shall support a value of at least 3 (7.1.5)
AgreementmaximumAreaAddresses is carried in the protocol’s PDUs and checked for agreement within an area. A mismatch can keep adjacencies from initialising or partition the area

A Level 1 adjacency needs just one address in common

Clause 7.1.5 states that two Level 1 ISs need at least one area address in common between their manualAreaAddresses lists. Clause 7.1.4 d) says the same for an End system becoming a neighbour of a Level 1 IS: its area address must match the IS’s own NET, or one of the other entries in that IS’s manualAreaAddresses.

Two things follow.

  • A router does not belong to several areas at once. Configuring several addresses merges those areas into one
  • A merge starts from one side alone. Add the other area’s address to a border router and a common address exists from that moment, so a Level 1 adjacency forms

The procedure for merging and splitting

Reshaping an area is done by giving the border routers both addresses first and removing the unwanted one afterwards.

OperationProcedure
MergeAdd B’s address on the border of area A, then add A’s address on the border of area B
SplitRemove only the other area’s address from the side being separated, then from the other side

Getting the order wrong splits the area in an unintended place. When the common address disappears first, that router loses the adjacencies that were supposed to be inside its own area. The lab below shows that failure.

Lab setup

Six XRd 26.1.1 routers, with two border routers (R2 and R3). Two borders make it possible to observe the state where an area address has been added or removed on one side only.

Routeris-typeNETLo0
R1level-149.0001.0010.0100.1001.001.1.1.1/32
R5level-149.0001.0050.0500.5005.005.5.5.5/32
R2level-1-249.0001.0020.0200.2002.002.2.2.2/32
R3level-1-249.0002.0030.0300.3003.003.3.3.3/32
R4level-149.0002.0040.0400.4004.004.4.4.4/32
R6level-149.0002.0060.0600.6006.006.6.6.6/32

Overview of the STEPs

STEPActionWhat it shows
0Initial stateR2-R3 is Level 2 only. Each area’s Level 1 LSDB holds three LSPs
1Add 49.0002 on R2 (one side only)A common address appears; does a Level 1 adjacency form on R2-R3
2Add 49.0001 on R3 (both sides)The areas merge into one and the LSDB grows to six
3Remove 49.0001 from R2 (the wrong way to split)The common address with R1 and R5 is gone; do those adjacencies drop
4Restore 49.0001 on R2Recovery
5Remove 49.0001 from R3Correct split, first half
6Remove 49.0002 from R2Split complete, back to the initial state
7Give R2 three NETs, then try a fourthIs it rejected by maximumAreaAddresses
8Remove the two extra NETs (final state)Same as the initial state

One side is enough for a Level 1 adjacency

In the initial state R2 and R3 have different Area IDs, so only a Level 2 adjacency exists.

STEP 0: show isis neighbors on R2
RP/0/RP0/CPU0:R2#show isis neighbors
Sun Oct  4 06:30:07.424 UTC

IS-IS 1 neighbors:
System Id      Interface        SNPA           State Holdtime Type IETF-NSF
R1             Gi0/0/0/0        *PtoP*         Up    25       L1   Capable 
R5             Gi0/0/0/2        *PtoP*         Up    22       L1   Capable 
R3             Gi0/0/0/1        *PtoP*         Up    29       L2   Capable 

Total neighbor count: 3

A NET for 49.0002 is added on R2 alone. The System ID is unchanged.

STEP 1: the configuration committed on R2
RP/0/RP0/CPU0:R2#show configuration commit changes last 1
Sun Oct  4 06:32:27.761 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router isis 1
 net 49.0002.0020.0200.2002.00
!
end

R2 now holds two area addresses.

STEP 1: show isis on R2 (excerpt)
RP/0/RP0/CPU0:R2#show isis
Sun Oct  4 06:34:59.510 UTC

IS-IS Router: 1
  System Id: 0020.0200.2002 
  Hostname: R2
  IS Levels: level-1-2
  Manual area address(es):
    49.0001
    49.0002
  Routing for area address(es):
    49.0001
    49.0002
  Multi-Instance Id: 0

Although nothing was changed on R3, the R2-R3 adjacency becomes L1L2.

STEP 1: show isis neighbors on R2
RP/0/RP0/CPU0:R2#show isis neighbors
Sun Oct  4 06:35:00.422 UTC

IS-IS 1 neighbors:
System Id      Interface        SNPA           State Holdtime Type IETF-NSF
R1             Gi0/0/0/0        *PtoP*         Up    24       L1   Capable 
R5             Gi0/0/0/2        *PtoP*         Up    24       L1   Capable 
R3             Gi0/0/0/1        *PtoP*         Up    28       L1L2 Capable 

Total neighbor count: 3

One address (49.0002) is now in common, exactly as 7.1.5 says. With R1 and R5, 49.0001 is still in common, so those stay Level 1. R2 has become the router that joins the two areas into one.

Adding it on both sides merges the areas

Adding 49.0001 on R3 gives both borders two addresses.

STEP 2: show isis on R2 (excerpt)
RP/0/RP0/CPU0:R2#show isis
Sun Oct  4 06:39:56.718 UTC

IS-IS Router: 1
  System Id: 0020.0200.2002 
  Hostname: R2
  IS Levels: level-1-2
  Manual area address(es):
    49.0001
    49.0002
  Routing for area address(es):
    49.0001
    49.0002
  Multi-Instance Id: 0
STEP 2: show isis on R3 (excerpt)
RP/0/RP0/CPU0:R3#show isis
Sun Oct  4 06:40:23.665 UTC

IS-IS Router: 1
  System Id: 0030.0300.3003 
  Hostname: R3
  IS Levels: level-1-2
  Manual area address(es):
    49.0002
    49.0001
  Routing for area address(es):
    49.0002
    49.0001
  Multi-Instance Id: 0

The Level 1 LSDB now holds six LSPs: what were two areas is now one.

STEP 2: show isis database on R2
RP/0/RP0/CPU0:R2#show isis database
Sun Oct  4 06:39:58.688 UTC

IS-IS 1 (Level-1) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00              0x00000006   0xdcb5        545  /1200         0/0/0
R2.00-00            * 0x0000000b   0xe2e0        756  /*            0/0/0
R3.00-00              0x0000000d   0x917d        1044 /1200         0/0/0
R4.00-00              0x00000006   0x2cab        756  /836          0/0/0
R5.00-00              0x00000006   0xce0a        543  /1200         0/0/0
R6.00-00              0x00000005   0x1868        756  /1001         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
R2.00-00            * 0x0000000c   0xd845        757  /*            0/0/0
R3.00-00              0x0000000c   0x34e4        757  /1200         0/0/0

 Total Level-2 LSP count: 2     Local Level-2 LSP count: 1

Splitting in the wrong order breaks the area apart

Attempting to split by removing 49.0001 from R2 first — the address it had in common with R1 and R5.

STEP 3: the configuration committed on R2
RP/0/RP0/CPU0:R2#show configuration commit changes last 1
Sun Oct  4 06:42:17.245 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router isis 1
 no net 49.0001.0020.0200.2002.00
!
end

R2 is left with R3 as its only neighbour.

STEP 3: show isis neighbors on R2
RP/0/RP0/CPU0:R2#show isis neighbors
Sun Oct  4 06:47:09.199 UTC

IS-IS 1 neighbors:
System Id      Interface        SNPA           State Holdtime Type IETF-NSF
R3             Gi0/0/0/1        *PtoP*         Up    22       L1L2 Capable 

Total neighbor count: 1

R1’s syslog gives the reason.

STEP 3: syslog on R1 (excerpt)
RP/0/RP0/CPU0:Oct  4 06:42:22.912 UTC: isis[1003]: %ROUTING-ISIS-5-ADJCHANGE : ISIS (1): Adjacency to R2 (GigabitEthernet0/0/0/0) (L1) Down, Area addr/level differ 

In this state all six ping paths stop. R1 and R5 are cut off from the area, so everything that goes through R2 is lost.

STEPR1→R4R1→R6R1→R5R4→R1R6→R1R5→R4
0 (initial state)100%100%100%100%100%100%
1 (merged on one side)100%100%100%100%100%100%
2 (merged)100%100%100%100%100%100%
3 (wrong way to split)0%0%0%0%0%0%
4 (restored)100%100%100%100%100%100%
5 and 6 (correct split)100%100%100%100%100%100%

The correct order is to remove only the other area’s address from the side being separated. STEP 5 removed 49.0001 from R3 and STEP 6 removed 49.0002 from R2; reachability stayed at 100% throughout.

After a split, the other area’s LSPs do not disappear at once

Right after the split, R2’s Level 1 LSDB still holds the LSPs of R3, R4 and R6 that arrived while the areas were merged. They are not purged: they simply stop being refreshed and age out at MaxAge.

STEP 6: show isis database on R2
RP/0/RP0/CPU0:R2#show isis database
Sun Oct  4 07:01:58.416 UTC

IS-IS 1 (Level-1) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00              0x00000009   0xd6b8        456  /1199         0/0/0
R2.00-00            * 0x00000013   0x443d        1047 /*            1/0/0
R3.00-00              0x0000000f   0x73ea        746  /1200         0/0/0
R4.00-00              0x00000008   0x28ad        825  /1200         0/0/0
R5.00-00              0x00000008   0xca0c        453  /1199         0/0/0
R6.00-00              0x00000007   0x146a        836  /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
R2.00-00            * 0x00000013   0xe24a        1047 /*            0/0/0
R3.00-00              0x00000013   0xe110        1047 /1199         0/0/0

 Total Level-2 LSP count: 2     Local Level-2 LSP count: 1
STEP 8: show isis database on R2
RP/0/RP0/CPU0:R2#show isis database
Sun Oct  4 07:12:23.984 UTC

IS-IS 1 (Level-1) Link State Database
LSPID                 LSP Seq Num  LSP Checksum  LSP Holdtime/Rcvd  ATT/P/OL
R1.00-00              0x0000000a   0xd4b9        693  /1200         0/0/0
R2.00-00            * 0x00000015   0x403f        1046 /*            1/0/0
R3.00-00              0x0000000f   0x73ea        120  /1200         0/0/0
R4.00-00              0x00000008   0x28ad        199  /1200         0/0/0
R5.00-00              0x00000009   0xc80d        598  /1200         0/0/0
R6.00-00              0x00000007   0x146a        211  /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
R2.00-00            * 0x00000015   0xde4c        1046 /*            0/0/0
R3.00-00              0x00000014   0xdf11        1149 /1200         0/0/0

 Total Level-2 LSP count: 2     Local Level-2 LSP count: 1

The LSPs of R3, R4 and R6 keep the same sequence numbers while their LSP Holdtime falls (R3 goes from 746 to 120). R1 and R5, in the same area, have advancing sequence numbers and refreshed holdtimes.

Three area addresses is the limit

With two more NETs added to R2, making three, a fourth is rejected.

STEP 7: show configuration failed when the fourth NET is committed
RP/0/RP0/CPU0:R2(config-isis)#show configuration failed
Sun Oct  4 07:04:47.014 UTC
!! SEMANTIC ERRORS: This configuration was rejected by 
!! the system due to semantic errors. The individual 
!! errors with each failed configuration command can be 
!! found below.


router isis 1
 net 49.0005.0020.0200.2002.00
!!% Maximum area address count exceeded: maximum number of area addresses is 3
!
end

The message says maximum number of area addresses is 3. This is the implementation of “all ISs shall support a value of at least 3” from 7.1.5, and XRd 26.1.1 has no command to raise it.

The System ID cannot change

Only the Area ID may differ between NETs. A NET with a different System ID is rejected.

show configuration failed when a NET with a different System ID is committed
RP/0/RP0/CPU0:R1(config-isis)#show configuration failed
Sun Oct  4 06:20:49.138 UTC
!! SEMANTIC ERRORS: This configuration was rejected by 
!! the system due to semantic errors. The individual 
!! errors with each failed configuration command can be 
!! found below.


router isis 1
 net 49.0001.0099.0999.9999.00
!!% System ID must not change: 0010.0100.1001
!
end

Verification configs and show output

Collected from all six routers in every STEP. The verification config is the ..._run.txt file (the final state is the one from STEP 8).

FileContents
..._show.txtThe show set (30 to 32 commands depending on the role): show isis / show isis neighbors detail / show isis database detail / show isis database level 1 / level 2 / show isis adjacency-log / show route isis and more
..._ping.txtping (20 packets) and traceroute
..._clear.txtRecord of the interface counters cleared in that STEP
..._commit.cfgOnly the configuration committed in that STEP
..._failed.cfgThe rejected configuration (the fourth NET in STEP 7)
..._log.txtshow logging limited to the range of that STEP
..._run.txtshow running-config at that STEP (the verification config for the STEP)
..._trace.txtshow isis trace standard | include ADJ

STEP 0: Initial state (two areas)

Routershowping / tracerouteclearConfig committedConfig rejectedsyslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clear——logruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 1: A NET for 49.0002 added on R2 only

Routershowping / tracerouteclearConfig committedConfig rejectedsyslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clearcommit—logruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 2: A NET for 49.0001 added on R3 as well (merged)

Routershowping / tracerouteclearConfig committedConfig rejectedsyslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clear——logruntrace
R3show—clearcommit—logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 3: 49.0001 removed from R2 (the wrong way to split)

Routershowping / tracerouteclearConfig committedConfig rejectedsyslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clearcommit—logruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 4: 49.0001 restored on R2

Routershowping / tracerouteclearConfig committedConfig rejectedsyslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clearcommit—logruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 5: 49.0001 removed from R3 (correct split, first half)

Routershowping / tracerouteclearConfig committedConfig rejectedsyslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clear——logruntrace
R3show—clearcommit—logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 6: 49.0002 removed from R2 (split complete)

Routershowping / tracerouteclearConfig committedConfig rejectedsyslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clearcommit—logruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 7: R2 given three NETs, then a fourth attempted

Routershowping / tracerouteclearConfig committedConfig rejectedsyslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clearcommitfailedlogruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

STEP 8: The two extra NETs removed from R2 (final state)

Routershowping / tracerouteclearConfig committedConfig rejectedsyslogrunning-configtrace
R1showpingclear——logruntrace
R2show—clearcommit—logruntrace
R3show—clear——logruntrace
R4showpingclear——logruntrace
R5showpingclear——logruntrace
R6showpingclear——logruntrace

Packet captures were taken per STEP on two links.

STEPR1-R2R2-R3 (between the border routers)
0pcappcap
1pcappcap
2pcappcap
3pcappcap
4pcappcap
5pcappcap
6pcappcap
7pcappcap
8pcappcap

References

StandardTitleSummary
ISO/IEC 10589:2002 (second edition)Intermediate System to Intermediate System intra-domain routeing information exchange protocol7.1.5 for several synonymous area addresses, manualAreaAddresses and maximumAreaAddresses (“all ISs shall support a value of at least 3”, the value being carried in PDUs and checked for agreement), 7.1.4 d) for the condition on adjacencies, and 7.1.3.2 for the structure of the System ID.
RFC 1195Use of OSI IS-IS for Routing in TCP/IP and Dual EnvironmentsThe extension that carries IP routes in IS-IS (Integrated IS-IS).

Related articles