首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DEV_TX_OFFLOAD_VXLAN_TNL_TSO卸载测试- DPDK

DEV_TX_OFFLOAD_VXLAN_TNL_TSO卸载测试- DPDK
EN

Stack Overflow用户
提问于 2021-01-15 06:05:14
回答 1查看 289关注 0票数 0

我正在研究MellanoxConnectX-5卡,并在CentOS 8 (4.18.0-147.5.1.el8_1.x86_64)中使用DPDK 20.11。

我想测试DEV_TX_OFFLOAD_VXLAN_TNL_TSO卸载,我想问的是数据包结构应该是什么样子(我正在使用替罪羊),我应该将它发送到DPDK应用程序,这样这个卸载就会开始工作并执行分段(因为它是一个VXLAN_TNL_TSO)。

我正在修改dpdk-ip_ inside示例,并在port_conf中添加了:port_conf

代码语言:javascript
复制
static struct rte_eth_conf port_conf = {
    .rxmode = {
        .max_rx_pkt_len = JUMBO_FRAME_MAX_SIZE,
        .split_hdr_size = 0,
        .offloads = (DEV_RX_OFFLOAD_CHECKSUM |
                 DEV_RX_OFFLOAD_SCATTER |
                 DEV_RX_OFFLOAD_JUMBO_FRAME),
    },
    .txmode = {
        .mq_mode = ETH_MQ_TX_NONE,
        .offloads = (DEV_TX_OFFLOAD_IPV4_CKSUM | 
                 DEV_TX_OFFLOAD_VXLAN_TNL_TSO
                 ),
    },
};

在ol_flags:

代码语言:javascript
复制
ol_flags |= (PKT_TX_IPV4 | PKT_TX_IP_CKSUM | PKT_TX_TUNNEL_VXLAN );

简而言之,如果有人能帮我做两件事,来测试这个卸货,那就太好了:

  1. 我应该发送的数据包结构应该是什么(使用替罪羊,这样卸载就会起作用)?
  2. 在DPDK示例应用程序中需要执行的设置(没有必要使用ip_fragmentation示例,任何其他示例也可以)。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-19 09:33:51

注意:基于3小时调试会话,澄清了titlequestion共享是不正确的。因此,将重新编辑问题,以将实际需求反映为how enable DPDK port with TCP-TSO offloads for tunnelled VXLAN packets

对第一个问题的回答是,将分组发送到用于TSO的DPDK和接收分段业务的替身设置是什么?

  1. 使用ethtool -K [scapy interface] rx off tx off tso off gso off gro off lro off禁用SCAPY接口上所有与TSO相关的卸载
  2. 设置MTU以发送更大的帧(如9000 )
  3. 确保发送大帧作为有效负载,但发送less than interface MTU
  4. tcpdump -eni [scapy interface] -Q in的方向标志运行tcpdump用于入口流量

对于示例应用程序中所需设置的第二个问题的答案如下

  1. dpdk testpmd应用程序可以支持基于NIC支持的HW和SW卸载。
  2. 其次,最好的应用程序是tep_termination,但是需要vhost接口(VM)或DPDK来实现同样的功能。
  3. 由于该需求是针对任何通用应用程序(如骨架、l2fwd )的,因此可以如下所示
  • 确保使用DPDK 20.11 LTS (以获得对隧道TSO的最新和最佳支持)
  • 在应用程序中,使用tx_offload API检查dev_get_info能力。
  • 隧道(VXLAN)数据包的HW TSO交叉检查.
  • 如果需要对UDP有效负载执行TSO,请检查HW中的UDP_TSO支持。
  • 使用无多段、大型帧、最大帧连> 9000字节配置NIC .
  • 通过rx_burst接收数据包,并确保数据包为ipv4、UDP、VXLAN (隧道),nb_segs为1。
  • 修改mbuf以指向l2_len、l3_len、l4_len。
  • 将数据包ol_flags标记为PKT_TX_IPV4 | PKT_TX_TUNNEL_VXLAN | PKT_TX_TUNNEL_IP。对于UDP内部有效载荷PKT_TX_TUNNEL_UDP
  • 然后将段大小设置为DPDK MTU (1500 as default) - l3_len - l4_len

这将使支持HW TSO卸载的PMD能够更新作为多个数据包传输的给定有效负载的描述符中的适当字段。对于我们的测试用例来说,9000字节的发送数据包将被转换为7* 1500字节的数据包。这可以作为部分tcpdump来观察。

注意:

  1. 参考代码存在于tep_terminationtest_pmd中。
  2. 如果没有HW卸载,则可用rte gso的SW库。
  3. 对于HW卸载,目前所有的PMD都要求MBUF是一个连续的、单一的、非外部的缓冲区。因此,请确保创建足够大小以接收大数据包的mbufpool或mempool。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65731241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档