Le 8 nov. 2011 à 10:17, Ole Troan a écrit :

>>>>> 1. Checksum neutrality being an open question, it is relevant here.
>>>>> 2. It is useful AFAIK to distinguish CE addresses from BR addresses.
>>>>> 
>>>>> The best proposal I know so far is as follows (with CNP = Checksum
>>>>> neutrality preserver)
>>>>> 
>>>>> CE ADDRESS
>>>>> 
>>>>> <- - - - - - IPv6 Unformatted  address (104 bits) - - - ->
>>>>> +-------------------+----------+----------+---------------+
>>>>> | Rule IPv6 prefix  |IPv4 suff.| Max PSID |  Padding = 0  |
>>>>> +-------------------+----------+----------+---------------+
>>>>> :
>>>>> :<- - - - - - - - - 64  - - - - - >:<- - - - 40 - - - - ->:
>>>>> :                                  :\                      \
>>>>> :                                  <8>                      :<- 16 ->
>>>>> :                                  : :                      :        :
>>>>> +----------------------------------'-'----------------------+--------+
>>>>> | IPv6 unformatted address (part 1)|V|                      |   CNP  |
>>>>> 
>>>>> +----------------------------------+-+----------------------+--------+
>>>>> <- - - - - - - - - - -  IPv6 address (108 bits)  - - - - - - - - - - >
>>>>> 
>>>>> 
>>>>> 
>>>>> BR ADDRESS
>>>>> 
>>>>> +------------------------------------+-+-----------------+-+-------+
>>>>> |              BR IPv6 prefix        |V|   IPv4 address  |0|  CNP  |
>>>>> +------------------------------------+-+-----------------+-+-------+
>>>>> < - - - - - - - - - 64  - - - - - - ><8><- - -  32 - - -><8><  16  >
>>>>> 
>>>> 
>>>> +1
>>>> The checksum neutrality is desirable for translation case.
>>>> I suggest to take above format into consideration
>>> 
>>> the consequence of that is that the destination IPv6 address will change 
>>> for every flow.
>> 
>> If a source ignores the destination PSID length, yes, IPv6 addresses of two 
>> flows going to the same CE may differ.
>> But so what?
>> - The IPv4 packet submitted to the CE NAT is the same as the source IPv4 
>> packet
>> - The final destinations behind the NAT may differ too
>> 
>> 
>>> the MAP node cannot any longer listen to a single IPv6 address for MAP 
>>> traffic, but has to intercept packets for a whole prefix.
>> 
>> - BR's of double translation have always had this property.
>> - Talking with Mark townsley, I got the understanding that this wasn't a 
>> real problem, at least with IOS.
> 
> everything can be _implemented_, that's not the point.

The point you made in the past against this capability was that it was 
difficult, if not even impossible, with the _current_ IOS.
If it is easy, we can focus the discussion on functional considerations (see 
below).

>> => Clarifying this point would IMHO be useful. 
> 
> it is clearly requiring bigger changes to tunnel code. which unlike NAT code 
> is attached to 'one' endpoint.
> it makes co-existence of a MAP endpoint and native IPv6 nodes within a single 
> /64 much harder.

Hopefully, there will be implementers in Taipei to clarify this subject.
Still in serious doubt about "big changes".


> let us turn this around. what's the point in embedding a new set of CNP bits 
> in the IPv6 address, when the L4 checksum can be incrementally updated. 
> that's what everyone has existing code to do already...

Before answering this (good) question, let's make clear that the code to add or 
subtract a few 16-bit fields is always trivial. This doesn't depend on whether 
it applies to a field in the IP payload or in an IPv6 address.

Now, the difference, already explained in the context of 4rd-U, is between a 
Reversible Header Mapping (nothing done to the IP payload), and a translation 
that involves transport-layer considerations (checksum adjustment for specific 
transport protocols): 


IPv4 packet   Reversible Header mapping   IPv6 packet
+-----------------+ _           _ +-----------------+
|   IPv4 Header   | _| <---->  |  |  IPv6 Header    |
+-----------------+            |  +-----------------+
|     IP Data     |            |_ |IPv6 Frag. Header|
+-----------------+               +-----------------+
                                  |     IP Data     |
                                  +-----------------+
 

               Translation per RFC 6145
+-----------------+ _           _ +-----------------+
|   IPv4 Header   | _|  ---->  |  |  IPv6 Header    |
+-----------------+ _          |  +-----------------+
|Transport Header | _|  -.     |_ |IPv6 Frag. Header| (if needed)
+-----------------+       \     _ +-----------------+
| Transport Data  |        '-> |_ |Transport Header | (adjusted checksum
+-----------------+               +-----------------+   if needed)
                                  |  Transport Data |
                                  +-----------------+
          (not transparent to IPv4 DF bit)


Cheers,
RD






> 
> cheers,
> Ole
> 
_______________________________________________
Softwires mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/softwires

Reply via email to