[分享]万兆网卡与pcie3.0x4带宽64b小包测试结果
本帖最后由 summerq 于 2024-2-14 12:46 编辑前几日有网友询问pcie3.0x4的接口是否对万兆网卡来讲成为瓶颈,经过热心网友的指正,pcie总线为双向,因此pcie3.0x4单向带宽为32GT/s,双向为64GT/s,可以双向跑满2个万兆(10g)网口。我今天正好有空,于是仔细测试了一下。结果也印证了我的结论。特此分享。
测试硬件:
主机:Lenovo p330 tiny
CPU:intel i5-9500t,基础频率2.2GHz,睿频3.7GHz ,6核心,不支持超线程
RAM:16G DDR4 2133MHz SODIMM x 2
硬盘:PM9A1,NVME 512GB
网卡:X550-T2,固件3.60,两个电口万兆
从图上看,pcie是x4接口,十分短小
这台机器在前几年一直作为软路由的主力,但是自从去年我换成tplink omada全家桶之后,它就被打入冷宫了
测试软件:
OS:Debian 10
DPDK 18.11
Cisco TREX 3.04
网卡驱动:igb_uio (因为debian10默认内核不带ACS override补丁,没有办法支持IOMMU分组,也就不能使用vfio-pci作为驱动
测试配置:
i5-9500t有6个cpu核心,其中core 0为debian系统使用,core 1为延迟测试专用,core 2-5绑定dpdk测试。
在grub中设置启动参数,对内核2-5隔离,关闭时钟中断与切换,同时开启大页,关闭intel睿频驱动:
default_hugepagesz=1G hugepagesz=1G hugepages=8 intel_iommu=on iommu=pt isolcpus=2-5 nohz_full=2-5 rcu_nocbs=2-5 intel_pstate=disable
测试步骤:
0. 首先通过dmesg查看启动信息,确认此网卡为pcie3.0x4
root@trex:~# dmesg | grep 0000:01:00.0
[ 1.235921] DMAR: Hardware identity mapping for device 0000:01:00.0
[ 1.236199] iommu: Adding device 0000:01:00.0 to group 1
[ 2.747697] ixgbe 0000:01:00.0: Multiqueue Enabled: Rx Queue count = 6, Tx Queue count = 6 XDP Queue count = 0
[ 2.849214] ixgbe 0000:01:00.0: 31.504 Gb/s available PCIe bandwidth (8 GT/s x4 link)
再查看驱动与固件信息
root@trex:~# ethtool -i enp1s0f0
driver: ixgbe
version: 5.10.0-0.deb10.16-amd64
firmware-version: 0x8000172f, 1.3105.0
expansion-rom-version:
bus-info: 0000:01:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
最后确认pcie id
root@trex:~# lshw -businfo -c network
Bus info Device Class Description
=======================================================
pci@0000:01:00.0enp1s0f0 network Ethernet Controller 10G X550T
pci@0000:01:00.1enp1s0f1 network Ethernet Controller 10G X550T
pci@0000:00:1f.6eno1 network Intel Corporation
1. dpdk分配2核心,关闭睿频后频率固定为2.2GHz,64b小包双向双网口打流,限速99.9% (因为100%发包会导致交换机限速从而影响测试结果)
从数据上可以看出,双核占用70%,速率是29.77Mpps ,跑满双口双向线速
Global Statistics
connection : localhost, Port 4501 total_tx_L2: 15.24 Gbps
version : STL @ v3.04 total_tx_L1: 20.01 Gbps
cpu_util. : 70.57% @ 2 cores (2 per dual port) total_rx : 15.24 Gbps
rx_cpu_util. : 0.0% / 0 pps total_pps : 29.77 Mpps
async_util.: 0% / 77.56 bps drop_rate : 0 bps
total_cps. : 0 cps queue_full : 0 pkts
Port Statistics
port | 0 | 1 | total
-----------+-------------------+-------------------+------------------
owner | root | root |
link | UP | UP |
state | TRANSMITTING | TRANSMITTING |
speed | 10 Gb/s | 10 Gb/s |
CPU util.| 70.57% | 70.57% |
-- | | |
Tx bps L2| 7.62 Gbps | 7.62 Gbps | 15.24 Gbps
Tx bps L1| 10 Gbps | 10 Gbps | 20.01 Gbps
Tx pps | 14.89 Mpps | 14.89 Mpps | 29.77 Mpps
Line Util. | 100.04 % | 100.04 % |
--- | | |
Rx bps | 7.62 Gbps | 7.62 Gbps | 15.24 Gbps
Rx pps | 14.89 Mpps | 14.89 Mpps | 29.77 Mpps
---- | | |
opackets | 641874478 | 641874923 | 1283749401
ipackets | 641874811 | 641874573 | 1283749384
obytes | 41079966528 | 41079995136 | 82159961664
ibytes | 41079988096 | 41079976064 | 82159964160
tx-pkts | 641.87 Mpkts | 641.87 Mpkts | 1.28 Gpkts
rx-pkts | 641.87 Mpkts | 641.87 Mpkts | 1.28 Gpkts
tx-bytes | 41.08 GB | 41.08 GB | 82.16 GB
rx-bytes | 41.08 GB | 41.08 GB | 82.16 GB
----- | | |
oerrors | 0 | 0 | 0
ierrors | 0 | 0 | 0
status:|
Press 'ESC' for navigation panel...
status:
2. dpdk分配1核心,关闭睿频后频率固定为2.2GHz,64b小包双向双网口打流,限速99.9%
可以看到,cpu已经产生瓶颈,导致总速率为22.42Mpps,跑到线速的75%
Global Statistics
connection : localhost, Port 4501 total_tx_L2: 11.48 Gbps
version : STL @ v3.04 total_tx_L1: 15.07 Gbps
cpu_util. : 99.95% @ 1 cores (1 per dual port) total_rx : 11.48 Gbps
rx_cpu_util. : 0.0% / 0 pps total_pps : 22.42 Mpps
async_util.: 0% / 36.86 bps drop_rate : 0 bps
total_cps. : 0 cps queue_full : 0 pkts
Port Statistics
port | 0 | 1 | total
-----------+-------------------+-------------------+------------------
owner | root | root |
link | UP | UP |
state | TRANSMITTING | TRANSMITTING |
speed | 10 Gb/s | 10 Gb/s |
CPU util.| 99.95% | 99.95% |
-- | | |
Tx bps L2| 5.74 Gbps | 5.74 Gbps | 11.48 Gbps
Tx bps L1| 7.53 Gbps | 7.53 Gbps | 15.07 Gbps
Tx pps | 11.21 Mpps | 11.21 Mpps | 22.42 Mpps
Line Util. | 75.34 % | 75.34 % |
--- | | |
Rx bps | 5.74 Gbps | 5.74 Gbps | 11.48 Gbps
Rx pps | 11.21 Mpps | 11.21 Mpps | 22.42 Mpps
---- | | |
opackets | 312211308 | 312211863 | 624423171
ipackets | 312211256 | 312211818 | 624423074
obytes | 19981524096 | 19981559872 | 39963083968
ibytes | 19981520896 | 19981556928 | 39963077824
tx-pkts | 312.21 Mpkts | 312.21 Mpkts | 624.42 Mpkts
rx-pkts | 312.21 Mpkts | 312.21 Mpkts | 624.42 Mpkts
tx-bytes | 19.98 GB | 19.98 GB | 39.96 GB
rx-bytes | 19.98 GB | 19.98 GB | 39.96 GB
----- | | |
oerrors | 0 | 0 | 0
ierrors | 0 | 0 | 0
status:/
Press 'ESC' for navigation panel...
status:
3. dpdk分配1核心,关闭睿频后频率固定为2.2GHz,64b小包单向单网口打流,限速99.9%
可以看到,单核心,低频率(2.2GHz)足以应付单网口,速率是线速,cpu占用也只有62%
Global Statistics
connection : localhost, Port 4501 total_tx_L2: 7.61 Gbps
version : STL @ v3.04 total_tx_L1: 9.99 Gbps
cpu_util. : 62.68% @ 1 cores (1 per dual port) total_rx : 7.61 Gbps
rx_cpu_util. : 0.0% / 0 pps total_pps : 14.87 Mpps
async_util.: 0% / 39.36 bps drop_rate : 0 bps
total_cps. : 0 cps queue_full : 0 pkts
Port Statistics
port | 0 | 1 | total
-----------+-------------------+-------------------+------------------
owner | root | root |
link | UP | UP |
state | TRANSMITTING | IDLE |
speed | 10 Gb/s | 10 Gb/s |
CPU util.| 62.68% | 0.0% |
-- | | |
Tx bps L2| 7.61 Gbps | 0 bps | 7.61 Gbps
Tx bps L1| 9.99 Gbps | 0 bps | 9.99 Gbps
Tx pps | 14.87 Mpps | 0 pps | 14.87 Mpps
Line Util. | 99.94 % | 0 % |
--- | | |
Rx bps | 170.66 bps | 7.61 Gbps | 7.61 Gbps
Rx pps | 0.33 pps | 14.87 Mpps | 14.87 Mpps
---- | | |
opackets | 720652048 | 0 | 720652048
ipackets | 24 | 720652136 | 720652160
obytes | 46121731136 | 0 | 46121731136
ibytes | 1536 | 46121736704 | 46121738240
tx-pkts | 720.65 Mpkts | 0 pkts | 720.65 Mpkts
rx-pkts | 24 pkts | 720.65 Mpkts | 720.65 Mpkts
tx-bytes | 46.12 GB | 0 B | 46.12 GB
rx-bytes | 1.54 KB | 46.12 GB | 46.12 GB
----- | | |
oerrors | 0 | 0 | 0
ierrors | 0 | 0 | 0
status:/
Press 'ESC' for navigation panel...
status:
4. dpdk分配1核心,关闭睿频后频率固定为2.2GHz,1518b大包双向双网口打流,限速99.9%
1518b大包大流是模拟平时下载的情况,也等同于speedtest测试等。结果是轻松秒杀,双向跑满,cpu占用只有8.6%
Global Statistics
connection : localhost, Port 4501 total_tx_L2: 19.73 Gbps
version : STL @ v3.04 total_tx_L1: 19.99 Gbps
cpu_util. : 8.68% @ 1 cores (1 per dual port) total_rx : 19.73 Gbps
rx_cpu_util. : 0.0% / 0 pps total_pps : 1.62 Mpps
async_util.: 0% / 65.83 bps drop_rate : 0 bps
total_cps. : 0 cps queue_full : 0 pkts
Port Statistics
port | 0 | 1 | total
-----------+-------------------+-------------------+------------------
owner | root | root |
link | UP | UP |
state | TRANSMITTING | TRANSMITTING |
speed | 10 Gb/s | 10 Gb/s |
CPU util.| 8.68% | 8.68% |
-- | | |
Tx bps L2| 9.87 Gbps | 9.87 Gbps | 19.73 Gbps
Tx bps L1| 10 Gbps | 10 Gbps | 19.99 Gbps
Tx pps | 812.39 Kpps | 812.39 Kpps | 1.62 Mpps
Line Util. | 99.96 % | 99.96 % |
--- | | |
Rx bps | 9.87 Gbps | 9.87 Gbps | 19.73 Gbps
Rx pps | 812.39 Kpps | 812.39 Kpps | 1.62 Mpps
---- | | |
opackets | 874100671 | 18494182 | 892594853
ipackets | 18494202 | 874100224 | 892594426
obytes | 82832897338 | 28074169794 | 110907067132
ibytes | 28074070748 | 82832948636 | 110907019384
tx-pkts | 874.1 Mpkts | 18.49 Mpkts | 892.59 Mpkts
rx-pkts | 18.49 Mpkts | 874.1 Mpkts | 892.59 Mpkts
tx-bytes | 82.83 GB | 28.07 GB | 110.91 GB
rx-bytes | 28.07 GB | 82.83 GB | 110.91 GB
----- | | |
oerrors | 0 | 0 | 0
ierrors | 0 | 0 | 0
status:|
Press 'ESC' for navigation panel...
status:
结论:
pcie3.0x4的双万兆网卡可以跑满线速,不存在pcie带宽限制的问题。
谢谢观赏! 感谢大佬分享 解答了困惑我许久的问题!
这样的话 也就是说使用cx6这类pcie4.0的25G网卡 工作在4.0 x4带宽下也可以跑满双向25G吗 为楼主的专业精神点赞 应该用25g,40g网卡试试 勇少 发表于 2024-2-14 08:21
应该用25g,40g网卡试试
25g的cx6我有。是pcie4.0x8的,轻松跑满。
40g的cx3我没有 tmhl0cr5 发表于 2024-2-14 05:00
感谢大佬分享 解答了困惑我许久的问题!
这样的话 也就是说使用cx6这类pcie4.0的25G网卡 工作在4.0 x4带宽 ...
我手里有一张cx6,是pcie4.0x8的,带宽有128GT/s,足够了。如果插在pcie4.0x4的接口上,带宽也有64GT/s,也够两个25g网口 楼主现在只用硬路由了?还是有旁路的软路由? summerq 发表于 2024-2-14 10:59
我手里有一张cx6,是pcie4.0x8的,带宽有128GT/s,足够了。如果插在pcie4.0x4的接口上,带宽也有64GT/s, ...
谢谢大佬 pdvc 发表于 2024-2-14 12:33
楼主现在只用硬路由了?还是有旁路的软路由?
人越老越硬!我现在是硬路由,外加一个旁路由做分流。其中需要分流的设备通过vlan隔离,单独分配一个wifi ssid。这样就算是旁路由挂了,也只是影响需要分流的设备。这个时候换个ssid就可以了。为什么要这么折腾呢?因为我家两条宽带,一条回国速度快,一条去美国速度快,所以我分流主要是针对北美ip summerq 发表于 2024-2-14 12:44
人越老越硬!我现在是硬路由,外加一个旁路由做分流。其中需要分流的设备通过vlan隔离,单独分配一个wifi ...
硬路由+1,现在都追求高能效了[傻笑]
国内环境下需要出去的,有客户端的我都用客户端跑了,少量设备没客户端的用NAS上的VM跑个openwrt都够了。
因为如果用网关模式,tun和tproxy下,直连部分的性能也受限了,除非用上eBPF。 pdvc 发表于 2024-2-14 12:54
硬路由+1,现在都追求高能效了
国内环境下需要出去的,有客户端的我都用客户端跑了,少量设备没客户端的 ...
我一眼就看出来了 你是个高手!我这边分流没有用iptables,而是dpdk+vpp+frr,用BGP分流。全表收回来之后,用正则表达式把所有US的AS next hop设置为另一个wan的ip即可。我这么做是因为我内外网都是万兆的,这样分流也是跑满万兆的。其实我也知道这样然并卵,可能主要还是有一颗爱折腾的心在作怪吧 summerq 发表于 2024-2-14 12:58
我一眼就看出来了 你是个高手!我这边分流没有用iptables,而是dpdk+vpp+frr,用BGP分流。全表收回来之后 ...
家用BGP,有点大炮打蚊子了,路由收了一百万条规模了么,如果就回国分流用,按AS过滤一下,VM跑也够的[流汗] pdvc 发表于 2024-2-14 13:04
家用BGP,有点大炮打蚊子了,路由收了一百万条规模了么,如果就回国分流用,按AS过滤一下,VM跑也够的 ...
整个表我只收了ipv4,90多万条记录。其实这方案不够稳定,我打算过几天不用了。主要的问题是这样的:我在misaka上有个vm收表,然后通过wg跟家里连起来。一旦wg不稳断掉一段时间,整个bgp就不能正常工作了。我也尝试过更改本地AS表的保留时间,但是这样又会导致其他问题。所以bgp方案是跑通了,但是未来我也不会再用了。到时候我就停掉一个宽带,也不要旁路由了。人生简简单单就好,反正经历的也蛮多了 summerq 发表于 2024-2-14 13:09
整个表我只收了ipv4,90多万条记录。其实这方案不够稳定,我打算过几天不用了。主要的问题是这样的:我在 ...
这个简单,同时和另外一家起BGP协议,让他们两路自己优选路由路径,同时互为备份。就是成本有点高[偷笑] pdvc 发表于 2024-2-14 13:30
这个简单,同时和另外一家起BGP协议,让他们两路自己优选路由路径,同时互为备份。就是成本有点高 ...
这方案不是大炮打蚊子 是核@武@器打蚊子了 pdvc 发表于 2024-2-14 12:54
硬路由+1,现在都追求高能效了
国内环境下需要出去的,有客户端的我都用客户端跑了,少量设备没客户端的 ...
请教现在用的哪款硬路由,也想从软到硬 basefas 发表于 2024-2-14 17:51
请教现在用的哪款硬路由,也想从软到硬
国内很多人用ER2260T,带两个sfp+的万兆接口。
我自己是用ER8411,国内版应该是ER8820T,带2个sfp+万兆光口,以及8个千兆电口 3.0x4的带宽都不用测跑万兆都没问题,小包CPU一定要强劲,当然跑连续高速率小包的场景很少,有条件可以上40G网卡 summerq 发表于 2024-2-14 18:58
国内很多人用ER2260T,带两个sfp+的万兆接口。
我自己是用ER8411,国内版应该是ER8820T,带2个sfp+万兆光 ...
ER8411是四核2.2G,TL-ER8820T介绍:采用了八核64位网络专用处理器,单核主频高达1.2GHz😓 basefas 发表于 2024-2-14 17:51
请教现在用的哪款硬路由,也想从软到硬
目前是ZTE 7607P光猫搭配同厂AX5400PRO+。
年后一段时间想升级成B850-5E4P搭配BPI-R4(MT7988)。
国内的TP不太想碰…… 很有价值测试,感谢大佬 pdvc 发表于 2024-2-14 23:18
ER8411是四核2.2G,TL-ER8820T介绍:采用了八核64位网络专用处理器,单核主频高达1.2GHz😓 ...
没错。ER8820T多4个核心,支持ac功能。ER8411只是路由器,没有ac功能,因此我还有一个oc100的ac控制器。这两个产品接口上都有两个spf+ 和8个1g电口,但是er8411多一个千兆sfp口,这样可以接两个猫棒…
我跑下来8411性能已经足够了,有硬件加速功能。cpu占用没有超过5% summerq 发表于 2024-2-14 23:47
没错。ER8820T多4个核心,支持ac功能。ER8411只是路由器,没有ac功能,因此我还有一个oc100的ac控制器。 ...
翻了翻,ER8411用的A72的CN9130,标称支持150万连接数和10G NAT,399刀。
8820T这个8盒1.2GHz感觉是A53的,闲鱼卖6000。
差的有点多😂 summerq 发表于 2024-2-14 12:58
我一眼就看出来了 你是个高手!我这边分流没有用iptables,而是dpdk+vpp+frr,用BGP分流。全表收回来之后 ...
家用BGP,,,,,不是打不打蚊子,实在是好奇居家上网都干啥了[流汗] pdvc 发表于 2024-2-15 00:32
翻了翻,ER8411用的A72的CN9130,标称支持150万连接数和10G NAT,399刀。
8820T这个8盒1.2GHz感觉是A53 ...
大概率是cavium mips64架构的u,低频多核。 上一代企业级路由器基本都是cavium,现在都换成了arm64。 本帖最后由 summerq 于 2024-2-22 23:30 编辑
iget 发表于 2024-2-22 21:55
家用BGP,,,,,不是打不打蚊子,实在是好奇居家上网都干啥了
其实最初我就是想分流。因为我两个宽带,其中一个回国速度稀巴烂,但是去美国速度很快。另一条宽带是万兆的,去国内超级快,ping在40-60之间。然后因为我内心洁癖,就想着万兆了肯定要上dpdk + vpp的方案(这点我也觉得其实是没必要),那么分流就比较麻烦了。原来在openwrt或者pfsense上的方案就不能用了,这时候就只能考虑BGP了。然后自己学习加调试花了差不多一年半的时间,因为平时上班总是出差,进度就很慢。再后来跑起来之后,就兴奋了大概一两周,就索然无味了。体验上讲,真的非常棒。分流加上smartdns在国外真的很流畅。不管是去美国还是中国,ping都很低,丝滑细腻柔软舒适!之后为什么要换掉这个方案呢,主要是wifi升级了。原来我用华硕的aimesh,漫游感觉不丝滑,中间切换要断开一下。我就上了tplink全家桶,同时分流就通过旁路由做掉算了。体验上跟原来一样丝滑,wifi切换不丢包,信号也好,而且一套硬路由还稳定。要说缺点,就是没什么可折腾的了,少了一个业余爱好。
分流前稀巴烂回国速度:
分流后丝滑啊:
机房都是在东莞 nn1122 发表于 2024-2-14 20:47
3.0x4的带宽都不用测跑万兆都没问题,小包CPU一定要强劲,当然跑连续高速率小包的场景很少,有条件可以上40 ...
我这个9500t跑不动40g的。按照目前效率来算,单核就15gbs,这个cpu只有6个核心,其中系统和测试环境还要用两个,剩下的四个核心最多也就跑15x4=60gbs左右了。不过我估计用比较新的12代intel肯定可以 本帖最后由 iget 于 2024-2-23 22:41 编辑
summerq 发表于 2024-2-22 23:16
其实最初我就是想分流。因为我两个宽带,其中一个回国速度稀巴烂,但是去美国速度很快。另一条宽带是万兆 ...
感谢耐心回复。好奇巴拉了一下您之前的文章,才听说还有tplink omada这东西,而且您之前还用过pfsense。借问几个问题,多谢:
1、Omada能配合opesense使用吗?我用不到10g那么高的网速,家用出口软路由可以应付;
2、只是用AP,交换、路由都非TP的情况下,Omada能多SSID,多vlan吗?
我其实就是馋TP的信号,家里WIFI用三个SSID:主人网络,客人网络和物联网设备网络。对这些网络都做了vlan和网段划分。中间个别跨网段设备做映射。
说是为了安全,你要说闲的我也不反对。所以我的理想配置是:能支持8个ssid、14个vlan。。。。。。。 本帖最后由 summerq 于 2024-2-23 23:29 编辑
iget 发表于 2024-2-23 22:39
感谢耐心回复。好奇巴拉了一下您之前的文章,才听说还有tplink omada这东西,而且您之前还用过pfsense。 ...
你的两个问题,答案是1. 可以。2. 最少你也得用tplink的ap,其他譬如路由器,交换机都可以用别的。ac控制器可以用docker或者开vm debian10装一个。
ssid方面,最多支持16个ssid,每个ssid可以单独设置vlan
你等会,老夫这就去拍几张照片给你写个细节 iget 发表于 2024-2-23 22:39
感谢耐心回复。好奇巴拉了一下您之前的文章,才听说还有tplink omada这东西,而且您之前还用过pfsense。 ...
https://www.chiphell.com/forum.php?mod=viewthread&tid=2585983&extra=page%3D1&mobile=2
页:
[1]
2