道が閉まっても電話は要らない
宅配会社は、町ごとに営業所を持っています。ある道が通行止めになっても、本社が全営業所に電話をかけることはありません。
各営業所は、自分の周りの道で起きた変化を、隣の営業所に伝えます。一分もしないうちに、全営業所が同じ地図を持ちます。
OSPFは、ルーターにこれと同じことをさせます。
このレッスンのゴール
メモ
OSPFのルーターがネットワークを学ぶ仕組みを説明できる。
重要な言葉
| ことば | いみ | れい |
|---|---|---|
| 隣接ルーター | 同じ線の上にいて、同じくOSPFを使うルーター。ネイバーとも呼ぶ | |
| Helloパケット | 隣を見つけ、つながりを保つための短い知らせ | |
| リンクステートDB | ルーターが持つ、全ルーターと全リンクの地図 | |
| コスト | リンクを避けたい度合いを表す数。小さいほどよい | |
| エリア | 一つの地図を共有するルーターの集まり | area 0 |
| 最短経路 | コストの合計が一番小さい道 |
学生が入力するセルは、このプレビューでは空白です。
静的経路は大きな網に向かない
静的経路は一度書いたら変わりません。リンクが切れても経路は残り、パケットは失われます。
ルーターが五十台ある網で、全部の行を手で書く人はいません。そこで、ルーター同士が知っていることを共有するルーティングプロトコルを使います。
OSPFは、全ルーターが完全な地図を作るプロトコルです。
ルーターはHelloで出会う
OSPFを使う口から、ルーターはHelloパケットを出します。同じ線の上でそれを聞いたルーターは、返事をします。
お互いの声が聞こえた二台は隣接ルーターになり、持っている地図を交換します。地図が揃うと、状態はFullになります。
OSPFはIPの上を直接走り、プロトコル番号は89です。
例: 隣接の状態
| 状態 | 意味 |
|---|---|
| Down | Helloをまだ聞いていない |
| Init | Helloを聞いたが、相手の一覧に自分がいない |
| 2-Way | お互いの声が聞こえている |
| ExStart | 交換をどちらが主導するかを決めている |
| Exchange | 地図の概要を交換している |
| Loading | 足りない部分を取り寄せている |
| Full | 地図が揃った。この隣は使える |
学生が入力するセルは、このプレビューでは空白です。
各ルーターで動くプログラムを見る
netlab statusここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
r2に隣接ルーターを聞く
sudo vtysh -N r2 -c "show ip ospf neighbor"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
OSPFなしのr2の表を読む
sudo vtysh -N r2 -c "show ip route"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
三つの答えが言うこと
netlab status は、各ルーターの最後に daemons: の行を出します。デーモンは裏で動き続けるプログラムで、ospfd がOSPFのものです。
隣を聞くと % OSPF is not enabled in vrf default と出ます。プログラムは動いていますが、どの口で使うか誰も決めていません。
表の実行は、直接つながった経路の C と、ルーター自身のアドレスの L だけを並べます。OSPFで学んだ経路を表す O の行はありません。
全ルーターが同じ地図を作る
各ルーターは、自分のリンクをリンクステート広告という知らせに書き、隣に送ります。隣はそれをさらに先へ回します。
まもなく全ルーターが同じリンクステートDBを持ちます。これはエリアの中の全ルーターと全リンクの地図です。
経路は、各ルーターが、その地図から自分で計算します。
コストが道の良し悪しを決める
各リンクにはコストがあります。初期値はリンクの速さで決まり、速いほど小さくなります。人が手で決めることもできます。
ルーターは、基準の速さ(変えなければ100 Mbit/s)をリンクの速さで割ります。コストは1より小さくなりません。
道のコストは、通るリンクのコストの合計です。OSPFが選ぶ最短経路は、ルーターの数が少ない道ではなく、合計が小さい道です。
ルーターの口を読む
sudo vtysh -N r2 -c "show interface to-r1"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
よくある間違い
注意
「OSPFはルーターの数が一番少ない道を選ぶ」と思う人が多いです。選ぶ基準は、リンクのコストの合計です。安いリンク三本の道が、高いリンク一本の道に勝つことがあります。
各ルーターが最短経路を計算する
ルーターは、コスト0の自分から始めます。まだ確定していないルーターのうち、一番近いものを選び、そこから出るリンクのコストを足していきます。
全ルーターが確定するまで繰り返します。結果は、各ルーターまでの一番安いコストと、最初に使うホップです。
例: r1が順に確定する
| 手順 | 確定 | r1からのコスト | 理由 |
|---|---|---|---|
| 1 | r1 | 0 | 出発点 |
| 2 | r4 | 5 | r1とr4のリンクが5 |
| 3 | r2 | 10 | r1とr2のリンクが10 |
| 4 | r3 | 20 | r2経由の10+10が、5+30に勝つ |
| 5 | r5 | 21 | r3経由の20+1 |
学生が入力するセルは、このプレビューでは空白です。
発展: 安いリンク一本で全部変わる
例の表で、r4とr3のリンクのコストを30から12に変えましょう。そして、r1から全ルーターを紙の上でもう一度確定させます。
r1は、r3とr5へ行くとき、最初のホップにどこを使いますか。それぞれのコストはいくつですか。LINKSのその行を変えて、自分の shortest_path で答えを確かめましょう。