1.. SPDX-License-Identifier: GPL-2.0
2
3=======================================
4DSA switch configuration from userspace
5=======================================
6
7The DSA switch configuration is not integrated into the main userspace
8network configuration suites by now and has to be performed manualy.
9
10.. _dsa-config-showcases:
11
12Configuration showcases
13-----------------------
14
15To configure a DSA switch a couple of commands need to be executed. In this
16documentation some common configuration scenarios are handled as showcases:
17
18*single port*
19  Every switch port acts as a different configurable Ethernet port
20
21*bridge*
22  Every switch port is part of one configurable Ethernet bridge
23
24*gateway*
25  Every switch port except one upstream port is part of a configurable
26  Ethernet bridge.
27  The upstream port acts as different configurable Ethernet port.
28
29All configurations are performed with tools from iproute2, which is available
30at https://www.kernel.org/pub/linux/utils/net/iproute2/
31
32Through DSA every port of a switch is handled like a normal linux Ethernet
33interface. The CPU port is the switch port connected to an Ethernet MAC chip.
34The corresponding linux Ethernet interface is called the master interface.
35All other corresponding linux interfaces are called slave interfaces.
36
37The slave interfaces depend on the master interface. They can only brought up,
38when the master interface is up.
39
40In this documentation the following Ethernet interfaces are used:
41
42*eth0*
43  the master interface
44
45*lan1*
46  a slave interface
47
48*lan2*
49  another slave interface
50
51*lan3*
52  a third slave interface
53
54*wan*
55  A slave interface dedicated for upstream traffic
56
57Further Ethernet interfaces can be configured similar.
58The configured IPs and networks are:
59
60*single port*
61  * lan1: 192.0.2.1/30 (192.0.2.0 - 192.0.2.3)
62  * lan2: 192.0.2.5/30 (192.0.2.4 - 192.0.2.7)
63  * lan3: 192.0.2.9/30 (192.0.2.8 - 192.0.2.11)
64
65*bridge*
66  * br0: 192.0.2.129/25 (192.0.2.128 - 192.0.2.255)
67
68*gateway*
69  * br0: 192.0.2.129/25 (192.0.2.128 - 192.0.2.255)
70  * wan: 192.0.2.1/30 (192.0.2.0 - 192.0.2.3)
71
72.. _dsa-tagged-configuration:
73
74Configuration with tagging support
75----------------------------------
76
77The tagging based configuration is desired and supported by the majority of
78DSA switches. These switches are capable to tag incoming and outgoing traffic
79without using a VLAN based configuration.
80
81single port
82~~~~~~~~~~~
83
84.. code-block:: sh
85
86  # configure each interface
87  ip addr add 192.0.2.1/30 dev lan1
88  ip addr add 192.0.2.5/30 dev lan2
89  ip addr add 192.0.2.9/30 dev lan3
90
91  # The master interface needs to be brought up before the slave ports.
92  ip link set eth0 up
93
94  # bring up the slave interfaces
95  ip link set lan1 up
96  ip link set lan2 up
97  ip link set lan3 up
98
99bridge
100~~~~~~
101
102.. code-block:: sh
103
104  # The master interface needs to be brought up before the slave ports.
105  ip link set eth0 up
106
107  # bring up the slave interfaces
108  ip link set lan1 up
109  ip link set lan2 up
110  ip link set lan3 up
111
112  # create bridge
113  ip link add name br0 type bridge
114
115  # add ports to bridge
116  ip link set dev lan1 master br0
117  ip link set dev lan2 master br0
118  ip link set dev lan3 master br0
119
120  # configure the bridge
121  ip addr add 192.0.2.129/25 dev br0
122
123  # bring up the bridge
124  ip link set dev br0 up
125
126gateway
127~~~~~~~
128
129.. code-block:: sh
130
131  # The master interface needs to be brought up before the slave ports.
132  ip link set eth0 up
133
134  # bring up the slave interfaces
135  ip link set wan up
136  ip link set lan1 up
137  ip link set lan2 up
138
139  # configure the upstream port
140  ip addr add 192.0.2.1/30 dev wan
141
142  # create bridge
143  ip link add name br0 type bridge
144
145  # add ports to bridge
146  ip link set dev lan1 master br0
147  ip link set dev lan2 master br0
148
149  # configure the bridge
150  ip addr add 192.0.2.129/25 dev br0
151
152  # bring up the bridge
153  ip link set dev br0 up
154
155.. _dsa-vlan-configuration:
156
157Configuration without tagging support
158-------------------------------------
159
160A minority of switches are not capable to use a taging protocol
161(DSA_TAG_PROTO_NONE). These switches can be configured by a VLAN based
162configuration.
163
164single port
165~~~~~~~~~~~
166The configuration can only be set up via VLAN tagging and bridge setup.
167
168.. code-block:: sh
169
170  # tag traffic on CPU port
171  ip link add link eth0 name eth0.1 type vlan id 1
172  ip link add link eth0 name eth0.2 type vlan id 2
173  ip link add link eth0 name eth0.3 type vlan id 3
174
175  # The master interface needs to be brought up before the slave ports.
176  ip link set eth0 up
177  ip link set eth0.1 up
178  ip link set eth0.2 up
179  ip link set eth0.3 up
180
181  # bring up the slave interfaces
182  ip link set lan1 up
183  ip link set lan2 up
184  ip link set lan3 up
185
186  # create bridge
187  ip link add name br0 type bridge
188
189  # activate VLAN filtering
190  ip link set dev br0 type bridge vlan_filtering 1
191
192  # add ports to bridges
193  ip link set dev lan1 master br0
194  ip link set dev lan2 master br0
195  ip link set dev lan3 master br0
196
197  # tag traffic on ports
198  bridge vlan add dev lan1 vid 1 pvid untagged
199  bridge vlan add dev lan2 vid 2 pvid untagged
200  bridge vlan add dev lan3 vid 3 pvid untagged
201
202  # configure the VLANs
203  ip addr add 192.0.2.1/30 dev eth0.1
204  ip addr add 192.0.2.5/30 dev eth0.2
205  ip addr add 192.0.2.9/30 dev eth0.3
206
207  # bring up the bridge devices
208  ip link set br0 up
209
210
211bridge
212~~~~~~
213
214.. code-block:: sh
215
216  # tag traffic on CPU port
217  ip link add link eth0 name eth0.1 type vlan id 1
218
219  # The master interface needs to be brought up before the slave ports.
220  ip link set eth0 up
221  ip link set eth0.1 up
222
223  # bring up the slave interfaces
224  ip link set lan1 up
225  ip link set lan2 up
226  ip link set lan3 up
227
228  # create bridge
229  ip link add name br0 type bridge
230
231  # activate VLAN filtering
232  ip link set dev br0 type bridge vlan_filtering 1
233
234  # add ports to bridge
235  ip link set dev lan1 master br0
236  ip link set dev lan2 master br0
237  ip link set dev lan3 master br0
238  ip link set eth0.1 master br0
239
240  # tag traffic on ports
241  bridge vlan add dev lan1 vid 1 pvid untagged
242  bridge vlan add dev lan2 vid 1 pvid untagged
243  bridge vlan add dev lan3 vid 1 pvid untagged
244
245  # configure the bridge
246  ip addr add 192.0.2.129/25 dev br0
247
248  # bring up the bridge
249  ip link set dev br0 up
250
251gateway
252~~~~~~~
253
254.. code-block:: sh
255
256  # tag traffic on CPU port
257  ip link add link eth0 name eth0.1 type vlan id 1
258  ip link add link eth0 name eth0.2 type vlan id 2
259
260  # The master interface needs to be brought up before the slave ports.
261  ip link set eth0 up
262  ip link set eth0.1 up
263  ip link set eth0.2 up
264
265  # bring up the slave interfaces
266  ip link set wan up
267  ip link set lan1 up
268  ip link set lan2 up
269
270  # create bridge
271  ip link add name br0 type bridge
272
273  # activate VLAN filtering
274  ip link set dev br0 type bridge vlan_filtering 1
275
276  # add ports to bridges
277  ip link set dev wan master br0
278  ip link set eth0.1 master br0
279  ip link set dev lan1 master br0
280  ip link set dev lan2 master br0
281
282  # tag traffic on ports
283  bridge vlan add dev lan1 vid 1 pvid untagged
284  bridge vlan add dev lan2 vid 1 pvid untagged
285  bridge vlan add dev wan vid 2 pvid untagged
286
287  # configure the VLANs
288  ip addr add 192.0.2.1/30 dev eth0.2
289  ip addr add 192.0.2.129/25 dev br0
290
291  # bring up the bridge devices
292  ip link set br0 up
293