idnits 2.17.1 draft-wood-dtnrg-http-dtn-delivery-02.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 414. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 425. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 432. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 438. 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 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 (October 31, 2008) is 5628 days in the past. Is this intentional? Checking references for intended status: Experimental ---------------------------------------------------------------------------- ** Obsolete normative reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) == Outdated reference: A later version (-09) exists of draft-irtf-dtnrg-bundle-checksum-03 == Outdated reference: A later version (-22) exists of draft-wood-tsvwg-saratoga-02 -- Obsolete informational reference (is this intentional?): RFC 2818 (Obsoleted by RFC 9110) Summary: 2 errors (**), 0 flaws (~~), 3 warnings (==), 8 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group L. Wood 3 Internet-Draft P. Holliday 4 Intended status: Experimental Cisco Systems 5 Expires: May 4, 2009 October 31, 2008 7 Using HTTP for delivery in Delay/Disruption-Tolerant Networks 8 draft-wood-dtnrg-http-dtn-delivery-02 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 May 4, 2009. 35 Abstract 37 This document describes how to use the Hypertext Transfer Protocol, 38 HTTP, for communication across delay- and disruption-tolerant 39 networks, by making every transit node in the network HTTP-capable, 40 and doing peer HTTP transfers between nodes to move data hop-by-hop 41 or subnet-by-subnet towards its final destination. HTTP is well- 42 known and straightforward to implement in these networks. 44 Table of Contents 46 1. Background and Introduction . . . . . . . . . . . . . . . . . 3 47 2. Adapting the HTTP delivery mechanism for DTNs . . . . . . . . 4 48 3. Other useful proposed HTTP headers . . . . . . . . . . . . . . 6 49 4. Other suggestions on HTTP for use in DTN networks . . . . . . 7 50 5. Security Considerations . . . . . . . . . . . . . . . . . . . 7 51 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 52 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 8 53 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 8 54 8.1. Normative References . . . . . . . . . . . . . . . . . . . 8 55 8.2. Informative References . . . . . . . . . . . . . . . . . . 8 56 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 9 57 Intellectual Property and Copyright Statements . . . . . . . . . . 11 59 1. Background and Introduction 61 Delay- and Disruption-Tolerant Networks (DTNs) are networks where 62 conditions are such that links between nodes are not always 63 permanent, may be of very long delay or exist only during very short 64 contact periods where the link is up, and may change over time 65 [RFC4838]. Some DTNs can be thought of as sparse ad-hoc networks, 66 with nodes communicating intermittently only when they come into 67 contact. Store-and-forward delivery of data is a useful way of 68 communicating across these networks. 70 A specialised store-and-forward protocol for DTN delivery has been 71 proposed in the IRTF DTN research group (DTNRG) - the Bundle Protocol 72 [RFC5050]. Criticisms of the Bundle Protocol's reliability and 73 complexity have been raised [I-D.irtf-dtnrg-bundle-checksum]. The 74 Bundle Protocol is itself intended to be a routable data format, but 75 the supporting architectures for node and application naming/ 76 addressing, automated routing, security, QoS, and resource discovery 77 have not yet been agreed upon or in some cases even significantly 78 worked on. These things already exist for the Internet Protocol, and 79 can in many cases be easily leveraged for DTN networks. 81 This document outlines how the well-known Hypertext Transfer Protocol 82 (HTTP) [RFC2616] can be used for store-and-forward communication 83 across DTNs. HTTP is not used end-to-end as it is on the web. 84 Instead, applications running on each node in the network communicate 85 with their neighbours using dedicated hop-by-hop or subnet-by-subnet 86 HTTP transfers to effect local data delivery. Additional HTTP header 87 information adds context for onward forwarding and delivery to 88 destination endpoints, and provides the reliability and error- 89 detection missing from alternatives such as the Bundle Protocol. 91 It must be stressed that this proposed use is distinct from proxy 92 caching methods prevalent in the traditional web. Caching commands 93 are not used; end-to-end HTTP requests are not intercepted by 94 intermediate caches that attempt to fulfil them. The distinction 95 between client, server and proxy is replaced by peers using HTTP to 96 communicate in separate sessions that together combine over time to 97 make the full path between source and final destination. 99 HTTP is a session layer, running over a transport layer providing 100 reliable delivery of the HTTP stream between hops. This transport 101 layer is commonly (and almost universally) TCP in the terrestrial 102 Internet, although alternative transport layers, such as SCTP, can 103 also be used under HTTP [I-D.natarajan-httpbis-sctp]. For long-delay 104 networks, or for network conditions where TCP or an equivalent is not 105 suitable, an alternative transport layer such as Saratoga 106 [I-D.wood-tsvwg-saratoga] can be used under HTTP instead in hop-by- 107 hop communications between nodes. HTTP requires only reliable 108 streaming that can be used to provide ordered delivery; how that 109 reliable streaming is provided is up to the local transport layer in 110 the local subnet, and multiple different transport layers can be used 111 across the multiple hops between nodes to transfer data from source 112 to final destination. 114 Steve Deering has often described IP as 'the waist in the hourglass' 115 [Deering98] - what is above and touching on IP can be changed, what 116 is below and touching on IP can be changed, but provided the new 117 elements continue to interface to and work with IP, the hourglass 118 remains complete and the network stack remains functional. Here, 119 HTTP is the waist in this particular hourglass; applications can use 120 HTTP to communicate, provided HTTP runs over a reliable transport 121 stream. The applications can vary. The transport stream can be 122 changed; HTTP does not have to run over TCP/IP, but could even be 123 made to run directly over HDLC or a CCSDS reliable bitstream. Given 124 the prevalence of IP in many networks, it is likely that two waists 125 exist; IP and HTTP are likely choices, but the transport protocol and 126 physical enviroment will vary more. 128 This document contains an overview of how HTTP can be simply adapted 129 to the DTN environment by the use of HTTP/1.1 with persistence and 130 pipelining, the PUT and GET directives, and some trivial extra HTTP 131 headers needed to indicate e.g. a destination in the DTN network. 133 The remainder of this specification uses 'file' as a shorthand for 134 'binary object', which may be an HTTP 'object', file with an 135 associated MIMEtype, or other type of contiguous binary data. 137 A significant benefit to use of HTTP is that the well-known MIMEtype 138 mechanism, integral to HTTP, provides hints on what received files 139 are, and what applications should do with them [RFC2045]. The Bundle 140 Protocol does not support MIMEtypes, or any similar mechanism. 142 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 143 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 144 document are to be interpreted as described in RFC 2119. [RFC2119] 146 2. Adapting the HTTP delivery mechanism for DTNs 148 Here, HTTP is used as a peer-to-peer protocol in the sense that 149 multiple files may be transferred in both directions simultaneously 150 between two communicating nodes using HTTP for DTN use. There is not 151 intended to be a strict client/user-agent to server relationship as 152 there is in the web. Instead, sending data across a path of six 153 nodes, four nodes between source and destination, will require a 154 minimum of five separate per-hop HTTP transactions between each pair 155 of nodes to move the data onwards to the next node. This breaks the 156 traditional end-to-end control loop and transfer into separate 157 control loops and transfers suitable for the DTN environment. 159 When two nodes come into contact across a local hop or a subnet, a 160 request for files to be copied, stored, and carried onwards can be 161 made by the receiving node issuing an HTTP GET request. 162 Alternatively, the sending node can simply issue a series of HTTP PUT 163 requests once a connection is established, if it believes that 164 putting the data to the receiving node moves it closer to its 165 eventual destination. The receiving node can always reject transfers 166 with error codes. 168 HTTP/1.1 pipelining and persistence permits multiple PUTs to be made 169 in sequence. Support for these in implementations is crucial to the 170 mechanisms outlined here. (Note that [I-D.natarajan-httpbis-sctp] 171 also takes advantage of HTTP pipelining and persistence.) 173 The key to enabling HTTP use for DTN networking is an added Content- 174 Destination: header, which specifies the final destination of the 175 file, and can be used by routing in the HTTP-using applications to 176 decide over which available links the file should be sent. Content-* 177 headers are special, in that they may not be ignored (section 9.6 of 178 [RFC2119]). Recipients not understanding Content-Destination: will 179 generate a "501 (Not Implemented)" error code. This separates HTTP 180 use in DTNs described here from normal end-to-end HTTP web use. HTTP 181 DTN nodes MUST support Content-Destination: 183 The information provided in Content-Destination: identifying the 184 destination may be an IP address, DNS name, Bundle Endpoint 185 Identifier (EID) or other text-string identifier useful to the local 186 DTN routing mechanisms being used. 188 Similarly, a Content-Source: header provides a textual identification 189 of the original source of the data. This MUST be implemented. 191 For DTN use, DTN HTTP nodes MUST also implement Content-Length:, 192 Content-Range: and Content-MD5 headers. This permits partial 193 delivery of files and resends of missing pieces of files. The 194 Content-MD5: header provides a simple end-to-end reliability check. 195 The Content-MD5: header is intended to be generated by the source 196 node first sending the data, and not recomputed at other nodes. 198 DTN HTTP nodes MUST implement the Host: header, in line with current 199 HTTP specifications. This header field MAY be left blank to request 200 available files from the peer node, rather than identifying a desired 201 file from a distant source by hostname matching the advertised 202 Content-Source: header. A sender placing a new file into the DTN 203 network for onward transmission MUST have the Content-Source: field 204 of the data being sent match its Host: field. 206 Hop-by-hop HTTP headers MAY be implemented between peer nodes talking 207 directly. The headers described in section 13.5.1 of [RFC2616] are 208 available. New hop-by-hop headers MUST use the Connection: header 209 approach described in section 14.10 of [RFC2616]. 211 DTN HTTP nodes may optionally GET and PUT to link-local IP multicast 212 addresses when used over IP subnets. This permits efficient sharing 213 of files on shared LANs, with recipients requesting resends via 214 Content-Range: and checking assembly of file pieces using the 215 Content-MD5: header. A GET to multicast can request a specific file 216 from any available node that has it. The response to a multicast GET 217 SHOULD be unicast, but a multicast HEAD MAY also be sent to inform 218 other nodes that the sender has the file of interest. If other nodes 219 also express interest in the file with GET requests to the sender, 220 that file may later be PUT to a multicast address. Note that the 221 Bundle EID can identify a group of endpoints, rather than just one; 222 mapping the Bundle EID onto multicast IP adddresses on IP subnets is 223 possible. 225 The utility of HTTP with multicast has been recognised previously as 226 a method of simple service discovery later adopted for the universal 227 plug and play (UPnP) protocol [I-D.draft-goland-http-udp] 228 [I-D.draft-cai-ssdp-v1]. Rather than call out multicast and unicast 229 separately as different protocols to be used by HTTP, recognising 230 that a given destination or address indicates multicast or broadcast 231 use should suffice. 233 3. Other useful proposed HTTP headers 235 A number of other HTTP headers are proposed here, as likely to be 236 useful. These SHOULD be implemented. 238 An HTTP object is just one binary file; the ability to group objects 239 together is useful (and is done in bundles by the bundle protocol). 240 If we call a group of related objects sent from the same source to 241 the same destination a 'package' (a name chosen to avoid any 242 confusion with the 'bundle' specification), we can then define simple 243 headers to be sent before each object: 245 Package-ID: - provides a unique textual identifier for the package 247 Package-Item: n of m (e.g. 1 of 7) - order of this HTTP file in the 248 package 249 Package-MD5: - checksum across all Content-MD5 headers added together 250 in order 252 A way to request missing Package-Items (from the previous node or 253 from the source) is likely to be very useful. 255 Some sort of header protection is likely also a good idea. So, 256 Header-MD5: could cover some important HTTP headers. Header-MD5 257 could be preserved across hops if possible, avoiding unnecessary 258 header reordering. Timestamps prevent this, however - this needs 259 more thought, particularly on where timestamps are placed in HTTP 260 headers. 262 Timestamps and how they are handled needs to be examined here in 263 greater detail. What if different machines have different notions of 264 time? 266 For larger files, stronger checksums than MD5 should be looked at. 268 4. Other suggestions on HTTP for use in DTN networks 270 x-application-dtn has previously been proposed as a MIMEtype 271 identifying Bundle Protocol bundles delivered by HTTP. This provides 272 a way to support Bundle Protocol implementations in an HTTP 273 infrastructure. 275 Moving HTTP transfers over DTN networks using the Bundle Protocol has 276 already been proposed [Ott06]. By changing how HTTP is used - hop- 277 by-hop rather than end-to-end - this draft has outlined how HTTP can 278 be used directly and independently in DTN networks without requiring 279 the bundle protocol as a carrier. 281 5. Security Considerations 283 Security considerations and detailed examination of HTTP over TLS 284 (HTTPS) [RFC2817][RFC2818] and secure HTTP [RFC2660] are required 285 here. 287 Because there is a need for each node to validate that a file has 288 been received correctly, privately-keyed hashes that can only be 289 checked at the destination should be avoided, and HTTP security 290 mechanisms should be used instead. 292 6. IANA Considerations 294 Despite the Content-* rule for rejecting unfamiliar headers, it may 295 make sense to use a non-standard port for DTN HTTP use over IP, 296 rather than the well-known port 80. If so, such a port should be 297 requested from IANA. 299 It may be necessary to request a dedicated IPv4 all-hosts multicast 300 address and a dedicated IPv6 link-local multicast addresses for local 301 HTTP DTN use, if local HTTP multicast is considered a desirable 302 feature. 304 7. Acknowledgements 306 Work on the Saratoga protocol inspired some of the concepts that are 307 reused here. We thank Wes Eddy and Kevin Fall for their review 308 comments. 310 8. References 312 8.1. Normative References 314 [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail 315 Extensions (MIME) Part One: Format of Internet Message 316 Bodies", RFC 2045, November 1996. 318 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 319 Requirement Levels", BCP 14, RFC 2119, March 1997. 321 [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., 322 Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext 323 Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. 325 8.2. Informative References 327 [Deering98] 328 Deering, S., "Watching the Waist of the Protocol 329 Hourglass", keynote, IEEE International Conference on 330 Network Protocols (ICNP), Austin Texas, October 1998. 332 [I-D.draft-cai-ssdp-v1] 333 Goland, Y., Cai, T., Leach, P., Gu, Y., and S. Albright, 334 "Simple Service Discovery Protocol/1.0 Operating without 335 an Arbiter", draft-cai-ssdp-v1-03 (expired) , 336 October 1999. 338 [I-D.draft-goland-http-udp] 339 Goland, Y., "Multicast and Unicast UDP HTTP Messages", 340 draft-goland-http-udp-01 (expired) , November 1999. 342 [I-D.irtf-dtnrg-bundle-checksum] 343 Eddy, W., Wood, L., and W. Ivancic, "Checksum Ciphersuites 344 for the Bundle Protocol", 345 draft-irtf-dtnrg-bundle-checksum-03 (work in progress) , 346 October 2008. 348 [I-D.natarajan-httpbis-sctp] 349 Natarajan, P., Amer, P., Leighton, J., and F. Baker, 350 "Using SCTP as a Transport Layer Protocol for HTTP", 351 draft-natarajan-httpbis-sctp-00 (work in progress), 352 October 2008. 354 [I-D.wood-tsvwg-saratoga] 355 Wood, L., McKim, J., Eddy, W., Ivancic, W., and C. 356 Jackson, "Saratoga: A Scalable File Transfer Protocol", 357 draft-wood-tsvwg-saratoga-02 (work in progress) , 358 October 2008. 360 [Ott06] Ott, J. and D. Kutscher, "Bundling the Web: HTTP over 361 DTN", WNEPT 2006 Workshop on Networking in Public 362 Transport, QShine Conference Ontario, August 2006. 364 [RFC2660] Rescorla, E. and A. Schiffman, "The Secure HyperText 365 Transfer Protocol", RFC 2660, August 1999. 367 [RFC2817] Khare, R. and S. Lawrence, "Upgrading to TLS Within 368 HTTP/1.1", RFC 2817, May 2000. 370 [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. 372 [RFC4838] Cerf, V., Burleigh, S., Hooke, A., Torgerson, L., Durst, 373 R., Scott, K., Fall, K., and H. Weiss, "Delay-Tolerant 374 Networking Architecture", RFC 4838, April 2007. 376 [RFC5050] Scott, K. and S. Burleigh, "Bundle Protocol 377 Specification", RFC 5050, November 2007. 379 Authors' Addresses 381 Lloyd Wood 382 Cisco Systems 383 11 New Square Park, Bedfont Lakes 384 Feltham, Middlesex TW14 8HA 385 United Kingdom 387 Phone: +44-20-8824-4236 388 Email: lwood@cisco.com 390 Peter Holliday 391 Cisco Systems 392 Level 12 393 300 Adelaide Street 394 Brisbane, Queensland 4000 395 Australia 397 Phone: +61-2-6216-0604 398 Email: phollida@cisco.com 400 Full Copyright Statement 402 Copyright (C) The IETF Trust (2008). 404 This document is subject to the rights, licenses and restrictions 405 contained in BCP 78, and except as set forth therein, the authors 406 retain all their rights. 408 This document and the information contained herein are provided on an 409 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 410 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND 411 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS 412 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 413 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 414 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 416 Intellectual Property 418 The IETF takes no position regarding the validity or scope of any 419 Intellectual Property Rights or other rights that might be claimed to 420 pertain to the implementation or use of the technology described in 421 this document or the extent to which any license under such rights 422 might or might not be available; nor does it represent that it has 423 made any independent effort to identify any such rights. Information 424 on the procedures with respect to rights in RFC documents can be 425 found in BCP 78 and BCP 79. 427 Copies of IPR disclosures made to the IETF Secretariat and any 428 assurances of licenses to be made available, or the result of an 429 attempt made to obtain a general license or permission for the use of 430 such proprietary rights by implementers or users of this 431 specification can be obtained from the IETF on-line IPR repository at 432 http://www.ietf.org/ipr. 434 The IETF invites any interested party to bring to its attention any 435 copyrights, patents or patent applications, or other proprietary 436 rights that may cover technology that may be required to implement 437 this standard. Please address the information to the IETF at 438 ietf-ipr@ietf.org.