CoRE Working Group B. Silverajan Internet-Draft Tampere University of Technology Intended status: Informational T. Savolainen Expires:June 23, 2016January 4, 2018 NokiaDecember 21, 2015Technologies July 3, 2017 CoAP Communication with Alternative Transportsdraft-silverajan-core-coap-alternative-transports-09draft-silverajan-core-coap-alternative-transports-10 AbstractCoAP has been standardised as an application level REST-based protocol. A single CoAP messageThe aim of this document istypically encapsulated and transmitted using UDP or DTLS as transports. These transports are optimal solutions for CoAP use in IP-based constrained environments and nodes. However compelling motivation exists for allowing CoAPtooperate with other transports and protocols. Examples are M2M communication in cellular networks using SMS, more suitableprovide a way forward to best decide upon how alternative transportprotocols for firewall/NAT traversal, end-to-end reliability and security such as TCP and TLS, or employing proxying and tunneling gateway techniques such as the WebSocket protocol.information can be expressed in a CoAP URI. This draft examines the requirements forconveying CoAP messages to end points over such alternative transports. It also providesa new URI format for representing CoAP resources over alternative transports. Various potential URI formats are presented. Benefits and drawbacks of embedding alternative transport information in various ways within the URI components are also discussed. From all listed formats, the document finds scheme-based model to be the most technically feasible. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire onJune 23, 2016.January 4, 2018. Copyright Notice Copyright (c)20152017 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 2.Usage CasesConformance and Design Considerations . . . . . . . . . . . . 4 3. Situating Transport Information in CoAP URIs . . . . . . . . 5 3.1. Using the URI scheme component . . . . .4 2.1. Use of SMS. . . . . . . . 5 3.1.1. Analysis . . . . . . . . . . . . . . .4 2.2. Use of WebSockets. . . . . . . 6 3.2. Using the URI authority component . . . . . . . . . . . . 6 3.2.1. Analysis .4 2.3. Use of P2P Overlays. . . . . . . . . . . . . . . . . . .4 2.4. Use of TCP and TLS. . 7 3.3. Using the URI path component . . . . . . . . . . . . . . 7 3.3.1. Analysis . . .5 3. Node Types based on Transport Availability. . . . . . . . .5 4. CoAP Alternative Transport URI. . . . . . . . . . 7 3.4. Using the URI query component . . . . .6 4.1. Design Considerations. . . . . . . . . 7 3.4.1. Analysis . . . . . . . . .7 4.2. URI format. . . . . . . . . . . . . 8 4. Discussion . . . . . . . . . .8 5. Alternative Transport Analysis and Properties. . . . . . . .9 6.. . . . . . . 8 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . .11 7.8 6. Security Considerations . . . . . . . . . . . . . . . . . . .11 8.9 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . .12 9.9 8. References . . . . . . . . . . . . . . . . . . . . . . . . .12 9.1.9 8.1. Normative References . . . . . . . . . . . . . . . . . .12 9.2.9 8.2. Informative References . . . . . . . . . . . . . . . . .129 Appendix A. Expressing transport in the URI in other ways . . .1510 A.1. Transport information as part of the URI authority . . .1510 A.1.1. Usage of DNS records . . . . . . . . . . . . . . . .1611 A.2. Making CoAP Resources Available over Multiple Transports1611 A.3. Transport as part of a 'service:' URL scheme . . . . . .1813 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . .1914 1. Introduction The Constrained Application Protocol (CoAP) [RFC7252]has been standardised by the CoRE WG asis a lightweight,HTTP-likebinary application layer protocolproviding a request/response model thatdesigned for constrainednodes can useenvironments. Owing tocommunicate with other nodes, be those servers, proxies, gateways, less constrained nodes, or other constrained nodes.its operating environment, CoAPhas been definied to utiliseuses UDP and DTLS astransports. As the Internet evolves by integrating new kinds of networks, services and devices, the need for a consistent, lightweight method for resource representation, retrieval and manipulation becomes evident. Owing toitssimplicity and low overhead, CoAP is a highly suitable protocol for this purpose. However, communicating CoAP endpoints can reside in networks where end-to-end UDP-based communication can be challenging. These include networks separated by NATs and firewalls, cellular networks in which the Short Messaging Service (SMS) can be utilised asunderlying transports betweennodes, or simply situations wherecommunicating endpoints. However, with anendpoint has no possibility to communicate over UDP. Consequently in addition to UDP and DTLS, alternative transport channels for conveying CoAP messages should be considered. Extending CoAP over alternative transports allows CoAP implementations to have a significantly larger relevanceincrease inconstraineddeployment experiences as well asnon-constrained networked environments: it leads to better code optimisation in constrained nodes and broader implementation reuse across new transport channels. As opposed to implementing new resource retrieval mechanisms, an application in an end-node can continue relying on using CoAP's REST-based resource retrieval and manipulation for this purpose, while changes in end point identification and the transport protocol can be addressed by a transport-specific messaging sublayer. This simplifies development and memory requirements. Resource representations are also visible in an end-to-end manner for any CoAP client. In certain conditions, the processing and computational overheadits popularity, compelling reasons exist forconveyingextending CoAPRequests and Responses from one underlying transportmessaging toanother, would be less than that of an application-level gateway performing protocol translation of individual messages between CoAP and another resource retrieval protocol such as HTTP. This document first provides scenarios where usage of CoAPwork over alternative transportsis either currently underway, or may prove advantageous in the future. A simple transport type classification for CoAP-capable nodes is provided next. Then a new URI format is described through which a CoAP resource representation can be formulated that expresses transport identification in addition to endpoint informationsuch as TCP, TLS, WebSockets andresource paths. Following that, a discussion of the various transport properties which influence howSMS. These allow CoAPRequest and Response messages are mappedtotransport level payloads, is presented. This document however, does not touch on application QoS requirements, user policies or network adaptation, nor does it advocate replacing the current practice of UDP-based CoAP communication. 2. Usage Cases Apart from UDPbetter address firewall andDTLS, CoAP usage is being specified for the following environments as of this writing: 2.1. Use of SMS CoAP messages can be sent via SMS between CoAP end-points in a cellular network [I-D.becker-core-coap-sms-gprs]. A CoAP Request message can also be sent via SMS from a CoAP clientNAT traversal issues, toa sleeping CoAP Server as a wake-up mechanism and trigger communication via IP. For this reason, the Open Mobile Alliance (OMA) specifies both UDP and SMS as transports for M2M communicationoperate incellular networks. The OMA Lightweight M2M (LWM2M) protocol being drafted uses CoAP,Web browser-based andas transports, specifies both UDPHTML5 applications as well asShort Message Service (SMS) bindings [OMALWM2M]. DTLS is being proposedforsecuring CoAP messages over SMS between Mobile Stations [I-D.fossati-dtls-over-gsm-sms]. 2.2. Use of WebSockets The WebSocket protocol has been proposed as a transport channel between WebSocket enabled CoAP end-points on the Internet [I-D.savolainen-core-coap-websockets]. This is particularly useful to enable CoAPenergy-constrained M2M communicationwithin HTML5 apps and web browsers, especiallyinsmart devices, that do not have any means to use low- level socket interfaces. Embedded client side scripts create new WebSocket connections to various WebSocket-enabled servers, through which CoAP messages can be exchanged. This also allows a browser containing an embedded CoAP server to open a connection to a WebSocket enabled CoAP Mirror Server [I-D.vial-core-mirror-server] to register and update its resources. 2.3. Use of P2P Overlays [I-D.jimenez-p2psip-coap-reload] specifices how CoAP nodes can use a peer-to-peer overlay network called RELOAD, as a resource caching facility for storing wireless sensor data. When a CoAP node registers its resources with a RELOAD Proxy Node (PN), the node computes a hash value from the CoAP URI and stores it as a structure together with the PN's Node ID as well as the resources. Resource retrieval by CoAP nodes is accomplished by computing the hash key over the Request URI, opening a connection to the overlay and using its message routing system to contact the CoAP server via its PN. 2.4. Use of TCP and TLS Using TCP [I-D.ietf-core-coap-tcp-tls], allows easier communication between CoAP clients and servers separated by firewalls and NATs. This also allows CoAP messages to be transported over push notification services from a notification server to a client app on a smartphone, that may previously have subscribed to receive change notifications of CoAP resource representations, possibly by usingcellular networks. CoAPObserve [RFC7641]. [I-D.ietf-core-coap-tcp-tls] also discusses using TLS asuses atransportREST-based model similar tosecurely convey CoAP messages over TCP. 3. Node Types based on Transport Availability The term "alternative transport" in this document thus far has beenHTTP, where URIs are used torefer to any non-UDP and non-DTLS transport that can convey CoAP messages in its payload. A node however, may in fact possess the capability to utilise CoAP over multiple transport channels at its disposal, simultaneously or otherwise,identify resources atany point in time to communicate with aservers. An important factor of allowing CoAPend-point. Suchcommunicationcan obviously take placeoverUDP and DTLS as well. Inevitably, if two CoAP endpoints reside in distinctly separate networks with orthogonalalternative transports,a CoAP proxy nodeisneeded betweento express not only thetwo networks so that CoAP Requests and Responses can be exchanged properly. In [RFC7228], Tables 1, 3 and 4 introduced classification schemes for devices, in terms of theirresourceconstraints, energy limitations and communication power. For this document, in addition to these capabilities, it seems useful to additionally identify devices based on their transport capabilities. +-------+----------------------------+ | Name | Transport Availability | +-------+----------------------------+ | T0 | Singleidentifier, but also the alternative transport| | | | | T1 | Multiple transports, with | | | one or more active at any | | | pointinformation intime | | | | | T2 | Multiple active transports| | | at all times | +-------+----------------------------+ Table 1: Classes of Available Transports Type T0 nodespossessthecapability of exactly 1 type of transport channel for CoAP, at all times. These include both active and sleepy nodes, which may choose to perform duty cycling for power saving. Type T1 nodes possess multiple different transports, and can retrieve or exposeURI. CoAPresources over any or all of these transports. However, not all transports are constantly active and certain transport channels and interfaces could be kept in a mostly-off state for energy-efficiency,URIs contain information, such aswhen using CoAP over SMS (refer to section 2.1) Type T2 nodes possess more than 1 transport, and multiple transports are simultaneously active at all times. CoAP proxy nodes which allow CoAP endpoints from disparate transports to communicate with each other, are a good example of this. 4. CoAP Alternative Transport URI Based ontheusage scenariosendpoint address as well as thetransport classes presented in the preceding sections, this section discusses the formulationlocation ofa new URI format for representing CoAP resources over alternative transports. CoAP is logically divided into 2 sublayers, wherebytheupper layer is responsible forresource hosted at theprotocol functionality of exchanging request and response messages,endpoint. CoAP URIs beginning with "coap://" are using UDP, whilethe messaging layer is bound to UDP. These 2 sublayersthose beginning with "coaps://" aretightly coupled, both being responsible for properly encoding the header and body of the CoAP message. The CoAP URI is used by both logical sublayers. For a URI that is expressed generically as URI = scheme ":" "//" authority path-abempty ["?" query ] a simple example CoAP URI, "coap://server.example.com/sensors/ temperature" is interpreted as follows:using DTLS. coap ://server.example.comserver.example.org /sensors/temperature \___/ \______ ________/ \______ _________/ | \/ \/protocol endpoint parameterised identifier identifier resource identifierURI scheme URI authority URI path Figure 1:TheA CoAP URIformat The resource path is explicitly expressed, andFigure 1 shows theendpoint identifier,structure of a simple example CoAP URI, in whichcontains the host address at the network-level is also directly bound tothe various URI components can beinterpreted as follows: o The URI schemename containing thecomponent (e.g. "coap") contains an application- level identifier which typically identifies the protocolidentifier. The choice of a specificbeing used as well as its transportfor a scheme, however, cannot be embedded with a URI, but isand network level protocol configurations. Such configurations are defined by convention or standardisation of the protocol using the scheme.As examples, [RFC5092] defines the 'imap' scheme for the IMAP protocol over TCP, while [RFC2818] requires thato The URI authority component ("server.example.com") contains the'https' protocol identifier be used to differentiate using HTTP over TLS instead of TCP. 4.1. Design Considerations Several ways of formulatingendpoint identification, which is typically a fully qualified domain name or a network-level host address. o The URIwhich express an alternative transport binding to CoAP, can be envisioned. When suchpath component ("/sensors/temperature") contains a parameterised resource identifier providing the location and identity of the resource at the endpoint. In addition to these URIiscomponents, Figure 2 shows how specific queries on resource representations are providedfrom an application to itsby CoAPimplementation,clients to servers, by specifying one or more URI query components in the URI. coap :// server.example.org /sensors/temperature ?u=cel \___/ | URIcomponent containing transport-specific informationquery Figure 2: A CoAP URI with query This document focuses on how CoAP URIs can bechecked to allow CoAPextended tousecontain information about alternative transports. For deriving theappropriate transport for a target endpoint identifier. The followingnew URI format, the main design considerationsinfluenceare presented in theformulationnext section. Following that, various potential URIs are presented. These URIs provide examples ofa newhow transport identifiers can be situated in the URIexpressing CoAP resources over alternative transports: 1.scheme, authority, path or query components. TheCoAP Transportproposed URIs are analysed to select feasible formats while disqualifying those not meeting the design criteria. 2. Conformance and Design Considerations In order to understand which URImustformats are best suited for expressing transport information, certain considerations firstly need to be taken into account. Doing so eliminates URI formats that do not meet or conform to the stated requirements. The main criteria are: 1. Conformance to the generic syntax for a URI described in [RFC3986].By ensuring conformance to RFC3986, the need for custom URI parsers as well as resolution algorithms can be obviated. In particular, aA URI format needs to be described in which each URI component clearly meets the syntax and percent-encoding rules described. 2.A CoAP Transport URI can be supplied as a Proxy-Uri option by a CoAP end-point to a CoAP forward proxy. This allows communicationAlignment witha CoAP end-point residing in a network using a different transport. Section 6.4 of [RFC7252] provides an algorithmbest practices forparsing a receivedURI design, as described in [RFC7320]. This is particularly important when it pertains toobtainestablishing or standardising therequest's options. Conformancestructure and usage of URIs with respect to[RFC3986] is also necessary in order fortheparsing algorithm to be successful.various URI components. 3. Request messages sent to a CoAP endpoint using a CoAP Transport URI may be responded to with a relative URIreference, for example, of the form "../../path/to/resource". In such cases, the requesting endpoint needs to resolve the relative reference against the original CoAP Transport URI to then obtain a new target URI to which a request can be sent to, to obtain a resource representation.reference. [RFC3986] provides an algorithm to establish how relative references can be resolved against a base URI to obtain a target URI. Given this algorithm, a URI format needs to be described in which relative reference resolution does not result in a target URI that loses its transport-specific information 4. Thehost component of current CoAP URIsURI caneitherbean IPv4 address, an IPv6 address orsupplied as aresolvable hostname. While the usageProxy-Uri option by a CoAP end-point to a CoAP forward proxy. This allows communication with a CoAP end-point residing in a network using a different transport. Section 6.4 ofDNS can sometimes be useful[RFC7252] provides an algorithm fordistinguishing transport information (see section 4.3.1), accessing DNS over some alternative transport environments may be challenging. Therefore,parsing a received URIformat needsto obtain the request's options. Conformance to [RFC3986] is also necessary in order for the parsing algorithm to bedescribed whichsuccessful. In addition to the above mentioned requirements, where possible, the following considerations need to be borne in mind: 1. The URI format is able to represent a resource and the transport information for use in constrained environments, withoutheavy reliance onrequiring the presence of a naming infrastructure, such asDNS. 4.2.DNS or a directory/lookup service. 2. Alternative transport information can be easily retrieved by computationally constrained nodes. In other words, the URI formatTo meetdoes not result in unneccessarily complex code or logic in such nodes to parse and extract thedesign considerations previously discussed,transport to be used, nor the endpoint address. 3. URIs are designed to uniquely identify resources. When a single resource is represented with multiple URIs, URI aliasing [WWWArchv1] occurs. Avoiding URI aliasing is considered good practice. 4. CoAP URIs do not support fragment identifiers. 3. Situating Transport Information in CoAP URIs The following subsections aim to describe potential URI formats in which the alternative transport information isexpressed as part ofplaced in various URI components. 3.1. Using the URI schemecomponent. This is performed by minting new schemes for alternative transports using the form "coap+<transport-name>" and/or "coaps+<transport-name>", where the name ofcomponent Expressing the transportis clearly and unambiguously described. Each scheme name formedinformation inthis manner is used to differentiatetheuse of CoAP, or CoAP using DTLS, over an alternative transport respectively. The endpoint identifier, path and query components together with eachURI schemename wouldcomponent can beusedachieved by using new schemes. These can conform touniquely identifyan agreed- upon convention such as "coap+alternative_transport_name" for eachresource.new alternative transport and/or "coaps+alternative_transport_name" for its secure counterpart. Examples of such URIs are: ocoap+tcp://[2001:db8::1]:5683/sensors/temperaturecoap+tcp://server.example.org/sensors/temperature for using CoAP over TCP ocoap+tls://[2001:db8::1]:5683/sensors/temperature for using CoAP over TLS o coaps+sctp://[2001:db8::1]:5683/sensors/temperature for using CoAP over DTLS over SCTP ocoap+sms://0015105550101/sensors/temperature for using CoAP over SMS with the endpoint identifier being a telephone subscriber number ocoaps+sms://0015105550101/sensors/temperaturecoaps+tcp://server.example.org/sensors/temperature for using CoAP overDTLS over SMS withTLS 3.1.1. Analysis Expressing transport information in theendpoint identifier beingURI scheme delivers atelephone subscriber number o coap+ws://www.example.com/sensors/temperature for using CoAP over WebSockets o coap+wss://www.example.com/sensors/temperature for using CoAP over secure WebSockets (WebSockets using TLS) AURIof this format to distinguish transport typeswhich issimple to understandhuman-readable andnot dissimilarcomputationally as easy totheparse as standard CoAP URIs, to extract transport identification information. The URIformat. Assyntax conforms to [RFC3986], and relative URI resolution does not result in theusageloss of transport identification information. However, each new alternative transportresults in an entirelyrequires minting newscheme,schemes, and IANA intervention is required for the registration of each scheme name. The registration process follows the guidelines stipulated in[I-D.ietf-appsawg-uri-scheme-reg], particularly where permanent URI scheme registration is concerned.[RFC7595]. Additionally, should a CoAP server wish to expose its resourcestransportedover multiple transports (such as both UDPor DTLS must conform to Section 6 of [RFC7252]andutilise "coap" or "coaps" for theTCP) , URIscheme, instead of "coap+udp" or "coap+dtls". It is also entirely possible for each new scheme to specify its own rules for how resource and transport endpoint informationaliasing canbe presented. However,occur if the URI scheme components of these multiple URIsand resource representations arising from their usage should meetdiffer in describing the same resource. 3.2. Using the URIdesign considerations and guidelines mentioned in Section 4.1. In addition, each newauthority component Expressing the transportbeing defined should take into considerationinformation within thevarious transport- level properties thatauthority component canhave an impact on how CoAP messages are conveyed as payload. This is elaborated onresult inthe next section. 5. Alternative Transport Analysis and Properties In this section the various characteristics of alternative transports for successfully supporting various kinds of functionality for CoAP are considered. CoAP factors lossiness, unreliability, small packet sizes and connection statelessness into its protocol logic. General transport differences and their impact on carrying CoAP messages here are discussed. Property 1: 1:N communication support. This referstwo possible URI formats. The first approach is to structure theability of theURI authority's host sub- component with a transportprotocolprefix tosupport broadcast and multicast communication. For example, group communication for CoAP is based on multicasting Request messagesthe endpoint identifier andreceiving Response messages via unicast [RFC7390]. A protocola delimiter, such as "<transport-name>-endpoint_identifier". Examples of resulting URIs are: o coap://tcp-server.example.org/sensors/temperature for using CoAP over TCPwould be ill-suitedo coap://sms-0015105550101/sensors/temperature forgroup communicationsusingmulticast. Anycast support, where a messageCoAP over SMS The second approach issenttoa well defined destination address to which several nodes belong, onhint at theother hand, is supportedalternative transport information, byTCP. Property 2: Transport-level reliability. This refers toexplicitly specifying using theabilityURI authority's port sub-component, thereby differentiating them from standard CoAP URIs. Examples ofthe transport protocol to support properties such as guaranteeing reliability against packet loss, ensuring ordered packet delivery and having error control. Whenresulting URIs are: o coap://server.example.org:5684/sensors/temperature for using CoAPRequest and Response messages are deliveredoversuch transports, theTLS o coap://server.example.org:80/sensors/temperature for using CoAPimplementations elide certain fields in the packet header. As an example, ifover WebSockets 3.2.1. Analysis Embedding theusage of a connection-orientedtransportrenders it unnecessary to specifyinformation in thevarious CoAP message types,host would violate theType field can be elided. For some connection-oriented transports, such as WebSockets,guidelines for theversionstructure ofCoAP being used can be negotiated during the opening transfer. Consequently, the Version fieldURI authorities inCoAP packets can also be elided. Property 3: Message encoding. While partssection 2.2 of [RFC7320]. Consequently, theCoAP payload are human readable or are transmittedhost inXML, JSON or SenML format, CoAP is essentiallyalow overhead binary protocol. Efficient transmission of such packets would therefore be met with a transport offering binary encoding support. Techniques exist in allowing binary payloads toURI authority component cannot betransferred over text-based transport protocols such as base-64 encoding. When using SMSused as atransport, for example, although binary encoding is supported, Appendix A.5 of [I-D.bormann-coap-misc] indicates binary encodingbasis forSMS may not always be viable. A fuller discussion about performinga new CoAPmessage encodingURI forSMS can be foundalternative transports. Embedding the transport information inAppendix A.5 of [I-D.bormann-coap-misc] Property 4: Network byte order. CoAP, as well as transports basedthe port, on theIP stack use a Big Endian byte order for transmitting packets overother hand, would not violate theair or wire, while transports based on Bluetooth and Zigbee prefer Little Endian byte ordering for packet fields and transmission. Any CoAP implementation that potentially uses multiple transports has to ensure correct byte orderingguidelines for thetransport used. Property 5: MTU correlation with CoAP PDU size. Section 4.6 of [RFC7252] discusses the avoidancestructure ofIP fragmentation by ensuring CoAP message fit into a single UDP datagram. End-points on constrained networks using 6LoWPAN may use blockwise transfers to accommodate even smaller packet sizes to avoid fragmentation. The MTU sizes for Bluetooth Low Energy as well as Classic Bluetooth are providedURI authorities inSection 2.4section 2.2 of[RFC7668]. Transport MTU correlation with[RFC7320]. It would result in a CoAPmessages helps ensure minimal to no fragmentation at the transport layer.URI that is less human-readable, but URI aliasing is minimised. On the other hand,allowingif a CoAP request messageto be deliveredusing adelay-tolerant transport service such asCoAP Transport URI of this form elicits a CoAP Response containing a relative URI, for example, of theBundle Protocol [RFC5050]form "//server2.example.org/path/to/another/ resource", relative URI resolution rules of [RFC3986] wouldimply thatresult in the loss of transport identification information. Consequently, using the URI authority component cannot be used as a basis for a new CoAPmessage mayURI for alternative transports. 3.3. Using the URI path component Should the URI path component befragmented (or reconstituted) along various nodesused, then special characters or keywords need to be supplied in theDTN as various sized bundles and bundle fragments. Property 6: Framing Whenpath to make the transport explicit. Here, many proposals can exist. In general however, this will result in a URI format such as: o coap://server.example.org/sensors/temperature;tcp for using CoAP overa streaming transport protocol such asTCP,as opposed to datagram based protocols, care must be observed in preserving message boundaries. Commonly applied techniques atby appending the transportlevel includeinformation at theuseend ofdelimiting characters for this purpose as well asthe URI. 3.3.1. Analysis Embedding the transport information in the URI path directly results in a URI that is human-readable. However, if a CoAP request messageframing and length prefixing. Property 7:using a CoAP Transportlatency. A confirmableURI of this form elicits a CoAPrequestResponse containing a relative URI, for example, of the form "../../path/to/another/resource", relative URI resolution rules of [RFC3986] would result in the loss of transport identification information. Consequently, using the URI path component cannot beretransmitted byused as a basis for a new CoAPend-point ifURI for alternative transports. 3.4. Using the URI query component The alternative transport information, should URI query components be used, would result in aresponseURI format such as: o coap://server.example.org/sensors/temperature?alternative- transport=wss for using CoAP over secure WebSockets. 3.4.1. Analysis Embedding the transport information in a URI query also results in a URI that isnot obtained withinhuman-readable. However, if acertain time. ACoAPend- point registering torequest message using aResource Directory usesCoAP Transport URI of this form elicits aPOST message that could includeCoAP Response containing alifetime value. A sleepy end-point similarly usesrelative URI, for example, of the form "../../path/to/another/ resource", relative URI resolution rules of [RFC3986] would result in the loss of transport identification information. Consequently, using the URI query component cannot be used as alifetime value to indicatebasis for a new CoAP URI for alternative transports. 4. Discussion Based on thefreshnessanalysis of thedata tovarious options for embedding alternative transport information in a CoAPMirror Server. Care needs to be exercisedURI, the most technically feasible option is toensureuse the URI scheme component, as described in Section 3.1. To date, this has also been thelatencyWG consensus. A discussion with IESG members during review of [I-D.ietf-core-coap-tcp-tls] revealed however, that using thetransport being usedURI scheme tocarry CoAP messagesexpress transport information issmall enoughnot desirable, tointerfere with these values foravoid theproper operationproliferation ofthese functionalities. Property 8: Connection Management.new URI schemes for the same application-layer protocol. A strategy was instead proposed to preserve the existing CoAPendpoint usingURI and reuse it for alternative transports, by employing aconnection-orientedcombination of UDP Confirmable messages and timeouts to determine the eventual correct transportshould be responsible for proper connection establishment priortosendinguse between a client and server [IESG-feedback]. The undertaken strategy would have obvious implications regarding interoperability, application and protocol logic, resource usage, for both new CoAPRequest message. Both communicating endpoints may monitorand existing CoAP implementations and deployments. Although URI aliasing can theoretically be avoided with this approach, at theconnection health duringtime of writing, its technical feasibility over using theData Transfer phase. Finally, once data transfersimpler strategy of using URI schemes, has yet to be validated. An obvious drawback iscomplete, at least one end point should perform connection teardown gracefully. 6.therefore that implementers and other SDOs may choose to provisionally or permanently register new URI schemes with IANA, for CoAP over alternative transports anyway, as was done by the Open Connectivity Foundation (OCF) [CoAP-TCP-TLS-registration]. 5. IANA Considerations This memo includes no request to IANA.7.6. Security Considerations New security risks are not envisaged to arise from the guidelines given in this document, for describing a new URI format containing transport identification within the URI scheme component. However, when specific alternative transports are selected for implementing support for carrying CoAP messages, risk factors or vulnerabilities can be present. Examples include privacy trade-offs when MAC addresses or phone numbers are supplied as URI authority components, or if specific URI path components employed for security-specific interpretations are accidentally encountered as false positives. While this document does not make it mandatory to introduce a security mode with each transport, it recommends ascribing meaning to the use of "coap+" and "coaps+" prefixes in the scheme component, with the "coaps+" prefix used forDTLS-basedsecure transports for CoAPmessages over the alternative transport. 8.messages. 7. AcknowledgementsThe draft has benefited greatly from reviews,Email discussions, comments and ideas from Thomas Fossati, Akbar Rahman, Klaus Hartke, Martin Thomson, Mark Nottingham, Dave Thaler, Graham Klyne, Carsten Bormann and MarkusBecker. 9.Becker greatly helped previous versions of this draft. 8. References9.1.8.1. Normative References[I-D.ietf-appsawg-uri-scheme-reg] Thaler, D., Hansen, T., Hardie, T., and L. Masinter, "Guidelines and Registration Procedures for URI Schemes", draft-ietf-appsawg-uri-scheme-reg-06 (work in progress), April 2015.[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, DOI 10.17487/RFC3986, January 2005, <http://www.rfc-editor.org/info/rfc3986>.[RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for Constrained-Node Networks", RFC 7228, DOI 10.17487/RFC7228, May 2014, <http://www.rfc-editor.org/info/rfc7228>.[RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained Application Protocol (CoAP)", RFC 7252, DOI 10.17487/RFC7252, June 2014, <http://www.rfc-editor.org/info/rfc7252>.9.2. Informative References [BTCorev4.1] BLUETOOTH Special Interest Group, "BLUETOOTH Specification Version 4.1", December 2013. [I-D.becker-core-coap-sms-gprs] Becker,[RFC7320] Nottingham, M.,Li, K., Kuladinithi, K., and T. Poetsch, "Transport of CoAP over SMS", draft-becker-core-coap-sms- gprs-05 (work in progress), August 2014. [I-D.bormann-coap-misc] Bormann, C. and K. Hartke, "Miscellaneous additions to CoAP", draft-bormann-coap-misc-27 (work in progress), November 2014. [I-D.fossati-dtls-over-gsm-sms] Fossati, T."URI Design andH. Tschofenig, "Datagram Transport Layer Security (DTLS) over Global System for Mobile Communications (GSM) Short Message Service (SMS)", draft- fossati-dtls-over-gsm-sms-01 (work in progress), October 2014.Ownership", BCP 190, RFC 7320, DOI 10.17487/RFC7320, July 2014, <http://www.rfc-editor.org/info/rfc7320>. 8.2. Informative References [CoAP-TCP-TLS-registration] https://www.iana.org/assignments/uri-schemes/prov/coap+tcp , https://www.iana.org/assignments/uri-schemes/prov/ coaps+tcp, , June 2017. [I-D.ietf-core-coap-tcp-tls] Bormann, C., Lemay, S.,Technologies, Z., and H.Tschofenig,"A TCP and TLS Transport for the Constrained Application Protocol (CoAP)", draft-ietf-core-coap-tcp- tls-01 (work in progress), November 2015. [I-D.jimenez-p2psip-coap-reload] Jimenez, J., Lopez-Vega, J., Maenpaa, J., and G. Camarillo, "A Constrained Application Protocol (CoAP) Usage for REsource LOcation And Discovery (RELOAD)", draft-jimenez-p2psip-coap-reload-10 (work in progress), July 2015. [I-D.savolainen-core-coap-websockets] Savolainen, T.,H., Hartke, K., Silverajan, B., and B.Silverajan,Raymor, "CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets",draft-savolainen-core-coap-websockets-05 (work in progress), October 2015. [I-D.vial-core-mirror-server] Vial, M., "CoRE Mirror Server", draft-vial-core-mirror- server-01draft-ietf-core-coap-tcp-tls-09 (work in progress),April 2013. [OMALWM2M] Open Mobile Alliance (OMA), "Lightweight Machine to Machine Technical Specification Version 1.0", 2015. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>.May 2017. [IESG-feedback] https://www.ietf.org/mail-archive/web/core/current/ msg08768.html, , May 2017. [RFC2609] Guttman, E., Perkins, C., and J. Kempf, "Service Templates and Service: Schemes", RFC 2609, DOI 10.17487/RFC2609, June 1999, <http://www.rfc-editor.org/info/rfc2609>.[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, DOI 10.17487/RFC2818, May 2000, <http://www.rfc-editor.org/info/rfc2818>. [RFC4838] Cerf, V., Burleigh, S., Hooke, A., Torgerson, L., Durst, R., Scott, K., Fall, K., and H. Weiss, "Delay-Tolerant Networking Architecture", RFC 4838, DOI 10.17487/RFC4838, April 2007, <http://www.rfc-editor.org/info/rfc4838>. [RFC5050] Scott, K. and S. Burleigh, "Bundle Protocol Specification", RFC 5050, DOI 10.17487/RFC5050, November 2007, <http://www.rfc-editor.org/info/rfc5050>. [RFC5092] Melnikov, A., Ed. and C. Newman, "IMAP URL Scheme", RFC 5092, DOI 10.17487/RFC5092, November 2007, <http://www.rfc-editor.org/info/rfc5092>. [RFC6455] Fette, I. and A. Melnikov, "The WebSocket Protocol", RFC 6455, DOI 10.17487/RFC6455, December 2011, <http://www.rfc-editor.org/info/rfc6455>. [RFC6568] Kim, E., Kaspar,[RFC7595] Thaler, D.,and JP. Vasseur, "Design and Application Spaces for IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)", RFC 6568, DOI 10.17487/RFC6568, April 2012, <http://www.rfc-editor.org/info/rfc6568>. [RFC6733] Fajardo, V.,Ed.,Arkko, J., Loughney, J.,Hansen, T., andG. Zorn, Ed., "Diameter Base Protocol", RFC 6733, DOI 10.17487/RFC6733, October 2012, <http://www.rfc-editor.org/info/rfc6733>. [RFC7390] Rahman, A., Ed.T. Hardie, "Guidelines andE. Dijk, Ed., "Group CommunicationRegistration Procedures forthe Constrained Application Protocol (CoAP)", RFC 7390, DOI 10.17487/RFC7390, October 2014, <http://www.rfc-editor.org/info/rfc7390>. [RFC7641] Hartke, K., "Observing Resources in the Constrained Application Protocol (CoAP)", RFC 7641, DOI 10.17487/RFC7641, September 2015, <http://www.rfc-editor.org/info/rfc7641>. [RFC7668] Nieminen, J., Savolainen, T., Isomaki, M., Patil, B., Shelby, Z., and C. Gomez, "IPv6 over BLUETOOTH(R) Low Energy",URI Schemes", BCP 35, RFC7668,7595, DOI10.17487/RFC7668, October10.17487/RFC7595, June 2015,<http://www.rfc-editor.org/info/rfc7668>.<http://www.rfc-editor.org/info/rfc7595>. [WWWArchv1] http://www.w3.org/TR/webarch/#uri-aliases, "Architecture of the World Wide Web, Volume One", December 2004. Appendix A. Expressing transport in the URI in other ways Other means of indicating the transport as a distinguishable component within the CoAP URI are possible, but have been deemed unsuitable by not meeting the design considerations listed, or are incompatible with existing practices outlined in [RFC7252]. They are however, retained in this section for historical documentation and completeness. A.1. Transport information as part of the URI authority A single URI scheme, "coap-at" can be introduced, as part of an absolute URI which expresses the transport information within the authority component. One approach is to structure the component with a transport prefix to the endpoint identifier and a delimiter, such as "<transport-name>-endpoint_identifier". Examples of resulting URIs are: o coap-at://tcp-server.example.com/sensors/temperature o coap-at://sms-0015105550101/sensors/temperature An implementation note here is that some generic URI parsers will fail when encountering a URI such as "coap-at://tcp- [2001:db8::1]/sensors/temperature". Consequently, an equivalent, but parseable URI from the ip6.arpa domain needs to be formulated instead. For [2001:db8::1] using TCP, this would result in the following URL: coap-at://tcp-1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0 .1.0.0.2.ip6.arpa:5683/sensors/temperature Usage of an IPv4-mapped IPv6 address such as [::ffff.192.100.0.1] can similarly be expressed with a URI from the ip6.arpa domain. This URI format allows the usage of a single scheme to represent multiple types of transport end-points. Consequently, it requires consistency in ensuring how various transport-specific endpoints are identified, as a single URI format is used. Attention must be paid towards the syntax rules and encoding for the URI host component. Additionally, against a base URI of the form "coap-at://tcp- server.example.com/sensors/temperature", resolving a relative reference, such as "//example.net/sensors/temperature" would result in the target URI "coap-at://example.net/sensors/temperature", in which transport information is lost. A.1.1. Usage of DNS records DNS names can be used instead of IPv6 address literals to mitigate lengthy URLs referring to the ip6.arpa domain, if usage of DNS is possible. DNS SRV records can also be employed to formulate a URL such as: coap-at://srv-_coap._tcp.example.com/sensors/temperature in which the "srv" prefix is used to indicate that a DNS SRV lookup should be used for _coap._tcp.example.com, where usage of CoAP over TCP is specified for example.com, and is eventually resolved to a numerical IPv4 or IPv6 address. A.2. Making CoAP Resources Available over Multiple Transports The CoAP URI used thus far is as follows: URI = scheme ":" hier-part [ "?" query ] hier-part = "//" authority path-abempty A new URI format could be introduced, that does not possess an "authority" component, and instead defining "hier-part" to instead use another component, "path-rootless", as specified by RFC3986 [RFC3986]. The partial ABNF format of this URI would then be: URI = scheme ":" hier-part [ "?" query ] hier-part = path-rootless path-rootless = segment-nz *( "/" segment ) The full syntax of "path-rootless" is described in [RFC3986]. A generic URI defined this way would conform to the syntax of [RFC3986], while the path component can be treated as an opaque string to indicate transport types, endpoints as well as paths to CoAP resources. A single scheme can similarly be used. A constrained node that is capable of communicating over several types of transports (such as UDP, TCP and SMS) would be able to convey a single CoAP resource over multiple transports. This is also beneficial for nodes performing caching and proxying from one type of transport to another. Requesting and retrieving the same CoAP resource representation over multiple transports could be rendered possible by prefixing the transport type and endpoint identifier information to the CoAP URI. This would result in the following example representation: coap-at:tcp://example.com?coap://example.com/sensors/temperature \_______ ______/ \________________ __________________/ \/ \/ Transport-specific CoAP Resource Prefix Figure2:3: Prefixing a CoAP URI with TCP transport Such a representation would result in the URI being decomposed into its constituent components, with the CoAP resource residing within the query component as follows: Scheme: coap-at Path: tcp://example.com Query: coap://example.com/sensors/temperature The same CoAP resource, if requested over a WebSocket transport, would result the following URI: coap-at:ws://example.com/endpoint?coap://example.com/sensors/temperature \___________ __________/ \_______________ ___________________/ \/ \/ Transport-specific CoAP Resource Prefix Figure3:4: Prefixing a CoAP URI with WebSocket transport While the transport prefix changes, the CoAP resource representation remains the same in the query component: Scheme: coap-at Path: ws://example.com/endpoint Query: coap://example.com/sensors/temperature The URI format described here overcomes URI aliasing [WWWArchv1] when multiple transports are used, by ensuring each CoAP resource representation remains the same, but is prefixed with different transports. However, against a base URI of this format, resolving relative references of the form "//example.net/sensors/temperature" and "/sensor2/temperature" would again result in target URIs which lose transport-specific information. Implementation note: While square brackets are disallowed within the path component, the '[' and ']' characters needed to enclose a literal IPv6 address can be percent-encoded into their respective equivalents. The ':' character does not need to be percent-encoded. This results in a significantly simpler URI string compared to section 2.2, particularly for compressed IPv6 addresses. Additionally, the URI format can be used to specify other similar address families and formats, such as Bluetoothaddresses [BTCorev4.1].addresses. A.3. Transport as part of a 'service:' URL scheme The "service:" URL scheme name was introduced in [RFC2609] and forms the basis of service description used primarily by the Service Location Protocol. An abstract service type URI would have the form "service:<abstract-type>:<concrete-type>" where <abstract-type> refers to a service type name that can be associated with a variety of protocols, while the <concrete-type> then providing the specific details of the protocol used, authority and other URI components. Adopting the "service:" URL scheme to describe CoAP usage over alternative transports would be rather trivial. To use a previous example, a CoAP service to discover a Resource Directory and its base RD resource using TCP would take the form service:coap:tcp://host.example.com/.well-known/core?rt=core-rd The syntax of the "service:" URL scheme differs from the generic URI syntax and therefore such a representation should be treated as an opaque URI as Section 2.1 of [RFC2609] recommends. Authors' Addresses Bilhanan Silverajan Tampere University of Technology Korkeakoulunkatu 10 FI-33720 Tampere Finland Email: bilhanan.silverajan@tut.fi Teemu Savolainen NokiaHermiankatu 12 D FI-33720Technologies Hatanpaeaen valtatie 30 FI-33100 Tampere Finland Email: teemu.savolainen@nokia.com