Internet DRAFT - draft-casagranda-vignaroli-btftp

draft-casagranda-vignaroli-btftp






Internet Draft                                             P.Casagranda
Document: draft-casagranda-vignaroli-btftp-01.txt           L.Vignaroli
Category: Experimental                                       RAI - CRIT
                                                          December 2000


                Broadcast Trivial File Transfer Protocol


Status of this Memo

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

   Internet-Drafts are working documents of the Internet Engineering
   ask 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 document describes the Broadcast Trivial File Transfer Protocol
   (BTFTP), a protocol designed to be used as a datagram based,
   multicast enabled protocol with optional back-channel. The main
   purpose of the protocol is data and file transfer over broadcast,
   wireless channels (e.g. Digital Video Broadcasting channels, like
   terrestrial DVB-T and satellite DVB-S [ISO13818]) without the need
   of a back-channel (which is optional). The efficiency of the
   protocol over a satellite and terrestrial wireless link has been
   widely tested.

Conventions used in this document

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


Acknowledgements

   The BFTP protocol has some functionality of TFTP protocol [RFC1350]
   but it has very few structural similarities with it.

Table of Contents

P. Casagranda L.Vignaroli    Experimental -  Expires: June 2001      1

               Broadcast Trivial File Transfer Protocol  December 2000



   1.    Overview of the Protocol
   2.    Protocol Specification
   2.1.  BTFTPPacket
   2.2.  BTFTPWriteRequest
   2.3.  BTFTPData
   2.4.  BTFTPNak
   2.5.  BTFTPWriteRequestExtension
   2.6.  Types Used in TLV fields
   3.    Typical Sequence of Operation
   3.1.  Operation without Back-Channel
   3.2.  Operation with Back-Channel
   4.    Security Considerations
   5.    References
   6.    AuthorsÆ Addresses


1. Overview of the Protocol

   The BTFTP protocol was created for the purpose of data and file
   transfer over digital broadcast channels, DVB like (DVB-S, DVB-T).
   The peculiar features of the protocol are:
   a) optional back-channel: the protocol works without back-channel,
   in a pure broadcasting way; an optional back-channel is nevertheless
   supported to increase reliability
   b) very low header overhead: the headers are kept as small as
   possible
   c) simplicity: the specification and implementation are very simple
   (more straightforward than DVB Object Carousel for example)
   d) extensibility: the BTFTPWriteRequest packet can easily be
   improved for particular needs.
   e) compatibility: is an IP based protocol (instead of DVB Data
   Carousel and Object Carousel Protocols)

   The protocol was thought to be implemented over User Datagram
   Protocol (UDP) but this does not exclude other datagram protocols.
   In that way it can be encapsulated in Digital Video Broadcasting
   transport stream (Multi-Protocol Encapsulation Profile [ISO13818])
   and sent over wireless, broadcasting channels. BTFTP can work in two
   ways: without the back-channel and with a low bit-rate back-channel.

   - Operation without back-channel
   The protocol can be used without a back-channel, in a pure
   broadcasting manner, with no interactivity. This is the main purpose
   of the protocol.
   In that way the contents are fixed, and the user selects a channel
   and then begins downloading all or part of the data of that channel.
   Reliability is obtained in two ways: with the Forward Error
   Correction (FEC) of the underlying layers (e.g. Viterbi and Reed
   Solomon protection of a DVB channel) and/or redundancy, that is
   repeating the transmission.

   - Operation with back-channel

P. Casagranda L.Vignaroli    Experimental -  Expires: June 2001      2

               Broadcast Trivial File Transfer Protocol  December 2000


   The protocol can be used with a low bit-rate back-channel. This adds
   reliability at the expense of another channel that should carry the
   packet requests. The protocol in itself does not implement
   interactivity (it was not designed for this scenario): for this
   purpose HTTP or other protocols can be possibly used instead of
   BTFTP. The check of data integrity is provided in both scenarios by
   a CRC32 code.


2. Protocol Specification

   This section describes the format of the BTFTP packets. Below is
   shown the syntax of each type of packet and the semantic of each
   field.


2.1. BTFTPPacket

   This is the primary packet which contains the common header of all
   BTFTP packets. The packet format is:

   BTFTPPacket()                Length in bits (big endian notation)
   {
   TID;                                         32
   OPCODE;                                      8
   BlockNumber;                                 32
   BlockSize;                                   16
   FutureUse;                                   5
   LastPacketFlag;                              1
   RedundancyFlags;                             2
   if  (OPCODE==0)
                BTFTPWriteRequest();
   if (OPCODE==1)
                BTFTPData();
   if (OPCODE==2)
                BTFTPNak();
   if (OPCODE==3)
                BTFTPWriteRequestExtension();
   if (RedundancyFlags==01)
                Chekcsum;                       32
   If (RedundancyFlags==10)
                CRC32;                          32
   If (RedundancyFlags==00)
                Ignored;                        32
   }

   Semantics:
   TID: it is the Transmission Identifier which is used to
   differentiate each file transmission from others, in this way we can
   have different multiplexed files transmissions. The value of this
   field is the same for each packet of the same file transmission, and
   must be different from other file transmissions at the same time.


P. Casagranda L.Vignaroli    Experimental -  Expires: June 2001      3

               Broadcast Trivial File Transfer Protocol  December 2000


   OPCODE: this field contains the operation code of current packet,
   this value specified the packet type which can be BTFTPWriteRequest
   (value = 0), BTFTPData (value = 1), BTFTPNak (value = 2) or
   BTFTPWriteRequestExtension (value = 3).
   BlockNumber: this is the packet counter of the protocol, it is used
   to enumerate packets of same type; the start value is one.
   BlockSize: It is the size in bytes of the current packet. There are
   no restrictions in the use of this field but it should be used a
   constant BlockSize value for BTFTPData packets for each file
   transmission.
   FutureUse: five bits field for future use.
   LastPacketFlag: this field is used only with OPCODE = 1 (BTFTPData),
   the value 1 indicates that this is the last data packet of a
   trasmitted file. If  OPCODE is not BTFTPData the field is ignored.
   RedundancyFlags: these two bits specify the redundancy type of the
   BTFTP packet.
   Checksum: this is a 32 bits field which contain the sum of all bytes
   in the packet without carry.
   CRC32: this is an 32 bits field which contain the CRC calculated
   over this packet, which must be calculated in according to MPEG 2
   system specifications, refer to [ISO13818]
   Ignored: if RedundancyFlags is 00 these 32 bits are ignored by the
   decoding procedure.


2.2. BTFTPWriteRequest (OPCODE = 0)

   The Write Request Packet is used to inform the receiver that a
   transmission is beginning, this packet carries the information
   necessary to file decoding, it contains information like file name
   (must be present if a file is trasmitted), file type or generic file
   information.
   All information in the Write Request part of packet are encapsulated
   as TLV (Type Length Value) format.
   There is only one Write Request packet for each file transmission
   (same TID), if the packet is to short to encapsulate file
   information or if there is the necessity to transmit extra file
   description it must be done using the BTFTPWriteRequestExtension.
   The format of  the Write Request is:

   BTFTPWriteRequest()          Length in bits (big endian notation)
   {
        TotalBlockNumberWRE;                    32
        TotalBlockNumberData;                   32
        TLV();
   }

   Semantics:
   TotalBlockNumberWRE: this field carries to the receiver the total
   block number of  Write Request Extension packets. If the value is 0
   there are not Extension packets. Otherwise the value specify how
   many Write Request Extension packets the receiver must read to
   completely rebuild data description.

P. Casagranda L.Vignaroli    Experimental -  Expires: June 2001      4

               Broadcast Trivial File Transfer Protocol  December 2000


   TotalBlockNumberData: this field indicates the number of packets
   containing data, the value specifies how many BTFTPData packets the
   receiver has to read to rebuild the transmitted file.
   TLV(): indicates a sequential list of TLV fields which contains the
   data description, the file name TLV is mandatory. This TLV list
   terminates with a type '0' TLV. Look at TLV section for more
   information. So, the general form of a TLV() is:
   <Type><Length><TLV content (when specified can be omitted)>


