For the most part, RIPng is very similar to the RIPv2 specification. However, it is also important to remember that there are some notable differences that you should be familiar with in regards to these two routing protocols. These similarities and differences are listed in Table 10-3:
| Protocol Characteristic | RIPv2 | RIPng |
|---|---|---|
| Protocol Classification | Distance Vector | Distance Vector |
| Hop Limitation | 15 | 15 |
| Split Horizon | Yes | Yes |
| Poison Reverse | Yes | Yes |
| Transport Layer Protocol | UDP | UDP |
| Multicast Updates | Yes (224.0.0.9) | Yes (FF02::9) |
| Administrative Distance | 120 | 120 |
| Hold-down Timers | Yes | Yes |
| Destination Prefix Length | 32-bit | 128-bit |
| Next Hop Length | 32-bit | 128-bit |
| Next Hop Address | Primary Interface Address | Link-Local Address |
| Transport | IPv4 | IPv6 |
| UDP Port Number | 520 | 521 |
| Authentication | Text and MD5 | Inbuilt into IPv6 (IPsec) |
| Automatic Summarization | Yes (enabled by default) | Not Applicable |
| Can Broadcast Updates | Yes | Not Applicable |
When troubleshooting RIPng, you should keep in mind that RIPng has the same limitations as RIPv2. For example, updates with a hop count of 16 (or greater) are considered unreachable. These routes will not be installed into the routing table.
The primary problems experienced when implementing RIPng are due to misconfigurations as the configuration syntax for RIPv2 and RIPng is significantly different in Cisco IOS software. For example, when configuring RIPv2, you configure the router to advertise a default route in router configuration mode using the default-information originate router configuration command. This allows the RIPv2 router to advertise the default route to all other neighbors. With RIPng, however, this functionality is now performed under the interface. Therefore, the default route is advertised only out that specified interface, which means that multiple instances of this command are required on a router with multiple RIPng-enabled interfaces and multiple neighbors that should all be receiving the default route.
Recapping what is described in the ROUTE guide, Table 10-4 lists some common configuration commands and how they are applied in RIPv2 and RIPng respectively:
| Command Function | RIPv2 Command | RIPng Command |
|---|---|---|
| Enable RIP routing | Use the router rip global configuration command | Use the ipv6 router rip [tag] global configuration command |
| Advertise networks or prefixes using RIP | Use the network router configuration command | Use the ipv6 rip [tag] enable interface configuration command |
| Generate a RIP default route | Use the default-information originate router configuration command | Use the ipv6 rip [tag] default-information [originate | only] interface configuration command |
| Enable or disable Split Horizon | Use the [no] ip split-horizoninterface configuration command | Use the [no] split-horizon router configuration command |
| Verify received RIP routing information | Use the show ip route [rip]command | Use the show ipv6 route [rip] command |
| Verify the RIP database | Use the show ip rip databasecommand | Use the show ipv6 rip [tag] databasecommand |
As previously stated, commonly experienced problems with RIPng are due to misconfiguration on the devices running RIPng. Commonly encountered issues include the following:
- Incorrect default route advertisement configuration causes connectivity issues
- The router is not receiving routes
- The router advertising routes it should not be advertising
- No routes are installed into RIB
RIPng uses the ipv6 rip [tag] default-information [originate| only] interface configuration command to advertise a default route. By default, when this command is specified, the router will advertise the default route even if one is not present in the routing table. In most cases, when advertising a default route to downstream neighbors, there is typically no need to advertise any other specific routes. However, there are instances when you might want to advertise both the default and some other more specific routes. For example, consider the topology that is illustrated in Figure 10-1:
Fig. 10-1. RIPng Default Routing Issues
Referencing Figure 10-1, routers R1, R2 and R3 are running RIPng. In addition to this, routers R2 and R3 are peered to two ISPs and are running MP-BGP. These routers are receiving multiple routes from the ISP. Therefore, rather than redistribute these into RIPng, administrators have decided instead to configure R2 and R3 to simply send R1 a default route. Based on this solution, the current routing table on R1 shows the following entries:
| R1#show ipv6 route IPv6 Routing Table – 3 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 ::/0 [120/2] via FE80::213:19FF:FE86:CA20, FastEthernet0/0.22 via FE80::201:96FF:FE1B:DB80, FastEthernet0/0.33 L FE80::/10 [0/0] via ::, Null0 L FF00::/8 [0/0] via ::, Null0 |
While this configuration works well for Internet-based traffic, assuming both R2 and R3 have the same Internet routes, it does introduce intermediate connectivity issues from R1 to the Loopback0 subnets configured on routers R2 and R3 as illustrated in the following ping output:
| R1#ping fc00::2 repeat 10 source fastethernet 0/0 verboseType escape sequence to abort. Sending 10, 100-byte ICMP Echos to FC00::2, timeout is 2 seconds: Packet sent with a source address of FE80::20C:CEFF:FEA7:F3A0 Reply to request 0 (0 ms) Request 1 received unknown echo response type U Reply to request 2 (0 ms) Request 3 received unknown echo response type U Reply to request 4 (4 ms) Request 5 received unknown echo response type U Reply to request 6 (0 ms) Request 7 received unknown echo response type U Reply to request 8 (0 ms) Request 9 received unknown echo response type U Success rate is 50 percent (5/10), round-trip min/avg/max = 0/0/4 ms |
| R1#ping fc00::3 repeat 10 source fastethernet 0/0 verboseType escape sequence to abort. Sending 10, 100-byte ICMP Echos to FC00::3, timeout is 2 seconds: Packet sent with a source address of FE80::20C:CEFF:FEA7:F3A0 Reply to request 0 (4 ms) Request 1 received unknown echo response type U Reply to request 2 (0 ms) Request 3 received unknown echo response type U Reply to request 4 (0 ms) Request 5 received unknown echo response type U Reply to request 6 (4 ms) Request 7 received unknown echo response type U Reply to request 8 (0 ms) Request 9 received unknown echo response type U Success rate is 50 percent (5/10), round-trip min/avg/max = 0/1/4 ms |
The reason for this issue is that one packet is sent to R2 while another is sent to R3. The packet sent to the router on which the /128 address is configured will be responded to; however, the packet sent to the router on which the /128 address is not configured will time out. This is because the local router is load-balancing across the equal-cost path, i.e. the 0.0.0.0 route that is received from both routers R2 and R3.
As you troubleshoot, you verify the configurations of R2 and R3, you notice that their respective FastEthernet0/0 interfaces have been configured with the ipv6 rip TSHOOT default-information only interface configuration command as is illustrated below on router R2:
| R2#show running-config interface fastethernet 0/0 Building configuration…Current configuration : 168 bytes ! interface FastEthernet0/0 duplex auto speed auto ipv6 enable ipv6 rip TSHOOT enable ipv6 rip TSHOOT default-information only end |
While this configuration allows RIPng to advertise the default route, it also suppresses all other specific routes, leading to the intermittent connectivity issue from R1 to the R2 and R3 Loopback0 subnets illustrated above. The recommended solution in this case is to allow the router to advertise the other routes in addition to the default route. The reason this is commonly an issue is because the same behavior is not applicable when using RIPv2. In other words, with RIPv2, generating the default route does not suppress all other routes. This is yet another different in protocol operation in Cisco IOS software which can cause problems. The solution is implemented on routers R2 and R3 as follows:
| R2(config)#interface fastethernet 0/0 R2(config-if)#ipv6 rip TSHOOT default-information originate R2(config-if)#exit |
| R3(config)#interface fastethernet 0/0 R3(config-if)#ipv6 rip TSHOOT default-information originate R3(config-if)#exit |
Following this configuration, the routing table on R1 shows the following entries:
| R1#show ipv6 route IPv6 Routing Table – 6 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 2R ::/0 [120/2] via FE80::213:19FF:FE86:CA20, FastEthernet0/0.22 via FE80::201:96FF:FE1B:DB80, FastEthernet0/0.33R FC00::2/128 [120/2] via FE80::213:19FF:FE86:CA20, FastEthernet0/0.22R FC00::3/128 [120/2] via FE80::201:96FF:FE1B:DB80, FastEthernet0/0.33L FE80::/10 [0/0] via ::, Null0 L FF00::/8 [0/0] via ::, Null0 |
Following this reconfiguration on R2 and R3, the same ping tests performed on R1 earlier that had a 50% success rate are now completely successful as shown below:
| R1#ping fc00::2 repeat 10 source fastethernet 0/0 verboseType escape sequence to abort. Sending 10, 100-byte ICMP Echos to FC00::2, timeout is 2 seconds: Packet sent with a source address of FE80::20C:CEFF:FEA7:F3A0 Reply to request 0 (0 ms) Reply to request 1 (4 ms) Reply to request 2 (0 ms) Reply to request 3 (0 ms) Reply to request 4 (4 ms) Reply to request 5 (0 ms) Reply to request 6 (4 ms) Reply to request 7 (0 ms) Reply to request 8 (0 ms) Reply to request 9 (4 ms) Success rate is 100 percent (10/10), round-trip min/avg/max = 0/1/4 ms |
| R1#ping fc00::3 repeat 10 source fastethernet 0/0 verboseType escape sequence to abort. Sending 10, 100-byte ICMP Echos to FC00::3, timeout is 2 seconds: Packet sent with a source address of FE80::20C:CEFF:FEA7:F3A0 Reply to request 0 (4 ms) Reply to request 1 (0 ms) Reply to request 2 (0 ms) Reply to request 3 (0 ms) Reply to request 4 (4 ms) Reply to request 5 (0 ms) Reply to request 6 (0 ms) Reply to request 7 (4 ms) Reply to request 8 (4 ms) Reply to request 9 (0 ms) Success rate is 100 percent (10/10), round-trip min/avg/max = 0/1/4 ms |
The most common cause for the router to not receive any routes is due to misconfiguration. This may be due to route filtering misconfiguration, i.e. incorrectly configured distribute list filters, failing to enable RIPng under the correct interfaces, or even due to the incorrect use of some commands such as the default-information command, as was illustrated in the previous example. When troubleshooting such issues, verify device configurations. If any route filters are being used and have been applied, ensure that they are permitting the correct networks.
In the event that the router is not advertising prefixes that it should be, verify that the interfaces are in an up/up state on the local router. Additionally, because RIPng does not use network statements, verify that the RIPng process has been enabled under the interface(s). You can use the show ipv6 rip command to determine which RIPng process is enabled under which interfaces, amongst other things. Following is a sample output of the information that can be garnered from this command:
| R1#show ipv6 rip RIP process “TSHOOT”, port 521, multicast-group FF02::9, pid 231 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 352, trigger updates 46 Interfaces: FastEthernet0/0.22 Serial0/0 Redistribution: None RIP process “CCNP”, port 521, multicast-group FF02::9, pid 232 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 23, trigger updates 12 Interfaces: FastEthernet0/0.22 FastEthernet0/0.33 Redistribution: None |
As illustrated in the output above, it is possible for multiple RIPng instances to be configured under the same interface. When implementing RIPng, if you specify one process under the interface and then specify another, the interface belongs to both processes or instances. Cisco IOS software does not overwrite the previous process with the new one.
There are several reasons why the router may not install routes into the RIB. Common causes include route filtering and routes received with a metric of ‘unreachable’, i.e. routes received with a hop count of 16 or greater. In addition to basic show commands, you can also troubleshoot RIPng problems using the debug ip rip command. This command provides detailed information on RIPng received and sent updates as shown in the output below:
| R1#debug ipv6 rip RIP Routing Protocol debugging is on R1# *Oct 20 11:12:55.420: RIPng: Suppressed null multicast update on FastEthernet0/0.22 for TSHOOT *Oct 20 11:12:56.590: RIPng: response received from FE80::213:19FF:FE86:A20 on FastEthernet0/0.22 for TSHOOT *Oct 20 11:12:56.590: src=FE80::213:19FF:FE86:A20 (FastEthernet0/0.22) *Oct 20 11:12:56.590: dst=FF02::9 *Oct 20 11:12:56.590: sport=521, dport=521, length=92 *Oct 20 11:12:56.590: command=2, version=1, mbz=0, #rte=4 *Oct 20 11:12:56.590: tag=0, metric=1, prefix=2004::20/128 *Oct 20 11:12:56.590: tag=0, metric=1, prefix=FC00::10/128 *Oct 20 11:12:56.590: tag=0, metric=1, prefix=FC00::20/128 *Oct 20 11:12:56.590: tag=0, metric=1, prefix=FC00::30/128 *Oct 20 11:12:56.590: RIPng: Added neighbor FE80::213:19FF:FE86:A20/FastEthernet0/0.22 *Oct 20 11:12:56.590: RIPng: Inserted 2004::20/128, nexthop FE80::213:19FF:FE86:A20, metric 12, tag 0 *Oct 20 11:12:56.594: RIPng: Inserted FC00::10/128, nexthop FE80::213:19FF:FE86:A20, metric 12, tag 0 *Oct 20 11:12:56.594: RIPng: Inserted FC00::20/128, nexthop FE80::213:19FF:FE86:A20, metric 12, tag 0 *Oct 20 11:12:56.594: RIPng: Inserted FC00::30/128, nexthop FE80::213:19FF:FE86:A20, metric 12, tag 0 *Oct 20 11:12:56.594: RIPng: Triggered update requested, in hold-down *Oct 20 11:13:00.421: RIPng: generating triggered update for TSHOOT *Oct 20 11:13:00.421: RIPng: Suppressed null multicast update on FastEthernet0/0.22 for TSHOOT *Oct 20 11:13:07.360: RIPng: Next RIB walk in 169230 *Oct 20 11:13:11.992: RIPng: Process TSHOOT received response for CCNP on FastEthernet0/0.33 *Oct 20 11:13:11.992: RIPng: response received from FE80::201:96FF:FE1B:DB80 on FastEthernet0/0.33 for CCNP *Oct 20 11:13:11.992: src=FE80::201:96FF:FE1B:DB80 (FastEthernet0/0.33) *Oct 20 11:13:11.992: dst=FF02::9 *Oct 20 11:13:11.992: sport=521, dport=521, length=92 *Oct 20 11:13:11.992: command=2, version=1, mbz=0, #rte=4 *Oct 20 11:13:11.992: tag=0, metric=4, prefix=FC00::1/128 *Oct 20 11:13:11.992: tag=0, metric=4, prefix=FC00::2/128 *Oct 20 11:13:11.992: tag=0, metric=4, prefix=FC00::3/128 *Oct 20 11:13:11.992: tag=0, metric=4, prefix=FC00::4/128 *Oct 20 11:13:11.996: RIPng: Added neighbor FE80::201:96FF:FE1B:DB80/FastEthernet0/0.33 *Oct 20 11:13:11.996: RIPng: Inserted FC00::1/128, nexthop FE80::201:96FF:FE1B:DB80, metric 5, tag 0 *Oct 20 11:13:11.996: RIPng: RIPv6 ager started, 180000 *Oct 20 11:13:11.996: RIPng: Inserted FC00::2/128, nexthop FE80::201:96FF:FE1B:DB80, metric 5, tag 0 *Oct 20 11:13:11.996: RIPng: Inserted FC00::3/128, nexthop FE80::201:96FF:FE1B:DB80, metric 5, tag 0 *Oct 20 11:13:11.996: RIPng: Inserted FC00::4/128, nexthop FE80::201:96FF:FE1B:DB80, metric 5, tag 0 *Oct 20 11:13:12.000: RIPng: Triggered update requested *Oct 20 11:13:13.002: RIPng: generating triggered update for CCNP |
Referencing the debugging output above, we can determine that the local router is running two RIPng instances or processes: one named TSHOOT and the other named CCNP. Instance TSHOOT receives four prefixes from neighbor FE80::213:19FF:FE86:A20, via FastEthernet0/0.22. These prefixes have a route metric of 1, indicating that they originated on that router. However, the prefixes are installed into the RIB with a route metric of 11. This means that the original metric is being offset using the ipv6 rip TSHOOT metric-offset 11command under the FastEthernet0/0.22 interface.
The local router is also receiving four prefixes from neighbor FE80::201:96FF:FE1B:DB80 via FastEthernet0/0.33. These prefixes have are received with a route metric of 4. This is an indication that the prefixes are not local to the router, i.e. are not directly connected, or they were redistributed into RIPng on the local router and the metric was specified during redistribution. Because the metric is incremented by one (1) when the routes are installed into the RIB, we can conclude that no non-default metric offsetting is configured under the FastEthernet0/0.33 interface on the router.