Internet DRAFT - draft-d1f-shdcp

draft-d1f-shdcp



Independent Submission                             Dmitry Fedorov
Internet-Draft                                     Sigrand LLC
Intended status: Proposed Standard
Expires: December 1, 2013                          June 1, 2013





        Simple Host Discovery and Configuration Protocol
                    <draft-d1f-shdcp-00.txt>


Status of this Memo

   This document is an Internet-Draft.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.
   Note that other groups may also distribute working documents
   as Internet-Drafts.

   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."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/1id-abstracts.html

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Distribution of this memo is unlimited.


Copyright and License Notice

   Copyright (c) 2013 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.


Abstract

   The Simple Host Discovery and Configuration Protocol (SHDCP)
   provides a mechanism used when an Internet host with almost no
   configuration has to be discovered and, at the same time,
   configured to some IPv4 network.
   This task can not be accomplished by DHCP.
   Other known protocols are too complicated or proprietary.
   The key feature of the proposed protocol is simplicity.


Table of Contents

  1. Introduction
     1.1. Scope
     1.2. Problem Statement
     1.3. Proposed Solution

  2. Terminology

  3. Protocol Description
     3.1. Device States
     3.2. Model of Operation
     3.3. IP Header Values
     3.4. UDP Header Values
     3.5. Packet Structure
     3.6. Packet Repeats
     3.7. Security Considerations
     3.8. IANA Considerations

  A. Authors' Addresses
  B. Full Copyright Statement
  C. Disclaimer


1. Introduction

   1.1. Scope

      This document applies only to IPv4 over Ethernet.
      The IPv6 has its own discovery and configuration mechanisms
      that are not covered by this document.

   1.2. Problem Statement

      A number of embedded device types exists which are
      Internet hosts with an IPv4 network stack and without
      an IPv4 address assigned. These devices are intended to be used
      in an Ethernet Local Area Network (LAN) with IPv4 addresses.
      The devices must be adapted to user's LAN environment.
      The devices have no mechanism to adapt to user's LAN
      environment besides communication via the built-in Ethernet port.

      The following solutions are neither possible nor acceptable:

      * Pre-assigning static IPv4 addresses at factory
        can conflict with existing user's LAN environment.

      * Assigning IPv4 addresses with DHCP:
        * requires that a DHCP server exists in user's LAN environment;
        * if a DHCP server exists, it is difficult to determine
          what is new unknown host that sent the DHCP discovery request.

      * Assigning Link-local addresses automatically
        will not conflict with user's LAN environment,
        but it would be difficult to communicate with such
        device from user's control point host which
        can have other network subnet address.

      Other discovery protocols are either too complicated
      or solve only discovery task but not initial device
      configuration with assigning IPv4 address.

   1.3. Proposed Solution

      The SHDCP is intended to do a minimal task of
      discovery of new hosts and assigning them a minimal
      address configuration that conforms to user's LAN
      environment and that would be enough to communicate
      and configure the device by higher level protocols.


2. Terminology

  "Control Point"
        A Control Point is an Internet host with a SHDCP client program
        used for discovery and configuration of other Internet hosts
        (devices) by SHDCP.
        Control Point may have a human operator.

  "Device"
        A Device is an Internet host that provides some type of service.
        Device allows to be discovered and configured by the SHDCP
        Control Point with configuration parameters such as
        a network address.
        Device must have its own unique Ethernet address.

  "SHDCP client"
       A SHDCP client is a program that implements function
       of a Control Point.

  "SHDCP server"
       A SHDCP server is a program that implements function
       of a SHDCP Device - responds to discovery requests,
       announces Device, configures Device on a configure request.


3. Protocol Description

3.1. Device States

     Device has following states:

     * UNCONFIGURED

       This state is factory default.

       Device may have any IPv4 address assigned
       which is not used to communicate by SHDCP.

       Device must have its own unique Ethernet address
       which is the key for SHDCP communications.

     * CONFIGURED

       This state is achieved either by SHDCP configuration
       or any other configuration method by higher level
       protocols.

       Device can be configured by SHDCP CONFIGURE request
       only once.
       Configured device must reject any other SHDCP configure
       requests.

     * DHCP

       Device have its current IPv4 address assigned
       by DHCP.


3.2. Model of Operation

   The SHDCP Control Point discovers SHDCP Devices
   using broadcast UDP packets with an assigned UDP port
   (not yet allocated by IANA).

   Discovery packets have the command field filled with
   value of DISCOVERY_REQUEST.

   The Device responds with a packet with the command field filled
   by value of DISCOVERY_RESPONSE.
   The Flag bits must be filled with current Device states.
   Other part of the response packet is filled with
   current network configuration and optional strings
   which describe other device features.

   The Device can optionally send ANNOUNCE packets
   which almost the same as DISCOVERY_RESPONSE.
   The only difference is the command value.
   ANNOUNCE packets can be sent on each device startup
   and on each change of device's network configuration.

   The Control Point sends a CONFIGURE packet destinated
   to the Device by the Ethernet address.
   Only unconfigured device accepts this type of packet
   and performs requested configuration.

   The only difference in Devices is their own Ethernet
   addresses.


   Host                Control point
   ----                --------------

     *   -> ANNOUNCE            *
     *   <- DISCOVERY_REQUEST   *
     *   -> DISCOVERY_RESPONSE  *
     *   <- CONFIGURE           *


3.3. IP Header Values

   Time to Live
      A TTL value of 1 is used.

   Type of Service
      A TOS value of 0 is used.

   Protocol
      A UDP (User Datagram Protocol) value of 17 is used.

   Source Address
      The device IP address on the interface if one has been
      configured (or learned though an address assignment
      mechanism). Otherwise 0.0.0.0 should be used.

   Destination Address
      Broadcast address 255.255.255.255.


3.4. UDP Header Values

   Destination Port
      FIXME <SHDCP port> is not assigned by IANA


3.5. Packet Structure

 Offset   Length    Description
(octets) (octets)
-------- --------   --------------------------------------------------
  0          5      Signature, sequence of 5 ASCII symbols 'SHDCP'
  5          1      Protocol version, 0
  6          1      Command
  7          1      Flags
  8          2      Reserved, 0
 10          6      Ethernet address, in network byte order
 16          4      IPv4 address, in network byte order
 20          4      IPv4 netmask, in network byte order
 24          4      IPv4 broadcast address, in network byte order
 28          4      IPv4 gateway address, in network byte order
 32      Variable   Optional, sequence of zero terminated ASCII strings


Command            Value Message direction
------------------ ----- -------------------------------------
ANNOUNCE             0   host -> control point (like RESPONSE)
DISCOVERY_REQUEST    1   control point -> host
DISCOVERY_RESPONSE   2   host -> control point
CONFIGURE            3   control point -> host


Flags          Value Description
----------     ----- -------------------------
CONFIGURED       1   Host is configured
DHCP             2   Host uses DHCP


Optional strings field is a sequence of zero terminated ASCII strings.

  String1\0String2\0String3\0[...]

where \0 is string terminating zero octet.

Strings are limited by common packet length.

It is recommended to use strings by pairs as key and value.
Example:

        "type"     "camera" | "router" | whatever
        "vendor"   "Sigrand"
        "model"    "SG-1C-121"
        "sw_ver"   "1.0.3703"
        "hw_ver"   "1"
        "hostname" "sigticam"
        "domain"   "sigrand.local"


It is recommended that a packet with strings fits
in a single Ethernet packet.

The default maximum transmission unit for UDP messages
is 1400 bytes excluding UDP and other headers.
This length is more than enough for any reasonable payload.


3.6. Packet Repeats

  Since the protocol has no acknowledgement mechanisms,
  it is common practice to compensate possible packet loss
  by repeating messages several times.

  * DISCOVERY_REQUEST and ANNOUNCE should be repeated 4 times
    with 0.5 seconds interval.

  * DISCOVERY_RESPONSE should be sent only once on each of
    DISCOVERY_REQUEST packets.

  * CONFIGURE should be sent only once to each device.
    The Control point can verify that CONFIGURE succeeds
    either by receiving ANNOUNCE from the reconfigured device
    or by sending DISCOVERY_REQUEST to the device selectively.


3.7. Security Considerations

  The protocol has no security mechanisms.
  Unconfigured devices may be catched up by any unauthorized person.
  This is compensated by one time configuration - once configured,
  devices must ignore any other CONFIGURE requests.
  Other security should be provided by higher level protocols.


3.8. IANA Considerations

  UDP port number for the protocol should be assigned by IANA.
  A single number of the User Ports range from 1024-49151
  would be acceptable.



A. Authors' Addresses

   Dmitry Fedorov
   Sigrand LLC
   Lavrentieva prospect 6/6
   office 16
   Novosibirsk 630090
   Russia

   Phone: +7 913 915 8477
   E-mail: dmitry@sigrand.com


B. Full Copyright Statement

   This Internet-Draft is submitted in full conformance with
   the provisions of BCP 78 and BCP 79.

   Copyright (c) 2013 IETF Trust and the persons identified
   as the document authors. All rights reserved.


C. Disclaimer

   This document and the information contained herein are provided
   on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
   REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT
   THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR
   ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
   PARTICULAR PURPOSE."