Public bug reported:

https://github.com/openstack/neutron/commit/1f8378e0ac4b8c3fc4670144e6efc51940d796ad
 was supposed to change other-config:mac-table-size to set a higher value of 
mac-table-size
option can be set for bridge. Instead, it overwrites the entire other-config 
array and thus interferes with tripleo's undercloud settings where 
other-config:hwaddr is a requirement.

neutron-openvswitch-agent thus resets the MAC address to a random value
although it should be fixed to the underlying interface's MAC>

The original bridge configuration is:
~~~
ov[root@undercloud-7 ~]# ovs-vsctl list-bridge br-ctlplane
ovs-vsctl: unknown command 'list-bridge'; use --help for help
[root@undercloud-7 ~]# ovs-vsctl list bridge br-ctlplane
_uuid               : d56235c5-4933-4334-b33b-be2134c99995
auto_attach         : []
controller          : []
datapath_id         : "0000525400ec14c2"
datapath_type       : ""
datapath_version    : "<unknown>"
external_ids        : {bridge-id=br-ctlplane}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : br-ctlplane
netflow             : []
other_config        : {hwaddr="52:54:00:ec:14:c2"}
ports               : [054cde3c-0e02-497d-ac25-be8e6992f708, 
fcbfcff7-d6b8-4bce-824d-085a681663cf]
protocols           : []
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
~~~

The new version of neutron-openvswitch-agent sets this:
~~~
2018-10-02 12:31:43.032 3949 DEBUG neutron.agent.ovsdb.impl_idl [-] Running txn 
command(idx=1): DbSetCommand(table=Bridge, col_values=(('other_config', 
{'mac-table-size': '50000'}),), record=br-ctlplane) do_commit 
/usr/lib/python2.7/site-packages/neutron/agent/ovsdb/impl_idl.py:98
~~~

Which removes the hwaddr:
~~~
[root@undercloud-7 ~]# ovs-vsctl list bridge br-ctlplane
_uuid               : 334f1314-e024-4c0e-ad6f-acddaa43bb40
auto_attach         : []
controller          : [505d73e7-4049-44b8-862c-e19e556bc051]
datapath_id         : "000016134f330e4c"
datapath_type       : system
datapath_version    : "<unknown>"
external_ids        : {bridge-id=br-ctlplane}
fail_mode           : secure
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : br-ctlplane
netflow             : []
other_config        : {mac-table-size="50000"}
ports               : [18c205e9-c869-4c0b-a24a-18e249cf4f3e, 
90ab6c75-f108-4716-a328-9c26ba7b1a75]
protocols           : ["OpenFlow10", "OpenFlow13"]
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
~~~

When it should run something similar to this manual command:
~~~
[root@undercloud-7 ~]# ovs-vsctl set bridge br-ctlplane 
other-config:mac-table-size=50000
[root@undercloud-7 ~]# ovs-vsctl list bridge br-ctlplane
_uuid               : d56235c5-4933-4334-b33b-be2134c99995
auto_attach         : []
controller          : []
datapath_id         : "0000525400ec14c2"
datapath_type       : ""
datapath_version    : "<unknown>"
external_ids        : {bridge-id=br-ctlplane}
fail_mode           : standalone
flood_vlans         : []
flow_tables         : {}
ipfix               : []
mcast_snooping_enable: false
mirrors             : []
name                : br-ctlplane
netflow             : []
other_config        : {hwaddr="52:54:00:ec:14:c2", mac-table-size="50000"}
ports               : [054cde3c-0e02-497d-ac25-be8e6992f708, 
fcbfcff7-d6b8-4bce-824d-085a681663cf]
protocols           : []
rstp_enable         : false
rstp_status         : {}
sflow               : []
status              : {}
stp_enable          : false
[root@undercloud-7 ~]# 
[root@undercloud-7 ~]# ip link ls dev br-ctlplane
14: br-ctlplane: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state 
UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:ec:14:c2 brd ff:ff:ff:ff:ff:ff
~~~

The neutron OVS agent issue can be reproduced manually:
~~~
[root@undercloud-7 ~]# ovs-vsctl set bridge br-ctlplane 
other-config='{mac-table-size=50000}'
[root@undercloud-7 ~]# ovs-vsctl list bridge br-ctlplane | grep other
other_config        : {mac-table-size="50000"}
[root@undercloud-7 ~]# ip link ls dev br-ctlplane
14: br-ctlplane: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state 
UNKNOWN mode DEFAULT group default qlen 1000
    link/ether c6:35:62:d5:34:43 brd ff:ff:ff:ff:ff:ff
[root@undercloud-7 ~]# 
~~~

** 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/1795716

Title:
  neutron-openvswitch-agent deletes existing other_config and thus
  breaks undercloud's MAC address assignment in tripleo

Status in neutron:
  New

Bug description:
  
https://github.com/openstack/neutron/commit/1f8378e0ac4b8c3fc4670144e6efc51940d796ad
 was supposed to change other-config:mac-table-size to set a higher value of 
mac-table-size
  option can be set for bridge. Instead, it overwrites the entire other-config 
array and thus interferes with tripleo's undercloud settings where 
other-config:hwaddr is a requirement.

  neutron-openvswitch-agent thus resets the MAC address to a random
  value although it should be fixed to the underlying interface's MAC>

  The original bridge configuration is:
  ~~~
  ov[root@undercloud-7 ~]# ovs-vsctl list-bridge br-ctlplane
  ovs-vsctl: unknown command 'list-bridge'; use --help for help
  [root@undercloud-7 ~]# ovs-vsctl list bridge br-ctlplane
  _uuid               : d56235c5-4933-4334-b33b-be2134c99995
  auto_attach         : []
  controller          : []
  datapath_id         : "0000525400ec14c2"
  datapath_type       : ""
  datapath_version    : "<unknown>"
  external_ids        : {bridge-id=br-ctlplane}
  fail_mode           : standalone
  flood_vlans         : []
  flow_tables         : {}
  ipfix               : []
  mcast_snooping_enable: false
  mirrors             : []
  name                : br-ctlplane
  netflow             : []
  other_config        : {hwaddr="52:54:00:ec:14:c2"}
  ports               : [054cde3c-0e02-497d-ac25-be8e6992f708, 
fcbfcff7-d6b8-4bce-824d-085a681663cf]
  protocols           : []
  rstp_enable         : false
  rstp_status         : {}
  sflow               : []
  status              : {}
  stp_enable          : false
  ~~~

  The new version of neutron-openvswitch-agent sets this:
  ~~~
  2018-10-02 12:31:43.032 3949 DEBUG neutron.agent.ovsdb.impl_idl [-] Running 
txn command(idx=1): DbSetCommand(table=Bridge, col_values=(('other_config', 
{'mac-table-size': '50000'}),), record=br-ctlplane) do_commit 
/usr/lib/python2.7/site-packages/neutron/agent/ovsdb/impl_idl.py:98
  ~~~

  Which removes the hwaddr:
  ~~~
  [root@undercloud-7 ~]# ovs-vsctl list bridge br-ctlplane
  _uuid               : 334f1314-e024-4c0e-ad6f-acddaa43bb40
  auto_attach         : []
  controller          : [505d73e7-4049-44b8-862c-e19e556bc051]
  datapath_id         : "000016134f330e4c"
  datapath_type       : system
  datapath_version    : "<unknown>"
  external_ids        : {bridge-id=br-ctlplane}
  fail_mode           : secure
  flood_vlans         : []
  flow_tables         : {}
  ipfix               : []
  mcast_snooping_enable: false
  mirrors             : []
  name                : br-ctlplane
  netflow             : []
  other_config        : {mac-table-size="50000"}
  ports               : [18c205e9-c869-4c0b-a24a-18e249cf4f3e, 
90ab6c75-f108-4716-a328-9c26ba7b1a75]
  protocols           : ["OpenFlow10", "OpenFlow13"]
  rstp_enable         : false
  rstp_status         : {}
  sflow               : []
  status              : {}
  stp_enable          : false
  ~~~

  When it should run something similar to this manual command:
  ~~~
  [root@undercloud-7 ~]# ovs-vsctl set bridge br-ctlplane 
other-config:mac-table-size=50000
  [root@undercloud-7 ~]# ovs-vsctl list bridge br-ctlplane
  _uuid               : d56235c5-4933-4334-b33b-be2134c99995
  auto_attach         : []
  controller          : []
  datapath_id         : "0000525400ec14c2"
  datapath_type       : ""
  datapath_version    : "<unknown>"
  external_ids        : {bridge-id=br-ctlplane}
  fail_mode           : standalone
  flood_vlans         : []
  flow_tables         : {}
  ipfix               : []
  mcast_snooping_enable: false
  mirrors             : []
  name                : br-ctlplane
  netflow             : []
  other_config        : {hwaddr="52:54:00:ec:14:c2", mac-table-size="50000"}
  ports               : [054cde3c-0e02-497d-ac25-be8e6992f708, 
fcbfcff7-d6b8-4bce-824d-085a681663cf]
  protocols           : []
  rstp_enable         : false
  rstp_status         : {}
  sflow               : []
  status              : {}
  stp_enable          : false
  [root@undercloud-7 ~]# 
  [root@undercloud-7 ~]# ip link ls dev br-ctlplane
  14: br-ctlplane: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 
state UNKNOWN mode DEFAULT group default qlen 1000
      link/ether 52:54:00:ec:14:c2 brd ff:ff:ff:ff:ff:ff
  ~~~

  The neutron OVS agent issue can be reproduced manually:
  ~~~
  [root@undercloud-7 ~]# ovs-vsctl set bridge br-ctlplane 
other-config='{mac-table-size=50000}'
  [root@undercloud-7 ~]# ovs-vsctl list bridge br-ctlplane | grep other
  other_config        : {mac-table-size="50000"}
  [root@undercloud-7 ~]# ip link ls dev br-ctlplane
  14: br-ctlplane: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 
state UNKNOWN mode DEFAULT group default qlen 1000
      link/ether c6:35:62:d5:34:43 brd ff:ff:ff:ff:ff:ff
  [root@undercloud-7 ~]# 
  ~~~

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

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to