See …/src/vlib/main.c, and https://fdio-vpp.readthedocs.io/en/latest/gettingstarted/developers/vlib.html?highlight=dispatch#graph-node-dispatcher
At this level, we need to make a distinction between a vlib_pending_frame_t – a vector of buffer indices to be processed by a certain node – and the nodes themselves. Input nodes schedule pending frames – quite often, multiple pending frames. The dpdk plugin input routine will be perfectly happy to schedule a frame to be processed by ip4-input-no-checksum AND ip6-input in the same dispatch cycle. Each worker thread / vlib_main_t has its own pending frame vector, which is the basic way the code processes multiple frames in parallel with multiple worker threads. There are some corner-cases in the code base having to do with vpp’s directed (vs. directed *acyclic*) node graph. It’s normal for packets to “loop back” in the graph. Consider adding gre tunnel encaps, and handing the packets back to ip4-lookup. It’s OK (albeit really odd) for a node to enqueue packets back to itself. HTH… Dave On 10/21/18, 10:27 AM, "vpp-dev@lists.fd.io on behalf of A. Ilchinger" <vpp-dev@lists.fd.io on behalf of a.ilchin...@gmx-topmail.de> wrote: Hello, I'd like to know a few more details how the packet scheduling in the node graph works. From what I understand, in every scheduling "event", the input node is executed. But what about the other nodes? Are they executed in parallel or sequentially? Is a packet vector processed completely after every scheduling "event" or does it need multiple to get processed fully? Is there always a single packet vector moving through the graph at the same time or can there be multiple packet vectors? Kind regards Andreas
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#10896): https://lists.fd.io/g/vpp-dev/message/10896 Mute This Topic: https://lists.fd.io/mt/27434714/21656 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-