Internet DRAFT - draft-msparks-template-star
draft-msparks-template-star
Internet Engineering Task Force M. Sparks
Internet-Draft BBC Research and Development
Intended status: Experimental June 28, 2012
Expires: December 30, 2012
Service synchronisation for Television And Related devices -- STAR
draft-msparks-template-star-00
Abstract
Service synchronisation for Television And Related devices (STAR) is
a suite of application level protocols to enable network connected
devices to correlate events on a broadcast system with events outside
that broadcast system. It is a generic suite of protocols, that
enables playback of content retrieved from over a network such that
it is synchronised to a broadcast source. It also enables
correlation of non-broadcast events (such as conversations) to
broadcast events.
Key features of STAR include: 1) The broadcast system does not
require modification 2) It is designed to work with restricted
clients limited to stream connections - such as web browsers 3) It is
content agnostic.
This specification describes the research implementation as it stands
today, and is published as a starting point for further discussion.
Status of this Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 30, 2012.
Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the
Sparks Expires December 30, 2012 [Page 1]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
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. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Requirements Language . . . . . . . . . . . . . . . . . . 5
1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5
1.4. Notational Conventions and Generic Grammar . . . . . . . . 7
2. STAR System Overview . . . . . . . . . . . . . . . . . . . . . 8
2.1. The Broadcast System . . . . . . . . . . . . . . . . . . . 9
2.2. The Broadcast Bridge and Broadcast System . . . . . . . . 9
2.3. Broadcast Bridge Time Services and STAR Client . . . . . . 10
2.4. Broadcast Bridge Programme Services and STAR Client . . . 11
2.5. STAR Additional Services Server . . . . . . . . . . . . . 12
2.5.1. Playout Scripts . . . . . . . . . . . . . . . . . . . 14
2.5.2. Additional data sources . . . . . . . . . . . . . . . 14
2.6. Full Glass System View . . . . . . . . . . . . . . . . . . 14
3. STAR Time Synchronisation . . . . . . . . . . . . . . . . . . 15
3.1. Broad View of Time synchronisation over TCP . . . . . . . 16
3.2. Network Delta Corrected Time Synchonisation over TCP . . . 17
4. STAR Broadcast Bridge Programme Services over TCP . . . . . . 19
4.1. command: time . . . . . . . . . . . . . . . . . . . . . . 20
4.1.1. Arguments . . . . . . . . . . . . . . . . . . . . . . 20
4.1.2. Response format . . . . . . . . . . . . . . . . . . . 20
4.1.3. Example . . . . . . . . . . . . . . . . . . . . . . . 21
4.2. command: echotime . . . . . . . . . . . . . . . . . . . . 21
4.2.1. Arguments . . . . . . . . . . . . . . . . . . . . . . 21
4.2.2. Response format . . . . . . . . . . . . . . . . . . . 21
4.2.3. Example . . . . . . . . . . . . . . . . . . . . . . . 22
4.3. command: summary . . . . . . . . . . . . . . . . . . . . . 22
4.3.1. Arguments . . . . . . . . . . . . . . . . . . . . . . 22
4.3.2. Response format . . . . . . . . . . . . . . . . . . . 22
4.3.3. Example . . . . . . . . . . . . . . . . . . . . . . . 23
4.4. command: services . . . . . . . . . . . . . . . . . . . . 23
4.4.1. Arguments . . . . . . . . . . . . . . . . . . . . . . 23
4.4.2. Response format . . . . . . . . . . . . . . . . . . . 23
Sparks Expires December 30, 2012 [Page 2]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
4.4.3. Example . . . . . . . . . . . . . . . . . . . . . . . 23
4.5. command: channels . . . . . . . . . . . . . . . . . . . . 23
4.5.1. Arguments . . . . . . . . . . . . . . . . . . . . . . 24
4.5.2. Response format . . . . . . . . . . . . . . . . . . . 24
4.5.3. Example . . . . . . . . . . . . . . . . . . . . . . . 24
4.6. command: channel . . . . . . . . . . . . . . . . . . . . . 24
4.6.1. Arguments . . . . . . . . . . . . . . . . . . . . . . 24
4.6.2. Response format . . . . . . . . . . . . . . . . . . . 24
4.6.3. Example . . . . . . . . . . . . . . . . . . . . . . . 25
4.7. command: service . . . . . . . . . . . . . . . . . . . . . 26
4.7.1. Arguments . . . . . . . . . . . . . . . . . . . . . . 26
4.7.2. Response format . . . . . . . . . . . . . . . . . . . 26
4.7.3. Example . . . . . . . . . . . . . . . . . . . . . . . 26
5. STAR Broadcast Bridge Programme Services over HTTP . . . . . . 27
5.1. Mapping to HTTP from the TCP Service . . . . . . . . . . . 27
5.2. Example Mappings . . . . . . . . . . . . . . . . . . . . . 27
5.2.1. command: time . . . . . . . . . . . . . . . . . . . . 27
5.2.2. command: echotime . . . . . . . . . . . . . . . . . . 28
5.2.3. command: summary . . . . . . . . . . . . . . . . . . . 28
5.2.4. command: services . . . . . . . . . . . . . . . . . . 28
5.2.5. command: channels . . . . . . . . . . . . . . . . . . 28
5.2.6. command: channel . . . . . . . . . . . . . . . . . . 28
5.2.7. command: service . . . . . . . . . . . . . . . . . . 28
6. STAR Additional Services Server . . . . . . . . . . . . . . . 28
7. STAR Playout Scripts . . . . . . . . . . . . . . . . . . . . . 29
7.1. MIME type . . . . . . . . . . . . . . . . . . . . . . . . 29
7.2. File Format . . . . . . . . . . . . . . . . . . . . . . . 29
7.3. Timestamps . . . . . . . . . . . . . . . . . . . . . . . . 29
7.4. Event types . . . . . . . . . . . . . . . . . . . . . . . 29
7.4.1. Datatype Tags . . . . . . . . . . . . . . . . . . . . 29
7.4.2. Encoding Tags . . . . . . . . . . . . . . . . . . . . 30
7.5. Event data encoding . . . . . . . . . . . . . . . . . . . 30
7.6. Example . . . . . . . . . . . . . . . . . . . . . . . . . 31
8. Future Expansion . . . . . . . . . . . . . . . . . . . . . . . 31
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31
10. Security Considerations . . . . . . . . . . . . . . . . . . . 32
10.1. Personal Information - Abuse of Server Logs . . . . . . . 32
10.2. Data encoding and decoding . . . . . . . . . . . . . . . . 32
10.3. Denial of Service . . . . . . . . . . . . . . . . . . . . 33
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 33
12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 33
12.1. Normative References . . . . . . . . . . . . . . . . . . . 33
12.2. Informative References . . . . . . . . . . . . . . . . . . 33
Appendix A. Additional Stuff . . . . . . . . . . . . . . . . . . 33
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 34
Sparks Expires December 30, 2012 [Page 3]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
1. Introduction
The original specification of xml2rfc format is in RFC 2629
[RFC2629].
1.1. Purpose
Broadcast is a well understood single to many push medium, with
modern television broadcast systems being digital broadcast systems.
In the USA, the system is ATSC, in Europe DVB is common, with DVB-T,
DVB-C and DVB-S widely deployed.
Whilst such digital systems have variations, they fundamentally form
a lossy data channel from a broadcaster to an audience at a fixed bit
rate. This is generally then received by a display which is a shared
resource, broadly controlled by the occupants of a single room. Thus
what is displayed or played back on the shared display must be of
interest to all users of that device (or well known arguments ensue).
Digital broadcasts carry a variety of non audio/video data including
subtitles, audio description (also called narrative subtitles for the
blind), interactive applications, as well as information bundles
similar to web pages. Each addition to the broadcast uses up the
scarce resource. More data can be squeezed in at the expense
(primarily) of picture quality. Each change presents diminishing
returns for the broadcaster, despite benefits to the audience, due to
the nature of broadcast being a single shared push channel.
Furthermore, in order to "fake" a pull approach for data, information
on a data channel - such as electronic programme guide (EPG)
information - is has to be repeatedly pushed in order to allow
clients timely access to data. This data carousel (as it is termed)
squeezes the transmission channel even further.
Unlike broadcast clients, network clients control their local
communications channel, leading to clients pulling services from
servers. Being pull based, they are by their nature elective and
therefore extremely good for personalised experiences. They can tend
to suffer efficiency concerns for very large concurrent audiences, in
particular servicing large audiences efficiently without content
injection concerns is still hard.
Work has previously been done have investigating how to marry the
broadcast and IP world. However in many cases they have sought to
change the inherent nature of either broadcast from it's shared
receiver audio or video nature, or to change network delivery to take
control away from the receiver. That is to try and change the
network delivery from a pull medium to a push medium.
Sparks Expires December 30, 2012 [Page 4]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
Service Synchronisation for Television and Related Devices (STAR) is
predicated on the principle of using the broadcast data channel for
push aspects of a service in a form useful for the majority of an
audience, and using pull-based network delivery for personalisation.
These personalisations need to be synchronised relative to the
programme being broadcast, and presented to the user at appropriate
times. To do this we expose key information about the broadcast data
channel over the network, along with defining a means of
synchronising with the broadcast data channel, and also a standard
play out data format which can be used by a generic client to play
out content synchronised to the broadcast.
STAR is also assumes that whilst custom clients are possible, clients
are most likely to be implemented in restriction environments such as
browsers or virtual machines residing in browsers. In practical
terms this means that whilst it could operate on top of many
transports, it is designed to primarily operate on top of either TCP
or HTTP.
Thus STAR comprises a small suite of application level protocols that
seeks to work with each medium appropriately, forming initial
research results in this area. This specification describes the
research implementation as it stands today, and is published as a
starting point for further discussion.
In particular while each protocol could be specified separately, but
describing them together retains important context.
1.2. Requirements Language
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].
An implementation is not compliant if it fails to satisfy one or more
of the MUST or REQUIRED level requirements for the protocols it
implements. An implementation that satisfies all the MUST or
REQUIRED level and all the SHOULD level requirements for its
protocols is said to be "unconditionally compliant"; one that
satisfies all the MUST level requirements but not all the SHOULD
level requirements for its protocols is said to be "conditionally
compliant."
1.3. Terminology
This specification uses a number of terms to refer to the roles
played by participants in, and objects of, a STAR system.
Sparks Expires December 30, 2012 [Page 5]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
broadcast
An audio/visual transmission over radio or similar system
that also includes a time and data signal - such as digital
broadcasting or analogue broadcast with a teletext, etc. data
channel.
digital broadcast
A broadcast using a digital broadcast standard such as
Digital Video Broadcasting (DVB), or Advanced Television
Systems Committee (ATSC). Digital broadcasts typically
contain audio, video, subtitles, applications, and metadata
regarding the broadcasts - in terms of content and transport.
broadcast receiver
A standard receiver for a given broadcast system.
broadcast time
The time specified in a broadcast signal, as recieved by a
broadcast reciever.
broadcast bridge
A broadcast receiver that stores metadata from a given
broadcast service. It acts as a server on the network
available to be queried by a client. (ie it bridges the push
of broadcast and the pull from a network client)
play out script
Data file that is used to schedule playback of events
relative to given times based on event type
content server
A server that a client can retrieve play out scripts from as
well as additional content.
client
A network connected device capable of playing out 1 or more
form of synchronised content. Performs synchronisation with
the broadcast bridge, retrieves content from the content
server for play out.
client clock
The actual system clock of the client device. Assumed to be
poor quality and unchangeable.
application clock
A corrected software clock based synchronisation with the
broadcast bridge. Does not have a defined accuracy level.
Sparks Expires December 30, 2012 [Page 6]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
broadcast time server port
A TCP socket listening on the broadcast bridge for a client
to connect to. Provides a basic "NOW" time service for
client application clocks to synchronised against.
Connection is closed by the server.
echo broadcast time server port
A TCP socket listening on the broadcast bridge for a client
to connect to. Provides a basic "NOW" time service for
client application clocks to synchronised against. Does this
after receiving data from the client. All data sent by the
client is echoed back to the client. Connection is closed by
the server.
repeating echo broadcast time server port
A TCP socket listening on the broadcast bridge for a client
to connect to. Provides a basic "NOW" time service for
client application clocks to synchronised against. Does this
after receiving data from the client. All data sent by the
client is echoed back to the client. Connection is closed by
the client.
1.4. Notational Conventions and Generic Grammar
STAR uses the same notational conventions and generic grammar as
HTTP/1.1 as defined in RFC 2616. For the purposes of this document:
NUMBER = 1*DIGIT
TIMESTAMP = NUMBER "." NUMBER
COMMAND = 1*ALPHA
ARGUMENT = *OCTET
STATUS = "OK" | "ERROR"
COMMANDTAG = 1*ALPHA
JSONRESPONSE = 1*OCTET
JSONRESPONSE is required to be a valid JSON object. JSON is defined
in RFC 4627.
Sparks Expires December 30, 2012 [Page 7]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
2. STAR System Overview
+------------------------------------------------------------+
| |
| RF IP |
| +-----+ +-----+ +-----------------------------------+ |
| | B <----> | | | |
| | r | | B | | STAR ADDITIONAL SERVICES SERVER | |
| | o | | r | | ^ ^ | |
| | a | | i | +----|----------------------|-------+ |
| | d | | d | | | |
| | c | | g | +----|----------------------|-------+ |
| | a | | e <-----> V V | |
| | s | | | | STAR CLIENT | |
| | t | | <-----> | |
| +-----+ +-----+ +-----------------------------------+ |
| |
+------------------------------------------------------------+
Figure 1: Top level
STAR consists of 4 main subsystems:
o A broadcast system, including a broadcast system and a broadcast
client
o A broadcast bridge
o A STAR client
o A STAR additional services server
The STAR client protocol is specifically designed to allow clients to
be implemented inside a web browser or similarly restricted
environment (eg flash or java plugins). Tighter synchronisation
accuracy could be achieved by mandating a less restricted
environment, but to do so would restrict STAR's applicability &
implementability needlessly.
Communications in a STAR system includes:
o Broadcast within the broadcast system
o The broadcast bridge's reception and analysis of the broadcast
o Time synchronisation between the STAR client and the broadcast
bridge
Sparks Expires December 30, 2012 [Page 8]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
o Programme information services provided by the broadcast bridge to
the STAR client
o Synchronised data services from the STAR additional services
server provided to the STAR client. These fall into two
categories:
* Play out scripts
* Additional data sources
The rest of this section follows the communication in the system.
2.1. The Broadcast System
The broadcast system is a digital television service. Such broadcast
systems have the following core characteristics:
o An audio and video (maybe) service per channel
o A time service giving the current time. For example the time and
date (TDT) table in DVB suffices here. TDT data is typically
broadcast once per second, and represents the time "now".
o A programme service describing what programme is on "now". In DVB
the event information table information contains a "now and next"
service. The now and next service data is sent regularly, but is
additionally updated when the broadcast programme changes.
Some analogue television services also contain this information, but
for the purposes of discussion this document assumes a digital
television service.
This protocol assumes that the existing broadcast service and
broadcast client (eg a TV) are left unmodified. If a service on a
non-broadcast client is being played out simultaneously with the
broadcast service, then this service needs to be synchronised to the
time as received by a broadcast receiver.
2.2. The Broadcast Bridge and Broadcast System
The broadcast bridge bridges the "push" of the broadcast world, and
the "pull" of the IP based world. In particular, it is a server that
contains a broadcast client receiver, and makes available a time
service to synchronise against, and now/next programme services over
IP for network based clients.
The broadcast bridge uses the time signal to synchronise a local
Sparks Expires December 30, 2012 [Page 9]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
server clock. In particular a DVB based broadcast bridge can
retrieve TDT packets, and use their regularity to set a local clock
time and rate of advance.
The broadcast bridge also receives the now and next data services,
and keeps track of what programmes are being broadcast. This
information is then made available over IP. Additionally, the
broadcast time at which the now and next information changes is
monitored. For the purposes of STAR, this change time is denoted to
be "time zero" for the given programme.
It is worth noting that whether this is actually time zero depends
upon the configuration of the broadcast service. Furthermore the
accuracy of time zero also depends upon the configuration of the
broadcast service.
It is also possible for the broadcast service to include a special
marker including the time the programme actually started via the
related content table.
Additionally, there may be other means to determine the start of the
programme. The broadcast bridge is responsible for obtaining this
time, and making this available to clients.
2.3. Broadcast Bridge Time Services and STAR Client
The broadcast bridge makes available a time service for the STAR
client to synchronise against.
+------------------------------------------------------------+
| . |
| . RF . . IP . |
| . | | | . |
| | <----> | . |
| | S | | B | | |
| | y | | r | |--------+ |
| | s | | i | | | |
| | t | | d <-----> TIME | . |
| | e | | g | | SYNC | . | |
| | m | | e | | | | | |
| +-----+ +-----+ +-----------------------------------+ |
| RF IP STAR CLIENT |
| |
+------------------------------------------------------------+
Figure 2: Time Synchronisation, Relevant subsystems
This has the following characteristics:
Sparks Expires December 30, 2012 [Page 10]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
o The client can request the current time from the broadcast bridge.
o The client can request the current time from the broadcast bridge
with a payload which the broadcast bridge includes in its
response.
o The time services are available over both TCP and HTTP
The current time service can be used to derive a broad view of time -
that is the current time as seen by a broadcast receiver. This can
be accurate within a delta proportional to the network round trip
time.
The echoing time service can be used to calculate an approximation of
the network round trip time. This may be useful in circumstances
where the network round trip time is likely to be too large relative
to the additional service intended to be synchronised against the
broadcast service.
The reason for using TCP and HTTP and not UDP are as follows:
o A tool - dvbdate - exists that provides a means of configuring an
NTP server, which can then be used for synchronising time over
UDP.
o Restricted clients - such as browsers or plugins - were considered
desirable.
o UDP is not available to browser based components
o TCP is commonly available from browser plugins
o HTTP is natively available to browser based clients
Thus UDP has not been viewed as appropriate.
2.4. Broadcast Bridge Programme Services and STAR Client
IP based programme services available are provided by the broadcast
bridge to enable a client to determine which programme is currently
being broadcast. This can be correlated with other IP based services
to locate appropriate data on for playback synchronous to the
broadcast service.
Prerequisites for this to work:
o The programme services must include the actual start time of a
programme as broadcast.
Sparks Expires December 30, 2012 [Page 11]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
o This may be queried over TCP or HTTP, for the same reasons as the
time services.
The broadcast bridge also provides facilities for:
o Identifying what channels the bridge covers, by name and service
id
o Summary information across all channels
o Detailed information on the channel's current state, based on
channel or serviceid
+------------------------------------------------------------+
| . +--------+ |
| . RF . . IP . | | |
| . | | <-----> PROG | |
| | <----> | | SYNC | |
| | S | | B | | | |
| | y | | r | |--------+ |
| | s | | i | . . |
| | t | | d | . . |
| | e | | g | . | |
| | m | | e | . | | |
| +-----+ +-----+ +-----------------------------------+ |
| RF IP STAR CLIENT |
| |
+------------------------------------------------------------+
Figure 3: Programme Services interaction
2.5. STAR Additional Services Server
The STAR additional services server provides 2 core services:
o Play out scripts, which describe what events to play out when
o Data storage for data to playback from playout scripts.
Play out scripts are not required to be limited to playback of data
from the data storage. In all cases it is expected that these
scripts and data are to be retrieved over HTTP.
Sparks Expires December 30, 2012 [Page 12]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
. - --------------------------------------+
|
STAR ADDITIONAL SERVICES SERVER |
+-----------------------------------+ |
| | | | |
. | Play out | Additional | |
| Scripts | data sources | |
| ^ | ^ | |
-------|-----------|-------+ |
| | |
.---------|-----------V-------+ |
| V | Output Dev 1 | |
| |--------------| |
| | Output Dev 2 | |
| Play out |--------------| |
--+ | Output Dev 3 | |
| Core |--------------| |
| | ... | |
. | |--------------| |
| | | Output Dev N | |
. +-----------------------------------+ |
. STAR CLIENT |
| |
+-----------------------------------------------+
Figure 4: Playout subsystems' interactions
A client may have many output means, which can be considered to
include text, links, audio, video, and event send messages to a
serial port for controlling (for example) arduino based devices,
synchronous to the broadcast.
Three possible alternatives to a play out script delivered over HTTP
are as follows:
o To repeatedly poll the server with a "what do I do now message".
For services with low levels of service, this may be appropriate,
but for nationwide services, this is not a scalable approach, and
was discounted on that basis.
o To open a connection to the server, and wait for event data to be
sent over the connection. Whilst this limits connection set up
and tear down, this could for popular events require a server
handle millions of connections held open for long periods of time
and data delivered instantaneously to all the clients
concurrently. This was not deemed scalable.
Sparks Expires December 30, 2012 [Page 13]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
o The client opens an XMPP connection, and receiving data over that
connection from an XMPP group. This is a promising approach, but
raises the implementation bar to that of implementing an XMPP
client. It also requires the client to remain connected.
In all 3 cases, unlike the downloaded file approach, these approaches
preclude pre-caching data for playback. For this reason, a play out
file was considered more appropriate.
2.5.1. Playout Scripts
Playout scripts are files consisting of a list of events. This file
is UTF8 encoded, and contains a JSON object. Events denote times
into the programme, the type of the event, and an opaque data blob
relating to the event. The interpretation of the blob depends on the
type. 3 types are considered critical:
o Plain text
o Base 64 encoded data.
o URLs
2.5.2. Additional data sources
Due to the fact that additional data sources may be linked to by an
URL may be audio, video, text, web pages, and more. If the client
does not understand how to interpret the URL, it should pass the
interpretation over to a web browser.
2.6. Full Glass System View
Figure 5 shows all the subsystems and their interactions.
Sparks Expires December 30, 2012 [Page 14]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
+------------------------------------------------------------+
| |
| RF IP STAR ADDITIONAL SERVICES SERVER |
| +-----+ +-----+ +-----------------------------------+ |
| | B <----> B | | | | | |
| | r | | r | | Content | Play out | Additional | |
| | o | | o | | Server | Scripts | data sources | |
| | a | | a | | ^ | ^ | ^ | |
| | d | | d | +-----|---------|-----------|-------+ |
| | c | | c | | | | |
| | a | | a | +-----|---------|-----------V-------+ |
| | s | | s | | V | V | Output Dev 1 | |
| | t | | t <-----> PROG | |--------------| |
| | | | | | SYNC | | Output Dev 2 | |
| | S | | B | | | Play out |--------------| |
| | y | | r | |--------+ | Output Dev 3 | |
| | s | | i | | | Core |--------------| |
| | t | | d <-----> TIME | | ... | |
| | e | | g | | SYNC | |--------------| |
| | m | | e | | | | Output Dev N | |
| +-----+ +-----+ +-----------------------------------+ |
| STAR CLIENT |
| |
+------------------------------------------------------------+
Figure 5: Glass view
3. STAR Time Synchronisation
Clock synchronisation is a complex topic, and this specification
takes a necessarily simplistic view for the following reasons:
o Expected clients include javascript within a browser. This means
sync will happen over HTTP. The many layers involved limit the
effectiveness of aiming for extremely tight sync.
o STAR time synchronisation is therefore primarily concerned with
synchronising browser events, and simplicity aids implementation.
o For some applications, accuracy of within a second or so is
acceptable. For others, accuracy down to 40ms is desirable.
Going beyond this would appear to require a UDP based service.
Sparks Expires December 30, 2012 [Page 15]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
+------------------------------------------------------------+
| . |
| . RF . . IP . |
| . | | | . |
| | <----> | . |
| | S | | B | | |
| | y | | r | |--------+ |
| | s | | i | | | |
| | t | | d <-----> TIME | . |
| | e | | g | | SYNC | . | |
| | m | | e | | | | | |
| +-----+ +-----+ +-----------------------------------+ |
| RF IP STAR CLIENT |
| |
+------------------------------------------------------------+
Figure 6: Time Synchronisation, Relevant subsystems
Application clock synchronisation occurs as follows:
o The client synchronises an application clock against a broad view
of time with the broadcast bridge.
o The client may attempt to calculate the error incurred by the
network traversal - the network delta. The approach taken is
deliberately simple at the possible expense of accuracy.
3.1. Broad View of Time synchronisation over TCP
The client connects to the broadcast time server port on the
broadcast bridge. The client does not send any data. The server's
response is a sequence of octets, that are terminated by the server
closing the connection.
The sequence of octets sent forms a TIMESTAMP as defined above. That
time-stamp is a string representation of a floating point value.
That float represents the number of seconds since the beginning of
the Unix epoch - ie the number of seconds since 00:00:00 UTC on 1
January 1970.
The time obtained is a broadcast time as defined above. This defines
the broadcast view of time (BVT) according to a broadcast receiver at
a given instant. These are received by the client at a given local
clock (LC) times from the client clock.
In order to gain a broad view of time, the client needs to get two
such timestamps - BVT1 and BVT2. These correspond to local clock
times LC1 and LC2. The further these sets of timestamps, the better.
Sparks Expires December 30, 2012 [Page 16]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
Using these times, the client can define a local application clock
using BVT1, BVT2, LC1, and LC2. For brevity this is defined here in
python:
class BroadViewClock(object):
def __init__(self, BVT1, BVT2, LC1, LC2):
"Configure application clock"
remote_elapsed = BVT2 - BVT1
local_elapsed = LC2 - LC1
self.ratio = remote_elapsed / local_elapsed
self.remote_baseline = BVT1
self.local_baseline = LC1
def sleep(self, time_in_remote_seconds):
"Sleep for a period time counted in broadcast seconds"
sleeptime = time_in_remote_seconds / self.ratio
time.sleep(sleeptime)
def time(self):
"Return the current time according to broadcast"
now = time.time()
local_elapsed = now - self.local_baseline
remote_elapsed = local_elapsed * self.ratio
remote_now = self.remote_baseline + remote_elapsed
return remote_now
ApplicationClock = BroadViewClock(BVT1, BVT2, LC1, LC2)
The accuracy of this broad view of time application clock depends on
the network latency between the client and the broadcast bridge. For
some applications, this delay will be acceptable. For many
applications it will be desirable to attempt to eliminate the network
delta.
3.2. Network Delta Corrected Time Synchonisation over TCP
The client initialises a client application clock which is a
BroadViewClock as defined in 2.1 above. The client connects to the
echo broadcast time server port on the broadcast bridge.
Upon connecting the client sends time request of the following form:
TIMEREQUEST = TIMESTAMP CRLF
That is it send an octet stream which is a string representation of a
float, representing a timestamp of the number of seconds since the
start of the unix epoch, followed by a CRLF sequence.
Sparks Expires December 30, 2012 [Page 17]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
The server response is as follows:
BLOBRESPONSE = 1*OCTET
ECHOTIME = BLOBRESPONSE " " TIMESTAMP
The server then terminates the connection. BLOBRESPONSE as defined
here is whatever data the client sends the server. Whilst the client
MUST send data in the form defined as TIMEREQUEST, the server must be
lenient and respond with whatever was sent as blob response.
Using the BroadViewClock, the client can build on BroadViewClock to
create a new application clock which removes the network delta as
follows:
class NetworkCorrectedBroadcastClock(object):
def __init__(self, application_clock, network_delta):
self.application_clock = application_clock
self.network_delta = network_delta
def sleep(self, delay):
self.application_clock.sleep(delay)
def time(self):
self.application_clock.time() + self.network_delta
BVT1, BVT2, LC1, LC2 -- Obtained as before
CoarseApplicationClock = BroadViewClock(BVT1, BVT2, LC1, LC2)
TOLERANCE = 0.01 # 10ms
WITHIN_TOLERANCE = False
while not WITHIN_TOLERANCE:
sendtime = CoarseApplicationClock.time()
sendtime_for_network = str(float(sendtime))
# sendtime_for_network and BLOBRESPONSE should be identical
BLOBRESPONSE, TIMESTAMP = EchoTimeRequest(sendtime_for_network,
server=broadcastbridge,
port=echo_time_port)
# Assuming network delays are constant within a certain delta,
# the following two values should be identical or close to
# identical
remote_now = float(TIMESTAMP)
now = CoarseApplicationClock.time()
Sparks Expires December 30, 2012 [Page 18]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
if abs(remote_now - now) < TOLERANCE:
WITHIN_TOLERANCE = True
# Assume network is symmetrical
network_delta = (remote_now - sendtime)/2
BetterApplicationClock = NetworkCorrectedBroadcastClock(
CoarseApplicationClock,
network_delta)
At this point the client then has a network corrected local clock
locked to the same clock as broadcast, within a reasonable tolerance.
4. STAR Broadcast Bridge Programme Services over TCP
+------------------------------------------------------------+
| |
. .
. . +---------- - .
| . . | | |
| . . . <-----> PROG | |
| | <----> | | SYNC | |
| | S | | B | | | |
| | y | | r | |--------+ |
| | s | | i | | . |
| | t | | d | . |
| | e | | g | . |
| | m | | e | |
| +-----+ +-----+ STAR CLIENT |
| RF IP |
| |
+------------------------------------------------------------+
Figure 7: Programme Time Synchronisation, Relevant subsystems
Programme Services are provided on a request/response basis.
The client connects to the broadcast bridge programme port and sends
a REQUEST matching the following:
REQUEST = COMMAND " " ARGUMENT CRLF
Note that the command is terminated by a blank line.
The server sends a RESPONSE as follows:
Sparks Expires December 30, 2012 [Page 19]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
RESPONSE = STATUS " " COMMANDTAG " " JSONRESPONSE
The response is terminated by closing the connection.
If the status is ERROR, the client should handle the error
gracefully. COMMANDTAG is always relative to the command the client
sent to the server.
Commands the broadcast bridge MUST implement:
o time
o echotime
o summary
Commands the broadcast bridge SHOULD implement:
o services
o channels
o channel
o service
Note: The server is expected to lower case all commands and arguments
on the way into the server.
4.1. command: time
This provides an alternative interface to the timing subsystem, and
can be used in much the same way. It has a higher parsing overhead,
and hence speed penalty.
4.1.1. Arguments
None
4.1.2. Response format
The response is a JSON object with 3 name value pairs:
o time - Number of seconds since the Unix Epoch. The timezone is
defined to be UTC.
o elemental - 9 element array representation of the same time,
consisting of:
Sparks Expires December 30, 2012 [Page 20]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
* year - integer representing the full year
* month - integer in range 1..12
* day of month - integer day of the month
* hour - integer
* minute - integer
* seconds - integer
* weekday - integer in range 0..6, where monday is 0.
* day of year - counting from 1
* daylight savings flag
+ 0 means no daylight savings adjustment has taken place
+ 1 means time is adjusted for daylight savings
o textual - Again, the same time as a human readable time/date.
This should be treated as human readable and machine opaque.
4.1.3. Example
SEND: time
RECV: OK TIME {"elemental": [2010, 7, 5, 17, 21, 10, 0, 186, 1],
"textual": "Mon Jul 5 17:21:10 2010", "time": 1278346870.0}
4.2. command: echotime
This provides an alternative interface to the timing subsystem, and
can be used in much the same way. It has a higher parsing overhead,
and hence speed penalty.
4.2.1. Arguments
TIMESTAMP - as defined above
4.2.2. Response format
The response is a JSON object with 4 name value pairs:
o time - Number of seconds since the Unix Epoch. The timezone is
defined to be UTC.
Sparks Expires December 30, 2012 [Page 21]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
o elemental - 9 element array representation of time as defined
before in section 4.1.2
o textual - Same time as a human readable time/date. As in 4.1.2
this is defined as machine opaque and human readable.
o echo - Contains whatever the client sent as TIMESTAMP
4.2.3. Example
SEND: echotime 1278346870.0
RECV: OK TIME {"echo": "1278346870.0", "elemental": [2010, 7, 5,
17, 21, 15, 0, 186, 1], "textual": "Mon Jul 5 17:21:15 2010",
"time": 1278346875.0}
4.3. command: summary
Provides a quick lookup mechanism of channel name, programme and
start time.
4.3.1. Arguments
None
4.3.2. Response format
The response is a JSON object with as many name value pairs as
channels the broadcast bridge can receive. Each pair has the same
format:
o channelname - which may be either:
* the human readable name of the channel from the broadcasting
system
* The symbolic service id for the channel on this broadcast
system.
o A value is an array consisting of 2 values
* First value is TIMESTAMP when programme started
* Second value is Programme name
This format means that the summary contains duplication of
information. The reason for this is to enable clients to be simpler
to implement.
Sparks Expires December 30, 2012 [Page 22]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
4.3.3. Example
SEND: summary
RECV: OK SUMMARY {"bbc one": [1278346448.0, "The Weakest Link"],
"bbc two": [1278346554.0, "Escape to the Country"],
"cbeebies": [1278346632.0, "ZingZillas"],
"cbbc channel": [1278346613.0, "ROY"],
"bbc radio 1": [1278342000.0, "Scott Mills"],
"bbc radio 2": [1278345900.0, "Simon Mayo"],
"bbc radio 3": [1278345610.0, "In Tune"],
"bbc radio 4": [1278345610.0, "PM"],
"4168": [1278346448.0, "The Weakest Link"],
"4287": [1278346554.0, "Escape to the Country"],
"4672": [1278346632.0, "ZingZillas"],
"4608": [1278346613.0, "ROY"],
"6720": [1278342000.0, "Scott Mills"],
"6784": [1278345900.0, "Simon Mayo"],
"6848": [1278345610.0, "In Tune"],
"6912": [1278345610.0, "PM"]}
4.4. command: services
This command returns the list of services available on the bridge.
The reason for this is to accommodate automated lookups based upon
service ids used in the broadcast system rather than based on channel
name.
4.4.1. Arguments
None
4.4.2. Response format
The response is a JSON object which is an array of integers, each one
representing the service ids which may be queried.
4.4.3. Example
SEND: services
RECV: OK SERVICES [4288, 4544, 6016, 5952, 6784, 4168, 5760,
6720, 5888, 4352, 4416, 6848, 5632, 4608, 4672, 7168, 4736,
5824, 6912, 5696, 4287]
4.5. command: channels
This command returns the list of channels available on the bridge.
This uses the names of the channels as used by the broadcast system.
Sparks Expires December 30, 2012 [Page 23]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
4.5.1. Arguments
None
4.5.2. Response format
The response is a JSON object which is an array of strings, where
each string is a channel name available on the bridge.
4.5.3. Example
SEND: channels
RECV: OK CHANNELS ["bbc one", "bbc two", "cbeebies",
"cbbc channel", "bbc radio 1", "bbc radio 2",
"bbc radio 3", "bbc radio 4"]
4.6. command: channel
This command returns all the information the broadcast bridge has on
a particular channel at that instant. This provides a bridged
version of the current "now and next" information for the channel.
In particular, the dates and time information are provided "as is"
from the broadcast system.
4.6.1. Arguments
*OCTET - String that represents a channel name
4.6.2. Response format
Contains a JSON object with 2 name value pairs:
o channel - value is a string with the channel name
o info - value is another JSON object with 3 name value pairs:
* changed - value is a floating point value which is the number
of seconds since the Unix Epoch. Represents when the now and
next information changed.
* NOW - now/next JSON object (see below) where the "when" value
is "NOW"
* NEXT - now/next JSON object (see below) where the "when" value
is "NEXT"
A now/next JSON object is a JSON object with 8 name value pairs:
Sparks Expires December 30, 2012 [Page 24]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
o name - string with the name of the programme the now/next object
refers to
o description - a string containing a human readable description of
the programme.
o startdate - an array of integers, representing [year, month, day]
o starttime - an array of integers, representing [hours, minutes,
seconds]
o duration - an array of integers, representing [hours, minutes,
seconds]
o when - a string which is either "NOW" or "NEXT"
o service - an integer which is the broadcast service id
o transportstream - an integer which is the broadcast service id
4.6.3. Example
SEND: channel bbc one
RECV: OK CHANNEL {
"channel": "bbc one",
"info":
{"NEXT":
{"startdate": [2010, 7, 5],
"name": "BBC News at Six",
"service": 4168,
"when": "NEXT",
"duration": [0, 30, 0],
"starttime": [17, 0, 0],
"transportstream": 4168,
"description": "The latest national and international
news stories from the BBC News team,
followed by weather. [S]"
},
"changed": 1278346448.0,
Sparks Expires December 30, 2012 [Page 25]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
"NOW": {"startdate": [2010, 7, 5],
"name": "The Weakest Link",
"service": 4168,
"when": "NOW",
"duration": [0, 45, 0],
"starttime": [16, 15, 0],
"transportstream": 4168,
"description": "Anne Robinson presents the quick-
fire general knowledge quiz in which
contestants must decide at the end
of each round which of their number
should be eliminated. [S]"
}
}
}
4.7. command: service
This command returns all the information the broadcast bridge has on
a particular channel, identified by broadcast system service id at
that instant.
4.7.1. Arguments
*OCTET - String that represents a service number
4.7.2. Response format
The response format is the same as the command "channel"
4.7.3. Example
SEND: service 4287
RECV: OK CHANNEL {
"info": {
"channel": "bbc two"
"NEXT": {
"startdate": [2010, 7, 5], "
"name": "Eggheads",
"service": 4287,
"when": "NEXT",
"duration": [0, 30, 0],
"starttime": [17, 0, 0],
"transportstream": 4168,
"description": "General knowledge quiz in which
teams from all over the UK battle to beat the
Eggheads, some of the country's top quiz
champions. Also in HD. [S]"},
Sparks Expires December 30, 2012 [Page 26]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
"changed": 1278346554.0,
"NOW": {
"startdate": [2010, 7, 5],
"name": "Escape to the Country",
"service": 4287,
"when": "NOW", "duration": [0, 45, 0],
"starttime": [16, 15, 0],
"transportstream": 4168,
"description": "New Forest: Series in which
prospective buyers are helped to find their dream
home in the country. Jules Hudson helps a couple
with a budget of 650,000 pounds find a house in
the New Forest. [S]"}
},
}
5. STAR Broadcast Bridge Programme Services over HTTP
5.1. Mapping to HTTP from the TCP Service
This provides a basic web based API to access the same commands as
the TCP command format.
The broadcast bridge presents itself on the following form of URL:
http://example.com/bridge?command=<CMD>
http://example.com/bridge?command=<CMDA>&args=<ARG>
The response type for URLs of the format above is application/json,
and the format/structure matches the TCP version precisely.
CMD is any command from the TCP version which does not take any
arguments.
CMDA is any command from the TCP version which takes at least one
argument. The argument it takes is passed through in args.
5.2. Example Mappings
5.2.1. command: time
http://example.com/bridge?command=time
Sparks Expires December 30, 2012 [Page 27]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
5.2.2. command: echotime
http://example.com/bridge?command=echotime&args=1278346870.0
5.2.3. command: summary
http://example.com/bridge?command=summary
5.2.4. command: services
http://example.com/bridge?command=services
5.2.5. command: channels
http://example.com/bridge?command=channels
5.2.6. command: channel
http://example.com/bridge?command=channel&args=bbc%20one
5.2.7. command: service
http://example.com/bridge?command=service&args=4287
6. STAR Additional Services Server
After synchronising a clock, and after retrieving programme start
times, the STAR client (which may be a javascript based client inside
a web page) can then choose to retrieve a play out script from the
STAR additional services server. How this happens precisely is left
as an exercise to an implementer.
One approach that is feasible is as follows:
o A broadcaster publishes a schedule online with programme names,
times and a unique id.
o Using the broadcast bridge, the STAR client identifies the current
programme, allowing the identification of the unique id.
o The STAR client can then request from a web service the specific
play out script for that programme.
There are clearly other feasible approaches, and STAR is not
prescriptive about any particular approach.
That play out script MAY be delivered over HTTP.
Sparks Expires December 30, 2012 [Page 28]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
7. STAR Playout Scripts
7.1. MIME type
The MIME type of play out script is application/json.
7.2. File Format
The STAR play out script
o is a UTF8 encoded
o contains a JSON encoded object.
The JSON object:
o is an array of events
Each event is an array consisting of 3 values:
o The first value is a float representing a timestamp - see 7.3
o The second is an event type - see 7.4
o The third is event data - see 7.5
7.3. Timestamps
Timestamps are defined to be relative to time zero of the programme
as defined above.
7.4. Event types
Event type is defined as follows
EVENT TYPE = *ENCODINGTAG DATATYPETAG
ENCODINGTAG = ( "INLINE" | "BASE64"|"URL") ";"
DATATYPETAG = MIMETYPE | CUSTOMTYPE
CUSTOMTYPE = DOMAIN "/" *OCTECT
ie An optional (encoding tag and semicolon) preceding a base type.
7.4.1. Datatype Tags
A base type may be:
o a standard MIME Type
Sparks Expires December 30, 2012 [Page 29]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
o An application's custom type. As defined above an application's
custom type is defined in terms of DOMAINNAME followed by a "/"
followed by any text. It is up to the entity that owns the domain
DOMAINNAME to publish and manage that namespace.
7.4.2. Encoding Tags
The encoding tag defines how to interpret the encoding of the event
data:
o "INLINE" - means to treat the event data as raw data of the type
given (eg textual)
o "BASE64" - means that the event data inline is the data of the
given datatype, but is base64 encoded. (This allows for example a
small audio/wav file to be represented inline. This is expected
to be a rare necessity but potentially useful)
o "URL" - means to treat the event data as an URL to download and
interpret at the given time.
Given the encoding tag is optional, if the encoding tag is not
supplied, then the following rules are used to determine the
encoding:
o If the datatype tag is the MIME type "text/plain" then the
encoding tag is inline
o Otherwise the encoding tag is assumed to be URL (This allows for
example a small audio/wav file to be represented inline. This is
expected to be a rare necessity but potentially useful)
7.5. Event data encoding
The actual event data interpretation is just a string.
If the data encoding is an URL:
o Then the STAR client accesses the resource indicated by the URL
and uses that resource as the event data.
If the data encoding is BASE64:
o Then the STAR client decodes the BASE64 encoded data, and uses
that as the event data
Otherwise the data encoding is INLINE:
Sparks Expires December 30, 2012 [Page 30]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
o This means the STAR client just treats the raw data as the event
data.
The data is then interpreted according to local rules for the given
MIME type.
7.6. Example
Given the following (tidied) example:
[[0, "text/plain", "Programme Start"],
[0.5, "audio/wav", "http://www.example.com/example.wav"],
[1.0, "BASE64;image/vnd.microsoft.icon", 'AAABAAIAEBAAAAAAABo...'],
[1.5, "URL;example.com/game", "http://www.example.com/games/gam"],
[2.0, "example.com/serial", "http://www.example.com/ardunio/robo"],
...
]
Time 0 is interpreted as as text/plain - which may be displayed on a
screen, or spoken.
Time 0.5 is interpreted as an URL to download and then treat as an
audio/wav file.
Time 1.0 is interpreted an inline embedded ".ico" file, which is base
64 encoded in the data field.
Time 1.5 is interpreted as an URL to download and then treat
according to the rules defined by the entity owning "example.com" as
the datatype "example.com/game".
Time 2.0 is interpreted as an URL to download and then treat
according to the rules defined by the entity owning "example.com" as
the datatype "example.com/serial". For example, this could mean to
take whatever data is sent back and to send that to the serial port,
controlling an arduino controlled robot.
8. Future Expansion
Future expansion of datatype tags is provided through the standard
IANA MIME types, and also by the custom datatype tag formats which
may be managed by the owner of a domain name.
9. IANA Considerations
This memo includes no request to IANA.
Sparks Expires December 30, 2012 [Page 31]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
This document describes an experimental protocol. It re-uses the
existing IANA namespace for defining datatype tags, and additionally
defines a mechanism for users of the protocol to define their own
namespace for defining datatype tags, and maintaining this within
their organisation.
As a result this protocol has no IANA considerations.
10. Security Considerations
All drafts are required to have a security considerations section.
See RFC 3552 [RFC3552] for a guide.
This section is meant to inform application developers, information
providers, and users of the security limitations in STAR as described
by this document. The discussion does not include definitive
solutions to the problems revealed, though it does make some
suggestions for reducing security risks.
It is not warranted to be exhaustive.
10.1. Personal Information - Abuse of Server Logs
The server enables the maintainer of the broadcast bridge to identify
what programmes particular IPs are using. If the maintainer of the
broadcast bridge or additional services server store cookies, then
they are potentially able to identify particular individuals.
Since the event file format is defined to automatically download URLS
in the file, if the client does this at the same time as the moment
in the programme occurs, then the maintainer of the broadcast bridge
is able to track which users are watching how much of what programme
through the broadcast bridge log data.
The client is not required to download the URLs at that instant, and
may download the content beforehand, which mitigates this risk.
10.2. Data encoding and decoding
JSON format data is directly interpretable in a number of languages,
including actionscript, javascript, and python. If the creator of
the client fails to use a parser, this opens the client up to well
known attacks.
Similarly, assuming BASE64 encoded data is BASE64 encoded without any
conversion errors would open up the client to well known attacks.
Sparks Expires December 30, 2012 [Page 32]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
10.3. Denial of Service
It is possible for a badly crafted file to cause a denial of service
attack on the additional services store. For example, if all the
timestamps were "0", this would mean "interpret all these events as
being at time 0". This could cause a very large number of concurrent
requests against the additional services store, albeit by accident.
Hijacking of a site and replacement of the play out script with a
malicious play out script could result in a similar effect.
11. Acknowledgements
This specification makes heavy use of the augmented BNF and generic
constructs defined by David H. Crocker for RFC 822.
Also, this specification is inspired by HTTP to be content agnostic
and extensible, and additionally by the semantic web approach of
allowing namespaces interpretation to be owned by a group.
The time synchronisation approach is based very loosely on a
simplification of the core ideas of a number of time synchronisation
protocols.
12. References
12.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
12.2. Informative References
[RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629,
June 1999.
[RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC
Text on Security Considerations", BCP 72, RFC 3552,
July 2003.
Appendix A. Additional Stuff
This becomes an Appendix.
Sparks Expires December 30, 2012 [Page 33]
Internet-Draft STAR: IP & Broadcast Synchronisation June 2012
Author's Address
Michael Sparks
BBC Research and Development
BBC R & D North Lab
Dock House
MediaCityUK
Salford, M50 2LH
UK
Phone: +44 303 040 9510
Email: michael.sparks@bbc.co.uk
Sparks Expires December 30, 2012 [Page 34]