OSPF
いろいろなルータ
- ルータID
- ルータの識別子(デフォルトでは自IPアドレスの中で最大のものを採用
- 隣接ルータ(neighbor)
- ルーティング情報を交換する候補(最大2台だけど基本的にDRとのみ交換).この中からDRとBDRを選ぶ
- 指名ルータ(DR)
- 他のネットワークとも隣接関係作る代表.副代表がBDR
- priority値の大きい方がDRに.同じならルータIDの大きい方がDR
- ※主に起動順に左右されるのでDRにしたいものがあれば先に起動させる必要あり
- 内部ルータ
- 接続しているネットワークがどれも同じエリアにあるルータ
- エリア境界ルータ(ABR)
- 複数のエリアにまたがってるルータ
- AS境界ルータ(ASBR)
- 複数のASにまたがってるルータ.異なるルーティングまたぐときとかも
いろいろなパケット
- Helloパケット
- 隣接ルータを探したり確立したり維持したりする
- DDパケット
- データベース記述パケット.複数のLSAを含む
- LSRパケット
- リンク状態要求パケット.隣接ルータに送ってリンク状態を送ってもらう
- LSUパケット
- リンク状態更新パケット.LSRに対する応答.複数のLSAを含む
- LSA(リンク状態広告)
- ルータLSA:ルータが属しているネットワークを表す.エリア毎に独立.各OSPFルータが告知
- ネットワークLSA:ネットワークに属しているルータを表す.エリア毎に独立.指名ルータがエリア内に告知
- サマリーLSA(2種類有):エリアに属しているネットワークを表す.エリア境界ルータがエリア外に告知
- AS外部LSA(2種類有):AS外部へのルートを表す.エリア境界がエリア内に告知.デフォルトルートの告知にも使用
おおまかな流れ
起動時
- 起動したルータがHelloパケットをマルチキャスト(224.0.0.5)で送信して隣接ルータを探す
- 隣接ルータが起動したルータを確認してHelloパケットを送信
- 隣接ルータとDDパケットを交換してデータベース情報(LSA)を交換
- LSRパケットとLSUパケットを交換してデータベースを同期(これが終わった段階で完全隣接関係になる
- データベースを基に自分を起点としたSPTを作成してルーティングに反映する
安定状態時
- 各ルータが定期的にHelloパケットを送信(hello interval: default 10s)
- 隣接ルータからhelloが一定時間内にhelloが来なければdownしたとみなす(dead interval: default 40s)
- 定期的に自身のLSAを広告(LS refresh: default 10s)
※各default値はブロードキャストネットワーク時のもの.ネットワークのタイプによって異なる
何らかの変化を検知したとき
- 検知したルータがその変化を隣接ルータに報告
いろいろなエリア
- エリア
- 管理しやすいようにinternetを分割
- エリア内のルータはすべて同じデータベースを保持
- バックボーンエリア
- エリア0(0.0.0.0)
- 他エリアは必ずこのバックボーンと接続する
- またぐようならvirtual linkを使って実現
- 標準エリア
- 全てのLSAが通知される
- スタブエリア
- 外部ルート(他プロトコル動作の)はデフォルトルートとしてだけ通知されるのでルーティングテーブルが小さくなる
- ASBRは置けない
- 準スタブエリア(NSSA)
- 外部ルートを流し込む(flooding)ことで直接つなぐことができる.
- なのでASBRを置ける
設計上の注意?
- リンク数は多すぎにならないように
- ルータIDは必ずユニークに
- DR役が集中しないようにpriorityとか使ってうまく分散させる
- 経路数を減らすためにアドレスを計画的に割り振って集約する