• 日本語
    • English (英語)
Avinton JapanAvinton JapanAvinton JapanAvinton Japan
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
      • 自動車ナンバープレート自動認識システム
    • プライベートクラウド
    • AIサービス開発
    • AIカメラ/画像解析無料体験版
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
    • Academy with Platform
  • 採用情報
    • Avintonジャパン 採用ページ
    • 求人一覧
    • よくある質問
    • 新卒採用
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ

NVIDIA Cumulus VX + GNS3でBGPネットワークのシミュレーション

  • ルーティング
  • データベースの命名規則
  • 三目並べ – 2.〇×を交互にゲーム盤に入るようにしよう
  • 三目並べ – 3.勝敗がつくようにしよう
  • クリーンコード(Clean Code)
  • 三目並べ – 4.「スタート」「リセット」ボタンをつけよう
  • 三目並べ – 5.先攻後攻を決めて、コンピュータ対戦にしよう(前編)
  • インフラストラクチャー(サーバー、コンポーネント、RAID)
  • 機械学習入門者向け Support Vector Machine (SVM) に触れてみる
  • YOLOv8を用いた物体検出
  • 正規表現とパイプ
  • 機械学習エンジニアに必要なスキル
  • 軽量版Kubernetesディストリビューション – k0s クラスターの構築
  • ファイル操作コマンド
  • グループとユーザー
  • 困った時に使うコマンド
  • 一般グループのユーザーとグループ
  • プライバシーポリシー
  • 三目並べ – 6.先攻後攻を決めて、コンピュータ対戦にしよう(後編)
  • フロントエンド開発のための環境構築
  • ファイル検索コマンド
  • 質問
  • 仮想化環境のディスク容量を拡張する
  • ユーザー権限とアクセス権
  • データ分析基礎 – Part1
  • 三目並べ – 0.導入
  • テキスト処理
  • データベースへのデータロード
  • 機械学習概要1
  • 機械学習入門者向け Naive Bayes(単純ベイズ)アルゴリズムに触れてみる
  • ファイル管理
  • SSHを使用してホストOSからゲストOSに接続する
  • 機械学習入門者向け ChainerRLでブロック崩しの学習
  • 機械学習入門者向け ランダムフォレストによる Kaggle Titanic生存者予測
  • 機械学習概要2
  • データ分析基礎 – Part 2
  • 機械学習入門者向け 分類と回帰の違いをプログラムを書いて学ぼう
  • フロントエンドのWeb開発について
  • ダイナミックルーティング
  • 三目並べ – 1.ゲーム盤を作ろう
  • 【Python入門】Python Numpy チュートリアル
  • Amazon EC2 インスタンスの初期設定をしよう
  • AmazonEC2とVPCでネットワークとサーバーを構築しよう
  • Apache NiFi Exercise
  • Apache NiFi データパイプライン基礎
  • Apache NiFiの環境設定
  • Apache Spark 基礎
  • Apache SparkとApache Zeppelinの概要と環境構築
  • Apache Superset maptoolの使い方
  • Apache Superset 基礎
  • Apache Superset 概要と環境構築
  • Apache Zeppelin 基本機能
  • APIのデモンストレーション
  • Avinton Academy コンテンツガイド
  • AWS CLIをインストールしてコマンド操作しよう
  • AWS CLIを使ってEC2のファイルをS3へアップロードしよう
  • AWS Route 53を使って独自ドメインのWebページを表示させてみよう
  • AWSアカウントの作成と必ずやるべきセキュリティ対策
  • AWSのEC2インスタンスでWordPressブログを公開してみよう
  • AWS入門者向け 初心者が最初に理解すべきEC2とVPCの基本的な用語解説
  • CCNA
  • Certbotを使ってSSL証明書を発行し、HTTP通信を暗号化しよう
  • CISCO 1800ルータセットアップ
  • CSV import & export – Node.js, mySQL – 1
  • CSV import & export – Node.js, mySQL – 2
  • Docker Compose(Nginx + Flask + MySQL)演習
  • Docker Engineのubuntu上へのinstall
  • Docker 概要とセットアップ
  • Docker, Kubernetesの学び方について
  • Dockerコンテナイメージの最適化/ベストプラクティス
  • DockerとApacheを使ってWebサーバーを構築しよう
  • EC2からS3へ自動でぽいぽいアップロードするスクリプトの作成
  • ESP32-CAMのサンプルアプリケーションを実行する
  • 01 – Sparkfun Inventor’s Kit の準備
  • 02 – Sparkfun Inventor’s KitでLチカ
  • 03 ポテンショメータでLEDの点滅間隔をアナログ入力する
  • 04 フォトレジスタで明るさに反応するシステムをつくる
  • 05 LCDに文字列を表示する
  • 06 – BME280とLCDを組み合わせて温度計をつくる
  • ESP32とArduino IDE/PlatfromIOでHello Worldアプリケーションの実行
  • ESP32と超音波センサー HC-SR04 で物体の距離を計測する
  • ESXi – Switchの追加とVLAN
  • ESXi – VyOS
  • ESXi – 小規模ネットワーク 構築
  • Gitとは
  • VS CodeでGitHub Copilotを設定する
  • VSCode リモート開発環境
  • GNS3のセットアップ
  • Kubernetesクラスター上へのOpenVINOモデルサーバーを使用したサンプルアプリケーションのデプロイ
  • Linuxとは
  • NAT
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – React編
  • NodeJSでWebアプリケーション開発 – Socket.IO編
  • NVIDIA Cumulus VX + GNS3でBGPネットワークのシミュレーション
  • OpenCVのテストプログラム
  • PacketTracerのセットアップ
  • Pandasによる構造化データ分析
  • PCからルータ、スイッチへのSSH接続設定
  • PostGIS exercise
  • PostgreSQL – Python – Apache – Bootstrap
  • MySQLとMySQL Workbench のセットアップ
  • PostgreSQL Setup
  • PostgreSQL – インデックスを利用したパフォーマンス改善方法
  • PostgreSQL – パーティショニングを利用したパフォーマンス改善方法
  • PostgreSQLによるデータ分析
  • postgreSQLへのshp fileのimport
  • Python2.7とOpenCVのインストール
  • Python3.8 と OpenCV のインストール (Ubuntu20.04LTS)
  • Pythonでデータベースを操作する
  • Pythonで画像を分類するプログラムを作成する
  • Pythonによるマルチスレッドプログラミング実践
  • Raspberry Pi 4B のセットアップ
  • Raspberry PiとBME280を使用して温度と湿度、気圧を読み取る
  • REDIS
  • Redux基礎 – 主要な概念と用語
  • Ruby on Rails を MySQLでセットアップ
  • Ruby on Railsによる簡単なウェブアプリケーション
  • SampleアプリケーションのKubernetes上へのデプロイ
  • Scala 基礎
  • scikit-learnとは
  • Spark SQL エクササイズ
  • SparkMLによるKaggle Titanic生存者予測
  • SparkMLによる住宅価格予測
  • SQL 便利な関数
  • Ubuntuの基本設定
  • uhubctlでUSBデバイスのオンオフをコントロール
  • Terraform入門 2 – Terraformのstate管理
  • Terraform入門 1 – TerraformでAWS上にEC2インスタンスを作成する
  • Virtualisation and Container (仮想化とコンテナ) – Ansible, Docker and Kubernetes
  • viエディタ
  • VLAN
  • VMware ESXi サーバー構築
  • Webアプリ開発に欠かせないGoogle Chrome DevToolsの基本
  • Windows Server 2012 R2 Hyper-V
  • YOLOv5を用いた物体検出
Home Avintonアカデミー NVIDIA Cumulus VX + GNS3でBGPネットワークのシミュレーション
NVIDIA logo
GNS3

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取得済みの方

基本編

初心者の方や以下の内容が難しいと感じ方は以下のチュートリアルからやってみることをおススメします。

  • Basic BGP Configuration

事前知識

このチュートリアルでは以下の知識が求められます。

  • GNS3
    • GNS3のセットアップについてはこちらのAvinton Academyのページをご覧ください
  • BGPについて
    • Border Gateway Protocol – BGP by NVIDIA
    • BGP in Data Center – free ebook
    • What is BGP? | BGP routing explained
  • Cumulus VXについて
    • https://www.nvidia.com/en-us/networking/ethernet-switching/cumulus-vx/#faq

以下の手順はこちらのAvinton AcademyのページでWindows上にGNS3環境が構築されていることを前提として進めます。GNS3のバックエンドはVMware Workstation Playerを使用しますが、その他のハイパーバイザーでも問題ありません。こちらのページより各仮想環境上での実行方法をご確認ください。

タスク概要

NVIDIAのcumulus VXのドキュメントにあるConfiguration ExampleをGNS3上で実装します。

  • https://docs.nvidia.com/networking-ethernet-software/cumulus-linux-43/Layer-3/Border-Gateway-Protocol-BGP/Configuration-Example/

NVIDIA Cumulus VX + GNS3でBGPネットワークのシミュレーション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を使用します。

NVIDIA Cumulus VX + GNS3でBGPネットワークのシミュレーション

2. GNS3上で2つのspine, 4つのleafのスイッチをCumulu VXで構築し接続

以下の図のようにドラッグアンドドロップでインスタンスを追加します。 また、ノード間のリンクも作成します。
この時点ではserver01, server02は追加しなくてOKです。後半で行います。

NVIDIA Cumulus VX + GNS3でBGPネットワークのシミュレーション

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アドレスとデフォルトゲートウェイなどの割り振りを行います。

NVIDIA Cumulus VX + GNS3でBGPネットワークのシミュレーション

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を利用することで無料で本番環境レベルのスイッチ機能を試すことができました。

あなたも、Avintonでこのような最先端技術を習得し活用してみませんか?

社員の成長を導きながら、AIやビッグデータなどの最先端技術をプロジェクトに活用していくことが私たちのビジョンです。Avintonの充実した技術研修でスキルアップを図り、あなたのキャリア目標を一緒に達成しませんか?

採用情報

採用情報

採用情報

Categories

  • 相互学習
  • 採用
  • 社員インタビュー
  • 学習&資格取得
  • 技術解説
  • イベント告知
  • 学内説明会&講義
  • 産学連携
  • 就職活動
  • イベントレポート
  • その他
  • 技術ブログ&インタビュー
  • mainpage
  • New Graduates Interviews
  • 中途エンジニア
  • カテゴリーなし
  • ニュースリリース&イベント

Avinton SDGs

SDGsへの貢献

Search

タグ

AIエンジニア AI導入 Apatch AvintonAcademy CKA DevOps KiX Kubernetes Notion PM&PMO PyTorch SDGs Innnovation Hub UI YOLOv5 アカウントマネージャー インタビュー インフラエンジニア エッジAIカメラ セキュリティエンジニア ソフトスキル ツール開発 データサイエンティスト ネットワークエンジニア フルスタックエンジニア フロントエンド ベテランエンジニア ボランティア マイクロサービス モーフィング ローカルイベント 中瀬幸子、サーバークラスター 中途採用 人材育成 協働パートナー 国際自動制御連盟 地域創生 基本情報技術者 強化学習 技術 新卒、キャリア 新卒採用 田中研之輔 社会貢献 経団連 顔認証
© 2023 Avinton | All Rights Reserved | プライバシーポリシー
  • サービス
    • Avinton Data Platform
    • エッジAIカメラ
      • 自動車ナンバープレート自動認識システム
    • プライベートクラウド
    • AIサービス開発
    • AIカメラ/画像解析無料体験版
  • 最新情報
    • ニュースリリース&イベント情報
    • 技術ブログ&インタビュー
  • アカデミー
    • Avintonアカデミー
    • Academy on Campus
    • Academy with Platform
  • 採用情報
    • Avintonジャパン 採用ページ
    • 求人一覧
    • よくある質問
    • 新卒採用
  • 企業情報
    • 会社概要
    • 代表からご挨拶
    • SDGsへの貢献
  • お問い合わせ
  • 日本語
    • English (英語)
Avinton Japan