Re: [Softwires] IPv4 Residual Deployment - Unified-standard proposal 4rd

Rémi Després <despres.remi@laposte.net> Fri, 09 March 2012 13:14 UTC

Return-Path: <despres.remi@laposte.net>
X-Original-To: softwires@ietfa.amsl.com
Delivered-To: softwires@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 7CBCA21F860E for <softwires@ietfa.amsl.com>; Fri, 9 Mar 2012 05:14:30 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.958
X-Spam-Level:
X-Spam-Status: No, score=-1.958 tagged_above=-999 required=5 tests=[AWL=-0.261, BAYES_00=-2.599, HTML_MESSAGE=0.001, J_CHICKENPOX_43=0.6, MIME_8BIT_HEADER=0.3, NORMAL_HTTP_TO_IP=0.001]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2LzJSVEUeAAR for <softwires@ietfa.amsl.com>; Fri, 9 Mar 2012 05:14:28 -0800 (PST)
Received: from smtpout.laposte.net (smtpout5.laposte.net [193.253.67.230]) by ietfa.amsl.com (Postfix) with ESMTP id BA62E21F8613 for <softwires@ietf.org>; Fri, 9 Mar 2012 05:14:27 -0800 (PST)
Received: from [192.168.0.21] ([88.166.221.144]) by mwinf8510-out with ME id jREP1i00837Y3f403REP4M; Fri, 09 Mar 2012 14:14:25 +0100
Mime-Version: 1.0 (Apple Message framework v1084)
Content-Type: multipart/alternative; boundary="Apple-Mail-87-804345445"
From: Rémi Després <despres.remi@laposte.net>
In-Reply-To: <CAFUBMqU1wtP5prSaLG8hDSuv-EGWP5Diqoj6WEMHb_q8hNVDdQ@mail.gmail.com>
Date: Fri, 09 Mar 2012 14:14:23 +0100
Message-Id: <4BA560D3-5D48-4911-BDCB-D9CB490FBBA1@laposte.net>
References: <B509CB1C-4A0A-408B-9B4A-C0F847169431@juniper.net> <2AB8570A-644F-4792-8C56-44AD80A79234@laposte.net> <D6428903-FBA0-419C-A37F-A00874F28118@laposte.net> <CAM+vMERsVz7cuC1C52gw12wySaEgw8=44JjS8AUygj0vJ899Cg@mail.gmail.com> <DDD20574-4ECD-4285-BB15-548628FB0425@laposte.net> <CAM+vMETahum9rB+fr=OHAmVobDZSzRRy9mUwkjryhqRvaJWe-Q@mail.gmail.com> <35065EB3-D4D6-451B-ACED-67BB94C77F18@laposte.net> <CAAuHL_D68nkd36ifLzEeVR67Q124VH-pMhM1pkEE_PcLbGxBrw@mail.gmail.com> <14D90642-0478-4AB9-91AA-A3E0310197F2@laposte.net> <CAFUBMqX9dj8MSeZdJTic5iOT=Jjg4oihWs30FWVAca08v_3=7g@mail.gmail.com> <D476AFD2-3B6B-48A0-971D-C65CC2CFA46B@laposte.net> <CAFUBMqU1wtP5prSaLG8hDSuv-EGWP5Diqoj6WEMHb_q8hNVDdQ@mail.gmail.com>
To: Maoke <fibrib@gmail.com>
X-Mailer: Apple Mail (2.1084)
Cc: Softwires WG <softwires@ietf.org>, Yong Cui <cuiyong@tsinghua.edu.cn>
Subject: Re: [Softwires] IPv4 Residual Deployment - Unified-standard proposal 4rd
X-BeenThere: softwires@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: softwires wg discussion list <softwires.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/softwires>, <mailto:softwires-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/softwires>
List-Post: <mailto:softwires@ietf.org>
List-Help: <mailto:softwires-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/softwires>, <mailto:softwires-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 09 Mar 2012 13:14:30 -0000

Maoke,
Thanks for the detailed question.
Clarification below.


