Merge branch 'b53-docs'
Benedikt Spranger says: ==================== Document the configuration of b53 this is the third round to document the configuration of a b53 supported switch. v3..v2: - fix a typo - improve b53 configuration in DSA_TAG_PROTO_NONE showcase. - grade up from RFC to patch for mainline inclusion. v1..v2: - split out generic parts of the configuration. - target comments by Andrew Lunn and Florian Fainelli. - make changes visible to build system ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
1a2d405c00
|
@ -0,0 +1,183 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
==========================================
|
||||
Broadcom RoboSwitch Ethernet switch driver
|
||||
==========================================
|
||||
|
||||
The Broadcom RoboSwitch Ethernet switch family is used in quite a range of
|
||||
xDSL router, cable modems and other multimedia devices.
|
||||
|
||||
The actual implementation supports the devices BCM5325E, BCM5365, BCM539x,
|
||||
BCM53115 and BCM53125 as well as BCM63XX.
|
||||
|
||||
Implementation details
|
||||
======================
|
||||
|
||||
The driver is located in ``drivers/net/dsa/b53/`` and is implemented as a
|
||||
DSA driver; see ``Documentation/networking/dsa/dsa.rst`` for details on the
|
||||
subsystem and what it provides.
|
||||
|
||||
The switch is, if possible, configured to enable a Broadcom specific 4-bytes
|
||||
switch tag which gets inserted by the switch for every packet forwarded to the
|
||||
CPU interface, conversely, the CPU network interface should insert a similar
|
||||
tag for packets entering the CPU port. The tag format is described in
|
||||
``net/dsa/tag_brcm.c``.
|
||||
|
||||
The configuration of the device depends on whether or not tagging is
|
||||
supported.
|
||||
|
||||
The interface names and example network configuration are used according the
|
||||
configuration described in the :ref:`dsa-config-showcases`.
|
||||
|
||||
Configuration with tagging support
|
||||
----------------------------------
|
||||
|
||||
The tagging based configuration is desired. It is not specific to the b53
|
||||
DSA driver and will work like all DSA drivers which supports tagging.
|
||||
|
||||
See :ref:`dsa-tagged-configuration`.
|
||||
|
||||
Configuration without tagging support
|
||||
-------------------------------------
|
||||
|
||||
Older models (5325, 5365) support a different tag format that is not supported
|
||||
yet. 539x and 531x5 require managed mode and some special handling, which is
|
||||
also not yet supported. The tagging support is disabled in these cases and the
|
||||
switch need a different configuration.
|
||||
|
||||
The configuration slightly differ from the :ref:`dsa-vlan-configuration`.
|
||||
|
||||
The b53 tags the CPU port in all VLANs, since otherwise any PVID untagged
|
||||
VLAN programming would basically change the CPU port's default PVID and make
|
||||
it untagged, undesirable.
|
||||
|
||||
In difference to the configuration described in :ref:`dsa-vlan-configuration`
|
||||
the default VLAN 1 has to be removed from the slave interface configuration in
|
||||
single port and gateway configuration, while there is no need to add an extra
|
||||
VLAN configuration in the bridge showcase.
|
||||
|
||||
single port
|
||||
~~~~~~~~~~~
|
||||
The configuration can only be set up via VLAN tagging and bridge setup.
|
||||
By default packages are tagged with vid 1:
|
||||
|
||||
.. 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 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 dev lan1 master br0
|
||||
ip link set dev lan2 master br0
|
||||
|
||||
# tag traffic on ports
|
||||
bridge vlan add dev lan1 vid 2 pvid untagged
|
||||
bridge vlan del dev lan1 vid 1
|
||||
bridge vlan add dev lan2 vid 3 pvid untagged
|
||||
bridge vlan del dev lan2 vid 1
|
||||
|
||||
# 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 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 bridge
|
||||
ip link set dev wan master br0
|
||||
ip link set dev lan1 master br0
|
||||
ip link set dev lan2 master br0
|
||||
ip link set eth0.1 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
|
||||
|
||||
# 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 wan vid 2 pvid untagged
|
||||
bridge vlan del dev wan vid 1
|
||||
|
||||
# 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
|
|
@ -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
|
|
@ -6,6 +6,8 @@ Distributed Switch Architecture
|
|||
:maxdepth: 1
|
||||
|
||||
dsa
|
||||
b53
|
||||
bcm_sf2
|
||||
lan9303
|
||||
sja1105
|
||||
configuration
|
||||
|
|
Loading…
Reference in New Issue