Difference between revisions of "Nesevo Virtual Labs"

From NesevoWiki
Jump to navigationJump to search
Tag: Replaced
Line 7: Line 7:
 
= SONiC Lab =
 
= SONiC Lab =
  
−
<span><to be noted that those informations are included into the readme.md file into the archive></span>
+
[[sonic-lab]]
−
 
 
−
== Lab diagram ==
 
−
[[File:SONIC_LAB.jpg]]
 
−
 
 
−
Lab archive [https://wiki.nesevo.com/images/0/0a/Sonic-lab-20201030.zip Sonic-lab-20201030.zip]
 
−
 
 
−
This lab is a forked lab from many found on @, starting from Microsoft one : https://github.com/Azure/SONiC/wiki/SONiC-P4-Software-Switch
 
−
 
 
−
The target of this lab is to simulate a simple IP/Fabric in SPINE/LEAF topology. Each Leaf provide local L2 connectivity + L3 gateways to hosts. Flows between hosts from different leaf are L3 routed, in a "node path" LEAF-SPINE-LEAF.
 
−
 
 
−
Nothing complicated, but it allows to put a first foot into SONiC world :)
 
−
 
 
−
For the moment, as far as we know, MC-LAG + EVPN/VXLAN features are only available on entreprise SONiC versions. Tests to come once physic switches in enterprise version will be available in our lab.
 
−
 
 
−
The diagram of the architecture is into the zip file (SONIC_LAB.jpg)
 
−
 
 
−
To run the lab you need :
 
−
 
 
−
* to have installed docker by using ./install_docker_ovs.sh
 
−
* to run the ./load_image.sh in order to get the Sonic image
 
−
 
 
−
Note : don't change file / folders names of network devices (leafX, spineX)
 
−
 
 
−
Once you're ready, please run the lab by launching "./start.sh"
 
−
 
 
−
The script :<div></div>
 
−
* launches the containers without Docket network features
 
−
* create network namespaces
 
−
* build linux bridges to interconnect the containers
 
−
* configure host IPs
 
−
* launch startup sonic scripts into sonic devices
 
−
* once devices started, checks + ping tests are run. If all BGP sessions are ok on spine + all ping are fine, the setup works well.
 
−
The "start" script has several comments, perhaps without the right vocabulary, so please be tolerant :)
 
−
 
 
−
If you want to stop the lab, please launch "./stop.sh"
 
−
 
 
−
Below some useful commands to run for sonic containers :
 
−
 
 
−
=== <span>run ping</span> ===
 
−
<syntaxhighlight lang="bash">
 
−
sudo docker exec -it <container> ping <ip>
 
−
</syntaxhighlight>
 
−
This command triggers ping into the targetted container :
 
−
<syntaxhighlight lang="bash">
 
−
plancastre@dockerhost:~/00.Projects/p4-version-pla$ sudo docker exec -it leaf1 ping 192.168.1.1
 
−
PING 192.168.1.1 (192.168.1.1): 56 data bytes
 
−
64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=0.052 ms
 
−
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.034 ms
 
−
^C--- 192.168.1.1 ping statistics ---
 
−
</syntaxhighlight>
 
−
 
 
−
=== <span>check bgp sessions</span> ===
 
−
<syntaxhighlight lang="bash">
 
−
sudo docker exec -it <container> vtysh -c "show ip bgp sum"
 
−
</syntaxhighlight>
 
−
This command sollicitates the SONiC shell of the targeted container, in order to print the bgp status.
 
−
Below, we run it on one spine, you should have 4 sessiosn UP (for the 4 leaves)
 
−
<syntaxhighlight lang="bash">
 
−
plancastre@dockerhost:~/00.Projects/p4-version-pla$ sudo docker exec -it spine1 vtysh -c "show ip bgp sum"
 
−
BGP router identifier 10.1.0.1, local AS number 65001
 
−
RIB entries 8, using 896 bytes of memory
 
−
Peers 4, using 18 KiB of memory
 
−
Neighbor        V        AS MsgRcvd MsgSent  TblVer  InQ OutQ Up/Down  State/PfxRcd
 
