Multi Area
Load isis.multi.area.cfg
#IOS-XE
config replace flash:isis.multi.area.cfg
#IOS-XR
configure
load bootflash:isis.multi.area.cfg
commit replace
y

All routers are pre-configured in their respective ISIS areas. All links are L1-only except for Gi2.36 on R3 and R6. Without changing the L1-only areas or changing the circuit types, fix the design so that inter-area routing is achieved.
Answer
The solution to this involves setting multiple NET addresses on R3 and R6. This allows these routers to participate in multiple ISIS areas. The problem is that ISIS by default allows up to 3 areas on a single router. This is a negotiated value in the ISIS hello. R6 will need to participate in 4 areas. So first, we would change the maximum areas supported on all routers to 4.
#R1-R6
router isis
max-area-addresses 4
Unfortunately, IOS-XR does not support a different max-area-address number besides 0 or 3. (0 implies a value of 3). So we cannot use this solution.
Instead we will have to leave the default at 3 max addresses and not create an adjacency between R4-R6. We will configure R3 and R6 with additional NET addresses.
#R3
router isis
net 49.0012.0000.0000.0003.00
net 49.0004.0000.0000.0003.00
#R6
router isis
net 49.0005.0000.0000.0006.00
net 49.1920.0000.0000.0006.00
Note that if you try to configure more than 3 NET addresses, you get an error:
R3(config-router)# net 49.0005.0000.0000.0003.00
%The maximum allowed addresses already configured
Also, you will get an error if you try to use a different sys ID on each NET address:
R3(config-router)# net 49.0005.0000.0000.0004.00
%CLNS: System ID (0000.0000.0003.00) must not change when defining additional area addresses
Verification
R3 should have an L1 adj with R2 and R4, and an L2 adj with R6.

R6 should have an L1 adj with R5 and XR1, and an L2 adj with R3.

At this point, you may need to restart isis * to allow the L1-only routers to install a default route via the L1/L2 routers.
Using a tclsh script we should be able to ping all loopbacks from each router:
tclsh
foreach X {
1.1.1.1
2.2.2.2
3.3.3.3
4.4.4.4
5.5.5.5
6.6.6.6
19.19.19.19
20.20.20.20
} { ping $X so lo0 }
Note that R3 and R6 essentially merge the different area addresses into a single L1 area. This was a little counter-intuitive to me at first. Looking at R3, we can see that it has only a single L1 topology, even though it participates in two separate L1 areas (49.0012 and 49.0004):

On the L1-only routers, such as R2, we see that it has the LSP for R4 in its database. Although ISIS neighborships only form for L1 when the area IDs match, that does not require all LSPs in the L1 database to have the same area address!

So we can say that R3 and R6 are essentially merging the areas together into a single L1 area. This one area is represented by multiple area addresses.
Last updated