precision time protocol on linux precision time protocol on linux ~ introduction to linuxptp author...

49
Ken ICHIKAWA FUJITSU LIMITED. LinuxCon Japan 2014 Precision Time Protocol on Linux ~ Introduction to linuxptp Copyright 2014 FUJITSU LIMITED

Upload: votuyen

Post on 19-Apr-2018

231 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Ken ICHIKAWA

FUJITSU LIMITED.

LinuxCon Japan 2014

Precision Time Protocol on Linux

~ Introduction to linuxptp

Copyright 2014 FUJITSU LIMITED

Page 2: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Agenda

Background

Overview of Precision Time Protocol (PTP)

About PTP on Linux

Tips

For easy trial or development

3 Copyright 2014 FUJITSU LIMITED

Page 3: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Background

Event ordering is very important

for incident analysis, performance analysis and so on

Event ordering is based on timestamps

Timestamps are collected from multiple servers

⇒Clock synchronization is important

If precision and accuracy of clock

synchronization are bad, event ordering can

reverse against actual time

4 Copyright 2014 FUJITSU LIMITED

Server A Server B

Event 1

Event 2

Event 3

Page 4: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

NTP is not enough

NTP provides millisecond level synchronization

Maybe enough for remote machines, but not enough for

locally cooperating machines

Many events occur in a millisecond in multiple servers

⇒Event ordering will frequently reverse

Need another protocol

Higher precision and accuracy

Not need to synchronize large area, but local servers

and devices

5 Copyright 2014 FUJITSU LIMITED

Page 5: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Example of wrong event ordering

6 Copyright 2014 FUJITSU LIMITED

Actual Time

Server A

diff:-1

Server B

diff:+3

Event 1 Event 2 Event 3

2 3 4 5 6 7 8

1 2 3 4 5 6 7

5 6 7 8 9 10 11

Time Event

3 Event 1

5 Event 2

7 Event 3

Time Event

2 Event 1

6 Event 3

8 Event 2

Event Ordering based on Actual Time Event Ordering based on Timestamp

reverse!

time

Page 6: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Example of correct event ordering

based on better clock synchronization

7 Copyright 2014 FUJITSU LIMITED

Actual Time

Server A

diff:-0.001

Server B

diff:+0.003

Event 1 Event 2 Event 3

2 3 4 5 6 7 8

1.999 2.999 3.999 4.999 5.999 6.999 7.999

2.003 3.003 4.003 5.003 6.003 7.003 8.003

Time Event

3 Event 1

5 Event 2

7 Event 3

Time Event

2.999 Event 1

5.003 Event 2

6.999 Event 3

Event Ordering based on Actual Time Event Ordering based on Timestamp

correct!

time

Page 7: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Agenda

Background

Overview of Precision Time Protocol (PTP)

What’s PTP

Term explanation

About packet timestamp

About PTP on Linux

Tips

For easy trial or development

8 Copyright 2014 FUJITSU LIMITED

Page 8: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Precision Time Protocol (PTP)

Standardized protocol, IEEE1588

Synchronize the clocks in local computing systems

and devices

Microsecond to sub-microsecond accuracy and

precision

Administration free

Capability to autonomously decide time server(master)

• called Best Master Clock Algorithm (BMCA)

9 Copyright 2014 FUJITSU LIMITED

Page 9: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Term explanation

10 Copyright 2014 FUJITSU LIMITED

GPS

An example of PTP network

Page 10: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Term explanation

11 Copyright 2014 FUJITSU LIMITED

GPS Grandmaster Clock

(Ordinary Clock)

Original time source for the

PTP network

Typically synchronize its

clock to external time (GPS,

NTP and so on)

End point of PTP network is

called Ordinary Clock

Page 11: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Term explanation

12 Copyright 2014 FUJITSU LIMITED

GPS Boundary Clock

Typically it’s switch

Synchronize its clock to a

master

Serve as a time source to

other (slave) clocks

May become Grandmaster

clock if current Grandmaster

is lost

• Master: serve as a time source

• Slave: synchronize to another

clock

Page 12: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Term explanation

13 Copyright 2014 FUJITSU LIMITED

GPS Slave Clock (Ordinary

Clock)

