dpdk入门实践6——L2fwd二层通信和l3fwd三层通信

DPDK从网卡直接取数据到用户空间,需要有数据转发的规则才能通信。也就是说需要用户实现相关通信网络协议实现相关数据包的转发(有些协议栈不转发ICMP报文那就Ping不通),例如腾讯的fstack,爱奇艺的DPVS等。这里仅以简单的2层和3层通信实例。

l2fwd Sample

运行

./build/l2fwd  -l 0-3 -n 4 -- -q 8 -p 0x03  
或者   
./build/l2fwd  -cf -- -p 0x03 --no-mac-updating //不启动MAC地址更新

其中

  • l是使用的核,n是Number of memory channels,不知道是个啥,好像填几都可以,看不出差别。
  • --前面的参数是dpdk程序通用参数,后面的是该程序专用参数,其中
  • q是number of queue (=ports) per lcore (default is 1),这里我理解为一个lcore来轮询几个端口。应该不是端口数量,因为我的环境是绑定了两个网卡,我填到15都可以,到16就不行了,因为代码里规定了最大值。
  • p是PORTMASK: hexadecimal bitmask of ports to configure,这里我理解为配置的端口的16进制掩码,例如我使用了两张网卡,所以这里是0x03.如果我填0xffff就不行,程序会报错并给你个参考数值

关于处理队列

对于每个端口来说,只有一个RX队列(only one lcore is able to poll a given port). TX队列数量基于可用的lcores. 可以使用rte

你可能感兴趣的:(DPDK,linux,c++,linux,网络,网络编程,开发语言,虚拟机)