[RFE] Expose Open vSwitch other_config column in the API

Bug #1990842 reported by Bence Romsics
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
neutron
Fix Released
Wishlist
Bence Romsics

Bug Description

Some of our performance sensitive users would like to tweak Open vSwitch's Tx packet steering option under OpenStack:

    https://docs.openvswitch.org/en/latest/topics/userspace-tx-steering/
    available since Open vSwitch v2.17.0:
        https://github.com/openvswitch/ovs/blob/7af5c33c1629b309cbcbe3b6c9c3bd6d3b4c0abf/NEWS#L103
        https://github.com/openvswitch/ovs/commit/c18e707b2f259438633af5b23df53e1409472871

To enable that, we would like to expose some OVS interface configuration in a Neutron port's binding_profile.
Consider for example:

    openstack port create port0 --binding-profile ovs_other_config=tx-steering:hash ...
    more generally: --binding-profile ovs_other_config=foo:bar,bar:baz
    or an alternative syntax: --binding-profile ovs:other_config='{"foo": "bar", "bar": "baz"}'

Given this information, ovs-agent can set the corresponding OVS interface's other_config (using the python native interface of course, not ovs-vsctl):

    sudo ovs-vsctl set Interface ovs-interface-of-port0 other_config:tx-steering=hash
    sudo ovs-vsctl set Interface ovs-interface-of-port0 other_config:foo=bar other_config:bar=baz

Revision history for this message
Bence Romsics (bence-romsics) wrote :

Discussion topics:

1) We could whitelist the keys we accept in ovs_other_config, if needed.
2) At first (or hopefully ever), we don't need to support changing this value for a bound port.
3) Here we expose backend specific information in the API. At least we can reject it at port binding if the port is not bound by the ovs mech driver.
4) Are OVN folks interested in implementing this?
5) Do we need an API extension for this? We usually treat binding_profile as a blob that can contain anything.

Changed in neutron:
importance: Undecided → Wishlist
summary: - RFE Expose Open vSwitch other_config column in the API
+ [RFE] Expose Open vSwitch other_config column in the API
Revision history for this message
Lajos Katona (lajos-katona) wrote :

We discussed this RFE on the drivers meeting (see [1]), and we agreed to approve this RFE, with the condition of a new API extension and new port field that allows admins to expose other_config settings. The next step is to have a spec for it.

[1]: https://meetings.opendev.org/meetings/neutron_drivers/2022/neutron_drivers.2022-09-30-14.01.log.html#l-13

tags: added: rfe-approved
Revision history for this message
sean mooney (sean-k-mooney) wrote (last edit ):

we really should not do this.

the biding procife is not somignt that neutron should be writing too.
and its not an interface that admin or end users should be useign.

if you were to expose this info it should be via a separate admin only field not the binding profile.

if this is a new extension and admin only filed that is probably ok although this feels like it should leverage the qos framework in some way.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to neutron-specs (master)

Related fix proposed to branch: master
Review: https://review.opendev.org/c/openstack/neutron-specs/+/862133

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron-specs (master)

Reviewed: https://review.opendev.org/c/openstack/neutron-specs/+/862133
Committed: https://opendev.org/openstack/neutron-specs/commit/b7e53f107573e9ab2b11ddc0e43f6253ba39f29a
Submitter: "Zuul (22348)"
Branch: master

commit b7e53f107573e9ab2b11ddc0e43f6253ba39f29a
Author: Bence Romsics <email address hidden>
Date: Thu Oct 20 14:23:32 2022 +0200

    Spec: Add port hints and hint ovs-tx-steering

    Change-Id: Ia2bd912e65d5091ca17f26b6cc4b4be3fc981324
    Related-Bug: #1990842

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to neutron-specs (master)

Related fix proposed to branch: master
Review: https://review.opendev.org/c/openstack/neutron-specs/+/879043

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron-specs (master)

Reviewed: https://review.opendev.org/c/openstack/neutron-specs/+/879043
Committed: https://opendev.org/openstack/neutron-specs/commit/111a8f4828d18c75bf6698ad1044f7b10fa4edef
Submitter: "Zuul (22348)"
Branch: master

commit 111a8f4828d18c75bf6698ad1044f7b10fa4edef
Author: Bence Romsics <email address hidden>
Date: Thu Mar 30 14:22:21 2023 +0200

    port-hints: Retrofit spec to details changed during implementation

    Change-Id: Ibef6bab8aee22a4bcf107db006f6dd59f3e6a009
    Related-Bug: #1990842

Changed in neutron:
status: New → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to neutron-lib (master)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron-lib (master)

Reviewed: https://review.opendev.org/c/openstack/neutron-lib/+/881468
Committed: https://opendev.org/openstack/neutron-lib/commit/e8f1e0270be5fd15fab127ced77d10df393dacba
Submitter: "Zuul (22348)"
Branch: master

commit e8f1e0270be5fd15fab127ced77d10df393dacba
Author: Bence Romsics <email address hidden>
Date: Tue Apr 25 13:20:02 2023 +0200

    port-hint-ovs-tx-steering: Add missing api-ref response sample

    Change-Id: I8de7bb96417b85eaefd84835cd1cc8743f3158e8
    Partially-Bug: #1990842
    Related-Change (spec): https://review.opendev.org/c/openstack/neutron-specs/+/862133

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (master)

Reviewed: https://review.opendev.org/c/openstack/neutron/+/870081
Committed: https://opendev.org/openstack/neutron/commit/0390ada97c01031e675caf43b5028bb311331865
Submitter: "Zuul (22348)"
Branch: master

commit 0390ada97c01031e675caf43b5028bb311331865
Author: Bence Romsics <email address hidden>
Date: Wed Dec 28 15:58:17 2022 +0100

    port-hints: api extension

    api extension
    db model
    db migration
    ovo (including changes affecting push rpc)
    extension driver
    policies

    To enable this:

    * neutron-db-manage upgrade 6f1145bff34c
    * ml2_conf.ini:
      [ml2]
      extension_drivers += port_hints

    This patch also bumps neutron-lib requirement to 3.5.0.

    Change-Id: I80816618285d742775bc0534510c0f874f84ed2e
    Partial-Bug: #1990842
    Related-Change (spec): https://review.opendev.org/c/openstack/neutron-specs/+/862133
    Related-Change (n-lib api-def): https://review.opendev.org/c/openstack/neutron-lib/+/870080

Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.opendev.org/c/openstack/neutron/+/872905
Committed: https://opendev.org/openstack/neutron/commit/6b55589ae0b057613f758abf0ae8fd299cd1531f
Submitter: "Zuul (22348)"
Branch: master

commit 6b55589ae0b057613f758abf0ae8fd299cd1531f
Author: Bence Romsics <email address hidden>
Date: Fri Feb 3 16:06:11 2023 +0100

    port-hint-ovs-tx-steering: agent side

    In ovs-agent extract `other_config` from port `hints` and set/clear
    ovs `other_config` accordingly.

    Change-Id: I1106bc03061fd62e9baadadbe2bb4aaa8c3a6b1d
    Partial-Bug: #1990842
    Related-Change (spec): https://review.opendev.org/c/openstack/neutron-specs/+/862133

Changed in neutron:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote :

Reviewed: https://review.opendev.org/c/openstack/neutron/+/873113
Committed: https://opendev.org/openstack/neutron/commit/97d658c4ce940c4f300deb4e1636c79aaa4a35f1
Submitter: "Zuul (22348)"
Branch: master

commit 97d658c4ce940c4f300deb4e1636c79aaa4a35f1
Author: Bence Romsics <email address hidden>
Date: Wed Feb 8 13:39:39 2023 +0100

    port-hint-ovs-tx-steering: shim extension

    and a ML2 extension that does nothing, just loads the API extension.
    All the real implementation is in the agent-side change.

    To enable this:

    * ml2_conf.ini:
      [ml2]
      extension_drivers += port_hint_ovs_tx_steering

    Change-Id: I572072b3817484129a60ef68adf74ffd52b9eab8
    Closes-Bug: #1990842
    Related-Change (spec): https://review.opendev.org/c/openstack/neutron-specs/+/862133
    Related-Change (n-lib api-def): https://review.opendev.org/c/openstack/neutron-lib/+/873112

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/neutron 23.0.0.0b3

This issue was fixed in the openstack/neutron 23.0.0.0b3 development milestone.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to neutron-specs (master)

Related fix proposed to branch: master
Review: https://review.opendev.org/c/openstack/neutron-specs/+/899140

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix merged to neutron-specs (master)

Reviewed: https://review.opendev.org/c/openstack/neutron-specs/+/899140
Committed: https://opendev.org/openstack/neutron-specs/commit/4bdb10c3ca0bde97315ebd65cb5e2c0fdefd7643
Submitter: "Zuul (22348)"
Branch: master

commit 4bdb10c3ca0bde97315ebd65cb5e2c0fdefd7643
Author: Bence Romsics <email address hidden>
Date: Tue Oct 24 14:09:52 2023 +0200

    port-hints: Retrofit CLI syntax

    Fix the CLI syntax in the spec, so it shows the syntax that got merged.

    Change-Id: I94cb497609afd2c33deeead73d96cd0b65c48be9
    Related-Bug: #1990842
    Related-Change: https://review.opendev.org/c/openstack/python-openstackclient/+/882274

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.