2016-08-15 11:39 GMT-07:00 Mooney, Sean K <sean.k.moo...@intel.com>: > > > > > *From:* Daniele Di Proietto [mailto:diproiet...@ovn.org] > *Sent:* Monday, August 15, 2016 6:29 PM > *To:* Mooney, Sean K <sean.k.moo...@intel.com> > *Cc:* dev@openvswitch.org; Loftus, Ciara <ciara.lof...@intel.com> > *Subject:* Re: [ovs-dev] Remote OVS feature discovery > > > > Hi Sean, > > I'm not familiar with OpenStack, so I'm not sure that my comments make > sense for every possible use case. > > I'm not 100% sure an explicit feature discovery interface is required. If > an interface is well designed it should be possible to discover features by > "probing". We never had any problem doing that with the datapath netlink > interface, see for example check_support() in ofproto/ofproto-dpif.c > > *[Mooney, Sean K] in the past OpenStack neutron has not allowed the use of > active probing to detect features. We can query the ovsdb but not write to > it.* > > Going feature by feature: > > 1. Connection tracking > > This can easily be detected by trying to set up a flow with a connection > tracking action. If the flow setup succeeds it means that the datapath > supports connection tracking. > > > > > > *[Mooney, Sean K] this approach has been reject by the neutron core team > in the past though It is something we could bring up again. It was > previously seen as a potential security risk though if you used a dedicate > openflow table that is never otherwise used then It may be acceptable. Its > been about 2 years since I last suggested actively probing in that case to > detect vhost-user before the iface_types field was added.* > I see. I'm sure we can come up with other ways to probe the conntrack feature that don't require changes to a table. Perhaps we need some changes in OvS, but I don't see why we should involve ovsdb into something that can be handled entirely in OpenFlow.
> > > 2. Nat > > Same as connection tracking > > 3. Vhost-client mode > > The interface needs to be redefined. The fact that's not easy to do > feature detection probably means that the interface is not well defined > > 4. Jumbo frames > > We added another column in the Interface table. By looking at the schema > it should be possible to determine if the datapath supports the feature. > > *[Mooney, Sean K] yes in this case a ovs-vsctl get or similar to check if > the column is defined should work well though we can’t check the schema > directly and must query the* > > *Ovsdb. This does not work for vhost-client mode as it would be storing > the vhost-user socket path in the other_config section of the port as far > as I recall.* > Right, the interface to vhostuser client mode doesn't allow that, that's why I suggested changing the interface in response to your comments. > > > I'm sure we should be able to do the same with NSH and all the other new > features. > > *[Mooney, Sean K] for nsh assuming we have openflow push/pop action we > could possible do an active probe when we started the ovs neutron agent but > again last time I suggested this in* > > > > > > > > *Neutron active probes were not accepted. if ovs-vsctl --dry-run or > ovs-ofctl --dry-run can be used to test if a feature can be enabled then > that might be accepted in neutron unfortunately this is not the case for > example sudo ovs-vsctl --dry-run --no-wait add-port br-int fake-port -- > set interface fake-port type=fake-type ; echo $? will print 0 as the > command will always succeed as the ovsdb does not validate the type is one > of the registered types. The validation if added would have to be done > server side as the client would not always be used i.e when odl is managing > ovs. * > > This is just my opinion based on my experience so far. If some of the > developers think this is too hacky, maybe it's fine to explicitly export > the supported features. > > > > > > *[Mooney, Sean K] well the main reason I brought this up is often features > are added to ovs that require active probing to detect which to date were > not allowed to use in neutron. the other drawback to this is that for every > new feature that is added to ovs we have to come up with a new way to > detect if its there or not. im not sure if exporting the supported > features explicitly is the right solution but it would provide a > standardized interface to check for feature x. this is more of an open > question in general is remote passive ovs feature discovery something that > people think is useful or is active probing the only thing that ovs will > support in this regard.* > > Thanks, > > Daniele > > > > > > > > 2016-08-15 9:55 GMT-07:00 Mooney, Sean K <sean.k.moo...@intel.com>: > > Hi I would like to bring up a recurring problem that > > Has arisen several times with enabling new ovs features in > > OpenStack. > > > > OpenStack neutron supports many different network backend > > Including ovs which is currently the most common . > > As OpenStack has to support multiple versions of ovs both to provide > > Multi distro support and to support rolling upgrades new ovs features > > That are consumed in openstack must be enabled dynamically based on the > > Capabilities of the vswitch on the target server. > > > > An example of this today is vhost-user support. if ovs is compiled with > dpdk support > > And started with dpdk enabled the ifaces_types field in the Open_vSwitch > table will > > Contain the dpdk_vhostuser port type. If the dpdk_vhostuser port type is > found and the bridges > > Datapath type Is netdev then vhost-user is enabled for that platform in > neutron. > > > > There are many other feature that cannot be detected remotely today. > > The ovs FAQ lists a number of features that are available on different > data paths that openstack and other > > Systems may care to know about so that it can use that feature when > present and > > take appropriate action when not. e.g. place vm on a different host > running a different ovs version or fallback > > to a different code path if a new feature is not available > > https://github.com/openvswitch/ovs/blob/master/FAQ.md#q-are- > all-features-available-with-all-datapaths > > > > what I would like to ask is if we can introduce a new ovsdb table to > declare the features available in the current ovs version. > > This would involve converting the current tables in the FAQ feature > section in to static entries in the ovsdb schema in a new > > Feature table. > > Each entry in the table would be readonly and the table can be upgraded in > each release by ovsdb-tool convert to migrate/upgreade > > The schema of the current db. > > > > Note the reason I am suggesting using the ovsdb to declare the features is > that for odl and to a less extent ovn and openstack > > The ovsdb is the only interface that can be used to interact with the > vswitch remotely. > > In the special case of odl neither odl or openstack neutron have an agent > on the server running ovs > > so only ovsdb and openflow can be used. As a result tools such as > ovs-appctl or any of the other ovs-* tools cannot be used > > to support this usecase. > > > > Currently there are 3 feature that will require this or a similar feature > to enable in openstack. > > Those feature are: > > Vhost-user reconnect / vhost- user qemu:server dpdk:client mode > > UserSpace jumbo frames support > > Connection tracking > > > > Other features that this would be required for in the future include ovs > NAT,QOS polices,NSH and any other feature that is not > > Enabled on all datapath concurrently. I would expect that ovn would need a > subset of this information to be reported in the chassis table > > also in the future to enable more advanced use cases. > > > > Regards > > Sean. > > > > > > > > > > > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev