电子商务网站建设与营运,东莞免费建站在线咨询,python必背入门代码,有什么网站做交流会VPP#xff08;Vector Packet Processing#xff09;是一个高性能的数据平面开源项目#xff0c;用于构建网络功能虚拟化#xff08;NFV#xff09;和软件定义网络#xff08;SDN#xff09;解决方案。它由Cisco开发#xff0c;并在Apache 2.0许可下发布。
在VPP中Vector Packet Processing是一个高性能的数据平面开源项目用于构建网络功能虚拟化NFV和软件定义网络SDN解决方案。它由Cisco开发并在Apache 2.0许可下发布。
在VPP中节点Node是数据包处理的基本单元。每个节点都执行一些特定的功能并且可以相互组合形成流水线完成复杂的数据包处理任务。以下是如何编写一个基本节点的步骤 包含头文件首先需要包含VPP相关头文件例如vlib/vlib.h、vnet/vnet.h等。 定义结构体定义一个包含节点配置信息和运行时状态的结构体。通常命名为node_main_t。 注册节点使用VLIB_REGISTER_NODE宏将节点注册到VPP框架中。该宏需要提供节点名字、输入输出描述符等参数。 创建节点函数实现一个create_node函数其中会初始化节点配置信息和运行时状态。这个函数会被VPP框架调用创建实际的节点。 处理数据包实现一个process_packet函数用于对输入数据包进行处理并将结果发送给下一个节点或者输出口。 清理节点函数实现一个cleanup_node函数用于清理节点状态和资源。
以下是一个简单的节点示例用于向输出口发送ping应答
#include vlib/vlib.h
#include vnet/vnet.htypedef struct {u32 sw_if_index;
} node_main_t;static uword process_packet(vlib_main_t *vm, vlib_node_runtime_t *node,vlib_frame_t *frame) {u32 n_left_from, *from;from vlib_frame_vector_args(frame);n_left_from frame-n_vectors;while (n_left_from 0) {u32 n_left_to_next;vlib_get_next_frame(vm, node, VLIB_NODE_FORWARD_NEXT_INDEX, to_next,n_left_to_next);while (n_left_from 0 n_left_to_next 0) {vlib_buffer_t *buf;u32 bi;bi from[0];from 1;n_left_from - 1;to_next[0] bi;to_next 1;n_left_to_next - 1;buf vlib_get_buffer(vm, bi);u32 sw_if_index ((node_main_t *)node-runtime_data)-sw_if_index;vnet_buffer(b)-sw_if_index[VLIB_TX] sw_if_index;vlib_set_next_frame_buffer(vm, node, VLIB_NODE_FORWARD_NEXT_INDEX, bi);}vlib_put_next_frame(vm, node, VLIB_NODE_FORWARD_NEXT_INDEX, n_left_to_next);}return frame-n_vectors;
}static clib_error_t *setup_function(vlib_main_t *vm) {node_main_t *nm;nm node_main;nm-sw_if_index 0;return 0;
}VLIB_REGISTER_NODE(node_ping_reply) {.function process_packet,.name ping-reply,.type VLIB_NODE_TYPE_INTERNAL,.vector_size sizeof(u32),.n_errors 0,.format_trace 0,.flags VLIB_NODE_FLAG_IS_DROP,
};VLIB_INIT_FUNCTION(setup_function);可以看到节点的实现主要包含了创建、处理和清理三个函数。其中process_packet是最重要的函数它通过循环获取所有输入数据包并对每个数据包进行处理。在这个例子中只是简单地将输出口设置为节点配置中的sw_if_index。其余部分都是基本的VPP框架代码。
Dpdk/网络协议栈/vpp/OvS/DDos/NFV 视频教程学习地址 https://ke.qq.com/course/5066203?flowToken1043068
DPDK/网络虚拟化 相关学习资料、视频教程 学习群739729163