OSPF のラボ:3台のルーターでダイナミックルーティングをブラウザーで立ち上げる

2つ目のネットワークラボです。生徒の Ubuntu VM 1台の中に5台のマシンを作ります。h1 と h2 はホスト、r1、r2、r3 は FRRouting を動かすルーターで、それぞれ OSPF のデーモンは起動していますが、何も設定されていません。誰もルートを持っていないので、h1 から h2 への最初の ping は失敗し、生徒はエリア 0 で OSPF を設定しなければなりません。

生徒が学ぶこと

設定する前に、OSPF が動く様子を観察します。r1 と r2 のあいだのリンクで、IP プロトコル 89 に絞った tcpdump は、ルーターに話すよう設定するまで静かで、設定すると、ルーターが隣接ルーターに何を、どれくらいの頻度で伝えているかが見えます。vtysh で3台のルーターをエリア 0 で OSPF を設定して、すべてのルーターがすべてのホストのネットワークを学ぶようにし、show ip ospf neighbor ですべての隣接が Full になるのを待ち、OSPF が何を待っているのか、インターフェースに隣接が1つしかないとどう伝えられるのかを突き止めます。

そのあと show ip route ospf と traceroute -n で結果を確認し、r3 の先の管理用ネットワークを広告に含めないようにして、h1 から届かないようにします。

トポロジー

h1 は r1 に、r1 は r2 に、r2 は r3 に、r3 は h2 につながり、r3 の先のリンクに管理用ネットワークがあります。アドレスは、ラボがホームフォルダーに置く README にあります。

ブラウザーで動かす

VM ラボはモジュールにラボ課題として追加し、サンプルはラボのページにあります。このようなリンクでは、隣接が Full になるまでに約40秒かかります。

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

このラボの基本レッスン

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

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

採点の仕組み

チェックは、新しく起動し直した、保存されたマシンのコピーで実行されるため、生徒が保存した内容だけが見えます。合格になるのは、OSPF の隣接が Full であること、h1 がルーターを通る経路で、OSPF が学んだルートを使って h2 に届くこと、そして管理用ネットワークが広告されず、届かないままであることがすべて成り立つときだけです。

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

GitHub の定義ファイル

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

よくある質問

なぜ隣接が Full になるまで約40秒かかるのですか?
このようなリンクでは、OSPF が隣接を Full にするまでに約40秒かかります。何を待っているのか、インターフェースに隣接が1つしかないとどう伝えるのかは、ラボの内容の一部なので、このページでは答えを明かしません。
生徒はどのエリアを使いますか?
3台のルーターすべてでエリア 0、つまりバックボーンです。チェックもそれを前提としています。
Cisco の機器なしで OSPF を練習できますか?
はい。3台のルーターは生徒の VM の中のネットワーク名前空間で、それぞれ FRRouting が動き、コンソールは vtysh です。ラボは実際の状態で採点されます。ネイバーが Full であること、h1 が OSPF で学んだ経路を通って h2 に届くこと、管理ネットワークが広告されていないことです。