INTERNET-DRAFT                             Petr Cach, Petr Fiedler
Category:Experimental                      Brno University of Technology
<draft-cafi-can-ip-00.txt>
March 2001                                 Comments are welcome at:
Expires: September 2001                    cach@dame.fee.vutbr.cz
                                           fiedlerp@dame.fee.vutbr.cz




                                IP over CAN

Status of this Memo

   This document is an Internet-Draft and is in full conformance
   with all provisions of Section 10 of RFC2026.

   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/ietf/1id-abstracts.txt

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

Abstract

   This protocol is intended to allow direct connection of low cost
   devices to Internet using an inexpensive serial communication bus.
   Presented protocol is not intended for hard real-time operations.


Cach & Fiedler                 Experimental                     [Page N]

INTERNET-DRAFT                  IP over CAN                   March 2001


1. Introduction

   At present time there is no standard technology that would allow
   connection of low cost devices to Internet through inexpensive serial
   communication bus. To connect low cost devices to Internet the only
   standardized and inexpensive interface is a point-to-point serial
   interface (eg. RS-232) using PPP or SLIP protocols. The main
   disadvantage of these protocols is operation over point-to-point
   interfaces only.

   In automation there are used inexpensive serial communication bus
   technologies (eg. RS-485, CAN, etc. ) that allow connection of many
   devices to a single serial bus and those serial buses could be used
   to transfer IP protocol datagrams as well. However, there is no
   standardized protocol that would define how to transfer IP datagrams
   over such inexpensive serial buses. The purpose of this document is
   to present a draft specification of a protocol that would define how
   to transfer IP datagrams over CAN.

2. Controller Area Network

   Controller Area Network (CAN,CAN-bus) is a serial communication bus
   that is used in automation and automotive industry. CAN allows
   communications speeds up to 1 Mb/s and bus lengths over 1 km, however
   maximum bit rate depends on bus length. The access method is
   CSMA/CR. This access method guarantees that in case of collision the
   frame with higher priority is not corrupted. The main advantage of
   CAN is reliability and low cost of implementation. At present time
   CAN is used in a wide variety of applications, ranging from cars and
   trucks to process and building automation. CAN specifications
   (ISO 11898, ISO 11519) describe only physical and link layers of well
   known OSI model. Above CAN are used many different protocols that
   define higher level protocols, however at present time there is no
   open standard that would define how to use CAN to transfer datagrams
   of the most important protocol of this decade - datagrams of
   Internet Protocol.

3. IP over CAN

   To specify how to transfer IP datagrams over CAN it is necessary to
   define:
    - How to address devices on CAN (CAN nodes);
    - Structure of CAN identifier;
    - Distribution of Internet addresses among CAN nodes;
    - Fragmentation of IP datagrams;
    - Timing requirements (minimum and maximum delays).

3.1 Addressing of CAN nodes

   Number of nodes connected to one bus is physically limited by
   properties of available CAN transceivers and the transceivers usually
   allow less than 127 devices connected to one bus. CAN message
   contains identifier field (11 bits or 29 bits long) which can be used
   for addressing purposes. This identifier identifies content of
   message and each particular node can use this identifier to
   automatically ignore messages that are of no importance for that
   particular node. It is obvious, that the header of IP datagram does
   not fit into the CAN identifier. Also it seems to be useful to
   include in the identifier both address of receiver and address of
   sender.

   For this reasons is seems adequate to use CAN according to
   specification CAN 2.0B that uses 29 bit long identifier and to
   differentiate devices on the same bus by eight bit "CAN-IP"
   address. Number of nodes connected to one IP over CAN subnet is thus
   limited to approx. 256 devices (some addresses are reserved). The
   "CAN-IP" address corresponds to the least significant byte of IP
   address. So a device with IP address of 147.229.14.45 would have
   "CAN-IP"address of 45.

