IPv6 with dynamic routing and redistribution - RIPng and OSPFv3
Last year I did a project for school about IPv6 and the IPv6 dynamic routing protocols and redistributing these.
Before you read this article or going to try the stuff on dynamips later on it is wise to know a little bit about IPv6 and it's background. Maybe a wise thing is to read THIS and THIS and THIS before actually going any further.
Lets start with the diagram first... if the diagram is not clear below please download it >> ipv6-dynamic-routing-diagram.pdf.
You can see that we have the ISP core consisting of 2 routers. Keep in mind that this is just a setup to test the technologies and normally this is not a correct way of designing real networks, because there is no redundacy here and later on you will see that I haven't used OSPF area 0 in the CORE, but that is something for later.
Besides the 2 routers in the core you will see 4 routers at the edges which will represent the 4 different sites, SITE A, B, C and D.
All the routers of the sites have a loopback interface where I configured multiple IP addresses on, these loopback interfaces start with the router number. All IP addresses that I've used are organised per interface in a small IP numbering plan in an Excel document which you can find later on in this article.
Back to the loopback networks, below you will find the actual IP addresses (a.k.a. networks) that I used as networks to distribute dynamically with the routing protocols and redistributing them using those same network protocols.
R1 | R3 | R5 |
1111:610:6CC:10::/64 | 3333:610:6CC:10::/64 | 5555:610:6CC:10::/64 |
1111:610:6CC:20::/64 | 3333:610:6CC:20::/64 | 5555:610:6CC:20::/64 |
1111:610:6CC:30::/64 | 3333:610:6CC:30::/64 | 5555:610:6CC:30::/64 |
1111:610:6CC:40::/64 | 3333:610:6CC:40::/64 | 5555:610:6CC:40::/64 |
1111:610:6CC:50::/64 | 3333:610:6CC:50::/64 | 5555:610:6CC:50::/64 |
R2 | R4 | R6 |
2222:610:6CC:10::/64 | 4444:610:6CC:10::/64 | 6666:610:6CC:10::/64 |
2222:610:6CC:20::/64 | 4444:610:6CC:20::/64 | 6666:610:6CC:20::/64 |
2222:610:6CC:30::/64 | 4444:610:6CC:30::/64 | 6666:610:6CC:30::/64 |
2222:610:6CC:40::/64 | 4444:610:6CC:40::/64 | 6666:610:6CC:40::/64 |
2222:610:6CC:50::/64 | 4444:610:6CC:50::/64 | 6666:610:6CC:50::/64 |
This means that R1 will contain the networks starting with 1111: R2 will have the networks starting with 2222: etc. etc.
Within SITE B and SITE D we have a computer wich will run a Linux distribution. The end goal is that the 2 PC's (which are in 2 complete different IPv6 networks can transfer data to eachother. We will test this later on after doing some more explanation with ping tests.
SITE A and SITE C will only be used to prove that the redistribution between the different IPv6 networks using RIPv3 and OSPFv3 is actually working. All networks will eventually be advertised and shown in each routing table of each router.
In the next diagram you will see what routing protocol is used where.
You can see that:
- R1 is running OSPFv3 (area 0) with R3
- R2 is running RIPng with R3
- R3 is running OSPFv3 (area 100) with R6
- R4 is running RIPng with R6
- R5 is running OSPFv3 (area 200) with R6
I hope you can still keep yourself focussed because when I was designing this with all the long IPv6 IP addresses I made alot of little mistakes that where driving me crazy in the evening while troubleshooting them :-)
Ok now everything is explained and everything is kind of clear I will now show the portions of configuration that I used to achieve what I wanted. After that I will also use the verify commands in the routers to see that it's actually working.
First of all we configure the CORE (R3 & R6) with OSPFv3 area 100 ( I know the core should be area 0, but in this design it's not needed at all to prove my point)
After configured the core we will work from the CORE twards the edges or the networks.
The configuration per router is shown below:
R3
hostname R3 ! ip cef ip domain name local.home ! ipv6 unicast-routing ! interface Loopback0 no ip address ipv6 address 3333:610:6CC:10::/64 ipv6 address 3333:610:6CC:20::/64 ipv6 address 3333:610:6CC:30::/64 ipv6 address 3333:610:6CC:40::/64 ipv6 address 3333:610:6CC:50::/64 ipv6 enable ipv6 rip process1 enable ipv6 ospf 1 area 100 ! interface Ethernet0/0 ip address 10.10.36.3 255.255.255.0 half-duplex ipv6 address 2001:610:6CC:36::3/64 ipv6 enable ipv6 ospf 1 area 100 ! interface Ethernet0/1 ip address 10.10.13.3 255.255.255.0 half-duplex ipv6 address 2001:610:6CC:13::3/64 ipv6 enable ipv6 ospf 1 area 0 ! interface Ethernet0/2 ip address 10.10.23.3 255.255.255.0 half-duplex ipv6 address 2001:610:6CC:23::3/64 ipv6 enable ipv6 rip process1 enable ! interface Ethernet0/3 ip address 192.168.52.103 255.255.255.0 full-duplex ipv6 address 2001:610:6CC:52::103/64 ipv6 enable ! ip forward-protocol nd ip route 192.168.50.0 255.255.255.0 192.168.52.1 ! ipv6 router ospf 1 log-adjacency-changes area 100 virtual-link 10.10.56.6 redistribute rip process1 include-connected ! ipv6 router rip process1 redistribute ospf 1 metric 1 match internal external 1 external 2 include-connected
R6
hostname R6 ! ip cef ip domain name local.home ! ipv6 unicast-routing ! interface Loopback0 no ip address ipv6 address 6666:610:6CC:10::/64 ipv6 address 6666:610:6CC:20::/64 ipv6 address 6666:610:6CC:30::/64 ipv6 address 6666:610:6CC:40::/64 ipv6 address 6666:610:6CC:50::/64 ipv6 enable ipv6 rip process1 enable ipv6 ospf 1 area 100 ! interface Ethernet0/0 ip address 10.10.36.6 255.255.255.0 half-duplex ipv6 address 2001:610:6CC:36::6/64 ipv6 enable ipv6 ospf 1 area 100 ! interface Ethernet0/1 ip address 10.10.46.6 255.255.255.0 half-duplex ipv6 address 2001:610:6CC:46::6/64 ipv6 enable ipv6 rip process1 enable ! interface Ethernet0/2 ip address 10.10.56.6 255.255.255.0 half-duplex ipv6 address 2001:610:6CC:56::6/64 ipv6 enable ipv6 ospf 1 area 200 ! interface Ethernet0/3 ip address 192.168.52.106 255.255.255.0 full-duplex ipv6 address 2001:610:6CC:52::106/64 ipv6 enable ! ip forward-protocol nd ip route 192.168.50.0 255.255.255.0 192.168.52.1 ! ipv6 router ospf 1 log-adjacency-changes area 100 virtual-link 10.10.36.3 redistribute rip process1 include-connected ! ipv6 router rip process1 redistribute ospf 1 metric 1 match internal external 1 external 2 include-connected ! end
R1
hostname R1 ! ip cef ip domain name local.home ! ipv6 unicast-routing ! interface Loopback0 no ip address ipv6 address 1111:610:6CC:10::/64 ipv6 address 1111:610:6CC:20::/64 ipv6 address 1111:610:6CC:30::/64 ipv6 address 1111:610:6CC:40::/64 ipv6 address 1111:610:6CC:50::/64 ipv6 enable ipv6 ospf 1 area 0 ! interface Ethernet0/0 ip address 10.10.13.1 255.255.255.0 half-duplex ipv6 address 2001:610:6CC:13::1/64 ipv6 enable ipv6 ospf 1 area 0 ! interface Ethernet0/3 ip address 192.168.52.101 255.255.255.0 full-duplex ipv6 address 2001:610:6CC:52::101/64 ipv6 enable ! ip forward-protocol nd ip route 192.168.50.0 255.255.255.0 192.168.52.1 ! ipv6 route 2001:610:6CC:50::/64 2001:610:6CC:52::1 ipv6 route 2001:610:6CC:52::/64 Ethernet0/3 ipv6 router ospf 1 ! end
R2
hostname R2 ! ip cef ip domain name local.home! ipv6 unicast-routing ! interface Loopback0 no ip address ipv6 address 2222:610:6CC:10::/64 ipv6 address 2222:610:6CC:20::/64 ipv6 address 2222:610:6CC:30::/64 ipv6 address 2222:610:6CC:40::/64 ipv6 address 2222:610:6CC:50::/64 ipv6 enable ipv6 rip process1 enable ! interface Ethernet0/0 ip address 10.10.23.2 255.255.255.0 half-duplex ipv6 address 2001:610:6CC:23::2/64 ipv6 enable ipv6 rip process1 enable ! interface Ethernet0/1 ip address 20.20.20.2 255.255.255.0 half-duplex ipv6 address 2020:610:6CC:20::2/64 ipv6 enable ipv6 nd prefix 2020:610:6CC:20::/64 ipv6 rip process1 enable ! interface Ethernet0/3 ip address 192.168.52.102 255.255.255.0 full-duplex ipv6 address 2001:610:6CC:52::102/64 ipv6 enable ! ip forward-protocol nd ip route 192.168.50.0 255.255.255.0 192.168.52.1 ! ipv6 router rip process1 ! end
R4
hostname R4 ! ip cef ip domain name local.home! ipv6 unicast-routing ! interface Loopback0 no ip address ipv6 address 4444:610:6CC:10::/64 ipv6 address 4444:610:6CC:20::/64 ipv6 address 4444:610:6CC:30::/64 ipv6 address 4444:610:6CC:40::/64 ipv6 address 4444:610:6CC:50::/64 ipv6 enable ipv6 rip process1 enable ! interface Ethernet0/0 ip address 10.10.46.4 255.255.255.0 half-duplex ipv6 address 2001:610:6CC:46::4/64 ipv6 enable ipv6 rip process1 enable ! interface Ethernet0/3 ip address 192.168.52.104 255.255.255.0 full-duplex ipv6 address 2001:610:6CC:52::104/64 ipv6 enable ! ip forward-protocol nd ip route 192.168.50.0 255.255.255.0 192.168.52.1 ! ipv6 router rip process1 ! end
R5
hostname R5 ! ip cef ip domain name local.home! ipv6 unicast-routing ! interface Loopback0 no ip address ipv6 address 5555:610:6CC:10::/64 ipv6 address 5555:610:6CC:20::/64 ipv6 address 5555:610:6CC:30::/64 ipv6 address 5555:610:6CC:40::/64 ipv6 address 5555:610:6CC:50::/64 ipv6 enable ipv6 ospf 1 area 200 ! interface Ethernet0/0 ip address 10.10.56.5 255.255.255.0 half-duplex ipv6 address 2001:610:6CC:56::5/64 ipv6 enable ipv6 ospf 1 area 200 ! interface Ethernet0/1 ip address 50.50.50.5 255.255.255.0 half-duplex ipv6 address 5050:610:6CC:50::5/64 ipv6 enable ipv6 nd prefix 5050:610:6CC:50::/64 ipv6 ospf 1 area 200 ! interface Ethernet0/3 ip address 192.168.52.105 255.255.255.0 full-duplex ipv6 address 2001:610:6CC:52::105/64 ipv6 enable ! ip forward-protocol nd ip route 192.168.50.0 255.255.255.0 192.168.52.1 ! ipv6 router ospf 1 log-adjacency-changes ! end
I've made the actual IPv6 commands blue so you can see what is IPv6 related and what's not.
Once configured this on the routers (and you see the OSPF adjacencies form) you can check the routing tables.
For now I will just show you the routing tables of 2 edge routers, R2 and R5 where you can see that the routing information is learned dynamically from the other router(s). This article will be too long if I just post all the outputs in.
<strong>R2#sh ipv6 route</strong> IPv6 Routing Table - 48 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2 ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2 R 1111:610:6CC:10::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 1111:610:6CC:20::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 1111:610:6CC:30::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 1111:610:6CC:40::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 1111:610:6CC:50::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 2001:610:6CC:13::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 C 2001:610:6CC:23::/64 [0/0] via ::, Ethernet0/0 L 2001:610:6CC:23::2/128 [0/0] via ::, Ethernet0/0 R 2001:610:6CC:36::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 2001:610:6CC:46::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 C 2001:610:6CC:52::/64 [0/0] via ::, Ethernet0/3 L 2001:610:6CC:52::102/128 [0/0] via ::, Ethernet0/3 R 2001:610:6CC:56::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 C 2020:610:6CC:20::/64 [0/0] via ::, Ethernet0/1 L 2020:610:6CC:20::2/128 [0/0] via ::, Ethernet0/1 C 2222:610:6CC:10::/64 [0/0] via ::, Loopback0 L 2222:610:6CC:10::/128 [0/0] via ::, Loopback0 C 2222:610:6CC:20::/64 [0/0] via ::, Loopback0 L 2222:610:6CC:20::/128 [0/0] via ::, Loopback0 C 2222:610:6CC:30::/64 [0/0] via ::, Loopback0 L 2222:610:6CC:30::/128 [0/0] via ::, Loopback0 C 2222:610:6CC:40::/64 [0/0] via ::, Loopback0 L 2222:610:6CC:40::/128 [0/0] via ::, Loopback0 C 2222:610:6CC:50::/64 [0/0] via ::, Loopback0 L 2222:610:6CC:50::/128 [0/0] via ::, Loopback0 R 3333:610:6CC:10::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 3333:610:6CC:20::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 3333:610:6CC:30::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 3333:610:6CC:40::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 3333:610:6CC:50::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 4444:610:6CC:10::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 4444:610:6CC:20::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 4444:610:6CC:30::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 4444:610:6CC:40::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 4444:610:6CC:50::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 5050:610:6CC:50::/64 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 5555:610:6CC:10::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 5555:610:6CC:20::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 5555:610:6CC:30::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 5555:610:6CC:40::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 5555:610:6CC:50::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 6666:610:6CC:10::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 6666:610:6CC:20::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 6666:610:6CC:30::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 6666:610:6CC:40::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 R 6666:610:6CC:50::/128 [120/2] via FE80::CE02:54FF:FEFF:2, Ethernet0/0 L FE80::/10 [0/0] via ::, Null0 L FF00::/8 [0/0] via ::, Null0
<strong>R5#sh ipv6 route</strong> IPv6 Routing Table - 48 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2 ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2 OI 1111:610:6CC:10::/128 [110/30] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 1111:610:6CC:20::/128 [110/30] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 1111:610:6CC:30::/128 [110/30] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 1111:610:6CC:40::/128 [110/30] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 1111:610:6CC:50::/128 [110/30] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 2001:610:6CC:13::/64 [110/30] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OE2 2001:610:6CC:23::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 2001:610:6CC:36::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OE2 2001:610:6CC:46::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 C 2001:610:6CC:52::/64 [0/0] via ::, Ethernet0/3 L 2001:610:6CC:52::105/128 [0/0] via ::, Ethernet0/3 C 2001:610:6CC:56::/64 [0/0] via ::, Ethernet0/0 L 2001:610:6CC:56::5/128 [0/0] via ::, Ethernet0/0 OE2 2020:610:6CC:20::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OE2 2222:610:6CC:10::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OE2 2222:610:6CC:20::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OE2 2222:610:6CC:30::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OE2 2222:610:6CC:40::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OE2 2222:610:6CC:50::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 3333:610:6CC:10::/128 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 3333:610:6CC:20::/128 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 3333:610:6CC:30::/128 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 3333:610:6CC:40::/128 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 3333:610:6CC:50::/128 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OE2 4444:610:6CC:10::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OE2 4444:610:6CC:20::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OE2 4444:610:6CC:30::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OE2 4444:610:6CC:40::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OE2 4444:610:6CC:50::/64 [110/20] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 C 5050:610:6CC:50::/64 [0/0] via ::, Ethernet0/1 L 5050:610:6CC:50::5/128 [0/0] via ::, Ethernet0/1 C 5555:610:6CC:10::/64 [0/0] via ::, Loopback0 L 5555:610:6CC:10::/128 [0/0] via ::, Loopback0 C 5555:610:6CC:20::/64 [0/0] via ::, Loopback0 L 5555:610:6CC:20::/128 [0/0] via ::, Loopback0 C 5555:610:6CC:30::/64 [0/0] via ::, Loopback0 L 5555:610:6CC:30::/128 [0/0] via ::, Loopback0 C 5555:610:6CC:40::/64 [0/0] via ::, Loopback0 L 5555:610:6CC:40::/128 [0/0] via ::, Loopback0 C 5555:610:6CC:50::/64 [0/0] via ::, Loopback0 L 5555:610:6CC:50::/128 [0/0] via ::, Loopback0 OI 6666:610:6CC:10::/128 [110/10] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 6666:610:6CC:20::/128 [110/10] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 6666:610:6CC:30::/128 [110/10] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 6666:610:6CC:40::/128 [110/10] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 OI 6666:610:6CC:50::/128 [110/10] via FE80::CE05:54FF:FEFF:2, Ethernet0/0 L FE80::/10 [0/0] via ::, Null0 L FF00::/8 [0/0] via ::, Null0
If you analyse the routingtable you see that I only marked the Loopback networks of the routers to highlight the networks are received (either trough a direct dynamic routing protocol or trough the redistribution of a dynamic routing protocol) that where advertised either trough OSPFv3 or RIPng.
The full configuration files can be found here below:
The .net file (to make this properly work you need to alter the paths towards the IOS files and the startup configs needed):
The actual network drawings can also be downloaden in PDF format:
>> ipv6-dynamic-routing-diagram.pdf
The last document will be the IP sheet with an overview of all the complex long IPv6 addresses:
>> ipv6-number-plan.xls ipv6-number-plan.xls ipv6-number-plan.xls
The IOS version that I used is “c3640-ik9o3s-mz.124-17.bin” (uncompressed = c3640-ik9o3s-mz.124-17.image) which I can not share due to copyright rules. I hope this post has been informative and fun to read and good luck with trying this at home!
If you have any questions or remarks please leave a comment or CONTACT me, I like to be challenged in what I do and I like compliments it keeps me sharp and updated.
Take care and I wish you a happy IPv6 Routing Experience …