[openstack-dev] Ocata - Ubuntu 16.04 - OVN does not work with DPDK

Martinx - ジェームズ thiagocmartinsc at gmail.com
Wed Apr 12 20:22:12 UTC 2017


On 11 April 2017 at 11:08, Russell Bryant <rbryant at redhat.com> wrote:

>
>
> On Mon, Apr 10, 2017 at 4:49 PM, Martinx - ジェームズ <
> thiagocmartinsc at gmail.com> wrote:
>
>>
>>
>> On 8 April 2017 at 00:37, Martinx - ジェームズ <thiagocmartinsc at gmail.com>
>> wrote:
>>
>>> Guys,
>>>
>>>  I manage to deploy Ocata on Ubuntu 16.04 with OVN for the first time
>>> ever, today!
>>>
>>>  It looks very, very good... OVN L3 Router is working, OVN DHCP
>>> working... bridge mappings "br-ex" on each compute node... All good!
>>>
>>>  Then, I've said: time for DPDK!
>>>
>>>  I manage to use OVS with DPDK easily on top of Ubuntu (plus Ocata Cloud
>>> Archive) with plain KVM, no OpenStack, so, I have experience about how to
>>> setup DPDK, OVS+DPDK, Libvirt vhostuser, KVM and etc...
>>>
>>>  After configuring DPDK on a compute node, I tried the following
>>> instructions:
>>>
>>>  https://docs.openstack.org/developer/networking-ovn/dpdk.html
>>>
>>>  It looks quite simple!
>>>
>>>  To make things even simpler, I have just 1 controller, and 1 compute
>>> node, to begin with, before enabling DPDK at the compute node and changing
>>> the "br-int" datapath, I deleted all OVN Routers and all Neutron Networks
>>> and Subnets, that was previously working with regular OVS (no DPDK).
>>>
>>>  Then, after enabling DPDK and updating the "br-int" and the "br-ex"
>>> interfaces, right after connecting the "OVN L3 Router" into the "ext-net /
>>> br-ex" network, the following errors appeared on OpenvSwitch logs of the
>>> related compute node (OpenFlow error):
>>>
>>>
>>>  * After connecting OVN L3 Router against the "ext-net / br-ex" Flat /
>>> VLAN Network:
>>>
>>>  ovs-vswitchd.log:
>>>
>>>  http://paste.openstack.org/show/605800/
>>>
>>>  ovn-controller.log:
>>>
>>>  http://paste.openstack.org/show/605801/
>>>
>>>
>>>  Also, after connecting the OVN L3 Router into the local (GENEVE)
>>> network, very similar error messages appeared on OpenvSwitch logs...
>>>
>>>
>>>  * After connecting OVN L3 Router on a "local" GENEVE Network:
>>>
>>>  ovs-vswitchd.log:
>>>
>>>  http://paste.openstack.org/show/605804/
>>>
>>>  ovn-controller.log:
>>>
>>>  http://paste.openstack.org/show/605805/
>>>
>>>
>>>  * Output of "ovs-vsctl show" at the single compute node, after plugging
>>> the OVN L3 Router against the two networks (external / GENEVE):
>>>
>>>  http://paste.openstack.org/show/605806/
>>>
>>>
>>>  Then, I tried to launch an Instance anyway and, for my surprise, the
>>> Instance was created! Using vhostuser OVS+DPDK socket!
>>>
>>>  Also, the Instance got its IP! Which is great!
>>>
>>>  However, the Instance can not ping its OVN L3 Router (its default
>>> gateway), with or without any kind of security groups applied, no deal...
>>> :-(
>>>
>>>  BTW, the Instance did not received the ARP stuff of the OVN L3 Router,
>>> I mean, for the instance, the gateway IP on "arp -an" shows "<incomplete>".
>>>
>>>
>>>  * The ovs-vswitchd.log after launching an Instance on top of
>>> OVN/OVS+DPDK:
>>>
>>>  http://paste.openstack.org/show/605807/
>>>
>>>  * The output of "ovs-vsctl show" after launching the above instance:
>>>
>>>  http://paste.openstack.org/show/605809/ - Line 33 is the dpdkvhostuser
>>>
>>>
>>>  Just to give another try, I started a second Instance, to see if the
>>> Instances can ping each other... Also did not worked, the Instances can not
>>> ping each other.
>>>
>>>
>>>  So, from what I'm seeing, OVN on top of DPDK does not work.
>>>
>>>  Any tips?
>>>
>>>
>>>  NOTE:
>>>
>>>  I tried to enable "hugepages" on my OpenStack's flavor, just in case...
>>> Then, I found another bug, it doesn't even boot the Instance:
>>>
>>>  https://bugs.launchpad.net/cloud-archive/+bug/1680956
>>>
>>>
>>>  For now, I'll deploy Ocata with regular OVN, no DPDK, but, my goal with
>>> this cloud is for high performance networks, so, I need DPDK, and I also
>>> need GENEVE and Provider Networks, everything on top of DPDK.
>>>
>>> ---
>>>  After researching more about this "high perf networks", I found this:
>>>
>>>  * DPDK-like performance in Linux kernel with XDP !
>>>
>>>  http://openvswitch.org/support/ovscon2016/7/0930-pettit.pdf
>>>
>>>  https://www.iovisor.org/technology/xdp
>>>  https://www.iovisor.org/technology/ebpf
>>>
>>>  https://qmonnet.github.io/whirl-offload/2016/09/01/dive-into-bpf/
>>>
>>>  But I have no idea about how to use OpenvSwitch with this thing,
>>> however, if I can achieve DPDK-Like performance, without DPDK, using just
>>> plain Linux, I'm a 100% sure that I'll prefer it!
>>>
>>>  I'm okay to give OpenvSwitch + DPDK another try, even knowing that it
>>> [OVS] STILL have serious problems (https://bugs.launchpad.net/ub
>>> untu/+source/openvswitch/+bug/1577088)...
>>> ---
>>>
>>>  OpenStack on Ubuntu rocks!   :-D
>>>
>>> Thanks!
>>> Thiago
>>>
>>
>> I just realized how cool IO Visor is!
>>
>> Sorry about mixing subjects, let's keep this one clear for OVN on top of
>> DPDK.
>>
>> I found a opened bug on RedHat's Bugzilla, I updated it with the info
>> from this e-mail:
>>
>> https://bugzilla.redhat.com/show_bug.cgi?id=1410565
>>
>> Looks like that, OVN doc say that it is supported on top of any
>> OpenvSwitch Datapath but, it is not the case... Right?
>>
>> I would be happy to be able to use GENEVE on top of regular Linux
>> datapath, and only Provider Networks on top of DPDK but, it also doesn't
>> work. I'll post more details about this later.
>>
>>
> ​The primary limitation here is that the userspace (DPDK) datapath does
> not yet support NAT.  See the datapath feature matrix here:
>
> http://docs.openvswitch.org/en/latest/faq/releases/​
>> ​So, indeed, provider networks only is going to the configuration​ that
> works with DPDK.  You could do Geneve networks + provider networks,
> assuming you set it up so that NAT is not used anywhere.
>
> --
> Russell Bryant
>

Hi Russel,

 I'm curious about something and maybe you can clarify it for me...

 Let's say that I don't need NAT, neither Security Groups (just to try to
avoid more OpenFlow rules on top of DPDK), and then, I'll try to run GENEVE
on top of DPDK anyway, regardless of the lack of NAT and/or SecGrp (since I
don't need those for perf tests that I'm planning to run).

 At the following document:

 https://docs.openstack.org/developer/networking-ovn/install.html

 We have this (Compute Node):

---
 Configure the overlay network local endpoint IP address.

 # ovs-vsctl set open . external-ids:ovn-encap-ip=IP_ADDRESS

 Replace IP_ADDRESS with the IP address of the overlay network interface on
the compute node.
---

 This means that the OVN / GENEVE / VXLAN tunnels will be created on top of
that "IP_ADDRESS", right?

 So, that "IP_ADDRESS" must be configured on Linux, in advance, so OVS/OVN
can use it...

 However, if I want to use that physical NIC (where IP_ADDRESS is) card
with DPDK, the interface disappear from Linux! Since DPDK takes it over,
so, the "IP_ADDRESS" will be also gone!

 With that being said, how to specify the "IP_ADDRESS" (overlay network
local endpoint ___ ?) if there is no more NIC/IP on Linux?

 The Networking OVN DPDK doc doesn't say anything about the "overlay
endpoint" or how to deploy GENEVE on top of DPDK-based interfaces.

 https://docs.openstack.org/developer/networking-ovn/dpdk.html

 I'm a little bit confused...   =P

 BTW, when I was first trying this, I've successfully reconfiured the
"br-int" to "datapath_type=netdev" and I can see that OVS+DPDK is working,
pooling for packets but, I didn't added ANY PCI ID to DPDK config files!

Thanks!
Thiago
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20170412/c4384183/attachment.html>


More information about the OpenStack-dev mailing list