NVIDIA Cumulus VXはシミュレーション、テスト、およびトレーニング用の無料の仮想ネットワークアプライアンスです。Cumulus Linuxの機能をローカル環境で簡単にテストすることができます。Cumulus Linuxとの違いはこちらをご確認ください。VMware, KVM, VirtualBox, Vagrantなどの仮想環境ハイパーバイザーと互換性があり、GNS3など組み合わせて複数のCumulus VXインスタンスを接続し、仮想のネットワーク環境を構築することができます。このページでは、GNS3上でCumulus VXの複数インスタンスを利用して、NVIDIAのサンプルページ紹介されているBGP Unnumberedを構築します。BGPはインターネットやデータセンターなどの大規模なネットワークの運用には必要不可欠な技術になってきています。このページでは複雑で高度なBGPのネットワーク構成をCumulus VXとGNS3を利用してローカル環境で再現、テストします。このチュートリアルを完了することで、Cummulus VXの操作方法や仕組み、GNS3の操作方法、BGPについての基礎概念を理解することができます。
対象レベル: Linux 中級, ネットワーク中級, CCNA取得済みの方
基本編
初心者の方や以下の内容が難しいと感じ方は以下のチュートリアルからやってみることをおススメします。
事前知識
このチュートリアルでは以下の知識が求められます。
- GNS3
- GNS3のセットアップについてはこちらのAvinton Academyのページをご覧ください
- BGPについて
- Cumulus VXについて
以下の手順はこちらのAvinton AcademyのページでWindows上にGNS3環境が構築されていることを前提として進めます。GNS3のバックエンドはVMware Workstation Playerを使用しますが、その他のハイパーバイザーでも問題ありません。こちらのページより各仮想環境上での実行方法をご確認ください。
タスク概要
NVIDIAのcumulus VXのドキュメントにあるConfiguration ExampleをGNS3上で実装します。
Image from NVIDIA Cumulus VX document
1. GNS3上のセットアップ
2. GNS3上で2つのspine, 4つのleafのスイッチをCumulu VXで構築し接続
3. 各Cumulux VXインスタンスのセットアップ
4. 2つのサーバー間での疎通確認
1. GNS3のセットアップ
GNS3から新規のプロジェクトを開きます。 End Deviceのタブより新規のTemplateを追加します。 Filterのフィールドに”Cumulus”と入力すると、Switches以下にCumuls VXという項目が出てきます。Installを進めるとバージョン選択の画面がでますので、任意のバージョンを選択します。この時、”Missing files”と表示される場合は、イメージをダウンロードしてください。 以下のようになれば完了です。今回はGNS3上で選択できる最新版のv4.3を使用します。
2. GNS3上で2つのspine, 4つのleafのスイッチをCumulu VXで構築し接続
以下の図のようにドラッグアンドドロップでインスタンスを追加します。 また、ノード間のリンクも作成します。
この時点ではserver01, server02は追加しなくてOKです。後半で行います。
3. 各Cumulux VXインスタンスのセットアップ
ここからは各インスタンス上でセットアップを行います。
3.1 ホスト名の変更
各インスタンス上でホスト名を変更します。
1 2 3 |
net add hostname spine01 net pending net commit |
その後、シェルに入りなおすか、インスタンスをリブートしてホスト名の変更を確認します。
3.2 各インターフェースの設定
こちらのページからコピーして、各インスタンスの/etc/network/interfaces
に貼り付けます。各インターフェースの名前を適宜修正してください。(例: swp51 –> swp1)
3.3 FRRの設定
同様にこちらのページからコピーして、各インスタンスの/etc/frr/frr.conf
に貼り付けます。各インターフェースの名前を適宜修正してください。(例: swp51 –> swp1)
3.4 BGPの有効化
BGPを有効化するために、/etc/frr/daemons
を修正し、bgpd=yes
を設定します。または、以下のコマンドで該当箇所を修正します。
1 |
sudo sed -i 's/bgpd=no/bgpd=yes/' /etc/frr/daemons |
3.5 設定の反映
設定を反映させます。
1 2 |
sudo systemctl restart frr sudo ifreload -a |
4. BGPのテスト
4.1 BGPの状態の確認
こちらのページにしたがってBGPの状態を確認していきます。ここでは例として2つのコマンドを実行しました。
leaf01での実行結果です。3つのNeighborのUP時間が確認できれば成功です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
cumulus@leaf01:mgmt:~$ net show bgp summary show bgp ipv4 unicast summary ============================= BGP router identifier 10.10.10.1, local AS number 65101 vrf-id 0 BGP table version 30 RIB entries 23, using 4416 bytes of memory Peers 3, using 64 KiB of memory Peer groups 1, using 64 bytes of memory Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt spine01(swp1) 4 65199 6021 6029 0 0 0 05:00:36 6 12 spine02(swp2) 4 65199 6020 6029 0 0 0 05:00:36 6 12 leaf02(peerlink.4094) 4 65101 6027 6030 0 0 0 05:00:45 11 11 Total number of neighbors 3 show bgp ipv6 unicast summary ============================= % No BGP neighbors found show bgp l2vpn evpn summary =========================== % No BGP neighbors found |
各インターフェース(swp1, swp2, swp3, swp4)の状態を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
cumulus@leaf01:mgmt:~$ net show interface swp1 Name MAC Speed MTU Mode -- ---- ----------------- ----- ---- ------- UP swp1 0c:50:22:0f:00:01 1G 9216 Default Alias ----- leaf to spine cl-netstat counters ------------------- RX_OK RX_ERR RX_DRP RX_OVR TX_OK TX_ERR TX_DRP TX_OVR ----- ------ ------ ------ ----- ------ ------ ------ 14352 0 0 0 14609 0 0 0 LLDP Details ------------ LocalPort RemotePort(RemoteHost) --------- ---------------------- swp1 swp1(spine01) Routing ------- Interface swp1 is up, line protocol is up Link ups: 0 last: (never) Link downs: 0 last: (never) PTM status: disabled vrf: default OS Description: leaf to spine index 3 metric 0 mtu 9216 speed 1000 flags: <UP,BROADCAST,RUNNING,MULTICAST> Type: Ethernet HWaddr: 0c:50:22:0f:00:01 inet6 fe80::e50:22ff:fe0f:1/64 Interface Type Other protodown: off ND advertised reachable time is 0 milliseconds ND advertised retransmit interval is 0 milliseconds ND advertised hop-count limit is 64 hops ND router advertisements sent: 1819 rcvd: 1817 ND router advertisements are sent every 10 seconds ND router advertisements lifetime tracks ra-interval ND router advertisement default router preference is medium Hosts use stateless autoconfig for addresses. Neighbor address(s): inet6 fe80::ecf:c1ff:fe90:1/128 |
4.3 server間の疎通確認
以下の図のようにserverのインスタンスを追加します。 ここではserver01, server02に”Ubuntu Docker Guest”を使用しました。 任意のクライアントのインスタンスを使用してください。(ネットワークアダプターの数は2つ以上必要です。) 各インターフェースの設定は使用するOSによってことなりますが、以下の図のようにIPアドレスとデフォルトゲートウェイなどの割り振りを行います。
server01からserver02へpingを実行します。
1 2 3 4 5 6 7 8 9 10 11 |
root@server01:~# ping 10.1.40.10 -c 5 PING 10.1.40.10 (10.1.40.10) 56(84) bytes of data. 64 bytes from 10.1.40.10: icmp_seq=1 ttl=61 time=15.4 ms 64 bytes from 10.1.40.10: icmp_seq=2 ttl=61 time=11.6 ms 64 bytes from 10.1.40.10: icmp_seq=3 ttl=61 time=14.4 ms 64 bytes from 10.1.40.10: icmp_seq=4 ttl=61 time=17.2 ms 64 bytes from 10.1.40.10: icmp_seq=5 ttl=61 time=12.9 ms --- 10.1.40.10 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4006ms rtt min/avg/max/mdev = 11.599/14.300/17.212/1.947 ms |
tracerouteで経路を確認します。switchを経由していることが確認できます。
1 2 3 4 5 6 |
root@server01:~# traceroute 10.1.40.10 traceroute to 10.1.40.10 (10.1.40.10), 30 hops max, 60 byte packets 1 10.1.10.3 (10.1.10.3) 2.669 ms 3.113 ms 3.161 ms 2 10.10.10.101 (10.10.10.101) 13.618 ms 13.540 ms 10.10.10.102 (10.10.10.102) 15.979 ms 3 10.10.10.3 (10.10.10.3) 15.996 ms 26.564 ms 10.10.10.4 (10.10.10.4) 26.818 ms 4 10.1.40.10 (10.1.40.10) 17.725 ms * * |
上級編
さらなる演習をやりたい方には以下のようなタスクに取り組むことをおススメします。
1. Cumulus VXでのEVPNの構築例
2. Cumulus VXでのOSPFの構築例
まとめ
このページではGNS3上でCumulus VXを使用して仮想ネットワーク上でBGPを構築し、サーバー間の疎通確認を行いました。BGPはデータセンターなどの大規模なネットワーク上で利用されるルーティングプロトコルです。GNS3を使用することでGUI上で仮想ネットワーク機器を操作し、そのような大規模で複雑なネットワーク構成をローカル環境で実現できます。Cumulus VXを利用することで無料で本番環境レベルのスイッチ機能を試すことができました。