−
10.1.0.0        4 65101    6409    6411        0    0    0 01:46:46        3
 
−
10.1.0.2        4 65102    6406    6410        0    0    0 01:46:44        3
 
−
10.1.0.4        4 65103    6407    6410        0    0    0 01:46:44        4
 
−
10.1.0.6        4 65104    6406    6412        0    0    0 01:46:46        1
 
−
Total number of neighbors 4
 
−
</syntaxhighlight>
 
−
 
 
−
=== <span>check ip route</span> ===
 
−
<syntaxhighlight lang="bash">
 
−
sudo docker exec -it <container> vtysh -c "show ip route"
 
−
</syntaxhighlight>
 
−
This command sollicitates the SONiC shell of the targeted container, in order to print its routing table?
 
−
 
 
−
<syntaxhighlight lang="bash">
 
−
plancastre@dockerhost:~/00.Projects/p4-version-pla$ sudo docker exec -it spine1 vtysh -c "show ip route"
 
−
Codes: K - kernel route, C - connected, S - static, R - RIP,
 
−
O - OSPF, I - IS-IS, B - BGP, P - PIM, A - Babel,
 
−
> - selected route, * - FIB route
 
−
C>* 10.1.0.0/31 is directly connected, Vlan11
 
−
C>* 10.1.0.2/31 is directly connected, Vlan21
 
−
C>* 10.1.0.4/31 is directly connected, Vlan31
 
−
C>* 10.1.0.6/31 is directly connected, Vlan41
 
−
C>* 127.0.0.0/8 is directly connected, lo
 
−
B>* 192.168.1.0/24 [20/0] via 10.1.0.0, Vlan11, 01:47:23
 
−
B>* 192.168.2.0/24 [20/0] via 10.1.0.2, Vlan21, 01:47:21
 
−
B>* 192.168.3.0/24 [20/0] via 10.1.0.4, Vlan31, 01:47:21
 
−
B>* 192.168.4.0/24 [20/0] via 10.1.0.6, Vlan41, 01:47:23
 
−
</syntaxhighlight>
 
−
For more commands check SONiC docs : https://github.com/Azure/sonic-utilities/blob/master/doc/Command-Reference.md
 
−
 
 
−
To finish, below the output of the start.sh when all goes well<div></div>
 
−
plancastre@dockerhost:~/00.Projects/p4-version-pla$ ./start.sh
 
−
---------------------------------------------------
 
−
Creating the containers: starting
 
−
---------------------------------------------------
 
−
0b4bbb3c6cfc9895466ea13a9e940d1a176d66f45deee9752e9b4732d735bb03
 
−
5ca9486baab3e8a5259062167132a944eee717875d3cc1ef29fe490cba3184c1
 
−
46c9c09dba27a32715b9fbe0bc434a9284b9d59317d278df693f425cb669f037
 
−
898e6afbcb2977115acbba2a69d069796cfd70fb90228b6c18e09ba4584365f7
 
−
eb9b3ef6d14784c9ffe4d9d5df3e921a24559889cb8770d226263aad6761182a
 
−
ae5f3b2c628da687eaabb331dc2cd989e71bcb386854e7a0be6ec587df99d49a
 
−
122197bffd7566a01ce3b6565fdfb6eb893aab7d5236f14e5a9bbbe95037ced2
 
−
a604520a080e2a2184598ad1d915c0c182d16e5185033373e95a4772d8978a67
 
−
0c49e18d78b2aa7c8ef8e937b60285aa56ec0bf4a8530226285270a085e11d5c
 
−
eb66336b8c6bd8333f1f4f685369e6cac973b817c35bb7126ac4d7ba72ef71bf
 
−
---------------------------------------------------
 
−
Retreiving PID from docker containers
 
−
---------------------------------------------------
 
−
---------------------------------------------------
 
−
Creating network namespaces for containers
 
−
---------------------------------------------------
 
−
List of created namespaces
 
−
ns_host4
 
−
ns_host3
 
−
ns_host2
 
−
ns_host1
 
−
ns_spine2
 
−
ns_spine1
 
−
ns_leaf4
 
−
ns_leaf3
 
−
ns_leaf2
 
