I have a question about DPDK and VPP.
As far as I know, DPDK has some NIC drivers developed for some types of
NICs. These drivers are Linux device drivers that are installed as kernel
module e.g. uio_pci_generic and ixgbe (yes?).

In Linux , kernel modules have the as privilege as the Linux kernel. So
DPDK NIC drivers run in kernel space (yes?)

When a packet comes in, It is first received by DPDK drivers in kernel
mode. As VPP runs in user space, there must be a context switch to deliver
packet to VPP.
Now if VPP decides that the packet should be forwarded to some next hop,
then the packet must have another context switch from user space to kernel
space, meaning that to forward a packet which is not destined to us, we
have to tolerate two context switch that is not necessary.

I guess (because I have seen an L3 forwarding sample in DPDK sample
programs but I did not dive into it to see what it did)  that DPDK has a
FIB by which it can decide what to do with the received packet without the
need of context switch(all done in kernel space).

I summary:
I think that we have 3 ways to handle a received packet:

1- Send it from DPDK to VPP and tolerate two context switch
          *Question:* if that is the case, Why do we need to tolerate 2
context switch that is not necessary?

2- Have a FIB in DPDK and forward the received packet directly in kernel
         *Question:* if that is the case, How does VPP show this packet in
its show trace because VPP is unaware of this packet?

3- Another solution that I do not know ....
          *Question:* Please tell me the procedure

Links: You receive all messages sent to this group.

View/Reply Online (#9822): https://lists.fd.io/g/vpp-dev/message/9822
Mute This Topic: https://lists.fd.io/mt/23244323/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]

Reply via email to