如何解决DPDK 是否提供本机 TCP/IP 网络堆栈实现?
我试图找出 DPDK 或任何流行的开源项目中是否提供了任何原生 TCP/IP 堆栈实现来实现它。任何帮助将不胜感激。
更新: 我的平台是 Ubuntu 16.04 x64,带有 DPDK 20.08 的 Intel 82599es NIC。我想要完成的是从我在 NIC 端口上收到的数据包中重建 TCP 连接以供以后使用。我认为像 ANS、mTCP 和 fstack 这样的工具可能会跟踪,但它们是第三方的,其中一些不是完全开源的,所以我正在寻找一种或一种受开发人员欢迎的原生工具。我不知道这种需求应该叫什么,很抱歉因为这个问题给大家带来的麻烦,等我了解了相关概念之后再改。
解决方法
到目前为止,DPDK 版本中没有本地 TCP-IP 堆栈实现DPDK 版本 20.11 LTS。以我的拙见,DPDK 不会实现本地 TCP-IP 堆栈。因此目前的选择是
既然要求是rebuild TCP connection state information
,我的建议是
- 创建 RTE_FLOW_ACTION_MIRROR 以使用 IP-TCP 地址端口的组合在硬件 NIC 级别为所有感兴趣的 TCP 连接创建数据包副本。
- 如果没有 HW 选项,请使用
ref_cnt_update
或copying the user packet payload
创建数据包的副本。 - 在 RTE_RINGS 或 RTE_FB_ARRAY 的帮助下,基于对称 RSS(如果可用)或基于自定义 HASH 将来自客户端和服务器的数据包组织到适当的容器中。
- 对于您的数据包处理建议是使用
FSTACK or mTCP or BSD TCP-ip from scratch
Internet 上有多个参考资料,它们也提供了入门提示。请参考
- mTCP slide 14
- fstack slide deck
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。