−
ns_leaf1
 
−
---------------------------------------------------
 
−
Creating network connectivity between containers
 
−
---------------------------------------------------
 
−
---------------------------------------------------
 
−
Now assigning IPs to hosts (host1 to host4)
 
−
---------------------------------------------------
 
−
---------------------------------------------------
 
−
Configuration of containers is now finished
 
−
---------------------------------------------------
 
−
---------------------------------------------------
 
−
Now booting switches, please wait 2 minutes for switches to load
 
−
---------------------------------------------------
 
−
---------------------------------------------------
 
−
2 minutes period is finished
 
−
---------------------------------------------------
 
−
---------------------------------------------------
 
−
Now fixing the iptables
 
−
---------------------------------------------------
 
−
---------------------------------------------------
 
−
Backend actions are now finished
 
−
---------------------------------------------------
 
−
---------------------------------------------------
 
−
Now we'll check in 15 sec that BGP peers are all Up
 
−
---------------------------------------------------
 
−
---------------------------------------------------
 
−
SPINE1 check BGP Sessions
 
−
---------------------------------------------------
 
−
BGP router identifier 10.1.0.1, local AS number 65001
 
−
RIB entries 8, using 896 bytes of memory
 
−
Peers 4, using 18 KiB of memory
 
−
Neighbor        V        AS MsgRcvd MsgSent  TblVer  InQ OutQ Up/Down  State/PfxRcd
 
−
10.1.0.0        4 65101      94      97        0    0    0 00:01:28        4
 
−
10.1.0.2        4 65102      95      97        0    0    0 00:01:28        5
 
−
10.1.0.4        4 65103      95      97        0    0    0 00:01:28        5
 
−
10.1.0.6        4 65104      95      97        0    0    0 00:01:28        5
 
−
Total number of neighbors 4
 
−
---------------------------------------------------
 
−
SPINE2 check BGP Sessions
 
−
---------------------------------------------------
 
−
BGP router identifier 10.2.0.1, local AS number 65002
 
−
RIB entries 8, using 896 bytes of memory
 
−
Peers 4, using 18 KiB of memory
 
−
Neighbor        V        AS MsgRcvd MsgSent  TblVer  InQ OutQ Up/Down  State/PfxRcd
 
−
10.2.0.0        4 65101      93      96        0    0    0 00:01:29        2
 
−
10.2.0.2        4 65102      94    100        0    0    0 00:01:32        1
 
−
10.2.0.4        4 65103      94    100        0    0    0 00:01:32        1
 
−
10.2.0.6        4 65104      94    100        0    0    0 00:01:32        1
 
−
Total number of neighbors 4
 
−
---------------------------------------------------
 
−
Now if all is ok, we'll do some ping tests
 
−
---------------------------------------------------
 
−
---------------------------------------------------
 
−
host1 ping its gateway
 
−
---------------------------------------------------
 
−
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
 
−
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=17.6 ms
 
−
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=9.14 ms
 
−
--- 192.168.1.1 ping statistics ---
 
−
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
 
−
rtt min/avg/max/mdev = 9.145/13.390/17.636/4.247 ms
 
−
---------------------------------------------------
 
−
host2 ping its gateway
 
−
---------------------------------------------------
 
−
PING 192.168.2.1 (192.168.2.1) 56(84) bytes of data.
 
−
64 bytes from 192.168.2.1: icmp_seq=1 ttl=64 time=23.6 ms
 
−
64 bytes from 192.168.2.1: icmp_seq=2 ttl=64 time=6.21 ms
 
−
--- 192.168.2.1 ping statistics ---
 
−
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
 
−
rtt min/avg/max/mdev = 6.218/14.950/23.683/8.733 ms
 
−
---------------------------------------------------
 
−
host3 ping its gateway
 
−
---------------------------------------------------
 
−
PING 192.168.3.1 (192.168.3.1) 56(84) bytes of data.
 
−
64 bytes from 192.168.3.1: icmp_seq=1 ttl=64 time=18.8 ms
 
−
64 bytes from 192.168.3.1: icmp_seq=2 ttl=64 time=12.7 ms
 
−
--- 192.168.3.1 ping statistics ---
 
