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

PF_RING和DPDK接收报文如何添加时间戳,第1张

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

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

这个截图是 drivers/net/ixgbe/ixgbe_ethdevc <<ixgbe_timesync_read_rx_timestamp>>

do_gettimeofday(&skb->stamp) 原形在/include/linux/timeh 中

net_timestamp 函数在/linux-26325/net/core/devc

ktime_to_timeval 函数在 /linux-26325/include/linux/ktimeh

ktime_to_ns 函数在 /linux-26325/include/linux/ktimeh

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

DPDK加载驱动(比如uio)之后将网卡收包机制变为轮询而非中断,这是为了提高收包效率,轮询就会强制占用某个CPU核。推荐对使用多核处理器,指定DPDK要绑定的核,并且为其他任务预留至少一个核,即可。

这一步之前,DPDK环境已塔好,pktgen已编译成功,网卡已绑定成功等一系列初始化工作已完成。

命令行参数:-P 和 -m 这两个参数是必要的!

/app/build/pktgen [EAL options] -- \

                            [-h] [-P] [-G] [-T] [-f cmd_file] \

                            [-l log_file] [-s P:PCAP_file] [-m ]

  -s P:  file    PCAP packet stream file, 'P' is the port number  -f filename  Command file (pkt) to execute or a Lua script (lua) file 

-l          filename  Write log to filename 写日志

-P         Enable PROMISCUOUS mode on all ports 开启混杂模式,必须要的参数 

-g          address  Optional IP address and port number default is (localhost:0x5606)

If -g is used that enable socket support as a server application

-G          Enable socket support using default server values localhost:0x5606 

-N          Enable NUMA support 

-T          Enable the color output 输出颜色 

--crc-strip  Strip CRC on all ports

-h Display the help information

参数中,最复杂的是 -m <string>

-m  <string> 配置端口到逻辑核的映射关系,使用类似BNF类语法映射的逻辑核要与 [EAL options]中的逻辑核要一致。

如下,也可以用 {} 来代替 []

[EAL options]里的参数与DPDK基本一样,主要是配置逻辑核掩码和内存通道数。这里不详解。以上是命令行参数,下面介绍运行时参数。

详细可参考官网中的资料: pktgen运行时参数

Pktgen:/> help #有帮助提示

这里只介绍最常用的命令,最常用的配置就是MAC,IPv4|IPv6|ARP,TCP|UDP|ICMP,SPORT|DPORT,PROTO,SEQ等

这些配置可以用 set命令来完成。

除了set命令,常用的还有显示主页面,page 0  | page main

加载和保存 lua脚本的配置信息  load | save <path-to-file>

启动/结束发包:start | stop <portlist>

其实不用刻意去记命令怎么使用,按两次Tab键会有命令使用的提示。我现在用的是版本是312,最新版已到了350,所以一些配置命令会有些不一样,比如配置ip时,<portlist>的顺序就不一样。以上配置是基于最新版来的,如果在实际中发现按上面的命令不对,请先确认是否为最新版其实只要大致记住一些命令就行,实际使用时可以按两次Tab键就会有提示,也可以把配置保存成lua文件,下一次运行时候,直接加载就不用再配置了。由于对lua脚本不太熟,关于lua脚本的使用,等使用熟悉了再来深入讨论一些功能。最后,放一张运行时候的图来压压惊。。。

运行命令:/app/app/x86_64-native-linuxapp-gcc/pktgen -l 1-4 -n 4 -- -P -T -m "[1:2]0,[3:4]1"

祝大家生活愉快。

能提升40倍。

DPDK只是单纯的从驱动拿数据,然后组织成数据块给人用,跑在用户态。功能相当于linux的设备无关接口层,处于socket之下,驱动之上。只不过linux协议栈的这部分在核心态。包处理器,很多时候是不用linux内核协议栈的,而是用专用包处理程序,类似于DPDK加上层应用处理。通常会有些硬件加速,包处理效率更高些。缺点是一旦用不上某些功能,那些加速就白费了。而纯软件处理就非常灵活,不过代价就是功耗和性能

纯DPDK性能非常高,intel自己给出的数据是,处理一个包80时钟周期。一个36Ghz的单核双线程至强,64字节小包,纯转发能力超过90Mpps,也就是每秒9千万包。如果加上linux

socket协议栈,比如跑个纯>

由于项目中需要用到dpdk,当时在服务器平台选型上有如下2种不同配置可供选择,为了理解老的Xeon处理器和Xeon金牌处理器对DPDK转发性能的影响,需要在两台服务器上分别进行DPDK l3fwd性能转发测试。

采用如下拓扑进行测试,测试仪的4个10GE端口连接X710-DA4的4个接口,测试时测试仪的4个端口同时打流,经过服务器DPDK转发后分别从X710-DA4网卡的不同接口送出,在测试仪的4个端口查看是否有丢包。在无丢包的情况下测试仪端口打流的最大速率即为服务器端DPDK能够提供的最大转发能力,以MPPS为单位。

(1) 在服务器上运行dpdk

/examples/l3fwd/x86_64-native-linux-gcc/l3fwd -l 4,6,8,10 -n 4 -w 0000:04:000 -w 0000:04:001 -w 0000:04:002 -w 0000:04:003 -- -p 0xf --config="(0,0,2),(1,0,4),(2,0,6),(3,0,8)"

运行l3fwd前有一些准备工作:

上述是DPDK官方的性能测试报告中建议的BIOS配置,在实际测试用我没有修改CPU C-state和P-state,并关闭了超线程的功能。

也可以通过 cat /sys/class/net/p6p1/device/numa_node 查看

在上述 *** 作完成后便可以知道dpdk运行时应该设置参数。

(2)测试仪打流

在l3fwd运行起来后,会添加1921800/24、1921810/24、1921820/24、1921830/24四个网段的路由,因此在测试仪端4个端口设置流的时候需要将流的目的IP地址分别设置为上述4个网段的地址,流的目的MAC地址设置为对应接口的MAC地址。

上述的DUT2对应Server01,DUT3对应Server02,DUT1的性能数据和配置是从DPDK的性能测试报告中拿到的。DUT1、DUT2和DUT3的配置对比如下。

从测试结果可以看出,DUT3上运行DPDK就能够实现64字节数据包的线速转发。对比DUT2和DUT3的转发性能可以看出,基于 Xeon Gold 5118处理器的平台相比老的Xeon处理器平台,转发性能是有一定提升的。

当然,从我个人的理解来看,现在的转发测试只是测4条路由表的情况,路由表均能够存放到处理器的一级cache中,没有大规模内存访问的压力。如果有大规模的路由表或者服务器上多个网卡同时收发数据,并且涉及到跨网卡之间的数据包转发,当前的服务器能否实现性能的线性扩展还需要后面进一步测试。

以上就是关于PF_RING和DPDK接收报文如何添加时间戳全部的内容,包括:PF_RING和DPDK接收报文如何添加时间戳、dpdk pmd为什么会导致 cpu高、dpdk-pktgen简单使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10121026.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存