OSPFついて


FITELnet-F1000でサポートしているOSPFv2の機能についてまとめます。
OSPFv2とはIPv4経路のダイナミックルーティングを行うためのプロトコルです。

OSPFとは

OSPF(Open Shortest Path First)は、TCP/IPのIGP(Interior Gateway Protocol)として使用される、LINK stateアルゴリズムをもつ、ダイナミックルーティングプロトコルです。
LINK stateとは、その名のとおり、「リンクの状態」の意味で、各ルータがネットワーク全体の「リンクの状態」をすべて学習し、その内容にしたがって中継動作を行います。「LINK stateアルゴリズム」は、RIPに代表される「distance-vectorアルゴリズム」とよく比較されます。LINK stateアルゴリズムが、ネットワーク全体の「リンクの状態」を保持し経路を決定しているのに対し、distance-vectorアルゴリズムは、目的経路までの距離(ホップ数)と方向(NextHop)により経路を決定します。

OSPFで考えるネットワーク形態

OSPFでは、論理的なグループとして、【エリア】という概念を適用します。以下のネットワーク形態で説明します。
OSPFネットワーク図
ルータaと、ルータbは、異なるASを接続するBGP(E-BGP)で接続されています。OSPFでは、ルータbのように、ASの境界として存在するルータを、「AS境界ルータ」といいます。また、ルータaからBGPで通知された経路情報を「AS-Externalルート」といいます。

図に示しているとおり、AS内に、論理的なグループである【エリア0】と【エリア1】があります。エリアの運用に関しては、ネットワーク上の指針はなく、管理区分等で分類してかまいません。図のルータhは、エリア0に属するインタフェースと、エリア1に属するインタフェースを有しています。このようなルータを、「エリア境界ルータ」といいます。
エリアの使用方法では、「エリア境界ルータは、必ずエリア0に属していなくてはいけない」という注意事項があります。
エリア0は、特別に「バックボーンエリア」とも呼ばれます。

ルータc、ルータdなどのように、すべてのインタフェースが同じエリアに属しているルータを、「インターナルルータ」といいます。

リンクとは?

ここまでで、「リンクステートアルゴリズム」や「リンクステートを通知」というように説明してきましたが、【リンク】とは何なのでしょうか?

link 自体は、「つながり」という意味で表されますが、OSPFでは、大きく分けて以下のリンクがあります。
・ルータリンク
・ネットワークリンク
・サマリーリンク
・AS-Externalリンク

OSPFではそれぞれの「つながり」をデータベースとして管理し、その変化によって最適経路の変更を行います。

ルータリンク

ルータリンクは、OSPFをサポートする各ルータが生成し、エリア内に通知します。ルータリンクは、そのルータがどのようなネットワークに属しているかの情報が付与されています。図 1におけるルータcでは、「ネットワークAとネットワークBに属している」というルータリンクが生成され、エリア内に通知されます。

ルータリンクは、エリア毎に独立して管理されます。例えば、エリア境界ルータであるルータhの生成するルータリンクは、「ネットワークEとネットワークFに属している」とはなりません。エリア0側には「ネットワークEに属している」/エリア1側には「ネットワークFに属している」という情報を通知します。

ネットワークリンク

ネットワークリンクは、ネットワークセグメントの代表のルータが生成し、エリア内に通知します。ネットワークリンクには、そのネットワークにどのようなルータが属しているかの情報が付与されています。図 1におけるネットワークDの代表ルータがルータfだった場合、ルータfが、「ネットワークDにはルータeとルータfとルータgが属している」というネットワークリンクを生成し、エリア0内に通知します。

ネットワークリンクも、ルータリンク同様、エリア毎に独立して管理されます。例えば、ネットワークEの代表ルータがルータhだった場合、「ネットワークEにはルータgとルータhが属している」というネットワークリンクを生成しますが、このネットワークはエリア0のネットワークであるため、エリア0側には通知しますが、エリア1側には通知しません。

OSPFv2では、ネットワークリンクの情報によってネットワークアドレス(プレフィックス)が判別できます。

サマリーリンク(NETWORK)

サマリーリンク(NETWORK)は、エリア境界ルータが、それぞれのエリアに関するサマリーリンクを生成し、他のエリアに対して通知します。サマリーリンクには、そのエリアに属するネットワークの情報が付与されています。図 1におけるエリア境界ルータhでは、エリア1に対して「ネットワークA、B、C、D、E」の情報が通知されます。また、エリア0に対しては「ネットワークF、G・・・」の情報が通知されます。

サマリーリンク(ASBR)