−
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
 
−
rtt min/avg/max/mdev = 12.716/15.764/18.812/3.048 ms
 
−
---------------------------------------------------
 
−
host4 ping its gateway
 
−
---------------------------------------------------
 
−
PING 192.168.4.1 (192.168.4.1) 56(84) bytes of data.
 
−
64 bytes from 192.168.4.1: icmp_seq=1 ttl=64 time=17.7 ms
 
−
64 bytes from 192.168.4.1: icmp_seq=2 ttl=64 time=4.46 ms
 
−
--- 192.168.4.1 ping statistics ---
 
−
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
 
−
rtt min/avg/max/mdev = 4.464/11.107/17.750/6.643 ms
 
−
---------------------------------------------------
 
−
host1 sends 3 ping the 3 other hosts
 
−
---------------------------------------------------
 
−
PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.
 
−
64 bytes from 192.168.2.2: icmp_seq=1 ttl=61 time=16.0 ms
 
−
64 bytes from 192.168.2.2: icmp_seq=2 ttl=61 time=19.5 ms
 
−
64 bytes from 192.168.2.2: icmp_seq=3 ttl=61 time=16.1 ms
 
−
--- 192.168.2.2 ping statistics ---
 
−
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
 
−
rtt min/avg/max/mdev = 16.049/17.253/19.532/1.615 ms
 
−
PING 192.168.3.2 (192.168.3.2) 56(84) bytes of data.
 
−
64 bytes from 192.168.3.2: icmp_seq=1 ttl=61 time=15.5 ms
 
−
64 bytes from 192.168.3.2: icmp_seq=2 ttl=61 time=14.3 ms
 
−
64 bytes from 192.168.3.2: icmp_seq=3 ttl=61 time=16.9 ms
 
−
--- 192.168.3.2 ping statistics ---
 
−
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
 
−
rtt min/avg/max/mdev = 14.312/15.592/16.939/1.083 ms
 
−
PING 192.168.4.2 (192.168.4.2) 56(84) bytes of data.
 
−
64 bytes from 192.168.4.2: icmp_seq=1 ttl=61 time=16.0 ms
 
−
64 bytes from 192.168.4.2: icmp_seq=2 ttl=61 time=20.7 ms
 
−
64 bytes from 192.168.4.2: icmp_seq=3 ttl=61 time=16.8 ms
 
−
--- 192.168.4.2 ping statistics ---
 
−
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
 
−
rtt min/avg/max/mdev = 16.048/17.871/20.739/2.058 ms
 
−
---------------------------------------------------
 
−
host2 sends 3 ping the 3 other hosts
 
−
---------------------------------------------------
 
−
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
 
−
64 bytes from 192.168.1.2: icmp_seq=1 ttl=61 time=16.2 ms
 
−
64 bytes from 192.168.1.2: icmp_seq=2 ttl=61 time=16.6 ms
 
−
64 bytes from 192.168.1.2: icmp_seq=3 ttl=61 time=16.9 ms
 
−
--- 192.168.1.2 ping statistics ---
 
−
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
 
−
rtt min/avg/max/mdev = 16.222/16.583/16.924/0.286 ms
 
−
PING 192.168.3.2 (192.168.3.2) 56(84) bytes of data.
 
−
64 bytes from 192.168.3.2: icmp_seq=1 ttl=61 time=16.6 ms
 
−
64 bytes from 192.168.3.2: icmp_seq=2 ttl=61 time=18.1 ms
 
−
64 bytes from 192.168.3.2: icmp_seq=3 ttl=61 time=26.8 ms
 
−
--- 192.168.3.2 ping statistics ---
 
−
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
 
−
rtt min/avg/max/mdev = 16.620/20.549/26.887/4.524 ms
 
−
PING 192.168.4.2 (192.168.4.2) 56(84) bytes of data.
 
−
64 bytes from 192.168.4.2: icmp_seq=1 ttl=61 time=33.8 ms
 
−
64 bytes from 192.168.4.2: icmp_seq=2 ttl=61 time=27.7 ms
 
−
64 bytes from 192.168.4.2: icmp_seq=3 ttl=61 time=20.2 ms
 
