From f554754cfcc5b6c2caeb354eb5e68da6d30d6036 Mon Sep 17 00:00:00 2001 From: sallai Date: Tue, 17 Jun 2008 15:06:32 +0000 Subject: [PATCH] packet time stamping/sync teps --- doc/html/tep132.html | 454 ++++++++++++++++++++++++++++++++++ doc/html/tep133.html | 570 +++++++++++++++++++++++++++++++++++++++++++ doc/pdf/tep132.pdf | Bin 0 -> 77839 bytes doc/pdf/tep133.pdf | Bin 0 -> 87744 bytes doc/txt/tep132.txt | 153 ++++++++++++ doc/txt/tep133.txt | 268 ++++++++++++++++++++ 6 files changed, 1445 insertions(+) create mode 100644 doc/html/tep132.html create mode 100644 doc/html/tep133.html create mode 100644 doc/pdf/tep132.pdf create mode 100644 doc/pdf/tep133.pdf create mode 100644 doc/txt/tep132.txt create mode 100644 doc/txt/tep133.txt diff --git a/doc/html/tep132.html b/doc/html/tep132.html new file mode 100644 index 00000000..9db05b9d --- /dev/null +++ b/doc/html/tep132.html @@ -0,0 +1,454 @@ + + + + + + +Packet timestamping + + + + +
+

Packet timestamping

+ +++ + + + + + + + + + + + + + + + + + + + + + +
TEP:TBA
Group:Core Working Group
Type:Documentary
Status:Draft
TinyOS-Version:> 2.1
Author:Miklos Maroti, Janos Sallai
Draft-Created:15-May-2008
Draft-Version:1.0
Draft-Modified:2008-05-15
Draft-Discuss:TinyOS Developer List <tinyos-devel at mail.millennium.berkeley.edu>
+
+

Note

+

This memo documents a part of TinyOS for the TinyOS Community, and requests +discussion and suggestions for improvements. Distribution of this memo is +unlimited. This memo is in full compliance with TEP 1.

+
+
+

Abstract

+

This TEP describes a mechanism that provides access to the time of transmission +and time of reception of a packet. The local clocks of the sender and recipient +are used to timestamp the transmission and reception of the packet, +respectively.

+
+
+

1. Introduction

+

Time of packet sending and reception is often of interest in sensor network +applications. Typically, neither the time of invocation of the send command, nor +the time of signaling of the sendDone event can be used to estimate, without +significant jitter, the time when the packet was transmitted. Similarly, the +time of occurrence of the receive event cannot be used to reliably estimate the +time of reception.

+

A straightforward way of message timestamping is to use the start-of-frame +delimiter interrupt, commonly exposed by packet-oriented radio transceivers. +This approach was taken by the CC2420 radio stack in TinyOS 1.x: the SFD +interrupt handler was exposed by the radio stack as an asynchronous event. This +solution was problematic, because higher- level application components that +wired the interface containing this event could break the timing of radio stack +due to excessive computation in interrupt context.

+

This TEP overcomes this issue by providing a standardized, platform- independent +interface to access packet timestamps without exposing timing critical and/or +hardware-specific events. Also, this TEP does not prescribe how packet +timestamping should be implemented: it only describes the interfaces and the +required functionality (semantics).

+
+
+

2. The PacketTimeStamp interface

+

This TEP specifies a standard interface (PacketTimeStamp) to access the +packet transmission and packet reception times. The sender and the receiver use +unsynchronized clocks to timestamp packets. The precision and width of +timestamps is specified as interface parameters precision_tag and +size_type:

+
+interface PacketTimeStamp<precision_tag, size_type>
+{
+        async command bool isValid(message_t* msg);
+        async command size_type timestamp(message_t* msg);
+        async command void clear(message_t* msg);
+        async command void set(message_t* msg, size_type value);
+}
+
+

The timestamp command of the PacketTimeStamp interface is an accessor to the +the timestamp. The timestamp command returns the time +of transmission after a sendDone event, and the time of reception after a +receive event.

+

In some cases, it is not possible to timestamp certain packets (e.g. under very +heavy traffic multiple interrupts can occur before they could be serviced, and +even if capture registers are used, it is not possible to get the time stamp for +the first or last unserviced event). The PacketTimeStamp interface contains +the isValid command to query if the packet timestamp is valid.

+

