← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1736792] [NEW] DSCP marking QOS policy applied to port not properly updating OVS flow table

 

Public bug reported:

##########
Openstack Newton
OSA 14.2.4
neutron-server 9.3.2.dev3
OVS firewall_driver = openvswitch
##########

After applying a QOS DSCP-marking policy on a neutron port, the OVS
flow-table on the hosting compute node does not get properly updated
with the required flow to add the marking.  The work-around has been to
hard stop the instance, wait until the flows are removed, and re-start
the instance allowing the OVS agent to rebuild the necessary flows.
After the flows are fully rebuilt, the flow rule that marks traffic can
be seen.

neutron qos-policy-list
+--------------------------------------+------------+
| id                                   | name       |
+--------------------------------------+------------+
| b7c91afa-c1d1-436a-8543-e64f379d2a4f | dscp-green |
| e86ab2c3-3193-40ce-8301-184be922ee6f | dscp-blue  |
+--------------------------------------+------------+

neutron qos-policy-show b7c91afa-c1d1-436a-8543-e64f379d2a4f
+-----------------+-----------------------------------------------------------+
| Field           | Value                                                     |
+-----------------+-----------------------------------------------------------+
| created_at      | 2017-11-21T19:23:28Z                                      |
| description     | Green zone                                                |
| id              | b7c91afa-c1d1-436a-8543-e64f379d2a4f                      |
| name            | dscp-green                                                |
| project_id      | abcdefghilklmnop8368966eb510e105                          |
| revision_number | 2                                                         |
| rules           | 73bb97ef-33d4-4d9e-934a-e016443648ef (type: dscp_marking) |
| shared          | True                                                      |
| tenant_id       | abcdefghilklmnop8368966eb510e105                          |
| updated_at      | 2017-11-21T19:23:31Z                                      |
+-----------------+-----------------------------------------------------------+

neutron qos-dscp-marking-rule-show 73bb97ef-33d4-4d9e-934a-e016443648ef b7c91afa-c1d1-436a-8543-e64f379d2a4f
+-----------+--------------------------------------+
| Field     | Value                                |
+-----------+--------------------------------------+
| dscp_mark | 16                                   |
| id        | 73bb97ef-33d4-4d9e-934a-e016443648ef |
+-----------+--------------------------------------+

########################
Neutron port info, *prior* to any QOS policy being applied:


neutron port-show 06c15156-1cd1-4eee-b9a1-bcf379556c99
+-----------------------+----------------------------------------------------------------------------------+
| Field                 | Value                                                                            |
+-----------------------+----------------------------------------------------------------------------------+
| admin_state_up        | True                                                                             |
| allowed_address_pairs |                                                                                  |
| binding:host_id       | oscomp-ho-c200                                                                   |
| binding:profile       | {}                                                                               |
| binding:vif_details   | {"port_filter": true, "ovs_hybrid_plug": false}                                  |
| binding:vif_type      | ovs                                                                              |
| binding:vnic_type     | normal                                                                           |
| created_at            | 2017-12-06T16:50:09Z                                                             |
| description           |                                                                                  |
| device_id             | 50f90ac8-2e3b-43ee-a1fe-4728fb452382                                             |
| device_owner          | compute:nova                                                                     |
| extra_dhcp_opts       |                                                                                  |
| fixed_ips             | {"subnet_id": "3767c511-f2d2-4dc3-a222-123456791011", "ip_address": "10.0.3.10"} |
| id                    | 06c15156-1cd1-4eee-b9a1-bcf379556c99                                             |
| mac_address           | fa:16:3e:06:b1:8f                                                                |
| name                  |                                                                                  |
| network_id            | 55555555-9c52-4658-9ca3-d3715ef54ea6                                             |
| port_security_enabled | True                                                                             |
| project_id            | 35aac3ee14bd447a8782871ed1cee940                                                 |
| qos_policy_id         |                                                                                  |
| revision_number       | 9                                                                                |
| security_groups       | 26711be4-7ae8-4fbb-b097-2405bb2e4f39                                             |
| status                | ACTIVE                                                                           |
| tenant_id             | 35aac3ee14bd447a8782871ed1cee940                                                 |
| updated_at            | 2017-12-06T16:50:19Z                                                             |
+-----------------------+----------------------------------------------------------------------------------+

Partial flow table off the compute linked to port/instance

