Hi Rene and staff,
perhaps you remember i am studying IPv6 and this is a question about source routing in IPv4 versus IPv6; i found IP-routing lesson is the best place to ask my question
In IPv4, source routing is inserted in the options field of the IPv4 header (there are two modes but that does not matter for my question). Briefly, when a router processes a packet from source =S to destination =D (S and D in the IPv4 header), it looks if options are available in the header. When the router finds typical code (example 137 with strict source routing), it does not process with the RIB, it looks at the pointer to find the next router and it sends the packet to this router (briefly)
So, obviouly, the values of S and D in the IPv4 header remain the same as long as the packet follow its journey along the path
Now IPv6 do the same with the routing header extension. So i read RFC 2460 ( i know it is obsolete but it is not wrong until you find something in the errata) to understand the routing header specification; routing-type=0 is well described in section 4.4. Page 14, you find the routing header format, with some space to hold the routing path the packet has to follow: Address [1], Address[2], etc … Address[n]. The field “Segments left” seems to play like the pointer in IPv4
The question is:
how an intermediate router process an IPv6 packet with routing header extension ?
I though it was obvious that each intermediate router along the predetermined path has to process the routing header (if it exists) to find the next router to send the packet
But RFC 2460 says page 15:
“A Routing header is not examined or processed until it reaches the node identified in the Destination Address field of the IPv6 header”
Waouw, what is that ???
I would like to understand “the extensions that follow the routing header will not be processed by any intermediate router i there is a routing header”; that seems a good logic
But page 16, RFC 2460 gives an algorithm to explain how the routing header is processed, and page 17 gives an example
"The values of the relevant IPv6 header and Routing header fields on each segment of the delivery path would be as follows:
As the packet travels from S to I1:
Source Address = S Hdr Ext Len = 6
Destination Address = I1 Segments Left = 3
Address[1] = I2
Address[2] = I3
Address[3] = D
As the packet travels from I1 to I2:
Source Address = S Hdr Ext Len = 6
Destination Address = I2 Segments Left = 2
Address[1] = I1
Address[2] = I3
Address[3] = D
As the packet travels from I2 to I3:
Source Address = S Hdr Ext Len = 6
Destination Address = I3 Segments Left = 1
Address[1] = I1
Address[2] = I2
Address[3] = D
As the packet travels from I3 to D:
Source Address = S Hdr Ext Len = 6
Destination Address = D Segments Left = 0
Address[1] = I1
Address[2] = I2
Address[3] = I3
Well, it seems that the destination address is modified in the IPv6 header as the packet follows its journey along the routing path ?
So i am lost, is not a basic rule that the dest address should not be modified in the L3 header ?
Could you clarify ?
Regards