123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292 |
- .. SPDX-License-Identifier: GPL-2.0
- =======================================
- DSA switch configuration from userspace
- =======================================
- The DSA switch configuration is not integrated into the main userspace
- network configuration suites by now and has to be performed manualy.
- .. _dsa-config-showcases:
- Configuration showcases
- -----------------------
- To configure a DSA switch a couple of commands need to be executed. In this
- documentation some common configuration scenarios are handled as showcases:
- *single port*
- Every switch port acts as a different configurable Ethernet port
- *bridge*
- Every switch port is part of one configurable Ethernet bridge
- *gateway*
- Every switch port except one upstream port is part of a configurable
- Ethernet bridge.
- The upstream port acts as different configurable Ethernet port.
- All configurations are performed with tools from iproute2, which is available
- at https://www.kernel.org/pub/linux/utils/net/iproute2/
- Through DSA every port of a switch is handled like a normal linux Ethernet
- interface. The CPU port is the switch port connected to an Ethernet MAC chip.
- The corresponding linux Ethernet interface is called the master interface.
- All other corresponding linux interfaces are called slave interfaces.
- The slave interfaces depend on the master interface. They can only brought up,
- when the master interface is up.
- In this documentation the following Ethernet interfaces are used:
- *eth0*
- the master interface
- *lan1*
- a slave interface
- *lan2*
- another slave interface
- *lan3*
- a third slave interface
- *wan*
- A slave interface dedicated for upstream traffic
- Further Ethernet interfaces can be configured similar.
- The configured IPs and networks are:
- *single port*
- * lan1: 192.0.2.1/30 (192.0.2.0 - 192.0.2.3)
- * lan2: 192.0.2.5/30 (192.0.2.4 - 192.0.2.7)
- * lan3: 192.0.2.9/30 (192.0.2.8 - 192.0.2.11)
- *bridge*
- * br0: 192.0.2.129/25 (192.0.2.128 - 192.0.2.255)
- *gateway*
- * br0: 192.0.2.129/25 (192.0.2.128 - 192.0.2.255)
- * wan: 192.0.2.1/30 (192.0.2.0 - 192.0.2.3)
- .. _dsa-tagged-configuration:
- Configuration with tagging support
- ----------------------------------
- The tagging based configuration is desired and supported by the majority of
- DSA switches. These switches are capable to tag incoming and outgoing traffic
- without using a VLAN based configuration.
- single port
- ~~~~~~~~~~~
- .. code-block:: sh
- # configure each interface
- ip addr add 192.0.2.1/30 dev lan1
- ip addr add 192.0.2.5/30 dev lan2
- ip addr add 192.0.2.9/30 dev lan3
- # The master interface needs to be brought up before the slave ports.
- ip link set eth0 up
- # bring up the slave interfaces
- ip link set lan1 up
- ip link set lan2 up
- ip link set lan3 up
- bridge
- ~~~~~~
- .. code-block:: sh
- # The master interface needs to be brought up before the slave ports.
- ip link set eth0 up
- # bring up the slave interfaces
- ip link set lan1 up
- ip link set lan2 up
- ip link set lan3 up
- # create bridge
- ip link add name br0 type bridge
- # add ports to bridge
- ip link set dev lan1 master br0
- ip link set dev lan2 master br0
- ip link set dev lan3 master br0
- # configure the bridge
- ip addr add 192.0.2.129/25 dev br0
- # bring up the bridge
- ip link set dev br0 up
- gateway
- ~~~~~~~
- .. code-block:: sh
- # The master interface needs to be brought up before the slave ports.
- ip link set eth0 up
- # bring up the slave interfaces
- ip link set wan up
- ip link set lan1 up
- ip link set lan2 up
- # configure the upstream port
- ip addr add 192.0.2.1/30 dev wan
- # create bridge
- ip link add name br0 type bridge
- # add ports to bridge
- ip link set dev lan1 master br0
- ip link set dev lan2 master br0
- # configure the bridge
- ip addr add 192.0.2.129/25 dev br0
- # bring up the bridge
- ip link set dev br0 up
- .. _dsa-vlan-configuration:
- Configuration without tagging support
- -------------------------------------
- A minority of switches are not capable to use a taging protocol
- (DSA_TAG_PROTO_NONE). These switches can be configured by a VLAN based
- configuration.
- single port
- ~~~~~~~~~~~
- The configuration can only be set up via VLAN tagging and bridge setup.
- .. code-block:: sh
- # tag traffic on CPU port
- ip link add link eth0 name eth0.1 type vlan id 1
- ip link add link eth0 name eth0.2 type vlan id 2
- ip link add link eth0 name eth0.3 type vlan id 3
- # The master interface needs to be brought up before the slave ports.
- ip link set eth0 up
- ip link set eth0.1 up
- ip link set eth0.2 up
- ip link set eth0.3 up
- # bring up the slave interfaces
- ip link set lan1 up
- ip link set lan2 up
- ip link set lan3 up
- # create bridge
- ip link add name br0 type bridge
- # activate VLAN filtering
- ip link set dev br0 type bridge vlan_filtering 1
- # add ports to bridges
- ip link set dev lan1 master br0
- ip link set dev lan2 master br0
- ip link set dev lan3 master br0
- # tag traffic on ports
- bridge vlan add dev lan1 vid 1 pvid untagged
- bridge vlan add dev lan2 vid 2 pvid untagged
- bridge vlan add dev lan3 vid 3 pvid untagged
- # configure the VLANs
- ip addr add 192.0.2.1/30 dev eth0.1
- ip addr add 192.0.2.5/30 dev eth0.2
- ip addr add 192.0.2.9/30 dev eth0.3
- # bring up the bridge devices
- ip link set br0 up
- bridge
- ~~~~~~
- .. code-block:: sh
- # tag traffic on CPU port
- ip link add link eth0 name eth0.1 type vlan id 1
- # The master interface needs to be brought up before the slave ports.
- ip link set eth0 up
- ip link set eth0.1 up
- # bring up the slave interfaces
- ip link set lan1 up
- ip link set lan2 up
- ip link set lan3 up
- # create bridge
- ip link add name br0 type bridge
- # activate VLAN filtering
- ip link set dev br0 type bridge vlan_filtering 1
- # add ports to bridge
- ip link set dev lan1 master br0
- ip link set dev lan2 master br0
- ip link set dev lan3 master br0
- ip link set eth0.1 master br0
- # tag traffic on ports
- bridge vlan add dev lan1 vid 1 pvid untagged
- bridge vlan add dev lan2 vid 1 pvid untagged
- bridge vlan add dev lan3 vid 1 pvid untagged
- # configure the bridge
- ip addr add 192.0.2.129/25 dev br0
- # bring up the bridge
- ip link set dev br0 up
- gateway
- ~~~~~~~
- .. code-block:: sh
- # tag traffic on CPU port
- ip link add link eth0 name eth0.1 type vlan id 1
- ip link add link eth0 name eth0.2 type vlan id 2
- # The master interface needs to be brought up before the slave ports.
- ip link set eth0 up
- ip link set eth0.1 up
- ip link set eth0.2 up
- # bring up the slave interfaces
- ip link set wan up
- ip link set lan1 up
- ip link set lan2 up
- # create bridge
- ip link add name br0 type bridge
- # activate VLAN filtering
- ip link set dev br0 type bridge vlan_filtering 1
- # add ports to bridges
- ip link set dev wan master br0
- ip link set eth0.1 master br0
- ip link set dev lan1 master br0
- ip link set dev lan2 master br0
- # tag traffic on ports
- bridge vlan add dev lan1 vid 1 pvid untagged
- bridge vlan add dev lan2 vid 1 pvid untagged
- bridge vlan add dev wan vid 2 pvid untagged
- # configure the VLANs
- ip addr add 192.0.2.1/30 dev eth0.2
- ip addr add 192.0.2.129/25 dev br0
- # bring up the bridge devices
- ip link set br0 up
|