Synchronize its clock to a

master (to the boundary

clock in this example)

May become Grandmaster

clock if current Grandmaster

is lost

Page 13: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Packet timestamp

Time offset between master

and slave clocks is calculated

based on timestamps at packet

sending and receiving

Packet timestamp accuracy is

important for PTP

15 Copyright 2014 FUJITSU LIMITED

𝑜𝑓𝑓𝑠𝑒𝑡 = 𝑡2 − 𝑡1 −1

2𝑡𝑚𝑠 + 𝑡𝑠𝑚

= 𝑡2 − 𝑡1 −

1

2{ 𝑡4 − 𝑡1 − 𝑡3 − 𝑡2 }

Page 14: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Timestamp timing

Ideally, we want timestamps of the time just

sending (or receiving) packet

But in reality, there is deference between timestamp

timing and packet sending (or receiving) timing

16 Copyright 2014 FUJITSU LIMITED

error

transmit here

timestamp here

no error transmit here

timestamp here

Ideal timestamp timing Real timestamp timing

Page 15: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Type of timestamping

Software timestamping

Timestamp at Application or OS layer

Get time from system clock

Error is relatively huge

17 Copyright 2014 FUJITSU LIMITED

Software Timestamping

OS

MAC PHY

Sys Clock

timestamp

transmit

error

Application

Page 16: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

To Achieve High Precision

Hardware Timestamping

Hardware assisted timestamp at PHY or MAC layer

Get time from PTP Hardware Clock (PHC) on NIC

Minimize error

18 Copyright 2014 FUJITSU LIMITED

OS

MAC PHY

Sys Clock

timestamp

transmit

Software Timestamping Hardware Timestamping

error

Application

OS

MAC PHY

PHC timestamp

transmit

small

error

Application

Page 17: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Agenda

Background

Overview of Precision Time Protocol (PTP)

About PTP on Linux

Kernel features

User-land application: Linuxptp

Tips

For easy trial or development

19 Copyright 2014 FUJITSU LIMITED

Page 18: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Linux kernel assists PTP

The protocol itself is implemented on user-land

Kernel features for PTP

Socket option SO_TIMESTAMPING for packet

timestamping

PHC subsystem

• Allow to access PHC via clock_gettime/settime/adjtime system

calls

Some drivers support Hardware and/or Software

timestamping (e.g. e1000e, igb, ixgbe, and so on)

20 Copyright 2014 FUJITSU LIMITED

Page 19: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

The Linux PTP Project

Project developing user-land applications for PTP

http://linuxptp.sourceforge.net/

Maintainer: Richard Cochran

He has implemented many Linux kernel features for PTP

⇒Linuxptp is reliable and correctly using the kernel

features for PTP

Red Hat, Intel, SUSE, Fujitsu, etc. have been

participating the development

21 Copyright 2014 FUJITSU LIMITED

Page 20: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Linuxptp Applications

ptp4l

Implementation of PTP (Ordinary Clock, Boundary

Clock)

phc2sys

Synchronize two clocks (typically PHC and system clock)

pmc (PTP Management Client)

Send PTP management messages to PTP nodes

22 Copyright 2014 FUJITSU LIMITED

Page 21: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

ptp4l

Implementation of PTP

Ordinary / Boundary clock

Hardware / Software timestamping

Delay request-response / Peer delay mechanism

IEEE 802.3 (Ethernet) / UDP IPv4 / UDP IPv6 network

transport

23 Copyright 2014 FUJITSU LIMITED

Page 22: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

phc2sys

Synchronize two clocks (typically PHC and system

clock)

When you are using Hardware timestamping:

ptp4l adjusts PHC

phc2sys adjusts system clock

24 Copyright 2014 FUJITSU LIMITED

ptp4l adjusts

PHC

phc2sys adjusts

system clock

Page 23: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

How about software timestamping

When you are using Software timestamping:

ptp4l directly adjusts system clock

phc2sys is not needed

25 Copyright 2014 FUJITSU LIMITED

ptp4l adjusts

system clock

Page 24: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Typical usage of ptp4l

# ptp4l –i eth0 –f /etc/ptp4l.conf –s

