Running IS-IS Over Unnumbered/LLA-only Interfaces

IS-IS does not use IPv4 or IPv6 to exchange routing information. It uses a dedicated layer-3 protocol (it has its own 802.1 Service Access Point – SAP) and transports IPv4/IPv6 information only in various TLVs inside the LSPs.

Running IS-IS over point-to-point or multi-access unnumbered interfaces should be a no-brainer, but do all IS-IS implementations support that? You can test that in this lab exercise, which contains a point-to-point link between two routers and a LAN segment.

Lab topology

Device Requirements

Use any device supported by the netlab IS-IS configuration module. It’s best if the device supports unnumbered IPv4 interfaces.

Starting the Lab

You can start the lab on your own lab infrastructure or in GitHub Codespaces (more details):

  • Change directory to basic/7-unnumbered
  • Execute netlab up. You’ll get a lab with IPv4, IPv6, and IS-IS routing configured on all lab devices.
  • Log into your device (RTR) with netlab connect rtr

Explore the IS-IS Data Structures

Before changing anything, explore the IS-IS data structures routers generate using regular IPv4/IPv6 interface addresses. Their LSPs contain the LAN/P2P prefix; some platforms also add all the interface IPv4/IPv6 addresses:

R3 LSP displayed by R1 running Arista EOS

r1#show isis database level-2 r3.00-00 detail
Legend:
H - hostname conflict
U - node unreachable

IS-IS Instance: Gandalf VRF: default
  IS-IS Level 2 Link State Database
    LSPID                   Seq Num  Cksum  Life Length IS  Received LSPID        Flags
    r3.00-00                      3  35505  1192    246 L2  0000.0000.0003.00-00  <>
      Remaining lifetime received: 1199 s Modified to: 1200 s
      NLPID: 0xCC(IPv4) 0x8E(IPv6)
      Hostname: r3
      Area addresses: 49.0001
      Topology: 2 (IPv6)
      Topology: 0 (IPv4)
      Interface address: 10.1.0.1
      Interface address: 172.16.0.3
      Interface address: 10.0.0.3
      Interface address: 2001:db8:20::1
      Interface address: 2001:db8:21::3
      Interface address: 2001:db8:cafe:3::1
      IS Neighbor          : r3.7e               Metric: 10
      IS Neighbor          : 0000.0000.0004.00   Metric: 10
      IS Neighbor (MT-IPv6): r3.7e               Metric: 10
      IS Neighbor (MT-IPv6): 0000.0000.0004.00   Metric: 10
      Reachability         : 10.1.0.0/30 Metric: 10 Type: 1 Up
      Reachability         : 172.16.0.0/24 Metric: 10 Type: 1 Up
      Reachability         : 10.0.0.3/32 Metric: 10 Type: 1 Up
      Reachability (MT-IPv6): 2001:db8:20::/64 Metric: 10 Type: 1 Up
      Reachability (MT-IPv6): 2001:db8:21::/64 Metric: 10 Type: 1 Up
      Reachability (MT-IPv6): 2001:db8:cafe:3::/64 Metric: 10 Type: 1 Up
      Router Capabilities: Router Id: 10.0.0.3 Flags: []
        Area leader priority: 250 algorithm: 0

The IPv4 and IPv6 interface addresses are also advertised in IS-IS hello messages:

Details of R3 IS-IS neighbor displayed by R1 running Arista EOS

r1#show isis neighbors level-2 detail
Instance  VRF      System Id        Type Interface          SNPA              State Hold time   Circuit Id
...
Gandalf   default  r3               L2   Ethernet1          52:dc:ca:fe:3:1   UP    7           r3.7e
  Area addresses: 49.0001
  SNPA: 52:dc:ca:fe:3:1
  Router ID: 0.0.0.0
  Advertised Hold Time: 9
  State Changed: 00:02:10 ago at 2025-03-12 13:54:02
  LAN Priority: 64
  IPv4 Interface Address: 172.16.0.3
  IPv6 Interface Address: fe80::50dc:caff:fefe:301
  Interface name: Ethernet1
  Graceful Restart: Supported
  Supported Address Families: IPv4, IPv6
  Neighbor Supported Address Families: IPv4, IPv6

Tip

