idnits 2.17.1 draft-ietf-hip-via-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** You're using the IETF Trust Provisions' Section 6.b License Notice from 12 Sep 2009 rather than the newer Notice from 28 Dec 2009. (See https://trustee.ietf.org/license-info/) Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Line 235 has weird spacing: '... Length len...' == Line 239 has weird spacing: '...eserved reser...' -- The document date (March 8, 2010) is 5156 days in the past. Is this intentional? Checking references for intended status: Experimental ---------------------------------------------------------------------------- ** Obsolete normative reference: RFC 5201 (Obsoleted by RFC 7401) -- Obsolete informational reference (is this intentional?): RFC 5204 (Obsoleted by RFC 8004) -- Obsolete informational reference (is this intentional?): RFC 5226 (Obsoleted by RFC 8126) == Outdated reference: A later version (-07) exists of draft-ietf-hip-bone-04 == Outdated reference: A later version (-26) exists of draft-ietf-p2psip-base-07 Summary: 2 errors (**), 0 flaws (~~), 5 warnings (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 HIP Working Group G. Camarillo 3 Internet-Draft A. Keranen 4 Intended status: Experimental Ericsson 5 Expires: September 9, 2010 March 8, 2010 7 Host Identity Protocol (HIP) Multi-hop Routing Extension 8 draft-ietf-hip-via-01.txt 10 Abstract 12 This document specifies two extensions to HIP to implement multi-hop 13 routing. The first extension allows implementing source routing in 14 HIP. That is, a host sending a HIP packet can define a set of hosts 15 that the HIP packet should traverse. The second extension allows a 16 HIP packet to carry and record the list of hosts that forwarded it. 18 Status of this Memo 20 This Internet-Draft is submitted to IETF in full conformance with the 21 provisions of BCP 78 and BCP 79. 23 Internet-Drafts are working documents of the Internet Engineering 24 Task Force (IETF), its areas, and its working groups. Note that 25 other groups may also distribute working documents as Internet- 26 Drafts. 28 Internet-Drafts are draft documents valid for a maximum of six months 29 and may be updated, replaced, or obsoleted by other documents at any 30 time. It is inappropriate to use Internet-Drafts as reference 31 material or to cite them other than as "work in progress." 33 The list of current Internet-Drafts can be accessed at 34 http://www.ietf.org/ietf/1id-abstracts.txt. 36 The list of Internet-Draft Shadow Directories can be accessed at 37 http://www.ietf.org/shadow.html. 39 This Internet-Draft will expire on September 9, 2010. 41 Copyright Notice 43 Copyright (c) 2010 IETF Trust and the persons identified as the 44 document authors. All rights reserved. 46 This document is subject to BCP 78 and the IETF Trust's Legal 47 Provisions Relating to IETF Documents 48 (http://trustee.ietf.org/license-info) in effect on the date of 49 publication of this document. Please review these documents 50 carefully, as they describe your rights and restrictions with respect 51 to this document. Code Components extracted from this document must 52 include Simplified BSD License text as described in Section 4.e of 53 the Trust Legal Provisions and are provided without warranty as 54 described in the BSD License. 56 Table of Contents 58 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 59 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . 3 60 2.1. Requirements Language . . . . . . . . . . . . . . . . . . . 3 61 2.2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . 3 62 3. Protocol Definitions . . . . . . . . . . . . . . . . . . . . . 4 63 3.1. Creating and Processing Via Lists . . . . . . . . . . . . . 4 64 3.2. Creating Destination Lists . . . . . . . . . . . . . . . . 4 65 3.3. Processing Destination Lists . . . . . . . . . . . . . . . 5 66 4. Packet Formats . . . . . . . . . . . . . . . . . . . . . . . . 5 67 4.1. Source and Destination Route List Parameters . . . . . . . 6 68 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 7 69 6. Security Considerations . . . . . . . . . . . . . . . . . . . . 7 70 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . 8 71 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 8 72 8.1. Normative References . . . . . . . . . . . . . . . . . . . 8 73 8.2. Informative References . . . . . . . . . . . . . . . . . . 8 74 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 8 76 1. Introduction 78 When HIP [RFC5201] is used in certain contexts, hosts need the 79 ability to perform source routing. That is, a host needs the ability 80 to send a HIP packet that will traverse a set of hosts before 81 reaching its destination. Such features are needed, e.g., in HIP 82 BONE [I-D.ietf-hip-bone] overlay networks or if two hosts wish to 83 keep a third, or more, HIP hosts on the signaling path. This 84 document defines an extension that provides HIP with this 85 functionality. 87 Additionally, when HIP packets are routed through multiple hosts, 88 some of these hosts (e.g., the destination host) need the ability to 89 know the hosts a particular packet traversed. This document defines 90 another extension that provides HIP with this functionality. 92 These two extensions enable multi-hop routing in HIP. Before these 93 extensions were specified, there were standardized ways for 94 supporting only a single intermediate host (e.g., a rendezvous server 95 [RFC5204]) between the source of a HIP packet and its destination. 97 2. Terminology 99 2.1. Requirements Language 101 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 102 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 103 document are to be interpreted as described in RFC 2119 [RFC2119]. 105 2.2. Definitions 107 The following terms used in this document are similar to those 108 defined by RELOAD [I-D.ietf-p2psip-base] but used here in context of 109 HIP. 111 Destination list: A list of HITs of the hosts that a HIP packet 112 should traverse. 114 Via list: A list of HITs of the hosts that a HIP packet has 115 traversed. 117 Symmetric routing: A response to a message is routed back using the 118 same set of intermediary nodes as the original message used, 119 except in reversed order. Also known as symmetric recursive 120 routing. 122 3. Protocol Definitions 124 The multi-hop routing extensions may be used in different contexts 125 and whether a new HIP packet should, for example, include a Via list 126 or have different options enabled, can depend on the particular use 127 case, local policies, and different protocols using the extension. 128 This section defines how the new parameters are handled, but when to 129 use these extensions is out of scope for this document. 131 3.1. Creating and Processing Via Lists 133 When a host sending a HIP packet needs to record the hosts that are 134 on the path that the HIP packet traverses, it includes an empty 135 ROUTE_VIA parameter to the packet. 137 A host that receives a packet with a ROUTE_VIA parameter SHOULD add 138 its own HIT to the end of the ROUTE_VIA parameter, unless it is the 139 receiver of the packet. If the host uses a different HIT on the HIP 140 association it used for receiving the packet than for sending it 141 forward, it SHOULD also add the receiving HIT to the route list 142 before the sending HIT. 144 If the host is the receiver of the packet, and the received packet 145 generates a response HIP packet, the host checks the SYMMETRIC flag 146 from the ROUTE_VIA parameter. If the SYMMETRIC flag is set, the host 147 MUST create a ROUTE_DST parameter from the ROUTE_VIA parameter, as 148 described in Section 3.2, and include it in the response packet. 149 Also, if an intermediary host generates a new HIP packet (e.g., an 150 error NOTIFY packet) due to a HIP packet that had a ROUTE_VIA 151 parameter with SYMMETRIC flag set, and the new packet is intended for 152 the sender of the original HIP packet, the host SHOULD construct and 153 add a ROUTE_DST parameter into the new packet as in the previous 154 case. 156 3.2. Creating Destination Lists 158 A host that needs to define the other hosts that should be on the 159 path a HIP packet traverses adds a ROUTE_DST parameter to the HIP 160 packet. The host may either decide the path independently, or it may 161 create the path based on a ROUTE_VIA parameter. Only the originator 162 of a signed HIP packet can add a ROUTE_DST parameter to the HIP 163 packet since the parameter is covered by the signature. 165 When a host creates a ROUTE_DST parameter due to receiving a packet 166 with a ROUTE_VIA parameter, it copies all the HITs in the ROUTE_VIA 167 parameter to the ROUTE_DST parameter, but in reversed order. This 168 results in HIP response packet being forwarded using the same set of 169 hosts as the packet for which the response was generated for. 171 3.3. Processing Destination Lists 173 When a host receives a HIP packet that contains a ROUTE_DST 174 parameter, it first looks up its own HIT from the route list. If 175 host's own HIT is not in the list and the host is not the receiver of 176 the packet, the packet was incorrectly forwarded and MUST be dropped. 177 If the host's HIT is in the list more than once, the list is invalid 178 and the packet MUST be dropped to avoid forwarding loops. Next hop 179 for the packet is the HIT after host's own HIT in the list. If the 180 host's HIT was the last HIT in the list, the next hop is the 181 receiver's HIT in the HIP header. 183 If the MUST_FOLLOW flag in the ROUTE_DST parameter is not set, the 184 host SHOULD check whether it has a valid locator for one of the hosts 185 later in the list, or for the receiver of the packet, and it MAY 186 select such a host as the next hop. If the MUST_FOLLOW flag is set, 187 the host MUST NOT skip any hosts in the list. 189 If the host has a valid locator for the next hop, it MUST forward the 190 HIP packet to the next hop host. If the host can not determine a 191 valid locator for the next hop host, it SHOULD drop the packet and 192 SHOULD send back a NOTIFY error packet with type UNKNOWN_NEXT_HOP 193 (value [TBD by IANA; 90]). The Notification Data field for the error 194 notifications SHOULD contain the HIP header of the rejected packet 195 and the ROUTE_DST parameter. 197 4. Packet Formats 199 This memo defines two new HIP parameters that are used for recording 200 a route via multiple hosts (ROUTE_VIA) and for defining a route a 201 packet should traverse by the sender of the packet (ROUTE_DST). 203 The ROUTE_DST parameter is integrity protected with the signature 204 (where present) but ROUTE_VIA is not so that intermediary hosts can 205 add their own HITs to the list. Both parameters have critical type 206 (as defined in Section 5.2.1 of [RFC5201]) since the packet will not 207 be properly routed unless all hosts on path recognize the parameters. 209 4.1. Source and Destination Route List Parameters 211 0 1 2 3 212 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 213 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 214 | Type | Length | 215 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 216 | Flags | Reserved | 217 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 218 | | 219 | HIT #1 | 220 | | 221 | | 222 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 223 . . . 224 . . . 225 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 226 | | 227 | HIT #n | 228 | | 229 | | 230 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 232 Type [ TBD by IANA 233 ROUTE_DST: 971 234 ROUTE_VIA: 65525 ] 235 Length length in octets, excluding Type and Length 236 (i.e., number-of-HITs * 16 + 4) 237 Flags bit flags that can be used for requesting special 238 handling of the parameter 239 Reserved reserved for future use 240 HIT Host Identity Tag of one of the hosts on the path 242 Figure 1: Format of the ROUTE_VIA and ROUTE_DST Parameters 244 Figure 1 shows the format of both ROUTE_VIA and ROUTE_DST parameters. 245 The ROUTE_DST parameter, if present, MUST have at least one HIT, but 246 the ROUTE_VIA parameter can also have zero HITs. Both can contain at 247 most 32 HITs. The Flags field is used for requesting special 248 handling for via and destination lists. The flags defined in this 249 document are shown in Table 1. The Reserved field can be used by 250 future extensions; it MUST be zero when sending and ignored when 251 receiving this parameter. 253 +-----+-------------+-----------------------------------------------+ 254 | Pos | Name | Purpose | 255 +-----+-------------+-----------------------------------------------+ 256 | 0 | SYMMETRIC | The response packet MUST be sent with a | 257 | | | ROUTE_DST list made from the ROUTE_VIA list | 258 | | | containing this flag, i.e., using symmetric | 259 | | | routing. | 260 | 1 | MUST_FOLLOW | All the hosts in a ROUTE_DST list MUST be | 261 | | | traversed, i.e., even if a host would have a | 262 | | | valid locator for a host beyond the next hop, | 263 | | | it MUST NOT forward the packet there but to | 264 | | | the next hop host. | 265 +-----+-------------+-----------------------------------------------+ 267 Table 1: Bit Flags in ROUTE_VIA and ROUTE_DST Parameters 269 The "Pos" column in Table 1 shows the bit position of the flag (as in 270 Figure 1) in the Flags field, "Name" gives the name of the flag used 271 in this document, and "Purpose" gives brief description of the 272 meaning of that flag. 274 The flags apply to both ROUTE_VIA and ROUTE_DST parameters and when a 275 ROUTE_DST parameter is added to a packet because of a ROUTE_VIA 276 parameter, the same flags MUST be copied to the ROUTE_DST parameter. 278 5. IANA Considerations 280 This section is to be interpreted according to [RFC5226]. 282 This document updates the IANA Registry for HIP Parameter Types 283 [RFC5201] by assigning new HIP Parameter Type values for the new HIP 284 Parameters: ROUTE_VIA and ROUTE_DST (defined in Section 4). This 285 document also defines a new Notify Packet Type [RFC5201] 286 UNKNOWN_NEXT_HOP in Section 3.3. 288 6. Security Considerations 290 A malicious host could craft a destination route list that contains 291 the same HIT more than once and thus create a forwarding loop. The 292 check described in Section 3.3 should break such loops but hosts MAY 293 in addition utilize the OVERLAY_TTL [I-D.ietf-hip-bone] parameter for 294 additional protection against forwarding loops. 296 7. Acknowledgments 298 Tom Henderson provided valuable comments and improvement suggestions 299 for this document. 301 8. References 303 8.1. Normative References 305 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 306 Requirement Levels", BCP 14, RFC 2119, March 1997. 308 [RFC5201] Moskowitz, R., Nikander, P., Jokela, P., and T. Henderson, 309 "Host Identity Protocol", RFC 5201, April 2008. 311 8.2. Informative References 313 [RFC5204] Laganier, J. and L. Eggert, "Host Identity Protocol (HIP) 314 Rendezvous Extension", RFC 5204, April 2008. 316 [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an 317 IANA Considerations Section in RFCs", BCP 26, RFC 5226, 318 May 2008. 320 [I-D.ietf-hip-bone] 321 Camarillo, G., Nikander, P., Hautakorpi, J., Keranen, A., 322 and A. Johnston, "HIP BONE: Host Identity Protocol (HIP) 323 Based Overlay Networking Environment", 324 draft-ietf-hip-bone-04 (work in progress), January 2010. 326 [I-D.ietf-p2psip-base] 327 Jennings, C., Lowekamp, B., Rescorla, E., Baset, S., and 328 H. Schulzrinne, "REsource LOcation And Discovery (RELOAD) 329 Base Protocol", draft-ietf-p2psip-base-07 (work in 330 progress), February 2010. 332 Authors' Addresses 334 Gonzalo Camarillo 335 Ericsson 336 Hirsalantie 11 337 02420 Jorvas 338 Finland 340 Email: Gonzalo.Camarillo@ericsson.com 341 Ari Keranen 342 Ericsson 343 Hirsalantie 11 344 02420 Jorvas 345 Finland 347 Email: Ari.Keranen@ericsson.com