0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Nested Virtualization VM(Google Cloud)上にcontainerlabを構築してCisco XRdとCisco Catalyst 8000VをBGP接続してみた

Last updated at Posted at 2024-11-28

前回containerlab上でXRd同士を接続したが、今回はXRdとCatalyst 8000vとの接続を試してみる
8000vのimage fileはqcow2のVMとなっているため、前回と異なり以下二点の対応が必要

  1. Nested Virtulization有効化
  2. 8000v(VM)のコンテナ化

下記手順通り実施すれば誰でもXRdと8000vとの接続構成を構築できるはず。CSR1000vも基本やることは一緒
一部説明文を省略しているので詳細は前回を参照

環境

VMインスタンス(Google Cloud)

  • Debian GNU/Linux 12 (bookworm)
  • n2-standard-8
  • disk
    • 200GB #defaultのままだと構築途中に容量不足でエラーとなったため気持ち多めに
  • spot
    • 節約のため

手順

  1. Nested Virtualization VMインスタンス作成
  2. containerlabインストール
  3. Cisco XRd用設定
  4. vrnetlabによるDockerイメージ作成
  5. containerlab topology作成
  6. bgp設定

1. Nested Virtualization VMインスタンス作成

gloud initでgloud CLIが使用できるようにしておく(ローカル端末でコマンド実施)
Nested Virtualizationのためにカスタムイメージを作成

gcloud compute images create nested-debian --source-image-family=debian-12 --source-image-project=debian-cloud --licenses "https://www.googleapis.com/compute/v1/projects/vm-options/global/licenses/enable-vmx"

作成したカスタムイメージを指定してVM作成

gcloud compute instances create clab --machine-type=n2-standard-8 --boot-disk-size=200GB --image=nested-debian --provisioning-model=SPOT

2. containerlabインストール

以降はVM上実施

wget -qO - https://ftp-master.debian.org/keys/archive-key-15.asc | apt-key add -
apt update
apt -y upgrade
curl -sL https://containerlab.dev/setup | sudo -E bash -s "all"

3. Cisco XRd用設定

sysctl -w fs.inotify.max_user_instances=64000

4. vrnetlabによるDockerイメージ作成

containerlabはコンテナを管理するためVMベースのノードはコンテナ化する必要がある。
それを実現させるのがvrnetlab

page32,33参考

ただ上記資料のvrnetlab/vrnetlabだと以下のエラーでイメージ作成できないためhellt/vrnetlabにてイメージ作成(このトラシューでだいぶ時間消費した...)

git clone https://github.com/hellt/vrnetlab.git
cd vrnetlab/c8000v

vrnetlab/c8000v配下にqcow2ファイルを保存

root@clab2:~/vrnetlab/c8000v# ll
total 1820188
drwxr-xr-x  3 root root       4096 Nov 28 06:53 .
drwxr-xr-x 26 root root       4096 Nov 28 06:52 ..
-rw-r--r--  1 root root        643 Nov 28 06:52 Makefile
-rw-r--r--  1 root root       4696 Nov 28 06:52 README.md
-rw-r--r--  1 root root 1863843840 Jul 13  2023 c8000v-17.11.01a.qcow2
drwxr-xr-x  2 root root       4096 Nov 28 06:52 docker

Dockerイメージ作成

make docker-image

Dockerイメージが作成されている

root@clab4:~/vrnetlab/c8000v# docker images
REPOSITORY              TAG         IMAGE ID       CREATED          SIZE
vrnetlab/cisco_c8000v   17.11.01a   b8f351a24b52   25 seconds ago   3.14GB

5. containerlab topology作成

root@clab4:~# cat lab.yaml 
name: lab

topology:
  nodes:
    xrv:
      kind: cisco_xrd
      image: ios-xr/xrd-control-plane:7.10.2
    c8000v:
      kind: cisco_c8000v
      image: vrnetlab/cisco_c8000v:17.11.01a
      
  links:
    - endpoints: ["xrv:Gi0-0-0-0", "c8000v:Gi2"]
clab deploy -t lab.yaml

docker psで確認。c8000vは起動に少し時間がかかり、最終的にhealthy状態になっていれば問題なし

root@clab4:~# docker ps 
CONTAINER ID   IMAGE                             COMMAND                  CREATED         STATUS                   PORTS                                                 NAMES
a8e5d324176f   vrnetlab/cisco_c8000v:17.11.01a   "/launch.py --userna…"   4 minutes ago   Up 4 minutes (healthy)   22/tcp, 830/tcp, 5000/tcp, 10000-10099/tcp, 161/udp   clab-lab-c8000v
2b40ce8cc7ea   ios-xr/xrd-control-plane:7.10.2   "/usr/sbin/init"         4 minutes ago   Up 4 minutes                                                                   clab-lab-xrv

ログイン確認

root@clab4:~# ssh admin@clab-lab-c8000v
Warning: Permanently added 'clab-lab-c8000v' (RSA) to the list of known hosts.
(admin@clab-lab-c8000v) Password: 

c8000v#
c8000v#show ip int bri
Interface              IP-Address      OK? Method Status                Protocol
GigabitEthernet1       10.0.0.15       YES manual up                    up      
GigabitEthernet2       unassigned      YES unset  administratively down down    

6. bgp設定

以下configを投入
・c8000v

conf t
int gi2
no shut
ip address 192.168.0.1 255.255.255.0

router bgp 65100
bgp router-id 192.168.0.1
neighbor 192.168.0.2 remote-as 65200
address-family ipv4
end

・XRd

conf
int gi0/0/0/0
no shut
ip address 192.168.0.2/24

router bgp 65200
bgp router-id 192.168.0.2
neighbor 192.168.0.1 remote-as 65100
commit

bgp確認

c8000v#show ip bgp summary 
BGP router identifier 192.168.0.1, local AS number 65100
BGP table version is 1, main routing table version 1

Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
192.168.0.2     4        65200       3       2        1    0    0 00:00:52        0




RP/0/RP0/CPU0:xrv#show bgp ipv4 unicast summary 

(省略)

Neighbor        Spk    AS MsgRcvd MsgSent   TblVer  InQ OutQ  Up/Down  St/PfxRcd
192.168.0.1       0 65100       8       7        1    0    0 00:01:11          0!

これで今後はcontainerlab上でのIOS-XEとIOS-XRの挙動確認が可能

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?