The interface addresses advertised in the LSPs are rarely used. Instead, routers use the interface addresses advertised in the IS-IS hello packets to determine the next hops for the IP routing table.

Building the IP Routing Table

Calculating the prefixes that go into the IP routing tables and the next-hop routers is the primary job of the IS-IS SPF algorithm (we covered a few details in the Explore IS-IS Data Structures lab exercise). In this lab exercise, we’ll focus on the next hops of those prefixes.

For example, R1 finds three prefixes that go through R3 (the loopback addresses of R3 and R4 and their point-to-point link). Combining that with the IPv4/IPv6 interface address advertised by R3 in the IS-IS hello messages (see above), it installs the following routes in the IPv4 and IPv6 routing tables:

IPv4 routes using R3 as the next hop (displayed by R1 running Arista EOS)

r1#show ip route isis next-hop 172.16.0.3
...

 I L2     10.0.0.3/32 [115/20]
           via 172.16.0.3, Ethernet1
 I L2     10.0.0.4/32 [115/30]
           via 172.16.0.3, Ethernet1
 I L2     10.1.0.0/30 [115/20]
           via 172.16.0.3, Ethernet1

IPv6 routes using R3 as the next hop (displayed by R1 running Arista EOS)

r1#show ipv6 route isis
...
 I L2     2001:db8:20::/64 [115/20]
           via fe80::50dc:caff:fefe:301, Ethernet1
 I L2     2001:db8:cafe:3::/64 [115/20]
           via fe80::50dc:caff:fefe:301, Ethernet1
 I L2     2001:db8:cafe:4::/64 [115/30]
           via fe80::50dc:caff:fefe:301, Ethernet1

Tip

The IS-IS IPv6 routes use IPv6 LLA as the next-hop IPv6 address.

Migrating to Unnumbered/LLA-only Interfaces

Replace IPv4/IPv6 addresses on all Ethernet interfaces of all routers in your lab with unnumbered IPv4 addresses and link-local-only IPv6.

The commands to do that might be similar to no ip address followed by ip address unnumbered loopback 0 and no ipv6 address followed by ipv6 enable.

Tip

FRRouting:

  • Allows you to configure the same IP address on multiple interfaces. After removing the original Ethernet IPv4 address, use the regular ip address command with the loopback IPv4 address.
  • Does not need the ipv6 enable command; IPv6 is enabled with the sysctl commands, and removing an IPv6 address from an interface does not deactivate IPv6 on that interface.

Does It Still Work?

Connect to R3 and explore its IS-IS neighbors. R3 should still have working adjacencies with all other routers in your lab.

IS-IS neighbors observed on R3 running Arista EOS

r3#show isis neighbors

Instance  VRF      System Id        Type Interface          SNPA              State Hold time   Circuit Id
Gandalf   default  r1               L2   Ethernet1          52:dc:ca:fe:1:1   UP    24          r3.7e
Gandalf   default  r2               L2   Ethernet1          52:dc:ca:fe:2:1   UP    26          r3.7e
Gandalf   default  r4               L2   Ethernet2          P2P               UP    24          80

Warning

Some devices can run IS-IS over unnumbered point-to-point IPv4 links but not over unnumbered multi-access IPv4 links. Such a device might refuse to form adjacencies over the LAN or might not install some IPv4 routes in the IP routing table.

Next, connect to R1 and explore its IPv4 and IPv6 routing tables. Do they contain the same routes for the loopback interfaces as before? What are the next hops?

The IPv4 results might surprise you a bit. For example, Arista EOS claims that the loopback addresses of R2 and R3 are directly connected:

The IPv4 routing table on R1 running Arista EOS

r1#show ip route isis
...
 I L2     10.0.0.2/32
           directly connected, Ethernet1
 I L2     10.0.0.3/32
           directly connected, Ethernet1
 I L2     10.0.0.4/32 [115/30]
           via 10.0.0.3, Ethernet1

Technically, that’s not incorrect, as R2 and R3 reuse their loopback IPv4 addresses for the Ethernet interfaces.

The IPv6 routing table should contain no such surprises and should be mostly identical to the one you’ve seen before (apart from no longer having the transit subnets):

The IPv6 routing table on R1 running Arista EOS

