30 Minutes NetWorking
No.RT06

30Minutes NetWorking

BSCI

第6回OSPF(2) DRとBDR

■ 隣接関係

スーパーインター博士

さて、前回からOSPFの説明を始めている。

ハイパーネット助手

リンクステート型ルーティングプロトコルっスね。

スーパーインター博士

うむ。
前回の事をちゃんと覚えているか? OSPFの初期動作だ。

ハイパーネット助手

Helloパケットを使って、同じサブネット内の他ルータとお友達関係を築いて。
データベースを交換して、ルーティングテーブルを作成する。
でしたっけ?

スーパーインター博士

そうだ。
OSPFを作動させているルータは、ネイバーと隣接関係(2Way State)になることにより、トポロジ情報を交換する。ネット君、正解だ。

ハイパーネット助手

えへへ。

スーパーインター博士

問題は、情報交換を行うルータが多い場合だ。

ハイパーネット助手

お友達が多くなると、ちょっとした情報を交換するのも大変ですからねぇ。

スーパーインター博士

うむ、そういう事だ。
友人が少ないネット君は心配する必要のない問題だが。

ハイパーネット助手

そ…そんなことないですよ。
友達多いですよ、ほら、ケータイのメール履歴みてくださいよ。

スーパーインター博士

ネット君、それはチェーンメールだ。
ともかく、情報交換の転送量を減らすために、リーダーを作ることにする。

ハイパーネット助手

チェーンメール…。

スーパーインター博士

前回の最後で出てきたDRBDRがそれだ。
DRはリーダー、BDRはサブリーダーとなり、DRがダウンした際は自分がリーダーとなる。

ハイパーネット助手

でじぐねいてっどるーたの略でしたっけ、DR。

スーパーインター博士

そうだ、代表ルータという意味だ。
OSPFを動作させているルータは、まず同じサブネット内のルータと2Way Stateになる

ハイパーネット助手

えぇ、それはさっきもでてきましたね。

スーパーインター博士

その後ポイントツーポイントネットワークならそのままデータベースの交換が行われる。
このように、データベースの交換が行われる関係をadjacencyという。この状態がほんとの隣接関係だ。

ハイパーネット助手

隣接関係ってのは、データベースを交換する関係だ、ってことですか?

スーパーインター博士

そうだ。ポイントツーポイントなら、2Way Stateがその関係になる。
だが、先ほども言ったとおり、マルチアクセスの状態ではこの関係が多くなりすぎると問題が発生する。

ハイパーネット助手

なのでリーダーの登場ですね。

■ DRとBDR

スーパーインター博士

サブネット内のすべてのルータの中から、DRとBDRを選出する
全ルータの中でOSPFプライオリティがもっとも高いものをDR、2番目に高いものを、BDRとする。

ハイパーネット助手

OSPFプライオリティって、なんです?

スーパーインター博士

デフォルトは1が設定されている値だ。
特別にこのルータをDR(もしくはBDR)にしたいと考えない場合はそのまま1を使う。
プライオリティを変更するCiscoIOSコマンドは例えば10に設定したい場合、こうなる。

  • Router(config-if)#ip ospf priority 10
ハイパーネット助手

じゃあ、変更されなかった場合は、みな同じプライオリティなわけですよね。
その場合、どうなるんです?

スーパーインター博士

その場合は、ルータIDが使われる。

ハイパーネット助手

ルータID?

スーパーインター博士

そのルータが持つもっとも大きなIPアドレスのことだ。
例えば、インタフェースeth0が192.168.0.1、serial0が192.168.0.10ならば、192.168.0.10がルータIDになる。

ハイパーネット助手

ふむふむ。

スーパーインター博士

さらに、ループバックインタフェースがあった場合ループバックインタフェースの値が優先される。

ハイパーネット助手

るーぷばっくいんたふぇーす?

スーパーインター博士

