ptp1588v2实现方案

ptp1588v2实现方案

ptp1588v2是一套软件协议标准,借助于软硬件时间戳来进行时间同步。因而其需要两方面的支持:

  • 硬件支持时间戳或软件层面直接添加时间戳
  • 软件层面需按照IEEE1588实现相关的协议

当前cdu-nxp2160板子硬件(网卡)支持时间戳功能,硬件层面满足要求。软件层面实现IEEE1588v2协议又分为两种情况:

  • 基于linux内核的系统栈
  • 基于dpdk的用户栈

系统栈

基于系统栈的话可直接使用第三方开源实现,具体又分为两种:

  • ptpd
  • linuxptp

一般常用linuxptp实现的ptp4l,ptpd可作替代方案或备用方案。

用户栈

基于dpdk的用户栈来实现IEEE1588v2,当前没有第三方开源实现,需对linuxptp或者ptpd进行移植适配。

当前dpdk中实现了简单的ptpclient,仅提供ptp的slaver功能。

基于dpdk的用户栈1588v2移植方案

基于kni移植

kni功能提供了在使用dpdk的同时能使用系统栈的功能,kni会在linux系统中虚拟出一个网口,基于该网口运行linuxptp。

但当前kni虚拟出的网口不支持ptp hardware clock功能,这将会导致ptp4l无法运行。但网卡硬件确实提供了硬件时间戳的功能,因而需针对kni对ptp4l进行适配。

具体的适配方案又分为两种:

  • 适配kni

    适配kni即需要修改kni驱动代码,使其虚拟出的网口支持ptp hardware clock。

  • 适配ptp4l

    适配ptp4l即需修改ptp4l源码,需要修改其打时间戳的逻辑,替换相关接口为dpdk提供的时间接口;同时涉及到将ptp4l集成到dpdk中,或者说需考虑dpdk与ptp4l交互的方式。

适配kni

基于kni移植主要需对kni驱动进行适配,适配的具体层面为虚拟出的网口需支持ptp hardware clock功能。主要涉及代码改动为kni网口驱动代码。

  • 当前网口ptp配置
root@HX-Technical-A:~# ethtool -T vEth0
Time stamping parameters for vEth0:
Capabilities:
        software-receive      (SOF_TIMESTAMPING_RX_SOFTWARE)
        software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
PTP Hardware Clock: none
Hardware Transmit Timestamp Modes: none
Hardware Receive Filter Modes: none
  • 预期kni网口ptp配置
root@HX-Technical-A:~# ethtool -T vEth0
Time stamping parameters for eth3:
Capabilities:
        hardware-transmit     (SOF_TIMESTAMPING_TX_HARDWARE)
        hardware-receive      (SOF_TIMESTAMPING_RX_HARDWARE)
        hardware-raw-clock    (SOF_TIMESTAMPING_RAW_HARDWARE)
PTP Hardware Clock: 0
Hardware Transmit Timestamp Modes:
        off                   (HWTSTAMP_TX_OFF)
        on                    (HWTSTAMP_TX_ON)
        one-step-sync         (HWTSTAMP_TX_ONESTEP_SYNC)
Hardware Receive Filter Modes:
        none                  (HWTSTAMP_FILTER_NONE)
        all                   (HWTSTAMP_FILTER_ALL)
适配ptp4l

适配ptp4l主要所做工作分为三个方面:

  1. 修改其启动逻辑,不依赖于网口的ptp hardware clock选项;
  2. 修改其时间戳获取和修改接口,调用dpdk提供的时间戳接口;
  3. 设计dpdk与ptp4l的交互通信方式;(当前dpdk所在的vpp进程与ptp4l是两个独立的进程。)

基于linuxptp移植

基于linuxptp移植即将相关代码逻辑全部适配到用户栈,具体是在基于dpdk的vpp中添加插件,实现整套IEEE1588v2协议。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

growdu_real

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值