Example: Configuring IS-IS Dual Stacking of IPv4 and IPv6 Unicast Addresses
This example shows how to configure IPv4 and IPv6 dual stacking in IS-IS.
No special configuration beyond device initialization is required before configuring this example.
You can use IPv4 and IPv6 dual stacking to begin your migration from IPv4 to IPv6 by implementing IPv6 alongside IPv4 in your existing networks. This allows you to implement IPv6 so that you can provide the same services over IPv6—for example, video, voice, high-quality data—that you currently provide in your IPv4 networks. You can then perform incremental upgrades to IPv6 and avoid service disruptions while migrating from IPv4 to IPv6.
Unlike RIP and OSPF, IS-IS does not require a distinct protocol or a new version to support IPv6. Because IS-IS uses ISO addresses, the configuration for IPv6 and IPv4 is identical in the Junos OS implementation of IS-IS. For IS-IS to carry IPv6 routes, you only need to add IPv6 addresses to IS-IS enabled interfaces or include other IPv6 routes in your IS-IS export policy.
The only explicit configuration needed in IS-IS with regard to IPv6 is if you want to disable it. Alternatively, you can disable IPv4 routing and use IS-IS with IPv6 only. An example of each is provided here:
Disable IPv6 routing in IS-IS:
Use IS-IS exclusively for IPv6 routing:
Figure 1 shows the topology used in this example.
CLI Quick Configuration
To quickly configure this example, copy the following commands, paste them into a text file, remove any line breaks, change any details necessary to match your network configuration, and then copy and paste the commands into the CLI at the  hierarchy level.
The following example requires you to navigate various levels in the configuration hierarchy. For information about navigating the CLI, see Using the CLI Editor in Configuration Mode in the Junos OS CLI User Guide.
To configure IS-IS dual stacking:
- Configure the interfaces, including both IPv4 and IPv6
addresses on each interface.
Optionally, include the eui-64 statement to automatically generate the host number portion of interface addresses.[edit interfaces]user@R1# set fe-1/2/0 unit 0 family inet address 10.0.0.1/30user@R1# set fe-1/2/0 unit 0 family isouser@R1# set fe-1/2/0 unit 0 family inet6 address 2001:db8:0:5::/64 eui-64user@R1# set fe-1/2/1 unit 0 family inet address 10.0.0.17/30user@R1# set fe-1/2/1 unit 0 family isouser@R1# set fe-1/2/1 unit 0 family inet6 address 2001:db8:0:1::/64 eui-64user@R1# set lo0 unit 0 family inet address 192.168.0.1/32user@R1# set lo0 unit 0 family iso address 49.0002.0192.0168.0001.00user@R1# set lo0 unit 0 family inet6 address 2001:db8::1/128
- Enable IS-IS on the interfaces.[edit protocols isis]user@R1# set interface fe-1/2/0.0user@R1# set interface fe-1/2/1.0user@R1# set interface lo0.0
From configuration mode, confirm your configuration by entering the show interfaces and show protocols commands. If the output does not display the intended configuration, repeat the instructions in this example to correct the configuration.
If you are done configuring the device, enter commit from configuration mode.
Confirm that the configuration is working properly.
Checking the Neighbor Adjacencies
Determine what topologies are supported on neighboring IS-IS devices.
From operational mode, enter the show isis adjacency detail command.
user@R1> show isis adjacency detail
R2 Interface: fe-1/2/0.0, Level: 3, State: Up, Expires in 24 secs Priority: 0, Up/Down transitions: 1, Last transition: 18:34:08 ago Circuit type: 3, Speaks: IP, IPv6 Topologies: Unicast Restart capable: Yes, Adjacency advertisement: Advertise IP addresses: 10.0.0.2 IPv6 addresses: fe80::2a0:a514:0:24c R3 Interface: fe-1/2/1.0, Level: 3, State: Up, Expires in 21 secs Priority: 0, Up/Down transitions: 1, Last transition: 18:33:41 ago Circuit type: 3, Speaks: IP, IPv6 Topologies: Unicast Restart capable: Yes, Adjacency advertisement: Advertise IP addresses: 10.0.0.18 IPv6 addresses: fe80::2a0:a514:0:124c
As expected, the output shows that the two neighbors support both IPv4 and IPv6. The IPv4 address and the IPv6 link-local address are also shown.
Pinging the IPv6 Interfaces
Make sure that you can ping the remote IPv6 interfaces.
From operational mode, enter the ping command to ping from Device R2 to Device R3.
Determine the IPv6 address assigned to Device R3.
If you use EUI-64 addressing as shown in the example, the host portion of the IPv6 addresses is assigned automatically. To determine what addresses are assigned, use the show interfaces terse command on Device R3.
user@R3> show interfaces terse
Interface Admin Link Proto Local Remote fe-1/2/0 fe-1/2/0.0 up up inet 10.0.0.18/30 iso inet6 2001:db8:0:1:2a0:a514:0:124c/64 fe80::2a0:a514:0:124c/64 lo0 lo0.0 up up inet 192.168.0.3 --> 0/0 iso 49.0002.0192.0168.0003 inet6 2001:db8::3 fe80::2a0:a50f:fc56:14c
The IPv6 addresses that should be pingable are 2001:db8:0:1:2a0:a514:0:124c and 2001:db8::3.
From Device R2, ping the Device R3 fe-1/2/0.0 IPv6 interface address and the lo0.0 IPv6 interface address.
user@R2> ping 2001:db8:0:1:2a0:a514:0:124c
PING6(56=40+8+8 bytes) 2001:db8:0:5:2a0:a514:0:24c --> 2001:db8:0:1:2a0:a514:0:124c 16 bytes from 2001:db8:0:1:2a0:a514:0:124c, icmp_seq=0 hlim=63 time=2.373 ms 16 bytes from 2001:db8:0:1:2a0:a514:0:124c, icmp_seq=1 hlim=63 time=1.600 ms 16 bytes from 2001:db8:0:1:2a0:a514:0:124c, icmp_seq=2 hlim=63 time=2.228 ms
user@R2> ping 2001:db8::3
PING6(56=40+8+8 bytes) 2001:db8:0:5:2a0:a514:0:24c --> 2001:db8::3 16 bytes from 2001:db8::3, icmp_seq=0 hlim=63 time=1.797 ms 16 bytes from 2001:db8::3, icmp_seq=1 hlim=63 time=1.430 ms 16 bytes from 2001:db8::3, icmp_seq=2 hlim=63 time=2.525 ms
This test confirms that IS-IS has learned the IPv6 routes.
Checking the IPv6 Routing Table
Verify that the expected routes are in the IPv6 routing table.
user@R1> show route table inet6.0
inet6.0: 11 destinations, 12 routes (11 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both 2001:db8::1/128 *[Direct/0] 18:52:52 > via lo0.0 2001:db8::2/128 *[IS-IS/15] 01:59:52, metric 10 > to fe80::2a0:a514:0:24c via fe-1/2/0.0 2001:db8::3/128 *[IS-IS/15] 01:59:52, metric 10 > to fe80::2a0:a514:0:124c via fe-1/2/1.0 2001:db8:0:1::/64 *[Direct/0] 18:52:15 > via fe-1/2/1.0 2001:db8:0:1:2a0:a514:0:114c/128 *[Local/0] 18:52:48 Local via fe-1/2/1.0 2001:db8:0:5::/64 *[Direct/0] 18:52:49 > via fe-1/2/0.0 2001:db8:0:5:2a0:a514:0:14c/128 *[Local/0] 18:52:49 Local via fe-1/2/0.0 fe80::/64 *[Direct/0] 18:52:49 > via fe-1/2/0.0 [Direct/0] 18:52:15 > via fe-1/2/1.0 fe80::2a0:a50f:fc56:14c/128 *[Direct/0] 18:52:52 > via lo0.0 fe80::2a0:a514:0:14c/128 *[Local/0] 18:52:49 Local via fe-1/2/0.0 fe80::2a0:a514:0:114c/128 *[Local/0] 18:52:48 Local via fe-1/2/1.0
The output shows the IPv6 interface routes (direct and local) and the IPv6 routes learned through IS-IS.