Documentation: net: dsa: Describe DSA switch configuration
Document DSA tagged and VLAN based switch configuration by showcases. Signed-off-by: Benedikt Spranger <b.spranger@linutronix.de> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>alistair/sunxi64-5.4-dsi
parent
31d166642c
commit
58dd7a8d9d
|
@ -0,0 +1,292 @@
|
||||||
|
.. 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 lan1 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
|
|
@ -9,3 +9,4 @@ Distributed Switch Architecture
|
||||||
bcm_sf2
|
bcm_sf2
|
||||||
lan9303
|
lan9303
|
||||||
sja1105
|
sja1105
|
||||||
|
configuration
|
||||||
|
|
Loading…
Reference in New Issue