...
 cookie=0xbfa47c9e78d2597c, duration=208.710s, table=0, n_packets=102, n_bytes=10468, idle_age=3, priority=100,in_port=8 actions=load:0x8->NXM_NX_REG5[],load:0x7->NXM_NX_REG6[],resubmit(,71)
 cookie=0xbfa47c9e78d2597c, duration=208.708s, table=71, n_packets=0, n_bytes=0, idle_age=208, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=130 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=208.707s, table=71, n_packets=0, n_bytes=0, idle_age=208, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=134 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=208.707s, table=71, n_packets=1, n_bytes=78, idle_age=205, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=135 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=208.706s, table=71, n_packets=0, n_bytes=0, idle_age=208, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=136 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=208.706s, table=71, n_packets=11, n_bytes=462, idle_age=40, priority=95,arp,reg5=0x8,in_port=8,dl_src=fa:16:3e:06:b1:8f,arp_spa=10.0.3.10 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=208.705s, table=71, n_packets=2, n_bytes=698, idle_age=205, priority=80,udp,reg5=0x8,in_port=8,tp_src=68,tp_dst=67 actions=resubmit(,73)
 cookie=0xbfa47c9e78d2597c, duration=208.704s, table=71, n_packets=0, n_bytes=0, idle_age=208, priority=80,udp6,reg5=0x8,in_port=8,tp_src=546,tp_dst=547 actions=resubmit(,73)
 cookie=0xbfa47c9e78d2597c, duration=208.703s, table=71, n_packets=0, n_bytes=0, idle_age=208, priority=70,udp,reg5=0x8,in_port=8,tp_src=67,tp_dst=68 actions=drop
 cookie=0xbfa47c9e78d2597c, duration=208.703s, table=71, n_packets=0, n_bytes=0, idle_age=208, priority=70,udp6,reg5=0x8,in_port=8,tp_src=547,tp_dst=546 actions=drop
 cookie=0xbfa47c9e78d2597c, duration=208.706s, table=71, n_packets=83, n_bytes=8840, idle_age=3, priority=65,ct_state=-trk,ip,reg5=0x8,in_port=8,dl_src=fa:16:3e:06:b1:8f,nw_src=10.0.3.10 actions=ct(table=72,zone=NXM_NX_REG6[0..15])
 cookie=0xbfa47c9e78d2597c, duration=208.705s, table=71, n_packets=4, n_bytes=300, idle_age=196, priority=65,ct_state=-trk,ipv6,reg5=0x8,in_port=8,dl_src=fa:16:3e:06:b1:8f,ipv6_src=fe80::f816:3eff:fe06:b18f actions=ct(table=72,zone=NXM_NX_REG6[0..15])
 cookie=0xbfa47c9e78d2597c, duration=208.702s, table=71, n_packets=1, n_bytes=90, idle_age=205, priority=10,ct_state=-trk,reg5=0x8,in_port=8 actions=drop
 ...