うむ、自分との接続にしか使われない論理的インタフェースで、他のすべてのインタフェースがダウンしない限りダウンしない。これのIPアドレスが優先してルータIDとなる、ということだな。例えば…。

  • ethernet0 192.168.255.10
  • serial0 192.168.255.100
  • loopback0 192.168.0.200
  • loopback1 192.168.0.210
スーパーインター博士

という4つのインタフェースを持つルータの場合、純粋に値が大きいのは192.168.255.100のserial0だが、ループバックが優先されるため、ループバック内で一番大きい192.168.0.210がルータIDとなる、ということだ。

ハイパーネット助手

へへぇ、なんでこんなルールがあるんです?

スーパーインター博士

うむ。通常のインタフェースをルータIDにしてしまった場合、もしそのインタフェースがダウンするとルータIDが変わってしまうことになる。
だが、ループバックインタフェースは基本的に落ちることがない。

ハイパーネット助手

他のインタフェースがすべてダウンしないとダウンしないからですか。
ははぁ、それでルータIDがなるべく変わらないようにループバックを使え、と。

スーパーインター博士

そういうことだ。
さて、DRとの隣接関係は以下のように結ばれる。

[FigureRT06-01:DRとDROTHER]

スーパーインター博士

交換されるパケットは、以下の5種類だ。

コード名前内容
1HelloHelloパケット。
2DDPデータベース記述。データベースの要約情報
3LSRリンクステート要求。
4LSU複数のLSAからなるリンクステート情報。
LSA各インタフェース毎のリンクステート情報。
5LSAckリンクステート確認応答。

[TableRT06-01:アドバタイズされるパケット]

スーパーインター博士

FULL Stateになりコンバージェンスに達すると、ルーティングテーブルを作成する。
その後は30分毎のデータベース情報のやり取り以外は、リンクに変更があった場合のみ行われるようになる。

ハイパーネット助手

ははぁ。
何かDRを選出した意味がよくわからないんですけど?

スーパーインター博士

それは、上の図が1対1だからだろう。
前にも使った6台の図を使う。

マルチポイント環境でのネイバー

[FigureRT05-02:マルチポイント環境でのネイバー]

スーパーインター博士

DRとBDRがない場合、このように網の目のように隣接関係を結ぶ必要があったわけだ。

ハイパーネット助手

そうでしたね。

スーパーインター博士

DRとBDRを選出した場合、DRとBDRに対してのみ、adjacencyとなる。

隣接関係・DR

[FigureRT06-02:隣接関係・DR]

ハイパーネット助手

はははぁ。ずいぶんとすっきりしましたねぇ。

■ DRの役割

スーパーインター博士

うむ。次にDRとBDRの役割だが。
各DROTHERは、リンクの変更を確認した場合、DRとBDRにだけLSUを送る

ハイパーネット助手

リーダー達にだけ送るんですね。

スーパーインター博士

そうだ。
受け取ったDRは、すべてのルータに対し、そのLSUを転送する
各ルータは受け取ったらLSAckを返答し、DRはLSAckが帰ってこなかったら再送する。

ハイパーネット助手

あれ? BDRは?

スーパーインター博士

DRだけでなく、BDRもリンク変更のあったルータからLSUを受け取るよな。
その後、DRが全ルータにLSUを転送する際にも同じLSUを受け取る。
もし、2回目のLSUが、つまりDRからのLSUが送られてこなかったら?

ハイパーネット助手

DRが何かあって、LSUを送れなかったんでしょうね。

スーパーインター博士

そう考えるのが妥当だ。
よって、その場合BDRはDRの代わりにLSUを転送する。
自分がDRであると他ルータに宣言するんだな。

ハイパーネット助手

ははぁ。下克上ですね。
その場合、BDRがいなくなってしまいますけど?

スーパーインター博士

うむ、新しくBDRを選出するのだ。
このようにLSUを全ルータに流すことを、フラッディングという。

ハイパーネット助手

ふらっでぃんぐ、ですか。

スーパーインター博士

以下のような2つのサブネットの場合でもおきる。

[FigureRT06-03:フラッディング]

ハイパーネット助手

