VPP主要结构体分析
来源:互联网 发布:java读取身份证阅读器 编辑:程序博客网 时间:2024/06/05 19:07
VPP主要结构体
从今天开始,主要从VPP代码层面分析VPP的结构,因为刚开始分析,难免有不准确的地方,希望各位大拿能提出指正
全局结构体
vlib_main_t:
记录全局信息,比如一些统计数据,Node Graph,命令行接口,注册的functions,是整个VPP的入口
Node Graph相关结构体
主要用于记录node graph相关信息
vlib_node_main_t:
节点图主结构,记录全局节点图的数据信息
vlib_node_t:
单个节点的主结构,包括节点的处理功能函数,名称,节点类型等,主要保存一些相对静态信息
vlib_node_registration_t:
注册node节点时使用,保存节点业务逻辑的函数地址,节点类型,节点状态,节点名称等
vlib_node_runtime_t
实际在调度node过程中使用的结构,主要记录在处理过程中的信息变动
vlib_frame_t:
保存每个node对应的要处理的数据的内存地址信息
vlib_pending_frame_t
记录运行节点的索引,数据包索引,以及下一个数据包的索引
vlib_next_frame_t:
主要用于获取node要处理的吓一跳数据
插件结构体
插件主要是结合一些节点信息为实现一些业务功能提供的
以下介绍的插件主要用于在VPP启动时静态加载的,还要动态加载的plugin结构体,后续文章会介绍
Plugin_main_t(在/src/lib/unix目录)
用于记录全局所有静态插件信息,如:插件路径,插件信息,依赖的全局节点图信息等,在VPP启动加载插件时使用
Plugin_config_t
记录单个插件配置状态信息
Plugin_info_t
记录插件的信息:包括名字,文件名等,主要用于在VPP启动时加载插件动态库
Feature结构体
Feature和插件的关系:
插件是结合一些节点信息提供业务功能,在VPP启动时通过加载动态so库来加载
Feature是在VPP启动时通过INIT链表进行加载
在VPP的实现中,每个feature包含一个node,每个node归属于一个ARC的集合
通过feature和插件方式,可以实现不改变源代码,在VPP中动态加载业务节点
vnet_feature_main_t
Feature的主结构体,包含注册的ARC和feature列表等
vnet_feature_arc_registration_t
arc中的feature按照代码指定的顺序串接起来。arc结构将记录这组feature的起始node和结束node。系统初始化时完成每个feature的连接
vnet_feature_registration_t
feature结构体,一个feature包含一个node,通过该结构体指定node和归属的arc和相对应位置。
关系图如下:
单向箭头表示被包含,双向表示被引用
插件结构体和feature结构体相对简单,在此不在多说
相关文档:
http://blog.csdn.net/jqh9804/article/details/53043343
http://www.tk4479.net/shaoyunzhe/article/details/53694092
- VPP主要结构体分析
- networking-vpp 分析
- jQuery core 主要结构分析
- VPP测试框架简单分析
- ortp分析之二 主要结构体 (未完)
- 块设备驱动 block_device_operations结构体 主要成员函数分析
- libevent源码分析---回顾主要的结构体
- 思科VPP源码分析(feature机制分析)
- 思科VPP源码分析(Bihash分析)
- 思科VPP源码分析(内存管理)
- vpp feature node分析总结(snat)
- 思科VPP源码分析(内存管理)
- batman-adv主要结构体
- 思科VPP源码分析(dpdk node分析)
- 思科VPP源码分析(ethernet node分析)
- 思科VPP源码分析(多线程支持分析)
- 思科VPP源码分析(CLI支持分析)
- 思科VPP源码分析(trace机制分析)
- ckfinder上传图片含中文,预览无法正常显示问题
- POJ-1061-青蛙的约会(扩展欧几里德)
- react-router
- 【开放-封闭原则】使用开放封闭原则开发实例【原创】
- 面向对象连环踢
- VPP主要结构体分析
- intellij IDEA 无法使用gradle的原因(17-7-27)
- linux安装mongodb并创建用户
- HDU6047 Maximum Sequence(贪心,2017 HDU多校联赛 第2场)
- Let the Balloon Rise HDU
- Android消息队列和Looper及IntentService
- CSS中p和span有什么区别
- MFC中点击按钮弹出对话框
- 取汉字拼音首字母--生成不重复ID(汉字--拼音--首字母)