3.1.1 Structure of CAN identifier in IP over CAN

              27   24                                             0
        +------+----+---------------------------------------------+
        | PRIO | MG |                 MG Dependent                |
        +------+----+---------------------------------------------+
            |     |                    |
            |     |                    +- Content depends on MG
            |     +---------------------- Message Group (3 bits)
            +---------------------------- Priority (2 bits)

                Figure 1: Bit assignment in CAN identifier

   Identifier of CAN message contains following fields:
    - Priority (2 bits) - priority of a message;
    - Message group (3 bits) - message group is used to interpret the
      next 24 bits;
    - Additional 24-bits - these bits depend on message group used.

   Message group (MG) is used to distinguish among different message
   groups. Each group consists of messages that are used for
   a particular service. Placement of MG to the beginning of identifier
   also allows to differentiate priority of message groups in a way that
   minimizes risk of congestion of a bus. There are defined following
   message groups:
    - IP address assignment messages - these messages will be used
      during assignment of IP addresses to nodes;
    - DID Check message - Duplicate ID Check - test if specified
      "CAN-IP" address is free to use in cases when C-DHCP server is
      not responding;
    - Fragmented IP datagram - these messages will be used for
      transmission of IP datagrams when the node is fully configured and
      in operational state.

3.2 IP address assignment messages (C-DHCP)

   These messages are distinguished by value 0 in MG field. Messages in
   this group are used for assignment of IP address to a node connected
   to CAN bus. It is required that all devices contain unique hardware
   identifier (HWID). This HWID is assigned by manufacturer of that
   particular device. Examples of such unique identifiers are MAC
   address in Ethernet and Neuron ID in LonWorks networks. Length of
   HWID is not specified here, this specification only limits the
   maximum length of this identifier to 32 octets (32 bytes). IP address
   assignment messages use following structure of CAN identifier:
    - Priority (PRI - 2 bits) - priority of message;
    - Message group (MG - 3 bits) - value is 0 ('000b');
    - Message type (MT - 2 bits) - value depends on type of message;
    - More IP addresses (MIP - 1 bit) - indicates whether primary or
      additional IP is being assigned;
    - More Fragments (MF - 1 bit) - indicates whether the receiver
      should expect more fragments;
    - Fragment Counter (FC - 4 bits) - contains fragment number;
    - XDATA (XDATA1:XDATA2 - 16 bits) - data that take part in bus
      arbitration.

              27   24  23  22   20     16                         0
        +------+----+---+---+----+------+------------+------------+
        | PRIO | MG |MIP| MF| MT |  FC  |   XDATA1   |   XDATA2   |
        +------+----+---+---+----+------+------------+------------+
           |     |    |   |   |      |              \ /
           |     |    |   |   |      |               +- Depends on MT
           |     |    |   |   |      +-- Fragment Counter  (4 bits)
           |     |    |   |   +--------- Message Type      (2 bits)
           |     |    |   +------------- More Fragments    (1 bit)
           |     |    +----------------- More IP addresses (1 bit)
           |     +---------------------- Message Group     (3 bits)
           +---------------------------- Priority          (2 bits)

            Figure 2: IP address assignment message identifier

   During the process of IP address assignment there are defined
   following types of messages:
    - Fragmented request and response for IP address assignment
      arbitration;
    - Message which assigns IP address to a device that "won" the
      arbitration;
    - Unfragmented message that forces a node(s) to request new IP
      address.

