Skip to Content.
Sympa Menu

rare-users - Re: [RARE-users] UDPDK

Subject: RARE user and assistance email list

List archive

Re: [RARE-users] UDPDK


Chronological Thread 
  • From: mc36 <>
  • To: "Moises R. N. Ribeiro" <>
  • Cc: diego rossi mafioletti <>, gabrieltetznermenegueti16 <>, Everson Borges <>, edgardcunha <>, rare-users <>
  • Subject: Re: [RARE-users] UDPDK
  • Date: Thu, 19 May 2022 14:07:44 +0200

hi,

On 5/19/22 13:44, Moises R. N. Ribeiro wrote:
thanks for your time and explanation with nice examples. Part of your strategy seems to
be not going into special/custom socket functionality, use regular ones. I become aware
of your use of socat when I was questioning you about hooks and things for you
"privileged processes" on the front page of http://www.freertr.org/ and you
told me that things were pretty standard as far as sockets were concerned.
yesss, this packet-over-udp is a common way in the *nix world, we can say...
there are similar rfcs too, like srv6's layer2 transport, ip protocol 143,
which is also a stateless stream of layer2 frames, but in raw ip at this
time...


What UDPDK seems to offer is a compromise solution so that users can deal with DPDK as if regular POSIX was in use. Sort of accelerated socket for UDP... However, it seems to me that RARE/freeRtr has to do the DPDK trick (to speedup UDP packets on regular sockets) separately.
after executing the one-line installer from freertr.org, the linux machine
will be behind freerouter,
linux will have a single tap interface with ip assigned, and all the packets
will be handled by freertr...
when you activate a dataplane, this tap interface will be converted to a pair
of veth interfaces, one
side will be handled by the dataplane as a regular interface, the other side
will be handled by linux
with an ip assigned to it... doing things this way, any *nix application can
be behind a freerouter
with/without dataplane, moreover you can assign your linux host to an
arbitrary routing/switching
domain, after the acls/inspectin applied right before they hit the heavy
parts of kernel, the skbuf...

The portability for different data-planes requires that approach. My questioning is if you see any benefit of a customized socket to replace socat when our target dataplane is solely DPDK? Or this is solved already in freeRtr and one should not bother with that?
after activating a dataplane the only point where freerouter interacts with
the dataplane is the thing called cpu-port...
it's the point where packets are sent back and forth between the dataplanes
and freerouter, with a slin headed prepended
indicating the source/target front-panel port... this traffic is very low in
volume because it's exclusively the for-us
(routing protocols to name one) and exception (ttl expired to name one)
packets, all the rest is handled within the
fastpath... so basically socat can easily keep the pace, but freerouter have
several socat replacements under misc/native
and they're used by default to handle the interfaces during installation...


Can this UDPDK co-exist with freeRtr's usage of DPDK? So that your
application (at a freeRtR instance/appliance) uses it transparently for other
purposes?
excellent point, so a single interface can be managed by a single dpdk
application... moreover,
dpdk by default takes over all the interfaces not under the kernel control...
you can recompile
your dns server to udpdk but then nothing else will be able to use that
interface... it's not
an issue in case of giving the interface to the rare dataplanes, they can do
all the tricks
it can do on a regular interface...

br,
cs


Regards,
Moises



----- Mensagem original -----
De: "cs" <>
Para: "Moises Renato Nunes Ribeiro" <>
Cc: "diego rossi mafioletti" <>, "gabrieltetznermenegueti16"
<>, "Everson Borges" <>, "edgardcunha"
<>, "rare-users" <>
Enviadas: Quinta-feira, 19 de maio de 2022 3:53:26
Assunto: Re: UDPDK

hi,
according to their https://github.com/leoll2/udpdk page this is an udp/ip
stack implemented over dpdk...
that is, you have a nice udp app that you want to run over dpdk then you can
use this...
in freerouter, packet-over-udp is a tunneling mechnism to deal with
- phtsical interfaces: socat interface:eth0 udp-connect:127.0.0.1:12345
- qemu vm interfaces: qemu -netdev socket,udp=127.0.0.1:1100,localaddr=:1101
both will result in raw ethernet frames in an udp datagram...
it's just freerouter that offers "tunnel mode pckoudp" config knob
to terminate such things directly from the cli or so... but none of
these have anything to do with the existing udp applications of yours...
just to see the big picture: once you give an interface to dpdk (or have a
front-panel port on tofino) you dont have anything from
the kenrel, but raw ethernet packets from dpdk/tofinof.. that is, you have to
deal with arp/nd, ip, tcp, udp and so all by hand...
br,
cs



On 5/19/22 02:09, Moises R. N. Ribeiro wrote:

If you have the time to have a quick look, what do you think of this
solution? Is it similar to your strategy UDP/IP over DPDK in freeRtr?
https://www.gabrieleara.it/assets/documents/papers/conferences/2021-ieee-nfv-sdn.pdf

<https://www.gabrieleara.it/assets/documents/papers/conferences/2021-ieee-nfv-sdn.pdf>




Archive powered by MHonArc 2.6.19.

Top of Page