菜单

kaoqi
kaoqi
发布于 2026-10-09 / 5 阅读
0
0

testpmd的fwd行为

fwd是fowarding转发的缩写,就是testpmd中具体描述转发行为的动作,它从输入报文解析、端口转发、输出报文封装三个角度进行转发行为的描述。

更具体的说,fwd是一个可以在testpmd中使用show config fwd进行检查的配置,在此配置中,首先会描述当前的转发模式、当前的端口、核以及流数目,当前的NUMA的节点与内存行为模式,rx到tx之间的链路转发关系等信息。

fwd可以具体分为下面这些模式:

模式命令

行为描述

使用场景与效果

set fwd io

IO模式,从RX端口收到的报文,不做任何修改直接从TX端口转发。注意这种转发是静态配置的,无法修改。

网卡性能测试、驱动稳定性

一般为port N --> port N+1之间做IO互联,单独一个的自己连自己

set fwd mac

二层交换模拟,收到报文后,将源mac替换为发送端口的mac,目的mac替换为对端端口的mac

模拟二层网关或交换机的行为,验证mac地址学习/重写逻辑

set fwd macswap

mac交换,直接交换报文的源mac与目的mac地址

环路测试,二层环回

set fwd csum

校验和重算/验证,在收到报文后,根据配置使用硬件或软件重新计算IP、TCP、UDP的校验和

验证网卡的checksum offload功能是否正常

set fwd tso

大报文分段,允许发送超过MTU的超大TCP报文,由网卡硬件将其分割成多个符合MTU的小报文发送

测试网卡TSO性能,验证大文件传输性能

set fwd lro

大报文合并,将接收端的多个小的TCP段合并成一个大的报文传递给应用层

验证网卡的LRO功能,测试高带宽低小包率下的接收性能

set fwd flowgen

流生成,主动生成具有不同五元组的UDP报文流,并递增序列号

性能压力测试,验证RSS

set fwd txonly

只发不收

验证Tx压力

set fwd rxonly

只收不发

验证Rx压力

set fwd icmpecho

模拟ping服务

用于响应ping

set fwd ieee1588

时间戳处理,用于处理IEEE 1588 PTP报文,提取接收时间戳并在发送报文中插入硬件时间戳

测试网卡的时钟同步

set fwd shared_rxq

多核共享Rx

测试驱动在共享队列模式下的并法性能和锁竞争情况

实际上,真实网络世界中对转发的要求会更加的多样,比如简单直白的物理口自接口的802.1Q划分功能,DPDK就几乎无法实现(只能进行软件分流处理,没有一个独立的自接口struct概念),同时类似2544协议一类的检测协议也是DPDK无法完成的。

DPDK的可塑性在于,可以通过定义PMD的软件报文处理流程来进行接收报文的处理。具体来说,就是可以通过源代码的修改实现DPDK下的任意状态机。


评论