3.5. Output Processing
Connected: An Internet Encyclopedia
3.5. Output Processing
Up:
Connected: An Internet Encyclopedia
Up:
Requests For Comments
Up:
RFC 1058
Up:
3. Specifications for the protocol
Prev: 3.4.2. Response
Next: 3.6. Compatibility
3.5. Output Processing
3.5. Output Processing
This section describes the processing used to create response
messages that contain all or part of the routing table. This
processing may be triggered in any of the following ways:
- by input processing when a request is seen. In this case,
the resulting message is sent to only one destination.
- by the regular routing update. Every 30 seconds, a
response containing the whole routing table is sent to
every neighboring gateway. (See section 3.3.)
- by triggered updates. Whenever the metric for a route is
changed, an update is triggered. (The update may be
delayed; see below.)
Before describing the way a message is generated for each directly-
connected network, we will comment on how the destinations are chosen
for the latter two cases. Normally, when a response is to be sent to
all destinations (that is, either the regular update or a triggered
update is being prepared), a response is sent to the host at the
opposite end of each connected point-to-point link, and a response is
broadcast on all connected networks that support broadcasting. Thus,
one response is prepared for each directly-connected network and sent
to the corresponding (destination or broadcast) address. In most
cases, this reaches all neighboring gateways. However, there are
some cases where this may not be good enough. This may involve a
network that does not support broadcast (e.g., the ARPANET), or a
situation involving dumb gateways. In such cases, it may be
necessary to specify an actual list of neighboring hosts and
gateways, and send a datagram to each one explicitly. It is left to
the implementor to determine whether such a mechanism is needed, and
to define how the list is specified.
Triggered updates require special handling for two reasons. First,
experience shows that triggered updates can cause excessive loads on
networks with limited capacity or with many gateways on them. Thus
the protocol requires that implementors include provisions to limit
the frequency of triggered updates. After a triggered update is
sent, a timer should be set for a random time between 1 and 5
seconds. If other changes that would trigger updates occur before
the timer expires, a single update is triggered when the timer
expires, and the timer is then set to another random value between 1
and 5 seconds. Triggered updates may be suppressed if a regular
update is due by the time the triggered update would be sent.
Second, triggered updates do not need to include the entire routing
table. In principle, only those routes that have changed need to be
included. Thus messages generated as part of a triggered update must
include at least those routes that have their route change flag set.
They may include additional routes, or all routes, at the discretion
of the implementor; however, when full routing updates require
multiple packets, sending all routes is strongly discouraged. When a
triggered update is processed, messages should be generated for every
directly-connected network. Split horizon processing is done when
generating triggered updates as well as normal updates (see below).
If, after split horizon processing, a changed route will appear
identical on a network as it did previously, the route need not be
sent; if, as a result, no routes need be sent, the update may be
omitted on that network. (If a route had only a metric change, or
uses a new gateway that is on the same network as the old gateway,
the route will be sent to the network of the old gateway with a
metric of infinity both before and after the change.) Once all of
the triggered updates have been generated, the route change flags
should be cleared.
If input processing is allowed while output is being generated,
appropriate interlocking must be done. The route change flags should
not be changed as a result of processing input while a triggered
update message is being generated.
The only difference between a triggered update and other update
messages is the possible omission of routes that have not changed.
The rest of the mechanisms about to be described must all apply to
triggered updates.
Here is how a response datagram is generated for a particular
directly-connected network:
The IP source address must be the sending host's address on that
network. This is important because the source address is put into
routing tables in other hosts. If an incorrect source address is
used, other hosts may be unable to route datagrams. Sometimes
gateways are set up with multiple IP addresses on a single physical
interface. Normally, this means that several logical IP networks are
being carried over one physical medium. In such cases, a separate
update message must be sent for each address, with that address as
the IP source address.
Set the version number to the current version of RIP. (The version
described in this document is 1.) Set the command to response. Set
the bytes labeled "must be zero" to zero. Now start filling in
entries.
To fill in the entries, go down all the routes in the internal
routing table. Recall that the maximum datagram size is 512 bytes.
When there is no more space in the datagram, send the current message
and start a new one. If a triggered update is being generated, only
entries whose route change flags are set need be included.
See the description in Section 3.2 for a discussion of problems
raised by subnet and host routes. Routes to subnets will be
meaningless outside the network, and must be omitted if the
destination is not on the same subnetted network; they should be
replaced with a single route to the network of which the subnets are
a part. Similarly, routes to hosts must be eliminated if they are
subsumed by a network route, as described in the discussion in
Section 3.2.
If the route passes these tests, then the destination and metric are
put into the entry in the output datagram. Routes must be included
in the datagram even if their metrics are infinite. If the gateway
for the route is on the network for which the datagram is being
prepared, the metric in the entry is set to 16, or the entire entry
is omitted. Omitting the entry is simple split horizon. Including
an entry with metric 16 is split horizon with poisoned reverse. See
Section 2.2 for a more complete discussion of these alternatives.
Next: 3.6. Compatibility
Connected: An Internet Encyclopedia
3.5. Output Processing
|