r1#show ipv6 route isis
...

 I L2     2001:db8:cafe:2::/64 [115/20]
           via fe80::50dc:caff:fefe:201, Ethernet1
 I L2     2001:db8:cafe:3::/64 [115/20]
           via fe80::50dc:caff:fefe:301, Ethernet1
 I L2     2001:db8:cafe:4::/64 [115/30]
           via fe80::50dc:caff:fefe:301, Ethernet1

How Does This Work?

The IPv6 results shouldn’t be surprising. The IS-IS hello messages contain the neighbor’s IPv6 LLA, which is used as the next-hop address in the IPv6 routing table.

A similar process is going on in the IPv4 world. The IS-IS hello messages sent by R3 advertise its loopback address (10.0.0.3) as its IPv4 address on the LAN:

The IPv4 address of R3 observed by R1 running Arista EOS

r1#show isis neighbors level-2 detail
Instance  VRF      System Id        Type Interface          SNPA              State Hold time   Circuit Id
...
Gandalf   default  r3               L2   Ethernet1          52:dc:ca:fe:3:1   UP    9           r3.7e
  Area addresses: 49.0001
  SNPA: 52:dc:ca:fe:3:1
  Router ID: 0.0.0.0
  Advertised Hold Time: 9
  State Changed: 00:10:24 ago at 2025-03-12 14:06:32
  LAN Priority: 64
  IPv4 Interface Address: 10.0.0.3
  IPv6 Interface Address: fe80::50dc:caff:fefe:301
  Interface name: Ethernet1
  Graceful Restart: Supported
  Supported Address Families: IPv4, IPv6
  Neighbor Supported Address Families: IPv4, IPv6

The loopback IPv4 address (10.0.0.3) is thus used as the next hop for all routes going through R3. Most routers also add the outgoing interface to the routes in their routing tables. R1 thus knows that it has to (A) send packets to 10.0.0.3 and (B) use the Ethernet1 interface to reach 10.0.0.3 if it wants to send packets to 10.0.0.4:

The details of the IPv4 route for 10.0.0.4/32 on R1 running Arista EOS

r1#show ip route 10.0.0.4/32 detail
...

 I L2     10.0.0.4/32 [115/30] PM
           via 10.0.0.3, Ethernet1 r1 -> [r2,r3]

But how does R1 know what MAC address to use to reach R3? It uses ARP, sending an ARP request on Ethernet1 asking who has the IP address 10.0.0.3. Not surprisingly, we can see the results in its ARP table:

The ARP table on R1 contains the MAC addresses of all connected routers

r1#show arp
Address         Age (sec)  Hardware Addr   Interface
10.0.0.2          0:13:44  52dc.cafe.0201  Ethernet1
10.0.0.3          0:13:44  52dc.cafe.0301  Ethernet1

Want to have even more details? Read the blog posts in the Unnumbered IPv4 Interfaces series.

Reference Information

Lab Wiring

Point-to-Point Links

Origin Device Origin Port Destination Device Destination Port
r3 Ethernet2 r4 Ethernet1

LAN Links

Origin Device Origin Port Link Name (NET) Description
r1 Ethernet1 LAN r1 -> [r2,r3]
r2 Ethernet1 LAN r2 -> [r1,r3]
r3 Ethernet1 LAN r3 -> [r1,r2]

Note: The interface names depend on the devices you use in the lab. The printout was generated with Arista EOS running on RTR and FRRouting running on X1 and X2.

Lab Addressing

Node/Interface IPv4 Address IPv6 Address Description
r1 10.0.0.1/32 2001:db8:cafe:1::1/64 Loopback
Ethernet1 172.16.0.1/24 2001:db8:21::1/64 r1 -> [r2,r3]
r2 10.0.0.2/32 2001:db8:cafe:2::1/64 Loopback
Ethernet1 172.16.0.2/24 2001:db8:21::2/64 r2 -> [r1,r3]
r3 10.0.0.3/32 2001:db8:cafe:3::1/64 Loopback
Ethernet1 172.16.0.3/24 2001:db8:21::3/64 r3 -> [r1,r2]
Ethernet2 10.1.0.1/30 2001:db8:20::1/64 r3 -> r4
r4 10.0.0.4/32 2001:db8:cafe:4::1/64 Loopback
Ethernet1 10.1.0.2/30 2001:db8:20::2/64 r4 -> r3