核心就是插件初始化时拿到error_drop这个节点的全局索引,需要丢包时,通过这个索引拿到目标包存放的地址,将需要丢的包塞进去,再vlib_put_frame_to_node。这一步你应该在自己的节点后面添加一个error_drop节点。 f0=vlib_get_frame_to_node(vm,xxx_main.error_drop_node_index);to_next_of_drop=vlib_frame_vecto...
VNET_INTERFACE_TX_NEXT_DROP); //注册output node hw->output_node_index = vlib_register_node (vm, &r); vlib_node_add_named_next_with_slot (vm, hw->output_node_index, "error-drop", VNET_INTERFACE_OUTPUT_NEXT_DROP); vlib_node_add_next_with_slot (vm, hw->output_node_index, hw->t...
DPO_LOAD_BALANCE内含私有数据load_balance_t,通过dpo_id_t中的dpoi_index索引具体实例。DPO_DROP将数据包送往"XXX-drop"节点,简单处理后传至"error-drop"节点完成数据包丢弃。DPO_IP_NULL将数据包送往"ipx-null"节点,决定是否回传icmp不可达或禁止包。DPO_PUNT与DPO_PUNT核心函数与加锁/解锁无关。
比如:如果某报文校验失败,就被传送到error-drop节点;正常报文被传送到ip6-lookup节点。 一帧报文依次通过不同的图形节点,直到它们被interface-output节点发送出去。 VPP图形节点的处理逻辑 第一步: 第二步: 第三步: 第四步: 按照网络功能一次处理一帧报文优势: 从软件工程的角度看,每一个图形节点是独立和自治的...
当 ip6-input 节点处理完当前帧的所有报文后,把报文传递到后续不同的节点。比如:如果某报文校验失败,就被传送到 error-drop 节点。而正常报文被传送到 ip6-lookup 节点。packet-1 依次通过不同的 Graph Node,直到它们被 interface-output Node 发送出去。
VNET_INTERFACE_TX_NEXT_DROP); //注册output node hw->output_node_index = vlib_register_node (vm, &r); vlib_node_add_named_next_with_slot (vm, hw->output_node_index, "error-drop", VNET_INTERFACE_OUTPUT_NEXT_DROP); vlib_node_add_next_with_slot (vm, hw->output_node_index, ...
.error_strings = ip4_error_strings,//显示计数的时候,对计数的提示,比如正常的ipv4数据包,不正确的ipv4数据包数量 .n_next_nodes = IP4_INPUT_N_NEXT,//next node的数量 .next_nodes = { [IP4_INPUT_NEXT_DROP] ="error-drop",//下一级node丢弃 ...
丢包操作可以通过在插件初始化时获取error_drop节点的全局索引,然后将需要丢弃的包存储到目标位置,并使用vlib_put_frame_to_node函数将包放入error_drop节点。实现时,可以使用vlib_get_next_frame获取目标包地址,然后使用put_frame函数将包放入指定位置。编写和编译插件的流程相对标准,使用emacs进行编辑。
100 .n_errors =ARRAY_LEN(ck_sample_error_strings), 101 .error_strings =ck_sample_error_strings, 102 .n_next_nodes =CK_SAMPLE_NEXT_N, 103 .next_nodes ={ 104 [CK_SAMPLE_NEXT_IP4] = "ip4-lookup", 105 [CK_SAMPLE_DROP] = "error-drop", ...
.error_strings = ip4_error_strings,//显示计数的时候,对计数的提示,比如正常的ipv4数据包,不正确的ipv4数据包数量 .n_next_nodes = IP4_INPUT_N_NEXT,//next node的数量 .next_nodes = { [IP4_INPUT_NEXT_DROP] = "error-drop",//下一级node丢弃 ...