Internet DRAFT - draft-padgen-webradio

draft-padgen-webradio



INTERNET-DRAFT                                               Neil Padgen
Category: Experimental                                    BBC Monitoring
<draft-padgen-webradio-00.txt>                          16 December 1999
                                                   Expires: 13 June 2000


    A Web-Controlled Radio Broadcast Receiving and Monitoring System

   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.

Status of this Memo

   This memo defines an Experimental Protocol for the Internet
   community.  This memo does not specify an Internet standard of any
   kind.  Discussion and suggestions for improvement are requested.
   Distribution of this memo is unlimited.

Copyright Notice

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

Abstract

   Organisations such as BBC Monitoring monitor radio and television
   broadcasts worldwide.  Traditional monitoring methods incur expensive
   international telephone call charges.  This document describes a
   system whereby remote broadcasts can be monitored using a computer
   connected to a radio or television receiver and to the Internet,
   using inexpensive local calls to its local Internet Service Provider.
   This document also defines the protocol used between the central
   server and the remote clients which implement this system.



Padgen                        Experimental                      [Page 1]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


1.  Introduction

   The proliferation of radio and television broadcasting in recent
   years has significantly increased the importance of monitored media
   as a prime source of breaking news and current affairs.

   Organisations such as BBC Monitoring draw upon radio, television and
   news agency reports from many sources worldwide.  Bulletins are
   monitored, then some local processing (such as translation into
   English) is performed on the monitored broadcast.

   Traditional methods of monitoring remote broadcasts have involved
   installing a receiver at the remote site, and contacting that
   receiver using standard telephone lines.  This incurs expensive
   international call charges.

   This document describes a system where the equipment installed at the
   remote site consists of a computer connected to a receiver, and with
   a modem to connect to the local Internet Service Provider (ISP).
   This enables broadcasts to be recorded on the remote computer, then
   uploaded to a central server for the cost of a short local telephone
   call.

   This document defines the protocol to be used between the central
   server and the remote clients which implement this system.


2.  Structure

   The web-controlled receiver system ("web radio system") consists of
   one central machine (known as the "server") and a number of remote
   machines (known as the "clients").  All user interaction takes place
   with the server.

   The arrangement of the server and clients is something like the
   following:















Padgen                        Experimental                      [Page 2]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


     +----------------+
     |                |      +-------+
     |     server     |------| modem |
     |                |      +-------+
     +----------------+
              |                 server's network
         -------------------------------------------
                          |
                ----------------------
               (                      )
       +-------(       Internet       )------+
       |       (                      )      |
       :        ----------------------       :
       :                  :                  :
       :                  :                  :
       |                  |                  |
       |                  |                  |
   +-------+          +-------+          +-------+
   | modem |          | modem |          | modem |
   +-------+          +-------+          +-------+
       |                  |                  |
 +----------+       +----------+       +----------+
 | webradio |       | webradio | ....  | webradio |
 | client 1 |       | client 2 |       | client N |--------+
 +----------+       +----------+       +----------+        |
       |                  |                  |             |
 +----------+       +----------+      +------------+     +------------+
 | receiver |       | receiver |      | receiver 1 | ... | receiver M |
 +----------+       +----------+      +------------+     +------------+

   The server has a permanent connection to the Internet.  It also has
   access to a modem, although this will rarely be used.

   This document will detail the protocol used between the client and
   the server.  Details of the implementation of the web radio system
   are not discussed here.


3.  Notational Conventions and Generic Grammar

3.1.  Notational Conventions

   This specification uses the same words as RFC 1123[1] for defining
   the significance of each particular requirement.  These words are:

   MUST
     This word or the adjective "required" means that the item is an
     absolute requirement of the specification.



Padgen                        Experimental                      [Page 3]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


   SHOULD
     This word or the adjective "recommended" means that there may exist
     valid reasons in particular circumstances to ignore this item, but
     the full implications should be understood and the case carefully
     weighed before choosing a different course.

   MAY
     This word or the adjective "optional" means that this item is truly
     optional.  One vendor may choose to include the item because a
     particular marketplace requires it or because it enhances the
     product, for example; another vendor may omit the same item.

   An implementation is not compliant if it fails to satisfy one or more
   of the MUST requirements for the protocols it implements.  An
   implementation that satisfies all the MUST and all the SHOULD
   requirements for its protocols is said to be "unconditionally
   compliant"; one that satisfies all the MUST requirements but not all
   the SHOULD requirements for its protocols is said to be
   "conditionally compliant."


