vpp中node节点是数据包的处理流程,数据包在不同节点之间流动进行处理
vpp所有的node节点无论里面的逻辑如何处理,转发流程都分为两种,主要是为了性能优化,本篇文章介绍第一种dual类型
首先创建一个dual类型的插件,名字为testdual,查看node.c文件
注:一般来说处理数据包的代码文件名都是node.c,但是如果一个模块功能过于复杂就会根据相应类型取名,例如ip4的处理
1.第一个知识点,当前node是如何确定数据包的下一个node节点的


这两个要放在一起看
VLIB_REGISTER_NODE这个宏表示注册 testdual这个节点
name表示该节点的名字,其中vpp会给该node分配一个node index作为标识,和名称一一对应
type表示节点的类型,这个会在别的文章中分享,处理数据包的节点都是该类型
重点来了
n_next_nodes表示当前node节点的下一个节点有多少个,这个值就是上面枚举类型的最后一个
next_nodx表示当前node节点下一个节点有哪些,在代码中会变成char *next_nodes[] 数组,记录下每一个节点的名字,其中数组下标对应上面的枚举类型,具体代码中使用的下面讲解
2.第二个知识点,当前节点是如何处理数据

本文解析VPP中Dual类型Node节点的工作原理,包括如何确定数据包的下一个Node节点及处理流程,并对比Dual与QS类型的差异。
最低0.47元/天 解锁文章
3991

被折叠的 条评论
为什么被折叠?



