DPDK中的流量分叉(flow bifurcation)

flow bifurcation介绍

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
使用分岔驱动程序的PMDs与设备内核驱动程序共存。在这样的模型中,NIC由内核控制,而数据路径则由设备上的PMD直接执行。

这种模式有以下好处:

  • 它是安全且健壮的.
    因为内存管理和隔离是由内核完成的。
  • 它允许用户在相同的网络端口上运行DPDK应用程序时使用传统的linux工具,如ethtool或ifconfig。
  • 它允许DPDK应用程序只过滤部分流量,而其余的流量将由内核驱动程序定向和处理;流分岔由NIC硬件完成,例如,使用流隔离模式 dpdk rte_flow isolated mode 可以严格选择DPDK中接收到的内容。

流量分叉的优缺点

在这里插入图片描述

优点总结:

  • 更好的性能
    流量分叉是硬件特性,不需要CPU的参与。可以提供更好的性能。
  • 和 kni 对比
    kni 的话,需要在DPDK中实现具体的代码来进行流量从DPDK应用到内核协议栈。流量分叉只需要通过软件给硬件配置对应的规则即可。
  • 实现流量分叉的方式
  • SR-IOV
  • Flow filter(rte_flow/ fdir)
  • SR-IOV 实现流量分叉的优缺点:
    在这里插入图片描述

不同网卡的流量分叉实现

mellanox

在这里插入图片描述
Mellanox Cx系列网卡天然支持流量分叉,不需要在配置SR-IOV PF/VF 进行流量分叉。Mellanox Cx系列流量分叉的好处有:

  • 更好的性能,DPDK应用直接处理数据面的流量。
  • 网卡依然可以被内核控制。
  • Linux kernel 的控制工具/命令依然可以使用。比如,ethtool
    在这里插入图片描述

其他

其他系列的网卡,比如Intel,博通的网卡不是天然的流量分叉。需要配置SO-IOV或者 FDIR 规则来实现流量分叉。

流量分叉的实现

流量分叉的应用场景

减少网卡的数量

正常情况下,在一个机器上部署DPDK程序,需要2块网卡:

  • 管理口:
    登陆机器,管理机器。
  • 业务口:
    一个单卡双口的网卡作为DPDK程序转发流量的业务口。

如果使用基于SR-IOV的 flow bifurcation,只需要一块卡即可。利用网卡的SR-IOV,存在一个PF以及多个VF。
在网卡上配置管理IP,以及一些flow filter。
将DPDK的流量,交给VF对应的队列,进而给VF处理。
将其他流量交给PF处理,对设备进行管理。这样即使DPDK程序退出,不影响设备的管理。

DPDK程序中控制流量和业务流量分离

目前的DPDK程序,比如DPVS,控制流量(健康检查、bgp流量)也可能和业务流量混在一起(比如交给了相同的接收队列)。在业务流量很大的情况下,有可能导致控制流量丢包,进而导致BGP保活失败,VIP路由发送失败,流量偶发断连的情况。
如果可以将控制流量和业务流量分发到不同的队列中,做到互不影响。

参考

Flow Bifurcation How-to Guide
https://doc.dpdk.org/guides-19.08/howto/flow_bifurcation.html

dpdk guide: flow bifurcation
http://doc.dpdk.org/guides/howto/flow_bifurcation.html

Flow Bifurcation on Intel Ethernet Controller X710/XL710:
https://docplayer.net/39738408-Flow-bifurcation-on-intel-ethernet-controller-x710-xl710-jingjing-wu-anjali-singhai-dpdk-summit-userspace-dublin-2016.html

Getting the Best of Both Worlds with Queue Splitting (Bifurcated Driver)
https://www.redhat.com/en/blog/getting-best-both-worlds-queue-splitting-bifurcated-driver
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,没有直接说明如何使用Prometheus监控DPDK流量。但是,可以通过以下步骤来实现: 1. 在DPDK应用程序启用统计信息,以便DPDK可以生成有关流量的指标。 2. 使用Prometheus的DPDK Exporter来收集DPDK生成的指标。 3. 将指标发送到Prometheus服务器以进行聚合和可视化。 以下是一个简单的示例,演示如何使用DPDK Exporter和Prometheus监控DPDK流量: 1. 在DPDK应用程序启用统计信息。可以通过在应用程序调用rte\_eth\_stats\_get函数来实现。例如,以下代码片段显示如何获取有关端口1的统计信息: ```c struct rte_eth_stats stats; rte_eth_stats_get(1, &stats); printf("Packets received: %lu\n", stats.ipackets); printf("Packets sent: %lu\n", stats.opackets); ``` 2. 使用DPDK Exporter来收集DPDK生成的指标。可以使用DPDK Exporter来收集DPDK生成的指标。DPDK Exporter是一个开源项目,可以从GitHub上获取。可以使用以下命令来启动DPDK Exporter: ```shell ./dpdk_exporter --dpdk-config /path/to/dpdk-config --dpdk-stats /path/to/dpdk-stats ``` 其,--dpdk-config参数指定DPDK配置文件的路径,--dpdk-stats参数指定DPDK统计信息文件的路径。 3. 将指标发送到Prometheus服务器以进行聚合和可视化。可以使用以下命令将DPDK Exporter生成的指标发送到Prometheus服务器: ```shell ./dpdk_exporter --dpdk-config /path/to/dpdk-config --dpdk-stats /path/to/dpdk-stats --prometheus-addr <prometheus-server>:<prometheus-port> ``` 其,--prometheus-addr参数指定Prometheus服务器的地址和端口号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值