3.2.  Augmented BNF

   All of the mechanisms specified in this document are described in
   both prose and an augmented Backus-Naur Form (BNF) similar to that
   used by RFC 822[2].  Implementers will need to be familiar with the
   notation in order to understand this specification.  The augmented
   BNF includes the following constructs:

name = definition
     The name of a rule is simply the name itself (without any enclosing
     "<" and ">") and is separated from its definition by the equal "="
     character.  Whitespace is only significant in that indentation of
     continuation lines is used to indicate a rule definition that spans
     more than one line.  Certain basic rules are in uppercase, such as
     SP, LWS, HT, CRLF, DIGIT, ALPHA, etc.  Angle brackets are used
     within definitions whenever their presence will facilitate
     discerning the use of rule names.

"literal"
     Quotation marks surround literal text.  Unless stated otherwise,
     the text is case-insensitive.

rule1 | rule2
     Elements separated by a bar ("|") are alternatives, e.g., "yes |
     no" will accept yes or no.





Padgen                        Experimental                      [Page 4]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


(rule1 rule2)
     Elements enclosed in parentheses are treated as a single element.
     Thus, "(elem (foo | bar) elem)" allows the token sequences "elem
     foo elem" and "elem bar elem".

*rule
     The character "*" preceding an element indicates repetition.  The
     full form is "<n>*<m>element" indicating at least <n> and at most
     <m> occurrences of element.  Default values are 0 and infinity so
     that "*(element)" allows any number, including zero; "1*element"
     requires at least one; and "1*2element" allows one or two.

[rule]
     Square brackets enclose optional elements; "[foo bar]" is
     equivalent to "*1(foo bar)".

; comment
     A semi-colon, set off some distance to the right of rule text,
     starts a comment that continues to the end of line.  This is a
     simple way of including useful notes in parallel with the
     specifications.


3.3.  Basic Rules

   The following rules are used throughout this specification to
   describe basic parsing constructs.  The US-ASCII coded character set
   is defined by ANSI X3.4-1986[3].

             OCTET          = <any 8-bit sequence of data>
             CHAR           = <any US-ASCII character (octets 0 - 127)>
             UPALPHA        = <any US-ASCII uppercase letter "A".."Z">
             LOALPHA        = <any US-ASCII lowercase letter "a".."z">
             ALPHA          = UPALPHA | LOALPHA
             DIGIT          = <any US-ASCII digit "0".."9">
             CTL            = <any US-ASCII control character
                              (octets 0 - 31) and DEL (127)>
             CR             = <US-ASCII CR, carriage return (13)>
             LF             = <US-ASCII LF, linefeed (10)>
             SP             = <US-ASCII SP, space (32)>
             HT             = <US-ASCII HT, horizontal-tab (9)>
             <">            = <US-ASCII double-quote mark (34)>

   The TEXT rule is only used for descriptive field contents and values
   that are not intended to be interpreted by the message parser.

             TEXT           = <any OCTET except CTLs>




