blob: 72005080b089a1ef9d9e80577519da06b3d0adc5 [file] [log] [blame]
John DeNiscoc8e7f412018-08-03 11:02:24 -04001.. _switching:
2
3.. toctree::
4
5Switching
6=========
7
8Skills to be Learned
John DeNiscoc4c72d22018-08-16 13:50:02 -04009----------------------
John DeNiscoc8e7f412018-08-03 11:02:24 -040010
11#. Associate an interface with a bridge domain
12#. Create a loopback interaface
13#. Create a BVI (Bridge Virtual Interface) for a bridge domain
14#. Examine a bridge domain
15
16FD.io VPP command learned in this exercise
John DeNiscoc4c72d22018-08-16 13:50:02 -040017--------------------------------------------
John DeNiscoc8e7f412018-08-03 11:02:24 -040018
19#. `show
20 bridge <https://docs.fd.io/vpp/17.04/clicmd_src_vnet_l2.html#clicmd_show_bridge-domain>`__
21#. `show bridge
22 detail <https://docs.fd.io/vpp/17.04/clicmd_src_vnet_l2.html#clicmd_show_bridge-domain>`__
23#. `set int l2
24 bridge <https://docs.fd.io/vpp/17.04/clicmd_src_vnet_l2.html#clicmd_set_interface_l2_bridge>`__
25#. `show l2fib
26 verbose <https://docs.fd.io/vpp/17.04/clicmd_src_vnet_l2.html#clicmd_show_l2fib>`__
27
28Topology
John DeNiscoc4c72d22018-08-16 13:50:02 -040029---------
John DeNiscoc8e7f412018-08-03 11:02:24 -040030
31.. figure:: /_images/Switching_Topology.jpg
32 :alt: Switching Topology
33
34 Switching Topology
35
36Initial state
John DeNiscoc4c72d22018-08-16 13:50:02 -040037---------------
John DeNiscoc8e7f412018-08-03 11:02:24 -040038
39Unlike previous exercises, for this one you want to start tabula rasa.
40
41Note: You will lose all your existing config in your FD.io VPP instances!
42
43To clear existing config from previous exercises run:
44
45.. code-block:: console
46
47 $ ps -ef | grep vpp | awk '{print $2}'| xargs sudo kill
48 $ sudo ip link del dev vpp1host
John DeNiscoc4c72d22018-08-16 13:50:02 -040049 $ # do the next command if you are cleaing up from this example
John DeNiscoc8e7f412018-08-03 11:02:24 -040050 $ sudo ip link del dev vpp1vpp2
51
52Run FD.io VPP instances
John DeNiscoc4c72d22018-08-16 13:50:02 -040053------------------------
John DeNiscoc8e7f412018-08-03 11:02:24 -040054
55#. Run a vpp instance named **vpp1**
56#. Run a vpp instance named **vpp2**
57
58Connect vpp1 to host
John DeNiscoc4c72d22018-08-16 13:50:02 -040059---------------------
John DeNiscoc8e7f412018-08-03 11:02:24 -040060
61#. Create a veth with one end named vpp1host and the other named
62 vpp1out.
63#. Connect vpp1out to vpp1
64#. Add ip address 10.10.1.1/24 on vpp1host
65
66Connect vpp1 to vpp2
John DeNiscoc4c72d22018-08-16 13:50:02 -040067---------------------
John DeNiscoc8e7f412018-08-03 11:02:24 -040068
69#. Create a veth with one end named vpp1vpp2 and the other named
70 vpp2vpp1.
71#. Connect vpp1vpp2 to vpp1.
72#. Connect vpp2vpp1 to vpp2.
73
74Configure Bridge Domain on vpp1
John DeNiscoc4c72d22018-08-16 13:50:02 -040075--------------------------------
John DeNiscoc8e7f412018-08-03 11:02:24 -040076
77Check to see what bridge domains already exist, and select the first
78bridge domain number not in use:
79
80.. code-block:: console
81
82 vpp# show bridge-domain
83 ID Index Learning U-Forwrd UU-Flood Flooding ARP-Term BVI-Intf
84 0 0 off off off off off local0
85
86In the example above, there is bridge domain ID '0' already. Even though
87sometimes we might get feedback as below:
88
89.. code-block:: console
90
91 no bridge-domains in use
92
93the bridge domain ID '0' still exists, where no operations are
94supported. For instance, if we try to add host-vpp1out and host-vpp1vpp2
95to bridge domain ID 0, we will get nothing setup.
96
97.. code-block:: console
98
99 vpp# set int l2 bridge host-vpp1out 0
100 vpp# set int l2 bridge host-vpp1vpp2 0
101 vpp# show bridge-domain 0 detail
102 show bridge-domain: No operations on the default bridge domain are supported
103
104So we will create bridge domain 1 instead of playing with the default
105bridge domain ID 0.
106
107Add host-vpp1out to bridge domain ID 1
108
109.. code-block:: console
110
111 vpp# set int l2 bridge host-vpp1out 1
112
113Add host-vpp1vpp2 to bridge domain ID1
114
115.. code-block:: console
116
117 vpp# set int l2 bridge host-vpp1vpp2 1
118
119Examine bridge domain 1:
120
121.. code-block:: console
122
123 vpp# show bridge-domain 1 detail
124 BD-ID Index BSN Age(min) Learning U-Forwrd UU-Flood Flooding ARP-Term BVI-Intf
125 1 1 0 off on on on on off N/A
126
127 Interface If-idx ISN SHG BVI TxFlood VLAN-Tag-Rewrite
128 host-vpp1out 1 1 0 - * none
129 host-vpp1vpp2 2 1 0 - * none
130
131Configure loopback interface on vpp2
John DeNiscoc4c72d22018-08-16 13:50:02 -0400132-------------------------------------
John DeNiscoc8e7f412018-08-03 11:02:24 -0400133
134.. code-block:: console
135
136 vpp# create loopback interface
137 loop0
138
139Add the ip address 10.10.1.2/24 to vpp2 interface loop0. Set the state
140of interface loop0 on vpp2 to 'up'
141
142Configure bridge domain on vpp2
John DeNiscoc4c72d22018-08-16 13:50:02 -0400143--------------------------------
John DeNiscoc8e7f412018-08-03 11:02:24 -0400144
145Check to see the first available bridge domain ID (it will be 1 in this
146case)
147
148Add interface loop0 as a bridge virtual interface (bvi) to bridge domain
1491
150
151.. code-block:: console
152
153 vpp# set int l2 bridge loop0 1 bvi
154
155Add interface vpp2vpp1 to bridge domain 1
156
157.. code-block:: console
158
159 vpp# set int l2 bridge host-vpp2vpp1 1
160
161Examine the bridge domain and interfaces.
162
163Ping from host to vpp and vpp to host
John DeNiscoc4c72d22018-08-16 13:50:02 -0400164--------------------------------------
John DeNiscoc8e7f412018-08-03 11:02:24 -0400165
166#. Add trace on vpp1 and vpp2
167#. ping from host to 10.10.1.2
168#. Examine and clear trace on vpp1 and vpp2
169#. ping from vpp2 to 10.10.1.1
170#. Examine and clear trace on vpp1 and vpp2
171
172Examine l2 fib
John DeNiscoc4c72d22018-08-16 13:50:02 -0400173---------------
John DeNiscoc8e7f412018-08-03 11:02:24 -0400174
175.. code-block:: console
176
177 vpp# show l2fib verbose
178 Mac Address BD Idx Interface Index static filter bvi Mac Age (min)
179 de:ad:00:00:00:00 1 host-vpp1vpp2 2 0 0 0 disabled
180 c2:f6:88:31:7b:8e 1 host-vpp1out 1 0 0 0 disabled
181 2 l2fib entries
182
183.. code-block:: console
184
185 vpp# show l2fib verbose
186 Mac Address BD Idx Interface Index static filter bvi Mac Age (min)
187 de:ad:00:00:00:00 1 loop0 2 1 0 1 disabled
188 c2:f6:88:31:7b:8e 1 host-vpp2vpp1 1 0 0 0 disabled
189 2 l2fib entries