2.3. BTFTPData (OPCODE =1)

   This is the data packet of the protocol. A portion of the file to
   transmit is stored in the payload. The length of payload depends on
   the BlockSize value and on the extra information optionally
   encapsulated.
   The format of this packet is:

   BTFTPData()
   {
        TLV();
        Payload;
   }

   Semantics:
   TLV(): indicates an optional sequential list of TLV field which
   contains the extra data description, the type '0' TLV is mandatory.
   This TLV list must terminate with a type '0' TLV. See TLV section
   for more information.
   Payload: it contains a portion of transmitted file, the size depends
   on the BlockSize value and the length of previous TLV list (look at
   the meaning of BlockSize).


2.4. BTFTPNak (OPCODE = 2)

   This type of packet is used only in operation with back channel.
   BTFTPNak packets are sent by the receiver to the transmitter.
   BTFTPNak packets must be sent with the same TID of the requested
   packet and must be sigle packets (the BTFTPNak cannot be on multiple
   packets). For example, if packet n of a transmission with TID m has
   been lost, the BTFTPNak request is a packet with the same TID m.
   BTFTPNak packets contain requests of lost packets.
   The format of this packet is:

   BTFTPNak()
   {
        TLV();
   }

   Semantics:
   TLV(): this is one Nak TLV field following by a type æ0Æ TLV. The
   Nak TLV indicate the list of lost packets.

P. Casagranda L.Vignaroli    Experimental -  Expires: June 2001      5

               Broadcast Trivial File Transfer Protocol  December 2000


   The TLV with the request(s) is of type 128: it contains a list of
   intervals of packets to be retransmitted (Nak list). Each entry of
   the list is 9 octets long. The format of the list is:
        <OPCODE, 1 byte><Block number of first packet, 4 bytes><Number
   of packets, 4 bytes>
        <OPCODE><Block number of first packet><Number of packets> à
   The notation is big endian. For example, if data packet 0x0A31
   (hexadecimal) had been lost, the TLV content would be:
        0x01 0x00 0x00 0x0A 0x31 0x00 0x00 0x00 0x01
   If there were 0x39 lost packet from packet number 0x0A31, and 0x28
   from data packet number 0xBA13, the content of the TLV would be:
        0x01 0x00 0x00 0x0A 0x31 0x00 0x00 0x00 0x39
        0x01 0x00 0x00 0xBA 0x13 0x00 0x00 0x00 0x28


2.5. BTFTPWriteRequestExtension (OPCODE = 3)

   This type of packet is optional and is used only if one
   BTFTPWriteRequest packet can not carry all the file and transmission
   description (because the description length is greater than the
   payload size of the BTFTPWriteRequest packet).
   The format is:

   BTFTPWriteRequestExtension()
   {
        TLV();
   }

   Semantics:
   TLV(): it contains a list of TLV field following by a type '0' TLV.


2.6. Types used in TLV fields

   The TLV fields need a coherent convention to use the Type field. In
   general, the number of bytes of the field Length depends on the
   field Type; in other words it is not fixed for all Types.
   The Type field has to be specified with the following convention:
   Type = 0: There are no Length and Value fields. This must be the
   last TLV of the list.
   Type = 1: Length of 2 bytes. The Value contains the file name.
   Type = 2: Length of 2 bytes. The Value contains the type of the
   file.
   Type = 3: Length of 2 bytes. The Value contains information on the
   file.
   Type = 4: Length of 2 bytes. The Value contains a command file, to
   be executed on a local machine.
   Type = 128: Length of 2 bytes. The Value contains a Nak list.

   In greater detail we have:
   Type = 0: This Type tells the decoder that the TLV sequence has come
   to an end.


P. Casagranda L.Vignaroli    Experimental -  Expires: June 2001      6

               Broadcast Trivial File Transfer Protocol  December 2000


   Type = 1: The file name of the file that is going to be transmitted.
   The filename is encoded in standard 8 bits ASCII code.
   Type = 2: The type of the file. The possible types (e.g. gzip, text,
   html, png...) are not standardized in this document. The type is
   encoded in standard 8 bits ASCII code.
   Type = 3: Some useful information on the file. This can be an ASCII
   string that describes the file. It is, like the other TLV, optional.
   The information is encoded using standard 8 bits ASCII code.
   Type = 4: Sometimes it is useful to have a command file to be
   executed at application level and to be transmitted very rapidly,
   possibly on a single packet, which is the purpose of this TLV. This
   should be a text file.
   Type = 128: It contains a list of intervals of packets to be
   retransmitted (Nak list). Each entry of the list is 9 octets long.
   The format of the list is:
        <OPCODE, 1 byte><Block number of first packet, 4 bytes>
   <Number of packets, 4 bytes>
        <OPCODE><Block number of first packet><Number of packets> ...

   Other values for the Type field are reserved for future use.