Padgen                        Experimental                      [Page 5]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


   The backslash character ("\") may be used as a single-character
   quoting mechanism within all constructs.

             quoted-pair    = "\" CHAR


4.  Client-server communication

4.1.  Underlying protocol

   The underlying protocol used between the client and server is
   HTTP[4].  A client contacts the server by sending an HTTP POST
   request, consisting of the data as detailed below.  The server's
   response is formatted with a MIME type of text/plain.

   This protocol was chosen in the event that a client's ISP only allows
   HTTP and FTP[5] traffic to be passed through.  It also allows
   underlying HTTP security features (as described in [4, 6] ) to be
   used to authenticate the client, rather than reinventing the wheel by
   developing a new security protocol specifically for this system.


4.2.  Format of a client request

   A client's request is an HTTP POST request with the following
   parameters defined:

   o  HOST - the name of the client, as the server understands it.  This
      need not be the Internet name or address of the client.  Suggested
      client names might detail the physical location (city and country)
      of the client.

   o  REQUEST - the web radio function being requested.  The set of
      requests which MUST be implemented are detailed below.

   o  DATA - any extra data needed for this request.  This is not
      required for every request, but requests which do require
      additional data have the details below.

   o  VERSION - the version of the protocol.  This document describes
      version 1.0.  If the VERSION parameter is missing, version 1.0 is
      assumed.


4.3.  Client requests and server responses

   A list of permissible requests and responses follows.  In the
   examples given in this section, the client is known as "Remote



Padgen                        Experimental                      [Page 6]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


   client".

   The requests listed in this section MUST be implemented by both
   client and server.  Extensions to the protocol MAY be formed by
   submitting a request formatted in a similar way to those that follow,
   with the mandatory HOST and REQUEST parameters and optional DATA
   parameter.

   If an error occurs in processing a client request, the server MUST
   replace the expected response with an error-response.  Similarly, if
   the server does not implement a request from a client which is not in
   the protocol as specified here, an error-response MUST be returned.

   An error-response takes the following form:

         error-response        = "ERROR: " error-message

         error-message         = <any TEXT>


4.3.1.  The "send_stations" request

   The server responds with a list of all stations known for this
   client.  The response consists of a number of lines, each of which is
   the definition of a station.

        send_stations-response = *( station-definition CR )

        station-definition     = station-name ":"
                                 station-frequency ":"
                                 station-band

        station-name           = <any TEXT excluding ":"
                                  except as quoted-pair>

        station-frequency      = *DIGIT "." *DIGIT  ; MUST be at least
                                                    ; one DIGIT in the
                                                    ; station-frequency

        station-band           = 1*( [ ALPHA | DIGIT ] )

   The station-name is a descriptive name of the station.  It MUST be
   unique within this list.

   The station-frequency is a numeric field indicating the frequency in
   MHz.

   The station-band is an alphanumeric field indicating the radio band



Padgen                        Experimental                      [Page 7]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


   to use.  For example, AM or WFM.

   Example:

   The client sends:

           HOST=Remote client
           VERSION=1.0
           REQUEST=send_stations

   The server responds:

           BBC Radio 1:99.4:WFM
           BBC Radio 4 FM:94.2:WFM
           BBC Radio 4 LW:.198:AM


4.3.2.  The "send_queue" request

   The server responds with a list of jobs with which the client should
   update its queue.  This response MUST contain at a minimum all jobs
   which have changed status since the client last sent a "queue_update"
   request.

   The response consists of a number of lines, each of which is a job-
   definition.

         send_queue-response    = *( job-definition CR )

         job-definition         = job-number ":"
                                  start-time ":"
                                  duration ":"
                                  station-name ":"
                                  notify-address ":"
                                  status

         job-number             = 1*( DIGIT )

         start-time             = 1*( DIGIT )

         duration               = 1*( DIGIT )

         notify-address         = <RFC822-formatted mail address>
                                              ; any ":" in this
                                              ; field MUST be escaped
                                              ; as a quoted-pair

         job-status             = numeric-job-status



Padgen                        Experimental                      [Page 8]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


                                  [ ( " " job-status-comment ) ]

         job-status-character   = 3*( DIGIT )

         job-status-comment     = <any TEXT excluding ":"
                                   except as quoted-pair>

   The job-number is a numeric field which acts as the key for this job.
   It MUST be unique within the queue.

   The start-time indicates the time at which the job is due to start.
   It is given in Unix time; i.e. seconds since Jan 1, 1970.

   The duration gives the amount of time that the job is to last.  It is
   given in seconds.

   The station-name indicates which station the radio should be tuned
   to.  It MUST correspond to a station in the station_list response.

   The notify_address is an Internet address to which mail MAY be sent
   indicating the progress of the job.

   The job-status indicates the status of the job.  The optional job-
   status-comment MAY contain a description of the status, e.g. an error
   message.

   The numeric-job-status consists of three digits, each of which has a
   different meaning.  These are as follows:

4.3.2.1.  First digit of numeric-job-status


   1 - indicates that the job is scheduled.

   2 - indicates that the job has been deleted.

   3 - indicates that the job has been successfully completed.

   4 - indicates that the job is in progress.

   5 - indicates that the job has been successfully recorded, but that
       the recording has not yet been uploaded; when a status of this
       type is indicated, the job-status-comment MUST be present and
       indicate, in Unix time, the earliest possible time at which the
       recording might be uploaded.

   6 - MAY be used to indicate an implementation-dependent status; when
       a status of this type is indicated, the job-status-comment MUST



Padgen                        Experimental                      [Page 9]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


       be present and indicate details of the status.

   9 - indicates that an error has occurred; when a status of this type
       is indicated, the job-status-comment MUST be present and indicate
       details of the status.

4.3.2.2.  Second digit of numeric-job-status


   1 - indicates that only the client knows that the job has the status
       indicated in the first digit of numeric-job-status.

   2 - indicates that only the server knows that the job has the status
       indicated in the first digit of numeric-job-status.

   3 - indicates that both the client and server know that the job has
       the status indicated in the first digit of numeric-job-status.

4.3.2.3.  Third digit of numeric-job-status


   1 - indicates that a recording is to be made of this job.

   2 - indicates that this job is to be served live.

   3 - indicates that this job is both to be served live, and a
       recording is to be made.

   Note that nothing prohibits a recording being made of a job whose
   third status digit is 2, nor is live serving of a job whose third
   status digit is 1 prohibited.  In other words, an implementation MAY
   both serve live and record all jobs, for example.

   Example:

   The client sends:

           HOST=Remote client
           VERSION=1.0
           REQUEST=send_queue

   The server responds:

           1:910872300:1800:BBC Radio 4 FM:user@domain.com:221 Job deleted
           3:910874100:1800:BBC Radio 4 FM:user@domain.com:121 New job






Padgen                        Experimental                     [Page 10]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


4.3.3.  The "queue_update" request

   This request requires a DATA parameter to be present in the request.

   The client sends the server a list of jobs.  This MUST include at a
   minimum jobs which have changed status since the last time a
   "queue_update" request was sent by the client.

   The DATA parameter is a single line consisting of queue_update-data.

         queue_update-data      = queue_update-pair
                                  *( ":" queue_update_pair )

         queue_update-pair      = job-number ":"
                                  queue_update-status

         queue_update-status    = ( "OK"
                                  | ( "ERROR " reason )
                                  | ( "COMPLETE " [file] )
                                  | ( "STREAM " url )
                                  )

         reason                 = <any TEXT excluding ":"
                                   except as quoted-pair>

         file                   = <any TEXT excluding ":"
                                   except as quoted-pair>

         url                    = <a valid URL, with any ":"
                                   as quoted-pair>

   The queue_update-status takes one of the following forms:

   OK                  The queue update, as sent from the server in
                       response to a "send_queue" request, was processed
                       successfully.

   ERROR reason        There was an error processing this job.  The
                       reason gives details of the error.

   COMPLETE file       The job has completed.  If a recording was
                       specified, the file indicates where the
                       recording can be found.

   STREAM url          The job is currently being streamed live.
                       The url indicates how the live stream may
                       be received.




Padgen                        Experimental                     [Page 11]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


   DELAY time          Recording of the job has finished, but uploading
                       of the recording to the server has been delayed
                       until at least the time (in Unix time) given.

   The server responds with a single line:

         queue_update-response   = "OK"

   Example:

   Following the example given in the "send_queue" request above, the
   client processes the job updates.  The deletion of job 1 is fine, but
   the new job 3 overlaps with an existing scheduled job.

   The client sends:

           HOST=Remote client
           VERSION=1.0
           REQUEST=queue_update
           DATA=1:OK:3:ERROR Job 2 already scheduled at that time

   The server responds:

           OK


4.3.4.  The "receivers" request

   This request requires a DATA parameter to be present in the request.

   The client indicates to the server how many receivers are attached to
   it.  The DATA parameter is a single line consisting of receivers-
   data.

         receivers-data        = 1*( DIGIT )

   The server responds with a single line:

         receivers-response    = "OK"

   This function can help with scheduling, since overlapping jobs can be
   scheduled when more than one receiver is present on a client.  When a
   user submits a new schedule, the server MAY check immediately that
   this scheduling does not conflict with existing schedules.

   Example:

   The client sends:



Padgen                        Experimental                     [Page 12]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


           HOST=Remote client
           VERSION=1.0
           REQUEST=receivers
           DATA=1

   The server responds

           OK

   and notes that this client has one receiver attached.


4.3.5.  The "next_check" request

   This request requires a DATA parameter to be present in the request.

   The client indicates to the server when it can next be expected to
   check its queue by sending a "send_queue" request.  The DATA
   parameter is a single line consisting of next_check-data.

         next_check-data       = 1*( DIGIT )

   The next_check-data is the time (given in Unix time) that the next
   check will take place.

   The server responds with a single line:

         next_check-response   = "OK"

   This function allows the server to know if a client will
   automatically check to pick up a job scheduled at short notice, and
   to dial the client directly to force a check if this is not the case.

   Example:

   The client sends:

           HOST=Remote client
           VERSION=1.0
           REQUEST=next_check
           DATA=918216000

   The server responds

           OK

   and notes that the client will next check its queue on Fri Feb 5
   12:00:00 GMT 1999.



Padgen                        Experimental                     [Page 13]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


5.  Security Considerations

   There is no provision in this protocol for access control.  Rather,
   access SHOULD be controlled using one of the access authentication
   schemes available for HTTP (see [4, 6] for details.)


6.  Notes

   A system using this protocol has been developed by the author.  A
   number of web radio clients are being installed at various locations
   around the world.

   Although this document refers solely to receiving radio broadcasts,
   there is nothing in the protocol to limit monitoring to audio-only.
   For example, a client may control a television receiver and be able
   to record video from this receiver.  The same protocol could be used,
   without modification, to control this client.


7.  References

   [1]  Braden, R., "Requirements for Internet hosts - application and
        support," STD 3, RFC 1123 (October 1989).

   [2]  Crocker, D., "Standard for the Format of ARPA Internet Text
        Messages"," STD 11, RFC 822 (August 1982).

   [3]  ANSI, "US-ASCII. Coded Character Set - 7-Bit American Standard
        Code for Information Interchange.," Standard ANSI X3.4-1986,
        ANSI (1986).

   [4]  Fielding, R., Irvine, U.C., Gettys, J., Mogul, J., Frystyk, H.,
        and Berners-Lee, T., "Hypertext Transfer Protocol -- HTTP/1.1,"
        RFC 2068 (January 1997).

   [5]  Postel, J. and Reynolds, J., "FILE TRANSFER PROTOCOL (FTP)," STD
        9, RFC 959 (October 1985).

   [6]  Franks, J., Hallam-Baker, P., Hostetler, J., Leach, P.,
        Luotonen, A., Sink, E., and Stewart, L., "An Extension to HTTP :
        Digest Access Authentication," RFC 2069 (January 1997).


8.  Author's Address

   Neil Padgen
   BBC Monitoring



Padgen                        Experimental                     [Page 14]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


   Caversham Park
   Reading RG4 8TZ
   United Kingdom

   Tel: +44 7971 165 865

   Email: nrp@i.am


9.  Acknowledgement

   This document has been published with the permission of BBC
   Monitoring.  Address:

   IT Department
   BBC Monitoring
   Caversham Park
   Reading RG4 8TZ
   United Kingdom


10.  Full Copyright Statement Notice

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



Padgen                        Experimental                     [Page 15]

INTERNET-DRAFT        A Web-Controlled Radio System           March 1999


                           Table of Contents


     1. Introduction . . . . . . . . . . . . . . . . . . . . . . . .   2
     2. Structure  . . . . . . . . . . . . . . . . . . . . . . . . .   2
     3. Notational Conventions and Generic Grammar . . . . . . . . .   3
   3.1. Notational Conventions . . . . . . . . . . . . . . . . . . .   3
   3.2. Augmented BNF  . . . . . . . . . . . . . . . . . . . . . . .   4
   3.3. Basic Rules  . . . . . . . . . . . . . . . . . . . . . . . .   5
     4. Client-server communication  . . . . . . . . . . . . . . . .   6
   4.1. Underlying protocol  . . . . . . . . . . . . . . . . . . . .   6
   4.2. Format of a client request . . . . . . . . . . . . . . . . .   6
   4.3. Client requests and server responses . . . . . . . . . . . .   6
 4.3.1. The "send_stations" request  . . . . . . . . . . . . . . . .   7
 4.3.2. The "send_queue" request . . . . . . . . . . . . . . . . . .   8
 4.3.3. The "queue_update" request . . . . . . . . . . . . . . . . .  10
 4.3.4. The "receivers" request  . . . . . . . . . . . . . . . . . .  12
 4.3.5. The "next_check" request . . . . . . . . . . . . . . . . . .  13
     5. Security Considerations  . . . . . . . . . . . . . . . . . .  14
     6. Notes  . . . . . . . . . . . . . . . . . . . . . . . . . . .  14
     7. References . . . . . . . . . . . . . . . . . . . . . . . . .  14
     8. Author's Address . . . . . . . . . . . . . . . . . . . . . .  14
     9. Acknowledgement  . . . . . . . . . . . . . . . . . . . . . .  15
    10. Full Copyright Statement Notice  . . . . . . . . . . . . . .  15



























Padgen                        Experimental                     [Page 16]