idnits 2.17.1 draft-nikander-esp-beet-mode-09.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** It looks like you're using RFC 3978 boilerplate. You should update this to the boilerplate described in the IETF Trust License Policy document (see https://trustee.ietf.org/license-info), which is required now. -- Found old boilerplate from RFC 3978, Section 5.1 on line 15. -- Found old boilerplate from RFC 3978, Section 5.5, updated by RFC 4748 on line 1093. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 1104. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 1111. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 1117. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- == No 'Intended status' indicated for this document; assuming Proposed Standard Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There are 11 instances of too long lines in the document, the longest one being 7 characters in excess of 72. == There are 5 instances of lines with non-RFC6890-compliant IPv4 addresses in the document. If these are example addresses, they should be changed. == There are 2 instances of lines with private range IPv4 addresses in the document. If these are generic example addresses, they should be changed to use any of the ranges defined in RFC 6890 (or successor): 192.0.2.x, 198.51.100.x or 203.0.113.x. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust Copyright Line does not match the current year -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (August 5, 2008) is 5733 days in the past. Is this intentional? -- Found something which looks like a code comment -- if you have code sections in the document, please surround them with '' and '' lines. Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) ** Downref: Normative reference to an Informational RFC: RFC 2367 (ref. '3') ** Obsolete normative reference: RFC 2401 (ref. '4') (Obsoleted by RFC 4301) -- Obsolete informational reference (is this intentional?): RFC 4423 (ref. '10') (Obsoleted by RFC 9063) -- Obsolete informational reference (is this intentional?): RFC 5201 (ref. '11') (Obsoleted by RFC 7401) Summary: 4 errors (**), 0 flaws (~~), 4 warnings (==), 10 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group P. Nikander 3 Internet-Draft J. Melen 4 Expires: February 6, 2009 Ericsson Research Nomadic Lab 5 August 5, 2008 7 A Bound End-to-End Tunnel (BEET) mode for ESP 8 draft-nikander-esp-beet-mode-09 10 Status of this Memo 12 By submitting this Internet-Draft, each author represents that any 13 applicable patent or other IPR claims of which he or she is aware 14 have been or will be disclosed, and any of which he or she becomes 15 aware will be disclosed, in accordance with Section 6 of BCP 79. 17 Internet-Drafts are working documents of the Internet Engineering 18 Task Force (IETF), its areas, and its working groups. Note that 19 other groups may also distribute working documents as Internet- 20 Drafts. 22 Internet-Drafts are draft documents valid for a maximum of six months 23 and may be updated, replaced, or obsoleted by other documents at any 24 time. It is inappropriate to use Internet-Drafts as reference 25 material or to cite them other than as "work in progress." 27 The list of current Internet-Drafts can be accessed at 28 http://www.ietf.org/ietf/1id-abstracts.txt. 30 The list of Internet-Draft Shadow Directories can be accessed at 31 http://www.ietf.org/shadow.html. 33 This Internet-Draft will expire on February 6, 2009. 35 Copyright Notice 37 Copyright (C) The IETF Trust (2008). 39 Abstract 41 This document specifies a new mode, called Bound End-to-End Tunnel 42 (BEET) mode, for IPsec ESP. The new mode augments the existing ESP 43 tunnel and transport modes. For end-to-end tunnels, the new mode 44 provides limited tunnel mode semantics without the regular tunnel 45 mode overhead. The mode is intended to support new uses of ESP, 46 including mobility and multi-address multi-homing. 48 Table of Contents 50 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 51 2. Conventions used in this document . . . . . . . . . . . . . . 4 52 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 53 3. Background . . . . . . . . . . . . . . . . . . . . . . . . . . 5 54 3.1. Related work . . . . . . . . . . . . . . . . . . . . . . . 5 55 4. Use scenarios . . . . . . . . . . . . . . . . . . . . . . . . 6 56 4.1. NAT traversal . . . . . . . . . . . . . . . . . . . . . . 6 57 4.2. Mobile IP . . . . . . . . . . . . . . . . . . . . . . . . 7 58 4.2.1. Mobile IPv4 . . . . . . . . . . . . . . . . . . . . . 7 59 4.2.2. Mobile IPv4 route optimization . . . . . . . . . . . . 10 60 4.2.3. Mobile IPv6 . . . . . . . . . . . . . . . . . . . . . 10 61 4.3. End-node multi-address multi-homing . . . . . . . . . . . 11 62 4.4. Host Identity Protocol . . . . . . . . . . . . . . . . . . 11 63 5. Protocol definition . . . . . . . . . . . . . . . . . . . . . 13 64 5.1. Changes to Security Association data structures . . . . . 13 65 5.2. Packet format . . . . . . . . . . . . . . . . . . . . . . 13 66 5.3. Cryptographic processing . . . . . . . . . . . . . . . . . 15 67 5.4. IP header processing . . . . . . . . . . . . . . . . . . . 15 68 5.5. Handling of outgoing packets . . . . . . . . . . . . . . . 16 69 5.6. Handling of incoming packets . . . . . . . . . . . . . . . 17 70 5.7. IPv4 options handling . . . . . . . . . . . . . . . . . . 17 71 6. Policy considerations . . . . . . . . . . . . . . . . . . . . 19 72 7. PF_KEY extensions . . . . . . . . . . . . . . . . . . . . . . 20 73 8. New requirements on Key Management protocols . . . . . . . . . 21 74 9. Implementing the functionality with other means . . . . . . . 22 75 10. Security Considerations . . . . . . . . . . . . . . . . . . . 24 76 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 77 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 27 78 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 28 79 13.1. Normative references . . . . . . . . . . . . . . . . . . . 28 80 13.2. Informative references . . . . . . . . . . . . . . . . . . 28 81 Appendix A. Implementation experiences . . . . . . . . . . . . . 29 82 Appendix B. Garden beets . . . . . . . . . . . . . . . . . . . . 30 83 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 31 84 Intellectual Property and Copyright Statements . . . . . . . . . . 32 86 1. Introduction 88 The current IPsec ESP specification [5] defines two modes of 89 operation: tunnel mode and transport mode. The tunnel mode is mainly 90 intended for non-end-to-end use where one or both of the ends of the 91 ESP Security Associations (SAs) are located in security gateways, 92 separate from the actual end-nodes. The transport mode is intended 93 for end-to-end use, where both ends of the security association are 94 terminated at the end-nodes themselves. 96 This document defines a new mode for ESP, called Bound End-to-End 97 Tunnel (BEET) mode. The purpose of the mode is to provide limited 98 tunnel mode semantics without the overhead associated with the 99 regular tunnel mode. As the name states, the BEET mode is intended 100 solely for end-to-end use. It provides tunnel mode semantics in the 101 sense that the IP addresses seen by the applications and the IP 102 addresses used on the wire are distinct from each other, providing 103 the illusion that the application level IP addresses are tunneled 104 over the network level IP addresses. However, the mode does not 105 support full tunnel semantics. More specifically, the IP addresses 106 as seen by the application are strictly bound, and only one pair of 107 bound inner addresses can be used on any given BEET mode Security 108 Association. This is in contrast to the regular tunnel mode, where 109 the inner IP addresses can be any addresses from a defined range. 111 A BEET mode Security Associations records two pairs of IP addresses, 112 called inner addresses and outer addresses. The inner addresses are 113 what the applications see. The outer addresses are what appear on 114 the wire. Since the inner addresses are fixed for the lifetime of 115 the Security Association, they need not to be sent in individual 116 packets. Instead, they are set up as the Security Associations are 117 created, they are verified when packets are sent, and they are 118 restored as packets are received. 120 This all gives the BEET mode the efficiency of transport mode with a 121 limited set of end-to-end tunnel semantics. The efficiency is 122 accomplished by removing the inner IP header from the packet that is 123 transported on the wire. Due to removal of inner IP header, the TTL 124 of tunneled packet is reduced by every router on the path as the TTL 125 value is copied from inner to outer header by the sender and vice 126 versa by the receiver. The semantics of BEET mode is limited in the 127 sense that only one fixed pair of inner addresses are allowed. The 128 outer addresses may change over the life time of the SA, but the 129 inner addresses cannot. If a new pair of inner addresses is needed, 130 a new pair of BEET mode Security Associations must be established, or 131 the regular tunnel mode must be used. However, in the cases 132 considered, a single pair of security associations is usually 133 sufficient between any single pair of nodes. 135 2. Conventions used in this document 137 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 138 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 139 document are to be interpreted as described in RFC2119 [2]. 141 This document contains both normative and informative sections. The 142 normative sections define the BEET mode. The informative sections 143 provide background information that aim to motivate the need for the 144 new mode. Whenever it may not be clear from the context whether a 145 given major section is normative or informative, it is defined in the 146 beginning of the section. 148 2.1. Terminology 150 In this section we define the terms specific to this document. This 151 section is normative. 153 Inner IP address 154 An IP address as seen by applications, stored in TCB or other 155 upper layer data structures, and processed by the IP stack prior 156 to ESP processing in the output side and after ESP processing in 157 the input side. 159 Outer IP address 160 An IP address seen in the wire and processed by the IP stack after 161 ESP processing in the output side and before ESP processing in the 162 input side. 164 Inner IP header 165 An IP header that contains inner IP addresses. In some cases an 166 inner IP header may be represented as an internal data structure 167 containing the data equivalent to an IP header. 169 Outer IP header 170 An IP header that contains outer IP addresses. In some cases an 171 outer IP header may be represented as an internal data structure 172 containing the data equivalent to an IP header. 174 3. Background 176 For a number of years people have been talking about using IPsec for 177 other purposes than VPN. In fact, the current specifications do 178 provide support for end-to-end protection of data. However, that 179 mode is rarely used, for a number of reasons [6], [7]. One of the 180 reasons, though, seems to be address agility. That is, due to NAT, 181 mobility, multi-address multi-homing, etc., the addresses that are 182 used actually on the wire do not necessarily match with the addresses 183 that the applications expect to see. In the NAT case the addresses 184 are changed on the fly, thereby invalidating any transport mode 185 checksums (unless, of course, a tunnel is used). Mobile nodes change 186 their addresses periodically, and the existing applications rarely 187 survive the address changes without some help, e.g., Mobile IP. 188 Multi-addressing based multi-homed nodes would prefer to keep their 189 connections active even when the primary (or currently used) IP 190 address becomes unusable in the face of an network outage. 192 Based on the reasons above, there is clearly a need for a mode of 193 communication where the addresses that the applications see are 194 distinct from the addresses that are actually used in the wire. The 195 current IPsec tunnel mode provides the required functionality, but at 196 the cost of additional overhead in terms of larger packets and more 197 complicated processing. 199 3.1. Related work 201 The basic idea captured by this draft has been floating around for a 202 long time. Steven Bellovin's HostNAT talk [8] at the Los Angeles 203 IETF is an early example. After that, basically the same idea has 204 surfaced several times. Perhaps the most concrete current proposal 205 is the Host Identity Protocol (HIP) [11], where BEET mode ESP 206 processing is an integral part of the overall protocol. 208 4. Use scenarios 210 In this section we describe a number of possible use scenarios. None 211 of these use scenarios are meant to be complete specifications on how 212 exactly to support the functionality. Separate specifications are 213 needed for that. Instead, the purpose of this section is to discuss 214 the overall benefits of the BEET mode, and to lay out a road map for 215 possible future documents. This section is informative. 217 4.1. NAT traversal 219 NAT traversal is currently a major problem in IPsec. It is not 220 sufficient to encapsulate the packets into UDP; additionally, tunnel 221 mode must be used. Tunnel mode is required since the outer IP 222 addresses at the ends of the protected connection differ. If 223 transport mode was used, the differing IP addresses would lead to 224 failing upper layer TCP/UDP checksums. 226 The BEET mode provides sufficient tunnel mode semantics without the 227 packet overhead of the tunnel mode. A pair of BEET mode SAs can be 228 effectively used to "un-NAT" packets that have been NATed during 229 their travel through the network. Figure 1 illustrates the process. 231 Packet contents on a client -> server packet 232 +--------+ 233 | Client | src = 131.160.175.2 dst = 129.15.6.1 clear text 234 +--------+ ^ 235 | 10.0.0.1 | 236 | | src = 10.0.0.1 dst = 129.15.6.1 ESP 237 | | 238 +-----+ | 239 | NAT | SAs 240 +-----+ | 241 | 131.160.175.2 | 242 | | src = 131.160.175.2 dst = 129.15.6.1 ESP 243 | 129.15.5.1 | 244 +--------+ v 245 | Server | src = 131.160.175.2 dst = 129.15.6.1 clear text 246 +--------+ address from unicast SA lookup 248 Figure 1 250 A drawback in this scheme is that the Client must either know its 251 public IP address, or it must rely on the Server to tell what address 252 to use. It must be noticed that if the NAT box is mapping several 253 internal IP addresses into a single public address, the public 254 address cannot be directly used. In that case the client and server 255 need to agree on a unique address, to be used to internally represent 256 the client. It must be pointed out that such an address is 257 semantically very similar to a Mobile IP home address. The details 258 of such address agreement are beyond the scope of this document. 260 4.2. Mobile IP 262 In Mobile IP, the BEET mode could be used instead of the currently 263 defined wire formats. If the hosts would be using end-to-end ESP 264 anyway, this has the benefit of saving the space that would otherwise 265 be taken by the standard Mobile IP wire formats. Furthermore, in 266 BEET the inner IP header does not actually appear in the wire format. 267 Effectively, this makes BEET as space efficient for mobile nodes as 268 the standard ESP transport mode is today between fixed hosts. 270 Instead of having a separate Binding Cache, the nodes could include 271 the address translation information into a pair of BEET mode security 272 associations. 274 4.2.1. Mobile IPv4 276 In the current Mobile IPv4, two different wire formats are used, 277 depending on whether there is a NAT device between the communicating 278 hosts or not. See Figure 2, below. 280 Mobile IPv4 wire format without NAT traversal 282 IP(CoA->HA) | IP(HoA->CN) | payload 284 Mobile IPv4 wire format with NAT traversal 286 IP(CoA->HA) | UDP(any->434) | MIP header | IP(HoA->CN) | payload 288 (where the MIP header is a minimal 4 octet header) 290 [Figure courtesy to Sami Vaarala.] 292 Figure 2 294 It is required that the inner address representing the mobile node, 295 as seen by the application, is always the home address. That is, 296 from the application point of view, the packets flow between the home 297 address and the correspondent node address. 299 If IPsec is used to protect the traffic between the Mobile Node and 300 the Correspondent node, ESP transport mode can be used. However, the 301 transport mode ESP packet is enclosed into an IP-over-IP wrapper at 302 the home agent, see Figure 3. 304 Current Mobile IPv4 wire format with end-to-end ESP transport mode: 306 CN -> HA: IP(CN->HoA) | ESP | payload | ESP trailer 307 HA -> MN: IP(HA->CoA) | IP(CN->HoA) | ESP | payload | ESP trailer 309 MN -> HA: IP(CoA->HA) | IP(HoA->CN) | ESP | payload | ESP trailer 310 HA -> CN: IP(HoA->CN) | ESP | payload | ESP trailer 312 Proposed Mobile IPv4 wire format with ESP BEET mode: 314 CN -> HA: IP(CN->HoA) | ESP | payload | ESP trailer 315 HA -> MN: IP(HA->CoA) | ESP | payload | ESP trailer 317 MN -> HA: IP(CoA->HA) | ESP | payload | ESP trailer 318 HA -> CN: IP(HoA->CN) | ESP | payload | ESP trailer 320 Figure 3 322 In this scenario, the correspondent node does not need to be aware 323 that the security association is in fact using the BEET mode. If the 324 home agent and the mobile node co-operate, and the mobile node 325 implements the BEET semantics, the change could be implemented 326 transparently to the correspondent node. 328 The SPI towards the MN MUST be selected so that the HA can 329 differentiate MNs from each other if they are communicating towards 330 the same CN. As the SA is anyway end-to-end the HA MAY check during 331 the key exchange that the selected SPI will not collide with other 332 MNs. 334 As multiple CNs may choose same SPI for receiving data from HA, the 335 HA must implement SPINAT [9] towards MN. Thus, the SPI used to 336 receive packets from MN at HA would uniquely identify the real 337 destination CN. The SPI must be negotiated per CN basis but as it is 338 assumed that there would be a end-to-end SA anyway the amount of 339 signaling doesn't need to be increased 341 It should be noticed that the space savings are even larger in the 342 NAT traversal situation, as is illustrated in Figure Figure 4, below. 344 Current Mobile IPv4 NAT-traversal wire format with end-to-end transport ESP: 346 CN -> HA: IP(CN->HoA) | ESP | payload | ESP trailer 347 HA -> MN: IP(HA->CoA) | UDP | MIP | IP(CN->HoA) | ESP | payload | ESP trailer 349 MN -> HA: IP(CoA->HA) | UDP | MIP | IP(HoA->CN) | ESP | payload | ESP trailer 350 HA -> CN: IP(HoA->CN) | ESP | payload | ESP trailer 352 Proposed Mobile IPv4 NAT-traversal wire format with BEET ESP: 354 CN -> HA: IP(CN->HoA) | ESP | payload | ESP trailer 355 HA -> MN: IP(HA->CoA) | UDP | ESP | payload | ESP trailer 357 MN -> HA: IP(CoA->HA) | UDP | ESP | payload | ESP trailer 358 HA -> CN: IP(HoA->CN) | ESP | payload | ESP trailer 360 Current Mobile IPv4 NAT-traversal wire format with end-to-end transport ESP: 362 CN -> HA: IP(CN->HoA) | ESP | payload | ESP trailer 363 HA -> MN: IP(HA->CoA) | UDP | MIP | IP(CN->HoA) | ESP | payload | ESP trailer 365 MN -> HA: IP(CoA->HA) | UDP | MIP | IP(HoA->CN) | ESP | payload | ESP trailer 366 HA -> CN: IP(HoA->CN) | ESP | payload | ESP trailer 368 Proposed Mobile IPv4 NAT-traversal wire format with BEET ESP: 370 CN -> HA: IP(CN->HoA) | ESP | payload | ESP trailer 371 HA -> MN: IP(HA->CoA) | UDP | ESP | payload | ESP trailer 373 MN -> HA: IP(CoA->HA) | UDP | ESP | payload | ESP trailer 374 HA -> CN: IP(HoA->CN) | ESP | payload | ESP trailer 376 Figure 4 378 In the NAT traversal case the HA doesn't have to implement the SPINAT 379 because the CN MAY be piggy packed in the UDP source and destination 380 IP and port information. Two separate UDP connections MAY not have 381 the same source and destination IP and port pairs thus the UDP 382 connection will identify the CN uniquely. 384 4.2.2. Mobile IPv4 route optimization 386 BEET can be used for route optimization purposes as the outer IP 387 address can always be set to as the current CoA of the MN. Likewise 388 the MN can set the outer address as the address of the CN instead of 389 the HA's address, although this would require that both ends support 390 BEET mode. Binding updates would be sent to the CN as well instead 391 of just updating the location on HA. Revealing MN's real location to 392 the CN might not always be desirable. 394 4.2.3. Mobile IPv6 396 Triangular routing in Mobile IPv6 is similar to that of Mobile IPv4. 397 However, the tunnel between the home agent and the mobile node is an 398 ESP tunnel instead of being a plain IP-over-IP tunnel. However, if 399 BEET mode was used between the correspondent node and the mobile 400 node, the ESP tunnel between the home agent and the mobile node would 401 not bring any additional protection to the payload data. Thus, in 402 that case BEET could replace the ESP tunnel, similar to the IPv4 403 case, illustrated in Figure 3 above. 405 Mobile IPv6 Route Optimization uses a Type 2 Routing Header (RH) and 406 Home Address Option (HAO) in the packet wire format. However, it can 407 be argued that the semantics of these options is equivalent to a 408 optimized point-to-point tunnel. That is, the Type 2 RH defines the 409 real destination address of a packet, thereby effectively creating a 410 partial tunnel where the inner and outer source addresses are 411 identical but the destination addresses differ. Similarly, the Home 412 Address Option defines the real source address of the packet, again 413 creating a partial tunnel. The only difference is that this time the 414 inner and outer destination addresses are identical but the source 415 addresses differ. 417 Thus, for Mobile IPv6, BEET mode would define a different wire format 418 for the payload packets. Instead of using Type 2 RH and HAO, the 419 packets could be encapsulated into a BEET mode ESP tunnel. In the 420 case that ESP is used anyway, this has the advantage that the 421 standard Mobile IPv6 extra headers are not needed, thereby saving 422 octets in the headers. Compared to tunnel mode ESP, BEET mode has 423 the advantage that the inner IP header is not needed. 425 In Mobile IPv6, mobility management can be implemented just as 426 before, using the HoTI/CoTI, HoT/CoT and Binding Update (BU) 427 messages. The difference would lay in handling Binding Updates. If 428 BEET mode was used, processing Binding Updates would change the outer 429 IP addresses in the BEET mode Security Associations instead of 430 changing the Binding Cache. 432 4.3. End-node multi-address multi-homing 434 The BEET mode provides for limited end-node multi-address multi- 435 homing. It semantically provides a tunnel between the end-hosts, 436 with fixed inner IP addresses. This allows a multi-homed host to use 437 different outer IP addresses in different packets, without any notice 438 by the upper layer protocols. The upper layer protocols see the 439 inner IP address at all times. Thus, this limited form of multi- 440 homing has no affect on the applications, which seemingly communicate 441 over fixed IP addresses all the time. 443 Implementing this kind of limited multi-homing support would require 444 a small change to the current IPsec SPD and SA implementations. 445 Currently the incoming SA selection is based on the SPI and 446 destination address, with the implicit assumption that there is only 447 one possible destination address for each incoming SA. In a multi- 448 homed host it would be desirable to have multiple destination 449 addresses associated with the SA, thereby allowing the same SA to be 450 used independent on the actual destination address in the packets. 451 Removing the destination address from unicast SA lookup is already 452 being proposed in the current ESP draft [5]. 454 If it is considered undesirable to change the implementations to 455 support multiple alternative destination addresses, it would still be 456 possible to support limited multi-homing by creating several parallel 457 SAs, one for each destination address. Each of these SAs would have 458 identical inner addresses. Effectively, this would distribute the 459 tunnel over multiple SAs. 461 In this latter implementation, the outgoing SA processing becomes 462 more complex. Selecting the outgoing SA does not depend only on the 463 inner IP addresses but also on the outer destination address. 464 Selecting the outer destination address depends on the current multi- 465 homing situation. This creates a situation where the SA processing 466 must be deferred after selecting the actual outer address to be used. 467 This might be difficult in some implementations. 469 4.4. Host Identity Protocol 471 The Host Identity Protocol (HIP) is a piece of more recent 472 development. Its aim is to explore the possibilities created by 473 separating the end-host identifier and locator of IP addresses. 474 There are currently five implementations, and the specifications are 475 being finalized. [10] [11] 477 In HIP, the TCP and UDP sockets are not bound to IP addresses but to 478 Host Identifiers (HI). The Host Identifiers create a new independent 479 name space. 481 The BEET mode supports HIP by defining the inner tunnel in terms of 482 Host Identifiers and the outer tunnel in terms of standard IP 483 addresses. In that way all processing prior to outgoing ESP and 484 after incoming ESP uses Host Identifiers. The wire format packets 485 use standard IP addresses and ESP transport packet format. 487 5. Protocol definition 489 In this section we define the exact protocol formats and operations. 490 This section is normative. 492 5.1. Changes to Security Association data structures 494 A BEET mode Security Association contains the same data as a regular 495 tunnel mode Security Association, with the exception that the inner 496 selectors must be single addresses and cannot be subnets. The data 497 includes the following: 499 A pair of inner IP addresses. 501 A pair of outer IP addresses. 503 Cryptographic keys and other data as defined in RFC2401 [4] 504 Section 4.4.3. 506 A conforming implementation MAY store the data in a way similar to a 507 regular tunnel mode Security Association. 509 Note that in a conforming implementation the inner and outer 510 addresses MAY belong to different address families. All 511 implementations that support both IPv4 and IPv6 SHOULD support both 512 IPv4-over-IPv6 and IPv6-over-IPv4 tunneling. 514 5.2. Packet format 516 The wire packet format is identical to the ESP transport mode wire 517 format as defined in [5] Section 3.1.1. However, the resulting 518 packet contains outer IP addresses instead of the inner IP addresses 519 received from the upper layer. The construction of the outer headers 520 is defined in RFC2401 [4] Section 5.1.2. The following diagram 521 illustrates ESP BEET mode positioning for typical IPv4 and IPv6 522 packets. 524 IPv4 INNER ADDRESSES 525 -------------------- 527 BEFORE APPLYING ESP 528 ------------------------------ 529 | inner IP hdr | | | 530 | | TCP | Data | 531 ------------------------------ 533 AFTER APPLYING ESP, OUTER v4 ADDRESSES 535 ---------------------------------------------------- 536 | outer IP hdr | | | | ESP | ESP | 537 | (any options) | ESP | TCP | Data | Trailer | ICV | 538 ---------------------------------------------------- 539 |<---- encryption ---->| 540 |<-------- integrity ------->| 542 AFTER APPLYING ESP, OUTER v6 ADDRESSES 543 ------------------------------------------------------ 544 | outer | new ext | | | | ESP | ESP | 545 | IP hdr | hdrs. | ESP | TCP | Data | Trailer| ICV | 546 ------------------------------------------------------ 547 |<--- encryption ---->| 548 |<------- integrity ------->| 550 IPv4 INNER ADDRESSES with options 551 --------------------------------- 553 BEFORE APPLYING ESP 554 ------------------------------ 555 | inner IP hdr | | | 556 | + options | TCP | Data | 557 ------------------------------ 559 AFTER APPLYING ESP, OUTER v4 ADDRESSES 560 ---------------------------------------------------------- 561 | outer IP hdr | | | | | ESP | ESP | 562 | (any options) | ESP | PH | TCP | Data | Trailer | ICV | 563 ---------------------------------------------------------- 564 |<------- encryption ------->| 565 |<----------- integrity ---------->| 567 AFTER APPLYING ESP, OUTER v6 ADDRESSES 568 ------------------------------------------------------------ 569 | outer | new ext | | | | | ESP | ESP | 570 | IP hdr | hdrs. | ESP | PH | TCP | Data | Trailer| ICV | 571 ------------------------------------------------------------ 572 |<------ encryption ------->| 573 |<---------- integrity ---------->| 575 PH Pseudo Header for IPv4 options 577 IPv6 INNER ADDRESSES 578 -------------------- 580 BEFORE APPLYING ESP 581 ------------------------------------------ 582 | | ext hdrs | | | 583 | inner IP hdr | if present | TCP | Data | 584 ------------------------------------------ 586 AFTER APPLYING ESP, OUTER v6 ADDRESSES 587 -------------------------------------------------------------- 588 | outer | new ext | | dest | | | ESP | ESP | 589 | IP hdr | hdrs. | ESP | opts.| TCP | Data | Trailer | ICV | 590 -------------------------------------------------------------- 591 |<---- encryption ---->| 592 |<------- integrity ------>| 594 AFTER APPLYING ESP, OUTER v4 ADDRESSES 595 ---------------------------------------------------- 596 | outer | | dest | | | ESP | ESP | 597 | IP hdr | ESP | opts.| TCP | Data | Trailer | ICV | 598 ---------------------------------------------------- 599 |<------- encryption -------->| 600 |<----------- integrity ----------->| 602 5.3. Cryptographic processing 604 The outgoing packets MUST be protected exactly as in ESP transport 605 mode [5]. That is, the upper layer protocol packet is wrapped into 606 an ESP header, encrypted, and authenticated exactly as if regular 607 transport mode was used. The resulting ESP packet is subject to IP 608 header processing as defined in Section 5.4 and Section 5.5. The 609 incoming ESP protected messages are verified and decrypted exactly as 610 if regular transport mode was used. The resulting clear text packet 611 is subject to IP header processing as defined in Section 5.4 and 612 Section 5.6. 614 5.4. IP header processing 616 The biggest difference between the BEET mode and the other two modes 617 is in IP header processing. In the regular transport mode the IP 618 header is kept intact. In the regular tunnel mode an outer IP header 619 is created on output and discarded on input. In the BEET mode the IP 620 header is replaced with another one on both input and output. 622 On the BEET mode output side, the IP header processing MUST first 623 ensure that the IP addresses in the original IP header contain the 624 inner addresses as specified in the SA. This MAY be ensured by 625 proper policy processing, and it is possible that no checks are 626 needed at the SA processing time. Once the IP header has been 627 verified to contain the right IP inner addresses, it is discarded. A 628 new IP header is created, using the discarded inner header as a hint 629 for other fields but the IP addresses. The IP addresses in the new 630 header MUST be the outer tunnel addresses. 632 On input side, the received IP header is simply discarded. Since the 633 packet has been decrypted and verified, no further checks are 634 necessary. A new IP header, corresponding to a tunnel mode inner 635 header, is created, using the discarded outer header as a hint for 636 other fields but the IP addresses. The IP addresses in the new 637 header MUST be the inner addresses. 639 As the outer header fields are used as hint for creating inner 640 header, it must be noted that inner header differs as compared to 641 tunnel-mode inner header. In BEET mode the inner header will have 642 the TTL, DF-bit and other option values from the outer header. The 643 TTL, DF-bit and other option values of the inner header MUST be 644 processed by the stack. 646 5.5. Handling of outgoing packets 648 The outgoing BEET mode packets are processed as follows: 650 1. The system MUST verify that the IP header contains the inner 651 source and destination addresses, exactly as defined in the SA. 652 This verification MAY be explicit, or it MAY be implicit, for 653 example, as a result of prior policy processing. Note that in 654 some implementations there may be no real IP header at this time 655 but the source and destination addresses may be carried out-of- 656 band. In case the source address is still unassigned, it SHOULD 657 be ensured that the designated inner source address would be 658 selected at a later stage. 660 2. The IP payload (the contents of the packet beyond the IP header) 661 is wrapped into an ESP header as defined in [5] Section 3.3. 663 3. A new IP header is constructed, replacing the original one. The 664 new IP header MUST contain the outer source and destination 665 addresses, as defined in the SA. Note that in some 666 implementations there may be no real IP header at this time but 667 the source and destination addresses may be carried out-of-band. 668 In the case where the source address must be left unassigned, it 669 SHOULD be made sure that the right source address is selected at 670 a later stage. Other than the addresses, it is RECOMMENDED that 671 the new IP header copies the fields from the original IP header. 673 4. If there are any IPv4 options in the original packet, it is 674 RECOMMENDED that they are discarded. If the inner header 675 contains one or more options that need to be transported between 676 the tunnel end-points, sender MUST encapsulate the options as 677 defined in Section 5.7 679 Instead of literally discarding the IP header and constructing a new 680 one, a conforming implementation MAY simply replace the addresses in 681 an existing header. However, if the RECOMMENDED feature of allowing 682 the inner and outer addresses from different address families is 683 used, this simple strategy does not work. 685 5.6. Handling of incoming packets 687 The incoming BEET mode packets are processed as follows: 689 1. The system MUST verify and decrypt the incoming packet 690 successfully, as defined in [5] section 3.4. If the verification 691 or decryption fails, the packet MUST be discarded. 693 2. The original IP header is simply discarded, without any checks. 694 Since the ESP verification succeeded, the packet can be safely 695 assumed to have arrived from the right sender. 697 3. A new IP header is constructed, replacing the original one. The 698 new IP header MUST contain the inner source and destination 699 addresses, as defined in the SA. If the sender has set the ESP 700 next protocol field to 94 and included the pseudo header as 701 described in Section 5.7, the receiver MUST include the options 702 after the constructed IP header. Note, that in some 703 implementations the real IP header may have already been 704 discarded and the source and destination addresses are carried 705 out-of-band. In such case the out-of-band addresses MUST be the 706 inner addresses. Other than the addresses, it is RECOMMENDED 707 that the new IP header copies the fields from the original IP 708 header. 710 Instead of literally discarding the IP header and constructing a new 711 one a conforming implementation MAY simply replace the addresses in 712 an existing header. However, if the RECOMMENDED feature of allowing 713 the inner and outer addresses from different address families is 714 used, this simple strategy does not work. 716 5.7. IPv4 options handling 718 In BEET mode, if IPv4 options are transported inside the tunnel, the 719 sender MUST include a pseudo-header after ESP header. The pseudo- 720 header identifies that IPv4 options from the original packet are to 721 be applied on the packet on input side. 723 The sender MUST set the next protocol field on the ESP header as 94. 724 The resulting pseudo header including the IPv4 options MUST be padded 725 to 8 octet boundary. The padding length is expressed in octets, 726 valid padding lengths are 0 or 4 octets as the original IPv4 options 727 are already padded to 4 octet boundary. The padding MUST be filled 728 with NOP options as defined in Internet Protocol [1] section 3.1 729 Internet header format. The padding is added in front of the 730 original options to ensure that the receiver is able to reconstruct 731 the original IPv4 datagram. The Header Length field contains the 732 length of the IPv4 options, and padding in 8 octets units. 734 0 1 2 3 735 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 736 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 737 | Next Header | Header Len | Pad Len | Reserved | 738 +---------------+---------------+-------------------------------+ 739 | Padding (if needed) | 740 +---------------------------------------------------------------+ 741 | IPv4 options ... | 742 | | 743 +---------------------------------------------------------------+ 745 Next Header Identifies the data following this header 746 Length in octets 8-bit unsigned integer. Length of the pseudo 747 header in 8-octet units, not including the first 748 8 octets. 750 The receiver MUST remove this pseudo-header and padding as a part of 751 BEET processing, in order reconstruct the original IPv4 datagram. 752 The IPv4 options included into the pseudo-header MUST be added after 753 the reconstructed IPv4 (inner) header on the receiving side. 755 6. Policy considerations 757 In this section we describe how the BEET mode affects on IPsec policy 758 processing. This section is normative. 760 A BEET Security Association SHOULD NOT be used with NULL 761 authentication. 763 On the output side, the IPsec policy processing mechanism SHOULD take 764 care that only packets with IP addresses matching with the inner 765 addresses of a Security Association are passed to that Security 766 Association. If the policy mechanism do not provide full assurance 767 on this, the SA processing MUST check the addresses. Further policy 768 distinction may be specified based on IP version, upper layer 769 protocol, and ports. If such restrictions are defined, they MUST be 770 enforced. 772 On the output side, the policy rules SHOULD prevent any packets 773 containing the inner IP addresses pair from escaping to the wire in 774 clear text. 776 On the input side, there is no policy processing necessary on 777 encrypted packets. The SA is found based on the SPI and destination 778 address. A single SA MAY be associated with several destination 779 addresses. Since the outer IPsec addresses are discarded, and since 780 the packet authenticity and integrity is protected by ESP, there is 781 no need to check the outer addresses. Since the inner addresses are 782 fixed and restored from the SA, there is no need to check them. 783 There MAY be further policy rules specifying allowed upper layer 784 protocols and ports. If such restrictions are defined, they MUST be 785 enforced. 787 On the input side, there SHOULD be a policy rule that filters out 788 clear text packets that contain the inner addresses. 790 7. PF_KEY extensions 792 This section defines the necessary extensions to the PF_KEYv2 API [3] 793 to support the BEET mode. This section is informative. 795 A BEET mode Security Association is created by specifying the inner 796 IP addresses in the PF_KEYv2 Identity extensions, using two new 797 identity types. The identity types of the source and destination 798 identity extensions MUST be identical, i.e. either IPv4 or IPv6. 800 #define SADB_X_IDENTTYPE_ADDR 4 801 #define SADB_IDENTTYPE_MAX 4 803 When this new identity type is used, the contents of the identity 804 field in the PF_KEY messages MUST be a socket address. 806 For SADB_X_IDENTTYPE_ADDR the length of AF_INET type of identity MUST 807 be the length of struct sockaddr_in. Thus the length for AF_INET6 808 type of identity MUST be the length of struct sockaddr_in6. 810 Additionally, a new IPsec mode is defined in ipsec.h, and used in the 811 unspecified but commonly used the PF_KEY extension SADB_X_EXT_SA2 812 field sadb_x_sa2_mode. 814 #define IPSEC_MODE_BEET 4 816 If an SA is specified using SADB_X_EXT_SA2, if the sadb_x_sa2_mode is 817 IPSEC_MODE_BEET, and if the source and destination identities are 818 defined in terms of SADB_IDENTTYPE_ADDR, then the BEET mode MUST be 819 used. If an SA is specified using SADB_X_EXT_SA2, if the 820 sadb_x_sa2_mode is IPSEC_MODE_BEET, and if the identities are defined 821 in terms (other than the new type defined above) that exactly match 822 to single IPv4 or IPv6 addresses, then the BEET mode SHOULD be used. 824 8. New requirements on Key Management protocols 826 In this section we discuss the requirements that the new mode places 827 upon existing and new key management protocols. This section is 828 informative. 830 In order to provide support for the BEET mode, key agreement protocol 831 implementations must understand the existence of such a mode. In 832 some situations it is sufficient that the BEET mode is implemented at 833 the IPsec ESP level only at one end as long as the key management is 834 aware of its usage. For example, the NAT scenario described in 835 Section 4.1 does not require a BEET ESP implementation at the server 836 end. It is sufficient that the client implements the BEET mode; in 837 fact, if the client somehow knows its public IP address it may be 838 able to set up the BEET mode security associations without any 839 explicit concent on the server end. On the other hand, if the client 840 does not know its public IP address, it needs help from the server in 841 order to determine it. 843 More generally, one can get benefit from the BEET mode only to the 844 extend the key management protocol supports it. If the key 845 management protocol is fully aware of mobility and multi-homing 846 issues, and provides facilities for signaling changes in the current 847 connectivity situation, it is relatively easy to implement end-node 848 mobility and multi-address multi-homing with BEET. An example of 849 such usage is HIP [11]. 851 9. Implementing the functionality with other means 853 It is currently possible to implement the equivalent of BEET mode by 854 using transport mode ESP and explicit network address translation at 855 the end-hosts themselves. In this section we briefly compare BEET 856 mode and transport mode ESP with explicit network address translation 857 alternatives. The purpose of this section is to give background 858 information for security considerations. This section is 859 informative. 861 In an implementation using the BEET mode, the input side IP address 862 translation is integrated with the decryption and integrity 863 verification processing. The packet is passed and given the inner 864 addresses if and only if it is correctly decrypted and verified. A 865 typical IPsec SPD implementation would prohibit receiving unprotected 866 IP packets that use the inner addresses on the wire, as it is done in 867 the regular tunnel mode. At the same time, any other uses of the 868 outer addresses would be trivial; passing a packet to the SA requires 869 both that the packet has an ESP header and that the SPI matches. 871 In an implementation based on explicit network address translation 872 and transport mode ESP, the address translation and cryptographic 873 processing are completely separate. In practise, the host must 874 translate the outer IP address into the inner IP addresses before the 875 packet is passed to IPsec. (The other way around may not be secure, 876 since there would be no way for the address translation process to 877 know if the packet was received through IPsec processing or if it was 878 received via some other means.) Using the outer addresses for other 879 purposes may be hard, depending on the implementation of the address 880 translation mechanism. In particular, using the outer addresses on 881 other ESP SAs may be hard, since the typical address translation 882 mechanisms are only configured on protocol level ESP or not ESP and 883 typically do not understand SPIs. 885 At the output side, a BEET mode implementation takes care of 886 translating the inner addresses to outer addresses, as a part of the 887 encryption process. The IPsec SPD contains necessary entries that 888 make sure that the inner addresses never leak. 890 In an implementation based on transport mode ESP and explicit network 891 address translation, the output packets would be passed with inner 892 addresses from IPsec to the address translation mechanism. The 893 address translation mechanism will then translate the inner addresses 894 to outer addresses. While this does not prevent usage of the outer 895 addresses for other purposes, the configuration is brittle and error 896 prone. If there are mistakes at the IPsec configuration, the address 897 translation mechanism may translate unprotected packets, leading to 898 potential confusion. If there are mistakes at the address 899 translation side, the inner addresses may leak to the network. 901 10. Security Considerations 903 In this section we discuss the security properties of the BEET mode, 904 discussing some limitations [12]. This section is normative. 906 There are no known new vulnerabilities that the introduction of the 907 BEET mode would create. 909 It is currently possible to implement the equivalent of BEET mode by 910 using transport mode ESP and explicit network address translation at 911 the end-hosts themselves. However, such an implementation is more 912 complex, less flexible, and potentially more vulnerable to security 913 problems that are caused by misconfigurations; see Section 9. 915 The main security benefit is an operational one. To implement the 916 same functionality without the BEET mode typically requires 917 configuring three different, unrelated components in the hosts. 919 The transport mode ESP SAs must be configured. 921 A host based NAT function must be configured to properly translate 922 between the inner and outer addresses. 924 A host firewall must be configured to properly filter out packets 925 so that inner addresses do not leak in or out. 927 While it may be possible to configure these components to achieve the 928 same functionality, such a configuration is error prone, increasing 929 the probability of security vulnerabilities. An integrated BEET mode 930 implementation is less prone to configuration mistakes. Furthermore, 931 it would be fairly hard to implement portable key management 932 protocols that would be able to configure all of the required 933 components at the same time. On the other hand, it would be easy to 934 provide a portable key management protocol implementation that would 935 be able to configure BEET mode SAs through the specified PF_KEY 936 extensions. 938 Since the BEET security associations have the semantics of a fixed, 939 point-to-point tunnel between two IP addresses, it is possible to 940 place one or both of the tunnel end points into other nodes but those 941 that actually "possess" the inner IP addresses, i.e., to implement a 942 BEET mode proxy. However, since such usage defeats the security 943 benefits of combined ESP and hostNAT processing, as discussed above, 944 the implementations SHOULD NOT support such usage. 946 As in the BEET mode the outer header source address is not checked at 947 the input handling, there is the potential possibility a DoS attack 948 where the attacker sends random packets that match with the SPI of 949 some BEET mode SA. This kind of attack would cause the victim to 950 perform unnecessary integrity checks that would result in a failure. 951 If this kind of behaviour is detected, the node may request rekeying 952 from the Key Management Protocol, and after rekeying, if the attacker 953 was not on the path, the new SPI value would not be known by the 954 attacker. 956 11. IANA Considerations 958 The PF_KEYv2 interface should probably have an IANA registry. 960 12. Acknowledgments 962 During the 56th IETF meeting in San Francisco and afterwards, the 963 following people made comments on the ideas, helping the author to 964 write the draft: Jari Arkko, Steven Bellovin, Charlie Kaufman, Tero 965 Kivinen, Cheryl Madson, Andrew McGrecor, Robert Moskowitz, Michael 966 Richardson, Timothy Shepard, Jukka Ylitalo, Sami Vaarala, Petri 967 Jokela, Herbert Xu, Miika Komu. 969 The author ows special thanks to Derek Atkins and Steve Kent, who 970 strongly opposed the idea during the San Francisco IETF, and thereby 971 forced writing a high quality initial draft. 973 13. References 975 13.1. Normative references 977 [1] Postel, J., "Internet Protocol", STD 5, RFC 791, 978 September 1981. 980 [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement 981 Levels", BCP 14, RFC 2119, March 1997. 983 [3] McDonald, D., Metz, C., and B. Phan, "PF_KEY Key Management 984 API, Version 2", RFC 2367, July 1998. 986 [4] Kent, S. and R. Atkinson, "Security Architecture for the 987 Internet Protocol", RFC 2401, November 1998. 989 [5] Kent, S., "IP Encapsulating Security Payload (ESP)", RFC 4303, 990 December 2005. 992 13.2. Informative references 994 [6] Arkko, J. and P. Nikander, "Limitations in IPsec Policy", 995 Security Protocols 11th International Workshop, Cambridge, UK, 996 April 2-4, 2003, LNCS to be published, Springer, April 2003. 998 [7] Ionnadis, J., "Why we still don't have IPsec", Network and 999 Distributed Systems Security Symposium (NDSS'03), Internet 1000 Society, February 2003. 1002 [8] Bellovin, S., "EIDs, IPsec, and HostNAT", IETF 41th, 1003 March 1998. 1005 [9] Ylitalo, J., Melen, J., Nikander, P., and V. Torvinen, "Re- 1006 thinking Security in IP based Micro-Mobility", 7th Information 1007 Security Conference (ISC'04) , Palo Alto, September 27-29, 1008 2004, to be published, Springer, September 2004. 1010 [10] Moskowitz, R. and P. Nikander, "Host Identity Protocol (HIP) 1011 Architecture", RFC 4423, May 2006. 1013 [11] Moskowitz, R., Nikander, P., Jokela, P., and T. Henderson, 1014 "Host Identity Protocol", RFC 5201, April 2008. 1016 [12] Rescorla, E. and B. Korver, "Guidelines for Writing RFC Text on 1017 Security Considerations", BCP 72, RFC 3552, July 2003. 1019 Appendix A. Implementation experiences 1021 We have implemented the BEET mode to the FreeBSD 5.3 KAME stack. Our 1022 implementation uses the PF_KEYv2 identity extension, as described in 1023 Section 7. 1025 The current implementation is based on four hooks placed at the 1026 strategical locations at the ESP and ip_output processing. We 1027 support full IPv4/IPv6 conversions, allowing both IPv4-over-IPv6 and 1028 IPv6-over-IPv4 tunneling. The number of lines changed in the KAME 1029 policy processing is 36 lines; these changes were necessary to fully 1030 support the identity extension, which was partly unimplemented in the 1031 KAME stack. The hooks themselves take 83 lines, and the protocol 1032 processing code is 450 lines long. About 90% of the protocol 1033 processing code was copied and pasted from the IPsec tunnel mode and 1034 transport mode routines, with minimal changes. About 70% of the code 1035 is needed to implement v4-over-v6 and v6-over-v4 tunneling. The 1036 number of actual functional lines for the simple v4-over-v4 and v6- 1037 over-v6 cases is mere 62 lines. The implementation effort took three 1038 days from two programmers, including writing simple test cases and 1039 performing rudimentary testing on the implementation to see that it 1040 works. 1042 The current implementation is tailored for experimentation. A more 1043 proper implementation would implement all of the processing as an 1044 integral part of the IPsec processing. The current KAME code 1045 supports only two modes. Once the necessary cleanups, such as 1046 replacing "if" statements with "switch" statements, we expect the 1047 extra protocol processing code required by the BEET mode to take less 1048 than 100 lines. 1050 Appendix B. Garden beets 1052 Commonly known as the garden beet, this firm, round root vegetable 1053 has leafy green tops, which are also edible and highly nutritious. 1054 The most common color for beets (called "beetroots" in the British 1055 Isles) is a garnet red. However, they can range in color from deep 1056 red to white, the most intriguing being the Chioggia (also called 1057 "candy cane"), with its concentric rings of red and white. Beets are 1058 available year-round and should be chosen by their firmness and 1059 smooth skins. 1061 Authors' Addresses 1063 Pekka Nikander 1064 Ericsson Research Nomadic Lab 1065 JORVAS FIN-02420 1066 FINLAND 1068 Phone: +358 9 299 1 1069 Email: pekka.nikander@nomadiclab.com 1071 Jan Melen 1072 Ericsson Research Nomadic Lab 1073 JORVAS FIN-02420 1074 FINLAND 1076 Phone: +358 9 299 1 1077 Email: jan.melen@nomadiclab.com 1079 Full Copyright Statement 1081 Copyright (C) The IETF Trust (2008). 1083 This document is subject to the rights, licenses and restrictions 1084 contained in BCP 78, and except as set forth therein, the authors 1085 retain all their rights. 1087 This document and the information contained herein are provided on an 1088 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 1089 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND 1090 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS 1091 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 1092 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 1093 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 1095 Intellectual Property 1097 The IETF takes no position regarding the validity or scope of any 1098 Intellectual Property Rights or other rights that might be claimed to 1099 pertain to the implementation or use of the technology described in 1100 this document or the extent to which any license under such rights 1101 might or might not be available; nor does it represent that it has 1102 made any independent effort to identify any such rights. Information 1103 on the procedures with respect to rights in RFC documents can be 1104 found in BCP 78 and BCP 79. 1106 Copies of IPR disclosures made to the IETF Secretariat and any 1107 assurances of licenses to be made available, or the result of an 1108 attempt made to obtain a general license or permission for the use of 1109 such proprietary rights by implementers or users of this 1110 specification can be obtained from the IETF on-line IPR repository at 1111 http://www.ietf.org/ipr. 1113 The IETF invites any interested party to bring to its attention any 1114 copyrights, patents or patent applications, or other proprietary 1115 rights that may cover technology that may be required to implement 1116 this standard. Please address the information to the IETF at 1117 ietf-ipr@ietf.org. 1119 Acknowledgment 1121 Funding for the RFC Editor function is provided by the IETF 1122 Administrative Support Activity (IASA).