IPv6–RIPNG
In this post we will try to explore various RIPng configuration, RIPng on broadcast networks and NBMA networks, routes filtering, summarization and default route injection into RIPng
Basic configuration
R1:
ipv6 unicast-routing interface Loopback100 no ip address ipv6 address FC00:1:145:1::1/64 ! interface FastEthernet0/0 ipv6 enable interface Serial1/0 encapsulation frame-relay ipv6 enable |
R2
ipv6 unicast-routing interface Loopback100 no ip address ipv6 address FC00:1:123:2::2/64 interface Serial1/0 no ip address encapsulation frame-relay ipv6 enable |
R3
ipv6 unicast-routing interface Loopback100 ipv6 address FC00:1:123:3::3/64 interface Serial1/0 encapsulation frame-relay ipv6 enable |
R4
ipv6 unicast-routing ! interface Loopback100 no ip address ipv6 address FC00:1:145:4::4/64 ! interface FastEthernet0/0 ipv6 enable |
R5
ipv6 unicast-routing ! interface Loopback100 no ip address ipv6 address FC00:1:145:5::5/64 ! interface FastEthernet0/0 ipv6 enable |
As we can see the configuration is straight forward, each router has a loopback interface with ipv6 address and all other connecting interfaces are relying on automatic ipv6 link local addresses using the ipv6 enable command under the interface level
now let’s start configuring RIPng on the broadcast network between R1, R4 and R5
RIPng is configured under the interface level using IPv6 rip name enable
The name is just a local significant identifier that identify this specific RIPng process
so under R1, R4 and R5
interface FastEthernet0/0 ipv6 rip RIPng enable |
now let’s check RIPng on R1 for example
R1(config-line)#do sh ipv rip RIPng RIP process "RIPng", port 521, multicast-group FF02::9, pid 257 Administrative distance is 120. Maximum paths is 16 Updates every 30 seconds, expire after 180 Holddown lasts 0 seconds, garbage collect after 120 Split horizon is on; poison reverse is off Default routes are not generated Periodic updates 1132, trigger updates 2 Interfaces: FastEthernet0/0 Loopback100 Redistribution: None |
and the routing table
R1(config-line)#do sh ipv route rip IPv6 Routing Table - 5 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route, M - MIPv6 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 D - EIGRP, EX - EIGRP external R FC00:1:145:4::/64 [120/2] via FE80::C003:1BFF:FE98:0, FastEthernet0/0 R FC00:1:145:5::/64 [120/2] via FE80::C004:13FF:FE28:0, FastEthernet0/0 |
note how the next hope is set to the link local addresses of the neighbor routers R2 and R3, since this is a broadcast network and thanks to IPv6 NDP (Neighbor Discovery Protocol) these addresses can be automatically resolved
let’s try to ping
R4(config-line)#do p FC00:1:145:1::1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to FC00:1:145:1::1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 16/28/52 ms R4(config-line)#do p FC00:1:145:4::4 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to FC00:1:145:4::4, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 0/2/4 ms |
All looks good,
For us to configure RIPng on the frame relay network we will need to configure IPv6 frame relay static maps since there is no inverse arp for IPv6 (IPv6 doesn’t use ARP anyway!)
For simplicity we will configure local manual link local address for R1, R2 and R3 interfaces
R1
R1#show run interface s1/0 Building configuration... Current configuration : 250 bytes ! interface Serial1/0 no ip address encapsulation frame-relay ipv6 address FE80::1 link-local ipv6 rip RIPng enable serial restart-delay 0 frame-relay map ipv6 FE80::3 103 broadcast frame-relay map ipv6 FE80::2 102 broadcast |
R2
R2#show running-config interface s1/0 Building configuration... Current configuration : 206 bytes ! interface Serial1/0 no ip address encapsulation frame-relay ipv6 address FE80::2 link-local ipv6 enable ipv6 rip RIPng enable serial restart-delay 0 frame-relay map ipv6 FE80::1 201 broadcast |
R3
R3#show run interface s1/0 Building configuration... Current configuration : 206 bytes ! interface Serial1/0 no ip address encapsulation frame-relay ipv6 address FE80::3 link-local ipv6 rip RIPng enable serial restart-delay 0 frame-relay map ipv6 FE80::1 301 broadcast end |
note that we need the broadcast keyword in the map statement since updates are send to multicast address FF02:9 this can be changed under the RIPng process using this command port X multicast-group YY however neighbor can’t be used as we used to do with RIPv2 to send unicast updates
Now let’s check the routing table on R1 and R2
R1
R1(config-rtr)#do sh ipv6 route rip IPv6 Routing Table - 7 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route, M - MIPv6 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 D - EIGRP, EX - EIGRP external R FC00:1:123:2::/64 [120/2] via FE80::2, Serial1/0 R FC00:1:123:3::/64 [120/2] via FE80::3, Serial1/0 R FC00:1:145:4::/64 [120/2] via FE80::C003:1BFF:FE98:0, FastEthernet0/0 R FC00:1:145:5::/64 [120/2] via FE80::C004:13FF:FE28:0, FastEthernet0/0 |
R2
R2#show ipv6 route rip IPv6 Routing Table - 6 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route, M - MIPv6 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 D - EIGRP, EX - EIGRP external R FC00:1:145:1::/64 [120/2] via FE80::1, Serial1/0 R FC00:1:145:4::/64 [120/3] via FE80::1, Serial1/0 R FC00:1:145:5::/64 [120/3] via FE80::1, Serial1/0 |
So everything looks good on R1 but on R2 we are not receiving the R3 loopback address and if we would check the routing table of R3 we would have seen that R2 loopback address is not received, this because the split horizon rule that we had in IPv4 distance vector protocols still applies to IPv6 protocols
unlike RIPv2 split horizon is disabled globally under the RIPng process and not per interface, so we need to change this on R1
R1(config-if)#ipv6 router rip RIPng R1(config-rtr)#no split-horizon |
Now lets’ check the routing table on R2
R2#show ipv6 route rip IPv6 Routing Table - 7 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route, M - MIPv6 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 D - EIGRP, EX - EIGRP external R FC00:1:123:3::/64 [120/3] via FE80::1, Serial1/0 R FC00:1:145:1::/64 [120/2] via FE80::1, Serial1/0 R FC00:1:145:4::/64 [120/3] via FE80::1, Serial1/0 R FC00:1:145:5::/64 [120/3] via FE80::1, Serial1/0 |
Looks much better now!
Route Filtering
In RIPng we can filter prefixes from entering the routing database using
distribute-lists as we used to do with IPv4 RIP however we can only match prefix list to filter we can’t match access-lists
So let’s say that we want to filter R4 loopback address from entering R2 routing table
we can do that using distribute list
R2(config)#ipv6 prefix-list R4_LOOPBACK seq 5 deny FC00:1:145:4::/64 R2(config)#ipv6 prefix-list R4_LOOPBACK seq 10 permit ::/0 le 128 R2(config)#ipv6 router rip RIPng R2(config-router)#distribute-list prefix-list R4_LOOPBACK in |
by not specifying an interface in the distribute-list command we are filtering the prefix to enter the routing database regardless of the interface it’s received on
Now let’s check the RIP routes on R2
R2(config)#do sh ipv6 route rip IPv6 Routing Table - 6 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route, M - MIPv6 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 D - EIGRP, EX - EIGRP external R FC00:1:123:3::/64 [120/3] via FE80::1, Serial1/0 R FC00:1:145:1::/64 [120/2] via FE80::1, Serial1/0 R FC00:1:145:5::/64 [120/3] via FE80::1, Serial1/0 |
Excellent that worked!
Metric-Offset
If you remember offset list that we have in IPv4 RIP, we still can offset the metrics for RIPng unfortunately it’s not as modular as it’s in IPv4 RIP where you can match some prefixes and offset their metric, metric offset in IPv6 is applied under the interface and it affects all RIPng updates received on this interface
let’s see this in action, let’s offset all RIP updates coming into R3 S1/0 interface by 3
R3(config)#interf s1/0 R3(config)#ipv6 rip RIPng metric-offset 3 |
Now let’s check the effect of that
R3(config-if)#do sh ipv route rip IPv6 Routing Table - 7 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route, M - MIPv6 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 D - EIGRP, EX - EIGRP external R FC00:1:123:2::/64 [120/5] via FE80::1, Serial1/0 R FC00:1:145:1::/64 [120/4] via FE80::1, Serial1/0 R FC00:1:145:4::/64 [120/5] via FE80::1, Serial1/0 R FC00:1:145:5::/64 [120/5] via FE80::1, Serial1/0 |
As we can see all metric values received on that interface have been increased by 3
This can also used for filtering, by specifying a metric value of 16, this will effectively filter all routes
Summarization:
summarization is almost identical to IPv4 of RIP, where it’s done under the interface level
If we want to summarize R4 and R5 loopback interfaces and send the summary only to R2 and R3
on R1
R1(config)#interf s1/0 R1(config-if)#ipv6 rip RIPng summary-address fc00:1:145::/61 |
Now let’s see that on R3
R3(config-if)#do sh ipv route rip IPv6 Routing Table - 5 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route, M - MIPv6 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 D - EIGRP, EX - EIGRP external R FC00:1:123:2::/64 [120/5] via FE80::1, Serial1/0 R FC00:1:145::/61 [120/4] via FE80::1, Serial1/0 |
note that because the summarized address encompasses R1 loopback interface this was also supressed from being advertised
Similiar to IPv4 RIP, RIPng doesn’t create a null route when performing summarization
Default-route injection
We can have a default route injected into RIPng domain using 2 options
default-information originate under interface level , with this option we can use the only keyword so we supress all other RIPng routes and advertise only the default route, OR we can use the originate keyword to advertise the default route and the more specific routes
let’s try this under R1
R1(config)#interf s1/0 R1(config-if)#ipv6 rip RIPng default-information only |
Now if we check the routing table on R2 and R3 we should see only the default route
R2(config-router)#do sh ipv6 route rip IPv6 Routing Table - 4 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route, M - MIPv6 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 D - EIGRP, EX - EIGRP external R ::/0 [120/4] via FE80::1, Serial1/0 |
Because this command is under the interface level, R4 and R5 wouldn’t receive the default route from R1
R4#sh ipv6 route rip | in ::/0 R4# R5#sh ipv6 route rip | in ::/0 R5# |
If we change the only keyword on R1 to originate we should be advertising the default route plus the more specific routes
R1(config)#interf s1/0 R1(config-if)#no ipv6 rip RIPng default-information only |
So on R1
R1(config)#interf s1/0 R1(config-if)#ipv6 rip RIPng default-information only |
now check R1 routing table
R2(config-router)#do sh ipv6 route rip IPv6 Routing Table - 6 entries Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP U - Per-user Static route, M - MIPv6 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 D - EIGRP, EX - EIGRP external R ::/0 [120/4] via FE80::1, Serial1/0 R FC00:1:145:1::/64 [120/4] via FE80::1, Serial1/0 R FC00:1:145:5::/64 [120/5] via FE80::1, Serial1/0 |
The other way of doing this is just redistributing the default route into the RIPng prcoess
R1(config-if)#no ipv6 rip RIPng default-information originate |
This will have every other router in the RIPng domain to the have the default router
so if we check the routing table on R2 and R5
R5(config-line)# do sh ipv6 route | in ::/0 R ::/0 [120/2 |
And R2
R2# sh ipv6 route | in ::/0 R ::/0 [120/2] |
Comments
Post a Comment