view Side-By-Side changes
INTERNET DRAFT C. Huitema<draft-huitema-v6ops-teredo-01.txt><draft-huitema-v6ops-teredo-02.txt> Microsoft ExpiresAugust 5,December 9, 2004February 5,March 8, 2004 Teredo: Tunneling IPv6 over UDP through NATs Status of this memoThis document is an Internet-DraftBy submitting this Internet-Draft, I certify that any applicable patent or other IPR claims of which I am aware have been disclosed, andisany of which I become aware will be disclosed, infull conformanceaccordance withall provisions of Section 10 of RFC2026. This document is an Internet-Draft.RFC 3668. 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 asInternet-Drafts.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. Abstract We propose here a service that enables nodes located behind one orseveralmore IPv4 NATs to obtain IPv6 connectivity by tunneling packets over UDP; we call this the Teredo service. Running the service requires the help of "Teredo servers" and "Teredo relays"; the Teredo servers are stateless, and only have to manage a small fraction of the traffic between Teredo clients; the Teredo relays act as IPv6 routers between the Teredo service and the "native" IPv6Internet. 1 Introduction Classic tunneling methods envisaged for IPv6 transition operate by sending IPv6 packets as payload of IPv4 packets; the 6to4 proposal [RFC3056] proposes automatic discovery in this context. A problem with these methods is that they don't work when the IPv6 candidate node is isolated behind a Network Address Translator (NAT) device: NATs are typically not programmed to allow the transmission of arbitrary payload types; even when they are, the local address cannot be used in a 6to4 scheme. 6to4 will work with a NAT if the NAT and 6to4 router functions are in the same box; we want to cover the relatively frequent case whenInternet; theNAT cannot be readily upgraded torelays can also providea 6to4 router function. A possible way to solve the problem is to rely on a set of "tunnel brokers." There are however limits to any solution that is based oninteroperability with hosts using other transition mechanisms such as "6to4". Huitema [Page 1] INTERNET DRAFT TeredoFebruary 5,June 9, 2004such brokers: the qualityTable of Contents: 1 Introduction .................................................... 4 2 Definitions ..................................................... 4 2.1 Teredo serviceis not very good, since the traffic follows a "dog leg" route from the source to the broker and then the destination; the broker has to provide sufficient transmission capacity to relay all packets and thus................................................ 5 2.2 Teredo Client ................................................. 5 2.3 Teredo Server ................................................. 5 2.4 Teredo Relay .................................................. 5 2.5 Teredo IPv6 service prefix .................................... 5 2.5.1 Global Teredo IPv6 service prefix ........................... 5 2.6 Teredo UDP port ............................................... 5 2.7 Teredo bubble ................................................. 5 2.8 Teredo service port ........................................... 5 2.9 Teredo server address ......................................... 6 2.10 Teredo mapped address and Teredo mapped port ................. 6 2.11 Teredo IPv6 client prefix .................................... 6 2.12 Teredo node identifier ....................................... 6 2.13 Teredo IPv6 address .......................................... 6 2.14 Teredo Refresh Interval ...................................... 6 2.15 Teredo secondary port ........................................ 6 2.16 Teredo IPv4 Discovery Address ................................ 6 3 Design goals, requirements, and model of operation .............. 6 3.1 Hypotheses about NAT behavior ................................. 7 3.2 IPv6 provider of last resort .................................. 8 3.2.1 When to use Teredo? ......................................... 8 3.2.2 Autonomous deployment ....................................... 8 3.2.3 Minimal load on servers ..................................... 8 3.2.4 Automatic sunset ............................................ 9 3.3 Operational Requirements ...................................... 9 3.3.1 Robustness requirement ...................................... 9 3.3.2 Minimal support cost ........................................ 9 3.3.3 Protection against denial of service attacks ................ 9 3.3.4 Protection against distributed denial of service attacks .... 9 3.3.5 Compatibility with ingress filtering ........................ 10 3.4 Model of operation ............................................ 10 4 Teredo Addresses ................................................ 11 5 Specification of clients, servers and relays .................... 12 5.1 Message formats ............................................... 12 5.1.1 Teredo IPv6 packet encapsulation ............................ 12 5.1.2 Maximum Transmission Unit ................................... 14 5.2 Teredo Client specification ................................... 15 5.2.1 Qualification procedure ..................................... 16 5.2.2 Secure qualification ........................................ 19 5.2.3 Packet reception ............................................ 20 5.2.4 Packet transmission ......................................... 22 5.2.5 Maintenance ................................................. 23 5.2.6 Sending Teredo Bubbles ...................................... 23 5.2.7 Optional Refresh Interval Determination Procedure ........... 24 5.2.8 Optional local client discovery procedure ................... 25 5.2.9 Direct IPv6 connectivity test ............................... 26 5.2.10 Working around symmetric NAT ............................... 27 Huitema [Page 2] INTERNET DRAFT Teredo June 9, 2004 5.3 Teredo Server specification ................................... 28 5.3.1 Processing of Teredo IPv6 packets ........................... 28 5.3.2 Processing of router solicitations .......................... 29 5.4 Teredo Relay specification .................................... 30 5.4.1 Transmission by relays to Teredo clients .................... 30 5.4.2 Reception from Teredo clients ............................... 31 5.4.3 Difference between Teredo Relays and Teredo Servers ......... 32 5.5 Implementation of automatic sunset ............................ 32 6 Use of Teredo to implement a tunnel service ..................... 33 7 Security Considerations ......................................... 34 7.1 Opening a hole in the NAT ..................................... 34 7.2 Using the Teredo service for a man-in-the-middle attack ....... 35 7.2.1 End-to-end security ......................................... 36 7.3 Denial of the Teredo service .................................. 36 7.3.1 Denial of service by a rogue relay .......................... 37 8.3.1 Denial of service by server spoofing ........................ 37 7.3.2 Denial of service by exceeding the number of peers .......... 37 7.3.3 Attacks against the local discovery procedure ............... 37 7.3.4 Attacking the Teredo servers and relays ..................... 37 7.4 Denial of service against non-Teredo nodes .................... 38 7.4.1 Laundering DoS attacks from IPv4 to IPv4 .................... 38 7.4.2 DOS attacks from IPv4 to IPv6 ............................... 39 7.4.3 DOS attacks from IPv6 to IPv4 ............................... 39 8 IAB considerations .............................................. 40 8.1 Problem Definition ............................................ 40 8.2 Exit Strategy ................................................. 40 8.3 Brittleness Introduced by Teredo .............................. 41 8.4 Requirements for a Long Term Solution ......................... 42 9 IANA Considerations ............................................. 42 10 Acknowledgements ............................................... 42 11 References ..................................................... 42 12 Authors' Addresses ............................................. 43 13 Intellectual Property Statement ................................ 44 14 Copyright ...................................................... 44 Huitema [Page 3] INTERNET DRAFT Teredo June 9, 2004 1 Introduction Classic tunneling methods envisaged for IPv6 transition operate by sending IPv6 packets as payload of IPv4 packets; the 6to4 proposal [RFC3056] proposes automatic discovery in this context. A problem with these methods is that they don't work when the IPv6 candidate node is isolated behind a Network Address Translator (NAT) device: NATs are typically not programmed to allow the transmission of arbitrary payload types; even when they are, the local address cannot be used in a 6to4 scheme. 6to4 will work with a NAT if the NAT and 6to4 router functions are in the same box; we want to cover the relatively frequent case when the NAT cannot be readily upgraded to provide a 6to4 router function. A possible way to solve the problem is to rely on a set of "tunnel brokers." There are however limits to any solution that is based on such brokers: the quality of service may be limited, since the traffic follows a "dog leg" route from the source to the broker and then the destination; the broker has to provide sufficient transmission capacity to relay all packets and thus suffers a high cost. For these two reasons,we tendit may be desirable topreferhave solutions that allow for "automatic tunneling", i.e. let the packets follow a direct path to the destination. The automatic tunneling requirement is indeed at odds with some of the specificities of NATs. Establishing a direct path supposes that the IPv6 candidate node can retrieve a "globally routable" address that results from the translation of its local address by one orseveralmore NATs; it also supposes that we can find a way to bypass the various "per destination protections" that many NATs implement. In this memo, we will explain how IPv6 candidates located behind NATs can enlist the help of "Teredo servers" and "Teredo relays" to learn their "global address" and to obtain connectivity, and how clients, servers and relays can be organized in Teredo networks. The specification is organized asfollow.follows. Section 2 contains the definition of the terms used in the memo. Section 3 presents the hypotheses on NAT behavior used in the design, as well as the operational requirements that the design should meet. Section 4 presents the IPv6 address format used by Teredo. Section 5 contains the format of the messages and the specification of the protocol. Section 6 presents the guideline for some further work that would be complementary to the current approach. Section 7 contains a security discussion, section 8 a discussion of the so called "UNSAF" issues, and section 9 contains IANA considerations. 2 Definitions The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. Huitema [Page 4] INTERNET DRAFT Teredo June 9, 2004 This specification uses the following definitions: 2.1 Teredo service The transmission of IPv6 packets over UDP, as defined in this memo. 2.2 Teredo Client A node that has some access to the IPv4 Internet andthatwants to gain access to the IPv6 Internet. 2.3 Teredo Server A node that has access to the IPv4 Internet through a globally routable address, andthatis used as a helper to provide IPv6 connectivity to Teredo clients.Huitema [Page 2] INTERNET DRAFT Teredo February 5, 20042.4 Teredo Relay An IPv6 router that can receive traffic destined to Teredo clients and forward it using the Teredo service. 2.5 Teredo IPv6 service prefix An IPv6 addressing prefix which is used to construct the IPv6 address of Teredo clients. 2.5.1 Global Teredo IPv6 service prefix An IPv6 addressing prefix whose value is XXXX:XXXX:/32. (TBD IANA; experiments use the value 3FFE:831F::/32, taken from a range of experimental IPv6 prefixes assigned to Microsoft.) 2.6 Teredo UDP port The UDP port number at which Teredo Servers are waiting for packets. The value of this port is 3544. 2.7 Teredo bubble A Teredo bubble is a minimal IPv6 packet, made of an IPv6 header and a null payload - the payload type is set to 59, No Next Header, as per [RFC2460]. The Teredo clients and relays may send bubbles in order to create a mapping in a NAT. 2.8 Teredo service port The port through which the Teredo client sends Teredo packets. This port is attached to one of the client's IPv4interfaces.addresses. The IPv4 address may or may not be globally routable, as the client may be located behind one orseveralmore NAT. Huitema [Page 5] INTERNET DRAFT Teredo June 9, 2004 2.9 Teredo server address The IPv4 address of the Teredo server selected by a particular user. 2.10 Teredo mapped address and Teredo mapped port A global IPv4 address and a UDP port that results from the translationby one or several NATsof the IPv4 address and UDP port of a client's Teredo serviceport.port by one or more NATs. The client learns these values through the Teredo protocol described in this memo. 2.11 Teredo IPv6 client prefix A global scope IPv6 prefix composed of the Teredo IPv6 service prefix and the Teredo server address.Huitema [Page 3] INTERNET DRAFT Teredo February 5, 20042.12 Teredo node identifier A 64 bit identifier that contains the UDP port and IPv4 address at which a client can be joined through the Teredo service, as well as a flag indicating the type of NAT through which the client accesses the IPv4 Internet. 2.13 Teredo IPv6 address A Teredo IPv6 address obtained by combining a Teredo IPv6 client prefix and a Teredo node identifier. 2.14 Teredo Refresh Interval The interval during which a Teredo IPv6 Address is expected to remain valid in the absence of "refresh" traffic. For a client located behind a NAT, the interval depends on configuration parameters of the local NAT, or the combination of NATs in the path to the Teredo server. By default, clients assume an interval value of 30 seconds; a longer value may be determined by local tests, as described in section 5. 2.15 Teredo secondary port A UDP port used to determine the appropriate value of the refresh interval, but not used to carry any Teredo traffic. 2.16 Teredo IPv4 Discovery Address An IPv4 multicast address used to discover other Teredo clients on the same IPv4 subnet. The value of this address is X.X.X.X. (TBD IANA; experiments use the value 224.0.0.252.) 3 Design goals, requirements, and model of operation Huitema [Page 6] INTERNET DRAFT Teredo June 9, 2004 The proposed solution transports IPv6 packets as the payload of UDP packets. This is based on the observation that TCP and UDP are the only protocols guaranteed to cross the majority of NAT devices.RelayingTunneling packets over TCP would be possible, but would result in averypoor quality of service;relayingencapsulation over UDP is a better choice. The design of our solution is based on a set of hypotheses and observations on the behavior of NATs, our desire to provide an "IPv6 provider of last resort", and a list of operational requirements. It results in a model of operation in which the Teredo service is enabled by a set of servers and relays. 3.1 Hypotheses about NAT behavior NAT devices typically incorporate some support for UDP, in order toenable users inenable users in the natted domain to use UDP based applications. The NAT will typically allocate a "mapping" when it sees an UDP packet coming through for which there is not yet an existing mapping. The handling of UDP "sessions" by NAT devices differs by two important parameters, the type and the duration of the mappings. The type of mappings is analyzed in [RFC3489], which distinguishes between "Cone NAT", "restricted cone NAT", "port restricted cone NAT" and "symmetric NAT". The Teredo solution ensures connectivity for clients located behind cone NATs, retricted cone NATs or port- restricted cone NATs. these three types NATs. Clients located behind a symmetric NAT will only be able to use Teredo if they can somehow program the NAT and reserve a Teredo service port for each client, for example using the DMZ functions of the NAT. This is obviously an onerous requirement, at odds with the design goal of an automatic solution. However, measurement campaigns and studies of documentations have shown that, at least in simple "unmanaged" networks, symmetric NATs are a small minority; moreover, it seems that new NAT models or firmware upgrades avoid the "symmetric" design. Regardless of their types, UDP mappings are not kept forever. The typical algorithm is to remove thenatted domain to use UDP based applications.mapping if no traffic is observed on the specified port for a "lifetime" period. TheHuitema [Page 4] INTERNET DRAFTTeredoFebruary 5, 2004client that wants to maintain a mapping open in the NAT willtypically allocate a "mapping" whenhave to send some "keep alive" traffic before the lifetime expires. For that, itsees an UDP packet coming through for which there is not yetneeds anexisting mapping. The handlingestimate ofUDP "sessions" by NAT devices differs by two important parameters, the type andtheduration of"lifetime" parameter used in themappings. 3.1.1 Types of UDP mappings Experience showsNAT. We observed that theimplementersimplementation ofNAT deviceslifetime control canadopt widely different treatments of UDP mappings: 1) Somevary in several ways. Most NATs implementthe simplest solution,a "minimum lifetime" which isto map an internal UDP port, defined by an internal address and a port number on the corresponding host, to an external port, defined byset as aglobal address managed byparameter of theNATimplementation. Our observations of various boxes showed that this parameter can vary between about 45 seconds anda port number validseveral minutes. In many NATs, mappings can be kept for a duration thataddress. Inexceeds thissimple case,Huitema [Page 7] INTERNET DRAFT Teredo June 9, 2004 minimum, even in themapping is retained as long asabsence of traffic. We suspect that many implementation perform "garbage collection" of unused mappings on special events, e.g. when the overall number of mappings exceeds some limit. In some cases, e.g. NATs that manage ISDN or dial-up connections, theport is active, and is removed after an inactivity timer. As long asmappings will be released when themappingconnection isretained, any packet received by the NAT for the external portreleased, i.e. when no traffic isrelayed to the internal address and port. These NATs are usually called "cone NATs". 2) Some implement a more complex solution, in whichobserved on theNAT not only establishes a mappingconnection forthe UDP port, but also maintainsalistperiod ofexternal hosts to which traffic has been sent from that port. The packets originating from third party hostsa few minutes. Any algorithm used towhichestimate thelocal host has not yet sent traffic are rejected. These NATs are usually called "restricted cone NATs". 3) Insteadlifetime ofkeeping just a listmapping will have to be robust against these variations. 3.2 IPv6 provider ofauthorized hosts, some NAT implementations keep a listlast resort Teredo is designed to provide an "IPv6 access of last resort" to nodes that need IPv6 connectivity but cannot use any ofauthorized host and port pairs. UDP packets coming from remote addresses are rejected iftheinternal hostother IPv6 transition schemes. This design objective hasnot yet sent trafficseveral consequences on when tothe outside hostuse Teredo, how to program clients, andport pair. The NATs are often called "port-restricted cone NATs" 4) Finally, some NATs mapwhat to expect of servers. Another consequence is that we expect to see a point in time at which thesame internal address and port pairTeredo technology ceases todifferent external addressbe used. 3.2.1 When to use Teredo? Teredo is designed to robustly enable IPv6 traffic through NATs, andport pairs, depending ontheaddressprice of robustness is a reasonable amount ofthe remote host. These NATs are usually called "symmetric NATs". Measurement campaignsoverhead, due to UDP encapsulation andstudiestransmission ofdocumentations have shownbubbles. Nodes thatmost NATs implement either option 1 or option 2, i.e. cone NATs or restricted cone NATs. Thewant to connect to the IPv6 Internet SHOULD only use the Teredosolution ensuresservice as a "last resort" option: they SHOULD prefer using direct IPv6 connectivityfor clients located behind cone NATs, restricted cone NATs, or port- restricted cone NATs;if itcontains optimizations for clients located behind a cone NAT;is locally available, if itdoes not provide connectivity for clients located behind a symmetric NAT. 3.1.2 Lifetime of UDP mappings Regardless of their types, UDP mappings are not kept forever. The typical algorithmisto removeprovided by a 6to4 router co-located with themappinglocal NAT, or ifno trafficit isobserved onprovided by a configured tunnel service; and they SHOULD prefer using thespecified port forless onerous "6to4" encapsulation if they can use a"lifetime" period. Theglobal IPv4 address. 3.2.2 Autonomous deployment In an IPv6-enabled network, the IPv6 service is configured automatically, by using mechanisms such as IPv6 Stateless Address Autoconfiguration [RFC2462] and Neighbor Discovery [RFC2461]. A design objective is to configure the Teredo service as automatically as possible. In practice, it is however required that the client learn the IPv4 address of a server thatwantis willing tomaintainserve them; some servers may also require some form of access control. 3.2.3 Minimal load on servers During the peak of the transition, there will be amapping open inrequirement to deploy a large number of servers throughout theNAT will haveInternet. Minimizing the load on the server is a good way tosend some "keep alive"facilitate this deployment. To achieve this goal, servers should be as stateless as possible, and they should also not be required to carry any more trafficbefore the lifetime expires. For that, itthan Huitema [Page5]8] INTERNET DRAFT TeredoFebruary 5,June 9, 2004needs an estimate ofnecessary. To achieve this objective, we require only that servers enable the"lifetime" parameter used inpacket exchange between clients, but we don't require servers to carry theNAT. We observed thatactual data packets: these packets will have to be exchanged directly between theimplementation of lifetime control can vary in several ways. Most NATs implementTeredo clients, or through a"minimum lifetime" whichdestination-selected relay for exchanges between Teredo clients and other IPv6 clients. 3.2.4 Automatic sunset Teredo issetmeant as aparameter ofshort-term solution to theimplementation. Our observationsspecific problem ofvarious boxes showed that this parameter can vary between about 45 seconds and several minutes. In many NATs, mappingsproviding IPv6 service to nodes located behind a NAT. The problem is expected to be resolved over time by transforming the "IPv4 NAT" into an "IPv6 router". This can bekept for a duration that exceeds this minimum, evendone inthe absence of traffic. We suspect that many implementation perform "garbage collection"one ofunused mappings on special events, e.g. whentwo ways: upgrading theoverall number of mappings exceeds some limit. In some cases, e.g. NATs that manage ISDNNAT to provide 6to4 functions, ordial-up connections, the mappings will be released whenupgrading the Internet connectionis released, i.e. when no traffic is observed is observed onused by theconnection for a period ofNAT to afew minutes. Any algorithm usednative IPv6 service, and then adding IPv6 router functionality in the NAT. In either case, the former NAT can present itself as an IPv6 router toestimatethelifetime of mappingsystems behind it. These systems will start receiving the "router advertisements"; they will notice that they haveto be robust against these variations. 3.2IPv6provider of last resortconnectivity, and will stop using Teredo. 3.3 Operational Requirements 3.3.1 Robustness requirement The Teredo service is designed primarily for robustness: packets are carried over UDP in order toprovide an "IPv6 access of last resort" to nodes that need IPv6 connectivity but cannot use any of the other transition schemescross as many NAT implementations as possible. The servers are designedby the NGTRANS working group. This design objective has several consequences on when to use Teredo, how to program clients, and whattoexpect of servers. Another consequence isbe stateless, which means thatwethey can easily be replicated. We expect indeed tosee a point in timefind many such servers replicated atwhichmultiple Internet locations. 3.3.2 Minimal support cost The service requires theTeredo technology ceases to be used. 3.2.1 Whensupport of servers and relays. In order touse Teredo?facilitate the deployment of these servers, the Teredoisprocedures are designed torobustly enable IPv6 traffic through NATs, andminimize theprice of robustness is a reasonable amount of overhead, due to UDP encapsulation and transmissionfraction ofbubbles. Nodestraffic thatwant to connecthas to be routed through theIPv6 Internet SHOULD only useservers. Meeting this objective implies that the Teredoservice as a "last resort" option: they SHOULD prefer using direct IPv6 connectivity if it is locally available or if it is provided by a 6to4 router co-located withaddresses will incorporate thelocal NAT,IPv4 address andthey SHOULD prefer usingUDP port through which a Teredo client can be reached. This creates an implicit limit on theless onerous "6to4" encapsulation if theystability of the Teredo addresses, which canuse a globalonly remain valid as long as the underlying IPv4address. 3.2.2 Autonomous deployment In an IPv6-enabled network,address and UDP port remains valid. 3.3.3 Protection against denial of service attacks The Teredo clients obtain mapped addresses and ports from theIPv6Teredo servers. The serviceis configured automatically, by using mechanisms such as IPv6 Stateless Address Autoconfiguration [RFC2462]must be protected against denial of service attacks in which a third party spoofs a Teredo server andNeighbor Discovery [RFC2461]. A design objective issends improper information toconfiguretheTeredoclient. 3.3.4 Protection against distributed denial of serviceas automaticallyattacks Huitema [Page6]9] INTERNET DRAFT TeredoFebruary 5,June 9, 2004 Teredo servers will act aspossible. In practice, it is however required that the client learn the IPv4 address ofaserver that is willing to serve them; some servers may also require some formrelay for IPv6 packets. Improperly designed packet relays can be used by denial ofaccess control. 3.2.3 Minimal load on servers Duringservice attackers to hide their address, making the attack untraceable. The Teredo service must include adequate protection against such misuse. 3.3.5 Compatibility with ingress filtering Routers may perform ingress filtering by checking that thepeaksource address of thetransition, there will bepackets received on arequirementgiven interface is "legitimate", i.e. belongs todeploynetwork prefixes from which traffic is expected at alarge number of servers throughout the Internet. Minimizing the load on the servernetwork interface. Ingress filtering is agood way to facilitate this deployment. To achieve this goal, servers should be as statelessrecommended practice, aspossible, and they should also not be required to carry any more traffic than necessary. To achieve this objective, we require only that servers enableit thwarts thepacket exchange between clients, but we don't require serversuse of forged source IP addresses by malfeasant hackers, notably tocarry the actual data packets: these packets will havecover their tracks during denial of service attacks. The Teredo specification must not force networks tobe exchanged directly between thedisable ingress filtering. 3.4 Model of operation The operation of Teredo involves four types of nodes: Teredo clients,or through a destination-selected relay for exchanges betweenTeredoclientsservers, Teredo relays, andother"plain" IPv6clients. 3.2.4 Automatic sunsetnodes. Teredo clients start operation by interacting with a Teredo server, performing a "qualification procedure". During this procedure, the client will discover whether it ismeant asbehind ashort-term solution tocone, restricted cone or symmetric NAT. If thespecific problem of providingclient is not located behind a symmetric NAT, the procedure will be successful and the client will configure a "Teredo address". The Teredo address embeds the "mapped address and port" through which the client can receive IPv4/UDP packets encapsulating IPv6service to nodespackets. If the client is not located behind aNAT. The problem is expected tocone NAT, packet transmission must beresolved over timepreceded bytransforming the "IPv4 NAT" intoan"IPv6 router".exchange of "bubbles" that will install a mapping in the NAT. This document specifies how the bubbles can bedoneexchanged between Teredo clients inone of two ways: upgrading the NAT to provide 6to4 functions, or upgrading the Internet connection used by the NATorder to enable transmission along anativedirect path. Teredo clients can exchange IPv6service, and then addingpackets with plain IPv6router functionality in the NAT. In either case,nodes (e.g. native nodes or 6to4 nodes) through Teredo relays. Teredo relays advertise reachability of theformer NAT can present itself as an IPv6 routerTeredo prefix to a certain subset of thesystems behind it. These systemsIPv6 Internet: a relay set up by an ISP willstart receivingtypically serve only the"router advertisements"; they will notice that they haveIPv6connectivity, andcustomers of this ISP; a relay set-up for a site willstop using Teredo. 3.3 Operational Requirements 3.3.1 Robustness requirement Theonly serve the IPv6 hosts of this site. Dual-stack hosts may implement a "local relay", allowing them to communicate directly with Teredoservice is designed primarily for robustness:hosts by sending IPv6 packetsare carriedover UDPin order to cross as many NAT implementations as possible. The servers are designed to be stateless, which means that they can easily be replicated. We expect indeed to find many such servers replicated at multiple Internet locations. 3.3.2 Minimal support cost The service requires the support of serversandrelays.IPv4. In order tofacilitate the deployment of these servers,prevent spoofing, the Teredoprocedures are designedclients perform a relay discovery procedure by sending an ICMP echo request tominimizethefraction of traffic that has to be routednative host, through theservers. Meeting this objective implies that theTeredoaddresses will incorporateserver. The payload of theIPv4 address and UDP port through whichecho request contains a large random number. The echo reply is forwarded by the relay closest to the native or 6to4 peer, enabling the Teredo clientcan be reached. This creates an implicit limit onto discover this relay. In order to prevent spoofing, the Teredo Huitema [Page7]10] INTERNET DRAFT TeredoFebruary 5,June 9, 2004stability of the Teredo addresses, which can only remain valid as long as the underlying IPv4 address and UDP port remains valid. 3.3.3 Protection against denial of service attacks The Teredo clients obtain mapped addresses and ports fromclient verifies that theTeredo servers. The service must be protected against denialpayload ofservice attacks in which a third party spoofs a Teredo server and sends improper information totheclient. 3.3.4 Protection against distributed denial of service attacks Teredo servers will act as a relay for IPv6 packets. Improperly designed packet relays can be used by denial of service attackers to hide their address, makingecho reply contains theattack untraceable.proper random number. TheTeredo service must include adequate protection against such misuse. 3.3.5 Compatibility with ingress filtering Routers may perform ingress filtering by checkingprocedures are designed so that thesource address ofTeredo server only participates in thepackets received on a given interface is "legitimate", i.e. belongs to network prefixes from which traffic is expected at a network interface. Ingress filtering is a recommended practice, as it thwartsqualification procedure and in theuse of forged source IP addresses by malfeasant hackers, notably to cover their tracks during denialexchange ofservice attacks.bubbles and ICMP echo requests. The Teredospecification must not force networksserver never carries actual data traffic. There are two rationales for this design: reduce the load on the server in order todisable ingress filtering.enable scaling; and avoid privacy issues that could occur if a Teredo server kept copies of the client's data packets. 4 Teredo Addresses The Teredo addresses are composed of 5 components: +-------------+-------------+-------+------+-------------+ | Prefix | Server IPv4 | Flags | Port | Client IPv4 | +-------------+-------------+-------+------+-------------+ - Prefix: the 32 bit Teredo service prefix. - Server IPv4: the IPv4 address of a Teredo server. - Flags: a set of 16 bits that document type of address and NAT. - Port: the obfuscated "mapped UDP port" of the Teredo service at the client - Client IPv4: the obfuscated "mapped IPv4 address" ofathe client In this format, both the "mapped UDP port" and "mapped IPv4 address" of the client are obfuscated. Each bit in the address and port number is reversed; this can be done by an exclusive OR of the 16- bit port number with the hexadecimal value 0xFFFF, and an exclusive OR of the 32-bit address with the hexadecimal value 0xFFFFFFFF. The IPv6 addressing rules specify that "for all unicast addresses, except those that start with binary value 000, Interface IDs are required to be 64 bits long and to be constructed in Modified EUI-64Huitema [Page 8] INTERNET DRAFT Teredo February 5, 2004format." This dictates the encoding of the flags, 16 intermediate bits which should correspond to valid values of the most significant 16 bits of a Modified EUI-64 ID: 0 0 0 1 |0 7 8 5 +----+----+----+----+ |Czzz|zzUG|zzzz|zzzz| +----+----+----+----+ In this format: - The bits "UG" should be set to the value "00", indicating a non- global unicast identifier; - The bit "C" (cone) should be set to 1 if the client believes it is behind a cone NAT, to 0 otherwise; these values determine Huitema [Page 11] INTERNET DRAFT Teredo June 9, 2004 different server behavior during the qualification procedure, as specified in section 5.2.1, as well as different bubble processing by clients and relays. - The bits indicated with "z" must be set tozero.sent as zero and ignored on receipt. There are thus twovalidcurrently specified values of the Flags field: "0x0000" (all null) if the cone bit is set to 0, and "0x8000" if the cone bit is set to 1.A third party sends IPv6 packets to a Teredo client by sending these packets over UDP to the mapped IPv4 address and port(Further versions ofthe client if the cone bit is set, or if the third party has recently received direct traffic from the client. In the other cases, the third party will havethis specification may assign new values tofirst synchronize withtheclient, by sending an initial bubble through the server.reserved bits.) In some cases, Teredo nodes use link-local addresses. These addresses contain a link local prefix (FE80::/64) and a 64 bit identifier, constructed using the same format as presented above. A difference between link-local addresses and global addresses is that the identifiers used in global addresses MUST include a global scope unicast IPv4 address, while the identifiers used in link-local addresses MAY include a private IPv4 address. 5 Specification of clients, servers and relays The Teredo service is realized by having clients interact with Teredo servers through the Teredo service protocol. The clients will also receive IPv6 packets through Teredo relays. The Teredo server is designed to be stateless. It waits for Teredo requests and for IPv6 packets on the Teredo UDP port; it processes the requests by sending a response to the appropriate address and port; it forwards Teredo IPv6 packets to the appropriate IPv4Huitema [Page 9] INTERNET DRAFT Teredo February 5, 2004address and UDP port. The Teredo relay advertises reachability of the Teredo service prefix over IPv6.ItThe scope of advertisement may be the entire Internet, or a smaller subset such as an ISP network or an IPv6 site; it may even be as small as a single host in the case of "local relays". The relay forwards Teredo IPv6 packets to the appropriate IPv4 address and UDP port. Teredo clients, servers and relays must implement the sunset procedure defined in section 5.5. 5.1 Message formats 5.1.1 Teredo IPv6packetspacket encapsulation Teredo IPv6 packets are transmitted as UDP packets [RFC768] within IPv4 [RFC791]. The source and destination IP addresses and UDP ports take values that are specified in this section. Packets can come in one of two formats, simple encapsulation and encapsulation with origin indication. Huitema [Page 12] INTERNET DRAFT Teredo June 9, 2004 When simple encapsulation is used, the packet will have a simple format, in which the IPv6 packet is carried as the payload of a UDP datagram: +------+-----+-------------+ | IPv4 | UDP | IPv6 packet | +------+-----+-------------+ When relaying packets received from third parties, the server may insert an origin indication in the first bytes of the UDP payload: +------+-----+-------------------+-------------+ | IPv4 | UDP | Origin indication | IPv6 packet | +------+-----+-------------------+-------------+ The origin indication encapsulation is an 8-octet element, with the following content: +--------+--------+-----------------+ | 0x00 | 0x00 | Origin port # | +--------+--------+-----------------+ | Origin IPv4 address | +-----------------------------------+ The first two octets of the origin indication are set to a null value; this is used to discriminate between the simple encapsulation, in which the first 4 bits of the packet contain the indication of the IPv6 protocol, and the origin indication. The following 16 bits contain the obfuscated value of the port number from which the packet was received, in network byte order. The next 32 bits contain the obfuscated IPv4 address from which the packet was received, in network byte order. In this format, both theHuitema [Page 10] INTERNET DRAFT Teredo February 5, 2004original "IPv4 address" and "UDP port" of the client are obfuscated. Each bit in the address and port number is reversed; this can be done by an exclusive OR of the 16-bit port number with the hexadecimal value 0xFFFF, and an exclusive OR of the 32-bit address with the hexadecimal value 0xFFFFFFFF. For example, if the original UDP port number was 337 (hexadecimal 0151) and original IPv4 address was 1.2.3.4 (hexadecimal: 01020304), the origin indication would contain the value "0000FEAEFEFDFCFB". When exchanging Router Solicitation and Router Advertisement messages between a client and its server, the packets may include an authentication parameter: +------+-----+----------------+-------------+ | IPv4 | UDP | Authentication | IPv6 packet | +------+-----+----------------+-------------+ The authentication encapsulation is a variable length-element, Huitema [Page 13] INTERNET DRAFT Teredo June 9, 2004 containing a client identifier, an authentication value, a nonce value, and a confirmation byte. +--------+--------+--------+--------+ | 0x00 | 0x01 | ID-len | AU-len | +--------+--------+--------+--------+ | Client identifier (ID-len | +-----------------+-----------------+ | octets) | Authentication | +-----------------+--------+--------+ | value (AU-len octets) | Nonce | +--------------------------+--------+ | value (8 octets | +--------------------------+--------+ | | Conf. | +--------------------------+--------+ The first octet of the authentication encapsulation is set to a null value, and the second octet is set to the value 1; this enables differentiation from IPv6 packets and from origin information indication encapsulation. The third octet indicates the length in bytes of the client identifier; the fourth octet indicates the length in bytes of the authentication value. The computation of the authentication value is specified in section 5.2.2. The authentication value is followed by an8-octet nonce, and by a confirmation byte.8-octet nonce, and by a confirmation byte. Both ID-len and AU-len can be set to null values if the server does not require an explicit authentication of the client. Authentication and origin indication encapsulations may sometimes be combined, for example in the RA responses sent by the server. In this case, the authentication encapsulation MUST be the first element in the UDP payload:Huitema [Page 11] INTERNET DRAFT Teredo February 5, 2004+------+-----+----------------+--------+-------------+ | IPv4 | UDP | Authentication | Origin | IPv6 packet | +------+-----+----------------+--------+-------------+ 5.1.2 Maximum Transmission Unit Since Teredo uses UDP as an underlying transport, a Teredo Maximum Transmission Unit (MTU) could potentially be as large as the payload of the largest valid UDP datagram (65507 bytes). However, since Teredo packets can travel on unpredictable paths over the Internet, it is best to contain this MTU to a small size, in order to minimize the effect of IPv4 packet fragmentation and reassembly. The default link MTU assumed by a host, and the link MTU supplied by a Teredo server during router advertisement SHOULD normally be set to the minimum IPv6 MTU size of 1280 bytes [RFC2460]. Huitema [Page 14] INTERNET DRAFT Teredo June 9, 2004 Teredo implementations SHOULD NOT set the Don't Fragment (DF) bit of the encapsulating IPv4 header. 5.2 Teredo Client specification Before using the Teredo service, the client must be configured with: - the IPv4 address of a server. If secure discovery is required, the client must also be configured with: - a client identifier, - a secret value, shared with the server, - an authentication algorithm, shared with the server. A Teredo client expects to exchange IPv6 packets through an UDP port, the Teredo service port. The client will maintain the following variables that reflect the state of the Teredo service: - Teredo connectivity status, - Mapped address and port number associated with the Teredo service port, - Teredo IPv6 prefix associated with the Teredo service port, - Teredo IPv6 address or addresses derived from the prefix, - Link local address, - Date and time of the last interaction with the Teredo server, - Teredo Refresh Interval, - Randomized Refresh Interval, - List of recent Teredo peers. Before sending any packets, the client must perform the Teredo qualification procedure, which determines the Teredo connectivity status, the mapped address and port number, and the Teredo IPv6 prefix; it should then perform the cone NAT determination procedure,Huitema [Page 12] INTERNET DRAFT Teredo February 5, 2004which determines the cone NAT status and may alter the value of the prefix. If the qualification is successful, the client may use the Teredo service port to transmit and receive IPv6 packets, according to the transmission and receptionprocedures; theseprocedures. These procedures use the "list of recent peers". For each peer, the list contains: - The IPv6 address of the peer, - The mapped IPv4 address and mapped UDP port of the peer, - The status of the mapped address, i.e. trusted or not, - The value of the last "nonce" sent to the peer, - The date and time of the last reception from the peer, - The date and time of the last transmission to the peer, - The number of bubbles transmitted to the peer. The list of peers is used to enable the transmission of IPv6 packets by using a "direct path" for the IPv6 packets. The list of peers could grow over time. Clients should implement a list management Huitema [Page 15] INTERNET DRAFT Teredo June 9, 2004 strategy, for example deleting the least recently used entries. Clients should make sure that the list has a sufficient size, to avoid unnecessary exchanges of bubbles. The client must regularly perform the maintenance procedure in order to guarantee that the Teredo service port remains usable; the need to use this procedure or not depends on the delay since the last interaction with the Teredo server. The refresh procedure takes as a parameter the "Teredo refresh interval". This parameter is initially set to 30 seconds; it can be updated as a result of the optional "interval determination procedure." The randomized refresh interval is set to a value randomly chosen between 75% and 100% of the refresh interval. In order to avoid triangle routing for stations that are located behind the same NAT, the Teredo clients MAY use the optional local client discovery procedure defined in section 5.2.8. 5.2.1 Qualification procedure The purpose of the qualification procedure is to establish the status of the local IPv4 connection, and to determine the Teredo IPv6 client prefix of the local Teredo interface. The procedure starts when the service is in the "initial" state, and results in a "qualified" state if successful, and in an "off-line" state if unsuccessful. Huitema [Page13]16] INTERNET DRAFT TeredoFebruary 5,June 9, 2004 /---------\ | Initial | \---------/ |+----+----++----+----------+ | SetC=1ConeBit=1 |+----+----++----+----------+ |+<-----------------------------------------++<-------------------------------------------+ | | +----+----+ | | Start |<------+ | +----+----+ |+----+----++----------+----+ | | | SetC=0ConeBit=0 | v |+----+----++----------+----+ /---------\ Timer | N ^ |Starting |-------+Nattempts/----------\ Yes | \---------/------------------->| C/----------------\Yes| \---------/----------------->| ConeBit == 1 ?|-----+|---+ | Response\----------/\----------------/ | | No V V/---------\/---------------\ Yes /----------\ |CConeBit ==0?1? |---------+ | Off line |\---------/\---------------/ | \----------/ No | v | /----------\ | | Cone NAT | +-----+-----+ \----------/ | New Server| +-----+-----+ | +----+----+ | Start |<------+ +----+----+ | | | v | /---------\ Timer | |Starting |-------+ N attempts /----------\ \---------/------------------->| Off line | | Response \----------/ | V /------------\ No /---------------\ | Same port? |-------->| Symmetric NAT | \------------/ \---------------/ | Yes V/-----------------\/----------------------\ | Restricted Cone NAT |\-----------------/\----------------------/ Huitema [Page14]17] INTERNET DRAFT TeredoFebruary 5,June 9, 2004 Initially, the Teredo connectivity status is set to "Initial". When the interface is initialized, the system first performs the "start action" by sending a Router Solicitation message, as defined in [RFC2461]. The client picks a link-local address and uses it as the IPv6 source of the message; the "cone" bit in the address is set to1;1 (see section 4 for the address format); the IPv6 destination of the RS is the all-routers multicast address; the packet will be sent over UDP from the service port to the Teredo server's IPv4 address and Teredo UDP port. The connectivity status moves then to "Starting". In the starting state, the client waits for a router advertisement from the Teredo server. If no response comes within a time-out T, the client should repeat the start action, by resending the Router Solicitation message. If no response has arrived after N repetitions, the client concludes that it is not behind a cone NAT. It sets the "cone" bit to 0, and repeats the procedure. If after N other timer expirations and retransmissions there is still no response, the client concludes that it cannot use UDP, and that the Teredo service is not available; the status is set to "Off-line." In accordance with [RFC2461], the default time-out value is set to T=4 seconds, and the maximum number of repetitions is set to N=3. If a response arrives, the client checks that the response contains an origin indication and a valid router advertisement as defined in [RFC2461], that the IPv6 destination address is equal to the link- local address used in the router solicitation, and that the router advertisement contains exactly one advertised Prefix Information option. This prefix should be a valid Teredo IPv6 server prefix: the first 32 bits should contain the global Teredo IPv6 service prefix, and the next 32 bits should contain the server's IPv4 address. If this is the case, the client learns the Teredo mapped address and Teredo mapped port from the origin indication. The IPv6 source address of the Router Advertisement is a link-local server address of the Teredo server. (Responses that are not valid advertisements are simply discarded.) If the client has received an RA with the "Cone" bit in the IPv6 destination address set to 1, it is behind a cone NAT and is fully qualified. If the RA is received with the Cone bit set to 0, the client does not know whether the local NAT is restricted or symmetric. The client selects a secondary IPv4 server address, and repeats the procedure, the cone bit remaining to the value zero. If the client does not receive a response, it detects that the service is not usable. If the client receives a response, it compares the mapped address and mapped port in this second response to the first received values. If the values are different, the client detects a symmetric NAT: it cannot use the Teredo service. If the values are the same, the clientisdetects a port-restricted or restricted cone NAT: the client is qualified to use the service. (Teredo operates Huitema [Page 18] INTERNET DRAFT Teredo June 9, 2004 the same way for restricted and port-restricted NAT.) If the client is qualified, it builds a Teredo IPv6 address usingHuitema [Page 15] INTERNET DRAFT Teredo February 5, 2004the Teredo IPv6 server prefix learned from the RA and the obfuscated values of the UDP port and IPv4 address learned from the origin indication. The cone bit should be set to the value used to receive the RA, i.e. 1 if the client is behind a cone NAT, 0 otherwise. The client can start using the Teredo service. 5.2.2 Secure qualification The client may be required to perform secured qualification. The client will perform exactly the algorithm described in 5.2.1, but it will incorporate an authentication encapsulation in the UDP packet carrying the router solicitation message, and it will verify the presence of a valid authentication parameter in the UDP message that carries the router advertisement provided by the sender. In these packets, the nonce value is chosen by the client, and is repeated in the response from the server; the client identifier is a value with which the client was configured. A first level of protection is provided by just checking that the value of the nonce in the response matches the value initially sent by the client. If no other protection is used, the authentication payload does not contain any identifier or authentication field; the ID-len and AU-len fields are set to a null value. When stronger protection is required, the authentication payload contains the identifier and location fields, as explained in the following paragraphs. The confirmation byte is set to 0 by the client. A null value returned by the server indicates that the client's key is still valid; a non-null value indicates that the client should obtain a new key. The authentication value is computed according to an algorithm agreed upon by client and server. To maximize interoperability, this specification defines a default algorithm in which the authentication value is computed according the HMAC specification [RFC2104] using the following specifications: - the hash function shall be the MD5 function [RFC1321]. - the secret value shall be the shared secret with which the client was configured The clear text to be protected includes: - the nonce value, - the confirmation byte, - the origin indication encapsulation, if it is present, - the IPv6 packet. Huitema [Page 19] INTERNET DRAFT Teredo June 9, 2004 If the HMAC verification fails, the packet is silently discarded. 5.2.3 Packet reception The Teredo client receives packets over the Teredo interface. The role of the packet reception procedure, besides receiving packets, is to maintain the date and time of the last interaction with the Teredo server, and the "list of recent peers." When a UDP packet is received over the Teredo service port, the Teredo client checks that it is encoded according to the packet encoding rules defined in 5.1.1, and that it contains either a valid IPv6packet as specified in [RFC2460],packet, or the combination of a valid origin indication encapsulation and a valid IPv6 packet, possibly protected by a valid authentication encapsulation. If this is not thecase,case, the packet is silently discarded. An IPv6 packet is deemed valid if it conforms to [RFC2460]: the protocol identifier should indicate an IPv6 packet and the payload length should be consistent with the length of the UDP datagram in which the packet issilently discarded. Huitema [Page 16] INTERNET DRAFTencapsulated. In addition, the client should check that the IPv6 destination address correspond to its own TeredoFebruary 5, 2004address. Then, the Teredo client examines the IPv4 source address and UDP port number from which the packet is received. If these values match the IPv4 address of the server and the Teredo port, the client updates the "date and time of the last interaction with the Teredo server" to the current date and time; if an origin indication is present, the client should perform the "direct IPv6 connectivity test" described in section 5.2.9. If the values are different, the client examines the IPv6 source address of the packet: 1) If there is an entry for the source IPv6 address in the list of peers whose status is trusted, the client compares the mapped IPv4 address and mapped port in the entry with the source IPv4 address and source port of the packet. If the values match, the packetshould beis accepted; the date and time of the last reception from the peershould beis updated. 2) If there is an entry for the source IPv6 address in the list of peers whose status is not trusted, the client checks whether the packet is an ICMPv6 echo reply. If this is the case, and if thecontentICMPv6 data of the reply matches the "nonce" stored in the peer entry, the packet should be accepted; the status of the entry should be changed to "trusted", the mapped IPv4 and mapped port in the entry should be set to the source IPv4 address and source port from which the packet was received, and the date and time of the last reception from the peer should be updated; any packet queued for Huitema [Page 20] INTERNET DRAFT Teredo June 9, 2004 this IPv6 peer (as specified in 5.2.4) should be de-queued and forwarded to the newly learned IPv4 address and UDP port. 3) If the source IPv6 address is a Teredo address, theclient compares the mapped IPv4 address and mapped port in the source address with the source IPv4 address and source port of the packet. If the values match, the client MUST create a peer entry for the IPv6 source address in the list of peers; it should update the entry if one already existed; the mapped IPv4 address and mapped port in the entry should be set to the value from which the packet was received, and the status should be set to "trusted". If a new entry is created, the last transmission date is set to 30 seconds before the current date, and the number of bubbles to zero. If the packet is a bubble, it should be discarded after this processing; otherwise, the packet should be accepted. In all cases, the client must de-queue and forward any packet queued for that destination. 4) If the source IPv6 address is a Teredo address, and the mapped IPv4 address and mapped port in the source address do not match the source IPv4 address and source port of the packet, the client checks whether the is an existing "local" entry for that IPv6 address. If there is such an entry, and if the localclient compares the mapped IPv4 address andlocalmapped portindicatedinthat entry matchthe source address with the source IPv4 address and source port of thepacket,packet. If the values match, the clientupdatesMUST create a peer entry for the IPv6 source address in the list of peers; it should update the entry if one already existed; the mapped IPv4 address and mapped port in the entry should be set to the value from which the packet was received, and the"local" entry, whose Huitema [Page 17] INTERNET DRAFT Teredo February 5, 2004status should be set to "trusted". If a new entry is created, the last transmission date is set to 30 seconds before the current date, and the number of bubbles to zero. If the packet is a bubble, it should be discarded after this processing; otherwise, the packet should be accepted. In all cases, the client must de-queue and forward any packet queued for that destination.5)4) If the IPv4 destination address through which the packet was received is the Teredo IPv4 Discovery Address, the source address is a valid Teredo address, and the destination address is the "all nodes on link" multicast address, the packet should be treated as a local discovery bubble. If no local entry already existed for the source address, a new one is created, but its status is set to "not trusted". The client SHOULD reply with a unicast Teredo bubble, sent to the source IPv4 address and source port of the local discovery bubble; the IPv6 source address of the bubble will be set to local Teredo IPv6 address; the IPv6 destination address of the bubble should be set to the IPv6 source address of the local discovery bubble. (Clients that do not implement the optional local discovery procedure will not process local discovery bubbles.) 5) If the source IPv6 address is a Teredo address, and the mapped IPv4 address and mapped port in the source address do not match the source IPv4 address and source port of the packet, the client checks whether there is an existing "local" entry for that IPv6 address. If there is such an entry, and if the local IPv4 address and local port indicated in that entry match the source IPv4 address and source port of the packet, the client updates the "local" entry, whose status should be set to "trusted". If the packet is a bubble, it should be discarded after this processing; otherwise, the packet should be accepted. In all cases, the client must de-queue and forward any packet queued for that destination. 6) In the other cases, the packet may be accepted, but the client should be conscious that the source address may be spoofed; before processing the packet, the client should perform the "direct IPv6 connectivity test" described in section 5.2.9. Whatever the IPv4 source address and UDP source port, the client that receives an IPv6 packet MAY send a Teredo bubble towards that target, as specified in section 5.2.6. Huitema [Page 21] INTERNET DRAFT Teredo June 9, 2004 5.2.4 Packet transmission When a Teredo client has to transmit a packet over a Teredo interface, it examines the destination IPv6 address. The client checks first if there is an entry for this IPv6 address in the list of recent Teredo peers, and if the entry is still valid: an entry associated with a local peer is valid if the last reception date and time associated with that list entry is less that 30 seconds from the current time; an entry associated with a non-local peer is valid if the last reception date and time associated with that list entry is less that 30 seconds from the current time. (Local peer entries can only be present if the client uses the local discovery procedure discussed in section 5.2.8.) The client then performs the following: 1) If there is an entry for that IPv6 address in the list of peers, and if the status of the entry is set to "trusted", the IPv6 packet should be sent over UDP to the IPv4 address and UDP port specified in the entry. The client updates the date of last transmission in the peer entry. 2) If the destination is not a Teredo IPv6 address, the packet is queued, and the client performs the "direct IPv6 connectivity test" described in section5.2.8.5.2.9. The packet will be de-queued andHuitema [Page 18] INTERNET DRAFT Teredo February 5, 2004forwarded if this procedure completes successfully. If the direct IPv6 connectivity test fails to complete within a 2 second time-out, it should be repeated up to 3 times. 3) If the destination is the Teredo IPv6 address of a local peer (i.e. a Teredo address from which a local discovery bubble has been received in the last 600 seconds), the packet is queued. The client sends a unicast Teredo bubble to the local IPv4 address and local port specified in the entry, and a local Teredo bubble to the Teredo IPv4 discovery address. 4) If the destination is a Teredo IPv6 address in which the cone bit is set to 1, the packet is sent over UDP to the mapped IPv4 address and mapped UDP port extracted from that IPv6 address. 5) If the destination is a Teredo IPv6 address in which the cone bit is set to 0, the packet is queued. If the client is not located behind a cone NAT, it sends a direct bubble to the Teredo destination, i.e. to the mapped IP address and mapped port of the destination. In all cases, the client sends an indirect bubble to the Teredo destination, sending it over UDP to the server address and to the Teredo port. The packet will be de-queued and forwarded when the client receives a bubble or another packet directly from this Teredo peer. If no bubble is received within a 2 second time- out, the bubble transmission should be repeated up to 3 times. In cases 4 and 5, before sending a packet over UDP, the client MUST Huitema [Page 22] INTERNET DRAFT Teredo June 9, 2004 check that the IPv4 destination address is in the format of a global unicast address; if this is not the case, the packet MUST be silently discarded. (Note that a packet can legitimately be sent to a non-global unicast address in case 1, as a result of the local discovery procedure.) 5.2.5 Maintenance The Teredo client must ensure that the mappings that it uses remain valid. It does so by checking that packets are regularly received from the Teredo server. At regular intervals, the client MUST check the "date and time of the last interaction with the Teredo server", to ensure that at least one packet has been received in the last Randomized Teredo Refresh Interval. If this is not the case, the client SHOULD send a router solicitation message to the server, as specified in 5.2.1; the client should use the same value of the "cone" bit that resulted in the reception of an RA during the qualification procedure. When the router advertisement is received, the client SHOULD check its validity as specified in 5.2.1; invalid advertisements are silently discarded. If the advertisement is valid, the client MUST check that the mapped address and port correspond to the current Teredo address. If this is not the case, the mapping has changed;Huitema [Page 19] INTERNET DRAFT Teredo February 5, 2004the client must mark the old address as invalid, and start using the new address. 5.2.6 Sending Teredo Bubbles The Teredo client may have to send a bubble towards another Teredo client, either after a packet reception or after a transmission attempt, as explained in sections 5.2.3 and 5.2.4. There are two kinds of bubbles: direct bubbles, that are sent directly to the mapped IPv4 address and mapped UDP port of the peer, and indirect bubbles that are sent through the Teredo server of the peer. When a Teredo client attempts to send a direct bubble, it extracts the mapped IPv4 address and mapped UDP port from the Teredo IPv6 address of the target. It then checks whether there is already an entry for this IPv6 address in the current list of peers. If there is no entry, the client MUST create a new list entry for the address, setting the last reception date and the last transmission date to 30 seconds before the current date, and the number of bubbles to zero. When a Teredo client attempts to send an indirect bubble, it extracts the Teredo server IPv4 address from the Teredo prefix of the IPv6 address of the target (different clients may be using different servers); the bubble will be sent to that IPv4 address and the Teredo UDP port. Huitema [Page 23] INTERNET DRAFT Teredo June 9, 2004 Bubbles may be lost in transit, and it is reasonable to enhance the reliability of the Teredo service by allowing multiple transmissions; however, bubbles will also be lost systematically in certain NAT configurations. In order to strike a balance between reliability and unnecessary retransmissions, we specify the following: - The client MUST NOT send a bubble if the last transmission date and time is less than 2 seconds before the current date and time; - The client MUST NOT send a bubble if it has already sent 4 bubbles to the peer in the last 300 seconds without receiving a direct response. In the other cases, the client MAY proceed with the transmission of the bubble. When transmitting the bubble, the client MUST update the last transmission date and time to that peer, and must also increment the number of transmitted bubbles. 5.2.7 Optional Refresh Interval Determination Procedure In addition to the regular client resources described in the beginning of this section, the refresh interval determination procedure uses an additional UDP port, the Teredo secondary port, and the following variables: - Teredo secondary connectivity status, - Mapped address and port number of the Teredo secondary port, - Teredo secondary IPv6 prefix associated with the secondary port, - Teredo secondary IPv6 address derived from this prefix, - Date and time of the last interaction on the secondary port, - Maximum Teredo Refresh Interval. - Candidate Teredo Refresh Interval. The secondary connectivity status, mapped address and prefix areHuitema [Page 20] INTERNET DRAFT Teredo February 5, 2004determined by running the qualification procedure on the secondary port. When the client uses the interval determination procedure, the qualification procedure MUST be run for the secondary port immediately after running it on the service port. If the secondary qualification fails, the interval determination procedure will not be used, and the interval value will remain to the default value, 30 seconds. If the secondary qualification succeeds, the maximum refresh interval is set to 120 seconds, and the candidate Teredo refresh interval is set to 60 seconds, i.e. twice the Teredo refresh interval. The procedure is then performed at regular intervals, until it concludes: 1) wait until the candidate refresh interval is elapsed after the last interaction on the secondary port; 2) send a Teredo bubble to the Teredo secondary IPv6 address, through the service port. Huitema [Page 24] INTERNET DRAFT Teredo June 9, 2004 3) wait for reception of the bubble on the secondary port. If a timer of 2 seconds elapses without reception, repeat step 2 at most three times. If there is still no reception, the candidate has failed; if there is a reception, the candidate has succeeded. 4) if the candidate has succeeded, set the Teredo refresh interval to the candidate value, and set a new candidate value to the minimum of twice the new refresh interval, or the average of the refresh interval and the maximum refresh interval. 5) if the candidate has failed, set the maximum refresh interval to the candidate value. If the current refresh interval is larger than or equal to 75% of the maximum, the determination procedure has concluded; otherwise, set a new candidate value to the average of the refresh interval and the maximum refresh interval. 6) if the procedure has not concluded, perform the maintenance procedure on the secondary port, which will reset the date and time of the last interaction on the secondary port, and may result in the allocation of a new Teredo secondary IPv6 address; this would not affect the values of the refresh interval, candidate interval or maximum refresh interval. The secondary port MUST NOT be used for any other purpose than the interval determination procedure.If a spurious packet is received on the secondary port, the client SHOULD repeatIt should be closed when themaintenanceprocedureon this port and reset the date and time of the last interaction on the secondary port.ends. 5.2.8 Optional local client discovery procedure It is desirable to enable direct communication between Teredo clients that are located behind the same NAT, without forcing a systematic relay through a Teredo server. It is hard to design aHuitema [Page 21] INTERNET DRAFT Teredo February 5, 2004general solution to this problem, but we can design a partial solution when the Teredo clients are connected through IPv4 to the same link. A Teredo client who wishes to enable local discovery SHOULD join the IPv4 multicast group identified by Teredo IPv4 Discovery Address. The client SHOULD wait for discovery bubbles to be received on the Teredo IPv4 DiscoveryAddress, and shouldAddress. The client SHOULD send local discovery bubbles to the Teredo IPv4 Discovery Address at random intervals, uniformly distributed between 200 and 300 seconds. A local Teredo bubble has the following characteristics: - IPv4 source address: the IPv4 address of the sender - IPv4 destination address: the Teredo IPv4 Discovery Address - IPv4 ttl: 1 - UDP source port: the Teredo service port of the sender Huitema [Page 25] INTERNET DRAFT Teredo June 9, 2004 - UDP destination port: the Teredo UDP port - UDP payload: a minimal IPv6 packet, as follows - IPv6 source: the global Teredo IPv6 address of the sender - IPv6 destination: the all-nodes on-link multicast address - IPv6 payload type: 59 (No Next Header, as per [RFC2460]) - IPv6 payload length: 0 - IPv6 hop limit: 1 The local discovery procedure carries a denial of service risk, as malevolent nodes could send fake bubbles to unsuspecting parties, and thus capture the traffic originating from these parties. The risk is mitigated by the filtering rules described in section 5.2.5, and also by "link only" multicast scope of the Teredo IPv4 Discovery Address, which implies that packets sent to this address will not be forwarded across routers. To benefit from the "link only multicast" protection, the clients should silently discard all local discovery bubbles that are received over a unicast address. To further mitigate the denial of service risk, the client MUST silently discard all local discovery bubbles whose IPv6 source address is not a well-formed Teredo IPv6 address, or whose IPv4 source address does not belong to the local IPv4 subnet; the client MAY decide to silently discard all local discovery bubbles whose Teredo IPv6 address do not include the same mapped IPv4 address as its own. If the bubble is accepted, the client checks whether there is anHuitema [Page 22] INTERNET DRAFT Teredo February 5, 2004entry in the list of recent peers that correspond to the mapped IPv4 address and mapped UDP port associated with the source IPv6 address of the bubble. If there is such an entry, the client MUST update the local peer address and local peer port parameters to reflect the IPv4 source address and UDP source port of the bubble. If there is no entry, the client MUST create one, setting the local peer address and local peer port parameters to reflect the IPv4 source address and UDP source port of thebubblebubble, the last reception date to the current date and time, the last transmission date to 30 seconds before the current date, and the number of bubbles to zero; the state of the entry is set to "not trusted". Upon reception of a discovery bubble, clients reply with a unicast bubble as specified in section 5.2.3. 5.2.9 Direct IPv6 connectivity test The Teredo procedures are designed to enable direct connections Huitema [Page 26] INTERNET DRAFT Teredo June 9, 2004 between a Teredo host and a Teredo relay. Teredo hosts located behind a cone NAT will receive packets directly from relays; other Teredo hosts will learn the original addresses and UDP ports of third parties through the local Teredo server. In all of these cases, there is a risk that the IPv6 address of the source be spoofed by a malevolent party. Teredo hosts must make two decisions, whether to accept the packet for local processing, and whether to transmit further packets to the IPv6 address through the newly learned IPv4 address and UDP port. The basic rule is that the hosts should be generous in what they accept, and careful in what they send. Refusing to accept packets due to spoofing concerns would compromise connectivity, and should only be done when there is a near certainty that the source address is spoofed; on the other hand, sending packets to the wrong address should be avoided. Whenitthe client wants to send a packet to an IPv6 node on the IPv6 Internet,the clientit should check whether a valid peer entry already exists for the IPv6 address of the destination. If this is not the case, the client will pick a random number (a nonce) and format an ICMPv6 Echo Request message whose source is the local Teredo address, whose destination is the address of the IPv6 node, and whose Data field is set to the nonce. The nonce value and the date at which the packet was sent will be documented in a provisional peer entry for the IPV6 destination. The ICMPv6 packet will then be sent encapsulated in a UDP packetbounddestined to thelocalTeredo server IPv4 address, and to the Teredo port. The rules of section 5.2.3 specify how thereception ofreply to this packet will be processed. 5.2.10 Working around symmetric NAT The client procedures are designed to enable IPv6 connectivity through the most common types of NAT, which are commonly called "Cone NAT" and "restricted cone NAT" [RFC3489]. Some NAT employ a differentdesigns;design; they are often called "symmetric NAT". TheHuitema [Page 23] INTERNET DRAFT Teredo February 5, 2004qualification algorithm in section 5.2.1 will not succeed when the local NAT is a symmetric NAT.It is inIn manycasescases, it is possible to work around the limitations of these NAT by explicitly reserving a UDP port for Teredo service on a client, using a function often called "DMZ" in the NAT's manual. This port will become the "service port" used by the Teredo hosts. The implementers of Teredo functions in hosts must make sure that the value of the service port can be explicitly provisioned, so that user can provision the same value in the host and in the NAT. The reservation procedure guarantees that the port mapping will remain the same for all destinations. After the explicit reservation, the qualification algorithm in section 5.2.1 will succeed, and the Teredo client will behave as if behind a "cone NAT". When different clients use Teredo behind a single symmetric NAT, Huitema [Page 27] INTERNET DRAFT Teredo June 9, 2004 each of these clients must reserve and use a different service port. 5.3 Teredo Server specification The Teredo server is designed to be stateless. The Teredo server waits for incoming UDP packets at the Teredo Port, using the IPv4 address that has been selected for the service. In addition, the server is able to receive and transmit some packets using a different IPv4 address and a different port number. The Teredo server acts as an IPv6 router. As such, it will receive Router Solicitation messages, to which it will respond with Router Advertisement messages as explained in section 5.3.2; it may also receive other packets, for example ICMPv6messages,messages and Teredo bubbles, which are processed according to the IPv6 specification.5.3.1 ProcessingBy default, the routing functions of the Teredo server are limited. Teredo servers are expected to relay Teredo bubbles and ICMPv6 messages, but they are not expected to relay other types of IPv6packets Upon receptionpackets. Operators may however decide to combine 5.3.1 Processing ofa packet on the Teredo port, theTeredoserver will first check that the UDP payload contains a validIPv6packet; if this is not the case, the packet will be silently discarded.packets Before processing the packet, the Teredo server MUST check the validity of the encapsulated IPv6 source address, the IPv4 source address and the UDP source port: 1) If the UDP content is not a well formed Teredo IPv6 packet, as defined in section 5.1.1, the packet MUST be silently discarded. 2) If the UDP packet is not a Teredo bubble or an ICMPv6 message, itshouldSHOULD be discarded. (The packet may be processed if the Teredo server also operates as a Teredo relay, as explained in section 5.4.) 3) If the IPv4 source address is not in the format of a global unicast address, the packet MUST be silently discarded. 4) If the IPv6 source address is an IPv6 link-local address, theHuitema [Page 24] INTERNET DRAFT Teredo February 5, 2004IPv6 destination address is the link-local scope all routers multicast address (FF02::2), and the packet contains an ICMPv6 Router Solicitation message, the packetSHOULDMUST be accepted; it MUST be discarded if the server requires secure qualification and the authentication encapsulation is absent orcannot be verified.verification fails. 5) If the IPv6 source address is a Teredo IPv6 address, and if the IPv4 address and UDP port embedded in that address match the IPv4 source address and UDP source port, the packet SHOULD be accepted. 6) If the IPv6 source address is not a Teredo IPv6 address, and if the IPv6 destination address is a Teredo address allocated Huitema [Page 28] INTERNET DRAFT Teredo June 9, 2004 through this server, the packet SHOULD be accepted. 7) In all other cases, the packet MUST be silently discarded. The Teredo server will then check the IPv6 destination address of the encapsulated IPv6packet.packet: If the IPv6 destination address is the link-local scope all routers multicast address (FF02::2), or the link-local address of the server, the Teredo server processes the packet; it may have to process Router Solicitation messages and ICMPv6 Echo Request messages. If the destination IPv6 address is not a global scope IPv6 address, the packet MUST NOT be forwarded. If the destination address is not a Teredo IPv6address,address the packet should be relayed to the IPv6 Internet using regular IPv6 routing. If the IPv6 destination address is a valid Teredo IPv6address,address as defined in 2.13, the Teredo Server MUST check that the IPv4 address derived from this IPv6 address is in the format of a global unicast address; if this is not the case, the packet MUST be silently discarded. If the address is valid, the Teredo server encapsulates the IPv6 packet in a new UDP datagram, in which the following parameters are set: - The destination IPv4 address is derived from the IPv6 destination. - The source IPv4 address is theserver'sTeredo server IPv4 address. - The destination UDP port is derived from the IPv6 destination. - The source UDP port is set to the Teredo UDP Port. If the destination IPv6 address is a Teredo client whose address is serviced by this specific server, the server should insert an origin indication in the first bytes of the UDP payload, as specified in section 5.1.1.Huitema [Page 25] INTERNET DRAFT(To verify that the client is served by this server, the server compares bits 32-63 of the client's TeredoFebruary 5, 2004IPv6 address to the server's IPv4 address.) 5.3.2 Processing of router solicitations When the Teredo server receives a Router Solicitation message (RS, [RFC2641]), it retains the IPv4 address and UDP port from which the solicitation was received; these become the Teredo mapped address and Teredo mapped port of the client. The router uses these values to compose the origin indication encapsulation that will be sent with the response to the solicitation. Huitema [Page 29] INTERNET DRAFT Teredo June 9, 2004 The Teredo server responds to the router solicitation by sending a Router Advertisement message [RFC2641]. The router advertisement MUST advertise the Teredo IPv6 prefix composed from the service prefix and the server's IPv4 address. The IPv6 source address should be set to a Teredo link-local server address associated to the localinterface.interface; this address is derived from the IPv4 address of the server and from the Teredo port, as specified in section 4; the C bit is set to 1. The IPv6 destination address is set to the IPv6 source address of the RS. The Router Advertisement message must be sent over UDP to the Teredo mapped address and Teredo mapped port of the client; the IPv4 source address and UDP source port should be set to the server's IPv4 address and Teredo Port. If the cone bit of the client's IPv6 address is set to 1, the RA must be sent from a different IPv4 source address than the server address over which the RS was received; if the cone bit is set to zero, the response must be sent back from the same address. Before sending the packet, the Teredo server MUST check that the IPv4 destination address is in the format of a global unicast address; if this is not the case, the packet MUST be silently discarded. If secure qualification is required, the server must insert a valid authentication parameter in the UDP packet carrying the router advertisement. The client identifier and the nonce value used in the authentication parameter must be the same identifier as received in the router solicitation; the confirmation byte should be set to zero if the client identifier is still valid, and a non-null value otherwise; the authentication value should be computed using the secret that corresponds to the client identifier. 5.4 Teredo Relay specification Teredo relays are IPv6 routers that advertisereachability ofreachability of the Teredo service IPv6 prefix through the IPv6 routing protocols. (A minimal Teredo relay may serve just a local host, and would not advertise theTeredo service IPv6prefixthrough the IPv6 routing protocols.beyond this host.) Teredo relays will receive IPv6 packets bound to Teredo clients. Teredo relays should be able to receive packets sent over IPv4 and UDP by Teredo clients; they may apply filtering rules, e.g. only accept packets from Teredo clients if they have previously sent traffic to these Teredo clients. The receiving and sending rules used by Teredo relays are very similar to those of Teredo clients. Teredo relays must use a Teredo service port to transmit packets to Teredo clients; they must maintain a "list of peers", identical to the list of peersHuitema [Page 26] INTERNET DRAFT Teredo February 5, 2004maintained by Teredo clients.However, Teredo relays do not have to perform the qualification procedure.5.4.1 Transmission by relays to Teredo clients Huitema [Page 30] INTERNET DRAFT Teredo June 9, 2004 When a Teredo relay has to transmit a packet to a Teredo client, it examines thedestination IPv6 address. By definition, the Teredo relays will only send over UDP IPv6 packets whose IPv6 destination address is a valid Teredo IPv6 address. Before processing these packets, the Teredo Server MUST check that the IPv4 destination address embedded in the Teredo IPv6 address is in the format of a global unicast address; if this is not the case, the packet MUST be silently discarded. The relay then checks if there is an entry for this IPv6 address in the list of recent Teredo peers, and if the entry is still valid. The relay then performs the following: 1) If there is an entry for that IPv6 address in the list of peers, and if the status of the entry is set to "trusted", the IPv6 packet should be sent over UDP to the mapped IPv4 address and mapped UDP port of the entry. The client updates the date of last transmission in the peer entry. 2) If the destination is a Teredo IPv6 address in which the cone bit is set to 1, the packet is sent over UDP to the mapped IPv4 address and mapped UDP port extracted from that IPv6 address. 3) If the destination is a Teredo IPv6 address in which the cone bit is set to 0,destination IPv6 address. By definition, thepacket is queued. TheTeredorelay creates a bubblerelays will only send over UDP IPv6 packets whosesourceIPv6 destination address isset toalocalvalid Teredo IPv6address, and whoseaddress. Before processing these packets, the Teredo Server MUST check that the IPv4 destination addressis set toembedded in the Teredo IPv6 addressof the packet's destination. The bubbleissent to the non-null server address corresponding toin theTeredo destination. The packet will be de-queued and forwarded whenformat of abubble or another packet will be received from this IPv6global unicast address; ifno such packetthis isreceived before a time-out of 2 seconds, the Teredo relay may repeatnot thebubble, up to three times. In cases 2 and 3,case, theTeredopacket MUST be silently discarded. The relayshould create a peerthen checks if there is an entry forthethis IPv6address; the entry status is marked as trusted in case 2 (cone NAT), not trustedaddress incase 3. In case 3, if the Teredo relay happens to be located behind a non-cone NAT, it should also send a bubble directly tothemapped IPv4 address and mapped port numberlist oftherecent Teredodestination; this will "open the path" for the return bubble frompeers, and if theTeredo client. 5.4.2 Reception from Teredo clientsentry is still valid. TheTeredorelaymay receive packets from Teredo clients; the packets should normally only be sent by clients to whichthen performs therelay previously transmitted packets, i.e. clients whose IPv6 addressfollowing: 1) If there isHuitema [Page 27] INTERNET DRAFT Teredo February 5, 2004 presentan entry for that IPv6 address in the list ofpeers. Relays, like clients, usepeers, and if the status of the entry is set to "trusted", the IPv6 packetreception procedureshould be sent over UDP tomaintainthedatemapped IPv4 address andtimemapped UDP port of thelast interaction with the Teredo server, andentry. The client updates the"listdate ofrecent peers." When a UDP packet is received overlast transmission in theTeredo service port,peer entry. 2) If theTeredo relay checks that it containsdestination is avalidTeredo IPv6packet as specifiedaddress in[RFC2460]. If this is not the case,which thepacketcone bit issilently discarded. Then, the Teredo relay examines whetherset to 1, theIPv6 source addresspacket isa valid Teredo address, and ifsent over UDP to the mapped IPv4 address and mapped UDP portmatchextracted from that IPv6 address. 3) If theIPv4 sourcedestination is a Teredo IPv6 addressand port number fromin which thepacket is received. If thiscone bit isnot the case,set to 0, the packet issilently discarded.queued. The Teredo relaythen examines whether therecreates a bubble whose source address isan entry for theset to a local IPv6sourceaddress, and whose destination addressinis set to thelistTeredo IPv6 address ofrecent peers. If thisthe packet's destination. The bubble isnotsent to thecase,non-null server address corresponding to the Teredo destination. The packetmaywill besilently discarded. Ifde-queued and forwarded when a bubble or another packet will be received from this IPv6 address; if no such packet isthe case, the entry status is set to "trusted"; the relay updates the "date and timereceived before a time-out of 2 seconds, thelast interaction" toTeredo relay may repeat thecurrent datebubble, up to three times. In cases 2 andtime. Finally,3, the Teredo relayexaminesshould create a peer entry for thedestinationIPv6address. Ifaddress; thedestinationentry status is marked as trusted in case 2 (cone NAT), not trusted in case 3. In case 3, if the"all nodes multicast address", the packet should be processed locally. If the destination belongsTeredo relay happens to be located behind arange of IPv6 addresses served by the relay,non-cone NAT, it should also send a bubble directly to thepacket SHOULD be accepted,mapped IPv4 address andforwarded tomapped port number of thedestination. InTeredo destination; this will "open theother cases,path" for the return bubble from thepacket SHOULD be silently discarded. 5.4.3 Difference betweenTeredoRelays andclient. 5.4.2 Reception from TeredoServers Becauseclients The Teredoservers canrelayTeredomay receive packetsover IPv6, all Teredo servers must be capable of behaving as Teredo relays. There is however no requirement that Teredo relays behave asfrom Teredoservers. The dual-role of server and relays implies an additional complexity for the programming of servers:clients; theprocessing of incomingpackets should normally only bea combination of the server processing rules defined in 5.3.1, and the relay processing rules defined in 5.4.2. 5.5 Implementation of automatic sunset Teredo is designed as an interim transition mechanism, and it is important that it should not be used any longer than necessary. The "sunset" procedure will be implementedsent byTeredo clients, servers and relays, as specified in this section. The Teredo-capable nodes MUST NOT behave as Teredoclientsif they already have IPv6 connectivity through any other means, such as nativeto which the relay previously transmitted packets, i.e. clients whose IPv6connectivity; in particular, nodes that have a global IPv4addressSHOULD obtain connectivity throughis present in the6to4 service rather than throughlist of peers. Relays, like clients, use the packet reception procedure to maintain the date and time of the last interaction with the Teredoservice. The classic reason why aserver, and the "list of recent peers." Huitema [Page28]31] INTERNET DRAFT TeredoFebruary 5,June 9, 2004node that does not need connectivity would still enableWhen a UDP packet is received over the Teredo serviceis to guarantee good performance when interacting withport, the Teredoclients; however, a Teredo-capable node that has IPv4 connectivity andrelay checks thathas obtainedit contains a valid IPv6connectivity outsidepacket as specified in [RFC2460]. If this is not the case, the packet is silently discarded. Then, the Teredoservice MAY decide to behave asrelay examines whether the IPv6 source address is a valid Teredorelay,address, andstill obtain good performance when interacting with Teredo clients. The Teredo servers are expected to participate in the sunset procedure by announcing a date at which they will stop providingif theservice. This date depends onmapped IPv4 address and mapped port match theavailability of alternative solutions to their clients, such as "dual-mode" gateways that behave simultaneously asIPv4NATssource address andIPv6 routers. Most Teredo servers will not be expected to operate more than a few years, perhaps until at most 2006. Teredo relays are expected to haveport number from which the packet is received. If this is not thesame life span ascase, the packet is silently discarded. The Teredoservers. 6 Userelay then examines whether there is an entry for the IPv6 source address in the list ofTeredo to implement a tunnel service Itrecent peers. If this is not the case, the packet may bedesirable in some casessilently discarded. If this is the case, the entry status is set todeploy stateful tunnel servers instead"trusted"; the relay updates the "date and time of thestateless Teredo servers. Tunnels servers generally require more resources, but an advantage is that they can potentially providelast interaction" to theusers with "permanent"current date and time. Finally, the relay examines the destination IPv6addresses. It is possibleaddress. If the destination belongs todesignatunnel server protocol that is compatible with Teredo, inrange of IPv6 addresses served by thesense thatrelay, thesame client couldpacket SHOULD beused either inaccepted and forwarded to theTeredo service or with a tunnel service.destination. Infact, this can be done by configuringtheclient with: - The IPv4 address of aother cases, the packet SHOULD be silently discarded. 5.4.3 Difference between Teredoserver that acts as a tunnel broker - A client identifier - A shared secret with that server. TheRelays and Teredoclient will use the secure qualification procedure, as specified in section 5.2.2. Instead of returning aServers Because Teredoprefix in the router advertisement, the server will return a globally routable IPv6 prefix; this prefix mayservers can relay Teredo packets over IPv6, all Teredo servers must bepermanently assigned to the client, which would provide the client with a stable address.capable of behaving as Teredo relays. There is however no requirement that Teredo relays behave as Teredo servers. The dual-role of serverwill have to keep state, i.e. memorize the association between the prefix assigned to the clientand relays implies an additional complexity for themapped IPv4 address and mapped UDP portprogramming of servers: theclient. The Teredo server will advertise reachabilityprocessing of incoming packets should be a combination of theclient prefix toserver processing rules defined in 5.3.1, and theIPv6 Internet. Any packet bound torelay processing rules defined in 5.4.2. (Section 5.3 only specifies the rules implemented by a pure server, not a combination relay+server.) 5.5 Implementation of automatic sunset Teredo is designed as an interim transition mechanism, and it is important thatprefixit should not be used any longer than necessary. The "sunset" procedure will betransmitted to the mapped IPv4 addressimplemented by Teredo clients, servers andmapped UDP port of the client.relays, as specified in this section. The Teredo-capable nodes MUST NOT behave as Teredoclient, when it receives the prefix, will noticeclients if they already have IPv6 connectivity through any other means, such as native IPv6 connectivity; in particular, nodes thatthis prefix ishave a globalIPv6 prefix, not inIPv4 address SHOULD obtain connectivity through the 6to4 service rather than through theform of aTeredoprefix.service. Theclient will at that point recognizeclassic reason why a node thatit should operate in tunnel mode. A clientdoes not need connectivity would still enable the Teredo service is to guarantee good performance when interacting with Teredo clients; however, a Teredo-capable node thatoperates in tunnel mode willhas IPv4 Huitema [Page29]32] INTERNET DRAFT TeredoFebruary 5,June 9, 2004execute a much simpler transmission procedure: it will forward any packet sent toconnectivity and that has obtained IPv6 connectivity outside the Teredointerfaceservice MAY decide tothe IPv4 addressbehave as a Teredo relay, and still obtain good performance when interacting with TeredoUDP port of the server.clients. The Teredoclient will haveservers are expected toperformparticipate in themaintenancesunset proceduredescribed in section 5.2.5. The serverby announcing a date at which they willreceivestop providing therouter solicitation, and may notice a possible change of mapped IPv4 address and mapped UDP port that could result fromservice. This date depends on thereconfigurationavailability ofthe mappings inside the NAT. The server should continue advertising the same IPv6 prefixalternative solutions tothe client, and should update the mappedtheir clients, such as "dual-mode" gateways that behave simultaneously as IPv4addressNATs andmapped UDP port associated to this prefix, if necessary. 7 Security Considerations The main objective ofIPv6 routers. Most Teredoisservers will not be expected toprovide nodes located behind a NAT withoperate more than aglobally routable IPv6 address. This enables such nodesfew years, perhaps until at most 2006. Teredo relays are expected touse IP security services such as IKE, AH or ESP. As such, we can argue that the service has a positive effect on network security. However, the security analysis must also envisagehave thenegative effectssame life span as Teredo servers. 6 Use oftheTeredoservices, which we can group in four categories: security risks of directly connectingto implement anodetunnel service It may be desirable in some cases tothe IPv6 Internet, spoofingdeploy stateful tunnel servers instead of the stateless Teredo servers. Tunnel servers generally require more resources, but an advantage is that they can potentially provide the users with "permanent" IPv6 addresses. It is possible toenabledesign aman-in-the-middle attack, potential attacks aimed at denyingtunnel server protocol that is compatible with Teredo, in the sense that the same client could be used either in the Teredo servicetoor with aTeredo client, and denial of service attacks against non-Teredo participating nodes that wouldtunnel service. In fact, this can beenableddone by configuring the client with: - The IPv4 address of a Teredoservice. Inserver that acts as a tunnel broker - A client identifier - A shared secret with that server. The Teredo client will use thefollowing, we reviewsecure qualification procedure, as specified indetail these four types of issues, and we present mitigating strategies for eachsection 5.2.2. Instead ofthem. 7.1 Openingreturning aholeTeredo prefix in theNAT The very purpose ofrouter advertisement, theTeredo service is to makeserver will return amachine reachable through IPv6. By definition,globally routable IPv6 prefix; this prefix may be permanently assigned to themachine usingclient, which would provide theserviceclient with a stable address. The server willgive up whatever "firewall" service was available inhave to keep state, i.e. memorize the association between the prefix assigned to the client and the mapped IPv4 address and mapped UDP port of theNAT box; all services declared locallyclient. The Teredo server willbecome potential targetadvertise reachability ofattacks fromtheentireclient prefix to the IPv6 Internet.This may sound scary, but there are three mitigating factors. The first mitigating factor is the possibility to restrict some servicesAny packet bound toonly accept traffic from one of the limited address scopes defined in IPv6, e.g. link-local or site-local. There is no support for such scopes in Teredo, which impliesthatlimited-scope services will not be accessed through Teredo, andprefix will berestrictedtransmitted towhatever other IPv6 connectivity may be available, e.g. direct traffic with neighbors onthelocal link, behindmapped IPv4 address and mapped UDP port of theNAT.client. Thesecond mitigating factorTeredo client, when it receives the prefix, will notice that this prefix is a global IPv6 prefix, not in thepossible useform of a"local firewall" solution, i.e. a piece of softwareTeredo prefix. The client will at thatperforms locally the kind of inspection and filteringpoint recognize thatis otherwise performedit should operate in tunnel mode. A client that operates in tunnel mode will execute aperimeter firewall. Using such software is recommended.much simpler transmission procedure: it will forward any packet sent to the Teredo interface to the IPv4 address and Teredo UDP port of the server. Huitema [Page30]33] INTERNET DRAFT TeredoFebruary 5,June 9, 2004 Thethird mitigating factor, already noted, isTeredo client will have to perform theavailability of end-to-end connectivity, which allows for deployment of IP security services such as IKE, AH or ESP. Using these servicesmaintenance procedure described inconjunction with Teredo is a good policy, as itsection 5.2.5. The server willprotectreceive theclient fromrouter solicitation, and may notice a possibleattacks in intermediate servers such aschange of mapped IPv4 address and mapped UDP port that could result from theNAT,reconfiguration of theTeredo server, ormappings inside theTeredo relay. 7.2 UsingNAT. The server should continue advertising theTeredo service for a man-in-the-middle attacksame IPv6 prefix to the client, and should update the mapped IPv4 address and mapped UDP port associated to this prefix, if necessary. 7 Security Considerations Thegoalmain objective oftheTeredoserviceis to providehostsnodes located behind a NAT with a globallyreachableroutable IPv6 address.There is a possible class of attacks against this service in which an attacker somehow intercepts the router solicitation, responds with a spoofed router advertisement, and provides a Teredo client with an incorrect address. The attacker may have one of two objectives: it may try to deny service to the Teredo client by providing it with an address that is in fact unreachable, or it may try to insert itself as a relay for all client communications, effectively enabling a variety of "man-in-the-middle" attack. The secure qualification procedure described in section 5.2.2This enablesa good protection against attacks in which a third party triessuch nodes tospoof the server. To defeat this protection,use IP security services such as IKE, AH or ESP. As such, we can argue that theattacker could try to obtainservice has acopy ofpositive effect on network security. However, thesecret shared between client and server. The most likely way to obtainsecurity analysis must also envisage the negative effects of theshared secret is to listenTeredo services, which we can group in four categories: security risks of directly connecting a node to thetraffic and mount an offline dictionary attack;IPv6 Internet, spoofing of Teredo servers toprotect against thisenable a man-in-the-middle attack, potential attacks aimed at denying thesecret shared between clientTeredo service to a Teredo client, andserver shoulddenial of service attacks against non-Teredo participating nodes that would beprovisionedenabled byan automatic procedurethe Teredo service. In the following, we review in detail these four types of issues, andcontain sufficient entropy. Another way to defeatwe present mitigating strategies for each of them. 7.1 Opening a hole in theprotection afforded byNAT The very purpose of thesignature procedureTeredo service is tomountmake acomplex attack, as follows: 1) Client prepares router solicitation, including authentication header. 2) Attacker interceptsmachine reachable through IPv6. By definition, thesolicitation, and somehow manages to prevent it from reachingmachine using theserver, for example by mounting a short duration DoS attack againstservice will give up whatever "firewall" service was available in theserver. 3) Attacker replacesNAT box. The services that listen to thesource IPv4Teredo IPv6 addressand source UDP portwill become potential target of attacks from therequest by one of its own addresses and port,entire IPv6 Internet. This may sound scary, but there are three mitigating factors. The first mitigating factor is the possibility to restrict some services to only accept traffic from local neighbors, e.g. using link local addresses. Teredo does not support communication using link local addresses. This implies that link-local services will not be accessed through Teredo, andforwards the modified requestwill be restricted to whatever other IPv6 connectivity may be available, e.g. direct traffic with neighbors on theserver. 4) Server dutifully notes the IPv4 address from whichlocal link, behind thepacketNAT. The second mitigating factor isreceived, verifies thattheAuthentication encapsulation is correct, preparespossible use of arouter advertisement, signs it, and sends it back to the incoming address,"local firewall" solution, i.e.the attacker. 5) Attacker receives the advertisement, takes notea piece of software that performs locally themapping, replaces the IPv4 addresskind of inspection andUDP port by the original valuesfiltering that is otherwise performed in a perimeter firewall. Using such software is recommended. The third mitigating factor, already noted, is theintercepted message, and sends the response to the client.availability of end-to-end connectivity, which allows for deployment of IP security services such as IKE, AH or ESP. Using these services in conjunction Huitema [Page31]34] INTERNET DRAFT TeredoFebruary 5,June 9, 20046) Client receives the advertisement, notes that the authentication header is present and is correct, and uses the proposed prefix and the mapped addresses in the origin indication encapsulation. The root cause of the problemwith Teredo isthat the NAT is, in itself,aman- in-the-middle attack. The Authentication encapsulation covers the encapsulated IPv6 packet, but does not cover the encapsulating IPv4 header and UDP header. It is very hard to devise an effective signature scheme, sincegood policy, as it will protect theattacker does not do anything else than whatclient from possible attacks in intermediate servers such as theNAT legally does! There areNAT, the Teredo server, or the Teredo relay. (These services can howeverseveral mitigating factors that lead us to avoid worrying too much about this attack. In practice,only be used if thegain fromparties in theattackcommunication can negotiate a key, which requires agreeing on some credentials; this is known toeither denybe a hard problem.) 7.2 Using the Teredo servicetofor a man-in-the-middle attack The goal of theclient, or obtainTeredo service is to provide hosts located behind a"man-in- the-middle" position; however,NAT with a globally reachable IPv6 address. There is a possible class of attacks against this service inorder to mount the attack, thewhich an attackermust be able to suppress traffic originating fromsomehow intercepts theclient, i.e.router solicitation, responds with a spoofed router advertisement, and provides a Teredo client with an incorrect address. The attacker may havedenialone of two objectives: it may try to deny servicecapability; the attacker must also be abletoobservethetraffic exchanged betweenTeredo clientand inject its own trafficby providing it with an address that is in fact unreachable, or it may try to insert itself as a relay for all client communications, effectively enabling a variety of "man-in-the-middle" attack. The simple nonce verification procedure described in section 5.2.2 provides a first level of protection against attacks in which a third party tries to spoof themix, i.e. have man-in-the-middle capacity.server. Insummary,practice, theattacknonce procedure can only be defeated if the attacker isvery hard to mount,"on path". If client and server share a secret, thegain forsecure qualification procedure described in section 5.2.2 provides further protection. To defeat this protection, the attackeris minimal. 7.2.1 End-to-end security The most effective line of defense of a Teredo client is probably not tocould try tosecure the Teredo service itself: even ifobtain a copy of themapping can be securely obtained,secret shared between client and server. The most likely way to obtain theattacker would still be ableshared secret is to listen to the traffic andsend spoofed packets. Rather,mount an offline dictionary attack; to protect against this attack, theTeredosecret shared between client and server shouldrealize that, because it is located behind a NAT, it is in a situation of vulnerability; it should systematically trycontain sufficient entropy. (This probably requires some automated procedure for provisioning the shared secret.) If the shared secret contains sufficient entropy, the attacker would have toencrypt its IPv6 traffic, using IPSEC. Even ifdefeat theIPv4 and UDP headers are vulnerable,one way function used to compute theuse of IPSEC will effectively prevent spoofingauthentication value. This specification suggests a default algorithm combining HMAC andlistening ofMD5. If theIPv6 packetsprotection afforded bythird parties. By providing each client with a global IPv6 address, Teredo enables the use of IPSECMD5 was not deemed sufficient, clients andultimately enhances the security of these clients. 7.3 Denial of the Teredo service Our analysis outlines five waysservers can be agree toattackuse a different algorithm, e.g. SHA1. Another way to defeat theTeredo service. There are counter-measures for each of these attacks. 7.3.1 Denial of serviceprotection afforded bya rogue relay An attack can be mounted ontheIPv6 side ofsignature procedure is to mount a complex attack, as follows: 1) Client prepares router solicitation, including authentication encapsulation. 2) Attacker intercepts theservice by setting up a rogue relay,solicitation, andletting that relay advertise a routesomehow manages to prevent it from reaching theTeredo IPv6 prefix. This is anserver, for example by mounting a short duration DoS attack againstIPv6 routing, which can also be mitigated bythesame kind of procedures used to eliminate spurious route advertisements. Dual stack nodes that implement a "host local" Teredo relays are impervious to this attack.server. Huitema [Page32]35] INTERNET DRAFT TeredoFebruary 5,June 9, 20048.3.1 Denial3) Attacker replaces the source IPv4 address and source UDP port ofservice by server spoofing In section 8.2, we discussedtheuserequest by one ofspoofed router advertisementsits own addresses and port, and forwards the modified request toinsert an attacker inthemiddle ofserver. 4) Server dutifully notes the IPv4 address from which the packet is received, verifies that the Authentication encapsulation is correct, prepares aTeredo conversation. The spoofedrouteradvertisements can also be usedadvertisement, signs it, and sends it back toprovision a client with an incorrectthe incoming address,pointing to either a non existing IPv4 address or toi.e. the attacker. 5) Attacker receives the advertisement, takes note of the mapping, replaces the IPv4 addressof a third party. The Teredo client will detectand UDP port by theattack when it failsoriginal values in the intercepted message, and sends the response toreceive traffic throughthenewly acquired IPv6 address. The attack can be mitigated by usingclient. 6) Client receives the advertisement, notes that the authentication header is present and is correct, and uses the proposed prefix and theauthenticationmapped addresses in the origin indication encapsulation.7.3.2 DenialThe root cause ofservice by exceedingthenumber of peers A Teredo client managesproblem is that the NAT is, in itself, acache of recently-used peers, which makes it stateful.man- in-the-middle attack. The Authentication encapsulation covers the encapsulated IPv6 packet, but does not cover the encapsulating IPv4 header and UDP header. It ispossiblevery hard tomountdevise anattack againsteffective signature scheme, since theclient by provoking it to respond to packetsattacker does not do anything else than what the NAT legally does! There are however several mitigating factors thatappearlead us tocome from a large number of Teredo peers, thus trashing the cache and effectively denyingavoid worrying too much about this attack. In practice, theuse of direct communication between peers. The effect will only last as long asgain from the attack issustained. 7.3.3 Attacks against the local discovery procedure There is a possible denial of service attack against the local peer discovery procedure, if attackers can manage to send spoofed local discovery bubblestoa Teredo client. The checks described in section 5.2.8 mitigate this attack. Clients who are more interested in security than in performance could decideeither deny service todisablethelocal discovery procedure; however, if local discovery is disabled, traffic between local nodes will end up being relayed throughclient, or obtain aserver external"man-in- the-middle" position; however, in order to mount thelocal network, which has questionable security implications. 7.3.4 Attackingattack, theTeredo servers and relays It is possibleattacker must be able tomount a brute forcesuppress traffic originating from the client, i.e. have denial of serviceattack againstcapability; theTeredo servers by sending them a very large number of packets. This attack will have toattacker must also be"brute force", sinceable to observe theservers are stateless,traffic exchanged between client andcan be designed to process allinject its own traffic in the mix, i.e. have man-in-the-middle capacity. In summary, thepackets that are sent on their access line. The brute forceattackagainstis very hard to mount, and the gain for the attacker is minimal. 7.2.1 End-to-end security The most effective line of defense of a Teredoserversclient ismitigated if clients are readyprobably not to"failover"try toanother server. Bringing downsecure theservers will however forceTeredo service itself: even if theclients that change serversmapping can be securely obtained, the attacker would still be able torenumber theirlisten to the traffic and send spoofed packets. Rather, the Teredoaddress. Itclient should realize that, because it isalso possible to mount a brute force attack againstlocated behind aTeredo relay. This attackNAT, it ismitigatedin a situation of vulnerability; it should systematically try to encrypt its IPv6 traffic, using IPSEC. Even if therelay under attack stops announcingIPv4 and UDP headers are vulnerable, thereachabilityuse of IPSEC will effectively prevent spoofing and listening ofthe Teredo service prefix tothe IPv6network: the traffic will be picked uppackets by third parties. By providing each client with a global IPv6 address, Teredo enables thenext relay. 7.4use of IPSEC and ultimately enhances the security of these clients. 7.3 Denial of the Teredo serviceagainst non-Teredo nodesOur analysis outlines five ways to attack the Teredo service. There Huitema [Page33]36] INTERNET DRAFT TeredoFebruary 5,June 9, 2004There isare counter-measures for each of these attacks. 7.3.1 Denial of service by awidely expressed concern that transition mechanisms such as Teredorogue relay An attack can beused to mount denialmounted on the IPv6 side of the serviceattacks,byinjecting traffic at locations where it is not expected. These attacks fall in three categories: using the Teredo servers assetting up areflector inrogue relay, and letting that relay advertise adenial of service attack, usingroute to the Teredoserver to carry a denial of serviceIPv6 prefix. This is an attack against IPv6nodes, and usingrouting, which can also be mitigated by the same kind of procedures used to eliminate spurious route advertisements. Dual stack nodes that implement a "host local" Teredo relays are impervious tocarry a denialthis attack. 8.3.1 Denial of serviceattack against IPv4 nodes. The analysis of these attacks follows. A common mitigating factor in all cases is the "regularity" of the Teredo traffic, which contains highly specific patterns such as the Teredo UDP port, or the Teredo IPv6 prefix.by server spoofing Incase of attacks, these patterns can be used to quickly install filters and removesection 7.2, we discussed theoffending traffic. 7.4.1 Laundering DOS attacks from IPv4 to IPv4 An attacker canusethe Teredo servers as reflectors in a denialofservice attack aimed atspoofed router advertisements to insert anIPv4 target. Theattackercan do thisinonethe middle oftwo ways.a Teredo conversation. Thefirst way isspoofed router advertisements can also be used toconstructprovision aRouter Solicitation message and post itclient with an incorrect address, pointing to either aTeredo server, using asnon-existing IPv4sourceaddress or to thespoofedIPv4 address ofthe target; the Teredo server will then sendaRouter advertisement message to the target.third party. Thesecond way is to construct aTeredoIPv6 address using the Teredo prefix, the address of a selected server, the IPv4 of the target, and an arbitrary UDP port, and to then send packets bound to that address toclient will detect theselected Teredo server. Reflector attacks are discussed in [REFLECT], which outlines various mitigating techniques against such attacks. One of these mitigations isattack when it fails toobserve that 'thereceive trafficgenerated bythrough thereflectors [has] sufficient regularity and semantics that itnewly acquired IPv6 address. The attack can befiltered out near the victim withoutmitigated by using thefiltering itself constituting a denial-of-authentication encapsulation. 7.3.2 Denial of serviceto the victim ("collateral damage").' The traffic reflectedby exceeding the number of peers A Teredoservers meets this condition:client manages a cache of recently-used peers, which makes it stateful. It isclearly recognizable, since it originates frompossible to mount an attack against theTeredo UDP port;client by provoking itcan be filtered out safely if the target itself is notto respond to packets that appear to come from a large number of Teredouser. In addition,peers, thus trashing thepackets relayed by servers will carry an Origin indication encapsulation, which will help determiningcache and effectively denying thesourceuse of direct communication between peers. The effect will only last as long as theattack. 7.4.2 DOS attacks from IPv4 to IPv6 An attacker may useattack is sustained. 7.3.3 Attacks against theTeredo servers to launchlocal discovery procedure There is a possible denial of service attack againstan arbitrary IPv6 destination. The attacker will build an IPv6 packet bound forthetarget, and willlocal peer discovery procedure, if attackers can manage to sendthat packetspoofed local discovery bubbles tothe IPv4 address and UDP port ofa Teredoserver, to be relayed from there to the target over IPv6.client. Theaddresschecksspecifieddescribed in section5.3.1 provide some protection against5.2.8 mitigate thisattack, as they ensure that the IPv6 source address will be consistent with the IPv4 source address and UDP source port used byattack. Clients who are more interested in security than in performance could decide to disable theattacker:local discovery procedure; however, ifthe attacker cannot spoof the Huitema [Page 34] INTERNET DRAFT Teredo February 5, 2004 IPv4 source address, the targetlocal discovery is disabled, traffic between local nodes willbe ableend up being relayed through a server external todetermine the origin of the attack. The address checks ensure thattheIPv6 source address of packets forwarded by servers will start withlocal network, which has questionable security implications. 7.3.4 Attacking theIPv6Teredoprefix. Thisservers and relays It isa mitigating factor, as sites under attack could use thispossible tofilter out all packets sourced from that prefix during an attack. This will result inmount apartial lossbrute force denial ofservice, asservice attack against thetargetTeredo servers by sending them a very large number of packets. This attack willnothave to beable"brute force", since the servers are stateless, and can be designed tocommunicate with legitimate Teredo hostsprocess all the packets thatuseare sent on their access line. Huitema [Page 37] INTERNET DRAFT Teredo June 9, 2004 The brute force attack against thesame prefix; however,Teredo servers is mitigated if clients are ready to "failover" to another server. Bringing down thecommunication with other IPv6 hostsservers willremain unaffected, andhowever force thecommunication withclients that change servers to renumber their Teredohosts will be ableaddress. It is also possible toresume when themount a brute force attack against a Teredo relay. This attackhas ceased. The ICMP Traceback (ITRACE) working groupisconsidering systems for "tracing"mitigated if thesourcerelay under attack stops announcing the reachability ofDOS attacks. According totheproposal, when forwarding packets, routers can, with a low probability, generate a Traceback message that is sent alongTeredo service prefix to thedestination; with enough Traceback messages from enough routers along the path,IPv6 network: the trafficsource and path canwill bedetermined. This setpicked upassumes that the source and destination are both usingby thesame versionnext relay. An attack similar to 7.3.2 can be mounted against a relay. An IPv6 host can send IPv6 packets to a large number ofIP. In theTeredocase,destinations, forcing theICMP Traceback packets will be sentrelay totheestablish state for each of these destinations. Teredoserver, notrelays can obtain some protection by limiting thefinal destination. It is conceivable to "map"range of IPv6 clients that they serve, and by limiting theIPv4 tracebackamount of state used for "new" peers. 7.4 Denial of service against non-Teredo nodes There is a widely expressed concern that transition mechanisms such as Teredo can be used toan IPv6 traceback sentmount denial of service attacks, by injecting traffic at locations where it is not expected. These attacks fall in three categories: using the Teredoserver; the detailsservers as a reflector in a denial of service attack, using thesolution should be specified by the ITRACE working group. 7.4.3 DOS attacks from IPv6Teredo server toIPv4 An attacker withcarry a denial of service attack against IPv6connectivity may usenodes, and using the Teredo relays tolaunchcarry a denial of service attack againstan arbitraryIPv4destination.nodes. Theattacker will compose a Teredo IPv6 address using the Teredo prefix, a null server address,analysis of these attacks follows. A common mitigating factor in all cases is theIPv4 address"regularity" of thetarget, an arbitraryTeredo traffic, which contains highly specific patterns such as the Teredo UDP port,and an arbitrary node identifier. The attacker will send IPv6 packets to that address;or thepackets willTeredo IPv6 prefix. In case of attacks, these patterns can beroutedused tothe nearest Teredo relay,quickly install filters andforwardedremove the offending traffic. 7.4.1 Laundering DoS attacks fromthereIPv4 to IPv4 An attacker can use thetarget. The address checks specifiedTeredo servers as reflectors in5.4 are limited to verifying that packets are only relayed to a global IPv4 address. This rules outaclassdenial of service attack aimed at an IPv4 target. The attacker can do this inwhich the packets are boundone of two ways. The first way is to construct abroadcast or multicast address. It also rules out another class of attack in which the packets are bound forRouter Solicitation message and post it to aprivateTeredo server, using as IPv4 source addressthat would be reachable by the relay. The attack can be targeted at arbitrary UDP ports, such as for exampletheDNS portspoofed address of the target; the Teredo server will then send aserver.Router advertisement message to the target. TheUDP payload must be a well- formed IPv6 packet, andsecond way isthus unlikelytobe accepted by any well- written UDP service; in most case,construct a Teredo IPv6 address using theonly effectTeredo prefix, the address of a selected server, theattack will be to overloadIPv4 of thetarget with random traffic. A special case occurs iftarget, and an arbitrary UDP port, and to then send packets bound to that address to theattackselected Teredo server. Reflector attacks are discussed in [REFLECT], which outlines various mitigating techniques against such attacks. One of these mitigations isdirectedtoan echo service. The service will echoobserve that 'the traffic generated by thepackets. Sincereflectors [has] sufficient regularity and semantics that it can be filtered out near theechovictim without the filtering itself constituting a denial-of- serviceseesto the victim ("collateral damage").' The traffic reflected Huitema [Page35]38] INTERNET DRAFT TeredoFebruary 5,June 9, 2004request coming from the IPv4 address ofby therelay,Teredo servers meets this condition: it is clearly recognizable, since it originates from theecho replies willTeredo UDP port; it can besent back tofiltered out safely if thesame relay. According totarget itself is not a Teredo user. In addition, therules specified in 5.4, thesepackets relayed by servers will carry an Origin indication encapsulation, which willbe discarded byhelp determining the source of the attack. 7.4.2 DOS attacks from IPv4 to IPv6 An attacker may use the Teredorelay. This is notservers to launch avery efficientdenial of service attack againstthe Teredo relays - establishing a legitimate session withanactual Teredo host would create more traffic.arbitrary IPv6 destination. The attacker will build an IPv6packets sent topacket bound for thetarget containtarget, and will send that packet to theIPv6IPv4 addressused byand UDP port of a Teredo server, to be relayed from there to theattacker. If ingress filtering is usedtarget over IPv6. The address checks specified in section 5.3.1 provide some protection against this attack, as they ensure that the IPv6network, thissource address will behard to spoof. If ingress filtering is not used, the attacker can be traced ifconsistent with theIPv6 routers use a mechanism similar to ICMP Traceback. The ICMP messages will normally be collectedIPv4 source address and UDP source port used by thesame relays that forwardattacker: if thetraffic fromattacker cannot spoof theattacker;IPv4 source address, therelays can use these messagestarget will be able toidentifydetermine thesource of an ongoing attack. The detailsorigin ofthis solution should be specified bytheITRACE working group. 8 IAB considerationsattack. TheIAB has studied the problem of "Unilateral Self Address Fixing" (UNSAF), which is the general process by which a client attempts to determine itsaddressin another realm onchecks ensure that theother sideIPv6 source address ofa NAT through a collaborative protocol reflection mechanism [RFC3424].packets forwarded by servers will start with the IPv6 Teredo prefix. This isan example ofaprotocol that performsmitigating factor, as sites under attack could use thistype of function. The IAB has mandatedto filter out all packets sourced from thatany protocols developed for this purpose document a specific set of considerations.prefix during an attack. Thissection meets those requirements. 8.1 Problem Definition From [RFC3424], any UNSAF proposal must providewill result in aprecise definitionpartial loss ofa specific, limited-scope problem that is to be solved withservice, as theUNSAF proposal. A short term fix shouldtarget will not begeneralizedable tosolvecommunicate with legitimate Teredo hosts that use the same prefix; however, the communication with otherproblems; this is why "short term fixes usually aren't". The specific problems being solved byIPv6 hosts will remain unaffected, and the communication with Teredoishosts will be able to resume when theprovision ofattack has ceased. 7.4.3 DOS attacks from IPv6connectivity for a host that cannot obtainto IPv4 An attacker with IPv6 connectivityeither natively or by other means, such as 6to4. 8.2 Exit Strategy From [RFC3424], any UNSAF proposal must providemay use thedescriptionTeredo relays to launch a denial of service attack against anexit strategy/transition plan.arbitrary IPv4 destination. Thebetter short term fixes are the ones thatattacker willnaturally see less and less use as the appropriate technology is deployed.compose a Teredocomes with its own built in exit strategy: as soon asIPv6connectivity is obtained by other means,address using the Teredo prefix, a null server address, the IPv4 address of the target, an arbitrary UDP port, and an arbitrary node identifier. The attacker willceasesend IPv6 packets tobe used. In particular, we expectthat address; thenext generation of home routerspackets willprovide an IPv6 service in complementbe routed to thecurrent IPv4 NAT service, e.g. by relaying connectivity obtainednearest Teredo relay, and forwarded from there to theISP,target. The address checks specified in 5.4 are limited to verifying that packets are only relayed to a global IPv4 address. This rules out a class of attack in which the packets are bound to a broadcast or multicast address. It also rules out another class of attack in which the packets are bound for a private IPv4 address that would be reachable byusingthe relay. The attack can be targeted at arbitrary UDP ports, such as for example the DNS port of aconfigured or automatic tunnel service.server. The UDP payload must be a well- Huitema [Page36]39] INTERNET DRAFT TeredoFebruary 5,June 9, 2004The exit strategy is facilitated by the nature of Teredo, which provides an IP level solution.formed IPv6aware applications do not havepacket, and is thus unlikely to beupdated to use or not use Teredo. The absence of impact on the applications makes it easier to migrate out of Teredo: network connectivity suffices. 8.3 Brittleness Introducedaccepted byTeredo From [RFC3424],anyUNSAF proposal must provide a discussionwell- written UDP service; in most case, the only effect ofspecific issues that may render systems more "brittle". For example, approaches that involve using data at multiple network layers create more dependencies, increase debugging challenges, and make it harderthe attack will be totransition. Teredo introduces brittleness intooverload thesystem in several ways:target with random traffic. A special case occurs if thediscovery process assumes a certain classification of devices based on their treatmentattack is directed to an echo service. The service will echo the packets. Since the echo service sees the request coming from the IPv4 address ofUDP;themappings need torelay, the echo replies will becontinuously refreshed, whilesent back to the; and addressing structure may cause some hosts located beyond a common NATsame relay. According tobe unreachable from each other. (There are many similarities betweenthe rules specified in 5.4, thesepoints and those introducedpackets will be discarded bySTUN [RFC3489].)the Teredoassumesrelay. This is not acertain classification of devices based on their treatment of UDP, e.g. cone, protected cone and symmetric. There could be devices thatvery efficient attack against the Teredo relays - establishing a legitimate session with an actual Teredo host would create more traffic. The IPv6 packets sent to the target contain the IPv6 address used by the attacker. If ingress filtering is used in the IPv6 network, this address will be hard to spoof. If ingress filtering is notfit into one of these molds, and hence wouldused, the attacker can beimproperly classified by Teredo. The bindings allocated fromtraced if theNAT needIPv6 routers use a mechanism similar to ICMP Traceback. The ICMP messages will normally becontinuously refreshed. Sincecollected by thetimeouts for these bindings is very implementation specific,same relays that forward therefresh interval cannot easily be determined. Whentraffic from thebinding is not being actively used to receive traffic, but to wait for an incoming message,attacker; thebinding refresh will needlessly consume network bandwidth. Therelays can useofthese messages to identify theTeredo server as an additional network element introduces another pointsource ofpotential securityan ongoing attack.These attacks are largely preventedThe details of this solution should be specified by thesecurity measures provided by Teredo, but not entirely.ITRACE working group. 8 IAB considerations Theuse ofIAB has studied theTeredo server as an additional network element introduces another pointproblem offailure. If"Unilateral Self Address Fixing" (UNSAF), which is theclient cannot locategeneral process by which aTeredo server, or if the server should be unavailable due to failure, the Teredoclientwill not be ableattempts toobtain IPv6 connectivity. Teredo imposes some restrictionsdetermine its address in another realm on thenetwork topologies for proper operation. In particular, if the sameother side of a NATis on the path between two clients and thethrough a collaborative protocol reflection mechanism [RFC3424]. Teredoserver, these clients will only be able to interoperate if they are connectedis an example of a protocol that performs this type of function. The IAB has mandated that any protocols developed for this purpose document a specific set of considerations. This section meets those requirements. 8.1 Problem Definition From [RFC3424], any UNSAF proposal must provide a precise definition of a specific, limited-scope problem that is to be solved with thesame link, or if the common NATUNSAF proposal. A short term fix should not be generalized to solve other problems; this iscapable of "looping" packets sentwhy "short term fixes usually aren't". The specific problems being solved byone client to another. Huitema [Page 37] INTERNET DRAFTTeredoFebruary 5, 2004 8.4 Requirementsis the provision of IPv6 connectivity for aLong Term Solutionhost that cannot obtain IPv6 connectivity either natively or by other means, such as 6to4. 8.2 Exit Strategy From [RFC3424], any UNSAF proposal mustidentify requirements for longer term, sound technical solutions -- contribute toprovide theprocessdescription offinding the right longeran exit strategy/transition plan. The better short termsolution. Our experiencefixes are the ones that will naturally see less and less use as the appropriate technology is deployed. Huitema [Page 40] INTERNET DRAFT Teredo June 9, 2004 Teredo comes with its own built in exit strategy: as soon as IPv6 connectivity is obtained by other means, Teredohas ledwill cease to be used. In particular, we expect that thefollowing requirements for a long term solutionnext generation of home routers will provide an IPv6 service in complement to theNAT problem: the devices that implement thecurrent IPv4 NATservices should inservice, e.g. by relaying connectivity obtained from thefuture also become IPv6 routers. 9 IANA Considerations This memo documentsISP, or by using arequest to IANA to allocateconfigured or automatic tunnel service. As long as Teredo is used, there will be a need to support Teredo relays so that the remaining Teredo hosts can communicate with native IPv6service prefix, andhosts. As Teredo usage declines, the traffic load on the relays will decline. Over time, managers will observe a reduce traffic load on their relays and will turn them off, effectively increasing the pressure on the remaining TeredoIPv4 multicast address. 10 Copyrighthosts to upgrade to another form of connectivity. Thefollowing copyright noticeexit strategy iscopied from RFC 2026 [Bradner, 1996], Section 10.4, and describesfacilitated by theapplicable copyright for this document. Copyright (C) The Internet Society September 17, 2002. All Rights Reserved. This document and translationsnature ofit mayTeredo, which provides an IP level solution. IPv6 aware applications do not have to becopied and furnishedupdated toothers, and derivative works that comment onuse orotherwise explainnot use Teredo. The absence of impact on the applications makes itor assist in its implementationeasier to migrate out of Teredo: network connectivity suffices. 8.3 Brittleness Introduced by Teredo From [RFC3424], any UNSAF proposal must provide a discussion of specific issues that maybe prepared, copied, publishedrender systems more "brittle". For example, approaches that involve using data at multiple network layers create more dependencies, increase debugging challenges, anddistributed, in whole ormake it harder to transition. Teredo introduces brittleness into the system inpart, without restrictionseveral ways: the discovery process assumes a certain classification ofany kind, provided thatdevices based on their treatment of UDP; theabove copyright noticemappings need to be continuously refreshed; andthis paragraphaddressing structure may cause some hosts located beyond a common NAT to be unreachable from each other. (There areincludedmany similarities between these points and those introduced by STUN [RFC3489].) Teredo assumes a certain classification of devices based onall such copiestheir treatment of UDP, e.g. cone, protected cone andderivative works. However, this document itself maysymmetric. There could be devices that would not fit into one of these molds, and hence would bemodified in any way, such asimproperly classified byremovingTeredo. The bindings allocated from thecopyright notice or referencesNAT need to be continuously refreshed. Since theInternet Society or other Internet organizations, except as neededtimeouts for these bindings is very implementation specific, thepurpose of developing Internet standards in which caserefresh interval cannot easily be determined. When theproceduresbinding is not being actively used to receive traffic, but to wait forcopyrights defined inan incoming message, theInternet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual andbinding refresh willnot be revoked by the Internet Society or its successors or assignees. This document andneedlessly consume network bandwidth. The use of theinformation contained herein is provided onTeredo server as an"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS 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. 11 Intellectual Property The following notice is copied from RFC 2026 [Bradner, 1996],additional network element introduces another point of potential security attack. These Huitema [Page38]41] INTERNET DRAFT TeredoFebruary 5,June 9, 2004Section 10.4, and describes the position ofattacks are largely prevented by theIETF concerning intellectual property claims made against this document.security measures provided by Teredo, but not entirely. TheIETF takes no position regardinguse of thevalidity or scopeTeredo server as an additional network element introduces another point ofany intellectual property or other rights that might be claimed to pertain tofailure. If theimplementation or use other technology described in this documentclient cannot locate a Teredo server, or if theextent to which any license under such rights might or mightserver should be unavailable due to failure, the Teredo client will not beavailable; neither does it represent that it has made any effortable toidentify any such rights. Informationobtain IPv6 connectivity. Teredo imposes some restrictions on theIETF's procedures with respect to rights in standards-track and standards-related documentation can be found in BCP-11. Copies of claims of rights made availablenetwork topologies forpublicationproper operation. In particular, if the same NAT is on the path between two clients andany assurances of licenses tothe Teredo server, these clients will only bemade available,able to interoperate if they are connected to the same link, or if theresultcommon NAT is capable ofan attempt made"looping" packets sent by one client toobtainanother. 8.4 Requirements for ageneral license or permissionLong Term Solution From [RFC3424], any UNSAF proposal must identify requirements for longer term, sound technical solutions -- contribute to theuse of such proprietary rights by implementers or usersprocess ofthis specification can be obtained fromfinding theIETF Secretariat. The IETF invites any interested partyright longer term solution. Our experience with Teredo has led tobringthe following requirements for a long term solution toits attention any copyrights, patents or patent applications, or other proprietary rights which may cover technologythe NAT problem: the devices thatmay be required to practice this standard. Please addressimplement theinformation toIPv4 NAT services should in theIETF Executive Director. 12future also become IPv6 routers. 9 IANA Considerations This memo documents a request to IANA to allocate a Teredo IPv6 service prefix, and a Teredo IPv4 multicast address. 10 Acknowledgements Many of the ideas in this memo are the result of discussions between the author and Microsoft colleagues, notably Brian Zill, John Miller, Mohit Talwar, Joseph Davies and Rick Rashid. Several encapsulation details are inspired from earlier work by Keith Moore. The example in section 5.1 and a number of security precautions were suggested by Pekka Savola. The local discovery procedure was suggested by Richard Draves and Dave Thaler. The document was reviewed by members of the NGTRANS and V6OPS workinggroup;groups, including Brian Carpenter, Cyndi Jung, Keith Moore, Thomas Narten, Anssi Porttikivi, Pekka Savola,andEng SooGuan. 13Guan, and Eiffel Wu. 11 References Normative references [RFC768] J. Postel, "User Datagram Protocol", RFC 768, August 1980. [RFC791] J. Postel, "Internet Protocol", RFC 791, September 1981. Huitema [Page 42] INTERNET DRAFT Teredo June 9, 2004 [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, April 1992. [RFC1918] Y. Rekhter, B. Moskowitz, D. Karrenberg, G. J. de Groot, E. Lear, "Address Allocation for Private Internets", RFC 1918, February 1996. [RFC2119] S. Bradner, "Key words for use in RFCs to IndicateHuitema [Page 39] INTERNET DRAFT Teredo February 5, 2004Requirement Levels", RFC 2119, March 1997. [RFC2460] S. Deering, R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998. [RFC2461] T. Narten, E. Nordmark, W. Simpson, "Neighbor Discovery for IP Version 6 (IPv6)", RFC 2461, December 1998. [RFC2462] T. Narten, S. Thomson, "IPv6 Stateless Address Autoconfiguration", RFC 2462, December 1998. [RFC3056] B. Carpenter, K. Moore, "Connection of IPv6 Domains via IPv4 Clouds", RFC 3056, February 2001. [RFC3068] C. Huitema, "An Anycast Prefix for 6to4 Relay Routers", RFC 3068, June 2001. [RFC3424] Daigle, L., Editor, "IAB Considerations for Unilateral Self-Address Fixing (UNSAF) Across Network Address Translation", RFC 3424, November 2002.Informative references [RFC1750] D. Eastlake, S. Crocker, J. Schiller, "Randomness Recommendations for Security", RFC 1750, December 1994. [RFC3489] Rosenberg, J., Weinberger, J., Huitema, C., and R. Mahy. "STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)", RFC 3489, March 2003. [SYNCHRO] S. Floyd, V. Jacobson, "The synchronization of periodic routing messages", ACM SIGCOMM'93 Symposium, September 1993. [REFLECT] V. Paxson, "An analysis of using reflectors for distributed denial of service attacks." Computer Communication Review, ACM SIGCOMM, Volume 31, Number 3, July 2001, pp 38-47. 14 Authors' Addresses Christian Huitema Microsoft Corporation One Microsoft Way Redmond, WA 98052-6399 Email: huitema@microsoft.com Huitema [Page 40] INTERNET DRAFT Teredo February 5, 2004 Huitema [Page 41] INTERNET DRAFT Teredo February 5, 2004 Table of Contents: 1 Introduction .................................................... 1 2 Definitions ..................................................... 2 2.1 Teredo service ................................................ 2 2.2 Teredo Client ................................................. 2 2.3 Teredo Server ................................................. 2 2.4 Teredo Relay .................................................. 3 2.5 Teredo IPv6 service prefix .................................... 3 2.5.1 Global Teredo IPv6 service prefix ........................... 3 2.6 Teredo UDP port ............................................... 3 2.7 Teredo bubble ................................................. 3 2.8 Teredo service port ........................................... 3 2.9 Teredo server address ......................................... 3 2.10 Teredo mapped address and Teredo mapped port ................. 3 2.11 Teredo IPv6 client prefix .................................... 3 2.12 Teredo node identifier ....................................... 4 2.13 Teredo IPv6 address .......................................... 4 2.14 Teredo Refresh Interval ...................................... 4 2.15 Teredo secondary port ........................................ 4 2.16 Teredo IPv4 Discovery Address ................................ 4 3 Design goals, requirements,Informative references [RFC1750] D. Eastlake, S. Crocker, J. Schiller, "Randomness Recommendations for Security", RFC 1750, December 1994. [RFC3489] Rosenberg, J., Weinberger, J., Huitema, C., andmodel of operation .............. 4 3.1 Hypotheses about NAT behavior ................................. 4 3.1.1 Types of UDP mappings ....................................... 5 3.1.2 LifetimeR. Mahy. "STUN - Simple Traversal ofUDP mappings .................................... 5 3.2 IPv6 providerUser Datagram Protocol (UDP) Through Network Address Translators (NATs)", RFC 3489, March 2003. [SYNCHRO] S. Floyd, V. Jacobson, "The synchronization oflast resort .................................. 6 3.2.1 When to use Teredo? ......................................... 6 3.2.2 Autonomous deployment ....................................... 6 3.2.3 Minimal load on servers ..................................... 7 3.2.4 Automatic sunset ............................................ 7 3.3 Operational Requirements ...................................... 7 3.3.1 Robustness requirement ...................................... 7 3.3.2 Minimal support cost ........................................ 7 3.3.3 Protection against denialperiodic routing messages", ACM SIGCOMM'93 Symposium, September 1993. [REFLECT] V. Paxson, "An analysis ofservice attacks ................ 8 3.3.4 Protection againstusing reflectors for distributed denial of serviceattacks .... 8 3.3.5 Compatibility with ingress filtering ........................ 8 4 Teredo Addresses ................................................ 8 5 Specification of clients, servers and relays .................... 9 5.1 Message formats ............................................... 10 5.1.1 Teredo IPv6 packets encapsulation ........................... 10 5.1.2 Maximum Transmission Unit ................................... 12 5.2 Teredo Client specification ................................... 12 5.2.1 Qualification procedure ..................................... 13 5.2.2 Secure qualification ........................................ 16 5.2.3 Packet reception ............................................ 16 5.2.4 Packet transmission ......................................... 18 5.2.5 Maintenance ................................................. 19 5.2.6 Sending Teredo Bubbles ...................................... 20 5.2.7 Optional Refresh Interval Determination Procedure ........... 20 5.2.8 Optional local client discovery procedure ................... 21 5.2.9 Direct IPv6 connectivity test ............................... 23attacks." Computer Communication Review, ACM SIGCOMM, Volume 31, Number 3, July 2001, pp 38-47. 12 Authors' Addresses Christian Huitema Microsoft Corporation One Microsoft Way Redmond, WA 98052-6399 Huitema [Page42]43] INTERNET DRAFT TeredoFebruary 5,June 9, 20045.2.10 Working around symmetric NAT ............................... 23 5.3 Teredo Server specification ................................... 24 5.3.1 ProcessingEmail: huitema@microsoft.com 13 Intellectual Property Statement The IETF takes no position regarding the validity or scope ofTeredo IPv6 packets ........................... 24 5.3.2 Processingany Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use ofrouter solicitations .......................... 26 5.4 Teredo Relay specification .................................... 26 5.4.1 Transmission by relaysthe technology described in this document or the extent toTeredo clients .................... 27 5.4.2 Reception from Teredo clients ............................... 27 5.4.3 Difference between Teredo Relayswhich 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 andTeredo Servers ......... 28 5.5 Implementation of automatic sunset ............................ 28 6 UseBCP 79. Copies ofTeredoIPR disclosures made toimplement a tunnel service ..................... 29 7 Security Considerations ......................................... 30 7.1 Opening a hole in the NAT ..................................... 30 7.2 UsingtheTeredo service for a man-in-the-middle attack ....... 31 7.2.1 End-to-end security ......................................... 32 7.3 DenialIETF Secretariat and any assurances of licenses to be made available, or theTeredo service .................................. 32 7.3.1 Denialresult ofservice byan attempt made to obtain arogue relay .......................... 32 8.3.1 Denial of service by server spoofing ........................ 33 7.3.2 Denial of service by exceedinggeneral license or permission for thenumberuse ofpeers .......... 33 7.3.3 Attacks against the local discovery procedure ............... 33 7.3.4 Attacking the Teredo servers and relays ..................... 33 7.4 Denialsuch proprietary rights by implementers or users ofservice against non-Teredo nodes .................... 33 7.4.1 Laundering DOS attacksthis specification can be obtained fromIPv4the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party toIPv4 .................... 34 7.4.2 DOS attacks from IPv4bring toIPv6 ............................... 34 7.4.3 DOS attacks from IPv6its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required toIPv4 ............................... 35 8 IAB considerations .............................................. 36 8.1 Problem Definition ............................................ 36 8.2 Exit Strategy ................................................. 36 8.3 Brittleness Introduced by Teredo .............................. 37 8.4 Requirementsimplement this standard. Please address the information to the IETF at ietf- ipr@ietf.org. 14 Copyright The following copyright notice is copied from [RFC3667], Section 5.4. It describes the applicable copyright fora Long Term Solution ......................... 38 9 IANA Considerations ............................................. 38 10this document. Copyright...................................................... 38 11 Intellectual Property .......................................... 38 12 Acknowledgements ............................................... 39 13 References ..................................................... 39 14 Authors' Addresses ............................................. 40(C) The Internet Society (2004). 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 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 Huitema [Page43]44] ----