Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / Documentation / networking / dsa / configuration.rst
1 .. SPDX-License-Identifier: GPL-2.0
2
3 =======================================
4 DSA switch configuration from userspace
5 =======================================
6
7 The DSA switch configuration is not integrated into the main userspace
8 network configuration suites by now and has to be performed manualy.
9
10 .. _dsa-config-showcases:
11
12 Configuration showcases
13 -----------------------
14
15 To configure a DSA switch a couple of commands need to be executed. In this
16 documentation 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
29 All configurations are performed with tools from iproute2, which is available
30 at https://www.kernel.org/pub/linux/utils/net/iproute2/
31
32 Through DSA every port of a switch is handled like a normal linux Ethernet
33 interface. The CPU port is the switch port connected to an Ethernet MAC chip.
34 The corresponding linux Ethernet interface is called the master interface.
35 All other corresponding linux interfaces are called slave interfaces.
36
37 The slave interfaces depend on the master interface. They can only brought up,
38 when the master interface is up.
39
40 In 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
57 Further Ethernet interfaces can be configured similar.
58 The 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
74 Configuration with tagging support
75 ----------------------------------
76
77 The tagging based configuration is desired and supported by the majority of
78 DSA switches. These switches are capable to tag incoming and outgoing traffic
79 without using a VLAN based configuration.
80
81 single 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
99 bridge
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
126 gateway
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
157 Configuration without tagging support
158 -------------------------------------
159
160 A 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
162 configuration.
163
164 single port
165 ~~~~~~~~~~~
166 The 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 lan1 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
211 bridge
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
251 gateway
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