One document matched: draft-ietf-avtcore-leap-second-05.xml
<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="no"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-avtcore-leap-second-05" ipr="trust200902"
updates="3550">
<front>
<title abbrev="RTP Leap Seconds">RTP and Leap Seconds</title>
<author fullname="Kevin Gross" initials="K." surname="Gross">
<organization>AVA Networks</organization>
<address>
<postal>
<street/>
<city>Boulder</city>
<region>CO</region>
<country>US</country>
</postal>
<email>kevin.gross@avanw.com</email>
</address>
</author>
<author fullname="Ray van Brandenburg" initials="R."
surname="van Brandenburg">
<organization>TNO</organization>
<address>
<postal>
<street>Brassersplein 2</street>
<city>Delft</city>
<code>2612CT</code>
<country>the Netherlands</country>
</postal>
<phone>+31-88-866-7000</phone>
<email>ray.vanbrandenburg@tno.nl</email>
</address>
</author>
<date day="1" month="October" year="2013"/>
<area>Real-time Applications and Infrastructure</area>
<workgroup>AVTCore</workgroup>
<keyword>Leap second</keyword>
<keyword>RTP</keyword>
<keyword>Real-time Transport Protocol</keyword>
<keyword>NTP</keyword>
<keyword>Network Time Protocol</keyword>
<keyword>UTC</keyword>
<keyword>Universal Coordinated Time</keyword>
<keyword>TAI</keyword>
<keyword>International Atomic Time</keyword>
<keyword>Unix time</keyword>
<abstract>
<t>This document discusses issues that arise when RTP sessions span
Coordinated Universal Time (UTC) leap seconds. It updates RFC 3550 to describe how RTP senders and
receivers should behave in the presence of leap seconds.</t>
</abstract>
</front>
<middle>
<section anchor="intro" title="Introduction">
<t>In some media networking applications, RTP streams are referenced to a wall-clock time
(absolute date and time). This is accomplished through use of
the NTP timestamp field in the RTCP sender report (SR) to create a
mapping between RTP timestamps and the wall clock. When a wall-clock
reference is used, the playout time for RTP packets is referenced to the
wall clock. Smooth and continuous media playout requires a smooth and
continuous time base. The time base used by the wall clock may include leap
seconds which are not rendered smoothly.</t>
<t>This document updates <xref target="RFC3550">RFC 3550</xref> providing recommendations for smoothly rendering
streamed media referenced to common wall clocks which do not have smooth
or continuous behavior in the presence of leap seconds.</t>
</section>
<section title="Terminology">
<t>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 <xref target="RFC2119">RFC 2119</xref>
and indicate requirement levels for compliant implementations.</t>
</section>
<section anchor="background" title="Leap seconds">
<t>The world scientific time standard is International Atomic Time (TAI) which is based on vibrations of cesium atoms in an atomic clock. The world civil time is based on the rotation of the Earth. In 1972 the civil time standard, Coordinated Universal Time (UTC), was redefined in terms of TAI and the concept of leap seconds was introduced to allow UTC to remain synchronized with the rotation of the Earth.</t>
<t>Leap seconds are scheduled
by the International Earth Rotation and Reference Systems Service. Leap seconds may be scheduled at the last day of any month but are preferentially scheduled for
December and June and secondarily March and September.<xref target="TF.460-6"/> Because Earth's rotation is
unpredictable, leap seconds are typically not scheduled more than six
months in advance.</t>
<t>Leap seconds do not respect local time and always occur at the end of the UTC day. Leap seconds can be scheduled to either add or remove
a second from the day. A leap second that adds an extra second is known as a positive leap second. A leap second that skips a second is known as a negative leap second. All leap seconds since their introduction in 1972 have been scheduled in June or December and all have been positive.</t>
<t>NOTE- The ITU is studying a proposal which could eventually eliminate
leap seconds from UTC. As of January 2012, this proposal is expected to
be decided no earlier than 2015.<xref target="ITU-RWP7A"/></t>
<section anchor="UTC" title="UTC behavior during positive leap second">
<t>UTC clocks feature a 61st second at the end of the day when a positive leap
second is scheduled. The leap second is designated "23h 59m 60s".</t>
</section>
<section anchor="NTP" title="NTP behavior during positive leap second">
<t>Under NTP<xref target="RFC5905"/> a leap second is inserted at the
beginning of the last second of the day. This results in the clock
freezing or slowing for one second immediately prior to the last
second of the affected day. This results in the last second of the day
having a real-time duration of two seconds. Timestamp accuracy is compromised during this period because the clock's rate is not well defined.</t>
</section>
<section anchor="POSIX" title="POSIX behavior during positive leap second">
<t>The POSIX standard <xref target="IEEE.1003.1"/> requires that leap seconds be omitted from reported time. All days are defined as having 86,400 seconds but the timebase is defined to be UTC, a leap-second-bearing reference . Implementors of POSIX systems are offered considerable latitude by the standard as to how to map POSIX time to UTC.</t>
<t>In many systems leap seconds are accommodated by repeating the last second of the day. A
timestamp within the last second of the day is therefore ambiguous in
that it can refer to a moment in time in either of the last two seconds of a day
containing a leap second.</t>
<t>Other systems use the same technique used by NTP, freezing or slowing for one second immediately prior to the last
second of the affected day.</t>
<t>In some cases <xref target="I-D.kuhn-leapsecond"/> <xref target="Google"/> leap seconds are accommodated by warping time, slightly altering the length of the second in the vicinity of the leap second.</t>
</section>
<section title="Example of leap-second behaviors">
<t><xref target='Leap-second-behavior'/> illustrates the positive leap second that occurred June 30, 2012 when the offset between International Atomic time (TAI) and UTC changed from 34 to 35 seconds. The first column shows RTP timestamps for an 8 kHz audio stream. The second column shows the TAI reference. Following columns show behavior for the leap-second-bearing wall clocks described above. Time values are shown at half-second intervals.</t>
<texttable anchor='Leap-second-behavior'>
<ttcol align='center'>RTP</ttcol>
<ttcol align='center'>TAI</ttcol>
<ttcol align='center'>UTC</ttcol>
<ttcol align='center'>POSIX</ttcol>
<ttcol align='center'>NTP</ttcol>
<c>8000</c>
<c>00:00:32.500</c>
<c>23:59:58.500</c>
<c>23:59:58.500</c>
<c>23:59:58.500</c>
<c>12000</c>
<c>00:00:33.000</c>
<c>23:59:59.000</c>
<c>23:59:59.000</c>
<c>23:59:59.000</c>
<c>16000</c>
<c>00:00:33.500</c>
<c>23:59:59.500</c>
<c>23:59:59.500</c>
<c>23:59:59.500</c>
<c>20000</c>
<c>00:00:34.000</c>
<c>23:59:60.000</c>
<c>23:59:59.000</c>
<c>00:00:00.000</c>
<c>24000</c>
<c>00:00:34.500</c>
<c>23:59:60.500</c>
<c>23:59:59.500</c>
<c>00:00:00.000</c>
<c>28000</c>
<c>00:00:35.000</c>
<c>00:00:00.000</c>
<c>00:00:00.000</c>
<c>00:00:00.000</c>
<c>32000</c>
<c>00:00:35.500</c>
<c>00:00:00.500</c>
<c>00:00:00.500</c>
<c>00:00:00.500</c>
</texttable>
<t>NOTE- Some NTP implementations do not entirely freeze the clock while the leap second is inserted. Successive calls to retrieve system time return infinitesimally larger (e.g. 1 microsecond or 1 nanosecond larger) time values. This behavior is designed to satisfy assumptions applications may make that time increases monotonically. This behavior occurs in the least-significant bits of the time value and so is not typically visible in the human-readable format shown in the table.</t>
<t>NOTE- POSIX implementations vary. The implementation shown here repeats the last second of the affected day. Other implementations mirror NTP behavior or alter the length of a second in the vicinity of the leap second.</t>
</section>
</section>
<section title="Receiver behavior during leap second">
<t>Timestamps generated during a leap second may be ambiguous or interpreted differently by sender and receiver or interpreted differently by different receivers.</t>
<t>Without prior knowledge
of leap-second schedule, NTP servers and clients may become offset by
exactly one second with respect to their UTC reference. This potential
discrepancy begins when a leap second occurs and ends when all
participants receive a time update from a server or peer. Depending on
the system implementation, the offset can last anywhere from a few
seconds to a few days. A long-lived discrepancy can be particularly
disruptive to RTP operation.</t>
<t>These discrepancies, depending on direction, may cause receivers to think they are receiving RTP packets after they should be played or to attempt to buffer received data an additional second before playing it. Either situation can cause an interruption in playback. Some receivers may automatically recognize an unexpected offset and resynchronize to the stream to accommodate it. Once the offset is resolved, such receivers may need to resynchronize again.</t>
</section>
<section title="Recommendations">
<t>Senders and receivers which are not referenced to a wall clock are not
affected by issues associated with leap seconds and no special
accommodation is required.</t>
<t>RTP implementation using a wall-clock reference is simplified by using
a clock with a timescale which does not include leap seconds. IEEE
1588,<xref target="IEEE1588-2008"/> GPS <xref target="IS-GPS-200F"/> and
other TAI <xref target="CircularT"/>
references do not include leap seconds. NTP time, operating system
clocks and other UTC references include
leap seconds.</t>
<t>All participants working to a leap-second-bearing reference SHOULD
recognize leap seconds and have a working communications channel to
receive notification of leap-second scheduling. Note that a working communication channel includes a protocol means of notifying clocks of an impending leap second such as the Leap Indicator in the NTP header <xref target="RFC5905"/> but also a means for top-tier clocks to receive leap-second schedule information published by the International Earth Rotation and Reference Systems Service.</t>
<t>Because of the timestamp ambiguity, positive leap seconds can introduce and the
inconsistent manner in which different systems accommodate positive leap seconds,
generating or using NTP timestamps during the entire last second of a
day on which a positive leap second has been scheduled SHOULD be avoided. Note
that the period to be avoided has a real-time duration of two
seconds. In the <xref target='Leap-second-behavior'/> example, the region to be avoided is indicated by RTP timestamps 12000 through 28000</t>
<t>Negative leap seconds do not introduce timestamp ambiguity or other complications. No special treatment is needed to avoid ambiguity with respect to RTP timestamps in the presence of a negative leap second.</t>
<t>POSIX clocks which use the a warping technique to accommodate leap seconds (e.g. <xref target="I-D.kuhn-leapsecond"/> <xref target="Google"/>) are not a good choice for an interoperable timestamp reference and SHOULD be avoided for this application.</t>
<section anchor="reports"
title="RTP Sender Reports">
<t>RTP Senders working to a leap-second-bearing reference SHOULD NOT
generate sender reports containing an originating NTP timestamp in the
vicinity of a positive leap second. To maintain a consistent RTCP schedule and avoid the risk of unintentional timeouts, such senders MAY send receiver reports in place of sender reports in the vicinity of the leap second.</t>
<t>For the purpose of suspending sender reports in the vicinity of a leap second, senders MAY assume a positive leap second occurs at the end of the last day of every month.</t>
<t>Receivers working to a leap-second-bearing reference SHOULD ignore timestamps in any
sender reports generated in the vicinity of a positive leap second.</t>
<t>For the purpose of ignoring sender reports in the vicinity of a leap second, receivers MAY assume a positive leap second occurs at the end of the last day of every month.</t>
</section>
<section anchor="playout" title="RTP Packet Playout">
<t>Receivers working to a leap-second-bearing reference SHOULD take
both positive and negative leap seconds in the reference into account in determining playout
time based on RTP timestamps for data in RTP packets.</t>
</section>
</section>
<section anchor="security" title="Security Considerations">
<t>RTP streams using a wall-clock reference as discussed here present an additional attack vector compared to self-clocking streams. Manipulation of the wall clock at either sender or receiver can potentially disrupt streaming.</t>
<t>For an RTP stream operating to an leap-second-bearing reference to operate reliably across a leap second, sender and receive must both be aware of the leap second. It is possible to disrupt a stream by blocking or delaying leap second notification to one of the participants. Streaming can be similarly affected if one of the participants can be tricked into believing a leap second has been scheduled where there is not one. These vulnerabilities are present in <xref target="RFC3550">RFC 3550</xref> and these new recommendations neither heighten or diminish them. Integrity of the leap second schedule is the responsibility of the operating system and time distribution mechanism both of which are outside the scope of <xref target="RFC3550">RFC 3550</xref> and these recommendations.</t>
</section>
<section anchor="IANA" title="IANA Considerations">
<t>This document has no actions for IANA.</t>
</section>
<section title="Acknowledgements">
<t>The authors would like to thank Steve Allen for his valuable comments
in helping to improve this document.</t>
</section>
</middle>
<back>
<references title="Normative References">
<?rfc include="reference.RFC.3550"?>
<?rfc include="reference.RFC.2119"?>
</references>
<references title="Informative References">
<reference anchor="IEEE.1003.1">
<front>
<title>Portable Operating System Interface (POSIX)</title>
<author>
<organization>Institute of Electrical and Electronics Engineers</organization>
</author>
<date year="2008"/>
</front>
<seriesInfo name="IEEE" value="Standard 1003.1"/>
</reference>
<reference anchor="Google" target="http://googleblog.blogspot.com/2011/09/time-technology-and-leaping-seconds.html">
<front>
<title>Time, technology and leaping seconds</title>
<author fullname="">
<organization>Google, Inc.</organization>
</author>
<date day="15" month="September" year="2011"/>
</front>
</reference>
<?rfc include="reference.I-D.kuhn-leapsecond"?>
<reference anchor="TF.460-6">
<front>
<title>Recommendation ITU-R TF.460-6 - Standard-frequency and time-signal emissions</title>
<author fullname="">
<organization>ITU-R</organization>
</author>
<date day="28" month="February" year="2002"/>
</front>
</reference>
<reference anchor="ITU-RWP7A">
<front>
<title>Question SG07.236</title>
<author fullname="">
<organization>ITU-R Working Party 7A</organization>
</author>
<date day="3" month="February" year="2012"/>
</front>
</reference>
<?rfc include="reference.RFC.5905"?>
<reference anchor="IEEE1588-2008">
<front>
<title>IEEE Standard for a Precision Clock Synchronization Protocol
for Networked Measurement and Control Systems</title>
<author>
<organization>IEEE</organization>
</author>
<date day="24" month="July" year="2008"/>
</front>
</reference>
<reference anchor="IS-GPS-200F">
<front>
<title>Navstar GPS Space Segment/Navigation User Segment
Interfaces</title>
<author>
<organization>Global Positioning Systems
Directorate</organization>
</author>
<date day="21" month="September" year="2011"/>
</front>
</reference>
<reference anchor="CircularT">
<front>
<title>Circular T</title>
<author>
<organization>BIPM</organization>
</author>
<date day="9" month="May" year="2012"/>
</front>
</reference>
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-23 20:34:42 |