26 Copyright 2014 FUJITSU LIMITED

Network interface to use

Specify configuration file to use. Otherwise, default configuration is used.

Specify slave only mode. Otherwise, this node can be master.

Start as a slave node

Use eth0 to send/receive messages

Use /etc/ptp4l.conf as configuration file

Page 25: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Observe synchronization of ptp4l

Log is handed over to syslog

Or, you can print it into stdout by using –m option

27 Copyright 2014 FUJITSU LIMITED

ptp4l[537888.171]: selected /dev/ptp3 as PTP clock

ptp4l[537888.173]: port 1: INITIALIZING to LISTENING on INITIALIZE

ptp4l[537888.174]: port 0: INITIALIZING to LISTENING on INITIALIZE

ptp4l[537889.091]: port 1: new foreign master 001999.fffe.807b24-1

ptp4l[537893.091]: selected best master clock 001999.fffe.807b24

ptp4l[537893.091]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE

ptp4l[537894.093]: master offset -3318 s0 freq +0 path delay 600

ptp4l[537895.093]: master offset -3343 s1 freq -8378 path delay 600

ptp4l[537896.093]: master offset -2344 s2 freq -10722 path delay 600

ptp4l[537896.093]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED

ptp4l[537897.093]: master offset -18 s2 freq -9099 path delay 545

ptp4l[537898.093]: master offset 641 s2 freq -8446 path delay 513

ptp4l[537899.093]: master offset 570 s2 freq -8324 path delay 533

ptp4l[537900.093]: master offset 389 s2 freq -8334 path delay 533

Offset between Master and Slave(PHC)

Page 26: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Typical usage of phc2sys

# phc2sys –s eth0 –c CLOCK_REALTIME –w

28 Copyright 2014 FUJITSU LIMITED

By specifying network interface to –s option, related PHC is automatically selected.

Or, you can directly specify PHC like –s /dev/ptp0

Specify the clock you want to adjust. CLOCK_REALTIME is system clock.

Wait until ptp4l’s synchronization.

Adjust system clock based on eth0’s PHC

Wait until ptp4l starts synchronization to the

master

Page 27: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

pmc (PTP Management Client)

Send PTP management messages to PTP nodes

GET action: Get current values of data

SET action: Update current values of variables

CMD action: Initiate some events

PTP management messages are specified in

IEEE1588

Many PTP devices have not supported

management messages yet

Also linuxptp has not supported many SET and CMD

messages yet

29 Copyright 2014 FUJITSU LIMITED

Page 28: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Typical usage of pmc

# pmc –u –b 0 ‘GET CURRENT_DATA_SET’

30 Copyright 2014 FUJITSU LIMITED

Indicate to use Unix Domain Socket. UDS is used to receive PTP management

messages from localhost.

-b specifies allowance number of boundary hops. In this case, management messages is

sent only localhost.

Action and Management ID.

Send a message to localhost’s node

Get values of CURRENT_DATA_SET

Page 29: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

An example of synchronization

between Linux servers

Directly connect two Linux servers (Grandmaster

and Slave)

Use hardware timestamping

31 Copyright 2014 FUJITSU LIMITED

Linux server

(Grandmaster) Linux server

(Slave)

Setup

Page 30: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

An example of synchronization

between Linux servers

The offsets between the PHCs, observed by ptp4l

32 Copyright 2014 FUJITSU LIMITED

max 116 ns

min -89 ns

RMS 31.19 ns

offset (ns)

elapsed time (s)

very stable!

between GM and PHC

-1500

-1000

-500

0

500

1000

1500

1

122

243

364

485

606

727

848

969

1090

1211

1332

1453

1574

1695

1816

1937

2058

2179

2300

2421

2542

2663

2784

2905

Page 31: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Agenda

Background

Overview of Precision Time Protocol (PTP)

About PTP on Linux

Tips

Workaround against bad GM behavior

Improve system clock stability

For easy trial or development

34 Copyright 2014 FUJITSU LIMITED

Page 32: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Bad GM behavior

I encountered a Grandmaster product

The GM sometimes occurs a few hundred

microsecond level errors

35 Copyright 2014 FUJITSU LIMITED

GM product

(Grandmaster) Linux server

