Vxlan doesn't allow for setting source-interface on unicast configurations

If you attempt to set source-interface on a unicast vxlan you get an error about no multicast group being set. Thing is in order to use IPv6 link local addresses on vxlans Linux expects a dev argument to be given to iproute2 or else it errors out. As a result it doesn’t appear as though you can setup a unicast vxlan using link locals in vyos since not setting source-interface causes iproute2 to error and setting it causes vyos to error.

Hello @Scoopta , could you please describe VyOS version, VyOS configuration, and console output when you commit changes

VyOS version is 1.3-beta-202107121144 build commit 2ba1cbb93659bc

Commands run

set interface vxlan vxlan0 vni 0
set interface vxlan vxlan0 source-address fe80::3
set interface vxlan vxlan0 remote fe80::2

If I attempt to set source-interface with

set interface vxlan vxlan0 source-interface eth0

A commit will give me

VXLAN “vxlan0” is missing mandatory underlay multicastgroup or source interface for a multicast network.

If I don’t set source-interface then committing gives

VyOS had an issue completing a command.

We are sorry that you encountered a problem while using VyOS.
There are a few things you can do to help us (and yourself):
- Make sure you are running the latest stable version of VyOS
  the code is available at https://downloads.vyos.io/?dir=release/current
- Contact us using the online help desk
- Join our community on slack where our users exchange help and advice

When reporting problems, please include as much information as possible:
- do not obfuscate any data (feel free to contact us privately if your 
  business policy requires it)
- and include all the information presented below

Report Time:      2021-07-14 20:55:22
Image Version:    VyOS 1.3-beta-202107121144
Release Train:    equuleus

Built by:         autobuild@vyos.net
Built on:         Tue 13 Jul 2021 03:42 UTC
Build UUID:       1acfd1ce-c432-4fbf-9e9e-2933807e5e5f
Build Commit ID:  2ba1cbb93659bc

Architecture:     x86_64
Boot via:         installed image
System type:      KVM guest

Hardware vendor:  QEMU
Hardware model:   Standard PC (Q35 + ICH9, 2009)
Hardware S/N:     
Hardware UUID:    Unknown

Traceback (most recent call last):
  File "/usr/libexec/vyos/conf_mode/interfaces-vxlan.py", line 116, in <module>
  File "/usr/libexec/vyos/conf_mode/interfaces-vxlan.py", line 105, in apply
    v = VXLANIf(vxlan['ifname'], **conf)
  File "/usr/lib/python3/dist-packages/vyos/ifconfig/interface.py", line 266, in __init__
  File "/usr/lib/python3/dist-packages/vyos/ifconfig/vxlan.py", line 98, in _create
  File "/usr/lib/python3/dist-packages/vyos/ifconfig/control.py", line 51, in _cmd
    return cmd(command, self.debug)
  File "/usr/lib/python3/dist-packages/vyos/util.py", line 161, in cmd
    raise OSError(code, feedback)
FileNotFoundError: [Errno 2] failed to run command: ip link add vxlan0 type vxlan id 0 dstport 8472 ttl 16 local fe80::3 remote fe80::2
exit code: 2

cmd 'ip link add vxlan0 type vxlan id 0 dstport 8472 ttl 16 local fe80::3 remote fe80::2'
returned (out):

returned (err):
Error: Local interface required for link-local local/remote addresses.

Under plain iproute2 the command I would use to do this would be

ip link add vxlan0 type vxlan id 0 dstport 0 local fe80::3 remote fe80::2 dev eth0

However I don’t know how to get vyos to add the dev eth0 to the command

I created a task for it T3683

1 Like