智能网卡solarflare、Mellanox、X10等
# 智能网卡-Mellanox
- 迈络思网卡MAC地址通常以
0c:42
开头 - ifconfig查看网口
迈络思智能网卡,本身做了一套开源的libvma,作用和dpdk类似。安装迈络思网卡驱动时,增加--dpdk
和--vma
就会自动安装对应的库。
驱动安装
cd MLNX_OFED_LINUX-5.3-1.0.0.1-rhel7.7-x86_64
./mlnxofedinstall --dpdk --vma --upstream-libs
/etc/init.d/openibd restart
2
3
安装完成后重启服务器。
查看迈络思网卡的pci地址:
- 查看网卡的pci地址
lspci | grep Mellanox
ethtool -i p5p1
查看p5p1里bus-info的pci地址,和上面lspci对应起来
bus-info: 0000:04:00.0,表明p5p1网口对应的pci地址为04:00.0,
# 智能网卡-Solarflare
- solarflare网卡的MAC地址,一般是
00:0f
开头,或者00:0f:53
开头 - 底层efvi收包
onload驱动安装和使用: https://blog.csdn.net/Erice_s/article/details/121686572 (opens new window)
1、解压安装包 tar -zxvf onload-7.1.0.265.tgz 2、进入驱动目录 onload-7.1.0.265/scripts 3、安装驱动 ./onload_install 4、查看网卡版本 ethtool -i p2p2 5、reload网卡 ./onload_tool reload 6、查看网卡版本验证 ethtool -i p2p2
# onload使用
onload --profile=latency taskset -c 2,3 ./[Application]
onload -p latency taskset -c 2,3 ./[Application]
2
# efsink抓包
# pkill efsink
efsink -tv ens3f0 sniff:promisc -p $(date "+%Y%m%d-%H%M%S").pcap > /dev/null &
# 停止抓包
pkill efsink
2
3
4
5
# sfptpd对时
# 这个对时程序启动后需要大概3分钟才能对好,offset的值越来越小,最后稳定在个位数
/root/sfptpd/sfptpd -f /root/sfptpd/config/ntp.cfg
# 后台运行
nohup /root/sfptpd/sfptpd -f /root/sfptpd/config/ntp.cfg > /dev/null &
2
3
4
5
# 智能网卡-X10
MAC地址通常以64:3f:5f
开头
驱动exanic: https://exablaze.com/docs/exanic/user-guide/search.html?q=capture (opens new window)
# 查看所有x10网卡配置
exanic-config
# 抓包 https://exablaze.com/docs/exanic/user-guide/config/#using-exanic-capture
./exanic-capture -i interface -H -N -w $(date "+%Y%m%d-%H%M%S").pcap
2
3
4
5
# 智能网卡-广策Tacnic
MAC地址通常以64:3f:5f
开头,基于exanic
# 查看是否有tacnic网卡以及相关信息
tacnic-config
# 网卡对时 tacnic0表示一张tacnic卡,如果有两张卡,则是tacnic0和tacnic1
tacnic-clock-sync tacnic0:host >/dev/null 2>&1 &
tacnic-clock-sync tacnic0:host --daemon
# 检查网卡对时情况,正常是两三百ns
tacnic-clock-check tacnic0
# 抓包
# pkill tacnic-capture tacnic0:0 tacnic0:1
tacnic-capture -H -N -i tacnic0:0 -w $(date "+%Y%m%d-%H%M%S").interface0.pcap > /dev/null 2>&1 &
tacnic-capture -H -N -i tacnic0:1 -w $(date "+%Y%m%d-%H%M%S").interface1.pcap > /dev/null 2>&1 &
# 安装或者卸载驱动
rmmod tacsock
rmmod tacnic
insmod /usr/lib/modules/3.10.0-957.e17.x86_64/extra/exanic.ko
insmod /usr/lib/modules/3.10.0-957.e17.x86_64/extra/exasock.ko
ifup xxx
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 跨主机网络对时
安装配置ptp4l服务,假设两个主机AB,主机A配置ptp4l服务为master,主机B配置为slave,两个直连的网卡通过ptp4l对时。
安装phc2sys服务,A主机网卡到主机对时(以主机为准),B主机从主机到网卡对时(以网卡为准)
对时主从关系为: A主机->A网卡->B网卡->B主机
查看对时偏差: systemctl status ptp4l systemctl status phc2sys
两台主机网卡直连,都用智能网卡的情况下,偏差delay约为100ns 经过交换机的情况下,偏差delay可能达到1000ns
# 验证
写一个发送udp和接收udp的程序,一台主机发送,另一台主机接收,通过智能网卡kernal bypass收发。发送时用clock_realtime打点,接收时也打点,查看时间差,记为t1 发送和接收的主机调换,再次测量时间差,记为t2
t1和t2的差应当为2倍的对时偏差。