3.2.1 Request and response for an IP address assignment arbitration

   Device that requests assignment of IP address sends CAN Remote Frame
   with identifier filled with following values:
     MG = 1h (001b)
     MT = 0 (00b)
     MIP = 0 or 1
     MF = 0 or 1
     FC = 0 .. 15
     XDATA - contains fragmented HWID of node that sends the request.

   Value of MIP is 0 if the device requests primary IP address. If the
   device needs more than one IP address it should send request with the
   MIP bit is set to 1 which indicates request for additional
   (non-primary) IP address. Field XDATA is used to transfer fragments
   of the unique HWID of device that requests the IP address. In the
   first message (first fragment, FC = 0) the XDATA contains first
   (least significant) and second byte of HWID, in the second message
   (second fragment, FC = 1) the XDATA contains third and fourth byte of
   HWID, etc. If there will be additional fragments the MF bit must be
   set to 1. In the last fragment the MF bit has to be set to 0.
   Fragment Counter (FC) is set to 0 in the first fragment and is
   incremented by 1 in each consecutive fragment. This fragmentation
   protocol is able to transmit HWID up to 32 bytes long.

   After transmission of the fragment the sender has to wait for
   response from a C-DHCP server for a maximum time of T1. The response
   is Data Frame (with no data) that contains the same identifier as was
   in the request. If the sender does not receive response until the
   timeout period T1 expires, it should start the request procedure
   again from the first fragment. After reception of a response from the
   C-DHCP server the requesting device may send next fragment. After
   reception of the response with last fragment (MF = 0) the requesting
   device should wait for period of T2 for a message that assigns an IP
   address. If the device does not receive a IP address assigning
   message, it should start again the request for IP address.

3.2.2 Message that assigns IP address

   After reception of last fragment of request for an IP address the
   C-DHCP server has to send both response to that request and a message
   that assigns IP address. Message that assigns an IP address is based
   on CAN Data Frame and may be fragmented if necessary (e.g. IP
   version 6). The CAN identifier of message that assigns IP address is
   filled by following values:
     MG = 1 (001b)
     MT = 1 (01b)
     MIP = 0 or 1  - according to request
     MF = 0 or 1   - according to FC
     FC = 0 .. 15  - fragment counter used as above
     XDATA1 = 255
     XDATA2 = 255

   The IP address is transmitted in the data field of Data Frame and is
   transmitted MSB (Most Significant Byte) first.

3.2.3 Message that forces reconfiguration of nodes

   Message which forces reconfiguration of nodes is used to force the
   addressed node(s) to request a new IP address. The message may be
   addressed to either one or all devices (unicast or broadcast). In
   case of unicast the addressed device must discard current IP address
   (addressed one) and must apply for new IP address as a replacement of
   the discarded one. In case of broadcast all connected devices must
   discard all IP addresses and apply for new ones.

   Message that forces reconfiguration of nodes is based on CAN Data
   Frame and has following identifier:
     MG = 1 (001b)
     MT = 2 (10b)
     MIP = 0
     MF = 0
     FC = 0 .. 15     - fragment counter used as above
     XDATA1 = 255
     XDATA2 = 0..255  - address of node that must reconfigure

   If the XDATA2 = 255 then all devices on the bus must reconfigure.


3.3 Fragmentation protocol of IP datagrams

   The CAN bus was originally developed for use in automotive
   communications. The automotive applications need to send small amount
   of data very often. Thus the CAN is able transmit only up to 8 bytes
   of data in one Data Frame. In order to transmit messages longer
   then 8 bytes is necessary to use some kind of fragmentation. Proposed
   fragmentation protocol is inspired by ISO 15765-2. ISO 15765-2
   specifies transfer protocol between two devices which use
   acknowledgement. This allows only point-to-point data transmision.
   Because the IP protocol specifies possibility to broadcast data, it
   is necessary to add some extensions to this fragmentation protocol.
   The fragmentation protocol allows transmission of only one fragmented
   IP datagram between two nodes in each direction at the same time.
   This requirement prevents corruption of IP datagrams.

