summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc7164.txt
blob: 59212a47a5b0a1971cdacc7c4ca45ca79e6e8892 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
Internet Engineering Task Force (IETF)                          K. Gross
Request for Comments: 7164                                  AVA Networks
Updates: 3550                                         R. van Brandenburg
Category: Standards Track                                            TNO
ISSN: 2070-1721                                               March 2014


                          RTP and Leap Seconds

Abstract

   This document discusses issues that arise when RTP sessions span
   Coordinated Universal Time (UTC) leap seconds.  It updates RFC 3550
   by describing how RTP senders and receivers should behave in the
   presence of leap seconds.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc7164.

Copyright Notice

   Copyright (c) 2014 IETF Trust and the persons identified as the
   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.







Gross & van Brandenburg      Standards Track                    [Page 1]
^L
RFC 7164                  RTP and Leap Seconds                March 2014


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   2
   3.  Leap Seconds  . . . . . . . . . . . . . . . . . . . . . . . .   2
     3.1.  UTC Behavior during a Positive Leap Second  . . . . . . .   3
     3.2.  NTP Behavior during a Positive Leap Second  . . . . . . .   3
     3.3.  POSIX Behavior during a Positive Leap Second  . . . . . .   3
     3.4.  Example of Leap-Second Behaviors  . . . . . . . . . . . .   4
   4.  Receiver Behavior during a Leap Second  . . . . . . . . . . .   5
   5.  Recommendations . . . . . . . . . . . . . . . . . . . . . . .   5
     5.1.  Sender Reports  . . . . . . . . . . . . . . . . . . . . .   6
     5.2.  RTP Packet Playout  . . . . . . . . . . . . . . . . . . .   7
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .   7
   7.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .   8
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   8
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .   8
     8.2.  Informative References  . . . . . . . . . . . . . . . . .   8

1.  Introduction

   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 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 that are not rendered
   smoothly.

   This document updates RFC 3550 [1] by providing recommendations for
   smoothly rendering streamed media referenced to common wall clocks
   that do not have smooth or continuous behavior in the presence of
   leap seconds.

2.  Terminology

   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 [2] and
   indicate requirement levels for compliant implementations.

3.  Leap Seconds

   The world's scientific time standard is International Atomic Time
   (TAI), which is based on vibrations of cesium atoms in an atomic
   clock.  The world's civil time is based on the rotation of the Earth.



Gross & van Brandenburg      Standards Track                    [Page 2]
^L
RFC 7164                  RTP and Leap Seconds                March 2014


   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.

   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 [6].  Because Earth's
   rotation is unpredictable, leap seconds are typically not scheduled
   more than six months in advance.

   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.

   Since their introduction in 1972, all leap seconds have been
   scheduled in June or December, and they have all been positive.

   NOTE: The ITU is studying a proposal that could eventually eliminate
   leap seconds from UTC.  As of January 2012, this proposal is expected
   to be decided no earlier than 2015 [7].

3.1.  UTC Behavior during a Positive Leap Second

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

3.2.  NTP Behavior during a Positive Leap Second

   Under NTP [8], 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.

3.3.  POSIX Behavior during a Positive Leap Second

   The POSIX (Portable Operating System Interface) standard [3] 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.



Gross & van Brandenburg      Standards Track                    [Page 3]
^L
RFC 7164                  RTP and Leap Seconds                March 2014


   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.

   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.

   In some cases, leap seconds are accommodated by warping time [5] [4];
   that is, the length of the second in the vicinity of a leap second is
   slightly altered.

