ルーティング・プロトコル入門編

1 経路制御(ルーティング)とは

 インターネットは,ルータでネットワークとネットワークが接続されて作られている。パケットを正しく宛先ホストヘ届けるためには,ルータが正しい方向ヘバケットを転送しなければならない。

 1.1 IPアドレスと経路制御
 ルータは経路制御表(ルーティング・テーブル)を参照してパケットを転送する。 IPアドレスのネットワーク部と経路制御表のネットワーク部を比較して,次に送信すべきルータを決定する。したがって,経路制御表には絶対に正しい情報が入っていなければならない。もし,間違っていた場合は,目的のホストにパケットが到達できなくなることがある。

ルーティング・プロトコルにより経路情報を交換する
図1 ルーティング・プロトコルにより経路情報を交換する

 1.2 スタティック・ルーティングとダイナミック・ルーティング
 では,だれがどうやって経路制御表を作成したり管理したりするのか?。これには,スタティック・ルーティング(静的な経路制御)とダイナミック・ルーティング(動的な経路制御)の2種類がある。
 スタティック・ルーティングは,ルータやホストに固定的に経路情報を設定する方法で,これに対し,ダイナミック・ルーティングの場合は,ルーティング・プロトコルを動作させ,自動的に経路情報を設定する方法だ。これらの方法には,それぞれ一長一短がある。

スタティック・ルーティングとダイナミック・ルーティングにより経路情報を交換する
図2 スタティック・ルーティングとダイナミック・ルーティングにより経路情報を交換する

 スタティック・ルーティングの設定は通常,人間の手によって行われる。
 例えば100個のIPネットワークが存在したとすると,100近くの経路情報をルータに入力しなければならない。また,このネットワークに新たなネットワークが1つ追加される場合,追加したネットワークの情報を,すべての他のルータに設定しなければならない。このため管理者にはかなりの負担がかかる。
 また,ネットワークに障害が発生したときに,自動的に障害地点を迂回して経路制御することはできない。異常が発生したときに人が手で設定を変更しなければならない。
 ダイナミック・ルーティングでは,ルーティング(経路制御)プロトコルの設定をしなければならない。これは,ルーティング・プロトコルによって設定の複雑さが変わる。
 例えば,RIPの場合にはほとんど何の設定も必要ないが,OSPFによってきめ絹かい制御しようとすると,設定は大変な作業になる。しかし,新たなネットワークを1つ追加した場合は,ネットワークを追加したルータの設定をするだけで済む。スタティック・ルーティングのように,ほかのルータの設定を変更する必要はない。
 また,ネットワークに障害が発生した場合,迂回路がある場合にパケットは自動的に迂回路を通るように設定が変更される。ただし,経路制御のために,ある程度のトラフィックが常時流れることになる。

2 経路を制御する範囲

 IPネットワークの発展とともに,ネットワーク全体を一括して管理するのは不可能になった。そのため,経路を制御する範囲によってIGP(Interior Gateway Protocol)とEGP(Exterior Gateway Protocol)という2種類のルーティング・プロトコルが利用されるようになっている。

 2.1 インターネットにはさまざまな組織が接続されている
 インターネットには世界中の組織が接続されている。極端にいえば,言葉も違えば宗教も違う組織が接続されている。考え方や,方針の違う組織が相互に接続され通信できる世界がインターネットといえる。管理される側も管理する側もなく,互いの組織は対等な関係で接続される。

 2.2 自律システムとルーティング・プロトコル
 自社内部のネットワークの管理に関する方針は,会社内部で決めて会社内部で施行される。企業や組織によって,ネットワークの管理や運用に対する考え方は違う。自社の売り上げや生産性を向上させるために,適した機器を導入し,適したネットワークを構築し,適した還用体制を作りたいと考えているはず。要求されても,社外の入に内部のネットワークの構造を公開したり,細部 の設定に関して指示されたりする必要はないはずだ。これは,日常生活でも同じことで,家庭の中の決まりについては,他人が口出しすることはあまり好まれない。
 組織の内部で経路制御に関する決まりを決めて,そのとおりに運用する範囲を,自律システム(AS:Autonomous System)や,経路制御ドメイン(Routing Domain)という。つまり,同一の決まり,考え方(ポリシー)によって経路制御を管理する組織のことだ。
 具体的にいえば,地域ネットワークや,大きなISP(インターネット・サービス・プロバイダ)などを示す。地域ネットワークやISPの内部では,ネットワークの構築,管理,運用をする管理者,運営者が,経路制御に関する方針を立て,その方針に従って経路制御の設定が行われる。

AS内とAS間
図3 AS内とAS間

 地域ネットやプロバイダに接続する組織は,その管理者の指示に従って経路制御を設定しなければならない。それを守らないと,ほかの組織へ迷惑をかけることになったり,世界中と通信ができなくなることもある。
 この自律システム(ルーティング・ドメイン)内部でダイナミック・ルーティングに利用されるのが,ドメイン内ルーティング・プロトコル,つまり,IGPです。そして,自律システム間の経路制御に利用されるのが,ドメイン間ルーティング・プロトコル,つまり,EGPなのだ。

 2.3 EGPとIGP
 前述のようにルーティング・プロトコルは,大きくEGP(Exterior Gateway Protocol)とIGP(Interior Gateway Protocol)の2つに分類される。IPアドレスは,ネットワーク部とホスト部に分けられ,それぞれが異なった役割をもっている。EGPとIGPは,IPアドレスのネットワーク部とホスト部に近い関係にある。
 EGPによって地域ネットワークやプロバイダ問の経路制御が行われ,IGPによってその地域ネットワークやプロバイダ内部のどのホストなのかが識別される。
 このように,ルーティング・プロトコルでは大きく2段階の階層化が行われている。 EGPがなければ世界中の組織と通信をすることはできない。IGPがなければ組織内部の通信ができない。
 IGPでは,RIP(Routing Information Protocol)やRIP2,OSPF(Open Shortest Path First)などのプロトコルが利用されている。それに対してEGPでは,BGP(Boarder Gateway Protocol)が利用されている。

3 経路制御アルゴリズム

 経路制御のアルゴリズムにはさまざまな方法がありますが,代表的なものが2つあります。1つは距離ベクトル型(Distance-vector)で,もう1つはリンク状態型(Link-State)です。

 3.1 距離ベクトル型(Distance-vector)
 距離ベクトル型のアルゴリズムとは,距離と方向によって目的のネットワークやホストの位置を決定する方法です。
 ルータ間では,ネットワークの向きと距離に問する情報が交換されます。この向きと距離の情報から経路制御表を作成する。これは,処理が比較的簡単な方法だが,距離と向きの情報しかないため,ネットワークの構造が複雑になると,経路制御情報が安定するまでに時間がかかったり,経路にループが生じやすいなどの問題がある。


図4 

 3.2 リンク状態型(Link-State)
 リンク状態とは,ルータがネットワーク全体の接続状態を理解して経路制御表を作成する方法だ。この方法の場合には,各ルータの情報が同じになれば正しい経路制御が行われることになる。


図5 

 距離ベクトルの場合には,各ルータの情報は必ず異る。各ネットワークヘの距離はそれぞれのルータごとに異なるからだ。このため,各ルータの情報が正しいかどうかを確認することが困難という欠点がある。
 リンク状態の場合には,すべてのルータが同じ情報をもつことになる。ネットワークの構造はどのルータにとっても同じものだからだ。このため,ほかのルータと同じ経路制御情報を持っていれば,正しい情報を持っていることになる。そして各ルータが経路制御情報をほかのルータと素早く同期させることに専念すれば,経路制御を安定させることができる。このため,ネットワークが複雑になっても各ルータは正しい経路制御情報をもつことができ,安定した経路制御を行うことができるといった利点がある。
 そのかわり,ネットワーク・トポロジーから経路制御表を求める計算はかなり複雑だ。特にネットワークが巨大で複雑な構造をもつときには,トポロジー情報の管理と処理をするために高いCPU能力と多くのメモリ資源を必要とする。

