Linux Kernel方式和dpdk方式实现1588协议

1 篇文章 0 订阅
1 篇文章 0 订阅

一、1588协议说明
1、IEEE1588 ( PTP ) 协议简介
IEEE1588 协议,又称 PTP( precise time protocol,精确时间协议),可以达到亚微秒级别时间同步精度,于 2002 年发布 version 1,2008 年发布 version 2
2、IEEE1588 协议的同步原理,所提出的 Delay Request-Response Mechanism(延时响应机制)如 下图所示:
在这里插入图片描述

二、Linux 内核协议栈方式
1、下载1588协议代码
2、x86服务器测试验证
3、arm64板子测试验证
三、应用层协议到Linux内核处理udp发送数据包的过程
1、应用层通过sendto进行发送
2、Linux内核调用udp_sendmsg进行发送。。
3、。。
4、网络设备驱动函数注册
5、通过 ndo_start_xmit 发送数据

这里我在做测试验证的时候 发现无法找到设备文件ptp
于是ls -lh /dev/ptp* 后 果然没有ptp0 或者ptp1 设备文件
4、于是开始查看Linux 内核协议栈驱动程序
nxp 的设备驱动 是通过先创建dprc contianer
dprc container是作为root根节点 也就是链表的头指针
后续手动创建的dprtc 才会被挂到dprc的链表上
创建成功dprc后
驱动程序是先做一个匹配 匹配到dprtc后才是 创建ptp设备文件
然后才是进行probe操作 注册读写函数等

二、DPDK接管网卡 使用DPDK的协议栈实现1588时间同步

1、nxp 板卡配置DPDK环境说明:
修改uboot 环境变量
setenv othbootargs default_hugepagesz=1024m hugepagesz=1024m hugepages=2 pci=pcie_bus_perf isolcpus=1-8 iommu.passthrough=1

cross-compile-dpdk

export RTE_SDK=/home/zhanghh/16.latest-dpdk/dpdk
export export RTE_TARGET=build/

  1. make config T=arm64-dpaa2-linuxapp-gcc
  2. 修改 build/.config 将kernel相关module disable掉 #CONFIG_RTE_KNI_KMOD=y
  3. make -j CROSS=aarch64-linux-gnu- RTE_KERNELDIR=/home/zhanghh/05.nxp-code-with-git/flexbuild_lsdk1906/packages/linux/linux/
  4. build 出来的image在:build/路径下
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
基于DPDK(Data Plane Development Kit)实现服务端和客户端的主要步骤如下: 1. 环境准备:首先需要确保DPDK已经正确安装并配置好了开发环境,包括正确安装可用的网卡驱动程序、配置正确的内存和共享内存等。 2. 服务端实现:在服务端的代码中,需要使用DPDK提供的API来初始化DPDK,包括初始化设备、设置设备属性,以及创建和配置接收数据包的队列等。然后,服务端需要创建一个socket并绑定到指定的IP地址和端口上。接下来,使用DPDK提供的API接收和处理客户端发送的数据包。 3. 客户端实现:在客户端的代码中,同样需要使用DPDK提供的API来初始化DPDK,并创建一个socket。然后,通过socket将数据包发送给服务端。客户端还可以通过DPDK提供的API来设置、修改发送数据包的属性,如目标IP地址和端口等。 4. 编译和运行:完成服务端和客户端的代码编写后,需要将代码编译成可执行文件。在编译时,需要使用DPDK提供的工具和指定相关的编译参数,如指定DPDK的路径、调整内核参数等。最后,将生成的可执行文件分别运行在服务端和客户端的主机上。 基于DPDK实现服务端和客户端可以提供高性能的网络连接和数据交互,减少了网络的延迟和负载。同时,DPDK还提供了丰富的API和功能,如多核支持、零拷贝等,可以进一步优化网络性能和提升系统吞吐量。因此,在需要处理大量网络数据流的场景下,基于DPDK实现服务端和客户端是一个很好的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

echo-niuben

你的鼓励是我创作的巨大动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值