Hello my friend,

In the time, when the IPv4 addresses are almost exhausted at our planet, the transition to IPv6 becomes more and more important and urgent task. The top content providers (like Google or Facebook) already provide access to their resources via IPv6 . Let’s see, how we can implement this technology in our mixed Cisco IOS XRv and Nokia (Alcatel-Lucent) VSR environment.

IPv6 world today

IPv6 isn’t new technology at all. It was introduced in 1998, so it’s almost 20 years old. On the other hand its deployment is still very low comparing to IPv4 Internet. Take a look at the graphs above.

020_net_01_internet_prefixes

The most significant event in IPv6 world was on the 6 June 2011, where “World IPv6 Launch Day” took place. We can consider this day as starting point in IPv6 commercial internet.

You see that the amount of IPv6 prefixes (so called IPv6 Internet) is almost 20 times less than IPv6. There is technology, called NAT (Network address translation), which for a long time has been helping us to save public IPv4 address, especially in case of more aggressive CGN (Carrier-Grade NAT) implementations. But its possibilities are also not endless, and in IoT (Internet of Things) era we really have to use IPv6; otherwise we won’t be able to connect all this stuff (sensors, cars, telemetric devices, etc) to the Internet. So the necessity to launch IPv6 is obvious, let’s take a look on our lab.

Simple IPv6 lab

There are a couple of differences in operation between IPv4 and IPv6, but if you understand good IPv4 operation, there is no problem for you to understand IPv6 as well. For instance IPv6 doesn’t have broadcast addresses, which are replaced by specific multicast group, as well as IPv6 has also specific link-local unicast address, which are often used by routing protocols and another control plane services.

In this article we’ll focus on configuration of IPv6 on Nokia (Alcatel-Lucent) SR OS and Cisco IOS XR, which are represented by VSR and XRv virtual routers respectively.

The topology, which is used in our lab is already familiar to you (link to first article). On the picture below you can find addressing information:

020_net_01_ipv6

First of all we need to check, whether IPv6 operation is activated at our platform. At Cisco IOS XR it’s always on by default, so you don’t have to care about it (For Cisco IOS / IOS XE platform the story is quite different). You just assign IPv6 address to the interface and that’s it:

RP/0/0/CPU0:XR1(config)#int gig 0/0/0/0
RP/0/0/CPU0:XR1(config-if)#ipv6 add fc00::10:0:0:2/120
RP/0/0/CPU0:XR1(config-if)#no shut
RP/0/0/CPU0:XR1(config-if)#commit
!
RP/0/0/CPU0:XR1#sh ipv6 int br
GigabitEthernet0/0/0/0 [Up/Up]
fe80::250:56ff:fe34:2a3d
fc00::10:0:0:2
!
RP/0/0/CPU0:XR1#sh int gig 0/0/0/0 | inc add
Hardware is GigabitEthernet, address is 0050.5634.2a3d (bia 0050.5634.2a3d)

You see that there are two IPv6 addresses assigned to the interface. The first one is unicast link-local address and it’s configured automatically based on MAC address of the router’s interface. The second one is actually what you have configured. For loopback interfaces we make the same assignment of IPv6 addresses.

At Nokia (Alcatel-Lucent) SR OS it depends on your device. It might be necessary to activate it or it can be activated by default. It’s fully depends on the parameter, which is called “chassis mode”:

A:SR3>config>router# interface “toXR1”
A:SR3>config>router>if# ipv6 address fc00::10:0:0:1/120
INFO: PIP #218 Feature not supported – Check chassis mode

In the official SR OS documentations I’ve managed to find the following, regarding this parameter:

To support a particular chassis-mode, all provisioned IOMs must meet the corresponding IOM level.
The chassis Mode corresponds to scaling and feature sets associated with a given card. The base mode is chassis mode A which supports all IOM card types.
IOM cards that are not compatible with more recent chassis modes will be put into an operationally failed state if the configuration chassis mode “force” option is used.

  • Chassis mode A corresponds to iom-20g, chassis mode backwards compatible for iom-20g-b, iom2-20g, iom3-xp
  • Chassis mode B corresponds to iom-20g-b, chassis mode backwards compatible for iom2-20g, iom3-xp
  • Chassis mode C corresponds to iom2-20g, chassis mode backwards compatible for iom3-xp
  • Chassis mode D corresponds to iom3-xp

So, in our case we aren’t able to configure IPv6 addresses at Nokia (Alcatel-Lucent) VSR by default, therefore first of all we need to check, whether our IOM modules supports another chassis mode:

A:SR3>config>router>if# show card
=============================================================================
Card Summary
=============================================================================
Slot      Provisioned Type                         Admin Operational   Comments
Equipped Type (if different)         State State
—————————————————————————–
1         iom3-xp-b                                up    up
A         sfm4-12                                  up    up/active
B         sfm4-12                                  up    down/standby
(not equipped)
=============================================================================

We have IOM module “iom3-xp-b”, what means for us that we can change chassis mode to “D”. Let’s change it in an appropriate way then configure IPv6 addresses at the interface afterwards:

A:SR3# configure system chassis-mode d
*A:SR3# configure router
*A:SR3>config>router# interface “toXR1”
*A:SR3>config>router>if# ipv6 address fc00::10:0:0:1/120

Let’s verify which IPv6 addresses we have at our interface at Nokia (Alcatel-Lucent) VSR now:

A:SR3# show router interface “toXR1” detail
=============================================================================
Interface Table (Router: Base)
=============================================================================
—————————————————————————–
Interface
—————————————————————————–
If Name          : toXR1
Admin State      : Up                   Oper (v4/v6)      : Up/Up
Protocols        : OSPFv2
IP Addr/mask     : 10.0.0.1/24          Address Type      : Primary
IGP Inhibit      : Disabled             Broadcast Address : Host-ones
HoldUp-Time      : 0                    Track Srrp Inst   : 0
IPv6 Address     : fc00::10:0:0:1/120
IPv6 Addr State  : PREFERRED
CGA modifier     : (Not Specified)
HoldUp-Time      : 0                    Track Srrp Inst   : 0
Link Lcl Address : fe80::f8ac:a6ff:fe00:302/64
Link Lcl State   : PREFERRED
—————————————————————————–
!
A:SR3# show port 1/1/1 ethernet detail | match Address
Configured Address : fa:ac:a6:00:03:02
Hardware Address   : fa:ac:a6:00:03:02

As you see link local address is configured automatically here as well based MAC address. Actually such approach is standard and it’s called EUI-64. Now it’s time to check our ipv6 connectivity between Cisco IOS XRv and Nokia (Alcatel-Lucent) VSR:

A:SR3# ping fc00::10:0:0:1
PING fc00::10:0:0:1 56 data bytes
64 bytes from fc00::10:0:0:1 icmp_seq=1 hlim=64 time=14.2ms.
64 bytes from fc00::10:0:0:1 icmp_seq=2 hlim=64 time=0.342ms.
64 bytes from fc00::10:0:0:1 icmp_seq=3 hlim=64 time=4.39ms.
64 bytes from fc00::10:0:0:1 icmp_seq=4 hlim=64 time=0.377ms.
64 bytes from fc00::10:0:0:1 icmp_seq=5 hlim=64 time=0.175ms.—- fc00::10:0:0:1 PING Statistics —-
5 packets transmitted, 5 packets received, 0.00% packet loss
round-trip min = 0.175ms, avg = 3.90ms, max = 14.2ms, stddev = 5.39ms

Here is small hint for those of you, who aren’t very familiar with IPv6. There is no ARP in IPv6, though the resolution of L2 (MAC) addresses to L3 (IPv6) addresses must somehow work. It is covered by ND (neighbor discovery) protocol, which is part of ICMPv6. At Cisco IOS XR you can check it as:

RP/0/0/CPU0:XR1#sh ipv6 neighbors
Thu Jun 16 18:43:57.102 UTC
IPv6 Address               Age Link-layer Addr State Interface  Location
fc00::10:0:0:1             10   faac.a600.0302 REACH Gi0/0/0/0  0/0/CPU0
fe80::f8ac:a6ff:fe00:302   177  faac.a600.0302 DELAY Gi0/0/0/0  0/0/CPU0

At Nokia (Alcatel-Lucent) SR OS it’s done by very similar command:

A:SR3# show router neighbor
=============================================================================
Neighbor Table (Router: Base)
=============================================================================
IPv6 Address                                   Interface
MAC Address                State         Expiry          Type         RTR
—————————————————————————–
fc00::10:0:0:2                                 toXR1
00:50:56:34:2a:3d          STALE         03h59m34s       Dynamic      No
fe80::250:56ff:fe34:2a3d                       toXR1
00:50:56:34:2a:3d          STALE         03h59m54s       Dynamic      No
—————————————————————————–
No. of Neighbor Entries: 2
=============================================================================

In the same way we add IPv6 addresses to the loopback interfaces at VSR.

IPv6 static routing

Now let’s configure the simplest type of the routing, which is actually static routing, for IPv6. As next-hop addresses we use so called IPv6 GUA (global unicast addresses):

Nokia (Alcatel-Lucent) SR OS (VSR) Cisco IOS XR (XRv)

A:SR3>config>router#info
!
#————————————-
echo “Static IPv6 Route Configuration”
#————————————-
static-route fc00::10:0:11:1/128 next-hop fc00::10:0:0:2
!

RP/0/0/CPU0:XR1(config)#show conf
Thu Jun 16 18:51:32.431 UTC
router static
address-family ipv6 unicast
fc00::10:0:10:1/128 fc00::10:0:0:1
!
!

Let’s test the operation of basic IPv6 connectivity:

RP/0/0/CPU0:XR1#ping fc00::10:0:10:1 so fc00::10:0:11:1
Thu Jun 16 19:02:04.218 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to fc00::10:0:10:1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/21/79 ms

In general there is also another possibility to add static route using IPv6 LLA (link-local addresses). At Cisco IOS XR you can do it in the following way:

RP/0/0/CPU0:XR1(config-static-afi)#show conf
!! IOS XR Configuration 5.3.2
router static
address-family ipv6 unicast
fc00::10:0:101:1/128 GigabitEthernet0/0/0/0 fe80::f8ac:a6ff:fe00:302
!

In Nokia (Alcatel-Lucent) SR OS you do it with the following command:

*A:SR3>config>router# static-route fc00::10:0:102:1/128 next-hop  fe80::250:56ff:fe34:2a3d-“toXR1_p1”

So you configure next-hop IPv6 LLA and outgoing interface together. To be honest, I haven’t figured it out from the CLI help. Just saw this at Nokia (Alcatel-Lucent) IGP course.
Now we can test whether the traffic between another pair of loopback can be transmitted:

A:SR3# ping fc00::10:0:102:1 source fc00::10:0:101:1
PING fc00::10:0:102:1 56 data bytes
64 bytes from fc00::10:0:102:1 icmp_seq=1 hlim=64 time=27.3ms.
64 bytes from fc00::10:0:102:1 icmp_seq=2 hlim=64 time=3.56ms.
64 bytes from fc00::10:0:102:1 icmp_seq=3 hlim=64 time=5.59ms.
64 bytes from fc00::10:0:102:1 icmp_seq=4 hlim=64 time=4.65ms.
64 bytes from fc00::10:0:102:1 icmp_seq=5 hlim=64 time=3.04ms.
—- fc00::10:0:102:1 PING Statistics —-
5 packets transmitted, 5 packets received, 0.00% packet loss
round-trip min = 3.04ms, avg = 8.84ms, max = 27.3ms, stddev = 9.30ms

Lessons learned

The devil is hidden in the details. Small nuances, like “chassis mode”, can significantly delay your implementation (or the article writing in my case) of IPv6 or other technologies, if you don’t have Internet access (as it was with me, as the major part of this article I’ve written in the train).

Conclusion

In this article we’ve covered basics of IPv6 configuration and operation at our two chosen vendors, which are Nokia (Alcatel-Lucent) and Cisco Systems. The configuration was done in our virtual lab based in Cisco IOS XRv (running IOS XR) and Nokia (Alcatel-Lucent) VSR (running SR OS). I have a significant reason to do it in the beginning of my journey in the world of service provider networks, because starting from this time I will consider in my articles configuration of dual stack for all the technologies, where it’s possible. The root cause is above, we really need to implement IPv6. The side reason is that I want to improve my own skills in IPv6 while preparing for Nokia (Alcatel-Lucent) SRA and Cisco CCIE SP.

Support us





BR,
Anton Karneliuk