Routing Header question

Robert Elz kre@munnari.OZ.AU
Sat, 23 Jun 2001 17:17:42 +0700


    Date:        Fri, 22 Jun 2001 19:56:53 +0100
    From:        "Tito Carlos S. Vieira" <tito@fe.up.pt>
    Message-ID:  <3B3394F4.299D0E7D@fe.up.pt>

  | I understand routing header as a method to save part of, or entire path,
  | to destination of a packet and all  intermediate routers look the
  | information of vector of "addresses " (when extension header exist) in
  | routing header, and based on this information forward the packect to the
  | next address in the vector of addresses of routing header. I suppose
  | this need to examine and process routing header in all intermediate
  | nodes but in page 14 i can see that ideia are incorrect and routing
  | header is only examined in the Destination Address.Can anyone help me to
  | understand very well the goal of Routing Header?

It isn't "save the path" that is intended, though that's a side effect,
it is to cause the packet to take a particular path.

The idea is that if you want to send a packet from A to D, and at the
same time (for any reason appropriate) want the packet to be routed via
B and C, you construct a packet with source addr A, dest addr B, and then
include a routing header containing C and D.   When the packet arrives at
B (any routers between A and B just see a packet destined to B) B sees the
routing header, sees it is not exhausted, and exchanges its address from the
destination header with the current routing header slot and advances the
pointer - so now there's a packet from A to C, with the routing header
containing B and D (with the pointer at D).   B transmits that to C,
again intermediate routers just forward the packet to C.  WHen it arrives
there, the routing header is noticed again, it isn't exhausted, so C swaps
its address with that of the next slot (D) in the destination, and advances
the pointer.  Now there's a packet from A to D, with B and C in the routing
header, and the pointer indicating no more routes left.  C sends that packet
to D.   When it arrives there, D sees the routing header, but now it is
empty, so nothing left to do (other than save it for later reference if needed)
and the next header in the chain is interpreted (which may result in delivery
of the packet to TCP or something).   The saved routing header tells the
path used - mostly so a reply can be sent back the reverse path.

kre