3. Typical Sequence of Operation

   This chapter describes two typical sequences of operation and it
   should clarify the previously stated concepts. Note that this
   document is not intended to specify a policy for requests (time-out
   algorithm, request reiteration, et al.)


3.1. Operation without Back-Channel

   In a typical scenario without back-channel, let's suppose the
   Receiver has begun listening on a channel (address and port). The
   Broadcaster begins transmitting a file:

   Transmitter          Receiver
   BTFTPWriteRequest    Receiving BTFTPWriteRequest, checking CRC32
   BTFTPData            Receiving BTFTPData, checking CRC32
                        and sequence number of the packet.
                        The packet is out of sequence, set a timeout
                        for previous packets.
                        The packet is in sequence, but CRC32 is wrong:
                        that TID is discarded.
                        The timeout for that TID is reached: that TID
                        is discarded.
                        The packet is in sequence and CRC32 is right:
                        continue until the last packet is correctly
                        received.


3.2. Operation with Back-Channel


P. Casagranda L.Vignaroli    Experimental -  Expires: June 2001      7

               Broadcast Trivial File Transfer Protocol  December 2000


   In a typical scenario with back-channel, let's suppose the Receiver
   has begun listening on a channel (address and port). There is also a
   channel for request packets, that can be chosen as a low bit-rate
   channel. The Broadcaster begins transmitting a file:

   Transmitter          Receiver
   BTFTPWriteRequest    Receiving BTFTPWriteRequest, checking CRC32
   BTFTPData            Receiving BTFTPData, checking CRC32
                        and sequence number of the packet.
                        If the packet is out of sequence, set a timeout
                        for previous packets.
                        If the packet is in sequence, but CRC32 is
                        wrong: add to the list of packets to be
                        requested. Periodically send a
                        BTFTPAcknowledgement packet to request lost or
                        wrong packets.
                        If timeout for that TID is reached: that TID is
                        discarded.
                        If the packet is in sequence and CRC32 is
                        right: continue until the last packet is
                        correctly received.

   The implementation can chose a clever policy to request the lost
   packets and minimize the band of the back-channel; this policy is
   not specified in this document.


4. Security Considerations


   The protocol has to work without a back-channel too (and it is the
   main purpose for which it has been developed). So a session canÆt be
   established in all scenarios. The content can be protected through a
   mechanism like this:
   - the Receiver creates a private key and a public key pair
   - the Receiver sends the public key to the Transmitter, out of band
     if there is no back-channel
   - the Transmitter creates periodically symmetric keys (session
     keys). These keys are sent to the Receiver, encrypted with the
     ReceiverÆs public key
   - the Transmitter sends content (files) to the Receiver encrypting
     it with the session key

   The protocol works on an UDP/IP stack, so many security
   considerations concerning protocol on this stack can be applied to
   the BTFTP protocol.


5. References

   [RFC1350]  K. Sollins: "The TFTP Protocol - Revision 2", RFC1350,
   July 1992


P. Casagranda L.Vignaroli    Experimental -  Expires: June 2001      8

               Broadcast Trivial File Transfer Protocol  December 2000


   [RFC2119]  S. Bradner: ôKey words for use in RFCs to Indicate
   Requirement Levelsö, RFC2119, March 1997
   [ISO13818] "ISO/IEC 13818 Specification"



6. Authors' Addresses

   Paolo Casagranda
   RAI - CRIT
   Corso Giambone 68
   10135 û Torino
   ITALY
   Email: p.casagranda@rai.it

   Luca Vignaroli
   RAI - CRIT
   Corso Giambone 68
   10135 û Torino
   ITALY
   Email: l.vignaroli@rai.it

































P. Casagranda L.Vignaroli    Experimental -  Expires: June 2001      9

               Broadcast Trivial File Transfer Protocol  December 2000



Full Copyright Statement

   "Copyright (C) The Internet Society (date). 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.






























   draft-casagranda-vignaroli-btftp-01.txt
   Expires: June 2001







P. Casagranda L.Vignaroli    Experimental -  Expires: June 2001     10