Switching
Skills to be Learned
Associate an interface with a bridge domain
Create a loopback interface
Create a BVI (Bridge Virtual Interface) for a bridge domain
Examine a bridge domain
FD.io VPP command learned in this exercise
Topology
Initial state
Unlike previous exercises, for this one you want to start tabula rasa.
Note: You will lose all your existing config in your FD.io VPP instances!
To clear existing config from previous exercises run:
$ ps -ef | grep vpp | awk '{print $2}'| xargs sudo kill
$ sudo ip link del dev vpp1host
$ # do the next command if you are cleaning up from this example
$ sudo ip link del dev vpp1vpp2
Run FD.io VPP instances
Run a vpp instance named vpp1
Run a vpp instance named vpp2
Connect vpp1 to host
Create a veth with one end named vpp1host and the other named vpp1out.
Connect vpp1out to vpp1
Add ip address 10.10.1.1/24 on vpp1host
Connect vpp1 to vpp2
Create a veth with one end named vpp1vpp2 and the other named vpp2vpp1.
Connect vpp1vpp2 to vpp1.
Connect vpp2vpp1 to vpp2.
Configure Bridge Domain on vpp1
Check to see what bridge domains already exist, and select the first bridge domain number not in use:
vpp# show bridge-domain
ID Index Learning U-Forwrd UU-Flood Flooding ARP-Term BVI-Intf
0 0 off off off off off local0
In the example above, there is bridge domain ID '0' already. Even though sometimes we might get feedback as below:
no bridge-domains in use
the bridge domain ID '0' still exists, where no operations are supported. For instance, if we try to add host-vpp1out and host-vpp1vpp2 to bridge domain ID 0, we will get nothing setup.
vpp# set int l2 bridge host-vpp1out 0
vpp# set int l2 bridge host-vpp1vpp2 0
vpp# show bridge-domain 0 detail
show bridge-domain: No operations on the default bridge domain are supported
So we will create bridge domain 1 instead of playing with the default bridge domain ID 0.
Add host-vpp1out to bridge domain ID 1
vpp# set int l2 bridge host-vpp1out 1
Add host-vpp1vpp2 to bridge domain ID1
vpp# set int l2 bridge host-vpp1vpp2 1
Examine bridge domain 1:
vpp# show bridge-domain 1 detail
BD-ID Index BSN Age(min) Learning U-Forwrd UU-Flood Flooding ARP-Term BVI-Intf
1 1 0 off on on on on off N/A
Interface If-idx ISN SHG BVI TxFlood VLAN-Tag-Rewrite
host-vpp1out 1 1 0 - * none
host-vpp1vpp2 2 1 0 - * none
Configure loopback interface on vpp2
vpp# create loopback interface
loop0
Add the ip address 10.10.1.2/24 to vpp2 interface loop0. Set the state of interface loop0 on vpp2 to 'up'
Configure bridge domain on vpp2
Check to see the first available bridge domain ID (it will be 1 in this case)
Add interface loop0 as a bridge virtual interface (bvi) to bridge domain 1
vpp# set int l2 bridge loop0 1 bvi
Add interface vpp2vpp1 to bridge domain 1
vpp# set int l2 bridge host-vpp2vpp1 1
Examine the bridge domain and interfaces.
Ping from host to vpp and vpp to host
Add trace on vpp1 and vpp2
ping from host to 10.10.1.2
Examine and clear trace on vpp1 and vpp2
ping from vpp2 to 10.10.1.1
Examine and clear trace on vpp1 and vpp2
Examine l2 fib
vpp# show l2fib verbose
Mac Address BD Idx Interface Index static filter bvi Mac Age (min)
de:ad:00:00:00:00 1 host-vpp1vpp2 2 0 0 0 disabled
c2:f6:88:31:7b:8e 1 host-vpp1out 1 0 0 0 disabled
2 l2fib entries
vpp# show l2fib verbose
Mac Address BD Idx Interface Index static filter bvi Mac Age (min)
de:ad:00:00:00:00 1 loop0 2 1 0 1 disabled
c2:f6:88:31:7b:8e 1 host-vpp2vpp1 1 0 0 0 disabled
2 l2fib entries