は〜。
確かに洪水のようにLSUが流れていくんですねぇ。

スーパーインター博士

そういうことだ。今回はちょっと色々話したので、まとめてみよう。
まずは初期動作からだ。

  1. DOWN:ルータはすべてのルータに対しHelloを送信。
  2. INIT:各ルータはHelloを返信。
  3. 2WAY:送受信したHelloパケットの情報からDRとBDRを選出。
  4. EXSTART:DR・BDRとHelloを交換し、データベース交換の準備をする。
  5. EXCHANGE:DR・BDRとデータベース交換。
  6. LOADING:DR・BDRと詳細リンク情報の交換。
       DRはDROTHERから受け取ったLSUをフラッディング。
  7. FULL:コンバージェンス。ルーティングテーブル作成。
ハイパーネット助手

LOADINGの「DRはDROTHERから受け取ったLSUをフラッディング」ってのは?

スーパーインター博士

うむ。
DRだけ詳細なリンク情報を知っても仕方ないだろう。他のルータにもその情報を伝えないとな。通常のリンクの変更時と同じことをするのだよ。

ハイパーネット助手

ははぁ。
そういわれればそうですねぇ。

スーパーインター博士

次は、リンクの変更時の流れだ。

  1. リンクに変更のあったルータは、DR・BDRにLSUを送信。
  2. DR・BDRはLSUを受信。
     (BDRはカウント開始)
  3. DRは全ルータ宛てにLSU送信。
     (BDRはカウントが0になるまでにLSUが届かなければ、自身がLSU送信)
  4. DROTHERは受信後、LSAcKをDR宛てに送信。
  5. DRは全DROTHERからLSAckを受け取らなかった場合、再送。
ハイパーネット助手

DRが全DROTHERからLSAckを受け取らなかった、ってどうやって判断するんです?

スーパーインター博士

忘れたのか?
OSPFルータはHello交換時にネイバーテーブルを持つと言っただろう。

ハイパーネット助手

あぁ、そういえばそうでしたね。

スーパーインター博士

相変わらず、揮発度が高いな。
ともかく、CiscoIOSでのOSPF設定コマンドはこれだ。

  • Router(config)#router ospf process-ID
  • Router(config-router)#network IP address wildcard area 0
スーパーインター博士

注意点はサブネットマスクではなく、ワイルドカードって所だな。
あと、area 0はエリアが1つの場合必ずこれになる。複数の場合はそれぞれエリアのIDが入る。

ハイパーネット助手

エリア? Process-ID?

スーパーインター博士

エリアについては先で話す。プロセスIDは、そのルータ上でOSPFプロセスを識別するための番号だ。
別に他のルータと一致させる必要はない。

ハイパーネット助手

なるほど。

スーパーインター博士

今回はここまでだな。

ハイパーネット助手

了解。
30分間ネットワーキングでした〜♪

adjacency
隣接、付近の意。
デフォルトは1
0にも設定可能です。0に設定した場合、そのルータはDR・BDRに選出されません。
図 DROTHER
DRでもBDRでもないルータの事。
DRとBDRにだけ…
宛先IPアドレスは224.0.0.6(すべてのOSPF DR)になります。
すべてのルータ…
宛先IPアドレスは224.0.0.5(すべてのOSPFルータ)になります。
フラッディング
[flooding]
洪水の意味。受け取ったパケットを自身が持つすべてのポートから送り出すこと。
loopbackインタフェース
[loopback interface]
自ホストとの接続のみに使われるインタフェース。
OSPF、BGPなどのルータIDのために使用すると便利。
ハイパーネット助手ハイパーネット君の今日のポイント
  • マルチアクセスネットワークでは、DRとBDRが選出される。
  • DR・BDRとだけ隣接関係が結ばれる。
  • DRとBDRを中心として、データベース、LSUのやり取りが行われる。
  • LSUはフラッディングされて、全ルータに送られる。

30 Minutes NetWorking No.RT06

管理人:aji-ssz(at)selene.is.dream.jp