$Id: howto-ospf.html,v 1.1.1.1 1999/10/26 17:19:15 sakane Exp $

%Hd: OSPF のついて

はじめに
	rfc2178 は読んで無いのでズレたことを書いているかもしれません。

OSPF(Open Shotest Path First:RFC2178)とは?
  o 配布情報の中に送信先とネットマスクを持っている。
    ∴ホストへの経路を扱える。
    ∴CIDR対応
  o SPF経路伝搬型アルゴリズムを使用している。ベクトル距離型アルゴリズムよりも、拡張性がある。
  o トポロジ変化を短時間で検出し、収束するための時間後に再計算を行なう。
    ∴ルータが落ちた事を検出し、別経路を計算する。
    OSPF HELLO プロトコルを発生しなくなったことにより検知。
  o ゲートウェイ間の通信は認証が行なわれる。
    認証機構は各ゲートウェイ間で選択できる。
  o サービス型経路制御(type of service routing)
    TOSに対して独立した経路を設定できる。
    ∴IPヘッダの Destination と TOS を使い経路を決定する。
  o 経路にコスト(unsigned short)を設定できる。
    同一コストの経路が複数存在する場合、全ての経路に均等に分配する。
    ∴負荷分散
  o 外部からの経路制御情報は、内部(AS)を透過的に通過する。
    交換するメッセージには、経路の情報源や到達可能性について明記されている。
  o ネットワークの集合をエリア(area)と呼ばれるグループに分割できる。
    各エリアは自己完結しており、エリア内のトポロジは自由に変更できる。
    ∴経路制御情報の削減
  o 仮想的なネットワークを記述できる。
  o broadcast を最小化している。
    designated gateway (designated router) の存在。
    hardware broadcastが存在する場合には、その機能を使用。

なぜ OSPF か
  o 従来の経路制御プロトコルであるRIPでは…
    - HOPカウントを経路に持つ。∴拡張性がない?
    - CIDRに対応できない。∴時代遅れ
    - 保持している全ての情報を一定間隔で交換する。∴低容量回線に負荷がかかる。
    - ある終点に対して経路を複数定義出来ない。∴融通が効かない。
    - 認証機構が無い。∴誰でも経路情報を変更できる。

RIPとOSPFの使い分け
  バックボーンに近いゲートウェイのみでOSPFを動かす。
  リーフではRIPを使うという方法が取られることが多い。

基本的な用語
  自律システム (Autonomous System)
      共通の経路制御プロトコルを用いて経路情報を交換しているルータのグループ。
      `AS' と略記される。

  Interior Gateway Protocol
      AS 内のルータが経路情報交換のために用いる経路制御プロトコル。
      `IGP' と略記される。AS はそれぞれ単一の IGP を使用する。異なる AS では
      異なる IGP が動作しているかもしれない。

  ルータ ID
      OSPF プロトコルを走らせている各ルータに割り当てられる 32bit の番号。
      この番号によって AS 内のルータを一意に識別することができる。

  ネットワーク
      この文書では、IP のネットワーク、サブネット、スーパーネット全てを含む
      ものを指す。1 つの物理的なネットワークに複数の IP ネットワーク番号、
      IP サブネット番号を割り当てることも可能である。その場合、1 つの物理的な
      ネットワークはそれぞれ独立した 2 つのネットワークであると見なされる。
      ただし Point-to-Point の物理的なネットワークは例外で、ネットワーク番号が
      幾つ割り当てられていても 1つのネットワークとして扱われる。

  マルチアクセスネットワーク
      3 つ以上のルータとアタッチすることが可能な物理的ネットワーク。このネット
      ワーク上にあるルータは全て自分以外の相手と直接通信できる。すなわち、
      マルチドロップネットワークは除外される。

  neighboring ルータ
      共通のネットワークにインタフェースを持っている 2 つのルータ。マルチ
      アクセスネットワークでは、neighbor は OSPF の Hello プロトコルによって
      動的に検出される。

  ajacency
      経路情報を交換するために選択される neighboring ルータの関係。全ての
      neighboring ルータの組み合わせが ajacent になるわけではない。

  link-state 広告
      ルータ、もしくはネットワークのローカルな状態を記述したもの。ルータの
      インタフェースの状態や、ajacency の情報が含まれる。各 link-state 広告は
      経路制御ドメインに flood される。全てのルータ、ネットワークより収集
      された link-state 広告は、OSPF プロトコルのトポロジカルなデータベースを
      形成する。

  Hello プロトコル
      OSPF プロトコルの一部で、neighbor との関係を確立したり、維持したりする
      ために用いられる。マルチアクセスネットワークでは、Hello プロトコルを
      使って動的に neighboring ルータを発見することができる。

  Designated ルータ
      少なくとも 2 つのルータとアタッチしているマルチアクセスネットワークは
      Designated ルータを持つ。Designatedルータはマルチアクセスネットワークの 
      link-state 広告を生成し、またプロトコルの動作において特別な責任を持つ。

      Designated ルータの概念により、マルチアクセスネットワークで必要とされる
      ajacency の数を減らすことができる。結果的に経路制御プロトコルの
      トラフィック量とトポロジカルデータベースのサイズを小さくすることができる。