−
--- 192.168.4.2 ping statistics ---
 
−
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
 
−
rtt min/avg/max/mdev = 20.216/27.259/33.818/5.566 ms
 
−
---------------------------------------------------
 
−
host3 sends 3 ping the 3 other hosts
 
−
---------------------------------------------------
 
−
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
 
−
64 bytes from 192.168.1.2: icmp_seq=1 ttl=61 time=14.5 ms
 
−
64 bytes from 192.168.1.2: icmp_seq=2 ttl=61 time=19.5 ms
 
−
64 bytes from 192.168.1.2: icmp_seq=3 ttl=61 time=15.5 ms
 
−
--- 192.168.1.2 ping statistics ---
 
−
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
 
−
rtt min/avg/max/mdev = 14.535/16.549/19.541/2.162 ms
 
−
PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.
 
−
64 bytes from 192.168.2.2: icmp_seq=1 ttl=61 time=16.4 ms
 
−
64 bytes from 192.168.2.2: icmp_seq=2 ttl=61 time=14.6 ms
 
−
64 bytes from 192.168.2.2: icmp_seq=3 ttl=61 time=18.2 ms
 
−
--- 192.168.2.2 ping statistics ---
 
−
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
 
−
rtt min/avg/max/mdev = 14.643/16.458/18.278/1.491 ms
 
−
PING 192.168.4.2 (192.168.4.2) 56(84) bytes of data.
 
−
64 bytes from 192.168.4.2: icmp_seq=1 ttl=61 time=15.3 ms
 
−
64 bytes from 192.168.4.2: icmp_seq=2 ttl=61 time=14.1 ms
 
−
64 bytes from 192.168.4.2: icmp_seq=3 ttl=61 time=13.1 ms
 
−
--- 192.168.4.2 ping statistics ---
 
−
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
 
−
rtt min/avg/max/mdev = 13.171/14.234/15.334/0.883 ms
 
−
---------------------------------------------------
 
−
host4 sends 3 ping the 3 other hosts
 
−
---------------------------------------------------
 
−
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
 
−
64 bytes from 192.168.1.2: icmp_seq=1 ttl=61 time=21.9 ms
 
−
64 bytes from 192.168.1.2: icmp_seq=2 ttl=61 time=21.3 ms
 
−
64 bytes from 192.168.1.2: icmp_seq=3 ttl=61 time=14.6 ms
 
−
--- 192.168.1.2 ping statistics ---
 
−
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
 
−
rtt min/avg/max/mdev = 14.619/19.284/21.932/3.310 ms
 
−
PING 192.168.2.2 (192.168.2.2) 56(84) bytes of data.
 
−
64 bytes from 192.168.2.2: icmp_seq=1 ttl=61 time=14.8 ms
 
−
64 bytes from 192.168.2.2: icmp_seq=2 ttl=61 time=18.4 ms
 
−
64 bytes from 192.168.2.2: icmp_seq=3 ttl=61 time=14.1 ms
 
−
--- 192.168.2.2 ping statistics ---
 
−
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
 
−
rtt min/avg/max/mdev = 14.148/15.786/18.409/1.879 ms
 
−
PING 192.168.3.2 (192.168.3.2) 56(84) bytes of data.
 
−
64 bytes from 192.168.3.2: icmp_seq=1 ttl=61 time=16.2 ms
 
−
64 bytes from 192.168.3.2: icmp_seq=2 ttl=61 time=15.1 ms
 
−
64 bytes from 192.168.3.2: icmp_seq=3 ttl=61 time=18.9 ms
 
−
--- 192.168.3.2 ping statistics ---
 
−
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
 
−
rtt min/avg/max/mdev = 15.117/16.788/18.962/1.612 ms
 
−
---------------------------------------------------
 
−
If bot spine have all BGP sessions and all ping succeeded, all works well
 
−
Congrats ! please check readme file to find some details
 
−
---------------------------------------------------
 

Revision as of 10:35, 29 October 2021

Nesevo-labs-v2.png

Nokia/Cumulus Multi-Vendor Lab

Cumulus-Nokia-Lab

SONiC Lab

sonic-lab