Page MenuHomeVyOS Platform

Bridge interface fails if member is VXLAN interface with VTI underlay
On hold, Requires assessmentPublicBUG

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)

Related Objects

Event Timeline

c-po created this task.Apr 8 2020, 3:40 PM

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?

c-po claimed this task.Thu, Jul 23, 8:00 PM

I will check next couple of days

c-po added a comment.Wed, Jul 29, 4:43 PM

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.

c-po added a comment.Wed, Jul 29, 4:56 PM

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

c-po added a comment.EditedWed, Jul 29, 6:05 PM

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.Wed, Jul 29, 6:53 PM
c-po removed c-po as the assignee of this task.