Page MenuHomeVyOS Platform

Bridge interface fails if member is VXLAN interface with VTI underlay
Needs testing, NormalPublicBUG

Description

Reported via Forum https://forum.vyos.io/t/vyos-not-loading-full-config-after-reboot/5030/4

Utilizing the attached config (

) reulsts in the following boot error when enabling https://docs.vyos.io/en/latest/contributing/development.html#vyos-config-debug boot arg

cat vyos@link1:~$ cat /tmp/boot-config-trace
Traceback (most recent call last):
  File "/usr/libexec/vyos/vyos-boot-config-loader.py", line 143, in <module>
    commit_out = session.commit()
  File "/usr/lib/python3/dist-packages/vyos/configsession.py", line 156, in commit
    out = self.__run_command([COMMIT])
  File "/usr/lib/python3/dist-packages/vyos/configsession.py", line 128, in __run_command
    raise ConfigSessionError(output)
vyos.configsession.ConfigSessionError: [ interfaces ethernet eth0 ]
DEBUG/ifconfig cmd '/sbin/ethtool -K eth0 gro off'
DEBUG/ifconfig cmd '/sbin/ethtool -K eth0 gso off'
DEBUG/ifconfig cmd '/sbin/ethtool -K eth0 sg off'
DEBUG/ifconfig returned:
Actual changes:
scatter-gather: off
        tx-scatter-gather: off
tcp-segmentation-offload: off
        tx-tcp-segmentation: off [requested on]
        tx-tcp6-segmentation: off [requested on]
DEBUG/ifconfig cmd '/sbin/ethtool -K eth0 tso off'
DEBUG/ifconfig cmd '/sbin/ethtool -K eth0 ufo off'
DEBUG/ifconfig returned:
Cannot change udp-fragmentation-offload

[ interfaces ethernet eth3 ]
DEBUG/ifconfig cmd '/sbin/ethtool -K eth3 gro off'
DEBUG/ifconfig cmd '/sbin/ethtool -K eth3 gso off'
DEBUG/ifconfig cmd '/sbin/ethtool -K eth3 sg off'
DEBUG/ifconfig returned:
Actual changes:
scatter-gather: off
        tx-scatter-gather: off
tcp-segmentation-offload: off
        tx-tcp-segmentation: off [requested on]
        tx-tcp6-segmentation: off [requested on]
DEBUG/ifconfig cmd '/sbin/ethtool -K eth3 tso off'
DEBUG/ifconfig cmd '/sbin/ethtool -K eth3 ufo off'
DEBUG/ifconfig returned:
Cannot change udp-fragmentation-offload

[ interfaces ethernet eth2 ]
DEBUG/ifconfig cmd '/sbin/ethtool -K eth2 gro off'
DEBUG/ifconfig cmd '/sbin/ethtool -K eth2 gso off'
DEBUG/ifconfig cmd '/sbin/ethtool -K eth2 sg off'
DEBUG/ifconfig returned:
Actual changes:
scatter-gather: off
        tx-scatter-gather: off
tcp-segmentation-offload: off
        tx-tcp-segmentation: off [requested on]
        tx-tcp6-segmentation: off [requested on]
DEBUG/ifconfig cmd '/sbin/ethtool -K eth2 tso off'
DEBUG/ifconfig cmd '/sbin/ethtool -K eth2 ufo off'
DEBUG/ifconfig returned:
Cannot change udp-fragmentation-offload

[ interfaces ethernet eth1 ]
DEBUG/ifconfig cmd '/sbin/ethtool -K eth1 gro off'
DEBUG/ifconfig cmd '/sbin/ethtool -K eth1 gso off'
DEBUG/ifconfig cmd '/sbin/ethtool -K eth1 sg off'
DEBUG/ifconfig returned:
Actual changes:
scatter-gather: off
        tx-scatter-gather: off
tcp-segmentation-offload: off
        tx-tcp-segmentation: off [requested on]
        tx-tcp6-segmentation: off [requested on]
DEBUG/ifconfig cmd '/sbin/ethtool -K eth1 tso off'
DEBUG/ifconfig cmd '/sbin/ethtool -K eth1 ufo off'
DEBUG/ifconfig returned:
Cannot change udp-fragmentation-offload

[ interfaces vxlan vxlan241 ]
Traceback (most recent call last):
  File "/usr/libexec/vyos/conf_mode/interfaces-vxlan.py", line 248, in <module>
    verify(c)
  File "/usr/libexec/vyos/conf_mode/interfaces-vxlan.py", line 169, in verify
    underlay_mtu = int(Interface(vxlan['link']).get_mtu())
  File "/usr/lib/python3/dist-packages/vyos/ifconfig/interface.py", line 183, in __init__
    raise Exception('interface "{}" not found'.format(self.config['ifname']))
Exception: interface "vti10" not found

[[interfaces vxlan vxlan241]] failed
[ interfaces bridge br241 ]
Can not add non existing interface "vxlan241" to bridge "br241"

[[interfaces bridge br241]] failed
Commit failed

Details

Difficulty level
Unknown (require assessment)
Version
1.3-rolling-202004070927
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Bug (incorrect behavior)

Event Timeline

Currently, we don't have the option "link" in vxlan which was provided in config.

	    vxlan vxlan241 {
	        link vti10
	        mtu 1500
	        remote 10.0.0.3
	        vni 241
	    }
	}

So we can't reproduce it.

@c-po Can we close it?

I will check next couple of days

In latest rolling releases this will break b/c of:

Traceback (most recent call last):
  File "/usr/libexec/vyos/conf_mode/interfaces-vxlan.py", line 115, in <module>
    verify(c)
  File "/usr/libexec/vyos/conf_mode/interfaces-vxlan.py", line 73, in verify
    underlay_mtu = int(Interface(vxlan['source_interface']).get_mtu())
  File "/usr/lib/python3/dist-packages/vyos/ifconfig/interface.py", line 226, in __init__
    raise Exception(f'interface "{ifname}" not found')
Exception: interface "vti0" not found

which is correct as the interface does yet not fully exist.

That configuration does not work in 1.2.5 either - we probably should exclude vti from VXLAN source interface?

The problem is that vti interfaces are only created when VPN is configured this is done very late with priority 900. VXLAN, bridge etc (also in 1.2) use a lower priority. The only solution will be that the vti interface is added imediately and then later bound to the VPN.

My best bet here is that this can only be solved by rewriting the VPN stuff from Perl to Python.

c-po changed the task status from Open to On hold.Jul 29 2020, 6:53 PM
c-po removed c-po as the assignee of this task.
erkin set Issue type to Bug (incorrect behavior).Aug 30 2021, 7:34 AM
erkin removed a subscriber: Active contributors.
Viacheslav changed the task status from On hold to Needs testing.Jan 20 2024, 9:41 AM
Viacheslav triaged this task as Normal priority.