8 Oct 1986 12:19-EDT
The source routing that you have described is much better than
that in the second message (from MarkL). The latter ignores the fact
that a host (A) may be multiply homed, either to a single net or to
multiple nets, and thus may not provide the destination host (D) with
sufficient information to be able to return a datagram to the soure
host (A) by inverting the route (as described in the second message).
In fact it is most likely to fail just when it is most needed -- when
one of A's interfaces/network+gateway has failed.
For example, consider the case where A has two interfaces, A1
and A2, to your net 1 and net 2. A TCP connection between A and D
should use A2 as the ADDRESS representation for A's NAME since it is
one network closer to D. Thus the source would be A2 and the
destination D3. If A's interface to net 2 should fail, the failure
should be reported to the higher layers, e.g., IP and the IP routing
algorithm would select the other interface, A1, to send the packet.
This won't "work" since the return packets have A2 as the destination
and that path is non-functioning. This is where a "robust" host
implementation would like to use a source route to specify that
(return) packets to A2 should be source routed via A1. The
implementation that you describe can do this because the record route
option has the IP address of the host interface which was used to send
the packet; the other implementation will fail because it does not.
Note that in the above it is assumed that a system receiving a
source routed packet will invert the route and use it for outgoing
packets. Note also that it is not something that would "properly" be
done at the IP level, but at a higher level such as TCP or UPD,
automatically unless a higher level protocol/application has specified
something to the contrary. This "robustness" requirement is not
described anywhere in the IP/TCP/xxx protocol specifications.
This archive was generated by hypermail 2.0b3 on Thu Mar 09 2000 - 14:36:58 GMT