Hint: “pcap dispatch trace on max 10000 buffer-trace <input-node-name> 1000”, then look at the resulting trace in wireshark. It will explain in excruciating detail how packets flow through the graph.
D. From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of gerard.ke...@owmobility.com Sent: Monday, July 20, 2020 9:18 AM To: vpp-dev@lists.fd.io Subject: Re: [vpp-dev] v19.08 - duplicate packets in pcap after adding node to ip4-output feature arc - #vpp #vnet Thanks for the response Dave. I don't see anything in our proprietary code that would cause this behaviour. I did a clean checkout of stable/1908 to see if the same behaviour is present without any of our code changes and I'm able to reproduce the behaviour using the sample-plugin provided with VPP when I update it's node's feature-arc to ip4-output as I've done in the example above. The only node I have added to stable/1908 is the sample node and I've modified it to just pass packets along: -------------- VLIB_NODE_FN (sample_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { u32 n_left_from, *from, *to_next; sample_next_t next_index; u32 pkts_swapped = 0; from = vlib_frame_vector_args (frame); n_left_from = frame->n_vectors; next_index = node->cached_next_index; while (n_left_from > 0) { u32 n_left_to_next; vlib_get_next_frame (vm, node, next_index, to_next, n_left_to_next); while (n_left_from > 0 && n_left_to_next > 0) { u32 bi0; vlib_buffer_t *b0; u32 next0 = SAMPLE_NEXT_INTERFACE_OUTPUT; bi0 = from[0]; to_next[0] = bi0; from += 1; to_next += 1; n_left_from -= 1; n_left_to_next -= 1; b0 = vlib_get_buffer (vm, bi0); ASSERT (b0->current_data == 0); vlib_validate_buffer_enqueue_x1 (vm, node, next_index, to_next, n_left_to_next, bi0, next0); } vlib_put_next_frame (vm, node, next_index, n_left_to_next); } vlib_node_increment_counter (vm, sample_node.index, SAMPLE_ERROR_SWAPPED, pkts_swapped); return frame->n_vectors; } VNET_FEATURE_INIT (sample, static) = { .arc_name = "ip4-output", .node_name = "sample", .runs_before = 0, }; vnet_feature_enable_disable ("ip4-output", "sample", sw_if_index, enable_disable, 0, 0); ----------------- Is there a more appropriate method of inserting this node in the graph? ip4-mac-output needs to run before interface-output but after everything else.
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#17005): https://lists.fd.io/g/vpp-dev/message/17005 Mute This Topic: https://lists.fd.io/mt/75543730/21656 Mute #vpp: https://lists.fd.io/g/fdio+vpp-dev/mutehashtag/vpp Mute #vnet: https://lists.fd.io/g/fdio+vpp-dev/mutehashtag/vnet Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-