Skip to content

Latest commit

 

History

History
131 lines (91 loc) · 4.59 KB

README.md

File metadata and controls

131 lines (91 loc) · 4.59 KB

VM-based nodes in containerlab

VM nodes integration in containerlab is based on the hellt/vrnetlab project which is a fork of vrnetlab/vrnetlab where things were added to make it work with the container networking.

Start with cloning the project:

cd ~ && git clone https://github.com/hellt/vrnetlab.git && \
cd ~/vrnetlab

Building SONiC container image

SONiC vs image (downloaded from sonic.software) is located at ~/images/sonic-vs-202405.qcow2 on your VM and should be copied to the ~/vrnetlab/sonic/ directory before building the container image.

cp ~/images/sonic-vs-202405.qcow2 ~/vrnetlab/sonic/

Once copied, we can enter in the ~/vrnetlab/sonic image and build the container image:

cd ~/vrnetlab/sonic && make

The resulting image will be tagged as vrnetlab/sonic_sonic-vs:202405. This can be verified using docker images command.

REPOSITORY                TAG       IMAGE ID       CREATED          SIZE
vrnetlab/sonic_sonic-vs   202405    33b73b1dadc4   5 minutes ago    6.37GB
ceos                      4.33.0F   927c8cd41224   53 minutes ago   2.46GB
ghcr.io/nokia/srlinux     latest    eb2a823cd8ce   8 days ago       2.35GB
hello-world               latest    d2c94e258dcb   18 months ago    13.3kB

Deploying the VM-based nodes lab

With the sonic image built, we can proceed with the lab deployment. We will deploy a lab with SONiC and SR Linux to show that Containerlab can have a VM based docker node and a native docker node in the same lab.

First, let's switch back to the lab directory:

cd ~/ac2-clab/20-vm

Now lets deploy the lab:

sudo clab dep -c

At the end of the deployment, the following table will be displayed. Wait for the sonic boot to be completed (see next section), before trying to login to sonic.

+---+---------------+--------------+--------------------------------+---------------+---------+----------------+----------------------+
| # |     Name      | Container ID |             Image              |     Kind      |  State  |  IPv4 Address  |     IPv6 Address     |
+---+---------------+--------------+--------------------------------+---------------+---------+----------------+----------------------+
| 1 | clab-vm-sonic | c865295f6b4e | vrnetlab/sonic_sonic-vs:202405 | sonic-vm      | running | 172.20.20.3/24 | 3fff:172:20:20::3/64 |
| 2 | clab-vm-srl   | 51b41a280f84 | ghcr.io/nokia/srlinux          | nokia_srlinux | running | 172.20.20.2/24 | 3fff:172:20:20::2/64 |
+---+---------------+--------------+--------------------------------+---------------+---------+----------------+----------------------+

Monitoring the boot process

To monitor the boot process of SONiC, you can open a new terminal and run the following command:

sudo docker logs -f clab-vm-sonic

the SONiC boot time is approximately 1 minute.

Connecting to the nodes

To connect to SONiC node:

ssh admin@clab-vm-sonic

Refer to the password in your card.

To connect to SR Linux node:

ssh clab-vm-srl

Configuring the nodes

Our goal is establish a ping between SR Linux and SONiC devices.

The SONiC device is pre-configured with the link IP address. This can be verified using:

show runningconfiguration interfaces

For reference, here is the configuration for sonic interface Ethernet0:

sudo config interface ip add Ethernet0 10.0.0.0/31
sudo config interface startup Ethernet0

Login to SR Linux node and run enter candidate to get into configuration edit mode and paste the below lines to configure the interface:

set / interface ethernet-1/1 admin-state enable
set / interface ethernet-1/1 subinterface 0 ipv4 admin-state enable
set / interface ethernet-1/1 subinterface 0 ipv4 address 10.0.0.1/31
set / network-instance default type default
set / network-instance default interface ethernet-1/1.0

Once configured issue the commit now command to make sure the candidate config is merged into running.

Now we configured the two systems to be able to communicate with each other. Perform a ping from SONiC to SR Linux:

admin@sonic:~$ ping 10.0.0.1 -c 3
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=2.00 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=1.97 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=3.17 ms

--- 10.0.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.965/2.378/3.168/0.558 ms

We have now completed the section on bring VM based nodes into Containerlab.