2012-03-09 12:04, Maoke  :
> 2012/3/9 Rémi Després <despres.remi@laposte.net>
> Thanks Maoke for the opportunity to clarify some of the points below.
> 
> 
> 2012-03-09  03:14, Maoke:
> 
>> hi Remi,
>> 
>> sorry but i follow this late. something not clear to me, according to our earlier discussions.
>> 
>> 2012/3/8 Rémi Després <despres.remi@laposte.net>
>> 
>> Le 2012-03-08 à 03:47, Washam Fan a écrit :
>> 
>> > Hi Remi,
>> >
>> >>>>> Secondly, -04 added NAT64+ parts.
>> >>>>> If I understood correctly, there are no additional requirements for NAT64
>> >>>>> boxes.
>> >>>>
>> >>>> Well, NAT64 boxes remain what they are.
>> >>>> Any host can use BIH to look like an IPv6-only host in the NAT64 although it
>> >>>> has a dual stack.
>> >>>>
>> >>>> But the advantage of 4rd tunneling over RFC6145 double translation is better
>> >>>> IPv4 transparency (DF, ICMPv4, DCCP, UDP-Lite, and future protocols that may
>> >>>> use the TCP checksum algorithms)
>> 
>> to clarify my understanding:
>> 1. DF transparency is kept totally in 4rd-U but RFC6145 sacrificies the DF=1/MF=1 cases
>> 2. ICMPv4 is somehow subtle. i still cannot agree taking ICMPv4 message directly as IPv6 payload is a wise idea. lack of address consistency ensurance mechanism (i.e. no header checksum in IPv6 header no pseudo-header checksum in ICMPv4 message)
> 
> The 4rd ICMPv4 error message has as only purpose to be delivered to a 4rd-aware node. There, it will be treated as an ICMPv4 error.
> It is assumed that no DPI in some middle box will need to interpret ICMPv4 error messages. 
> 
>> 3. for the "future protocols", i remember our earlier discussion concluded that CNP can free the code change with ALREADY KNOWN tcp-checksumed protocols. am i wrong here? 
> 
> I think you are. As the 4rd-u-04 says (sec 4.4):
> "NOTE: This guarantees that, for all protocols that use the same checksum algorithm as TCP, Tunnel packets are valid IPv6 packets, and this independently from where the checksum field is placed for each protocol.  Today, such protocols are UDP [RFC0768], TCP [RFC0793], UDP-Lite [RFC3828], and DCCP [RFC5595].  Should new ones be specified, BRs will support them without needing an update."
>                                                                                                                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> exactly here it is the point of disagreement. here the "update" refers to implementation, right? then what is the BR's logic? 

> 
> A. if (L4_Proto in LIST{UDP, TCP, UDP-Lite, DCCP}) {
>       calculate IPv6 address for dst, taking the port from L4_proto.header; 
>       /* do nothing with checksum, CNP applied for the LIST */
>    } else {
>       discard;
>    }

No. R-7 (3) isn't ambiguous about this.


> B. if (1) {
>       calculate MAP IPv6 address for dst, supposing dst port is always there;
>       /* do nothing with checksum suppose CNP applied to all protocols */
>    }

Yes, as specified in R-7 (3).

As a matter of fact, it doesn't "suppose dst port is always there". 
It just takes bits that are the right ones if dst port (or ICMPv4 ID) is present, unless a source has, by mistake, sent a port-less packet to a shared IPv4 address.
What happens in this mistake case is detailed below.  


> if you refer to logic B, the "BR will support them without needing an update" is true.

Right.

> however, the risk is should new ones specified but not having the tcp-like layout or the tcp-checksum may fail to become a valid IPv6 packet and (because of the layout difference) it is possible that the destination IPv6 address is wrong. 

If a source sends to a shared IPv4 address with a port-less protocol, it will receive a  "destination unreachable" ICMPv4 packet.
Its code will be either "network unreachable", because no CE had the derived IPv6 address (sec. 4.7), or "protocol unreachable", because the reached CE NAT44 cannot process this port-less protocol.
The usual error-signalling mechanism works as it has to.

> if you refer to logic A, the BR must be updated whenever any new protocol is added to the LIST. this is the same as RFC6145. btw, RFC6145's logic, when applied with MAP, is:
> A'. if (Payload_Proto in LIST{UDP, TCP, ICMP}) {
>       calculate IPv6 address for dst, taking the port (or equivalent field when ICMP) from Payload_Proto.header; 
>       recalculate the checksum in Payload_Proto.header;
>    } else {
>       discard;
>    }
> 
> 
> both A and A' has no risk as B has.

See above why B has no operational risk.

