dperf
dperf copied to clipboard
dperf 如何添加vlan 头?
dperf 中可以添加像下面这种有vlan 头的配置吗
“pkt = Ether(dst="20:04:0f:68:5d:15")/Dot1Q(vlan=610)/IP(dst="172.16.96.101")”
目前不可以,加这个feature也比较容易,dperf发送的报文都是在cache中的,只要在填cache的时候把这个埋进去就可以了,欢迎提交pr,增加这个feature。 如果是物理网卡,有可能网卡可以帮忙,不用这么麻烦
你可以说说你的测试场景吗
对,就是物理网卡
可以试试 https://tonydeng.github.io/sdn-handbook/dpdk/offload.html
在DPDK中,在调用发送函数前,必须提前设置mbuf数据结构,设置PKT_TX_VLAN_PKT位,同时将具体的Tag信息写入vlan_tci字段。
嗯,感觉还是在dperf 中添加一个这个支持比较好
你能支持一下这个feature吗
我觉得你做起来会更快,O(∩_∩)O哈哈~
我没有物理网卡,我可以写一下,你帮我测可以吗
这个可以有
邮件联系 [email protected]
交换机上处理一下就好了吧, dperf实现此功能的必要在哪里呢?
那不就是要改变交换机的配置吗,有些场景虽然只是改变一点配置,但可能会影响的东西比较多
please test this branch, thanks https://github.com/pengjianzhang/dperf/tree/vlan
config:
vlan vlanID
在测吗?
验证了一下,感觉是没发出来。。。
ARP 正常吗,ICMP 正常吗
先用server模式运行,看看arp,icmp能不能正常工作
分支弄错了,不好意思,用这个分支: https://github.com/pengjianzhang/dperf/tree/main
Ok 我重新试一下
在配置文件中加入 一行 vlan VLANID 例子: vlan 123
没发出来,这怎么看dperf 发出去的包?
把dperf的网关指向客户端,在客户端上抓包 网卡支持vlan卸载吗? 你用的是什么网卡?
不行,实在发不出来,我还是用trex 吧
这个配置文件,我在192.168.60.1 上抓包,根本抓不到
mode client cpu 0 tx_burst 128 launch_num 10 payload_size 1400 duration 1m vlan 610
protocol tcp flood
cc 1k cps 1k keepalive 1ms
port 0000:41:00.0 192.168.60.2 192.168.60.1 00:50:56:a4:0c:54 client 6.6.234.4 10 server 192.168.60.1 1 listen 80 1
你用的什么网卡 看看网卡是否支持vlan卸载: ethtool -k eth0| grep vlan
0000:41:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=igb_uio unused=ixgbe,vfio-pci 0000:41:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=igb_uio unused=ixgbe,vfio-pci 0000:43:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=igb_uio unused=ixgbe,vfio-pci 0000:43:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=igb_uio unused=ixgbe,vfio-pci 0000:44:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=igb_uio unused=ixgbe,vfio-pci 0000:44:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=igb_uio unused=ixgbe,vfio-pci
用mode server模式运行 在客户端上ping 接口IP
这个抓包看了一下,vlan 还是没加上
你们有熟悉DPDK的同事吗,调试一下吧,大概就是看看我开启网卡的vxlan卸载特性设置对不对
`static inline void work_space_tx_send(struct work_space *ws, struct rte_mbuf *mbuf) { struct tx_queue *queue = &ws->tx_queue;
if( g_config.vlan_id > 0 ) {
mbuf->ol_flags |= PKT_TX_VLAN;
mbuf->vlan_tci = g_config.vlan_id;
// printf("-> try to insert vlan_id@%d\n", mbuf->vlan_tci);
}
if (ws->vlan_id) {
mbuf->ol_flags |= PKT_TX_VLAN;
mbuf->vlan_tci = ws->vlan_id;
// printf("try to insert vlan_id@%d\n", mbuf->vlan_tci);
}
net_stats_tx(mbuf);
queue->tx[queue->tail] = mbuf;
queue->tail++;
if (((queue->tail - queue->head) >= queue->tx_burst) || (queue->tail == TX_QUEUE_SIZE)) {
work_space_tx_flush(ws);
}
}`
调整了一下,没有细看,感觉是vlan 初始化有点问题, 现在可以了
可以发出vlan报文?