blob: f1154666de980011a83928af0f1210156058a23e [file] [log] [blame]
Luis Farias9d66fca2020-05-28 19:01:58 -07001.. Copyright (c) 2019 Intel
2..
3.. Licensed under the Apache License, Version 2.0 (the "License");
4.. you may not use this file except in compliance with the License.
5.. You may obtain a copy of the License at
6..
7.. http://www.apache.org/licenses/LICENSE-2.0
8..
9.. Unless required by applicable law or agreed to in writing, software
10.. distributed under the License is distributed on an "AS IS" BASIS,
11.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12.. See the License for the specific language governing permissions and
13.. limitations under the License.
14
Luis Farias9d66fca2020-05-28 19:01:58 -070015
Luis Farias2de97522022-03-17 20:01:53 -070016PTP Configuration
Luis Farias9d66fca2020-05-28 19:01:58 -070017=================
18
Luis Farias2de97522022-03-17 20:01:53 -070019PTP Synchronization
20===================
Luis Farias9d66fca2020-05-28 19:01:58 -070021
Luis Farias2de97522022-03-17 20:01:53 -070022Precision Time Protocol (PTP) provides an efficient way to synchronize
23time on the network nodes. This protocol uses Master-Slave architecture.
24Grandmaster Clock (Master) is a reference clock for the other nodes,
25which adapt their clocks to the master.
26
27Using Physical Hardware Clock (PHC) from the Grandmaster Clock, NIC port
28precision timestamp packets can be served for other network nodes. Slave
29nodes adjust their PHC to the master following the IEEE 1588
Luis Farias9d66fca2020-05-28 19:01:58 -070030specification.
31
32There are existing implementations of PTP protocol that are widely used
33in the industry. One of them is PTP for Linux, which is a set of tools
34providing necessary PTP functionality. There is no need to re-implement
35the 1588 protocol because PTP for Linux is precise and efficient enough
36to be used out of the box.
37
Luis Farias2de97522022-03-17 20:01:53 -070038To meet O-RAN requirements, two tools from PTP for Linux package are
Luis Farias9d66fca2020-05-28 19:01:58 -070039required: ptp4l and phc2sys.
40
41PTP for Linux\* Requirements
Luis Farias2de97522022-03-17 20:01:53 -070042============================
Luis Farias9d66fca2020-05-28 19:01:58 -070043
44PTP for Linux\* introduces some software and hardware requirements. The
45machine on which the tools will be run needs to use at least a 3.10
Luis Farias2de97522022-03-17 20:01:53 -070046Kernel version (built-in PTP support). Several Kernel options need to be
47enabled in Kernel configuration:
Luis Farias9d66fca2020-05-28 19:01:58 -070048
49- CONFIG_PPS
50
51- CONFIG_NETWORK_PHY_TIMESTAMPING
52
53- PTP_1588_CLOCK
54
55Be sure that the Kernel is compiled with these options.
56
57For the best precision, PTP uses hardware timestamping. NIC has its own
Luis Farias2de97522022-03-17 20:01:53 -070058clock, called Physical Hardware Clock (PHC), to read current time just a
Luis Farias9d66fca2020-05-28 19:01:58 -070059moment before the packet is sent to minimalize the delays added by the
60Kernel processing the packet. Not every NIC supports that feature. To
61confirm that currently attached NIC support Hardware Timestamps, use
Luis Farias892daba2022-06-22 13:59:47 -070062ethtool with the command:
Luis Farias9d66fca2020-05-28 19:01:58 -070063
Luis Farias892daba2022-06-22 13:59:47 -070064ethtool -T eth0
Luis Farias9d66fca2020-05-28 19:01:58 -070065
Luis Farias2de97522022-03-17 20:01:53 -070066Where the eth0 is the potential PHC port. The output from the command
67should say that there is Hardware Timestamps support.
Luis Farias9d66fca2020-05-28 19:01:58 -070068
69To set up PTP for Linux*:
70
711.Download source code::
72
73 git clone http://git.code.sf.net/p/linuxptp/code linuxptp
Luis Farias9d66fca2020-05-28 19:01:58 -070074 git checkout v2.0
75
Luis Farias2de97522022-03-17 20:01:53 -070076*Note* Apply patch (this is required to work around an issue with some of the GM PTP packet sizes.) ::
Luis Farias9d66fca2020-05-28 19:01:58 -070077
78 diff --git a/msg.c b/msg.c
Luis Farias9d66fca2020-05-28 19:01:58 -070079 old mode 100644
Luis Farias9d66fca2020-05-28 19:01:58 -070080 new mode 100755
Luis Farias9d66fca2020-05-28 19:01:58 -070081 index d1619d4..40d1538
Luis Farias9d66fca2020-05-28 19:01:58 -070082 --- a/msg.c
Luis Farias9d66fca2020-05-28 19:01:58 -070083 +++ b/msg.c
Luis Farias2de97522022-03-17 20:01:53 -070084 @@ -399,9 +399,11 @@ int msg_post_recv(struct ptp_message *m, int cnt)
Luis Farias9d66fca2020-05-28 19:01:58 -070085 port_id_post_recv(&m->pdelay_resp.requestingPortIdentity);
Luis Farias9d66fca2020-05-28 19:01:58 -070086 break;
Luis Farias9d66fca2020-05-28 19:01:58 -070087 case FOLLOW_UP:
Luis Farias9d66fca2020-05-28 19:01:58 -070088 + cnt -= 4;
Luis Farias9d66fca2020-05-28 19:01:58 -070089 timestamp_post_recv(m, &m->follow_up.preciseOriginTimestamp);
Luis Farias9d66fca2020-05-28 19:01:58 -070090 break;
Luis Farias9d66fca2020-05-28 19:01:58 -070091 case DELAY_RESP:
Luis Farias9d66fca2020-05-28 19:01:58 -070092 + cnt -= 4;
Luis Farias9d66fca2020-05-28 19:01:58 -070093 timestamp_post_recv(m, &m->delay_resp.receiveTimestamp);
Luis Farias9d66fca2020-05-28 19:01:58 -070094 port_id_post_recv(&m->delay_resp.requestingPortIdentity);
Luis Farias9d66fca2020-05-28 19:01:58 -070095 break;
96
Luis Farias2de97522022-03-17 20:01:53 -0700972. Build and install ptp41. ::
Luis Farias9d66fca2020-05-28 19:01:58 -070098
99 # make && make install
100
Luis Farias892daba2022-06-22 13:59:47 -07001013. Modify configs/default.cfg to control frequency of Sync interval to
1020.0625 s. ::
Luis Farias9d66fca2020-05-28 19:01:58 -0700103
Luis Farias892daba2022-06-22 13:59:47 -0700104 logSyncInterval -4
Luis Farias9d66fca2020-05-28 19:01:58 -0700105
106ptp4l
Luis Farias2de97522022-03-17 20:01:53 -0700107=====
Luis Farias9d66fca2020-05-28 19:01:58 -0700108
109This tool handles all PTP traffic on the provided NIC port and updated
Luis Farias2de97522022-03-17 20:01:53 -0700110PHC. It also determines the Grandmaster Clock and tracks synchronization
Luis Farias9d66fca2020-05-28 19:01:58 -0700111status. This tool can be run as a daemon or as a regular Linux\*
112application. When the synchronization is reached, it gives output on the
113screen for precision tracking. The configuration file of ptp4l contains
114many options that can be set to get the best synchronization precision.
Luis Farias2de97522022-03-17 20:01:53 -0700115Although, even with default.cfg the synchronization quality is
116excellent.
Luis Farias9d66fca2020-05-28 19:01:58 -0700117
118To start the synchronization process run::
119
120 cd linuxptp
Luis Farias9d66fca2020-05-28 19:01:58 -0700121 ./ptp4l -f ./configs/default.cfg -2 -i <if_name> -m
122
Luis Farias2de97522022-03-17 20:01:53 -0700123The output below shows what the output on non-master node should look
Luis Farias9d66fca2020-05-28 19:01:58 -0700124like when synchronization is started. This means that PHC on this
Luis Farias2de97522022-03-17 20:01:53 -0700125machine is synchronized to the master PHC. ::
Luis Farias9d66fca2020-05-28 19:01:58 -0700126
Luis Farias892daba2022-06-22 13:59:47 -0700127 ptp4l[1434165.358]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE
128 ptp4l[1434165.358]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE
Luis Farias2de97522022-03-17 20:01:53 -0700129 ptp4l[1434166.384]: port 1: new foreign master fcaf6a.fffe.029708-1
130 ptp4l[1434170.352]: selected best master clock fcaf6a.fffe.029708
Luis Farias892daba2022-06-22 13:59:47 -0700131 ptp4l[1434170.352]: updating UTC offset to 37
132 ptp4l[1434170.352]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE
Luis Farias2de97522022-03-17 20:01:53 -0700133 ptp4l[1434171.763]: master offset -5873 s0 freq -18397 path delay 2778
134 ptp4l[1434172.763]: master offset -6088 s2 freq -18612 path delay 2778
135 ptp4l[1434172.763]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED
136 ptp4l[1434173.763]: master offset -5886 s2 freq -24498 path delay 2732
137 ptp4l[1434174.763]: master offset 221 s2 freq -20157 path delay 2728
138 ptp4l[1434175.763]: master offset 1911 s2 freq -18401 path delay 2724
139 ptp4l[1434176.763]: master offset 1774 s2 freq -17964 path delay 2728
140 ptp4l[1434177.763]: master offset 1198 s2 freq -18008 path delay 2728
141 ptp4l[1434178.763]: master offset 746 s2 freq -18101 path delay 2755
142 ptp4l[1434179.763]: master offset 218 s2 freq -18405 path delay 2792
143 ptp4l[1434180.763]: master offset 103 s2 freq -18454 path delay 2792
144 ptp4l[1434181.763]: master offset -13 s2 freq -18540 path delay 2813
145 ptp4l[1434182.763]: master offset 9 s2 freq -18521 path delay 2813
146 ptp4l[1434183.763]: master offset 11 s2 freq -18517 path delay 2813
Luis Farias9d66fca2020-05-28 19:01:58 -0700147
148phc2sys
Luis Farias2de97522022-03-17 20:01:53 -0700149=======
Luis Farias9d66fca2020-05-28 19:01:58 -0700150
151The PHC clock is independent from the system clock. Synchronizing only
Luis Farias2de97522022-03-17 20:01:53 -0700152PHC does not make the system clock exactly the same as the master. The
Luis Farias9d66fca2020-05-28 19:01:58 -0700153xRAN library requires use of the system clock to determine a common
Luis Farias70d9d922020-08-11 16:05:37 -0700154point in time on two machines (O-DU and RU) to start transmission at the
Luis Farias2de97522022-03-17 20:01:53 -0700155same moment and keep time frames defined by O-RAN Fronthaul
156specification.
Luis Farias9d66fca2020-05-28 19:01:58 -0700157
158This application keeps the system clock updated to PHC. It makes it
159possible to use POSIX timers as a time reference in xRAN application.
160
161Run phc2sys with the command::
162
163 cd linuxptp
Luis Farias9d66fca2020-05-28 19:01:58 -0700164 ./phc2sys -s enp25s0f0 -w -m -R 8
165
166Command output will look like::
167
168 ptp4l[1434165.342]: selected /dev/ptp4 as PTP
Luis Farias2de97522022-03-17 20:01:53 -0700169 phc2sys[1434344.651]: CLOCK_REALTIME phc offset 450 s2 freq -39119 delay 1354
170 phc2sys[1434344.776]: CLOCK_REALTIME phc offset 499 s2 freq -38620 delay 1344
171 phc2sys[1434344.902]: CLOCK_REALTIME phc offset 485 s2 freq -38484 delay 1347
172 phc2sys[1434345.027]: CLOCK_REALTIME phc offset 476 s2 freq -38348 delay 1346
173 phc2sys[1434345.153]: CLOCK_REALTIME phc offset 392 s2 freq -38289 delay 1340
174 phc2sys[1434345.278]: CLOCK_REALTIME phc offset 319 s2 freq -38244 delay 1340
175 phc2sys[1434345.404]: CLOCK_REALTIME phc offset 278 s2 freq -38190 delay 1349
176 phc2sys[1434345.529]: CLOCK_REALTIME phc offset 221 s2 freq -38163 delay 1343
177 phc2sys[1434345.654]: CLOCK_REALTIME phc offset 97 s2 freq -38221 delay 1342
178 phc2sys[1434345.780]: CLOCK_REALTIME phc offset 67 s2 freq -38222 delay 1344
179 phc2sys[1434345.905]: CLOCK_REALTIME phc offset 68 s2 freq -38201 delay 1341
180 phc2sys[1434346.031]: CLOCK_REALTIME phc offset 104 s2 freq -38144 delay 1340
181 phc2sys[1434346.156]: CLOCK_REALTIME phc offset 58 s2 freq -38159 delay 1340
182 phc2sys[1434346.281]: CLOCK_REALTIME phc offset 12 s2 freq -38188 delay 1343
183 phc2sys[1434346.407]: CLOCK_REALTIME phc offset -36 s2 freq -38232 delay 1342
184 phc2sys[1434346.532]: CLOCK_REALTIME phc offset -103 s2 freq -38310 delay 1348
Luis Farias9d66fca2020-05-28 19:01:58 -0700185
186Configuration C3
Luis Farias2de97522022-03-17 20:01:53 -0700187================
Luis Farias9d66fca2020-05-28 19:01:58 -0700188
189Configuration C3 27 can be simulated for O-DU using a separate server
190acting as Fronthaul Network and O-RU at the same time. O-RU server can
Luis Farias2de97522022-03-17 20:01:53 -0700191be configured to relay PTP and act as PTP master for O-DU. Settings
Luis Farias70d9d922020-08-11 16:05:37 -0700192below can be used to instantiate this scenario. The difference is that
Luis Farias9d66fca2020-05-28 19:01:58 -0700193on the O-DU side, the Fronthaul port can be used as the source of PTP as
194well as for U-plane and C-plane traffic.
195
Luis Farias892daba2022-06-22 13:59:47 -07001961. Follow the steps in Appendix *B.1.1, PTP for Linux\* Requirements* to
197install PTP on the O-RU server.
Luis Farias9d66fca2020-05-28 19:01:58 -0700198
Luis Farias892daba2022-06-22 13:59:47 -07001992. Copy configs/default.cfg to configs/default_slave.cfg and modify the
200copied file as below::
Luis Farias9d66fca2020-05-28 19:01:58 -0700201
202 diff --git a/configs/default.cfg b/configs/default.cfg
Luis Farias9d66fca2020-05-28 19:01:58 -0700203 old mode 100644
Luis Farias9d66fca2020-05-28 19:01:58 -0700204 new mode 100755
Luis Farias9d66fca2020-05-28 19:01:58 -0700205 index e23dfd7..f1ecaf1
Luis Farias9d66fca2020-05-28 19:01:58 -0700206 --- a/configs/default.cfg
Luis Farias9d66fca2020-05-28 19:01:58 -0700207 +++ b/configs/default.cfg
Luis Farias9d66fca2020-05-28 19:01:58 -0700208 @@ -3,26 +3,26 @@
Luis Farias9d66fca2020-05-28 19:01:58 -0700209 # Default Data Set
Luis Farias9d66fca2020-05-28 19:01:58 -0700210 #
Luis Farias9d66fca2020-05-28 19:01:58 -0700211 twoStepFlag 1
Luis Farias9d66fca2020-05-28 19:01:58 -0700212 -slaveOnly 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700213 +slaveOnly 1
Luis Farias9d66fca2020-05-28 19:01:58 -0700214 priority1 128
Luis Farias9d66fca2020-05-28 19:01:58 -0700215 -priority2 128
Luis Farias9d66fca2020-05-28 19:01:58 -0700216 +priority2 255
Luis Farias9d66fca2020-05-28 19:01:58 -0700217 domainNumber 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700218 #utc_offset 37
Luis Farias9d66fca2020-05-28 19:01:58 -0700219 -clockClass 248
Luis Farias9d66fca2020-05-28 19:01:58 -0700220 +clockClass 255
Luis Farias9d66fca2020-05-28 19:01:58 -0700221 clockAccuracy 0xFE
Luis Farias9d66fca2020-05-28 19:01:58 -0700222 offsetScaledLogVariance 0xFFFF
Luis Farias9d66fca2020-05-28 19:01:58 -0700223 free_running 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700224 freq_est_interval 1
Luis Farias9d66fca2020-05-28 19:01:58 -0700225 dscp_event 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700226 dscp_general 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700227 -dataset_comparison ieee1588
Luis Farias9d66fca2020-05-28 19:01:58 -0700228 +dataset_comparison G.8275.x
Luis Farias9d66fca2020-05-28 19:01:58 -0700229 G.8275.defaultDS.localPriority 128
Luis Farias9d66fca2020-05-28 19:01:58 -0700230 maxStepsRemoved 255
Luis Farias9d66fca2020-05-28 19:01:58 -0700231 #
Luis Farias9d66fca2020-05-28 19:01:58 -0700232 # Port Data Set
Luis Farias9d66fca2020-05-28 19:01:58 -0700233 #
Luis Farias9d66fca2020-05-28 19:01:58 -0700234 logAnnounceInterval 1
Luis Farias9d66fca2020-05-28 19:01:58 -0700235 -logSyncInterval 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700236 +logSyncInterval -4
Luis Farias9d66fca2020-05-28 19:01:58 -0700237 operLogSyncInterval 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700238 logMinDelayReqInterval 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700239 logMinPdelayReqInterval 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700240 @@ -37,7 +37,7 @@ G.8275.portDS.localPriority 128
Luis Farias9d66fca2020-05-28 19:01:58 -0700241 asCapable auto
Luis Farias9d66fca2020-05-28 19:01:58 -0700242 BMCA ptp
Luis Farias9d66fca2020-05-28 19:01:58 -0700243 inhibit_announce 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700244 -inhibit_pdelay_req 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700245 +#inhibit_pdelay_req 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700246 ignore_source_id 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700247 #
Luis Farias9d66fca2020-05-28 19:01:58 -0700248 # Run time options
249
Luis Farias2de97522022-03-17 20:01:53 -0700250
2513. Start slave port toward PTP GM::
Luis Farias9d66fca2020-05-28 19:01:58 -0700252
253 ./ptp4l -f ./configs/default_slave.cfg -2 -i enp25s0f0 m
254
255Example of output::
256
257 ./ptp4l -f ./configs/default_slave.cfg -2 -i enp25s0f0 -m
Luis Farias9d66fca2020-05-28 19:01:58 -0700258 ptp4l[3904470.256]: selected /dev/ptp6 as PTP clock
Luis Farias9d66fca2020-05-28 19:01:58 -0700259 ptp4l[3904470.274]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE
Luis Farias9d66fca2020-05-28 19:01:58 -0700260 ptp4l[3904470.275]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE
Luis Farias2de97522022-03-17 20:01:53 -0700261 ptp4l[3904471.085]: port 1: new foreign master fcaf6a.fffe.029708-1
262 ptp4l[3904475.053]: selected best master clock fcaf6a.fffe.029708
Luis Farias9d66fca2020-05-28 19:01:58 -0700263 ptp4l[3904475.053]: updating UTC offset to 37
Luis Farias9d66fca2020-05-28 19:01:58 -0700264 ptp4l[3904475.053]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE
Luis Farias2de97522022-03-17 20:01:53 -0700265 ptp4l[3904477.029]: master offset 196 s0 freq -18570 path delay 1109
266 ptp4l[3904478.029]: master offset 212 s2 freq -18554 path delay 1109
267 ptp4l[3904478.029]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED
268 ptp4l[3904479.029]: master offset 86 s2 freq -18468 path delay 1109
269 ptp4l[3904480.029]: master offset 23 s2 freq -18505 path delay 1124
270 ptp4l[3904481.029]: master offset 3 s2 freq -18518 path delay 1132
271 ptp4l[3904482.029]: master offset -169 s2 freq -18689 path delay 1141
Luis Farias9d66fca2020-05-28 19:01:58 -0700272
Luis Farias2de97522022-03-17 20:01:53 -07002734. Synchronize local timer clock on O-RU for sample application ::
Luis Farias9d66fca2020-05-28 19:01:58 -0700274
275 ./phc2sys -s enp25s0f0 -w -m -R 8
276
277Example of output::
278
279 ./phc2sys -s enp25s0f0 -w -m -R 8
Luis Farias2de97522022-03-17 20:01:53 -0700280 phc2sys[3904510.892]: CLOCK_REALTIME phc offset 343 s0 freq -38967 delay 1530
281 phc2sys[3904511.017]: CLOCK_REALTIME phc offset 368 s2 freq -38767 delay 1537
282 phc2sys[3904511.142]: CLOCK_REALTIME phc offset 339 s2 freq -38428 delay 1534
283 phc2sys[3904511.267]: CLOCK_REALTIME phc offset 298 s2 freq -38368 delay 1532
284 phc2sys[3904511.392]: CLOCK_REALTIME phc offset 239 s2 freq -38337 delay 1534
285 phc2sys[3904511.518]: CLOCK_REALTIME phc offset 145 s2 freq -38360 delay 1530
286 phc2sys[3904511.643]: CLOCK_REALTIME phc offset 106 s2 freq -38355 delay 1527
287 phc2sys[3904511.768]: CLOCK_REALTIME phc offset -30 s2 freq -38459 delay 1534
288 phc2sys[3904511.893]: CLOCK_REALTIME phc offset -92 s2 freq -38530 delay 1530
289 phc2sys[3904512.018]: CLOCK_REALTIME phc offset -173 s2 freq -38639 delay 1528
290 phc2sys[3904512.143]: CLOCK_REALTIME phc offset -246 s2 freq -38764 delay 1530
291 phc2sys[3904512.268]: CLOCK_REALTIME phc offset -300 s2 freq -38892 delay 1532
Luis Farias9d66fca2020-05-28 19:01:58 -0700292
Luis Farias2de97522022-03-17 20:01:53 -07002935. Modify configs/default.cfg as shown below to run PTP master on Fronthaul of O-RU. ::
Luis Farias9d66fca2020-05-28 19:01:58 -0700294
295 diff --git a/configs/default.cfg b/configs/default.cfg
Luis Farias9d66fca2020-05-28 19:01:58 -0700296 old mode 100644
Luis Farias9d66fca2020-05-28 19:01:58 -0700297 new mode 100755
Luis Farias9d66fca2020-05-28 19:01:58 -0700298 index e23dfd7..c9e9d4c
Luis Farias9d66fca2020-05-28 19:01:58 -0700299 --- a/configs/default.cfg
Luis Farias9d66fca2020-05-28 19:01:58 -0700300 +++ b/configs/default.cfg
Luis Farias9d66fca2020-05-28 19:01:58 -0700301 @@ -15,14 +15,14 @@ free_running 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700302 freq_est_interval 1
Luis Farias9d66fca2020-05-28 19:01:58 -0700303 dscp_event 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700304 dscp_general 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700305 -dataset_comparison ieee1588
Luis Farias9d66fca2020-05-28 19:01:58 -0700306 +dataset_comparison G.8275.x
Luis Farias9d66fca2020-05-28 19:01:58 -0700307 G.8275.defaultDS.localPriority 128
Luis Farias9d66fca2020-05-28 19:01:58 -0700308 maxStepsRemoved 255
Luis Farias9d66fca2020-05-28 19:01:58 -0700309 #
Luis Farias9d66fca2020-05-28 19:01:58 -0700310 # Port Data Set
Luis Farias9d66fca2020-05-28 19:01:58 -0700311 #
Luis Farias9d66fca2020-05-28 19:01:58 -0700312 logAnnounceInterval 1
Luis Farias9d66fca2020-05-28 19:01:58 -0700313 -logSyncInterval 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700314 +logSyncInterval -4
Luis Farias9d66fca2020-05-28 19:01:58 -0700315 operLogSyncInterval 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700316 logMinDelayReqInterval 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700317 logMinPdelayReqInterval 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700318 @@ -37,7 +37,7 @@ G.8275.portDS.localPriority 128
Luis Farias9d66fca2020-05-28 19:01:58 -0700319 asCapable auto
Luis Farias9d66fca2020-05-28 19:01:58 -0700320 BMCA ptp
Luis Farias9d66fca2020-05-28 19:01:58 -0700321 inhibit_announce 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700322 -inhibit_pdelay_req 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700323 +#inhibit_pdelay_req 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700324 ignore_source_id 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700325 #
Luis Farias9d66fca2020-05-28 19:01:58 -0700326 # Run time options
327
Luis Farias2de97522022-03-17 20:01:53 -07003286. Start PTP master toward O-DU::
Luis Farias9d66fca2020-05-28 19:01:58 -0700329
330 ./ptp4l -f ./configs/default.cfg -2 -i enp175s0f1 m
331
332Example of output::
333
334 ./ptp4l -f ./configs/default.cfg -2 -i enp175s0f1 -m
Luis Farias892daba2022-06-22 13:59:47 -0700335 ptp4l[3903857.249]: selected /dev/ptp3 as PTP clock
336 ptp4l[3903857.266]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE
337 ptp4l[3903857.267]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE
Luis Farias2de97522022-03-17 20:01:53 -0700338 ptp4l[3903863.734]: port 1: LISTENING to MASTER on ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES
339 ptp4l[3903863.734]: selected local clock 3cfdfe.fffe.bd005d as best master
340 ptp4l[3903863.734]: assuming the grand master role
Luis Farias9d66fca2020-05-28 19:01:58 -0700341
Luis Farias892daba2022-06-22 13:59:47 -07003427.Synchronize local NIC PTP master clock to local NIC PTP slave clock. ::
Luis Farias9d66fca2020-05-28 19:01:58 -0700343
344 ./phc2sys -c enp175s0f1 -s enp25s0f0 -w -m -R 8
345
346Example of output::
347
Luis Farias892daba2022-06-22 13:59:47 -0700348 ./phc2sys -c enp175s0f1 -s enp25s0f0 -w -m -R 8
Luis Farias2de97522022-03-17 20:01:53 -0700349 phc2sys[3904600.332]: enp175s0f1 phc offset 2042 s0 freq -2445 delay 4525
350 phc2sys[3904600.458]: enp175s0f1 phc offset 2070 s2 freq -2223 delay 4506
Luis Farias892daba2022-06-22 13:59:47 -0700351 phc2sys[3904600.584]: enp175s0f1 phc offset 2125 s2 freq -98 delay 4505
352 phc2sys[3904600.710]: enp175s0f1 phc offset 1847 s2 freq +262 delay 4518
353 phc2sys[3904600.836]: enp175s0f1 phc offset 1500 s2 freq +469 delay 4515
354 phc2sys[3904600.961]: enp175s0f1 phc offset 1146 s2 freq +565 delay 4547
355 phc2sys[3904601.086]: enp175s0f1 phc offset 877 s2 freq +640 delay 4542
356 phc2sys[3904601.212]: enp175s0f1 phc offset 517 s2 freq +543 delay 4517
357 phc2sys[3904601.337]: enp175s0f1 phc offset 189 s2 freq +370 delay 4510
358 phc2sys[3904601.462]: enp175s0f1 phc offset -125 s2 freq +113 delay 4554
359 phc2sys[3904601.587]: enp175s0f1 phc offset -412 s2 freq -212 delay 4513
360 phc2sys[3904601.712]: enp175s0f1 phc offset -693 s2 freq -617 delay 4519
Luis Farias2de97522022-03-17 20:01:53 -0700361 phc2sys[3904601.837]: enp175s0f1 phc offset -878 s2 freq -1009 delay 4515
362 phc2sys[3904601.962]: enp175s0f1 phc offset -965 s2 freq -1360 delay 4518
363 phc2sys[3904602.088]: enp175s0f1 phc offset -1048 s2 freq -1732 delay 4510
364 phc2sys[3904602.213]: enp175s0f1 phc offset -1087 s2 freq -2086 delay 4531
365 phc2sys[3904602.338]: enp175s0f1 phc offset -1014 s2 freq -2339 delay 4528
366 phc2sys[3904602.463]: enp175s0f1 phc offset -1009 s2 freq -2638 delay 4531
Luis Farias9d66fca2020-05-28 19:01:58 -0700367
Luis Farias2de97522022-03-17 20:01:53 -07003688. On O-DU Install PTP for Linux tools from source code the same way as
Luis Farias9d66fca2020-05-28 19:01:58 -0700369on O-RU above but no need to apply the patch for msg.c
370
Luis Farias2de97522022-03-17 20:01:53 -07003719. Start slave port toward PTP master from O-RU using the same
Luis Farias9d66fca2020-05-28 19:01:58 -0700372default_slave.cfg as on O-RU (see above)::
373
374 ./ptp4l -f ./configs/default_slave.cfg -2 -i enp181s0f0 m
375
376Example of output::
377
378 ./ptp4l -f ./configs/default_slave.cfg -2 -i enp181s0f0 -m
Luis Farias9d66fca2020-05-28 19:01:58 -0700379 ptp4l[809092.918]: selected /dev/ptp6 as PTP clock
Luis Farias9d66fca2020-05-28 19:01:58 -0700380 ptp4l[809092.934]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE
Luis Farias9d66fca2020-05-28 19:01:58 -0700381 ptp4l[809092.934]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE
Luis Farias2de97522022-03-17 20:01:53 -0700382 ptp4l[809092.949]: port 1: new foreign master 3cfdfe.fffe.bd005d-1
383 ptp4l[809096.949]: selected best master clock 3cfdfe.fffe.bd005d
Luis Farias9d66fca2020-05-28 19:01:58 -0700384 ptp4l[809096.950]: port 1: LISTENING to UNCALIBRATED on RS_SLAVE
Luis Farias2de97522022-03-17 20:01:53 -0700385 ptp4l[809098.363]: port 1: UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED
386 ptp4l[809099.051]: rms 38643 max 77557 freq +719 +/- 1326 delay 1905 +/- 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700387 ptp4l[809100.051]: rms 1134 max 1935 freq -103 +/- 680 delay 1891 +/- 4
Luis Farias9d66fca2020-05-28 19:01:58 -0700388 ptp4l[809101.051]: rms 453 max 855 freq +341 +/- 642 delay 1888 +/- 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700389 ptp4l[809102.052]: rms 491 max 772 freq +1120 +/- 752 delay 1702 +/- 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700390 ptp4l[809103.052]: rms 423 max 654 freq +1352 +/- 653 delay 1888 +/- 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700391 ptp4l[809104.052]: rms 412 max 579 freq +1001 +/- 672 delay 1702 +/- 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700392 ptp4l[809105.053]: rms 441 max 672 freq +807 +/- 709 delay 1826 +/- 88
Luis Farias9d66fca2020-05-28 19:01:58 -0700393 ptp4l[809106.053]: rms 422 max 607 freq +1353 +/- 636 delay 1702 +/- 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700394 ptp4l[809107.054]: rms 401 max 466 freq +946 +/- 646 delay 1702 +/- 0
Luis Farias9d66fca2020-05-28 19:01:58 -0700395 ptp4l[809108.055]: rms 401 max 502 freq +912 +/- 659
396
Luis Farias2de97522022-03-17 20:01:53 -070039710. Synchronize local clock on O-DU for sample application or l1
Luis Farias892daba2022-06-22 13:59:47 -0700398application. ::
Luis Farias9d66fca2020-05-28 19:01:58 -0700399
400 ./phc2sys -s enp181s0f0 -w -m -R 8
401
402Example of output::
403
404 ./phc2sys -s enp181s0f0 -w -m -R 8
Luis Farias2de97522022-03-17 20:01:53 -0700405 phc2sys[809127.123]: CLOCK_REALTIME phc offset 675 s0 freq -37379 delay 1646
406 phc2sys[809127.249]: CLOCK_REALTIME phc offset 696 s2 freq -37212 delay 1654
407 phc2sys[809127.374]: CLOCK_REALTIME phc offset 630 s2 freq -36582 delay 1648
408 phc2sys[809127.500]: CLOCK_REALTIME phc offset 461 s2 freq -36562 delay 1642
409 phc2sys[809127.625]: CLOCK_REALTIME phc offset 374 s2 freq -36510 delay 1643
410 phc2sys[809127.751]: CLOCK_REALTIME phc offset 122 s2 freq -36650 delay 1649
411 phc2sys[809127.876]: CLOCK_REALTIME phc offset 34 s2 freq -36702 delay 1650
412 phc2sys[809128.002]: CLOCK_REALTIME phc offset -112 s2 freq -36837 delay 1645
413 phc2sys[809128.127]: CLOCK_REALTIME phc offset -160 s2 freq -36919 delay 1643
414 phc2sys[809128.252]: CLOCK_REALTIME phc offset -270 s2 freq -37077 delay 1657
415 phc2sys[809128.378]: CLOCK_REALTIME phc offset -285 s2 freq -37173 delay 1644
416 phc2sys[809128.503]: CLOCK_REALTIME phc offset -349 s2 freq -37322 delay 1644
417 phc2sys[809128.629]: CLOCK_REALTIME phc offset -402 s2 freq -37480 delay 1641
418 phc2sys[809128.754]: CLOCK_REALTIME phc offset -377 s2 freq -37576 delay 1648
419 phc2sys[809128.879]: CLOCK_REALTIME phc offset -467 s2 freq -37779 delay 1650
420 phc2sys[809129.005]: CLOCK_REALTIME phc offset -408 s2 freq -37860 delay 1648
421 phc2sys[809129.130]: CLOCK_REALTIME phc offset -480 s2 freq -38054 delay 1655
422 phc2sys[809129.256]: CLOCK_REALTIME phc offset -350 s2 freq -38068 delay 1650
Luis Farias9d66fca2020-05-28 19:01:58 -0700423
424Support in xRAN Library
Luis Farias2de97522022-03-17 20:01:53 -0700425=======================
Luis Farias9d66fca2020-05-28 19:01:58 -0700426
427The xRAN library provides an API to check whether PTP for Linux is
428running correctly. There is a function called xran_is_synchronized(). It
429checks if ptp4l and phc2sys are running in the system by making PMC tool
Luis Farias2de97522022-03-17 20:01:53 -0700430requests for the current port state and comparing it with the expected
Luis Farias9d66fca2020-05-28 19:01:58 -0700431value. This verification should be done before initialization.
432
Luis Farias2de97522022-03-17 20:01:53 -0700433- SLAVE is the only expected value in this release; only a non-master scenario is supported currently.
Luis Farias70d9d922020-08-11 16:05:37 -0700434