【问题标题】:DPDK TX checksum offload for TCP has fixed offset from correct checksumTCP 的 DPDK TX 校验和卸载具有与正确校验和的固定偏移量
【发布时间】:2019-12-31 07:40:48
【问题描述】:

我尝试通过 DPDK 校验和卸载计算 IP 和 TCP 的校验和。代码执行以下操作:

ipv4_hdr->hdr_checksum = 0;
mb->l2_len = eth_hdr_len;
mb->l3_len = ipv4_hdr_len;
mb->ol_flags = PKT_TX_IPV4 | PKT_TX_IP_CKSUM | PKT_TX_TCP_CKSUM;
tcp_hdr->cksum = rte_ipv4_phdr_cksum(ipv4_hdr, mb->ol_flags);

rte_eth_conf 已设置:

port_conf.txmode.offloads = DEV_TX_OFFLOAD_IPV4_CKSUM | DEV_TX_OFFLOAD_TCP_CKSUM;

IP校验和正确,TCP校验和与正确校验和有固定偏移量(在我的环境下是4)

有什么想法吗?

【问题讨论】:

    标签: tcp checksum dpdk


    【解决方案1】:

    请参考答案DPDK HW and SW checksum。要启用硬件校验和,必须将当前校验和值设置为0

    /* HW check sum */ 
    ip_hdr->hdr_checksum = 0; 
    tcp_hdr = (struct tcp_hdr *)((char *)ip_hdr + info->l3_len);
    tcp_hdr->cksum = 0;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-25
      • 2013-05-09
      • 2021-03-20
      • 2012-10-08
      • 1970-01-01
      • 2012-05-16
      • 2012-03-24
      • 2010-10-14
      相关资源
      最近更新 更多