[RFE] DSCP mark on the outer header

Bug #1692951 reported by Ali Sanhaji
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
neutron
Fix Released
Wishlist
Ali Sanhaji

Bug Description

Problem Description
===================

The QoS rule for setting the DSCP, in the neutron QoS extension, is only
marking the IP header of VM packets, meaning that, when using overlay networks
and encapsulation (e.g., VxLAN, GRE) the DSCP mark is only visible in the
inner IP header and is not visible in the outer headers.

The underlay network requires the DSCP mark to be visible on the external
header in order to implement QoS and prioritize the traffic when needed.

Reflecting this DSCP mark in the outer Ethernet header is covered by [1] and [2].

API impact
==========

A new rule outer_dscp_marking can be added to set a value for the
outer DSCP mark. This value can either be "inherit", in order to
copy the inner dscp mark, or it can be a specific value in order
to dissociate the inner header value from outer header value and
allow further possibilities in the use of DSCP marks.

A mapping between the inner DSCP mark and outer DSCP mark could
later be made using the classifier defined in [3]

Proposal
========

Unlike the ECN field, the DSCP field is not automatically copied to the
outer header during encapsulation. If we want to copy the DSCP from
the inner header to the outer header, we need to set the tunnel interfaces
(e.g. VxLAN, GRE), in either OVS or LinuxBridge, with the option "tos inherit".

In order to set a specific DSCP value to the outer header, we must be able
to identify the encapsulated packet to put the right DSCP mark in the tunnel
header. A possibility is to use the "mark" field of the skb structure [4], which
stays unchanged after encapsulation. We could for instance set the "mark" field
in OVS or Linuxbridge before encapsulation, according to the policy attached to
the port or network, then match this field after encapsulation to identify
the inner header and set the right DSCP mark in the outer header.

References
==========

[1] https://blueprints.launchpad.net/neutron/+spec/vlan-802.1p-qos
[2] https://bugs.launchpad.net/neutron/+bug/1505631
[3] https://review.openstack.org/#/c/333993/
[4] http://elixir.free-electrons.com/linux/latest/source/include/linux/skbuff.h#L790

Changed in neutron:
importance: Undecided → Wishlist
status: New → Confirmed
Revision history for this message
Ali Sanhaji (ali-sanhaji) wrote :

Hello, so, what's the next step concerning this RFE?

Revision history for this message
Slawek Kaplonski (slaweq) wrote :

Hello Ali. Thx for bringing up this RFE. I think that You should try now to talk about it with members of Neutron Drivers team https://launchpad.net/~neutron-drivers
If You need any help, You can talk with me (slaweq) or ralonsoh on IRC and/or talk about it on Neutron QoS IRC meeting (http://eavesdrop.openstack.org/#Neutron_QoS_Meeting).

Revision history for this message
Kevin Benton (kevinbenton) wrote :

Part of this is approved. Let's just start out with the implementation of inheritance in the agents. No API changes at this point in time. If we determine that operators might not want inheritance in some cases, let's just have a config knob in the agent to disable it.

Until we get some concrete use-cases for complex mixes of inheritance and overrides, let's avoid all of the data model changes.

tags: added: rfe-approved
removed: rfe
Changed in neutron:
assignee: nobody → Ali Sanhaji (ali-sanhaji)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Related fix proposed to neutron (master)

Related fix proposed to branch: master
Review: https://review.openstack.org/501267

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

Related fix proposed to branch: master
Review: https://review.openstack.org/501271

Changed in neutron:
status: Confirmed → In Progress
Changed in neutron:
assignee: Ali Sanhaji (ali-sanhaji) → Rodolfo Alonso (rodolfo-alonso-hernandez)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Change abandoned on neutron (master)

Change abandoned by Ali Sanhaji (<email address hidden>) on branch: master
Review: https://review.openstack.org/501271

Changed in neutron:
assignee: Rodolfo Alonso (rodolfo-alonso-hernandez) → Ali Sanhaji (ali-sanhaji)
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to neutron (master)

Reviewed: https://review.openstack.org/501267
Committed: https://git.openstack.org/cgit/openstack/neutron/commit/?id=6bf0788da07854573048d494065375f64803dd46
Submitter: Zuul
Branch: master

commit 6bf0788da07854573048d494065375f64803dd46
Author: Ali Sanhaji <email address hidden>
Date: Wed Sep 6 15:37:12 2017 +0200

    Adding DSCP mark and inheritance in OVS and LB tunnels outer header

    Adding ability to set DSCP field in OVS tunnels outer header, or
    inherit it from the inner header's DSCP value for OVS and linuxbridge.

    Change-Id: Ia59753ded73cd23019605668e60cfbc8841e803d
    Closes-Bug: #1692951

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

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

Akihiro Motoki (amotoki)
Changed in neutron:
milestone: none → queens-3
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.