I am observing an unexpected temporary loss of WinBox MAC-based session connection when I add an interface list to the list of bridge ports in CLI on MIPS-based switches when the interface list contains the port being used for WinBox session connection.
Steps to reproduce:
- Start with clean configuration on MIPS-based switch (I am using one of my CRS354-48P-4S+2Q+, runs the latest RouterOS 7.15.1)
- Connect computer to MGMT (ether49) port of the switch using Ethernet cable
- Log into the switch using WInBox (latest version 3.40, x64) and a MAC address of the switch
- Using CLI, create an interface list and add to it a port being used for current WinBox connection
/interface/list add name=InterfaceList.CFG
/interface/list/member add interface=ether49 list=InterfaceList.CFG
- Add a new bridge
/interface/bridge add name=Interface.CFG
- Add a previously created interface list to the list of bridge’s ports:
/interface/bridge/port add bridge=Interface.CFG interface=InterfaceList.CFG
- Observe WinBox losing connection with the switch after a few seconds, then attempting to restore it (if Auto Reconnect option is active)
Differential diagnostics:
- Only happens on MIPS-based switches, does not happen on ARM64-based routers (I tried on CCR2216-1G-12XS-2XQ and CCR2004-1G-12S+2XS, no problem there)
- Happens on multiple such switches (I own 11), so no, it is not a defective hardware.
- Happens both in terminal window CLI and in scripts run via import command.
- Does not happen when interface list does not contain the port being used for WinBox connection and only contains some other ports not being used for WInBox connection
- Does not happen when exact same sequence of actions as described in repro section is performed via GUI
- Does not happen when individual port being used for WinBox connection (ether49) is added to the bridge directly instead of adding an interface list containing such port:
# This will NOT drop WinBox connection
/interface/bridge add name=Interface.CFG
/interface/bridge/port add bridge=Interface.CFG interface=ether49
# This WILL drop WinBox connection
/interface/list add name=InterfaceList.CFG
/interface/list/member add interface=ether49 list=InterfaceList.CFG
/interface/bridge add name=Interface.CFG
/interface/bridge/port add bridge=Interface.CFG interface=InterfaceList.CFG
- If you add an interface list as a disabled port, connection is not dropped, however, as soon as you enable that added port, connection is dropped:
/interface/bridge/port
# This will not drop the connection yet
add bridge=Interface.CFG interface=InterfaceList.CFG disabled=yes
# But this will drop it:
enable [find where bridge=Interface.CFG]
Questions:
What can be causing such strange behavior and does anyone know how to avoid it in CLI? Clearly it can’t be due to some fundamental architectural limitation because connection is not getting dropped when the same action is performed via GUI on exact same equipment.