IRDP
The Internet Router Discovery Protocol (IRDP, RFC 1256), sometimes also referred to as the ICMP Router Discovery Protocol, is the ancestor of redundancy concepts such as VRRP or HSRP. It is a timelessly elegant concept that recently has attracted renewed attention because of its essential role in mobile IP deployments (RFC 3344). Extensions to the original protocol were necessary to provide for the requirements of mobile node-to-agent communication.
The IRDP is a protocol based on multicast route discovery ICMP messages. It eliminates the need for manual configuration of router addresses and is independent of any specific routing protocol. Therefore, it supplements a statically configured default router.
The ICMP router discovery messages are called router advertisements and router solicitations. By default, neither router discovery advertisements nor solicitations are sent over point-to-point links (for example, PPP). As the advertisement address, the router defaults to 224.0.0.1 if the router supports IP multicast on the interface; otherwise, 255.255.255.255 is used. Router solicitations are sent to 224.0.0.2. For further information, consult the RFC and the BSD manual page routed(8).
Example 12-10 demonstrates the IRDP featuring advertisements and client solicitations. In the gated example, IRDP server (advertiser) is running on ganymed, the Cisco IOS IRDP server on scar, callisto is listening via rdisc client, and castor is running routed -q "quiet mode" to demonstrate routed's IRDP client behavior; no dynamic routing protocols are running.
The preference statements (as highlighted in Example 12-10) allow weighting of the two available gateways. (This also works with two gateways on the same network.) The server side of the ICMP router discovery protocol is supported by Cisco IOS architecture, routed, and gated and can be tuned with preference statements. The command ip irdp multicast turns off the Cisco default broadcast behavior (also highlighted in Example 12-10).
Note that MRTd and Zebra do not support IRDP currently. Experimental code was added recently to Quagga's Zebra daemon, though. GateD and routed can run in either server or client mode. Linux provides a client implementation with the rdisc(8) tool. As you can see from the configurations and output, ganymed and scar are acting as IRDP advertisers (servers), whereas castor and callisto act as IRDP clients sending IRDP solicitations to trigger responses from candidate IRDP routers on directly connected networks.
Example 12-10. IRDP Server and Client Operation
[root@ganymed:~#] cat /etc/gated.cfg ### IRDP section ### routerdiscovery server yes{ traceoptions state; address 192.168.1.254 preference 100 multicast; }; #routerdiscovery client yes{ # traceoptions state; # interface ne3 multicast solicit; #}; icmp{ traceoptions routerdiscovery; }; [root@castor:~#]routed –q –T /var/log/routed.log scar# show running-config ... interface Ethernet1 ip address 192.168.14.254 255.255.255.0 no ip proxy-arp ip irdp ip irdp preference 10 ip irdp multicast no ip route-cache no ip mroute-cache media-type 10BaseT ! interface Ethernet0 ip address 192.168.7.254 255.255.255.0 no ip proxy-arp ip irdp ip irdp multicast ip irdp preference 20 no ip route-cache no ip mroute-cache media-type 10BaseT ... scar(config-if)# ip irdp ?address addresses to proxy-advertise holdtime how long a receiver should believe the information maxadvertinterval maximum time between advertisements minadvertinterval minimum time between advertisements multicast advertisements are sent with multicasts preference preference level for this interface scar# show ip irdp ethernet 1 Ethernet1 has router discovery enabled Advertisements will occur between every 450 and 600 seconds. Advertisements are sent with multicasts. Advertisements are valid for 1800 seconds. Default preference will be 10. [root@callisto:~#] rdisc -vst Sending solicitation to ALL-ROUTERS.MCAST.NET (224.0.0.2) ICMP Router Advertise from 192.168.14.254, lifetime 1800 address 192.168.14.254, preference 0xa ICMP Router Advertise from ganymed (192.168.1.254), lifetime 1800 address ganymed (192.168.1.254), preference 0x64 address 192.168.45.254, preference 0x0 ICMP Router Advertise from 192.168.45.254, lifetime 1800 address ganymed (192.168.1.254), preference 0x64 address 192.168.45.254, preference 0x0 [root@castor:~#]cat /var/log/routed.log ... turn on Router Discovery client using 192.168.7.254 via ed0 Add 0.0.0.0 -->192.168.7.254 metric=15 ed0 ... [root@callisto:~#] tethereal -i eth0 Capturing on eth0 0.000000 192.168.14.1 -> 224.0.0.2 ICMP Router solicitation 0.001527 192.168.14.254 -> 192.168.14.1 ICMP Router advertisement ... 167.026360 192.168.14.254 -> 224.0.0.1 ICMP Router advertisement [root@callisto:~#] tethereal –i eth1 0.343388 192.168.1.1 -> 224.0.0.2 ICMP Router solicitation 0.344884 192.168.45.253 -> 224.0.0.2 ICMP Router solicitation 2.360836 192.168.1.254 -> 192.168.1.1 ICMP Router advertisement 2.361085 192.168.45.254 -> 192.168.45.253 ICMP Router advertisement [root@callisto:~#] netstat -rne Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ipsec0 192.168.14.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.45.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth1