Configuring RIP and RDISC
There are two commonly used dynamic routing methods available on Solaris to fill up routing tables. These are the Router Discovery Protocol (RDISC) and the Routing Information Protocol (RIP). RDISC is used to discover available routers on the networks. RDISC is run either in host mode or in router mode. If it is running in host mode, it only listens to router broadcasts. If it is running in router mode, it broadcasts messages on the network. RDISC uses the ICMP router discovery method. The in.rdisc daemon is used to support RDISC. RIP uses in.routed daemon and is started at the boot time. It is used to exchange routing information among hosts and routers. Both RIP and RDISC are standard TCP/IP protocols.
How Does a Host Determine if it is a Router?
A host acts as a router if one of the following conditions is true:
There are multiple /etc/hostname.interface files present. It shows that multiple network interfaces are configured. An example of this file is /etc/hostname.hme0 which shows the presence of the network interface hme0.
If someone configures multiple network interfaces manually using ifconfig command.
Configuring RDISC (in.rdisc)
The ICMP type field values 9 and 10 in the ICMP header part of the ICMP packet are used for RDISC. Type 9 is used for a router advertisement while type 10 is used for router selection. The in.rdisc daemon uses ICMP router discovery protocol and there are two modes of the daemon: The Host mode and the Router mode. RDISC uses multicast addresses to fill out routing tables. These modes are discussed in the following sections.
Running RDISC in Host Mode
When we start in.rdisc in host mode, in.rdisc listens to the ALL_HOSTS multicast address. This address is 244.0.0.1 and routers advertise messages on this address. At the start time, in.rdisc ignores all router advertisements except for those routers that are present on one of the directly connected networks. The higher preference routers are selected to enter default routing entries in the routing table.
Sometimes in.rdisc can also send router solicitation messages on the ALL_ROUTERS (224.0.0.2) multicast address to find available routers. The in.rdisc gives up if a response is not received after three solicitation messages.
Running RDISC in Router Mode
When started in router mode, in.rdisc starts listening to the ALL_ROUTERS multicast address. It starts sending messages on the ALL_HOSTS multicast address. Initially, it sends a number of advertisements in the first 30 seconds. After that in.rdisc advertises routing every 10 minutes.
If it finds any router solicitation message, it sends routing information to the requesting host.
The daemon is usually started through the /etc/rc2.d/S69inet script. Table 3.1 shows common command line options used with in.rdisc.
Table 3.1 Command line options used with in.rdisc
Option |
Description |
-r |
Runs the daemon in router mode. |
-p <preference> |
Sets the preference number transmitted in solicitation messages. The default is zero. |
-a |
Accepts all routers ignoring preference. Normally in.rdisc accepts only routers with the highest preference. |
-s |
Sends three solicitation messages and if no response is received, it gives up. |
-f |
Runs in.rdisc forever even if no response is received to the initial solicitation messages. |
-T <interval> |
Sets the interval between consecutive advertisements. Default The default interval is 600 seconds. |
NOTE
On the router, you should also run RIP in addition to RDISC to be able to exchange routing information among different routers. RDISC can't be used as a general purpose routing protocol on the Internet.
Disabling RDISC
To stop RDISC broadcasts, you may wish to disable it on some hosts. The easiest way to disable RDISC is to rename the /usr/sbin/in.rdisc file to a different name and reboot the system. Don't delete the file, you may need to enable RDISC again.
Configuring RIP (in.routed)
The in.routed daemon implements the Routing Information Protocol and is started using the /etc/rc2.d/S69inet script. It listens to port number 520 for routing information advertisements. It periodically exchanges routing tables with directly connected routers. It uses hop counts to find an optimal route to a destination. Hop count 16 and above are considered unreachable. This hop count is also called infinity. When exchanging routing table information, the daemon sends the hop count with each connected route. Depending upon information received from the neighboring routers, it automatically updates its own routing table. Updating the routing table is done if one of the following conditions is true:
The received packet contains information about a new route and the hop count is not infinity.
The update is received from the router through which packets are being forwarded to the destination.
A new route is received while the previous route has not been updated for 90 seconds and the new route is as cost effective as the old one.
The new route describes a shorter path than the existing one.
If an entry in the routing table has not been updated for three minutes, it is marked as infinity. Initially, the daemon checks the /etc/gateways file to fill out entries in the routing table.
RIP Advertisement by a Solaris Machine
You can use the snoop command to display what type of information is being advertised by RIP. Following is the output of the snoop v command that shows one RIP packet with an advertisement route to network 192.168.2.0:
ETHER: ----- Ether Header -----ETHER: ETHER: Packet 24 arrived at 12:53:38.53 ETHER: Packet size = 66 bytes ETHER: Destination = ff:ff:ff:ff:ff:ff, (broadcast) ETHER: Source = 8:0:20:9e:f0:50, Sun ETHER: Ethertype = 0800 (IP) ETHER: IP: ----- IP Header ----- IP: IP: Version = 4 IP: Header length = 20 bytes IP: Type of service = 0x00 IP: xxx. .... = 0 (precedence) IP: ...0 .... = normal delay IP: .... 0... = normal throughput IP: .... .0.. = normal reliability IP: Total length = 52 bytes IP: Identification = 47726 IP: Flags = 0x4 IP: .1.. .... = do not fragment IP: ..0. .... = last fragment IP: Fragment offset = 0 bytes IP: Time to live = 1 seconds/hops IP: Protocol = 17 (UDP) IP: Header checksum = f6d2 IP: Source address = 192.168.2.222, fana-nt IP: Destination address = 192.168.2.255 IP: No options IP: UDP: ----- UDP Header ----- UDP: UDP: Source port = 520 UDP: Destination port = 520 (RIP) UDP: Length = 32 UDP: Checksum = 6E79 UDP: RIP: ----- Routing Information Protocol ----- RIP: RIP: Opcode = 2 (route response) RIP: Version = 1 RIP: RIP: Address Port Metric RIP: 192.168.2.0 192.168.2.0 0 1
About this Article
This article is excerpted from Solaris 8 Training Guide (310-043): Network Administrator Certification, by Rafeeq Ur Rehman (New Riders Publishing, 2001, ISBN: 1578702615). Refer to chapter 3 for more detailed coverage of the material found in this article.