The communications stack MUST guarantee that if the isValid command called +from within the sendDone or receive event handler returns TRUE, then +the value returned by the timestamp command can be trusted. However, it +might be possible that the local clock overflowed more than once or that is was +stopped or reset since the packet was timestamped, which causes the value +returned by the timestamp command invalid. The isValid command MAY +return TRUE in such situations, and it is the responsibility of the user of the +interface to ensure that the clock runs freely from the time of message +reception to the time when timestamp is called. To avoid this issue, it is +recommended that isValid and timestamp are called from the receive +or sendDone event handler.

+

The clear command invalidates the timestamp: after clear is called, isValid +will return FALSE. A set command is also included to allow for changing +the timestamp associated with the message. After the set command is called, +isValid will return TRUE.

+

The communications stack guarantees that the transmission timestamp and the +reception timestamp that belong to the same packet transmission always +correspond to the same physical phenomenon, i.e. to the same instance of +physical time. This TEP does not prescribe what synchronization event the +communications stack should use. For example, the communications stack may chose +to timestamps hardware events that correspond to the start of +transmission/reception of the packet, signaled a start-of-frame delimiter (SFD) +interrupt. The SFD interrupt occurs at the same time on the transmitter and the +receiver (assuming that the signal propagation delay is negligible). +Alternatively, on a byte oriented radio, the timestamp may correspond to the +average of the transmission times of bytes, as described in [2].

+
+
+

3. HIL requirements

+

The signature of the platform's ActiveMessageC [3] MUST include:

+
+provides interface PacketTimeStamp<TMilli,uint32_t>;
+
+

where timestamps are given in the node's local time, which is available through +HILTimerMilliC.LocalTime [4].

+

The communications stack MAY support timestamp precisions and widths other than +TMilli and uint32_t, respectively. Also, alternative +TimesyncedPacket implementations MAY use clock sources other than +HILTimerMilliC.LocalTime.

+
+
+

4. Implementation

+

A reference implementation of the packet timestamping mechanism described in +this TEP can be found in tinyos-2.x/tos/chips/rf230.

+
+
+

5. Author's Address

+
+
Miklos Maroti
+
Janos Sallai
+
Institute for Software Integrated Systems
+
Vanderbilt University
+
2015 Terrace Place
+
Nashville, TN 37203
+
phone: +1 (615) 343-7555
+
+
+
+

6. Citations

+ + + + + +
[1]TEP 111: message_t
+ + + + + +
[2]Maroti, M., Kusy, B., Simon, G., and Ledeczi, A. 2004. The flooding time synchronization protocol. In Proceedings of the 2nd international Conference on Embedded Networked Sensor Systems (Baltimore, MD, USA, November 03 - 05, 2004). ACM SenSys '04.
+ + + + + +
[3]TEP 116: Packet protocols
+ + + + + +
[4]TEP 102: Timers
+
+
+ + diff --git a/doc/html/tep133.html b/doc/html/tep133.html new file mode 100644 index 00000000..a94fdef1 --- /dev/null +++ b/doc/html/tep133.html @@ -0,0 +1,570 @@ + + + + + + +Packet-level time synchronization + + + + +
+

Packet-level time synchronization

+ +++ + + + + + + + + + + + + + + + + + + + + + +
TEP:TBA
Group:Core Working Group
Type:Documentary
Status:Draft
TinyOS-Version:> 2.1
Author:Miklos Maroti, Janos Sallai
Draft-Created:15-May-2008
Draft-Version:1.0
Draft-Modified:2008-05-15
Draft-Discuss:TinyOS Developer List <tinyos-devel at mail.millennium.berkeley.edu>
+
+

Note

+

This memo documents a part of TinyOS for the TinyOS Community, and requests +discussion and suggestions for improvements. Distribution of this memo is +unlimited. This memo is in full compliance with TEP 1.

+
+
+

Abstract

+

This TEP describes a packet-level time synchronization mechanism that allows for +sending a time value along with the packet which is automatically converted from +the sender's local time to the receiver's local time by the communications +stack.

+
+
+

1. Introduction

+

Time of occurrence of events is often of interest in a sensor network. +Maintaining a synchronized UTC or a virtual global time in a sensor network may, +however, lead to significant communication overhead and may not always be +required by the application.

+

This TEP describes a packet-level time synchronization mechanism that allows for +sending a time value along with the packet which is automatically converted from +the sender's local time to the receiver's local time by the communications +stack. Packet-level time synchronization is limited to single-hop communication +and does not provide synchronized network time. It provides a simple yet +powerful abstraction, on top of which it is possible to implement higher-level +time synchronization services (e.g. FTSP [6])in a platform-independent way. +Packet-level time synchronization is semantically equivalent to the ETA +primitives [1].