Thanks,
RD


 
>  
> 
> 
> 
>> >>>> For an ISP to extend this advantage to its stateful NAT64, it need to be 4rd
>> >>>> aware (become a NAT64+).
>> >>>> NAT64+, when its sees that an IPv6 address is a 4rd IPv6 address (with a V
>> >>>> octet instead of a "u" octet), use the 4rd header mapping instead of RFC6145
>> >>>> translation.
>> 
>> questions: 1. NAT64+ here refers to stateful case only, right?
> 
>> 2. for the IPv4-to-IPv6 directly, how does the 4rd-aware box make decision between 4rd-U pseudo-encapsulation (let me use this term because  i argue it does not conform to the behavior of encapsulation) and NAT64 translation? (as we have neither V nor U in the IPv4 addresses).
> 
> a) Note that there is no claim that 4rd-u would be an encapsulation solution (it isn't!). What is claimed is that it is a transparent-tunnel solution (same IPv4 packet received by destinations as sent by sources, except for TTL which progress, and for ECNs that may be changed if congestion is met between source and destination). 
> 
> yes. TTL is progressing as if it were in translation. ECN is another topic: it changes even in the encapsulation. 
>  
> 
> b) In draft -04, R-7 (8) says:
> "CEs that are assigned unspecified IPv4 addresses (Section 4.3), MUST derive 4rd IPv6 addresses from 4rd IPv4 addresses as follows (Figure 6): take the Rule IPv6 prefix of the NAT64+ mapping rue; append the IPv4 address; append the CNP.
> <----------- Rule IPv6 prefix --------->:
> +-------------------------------+---+---+-------------+------+
> |      NAT64+ IPv6 prefix       |"u"| 0 | IPv4 address|  CNP |
> +-------------------------------+---+---+-------------+------+
> :               64              : 8 : 8 :      32     :  16  :
> 
>                                        Figure 6              "
> what do you mean with the unspecified IPv4 address*es*? isn't it only the 0.0.0.0, or you mean 0.0.0.0/0 excluding the mapped-in-rule block?  
> 
> reading your example in 5.1, i understand your point: the above picture describes the mapping for the source address if the packet is sent to the IPv6 world through BR but without the inverse-header-mapping. in this case the U-octet is applied and the CE-delegated prefix plays also the role of NAT64+ IPv6 prefix. and the NAT64+ translation happens at CE. right? if i'm right, it is clear. 
> 
> but i haven't seen the necessity of defining the V-octet here. with the V, BR seeing the V does the header mapping while seeing the U does nothing but only the regular routing. without the V, BR seeing the CE-delegated /64 does the header mapping while seeing another prefix (no matter how long the length is) does nothing but only the regular routing. 
> 
> the V-attached stuff in fact makes another, more-specific prefix under the delegated prefix of a CE. 
>> >>>
>> >>> I perfer to leave NAT64 out of scope.
>> >>
>> >> NAT64 as is remains out of scope.
>> >> What is in scope is only the possibility to improve IPv4 transparency of NAT64 nodes by using transparent tunneling, instead of double translation, when reached by 4rd CEs (making them NAT64+ nodes).
>> >
>> > Can I interpret NAT64+ as 4rd BR co-located with NAT64? What justify a
>> > new term NAT64+ invented?
>> 
>> 
>> NAT64+ is more than just coexistence of 4rd BR and NAT64: the NAT64 needs to be upgraded to replace RFC5145 translation by header mapping when IPv6 addresses it deals with are 4rd addresses (have the V octet).
> 
> confused. how does NAT64+ happens at BR? without the V octet, NAT64 needs not to be upgraded at all. 
>> 
>> 
>> >
>> >> This new capability, introduced in -04, is derived from the 464XLAT proposal.
>> >> With 464XLAT, IPv4 applications in hosts attached to IPv6-only networks can communicate via NAT64s, but IPv4 transparency has limitations which can be eliminated by upgrading NAT64s to NAT64+ status (a backward compatible evolution).
>> >>
>> >
>> > In 464XLAT, they keep NAT64 as it is. Does 4rd keep NAT64 as it is?
>> 
>> To take advantage, for customers that are 4rd capable, of better IPv4 transparency than with double translation, the NAT64 MUST be upgraded.
> 
> 
> Remi didn't answer this question of Washam. 4rd-U keeps only stateful NAT64 as it is at CE, to my understanding. 
>  
>> 
>> may i add that it (4rd-U) provides better IPv4 transparency than double translation but less simplicity in the term of layering architecture than encapsulation? (here i avoid sticking things on my understanding to "transparency"). personally i don't think transparency is the most important reason that generally operators prefer encapsulation rather than translation. simplicity and clear concept in architecture is the reason. no matter how much we keep IPv4 information unchanged across the IPv6 domain, as long as the IPv4 header is destroyed, it is a solution of "translation" rather than of "encapsulation". 
> 
> Different view here.
> a) Ole had a nice slide in the interim meeting about how double translation tends to break transparency. I use "reversible header mapping" which I find intuitive, or just "header mapping", but "reversible header translation" could be OK. 
>  A key difference, is that payloads are transparently tunneled in 4rd while they are processed, with dependence of upper layer protocols in double translation. This is AFAIK an important difference. (To take an example, RFC6145 requires to discard UDP-lite packets (RFC3828) while they are tunneled with 4rd)
> 
> where is it stated in RFC6145 that it requires to DISCARD UDP-lite packets? 
>  
> 
> b) As said in Sec 1 of draft -04:
>  " While IPv6 headers are too long to be mapped into IPv4 headers, so that 6rd requires encapsulation of full IPv6 packets in IPv4 packets, IPv4 headers can be reversibly mapped into IPv6 headers so that 4rd tunnel packets can be designed to be valid IPv6 packets, thus ensuring compatibility with IPv6-only middle boxes that perform deep-packet-inspection."
>  I see no real complexity in noting that IPv4 headers are small enough to be reversibly mapped in IPv6 headers.
> 
> our terminologies are biased. i emphasize the simplicity is in the term of architecture. encapsulation is a widely used concept in the networking, making one protocol as an underlay of another. we may have a packet with all the Ethernet-IP-TCP-HTTP header fields in a PPP framework plus but re-ordered and re-organized, into, e.g., a super L2-U. it is surely a reversible header mapping but we can't say that of either encapsulation or the (narrow-sense) tunneling. this is my point. from the operator's view, once it is not the simple layered encapsulation, i cannot see it as a substitute for the encapsulation, but see it as a substitute of other translations, if i see this is a more gentle translation than others and this gentleness costs little. 
>  
>  Of course this still requires careful technical verification, but once done, it's done once and for all. 
> 
>> i don't incline to use the term "tunneling" since tunnel could have a variety of forms, among which encapsulation is one but not the only one. 
> 
> Exactly: 4rd uses header-mapping tunnels, and MAP-E uses encapsulation tunnels.
> 
> well, in general sense "tunnel" means a source route essentially (RFC1241 made a very good summary about variety of tunnels). to such extent, RFC6145 makes *translation tunnels* (in general sense of the term "source route"). but we never call it like that, because, when most people are talking about "tunnel" today, we refers to the narrow sense "tunnel", which means the encapsulation. it is fine that 4rd-U call itself as a tunnel solution but it should be pointed out that this is a tunnel in the general sense. 
> 
> therefore i emphasize that, maybe too academic, the counterpart of translation is encapsulation but not the "tunneling". in the architecture, we have either the building block of making an underlay protocol as a virtual link or the building block of making another protocol as a participant in the path of end-to-end delivery. although you argued this is *ONLY* the understanding of some diffserv guys, i don't think this understanding is not generic. 
> 
> for the simplicity in operation, we often think in such a way: if we would like to hide the underlay and make a protocol as an underlay or we would like to expose the things out. both have their use cases. if 4rd-U is said it fills some important gaps between the two, it would be great. if 4rd-U is said it replaces the both, i doubt it can. once we want to make a stuff having advantage of this and that, we often make out a stuff also having disadvantage of both. for me, i prefer if 4rd-U is moderately defined with specific use-case and fully description on its pros/cons, features/limitations, approaches/tradeoffs. 
> 
> cheers,
> maoke
>  
> 
> 
> Cheers,
> RD
> 
> 
> 
> 
>> 
>> cheers,
>> maoke
>>  
>> Naturally, this has no impact on other NAT64 users (e.g. IPv6-only hosts, or dual-stack hosts supporting BIH of RFC6535): they can continue to use the NAT64+ as an ordinary NAT64.
>> 
>> Regards,
>> RD
>> 
>> >
>> > Thanks,
>> > washam
>> >>> Such transparency could be achieved by whther to add fragmentation header.
>> >>> Anyway, let's hear some comments from the group
>> >>
>> >> OK
>> 
>> _______________________________________________
>> Softwires mailing list
>> Softwires@ietf.org
>> https://www.ietf.org/mailman/listinfo/softwires
>> 
> 
>