Manual:CRS3xx series switches
The Cloud Router Switch series are highly integrated switches with high performance CPU and feature-rich packet processor. The CRS switches can be designed into various Ethernet applications including unmanaged switch, Layer 2 managed switch, carrier switch and wired unified packet processing.
|Quality of Service (QoS)||
|Access Control List||
This table clarifies main differences between Cloud Router Switch models.
|Model||Switch Chip||CPU||Cores||Wireless||SFP+ port||ACL rules||Unicast FDB entries||Jumbo Frame (Bytes)|
- FDB - Forwarding Database
- MDB - Multicast Database
- SVL - Shared VLAN Learning
- IVL - Independent VLAN Learning
- PVID - Port VLAN ID
- ACL - Access Control List
- CVID - Customer VLAN ID
- SVID - Service VLAN ID
In order to setup port switching on CRS3xx series switches, check the Bridge Hardware Offloading page.
Since RouterOS v6.41 bridges provides VLAN aware Layer2 forwarding and VLAN tag modifications within the bridge. This set of features makes bridge operation more like a traditional Ethernet switch and allows to overcome Spanning Tree compatibilty issues compared to configuration when tunnel-like VLAN interfaces are bridged. Bridge VLAN Filtering configuration is highly recommended to comply with STP (802.1D), RSTP (802.1w) standards and is mandatory to enable MSTP (802.1s) support in RouterOS.
The main VLAN setting is
vlan-filtering which globally controls vlan-awareness and VLAN tag processing in the bridge. If
vlan-filtering=no, bridge ignores VLAN tags, works in a shared-VLAN-learning (SVL) mode and cannot modify VLAN tags of packets. Turning on
vlan-filtering enables all bridge VLAN related functionality and independent-VLAN-learning (IVL) mode. Besides joining the ports for Layer2 forwarding, bridge itself is also an interface therefore it has Port VLAN ID (pvid).
|vlan-filtering (yes | no; Default: no)||Globally enables or disables VLAN functionality for bridge.|
|pvid (1..4094; Default: 1)||Port VLAN ID (pvid) specifies which VLAN the untagged ingress traffic is assigned to. It applies e.g. to frames sent from bridge IP and destined to a bridge port.|
/interface bridge port
|frame-types (admit-all | admit-only-untagged-and-priority-tagged | admit-only-vlan-tagged; Default: admit-all)||Specifies allowed ingress frame types on a bridge port. Only has effect when ingress-filtering is enabled.|
|ingress-filtering (yes | no; Default: no)||Enables or disables ingress filtering, which checks if an entry exists for the ingress port and the VLAN ID in the bridge VLAN table. Should be used with frame-types to specify if the ingress traffic should be tagged or untagged.|
|pvid (1..4094; Default: 1)||Port VLAN ID (pvid) specifies which VLAN the untagged ingress traffic is assigned to.|
Bridge VLAN table represents per-VLAN port mapping with an egress VLAN tag action.
tagged ports send out frames with a learned VLAN ID tag.
untagged ports remove VLAN tag before sending out frames if the learned VLAN ID matches the port
/interface bridge vlan
|bridge (name)||The bridge interface which the respective VLAN entry is intended for.|
|disabled (yes | no; Default: no)||Enables or disables Bridge VLAN entry.|
|tagged (interfaces; Default: none)||Interface list with a VLAN tag adding action in egress. This setting accepts comma separated values. E.g.
|untagged (interfaces; Default: none)||Interface list with a VLAN tag removing action in egress. This setting accepts comma separated values. E.g.
|vlan-ids (1..4094)||The list of VLAN IDs for certain port configuration. This setting accepts VLAN ID range as well as comma separated values. E.g.
Port Based VLAN
- The configuration for CRS3xx switches is described in the Bridge VLAN FIltering section.
MAC Based VLAN
- Enable switching on ports by creating a bridge with enabled hw-offloading.
/interface bridge add name=bridge1 vlan-filtering=yes /interface bridge port add bridge=bridge1 interface=ether2 hw=yes add bridge=bridge1 interface=ether7 hw=yes
- Add VLANs in the Bridge VLAN table and specify ports.
/interface bridge vlan add bridge=bridge1 tagged=ether2 untagged=ether7 vlan-ids=200,300,400
- Add Switch rules which assign VLAN id based on MAC address.
/interface ethernet switch rule add switch=switch1 ports=ether7 src-mac-address=A4:12:6D:77:94:43/FF:FF:FF:FF:FF:FF new-vlan-id=200 add switch=switch1 ports=ether7 src-mac-address=84:37:62:DF:04:20/FF:FF:FF:FF:FF:FF new-vlan-id=300 add switch=switch1 ports=ether7 src-mac-address=E7:16:34:A1:CD:18/FF:FF:FF:FF:FF:FF new-vlan-id=400
Protocol Based VLAN
- Enable switching on ports by creating a bridge with enabled hw-offloading.
/interface bridge add name=bridge1 vlan-filtering=yes /interface bridge port add bridge=bridge1 interface=ether2 hw=yes add bridge=bridge1 interface=ether6 hw=yes add bridge=bridge1 interface=ether7 hw=yes add bridge=bridge1 interface=ether8 hw=yes
- Add VLANs in the Bridge VLAN table and specify ports.
/interface bridge vlan add bridge=bridge1 tagged=ether2 untagged=ether6 vlan-ids=200 add bridge=bridge1 tagged=ether2 untagged=ether7 vlan-ids=300 add bridge=bridge1 tagged=ether2 untagged=ether8 vlan-ids=400
- Add Switch rules which assign VLAN id based on MAC protocol.
/interface ethernet switch rule add mac-protocol=ip new-vlan-id=200 ports=ether6 switch=switch1 add mac-protocol=ipx new-vlan-id=300 ports=ether7 switch=switch1 add mac-protocol=0x80F3 new-vlan-id=400 ports=ether8 switch=switch1
VLAN Tunneling (Q-in-Q)
Since RouterOS v6.43 it is possible to use a provider bridge (IEEE 802.1ad) VLAN filtering and hardware offloading at the same time on CRS3xx series switches. The configuration for CRS3xx switches is described in the Bridge VLAN Tunneling (Q-in-Q) section.
Ingress VLAN translation
It is possible to translate a certain VLAN ID to a different VLAN ID using ACL rules on an ingress port. In this example we create two ACL rules, allowing a bidirectional communication. This can be done by doing the following:
- Create a new bridge and add ports to it with hardware offloading:
/interface bridge add name=bridge1 vlan-filtering=no /interface bridge port add interface=ether1 bridge=bridge1 hw=yes add interface=ether2 bridge=bridge1 hw=yes
- Add ACL rules to translate a VLAN ID in each direction:
/interface ethernet switch rule add new-dst-ports=ether2 new-vlan-id=20 ports=ether1 switch=switch1 vlan-id=10 add new-dst-ports=ether1 new-vlan-id=10 ports=ether2 switch=switch1 vlan-id=20
- Add both VLAN IDs to the bridge VLAN table:
/interface bridge vlan add bridge=bridge1 tagged=ether1 vlan-ids=10 add bridge=bridge1 tagged=ether2 vlan-ids=20
- Enable bridge VLAN filtering:
/interface bridge set bridge1 vlan-filtering=yes
CRS3xx series switches are capable of running STP, RSTP and MSTP on a hardware level. For more detailed information you should check out the Spanning Tree Protocol manual page.
Since RouterOS v6.42 all CRS3xx series switches support hardware offloading with bonding interfaces. Only 802.3ad and balance-xor bonding modes are hardware offloaded, other bonding modes will use the CPU's resources. You can find more information about the bonding interfaces in the Bonding Interface section. If 802.3ad mode is used, then LACP (Link Aggregation Control Protocol) is supported.
To create a hardware offloaded bonding interface, you must create a bonding interface with a supported bonding mode:
/interface bonding add mode=802.3ad name=bond1 slaves=ether1,ether2
This interface can be added to a bridge alongside with other interfaces:
/interface bridge add name=bridge /interface bridge port add bridge=bridge interface=bond1 hw=yes add bridge=bridge interface=ether3 hw=yes add bridge=bridge interface=ether4 hw=yes
Make sure that the bonding interface is hardware offloaded by checking the "H" flag:
/interface bridge port print Flags: X - disabled, I - inactive, D - dynamic, H - hw-offload # INTERFACE BRIDGE HW 0 H bond1 bridge yes 1 H ether3 bridge yes 2 H ether4 bridge yes
L3 Hardware Offloading
Layer3 hardware offloading (otherwise known as IP switching or HW routing) will allow to offload some of the router features on to the switch chip. This allows to reach wire speeds when routing packets, which simply would not be possible with the CPU.
At the moment of writing this article, only CRS317-1G-16S+ supports L3 HW Offloading and RouterOS v7beta6 or newer must be used.
The feature can be enabled with:
/interface ethernet switch set switch1 l3hw=yes
Currently supported and unsupported feature list:
|IPv4 Unicast||HW||Depending on the complexity of routes in routing table max HW accelerated route count could be in range from 150-250k. When hw route limit is reached, other routes will fall back to CPU|
|ECMP||HW||Max 4000 nexthops|
|"blackhole" routes||HW||This feature enables the possibility to drop D/DOS attacks at wire speed|
|gateway=<interface_name>||HW/CPU||This works only for directly connected networks. Since HW does not know how to send ARP requests, CPU sends ARP request and waits for a reply to find out a DST MAC address on the first received packet of the connection that matches a DST IP address. After DST MAC is determined, HW entry is added and all further packets will be processed by switch chip.|
|Bridge||HW||Routing from/to bridge interface|
|VLAN||HW||Routing between VLAN interfaces|
|Policy Routing (PBR)||N/A|
- CPU - feature is supported but processed by CPU
- HW - feature is supported and offloaded in hardware
- N/A - feature is not available, meaning that L3 Hardware offloading MUST be disabled for these features to work
Since RouterOS v6.43 is it possible to create a Private VLAN setup on CRS3xx series switches, example can be found in the Switch chip port isolation manual page.
CRS3xx series switches are capable of using IGMP Snooping on a hardware level. To see more detailed information, you should check out the IGMP Snooping manual page.
DHCP Snooping and DHCP Option 82
CRS3xx series switches are capable of using DHCP Snooping with Option 82 on a hardware level. To see more detailed information, you should check out the DHCP Snooping and DHCP Option 82 manual page.
Mirroring lets the switch 'sniff' all traffic that is going in a switch chip and send a copy of those packets out to another port (mirror-target). This feature can be used to easily set up a 'tap' device that allows you to inspect the traffic on your network on a traffic analyzer device. It is possible to set up a simple port based mirroring where, but it is also possible to setup more complex mirroring based on various parameters. Note that mirror-target port has to belong to same switch. (See which port belong to which switch in
/interface ethernet menu). Also mirror-target can have a special 'cpu' value, which means that 'sniffed' packets will be sent out of switch chips cpu port. There are many possibilities that can be used to mirror certain traffic, below you can find most common mirroring examples:
- Port Based Mirroring
/interface ethernet switch set switch1 mirror-source=ether2 mirror-target=ether3
/interface ethernet switch set switch1 mirror-source=none mirror-target=ether3 /interface ethernet switch rule add mirror=yes ports=ether1,ether2 switch=switch1
- VLAN Based Mirroring
/interface bridge set bridge1 vlan-filtering=yes /interface ethernet switch set switch1 mirror-target=ether3 mirror-source=none /interface ethernet switch rule add mirror=yes ports=ether1 switch=switch1 vlan-id=11
- MAC Based Mirroring
/interface ethernet switch set switch1 mirror-target=ether3 mirror-source=none /interface ethernet switch rule add mirror=yes ports=ether1 switch=switch1 dst-mac-address=64:D1:54:D9:27:E6/FF:FF:FF:FF:FF:FF add mirror=yes ports=ether1 switch=switch1 src-mac-address=64:D1:54:D9:27:E6/FF:FF:FF:FF:FF:FF
- Protocol Based Mirroring
/interface ethernet switch set switch1 mirror-target=ether3 mirror-source=none /interface ethernet switch rule add mirror=yes ports=ether1 switch=switch1 mac-protocol=ipx
- IP Based Mirroring
/interface ethernet switch set switch1 mirror-target=ether3 mirror-source=none /interface ethernet switch rule add mirror=yes ports=ether1 switch=switch1 src-address=192.168.88.0/24 add mirror=yes ports=ether1 switch=switch1 dst-address=192.168.88.0/24
There are other options as well, check the ACL section to find out all possible parameters that can be used to match packets.
It is possible to limit certain type of traffic using ACL rules. For CRS3xx series switches it is possible to limit ingress traffic that matches certain parameters and it is possible to limit ingress/egress traffic per port basis. For ingress traffic QoS policer is used, for egress traffic QoS shaper is used.
- Port Based Traffic Shaping
/interface ethernet switch port set ether1 ingress-rate=10M egress-rate=5M
- MAC Based Traffic Shaping
/interface ethernet switch rule add ports=ether1 switch=switch1 src-mac-address=64:D1:54:D9:27:E6/FF:FF:FF:FF:FF:FF rate=10M
- VLAN Based Traffic Shaping
/interface bridge set bridge1 vlan-filtering=yes /interface ethernet switch rule add ports=ether1 switch=switch1 vlan-id=11 rate=10M
- Protocol Based Traffic Shaping
/interface ethernet switch rule add ports=ether1 switch=switch1 mac-protocol=ipx rate=10M
Traffic Storm Control
Since RouterOS v6.42 it is possible to enable traffic storm control on CRS3xx series devices. A traffic storm can emerge when certain frames are continuously flooded on the network. For example, if a network loop has been created and no loop avoidance mechanisms are used (e.g. Spanning Tree Protocol), broadcast or multicast frames can quickly overwhelm the network, causing degraded network performance or even complete network breakdown. With CRS3xx series switches it is possible to limit broadcast, unknown multicast and unknown unicast traffic. Unknown unicast traffic is considered when a switch does not contain a host entry for the destined MAC address. Unknown multicast traffic is considered when a switch does not contain a multicast group entry in the
/interface bridge mdb menu. Storm control settings should be applied to ingress ports, the egress traffic will be limited.
/interface ethernet switch port
|limit-broadcasts (yes | no; Default: yes)||Limit broadcast traffic on switch port.|
|limit-unknown-multicasts (yes | no; Default: no)||Limit unknown multicast traffic on switch port.|
|limit-unknown-unicasts (yes | no; Default: no)||Limit unknown unicast traffic on switch port.|
|storm-rate (integer 0..100; Default: 100)||Amount of broadcast, unknown multicast and/or unknown unicast traffic is limited to in percentage of the link speed.|
- For example, to limit 1% (10Mbps) of broadcast and unknown unicast traffic on ether1 (1Gbps), use the following commands:
/interface ethernet switch port set ether1 storm-rate=1 limit-broadcasts=yes limit-unknown-unicasts=yes
MPLS hardware offloading
Since RouterOS v6.41 it is possible to offload certain MPLS functions to the switch chip, the switch must be a (P)rovider router in a PE-P-PE setup in order to achieve hardware offloading. Setup example can be found in the Basic MPLS setup example manual page.
Switch Rules (ACL)
Access Control List contains of ingress policy and egress policy engines. See this table on how many rules each device supports (limited by RouterOS). It is advanced tool for wire-speed packet filtering, forwarding and modifying based on Layer2, Layer3 and Layer4 protocol header field conditions.
/interface ethernet switch rule
|copy-to-cpu (no | yes; Default: no)||Clones the matching packet and sends it to the CPU.|
|disabled (yes | no; Default: no)||Enables or disables ACL entry.|
|dscp (0..63)||Matching DSCP field of the packet.|
|dst-address (IP address/Mask)||Matching destination IP address and mask.|
|dst-address6 (IPv6 address/Mask)||Matching destination IPv6 address and mask.|
|dst-mac-address (MAC address/Mask)||Matching destination MAC address and mask.|
|dst-port (0..65535)||Matching destination protocol port number.|
|flow-label (0..1048575)||Matching IPv6 flow label.|
|mac-protocol (802.2 | arp | homeplug-av | ip | ipv6 | ipx | lldp | loop-protect | mpls-multicast | mpls-unicast | packing-compr | packing-simple | pppoe | pppoe-discovery | rarp | service-vlan | vlan | or 0..65535 | or 0x0000-0xffff)||Matching particular MAC protocol specified by protocol name or number|
|mirror (no | yes)||Clones the matching packet and sends it to the mirror-target port.|
|new-dst-ports (ports)||Changes the destination port as specified. An empty setting will drop the packet. A specified port will redirect the packet to it. When the parameter is not used, the packet will be accepted. Multiple "new-dst-ports" are not supported on CRS3xx series switches.|
|new-vlan-id (0..4095)||Changes the VLAN ID to the specified value. Requires
|new-vlan-priority (0..7)||Changes the VLAN priority tag. Requires
|ports (ports)||Matching ports on which will the rule apply on received traffic.|
|protocol (dccp | ddp | egp | encap | etherip | ggp | gre | hmp | icmp | icmpv6 | idpr-cmtp | igmp | ipencap | ipip | ipsec-ah | ipsec-esp | ipv6 | ipv6-frag | ipv6-nonxt | ipv6-opts | ipv6-route | iso-tp4 | l2tp | ospf | pim | pup | rdp | rspf | rsvp | sctp | st | tcp | udp | udp-lite | vmtp | vrrp | xns-idp | xtp | or 0..255)||Matching particular IP protocol specified by protocol name or number.|
|rate (0..4294967295)||Sets ingress traffic limitation (bits per second) for matched traffic.|
|redirect-to-cpu (no | yes)||Changes the destination port of a matching packet to the CPU.|
|src-address (IP address/Mask)||Matching source IP address and mask.|
|src-address6 (IPv6 address/Mask)||Matching source IPv6 address and mask.|
|src-mac-address (MAC address/Mask)||Matching source MAC address and mask.|
|src-port (0..65535)||Matching source protocol port number.|
|switch (switch group)||Matching switch group on which will the rule apply.|
|traffic-class (0..255)||Matching IPv6 traffic class.|
|vlan-id (0..4095)||Matching VLAN ID. Requires
|vlan-header (not-present | present)||Matching VLAN header, whether the VLAN header is present or not. Requires
|vlan-priority (0..7)||Matching VLAN priority.|
- new-dst-ports (can be used to drop packets)
- Layer2 conditions:
- Layer3 conditions:
- IPv4 conditions:
- IPv6 conditions:
- Layer4 conditions:
It is possible to limit allowed MAC addresses on a single switch port on CRS3xx series switches. For example, to allow
64:D1:54:81:EF:8E start by switching multiple ports together, in this example
64:D1:54:81:EF:8E is going to be located behind ether1.
- Create an ACL rule to allow the given MAC address and drop all other traffic on ether1 (for ingress traffic):
/interface ethernet switch rule add ports=ether1 src-mac-address=64:D1:54:81:EF:8E/FF:FF:FF:FF:FF:FF switch=switch1 add new-dst-ports="" ports=ether1 switch=switch1
- Switch all required ports together, disable MAC learning and disable unknown unicast flooding on ether1:
/interface bridge add name=bridge1 /interface bridge port add bridge=bridge1 interface=ether1 hw=yes learn=no unknown-unicast-flood=no add bridge=bridge1 interface=ether2 hw=yes
- Add a static hosts entry for
64:D1:54:81:EF:8E(for egress traffic):
/interface bridge host add bridge=bridge1 interface=ether1 mac-address=64:D1:54:81:EF:8E
“Dual boot” feature allows you to choose which operating system you prefer to use, RouterOS or SwOS. Device operating system could be changed using:
- Serial Terminal (/system routerboard settings set boot-os=swos)
- Serial Console
More details about SwOS are described here: SwOS manual
Configuring SwOS using RouterOS
Since RouterOS 6.43 it is possible to load, save and reset SwOS configuration, as well as upgrade SwOS and set an IP address for the switch by using RouterOS.
- Save configuration with
/system swos save-config
- Load configuration with
/system swos load-config
- Change password with
/system swos password
- Reset configuration with
/system swos reset-config
- Upgrade SwOS from RouterOS using
/system swos upgrade
|address-acquisition-mode (dhcp-only | dhcp-with-fallback | static; Default: dhcp-with-fallback)||Changes address acquisition method:
|allow-from (IP/Mask; Default: 0.0.0.0/0)||IP address or a network from which the switch is accessible. By default, the switch is accessible by any IP address.|
|allow-from-ports (name; Default: )||List of switch ports from which the device is accessible. By default, all ports are allowed to access the switch|
|allow-from-vlan (integer: 0..4094; Default: 0)||VLAN ID from which the device is accessible. By defaull, all VLANs are allowed|
|identity (name; Default: Mikrotik)||Name of the switch (used for Mikrotik Neighbor Discovery protocol)|
|static-ip-address (IP; Default: 192.168.88.1)||IP address of the switch in case address-acquisition-mode is either set to dhcp-with-fallback or static. By setting a static IP address, the address acquisition process does not change, which is DHCP with fallback by default. This means that the configured static IP address will become active only when there is going to be no DHCP servers in the same broadcast domain|
- CRS Router
- CRS3xx VLANs with Bonds
- Basic VLAN switching
- Bridge Hardware Offloading
- Spanning Tree Protocol
- IGMP Snooping
- DHCP Snooping and Option 82
- MTU on RouterBOARD
- Layer2 misconfiguration
- Bridge VLAN Table