Internet DRAFT - draft-sunde-netinf-protocol-bluetooth
draft-sunde-netinf-protocol-bluetooth
Network Working Group L. Sunde
Internet-Draft Uppsala University
Intended status: Standards Track July 03, 2013
Expires: January 04, 2014
The NetInf Bluetooth Convergence Layer
draft-sunde-netinf-protocol-bluetooth-00
Abstract
This document defines a Network of Information (NetInf) convergence
layer intended to be used over some Bluetooth protocol providing
reliable transmission. A convergence layer handles the transport of
NetInf requests and responses. In this convergence layer the common
NetInf messages are defined using JavaScript Object Notation (JSON)
and Named Data Object (NDO) octet parts, both using length prefixes.
While the convergence layer is intended to be used over Bluetooth,
any underlying protocol providing reliable transmission could
potentially be used.
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 on January 04, 2014.
Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved.
Sunde Expires January 04, 2014 [Page 1]
Internet-Draft NetInf Bluetooth CL July 2013
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.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Bluetooth Convergence Layer Specification . . . . . . . . . . 2
2.1. PUBLISH . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. PUBLISH-RESP . . . . . . . . . . . . . . . . . . . . . . 4
2.3. GET . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4. GET-RESP . . . . . . . . . . . . . . . . . . . . . . . . 5
2.5. SEARCH . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.6. SEARCH-RESP . . . . . . . . . . . . . . . . . . . . . . . 6
3. Security Considerations . . . . . . . . . . . . . . . . . . . 7
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7
5. References . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.1. Normative References . . . . . . . . . . . . . . . . . . 7
5.2. Informative References . . . . . . . . . . . . . . . . . 7
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 8
1. Introduction
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].
2. Bluetooth Convergence Layer Specification
This section specifies a NetInf Convergence Layer
[I-D.kutscher-icnrg-netinf-proto] intended to be used over Bluetooth.
The protocol does not provide reliable transmission. This is assumed
to be provided by the underlying Bluetooth protocol, e.g. radio
frequency communication (RFCOMM). The Bluetooth convergence layer
(BCL) could potentially also be used on top of non-Bluetooth
protocols providing the required features (e.g. TCP).
The BCL does not provide any means of discovering or selecting which
devices to route to. This problem must be handled by the
implementation. A Bluetooth connection needs to be established
between the sender and the receiver. This connection MAY use RFCOMM
[RFCOMM]. It MAY be established using the service discovery protocol
[SDAP] with the Universally Unique IDentifier [RFC4122]
111a8500-6ae2-11e2-bcfd-0800200c9a66.
Sunde Expires January 04, 2014 [Page 2]
Internet-Draft NetInf Bluetooth CL July 2013
The response to a request SHOULD be sent back using the same
connection (if two-way communication is supported) but an
implementation MUST NOT assume that this always is the case.
The protocol is built around sending UTF-8 [RFC3629] encoded JSON and
NDO octets through a stream providing reliable transmission. All
JSON and octet parts MUST be prefixed with their length in bytes.
The length prefix MUST be a 32-bit signed integer encoded in two's
complement using big endian network byte order.
The ni URI scheme [RFC6920] MUST be supported. Other URI schemes MAY
be supported.
The following names are defined for JSON name/value pairs:
------------------------------------------------------------------
Name | Value | Comments
------------------------------------------------------------------
type | string | Message type. MUST be "publish",
| | "publish-response", "get", "get-response",
| | "search" or "search-response".
------------------------------------------------------------------
msgid | string | Message identifier.
------------------------------------------------------------------
uri | string | NDO URI.
------------------------------------------------------------------
hoplimit | number | Number of times to forward this message.
| | Assumed to be 0 if not present.
------------------------------------------------------------------
locators | [string] | Locators to the NDO.
------------------------------------------------------------------
ext | object | Metadata and future extensions. Metadata
| | MUST be an object under the "meta" key if
| | present. E.g. "ext":{"meta":{...}}
------------------------------------------------------------------
octets | true/false | Flag indicating if this JSON is directly
| | followed by the NDO octets (including the
| | length prefix). Assumed to be false if
| | not present.
------------------------------------------------------------------
status | number | Code indicating the status of a response.
------------------------------------------------------------------
tokens | [string] | Tokens used in a SEARCH. MUST contain at
| | least one token.
------------------------------------------------------------------
results | [object] | The results of a search. See Section 2.6.
------------------------------------------------------------------
Sunde Expires January 04, 2014 [Page 3]
Internet-Draft NetInf Bluetooth CL July 2013
Figure 1: Bluetooth CL JSON
2.1. PUBLISH
A PUBLISH MUST start with a JSON part (including the associated
length prefix). The JSON part MUST include the following name/value
pairs:
o type
o msgid
o uri
Where "type" MUST be "publish" and "uri" MUST be the URI of the NDO
being published.
The JSON part MAY also include:
o hoplimit
o locators
o ext
o octets
If "octets" is present and true, the JSON part MUST be followed by
the octets of the NDO (including the associated length prefix). If
"octets" is not present or false, the JSON part MUST NOT be followed
by the octets.
2.2. PUBLISH-RESP
A PUBLISH-RESP MUST consist of a single JSON part. The JSON part
MUST include the following name/value pairs:
o type
o status
o msgid
Where "type" MUST be "publish-response".
2.3. GET
Sunde Expires January 04, 2014 [Page 4]
Internet-Draft NetInf Bluetooth CL July 2013
A GET MUST consist of a single JSON part. The JSON part MUST include
the following name/value pairs:
o type
o msgid
o uri
Where "type" MUST be "get".
The JSON part MAY also include:
o hoplimit
2.4. GET-RESP
A GET-RESP MUST start with a JSON part. The JSON part MUST include
the following name/value pairs:
o type
o status
o msgid
o uri
Where "type" MUST be "get-response" and "uri" MUST be the URI
requested NDO.
The JSON part MAY also include:
o locators
o octets
If "octets" is present and true, the JSON part MUST be followed by
the octets of the requested NDO. If "octets" is not present or
false, the JSON part MUST NOT be followed by the octets.
2.5. SEARCH
A SEARCH MUST consist of a single JSON part. The JSON part MUST
include the following name/value pairs:
o type
Sunde Expires January 04, 2014 [Page 5]
Internet-Draft NetInf Bluetooth CL July 2013
o msgid
o tokens
Where "type" MUST be "search".
The JSON part MAY also include:
o hoplimit
2.6. SEARCH-RESP
A SEARCH-RESP MUST consist of a single JSON part. The JSON part MUST
include the following name/value pairs:
o type
o status
o msgid
o results
Where "type" MUST be "search-response".
Each object in the "results" array represents an NDO considered to
match the tokens included in the corresponding SEARCH. If no
matching NDOs were found "results" might be empty. The following
name/value pairs are defined for the search result objects:
------------------------------------------------------------------
Name | Value | Comments
------------------------------------------------------------------
ni | string | The ni URI of the matching NDO.
| | MUST be included.
------------------------------------------------------------------
metadata | object | Metadata belonging to the matching NDO.
| | MAY be included.
------------------------------------------------------------------
Figure 2: Search result JSON
Sunde Expires January 04, 2014 [Page 6]
Internet-Draft NetInf Bluetooth CL July 2013
3. Security Considerations
As mentioned in [I-D.kutscher-icnrg-netinf-proto] requesters SHOULD
attempt to limit the amount of personally identifying information for
privacy reasons. Care should be taken when generating SEARCH tokens
and when responding to a SEARCH.
Validation of name-data integrity is important. Consider a scenario
where the connected Bluetooth devices are a number of smart phones
that happen to be in close proximity. The other devices can not be
trusted to send the correct data and might even try to send malicious
data.
In the smart phone case battery life is also something to take into
consideration. By requesting data over and over again a requester
could intentionally drain the battery of the responder.
4. IANA Considerations
This document has no actions for IANA.
5. References
5.1. Normative References
[I-D.kutscher-icnrg-netinf-proto]
Kutscher, D., Farrell, S., and E. Davies, "The NetInf
Protocol", draft-kutscher-icnrg-netinf-proto-01 (work in
progress), February 2013.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO
10646", STD 63, RFC 3629, November 2003.
[RFC6920] Farrell, S., Kutscher, D., Dannewitz, C., Ohlman, B.,
Keranen, A., and P. Hallam-Baker, "Naming Things with
Hashes", RFC 6920, April 2013.
5.2. Informative References
[RFC4122] Leach, P., Mealling, M., and R. Salz, "A Universally
Unique IDentifier (UUID) URN Namespace", RFC 4122, July
2005.
[RFCOMM] Bluetooth Special Interest Group , "RFCOMM with TS 07.10
Serial Port Emulation", November 2012.
Sunde Expires January 04, 2014 [Page 7]
Internet-Draft NetInf Bluetooth CL July 2013
[SDAP] Bluetooth Special Interest Group , "Service Discovery
Application Profile", February 2001.
Author's Address
Linus Sunde
Uppsala University
Uppsala
Sweden
Email: Linus.Sunde.9273@student.uu.se
Sunde Expires January 04, 2014 [Page 8]