+

The rest of this TEP specifies:

+
    +
  • Platform-independent packet-level time synchronization interfaces
  • +
  • How these interfaces are provided in the HIL
  • +
  • A guideline how each transceiver's HAL may implement the above interfaces
  • +
+
+
+

2. Interface

+

Packet-level time synchronization is implemented by the communication stack and +is exposed through two interfaces, TimeSyncAMSend and TimeSyncPacket.

+

The TimeSyncAMSend interface allows for sending a time value (e.g. an event +timestamp) along with a message. It is parameterized by the precision and width +of the time value:

+
+interface TimeSyncAMSend<precision_tag, size_type>
+{
+  command error_t send(am_addr_t addr, message_t* msg, uint8_t len, size_type event_time);
+  command error_t cancel(message_t* msg);
+  event void sendDone(message_t* msg, error_t error);
+  command uint8_t maxPayloadLength();
+  command void* getPayload(message_t* msg, uint8_t len);
+}
+
+

The send command sends a regular message just like AMSend.send [2], but +it also performs sender-receiver time synchronization. The event_time +parameter holds the time of some event as expressed in the local clock of the +sender. The receiver can obtain the time of this event (expressed in its own +local time) via the TimeSyncPacket interface.

+

The rest of the functionality is identical to that of the AMSend interface, +therefore its description is omitted here. Please refer to [2] for details.

+

The TimeSyncPacket interface, parameterized by a precision tag and width, +allows for retrieving a time value that was sent along the received packet:

+
+interface TimeSyncPacket<precision_tag, size_type>
+{
+        command bool isValid(message_t* msg);
+        command size_type eventTime(message_t* msg);
+}
+
+

The isValid command returns TRUE if the value returned by +eventTime can be trusted. Under certain circumstances the received packet +cannot be properly time stamped, so the sender-receiver synchronization cannot +be finished on the receiver side. In such case, this command returns FALSE. +This command MUST be called only on the receiver side and only for messages +transmitted via the TimeSyncAMSend interface.

+

The communications stack MUST guarantee that if the isValid command called +from within the receive event handler returns TRUE, then the value +returned by the eventTime command can be trusted. However, it might be +possible that the local clock overflowed more than once or that is was stopped +or reset since the packet was received, which causes the event_time to be +invalid. The isValid command MAY return TRUE in such situations, and it +is the responsibility of the user of the interface to ensure that the clock runs +freely from the time of message reception to the time when eventTime is +called. To avoid this issue, it is recommended that isValid and +eventTime are called from the receive event handler.

+

The eventTime command should be called by the receiver of a packet. The +time of the synchronization event is returned as expressed in the local clock of +the caller. This command MUST BE called only on the receiver side and only for +messages transmitted via the TimeSyncAMSend interface.

+
+
+

3. HIL requirements

+

The signature of the platform's ActiveMessageC [5] MUST include:

+
+provides interface TimeSyncAMSend<TMilli, uint32_t>;
+provides interface TimeSyncPacket<TMilli, uint32_t>;
+
+

where event times are given in the node's local time, which is available through +HILTimerMilliC.LocalTime.

+

The communications stack MAY support timestamp precisions and widths other than +TMilli and uint32_t, respectively. Also, alternative TimeSyncAMSend and +TimeSyncPacket implementations MAY use clock sources other than +HILTimerMilliC.LocalTime.

+
+
+

4. Implementation guidelines

+

Packet-level time synchronization employs the ETA primitives. In this TEP, only +the basics of the time synchronization mechanism are described, for details +please see [1]. This section presents two possible implementation approaches. +The first approach assumes that the payload of the packet is still mutable when +the transmission time of the packet (e.g. the timestamp of the SFD interrupt) +becomes available. The second approach avoids this assumption and uses the +packet timestamping functionality described in TEP [4] to implement packet- +level time synchronization.

+
+

4.1 Approach #1

+

Several transceivers allow for modifying the contents of a packet after packet +transmission is started. Packet-level time synchronization can be implemented +very efficiently on such platforms.

+

Transmitter's story

+
+
    +
  • When the communications stack services a TimeSyncAMSend.send command called +with event timestamp t_e, it stores t_e (e.g. in a map with the pointer +of the message_t as key) and sets the designated timestamp field in the packet +payload to 0x80000000.
  • +
  • When the packet starts being transmitted over the communication medium, a +corresponding hardware event is timestamped (e.g. an SFD interrupt). Let us +denote this transmission timestamp with t_tx. The difference of event +timestamp t_e and transmit timestamp t_tx is written into the +designated timestamp field in the payload of the packet (typically into the +footer, since the first few bytes might have been transmitted by this time). +That is, the information the packet contains at the instance when being sent +over the communications medium is the age of the event (i.e. how much time ago +the event had occurred).
  • +
  • If an error occurs with timestamping the transmission or with writing the +package payload after transmission has started, then the designated timestamp +field in the packet payload will contain 0x80000000, indicating the error +to the receiver.
  • +
+
+

Receiver's story

+
+
    +
  • The packet is timestamped with the receiver node's local clock at reception +(e.g. with the timestamp of the SFD interrupt). Let us denote the time of +reception with t_rx. The reception timestamp is stored in the metadata +structure of the message_t [5].
  • +
  • When the event time is queried via the TimeSyncPacket interface, the +eventTime command returns the sum of the value stored in the designated +timestamp field in packet payload and the reception timestamp, i.e. e_t- +e_tx+e_rx. This value corresponds to the time of the event in the receiver's +local clock.
  • +
  • The TimeSyncPacket.isValid command returns FALSE if the time +value stored in the payload equals 0x80000000 or if the communications +stack failed to timestamp the reception of the packet. Otherwise TRUE is +returned, which indicates that the value returned by +TimeSyncPacket.eventTime can be trusted.
  • +
+
+
+
+

4.1 Approach #2

+

If a particular platform does not support changing the packet contents after the +synchronization event (start of transmission, SFD interrupt, etc.) had occured, +it is still possible to provide packet-level time synchronization functionality +at the cost of some communication overhead. Such an approach can rely on packet +timestamping TEP [4] to implement packet-level time synchronization.

+

Transmitter's story

+
+
    +
  • When the communications stack services a TimeSyncAMSend.send command +called with event timestamp t_e, it stores t_e (e.g. in a map with the +pointer of the message_t as key) and sends the packet.
  • +
  • Transmission of the packet is timestamped using the packet timestamping TEP +[4] mechanism. Let us denote this transmission timestamp with t_tx. The +difference of event timestamp t_e and transmit timestamp t_tx is sent +in an auxilliary packet. That is, the information the auxulary packet contains +is the age of the event at the time when the initial packet was transmitted.
  • +
+
+

Receiver's story

+
+
    +
  • The packet is timestamped with the receiver node's local clock at reception +(e.g. with the timestamp of the SFD interrupt). Let us denote the time of +reception with t_rx. The reception timestamp is stored in the metadata +structure of the message_t [5].
  • +
  • When the auxilliary packet arrives, the time value it carries (t_e-t_tx, +the age of the event) is stored in a metadata field of the main packet. The +auxilliary packet is discarded, and the receive event is signalled with the +pointer to the main packet.
  • +
  • When the event time is queried via the TimeSyncPacket interface, the +eventTime command returns the sum of the value stored in the metadata (age +of the event) and the reception timestamp, i.e. e_t- e_tx+e_rx. This value +corresponds to the time of the event in the receiver's local clock.
  • +
  • The TimeSyncPacket.isValid command returns FALSE if the communications +stack failed to timestamp the reception of the packet. Otherwise TRUE is +returned, which indicates that the value returned by +TimeSyncPacket.eventTime can be trusted.
  • +
+
+
+
+

5. Reference implementation

+

A reference implementation of the packet-level time synchronization mechanism +described in this TEP can be found in tinyos-2.x/tos/chips/rf230.

+
+
+
+

6. Author's Address

+
+
Miklos Maroti
+
Janos Sallai
+
Institute for Software Integrated Systems
+
Vanderbilt University
+
2015 Terrace Place
+
Nashville, TN 37203
+
phone: +1 (615) 343-7555
+
+
+
+

7. Citations

+ + + + + +
[1](1, 2) Kusy, B., Dutta, P., Levis, P., Maroti, M., Ledeczi, A., Culler, D., Elapsed Time on Arrival: A simple and versatile primitive for canonical time synchronization services. International Journal of Ad hoc and Ubiquitous Computing, Vol, 2, No. 1, 2006.
+ + + + + +
[2](1, 2) TEP 116: Packet protocols
+ + + + + +
[3]TEP 102: Timers
+ + + + + +
[4](1, 2, 3) TEP TBA: Packet timestamping
+ + + + + +
[5](1, 2, 3) TEP 111: message_t
+ + + + + +
[6]Maroti, M., Kusy, B., Simon, G., and Ledeczi, A. 2004. The flooding time synchronization protocol. In Proceedings of the 2nd international Conference on Embedded Networked Sensor Systems (Baltimore, MD, USA, November 03 - 05, 2004). ACM SenSys '04.
+
+
+ + diff --git a/doc/pdf/tep132.pdf b/doc/pdf/tep132.pdf new file mode 100644 index 0000000000000000000000000000000000000000..196b42f7b73f8366bfa1b5453a6afac71e5e442b GIT binary patch literal 77839 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 N4UvpYNLm>2{{iM%@7MqU literal 0 HcmV?d00001 diff --git a/doc/pdf/tep133.pdf b/doc/pdf/tep133.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dee6454abd440876e1110c3f1b7f5775a3179f56 GIT binary patch literal 87744 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%0D-xgq-4NXJ}%?gI;!x41^8 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 z

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 literal 0 HcmV?d00001 diff --git a/doc/txt/tep132.txt b/doc/txt/tep132.txt new file mode 100644 index 00000000..b62dde1e --- /dev/null +++ b/doc/txt/tep132.txt @@ -0,0 +1,153 @@ +=================== +Packet timestamping +=================== + +:TEP: TBA +:Group: Core Working Group +:Type: Documentary +:Status: Draft +:TinyOS-Version: > 2.1 +:Author: Miklos Maroti, Janos Sallai + +:Draft-Created: 15-May-2008 +:Draft-Version: $Revision$ +:Draft-Modified: $Date$ +:Draft-Discuss: TinyOS Developer List + +.. Note:: + + This memo documents a part of TinyOS for the TinyOS Community, and requests + discussion and suggestions for improvements. Distribution of this memo is + unlimited. This memo is in full compliance with TEP 1. + +Abstract +============================================================================ + +This TEP describes a mechanism that provides access to the time of transmission +and time of reception of a packet. The local clocks of the sender and recipient +are used to timestamp the transmission and reception of the packet, +respectively. + +1. Introduction +============================================================================ + +Time of packet sending and reception is often of interest in sensor network +applications. Typically, neither the time of invocation of the send command, nor +the time of signaling of the sendDone event can be used to estimate, without +significant jitter, the time when the packet was transmitted. Similarly, the +time of occurrence of the receive event cannot be used to reliably estimate the +time of reception. + +A straightforward way of message timestamping is to use the start-of-frame +delimiter interrupt, commonly exposed by packet-oriented radio transceivers. +This approach was taken by the CC2420 radio stack in TinyOS 1.x: the SFD +interrupt handler was exposed by the radio stack as an asynchronous event. This +solution was problematic, because higher- level application components that +wired the interface containing this event could break the timing of radio stack +due to excessive computation in interrupt context. + +This TEP overcomes this issue by providing a standardized, platform- independent +interface to access packet timestamps without exposing timing critical and/or +hardware-specific events. Also, this TEP does not prescribe how packet +timestamping should be implemented: it only describes the interfaces and the +required functionality (semantics). + +2. The ``PacketTimeStamp`` interface +============================================================================ + +This TEP specifies a standard interface (``PacketTimeStamp``) to access the +packet transmission and packet reception times. The sender and the receiver use +unsynchronized clocks to timestamp packets. The precision and width of +timestamps is specified as interface parameters ``precision_tag`` and +``size_type``:: + + interface PacketTimeStamp + { + async command bool isValid(message_t* msg); + async command size_type timestamp(message_t* msg); + async command void clear(message_t* msg); + async command void set(message_t* msg, size_type value); + } + +The ``timestamp`` command of the ``PacketTimeStamp`` interface is an accessor to the +the timestamp. The ``timestamp`` command returns the time +of transmission after a sendDone event, and the time of reception after a +receive event. + +In some cases, it is not possible to timestamp certain packets (e.g. under very +heavy traffic multiple interrupts can occur before they could be serviced, and +even if capture registers are used, it is not possible to get the time stamp for +the first or last unserviced event). The ``PacketTimeStamp`` interface contains +the ``isValid`` command to query if the packet timestamp is valid. + +The communications stack MUST guarantee that if the ``isValid`` command called +from within the ``sendDone`` or ``receive`` event handler returns ``TRUE``, then +the value returned by the ``timestamp`` command can be trusted. However, it +might be possible that the local clock overflowed more than once or that is was +stopped or reset since the packet was timestamped, which causes the value +returned by the ``timestamp`` command invalid. The ``isValid`` command MAY +return TRUE in such situations, and it is the responsibility of the user of the +interface to ensure that the clock runs freely from the time of message +reception to the time when ``timestamp`` is called. To avoid this issue, it is +recommended that ``isValid`` and ``timestamp`` are called from the ``receive`` +or ``sendDone`` event handler. + +The clear command invalidates the timestamp: after clear is called, ``isValid`` +will return ``FALSE``. A ``set`` command is also included to allow for changing +the timestamp associated with the message. After the ``set`` command is called, +``isValid`` will return TRUE. + +The communications stack guarantees that the transmission timestamp and the +reception timestamp that belong to the same packet transmission always +correspond to the same physical phenomenon, i.e. to the same instance of +physical time. This TEP does not prescribe what synchronization event the +communications stack should use. For example, the communications stack may chose +to timestamps hardware events that correspond to the start of +transmission/reception of the packet, signaled a start-of-frame delimiter (SFD) +interrupt. The SFD interrupt occurs at the same time on the transmitter and the +receiver (assuming that the signal propagation delay is negligible). +Alternatively, on a byte oriented radio, the timestamp may correspond to the +average of the transmission times of bytes, as described in [2]_. + +3. HIL requirements +============================================================================ + +The signature of the platform's ActiveMessageC [3]_ MUST include:: + + provides interface PacketTimeStamp; + +where timestamps are given in the node's local time, which is available through +``HILTimerMilliC.LocalTime`` [4]_. + +The communications stack MAY support timestamp precisions and widths other than +``TMilli`` and ``uint32_t``, respectively. Also, alternative +``TimesyncedPacket`` implementations MAY use clock sources other than +``HILTimerMilliC.LocalTime``. + +4. Implementation +============================================================================ + +A reference implementation of the packet timestamping mechanism described in +this TEP can be found in ``tinyos-2.x/tos/chips/rf230``. + +5. Author's Address +============================================================================ + +| Miklos Maroti +| Janos Sallai +| Institute for Software Integrated Systems +| Vanderbilt University +| 2015 Terrace Place +| Nashville, TN 37203 +| phone: +1 (615) 343-7555 + +6. Citations +============================================================================ + +.. [1] TEP 111: message_t + +.. [2] Maroti, M., Kusy, B., Simon, G., and Ledeczi, A. 2004. The flooding time synchronization protocol. In Proceedings of the 2nd international Conference on Embedded Networked Sensor Systems (Baltimore, MD, USA, November 03 - 05, 2004). ACM SenSys '04. + +.. [3] TEP 116: Packet protocols + +.. [4] TEP 102: Timers diff --git a/doc/txt/tep133.txt b/doc/txt/tep133.txt new file mode 100644 index 00000000..804cc45f --- /dev/null +++ b/doc/txt/tep133.txt @@ -0,0 +1,268 @@ +================================= +Packet-level time synchronization +================================= + +:TEP: TBA +:Group: Core Working Group +:Type: Documentary +:Status: Draft +:TinyOS-Version: > 2.1 +:Author: Miklos Maroti, Janos Sallai + +:Draft-Created: 15-May-2008 +:Draft-Version: $Revision$ +:Draft-Modified: $Date$ +:Draft-Discuss: TinyOS Developer List + +.. Note:: + + This memo documents a part of TinyOS for the TinyOS Community, and requests + discussion and suggestions for improvements. Distribution of this memo is + unlimited. This memo is in full compliance with TEP 1. + +Abstract +============================================================================ + +This TEP describes a packet-level time synchronization mechanism that allows for +sending a time value along with the packet which is automatically converted from +the sender's local time to the receiver's local time by the communications +stack. + +1. Introduction +============================================================================ + +Time of occurrence of events is often of interest in a sensor network. +Maintaining a synchronized UTC or a virtual global time in a sensor network may, +however, lead to significant communication overhead and may not always be +required by the application. + +This TEP describes a packet-level time synchronization mechanism that allows for +sending a time value along with the packet which is automatically converted from +the sender's local time to the receiver's local time by the communications +stack. Packet-level time synchronization is limited to single-hop communication +and does not provide synchronized network time. It provides a simple yet +powerful abstraction, on top of which it is possible to implement higher-level +time synchronization services (e.g. FTSP [6]_)in a platform-independent way. +Packet-level time synchronization is semantically equivalent to the ETA +primitives [1]_. + +The rest of this TEP specifies: + +- Platform-independent packet-level time synchronization interfaces +- How these interfaces are provided in the HIL +- A guideline how each transceiver's HAL may implement the above interfaces + +2. Interface +============================================================================ + +Packet-level time synchronization is implemented by the communication stack and +is exposed through two interfaces, ``TimeSyncAMSend`` and ``TimeSyncPacket``. + +The ``TimeSyncAMSend`` interface allows for sending a time value (e.g. an event +timestamp) along with a message. It is parameterized by the precision and width +of the time value:: + + interface TimeSyncAMSend + { + command error_t send(am_addr_t addr, message_t* msg, uint8_t len, size_type event_time); + command error_t cancel(message_t* msg); + event void sendDone(message_t* msg, error_t error); + command uint8_t maxPayloadLength(); + command void* getPayload(message_t* msg, uint8_t len); + } + +The ``send`` command sends a regular message just like ``AMSend.send`` [2]_, but +it also performs sender-receiver time synchronization. The ``event_time`` +parameter holds the time of some event as expressed in the local clock of the +sender. The receiver can obtain the time of this event (expressed in its own +local time) via the ``TimeSyncPacket`` interface. + +The rest of the functionality is identical to that of the ``AMSend`` interface, +therefore its description is omitted here. Please refer to [2]_ for details. + +The ``TimeSyncPacket`` interface, parameterized by a precision tag and width, +allows for retrieving a time value that was sent along the received packet:: + + interface TimeSyncPacket + { + command bool isValid(message_t* msg); + command size_type eventTime(message_t* msg); + } + +The ``isValid`` command returns ``TRUE`` if the value returned by +``eventTime`` can be trusted. Under certain circumstances the received packet +cannot be properly time stamped, so the sender-receiver synchronization cannot +be finished on the receiver side. In such case, this command returns ``FALSE``. +This command MUST be called only on the receiver side and only for messages +transmitted via the TimeSyncAMSend interface. + +The communications stack MUST guarantee that if the ``isValid`` command called +from within the ``receive`` event handler returns ``TRUE``, then the value +returned by the ``eventTime`` command can be trusted. However, it might be +possible that the local clock overflowed more than once or that is was stopped +or reset since the packet was received, which causes the ``event_time`` to be +invalid. The ``isValid`` command MAY return ``TRUE`` in such situations, and it +is the responsibility of the user of the interface to ensure that the clock runs +freely from the time of message reception to the time when ``eventTime`` is +called. To avoid this issue, it is recommended that ``isValid`` and +``eventTime`` are called from the ``receive`` event handler. + +The ``eventTime`` command should be called by the receiver of a packet. The +time of the synchronization event is returned as expressed in the local clock of +the caller. This command MUST BE called only on the receiver side and only for +messages transmitted via the ``TimeSyncAMSend`` interface. + +3. HIL requirements +============================================================================ + +The signature of the platform's ActiveMessageC [5]_ MUST include:: + + provides interface TimeSyncAMSend; + provides interface TimeSyncPacket; + +where event times are given in the node's local time, which is available through +``HILTimerMilliC.LocalTime``. + +The communications stack MAY support timestamp precisions and widths other than +``TMilli`` and uint32_t, respectively. Also, alternative ``TimeSyncAMSend`` and +``TimeSyncPacket`` implementations MAY use clock sources other than +``HILTimerMilliC.LocalTime``. + +4. Implementation guidelines +============================================================================ + +Packet-level time synchronization employs the ETA primitives. In this TEP, only +the basics of the time synchronization mechanism are described, for details +please see [1]_. This section presents two possible implementation approaches. +The first approach assumes that the payload of the packet is still mutable when +the transmission time of the packet (e.g. the timestamp of the SFD interrupt) +becomes available. The second approach avoids this assumption and uses the +packet timestamping functionality described in TEP [4]_ to implement packet- +level time synchronization. + +4.1 Approach #1 +---------------------------------------------------------------------------- + +Several transceivers allow for modifying the contents of a packet after packet +transmission is started. Packet-level time synchronization can be implemented +very efficiently on such platforms. + +Transmitter's story + + - When the communications stack services a ``TimeSyncAMSend.send`` command called + with event timestamp ``t_e``, it stores ``t_e`` (e.g. in a map with the pointer + of the message_t as key) and sets the designated timestamp field in the packet + payload to ``0x80000000``. + + - When the packet starts being transmitted over the communication medium, a + corresponding hardware event is timestamped (e.g. an SFD interrupt). Let us + denote this transmission timestamp with ``t_tx``. The difference of event + timestamp ``t_e`` and transmit timestamp ``t_tx`` is written into the + designated timestamp field in the payload of the packet (typically into the + footer, since the first few bytes might have been transmitted by this time). + That is, the information the packet contains at the instance when being sent + over the communications medium is the age of the event (i.e. how much time ago + the event had occurred). + + - If an error occurs with timestamping the transmission or with writing the + package payload after transmission has started, then the designated timestamp + field in the packet payload will contain ``0x80000000``, indicating the error + to the receiver. + +Receiver's story + + - The packet is timestamped with the receiver node's local clock at reception + (e.g. with the timestamp of the SFD interrupt). Let us denote the time of + reception with ``t_rx``. The reception timestamp is stored in the metadata + structure of the ``message_t`` [5]_. + + - When the event time is queried via the ``TimeSyncPacket`` interface, the + ``eventTime`` command returns the sum of the value stored in the designated + timestamp field in packet payload and the reception timestamp, i.e. ``e_t- + e_tx+e_rx``. This value corresponds to the time of the event in the receiver's + local clock. + + - The ``TimeSyncPacket.isValid`` command returns ``FALSE`` if the time + value stored in the payload equals ``0x80000000`` or if the communications + stack failed to timestamp the reception of the packet. Otherwise ``TRUE`` is + returned, which indicates that the value returned by + ``TimeSyncPacket.eventTime`` can be trusted. + + +4.1 Approach #2 +---------------------------------------------------------------------------- + +If a particular platform does not support changing the packet contents after the +synchronization event (start of transmission, SFD interrupt, etc.) had occured, +it is still possible to provide packet-level time synchronization functionality +at the cost of some communication overhead. Such an approach can rely on packet +timestamping TEP [4]_ to implement packet-level time synchronization. + +Transmitter's story + + - When the communications stack services a ``TimeSyncAMSend.send`` command + called with event timestamp ``t_e``, it stores ``t_e`` (e.g. in a map with the + pointer of the message_t as key) and sends the packet. + + - Transmission of the packet is timestamped using the packet timestamping TEP + [4]_ mechanism. Let us denote this transmission timestamp with ``t_tx``. The + difference of event timestamp ``t_e`` and transmit timestamp ``t_tx`` is sent + in an auxilliary packet. That is, the information the auxulary packet contains + is the age of the event at the time when the initial packet was transmitted. + +Receiver's story + + - The packet is timestamped with the receiver node's local clock at reception + (e.g. with the timestamp of the SFD interrupt). Let us denote the time of + reception with ``t_rx``. The reception timestamp is stored in the metadata + structure of the ``message_t`` [5]_. + + - When the auxilliary packet arrives, the time value it carries (``t_e-t_tx``, + the age of the event) is stored in a metadata field of the main packet. The + auxilliary packet is discarded, and the receive event is signalled with the + pointer to the main packet. + + - When the event time is queried via the ``TimeSyncPacket`` interface, the + ``eventTime`` command returns the sum of the value stored in the metadata (age + of the event) and the reception timestamp, i.e. ``e_t- e_tx+e_rx``. This value + corresponds to the time of the event in the receiver's local clock. + + - The ``TimeSyncPacket.isValid`` command returns ``FALSE`` if the communications + stack failed to timestamp the reception of the packet. Otherwise ``TRUE`` is + returned, which indicates that the value returned by + ``TimeSyncPacket.eventTime`` can be trusted. + +5. Reference implementation +---------------------------------------------------------------------------- + +A reference implementation of the packet-level time synchronization mechanism +described in this TEP can be found in ``tinyos-2.x/tos/chips/rf230``. + + +6. Author's Address +============================================================================ + +| Miklos Maroti +| Janos Sallai +| Institute for Software Integrated Systems +| Vanderbilt University +| 2015 Terrace Place +| Nashville, TN 37203 +| phone: +1 (615) 343-7555 + +7. Citations +============================================================================ + +.. [1] Kusy, B., Dutta, P., Levis, P., Maroti, M., Ledeczi, A., Culler, D., Elapsed Time on Arrival: A simple and versatile primitive for canonical time synchronization services. International Journal of Ad hoc and Ubiquitous Computing, Vol, 2, No. 1, 2006. + +.. [2] TEP 116: Packet protocols + +.. [3] TEP 102: Timers + +.. [4] TEP TBA: Packet timestamping + +.. [5] TEP 111: message_t + +.. [6] Maroti, M., Kusy, B., Simon, G., and Ledeczi, A. 2004. The flooding time synchronization protocol. In Proceedings of the 2nd international Conference on Embedded Networked Sensor Systems (Baltimore, MD, USA, November 03 - 05, 2004). ACM SenSys '04. + + -- 2.39.2