view Side-By-Side changes
SHIM6 WG E. Nordmark Internet-Draft Sun Microsystems Expires: March31,5, 2006 September27,2005 Level 3 multihoming shim protocoldraft-ietf-shim6-proto-00.txtdraft-ietf-shim6-proto-01.txt Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire on March31,5, 2006. Copyright Notice Copyright (C) The Internet Society (2005). Abstract The SHIM6 working group is exploring a layer 3 shim approach for providing locator agility below the transport protocols, so that multihoming can be provided for IPv6 with failover and load spreading properties, without assuming that a multihomed site will have a provider independent IPv6 address which is announced in the global IPv6 routing table. The hosts in a site which has multiple provider allocated IPv6 address prefixes, will use the shim6 protocol specified in this document to setup state with peer hosts, so that the state can later be used to failover to a different locator pair, Nordmark Expires March31,5, 2006 [Page 1] Internet-Draft Shim6 Protocol September 2005 should the original one stop working. This document picks a particular approach to such a protocol and tries to flush out a bunch of details, with the hope that the WG can better understand the details in this proposal as well as discovering and understanding alternative designs that might be better. Thus this proposal is my no means cast in stone as the direction; quite to the contrary it is a depth first exploration of the design space. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1Placement of the shimGoals . . . . . . . . . . . . . . . . . . .4 2. Terminology. . . . . . . 4 1.2 Non-Goals . . . . . . . . . . . . . . . . .5 2.1 Definitions. . . . . . . 5 1.3 Locators as Upper-layer Identifiers . . . . . . . . . . . 5 1.4 IP Multicast . . . . .5 2.2 Notational Conventions. . . . . . . . . . . . . . . . . . 63. Assumptions1.5 Renumbering Implications . . . . . . . . . . . . . . . . . 6 1.6 Placement of the shim . . . . . . .7 4. Protocol Overview. . . . . . . . . . . 7 2. Terminology . . . . . . . . . . . .8 4.1 Context Tags and Use of Flow Label. . . . . . . . . . . . 94.2 Protocol type overloading2.1 Definitions . . . . . . . . . . . . . . . .10 4.3 Securing shim6. . . . . . . 9 2.2 Notational Conventions . . . . . . . . . . . . . . .11 4.4 Overview of Shim Control Messages. . . 10 3. Assumptions . . . . . . . . .11 5. Message Formats. . . . . . . . . . . . . . . 11 4. Protocol Overview . . . . . . .14 5.1 Common Shim6 header. . . . . . . . . . . . . . 11 4.1 Context Tags . . . . .14 5.2 I1 Message Format. . . . . . . . . . . . . . . . . . 13 4.2 Securing shim6 . .15 5.3 R1 Message Format. . . . . . . . . . . . . . . . . . . .16 5.4 I2 Message Format14 4.3 Overview of Shim Control Messages . . . . . . . . . . . . 14 5. Message Formats . . . . . . . .17 5.5 R2 Message Format. . . . . . . . . . . . . . 15 5.1 Payload Message Format . . . . . .19 5.6 No Context Error Message Format. . . . . . . . . . . . 15 5.2 Common Shim6 Control header .20 5.7 Locator List Update Message Format. . . . . . . . . . . .21 5.8 Locator List Update Acknowledgement. . 16 5.3 I1 Message Format . . . .22 5.9 Rehome Request Message Format. . . . . . . . . . . . . .23 5.10 Rehome Acknowledgement. . 17 5.4 R1 Message Format . . . . . . . . .23 5.11 Reachability Probe Message Format. . . . . . . . . . .23 5.12 Reachability Probe Reply18 5.5 I2 Message Format . . . . . . . .24 5.13 Payload Message Format .. . . . . . . . . . . . 19 5.6 R2 Message Format . . . .25 5.14 Keepalive Message Format. . . . . . . . . . . . . . . .26 5.15 Locator Pair Test21 5.7 No Context Error Message Format . . . . . . . . . . . .27 5.16 Locator Pair Test Reply. 22 5.8 Update Request Message Format . . . . . . . . .28 5.17 Context Locator Pair Explore Message Format. . . . . 23 5.9 Update Acknowledgement Message Format .29 6. Option Formats. . . . . . . . . 24 5.10 Reachability Probe Message Format . . . . . . . . . . . 24 5.11 Reachability Reply Message Format . . .31 6.1 Validator Option Format. . . . . . . . 25 5.12 Keepalive Message Format . . . . . . . . .32 6.2. . . . . . . 26 5.13 Context LocatorList OptionPair Explore Message Format . . . . . . 27 5.14 Option Formats . . . . . . . . . .32 6.3. . . . . . . . . . . 28 5.14.1 Validator Option Format . . . . . . . . . . . . . . 29 5.14.2 LocatorPreferencesList Option Format . . . . . . . . . . . .33 6.4 CGA Parameter Data Structure. 30 5.14.3 Locator Preferences Option Format . . . . . . . .34 6.5. 31 5.14.4 CGASignatureParameter Data Structure Option Format . . . . . 32 5.14.5 CGA Signature Option Format . . . . . . . . . . . .35 6.633 5.14.6 ULID Pair Option Format . . . . . . . . . . . . . .. . . 35 6.733 5.14.7 Packet In Error Option Format . . . . . . . . . . .. . . 3634 Nordmark Expires March31,5, 2006 [Page 2] Internet-Draft Shim6 Protocol September 20056.85.14.8 Explorer Results Option Format . . . . . . . . . . .. . . 36 7.34 6. Conceptual Model of a Host . . . . . . . . . . . . . . . . .38 7.135 6.1 Conceptual Data Structures . . . . . . . . . . . . . . . .38 8.36 7. Establishing Host Pair Contexts . . . . . . . . . . . . . .40 8.1 Sending I1 messages36 7.1 Normal context establishment . . . . . . . . . . . . . . . 37 7.2 Concurrent context establishment . . . . . . .40 8.2 Receiving I1 messages. . . . . . 37 7.3 Context recovery . . . . . . . . . . . .40 8.3 Receiving R1. . . . . . . . . 38 7.4 Context confusion . . . . . . . . . . . . . . . . . . . . 39 7.5 Sending I1 messages . . . . . . . . . . . . . . . . . . . 408.4 Retransmitting7.6 Receiving I1 messages . . . . . . . . . . . . . . . . . . 408.57.7 ReceivingI2R1 messages . . . . . . . . . . . . . . . . . .40 8.641 7.8 Retransmitting I2 messages . . . . . . . . . . . . . . . .40 8.7 Concurrent context establishment41 7.9 Receiving I2 messages . . . . . . . . . . . . .40 9.. . . . . 41 7.10 Receiving R2 messages . . . . . . . . . . . . . . . . . 42 8. No Such Content Errors . . . . . . . . . . . . . . . . . . .41 10.42 9. Handling ICMP Error Messages . . . . . . . . . . . . . . . . 4211. Taredown10. Teardown of the Host Pair Context . . . . . . . . . . . . . 4312.11. Updating the Locator Pairs . . . . . . . . . . . . . . . . .44 13.43 12. Various Probe Mechanisms . . . . . . . . . . . . . . . . . .45 14.43 13. Rehoming to a Different Locator Pair . . . . . . . . . . . .46 15.43 14. Payload Packets before a Switch . . . . . . . . . . . . . .47 16.43 15. Payload Packets after a Switch . . . . . . . . . . . . . . .48 17.44 16. Open Issues . . . . . . . . . . . . . . . . . . . . . . . .50 18.45 17. Design Alternatives . . . . . . . . . . . . . . . . . . . .52 18.146 17.1 State Cleanup . . . . . . . . . . . . . . . . . . . . .52 18.2 Not Overloading the Flow Label46 17.2 Detecting Context Loss . . . . . . . . . . . . .52 18.3 Detecting Context Loss. . . . 46 18. Implications Elsewhere . . . . . . . . . . . . . . . .53 19. Implications Elsewhere. . . 47 19. Security Considerations . . . . . . . . . . . . . . . . . .5548 20.SecurityIANA Considerations . . . . . . . . . . . . . . . . . .57. . 48 21.AcknowledgementsChange Log . . . . . . . . . . . . . . . . . . . . . .58. . . 49 22. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 49 23. References . . . . . . . . . . . . . . . . . . . . . . . . .59 22.149 23.1 Normative References . . . . . . . . . . . . . . . . . .59 22.249 23.2 Informative References . . . . . . . . . . . . . . . . .5950 Author's Address . . . . . . . . . . . . . . . . . . . . . .6051 Intellectual Property and Copyright Statements . . . . . . .6152 Nordmark Expires March31,5, 2006 [Page 3] Internet-Draft Shim6 Protocol September 2005 1. Introduction The SHIM6 working group, and the MULTI6 WG that preceded it, is exploring a layer 3 shim approach for providing locator agility below the transport protocols, so that multihoming can be provided for IPv6 with failover and load spreadingproperties,properties [13], without assuming that a multihomed site will have a provider independent IPv6 address which is announced in the global IPv6 routing table. The hosts in a site which has multiple provider allocated IPv6 address prefixes, will use the shim6 protocol specified in this document to setup state with peer hosts, so that the state can later be used to failover to a different locator pair, should the original one stop working. This document takes the outlines contained in[16][21] and[15][20] and expands to an actual proposed protocol. We assume that redirection attacks are prevented using the mechanism specified in HBA[4].[5]. The WG mailing list is discussing the scheme used for reachability detection[5].[6]. The schemes that are being discussed are Context Unreachability Detection (CUD) or Force Bidirectional communication Detection (FBD). This document doesn't discuss the tradeoffs between the two, but it does suggest a set of keepalive and probe messages that are sufficient to handle both. Once the WG has decided which approach to take, we can remove the unneeded messages. There is a related but slightly separate issue of how the hosts can find which of the locator pairs is working after a failure. This is discussed in[6].[7]. We don't yet know how these details will be done, but this draft specifies a separate "Explore" message as a placeholder for such a protocol mechanism. 1.1PlacementGoals The goals for this approach is to: o Preserve established communications through failures, for example, TCP connections and application communications using UDP. o Have no impact on upper layer protocols in general and on transport protocols in particular. o Address the security threats in [16] through a separate document [5], and techniques described in this document. o No extra roundtrip for setup; deferred setup. o Take advantage of multiple locators/addresses for load spreading so that different sets of communication to a host (e.g., different connections) might use different locators of theshim TBD: Copy material from [16].host. Nordmark Expires March31,5, 2006 [Page 4] Internet-Draft Shim6 Protocol September 20052. Terminology This document uses the terms MUST, SHOULD, RECOMMENDED, MAY, SHOULD NOT and MUST NOT defined in RFC 2119 [7].1.2 Non-Goals Theterms defined in RFC 2460 [1] are also used. 2.1 Definitions This document introducesassumption is that thefollowing terms (taken from [16]): upper layer protocol (ULP) A protocol layer immediately above IP. Examplesproblem we aretransport protocols such as TCP and UDP, control protocols such as ICMP, routing protocols such as OSPF, and internet or lower-layer protocols being "tunneled"trying to solve is site multihoming, with the ability to have the set of site locator prefixes change over(i.e., encapsulated in) IP such as IPX, AppleTalk, or IP itself. interface A node's attachmenttime due toa link. address An IP layer namesite renumbering. Further, we assume thatcontains both topological significance and acts as a unique identifier for an interface. 128 bits. This document only usessuch changes to the"address" term inset of locator prefixes can be relatively slow and managed; slow enough to allow updates to thecase where it isn't specific whetherDNS to propagate. But it is not alocator orgoal to try to make communication survive aidentifier. locator An IP layer topological name for an interface orrenumbering event (which causes all the locators of a host to change to a new set ofinterfaces. 128 bits. The locators are carried in the IP address fieldslocators). This proposal does not attempt to solve, perhaps related, problems such asthe packets traverse the network. identifier An IP layer name forhost multihoming or host mobility. This proposal also does not try to provide an IPlayer endpoint (stack name in [18]). The transport endpoint name isidentifier. Even though such afunction of the transport protocol andconcept wouldtypically includebe useful to ULPs and applications, especially if theIP identifier plusmanagement burden for such aport number. NOTE: This proposal doesname space was zero and there was an efficient yet secure mechanism to map from identifiers to locators, such a name space isn't necessary (and furthermore doesn't seem to help) to solve the multihoming problem. 1.3 Locators as Upper-layer Identifiers Central to this approach is to notspecify anyintroduce a newform of IP layer identifier,identifier name space butstill separates the identifying and locating propertiesinstead use one of theIP addresses.locators as the upper-layeridentifier (ULID) An IP locator which has been selected for communication with a peer to be used byID, while allowing theupper layer protocol. 128 bits. This islocators usedfor pseudo-header checksum computation and connection identificationin theULP. Different sets of Nordmark Expires March 31, 2006 [Page 5] Internet-Draft Shim6 Protocol September 2005 communicationaddress fields toa host (e.g., different connections) might use different ULIDschange over time inorderresponse toenable load spreading. Since the ULID is just onefailures of using theIP locators/ addresses oforiginal locator. This implies that thenode, thereULID selection isno need for a separate name space and allocation mechanisms. address field The source and destinationperformed as today's default addressfields in the IPv6 header. As IPv6 is currentlyselection as specifiedthis fields carry "addresses". If identifiersin [11]. Underneath, andlocators are separated these fields will contain locators for packets on the wire. FQDN Fully Qualified Domain Name Host-pair context The state thattransparently, the multihoming shimmaintains for a particular peer. The peer is identified by one or more ULIDs. 2.2 Notational Conventions A, B,selects working locator pairs with the initial locator pair being the ULID pair. When communication fails the shim can test andC are hosts. Xselect alternate locators. A subsequent section discusses the issues when the selected ULID isa potentially malicious host. FQDN(A)not initially working hence there is a need to switch locators up front. Using one of thedomain name for A. Ls(A) islocators as thelocator setULID has certain benefits forA,applications whichconsists ofhave long-lived session state, or performs callbacks or referrals, because both thelocators L1(A), L2(A), ... Ln(A). ULID(A) is an upper-layer IDFQDN and the 128-bit ULID work as handles forA. In this proposal, ULID(A)the applications. However, using a single 128- bit ULID doesn't provide seamless communication when that locator isalways one memberunreachable. See [17] for further discussion ofA's locator set. This document also makes use of internal conceptual variables to describe protocol behavior and external variables that an implementation must allow system administrators to change. The specific variable names, how their values change, and how their settings influence protocol behavior are provided to demonstrate protocol behavior. An implementation is not required to have them intheexact form described here, so longapplication implications. There has been some discussion of using non-routable locators, such asits external behavior is consistent with that describedunique-local addresses [15], as ULIDs inthis document. See Section 7 foradescriptionmultihoming solution. While this document doesn't specify all aspects of this, it is believed that theconceptual data structures.approach can be extended to handle such a case. Nordmark Expires March31,5, 2006 [Page6]5] Internet-Draft Shim6 Protocol September 20053. Assumptions The general approach of a level3 shim as well as this specific proposal makes the following assumptions: o When there is ingress filtering in the ISPs, that the use of all {source, destination} locator pairs will causeFor example, thepacketsprotocol already needs toexit using different ISPs sohandle ULIDs thatall exit ISPsare not initially reachable. Thus the same mechanism canbe tried. Since there might be only one destination locator,handle ULIDs that are permanently unreachable from outside their site. The issue becomes how to make the protocol perform well when thepeer supports shim6 butULID is notmultihomed,reachable, for instance, avoiding any timeout and retries in thisimplies that the selection of the exit ISP should be relatedcase. In addition one would need to understand how thesource addressULAs would be entered in thepackets. o Even without ingress filtering, there isDNS to avoid a performance impact on existing, non- shim6 aware, IPv6 hosts potentially trying to communicate to theassumption(unreachable) ULA. 1.4 IP Multicast IP Multicast requires thatifthehost tries all {source, destination}IP source address field contain a topologically correct locatorpairs,for interface thatit has done a good enough job of trying to find a working pathis used to send thepeer. Since we wantpacket, since IP multicast routing uses both theprotocolsource address and the destination group toprovide benefits even ifdetermine where to forward thepeer has a single locator, this seemspacket. (This isn't much different than the situation with widely implemented ingress filtering [9] for unicast.) While in theory it would be possible toimply thatapply thechoiceshim re-mapping ofsource locator needs to somehow affecttheexit path fromIP address fields between ULIDs and locators, thesite. Nordmark Expires March 31, 2006 [Page 7] Internet-Draft Shim6 Protocol September 2005 4. Protocol Overview The shim6 protocol operates in several phases over time. The following sequence illustratesfact that all theconcepts: o An application on host A decidesmulticast receivers would need tocontact B using some upper- layer protocol.know the mapping to perform, makes such an approach difficult in practice. Thus it makes sense to have multicast ULPs operate directly on locators and not use the shim. Thisresultsis quite a natural fit for protocols which use RTP [12], since RTP already has an explicit identifier in theULP on A sending packets to B. We call thisform of theinitial contact. AssumingSSRC field in the RTP headers. Thus the actual IPaddresses selected by Default Address Selection [9] work, then there is no action byaddress fields are not important to theshim atapplication. 1.5 Renumbering Implications As stated above, thispoint in time. Any shim context establishment can be deferred until later. o Some heuristic on A or B (or both) determine that it might make senseapproach does not try to makethiscommunicationrobust against locator failures. For instance, this heuristicsurvive renumbering. However, the fact that a ULID might be used with a different locator over time open up the possibility thatmore than 50 packets have been sentcommunication between two ULIDs might continue to work after one orreceived.both of those ULIDs are no longer reachable as locators, for example due to a renumbering event. Thismakesopens up theshim initiatepossibility that the4-way context establishment exchange. As a result of this exchange,ULID (or at least the prefix on which it is based) is reassigned to another site while it is still being used (with another locator) for existing communication. Worst case we could end up with two separate hosts using the same ULID while bothA and B will know a listoflocatorsthem are communicating with the same host. This potential source foreach other. o Communication continues withoutconfusion can be avoided if we require that anychange for the ULP packets. In addition, there mightcommunication using a ULID must besome messages exchanged between the shim sub-layers for (un)reachability detection. o At some point in time something fails. Depending onterminated when theapproachULID becomes invalid (due toreachability detection, therethe underlying prefix becoming invalid). Nordmark Expires March 5, 2006 [Page 6] Internet-Draft Shim6 Protocol September 2005 However, this might be an overkill. Even when an IPv6 prefix is retired and reassigned to someadvise from the ULP, or the shim (un)reachability detection might discover thatother site, there is still aproblem. At this pointvery small probability that another host intime one or both ends of the communication need to explorethat site picks thedifferent alternate locator pairs until a working pair is found, and rehome tosame 128 bit address (whether usingthat pair. o OnceDHCPv6, stateless address autoconfiguration, or picking aworking alternative locator pair has been found, the shim will rewrite the packets on transmit, and tagrandom interface ID [10]). Should thepackets withidentical address be used by another host, then there still wouldn't be ashim context tag, and send them on the wire. The receiver will use the <Source Locator, Destination Locator, Context Tag>problem until that host attempts tofindcommunicate with thecontext state which will indicatesame host with whichaddresses to place in the IPv6 header before passing the packet up to the ULP. The result is that fromtheperspectiveinitial user of theULP the packet passes unmodified end-to-end, even thoughIPv6 address was communicating. 1.6 Placement of the shim ----------------------- | Transport Protocols | ----------------------- ------ ------- -------------- ------------- IP endpoint | AH | | ESP | | Frag/reass | | Dest opts | sub-layer ------ ------- -------------- ------------- --------------------- | shim6 shim layer | --------------------- ------ IP routinginfrastructure sends| IP | sub-layer ------ Figure 1: Protocol stack The proposal uses an multihoming shim layer within thepacketIP layer, i.e., below the ULPs, as shown in Figure 1, in order toa different locator. oprovide ULP independence. The multihoming shim(un)reachability detection will monitor the new locator pairlayer behaves as if itmonitored the original locator pair, so that subsequent failures canis associated with an extension header, which would bedetected. Nordmark Expires March 31, 2006 [Page 8] Internet-Draft Shim6 Protocol September 2005 o Whenordered immediately after any hop-by-hop options in theshim thinks thatpacket. However, when thecontext statelocator pair isno longer used, it can garbage collectthestate;ULID pair there is nocoordination necessary with the peer host before the state is removed. There is an error message defineddata that needs to beable to signal when there is no context state, which can be used to detect and recover from both premature garbage collection, as well as complete state loss (crash and reboot) of a peer. The data packets in shim6 arecarriedcompletely unmodified as long as the ULID pairin an extension header, thus none isused asneeded in that case. Layering AH and ESP above thelocator pair. After a switchmultihoming shim means that IPsec can be made toa differentbe unaware of locatorpairchanges thepackets are "tagged" sosame way thatthe receivertransport protocols canalways determinebe unaware. Thus thecontextIPsec security associations remain stable even though the locators are changing. The MOBIKE WG is looking at ways towhich they belong. For commonly usedhave IPsec security associations survive even though the IPprotocols thisaddresses changes, which isdone by usinga differentvalue inapproach. Layering theFlow Label field, that is, there is no additionalfragmentation headeradded toabove thepackets. But for other IP protocol typesmultihoming shim makes reassembly robust in the case that there isan extra 8 byte header inserted,broken multi-path routing whichcarriesresults in using different paths, hence potentially different Nordmark Expires March 5, 2006 [Page 7] Internet-Draft Shim6 Protocol September 2005 source locators, for different fragments. Thus, effectively thenext header value. 4.1 Context Tags and Use of Flow Label A context between to hostsmultihoming shim layer isactually a contextplaced betweentwo ULIDs. The context is identified bythe IP endpoint sublayer, which handles fragmentation, reassembly, and IPsec, and the IP routing sublayer, which on apair of context tags. Each end getshost selects which default router toallocate a context tag,use etc. Applications andonce the context is established,upper layer protocols use ULIDs which the shim6control messages contain the context tag that the receiver of the message allocated. Thus at a minimum the combination of <peer ULID, local ULID, local context> tag MUST uniquely identify one context. In addition, the non-shim6 messages, which we call payload packets,layer willnot contain the ULIDs after a failure. This introduces the requirement thatmap to/from different locators. The shim6 layer maintains state, called host-pair context, per ULID pairs (that is, applies to all ULP connections between the<peer locator, local locator, local context tag> MUST uniquely identifyULID pair) in order to perform this mapping. The mapping is performed consistently at thecontext. Sincesender and thepeer's set of locators might be dynamicreceiver, thus from thesimplest form of unique allocationperspective of thelocal context tag isupper layer protocols, packets appear topick a number that is unique on the host. Hosts which serve multiple ULIDsbe sent usingdisjoint sets of locators can maintain the context tag allocation per such disjoint set. As an optimization,ULIDs from end toensure that payload packets,end, evenafter the locators have been switched from being the original ones, do not require an extra shim extension header,though theproposal usespackets travel through theFlow Label fieldnetwork containing locators in theIPv6 header to carry the context tag for common upper layer protocols such as TCPIP address fields, andUDP. This works as follows: oeven though those locators might be changed by the transmitting shim6 layer. Theallocationcontext state in this approach is maintained per remote ULID i.e. approximately per peer host, andusagenot at any finer granularity. In particular, it is independent of theflow label during the initial communication is unchanged. ThusULPs and any ULP connections. However, theTCP, UDP, etc packets are sent with a flow label which is allocated accordingforking capability enables shim-aware ULPs to[11]. o When the context is created, each endpoint picksuse more than one locator pair at a time for anunused context tag basedsingle ULID pair. ---------------------------- ---------------------------- | Sender A | | Receiver B | | | | | | ULP | | ULP | | | src ULID(A)=L1(A) | | ^ | | | dst ULID(B)=L1(B) | | | src ULID(A)=L1(A) | | v | | | dst ULID(B)=L1(B) | | multihoming shim | | multihoming shim | | | src L2(A) | | ^ | | | dst L3(B) | | | src L2(A) | | v | | | dst L3(B) | | IP | | IP | ---------------------------- ---------------------------- | ^ ------- cloud with some routers ------- Figure 2: Mapping with changed locators The result of this consistent mapping is that there is no impact on theconstraints above, whichULPs. In particular, there isalso not usedno impact on pseudo-header checksums and connection identification. Conceptually one could view this approach as if both ULIDs and locators are being present in every packet, but with a header compression mechanism applied that removes the need for the ULIDs Nordmark Expires March31,5, 2006 [Page9]8] Internet-Draft Shim6 Protocol September 2005flow label for the set of locators. o The context tag is used by the shim to refer toonce theshimstateinhas been established. In order for thecontrol messages (such as probes, and locator updates. o The payload traffic (TCP, UDP, etc.) continuereceiver toflow unchanged. o Shouldrecreate a packet with the correct ULIDs there might be a need toswitch to a different locator pair, then the TCP, UDP, etc packets will be sent using an alternate locator pair, and with a flow label that isinclude some "compression tag" in thesame asdata packets. This would serve to indicate the(20 bit)correct contexttag. The mechanismto use fordetecting a loss of context state atdecompression when thepeer that is currently proposedlocator pair inthis document assumes that the receiver can tellthepackets that need locator rewriting, even after it has lost all state (e.g., due to a crash followed by a reboot). The next section specifies how this can be done. Note that therepacket isno need for a single contextinsufficient tohave more than one context tag; whetheruniquely identify thelocator pair is <A1, B2>, <A1, B3> or <A2, B3>context. 2. Terminology This document uses thesame context tag is usedterms MUST, SHOULD, RECOMMENDED, MAY, SHOULD NOT and MUST NOT defined in RFC 2119 [1]. The terms defined in RFC 2460 [2] are also used. 2.1 Definitions This document introduces theflow label field. Only the payload packets using the original <A1, B1> locator pair use the flow label (which is different than the context tag). Whether we overload the flow label field to carry the context tag or not, anyfollowing terms (taken from [21]): upper layer protocol(such(ULP) A protocol layer immediately above IP. Examples are transport protocols such asRSVPTCP and UDP, control protocols such as ICMP, routing protocols such as OSPF, and internet orNSIS) which signals information about flows from the host stack to devices in the path, needlower-layer protocols being "tunneled" over (i.e., encapsulated in) IP such as IPX, AppleTalk, or IP itself. interface A node's attachment tobe made aware of the locator agility introduced bya link. address An IP layer3 shim, soname thatthe signaling can be performedcontains both topological significance and acts as a unique identifier for an interface. 128 bits. This document only uses thelocator pairs that are currently being used. 4.2 Protocol type overloading The mechanism"address" term in the case where it isn't specific whether it is a locator or a identifier. locator An IP layer topological name fordetectingan interface or alossset ofcontext state at the peer that is currently proposedinterfaces. 128 bits. The locators are carried inthis document assumes thatthereceiver can tellIP address fields as the packetsthat need locator rewriting, even after it has lost all state (e.g., due to a crash followed by a reboot). There istraverse the network. identifier An IP layer name for analternative to detection of lost state outlinedIP layer endpoint (stack name inSection 18.[23]). Theideatransport endpoint name isto stealapartial bit fromfunction of the transport protocoltype fields that are used inand would typically include theNext Header values, so thatIP identifier plus a port number. NOTE: This proposal does not specify any new form of IP layer identifier, but still separates the identifying and locating properties of the IP addresses. upper-layer identifier (ULID) An IP locator which has been selected for communication with a peer to be used by thecommonupper layerprotocols can be identified. For example: o TCP has protocol 6; TCP using alternate locators has protocol P.protocol. 128 bits. This is used for pseudo-header checksum computation and connection Nordmark Expires March31,5, 2006 [Page10]9] Internet-Draft Shim6 Protocol September 2005o UDP has protocol 17; TCP using alternate locators has protocol P+1. o ICMPv6 has protocol 58; ICMPv6 using alternate locators has protocol P+2. o SCTP has protocol 132; SCTP using alternate locators has protocol P+3. o DCCP has protocol ??; DCCP using alternate locators has protocol P+4. o ESP has protocol 50; ESP using alternate locators has protocol P+5. o AH has protocol 51; AH using alternate locators has protocol P+6. o FRAG has protocol 44; FRAG using alternate locators has protocol P+7. Thus with 7 or so additional protocol field values we can doidentification in the ULP. Different sets of communication to areasonable jobhost (e.g., different connections) might use different ULIDs in order to enable load spreading. Since the ULID is just one ofoverloadingtheflow labelIP locators/ addresses of the node, there is no need for a separate name space and allocation mechanisms. address field The source andget detection of lostdestination address fields in the IPv6 header. As IPv6 is currently specified this fields carry "addresses". If identifiers and locators are separated these fields will contain locators for packets on the wire. FQDN Fully Qualified Domain Name Host-pair contextstate. 4.3 Securing shim6Themechanisms are secured usingstate that the multihoming shim maintains for acombination of techniques: oparticular peer. TheHBA technique [4]context is forvalidatinga ULID pair, as is identified by a context tag for each direction. Context tag Each end of thelocatorscontext allocates a context tag for the context. This is used toprevent an attacker from redirectinguniquely associate both received control packets and payload packets with thepacket streamshim6 Payload extension header as belonging tosomewhere else. o Requiring a Reachability Probe+Reply beforethe context. Current locator pair Each end of the context has anewcurrent locator pair which is usedas the destination, in ordertoprevent 3rd party flooding attacks. osend packets to be peer. Thefirst message does not create any state ontwo ends might use different locator pairs though. Default context At theresponder. Essentially a 3-way exchange is required beforesending end, theresponder creates any state. This means that a state-based DoS attack (trying to use up all of memory onshim uses theresponder) at least provides an IPv6 address thatULID pair (passed down from theattacker was using. o The context establishment messages use noncesULP) toprevent replay attacks. 4.4 Overview of Shim Control Messages The shimfind the contextestablishment is accomplished using four messages; Nordmark Expires March 31, 2006 [Page 11] Internet-Draft Shim6 Protocol September 2005 I1, R1, I2, R2. Normally theyfor that pair. Thus, normally, a host can have at most one context for a ULID pair. We call this the "default context". Context forking A mechanism which allows ULPs that aresentaware of multiple locators to use separate contexts for the same ULID pair, inthatorderfrom initiator and responder, respectively. Should both ends attempttoset up context state atbe able use different locator pairs for different communication to the sametime (forULID. Context forking causes more than just thesamedefault context to be created for a ULIDpair), then their I1 messages might cross in flight,pair. 2.2 Notational Conventions A, B, andresult in an immediate R2 message. [The names of these messagesC areborrowed from HIP [17].] Therehosts. X is aNo Contex error message defined, when a control or payload packet arrives and therepotentially malicious host. FQDN(A) isno matching context state atthereceiver. When such a messagedomain name for A. Ls(A) isreceived, it will result inthedestructionlocator set for A, which consists of theshim context and a re-establishment. The peers' lists oflocatorsare normally exchanged as partL1(A), L2(A), ... Ln(A). Nordmark Expires March 5, 2006 [Page 10] Internet-Draft Shim6 Protocol September 2005 ULID(A) is an upper-layer ID for A. In this proposal, ULID(A) is always one member of A's locator set. This document also makes use of internal conceptual variables to describe protocol behavior and external variables that an implementation must allow system administrators to change. The specific variable names, how their values change, and how their settings influence protocol behavior are provided to demonstrate protocol behavior. An implementation is not required to have them in thecontext establishment exchange. Butexact form described here, so long as its external behavior is consistent with that described in this document. See Section 6 for a description of thesetconceptual data structures. 3. Assumptions The general approach oflocators might be dynamic. Fora level3 shim as well as thisreasonspecific proposal makes the following assumptions: o When there isa Locator List Update message and acknowledgement. Even thoughingress filtering in thelist of locators is fixed, a host might determineISPs, thatsome preferences might have changed. For instance, it might determinethe use of all <source, destination> locator pairs will cause the packets to exit using different ISPs so that all exit ISPs can be tried. Since there might be only one destination locator, when the peer supports shim6 but isa locally visible failure thatnot multihomed, this implies thatsome locator(s) are no longer usable. Currently this mechanism has a separate message pair (Rehome Request and acknowledgement), but perhaps this canthe selection of the exit ISP should beencoded usingrelated to theLocator List Update message pair withsource address in the packets. o Even without ingress filtering, there is the assumption that if the host tries all <source, destination> locator pairs, that it has done apreference option and no changegood enough job of trying to find a working path to thelist of locators. At least two approaches (CUD and FBD) have been discussed forpeer. Since we want theshim (un)reachability detection [5]. This document attemptprotocol todefine messages for both cases; onceprovide benefits even if theWGpeer haspicked an approach we can delete any unneeded messages. The CUD approach usesaprobe message and acknowledgement, which can be suppressed e.g. using positive advise from the ULP. This message pair alsosingle locator, this seemsneededtoverifyimply that thehost is indeed present at a newchoice of source locatorbefore the data stream is redirected to that locator, in orderneeds toprevent 3rd party DoS attacks. The FBD approach uses a keepalive message, which is sent when a host has received packets fromsomehow affect thepeer, butexit path from theULP has not givensite. 4. Protocol Overview The shim6 protocol operates in several phases over time. The following sequence illustrates the concepts: o An application on hostan opportunity to send any payload packetA decides to contact B using some upper- layer protocol. This results in thepeer. The above probe and keepalive messages assume we have an established host-pair context. However, communication might fail duringULP on A sending packets to B. We call this the initialcontext (that is, whencontact. Assuming theapplication or transport protocolIP addresses selected by Default Address Selection [11] work, then there istrying to setup some communication). If we wantno action by the shimto be able to optimize discovering a working locator pairat this point in time. Any shim context establishment can be deferred until later. o Some heuristic on A or B (or both) determine thatcase, we need a mechanismit might make sense totest the reachability of locators independent of some context. We define amake this communication robust against locatorpair test message and acknowledgement forfailures. For instance, thispurpose, even though it isn't yet clear whether we need such a thing.heuristic might be that more than 50 packets have been sent or received. This makes the shim initiate the 4-way context establishment exchange. Nordmark Expires March31,5, 2006 [Page12]11] Internet-Draft Shim6 Protocol September 2005Finally, whenAs a result of this exchange, both A and B will know a list of locators for each other. If the contextis establishedestablishment exchange fails, the initiator will then know that the other end does not support shim6, and will revert to standard unicast behavior for the session. o Communication continues without any change for the ULP packets. In addition, thereis a failure there needsmight be some messages exchanged between the shim sub-layers for (un)reachability detection. o At some point in time something fails. Depending on the approach to reachability detection, there might be some advise from the ULP, or the shim (un)reachability detection might discover that there is awayproblem. At this point in time one or both ends of the communication need to explore theset ofdifferent alternate locator pairsto efficiently finduntil a workingpair. We define an explore message as a placeholder for some mechanism in this space [6]. Nordmark Expires March 31, 2006 [Page 13] Internet-Draft Shim6 Protocol September 2005 5. Message Formats The shim6 messages are all carriedpair is found, and rehome to using that pair. o Once anew IP protocol number TBD [to be assigned by IANA]. The shim6 messages have a common header, defined below, with some fixed fields, followed by type specific fields. 5.1 Common Shim6 header The common part of the headerworking alternative locator pair hasa next headerbeen found, the shim will rewrite the packets on transmit, andheadertag the packets with shim6 Payload message as an extensionlength fieldheader, whichis consistent withcontains theother IPv6 extension headers, even ifreceiver's context tag. The receiver will use thenext header value is only used for data payload<Source Locator, Destination Locator, Context Tag> to find the context state whichis carried with a shim6will indicate which addresses to place in the IPv6 headeronbefore passing thefront.packet up to the ULP. Theshim6 headers must be a multipleresult is that from the perspective of8 octets, hencetheminimum size is 8 octets.ULP the packet passes unmodified end-to-end, even though the IP routing infrastructure sends the packet to a different locator. o Thecommon message header isshim (un)reachability detection will monitor the new locator pair asfollows: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Header | Hdr Ext Len | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | | +-+-+-+-+-+-+-+-+ | | Type specific format | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: 8-bit selector. Normally set to NO_NXT_HDR (59). Indicatesit monitored thenext header valueoriginal locator pair, so that subsequent failures can be detected. o In addition to failures detected based on end-to-end observations, one endpoint might be know forthe shim6 payload messages. Hdr Ext Len: 8-bit unsigned integer. Lengthcertain that one or more ofthe shim6 header in 8-octet units,its locators is notincludingworking. For instance, thefirst 8 octets. Checksum: 16-bit unsigned integer.network interface might have failed or gone down (at layer 2), or an IPv6 address might have become invalid. In such cases the host can signal its peer that this address is no longer recommended to try. Thus this triggers something similar to a failure handling in that a new, working locator pair must be found. ThechecksumWorking Group has discussed whether or not hosts can express other forms of locator preferences. If this is the16-bit one's complement ofcase, a change in theone's complement sum ofpreferences can be signaled to theentire shim6 header message starting withpeer, which might make theshim6 next header field, and ending as indicated bypeer choose to try a different locator pair. Thus, this can also be treated similarly to a failure. o When theHdr Ext Len. Thus whenshim thinks that the context state is no longer used, it can garbage collect the state; there isa payload followingno coordination necessary with theshim6 header,peer host before thepayloadstate isNOT included in the shim6 checksum.removed. There is an error message defined to be able to signal when there is no context Nordmark Expires March31,5, 2006 [Page14]12] Internet-Draft Shim6 Protocol September 2005Type: 8-bit unsigned integer. Identifies the actual messagestate, which can be used to detect and recover from both premature garbage collection, as well as complete state loss (crash and reboot) of a peer. The ULP packets in shim6 are carried completely unmodified as long as thetable below. +------------+-----------------------------------------------------+ | Type Value | Message | +------------+-----------------------------------------------------+ | 1 | I1 (first establishment message fromULID pair is used as theinitiator) | | | | | 2 | R1 (first establishment message fromlocator pair. After a switch to a different locator pair theresponder) | | | | | 3 | I2 (2nd establishment message frompackets are "tagged" with a shim6 extension header, so that theinitiator) | | | | | 4 | R2 (2nd establishment message fromreceiver can always determine theresponder) | | | | | 5 | Nocontext to which they belong. This is accomplished by including an 8-octet "shim payload" extension header before the (extension) headers that are processed by the IP endpoint sublayer and ULPs. 4.1 ContextError | | | | | 6 | Locator List Update | | | | | 7 | Locator List Update Acknowledgement | | | | | 8 | Rehome Request | | | | | 9 | Rehome Acknowledgement | | | | | 10 | Reachability Probe | | | | | 11 | Reachability Probe Reply | | | | | 12 | Payload | | | | | 13 | Keepalive | | | | | 14 | Locator Pair Test | | | | | 15 | Locator Pair Test Reply | | | | | 16 | Context Locator pair explore | +------------+-----------------------------------------------------+ Table 1 5.2 I1 Message FormatTags A context between two hosts is actually a context between two ULIDs. TheI1 messagecontext is identified by a pair of context tags. Each end gets to allocate a context tag, and once the context is established, thefirst message inshim6 control messages contain the contextestablishment exchange. Nordmark Expires March 31, 2006 [Page 15] Internet-Draft Shim6 Protocol September 2005 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 1 | Res | Initiator Context Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Initiator Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: NO_NXT_HDR (59). Type: 1 Res: 4-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Initiator Context Tag: 20-bit field. The Context Tagtag that theinitiator has allocated forreceiver of the message allocated. Thus at a minimum the combination of <peer ULID, local ULID, local context> tag MUST uniquely identify one context.Initiator Nonce: 32-bit unsigned integer. A random number picked byIn addition, theinitiatornon-shim6 messages, whichthe responderwe call payload packets, willreturn innot contain theR1 message. The following options are allowed inULIDs after a failure. This introduces themessage: ULID pair: TBD Do we need to carryrequirement that theULIDs, or assume they are<peer locator, local locator, local context tag> MUST uniquely identify thesame ascontext. Since theaddress fields inpeer's set of locators might be dynamic theIPv6 header? Depends on how we handle failures during initial contact. 5.3 R1 Message Format The R1 messagesimplest form of unique allocation of the local context tag is to pick a number that is unique on thesecond message inhost. Hosts which serve multiple ULIDs using disjoint sets of locators can maintain the contextestablishment exchange.tag allocation per such disjoint set. Theresponder sends thismechanism for detecting a loss of context state at the peer that is currently proposed inresponsethis document assumes that the receiver can tell the packets that need locator rewriting, even after it has lost all state (e.g., due toan I1 message, without creatinga crash followed by a reboot). Even though we do not overload the flow label field to carry the context tag, anystate specificprotocol (such as RSVP or NSIS) which signals information about flows from the host stack to devices in the path, need to be made aware of theinitiator.locator agility introduced by a layer 3 shim, so that the signaling can be performed for the locator pairs that are currently being used. TBD: add forking - multiple contexts between ULID pairs, default context, etc Nordmark Expires March31,5, 2006 [Page16]13] Internet-Draft Shim6 Protocol September 20050 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 2 | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Initiator Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Responder Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: NO_NXT_HDR (59). Type: 2 Reserved: 24-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Initiator Nonce: 32-bit unsigned integer. Copied from the I1 message. Responder Nonce: 32-bit unsigned integer. A number picked by the initiator which the initiator will return in the I2 message.4.2 Securing shim6 Thefollowing optionsmechanisms areallowed in the message: Responder Validator: Variable length mandatory option. Typicallysecured using ahash generated by the responder, which the responder uses together withcombination of techniques: o The HBA technique [5] for validating theResponder Nonce valuelocators toverify thatprevent anI2 message is indeed sent in responseattacker from redirecting the packet stream to somewhere else. o Requiring aR1 message, and that the parameters in the I2 message are the sameReachability Probe+Reply before a new locator is used asthose intheI1 message. 5.4 I2 Message Formatdestination, in order to prevent 3rd party flooding attacks. o TheI2 message is the thirdfirst messageindoes not create any state on thecontext establishment exchange. The initiator sends this in response toresponder. Essentially aR1 message, after checking3-way exchange is required before theInitiator Nonce, etc. Nordmark Expires March 31, 2006 [Page 17] Internet-Draft Shim6 Protocol September 2005 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 3 | Res | Initiator Context Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Initiator Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Responder Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: NO_NXT_HDR (59). Type: 3 Res: 4-bit field. Reserved for future use. Zero on transmit. MUST be ignoredresponder creates any state. This means that a state-based DoS attack (trying to use up all of memory onreceipt. Initiator Context Tag: 20-bit field. The Context Tagtheinitiator has allocated forresponder) at least provides an IPv6 address that the attacker was using. o The contextInitiator Nonce: 32-bit unsigned integer. A random number picked by the initiator which the responder will return in the R2 message. Responder Nonce: 32-bit unsigned integer. Copied from the R1 message.establishment messages use nonces to prevent replay attacks. 4.3 Overview of Shim Control Messages Thefollowing optionsshim context establishment is accomplished using four messages; I1, R1, I2, R2. Normally they areallowedsent inthe message: Responder Validator: Variable length mandatory option. Copiedthat order fromthe Validator in the R1 message. ULID pair: TBD Do we needinitiator and responder, respectively. Should both ends attempt tocarry the ULIDs, or assume they areset up context state at the sameastime (for theaddress fieldssame ULID pair), then their I1 messages might cross inthe IPv6 header? Locator list: Optionally sentflight, and result in an immediate R2 message. [The names of these messages are borrowed from HIP [22].] There is a No Context error message defined, when a control or payload packet arrives and there is no matching context state at theinitiator immediately wants to tellreceiver. When such a message is received, it will result in the destruction of the shim context and a re-establishment. The peers' lists of locators are normally exchanged as part of the context establishment exchange. But the set of locators might be dynamic. For this reason there is a Locator List Update message and acknowledgement. Even though theresponder itslist oflocators. Whenlocators is fixed, a host might determine that some preferences might have changed. For instance, it might determine that there issent,a locally visible failure that implies that some locator(s) are no longer usable. Currently this mechanism has a separate message pair (Rehome Request and acknowledgement), but perhaps this can be encoded using thenecessary HBA/CGA information for validatingLocator List Update message pair with a preference option and no change to thelocatorlistMUST also be included.of locators. At least two approaches (CUD and FBD) have been discussed for the shim (un)reachability detection [6]. This document attempt to define messages for both cases; once the WG has picked an approach we can delete any unneeded messages. Nordmark Expires March31,5, 2006 [Page18]14] Internet-Draft Shim6 Protocol September 2005Locator Preferences: Optionally sent whenThe CUD approach uses a probe message and acknowledgement, which can be suppressed e.g. using positive advise from thelocators don't all have equal preference. CGA Parameter Data Structure: Included whenULP. This message pair also seems needed to verify that the host is indeed present at a new locatorlistbefore the data stream isincluded soredirected to that locator, in order to prevent 3rd party DoS attacks. The FBD approach uses a keepalive message, which is sent when a host has received packets from thereceiver can verifypeer, but thelocator list. CGA Signature: IncludedULP has not given the host an opportunity to send any payload packet to the peer. The above probe and keepalive messages assume we have an established host-pair context. However, communication might fail during the initial context (that is, when the application or transport protocol is trying to setup someofcommunication). If we want thelocatorsshim to be able to optimize discovering a working locator pair in that case, we need a mechanism to test thelist use CGA (and not HBA) for validation. 5.5 R2 Message Format The R2reachability of locators independent of some context. We define a locator pair test message and acknowledgement for this purpose, even though it isn't yet clear whether we need such a thing. Finally, when the context is established and there is a failure there needs to be a way to explore thefourthset of locator pairs to efficiently find a working pair. We define an explore message as a place holder for some mechanism inthe context establishment exchange. The responder sendsthisin response to an I2 message.space [7]. 5. Message Formats TheR2 message is also used when both hosts send I1shim6 messagesat the same time and the I1are all carried using a new IP protocol number TBD [to be assigned by IANA]. The shim6 messagescrosshave a common header, defined below, with some fixed fields, followed by type specific fields. 5.1 Payload Message Format The payload message is used to carry ULP packets where the receiver must replace the content of the source and or destination fields inflight.the IPv6 header before passing the packet to the ULP. Thus this extension header is included when the locators pair that is used is not the same as the ULID pair. Since the shim is placed between the IP endpoint sub-layer and the IP routing sub-layer in the host, the shim header will be placed before any endpoint extension headers (fragmentation headers, destination options header, AH, ESP), but after any routing related headers (hop- by-hop extensions header, routing header, a destinations options header which precedes a routing header). When tunneling is used, whether IP-in-IP tunneling or the special form of tunneling that Mobile IPv6 uses (with Home Address Options and Routing header type Nordmark Expires March 5, 2006 [Page 15] Internet-Draft Shim6 Protocol September 2005 2), there is a choice whether the shim applies inside the tunnel or outside the tunnel, which effects the location of the shim6 header. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |59 | Hdr Ext LenNext Header |Checksum0 |1| Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |4 | Res | ResponderReceiver Context Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Initiator Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Fields: Next Header:NO_NXT_HDR (59). Type: 4 Res: 4-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. ResponderThe payload which follows this header. Hdr Ext Len: 0 (since the header is 8 octets). Reserved: Reserved for future use. Zero on transmit. MUST be ignored on receipt. Receiver Context Tag:20-bit field.32-bit unsigned integer. Allocated by the receiver for use to identify the context (together with the source and destination locators). 5.2 Common Shim6 Control header TheContext Tagcommon part of theresponderheader hasallocateda next header and header extension length field which is consistent with the other IPv6 extension headers, even if the next header value is always "NO NEXT HEADER" for thecontext Initiator Nonce: 32-bit unsigned integer. Copied fromcontrol messages; only theI2 message.payload messages use the Next Header field. Thefollowing options are allowed inshim6 headers must be a multiple of 8 octets, hence themessage:minimum size is 8 octets. The common message header is as follows: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Header | Hdr Ext Len |0| Type |Type specific|0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | Type specific format | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Nordmark Expires March31,5, 2006 [Page19]16] Internet-Draft Shim6 Protocol September 2005Locator List: Optionally sent when the responder immediately wantsNext Header: 8-bit selector. Normally set totell the initiator its list of locators. When it is sent,NO_NXT_HDR (59). Indicates thenecessary HBA/CGA informationnext header value forvalidatingthelocator list MUST also be included. Locator Preferences: Optionally sent whenshim6 payload messages. Hdr Ext Len: 8-bit unsigned integer. Length of thelocators don't all have equal preference. CGA Parameter Data Structure: Included whenshim6 header in 8-octet units, not including thelocator list is included sofirst 8 octets. Type: 7-bit unsigned integer. Identifies thereceiver can verifyactual message from thelocator list. CGA Signature: Included whentable below. 0: A single bit (set to zero) which allows shim6 and HIP to have a common header format yet telling shim6 and HIP messages apart. Checksum: 16-bit unsigned integer. The checksum is thesome16-bit one's complement of thelocators inone's complement sum of thelist use CGA (and not HBA) for validation. 5.6 No Context Error Message Format Should a host receive a packet (payload packet orentire shim6controlheader messagesuch a a locator update) and the host does not have any context state for the locators (instarting with theIPv6 source and destination fields)shim6 next header field, and ending as indicated by thecontext tag, then it will generateHdr Ext Len. Thus when there is aNo Context Error. The error includespayload following thepacket that was received, subject toshim6 header, thepacket not exceeding 1280 octets. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+payload is NOT included in the shim6 checksum. +------------+-----------------------------------------------------+ |59Type Value |Hdr Ext LenMessage |Checksum+------------+-----------------------------------------------------+ |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+1 |5I1 (first establishment message from the initiator) |Reserved|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+2 | R1 (first establishment message from the responder) |+ Options +| 3 | I2 (2nd establishment message from the initiator) | | 4 | R2 (2nd establishment message from the responder) | |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: NO_NXT_HDR (59). Type:5Reserved: 24-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt.| No Context Error | | 6 | Update Request | | 7 | Update Acknowledgement | | 8 | Reachability Probe | | 9 | Reachability Reply | | 10 | Keepalive | | 11 | Context Locator Pair Explore | +------------+-----------------------------------------------------+ Table 1 5.3 I1 Message Format Thefollowing options are allowedI1 message is the first message in themessage:context establishment exchange. Nordmark Expires March31,5, 2006 [Page20]17] Internet-Draft Shim6 Protocol September 2005Packet in Error: Variable length mandatory option containing the IPv6 packet that was in error, starting with the IPv6 header, and normally containing the full packet. If the resulting No Context Error message would exceed 1280 octets, the Packet In Error option will not include the full packet in error in order to limit the error to 1280 octets. 5.7 Locator List Update Message Format The Locator List Update (LLU) Message contains a complete replacement of the senders locator list, and the options necessary for HBA/CGA to secure this. The basic sanity check that prevents off-path attackers from generating bogus updates is the context tag in the message.0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len |0| Type = 1 |Checksum |Reserved1 |0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |6Checksum |ResReserved2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Initiator Context Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |RequestInitiator Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: NO_NXT_HDR (59). Type:6 Res: 4-bit1 Reserved1: 7-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Reserved2: 16-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Initiator Context Tag:20-bit32-bit field. The Context Tag the initiator has allocated for the context.RequestInitiator Nonce: 32-bit unsigned integer. A random number picked by the initiator which the responder will return in theacknowledgementR1 message. The following options are allowed in the message:Nordmark Expires March 31, 2006 [Page 21] Internet-Draft Shim6 Protocol September 2005 Locator List: The list of the senders (new) locators. The locators might be unchanged and only the preferences have changed. Locator Preferences: Optionally sent when the locators don't all have equal preference. CGA Parameter Data Structure: Included so the receiver can verifyULID pair: TBD Do we need to carry thelocator list. CGA Signature: Included whenULIDs, or assume they are thesome ofsame as thelocatorsaddress fields in thelist use CGA (and not HBA) for validation. 5.8 Locator List Update AcknowledgementIPv6 header? Depends on how we handle failures during initial contact. 5.4 R1 Message FormatThisThe R1 message issentthe second message in the context establishment exchange. The responder sends this in response toa LLU message.an I1 message, without creating any state specific to the initiator. Nordmark Expires March 5, 2006 [Page 18] Internet-Draft Shim6 Protocol September 2005 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len |0| Type = 2 |Checksum |Reserved1 |0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |7Checksum |ResReserved2 |Responder Context Tag+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Initiator Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |RequestResponder Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: NO_NXT_HDR (59). Type:7 Res: 4-bit2 Reserved1: 7-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt.Initiator Context Tag: 20-bitReserved2: 16-bit field.The Context Tag the responder has allocatedReserved forthe context. Requestfuture use. Zero on transmit. MUST be ignored on receipt. Initiator Nonce: 32-bit unsigned integer. Copied from theLLUI1 message. Responder Nonce: 32-bit unsigned integer. A number picked by the responder which the initiator will return in the I2 message. The following options are allowed in the message:Nordmark Expires March 31, 2006 [Page 22] Internet-Draft Shim6 Protocol September 2005 TBD any options?: 5.9 Rehome Request Message Format TBD Is there any use to haveResponder Validator: Variable length option. Typically aseparate Rehome pair of messages? The sender can indicates its new knowledge of one of its locators (such as it no longer working) usinghash generated by theLLU message. Would it be useful to be able to specify just failure or preference changes without listingresponder, which theactual locators? This would require thatresponder uses together with thelocator list is ordered so that a Rehome Request can referResponder Nonce value tothe locators by some short index. Perhaps this functionality can be accomplished by sending a Locator Update message and only including new Locator Preferences, without including any Locator List option? If so, we don't need a separate message. 5.10 Rehome Acknowledgement Message Format TBD: See above. 5.11 Reachability Probe Message Format The Reachability Probeverify that an I2 message isused to prevent 3rd party DoS attacks, and can also be usedindeed sent in response toverify whetheracontext is reachable at a given locator should that be needed for the general reachability detection mechanism (e.g., if we pick the CUD mechanism where one end sends probesR1 message, andexpects a reply). Before a host uses a locator for the peerthatis different thantheULID, it needs to verify thatparameters in thepeer is indeed present at that locator by sending a Context Verify and receiving an acknowledgement. ThisI2 messageincludesare theULID pair as wellsame as those in thecontext tag, so thatI1 message. 5.5 I2 Message Format The I2 message is thepeer can indeed verify that it has that ULID and thatthird message in the contexttag is correct.establishment exchange. The initiator sends this in response to a R1 message, after checking the Initiator Nonce, etc. Nordmark Expires March31,5, 2006 [Page23]19] Internet-Draft Shim6 Protocol September 2005 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len |0| Type = 3 |Checksum |Reserved1 |0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |10Checksum |ResReserved2 |Receiver+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Initiator Context Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |RequestInitiator Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Responder Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: NO_NXT_HDR (59). Type:10 Res: 4-bit3 Reserved1: 7-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt.Receiver Context Tag: 20-bitReserved2: 16-bit field.The Context Tag the peerReserved for future use. Zero on transmit. MUST be ignored on receipt. Initiator Context Tag: 32-bit field. The Context Tag the initiator has allocated for the context.RequestInitiator Nonce: 32-bit unsigned integer. A random number picked by the initiator which the responder will return in theacknowledgementR2 message. Responder Nonce: 32-bit unsigned integer. Copied from the R1 message. The following options are allowed in the message: Responder Validator: Variable length option. Just a copy of the Validator option in the R1 message. ULID pair:The ULID pair that is being probed. 5.12 Reachability Probe Reply Message Format This is sentTBD Do we need to carry the ULIDs, or assume they are the same as the address fields inresponsethe IPv6 header? Locator list: Optionally sent when the initiator immediately wants toa Reachability Probe message. Although, iftell thereceiverresponder its list of locators. When it is sent, theRT does notnecessary HBA/CGA information for validating the locator list MUST also be included. Locator Preferences: Optionally sent when the locators don't all havea matching context it will send a No Context Error message.equal preference. Nordmark Expires March31,5, 2006 [Page24]20] Internet-Draft Shim6 Protocol September 2005 CGA Parameter Data Structure: Included when the locator list is included so the receiver can verify the locator list. CGA Signature: Included when the some of the locators in the list use CGA (and not HBA) for validation. 5.6 R2 Message Format The R2 message is the fourth message in the context establishment exchange. The responder sends this in response to an I2 message. The R2 message is also used when both hosts send I1 messages at the same time and the I1 messages cross in flight. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len |0| Type = 4 |Checksum |Reserved1 |0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |11Checksum |ResReserved2 |Receiver+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Responder Context Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |RequestInitiator Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: NO_NXT_HDR (59). Type:11 Res: 4-bit4 Reserved1: 7-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt.ReceiverReserved2: 16-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Responder Context Tag:20-bit32-bit field. The Context Tag thepeerresponder has allocated for the context.RequestInitiator Nonce: 32-bit unsigned integer. Copied from therequestI2 message. The following options are allowed in the message:ULID pair: The ULID pair that is being probed. Copied fromLocator List: Optionally sent when theProbe message. 5.13 Payload Message Format The payload message is used for payload which do not have a designated "foo-inside-shim6" protocol type, as specified in Section 4.2. Sinceresponder immediately wants to tell theshiminitiator its list of locators. When it isplaced between the IP endpoint sub-layer and the IP routing sub-layer insent, thehost,necessary HBA/CGA information for validating theshim header willlocator list MUST also beplaced before any endpoint extension headers (fragmentation headers, destination options header, AH, ESP), but after any routing related headers (hop- by-hop extensions header, routing header, a destinations options header which precedes a routing header). When tunneling is used, whether IP-in-IP tunneling or the special form of tunneling thatincluded. Nordmark Expires March31,5, 2006 [Page25]21] Internet-Draft Shim6 Protocol September 2005Mobile IPv6 uses (with Home Address Options and Routing header type 2), thereLocator Preferences: Optionally sent when the locators don't all have equal preference. CGA Parameter Data Structure: Included when the locator list isa choice whetherincluded and theshim applies insidePDS was not included in thetunnel or outsidecontext establishment messages, so thetunnel, which effectsreceiver can verify thelocationlocator list. CGA Signature: Included when the some of the locators in the list use CGA (and not HBA) for validation. 5.7 No Context Error Message Format Should a host receive a packet with a shim Payload message or shim6header. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Header | 0 | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 12 | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: The payload which follows this header. Hdr Ext Len: 0 (since the header is 8 octets). Checksum: The checksum ofcontrol message, such a a locator update, and the8 octets. Type: 12 Reserved: Reservedhost does not have any context state forfuture use. Zero on transmit. MUST be ignored on receipt. 5.14 Keepalive Message Format The keepalive message would be used if we decide to dotheForce Bidirectional communication aslocators (in the IPv6 source and destination fields) and the context tag, then it will generate away to get verification thatNo Context Error. The error includes thelocator pair continues to work. If we are not goingpacket that was received, subject todo FBD we probably willthe packet notneed this message.exceeding 1280 octets. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len |0| Type = 5 |Checksum |Reserved1 |0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |13 | ResChecksum |Receiver Context TagReserved2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields:Nordmark Expires March 31, 2006 [Page 26] Internet-Draft Shim6 Protocol September 2005Next Header: NO_NXT_HDR (59). Type:13 Res: 4-bit5 Reserved1: 7-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt.Receiver Context Tag: 20-bitReserved2: 16-bit field.The Context Tag the peer has allocatedReserved forthe context.future use. Zero on transmit. MUST be ignored on receipt. The following options are allowed in the message:TBD any options?: 5.15 Locator Pair Test Message Format The above Reachability Probe message probes a context. This message just probes a locator. If we are going to handle failure during initial contact using the shim, then the shim needs to be able to find out what locators are working (and that they correspond to a desirable ULID) without assuming there is a context setup, and without knowingPacket in Error: Variable length option containing theactual ULID. The latter is needed soIPv6 packet thatwe can handle the case whenwas in error, starting with theAAAA RRset contains any combination of multiple hostsIPv6 header, andmultiple IP addresses for a given host. Having the responder send back the ULID that corresponds to a particular locator allowsnormally containing theinitiator to takefull packet. If theAAAA RRset and determine which IPv6 addresses therein are for different hosts. Once we understand howresulting No Context Error message would exceed 1280 octets, theshimPacket In Error option willbe involved in locator failures during initial contact, then we can determine whether we need this mechanism, and whether it can be overloaded on the Probe Message (e.g., by makingnot include theReceiver Context tag optionalfull packet in error in order to limit theReachability Probe message).error to 1280 octets. Nordmark Expires March31,5, 2006 [Page27]22] Internet-Draft Shim6 Protocol September 2005 5.8 Update Request Message Format The Update Request Message is used to update either the list or locators, the locator preferences, and both. When the list of locators is updated, the message also contains the option(s) necessary for HBA/CGA to secure this. The basic sanity check that prevents off-path attackers from generating bogus updates is the context tag in the message. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len |0| Type = 6 |Checksum |Reserved1 |0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |14Checksum |ReservedReserved2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Request NonceReceiver Context Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ || + Target ULID + |Request Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: NO_NXT_HDR (59). Type:14 Reserved: 24-bit6 Reserved1: 7-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt.Request Nonce: 32-bit unsigned integer. A random number picked by the sender which the target willReserved2: 16-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Receiver Context Tag: 32-bit field. The Context Tag the receiver has allocated for the context. Request Nonce: 32-bit unsigned integer. A random number picked by the initiator which the peer will return in thereplyacknowledgement message.Target ULID: 128-bit IPv6 address.The following options are allowed in the message:TBD any options?: 5.16 Locator Pair Test Reply Message Format If a host receives aLocatorPair Test message, and the Target ULID is oneList: The list ofits IP addresses, then it will send this reply. TBD: If ULID doesn't match, does it just ignorethetest message? Or send some error? TBD: Should the responder instead return its ULID, so that it is easier forsenders (new) locators. The locators might be unchanged and only thesender to determine which ofpreferences have changed. Locator Preferences: Optionally sent when theIPv6 addresses fromlocators don't all have equal preference. Nordmark Expires March31,5, 2006 [Page28]23] Internet-Draft Shim6 Protocol September 2005 CGA Signature: Included when the some of theDNS correspond to different hosts vs. differentlocators in the list use CGA (and not HBA) for validation. 5.9 Update Acknowledgement Message Format This message is sent in response to a Update Request message. It implies that thesame host?Update Request has been received, and that any new locators in the Update Request can now be used as the source locators of packets. But it does not imply that the (new) locators have been verified and will be used as a destination, since the host might defer the verification of a locator until it is used as a destination. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len |0| Type = 7 | Reserved1 |0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Reserved2 |15+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |ReservedReceiver Context Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Request Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +Target ULID + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + OptionsOptions + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: NO_NXT_HDR (59). Type:15 Reserved: 24-bit7 Reserved1: 7-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Reserved2: 16-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Receiver Context Tag: 32-bit field. The Context Tag the receiver has allocated for the context. Request Nonce: 32-bit unsigned integer. Copied from thetest message. Target ULID: 128-bit IPv6 address. Copied from the testUpdate Request message.TBD: Or should the host be able to fill this in to make it easier for the peer to determine which locators refer to the same host? The followingNo options areallowed in the message: TBD any options?: 5.17 Context Locator Pair Explorecurrently defined for this message. 5.10 Reachability Probe Message FormatThis is a placeholder for the protocol mechanism outlined in [6].Theidea behind that mechanismReachability Probe message is used to prevent 3rd party DoS attacks, and can also beable to handle the case when one locator pair works in from Aused toB, and anotherverify whether a context is reachable at a given locatorpair worksshould that be needed for the general Nordmark Expires March31,5, 2006 [Page29]24] Internet-Draft Shim6 Protocol September 2005from B to A, but there is no locator pair which works in both directions. The protocolreachability detection mechanismis(e.g., if we pick the CUD mechanism where one end sends probes and expects a reply). Before a host uses a locator for the peer thatas Aissending explore packets to B, B will observe which locator pairsdifferent than the ULID, ithas received from and reportneeds to verify thatback in explore packets itthe peer is indeed present at that locator by sendingto A. 0 1 2 3 0 1 2 3 4 5 6 7a Context Verify and receiving an acknowledgement. This message includes the ULID pair as well as the context tag, so that the peer can indeed verify that it has that ULID and that the context tag is correct. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len |0| Type = 8 |Checksum |Reserved1 |0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |16Checksum | Reserved2 |Res+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Receiver Context Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Sequence NumberRequest Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: NO_NXT_HDR (59). Type:16 Res: 4-bit8 Reserved1: 7-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Reserved2: 16-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Receiver Context Tag:20-bit32-bit field. The Context Tag thepeerreceiver has allocated for the context.Sequence Number:Request Nonce: 32-bit unsigned integer.Used to determine which packets have been receivedA random number picked by thepeer.initiator which the responder will return in the acknowledgement message. The following options are allowed in the message:Explorer Results: Indication of what Explorer messagesULID pair: The ULID pair that is being probed. 5.11 Reachability Reply Message Format This is sent in response to a Reachability Probe message. Although, if thesender has recently received fromreceiver of thepeer.Reachability Probe does not have a matching context it will send a No Context Error message. Nordmark Expires March31,5, 2006 [Page30]25] Internet-Draft Shim6 Protocol September 20056. Option Formats The options follow the same layout as in RFC 2461 [2]. Thus they all are a multiple of 8 octets.0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len |0| Type = 9 |LengthReserved1 |0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |...Checksum | Reserved2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+~ ... ~| Receiver Context Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Request Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: NO_NXT_HDR (59). Type:8-bit identifier of the type of option. The options defined in this document are below. Length: 8-bit unsigned integer. The length of the option (including the type and length fields) in units of 8 octets.9 Reserved1: 7-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Reserved2: 16-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Receiver Context Tag: 32-bit field. Thevalue 0Context Tag the receiver has allocated for the context. Request Nonce: 32-bit unsigned integer. Copied from the request message. The following options are allowed in the message: ULID pair: The ULID pair that isinvalid. Nodes MUST silently discard an ND packetbeing probed. Copied from the Probe message. 5.12 Keepalive Message Format The keepalive message would be used if we decide to do the Force Bidirectional communication as a way to get verification thatcontains an option with length zero. +------------------------------+------+ | Option Name | Type | +------------------------------+------+ | Validator |the locator pair continues to work. If we are not going to do FBD we probably will not need this message. Nordmark Expires March 5, 2006 [Page 26] Internet-Draft Shim6 Protocol September 2005 0 1 2 3 0 1| | | | | Locator List |2| | | | | Locator Preferences |3| | | | | CGA Parameter Data Structure |4| | | | | CGA Signature |5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len |0| Type = 10 | Reserved1 |0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum |ULID Pair | 6 | | |Reserved2 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Packet In ErrorReceiver Context Tag |7+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Request Nonce | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Options + |Explorer Results|8 | +------------------------------+------+ Table 2 Nordmark Expires March 31, 2006 [Page 31] Internet-Draft Shim6 Protocol September 2005 6.1 Validator Option Format+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Next Header: NO_NXT_HDR (59). Type: 10 Reserved1: 7-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Reserved2: 16-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Receiver Context Tag: 32-bit field. Theresponder can choose exactly what input uses to compute the validator, and what one-way function (MD5, SHA1) it uses, as long as the reponder can verify that the validator it receives back inContext Tag theI2 packet is indeed one that 1) it computed, 2) it computedreceiver has allocated for theparticular context, and 3) that it isn't a replayed I2context. Request Nonce: 32-bit unsigned integer. Copied from the Reachability Probe message.One wayNo options are currently defined forthe responder to dothis message. 5.13 Context Locator Pair Explore Message Format This isto maintainasingle secret (S) and a running counterplaceholder for theResponder Nonce. For each I1 message, the responder can then increase the counter, use the counter value as the responder nonce, and use the following information as input to the one-way function: o The the secret S o That Responder Nonce oprotocol mechanism outlined in [7]. TheInitiator Context Tag fromidea behind that mechanism is to be able to handle theI1 message o The ULIDscase when one locator pair works in fromthe I1 message o The locatorsA to B, and another locator pair works fromthe I1 message (strictly only needed if they are different from the ULIDs) 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 1 | Length | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ~ Validator ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Validator: Variable length content whose interpretation is localB tothe responder. 6.2 Locator List Option FormatA, but there is no locator pair which works in both directions. TheLocator List Optionprotocol mechanism isused to carry all the locators of the sender. Notethatthe order of the locatorsas A isimportant, since the Locator Preferences and the Explorer packet referssending explore messages tothe locators by using the index in the list. TBD: Do we need this when all the locators are containedB, B will observe which locator pairs it has received from and report that back inthe PDS?explore messages it is sending to A. Nordmark Expires March31,5, 2006 [Page32]27] Internet-Draft Shim6 Protocol September 2005 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | 59 | Hdr Ext Len |0| Type =211 |LengthReserved1 |0| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |ReservedsReceiver Context Tag | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+~ Locators ~| | + Options + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields:Reserved: 48-bitNext Header: NO_NXT_HDR (59). Type: 11 Reserved1: 7-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt.Locators: A variable number of 128-bit locators. The number of locators present can be determinedSequence Number: 16-bit unsigned integer. Used to determine which messages have been received by theoption lengthpeer. Receiver Context Tag: 32-bit field.6.3 Locator Preferences Option FormatTheLocator Preferences option can have some flags to indicate whether or not a locator is known to work. In addition,Context Tag the receiver has allocated for the context. The following options are allowed in the message: Explorer Results: Indication of what Explorer messages the sendercan include a notionhas recently received from the peer. 5.14 Option Formats All ofpreferences. It might make sense to define "preferences" asthe TLV parameters have acombination of prioritylength (including Type andweight the same way that DNS SRV records has such information. The priority would provideLength fields) which is awaymultiple of 8 bytes. When needed, padding MUST be added torankthelocators, and within a given priority,end of theweight would provide a way to do some load sharing. See [8] for how SRV definesparameter so that theinteractiontotal length becomes a multiple ofpriority and weight. As8 bytes. This rule ensures proper alignment ofthis draft we definedata. If padding is added, thepreferences toLength field MUST NOT includethree 8-bit fields: a priority, a weight,the padding. Any added padding bytes MUST be zeroed by the sender, and8-bitstheir values SHOULD NOT be checked by the receiver. Consequently, the Length field indicates the length offlags. The intent is thattheTBD flags can carry information such as "this locator is not working", and "this locator is temporary".Contents field (in bytes). Thelatter allows makingtotal length of thedistinction between more stable addressesTLV parameter (including Type, Length, Contents, andless stable addresses when shim6Padding) iscombined with IP mobility, when we might have more stable home locators, and less stable care-of-locators. The locators are not included in the preference list. Instead, the first element refersrelated tolocator that was in the first element intheLocator List option. This assumes thatLength field according to theLocator List option is stable. See Section 17. Nordmark Expires March 31, 2006following formula: Total Length = 11 + Length - (Length + 3) % 8; Nordmark Expires March 5, 2006 [Page33]28] Internet-Draft Shim6 Protocol September 2005 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type= 3 ||C| Length |Pri[1] | Weight[1] |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Flags[1]|Pri[2]/ Contents / / +-+-+-+-+-+-+-+-+ |Weight[2]|Flags[2]Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+~ ... ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Fields:Pri[i]: 8-bit unsigned integer. The Priority associated with the i'th locator in the Locator List option that is in use. Weight[i]: 8-bit unsigned integer. The Weight associated with the i'th locator inType: 15-bit identifier of theLocator List option that is in use. Flags[i]: 8-bit unsigned integer.type of option. Theflags associated with the i'th locator in the Locator List option that isoptions defined inuse. The set of flags is TBD: Assume there will be two initially: BROKEN and TEMPORARY. 6.4 CGA Parameter Data Structure Option Format This option contains the CGAthis document are below. C: Critical. One if this parameterdata structure (hereafter called the PDS). When HBAisused to validatecritical, and MUST be recognized by thelocators,recipient, zero otherwise. An implementation might view thePDS containsC bit as part of theHBA multiprefix extension. When CGA is used to validateType field, by multiplying thelocators,type values inaddition to the CGA PDS,this specification by two. Length: Length of thesignature will need to be included as a CGA Signature option. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0Contents, in bytes. Contents: Parameter specific, defined by Type. Padding: Padding, 0-7 bytes, added if needed. +------------------------------+------+ | Option Name | Type | +------------------------------+------+ | Validator | 1 | | Locator List | 23 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Type = 4|LengthLocator Preferences | 3 |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|~CGA Parameter Data Structure~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Nordmark Expires March 31, 2006| 4 | | CGA Signature | 5 | | ULID Pair | 6 | | Packet In Error | 7 | | Explorer Results | 8 | +------------------------------+------+ Table 2 5.14.1 Validator Option Format The responder can choose exactly what input uses to compute the validator, and what one-way function (MD5, SHA1) it uses, as long as the responder can verify that the validator it receives back in the I2 message is indeed one that 1) it computed, 2) it computed for the particular context, and 3) that it isn't a replayed I2 message. One way for the responder to do this is to maintain a single secret Nordmark Expires March 5, 2006 [Page34]29] Internet-Draft Shim6 Protocol September 2005CGA Parameter Data Structure: Variable length content. Content defined in [4]. 6.5 CGA Signature Option Format When CGA is used(S) and a running counter forvalidation of one or more ofthelocators inResponder Nonce. For each I1 message, thePDS,responder can then increase themessage in question will needcounter, use the counter value as the responder nonce, and use the following information as input tocontain this option.the one-way function: o The the secret S o That Responder Nonce o The Initiator Context Tag from the I1 message o The ULIDs from the I1 message o The locators from the I1 message (strictly only needed if they are different from the ULIDs) 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type =5 |1 |0| Length || +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~CGA SignatureValidator ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields:CGA Signature:Validator: Variable lengthcontent. Content defined in [4]. 6.6 ULID Paircontent whose interpretation is local to the responder. 5.14.2 Locator List Option FormatIt isn't clear whether we need this option. It depends whether we want to be ableThe Locator List Option is used tosetup a context for a ULID pair whencarry all the locators of the sender. Note thatULID pair can't be usedthe order of the locators is important, since the Locator Preferences and the Explorer message refers tocommunicate. ThustheIPv6 addresseslocators by using the index in thecontext establishment would notlist. Note that we carry all the locators in this option even though some of them can be created automatically from theULIDs.CGA Parameter Data Structure. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type =6 |2 |0| Length || +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | Reserveds |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ || + Sender ULID + |Locator List Generation | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Num Locators |+ Receiver ULID +N Octets of Verification Method | +-+-+-+-+-+-+-+-+ | ~ ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Locators 1 through N ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Fields:Nordmark Expires March31,5, 2006 [Page35]30] Internet-Draft Shim6 Protocol September 2005Reserved: 48-bit field. ReservedFields: Locator List Generation: 32-bit unsigned integer. Indicates a generation number which is increased by one forfuture use. Zero on transmit. MUST be ignored on receipt. Sender ULID: A 128-bit IPv6 address. Receiver ULID: Aeach new locator list. This is used to ensure that the index in the Locator Preferences and Explorer results refer to the right version of the locator list. Num Locators: 8-bit unsigned integer. The number of locators that are included in the option. We call this number "N" below. Verification Method: N octets. The i'th octet specifies the verification method for the i'th locator. Locators: N 128-bitIPv6 address. 6.7 Packet In Error Option Format 0 1 2 3locators. The defined verification methods are: +-------+----------+ | Value | Method | +-------+----------+ | 0 | Reserved | | 1 | HBA | | 2 | CGA | | 3-255 | Reserved | +-------+----------+ Table 3 5.14.3 Locator Preferences Option Format The Locator Preferences option can have some flags to indicate whether or not a locator is known to work. In addition, the sender can include a notion of preferences. It might make sense to define "preferences" as a combination of priority and weight the same way that DNS SRV records has such information. The priority would provide a way to rank the locators, and within a given priority, the weight would provide a way to do some load sharing. See [8] for how SRV defines the interaction of priority and weight. The minimum notion of preferences we need is to be able to indicate that a locator is "dead". We can handle this using a single octet flag for each locator. We can extend that by carrying a larger "element" for each locator. This document presently also defines 2-octet and 3-octet elements, and we can add more information by having even larger elements if need be. The locators are not included in the preference list. Instead, the Nordmark Expires March 5, 2006 [Page 31] Internet-Draft Shim6 Protocol September 2005 first element refers to locator that was in the first element in the Locator List option. The generation number carried in this option and the Locator List option is used to verify that they refer to the same version of the locator list. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type =7 |3 |0| Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Locator List Generation | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |ReservedsElement Len | Element[1] ... | Element[2] | | ... | Element[3] ... | ... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+~IPv6 header, shim6/TCP/UDP header, etc... ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields:Reserved: 48-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Packet: A variable length fieldLocator List Generation: 32-bit unsigned integer. Indicates a generation number for the locator list to whichcontainsthepacketelements should apply. Element Len: 8-bit unsigned integer. The length inerror startingoctets of each element. This draft defines the cases when the length is 1, 2, or 3. Element[i]: A field with a number of octets defined by theIPv6 header. 6.8 Explorer Results Option FormatElement Len field. Provides preferences for the i'th locator in the Locator List option that is in use. When the Element length equals one, then the element consists of only a flags field. The set of flags is TBD:This needsAssume there will be two initially: BROKEN and TEMPORARY. The intent of the latter is toindicate which explorer packets (sequence numbers, sourceallow the distinction between more stable addresses anddestination locators) thatless stable addresses when shim6 is combined with IP mobility, when we might havebeen recently received,more stable home locators, and less stable care-of-locators. When the Element length equals two, the the element consists of a 1 octet flags field followed by a 1 octet priority field. The priority has the same semantics as the priority inorderDNS SRV records. When the Element length equals three, the the element consists of a 1 octet flags field followed by a 1 octet priority field, and a 1 octet weight field. The weight has the same semantics as the weight in DNS SRV records. 5.14.4 CGA Parameter Data Structure Option Format This option contains the CGA parameter data structure (hereafter Nordmark Expires March 5, 2006 [Page 32] Internet-Draft Shim6 Protocol September 2005 called the PDS). When HBA is used to validate the locators, the PDS contains the HBA multiprefix extension. When CGA is used to validate the locators, in addition to the CGA PDS, the signature will need to be included as a CGA Signature option. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 4 |0| Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ CGA Parameter Data Structure ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: CGA Parameter Data Structure: Variable length content. Content defined in [5]. 5.14.5 CGA Signature Option Format When CGA is used for validation of one or more of the locators in the PDS, then the message in question will need to contain this option. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 5 |0| Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: CGA Signature: Variable length content. Content defined in [5]. 5.14.6 ULID Pair Option Format It isn't clear whether we need this option. It depends whether we want to be able to setup a context for a ULID pair when that ULID pair can't be used to communicate. Thus the IPv6 addresses in the context establishment would not be the ULIDs. Nordmark Expires March 5, 2006 [Page 33] Internet-Draft Shim6 Protocol September 2005 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 2 |0| Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Sender ULID + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + Receiver ULID + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Reserved: 48-bit field. Reserved for future use. Zero on transmit. MUST be ignored on receipt. Sender ULID: A 128-bit IPv6 address. Receiver ULID: A 128-bit IPv6 address. 5.14.7 Packet In Error Option Format 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 7 |0| Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ IPv6 header, shim6/TCP/UDP header, etc ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Packet: A variable length field which contains the packet in error starting with the IPv6 header. 5.14.8 Explorer Results Option Format TBD: This needs to indicate which explorer messages (sequence numbers, source and destination locators?) that have been recently received, in order to detect which locator pairs work when there is no locator pair which works in both directions. When indicating locators it makes sense to use the offset in the Locator List (that was carries in the Locator List option), since this takes less space than including the locators themselves. TBD: add that data and other shim control messages are included in the learned results. Nordmark Expires March 5, 2006 [Page 34] Internet-Draft Shim6 Protocol September 2005 p 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 8 |0| Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sender Locator List Generation | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Receiver Locator List Generation | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Explorer Results ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Sender Locator List Generation: The generation number for the sender's locator list to which the indices below refer. Receiver Locator List Generation: The generation number for the receiver's locator list to which the indices below refer. Explorer Results: This field contains a list of elements, where each element indicates one locator pair for which the sender of the option has recently received a message. Each result occupies 32 bits. The list should be ordered so that the most recently heard locator pairs are first. SHOULD NOT include locator pairs that were last received more than some number of seconds ago. p 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sender Index | Receiver Index| Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Sender Index: 8-bit unsigned Integer. The Index is relative to the sender's locator list. Receiver Index: 8-bit unsigned Integer. The Index is relative to the receiver locator list. Sequence Number: 16-bit unsigned Integer. The Sequence number of the explorer message in which the locator pair < sender index, receiver index> was last heard. If this locator pair was last heard in a message other than an Explore message, then this number is zero. 6. Conceptual Model of a Host This section describes a conceptual model of one possible data Nordmark Expires March 5, 2006 [Page 35] Internet-Draft Shim6 Protocol September 2005 structure organization that hosts will maintain for the purposes of shim6. The described organization is provided to facilitate the explanation of how the shim6 protocol should behave. This document does not mandate that implementations adhere to this model as long as their external behavior is consistent with that described in this document. 6.1 Conceptual Data Structures The key conceptual data structure for the shim6 protocol is the host pair context. This is a data structures which contains the following information: o The peer ULID; ULID(peer) o The local ULID; ULID(local) o The list of peer locators, with their preferences; Ls(peer) o For each peer locator, a bit whether it has been validated using HBA, and a bit whether the locator has been probed to verify that the ULID is present at that location. o The preferred peer locator - used as destination; Lp(peer) o The set of local locators and the preferences; Ls(local) o The preferred local locator - used as source; Lp(local) o The context tag used to transmit control messages and ULP packets - allocated by the peer; CT(peer) o The context to expect in received control messages and extension headers - allocated by the local host; CT(local) o Reachability state for the locator pairs. o During pair exploration, information about the explore messages that have been sent and received. The receiver finds the context by looking it up using <Source Locator, Destination Locator, CT(local)>, where the context tag is in the shim header. The sender needs to be able to find the context state when a ULP packet is passed down from the ULP. In that case the lookup key is the pair of ULIDs. 7. Establishing Host Pair Contexts Host pair contexts are established using a 4-way exchange, which allows the responder to avoid creating state on the first packet. As part of this exchange each end allocates a context tag, and it shares this context tag and its set of locators with the peer. In some cases the 4-way exchange is not necessary, for instance when both ends try to setup the context at the same time, or when recovering from a context that has been garbage collected or lost at one of the hosts. Nordmark Expires March 5, 2006 [Page 36] Internet-Draft Shim6 Protocol September 2005 7.1 Normal context establishment The normal context establishment consists of a 4 message exchange in the order of I1, R1, I2, R2. Initiator Responder ------------- I1 --------------> <------------ R1 --------------- ------------- I2 --------------> <------------ R2 --------------- Figure 26 7.2 Concurrent context establishment When both ends try to initiate a context for the same ULID pair, then we might end up with crossing I1 messages, or since the no state is created when receiving the I1, a host might send a I1 after having sent a R1 message. Since a host remembers that it has sent an I1, it can respond to an I1 from the peer (for the same ULID), with a R2. Initiator Responder -\ ---\ ---\ /--- --- I1 ---\ /--- ---\ /--- I1 ---/ ---\ /--- --> <--- -\ ---\ ---\ /--- --- R2 ---\ /--- ---\ /--- R2 ---/ ---\ /--- --> <--- Nordmark Expires March 5, 2006 [Page 37] Internet-Draft Shim6 Protocol September 2005 Figure 27 If a host has received an I1 and sent an R1, then a ULP can trigger it to send an I1 message itself, since it doesn't retain any state when receiving the I1 message. Thus while one end is sending an I1 the other is sending an I2. Initiator Responder -\ ---\ ---\ --- I1 ---\ ---\ ---\ --> /--- /--- --- /--- R1--/ /--- <--- -\ ---\ ---\ /--- --- I2---\ /--- ---\ /--- I1 ---/ ---\ /--- --> <--- -\ ---\ ---\ /--- --- R2 ---\ /--- ---\ /--- R2 ---/ ---\ /--- --> <--- Figure 28 7.3 Context recovery Due to garbage collection, we can end up with one end having and Nordmark Expires March 5, 2006 [Page 38] Internet-Draft Shim6 Protocol September 2005 using the context state, and the other end not having any state. We need to be able to recover this state at the end that has lost it, before we can use it. This need can arise in two cases: The communication is working using the ULID pair as the locator pair, but a problem arises, and the end that has retained the context state decides to explore alternate locator pairs. The communication is working using a locator pair that is not the ULID pair, hence the ULP packets sent from a peer that has retained the context state use the shim payload header. In both cases the result is that the peer without state receives a shim message for which it has to context for the <source locator, destination locator, context tag>. In both of those case we can recover the context by having the node which doesn't have a context state, send back an R1bis [TBD] message, and have this complete a recover with a I2 and R2 message. If one end has garbage collected or lost the context state, it might try to create the context state (for the same ULID pair), by sending an I1 message. The peer can simply reply with an R2 message in this case. 7.4 Context confusion Since each end might garbage collect the context state we can have the case when one end has retained the context state and tries to use it, while the other end has lost the state. We discussed this in the previous section on recovery. But for the same reasons, when one host retains context tag X for ULID pair <A1, B1>, the other end might end up allocating that context tag for another ULID pair, e.g., <A3, B1> between the same hosts. In this case we can not use the recovery mechanisms since there needs to be separate context tags for the two ULID pairs. This type of "confusion" can be observed in two cases (assuming it is A that has retained the state and B has dropped it): B decides to create a context for ULID pair <A3, B1>, and allocates X as its context tag for this, and sends an I1 to A. A decides to create a context for ULID pair <A3, B1>, and starts the exchange by sending I1 to B. When B receives the I2 message, it allocates X as the context tag for this context. In both cases, A can detect that B has allocated X for ULID pair <A3, B1> even though that A still X as CT(peer) for ULID pair <A1, B1>. Thus A can detect that B must have lost the context for <A1, B1>. Nordmark Expires March 5, 2006 [Page 39] Internet-Draft Shim6 Protocol September 2005 The solution to this issue is TBD. The know possibilities are: Have A forcibly destroy the context for <A1, B1>, so that it can accept the new context for <A3, B1>. Have A accept the context for <A3, B1>, forget about the old context, but initiate a new (replacement) context for <A1, B1> by sending an I1 message. That I1 through R2 exchange will make B allocate a new context tag for <A1, B1>. Avoid the problem by changing the context tag allocation so that A and B allocates half of the bits (16 each) of the context tags, so that even if one end looses state, the peer can make sure that the context tags for each context are unique. 7.5 Sending I1 messages When the shim layer decides to setup a context for a ULID pair, it starts by allocating and initializing the context state for its end. As part of this it assigns its context tag to the context. Then it can send an I1 message. If the host does not receive an I2 or R2 message in response to the I1 message, then it needs to retransmit the I1 message. The retransmissions should use a retransmission timer with binary exponential backoff to avoid creating congestion issues for the network when lots of hosts perform this. If, after several retransmissions, there is no response, then most likely the peer does not implement the shim6 protocol, or there could be a firewall that blocks the protocol. In this case it makes sense for the host to remember to not try again to establish a host pair context with that ULID. However, any such negative caching should retained for a limit time; a few minutes would be appropriate, to allow things to recover should the host not be reachable at all when the shim tries to establish the context. If the host receives an ICMP error with "payload type unknown" and the included packet is the I1 packet it just sent, then this is a more reliable indication that the peer ULID does not implement shim6. 7.6 Receiving I1 messages If the host looks up a context for the ULID pair and the peer's (not its) context tag. If it finds such a context, the it needs to verify that the locators in the message are in fact part of the locator sets that are recorded in the existing context state. If this is not the case, then the I1 message MUST be silently ignored. (This can only happen when there is an ULID pair option in the I1 message.) If the locators are ok, then the host can respond with an R2 message as if it had received an I2 message and not an I1 message. Nordmark Expires March 5, 2006 [Page 40] Internet-Draft Shim6 Protocol September 2005 If there is no existing context state, then the host forms a verifier and sends this back to the peer in an I2 message. No state is created on the host in this case. 7.7 Receiving R1 messages When the host receives an R1 message, it verifies that the nonce matches what it sent in the I1 message, and that it has context state for the ULID pair. It then sends an I2 message, which includes the verifier option that was in the R1 message. The I2 message also includes A's locatorpairs worklist and the CGA parameter set. If CGA (and not HBA) is used to verify the locator list, then A also signs things and includes a CGA signature option. The host may receive an R1[bis] TBD message that was not sent in response to an I1 message but instead sent as a result of context recovery. The difference between an R1bis and an R1 message is that the former use the context tag of the responder??? TBD how there are handled and whether they are identical to an R1. 7.8 Retransmitting I2 messages If the initiator does not receive an R2 message after sending an I2 message it MAY retransmit the I2 message. But since the verifier option might have a limited lifetime, that is, the peer might reject verifier options that are too old to avoid replay attacks, the initiator SHOULD fall back to retransmitting the I1 message when there is no response to one or a few I2 messages. 7.9 Receiving I2 messages The responder checks that the nonce and the verifier option is consistent with what it might have sent in a recent R1 message (by verifying the hash it computed.) If this is ok, then the host checks if it already has context state for the ULID pair and the CT(peer). If it has such state, the I2 message was probably a retransmission. In this case the host sends an R2 message. If there is no context state, the responder allocates a context tag (CT(local)) and creates the context state for the context. It records the peer's locatorpair which worksset as well as its own locator set inboth directions. When indicating locators it makes sense to usetheoffset incontext. It MAY verify theLocator List (that was carriespeers locator set at this point in time, but theLLU option), since this takes less space than includingrequirement is that a locator MUST be verified before the host starts sending packets to that locator, thus the host MAY defer the verification until later. The host forms an R2 message with its locatorsthemselves. p 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type = 8 | Length | TBD | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ ... ~ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fields: Nordmark Expires March 31, 2006 [Page 36] Internet-Draft Shim6 Protocol September 2005 TBD:and its context tag, and includes the necessary options so that the peer can verify the Nordmark Expires March31,5, 2006 [Page37]41] Internet-Draft Shim6 Protocol September 20057. Conceptual Model of a Host This section describes a conceptual model of one possible data structure organization that hostslocators. R2 messages are never retransmitted. If the R2 message is lost, then the initiator willmaintain forretransmit either thepurposes of shim6.I2 or I1 message. Either retransmission will cause the responder to find the context state and respond with an R2 message. 7.10 Receiving R2 messages Thedescribed organization is providedinitiator can receive an R2 message in response tofacilitateeither an I1 or an I2 message, but theexplanationhandling ofhowtheshim6 protocol should behave. This document does not mandate that implementations adhere to this model as long as their external behaviorR2 isconsistent with that describedthe same inthis document. 7.1 Conceptual Data Structuresboth cases. Thekey conceptual data structure forhost first verifies that theshim6 protocolnonce is thehost pair context. This is a data structures which containssame as thefollowing information: o The peer ULID; ULID(peer) o The local ULID; ULID(local) o The list of peer locators, with their preferences; Ls(peer) o For each peer locator, a bit whetherone ithas been validated using HBA, and a bit whethersent (in thelocator has been probed to verify thatI1 or I2 message). If it doesn't match, theULIDR2 message ispresent at that location. o The preferred peer locator - used as destination; Lp(peer) o The set of local locators and the preferences; Ls(local) o The preferred local locator - used as source; Lp(local) o The context tag used to transmit packets - allocated by the peer; CT(peer) o The context to expect in received packets - allocated bysilently dropped. Then thelocal host; CT(local) o Reachability state forhost records thelocator pairs. o During pair exploration,informationaboutfrom theexplore packets that have been sent and received. The receiver findsR2 message in the contextby looking it up using <Source Locator, Destination Locator, CT(local)>, wherestate. It records thecontext tag ispeer's locator set in theFlow Label field for ULP payload packets, and incontext. It MAY verify theshim headers for control messages. The sender needs to be able to findpeers locator set at this point in time, but thecontext state when a packetrequirement ispassed down fromthat a locator MUST be verified before theULP. Inhost starts sending packets to thatNordmark Expires March 31, 2006 [Page 38] Internet-Draft Shim6 Protocol September 2005 caselocator, thus thelookup key ishost MAY defer thepair of ULIDs. Nordmark Expires March 31, 2006 [Page 39] Internet-Draft Shim6 Protocol September 2005verification until later. 8.Establishing Host Pair Contexts TBD 8.1 Sending I1 messages 8.2 Receiving I1 messages 8.3 Receiving R1 messages 8.4 Retransmitting I1 messages 8.5 Receiving I2 messages 8.6 Retransmitting I2 messages 8.7 Concurrent context establishment Nordmark Expires March 31, 2006 [Page 40] Internet-Draft Shim6 Protocol September 2005 9.No Such Content Errors TBDNordmark Expires March 31, 2006 [Page 41] Internet-Draft Shim6 Protocol September 2005 10.The Interim Meeting discussed ways to recover the context state at one end when the other end sees a failure (and starts sending Explore messages). The discussed approach is to use a R1 (or R1bis) message in response to a message with an unknown context, which would cause the context to be recreated. 9. Handling ICMP Error Messages The routers in the path as well as the destination might generate various ICMP error messages, such as host unreachable, packet too big, and payload type unknown. It is critical that these packets make it back up to the ULPs so that they can take appropriate action. When the ULP packets are sent unmodified, that is, while the initial locators=ULIDs are working, this introduces no new concerns; an implementation's existing mechanism for delivering these errors to the ULP will work. But when the shim on the transmitting side replaces the ULIDs in the IP address fields with some other locators, then an ICMP error coming back will have a "packet in error" which is not a packet that the ULP sent. Thus the implementation will have to apply the reverse mapping to the "packet in error" before passing the ICMP error up to the ULP. Nordmark Expires March 5, 2006 [Page 42] Internet-Draft Shim6 Protocol September 2005 This mapping is different than when receiving ULP packets from the peer, because in that case the packets contain CT(local). But the ICMP errors have a "packet in error" with CT(peer) since they were intended to be received by the peer. In any case, since the <Source Locator, Destination Locator, CT(peer)> has to be unique when received by the peer, the local host should also only be able to find one context that matches this tuple.Should the ULP packet have been conveyed using the protocol type encoding (Section 4.2), then that encoding must be undone for the packet in error before it is delivered to the ULP.If the ULP packet had been encapsulated in a shim6 payload message, then this extension header must be removed. The result needs to be that the ULP receives an ICMP error where the contained "packet in error" looks as if the shim did not exist.Nordmark Expires March 31, 2006 [Page 42] Internet-Draft Shim6 Protocol September 2005 11. Taredown10. Teardown of the Host Pair Context Each host can unilaterally decide when totaretear down a host-pair context. It is RECOMMENDED that hosts nottaretear down the context when they know that there is some upper layer protocol that might use the context. For example, an implementation might know this is there is an open socket which is connected to the ULID(peer). However, there might be cases when the knowledge is not readily available to the shim layer, for instance for UDP applications which not not connect their sockets, or any application which retains some higher level state across (TCP) connections and UDP packets. Thus it is RECOMMENDED that implementations minimize prematuretaredownteardown by observing the amount of traffic that is sent and received using the context, and only afterit appears quiescent, tare down the state. Nordmark Expires March 31, 2006 [Page 43] Internet-Draft Shim6 Protocol September 2005 12.it appears quiescent, tear down the state. 11. Updating the Locator Pairs TBDNordmark Expires March 31, 2006 [Page 44] Internet-Draft Shim6 Protocol September 2005 13.12. Various Probe Mechanisms TBDNordmark Expires March 31, 2006 [Page 45] Internet-Draft Shim6 Protocol September 2005 14.13. Rehoming to a Different Locator Pair TBDNordmark Expires March 31, 2006 [Page 46] Internet-Draft Shim6 Protocol September 2005 15.14. Payload Packets before a Switch When there is no context state for the ULID pair on the sender, there is no effect on how ULP packets are sent. If the host is using some heuristic for determining when to perform a deferred context establishment, then the host might need to do some accounting (count Nordmark Expires March 5, 2006 [Page 43] Internet-Draft Shim6 Protocol September 2005 the number of packets sent and received) even before there is a host- pair context. This need to count packets might also appear on the receive side, depending on what heuristics the implementation has chosen. If there is a host-pair context for the ULID pair, then the sender needs to verify whether context uses the ULIDs as locators, that is, whether Lp(peer) == ULID(peer) and Lp(local) == ULID(local). If this is the case, then packets will be sent unmodified by the shim. If it is not the case, then the logic in Section1615 will need to be used. There will also be some maintenance activity relating to (un)reachability detection, whether packets are sent with the original locators or not. The details of this is out of scope for this document and will be covered is follow-ons to[5]. Nordmark Expires March 31, 2006 [Page 47] Internet-Draft Shim6 Protocol September 2005 16.[6]. 15. Payload Packets after a Switch When sending packets, if there is a host-pair context for the ULID pair, and the ULID pair is no longer used as the locator pair, then the sender needs totransfertransform the packet.The transformation depends onApart from replacing thepayload type, since some protocol values can be carried without adding a shim6 extension header,IPv6 source andothers needdestination fields with a locator pair, an 8-octetheader. Beforeheader is added so that thepayload dependent transformation,receiver can find the context and inverse the transformation. First, the IP address fields are replaced. The IPv6 source address field is set to Lp(local) and the destination address field is set to Lp(peer). NOTE that this MUST NOT cause any recalculation of the ULP checksums, since the ULP checksums are carried end-to-end and the ULP pseudo-header contains the ULIDs which are preserved end-to-end. The sender skips any "routing sub-layer extensionheaders",headers" that the ULP might have included, thus it skips any hop-by-hop extension header, any routing header, and any destination options header that is followed by a routing header.The (extension) header that follows after that is viewed as the ULP header. IfAfter any such headers theULPshim6 extension headeris of a type listed in Section 4.2, then it is replaced by the "foo-in-shim6 value for that protocol type. And in this case, the context tag CT(peer) is placed in the flow label field in the IPv6 header. Then the packet canwill bepassed to the IP routing sub-layer. If the ULP header type is not listed in that section, thenadded. This might be before a Fragment header, a Destination Options header, an ESP or AH header, or a ULP header. The inserted shim6 Payload extension headeris inserted in the packet before the ULP header. In this case the context tag CT(peer) is also placed in the flow label field, and the packet is passed down to the routing sub- layer. TBD: We could use the Reserved field inincludes thepayload message instead of using flow label in this case.peer's context tag. The receiver parses the (extension) headers in order. Should it find a shim6 extension header it will look at the type field in that header. If the type is Payload message, then the packet must be passed to the shim6 payload handling for rewriting.If(Otherwise, thereceiver finds oneNordmark Expires March 5, 2006 [Page 44] Internet-Draft Shim6 Protocol September 2005 shim6 control messages are handled as specified in other parts ofthe eight additional payload type (for "foo-inside- shim6"), then it treatsthisanalogous to the case of a shim6 payload extension header. In both cases thedocument.) The receiver extracts the context tag from theIPv6 flow label field,payload message header, and uses this together with the IPv6 source and destination address fields to find a host-pair context. If no context is found, the receiver SHOULD generate a No Such Context error message (see Section9). Nordmark Expires March 31, 2006 [Page 48] Internet-Draft Shim6 Protocol September 20058). With the context in hand, the receiver can now replace the IP address fields with the ULIDs kept in the context. Finally, thetraces of the shim are removed from the packet; any payloadPayload extension header isremoved,removed from the packet (so that the ULP doesn't get confused by it), and the next header value in the preceding header is set to be the actual protocol number for the payload. Then the packet can be passed to theULP. Nordmark Expires March 31, 2006 [Page 49] Internet-Draft Shim6 Protocol September 2005 17.protocol identified by the next header value (which might be some function associated with the IP endpoint sublayer, or a ULP). 16. Open Issues The following open issues are known: o Is there need for keeping the list of locators private between the two communicating endpoints? We can potentially accomplish that when using CGA but not with HBA, but it comes at the cost of doing some public key encryption and decryption operations as part of the context establishment. o Forking the context state. On the mailing list we've discussed the need to fork the context state, so that different ULP streams can be sent using different locator pairs. No protocol extensions are needed if any forking is done independently by each endpoint. But if we want A to be able to tell B that certain traffic (a 5-tuple?) should be forked, then we need a way to convey this in the shim6 protocol. The hard part would be defining what selectors can be specified for the filter which determines which traffic uses which of the forks. So the question is whether we really need signaling for forking, or whether it is sufficient to alloweach endpoint to do its own selection of which locator pair it is using for which traffic. o If we allow forking, it seems like the mechanism for reachability detection, whether it is CUD or FBD, must be applied separately for each locator pair that is in use. Without forking a single locator pair will be in use for each host-pair context, hence things would be simpler. o Having the Locator List option contain all the prefixes implies extra bytes when the locators are also in the CGA Parameter Data Structure option. To optimize this will still need to provide an ordered list, so that the Locator Preferences can refer to the locators by "index". (The Explore Results option might need to refer to them by index as well.) o The indexeach endpoint toa locator might get outdo its own selection ofsynch betweenwhich locator pair it is using for which traffic. o If we allow forking, it seems like thetwo ends if messages with a new Locator List optionmechanism for reachability detection, whether it islost. It might make sense to include a "generation"CUD or"locator list version" number in the Locator List option soFBD, must be applied separately for each locator pair thatthe Locator Preference (and Explorer Result) options can refer tois in use. Without forking aparticular version of the list.single locator pair will be in use for each host-pair context, hence things would be simpler. o The specified mechanism (of relying on No Such Context errors) doesn't always detect the loss of the context on the peer when the original ULID=locators are used. See Section1817 for other options. Nordmark Expires March31,5, 2006 [Page50]45] Internet-Draft Shim6 Protocol September 2005 oWhich messages need sequence numbers to prevent parts of the protocol to operate on stale information should the shim6 information get out of date? JustIn the Locator ListUpdate message? o The CGA PDS might not need to be included in every LLU message. If it is associated with the ULID, it is sufficient to exchange it once. Then a HBA-protected LLU would not need anything (it can just change the preferences for the locators in any case), and a CGA-protected LLU would just need the signature option. o In the LLUoption, do we need to indicate which locators need to be validated using HBA vs. CGA? Or it could tell which locators are in the HBA extension in the PDS, and assume any others need CGA validation. o What happens when a host runs out of20N bit context tags? When is it safe for a host to reuse a context tag? With the unilateraltaredownteardown one end might discard the context state long before the other end.Nordmark Expires March 31, 2006 [Page 51] Internet-Draft Shim6 Protocol September 2005 18.17. Design Alternatives This document has picked a certain set of design choices in order to try to work out a bunch of the details, and stimulate discussion. But as has been discussed on the mailing list, there are other choices that make sense. This section tries to enumerate some alternatives.18.117.1 State Cleanup This document uses a timer based cleanup mechanism, as specified in Section11.10. An alternative would be to use an explicit CLOSE mechanism, akin to the one specified in HIP[17].[22]. If an explicit CLOSE handshake and associated timer is used, then there would no longer be a need for the No Context Error message due to a peer having garbage collected its end of the context. However, there is still potentially a need to have a No Context Error message in the case of a complete state loss of the peer (also known as a crash followed by a reboot). Only if we assume that the reboot takes at least the CLOSE timer, or that it is ok to not provide complete service until CLOSE timer minutes after the crash, can we completely do away with the No Context Error message.If there17.2 Detecting Context Loss This document specifies that context loss isno need for thedetected by receiving a No Such ContextError message, this also means that it might be possible to removeerror message from theneedpeer. Such messages are generated in response toexplicitly identifying thea shim6payload packets aftermessage that contain alocator switch, neither usingthefoo-inside-shim6 protocol number nor usingpeer's context tag, including the shim6 Payloadmessage. In essence,messages, when the receivercould identify the context based on the locator pair and the Flow Labeldoesn't have matching context. They are also generated inthe received packets. There might be some debugging and operational issues with removing the explicit identification of the shim6response to data packets after a locatorswitch. Should the receiver have lost the context state, then there will be no indication that something is going wrong. The shim on the receiver would happily pass up theswitch (because such payload packetsunmodified to the ULP, and the ULP would most likely see a checksum error. The checksum error is causedare identified as such by using theULP packet having different IP addresses than the packet that the sending ULP passed down to its shim. 18.2 Not Overloading the Flow Labelpayload message header). Thisdocument overloads the Flow Label field as a context tag for packets that are sent afterapproach has thelocators have been switched,disadvantage thatis, the packets whereit doesn't detect thesending shim has replacedloss of context state when the original ULIDswith some other locator pair.are used as locators, because there might be no shim6 messages exchanged if the reachability detection manages to suppress any extra messages. Nordmark Expires March31,5, 2006 [Page52]46] Internet-Draft Shim6 Protocol September 2005An alternative would beThe Interim Meeting discussed ways to recover the context state at one end when the other end sees a failure (and starts sending Explore messages). The discussed approach is tonot do this, and instead alwaysuse a R1 (or R1bis) message in response to a message with an unknown context, which would cause the context to be recreated. 18. Implications Elsewhere The general shim6 approach, as well as theshim6 Payload message to encapsulatespecifics of this proposed solution, has implications elsewhere. The key implications are: o Applications that perform referrals, or callbacks using IP addresses as thepayloads when'identifiers' can still function in limited ways, as described in [17]. But in order for such applications to be able to take advantage of the multiple locatorsare different than the ULIDs. While this doesn't removefor redundancy, the applications need tohave any QoS signaling protocolbeaware of the shim6 architectural implications Section 19, it does offer some other simplificationsmodified to either use fully qualified domain names as theprotocol, namely that there would no longer be a'identifiers', or they need touse designated protocol number values forpass all the"foo-inside-shim6";locators as thecases when those protocol numbers are used would instead use'identifiers' i.e., thePayload message. The downside of always using'identifier' from thePayload message afterapplications perspective becomes afailure isset of IP addresses instead of a single IP address. o Firewalls that today pass limited traffic, e.g., outbound TCP connections, would presumably block thepath MTU usable byshim6 protocol. This means that even when shim6 capable hosts are communicating, theULPI1 messages would be8 octets less. 18.3 Detecting Context Loss This document specifiesdropped, hence the hosts would not discover thatcontext losstheir peer isdetected by receiving a No Such Context error message from the peer. Such messages are generated in response to ashim6message that containcapable. This is in fact a feature, since if thepeer's context tag, including the shim6 Payload messages, when the receiver doesn't have matching context. They are also generated in responsehosts managed todataestablish a host-pair context, then the firewall would probably drop the "different" packets that are sent after alocator switch (because suchfailure (those using the shim6 payloadpacketsmessage with a TCP packet inside it). Thus stateful firewalls that areidentified as such usingmodified to allow shim6 messages through should also be modified to allow theoverloaded protocol field specified in Section 4.2).payload messages through after a failure. Thisapproach has the disadvantage ofpresumably implies that theoverloaded protocol type, and it also doesn't detectfirewall needs to track thelossset ofcontext state whenlocators in use by looking at theoriginal ULIDs are used as locators, because there might be noshim6messages exchanged if the reachability detection managesexchanges. Such firewalls might even want tosuppress any extra packets. Discussion: it isn't clear we could removeverify theprotocol type overloading with this approach, because without protocol type overloading it is undefinedlocators using the HBA/CGA verification themselves. o Signaling protocols for QoS or other things that involve having devices inwhat orderthereceiver would do things. Normallynetwork path look at IP addresses and port numbers, or IP addresses and Flow Labels, need to be invoked on thereceiver followshosts when thenext header chain and processes things in order. This also works with an overloaded protocol type;locator pair changes due to a failure. At thatnext header value is basically indicatingpoint in time those protocols need to inform the devices thatthere isazero length shim payload header. Thus the sender can control whether this happens before the processingnew pair ofsome other extension header or after. Without any such indication inIP addresses will be used for the flow. Note that this is thepacket,case even though we no longer overload thereceiver would findflow label as ashimcontextbased ontag; the<Source Locator, Destination Locator, Flow Label>. But would it process this before or after some other extension header, such as a MIPv6 Home Address Option, or IP-in-IP encapsulation header? An alternative would bein-path devices need toremoveknow about theprotocol field overloading and mandate that there be some low-frequency periodic Reachability Probe/ Reply messages,use of the new locators evenwhen there is bidirectional communication andthough theULPs report that theyflow label stays the same. o MTU implications. The path MTU mechanisms we use aredoing fine. Such an approach would be able to detect state loss even before there isrobust against different packets taking different paths through the Internet, by computing a minimum over the recently observed path MTUs. When shim6 fails over from using one locatorswitch.pair to another pair, this means that packets might travel over a different path through the Internet, hence the path MTU might be Nordmark Expires March31,5, 2006 [Page53]47] Internet-Draft Shim6 Protocol September 2005Presumablyquite different. Perhaps suchprobes cana path change would besuppressed when there are no ULP packets being senta good hint to thepeer. Nordmark Expires March 31, 2006 [Page 54] Internet-Draft Shim6 Protocol September 2005 19. Implications Elsewhere The general shim6 approach, as well as the specifics of this proposed solution, has implications elsewhere.path MTU mechanism to try a larger MTU? Thekey implications are: o Applicationsfact thatperform referals, or callbacks using IP addresses asthe'identifiers' can still function in limited ways, as described in [12]. But in ordershim, at least forsuch applications to be able to take advantage ofuncommon payload types, will add an 8 octet extension header (the payload message) after a locator switch, can also affect themultiple locatorsusable path MTU forredundancy,theapplications need to be modified to either use fully qualified domain names asULPs. In this case the'identifiers', or they needMTU change is local topass allthelocators assending host, thus conveying the'identifiers' i.e.,change to the'identifier' fromULPs is an implementation matter. 19. Security Considerations This document satisfies theapplications perspective becomes a set of IP addresses insteadconcerns specified in [16] as follows: o TBD: Using HBA or CGA for ... Some ofa single IP address.the residual threats in this proposal are: oFirewalls that today pass limited traffic, e.g., outbound TCP connections, would presumably blockAn attacker which arrives late on theshim6 protocol. This means that even when shim6 capable hosts are communicating,path (after theI1 packets would be dropped, hencecontext has been established) can use thehosts would not discover that theirNo Such Context error to cause one peeris shim6 capable. This isto recreate the context, and at that point infact a feature, since iftime thehosts managedattacker can observe all of the exchange. But this doesn't seem toestablish a host-pair context, thenopen any new doors for thefirewall would probably dropattacker since such an attacker can observe the"different" packetsContext tags that aresent after a failure (either using a "TCP-inside-shim6" protocol number, or usingbeing used, and once known it can use those to send bogus messages. o An attacker which is present on the path so that it can find out theshim6 payload packet withcontext tags, can generate aTCPNo Such Context error after it has moved off the path. For this packetinside it). Thus stateful firewalls that are modifiedtoallow shim6 packets through should alsobemodifiedeffective it needs toallow the payload packets through afterhave afailure. This presumably implies that the firewall needssource locator which belongs totrack the set of locators in use by looking attheshim6 exchanges. o Signaling protocols for QoS or other things that involve having devices incontext, thus there can not be "too much" ingress filtering between thenetwork path look at IP addresses and port numbers, or IP addressesattackers new location andFlow Labels, needthe communicating peers. But this doesn't seem to beinvoked onthat severe, because once thehosts whenerror causes thelocator pair changes due to a failure. At that point in time those protocols needcontext toinform the devices thatbe torn down and re-established, a new pair ofIP addressescontext tags will beused forused, which will not be known to theflow, as well asattacker. If this is still anew Flow Label being used. o MTU implications. The path MTU mechanismsconcern, weuse are robust against different packets taking different paths throughcould require a 2-way handshake "did you really loose the state?" in response to the error message. o It might be possible for an attacker to try random 32-bit context tags and see if they can cause disruption for communication between two hosts. We can make this harder by using a larger context tag; 47 bits is theInternet, by computing a minimum overlargest that fit in therecently observed path MTUs. When shim6 fails over from using one locator pair to another pair,8-octet payload header. If thismeans that packets might travel over a different path throughisn't sufficient, one could use an even larger tag in theInternt, henceshim6 control messages, and use thepath MTU might be quite different. Perhaps such a path change would be a good hint tolow-order 47 bits in thepath MTU mechanismpayload header. 20. IANA Considerations IANA needs totryallocate alarger MTU? The fact thatnew IP Next Header value for this protocol. TBD: theshim, at leastIANA rules foruncommon payload types, willthe shim6 message types and option types. Nordmark Expires March31,5, 2006 [Page55]48] Internet-Draft Shim6 Protocol September 2005add21. Change Log The following changes have been made since draft-ietf-shim6-proto-00: o Removed the use of the flow label and the overloading of the IP protocol numbers. Instead, when the locator pair is not the ULID pair, the ULP payloads will be carried with an 8 octet extensionheader (the payload message) after a locator switch, can also affect the usable path MTU for the ULPs. In this case the MTU changeheader. The belief islocalthat it is possible to remove these extra bytes by defining future shim6 extensions that exchange more information between thesending host, thus conveying the changehosts, without having to overload theULPs is an implementation matter. Nordmark Expires March 31, 2006 [Page 56] Internet-Draft Shim6 Protocol September 2005 20. Security Considerations Some offlow label or theresidual threats in this proposal are:IP protocol numbers. oAn attacker which arrives late on the path (afterGrew the contexthas been established) can usetag from 20 bits to 32 bits, with theNo Such Context errorpossibility tocause one peergrow it to 47 bits. This implies changes torecreate the context, and at that point in timetheattacker can observe all ofmessage formats. o Almost by accident, theexchange. But this doesn't seem to open anynewdoorsshim6 message format is very close to the HIP message format. o Adopted the HIP format for theattackeroptions, sincesuch an attacker can observethis makes it easier to describe variable length options. The original, ND-style, option format requires internal padding in theContext tagsoptions to make them 8 octet length in total, while the HIP format handles thatare being used,using the option length field. o Removed some of the control messages, andonce known it can use those to send bogus messages.renamed the other ones. oAn attacker which is present onAdded a "generation" number to thepathLocator List option, so thatit can find outthecontext tags,peers cangenerate a No Such Context error after it has moved offensure that thepath. For this packet to be effective it needs to have a source locator which belongspreferences refer to thecontext, thus there can not be "too much" ingress filtering betweenright "version" of theattackers new locationLocator List. o In order for FBD andthe communicating peers. But this doesn't seemexploration tobe that severe, because oncework when there theerror causesuse of the contextto be torn down and re-established,is forked, that is different ULP messages are sent over different locator pairs, things are anewlot easier if there is only one current locator pairof context tags will be used, which will not be known toused for each context. Thus the forking of theattacker. If thiscontext isstill a concern, we could requirenow causing a2-way handshake "did you really loose the state?" in responsenew context tothe error message. o It mightbepossibleestablished foran attacker to try random 24-bitthe same ULID; the new contexttags and see if they can cause disruption for communication between two hosts. We can make this harder by usinghaving alargernew contexttag (64-bits?) in the shim6 control messages, and use the low-order 24 bitstag. The original context is referred to as theflow label. Nordmark Expires March 31, 2006 [Page 57] Internet-Draft Shim6 Protocol September 2005 21."default" context for the ULID pair. o Added more background material and textual descriptions. 22. Acknowledgements Over the years many people active in the multi6 and shim6 WGs have contributed ideas a suggestions that are reflected in this draft. Thanks to Marcelo Bagnulo for providing comments on earlier versions of this draft. 23. References 23.1 Normative References [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. Nordmark Expires March31,5, 2006 [Page58]49] Internet-Draft Shim6 Protocol September 200522. References 22.1 Normative References [1][2] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998.[2][3] Narten, T., Nordmark, E., and W. Simpson, "Neighbor Discovery for IP Version 6 (IPv6)", RFC 2461, December 1998.[3][4] Thomson, S. and T. Narten, "IPv6 Stateless Address Autoconfiguration", RFC 2462, December 1998.[4][5] Bagnulo, M., "Hash Based Addresses (HBA)", draft-ietf-shim6-hba-00 (work in progress), July 2005.[5][6] Beijnum, I., "Shim6 Reachability Detection", draft-ietf-shim6-reach-detect-00 (work in progress), July 2005.[6][7] Arkko, J., "Failure Detection and LocatorSelectionPair Exploration DesignConsiderations", draft-ietf-shim6-failure-detection-00for IPv6 Multihoming", draft-ietf-shim6-failure-detection-01 (work in progress),JulyOctober 2005.22.223.2 Informative References[7] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.[8] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for specifying the location of services (DNS SRV)", RFC 2782, February 2000. [9] Ferguson, P. and D. Senie, "Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing", BCP 38, RFC 2827, May 2000. [10] Narten, T. and R. Draves, "Privacy Extensions for Stateless Address Autoconfiguration in IPv6", RFC 3041, January 2001. [11] Draves, R., "Default Address Selection for Internet Protocol version 6 (IPv6)", RFC 3484, February 2003.[10][12] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, July 2003. [13] Abley, J., Black, B., and V. Gill, "Goals for IPv6 Site- Multihoming Architectures", RFC 3582, August 2003.[11][14] Rajahalme, J., Conta, A., Carpenter, B., and S. Deering, "IPv6 Flow Label Specification", RFC 3697, March 2004.[12][15] Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast Addresses", RFC 4193, October 2005. Nordmark Expires March 5, 2006 [Page 50] Internet-Draft Shim6 Protocol September 2005 [16] Nordmark, E., "Threats relating to IPv6 multihoming solutions", draft-ietf-multi6-multihoming-threats-03 (work in progress), January 2005. [17] Nordmark, E., "Shim6 Application Referral Issues", draft-ietf-shim6-app-refer-00 (work in progress), July 2005.[13][18] Abley, J., "Shim6 Applicability Statement", draft-ietf-shim6-applicability-00 (work in progress), July 2005.Nordmark Expires March 31, 2006 [Page 59] Internet-Draft Shim6 Protocol September 2005 [14][19] Huston, G., "Architectural Commentary on Site Multi-homing using a Level 3 Shim", draft-ietf-shim6-arch-00 (work in progress), July 2005.[15][20] Bagnulo, M. and J. Arkko, "Functional decomposition of the multihoming protocol", draft-ietf-shim6-functional-dec-00 (work in progress), July 2005.[16][21] Nordmark, E. and M. Bagnulo, "Multihoming L3 Shim Approach", draft-ietf-shim6-l3shim-00 (work in progress), July 2005.[17][22] Moskowitz, R., "Host Identity Protocol", draft-ietf-hip-base-03 (work in progress), June 2005.[18][23] Lear, E. and R. Droms, "What's In A Name:Thoughts from the NSRG", draft-irtf-nsrg-report-10 (work in progress), September 2003. Author's Address Erik Nordmark Sun Microsystems 17 Network Circle Menlo Park, CA9404394025 USA Phone: +1 650 786 2921 Email: erik.nordmark@sun.com Nordmark Expires March31,5, 2006 [Page60]51] Internet-Draft Shim6 Protocol September 2005 Intellectual Property Statement The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. Disclaimer of Validity 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 ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Copyright Statement Copyright (C) The Internet Society (2005). 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. Acknowledgment Funding for the RFC Editor function is currently provided by the Internet Society. Nordmark Expires March31,5, 2006 [Page61]52] ----