向VPP中添加新结点,改变数据走向

本文介绍了如何在VPP中注册新结点,包括使用VLIB_REGISTER_NODE宏声明处理函数,以及通过feature机制动态改变数据流走向。讨论了选择合适的arc类,如nsh-output、mpls-output等,并在arc类上登记feature结点。同时,还提到了不使用feature机制时,如何在L1到L5不同层次插入结点,如vnet_hw_interface_rx_redirect_to_node、ethernet_register_input_type、ip4_register_protocol和udp_register_dst_port等函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注册新结点

向VPP中注册新结点的方式比较简单,使用VPP中定义好的VLIB_REGISTER_NODE宏来声明我们的新结点,新结点中的处理函数需要自己去实现

VLIB_REGISTER_NODE(node_name_node, static)

VLIB_REGISTER_NODE本质上是新建一个vlib_node_registration_t类型,VPP会在初始化的时候往node表中注册该结点信息,这里该变量名为node_name_node的数据结构并定义为static属性
所以如果想在不同.c文件中引用该变量,需要去掉static关键字,并在.h文件中加上node_name_node的声明
1

结点中定义的next_nodes定义了通过该结点后数据应到底何结点,这里可以根据结点的用途自由选取需要的结点名

使用feature机制

早期的VPP本身的node框架比较固定,各个node之间逻辑连接已经固化,为此新版本增加了feature机制
这里feature机制本质上来说还是结点,只不过该结点可以在运行的时候通过命令进行配置是否打开或关闭,从而影响数据流的走向

选择合适的arc类

对新加入的结点进行管理,新的feature(即我们新建的结点)必须属于某个arc类,并作用于某个interface实体。
通过set interface feature <intfc> <feature_name> arc <arc_name> [disable]命令来开启或关闭该feature功能。
通常arc类的名字对应为其起点结点的名字,使用命令开启关闭feature功能能动态的改变数据的流向。 <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值