サマリーリンク(ASBR)は、エリア境界ルータが、それぞれのエリアに属するサマリーリンク(ASBR)を生成し、すべてのエリアに通知します。サマリーリンク(ASBR)には、エリア境界ルータのルータIDの情報が付与されます。図 1におけるエリア境界ルータhでは、エリア1に対して、「AS境界ルータはB」の情報を通知します。

ASBR:AS Boundary Router(AS境界ルータ)

AS-Externalリンク

AS-Externalリンクは、AS境界ルータが生成し、AS内に通知します。AS-Externalリンクには、AS-Externalルート情報が付与されます。OSPF以外の手段で学習した経路情報が対象となります。

OSPFの基本動作

OSPFに対応した各ルータは、OSPFを動作させるインタフェースに対して、マルチキャストアドレス宛(OSPFv2:224.0.0.5)で、Helloパケットを定期的に送信します。そのインタフェースに他のOSPFルータが存在した場合(Helloを受信した場合)は、両者で指定ルータ(Designated Router)および、バックアップ指定ルータ(Backup Designated Router)を決定します(3台以上のルータが存在した場合でも、上位2ルータのみを決定します)。この時点で、両者のルータは、Adjacency(隣接)となります。

前節の、ネットワークリンク/Intra-Area-Prefixリンクの箇所で、「これらのリンクはネットワークセグメントの代表のルータが生成する」と説明しましたが、この代表のルータとは、指定ルータのことです。

Adjacencyを確立したルータは、自身の持つリンクステートデータベースを、相手に広告すると同時に、上記のマルチキャストアドレス宛に広告します。この動作を、ネットワーク全体のOSPFルータが行うことにより、全ルータのリンクステートデータベースが統一されます。



上図の、ルータcのリンクステートデータベースを考えてみましょう。

まず、ルータcは、ネットワークAとネットワークBに属していますので、それぞれのセグメントに対してHelloを定期的に送信します。ネットワークAにはルータb、ネットワークBにはルータdとルータfが存在し、それらルータとAdjacencyが確立されます。
各ルータは、ルータリンクを構築し、通知します。各ルータのルータリンクは、以下のようになっています。
ルータ 属しているネットワーク
ルータb AA
ルータc BB
ルータd CB
ルータf D

エリア0内の他のネットワークでも、それぞれのルータで同様な処理が行われ、それぞれのルータリンクが通知されてきます。通知された結果、ルータcがもつルータリンクは、以下のようになります。
ルータ 属しているネットワーク
ルータb A
ルータc AB
ルータd BCCB
ルータe CD
ルータf BD
ルータg DE
ルータh E

ネットワークAおよびネットワークBで、ルータcが指定ルータとなったとすると、ルータcは、ネットワークリンク(OSPFv3の場合はInter-Area-Prefixリンクも)を構築します。ルータcが構築するネットワークAおよびネットワークBのネットワークリンクは、以下のようになります。
ルータ 属しているネットワーク
A bc
B cdf

エリア0の他のネットワークでも、それぞれのセグメントで同様な処理が行われます。それぞれのセグメントに関するネットワークリンクが通知されてきます。通知された結果、ルータcがもつネットワークリンクは、以下のようになります。
ルータ 属しているネットワーク
A bc
B cdf
C de
D dfg
E gh

このようにして、ネットワークリンクにより、エリア内の全ネットワークへの状況が把握できます。この情報は、エリア内のすべてのルータが共通の情報をもつことになります。


エリア外の情報は、図のルータhで構築され、サマリーリンク/Inter-Area-Routerリンクにより、エリア0側に通知されてきます。通知されたエリア外のリンクは、以下のようになります。
ネットワーク エリア境界ルータ
F、G・・・・ ルータh

エリア1側には、以下のようなリンクが通知されます。
ネットワーク エリア境界ルータ
A、B,C、D、E ルータh

AS外の情報は、図のルータbで構築され、AS-Externalリンクにより通知されてきます。通知されたAS外のリンクは、以下のようになります。
AS-Externalルート AS境界ルータ
ルータAから受信した経路情報 ルータb

ルータのリンクステートに変更があった場合は、どうなるでしょうか?
OSPFのルータは、リンクステートデータベースが構築できてしまってからは、マルチキャストアドレス宛のHelloパケット以外は送信しません。つまり、Adjacencyの状態を確認しているだけです。この状態で、リンクステートデータベースに追加や削除が発生した場合、そのルータは、自身の持つ変更後のリンクステート情報を、すべてのAdjacencyに広告します。その情報を受信した各ルータは、自身の持つリンクステートデータベースの再構築をおこない、Adjacencyに通知します。この動作がネットワーク全体で行われ、リンクステートの変更が通知されます。

