vpp开发指南

vpp开发指南

vpp二次开发一般都是基于vpp框架进行插件开发。具体友包含以下几个方面:

  • 配置
  • 插入节点
  • 收包
  • 发包

配置

// sample_config是配置读取函数
// sample是startup.conf文件中的模块名字
VLIB_CONFIG_FUNCTION (sample_config, "sample");
// 读取完配置后可以使用sample_init来进行初始化
VLIB_INIT_FUNCTION(sample_init);

插入节点

// 注册一个名为sample_node的节点
VLIB_REGISTER_NODE (sample_node);
// sample_node收到报文后如何处理
VLIB_NODE_FN (sample_node) (vlib_main_t * vm, vlib_node_runtime_t * node,
				vlib_frame_t * f);

收包

收包插入一个收包节点,组织节点关系即可。

  • L1

    vnet_hw_interface_rx_redirect_to_node (vnet_main_t *vnm, u32 hw_if_index, u32 node_index);
    
  • L2、L3

    ethernet_register_input_type (vlib_main_t *vm, ethernet_type_t type, u32 node_index);
    
  • L4

    ip4_register_protocol (u32 protocol, u32 node_index);
    
  • L5

    udp_register_dst_port (vlib_main_t * vm, udp_dst_port_t dst_port, u32 node_index, u8 is_ip4);
    

发包

发包插入一个发包节点,组织节点关系即可。

命令下发

注册cli命令,进而可以在vppctl中对vpp流程进行控制。

VLIB_CLI_COMMAND (sample_node, static) = {
  .path = "sample",
  .function = sample,
  .short_help = "sample",
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

growdu_real

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值