Skip to content

Chapter4: Routing 2

この章では、動的経路制御(Dynamic Routing)の基礎知識とその設定を学びます。

Lesson

動的経路制御

前の章では、経路上のすべてのルーターに対して手動で経路情報を設定することでパケットのルーティングを実現しました。 しかしこのように手動で設定する方法にはいくつか欠点があります。

手動での設定はなんと言っても手間がかかります(体験してもらったように)。 手間がかかるということは設定ミスの機会も多くなります。

そもそも現代の広大なインターネット上に存在するすべてのルーターを把握しつつ、すべてのリクエストに対して適切な経路を手動で設定するというのは非現実的ですね。 では、どのように設定すればよいでしょうか?

ここで用いられるのが一定の規則に基づいてルーティングテーブルを自動で更新する動的ルーティングです。 IGP(Interior Gateway Protocol)としてはRIP, EIGRP, OSPF, IS-ISが挙げられます。

OSPF(Open Shortest Path First)

この講習会では、AS 内部のルーティングプロトコルとして OSPF を採用します。

OSPF はリンクステート型のルーティングアルゴリズムで、単純にネットワークアドレス/サブネットマスクを交換するのではなく、LSA(Link State Advertisement)という形式の情報を交換します。 リンクは OSPF が有効になっているインタフェースで、それぞれの OSPF ルータがリンクの状態を交換することで、各 OSPF ルータがネットワーク構成を詳細に把握できます。

OSPF ルータが交換した LSA はリンクステートデータベース(Link State Database : LSDB)に格納されます。 LSDB は、各 OSPF ルータが認識している詳細なネットワーク構成図です。

リンクステート情報には、インタフェースの帯域幅に応じて自動的に計算されるパスコストが含まれます。

OSPF では、LSDB を元に SPF アルゴリズム(ダイクストラアルゴリズム)を用いて各ルータを起点とした最短パスツリーを計算し、ルーティングテーブルを作成・更新します。

LSDB はエリアと呼ばれる範囲内で共通です。 大規模なネットワークでは、交換されるリンクステート情報の数とサイズが非常に多くなり、それにともなって LSDB サイズも巨大になってしまうので、エリアという単位で適切に区切ることで効率化する必要があります。

OSPF のエリアは、エリア 0(バックボーンエリア)に他のすべてのエリアが隣接する、エリア 0 を中心とした 2 階層の構成をとります。

INFO

  • AS(Autonomous System)
    • 統一された運用ポリシーによって管理されたネットワークの集まり
    • 詳細は BGP の章で解説します
  • ABR(Area Border Router)
    • エリアの境界に位置する ABR はエリアごとの LSDB を保持しており、エリア間のルーティングを行います。
    • また、ABR は異なるエリアのリンクステート情報を集約して内部ルータに通知するので内部ルータの LSDB のサイズは縮小できます。
  • ASBR(AS Boundary Router)
    • AS の境界に位置する ASBR が OSPF を採用していない他の AS のルート情報を相互に再配送することで AS を超えたルーティングを可能にします。

Assignment

1. OSPFによってr4から各ルーター、および8.8.8.8のすべてにpingが通るようにしてみよう

WARNING

静的ルーティングの設定が存在する場合、そちらが優先的に参照されることに注意してください。

ヒント1

LSA にはエリアとネットワークの指定が必要です。

ヒント2

インターネットへ接続するにはデフォルトルートを設定する必要があります。

ヒント3

「VyOS OSPF 設定」などで検索してみると良いでしょう。

答え

各自のネットワークに合わせて変更してください。 [例: r6]

sh
root@hijiki51-60000:/# attach r6
minion@r6:/$ config
[edit]
minion@r6# set protocols ospf area 0 network 192.168.0.12/30

minion@r6# set protocols ospf area 0 network 192.168.0.24/30

minion@r6# set protocols ospf area 0 network 192.168.0.28/30

minion@r6# commit
minion@r6# save
[edit]
minion@r6# exit
exit

OSPF ではルーティングアップデートのために、隣接ルータがいる・いないに関係なく、OSPF が有効化されたインタフェースから定期的に Hello パケットが、隣接ルータにむけてマルチキャストで送信されるます。 しかし、隣接ルータがいない場合は、ルーティングアップデートの送信は必要ありません。 そこで、passive-interfaceコマンドを使用することによって、特定の I/F からの無駄なアップデートを停止できます。 rEX や r4 ではpassive-interfaceを設定することにも注意してください。

[rEX]

sh
minion@rEX# set protocols ospf passive-interface ens4

また、OSPF でも RIP や EIGRP などのルーティングプロトコルのようにデフォルトルートを生成できます。 インターネットあてのパケットをルーティングするために、デフォルトルートを利用することが多いです。 他には、スタブエリアから外部ネットワークへの到達性を確保するためにデフォルトルートの生成する場合などがあります。

RIP や EIGRP では、デフォルトルートをスタティックルートとして設定して、再配送することでデフォルトルートの生成できます。 しかし、OSPF ではこの方法ではデフォルトルートを生成できません。 スタティックルートを OSPF に再配送しても、デフォルトルートは再配送の対象外です。 OSPF でデフォルトルートを生成するためには、default-information originateコマンドを使います。

今回は rEX をデフォルトルートに設定します。

[rEX]

sh
minion@rEX# set protocols ospf default-information originate always

INFO

特別なエリアとして以下のエリアが存在します。

  • Stub Area
  • Totaly Stub Area
  • NSSA
  • Totaly NSSA

2. リンクステート情報の変化に応じて、経路が動的に切り替わる様子を確認してみよう

ヒント

リンクステート情報のパスコストを手動で設定すると良いでしょう。

答え

パスコストを設定することで到達経路を制御できます。

[例: r2]

sh
minion@r2# set interfaces ethernet eth11 ip ospf cost 200

どのような経路を通っているか確認するにはtracerouteコマンドなどを利用してください。