Internet Engineering Task Force R. Despres Internet-Draft RD-IPtech Intended status: Informational May 10, 2008 Expires: November 11, 2008 IPv6 Rapid Deployment on IPv4 infrastructures (6rd) draft-despres-v6ops-6rd-ipv6-rapid-deployment-01 Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on November 11, 2008. Abstract IPv6 rapid deployment (6rd) builds upon mechanisms of 6to4 (RFC3056) to enable a service provider to rapidly deploy IPv6 unicast service to its existing IPv4 sites. Like 6to4, it utilizes stateless IPv6 in IPv4 encapsulation in order to transit IPv4-only network infrastructure. Unlike 6to4, 6rd requires a service provider to use one of its own IP prefixes rather than the fixed 6to4 prefix. A service provider has used this mechanism for its own "rapid deployment" of IPv6 (five weeks from first exposure to "opt-in" deployment for 1,500,000 residential sites). Despres Expires November 11, 2008 [Page 1] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 Table of Contents 1. Introduction and 6rd purpose . . . . . . . . . . . . . . . . . 3 2. Specification . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1. Participating entities and their addresses . . . . . . . . 4 2.2. Derivation of the 6rdSiteV6Prefix of a 6rd-site from its SiteV4Address . . . . . . . . . . . . . . . . . . . . 6 2.2.1. General format . . . . . . . . . . . . . . . . . . . . 6 2.2.2. Simple format . . . . . . . . . . . . . . . . . . . . 8 2.3. Encapsulations-decapsulations . . . . . . . . . . . . . . 9 2.4. ICMP consideration . . . . . . . . . . . . . . . . . . . . 9 3. 6rd Applicability to IPv4 private addresses . . . . . . . . . 10 4. 6rd-CPE parameters - the 6rd DHCPv4 option . . . . . . . . . . 11 5. 6rd-relay implementation variants . . . . . . . . . . . . . . 12 6. Security Considerations . . . . . . . . . . . . . . . . . . . 13 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 13 Appendix A. PSEUDO-CODE EXAMPLE WITH SECURITY CHECKS FOR 6RD-CPES . . . . . . . . . . . . . . . . . . . . . . 14 Appendix B. PSEUDO-CODE EXAMPLE WITH SECURITY CHECKS FOR 6RD-RELAYS . . . . . . . . . . . . . . . . . . . . . 15 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 16 9.1. Normative References . . . . . . . . . . . . . . . . . . . 16 9.2. Informative References . . . . . . . . . . . . . . . . . . 16 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 17 Intellectual Property and Copyright Statements . . . . . . . . . . 18 Despres Expires November 11, 2008 [Page 2] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 1. Introduction and 6rd purpose After having had a succinct presentation of the 6rd idea, a major French Internet service provider (ISP), FREE , did all of the following in an impressively short delay of only five weeks (November 7th to December 11th 2007): 1. obtain its first IPv6 prefix from its regional Internet Registry (RIR); 2. add 6rd support to the software of its Freebox home-gateway (upgrading for this an available 6to4 code); 3. provision PC-compatible platform with a 6to4 gateway software; 4. modify it to support 6rd; 5. test IPv6 operation of a few applications; 6. finish deployment; 7. announce IPv6 availability at no extra charge for all its customers wishing to have it. More than 1,500,000 residential customers thus became able to use IPv6 with the same look and feel as with any native IPv6 solutions. The only condition was a conscious activation of IPv6 in their Freeboxes and in their individual hosts. This story is reported to illustrate that ISPs that differ IPv6 deployment, typically because of anticipated investment and operational costs, can, if circumstances are favorable, drastically reduce these costs and rapidly offer IPv6 to their customers. This first deployment had the limitation that customer site prefixes were 64 bit longs, which limited each of them to only one IPv6 subnet. The reason was that FREE, although it had several IPv4 ISP prefixes to support millions of customer sites, had only a /32 IPv6 prefix. With a shorter IPv6 prefix, as FREE has obtained one since then, multiple subnets are possible with 6rd. Despres Expires November 11, 2008 [Page 3] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 The purpose of this draft is that: o Manufacturers of ISP-infrastructure routers, gateway devices, and router CPEs, can consider supporting 6rd-relay functions in their products. o ISPs that have not offered IPv6 to their customers yet, or that did it only on a limited scale, can consider doing it on a large scale with 6rd, leaving for a later time generalization of more native IPv6 support. Readers are supposed to be familiar with IPv6 address formats and notation. 2. Specification 2.1. Participating entities and their addresses Figure 1 presents network entities that are concerned with 6rd. A "6rd-zone", or "zone" for short, is an IPv4 routing area to which are attached one or more 6rd-relays, and a number of customer sites. A "6rd-relay" performs encapsulation-decapsulation functions of IPv6 in IPv4. It is accessible on its IPv6 interface at the 6rdRelayV6Prefix of the 6rd-zone, and on its IPv4 interface at the 6rdRelayV4Address of the zone. Its encapsulation and decapsulation functions being stateless, load sharing among several 6rd-relays is possible, even on a per packet basis. The "6rdRelayV6Prefix" of a 6rd-zone must be in the IPv6 address space of the ISP that controls the zone. This is the essential difference with the 6to4 of [RFC3056]. It ensures that IPv6 traffic toward 6rd customer sites can be routed from ANY hosts that have IPv6 connectivity, independently of how they have it (native IPv6, tunnel broker [RFC3056], softwires [RFC4925], Teredo [RFC4380], 6rd [this draft]...). The "6rdRelayV4Address" of a 6rd-zone is an IPv4 anycast address shared by all 6rd-relays of the zone. A "6rd-CPE" is a dual stack CPE (customer premise equipment) that supports 6rd. It can be a host-only CPE, or a router CPE via which a number of other hosts access the Internet. A "6rd-site" is a customer site of a 6rd-zone the CPE of which is a 6rd-CPE. Within the CPE, both IPv4 and IPv6 applications can be Despres Expires November 11, 2008 [Page 4] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 supported. If the 6rd-CPE is a router, it extends behind it its IPv6 connectivity. The "SiteV4Address" of a 6rd-site is its IPv4 unicast address. The "6rdSiteV6Prefix" of a 6rd-site is implicitly derived from the SiteV4Addresss of the site and from parameters of the 6rd-zone according to Section 2.2. Between two customer sites of a same 6rd-zone, the IPv6 traffic is directly routed in IPv4 from one to the other. 6rd-sites 6rd-zone __/\__ _____________/\______________ / \ / \ 6rd-zone 6rd-CPEs | 6rd-relays | (stateless) V (IPv4 routing) | _________________________ | IPv4 | | V & IPv6 | | ___ _|__ <= SiteV4Address(X) | | | | | | | .----------------|---| |---- | X |--|-. / | |___| |____| | \ / | (IPv6 routing) Host-only | \ / | CPE | O 6rdRelayV4Address => <= 6rdRelayV6Prefix ___ | / \ (anycast) | | | | | / \ | ___ |--| Y |--|-' \ | | | | |___| | '----------------|---| |---- | Router <= SiteV4Address(Y) | |___| | CPE | | | |_________________________| IPv4 IPV6 ENCAPSULATED IN IPV4 & IPv6 <= 6rdSiteV6Prefixes (derived from SiteV4Addresses and 6rd-zone parameters) THE 6RD MODEL Figure 1 Despres Expires November 11, 2008 [Page 5] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 2.2. Derivation of the 6rdSiteV6Prefix of a 6rd-site from its SiteV4Address 2.2.1. General format Figure 2 shows how the 6rdSiteV6Prefix of a 6rd-site is derived from the SiteV4Address of the site. The parameters of the zone that influence the derivation are the following: 1. The "6rdZoneV6Prefix". It is a prefix that, in the zone, will appear at the beginning of all 6rdSiteV6prefixes. 2. The "6rdZoneV4PrefixLength". It is the length of an IPv4 prefix that, in the zone, appears at the beginning of all SiteV4Addresses. If the ISP of the zone has only one IPv6 prefix allocated by its RIR, the length of this prefix SHOULD be taken as the 6rdZoneV4PrefixLength. If the ISP has several IPv6 prefixes, this length SHOULD be 0 (simple format case of Section 2.2.2). 3. The "6rdTag". Defined only if the 6rdZoneV4PrefixLength is not 0, it is a sequence of bits chosen by the ISP of the zone to appear, in all 6rdSiteV6Prefixes of the zone, immediately after the 6rdZoneV6Prefix. With these parameters, the 6rdSiteV6Prefix of a customer site is derived as follows: o The "6rdZoneV6Prefix" is composed of the 6rdRelayV6Prefix of the zone(see Figure 1) followed by the 6rdTag. o If "6rdSiteV4Suffix" of a site is composed of all bits that, in its SiteV4Address, come after the 6rdZoneV4PrefixLength. (In the simple format case, where the 6rdZoneV4PrefixLength is 0, the 6rdSiteV4Suffix is the full IPv4 address.) o The "6rdSiteV6Prefix" is composed of the 6rdZoneV6Prefix of the zone followed by the 6rdSiteV4Suffix of the site. Despres Expires November 11, 2008 [Page 6] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 For example, if an ISP has QQQQ:Q000/20 as its only IPv4 prefix, PPPP:PPPP/32 as its only IPv6 prefix, and C000/4 as its chosen 6rdTag, the 6rdSiteV6Prefix of a site that has QQQQ:QAAA as its SiteV4Address is PPPP:PPPP:TAAA/48. .-//---------. | R6P | 6rdRelayV6Prefix '-//---------' (zone parameter) . . . .-//--. . | T | 6rdTag . '-//--' (zone parameter) . . . .-//---------+-----. | Z6P | 6rdZoneV6Prefix '-//---------+-----' . . .-//---------------+-//------. | S6P | 6rdSiteV6Prefix '-//---------------+-//------' . . .-//------. | S4S | 6rdSiteV4Suffix '-//------' . . 6rdZoneV4PrefixLength (zone parameter) <---------> . . . . .---------+---------. | S4A | SiteV4Address '---------+---------' <----- 32 bits -----> . . . . .-//------. | Z4P | 6rdZoneV4Prefix '-//------' RELATIONSHIPS BETWEEN IPv4-SITE-ADDRESSES AND 6RD-SITE-PREFIXES Figure 2 Despres Expires November 11, 2008 [Page 7] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 Note that, even if the 6rdZoneV4Prefix is not a multiple of 4 bits, the 6rdTag can be chosen so that hexadecimal digits of IPv4 addresses are kept readable in 6rdSiteV6Suffixes. For example, if the 6rdZoneV4Prefix is QQQQ:QR00/22 (not a multiple of 4 bits), and if the 6rdRelayV6Prefix is PPPP:PPPP/32, by choosing TR00/6 as 6rdTag (purposely terminated with the same partial nibble of 4 bits as the 6rdZoneV4Prefix), it is ensured that the 6rdSiteV6Prefix derived from SiteV4Address QQQQ:QXAA will be PPPP:PPPP:QXAA/48. 2.2.2. Simple format If an ISP as several IPv4 prefixes, substituting the 6rdTag to the 6rd-zoneV4Prefix in 6rdSiteV6Prefixes to shorten them is no longer possible, but the general relationship can be simplified, as shown on Figure 3. For example, if an ISP has several IPv4 prefixes and has PPPP:PP00/24 as its 6rdRelayV6Prefix, the 6rdSiteV6Prefix derived from SiteV4Address AAAA:AAAA is PPPP:PPAA:AAAA:AA00/56. A limit case is that of an ISP that has several IPv4 prefixes but only a /32 IPv6 prefix. It can deploy 6rd with /64 prefixes assigned to its 6rd-sites, but it should better ask for shorter an IPv6 prefix, so that it can assign shorter than /64 prefixes to its customers sites and thus let them have several subnets per site. .-//-----------. 6rdZoneV6Prefix | 6ZP | (= 6rdRelayV6Prefix) '-//-----------' . . .-//-----------+-------------------. | 6SP | 6rdSiteV6Prefix '-//-----------+-------------------' . . .-------------------. | 4SA | SiteV4Address '-|-----------------' | first 4 bits other than 1110 RELATIONSHIPS BETWEEN IPv4-SITE-ADDRESSES AND 6RD-SITE-PREFIXES (A) SIMPLE PREFIX FORMAT Figure 3 Despres Expires November 11, 2008 [Page 8] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 An ISP, , after having deployed IPv6 with the 6rd simple format, may wish to start deploying native IPv6 addresses without having obtained a new IPv6 prefix from its RIR. For this, a precaution must have been taken from the outset: if the simple format is used, an IPv6 prefix MUST be recognized as that of a 6rd-site ONLY IF its four bits next to the 6rdZoneV6Prefix are not 1110. (Being in IPv4 the first four bits reserved for multicast addresses, 1110 may never appear at the beginning of a valid IPv4 unicast address). Thus, non-6rd prefixes can be allocated freely with 1110 as their four bits next to the 6rdZoneV6Prefix. For example, if an ISP has PPPP:PP00::/24 as its only IPv6 prefix and, having several IPv6 prefixes, has assigned PPPP:PPAA:AAAA: AA00::/56 as 6rdSiteV6Prefixes of its sites of IPv4 addresses AAAA: AAAA, it can allocate to non-6rd sites all prefixes that begin with PPPP:PPPe::/32. 2.3. Encapsulations-decapsulations An IPv6 packet the source or destination of which is a 6rd-site traverses the 6rd-zone of this site encapsulated in an IPv4 packet. The encapsulation format is that of [RFC2893] section 3.5. (protocol field set to 41). Source and destination addresses of an IPv4 encapsulating packet must be related to those of its IPv6 encapsulated packet as follows: o If the IPv6 address is not that of a 6rd-site of the zone, the IPv4 address MUST be the 6rdRelayV4Address of the zone. o Otherwise, the IPv4 address MUST be that from which the IPv6 prefix is derived according to Section 2.2. 2.4. ICMP consideration In 6rd-zones, ISPs MUST ensure that IPv4 maximum transfer units (MTUs) are at least 1300, i.e. 1280, the minimum IPv6 MTU, plus 20, the length of the IPv4 encapsulating header. (Supported MTUs on Ethernet links being 1500, this leaves on them 200 octets for various lower layer encapsulations that may be used between routers of these zones, a good margin.) If a packet to be encapsulated is longer than 1280 octets, encapsulation functions of 6rd-CPEs and 6rd-relays SHOULD return to its source a "packet too big" ICMPv6 packet with 1280 as indicated MTU ([RFC2893] section 3.2). Received ICMPv6 packets are encapsulated like any other IPv6 packets. Despres Expires November 11, 2008 [Page 9] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 Decapsulation functions of 6rd-CPEs and 6rd-relays, when they receive an ICMPv4 packet the type of which is "unreachable" (type field = 3), SHOULD forward an ICMPv6 packets signaling "destination unreachable" (type field = 1 and code field = 0). The IPv6 destination has to be the source of the IPv6 packet that has been discarded. For this destination address to be found, ISPs that support 6rd SHOULD ensure that all routers of their IPv4 infrastructures return long enough ICMPv4 packets. To contain IPv6 source addresses of discarded packets, their minimum length is 20 + 8 + 20 + 40 = 88 octets, for IPv4 header, ICMPv4 header, IPv4 header, IPv6 header ([RFC2893] section 3.4). Note that this is necessarily the case if these routers comply with requirements of [RFC1812] section 4.3.2.3. 3. 6rd Applicability to IPv4 private addresses ______________________________ | 10.x.x.x/8 private addresses | | <== | <-----| |-----> | 6rdRelayV4Address | 6rd-CPEs | ==> | 6rd-relays | | <-----| 0.0.0.0/0 |-----> | : | <== 6rdRelayV6Prefix | V | |______________________________| | __|__ ISP-supported NAT(s) | | |_____| | | V IPv4 public addresses EXAMPLE OF 6rd WITH ISP ASSIGNED IPV4 PRIVATE ADDRESSES Figure 4 Despres Expires November 11, 2008 [Page 10] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 ISPs that allocate IPv4 private addresses of [RFC1918] to some of their customer sites, and that therefore operate NATs in their IPv4 infrastructures, can allocate 6rdSiteV6Prefixes based on these IPv4 private addresses. Figure 4 presents an example where allocated IPv4 private addresses start with 10.0.0.0/8, a typical choice based on [RFC1918]. Note that, if an ISP supports several NAT functions in its infrastructure, parallel or cascaded, it has, for 6rd, to ensure that IPv4 private address spaces behind these NATS are all disjoint. 4. 6rd-CPE parameters - the 6rd DHCPv4 option A 6rd-CPE needs to know the three zone parameters of Section 2.2.1. If an ISP provides its own router CPEs to all its customer sites (as was the case for the first 6rd deployment), these parameters can be set up as a byproduct of CPE software updates. But if 6rd-CPEs may be provisioned by customers themselves, these parameters need to be configured otherwise. For this, suppliers of these CPEs SHOULD include in their user interface means to set up these parameters (or their equivalent). This parameter setting can be fully automatized where both DHCPv4 servers of ISPs and 6rd-CPEs of customers support the 6rd ad hoc DHCPv4 option [RFC2131],. The format retained for the DHCPv4 message specific of this option is presented on Figure 5. To preserve open-endedness of the message format, 6rd-CPEs that support the 6rd-DHCPv4-option MUST accept messages longer than 12 octets, and ignore what appears beyond fields they know. The value of the 6rdDHCPV4Code is under the responsibility of the IANA. Despres Expires November 11, 2008 [Page 11] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 6rdDHCPv4Code | Length | 6rdZoneV6- | 6rdZoneV4- | | | = 12 | PrefixLength | PrefixLength | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 6rdRelayV4Address | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | + 6rdZoneV6Prefix +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ FORMAT OF THE 6rd-DHCPv4-OPTION Figure 5 5. 6rd-relay implementation variants In the simplest implementation of 6rd-relays, each physical device (or processor) supports only one 6rd-zone. It has for this only one set of zone parameters. Although this may be sufficient in practice, the following richer implementations are mentioned for suppliers that would consider implementing them based on their own market expectations: 1. Multiple 6rd-relays in a single device (or using the same processor). Provided each 6rd-relay has a 6rdRelayv6Prefix and a 6rdRelayV4Address that differ from those of others, the behavior is the same as though 6rd-relays would be is separate devices. 2. Multiple 6rd-zones in a single 6rd-relay. Provided each 6rd-zone of the 6rd-relay has a 6rdTag and that all 6rdTags are different, the 6rdRelayV6Prefix and the 6rdRelayV4Address of a 6rd-relay can be shared by several zones. The relay SHOULD then perform by itself the hairpin routing, from and to the IPv4 routing area, that encapsulated packets from one of it zones to another require. For ISPs that have several IPv4 prefixes, this configuration has the advantage that 6rdSiteV6prefixes allocated to 6rd-sites may be shorter than those the simple format. It has however the drawback, beyond its additional complexity, that packets that go from one zone to another have to cross a 6rd- relay rather than traversing once the IPv4 infrastructure. Despres Expires November 11, 2008 [Page 12] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 6. Security Considerations For security: o Encapsulation functions SHOULD verify that IPv6 source addresses of received packets are compatible with where their IPv4 encapsulating packets come from. o Decapsulation functions SHOULD verify that IPv4 source addresses of encapsulating packets are consistent with IPv6 source and destination addresses of encapsulated packets. Appendix A and Appendix B present pseudo-codes that illustrate these verifications, respectively for 6rd-CPEs and 6rd-relays. Also, the 6rdRelayV4Address of a 6rd-zone SHOULD NOT be in any range of addresses that are advertised by its ISP out of the 6rd-zone. Conversely, the ISP SHOULD make sure that routes toward this address can only lead to 6rd-relays, even if some peers of the ISP, by mistake or malevolently, advertise this address or a prefix leading to it. These precautions being taken,it remains that, where IPv4 address spoofing is possible (IPv4 sites placing unauthorized source addresses in some packets they send), IPv6 address spoofing is also possible. Higher layers are then left, like with IPv4, with the responsibility to limit consequences. 7. IANA Considerations The 6rdDHCPV4Code of Section 4 needs to be specified by IANA. 8. Acknowledgements The author warmly acknowledge the major contribution of Rani Assaf to 6rd's credibility. He readily appreciated 6rd's potential, and made the daring decision to immediately implement it in view of its deployment on FREE's operational network. Patrick Grossetete made useful suggestions on multi-subnet sites and on 6rd anycast addresses. Tony Hain contributed on how to support shorter 6rdSiteV6Prefixes than with just the simple format. Acknowledgments are also due to confirmed IPv6 experts, in particular Laurent Toutain, Francis Dupont, Alain Durand, who, when the author was a late newcomer on IPV6, taught him subtleties of the subject. Without them, designing 6rd would probably not have been possible. Despres Expires November 11, 2008 [Page 13] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 Appendix A. PSEUDO-CODE EXAMPLE WITH SECURITY CHECKS FOR 6RD-CPES 6rd-CPE ENCAPSULATION IF v6-packet > 1280 octets THEN Send back ICMPv6 pkt "Pkt too big" ELSE-IF src6 starts with 6rdZoneV6Prefix THEN src4 <-- SiteV4Address dst4 <-- IF (dst6 starts with the 6rdZoneV6Prefix AND NOT (6rdZoneV4PrefixLength = 0 AND next dst6 bits = 1110) ) THEN 6rdZoneV4Prefix(SiteV4Address) followed by 6rdSiteV4Suffix(dst6) ELSE 6rdRelayV4Address END-IF Encapsulate v6-packet in v4-packet Send v4-packet END-IF 6rd-CPE DECAPSULATION IF (v4-packet = ICMPv4 "Unreachable" AND Protocol in returned header is 41) THEN v6-packet <-- ICMPv6 "Destination unreachable" with the returned encapsulated IPv6 header src6 <-- 6rdSiteV6Prefix(SiteV4Address) dst6 <-- src6(returned IPv6 header) Send v6-packet ELSE-IF Protocol of v4-packet = 41 THEN v6-packet <-- Data field of v4-packet IF dst6 starts with 6rdSiteV6Prefix) THEN IF ( src6 starts with 6rdZoneV6Prefix AND NOT (6rdZoneV4PrefixLength = 0 AND next src6 bits = 1110) ) THEN IF scr4 is not 6rdRelayV4Address THEN Forward v6-packet END-IF ELSE IF src4 is 6rdRelayV4Address THEN Forward v6-packet END-IF END-IF END-IF Despres Expires November 11, 2008 [Page 14] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 Appendix B. PSEUDO-CODE EXAMPLE WITH SECURITY CHECKS FOR 6RD-RELAYS 6rd-relay ENCAPSULATION IF v6-packet > 1280 octets THEN Send back ICMPv6 pkt "Pkt too big" ELSE-IF src6 doesn't start with 6rdZoneV6Prefix THEN IF (dst6 starts with the 6rdZoneV6Prefix AND NOT (6rdZoneV4PrefixLength = 0 AND next src6 bits = 1110) THEN src4 <-- IPv4-6rd-relay-address; dst4 <-- 6rdZoneV4Prefix followed by 6rdSiteV4Suffix(dst6); Encapsulate v6-packet in v4-packet; Send v4-packet END-IF END-IF 6rd-relay DECAPSULATION IF (v4-packet = ICMPv4 "Unreachable" AND Protocol in returned IPv4 header is 41) THEN v6-packet <-- ICMPv6 "Destination unreachable" with the returned encapsulated IPv6 header src6 <-- 6rdSiteV6Prefix(6rdRelayV4Address) dst6 <-- src6(returned IPv6 header) Send v6-packet ELSE-IF Protocol of v4-packet = 41 THEN v6-packet <-- Data field of from v4-packet IF dst6 starts with 6rdSiteV6Prefix THEN IF (src6 starts with 6rdZoneV6Prefix AND NOT (6rdZoneV4PrefixLength = 0 AND next src6 bits = 1110) THEN IF scr4 is not 6rdRelayV4Address THEN Forward v6-packet END-IF ELSE-IF src4 is 6rdRelayV4Address THEN Forward v6-packet END-IF END-IF END-IF Despres Expires November 11, 2008 [Page 15] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 9. References 9.1. Normative References [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, September 1981. [RFC0792] Postel, J., "Internet Control Message Protocol", STD 5, RFC 792, September 1981. [RFC1191] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191, November 1990. [RFC1812] Baker, F., "Requirements for IP Version 4 Routers", RFC 1812, June 1995. [RFC1918] Rekhter, Y., Moskowitz, R., Karrenberg, D., Groot, G., and E. Lear, "Address Allocation for Private Internets", BCP 5, RFC 1918, February 1996. [RFC2131] Droms, R., "Dynamic Host Configuration Protocol", RFC 2131, March 1997. [RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor Extensions", RFC 2132, March 1997. [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998. [RFC2463] Conta, A. and S. Deering, "Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification", RFC 2463, December 1998. [RFC2893] Gilligan, R. and E. Nordmark, "Transition Mechanisms for IPv6 Hosts and Routers", RFC 2893, August 2000. [RFC3513] Hinden, R. and S. Deering, "Internet Protocol Version 6 (IPv6) Addressing Architecture", RFC 3513, April 2003. [RFC4925] Li, X., Dawkins, S., Ward, D., and A. Durand, "Softwire Problem Statement", RFC 4925, July 2007. 9.2. Informative References [IPv4 addresses] Internet Assigned Numbers Authority, "Internet Protocol v4 Address Space - http://www.nro.net/documents/pdf/nro46.pdf", Despres Expires November 11, 2008 [Page 16] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 February 2008. [Protocol Numbers] Internet Assigned Numbers Authority, "PROTOCOL NUMBERS - http://www.iana.org/assignments/protocol-numbers", January 2008. [RFC2663] Srisuresh, P. and M. Holdrege, "IP Network Address Translator (NAT) Terminology and Considerations", RFC 2663, August 1999. [RFC3053] Durand, A., Fasano, P., Guardini, I., and D. Lento, "IPv6 Tunnel Broker", RFC 3053, January 2001. [RFC3056] Carpenter, B. and K. Moore, "Connection of IPv6 Domains via IPv4 Clouds", RFC 3056, February 2001. [RFC3068] Huitema, C., "An Anycast Prefix for 6to4 Relay Routers", RFC 3068, June 2001. [RFC4380] Huitema, C., "Teredo: Tunneling IPv6 over UDP through Network Address Translations (NATs)", RFC 4380, February 2006. [RIR Policy] Number resource Organization, "RIR Comparative Policy Overview - http://www.iana.org/assignments/ipv4-address-space", November 2007. Author's Address Remi Despres RD-IPtech 3 rue du President Wilson Levallois, France Phone: +33 6 72 74 94 88 Email: remi.despres@free.fr Despres Expires November 11, 2008 [Page 17] Internet-Draft 6rd - IPv6 Rapid Deployment May 2008 Full Copyright Statement Copyright (C) The IETF Trust (2008). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Intellectual Property The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. Despres Expires November 11, 2008 [Page 18]