つづけてOSPF。OSPFはややこしーので2回に分けまふ。
特徴
・Routing Typeはリンクステートプロトコル。
・Metricはコストに基づいて決定される。
・HOP数の制限はなし。
・Routingが変更された時のみMulticast(224.0.0.5、224.0.0.6)によるAdvertise。
・OSPFはIP上で実行される。(プロトコルタイプ89番)
・Administrative Distanceは110。
・VLSM(Variable Length Subnet Mask)をサポートする。
・不均等パスによる負荷分散は不可能。
・均等不可分散はDefaultでSupport。
・AS番号を識別することで、1つのネットワーク上で複数の異なるルーティングプロトコルを実効できる。
・Routingの変化が瞬時にフラッディングされるのでコンバージェンスか高速。
・各種のパスワード認証方式を使用して、ルーティング認証を実装可能。
・ネットワークを論理的に定義して、ルータを複数のAREAに分割することのより、ネットワーク全体にわたってリンク ステート更新が増加するのを回避できる。
OSPF コスト
インターフェイスのコストは、帯域幅が大きいほどコストは小さくなります。10M イーサネット回線を経由するよりも、56K シリアル回線を経由する方が、必要なオーバーヘッドが高くなり(コストが大きくなり)、時間の遅延が長くなります。コストの計算には次の公式が使用されます。
コスト = 100,000,000 / 帯域幅(bps)
たとえば、10M イーサネット回線を経由する場合のコストは 108/107 = 10 となり、T1 回線を経由する場合のコストは 108/1544000 = 64 となります。
デフォルトでは、インターフェイスのコストは帯域幅に基づいて計算される。
ip ospf cost コマンドで手動設定することも可能。
コストが同じ回線があればデフォルトでロードバランシングを行う。最大で4パスまで。
Routing Architecture
OSPF はHELLOパケットをブロードキャストネットワーク(EthernetやTokenRing)では 10 秒ごと、NBMAネットワーク(Frame-RelayやATM)では 30 秒ごとに送信します。
HELLOパケット更新間隔はip ospf hello-interval で変更可能。
待機時間(HoldTime)は通常は HELLO インターバルの 4 倍で、デフォルトでは 40 秒と 120 秒。待機時間は ip ospf dead-interval コマンドで変更可能。
Hello を受信した Router は、自分の知っている経路情報を持つアップデートパケットを送信する。
このアップデートパケットを返信することで近接関係(neighbor)が確立される。
隣接関係の確認はshow ip ospf neighborコマンドで確認できる。
(1)近接関係の確立フロー
近接ルータから受信した Hello パケットに自ルータの情報が含まれていると、近接関係(neighbor)が確立される。
ただし、2台のルータで以下の情報が一致していないと隣接関係は確立されません。
・Area-id
・認証(近接ルータになろうとしているルータは、特定のセグメントで同じパスワードを交換する必要があります。)
・Hello インターバルと Dead インターバル
・スタブ エリア フラグ:Hello パケットのスタブ エリア フラグも一致している必要があります。スタブ エリアについては後述。
(2)DRとBDRの選出
2way state確立後、ポイントツーポイントネットワークならそのままデータベースの交換が行われる。
ブロードキャストマルチアクセストポロジー、NBMA トポロジー のマルチアクセスネットワークであれば、 DR(Designated Router) と BDR(Backup Designated Router) を選出する必要がある。
◆DR(Designated Router)
OSPFは、すべてのマルチアクセスネットワークにおいてネットワークセグメントごとに必ず1つだけのDRを持ちます。DRが選出されるとその他のRouterとAdjacency関係を形成し、LSAの交換を行う。更新が発生した場合もDRからLSAをMulticastによりAdvertiseする
こうすることにより、 マルチアクセスネットワークにおいてLSAPacketを大幅に減らすことが出来る。
◆BDR(Backup Designated Router)
DRがダウンした際に、DRの再選出を最小の時間で移行させるために、あらかじめバックアップ用のDR(BDR)を選出しておきます。
BDRはDRと同様に他のRouterとAdjacency関係を形成します。
BDRはDRと比較すると、flooding手続きにおいていくつかの役割をDRに任せることで、リンクステートのトラフィックを減らすようにしています。また、DRのもう1つの大きな役割であるネットワークLSAの生成はBDRでは行いません。
DR と BDR の選出は、Hello プロトコルを通じて行われます。
選出基準はOSPFプライオリティの高い順に選出され、もしOSPFプライオリティが同じであればRouterIDの大きいルーターが選出される。
CiscoのデフォルトOSPFプライオリティは"1"に設定されており、ip ospf priority コマンドで設定変更可能。
もしOSPFプライオリティを"0"に設定すると、そのルーターはDRにもBDRにもなれない。
どちらにも選出されなかったルーターはDrotherと呼ばれる。
※RouterIDはActiveなInterfaceで最も数字が大きいAddress。ただしLoopbackInterfaceが設定されていれば、そのAddressがRouterIDとして使用される。
DRとBDRは以下のポリシーに沿って動作する
・DR と BDR が一度選出されると、プライオリティ値が高いルータがネットワークに追加されても、DR や BDR がDownするまで再選出はされない。
・DR がDownした場合、BDR が DR として動作するし、BDR は新たに選出される。
・BDR がDownした場合、BDR が新たに選出される。
DRとBDRを選出後ルーターはExstart Stateに入る。今後Drotherは、DRとBDRとのみ隣接(Adjacency)関係プロセスを行う。
つまり、LSAが含まれるLSUパケットはDRとBDRだけに送信されるため、無駄な帯域を使用しない。
(3)隣接関係の確立フロー
隣接ステート 説明
Exstart State DDP(Database Description Packet)のやりとりにより、マスターとスレーブの関係の確立と(RouterIDの大きいルータがマスターになる)、初期シーケンス番号を一致させます。情報交換はマスター側ルータから開始する。
Exchange State DDP(Database Description Packet)が交換され、内容を自分のトポロジデータベースと比較しLSAckを返信する。
Loading State 自分ののトポロジデータベースより新しいアドバダイズメントを要求するため、LSR(Link State Request) を送信。LSRを受信したルータはLSA(Link-State Advertisement)のリストを作成しLSU(Link State Update)を送信。LSUを受信したルーターは確認応答(LSAck)を送信。
Full State LSR→LSU→LSAckを双方向で行うと同期完了。
(4)リンク変更時の動き
1.リンクに変更が発生すると、最新のLSA(Link-State Advertisement)を含んだLSU(Link State Update)をDRとBDRにマルチキャスト送信(224.0.0.6:DRとBDR宛て)。
2.DRとBDRはLSUを受信し、DRがLSAckをユニキャスト送信。
3.DRはLSUをフラッディング(224.0.0.5:全OSPFルータ)。BDRはDRからのLSU送信を待ち、一定時間内にLSUを受信しなかった場合、BDRがLSUを送信。
4.DrotherがLSUを受信したら、LSAckをユニキャスト送信。もし全DrotherからLSUを受信しなかった場合、LSUを再送する。
5.LSUを受信したルータは、自身のリンクステートデーターベースにコピーを保存してから、その更新を別のルータにフラッディングする。
6.ルータのデータベースが形成されると、宛先に対する最短パスをダイクストラ アルゴリズム(Dijkstra algorithm)を使用し計算し、宛先、コスト、宛先までのネクストホップによって、IPRoutingTableを作成する。