When updating the mtu on a network, the new mtu is correctly set in qrouter-namespace but not in snat-namespace.
Also, a stack trace is reported in l3-agent logs stating that the qr-abcdef interface is not found.
Step by step:
- create a router in DVR mode (I also have HA, but non HA is also affected)
- add an external gw
- add a network to this router
Check the network mtu on the compute on both namespaces:
$ ip netns exec qrouter-9d5352e8-4f40-49a0-a632-9406042478b8 ip l
...
18: qr-e05ab302-1b: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450
$ ip netns exec snat-9d5352e8-4f40-49a0-a632-9406042478b8 ip l
...
16: sg-7ab0954c-73: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450
(mtu is 1450)
- change the network mtu:
$ openstack network set --mtu 1400 MyNetwork
Check the network mtu on the compute on both namespaces:
$ ip netns exec qrouter-9d5352e8-4f40-49a0-a632-9406042478b8 ip l
...
18: qr-e05ab302-1b: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400
$ ip netns exec snat-9d5352e8-4f40-49a0-a632-9406042478b8 ip l
...
16: sg-7ab0954c-73: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450
In neutron-l3-agent.log file, I can see:
ERROR neutron.agent.l3.router_info [-] Network interface qr-e05ab302-1b not found in namespace snat-9d5352e8-4f40-49a0-a632-9406042478b8.: neutron.privileged.agent.linux.ip_lib.Net[..truncated..]
ERROR neutron.agent.l3.router_info Traceback (most recent call last):
ERROR neutron.agent.l3.router_info File "/usr/lib/python3/dist-packages/neutron/common/utils.py", line 167, in call
ERROR neutron.agent.l3.router_info return func(*args, **kwargs)
ERROR neutron.agent.l3.router_info File "/usr/lib/python3/dist-packages/neutron/agent/l3/router_info.py", line 1243, in process
ERROR neutron.agent.l3.router_info self._process_internal_ports()
ERROR neutron.agent.l3.router_info File "/usr/lib/python3/dist-packages/neutron/agent/l3/router_info.py", line 656, in _process_internal_ports
ERROR neutron.agent.l3.router_info interface_name, ip_cidrs, p['mtu'])
ERROR neutron.agent.l3.router_info File "/usr/lib/python3/dist-packages/neutron/agent/l3/ha_router.py", line 367, in internal_network_updated
ERROR neutron.agent.l3.router_info self._disable_ipv6_addressing_on_interface(interface_name)
ERROR neutron.agent.l3.router_info File "/usr/lib/python3/dist-packages/neutron/agent/l3/ha_router.py", line 331, in _disable_ipv6_addressing_on_interface
ERROR neutron.agent.l3.router_info ipv6_lladdr = ip_lib.get_ipv6_lladdr(device.link.address)
ERROR neutron.agent.l3.router_info File "/usr/lib/python3/dist-packages/neutron/agent/linux/ip_lib.py", line 476, in address
ERROR neutron.agent.l3.router_info return self.attributes.get('link/ether')
ERROR neutron.agent.l3.router_info File "/usr/lib/python3/dist-packages/neutron/agent/linux/ip_lib.py", line 509, in attributes
ERROR neutron.agent.l3.router_info self._parent.namespace)
ERROR neutron.agent.l3.router_info File "/usr/lib/python3/dist-packages/oslo_privsep/priv_context.py", line 247, in _wrap
ERROR neutron.agent.l3.router_info return self.channel.remote_call(name, args, kwargs)
ERROR neutron.agent.l3.router_info File "/usr/lib/python3/dist-packages/oslo_privsep/daemon.py", line 224, in remote_call
ERROR neutron.agent.l3.router_info raise exc_type(*result[2])
ERROR neutron.agent.l3.router_info neutron.privileged.agent.linux.ip_lib.NetworkInterfaceNotFound: Network interface qr-e05ab302-1b not found in namespace snat-9d5352e8-4f40-49a0-a[..truncated..]
ERROR neutron.agent.l3.router_info
Note that I am running OpenStack Victoria
I have env for that so I will try to reproduce and triage it at least.