電脳世界のケーキ屋さん

考えの甘い甘党エンジニアがいろいろ書くブログ

OSPFについて

はじめに

仕事の関係でネットワークに関する勉強を行っている. その際にOSPFというものを勉強した. 調べれば専用の用語の嵐で何が何だかさっぱりだったのでここで用語をまとめておこうと思う.

OSPFとはなんぞ

OSPF(Open Shortest Path First)はルーティングプロトコルの一種である. ルータ間で経路情報を交換し合って所望の宛先にパケットを届けるのが目的だ.

OSPFはこのルーティングプロトコルの中のリンクステート型という種類に属している. ネットワーク全体の形(トポロジ)を把握した上で最短経路を計算, そこからネクストホップを決定するものである.

OSPFを設定したルータは隣接するルータとの通信を繰り返すことで, ネットワークの全体の形を把握しようとする. これを私が初めてみた時は「今のネットワークはとても大きいから処理量がすごいことになるのでは…」なんて思った. 実際にそんなことはなく, 自律システム(AS)という枠で区切られたネットワークの中でグループ化して動作させるのが一般的なようである. これをマルチエリアOSPFという.

ネイバー関係, アジャセンシー関係

OSPFは近隣のルータとの関係をHelloパケットと呼ばれるパケットで認識を行う. Helloパケットを互いに受け取り, お互いを認識した状態を2wayステートと呼び, これをOSPFではネイバー関係と呼ぶ. Helloパケットには自ルータの設定情報を載せており, エリア番号やその他の必要事項となる設定値が異なる場合はネイバー関係とならない.

OSPFではネイバー関係のルータ同士ではルーティングアップデートの通知は行わない. これは, ネイバー関係のルータが増えた際にルーティングアップデートのトラフィックで帯域を圧迫しないための機構である. トラフィック削減のため, OSPFはリンク毎にデータの共有を行うルータを1台決定する. このルータの事を指定ルータ(DR:Designated Router)と呼ぶ. DR以外のルータ(DR other という)はこのDRとリンクステートのやり取りを行い, トポロジマップの完成を行う. このDRとDR otherルータの関係をアジャセンシー関係と呼び, リンクステートの状態を完全に同期させた状態をフルステートという.

DRの選定の際にBDR(Backup Designated Router)というDRのバックアップとなるルータも選ばれる. これはDRがダウンした際に直ちに役割を引き継ぎDRとなるルータのことを指す.

サブキャラな用語

リンク

ここでのリンクとはルータを経由せずに(ルーティングが行われずに)到達可能な範囲のことを指す. MACアドレスによるスイッチングで到達できる範囲とも言える. ただし, 1対1で繋がっているデバイス同士の接続のことを指す場合もあるので使い分けには注意が必要であると考えられる.

ネクストホップ

ルータが実際にパケットを転送する際に考えることは「隣にいるどのデバイスにパケットを送ろうか」である. この時に転送することが決まった「隣にいるデバイス」のことを隣接ホストやネクストホップなどと呼ぶ. ルータはネクストホップのデバイスとそれが接続されているインターフェイスの対応表をルーティングテーブルとして保持している.

ルーティングアップデート

ダイナミックルーティングにおいて, プロトコルでやりとりされるルーティングテーブルの変更を通知する情報のことを指す. RIPは定期的にルーティングアップデートを発信してトポロジの変化を監視, 共有する. OSPFは自ルータに接続されている箇所で変更があった場合に, 差分をルーティングアップデートとして通知する仕組みとなっている. これをイベントトリガアップデートなどと呼んだりもする.

自律システム

参考文献より引用

自律システム(AS; Autonomous System)
共通の経路制御プロトコルを用いて経路情報を交換しているルーター群。「AS」と略記する。

おわりに

マルチエリアOSPFについてはまだ理解が曖昧な箇所も多い. 個人的にはOSPFの要である経路探索アルゴリズムダイクストラ法の実装に興味があるのでもしかしたらそれについても触れる機会があるかもしれない.

参考文献