From: Vincent Cheng <[email protected]>
ptp4l currently does not cancel unicast service on program exit.
This causes problems for subsequent ptp4l session that is using different
masters.
Below example has debug statements to print out announce master address and
received packet address.
Start unicast slave session with master 10.64.10.13, and unicast_req_duration
300.
ptp4l[682807.352]: port 1 (eth0): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[682811.352]: debug: announce master 10.64.10.13
ptp4l[682812.770]: debug: sk_receive from 10.64.10.13
ptp4l[682812.810]: debug: sk_receive from 10.64.10.13
ptp4l[682813.120]: selected local clock 000a35.fffe.002201 as best master
ptp4l[682814.755]: port 1 (eth0): new foreign master 84c807.fffe.10c570-1
Exit ptp4l.
The unicast master continues to send SYNC packets to slave until renewal period
expires.
Start unicast same slave, but different master 10.64.10.14. This master is not
online, so ptp4l should choose local clock as best master.
However, because there is no checking of received unicast master to configured
unicast table, ptp4l is quite content with packets from previous master
10.64.10.13.
ptp4l[682848.858]: port 1 (eth0): INITIALIZING to LISTENING on INIT_COMPLETE
ptp4l[682848.892]: debug: sk_receive from 10.64.10.13
...
ptp4l[682850.704]: debug: sk_receive from 10.64.10.13
ptp4l[682850.751]: debug: sk_receive from 10.64.10.13
ptp4l[682850.751]: port 1 (eth0): new foreign master 84c807.fffe.10c570-1
ptp4l[682850.766]: debug: sk_receive from 10.64.10.13
...
ptp4l[682852.829]: debug: sk_receive from 10.64.10.13
ptp4l[682852.858]: debug: announce master 10.64.10.14
ptp4l[682852.891]: debug: sk_receive from 10.64.10.13
ptp4l[682854.751]: port 1 (eth0): LISTENING to UNCALIBRATED on RS_SLAVE
ptp4l[682854.766]: debug: sk_receive from 10.64.10.13
...
ptp4l[682854.891]: master offset -3269 s0 freq -397 path delay
4757
Add check to ensure a unicast client will check the source address of an
announce message is from an entry in the unicast master table before adding to
foreign master table.
Add canceling unicast session on exit so that subsequent session is not
polluted by lingering unicast session traffic.
v3:
- Code clarity fixes
v2:
- Add check master message is from an entry of the port's unicast master
table before adding to foreign master table
Vincent Cheng (4):
unicast: Add support to check if message was received from an entry in
the unicast master table.
unicast: Add support to send CANCEL_UNICAST_TRANSMISSION TLVs.
port: unicast client - do not add master to foreign master table if
not in the unicast master table.
port: cancel unicast transmission when closing port.
port.c | 44 +++++++++++++++++++++++++++++++-
unicast_client.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++
unicast_client.h | 19 ++++++++++++++
3 files changed, 128 insertions(+), 1 deletion(-)
--
2.34.1
_______________________________________________
Linuxptp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel