BGP のラボ:2つの自律システムをブラウザーでつなぐ

3つ目のネットワークラボです。生徒の Ubuntu VM 1台の中に5台のマシンを作ります。r1 は AS 65001 のすべて、r2 は AS 65002 のすべてで、それぞれ FRRouting を動かし、BGP のデーモンは起動していますが、何も設定されておらず、それぞれの先にホストがあります。r1 はそのネットワークを一度も聞いたことがないので、h1 から h2 への最初の ping は失敗します。

生徒が学ぶこと

異なる自律システムにある2台のルーターを、そのあいだのリンクでネイバーにし、show bgp summary でセッションが立ち上がるのを見ます。それぞれの AS に、自分のホストがいるネットワークを広告させ、show bgp ipv4 unicast と show ip route bgp で、各ルーターが何を学んだかを確認します。セッションは確立しているのに何も交換されない場合は、FRRouting のドキュメントで ebgp-requires-policy を調べます。それが学びです。

r2 の先のプライベートネットワークは AS 65002 だけのものなので、h1 がそこへ届くことになる広告は何もしません。ルーティングポリシーの入口です。

トポロジー

h1 は r1 に、r1 は AS 間のリンクで r2 に、r2 は h2 につながり、r2 の先にプライベートネットワーク192.168.99.0/24 があります。アドレスは、ラボがホームフォルダーに置く README にあります。

ブラウザーで動かす

VM ラボはモジュールにラボ課題として追加し、サンプルはラボのページにあります。

  1. ラボを追加する. 自分が教えるモジュールで課題を追加し、「Ubuntu VM ラボ」のカードを選びます。ページにはcompose ファイルの代わりにマシンの短い記述が表示されます。
  2. サンプルから始める. ページには、そこから始められるネットワークラボが3つ用意されています。Networking lab 3: BGP between two autonomous systemsを選びます。サンプルを使うとテキストが置き換わりますが、「元に戻す」で自分のテキストに戻せます。
  3. 公開して自分のコピーを起動する. 「公開」してから「起動」を押します。VM の初回起動時に、ラボ自身の setup スクリプトが Ubuntu のアーカイブから FRRouting をインストールしてトポロジーを作ります。所要時間は約10秒です。
  4. ターミナルを開く. ターミナルを開き、ホームフォルダーの README.md を読みます。やることが書かれていて、答えは書かれていません。netlab status でマシンの一覧、netlab shell r1 でルーターのコンソールを開けます。

このラボの基本レッスン

BGP Basics は、このラボで進める小さなレッスンです。このラボは Ubuntu VM で、各手順に説明と、マシンのターミナルにコマンドを入力してルーターの応答を表示する「実行」ボタンが付いています。生徒はマシンを確認し、ネットワークを越えようとして失敗し、BGP が設定されているか、何を知っているかをルーターに尋ねます。

生徒は見て回るだけで、ネットワークを動かすというラボ本来の課題は生徒に任せるので、レッスンは答えを教えません。無料の個人アカウントには、ホームにある Basics モジュールで配布されます。どの学校もライブラリの Basics フォルダから自分のモジュールにコピーでき、新しい学校ではサンプルモジュールの Networking Basics (Sample) に入っています。意図的に小さくしてあり、ラボで進めるレッスンとは何かを教員に見せるためのもので、残りはラボが担います。変更したい場合は、自分のモジュールにコピーしてください。

採点の仕組み

チェックは、新しく起動し直した、保存されたマシンのコピーで実行されます。合格になるのは、各ルーターが相手の AS との Established セッションを持つこと、それぞれが BGP で学んだ相手のネットワークへのルートを持つこと、h1 がその経路で h2 に届くこと、そして AS 65002 がプライベートネットワークを広告していないことがすべて成り立つときだけです。

  1. 配布する. ほかの課題と同じようにラボを配布します。期限を付けることもできます。各生徒には専用の VM が渡され、セッションをまたいで保持されます。
  2. チェックを実行する. クラス一覧の生徒の行で「チェックを実行」を押します。保存されたマシンのコピーが(元には保存されない形で)起動し、ラボのチェックスクリプトが root で実行されて、合格したか、何を出力したか、いつかが表示されます。結果は生徒には知らされません。
  3. 採点する. チェックの出力を読みます。生徒が VM を停止すると、クラス一覧にインストールしたパッケージや書いたファイルなどの変更内容も表示されるので、VM を起動せずに採点できます。足りない場合は理由を書いて差し戻します。

GitHub の定義ファイル

このファイルがラボの定義のすべてで、プラットフォームが実行するのと同じテキストです。コピーして自分のトポロジーを作れます。daemons bgpd と書くと、すべてのルーターでプロトコルが起動します。

よくある質問

これは内部 BGP ですか、外部 BGP ですか?
外部です。2台のルーターは異なる自律システム、65001 と 65002 にあるので、ebgp-requires-policy の既定値が関係してきます。
本物のインターネットに触れるものはありますか?
いいえ。ネットワーク全体が生徒の VM の中にあり、自律システム番号はプライベート用に予約された範囲のものです。
BGP のラボは OSPF のラボとどう違いますか?
OSPF のラボは1つのエリアに3台のルーターがあり、すべて同じネットワークの中です。BGP のラボでは r1 が AS 65001 のすべて、r2 が AS 65002 のすべてで、生徒は2つの自律システムの間にセッションを作り、それぞれのネットワークを広告し、r2 の背後のプライベートネットワークは広告しないままにします。