-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to attach Click-DPDK to ovs-DPDK via dpdkring? #55
Comments
I can only answer to your first question, as I haven't tried OVS. |
Thanks Georgios, I will investigate and see if I can manage connecting to OVS. Does click/fastclick support DPDK 17.11? I tried to compile ovs on 17.05 but no avail. Fastclick did compile on 17.11 and ran a sample DPDK click process successfully, so can I take it as a yes? How have you worked around this? veth? |
FastClick supports DPDK 17.11 and 18.02 is coming soon. That topic from mainstream Click was the reason that I implemented the From/ToDPDKRing elements. The floor is yours now to find out how to connect FastClick with OVS :) |
I'm actually pretty sure I did it :p But two years ago... I'm going to give it a shot ASAP. |
Fingers crossed... |
Alternatively, vhost-user ports look like an acceptable option.
Following is how dpdk testpmd picks up the socket
Is there any element in click to treat vhost-user socket as a device and read/write to it? Imho it would be a good idea to have one From/ToDevice element for all, then specify the type as an argument like From/ToDevice( TYPE x, ...) where x can be kernel,dpdk, dpdkring, vhost etc. |
The ToDevice and ToDPDKDevice have different port behaviours, this was one of the main reason why it has been made different. Mainly, ToDPDKDevice allows full push. I'm not familiar with vhost-user. Does it involves copying? Or is it only a kind of ring? |
I am not familiar with it at low-level either. Been trying to to get my head around this to come up with an educated guess, but it is a bit confusing. It claims to be shared-memory based, but the app is attaching to a socket file. |
It seems they achieved this in "Considerations on Deploying High-Performance Container-based NFV". They use vhost as you said and Click/FromDPDKDevice (the mainline one, backported from FastClick) inside the container. As a switch between containers it seems they use BESS, though FastClick could also be used. Vhost seems to be pure DPDK wireing to pass as dpdk arguments, that makes a "virtual" device appear that can be used as any physical device, requiring no change in the code. |
Wow thanks for the link to the research, it was amazingly helpful. I guess i have a better understanding now. I believe the command I will implement this and return with some feedback. Btw do you think connecting click to ovs via dpdkring would be noticeably faster due to the lack of a virtual device abstraction? |
Here is a short guide for a simple Traffic source -> DPDClick Bridge -> Traffic Sink scenario OVS
Above rules will create unix socket files under /usr/local/var/run/openvswitch/. Next, install rules so that traffic flow is strictly defined as SRC->NF->SNK and SRC<-NF<-SNK
dpdkbridge.click
We define the DPDK EAL arguments that we need to pass to click as following.
--vdev argument has to start with "virtio_user" followed by a number as if index.
Providing the virtio user interface as a From/ToDPDKDevice is a matter of specifying the path to the socket file that OVS created, in the EAL parameters. So if you want to containerize click, just map the /usr/local/var/run/openvswitch folder on the host to the container (additionally you need to map the hugepages mount to the container as well). I will get back with some performance results as soon as I am finished. Hope it helps someone and thanks for your input guys! |
That's fantastic news ! If you can push a little working config in the conf/fastclick folder with the above comments, that would be even better ! |
I will get to it as soon as I wrap things up. |
Hi
As a continuation of #54, and the same approach as this, I am trying to attach my click process (two ports)
to two ports of ovs.
Following ovs guide, I I add the following two lines and create two ports in form of dpdkring.
As for click side,
fastclick/elements/userlevel/todpdkring.hh
Lines 38 to 48 in cbd995f
above comment leaves the impression that the other process must be a click process too. In ovs case, should I type in the name of the ovs process?
I would appreciate if you could share sample commands/configuration related to this scenario.
The text was updated successfully, but these errors were encountered: