← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1692951] [NEW] [RFE] DSCP mark on the outer header

 

Public bug reported:

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

** Affects: neutron
     Importance: Undecided
         Status: New


** Tags: qos rfe

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1692951

Title:
  [RFE] DSCP mark on the outer header

Status in neutron:
  New

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

To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1692951/+subscriptions


Follow ups