TCPDump of the physical interface for outgoing traffic to 8.8.8.8 to view any markings:
tcpdump -i bond1 -n -nn -v host 8.8.8.8
16:55:48.913100 IP (tos 0x0, ttl 63, id 39606, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.3.10 > 8.8.8.8: ICMP echo request, id 21505, seq 0, length 64

(note the tos 0x0 stating that there is no DSCP mark applied.  This is expected)
########################

I then updated the port with the DSCP marking policy

neutron port-update --qos-policy b7c91afa-c1d1-436a-8543-e64f379d2a4f
06c15156-1cd1-4eee-b9a1-bcf379556c99

+-----------------------+----------------------------------------------------------------------------------+
| Field                 | Value                                                                            |
+-----------------------+----------------------------------------------------------------------------------+
| admin_state_up        | True                                                                             |
| allowed_address_pairs |                                                                                  |
| binding:host_id       | oscomp-ho-c200                                                                   |
| binding:profile       | {}                                                                               |
| binding:vif_details   | {"port_filter": true, "ovs_hybrid_plug": false}                                  |
| binding:vif_type      | ovs                                                                              |
| binding:vnic_type     | normal                                                                           |
| created_at            | 2017-12-06T16:50:09Z                                                             |
| description           |                                                                                  |
| device_id             | 50f90ac8-2e3b-43ee-a1fe-4728fb452382                                             |
| device_owner          | compute:nova                                                                     |
| extra_dhcp_opts       |                                                                                  |
| fixed_ips             | {"subnet_id": "3767c511-f2d2-4dc3-a222-123456791011", "ip_address": "10.0.3.10"} |
| id                    | 06c15156-1cd1-4eee-b9a1-bcf379556c99                                             |
| mac_address           | fa:16:3e:06:b1:8f                                                                |
| name                  |                                                                                  |
| network_id            | 55555555-9c52-4658-9ca3-d3715ef54ea6                                             |
| port_security_enabled | True                                                                             |
| project_id            | 35aac3ee14bd447a8782871ed1cee940                                                 |
| qos_policy_id         | b7c91afa-c1d1-436a-8543-e64f379d2a4f                                             |
| revision_number       | 12                                                                               |
| security_groups       | 26711be4-7ae8-4fbb-b097-2405bb2e4f39                                             |
| status                | ACTIVE                                                                           |
| tenant_id             | 35aac3ee14bd447a8782871ed1cee940                                                 |
| updated_at            | 2017-12-06T16:58:03Z                                                             |
+-----------------------+----------------------------------------------------------------------------------+

(The qos policy can been seen applied to the port)

OVS agent log files on the compute for the port-update:

2017-12-06 16:58:02.910 21677 INFO neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent [req-8a8d3edc-f0cd-450f-b77b-d46729fc7bb8 - - - - -] Port 06c15156-1cd1-4eee-b9a1-bcf379556c99 updated. Details: {u'profile': {}, u'network_qos_policy_id': None, u'qos_policy_id': u'b7c91afa-c1d1-436a-8543-e64f379d2a4f', u'allowed_address_pairs': [], u'admin_state_up': True, u'network_id': u'55555555-9c52-4658-9ca3-d3715ef54ea6', u'segmentation_id': 2007, u'device_owner': u'compute:nova', u'physical_network': u'physnet1', u'mac_address': u'fa:16:3e:06:b1:8f', u'device': u'06c15156-1cd1-4eee-b9a1-bcf379556c99', u'port_security_enabled': True, u'port_id': u'06c15156-1cd1-4eee-b9a1-bcf379556c99', u'fixed_ips': [{u'subnet_id': u'3767c511-f2d2-4dc3-a222-123456791011', u'ip_address': u'10.0.3.10'}], u'network_type': u'vlan'}
2017-12-06 16:58:09.322 21677 INFO neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent [req-8a8d3edc-f0cd-450f-b77b-d46729fc7bb8 - - - - -] Configuration for devices up [u'06c15156-1cd1-4eee-b9a1-bcf379556c99'] and devices down [] completed.

After a few minutes of waiting, there are still no flows to modify
traffic with the DSCP mark:

OVS FLOWS
...
 cookie=0xbfa47c9e78d2597c, duration=60.075s, table=0, n_packets=13, n_bytes=878, idle_age=1, priority=100,in_port=8 actions=load:0x8->NXM_NX_REG5[],load:0x7->NXM_NX_REG6[],resubmit(,71)
 cookie=0xbfa47c9e78d2597c, duration=60.073s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=130 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=60.072s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=134 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=60.072s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=135 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=60.071s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=136 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=60.071s, table=71, n_packets=2, n_bytes=84, idle_age=23, priority=95,arp,reg5=0x8,in_port=8,dl_src=fa:16:3e:06:b1:8f,arp_spa=10.0.3.10 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=60.070s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=80,udp,reg5=0x8,in_port=8,tp_src=68,tp_dst=67 actions=resubmit(,73)
 cookie=0xbfa47c9e78d2597c, duration=60.069s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=80,udp6,reg5=0x8,in_port=8,tp_src=546,tp_dst=547 actions=resubmit(,73)
 cookie=0xbfa47c9e78d2597c, duration=60.069s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=70,udp,reg5=0x8,in_port=8,tp_src=67,tp_dst=68 actions=drop
 cookie=0xbfa47c9e78d2597c, duration=60.068s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=70,udp6,reg5=0x8,in_port=8,tp_src=547,tp_dst=546 actions=drop
 cookie=0xbfa47c9e78d2597c, duration=60.071s, table=71, n_packets=11, n_bytes=794, idle_age=1, priority=65,ct_state=-trk,ip,reg5=0x8,in_port=8,dl_src=fa:16:3e:06:b1:8f,nw_src=10.0.3.10 actions=ct(table=72,zone=NXM_NX_REG6[0..15])
 cookie=0xbfa47c9e78d2597c, duration=60.070s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=65,ct_state=-trk,ipv6,reg5=0x8,in_port=8,dl_src=fa:16:3e:06:b1:8f,ipv6_src=fe80::f816:3eff:fe06:b18f actions=ct(table=72,zone=NXM_NX_REG6[0..15])
 cookie=0xbfa47c9e78d2597c, duration=60.068s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=10,ct_state=-trk,reg5=0x8,in_port=8 actions=drop
 ...

TCPDump still shows no tos mark:

TCPDUMP
tcpdump -i bond1 -n -nn -v host 8.8.8.8
17:00:37.167559 IP (tos 0x0, ttl 63, id 38836, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.3.10 > 8.8.8.8: ICMP echo request, id 21761, seq 0, length 64

########################

As a workaround, the instance was hard stopped allowing the flows to be
deleted.  Then the instance is started and the flows re-created.

nova stop instance_id
(wait a few moments)
nova start instance_id

Here is a new snipit of the flow-table with the "mod_nw_tos" action.  (first line below).
OVS FLOWS
...
 cookie=0xb6082f15d4334178, duration=447.524s, table=0, n_packets=30, n_bytes=3864, idle_age=3, priority=65535,reg2=0,in_port=10 actions=mod_nw_tos:64,load:0x37->NXM_NX_REG2[0..5],resubmit(,0)
 cookie=0xbfa47c9e78d2597c, duration=447.234s, table=0, n_packets=30, n_bytes=3864, idle_age=3, priority=100,in_port=10 actions=load:0xa->NXM_NX_REG5[],load:0x7->NXM_NX_REG6[],resubmit(,71)
 cookie=0xbfa47c9e78d2597c, duration=447.232s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=95,icmp6,reg5=0xa,in_port=10,icmp_type=130 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=447.232s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=95,icmp6,reg5=0xa,in_port=10,icmp_type=134 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=447.231s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=95,icmp6,reg5=0xa,in_port=10,icmp_type=135 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=447.230s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=95,icmp6,reg5=0xa,in_port=10,icmp_type=136 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=447.230s, table=71, n_packets=5, n_bytes=210, idle_age=15, priority=95,arp,reg5=0xa,in_port=10,dl_src=fa:16:3e:06:b1:8f,arp_spa=10.0.3.10 actions=NORMAL
 cookie=0xbfa47c9e78d2597c, duration=447.229s, table=71, n_packets=2, n_bytes=698, idle_age=390, priority=80,udp,reg5=0xa,in_port=10,tp_src=68,tp_dst=67 actions=resubmit(,73)
 cookie=0xbfa47c9e78d2597c, duration=447.228s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=80,udp6,reg5=0xa,in_port=10,tp_src=546,tp_dst=547 actions=resubmit(,73)
 cookie=0xbfa47c9e78d2597c, duration=447.228s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=70,udp,reg5=0xa,in_port=10,tp_src=67,tp_dst=68 actions=drop
 cookie=0xbfa47c9e78d2597c, duration=447.227s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=70,udp6,reg5=0xa,in_port=10,tp_src=547,tp_dst=546 actions=drop
 cookie=0xbfa47c9e78d2597c, duration=447.230s, table=71, n_packets=20, n_bytes=2726, idle_age=3, priority=65,ct_state=-trk,ip,reg5=0xa,in_port=10,dl_src=fa:16:3e:06:b1:8f,nw_src=10.0.3.10 actions=ct(table=72,zone=NXM_NX_REG6[0..15
])
 cookie=0xbfa47c9e78d2597c, duration=447.230s, table=71, n_packets=3, n_bytes=230, idle_age=441, priority=65,ct_state=-trk,ipv6,reg5=0xa,in_port=10,dl_src=fa:16:3e:06:b1:8f,ipv6_src=fe80::f816:3eff:fe06:b18f actions=ct(table=72,zo
ne=NXM_NX_REG6[0..15])
 cookie=0xbfa47c9e78d2597c, duration=447.227s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=10,ct_state=-trk,reg5=0xa,in_port=10 actions=drop
...


TCPDUMP:
tcpdump -i bond1 -n -nn -v host 8.8.8.8
17:13:37.694875 IP (tos 0x40, ttl 63, id 32155, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.3.10 > 8.8.8.8: ICMP echo request, id 12801, seq 0, length 64

TCPDump show tos 0x40
########################

Interestingly, we do not see the same behavior on OVS environments using
the hybrid firewall driver.  We only see it when using the OVS firewall
driver.

** Affects: neutron
     Importance: Undecided
         Status: New

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

Title:
  DSCP marking QOS policy applied to port not properly updating OVS flow
  table

Status in neutron:
  New

Bug description:
  ##########
  Openstack Newton
  OSA 14.2.4
  neutron-server 9.3.2.dev3
  OVS firewall_driver = openvswitch
  ##########

  After applying a QOS DSCP-marking policy on a neutron port, the OVS
  flow-table on the hosting compute node does not get properly updated
  with the required flow to add the marking.  The work-around has been
  to hard stop the instance, wait until the flows are removed, and re-
  start the instance allowing the OVS agent to rebuild the necessary
  flows.  After the flows are fully rebuilt, the flow rule that marks
  traffic can be seen.

  neutron qos-policy-list
  +--------------------------------------+------------+
  | id                                   | name       |
  +--------------------------------------+------------+
  | b7c91afa-c1d1-436a-8543-e64f379d2a4f | dscp-green |
  | e86ab2c3-3193-40ce-8301-184be922ee6f | dscp-blue  |
  +--------------------------------------+------------+

  neutron qos-policy-show b7c91afa-c1d1-436a-8543-e64f379d2a4f
  +-----------------+-----------------------------------------------------------+
  | Field           | Value                                                     |
  +-----------------+-----------------------------------------------------------+
  | created_at      | 2017-11-21T19:23:28Z                                      |
  | description     | Green zone                                                |
  | id              | b7c91afa-c1d1-436a-8543-e64f379d2a4f                      |
  | name            | dscp-green                                                |
  | project_id      | abcdefghilklmnop8368966eb510e105                          |
  | revision_number | 2                                                         |
  | rules           | 73bb97ef-33d4-4d9e-934a-e016443648ef (type: dscp_marking) |
  | shared          | True                                                      |
  | tenant_id       | abcdefghilklmnop8368966eb510e105                          |
  | updated_at      | 2017-11-21T19:23:31Z                                      |
  +-----------------+-----------------------------------------------------------+

  neutron qos-dscp-marking-rule-show 73bb97ef-33d4-4d9e-934a-e016443648ef b7c91afa-c1d1-436a-8543-e64f379d2a4f
  +-----------+--------------------------------------+
  | Field     | Value                                |
  +-----------+--------------------------------------+
  | dscp_mark | 16                                   |
  | id        | 73bb97ef-33d4-4d9e-934a-e016443648ef |
  +-----------+--------------------------------------+

  ########################
  Neutron port info, *prior* to any QOS policy being applied:

  
  neutron port-show 06c15156-1cd1-4eee-b9a1-bcf379556c99
  +-----------------------+----------------------------------------------------------------------------------+
  | Field                 | Value                                                                            |
  +-----------------------+----------------------------------------------------------------------------------+
  | admin_state_up        | True                                                                             |
  | allowed_address_pairs |                                                                                  |
  | binding:host_id       | oscomp-ho-c200                                                                   |
  | binding:profile       | {}                                                                               |
  | binding:vif_details   | {"port_filter": true, "ovs_hybrid_plug": false}                                  |
  | binding:vif_type      | ovs                                                                              |
  | binding:vnic_type     | normal                                                                           |
  | created_at            | 2017-12-06T16:50:09Z                                                             |
  | description           |                                                                                  |
  | device_id             | 50f90ac8-2e3b-43ee-a1fe-4728fb452382                                             |
  | device_owner          | compute:nova                                                                     |
  | extra_dhcp_opts       |                                                                                  |
  | fixed_ips             | {"subnet_id": "3767c511-f2d2-4dc3-a222-123456791011", "ip_address": "10.0.3.10"} |
  | id                    | 06c15156-1cd1-4eee-b9a1-bcf379556c99                                             |
  | mac_address           | fa:16:3e:06:b1:8f                                                                |
  | name                  |                                                                                  |
  | network_id            | 55555555-9c52-4658-9ca3-d3715ef54ea6                                             |
  | port_security_enabled | True                                                                             |
  | project_id            | 35aac3ee14bd447a8782871ed1cee940                                                 |
  | qos_policy_id         |                                                                                  |
  | revision_number       | 9                                                                                |
  | security_groups       | 26711be4-7ae8-4fbb-b097-2405bb2e4f39                                             |
  | status                | ACTIVE                                                                           |
  | tenant_id             | 35aac3ee14bd447a8782871ed1cee940                                                 |
  | updated_at            | 2017-12-06T16:50:19Z                                                             |
  +-----------------------+----------------------------------------------------------------------------------+

  Partial flow table off the compute linked to port/instance

  ...
   cookie=0xbfa47c9e78d2597c, duration=208.710s, table=0, n_packets=102, n_bytes=10468, idle_age=3, priority=100,in_port=8 actions=load:0x8->NXM_NX_REG5[],load:0x7->NXM_NX_REG6[],resubmit(,71)
   cookie=0xbfa47c9e78d2597c, duration=208.708s, table=71, n_packets=0, n_bytes=0, idle_age=208, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=130 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=208.707s, table=71, n_packets=0, n_bytes=0, idle_age=208, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=134 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=208.707s, table=71, n_packets=1, n_bytes=78, idle_age=205, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=135 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=208.706s, table=71, n_packets=0, n_bytes=0, idle_age=208, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=136 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=208.706s, table=71, n_packets=11, n_bytes=462, idle_age=40, priority=95,arp,reg5=0x8,in_port=8,dl_src=fa:16:3e:06:b1:8f,arp_spa=10.0.3.10 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=208.705s, table=71, n_packets=2, n_bytes=698, idle_age=205, priority=80,udp,reg5=0x8,in_port=8,tp_src=68,tp_dst=67 actions=resubmit(,73)
   cookie=0xbfa47c9e78d2597c, duration=208.704s, table=71, n_packets=0, n_bytes=0, idle_age=208, priority=80,udp6,reg5=0x8,in_port=8,tp_src=546,tp_dst=547 actions=resubmit(,73)
   cookie=0xbfa47c9e78d2597c, duration=208.703s, table=71, n_packets=0, n_bytes=0, idle_age=208, priority=70,udp,reg5=0x8,in_port=8,tp_src=67,tp_dst=68 actions=drop
   cookie=0xbfa47c9e78d2597c, duration=208.703s, table=71, n_packets=0, n_bytes=0, idle_age=208, priority=70,udp6,reg5=0x8,in_port=8,tp_src=547,tp_dst=546 actions=drop
   cookie=0xbfa47c9e78d2597c, duration=208.706s, table=71, n_packets=83, n_bytes=8840, idle_age=3, priority=65,ct_state=-trk,ip,reg5=0x8,in_port=8,dl_src=fa:16:3e:06:b1:8f,nw_src=10.0.3.10 actions=ct(table=72,zone=NXM_NX_REG6[0..15])
   cookie=0xbfa47c9e78d2597c, duration=208.705s, table=71, n_packets=4, n_bytes=300, idle_age=196, priority=65,ct_state=-trk,ipv6,reg5=0x8,in_port=8,dl_src=fa:16:3e:06:b1:8f,ipv6_src=fe80::f816:3eff:fe06:b18f actions=ct(table=72,zone=NXM_NX_REG6[0..15])
   cookie=0xbfa47c9e78d2597c, duration=208.702s, table=71, n_packets=1, n_bytes=90, idle_age=205, priority=10,ct_state=-trk,reg5=0x8,in_port=8 actions=drop
   ...

  TCPDump of the physical interface for outgoing traffic to 8.8.8.8 to view any markings:
  tcpdump -i bond1 -n -nn -v host 8.8.8.8
  16:55:48.913100 IP (tos 0x0, ttl 63, id 39606, offset 0, flags [DF], proto ICMP (1), length 84)
      10.0.3.10 > 8.8.8.8: ICMP echo request, id 21505, seq 0, length 64

  (note the tos 0x0 stating that there is no DSCP mark applied.  This is expected)
  ########################

  I then updated the port with the DSCP marking policy

  neutron port-update --qos-policy b7c91afa-c1d1-436a-8543-e64f379d2a4f
  06c15156-1cd1-4eee-b9a1-bcf379556c99

  +-----------------------+----------------------------------------------------------------------------------+
  | Field                 | Value                                                                            |
  +-----------------------+----------------------------------------------------------------------------------+
  | admin_state_up        | True                                                                             |
  | allowed_address_pairs |                                                                                  |
  | binding:host_id       | oscomp-ho-c200                                                                   |
  | binding:profile       | {}                                                                               |
  | binding:vif_details   | {"port_filter": true, "ovs_hybrid_plug": false}                                  |
  | binding:vif_type      | ovs                                                                              |
  | binding:vnic_type     | normal                                                                           |
  | created_at            | 2017-12-06T16:50:09Z                                                             |
  | description           |                                                                                  |
  | device_id             | 50f90ac8-2e3b-43ee-a1fe-4728fb452382                                             |
  | device_owner          | compute:nova                                                                     |
  | extra_dhcp_opts       |                                                                                  |
  | fixed_ips             | {"subnet_id": "3767c511-f2d2-4dc3-a222-123456791011", "ip_address": "10.0.3.10"} |
  | id                    | 06c15156-1cd1-4eee-b9a1-bcf379556c99                                             |
  | mac_address           | fa:16:3e:06:b1:8f                                                                |
  | name                  |                                                                                  |
  | network_id            | 55555555-9c52-4658-9ca3-d3715ef54ea6                                             |
  | port_security_enabled | True                                                                             |
  | project_id            | 35aac3ee14bd447a8782871ed1cee940                                                 |
  | qos_policy_id         | b7c91afa-c1d1-436a-8543-e64f379d2a4f                                             |
  | revision_number       | 12                                                                               |
  | security_groups       | 26711be4-7ae8-4fbb-b097-2405bb2e4f39                                             |
  | status                | ACTIVE                                                                           |
  | tenant_id             | 35aac3ee14bd447a8782871ed1cee940                                                 |
  | updated_at            | 2017-12-06T16:58:03Z                                                             |
  +-----------------------+----------------------------------------------------------------------------------+

  (The qos policy can been seen applied to the port)

  OVS agent log files on the compute for the port-update:

  2017-12-06 16:58:02.910 21677 INFO neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent [req-8a8d3edc-f0cd-450f-b77b-d46729fc7bb8 - - - - -] Port 06c15156-1cd1-4eee-b9a1-bcf379556c99 updated. Details: {u'profile': {}, u'network_qos_policy_id': None, u'qos_policy_id': u'b7c91afa-c1d1-436a-8543-e64f379d2a4f', u'allowed_address_pairs': [], u'admin_state_up': True, u'network_id': u'55555555-9c52-4658-9ca3-d3715ef54ea6', u'segmentation_id': 2007, u'device_owner': u'compute:nova', u'physical_network': u'physnet1', u'mac_address': u'fa:16:3e:06:b1:8f', u'device': u'06c15156-1cd1-4eee-b9a1-bcf379556c99', u'port_security_enabled': True, u'port_id': u'06c15156-1cd1-4eee-b9a1-bcf379556c99', u'fixed_ips': [{u'subnet_id': u'3767c511-f2d2-4dc3-a222-123456791011', u'ip_address': u'10.0.3.10'}], u'network_type': u'vlan'}
  2017-12-06 16:58:09.322 21677 INFO neutron.plugins.ml2.drivers.openvswitch.agent.ovs_neutron_agent [req-8a8d3edc-f0cd-450f-b77b-d46729fc7bb8 - - - - -] Configuration for devices up [u'06c15156-1cd1-4eee-b9a1-bcf379556c99'] and devices down [] completed.

  After a few minutes of waiting, there are still no flows to modify
  traffic with the DSCP mark:

  OVS FLOWS
  ...
   cookie=0xbfa47c9e78d2597c, duration=60.075s, table=0, n_packets=13, n_bytes=878, idle_age=1, priority=100,in_port=8 actions=load:0x8->NXM_NX_REG5[],load:0x7->NXM_NX_REG6[],resubmit(,71)
   cookie=0xbfa47c9e78d2597c, duration=60.073s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=130 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=60.072s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=134 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=60.072s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=135 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=60.071s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=95,icmp6,reg5=0x8,in_port=8,icmp_type=136 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=60.071s, table=71, n_packets=2, n_bytes=84, idle_age=23, priority=95,arp,reg5=0x8,in_port=8,dl_src=fa:16:3e:06:b1:8f,arp_spa=10.0.3.10 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=60.070s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=80,udp,reg5=0x8,in_port=8,tp_src=68,tp_dst=67 actions=resubmit(,73)
   cookie=0xbfa47c9e78d2597c, duration=60.069s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=80,udp6,reg5=0x8,in_port=8,tp_src=546,tp_dst=547 actions=resubmit(,73)
   cookie=0xbfa47c9e78d2597c, duration=60.069s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=70,udp,reg5=0x8,in_port=8,tp_src=67,tp_dst=68 actions=drop
   cookie=0xbfa47c9e78d2597c, duration=60.068s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=70,udp6,reg5=0x8,in_port=8,tp_src=547,tp_dst=546 actions=drop
   cookie=0xbfa47c9e78d2597c, duration=60.071s, table=71, n_packets=11, n_bytes=794, idle_age=1, priority=65,ct_state=-trk,ip,reg5=0x8,in_port=8,dl_src=fa:16:3e:06:b1:8f,nw_src=10.0.3.10 actions=ct(table=72,zone=NXM_NX_REG6[0..15])
   cookie=0xbfa47c9e78d2597c, duration=60.070s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=65,ct_state=-trk,ipv6,reg5=0x8,in_port=8,dl_src=fa:16:3e:06:b1:8f,ipv6_src=fe80::f816:3eff:fe06:b18f actions=ct(table=72,zone=NXM_NX_REG6[0..15])
   cookie=0xbfa47c9e78d2597c, duration=60.068s, table=71, n_packets=0, n_bytes=0, idle_age=60, priority=10,ct_state=-trk,reg5=0x8,in_port=8 actions=drop
   ...

  TCPDump still shows no tos mark:

  TCPDUMP
  tcpdump -i bond1 -n -nn -v host 8.8.8.8
  17:00:37.167559 IP (tos 0x0, ttl 63, id 38836, offset 0, flags [DF], proto ICMP (1), length 84)
      10.0.3.10 > 8.8.8.8: ICMP echo request, id 21761, seq 0, length 64

  ########################

  As a workaround, the instance was hard stopped allowing the flows to
  be deleted.  Then the instance is started and the flows re-created.

  nova stop instance_id
  (wait a few moments)
  nova start instance_id

  Here is a new snipit of the flow-table with the "mod_nw_tos" action.  (first line below).
  OVS FLOWS
  ...
   cookie=0xb6082f15d4334178, duration=447.524s, table=0, n_packets=30, n_bytes=3864, idle_age=3, priority=65535,reg2=0,in_port=10 actions=mod_nw_tos:64,load:0x37->NXM_NX_REG2[0..5],resubmit(,0)
   cookie=0xbfa47c9e78d2597c, duration=447.234s, table=0, n_packets=30, n_bytes=3864, idle_age=3, priority=100,in_port=10 actions=load:0xa->NXM_NX_REG5[],load:0x7->NXM_NX_REG6[],resubmit(,71)
   cookie=0xbfa47c9e78d2597c, duration=447.232s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=95,icmp6,reg5=0xa,in_port=10,icmp_type=130 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=447.232s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=95,icmp6,reg5=0xa,in_port=10,icmp_type=134 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=447.231s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=95,icmp6,reg5=0xa,in_port=10,icmp_type=135 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=447.230s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=95,icmp6,reg5=0xa,in_port=10,icmp_type=136 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=447.230s, table=71, n_packets=5, n_bytes=210, idle_age=15, priority=95,arp,reg5=0xa,in_port=10,dl_src=fa:16:3e:06:b1:8f,arp_spa=10.0.3.10 actions=NORMAL
   cookie=0xbfa47c9e78d2597c, duration=447.229s, table=71, n_packets=2, n_bytes=698, idle_age=390, priority=80,udp,reg5=0xa,in_port=10,tp_src=68,tp_dst=67 actions=resubmit(,73)
   cookie=0xbfa47c9e78d2597c, duration=447.228s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=80,udp6,reg5=0xa,in_port=10,tp_src=546,tp_dst=547 actions=resubmit(,73)
   cookie=0xbfa47c9e78d2597c, duration=447.228s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=70,udp,reg5=0xa,in_port=10,tp_src=67,tp_dst=68 actions=drop
   cookie=0xbfa47c9e78d2597c, duration=447.227s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=70,udp6,reg5=0xa,in_port=10,tp_src=547,tp_dst=546 actions=drop
   cookie=0xbfa47c9e78d2597c, duration=447.230s, table=71, n_packets=20, n_bytes=2726, idle_age=3, priority=65,ct_state=-trk,ip,reg5=0xa,in_port=10,dl_src=fa:16:3e:06:b1:8f,nw_src=10.0.3.10 actions=ct(table=72,zone=NXM_NX_REG6[0..15
  ])
   cookie=0xbfa47c9e78d2597c, duration=447.230s, table=71, n_packets=3, n_bytes=230, idle_age=441, priority=65,ct_state=-trk,ipv6,reg5=0xa,in_port=10,dl_src=fa:16:3e:06:b1:8f,ipv6_src=fe80::f816:3eff:fe06:b18f actions=ct(table=72,zo
  ne=NXM_NX_REG6[0..15])
   cookie=0xbfa47c9e78d2597c, duration=447.227s, table=71, n_packets=0, n_bytes=0, idle_age=447, priority=10,ct_state=-trk,reg5=0xa,in_port=10 actions=drop
  ...

  
  TCPDUMP:
  tcpdump -i bond1 -n -nn -v host 8.8.8.8
  17:13:37.694875 IP (tos 0x40, ttl 63, id 32155, offset 0, flags [DF], proto ICMP (1), length 84)
      10.0.3.10 > 8.8.8.8: ICMP echo request, id 12801, seq 0, length 64

  TCPDump show tos 0x40
  ########################

  Interestingly, we do not see the same behavior on OVS environments
  using the hybrid firewall driver.  We only see it when using the OVS
  firewall driver.

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