Page MenuHomeVyOS Platform

Support Ethernet over IP (EoIP)
Needs testing, Requires assessmentPublicFEATURE REQUEST

Description

Will be good have possibility configure EoIP in VyOS for connect MikroTik/Linux.

Details

Difficulty level
Unknown (require assessment)
Version
-
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Unspecified (possibly destroys the router)

Event Timeline

Dmitry created this task.Feb 28 2020, 1:19 PM
pasik added a subscriber: pasik.Feb 28 2020, 5:15 PM
dmbaturin changed the task status from Open to Needs testing.Thu, Aug 20, 4:13 PM
dmbaturin added a subscriber: dmbaturin.

According to https://help.mikrotik.com/docs/pages/viewpage.action?pageId=24805521 , "EoIP" is simply Ethernet over GRE. We already support that, with the "gre-bridge" encapsulation.

Someone needs to test that with a Mikrotik.

Cheeze_It added a subscriber: Cheeze_It.EditedSat, Aug 22, 5:34 AM

Version of Vyos I have is:

vyos@vyos:~$ show version

Version:          VyOS 1.3-rolling-202008200357
Release Train:    equuleus

Per checking, it seems on this version of Vyos I am unable to add the GRE interface to the bridge:

Config I have is:

+tunnel tun100 {
+    encapsulation gre-bridge
+    local-ip 192.168.255.13
+    parameters {
+        ip {
+            key 10
+        }
+    }
+    remote-ip 192.168.255.9
+}

+bridge br100 {
+}

When I try to commit that I get:

[ interfaces tunnel tun100 ]
Can not set "key" for tunnel gre-bridge tun100 at tunnel creation

The other problem is, the ability to add the gre-bridge is removed it seems. When I try to from the tunnel the option is gone:

vyos@vyos# set interfaces tunnel tun100 parameters ip
Possible completions:
   key          Tunnel key
   tos          Type of Service (TOS)
   ttl          Time to live field

Per link here (https://wiki.vyos.net/wiki/IP_tunneling) there's a line that says:

set interfaces tunnel tun0 parameters ip bridge-group bridge br0

So it seems like that ability is removed. We also need to be able to set the GRE tunnel key as I believe Mikrotik uses that as the call identifier.

For reference, here's the actual packet transmission. It seems that Mikrotik uses the GRE with PPTP header (listed as GREv1), and uses a call identifier setting as can be seen below:

05:36:59.496050 IP (tos 0x0, ttl 250, id 27648, offset 0, flags [none], proto GRE (47), length 28)

    192.168.255.9 > 192.168.255.13: GREv1, Flags [key present], call 2560, no-payload, length 8

05:36:59.496096 IP (tos 0xc0, ttl 64, id 10566, offset 0, flags [none], proto ICMP (1), length 56)

    192.168.255.13 > 192.168.255.9: ICMP 192.168.255.13 protocol 47 unreachable, length 36
        IP (tos 0x0, ttl 250, id 27648, offset 0, flags [none], proto GRE (47), length 28)

    192.168.255.9 > 192.168.255.13: GREv1, Flags [key present], call 2560, no-payload, length 8
Per link here (https://wiki.vyos.net/wiki/IP_tunneling) there's a line that says:

set interfaces tunnel tun0 parameters ip bridge-group bridge br0

It's old documentation.
For adding an interface to bridge use:

set interfaces bridge br0 member interface tun100

@Viacheslav, when I try that I get the following:

Traceback (most recent call last):
  File "/usr/libexec/vyos/conf_mode/interfaces-bridge.py", line 136, in <module>
    apply(c)
  File "/usr/libexec/vyos/conf_mode/interfaces-bridge.py", line 127, in apply
    br.update(bridge)
  File "/usr/lib/python3/dist-packages/vyos/ifconfig/bridge.py", line 245, in update
    self.add_port(interface)
  File "/usr/lib/python3/dist-packages/vyos/ifconfig/bridge.py", line 180, in add_port
    return self.set_interface('add_port', interface)
  File "/usr/lib/python3/dist-packages/vyos/ifconfig/control.py", line 184, in set_interface
    return self._set_command(self.config, name, value)
  File "/usr/lib/python3/dist-packages/vyos/ifconfig/control.py", line 109, in _set_command
    return self._command_set[name].get('format', lambda _: _)(self._cmd(cmd))
  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 179, in cmd
    raise OSError(code, feedback)
FileNotFoundError: [Errno 2] failed to run command: ip link set dev tun100 master br100
returned:
exit code: 2

noteworthy:
cmd 'ip link set dev tun100 master br100'
returned (out):

returned (err):
RTNETLINK answers: Invalid argument

[[interfaces bridge br100]] failed
Commit failed

It seems attempting to put the GRE tunnel into the bridge interface it fails out from the ip command on the command line.