OSPFでのルータの分類

  AS を OSPF エリアに分割する際、ルータはその機能に応じて、
  以下の重複可能な4つのカテゴリに分割される。

  Internal routers
      同じエリアに属するネットワークに直接接続されているルータ。バックボーン
      だけにしかインタフェースを持たないルータもこのカテゴリに属する。この
      カテゴリのルータは基本的な経路制御アルゴリズムのコピーを 1 つ動作させる。

  Area border routers
      複数のエリアにアタッチしているルータ。Area border routersは基本的な
      アルゴリズムのコピーをアタッチしているエリア毎、更にバックボーン用の
      コピーの複数個を動作させる。Area border routersはアタッチしているエリアの
      トポロジカル情報を要約し、バックボーンに配布する。
      バックボーンはその情報を他のエリアに順次配布する。

  Backbone routers
      バックボーンにインタフェースを持つルータ。
      2 つ以上のエリアにインタフェースを持つルータ (すなわちArea border routers)
      全てと、全インタフェースがバックボーンに接続されているルータ(Internal routers)を含む。

  AS boundary routers
      他の AS に属するルータと経路制御情報を交換しているルータ。
      このルータは AS 外への経路を持ち、AS 内にその経路が広告される。
      各 AS boundary routers までのパスは AS 内の全ルータが知っている。
      このカテゴリは先に分類されたカテゴリーとは独立したものである。
      すなわち、AS boundary routers は Internal routes でも Area border routers で
      あっても良い。また、バックボーンに関係していてもしていなくても良い。

ルータ起動時
  経路制御プロトコルデータが初期化される。
  低階層プロトコルからインターフェイスが functional になったことを知る。
  OSPF Hello プロトコルを使用し、neighboring ルータを取得する。
    Broadcast ネットワーク、Point-to-point ネットワークは、
    multicast アドレス ALLSPFRouters に送信し、動的に検出する。
    Non-broadcast ネットワークでは、予め設定(?)が必要。
  neighbor から adjacency を形成する。
  SP tree を作成する。
      
経路制御プロトコルパケット
  IPプロトコル番号 89 を使用する。

             タイプ  パケット名             プロトコル関数
             ----------------------------------------------------------
             1       Hello                  neighbor の検出、維持
             2       Database Description   データベースの内容の要約
             3       Link State Request     データベースのダウンロード
             4       Link State Update      データベースの更新
             5       Link State Ack         ack の flood

  Hello パケットは neighbor なルータを発見し、それを維持するために使用される。
  Hello パケット以外は adjacency にのみ送信される。
 
CISCO IOS11.2 でOSPFしてみる。

	こっちを参照。