【DPDK】L3 Forwarding Graph 示例详解(一)

L3 Forwarding Graph 示例使用

概述

L3 转发图应用程序是使用 DPDK 图框架进行数据包处理的一个简单示例。该应用程序利用图框架和为图框架编写的节点执行 L3 转发。

概念简介:

  • DPDK 图框架:DPDK 提供了一个灵活的图框架,用于设计和实现数据包处理应用程序。
  • L3 转发:L3 转发指的是网络层(如 IP 层)的转发功能,它根据数据包的目的 IP 地址来决定数据包的路由路径。
  • 节点:在 DPDK 图框架中,节点是执行特定功能的构建块,可以是简单的操作,如修改数据包头部,也可以是更复杂的处理,如查找转发表。

该示例展示了 DPDK 图框架和图节点的使用,其中涉及了 ethdev_rx, pkt_cls, ip4_lookup/ip6_lookup, ip4_rewrite/ip6_rewrite, ethdev_txpkt_drop 这些节点。

源码下载编译与运行

说明:本文基于 DPDK master 分支最新代码

源码下载:

git clone https://github.com/DPDK/dpdk.git

编译:

cd dpdk/

若只编译库、驱动、测试应用程序,使用下面的命令:

meson build
ninja -C build

若示例也要一起编译,meson 命令要增加参数:

# 编译所有示例
`meson -Dexamples=all build`

# 编译指定示例:如 l3fwd graph
`meson -Dexamples=l3fwd-graph build`

# ninja 命令是一样的
ninja -C build

l3fwd-graph 示例源码路径:dpdk/examples/l3fwd-graph,编译完成后的应用程序输出目录:dpdk/build/examples/,程序名字:dpdk-l3fwd-graph

程序运行:

./dpdk-l3fwd-graph [EAL options] -- -p PORTMASK
                               [-P]
                               --config(port,queue,lcore)[,(port,queue,lcore)]
                               [--eth-dest=X,MM:MM:MM:MM:MM:MM]
                               [--max-pkt-len PKTLEN]
                               [--no-numa]
                               [--per-port-pool]
                               [--pcap-enable]
                               [--pcap-num-cap]
                               [--pcap-file-name]
                               [--model]

参数说明:

  • -p PORTMASK:端口掩码,通过十六进制值定义哪些网络端口应该被配置。
  • -P:可选,将所有端口设置为混杂模式。启用此选项后,网络接口将接收所有经过它的数据包,而不考虑数据包的目的 MAC 地址。如果不启用此选项,则只接受目的 MAC 地址为端口 MAC 地址的数据包。
  • --config (port,queue,lcore)[,(port,queue,lcore)]:指定哪个端口的哪个队列应该被映射到哪些核心上进行处理。
  • --eth-dest=X,MM:MM:MM:MM:MM:MM:可选,指定端口 X 的目的 MAC 地址。
  • --max-pkt-len:可选,设置数据包的最大长度,十进制数。
  • --no-numa:可选,禁用 NUMA 感知功能。
  • --per-port-pool:可选,为每个端口设置独立缓冲区,而不是共享一个缓冲区。
  • --pcap-enable:可选,启用 pcap 抓包功能。
  • --pcap-num-cap:可选,指定抓包数量。
  • --pcap-file-name:可选,指定 pcap 抓包的输出文件名。
  • --model:可选,选择图遍历模型。可选择 rtcdispatch 模型。

举例说明:
./dpdk-l3fwd-graph -l 1,2 -n 4 -- -p 0x3 --config="(0,0,1),(1,0,2)"

使用 CPU 核 1 和核 2,两个 port,端口 0 的队列 0 与核 1 绑定,端口 1 的队列 0 与核 2 绑定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值