补充:以 ptp4l、E2E 为例的 Linuxptp 代码分析

最近仍然在看linuxptp的问题,对其代码做了更深的了解,下面补充一些知识点。详细文章需要参考上一篇:以 ptp4l、E2E 为例的 Linuxptp 代码分析

1 Event message and General message

我是由于研究第二点才发现的第一点,有个先后顺序。关于这两种message,通过Google我找到了以下的解释。

Event messages are timed messages in which an accurate timestamp is generated at both transmit and receive time. General messages do not require accurate timestamps.

Event messages是有时间的消息,发送和接收时间都会生成准确的时间戳。 General messages不需要准确的时间戳。

借助下面的图我们分析一下E2E。下面的图是一个 E2E 的示例。从图中我们可以看到第一步Sync,发送它和接收它都会生成时间戳,即 t1 以及 t2,所以他是 event msg。而随后的 follow up,它只是携带了 t1,所以它是 general msg。同样的,delay req 是 event msg,而 delay resp 是 general msg。 

2 关于UDP Port

通过wiki我们可以看到下面两点,在 UDP 的 port 中,319和320用于两种类型的 msg。

PortDescription
319Precision Time Protocol (PTP) event messages
320Precision Time Protocol (PTP) general messages

根据上面的分类,可以知道 sync msg 应该是 port 319 而 follow up msg 应该是 port 320,下面抓了两个包验证了一下,确实如此。

sync msg
follow up msg

3 ptp4l E2E code

基于以上两点,对于 ptp4l E2E 部分的 code 我们会有一个新的认识,如果加到上一篇文章中,会显得过于杂乱,所以在这里单独记录一下。以下两部分,对照上一篇可以有一个更深刻的认识。

3.1 master 端

首先 fd_index 会等于6,即 FD_MANNO_TIMER,进而执行 port_tx_announce,发出 announce msg。

其次 fd_index 会等于7,即 FD_SYNC_TX_TIMER,进而执行 port_tx_sync,发出 sync msg 以及 follow up。

在收到 slave 端发送的 delay req msg 后, fd_index 会等于0,即 FD_EVENT,随后执行 process_delay_req 发送 delay resp msg。

3.2 slave 端

首先 fd_index 会等于0,即 FD_EVENT,随后执行 process_sync 处理收到的 sync msg。

然后 fd_index 会等于1,即 FD_GENERAL,随后执行 process_follow_up 处理收到的 follow up msg。

接着 fd_index 会等于2,即 FD_DELAY_TIMER,进而执行 port_delay_request 发送 delay req msg。

最后 fd_index 会等于1,即 FD_GENERAL,随后执行 process_delay_resp 处理收到的 delay resp msg。

这篇是一些补充,后续如果还有其他内容的话我会直接在这篇文章后面补充。

如果觉得这篇文章有用的话,可以点赞、评论或者收藏,万分感谢,goodbye~

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值