(Slave)

Setup

Page 33: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Bad GM behavior

The offsets between the GM and the Linux

server’s PHC, observed by ptp4l

36 Copyright 2014 FUJITSU LIMITED

offset (ns)

elapsed time (s)

max 352129 ns (= 352 us)

min -231644 ns (= -232 us)

RMS 13664.71 ns (= 14 us)

between GM and PHC

-300000

-200000

-100000

0

100000

200000

300000

400000

1

127

253

379

505

631

757

883

1009

1135

1261

1387

1513

1639

1765

1891

2017

2143

2269

2395

2521

2647

2773

2899

Page 34: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

What’s happening?

GM sends a timestamp including huge error

It appears as a huge plus offset

ptp4l changes PHC’s frequency too much

depending on the offset

37 Copyright 2014 FUJITSU LIMITED

offset (ns)

elapsed time (s)

between GM and PHC

-300000

-200000

-100000

0

100000

200000

300000

400000

1

127

253

379

505

631

757

883

1009

1135

1261

1387

1513

1639

1765

1891

2017

2143

2269

2395

2521

2647

2773

2899

Page 35: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

What’s happening?

GM’s next timestamp does not include so much

error

But, PHC’s frequency was changed too much

⇒ A huge minus offset appears against normal GM’s

timetamp

38 Copyright 2014 FUJITSU LIMITED

offset (ns)

elapsed time (s)

between GM and PHC

-300000

-200000

-100000

0

100000

200000

300000

400000

1

127

253

379

505

631

757

883

1009

1135

1261

1387

1513

1639

1765

1891

2017

2143

2269

2395

2521

2647

2773

2899

Page 36: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Observe the influence to PHC

The offsets between PHC and system clock

observed by phc2sys

There are similar offsets

⇒Introduce worse system clock stability

How to avoid this issue?

39 Copyright 2014 FUJITSU LIMITED

offset (ns)

elapsed time (s)

between PHC and sys clock

-300000

-200000

-100000

0

100000

200000

300000

400000

1

127

253

379

505

631

757

883

1009

1135

1261

1387

1513

1639

1765

1891

2017

2143

2269

2395

2521

2647

2773

2899

Page 37: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

ptp4l has servo mechanism

ptp4l has PI (proportional-integral) controller servo

A kind of feedback loop

Determine frequency set to PHC

Kp and Ki are tuning parameters (proportional gain and

integral gain)

40 Copyright 2014 FUJITSU LIMITED

SP = master’s time

PV = slave’s time

e(t) = offset

MV = frequency

Process =

change slave’s clock freq

Figure: Basic block of Proportional + Integral controller. (excerpt from wikipedia)

Page 38: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Tuning sensitivity

Anyway, by tuning the servo parameters, we can

adjust how clock sensitivity react to the offset

To change the configuration, edit ptp4l’s

configuration file

pi_proportional_const for Kp

pi_integral_const for Ki

42 Copyright 2014 FUJITSU LIMITED

Default configuration file is /etc/ptp4l.conf in Fedora

Page 39: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

There are two default configurations

For hardware timestamping

Kp 0.7

Ki 0.3

⇒Sensitive

For software timestamping

Kp 0.1

Ki 0.001

⇒Insensitive

43 Copyright 2014 FUJITSU LIMITED

Previous result used this configuration

Try this one to prevent over-reacting

Page 40: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Use software timestamping config

We tried software timestamping configuration

though ptp4l used hardware timestamping

Minus direction offsets disappeared

PHC’s frequency is not changed too much

44 Copyright 2014 FUJITSU LIMITED

offset (ns)

elapsed time (s)

Minus direction offsets disappeared

between GM and PHC

-120000

-70000

-20000

30000

80000

130000

1

127

253

379

505

631

757

883

1009

1135

1261

1387

1513

1639

1765

1891

2017

2143

2269

2395

2521

2647

2773

2899

Page 41: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Observe from phc2sys

PHC looks stable

⇒system clock will be

also stable

45 Copyright 2014 FUJITSU LIMITED

elapsed time (s)

offset (ns)

Zoom

between PHC and sys clock

-120000

-70000

-20000

30000

80000

130000

1

127

253

379

505

631

757

883

1009

1135

1261

1387

1513

1639

1765

1891

2017

2143

2269

2395

2521

2647

2773

2899

-10000

-8000

-6000

-4000

-2000

0

2000

4000

6000

8000

10000

1

127

253

379

505

631

757

883

1009

1135

1261

1387

1513

1639

1765

1891

2017

2143

2269

2395

2521

2647

2773

2899

Page 42: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Agenda

Background

Overview of Precision Time Protocol (PTP)

About PTP on Linux

Tips

Countermeasure against bad GM behavior

Improve system clock stability

For easy trial or development

46 Copyright 2014 FUJITSU LIMITED

Page 43: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Improve system clock stability

Dynamic ticks make system clock stability worse

Dynamic ticks disable periodic timer tick interrupt

It is a useful feature to power saving but…

Error correction mechanism in kernel doesn’t aware

dynamic ticks

You can disable dynamic ticks

Specify nohz=off in kernel boot option

(nohz=on is default)

47 Copyright 2014 FUJITSU LIMITED

Page 44: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Comparison

48 Copyright 2014 FUJITSU LIMITED

nohz=on

max 9550 ns

min -8134 ns

RMS 1589.3 ns

nohz=off

max 32 ns

min -26 ns

RMS 9.3 ns

The offsets between PHC and system clock,

observed by phc2sys

elapsed time (s)

offset (ns)

1000 times better!

between PHC and sys clock

-8000

-6000

-4000

-2000

0

2000

4000

6000

8000

10000

161

121

181

241

301

361

421

481

541

601

661

721

781

841

901

961

1021

1081

1141

1201

1261

1321

1381

1441

-8000

-6000

-4000

-2000

0

2000

4000

6000

8000

10000

161

121

181

241

301

361

421

481

541

601

661

721

781

841

901

961

1021

1081

1141

1201

1261

1321

1381

1441

Page 45: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Zoom graph of nohz=off

49 Copyright 2014 FUJITSU LIMITED

nohz=off

max 32 ns

min -26 ns

RMS 9.3 ns

elapsed time (s)

Zoom

offset (ns)

between PHC and sys clock

-8000

-6000

-4000

-2000

0

2000

4000

6000

8000

10000

161

121

181

241

301

361

421

481

541

601

661

721

781

841

901

961

1021

1081

1141

1201

1261

1321

1381

1441

-30

-20

-10

0

10

20

30

40

159

117

175

233

291

349

407

465

523

581

639

697

755

813

871

929

987

1045

1103

1161

1219

1277

1335

1393

1451

Page 46: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Attempt to fix the issue on upstream

Miroslav Lichvar and John Stultz are working to fix

the issue

50 Copyright 2014 FUJITSU LIMITED

title author date

1st patch “[PATCH RFC] timekeeping: Fix clock

stability with nohz”

Miroslav Oct 2013

2nd patch “[PATCH] [RFC] timekeeping: Rework

frequency adjustments to work better w/

nohz”

John Jan

2014

3rd patch “[PATCH 0/3] timekeeping: Improved

NOHZ frequency steering”

John Apr 2014

Page 47: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

Agenda

Background

Overview of Precision Time Protocol (PTP)

About PTP on Linux

Tips

Countermeasure against bad GM behavior

Improve system clock stability

For easy trial or development

Try linuxptp on qemu-kvm

51 Copyright 2014 FUJITSU LIMITED

Page 48: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

FYI: Running linuxptp on qemu-kvm

You can try linuxptp on qemu-kvm without NICs

supporting PTP

Note:

Run two Virtual Machines (for GM and Slave)

Recommend to use OS supporting linuxptp

• e.g. recent Fedora, RHEL6.5, 7.0

Use virtual NIC emulating e1000

• e1000 driver supports software timestamping

Don’t forget to define appropriate firewall rules (or

disable firewalls) to allow multi-cast

Don’t expect high precision and accuracy

52 Copyright 2014 FUJITSU LIMITED

Page 49: Precision Time Protocol on Linux Precision Time Protocol on Linux ~ Introduction to linuxptp Author 富士通株式会社 Created Date 5/23/2014 9:39:04 AM

53