Internet DRAFT - draft-moritz-core-proxy-encode
draft-moritz-core-proxy-encode
CORE G. Moritz, Ed.
Internet-Draft University of Rostock
Intended status: Informational January 24, 2012
Expires: July 27, 2012
CoAP Proxy Encode-To Option
draft-moritz-core-proxy-encode-00
Abstract
The scope of this document is to propose a new option to be used in
conjunction with the CoAP proxy mechanisms. Several content types
can be converted stateless into each other. The conversion may
result in much more efficient representation of the resource. But
currently no mechanism exists to indicate the proxy to perform the
compression.
Status of this Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. This document may not be modified,
and derivative works of it may not be created, and it may not be
published except as an Internet-Draft.
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 on July 27, 2012.
Copyright Notice
Copyright (c) 2012 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
Moritz Expires July 27, 2012 [Page 1]
Internet-Draft CoAP Proxy Encode-To Option January 2012
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 . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Requirements Language . . . . . . . . . . . . . . . . . . . . . 3
3. Problem Statement . . . . . . . . . . . . . . . . . . . . . . . 3
4. Encode-to Option . . . . . . . . . . . . . . . . . . . . . . . 4
5. Alternative . . . . . . . . . . . . . . . . . . . . . . . . . . 5
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5
7. Security Considerations . . . . . . . . . . . . . . . . . . . . 5
8. Normative References . . . . . . . . . . . . . . . . . . . . . 5
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 5
Moritz Expires July 27, 2012 [Page 2]
Internet-Draft CoAP Proxy Encode-To Option January 2012
1. Introduction
The scope of this document is to propose a new option to be used in
conjunction with the CoAP proxy mechanisms in coap-08
[I-D.ietf-core-coap]. Several content types can be converted
stateless into each other.
Reasonable examples are XML to JSON or XML to EXI (and vice versa).
All these representation formats can carry exactly the same
structured data and information, while the conversion is stateless
and requires no external information.
To realize scenarios/applications and reuse existing implementations
as much as possible it might be required to use e.g. XML carried
over HTTP in the backbone (i.e. unconstrained world) and e.g. EXI
carried over CoAP in the LoWPAN (i.e. constrained world).
To map/convert CoAP to HTTP and vice versa dedicated proxies are
defined in CoAP. But currently exists no mechanism to indicate the
proxy to map/convert also the payload.
While starting with the 6LoWPAN/IPv6 optimizations and mappings at
the addressing layer and ending up with the CoAP/HTTP optimizations
and mappings at the application, optimize and map also the payload
encoding to more efficient formats is the last step.
2. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
3. Problem Statement
The only currently existing way to realize a mapping of the payload
representation is to implement it statically in the proxy. Thereby,
each message to a CoAP endpoint is converted from e.g. XML into EXI
and to EXI to XML for messages to HTTP endpoints. But if the proxy
should be used for different applications it is required to keep a
state in the proxy, i.e. which conversion/mapping has to be performed
for which pair of endpoints.
In a deployment the knowledge about supported content types for a
certain endpoint or resource might already be known by the requesting
client. This knowledge was retrieved by the client e.g. through
central registries (e.g. CoAP Resource Directory) during the
Moritz Expires July 27, 2012 [Page 3]
Internet-Draft CoAP Proxy Encode-To Option January 2012
discovery phase. For a request, the client then can use a proxy, but
needs to indicate the proxy to convert the payload to the certain
content type and vice versa for the response. Therefore a new CoAP
option has to be defined.
4. Encode-to Option
The typical scenario will be a HTTP client requesting a CoAP
endpoint. If the HTTP client wants to indicate a required conversion
of the payload it includes a Pragma HTTP header field in the request.
The value of the Pragma header field is "encode-to=" followed by the
content type the payload has to be converted to. Valid content types
are derived from the existing media types for HTTP. If further
parameters are required for the conversion, these parameters are
added as parameters to the Pragma header field.
The HTTP-CoAP Proxy MUST process the Pragma header if present in the
request and it includes the "encode-to" option. If the required
conversion cannot be performed by the proxy it MUST response with a
415 Unsupported Media Type status code.
If the Proxy can perform the required conversion it replaces the
existing message body for the CoAP request with the differently
encoded one. To avoid keeping any state on the proxy, the origin
content type is included in the CoAP request. Therefore the
"encode-to" CoAP option (to be defined, format: string, length: 1-270
Byte, default:none) is used. The value of the CoAP "encode-to"
option is the origin content type and if required including
parameters for the conversion back. The value should re-use media
type IDs as already defined for CoAP.
The CoAP endpoint is not required to process the "encode-to" option,
but MUST echo the option and the value in the response if it decides
not to process the option. Nevertheless, the CoAP endpoint MAY
decide to process the option and encode the response in the format
expressed in the "encode-to" option. In this case the "encode-to"
option MUST NOT be echoed in the CoAP response.
The proxy receiving the CoAP respone message with the "encode-to"
option MUST process this option and perform the required conversion
before forwarding the message to the HTTP endpoint. In the HTTP
response no further header field is required to be echoed back. If
the proxy is not able to process the required conversion correctly it
MAY forward the message body as it is to the HTTP endpoint (or SHOULD
response with a 415 Unsupported Media Type status code?).
Moritz Expires July 27, 2012 [Page 4]
Internet-Draft CoAP Proxy Encode-To Option January 2012
5. Alternative
In the coap-misc draft a user-defined option definition is described.
An alternative approach would be to define an application specific
Pragma option also for CoAP. This option could occur more than ones
in a request/response and fulfill all the required user-defined
mechanisms. This may include the "encode-to" feature described in
this draft.
6. IANA Considerations
No IANA issues have been identified in this draft.
7. Security Considerations
No Security issues have been identified in this draft.
8. Normative References
[I-D.ietf-core-coap]
Shelby, Z., Hartke, K., Bormann, C., and B. Frank,
"Constrained Application Protocol (CoAP)",
draft-ietf-core-coap-08 (work in progress), October 2011.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
Author's Address
Guido Moritz (editor)
University of Rostock
18051 Rostock,
Germany
Phone: +49 381 498 7269
Email: guido.moritz@uni-rostock.de
Moritz Expires July 27, 2012 [Page 5]