3.4.  Example of Leap-Second Behaviors

   Table 1 illustrates the positive leap second that occurred June 30,
   2012 when the offset between 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.  The following
   columns show behavior for the leap-second-bearing wall clocks
   described above.  Time values are shown at half-second intervals.

   +-------+--------------+--------------+--------------+--------------+
   |  RTP  |     TAI      |     UTC      |    POSIX     |     NTP      |
   +-------+--------------+--------------+--------------+--------------+
   |  8000 | 00:00:32.500 | 23:59:58.500 | 23:59:58.500 | 23:59:58.500 |
   | 12000 | 00:00:33.000 | 23:59:59.000 | 23:59:59.000 | 23:59:59.000 |
   | 16000 | 00:00:33.500 | 23:59:59.500 | 23:59:59.500 | 23:59:59.500 |
   | 20000 | 00:00:34.000 | 23:59:60.000 | 23:59:59.000 | 00:00:00.000 |
   | 24000 | 00:00:34.500 | 23:59:60.500 | 23:59:59.500 | 00:00:00.000 |
   | 28000 | 00:00:35.000 | 00:00:00.000 | 00:00:00.000 | 00:00:00.000 |
   | 32000 | 00:00:35.500 | 00:00:00.500 | 00:00:00.500 | 00:00:00.500 |
   +-------+--------------+--------------+--------------+--------------+

                  Table 1: Positive Leap-Second Behavior

   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.







Gross & van Brandenburg      Standards Track                    [Page 4]
^L
RFC 7164                  RTP and Leap Seconds                March 2014


   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.

4.  Receiver Behavior during a Leap Second

   Timestamps generated during a leap second may be ambiguous or
   interpreted differently by a sender and receiver or interpreted
   differently by different receivers.

   Without prior knowledge of the 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 operation of NTP-
   referenced RTP streams.

   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.

5.  Recommendations

   Senders and receivers that are not referenced to a wall clock are not
   affected by issues associated with leap seconds, and no special
   accommodation is required.

   RTP implementation using a wall-clock reference is simplified by
   using a clock with a timescale that does not include leap seconds.
   IEEE 1588 [9], GPS [10], and other systems that use a TAI [11]
   reference do not include leap seconds.  NTP time, operating system
   clocks, and other systems using a UTC reference include leap seconds.

   Note that some TAI-based systems such as IEEE 1588 and GPS, in
   addition to the TAI reference clock, deliver TAI to UTC mapping
   information.  By combining the delivered TAI reference clock and the
   mapping information, some receivers of these systems are able to
   synthesize a leap-second-bearing UTC reference clock.  For the
   purposes of this document, it is important to recognize that it is
   the timescale used, not the delivery mechanism that determines
   whether a reference clock is leap-second bearing.



Gross & van Brandenburg      Standards Track                    [Page 5]
^L
RFC 7164                  RTP and Leap Seconds                March 2014


     +-------------------------+---------------------+---------------+
     | Reference clock type    | Examples            | Accommodation |
     +-------------------------+---------------------+---------------+
     | None                    | Self clocking       | None needed   |
     | Non-leap-second-bearing | IEEE 1588, GPS, TAI | None needed   |
     | Leap-second-bearing     | NTP                 | Recommended   |
     +-------------------------+---------------------+---------------+

                     Table 2: Recommendations Summary

   All participants generating or consuming timestamps associated with a
   leap-second-bearing reference MUST recognize leap seconds and SHOULD
   have a working communications channel to receive notifications of
   leap-second scheduling.  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 [8] and also a means for top-
   tier clocks to receive leap-second schedule information published by
   the International Earth Rotation and Reference Systems Service [12].

   Such a communications channel may not be available on all networks.
   For security or other reasons, leap-second schedules may be
   configured manually for some networks or clocks.  When a device does
   not reliably receive leap-second scheduling information, failures as
   described in Section 4 may occur.

   Because of the timestamp ambiguity that 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 Table 1
   example, the region to be avoided is indicated by RTP timestamps
   12000 through 28000

   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.

   POSIX clocks that use a warping technique to accommodate leap seconds
   (e.g., [4] [5]) are not a good choice for an interoperable timestamp
   reference and SHOULD not be used to timestamp RTP streams.

5.1.  Sender Reports

   In order to avoid generating or using NTP timestamps during positive
   leap seconds, RTP senders and receivers need to avoid sending or
   using sender reports to synchronize their clocks in the vicinity of a