OSPFを運用するための設定1(OSPFv2)

OSPFv2を運用するためには、まず以下の内容を整理します。
・このルータのルータIDをどうするか?
ルータIDは、エリア内でユニークである必要があります。ルータIDは、通常、ループバックインタフェースのIPアドレスを利用します。
・このルータのネットワークリンクをどうするか?
このネットワークの情報を、OSPFで通知するのかをピックアップして、設定します。
以下に、設定例を示します。以下の例では、上記OSPFv2の設定ポイントとして、
・ルータIDは、10.0.0.80 とする
・ネットワークリンクは、Looback1、lan 1の情報とし、いずれもエリア0とする。
としています。
(config)#interface loopback 1
(config-if-lo 1)#ip address 10.0.0.80

(config-if-lo 1)#exit

(config)#interface lan 1

(config-if-ch 0)#ip address 192.168.100.80 255.255.255.0
(config-if-ch 0)#exit
(config)#
(config)#router ospf
(config-ospf)#rouer-id 10.0.0.80
(config-ospf)#network 10.0.0.80 0.0.0.0 area 0
(config-ospf)#network 192.168.100.0 0.0.0.255 area 0
(config-ospf)#exit

(config)#
この例では、すべてのネットワークがエリア0に属しているため、インターナルルータとなります。

以下の例のように、別のインタフェースがエリア0以外のネットワークに属している場合は、エリア境界ルータとなります。
(config)#interface loopback 1
(config-if-lo 1)#ip address 10.0.0.80
(config-if-lo 1)#exit(config)#interface lan 1
(config-if-ch 0)#ip address 192.168.100.80 255.255.255.0
(config-if-ch 0)#exit(config)#interface ewan 1
(config-if-ch 0)#ip address 192.168.101.80 255.255.255.0
(config-if-ch 0)#exit
(config)#
(config)#router ospf
(config-ospf)#rouer-id 10.0.0.80
(config-ospf)#network 10.0.0.80 0.0.0.0 area 0
(config-ospf)#network 192.168.100.0 0.0.0.255 area 0
(config-ospf)#network 192.168.101.0 0.0.0.255 area 1
(config-ospf)#exit
(config)#
さらに、BGPなどのEGP(Exterior Gateway Protocol)を動作させ、その情報をOSPFで再配布(redistribute)する場合は、AS境界ルータとなります。
(config)#interface loopback 1
(config-if-lo 1)#ip address 10.0.0.80
(config-if-lo 1)#exit
(config)#interface lan 1
(config-if-ch 0)#ip address 192.168.100.80 255.255.255.0
(config-if-ch 0)#exit
(config)#
(config)#router ospf
(config-ospf)#rouer-id 10.0.0.80
(config-ospf)#network 10.0.0.80 0.0.0.0 area 0
(config-ospf)#network 192.168.100.0 0.0.0.255 area 0
(config-ospf)#redistribute bgp
(config-ospf)#exit
(config)#


設定コマンドを解説します。
interface loopback 1
interface lan 1
interface ewan 1
設定するインタフェースモードに移行します。
ip address IPアドレスを指定します。Loobackインタフェースは、サブネットマスクの設定が不要です。
router ospf OSPFに関する設定のモードに移行します。
router-id ルータIDを指定します。
network OSPFを動作させるネットワークと、エリアの情報を設定します。エリアが複数になった場合は、エリア境界ルータとして動作します。
redistribute EGPの情報をOSPFで配布する場合に指定します。


OSPFの確認

OSPFの確認には、いろいろなコマンドがありますが、ここでは、リンクステートデータベースの確認のみ解説します。他のコマンドについては、コマンドリファレンス(運用コマンド編)を参照してください。

リンクステートデータベースは、show ip ospf database / show ipv6 ospf database コマンドで、確認することができます。各リンクの詳細を確認する場合は、オプションにリンク名を指定します。(router / network など)
#show ip ospf database

     OSPF Router process 0 with ID (10.0.0.80)

           Router Link States (Area 0.0.0.0)
Link ID       ADV Router    Age  Seq#      CkSum  Link count
10.0.0.80      10.0.0.80      1168  0x80000005 0x4592 1
192.168.100.80  10.0.0.80      3493  0x800000af 0x717b 1

           Net Link States (Area 0.0.0.0)
Link ID       ADV Router    Age  Seq#      CkSum
192.168.100.80  10.0.0.80      1168  0x80000005 0xa538
           Summary Link States (Area 0.0.0.0)
      :
      :
      :



トップページへ