OSPF
OSPFはリンクステート型のルーティングプロトコルです。
エリア内でLSAを交換し、LSDBとルーティングテーブルを作る
- OSPFでは、各ルータがLSA(Link State Advertisement)と呼ばれるリンクステート情報(リンク状態、帯域幅、IPアドレス、サブネットマスク等)を交換し合います。
- リンクステート情報に変更があった場合のみ、トリガードアップデートによって同じネットワークのルータへLSAを送ります。
- 各ルータではLSAを集めてLSDBを作ります。同じエリア内の各ルータは同じLSDBを持つことになります。
- LSDBが大きくなりすぎないように、エリアという概念でネットワークを分けます。
- 通常時はHelloという小さなパケットで生死監視をしているだけなので帯域を圧迫しません。
コストが最も小さいルートを通る
- コストは帯域幅に反比例する値で算出されます。
- つまり、帯域幅が大きいほどコストが小さくなり、帯域幅が小さいほどコストが大きくなります。
- デフォルトでは「100/帯域幅(Mbps)」です。上図の例では分子をデフォルト値の100ではなく1000としています。
- 合計コストが最小となるルートを通ります。
イコールコストマルチパス(ECMP)
合計コストが最小のルートが2つ以上ある場合は、負荷分散します。
エリア内の動作
- 隣接ルータからHelloパケットが届かなくなり、デフォルトで4回(40秒)経つと接続が切れたと判断します。
- 接続が切れたり回復したりして変更があった場合、エリア内のルータにLSAを送信します。
- LSAにはネットワークLSAとルータLSAの2種類があります。
- OSPFによってLSAを受け取ったルータはLSDBを作成します。
- LSDBを基にしてダイクストラ法により、ルーティングテーブルを作成します。
同じエリア内のルータ構成例
ルータAのLSBDおよびルーティングテーブルの状態
代表ルータ(DR:Designated Router)の役割
- セグメント内の全てのルータ同士がLSAを交換するのは無駄です。
- セグメントを代表する代表ルータ(DR)が選出されます。
- DRを中心にセグメント内のLSAが交換されます。
- BDR(バックアップ代表ルータ)を選出することも可能です。
- DRやBDRが選定されると、ダウンするまで新しいDR、BDRが選出されません。後から優先度の高いルータを起動してもDRにはなれません。
- エリアの中に複数セグメントがあれば、DRやBDRも複数存在することになります。
- OSPFの優先度が高いルータから順に、DRとBDRが選出されます。
- OSPFの優先度を0にすればDRやBDRに選出されません。
- DRでもBDRでもないルータは、DROTHERと呼びます。
- DRやBDRはセグメント単位で選出されます。よってエリアが複数のセグメントで構成されていれば、1つのエリアに複数のDRやBDRが存在することになります。
- 負荷がかかりすぎないよう、1つのルータで複数のDRにならないようにする必要があります。
エリアによる管理
- エリア内のルータは共通のLSDBを持ちます。
- OSPFではエリア内のみのリンク情報からルーティングテーブルを作ります。これがルータの負荷軽減につながっています。
- ABRはエリア内の経路情報を集めて、経路集約して他のエリアに送ります。
- 経路集約によって、受け取った側のルーティングテーブルの数が少なくなり、ルータの負荷を減らします。
- ABRは異なるエリアにLSA(タイプ3)をフラッディングします。先述の経路情報、および距離情報が含まれます。
- つまりOSPFにおいては、エリア内ではリンクステート型、エリア間ではディスタンスベクタ型のように動作します。
スタブエリアの動作
- エリア2のようなABRが1つしかないエリアは、スタブエリアと呼ばれます。
- 出口が1つしかないため、スタブエリア内に対して、エリア外の経路情報を教える必要はありません。
- ABRがデフォルトルートになるように内部ルータに経路情報を流します。
- 他エリアの経路情報が不要になるので、負荷が減ります。