PF_RING和DPDK接收报文如何添加时间戳

0.DPDK

PF_RING和DPDK接收报文如何添加时间戳_第1张图片
77E02E3E-42A3-4014-A9F8-33E0093EE357.png

在DPDK里面在各种网卡驱动程序里面找到了一些关于添加时间戳的函数,不同的网卡驱动程序都调用了rte_timecounter_update函数和rte_ns_to_timespec函数,这个两个函数定义在dpdk-16.07/lib/librte_eal/common/include/rte_time.h中,大概的意思是要读取硬件的时钟减去上一次存在结构体里面的时钟得到的差去计算时间吧

读取当前硬件的时钟是用了一个xxx_read_systime_cyclecounter函数(xxx是不同驱动的名字,各自定义在自己的驱动文件中)


PF_RING和DPDK接收报文如何添加时间戳_第2张图片
5A3DF97B-C618-4848-BFFA-05D0CAE330BF.png
PF_RING和DPDK接收报文如何添加时间戳_第3张图片
25A5F05A-A530-4F15-8E99-C68647A7F0CC.png

这个截图是 drivers/net/ixgbe/ixgbe_ethdev.c <>

2.PF_RING

PF_RING和DPDK接收报文如何添加时间戳_第4张图片
CE8E06A9-F45B-4176-AC49-81CC848607BD.png

do_gettimeofday(&skb->stamp) 原形在/include/linux/time.h 中
net_timestamp 函数在/linux-2.6.32.5/net/core/dev.c

ktime_to_timeval 函数在 /linux-2.6.32.5/include/linux/ktime.h

ktime_to_ns函数在 /linux-2.6.32.5/include/linux/ktime.h

ktime_to_ns(skb_hwtstamps(skb)->hwtstamp)函数里面的skb_hwtstamps 在 /linux/skbuff.h

你可能感兴趣的:(PF_RING和DPDK接收报文如何添加时间戳)