Supported Platforms
Example: Configuring IS-IS Dual Stacking of IPv4 and IPv6 Unicast Addresses
Understanding Dual Stacking
Service providers and enterprises are faced with growing their networks using IPv6, while continuing to serve IPv4 customers.
Increasingly, the public side of network address translation (NAT) devices is IPv6 rather than IPv4. Service providers cannot continue giving customers globally routable IPv4 addresses, they cannot get new globally routable IPv4 addresses for expanding their own networks, and yet they must continue to serve both IPv4 customers and new customers, all of whom are primarily trying to reach IPv4 destinations.
IPv4 and IPv6 must coexist for some number of years, and their coexistence must be transparent to end users. If an IPv4-to-IPv6 transition is successful, end users should not even notice it.
A dual-stack device is a device with network interfaces that can originate and understand both IPv4 and IPv6 packets.
Other strategies, such as manually or dynamically configured tunnels and translation devices exist, but dual stacking is often the preferable solution in many scenarios. The dual-stacked device can interoperate equally with IPv4 devices, IPv6 devices, and other dual-stacked devices. When both devices are dual stacked, the two devices agree on which IP version to use.
The transition is driven by DNS. If a dual-stacked device queries the name of a destination and DNS gives it an IPv4 address (a DNS A Record), it sends IPv4 packets. If DNS responds with an IPv6 address (a DNS AAAA Record), it sends IPv6 packets.
Keep in mind that if you are going to dual stack all of your network devices, the interfaces need both an IPv6 and an IPv4 address. This raises the issue that the Internet has run out of IPv4 addresses, which is the main reason IPv6 is needed in the first place. If you do not have an abundant supply of IPv4 addresses to apply to your devices, you can still use dual stacking, but you will need to conserve your supply of IPv4 addresses by using network address translation (NAT). Building dual-stacked networks with a mix of global IPv6 addresses and NAT-ed IPv4 addresses is quite feasible. Some specific solutions include carrier-grade NAT (CGN), NAT44(4), NAT64, NAT464, and dual-stack lite.
Table 1 describes at a high level how to pick a network addressing technique. In reality, a complete solution might include a set of techniques to satisfy multiple service needs. It is important to understand the backbone technology being used on the network and also to know if the provider has control over the access customer premises equipment (CPE).
Table 1: Choosing the Right Solution to Address Next-Generation Addressing Requirements
CPE Network | Access Network | Destinations | Solution |
---|---|---|---|
IPv4 | IPv4 | IPv4 Internet | NAT44(4) |
IPv4/IPv6 | IPv6 | IPv4 Internet | DS-Lite with NAT44 |
IPv4/IPv6 | IPv4 | IPv6 Internet | 6rd (6to4) |
IPv4 | IPv6 | IPv4 Internet | NAT64 |
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.
Requirements
No special configuration beyond device initialization is required before configuring this example.
Overview
VIDEO 1: IS-IS Dual Stacking

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.
Figure 1: IS-IS IPv4 and IPv6 Dual Stacking Topology

CLI Quick Configuration shows the configuration for all of the devices in Figure 1. The section Step-by-Step Procedure describes the steps on Device R1.
Configuration
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 [edit] hierarchy level.
Device R1
Device R2
Device R3
Step-by-Step Procedure
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
Results
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.
Verification
Confirm that the configuration is working properly.
Checking the Neighbor Adjacencies
Purpose
Determine what topologies are supported on neighboring IS-IS devices.
Action
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
Meaning
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
Purpose
Make sure that you can ping the remote IPv6 interfaces.
Action
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
Meaning
This test confirms that IS-IS has learned the IPv6 routes.
Checking the IPv6 Routing Table
Purpose
Verify that the expected routes are in the IPv6 routing table.
Action
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
Meaning
The output shows the IPv6 interface routes (direct and local) and the IPv6 routes learned through IS-IS.