GoBGP の基本的な使い方
GoBGP は Go 言語で実装された BGP デーモンです。VIRL 上でネットワーク機器と組み合わせて使うと BGP の検証をする際に便利です。今回は簡単な使い方をメモしておきます。
GoBGP は Go 言語で実装された BGP デーモンです。VIRL 上でネットワーク機器と組み合わせて使うと BGP の検証をする際に便利です。今回は簡単な使い方をメモしておきます。
ネットワーク機器では一台で複数のルーティングテーブルを保有出来る機器があります。こういった機能のことは各社毎に呼び名が異なります。一例を挙げると以下の通りです。
メーカー | 呼び名 |
---|---|
Cisco | VRF (Virtual Routing Forwarding) |
Juniper | Routing Instance |
F5 Networks | Route Domain |
Cisco 製品を例にとると、通常は実行するコマンド毎に参照するルーティングテーブルが所属する VRF 名を指定します。IOSv で「VRF-1 のルーティングテーブルを参照して Ping を実行する」場合は以下のようになります。
1 2 3 4 |
|
これを連続して実行すると以下のようになります。数が多くなってくると都度、VRF 名を指定するのが面倒になってきます (操作ミスも増えます)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
このような場合、以下のコマンドで「VRF 名の指定を省略した場合に参照されるデフォルト VRF」を指定することが出来ます。
IOSv / IOS-XE / NX-OSv | IOS-XRv | |
---|---|---|
RoutingContext を指定 VRF に変更する | routing-context vrf VRF-NAME | set default-vrf VRF-NAME |
RoutingContext を default/global に戻す | routing-context vrf default | set default-vrf none |
尚、このコマンドは 1 セッションの間のみ、有効です。例えば、Routing Context を変更後にログアウトし、再ログインすると default/global VRF に戻ります。以下の環境で試してみます。
VIRL にはデフォルトで Ubuntu のイメージが登録されています。VIRL 1.0.26 だと Ubuntu 14.04.2 LTS が登録されていました。
1 2 3 4 5 6 |
|
今回は VIRL 上で Ubuntu を使ってみます。
Cisco VIRL で IOS 等を検証する際に「よく使うコンフィグのテンプレート」をメモしておきます。機種によって異なりますが、概ね以下のような方針にしています。(仮想環境では無く) 実機で検証する際はこれらに加え、コンソールポートのスピードを速くする等、微修正しています。
あくまで検証環境用のコンフィグ・テンプレートな点はご注意を!
Cisco IOS で「BGP の MED 属性を(ゼロでは無く)除去し、missing な状態に戻して広告出来るか?」試してみました。結論から述べると上手くいきませんでした。機会があれば「何か方法が無いか?」を深掘りしてみようと思います。また、IOS-XR や NX-OS、JUNOS での振る舞いも、改めて確認してみようと思います。
「複数のプロトコルで同じ経路を学習している場合、どのプロトコルを優先するか?」という指標を、各社で以下のように呼んでいます。一般的には「値が小さい程、優先される」という振る舞いをします。
メーカー | 呼び方 |
---|---|
Cisco | 「Distance」または「Administrative Distance」 |
Juniper | 「Route Preference」 |
MikroTik | 「Distance」または「Route Distance」 |
稀に「〜 プロトコルの AD 値は xx だよね」と回答される方がいますが、この「優先指標」は各社の実装によって差があります。ですので、「Cisco の値しか知らない」「各社製品が全て同じ値だ、と思い込んでいる」と、意図しないトラフィックフローを設計してしまう可能性があります。例えば、以下のような注意点があります。
代表的なプロトコルを一覧にすると、以下の通りです。MikroTik RouterOS の Distance は全て Cisco ISO と同じです(ちなみに「MME」とは RouterOS 独自のルーティングプロトコルです)。
実際に「どの程度、使い物になるのか?」は別にして CIsco VIRL に PaloAlto を追加する為の手順は Adding the Palo Alto virtual machine to VIRL にまとめてくださった方がいます(感謝)。VIRL 1.0.0 の場合、UWM(User Workspace Manager)にログイン後、Node resources > Images から以下の JSON をインポートします。
Cisco の公式サイトにある APIC-EM のページで APIC-EM が一般公開されました。今回は APIC-EM のインストール手順をメモしておきます。
Cisco VIRL 上に機器を配置していくと、Subtype で設定した管理インターフェイスを指定したネットワークに接続することが出来ます。今回は管理インターフェイスを外部のネットワークと FLAT 接続(L2 接続)してみます。
Cisco VIRL の Subtype に MikroTik CHR(Cloud Hosted Router)を import する際の JSON をメモしておきます。