routed -- network routing daemon


/etc/routed [ -d ] [ -g ] [ -q ] [ -s ] [ -t ] [ logfile ]


The routed daemon is invoked by root at boot time to manage the Internet Routing Tables (usually during init 2). The routed daemon uses a variant of the Xerox NS Routing Information Protocol to maintain up-to-date kernel Routing Table entries.

The SCO TCP/IP start/stop script, tcp(ADMN), starts and stops the routed daemon when a STARTDAEMONx/STOPDAEMONx variable pair is set to /etc/routed in the tcp(SFF) configuration file (/etc/default/tcp).

In normal operation, routed listens on the udp(ADMP) socket 520 (decimal) to provide the route service (see services(SFF)) for routing information packets. If the host is an internetwork router, it periodically supplies copies of its Routing Tables to any directly connected hosts and networks.

When routed is started, it uses the SIOCGIFCONF ioctl(S) to find those directly connected interfaces configured into the system and ``marked up'' (the software loopback interface will be ignored). If multiple interfaces are present and the kernel variable ipforwarding is set, it is assumed that the host will forward packets between networks. Then routed transmits a REQUEST packet on each interface (using a broadcast packet if the interface supports it) and enters a loop, listening for REQUEST and RESPONSE packets from other hosts.

When a REQUEST packet is received, routed formulates a reply based on the information maintained in its internal tables. The generated RESPONSE packet contains a list of known routes, each marked with a ``hop count'' metric (a count of 16, or greater, is considered ``infinite''). The metric associated with each route returned provides a metric ``relative to the sender''.

Any RESPONSE packets received by routed are used to update the Routing Tables if one of the following conditions is satisfied:

When an update is applied, routed records the change in its internal tables and updates the kernel Routing Table and generates a RESPONSE packet reflecting these changes to all directly connected hosts and networks. The routed daemon will wait a short period of time (no more than 30 seconds) before updating the kernel's Routing Tables to allow any possible unstable situations to settle.

In addition to processing incoming packets, routed also checks the Routing Table entries periodically. If an entry has not been updated for 3 minutes, this entry's metric is set to infinity and marked for deletion. Deletions are delayed for an additional 60 seconds to insure the invalidation is propagated throughout the local internet.

Any hosts acting as internetwork routers gratuitously supply their routing tables every 30 seconds to all directly connected hosts and networks. The response is sent to the broadcast address on nets capable of that function, to the destination address on point-to-point links, and to the router's own address on other networks. The normal Routing Tables are bypassed when sending gratuitous responses. The reception of responses on each network is used to determine that the network and interfaces are functioning correctly. If no response is received on an interface, another route may be chosen to route around the interface, or the route may be dropped if no alternative route is available.

For details on the kernel variables ipforwarding and ipsendredirects, see ``Internet Protocol (IP) parameters'' in the Performance Guide.


This option will stop routed going into background, and releasing itself from the controlling terminal, so that interrupts from the keyboard will kill the process.

This flag is used on internetwork routers to offer a route to the ``default'' destination. Typically, this is used on a gateway to the Internet, or on a gateway that uses another routing protocol whose routes are not reported to other local routers.

Supplying this option forces routed to supply routing information whether it is acting as an internetwork router or not. This is the default if multiple network interfaces are present, or if a point-to-point link is in use.

This is the opposite of the -s option. If either of these flags is used, the value of ipforwarding is ignored and routed will act in accordance with the specified flag.

The -t option increments the tracing level; successive levels are:

routed -t
trace actions only

routed -t -t
trace actions and packets

routed -t -t -t
trace actions and history of packets and contents after change

routed -t -t -t -t
trace actions, packets and contents
This tracing level may also be incremented by sending a SIGUSR1 signal to the routed process. SIGUSR2 sets the tracing level to zero (off). All tracing is sent to standard output unless routed has divorced itself from a controlling terminal, or a logfile has been specified.

Any other argument supplied is interpreted as the name of a file in which routed's actions should be logged. This log contains information about any changes to the Routing Tables and -- if not tracing all packets -- a history of recent messages sent and received which are related to the changed route.

In addition to the facilities described above, routed supports the notion of ``distant'' passive and active gateways. When routed is started up, it reads the file /etc/gateways to find gateways which may not be located using only information from the SIOCGIFCONF ioctl. Gateways specified in this manner should be marked passive if they are not expected to exchange routing information, while gateways marked active should be willing to exchange routing information (i.e., they should have a routed process running on the machine). Routes through passive gateways will be installed in the kernel's routing tables once upon startup. Such routes are not included in any routing information transmitted. The active gateways will be treated the same as network interfaces. Routing information will be distributed to the gateway; if no routing information is received for a period of time, the associated route will be deleted. External gateways are also passive, but will not be placed into the kernel Routing Table nor will they be included in the routing updates. The function of these external entries is to inform routed that another routing process will install such a route and that alternate routes to that destination should not be installed. Such entries are required only when both routers may learn of routes to the same destination.

The /etc/gateways table consists of a series of lines, each of the following format:

<net | host> name1 gateway name2 metric value < passive | active | external>

net host
Indicates if the route is to a network or to a specific host.

The name of the destination network or host. This may be a symbolic name located in /etc/networks or /etc/hosts (or, if routed is started after named(ADMN), then name1 is known by the name server), or an Internet address specified in ``dot notation'' (see hosts(SFF) and inet(ADMP)).

The name or address of the gateway to which messages should be forwarded.

A metric indicating the hop count to the destination host or network.

passive, active, or external
One of these keywords indicates if the gateway should be treated as passive or active (as described above), or whether the gateway is external to the scope of the routed protocol.
Internetwork routers that are directly attached to networks such as the Milnet should use the Exterior Gateway Protocol (EGP) to gather routing information rather then using a static routing table of passive gateways. EGP is required in order to provide routes for local networks to the rest of the Internet system. In this case, gated(ADMN) should be used instead.


The kernel's Routing Tables may not correspond to those of routed for short time intervals while processes utilizing the existing routes exit; the only remedy for these temporary discrepancies would be to place the routing process into the kernel.

In addition, routed should listen to any ``intelligent interfaces'' (such as an IMP) and to error protocols (such as ICMP). For example, routed should listen for any ``redirects'' included with ICMP packets received via a raw socket where these ICMP ``redirects'' will cause changed or added routes.


The pre-SCO OpenServer syntax of route(ADMN) will work correctly, provided that the specified metric argument (specifying the number of hops) is less than 10:

/etc/route command destination gateway [ metric ]

If the value of metric is greater than 9, it will be interpreted as a netmask. For example, the old form of the command which specifies a metric of 16:

route add default gateway 16

should be replaced by:

route add -hopcount 16 default gateway


startup configuration file

for distant gateways



See also

inet(ADMP), ioctl(S), udp(ADMP)

Standards conformance

routed is conformant with RFC 1058
© 2003 Caldera International, Inc. All rights reserved.
SCO OpenServer Release 5.0.7 -- 11 February 2003