Gross & van Brandenburg      Standards Track                    [Page 6]
^L
RFC 7164                  RTP and Leap Seconds                March 2014


   leap second and instead rely on their internal clocks to maintain
   synchronization until the leap second has passed.

   RTP Senders using a leap-second-bearing reference for timestamps
   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.

   For the purpose of suspending sender reports in the vicinity of a
   leap second, senders MAY assume that a positive leap second occurs at
   the end of the last day of every month.

   Receivers consuming leap-second-bearing timestamps SHOULD ignore
   timestamps in any sender reports generated in the vicinity of a
   positive leap second.

   For the purpose of ignoring sender reports in the vicinity of a leap
   second, receivers MAY assume that a positive leap second occurs at
   the end of the last day of every month.

5.2.  RTP Packet Playout

   Receivers consuming leap-second-bearing timestamps SHOULD take both
   positive and negative leap seconds in the reference into account to
   determine the playout time based on RTP timestamps for data in RTP
   packets.

6.  Security Considerations

   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 the sender or receiver can
   potentially disrupt streaming.

   For an RTP stream operating to a leap-second-bearing reference to
   operate reliably across a leap second, the sender and receiver 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 RFC 3550 [1] and these new recommendations neither heighten nor
   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 RFC 3550 [1] and
   these recommendations.



Gross & van Brandenburg      Standards Track                    [Page 7]
^L
RFC 7164                  RTP and Leap Seconds                March 2014


7.  Acknowledgements

   The authors would like to thank Steve Allen for his valuable comments
   that helped to improve this document.

8.  References

8.1.  Normative References

   [1]   Schulzrinne, H., Casner, S., Frederick, R., and V.  Jacobson,
         "RTP: A Transport Protocol for Real-Time Applications", STD 64,
         RFC 3550, July 2003.

   [2]   Bradner, S., "Key words for use in RFCs to Indicate Requirement
         Levels", BCP 14, RFC 2119, March 1997.

8.2.  Informative References

   [3]   IEEE, "Portable Operating System Interface (POSIX)", IEEE
         Standard 1003.1-2008, December 2008,
         <http://standards.ieee.org/findstds/standard/1003.1-2008.html>.

   [4]   Google, Inc., "Time, technology and leaping seconds", September
         2011, <http://googleblog.blogspot.com/2011/09/
         time-technology-and-leaping-seconds.html>.

   [5]   Kuhn, M., "Coordinated Universal Time with Smoothed Leap
         Seconds (UTC-SLS)", Work in Progress, January 2006.

   [6]   ITU, "Standard-frequency and time-signal emissions", ITU-R
         TF.460-6, February 2002,
         <http://www.itu.int/rec/R-REC-TF.460/>.

   [7]   ITU, "The future of the UTC time scale", Question ITU-R 236/7,
         February 2012, <http://www.itu.int/pub/R-QUE-SG07.236-2001>.

   [8]   Mills, D., Martin, J., Burbank, J., and W. Kasch, "Network Time
         Protocol Version 4: Protocol and Algorithms Specification", RFC
         5905, June 2010.

   [9]   IEEE, "IEEE Standard for a Precision Clock Synchronization
         Protocol for Networked Measurement and Control Systems", IEEE
         Standard 1588-2008, July 2008,
         <http://standards.ieee.org/findstds/standard/1588-2008.html>.







Gross & van Brandenburg      Standards Track                    [Page 8]
^L
RFC 7164                  RTP and Leap Seconds                March 2014


   [10]  Global Positioning Systems Directorate, "Systems Engineering &
         Integration Interface Specification", September 2011,
         <http://www.navcen.uscg.gov/pdf/IS-GPS-200F.pdf>.

   [11]  Bureau International des Poids et Mesures, "International
         Atomic Time", Navstar GPS Space Segment/Navigation User Segment
         Interfaces IS-GPS-200,
         <http://www.bipm.org/en/scientific/tai/tai.html>.

   [12]  IERS Earth Orientation Centre, "Bulletin C - Product metadata",
         <http://datacenter.iers.org/web/guest/eop/-/somos/5Rgv/
         product/16>.

Authors' Addresses

   Kevin Gross
   AVA Networks
   Boulder, CO
   US

   EMail: kevin.gross@avanw.com


   Ray van Brandenburg
   TNO
   Brassersplein 2
   Delft  2612CT
   the Netherlands

   Phone: +31-88-866-7000
   EMail: ray.vanbrandenburg@tno.nl




















Gross & van Brandenburg      Standards Track                    [Page 9]
^L