[NETVIRT-566] Netvirt does not set br-int to netdev with dpdk Created: 24/Mar/17 Updated: 29/May/18 Resolved: 30/Mar/17 |
|
| Status: | Resolved |
| Project: | netvirt |
| Component/s: | General |
| Affects Version/s: | Boron |
| Fix Version/s: | None |
| Type: | Bug | ||
| Reporter: | Tim Rozet | Assignee: | Unassigned |
| Resolution: | Cannot Reproduce | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: All |
||
| External issue ID: | 8078 |
| Description |
|
Right now it looks like netvirt is looking for some configuration parameter to decide if a bridge should be created as netdev or system: Configuring it this way may work for a user who wants a homogeneous deployment, but it is not valid in other scenarios. For example, in OpenStack when using controller and compute nodes, we want the compute nodes to be in netdev for br-int because they will have vhostuser ports. However, controller nodes will use Neutron DHCP agent, and therefore we want them to use system bridge br-int for regular tap interfaces. If the configuration option is not provided to netvirt, then netvirt should decide to use netdev or system based on configuration of the OVSDB node. In OVS >= 2.6 this can be determined by checking other_config: dpdk-init="true" in OVS. If DPDK is enabled, then I think it is safe for netvirt to decide to create br-int as netdev type. Otherwise it can create br-int as system. Note other_config:dpdk-init is not yet part of the OVSDB schema, so it would need to be added. Another option may be to introduce a totally new flag as other_config to each OVSDB node, so that a user may configure (per node) to enable netdev or not. |
| Comments |
| Comment by Tim Rozet [ 25/Mar/17 ] |
|
You can see dpdk is enabled in my iface_types, but br-int was created as system. [root@overcloud-novacompute-0 ~]# ovs-vsctl list open_vswitch iface_types : [dpdk, dpdkr, dpdkvhostuser, dpdkvhostuserclient, geneve, gre, internal, ipsec_gre, lisp, patch, stt, system, tap, vxlan] ovs_version : "2.6.1" |
| Comment by Josh Hershberg [ 30/Mar/17 ] |
|
(In reply to Timothy Rozet from comment #0) It certainly looks like that if (dpType != null) { ovsdbBridgeAugmentationBuilder.setDatapathType(dpType); }if (isOvsdbNodeDpdk(ovsdbNode)) { ovsdbBridgeAugmentationBuilder.setDatapathType(DatapathTypeNetdev.class); }isOvsdbNodeDpdk checks for the dpdk interface type and returns true if it exists. So no matter what the value of the configuration parameter, if the OVS has dpdk interface type, netdev will get set. |
| Comment by Tim Rozet [ 30/Mar/17 ] |
|
The reason br-int was getting set to system was due to a bug in RDO: When setting OVS to be dpdk, it requires a restart. This restart was triggering systemd to also start Neutron OVS Agent which was connecting to the switch and creating br-int as system. |