3.3.1 Structure of message identifier
   Fragmentation protocol uses Data Frames of CAN bus protocol only, no
   Remote Frames are used. The message identifier of each frame is
   divided into eight fields of different size.
    - PRI (Priority - 2 bits) - defines priority group of the CAN
      message;
    - MG (Message group - 3 bits) - defines type of message group. IP
      datagram messages belong to the group 7;
    - R (Reserved - 2 bits) - reserved for future use. Both bits have
      recessive value;
    - MT (Message type - 2 bits) - specifies the type of fragmentation
      protocol message;
    - PARAM (Parameters - 4 bits) - specifies the parameters of current
      fragmentation protocol message. The meaning di#ers according to
      the specified Message Type;
    - SOURCE (Source address - 8 bits) - this field contains address of
      sending device. The value of the address is equal to the lowest
      eight bits of IP address of source device;
    - DESTINATION (Destination address - 8 bits) - this field contains
      destination address. The value of the address is equal to the
      lowest eight bits of IP address of destination device.

              27   24  23  22   20     16                         0
        +------+----+---+---+----+------+------------+------------+
        | PRIO | MG | R | R | MT | Param|   Source   | Destination|
        +------+----+---+---+----+------+------------+------------+
           |     |    \   /   |      |         |        |
           |     |     \ /    |      |         |        +- Destination
           |     |      |     |      |         |           Address
           |     |      |     |      |         +- Source address
           |     |      |     |      +-- Message Parameters (4 bits)
           |     |      |     +--------- Message Type       (2 bits)
           |     |      +--------------- Reserved           (2x1 bit)
           |     +---------------------- Message Group      (3 bits)
           +---------------------------- Priority           (2 bits)

             Figure 3: IP datagram fragment message identifier

   There are defined three types of fragmentation protocol messages. Two
   of them are used for data flow control, one for data transfer. The
   message types are distinguished by value in MT field of CAN
   identifier (see Tab. 1).

                   Message Type    Meaning
                  ------------------------------------------
                        0          Reserved for future use
                        1          First Frame (FF)
                        2          Consecutive Frame (CF)
                        3          Flow Control Frame (FC)

               Table 1: Fragmentation protocol message types

3.3.2 Message Type

   First Frame - FF
   Transfer of an IP datagram is started by this frame. It specifies the
   total length of transferred data message.

        CAN message identifier           CAN message data
        +---+---+---------------+        +----+---------------+
        |  MT   |     PARAM     |        | 0  |    1 .. 7     |
        +---+---+---------------+        +----+---------------+
        | 0 | 1 |      XDL      |        | DL |   reserved    |
        +---+---+---------------+        +----+---------------+

                     Figure 4: First Frame definition

   - XDL (Extended Data Length - 4 bits) - specifies upper part of
     segmented data message length.
   - DL (Data Length - 1 byte) - the first byte of data part of CAN
     message specifies the lower part of the segmented data message
     length. So the total length is represented by 12 bits. It allows to
     transfer data messages up to 4095 bytes long.
   The remaining data bytes are reserved for future use.

   Consecutive Frame - CF
   All data of the segmented data message are transferred using
   Consecutive Frames.

        CAN message identifier           CAN message data
        +---+---+---------------+        +--------------------+
        |  MT   |     PARAM     |        |      0  ..  7      |
        +---+---+---------------+        +--------------------+
        | 1 | 0 |      SN       |        |     app. data      |
        +---+---+---------------+        +--------------------+

                  Figure 5: Consecutive Frame definition

    - SN (Sequence Number - 4 bits) - the sequence number is used to
      detect duplication or loss of Consecutive Frames. It's range is
      zero to fifteen. The first CF sent after the First Frame has
      Sequence Number initialized to one, each following CF has SN
      incremented by one. Upon overflow the SN is initialized back to
      zero.

     All eight data bytes of CAN data frame should be used to transmit
     application data.

   Flow Control Frame - FC
   In case of unicast (point-to-point) data transfers the Flow Control
   is used to maintain the transmission. It informs the sender of the
   status of the data transmission.

        CAN message identifier           CAN message data
        +---+---+---------------+        +----+----+----------+
        |  MT   |     PARAM     |        | 0  | 1  | 2  ..  7 |
        +---+---+---------------+        +----+----+----------+
        | 1 | 1 |      FS       |        | BS | ST | reserved |
        +---+---+---------------+        +----+----+----------+

                  Figure 6: Flow Control Frame definition

    - FS (Flow Status - 4 bits) - status of the current data
      transmission. In the current proposal is defined only one value,
      see Tab 2. The remaining values are reserved for future use.

       Flow Status   Meaning
      -----------------------------------------------------------
           1         FC.CTS - Flow Control.Clear to send.
                     This parameter value is sent to the
                     sender to resume message transmission.
      Other values   Reserved for future use

                  Table 2: Flow Control frame status

    - BS (Block Size - 1 byte) - value of Block Size defines how many
      Consecutive Frames can be sent without immediate
      FlowControl.ClearToSend message from receiving network entity.
      The value is accepted only upon reception of the FC.CTS frame that
      follows the First Frame. The Block Size parameter shall be within
      the range of 0 to 255 (see Tab. 3).

    - ST (Separation Time - 1 byte) - value of Separation time defines
      the minimum time gap between the transmission od Consecutive
      Frames. The time is specified by the receiver and kept by the
      sender for a particular message transmission. The value is
      accepted only upon reception of the FC.CTS frame that follows the
      First Frame.

          Block Size    Meaning
         ----------------------------------------------------------
             0          No further flow control shall be performed
                        during the transmission of CF's. FC frame
                        is sent only after FF.
          1 .. 255      Flow control will be used accordingly.

                  Table 3: Flow Control frame Block Size

3.3.3 Transmission sequence

   The transmission sequence differs according to the type of
   transmission - broadcast or unicast. In case of unicast transmission
   the whole flow control mechanism shall be used. In case of broadcast
   transmission, no flow controll is possible.

   Unicast transmission
   If the destination address is other then 255 then the message is sent
   as unicast message (see Fig. 7). The transmission is started by the
   sender by sending the First Frame. The sender then waits for an
   acknowledgement from receiver. The Flow Control Frame of type Clear
   to Send contains parameters Block Size (BS) and Separation Time (ST).
   After reception of FC.CTS, the sender starts sending data of
   segmented data message using Consecutive Frames. After the number of
   successive CF formerly specified by BS parameter the sender stops
   transmission and waits for Flow Control frame. After reception of
   FC.CTS, the sender sends next block of CF's, until the current
   transmission is finished. The CF's in one block are sent with time
   gap specified by the ST parameter set by receiver.

                      sender                 receiver
                       |   FF, data length = 40   |
                       | -----------------------> |
                       |                          |
                       |           FC.CTS, BS = 3 |
                       | <----------------------- |
                       |   CF.SN = 1              |
                       | -----------------------> |
                       |   CF.SN = 2              |
                       | -----------------------> |
                       |   CF.SN = 3              |
                       | -----------------------> |
                       |                          |
                       |           FC.CTS         |
                       | <----------------------- |
                       |   CF.SN = 4              |
                       | -----------------------> |
                       |   CF.SN = 5              |
                       | -----------------------> |

                 Figure 7: Unicast fragmentation protocol

   Broadcast transmission
   When the destination address equals 255, the message is sent as
   broadcast message (see Fig. 8). In this case no flow control frames
   are used. The transmission is introduced by the First Frame, which
   specifies length of segmented data message. After that follows the
   rest of data message in the form of Consecutive Frame. Each frame is
   separated from the others by a time gap, which value is arbitrary for
   each device so maximum time gap allowed must be used.

                      sender                 receiver
                       |   FF, data length = 40   |
                       | -----------------------> |
                       |   CF.SN = 1              |
                       | -----------------------> |
                       |   CF.SN = 2              |
                       | -----------------------> |
                       |   CF.SN = 3              |
                       | -----------------------> |
                       |   CF.SN = 4              |
                       | -----------------------> |
                       |   CF.SN = 5              |
                       | -----------------------> |

                Figure 8: Broadcast fragmentation protocol