4 主なルーティング・プロトコル

 ルーティング・プロトコルにはさまざまな種類がある(表1)。
 表1にあるEGPはCIDRに対応していないため,現在のインターネットの対外接続用のプロトコルとしては使用してはならない。 IDRPは次世代のBGPとして現在注目されているルーティング・プロトコルだ。RIP,RIP2,OSPF,BGPの基礎的な知識について説明する。

5 RIP(Routing Information Protocol)

 RIPは距離ベクトル型のルーティング・プロトコルで,LANで広く使用されている。Berkeley 4.3 BSD UNIXシステムではRIPを利用できるroutedが標準で提供されたため,急速に普及した。

 5.1 経路表をブロードキャストする
 RIPは経路制御情報を定期的にネットワーク上にブロードキャストする。経路制御情報の送信間隔は30秒周期。この経路制御情報が来なくなったら接続が切れたと判断する。ただし,パケットが失われた可能性があるので,3回まではパケットを待つが,4回(120秒)待ってもこない場合には,接続が切れたと判断する。


図6 

 5.2 距離ベクトルにより経路を決定
 RIPは距離ベクトルにより経路を決定する。距離の単位は[ホップ数」。ホップ数とは通過するルータの数のことだ。 RIPではできるだけ少ない数のルータを通過して,目的のIPアドレスに到達するように制御される。この例を図7に示す。距離ベクトル・アルゴリズムにより距離ベクトル・データベースが作成されたら,距離が小さい経路を抜き出して経路制御表が作成される。


図7 

 5.3 RIPの注意点
 RIPではサブネット・マスクをサポートしていない。これは、経路情報としてネット・マスクが伝えられないことを意味する。このため、可変長のサブネット・マスクを利用したネットワークでは,正常な経路制御が行われない可能性がある。
 また,ホップ数が16を超えるネットワークとは通信できない。 RIPでは,ホップ数16は無限大の距離を意味する。このため,ホップ数がI6よりも遠くになると経路情報は伝わらなくなる。


図8 

 5.4 RIP2
 RIP2は,RIPのバージョン2のことで,RIPを運用して得られたさまざまな経験を基にして改良が行われたプロトコル。基本的な考え方はRIPバージョン1と変わらないが,以下の機能が付加されている。
■ マルチキャスト使用
 RIPでは経路制御情報を交換する際に用いるパケットは,ブロードキャスト・バケットを用いているが,RIP2ではマルチキャストを用いる。これにより,トラフィックの軽減や,関係のないホストに与える影響が小さくなる。
■ サブネットマスク対応
 OSPFと同じように経路制御情報の中にサブネット・マスクの情報も組み込むことができるようになっている。
■ ルーティング・ドメイン
 OSPFのエリアのように,1つのネットワーク上で論理的に独立した複数のRIPが使えるようになっている。
■ 外部ルート・タグ
 EGPやBGPなどから得た経路制御情報をRIPを使ってAS内に通知するときに用いる。
■ 認証キー
 OSPFと同様にパスワードを用いて,自分か認識できるパスワードをもっているパケットのみ受容する。パスワードが異なるRIPパケットは無視する。

6 OSPF(Open Shortest Path First)

 OSPFはOSIのIS-ISプロトコルを参考にして作られたリンク状態型のプロトコルだ。リンク状態を採用したことにより,ループのあるネットワークでも安定した経路制御を行うことができる。
 また,OSPFではサブネット・マスクをサポートしている。この機能によりRIPではできなかった,可変長サブネットで構成されたネットワークの経路制御が可能になった。
 さらに,トラフィックを軽減させるために,エリアの概念が導入された。エリアはネットワークの論理的な領域を意味し,ネットワークをエリアに分けることにより,不必要なルーティング・プロトコルのやり取りを減少させる。
 OSPFは,サービス・タイプごとに複数の経路制御表を作成できるようなプロトコルになっている。ただし,OSPFに対応しているルータでも,この機能をサポートしていない場合がある。

 6.1 0SPFはリンク状態型のルーティングプロトコル
 OSPFはリンク状態型のプロトコル。ルータ間で,ネットワークのリンク状態を交換し,ネットワークのトポロジーの情報を作成する。そして,そのトポロジー情報を基にして経路制御表を作成する。


図9 

 RIPでは,通過するルータの数が最も少ない方向を経路に設定する。これに対して,OSPFでは各リンクに重みを付けることができ,この重みが小さくなるように経路が選択される。 OSPFではこの重みのことをメトリックと呼ぶ。つまり,OSPFではメトリックが小さくなるように経路制御される。図10のようなネットワークでは,RIPの場合は通過するルータの数が少ないほうをパケットが通るが,OSPFではメトリックの小さいほうを通る。


図10 

 6.2 0SPFの基礎知識
 OSPFでは同一リンクに接続されていて,経路情報を交換するルータを隣接ルータ(Neighboring Router)と呼ぶ。また,イーサネットやFDDIなど,複数のルータが同一リンクに接続されているときには,指名ルータ(Designated Router)が決められ,そのルータを中心に経路制御情報が交換される。
 RIPではパケットの種類は1つしかなかった。経路制御情報を利用して,ネットワークが接続されているかどうかを確認しながら,ほかのネットワークの情報も流していた。しかし,これには大きな欠点がある。まず,ネットワークの数が多くなれば,毎回交換する経路制御情報のパケットが大きくなるという点だ。さらに,経路が完全に安定しても,同じ経路情報を繰り返し定期的に流さなければならず,ネットワーク帯域のむだ使いになる。
 OSPFでは,役割ごとに5種類のパケットを用意している。
 接続確認はHelloパケットで行う。各ルータの経路制御情報を一致(同期)させるため,データベース記述パケット(Database Description Packet)で経路制御情報のバージョン番号をやり取りする。バージョンが古い場合には,リンク状態要求パケット(Link State Request Packet)で経路制御情報の要求を行い,リンク状態更新バケット(Link State update Packet)で経路制御情報を送信してもらい,リンク状態確認応答パケット(Link State ACK Packet)で経路制御情報を受信したことを通知する。
 このような役割分担により,OSPFではトラフィックを軽減させながらよりスピーディーに経路を更新できるのだ。

 6.3 0SPFの動作の概要
 OSPFでは,接続の確認をするプロトコルをHELLOプロトコルという。
 LANの場合には通常10秒に1回HELLOパケットを送信する。このHELLOパケットが来なくなった場合には,接続が切れたと判断する。3回までは待つが,4回(40秒)待っても返事が来ない場合には接続が切れたと判断する。そして,接続が切れたり,回復したり変化した場合には,リンク状態更新パケット(Link State update Packet)を送信して,ほかのルータにネットワークの状態の 変化を伝える。

 6.4 階層化されたエリアに分けてきめ細かく管理
 リンク状態プロトコルは,ネットワークが大きくなると,リンク状態を表すトポロジカル・データベースが大きくなり,経路制御情報の計算が大変になる。
 OSPFでは計算の負荷を軽減するため,エリアという概念が取り入れられている。


図11 

 エリアとは,ネットワーク同士やホスト同士を,まとめてグループ化したもの。各AS内には複数のエリアが存在できるが,必ず1つのバックボーン・エリア(IDが0)がなければならず,また,各エリアは必ずバックボーン・エリアに接続されていなければならない。
 エリアとバックボーン・エリアを結ぶルータをエリア境界ルータと呼ぶ。また,エリア内のルータを内部ルータ,バックボーンエリアにのみ接続されているルータをバックボーン・ルータ,外部と接続しているルータをAS境界ルータと呼ぶ。


図12 

 各エリア内のルータは,そのエリア内のトポロジーのデータベースを持っている。しかし,エリア外の経路に関しては,エリア境界ルータからの距離しか分からない。というのは,エリア境界ルータはエリア内のリンク状態の情報を,そのまま別のエリアには伝えないで,距離情報のみを伝えるからだ。これは,エリア内のルータがもつトポロジーのデータベースを小さくする役割がある。
 つまり,ルータはエリア内部のリンク状態だけを知っており,その情報だけから経路制御表を計算すればよいことになる。この仕組みにより,経路制御情報を減らすことができ,処理の負荷を軽くすることができる。


図13 

 なお,エリアからの出口となるエリア境界ルータが1つしかない場合は,スタブ・エリアと呼ばれる(図13のエリア2)。スタブ・エリア内には,エリア外の経路情報を伝える必要はない。エリア境界ルータがデフォルト・ルートになるように情報を流せばよいからだ。これにより,ほかのエリアの個々のネットワークに対する距離情報が必要なくなるため,さらに経路情報を減らすことができる。
 OSPFで安定したネットワークを構築するためには,物理的なネットワークの設計もたいせつだが,このエリアの設計も非常にたいせつだ。エリアの設計が悪いと,OSPFの利点が十分に生かされない場合がある。

7 BGP(Border Gateway Protocol)

 BGPは組織間を接続するときに利用されるプロトコルで,EGPに分類される。このBGPと,RIPやOSPFが協調的に経路制御を行うことにより,インターネット全体の経路が制御されている。

 7.1 BGPとAS番号
 RIPやOSPFでは,IPのサブネットワーク・アドレスを利用して経路制御を行っていた。 BGPでは,インターネット全体をカバーするように経路制御しなければならない。最終的な経路制御表はネットワーク・アドレスと次に配送すべきルータの組で表されるが,BGPではもっと大きな単位で経路制御を行う。 ISPや地域ネットワークなど,組織を束ねるネットワーク集団を1つの自律システム(AS:Autonomous System)として取り扱う。そして,それぞれの自律システムごとに16ビットのAS番号が割り当てられる。BGPでは,このAS番号を使って経路制御が行われる。
 なお,次のURLからJPNICが管理しているAS番号の一覧表を得ることができる。
  ftp://ftp.nic.ad.jp/jpnic/ipaddress/as-numbers.txt


図14 

 7.2 BGPは経路ベクトル
 BGPにより経路制御情報を交換するルータをBGPスピーカという。 BGPスピーカはAS間でBGPの情報を交換するために,情報を交換するすべてのASと対等にBGPのコネクションを確立する。また,図15のAS2,AS4,AS5のように同一AS内に複数のBGPスピーカがある場合には,AS内部でもBGPの情報を交換するためにBGPコネクションを確立する。


図15 

 BGPでは,目的とするASにパケットが到達するまでに通過するAS番号のリストを収集する。これをAS経路リスト(AS Path List)という。複数の経路がある場合には,通常はAS経路リストの短い方のルートを選択する。このAS経路リストは,向きと方向だけではなく,途中で通過するAS番号がすべて分かるため距離ベクトルではない。かといって,ネットワークの構造を1次元的に表しただけなので,リンク状態でもない。
 BGPのように,通過する経路のリストで経路制御を行うプロトコルを,経路ベクトル(Path vector)という。単純な距離ベクトル型のプロトコルでは経路のループを検出できないが,経路ベクトル型ならばループの検出が可能になる。さらに,限定された形ではあるが,ポリシー経路制御が可能になるという利点がある。



◎ 経路制御はインターネット全体に広がる巨大な分散システム
 分散システムとは,複数のシステムが協力(協調)して特定の処理をするためのシステムのこと。
 インターネットの経路制御は,インターネットのすべてのルータが正しい情報をもっていることが基本になっている。そして,すべてのルータの情報を正しくするためのプロトコルが,ルーティング・プロトコルだ。ルーティング・プロトコルが協調動作しなければ,インターネットの正しい経路制御は行われない。
 つまり,ルーティング・プロトコルは,インターネット全体に広がって,インターネットを動かすための巨大な分散システムといえる。

トップページへ