3.4 DID Check message

   After reset of a device every device has to apply for appropriate
   number of IP addresses. During normal operation these IP addresses
   are assigned to all devices by a C-DHCP server. To assure trouble
   free operation in case of C-DHCP server failure the device may use
   the IP address it had before it was restarted (e.g. the IP address
   was saved into EEPROM). However to use the former IP address the
   device has to check if another device does not use identical
   "CAN-IP" address by following procedure:

     1. The device has to apply for an IP address assignment from the
        C-DHCP server at least N times.
     2. If there was no reply from the C-DHCP server the device has to
        send DID Check message with "CAN-IP" address that it intends
        to use.
     3. The device has to wait for an DID Check response for period of
        T4. If the device receives the DID Check response during the T4
        the device is not allowed to use the tested address. If the
        device receives during T4 DID Check message with same address as
        it intends to use the device is not allowed to use the tested
        address.
     4. If the device has not received any DID Check response it has to
        send the DID Check message again and again has to wait for a
        response for T4. If the device receives the DID Check response
        during the T4 the device is not allowed to use the tested
        address. If the device receives during T4 DID Check message with
        same address as it intends to use the device is not allowed to
        use the tested address.
     5. If the device did not recieve the DID Check response it may
        switch to operational state and use the intended "CAN-IP"
        address.


   The DID Check message is based on CAN Remote Frame, structure of
   identifier is in Fig. 9, the identifier fields are filled with
   following values:
     MG = 4 (100b)
     DEST - contains "CAN-IP" address which is being tested

              27   24           16            8            0
        +------+----+------------+------------+------------+
        | PRIO | MG |    0xFF    |    0xFF    | Destination|
        +------+----+------------+------------+------------+
           |     |                               |
           |     |                               +-- CAN IP Address
           |     |                                   under test
           |     +---------------------- Message Group      (3 bits)
           +---------------------------- Priority           (2 bits)

                Figure 9: DID Check and Response identifier

   The DID check response is based on CAN Data Frame, the CAN identifier
   is same as in the DID Check message. During normal operation all
   devices must "listen" for DID Check messages and DID Check
   response. If any device receives DID Check message with its
   "CAN-IP" address it must send DID Response as soon as possible and
   not later than T5 after reception of DID Check message. If any device
   receives DID Check response with its "CAN-IP" address it must cancel
   all its operations and switch to a nonactive state.

4. Conclusion

   Specification of IP over CAN bus is still in development, some
   refinements and extensions will follow. We expect that the work will
   continue in following steps:

   - Specification of properties of gateway between CAN bus and Ethernet
     including C-DHCP description;
   - Definition of required/recomended values and time constants of this
     protocol;
   - Implementation of IP over CAN protocol to a 8-bit microprocessor;
   - Realization of the CAN to Ethernet gateway;
   - Specification of requirements on bus topology and bus timing
     according to the desired length and number of devices;

   Please do not hesistate and send your commnets to the authors.

5. References
   [1] Robert Bosch GmbH, "CAN specification 2.0", 1991,
       can be downloaded from:
       http://www.bosch.de/de_e/productworld/k/products/prod/can/docu/
       can2spec.pdf
   [2] Postel, J., "Internet Protocol", RFC 791, STD 5, September 1981
   [3] Deering, S.Postel, and Hinden, R., "Internet Protocol, Version
       (IPv6) specification", RFC 2460, December 1998

6. Authors addresses

   Petr Cach                             Petr Fiedler
   UAMT FEI                              UAMT FEI
   Brno University of Technology         Brno University of Technology
   Bozetechova 2                         Bozetechova 2
   612 66 Brno                           612 66 Brno
   Czech Republic                        Czech Republic

   Fax: +420 5 41141123                  Fax: +420 5 41141123
   E-mail: cach@dame.fee.vutbr.cz        E-mail: fiedlerp.fee.vutbr.cz


6.  Full copyright statement

   Copyright (C) The Internet Society (2000).  All Rights Reserved.

   This document and translations of it may be copied and furnished
   to others, and derivative works that comment on or otherwise
   explain it or assist in its implementation may be prepared, copied,
   published and distributed, in whole or in part, without
   restriction of any kind, provided that the above copyright notice
   and this paragraph are included on all such copies and derivative
   works.  However, this document itself may not be modified in any
   way, such as by removing the copyright notice or references to the
   Internet Society or other Internet organizations, except as needed
   for the purpose of developing Internet standards in which case the
   procedures for copyrights defined in the Internet Standards
   process must be followed, or as required to translate it into
   languages other than English.

   The limited permissions granted above are perpetual and will not
   be revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on
   an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIMS 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.


   This document expires September 2001.