技術講座

[技術分野■ADSL■無線■光ファイバー■衛星通信■CATV■伝送技術■交換技術■データ通信■ネットワーク技術■ルーティング技術]

[技術講座(ルーティング技術―1)]                  (2003/05/20作成)

 インターネットにおける通信経路の制御技術であるルーティングについてまとめました。

1.IPとルーティング

1.1ルーティングとは

(1)ルーテイングテーブル

 インターネットの通信は、IPパケットのやりとりで成り立っています。IPパケットのヘッダには、宛先IPアドレスが書いてあります。また各ルータでは、宛先IPアドレスが所属するネットワークネクストホップの関係をまとめたルーティングテーブルを持っています。ルータは、IPパケットの宛先アドレスとルーティングテーブルを参照して、ネクストホップを決定します。

(2)IPパケットが目的地まで到達する仕組み

 ホストAからホストC行きのIPパケットが送信された例で示します。ホストAからIPパケットが直近のルータXに来ると、ルータXではIPパケットの宛先アドレスCと、ルータX自身が持っているルーティングテーブルを比較します。アドレスCネットワークCに含まれることが分かると、ルーティングテーブルでネットワークCに対応するネクストホップを読み、それがルータZであることが分かると、ルータXはこのIPパケットをルータZに向けて転送します。

 ルータZに到着したIPパケットは同様に処理されます。IPパケットの宛先アドレスとルータZのルーティングテーブルを参照して、ネクストホップルータVであることが分かると、ルータVに転送するわけです。

 以上のように、ルータではIPパケットの宛先アドレスと、自身のルーティングテーブルを参照して次のルータに転送します。それを繰り返して、最後にIPパケットは宛先アドレスのホストにたどり着きます。つまり、IPパケットはホップバイホップに(1つ1つ順々に)転送されていくわけです。

(3)ルーティングとフォワーディング

 インターネットで適切に通信が行われるためには、各ルータのルーティングテーブルが適切に設定されていなければなりません。また、実際のインターネットでは、経由するルータの組み合わせは何通りもある場合が少なくないため、その中から最も効率的な経路を選択することも重要です。

 このように、送信元から目的の宛先までの最適な経路を選択するタスクをルーテイングと呼びます。具体的には、「パケットが最適な経路を通るように各ルータのルーテイングテーブルを作成し、それに基づいてルータに入力されたパケットをどのインタフェースに出力するかを決定すること」がルーテイングということになります。

 一方、実際に入力したパケットを、ルーティングによって選ばれた出力インタフェースに出力することをフォワーディングと言います。つまり、ルータはルーティングにより最適な出力インタフェースを決定し、それに基づいてパケットをフォワーディングしていくわけです。

(4)なぜルーティングが必要か

 ルータやホストは、自分のネットワークインタフェースにつながっているネットワークのアドレスは分かります。ネットワークインタフェースにはIPアドレスとサブネットマスクが割り当てられているため、そこにつながるネットワークを簡単に割り出すことができます。

 従って、IPパケットの宛先アドレスが同一ネットワークにつながる装置の場合、該当するネットワークインタフェースにパケットを送出すればよく、ルーティングの設定は不要です。ルーティングの設定をしなくても、同じネットワーク(直接接続されているネットワーク)の情報は、ルーティングテーブルに載っているので設定は不要ということです。

 図1 に示す構成で、ルータAのEther0のインタフェースとルータBのEther0のインタフェースが通信する場合、各ルータでは各インタフェースにつながるネットワークは192.168.100.32/29であることが分かっています。



 図1 ルーティングの設定が不要な場合

 従って、ルータAで宛先アドレスが192.168.100.36のIPパケットを送出する場合、その宛先アドレスは192.168.100.32/29の範囲内なので、ルータAのEther0と同じネットワークにあり、ルータAはそのパケットをEther0から送出すればよいことが分かります。逆向きも同様です。

 このように、図1では、ルータAのEther0のインタフェースとルータBのEther0のインタフェースの通信には、ルーティングの設定は不要となります。

 ところが、IPパケットの宛先アドレスが自分のインタフェースにつながるネットワークの範囲外である場合は、そのパケットをどのインタフェースから送出すればよいか分かりません。従って、異なるネットワークにつながっている装置同士の通信では、ルーティングの設定が必要になります。

 図2に示す構成で、ルータAでは192.168.100.32/29がEther0につながっているネットワークであること、10.1.2.144/28がEther1につながっているネットワークであることは分かりますが、172.16.3.16/29や10.5.6.64/27のネットワークがどこにあるのかは分かりません。



  図2 ルーティングの設定が必要な場合

 そこで、ルータAでは10.5.6.64/27のネットワークがルータBの向こう側であることをルーテイングテーブルに書き込む必要があるわけです。

1.2 IP

(1)IPv4パケットのフォーマット

 図3にRFC791に規定されたIPv4パケットのフォーマットを示します。



  図3 IPv4パケットのフォーマット

[Versionフィールド]
 IPのバージョンを示します。RFC791の規定はIPバージョン4なので、フィールド値は「4」となります。

[IHLフィールド]
 IHLは「Internet Header Length」の略で、32ビットを単位としたIPヘッダの長さを表します。オプションがない場合のIPパケットでは、この値は「5」となります。

[Type of Serviceフィールド]
 本フィールドは「TOSフィールド」と呼ばれ、そのIPパケットがどのような品質で扱われるべきかを区別するために用いられます。

[Total Lengthフィールド]
 ヘッダを含むIPパケット全体の長さオクテットの単位で示すものです。このフィールドは16ビットあるためIPパケットの最大長は65535オクテットとなりますが、実際にはイーサネットなど一般的なネットワークのMTU(Maximum Transmission Unit:1フレームで転送可能な最大オクテット数)が1500オクテット程度であるため、ほとんどの場合パケット長はこれより短くなります。

[identificationフィールド][Flagsフィールド][Fragment Offsetフィールド]
 送ろうとするパケットの長さがネットワークのMTUより大きいときに、そのパケットは分割されます。このパケットの分割・再構成を実現するために使われるのがこれらのフィールドです。

[Time to Liveフィールド]
 本フィールドは「TTLフィールド」とも呼ばれ、IPパケットがルータなどの中継機器を通過する際に1つずつ減らされる値で、「0」になるとそのIPパケットは廃棄されます。

[Protocolフィールド]
 Dataフィールドで運ばれる上位のプロトコルを識別するフィールドです。1番:ICMP、6番:TCP、17番:UDP、41番:IPv6 over IPv4、89番:OSPF等があります。

[Header Checksumフィールド]
 IPパケットの伝送エラーがないかチェックするためのフィールドです。送信側では、伝送するIPパケットのヘッダのビットを組み合わせて数値計算をし、その結果の値をこのフィールドに入れます。受信側でも同様の数値計算をし、受け取った値と比較して伝送エラーがないかどうかを確認します。

 実際は、ルータでTTLを1つずつ減らすためにビット配列が変わり、数値計算の結果が変わってしまうので、各ルータでは転送する前にヘッダチェックサムの再計算をする必要があります。従って、チェックサムの値はルータを通過する毎に変わっていくことになり、その値は次のルータまで伝送エラーがないかどうかの値となります。また、NAT(アドレス変換装置)においても、送信元アドレスや宛先アドレスを変更するので、ヘッダチェックサムの再計算が必要となります。

[Source Addressフィールド][Destination Addressフィールド]
 「Source Address」は送信元IPアドレス、「Destination Address」は宛先IPアドレスを示します。

[Optionsフィールド]
 オプションを指定するフィールドです。オプションにはIPパケットが通るルートをあらかじめ決定できるソースルーティングなどがあります。

(2)IPアドレス

 (a) ネットワークアドレス部とホストアドレス部
 32ビットで構成されるIPアドレスは、ネットワークアドレス部とホストアドレス部で構成されます。前者はインターネット全体の中でネットワークがどこにあるかを示し、後者はそのネットワークの中でホストがどこにあるかを示します。

 (b) クラス
 32ビットの内、ネットワークアドレス部とホストアドレス部の区分はクラスによって決まっています。図4に各クラスのビット構成を示します。IPアドレスの先頭のビットが「0」のアドレスは、ネットワークアドレス部が先頭の8ビットとなり、「クラスA」と呼びます。



   図4 クラス(A〜E)のビット構成

先頭が「10」のアドレス(クラスB)は、ネットワークアドレス部が先頭の16ビット、先頭ビットが「110」のアドレス(クラスC)は、ネットワークアドレス部が先頭の24ビットというように決められてきました。クラスには、クラスA、B、Cの他に、マルチキャスト通信で使用されるクラスD実験用に予約されているクラスEがあります。

 (c) ネットワークアドレスとブロードキャストアドレス
 一般的に使用されるアドレスは、クラスA、B、Cのアドレスです。ただし、ホストアドレス部のビットがすべて0」または「1」のものは、各クラスともに通常のアドレスとしては使用できません。前者はそのネットワーク自身のネットワークアドレスを表します。後者はそのネットワーク全体に対するブロードキャストアドレスを表します。

 (d) ブロードキャスト
 ブロードキャストアドレス宛にIPパケットを送ると、そのブロードキャストアドレスで指定されているネットワークセグメントに接続されたすべてのホストにパケットが転送されます。

 ブロードキャストアドレスには32ビットすべてが「1」のローカルブロードキャスト(10進数表記では255.255.255.255)と、ホストアドレス部分だけのビットがすべて「1」であるダイレクトブロードキャストがあります。前者は、そのホストが接続されたネットワークへのブロードキャストであり、パケットを受け取ったルータがそれを他のネットワークに転送するようなことはありません。後者は他のネットワークに向かってルーティングすることも可能です。

 (e) クラスA
 クラスAは先頭1ビットが2進数で「0」なので、先頭の8ビットが表す範囲は00000000〜01111111(10進数表記では0〜127)になります。しかし、ネットワークアドレス「0」はデフォルトルートや自分自身を意味し、「127」はループバックアドレス用に指定されているため、使用できるネットワークの数は1〜126となります。

 1ネットワークの最大ホスト数は、ホストアドレス部が24ビットのため、224から2を引いた16,777,214個となります。2を引くのは、すべてのビットが「0」(ネットワークアドレス)または「1」(ブロードキャストアドレス)のアドレスはホスト用のアドレスとして使用できないからです。

 (f) クラスB
 クラスBは先頭2ビットが2進数で「10」なので、10進数で表したIPアドレスの最初の数字は、128〜191(2進数では10000000〜10111111)となります。1ネットワークの最大ホスト数は、ホストアドレス部が16ビットのため65,534個(=216−2)となります。

 (g) クラスC
 クラスCは先頭3ビットが2進数で「110」なので、10進数で表したIPアドレスの最初の数字は、192〜223(2進数では11000000〜11011111)となります。1ネットワークの最大ホスト数は、ホストアドレス部が8ビットのため254個(28−2)となります。

 (h) アドレス部の最初の数字を見ればクラスが分かる
 それぞれのクラスでアドレスの範囲は決まっているため、IPアドレスを構成する4つの10進数の内最初の数字によって、そのアドレスが属しているクラスが分かります。例えば、「61.」であればクラスA、「210」であればクラスCということになります。

(3)サブネット

 (a) サブネット
 実際のネットワークでは、ホスト数が10台もないようなネットワークは珍しくありません。そのようなときにクラスの概念通りに使用すると、クラスCでも254台分の大きさですから、実際に使用されないアドレスが多くなります。全世界で32ビットしかないIPv4アドレスの枯渇問題が取りざたされている状況で、このようなもったいない使用方法は問題となります。

 また、ある程度大きな企業でも、ブロードキャストのトラフィックを制限したい、使用しているメディアが違う(EthernetとFDDIなど)等の理由で、部などの単位組織毎にネットワークを分割することが少なくありません。このようなとき、ネットワークをクラスの概念よりも細かく分けて、それぞれにアドレスを割り当てて有効にアドレスを使用するサブネットという概念を使います。1つのネットワークをサブネットに分割するためには、ホストアドレスの一部をサブネットアドレスとします。

 (b) サブネットのアドレッシング
 例えば、クラスCにおいて、図5のようにホストアドレス部の8ビットの内先頭の3ビットを、ホストアドレス部としてではなく、分割したネットワークを表すサブネットアドレス部に使うことができます。このサブネットが表すアドレス範囲は、ホストアドレス部を「00000」から「11111」まで変化させていくと分かります。図5の例にあるサブネットは192.168.100.64〜192.168.100.95のアドレス範囲を示すネットワークになります。



  図5 サブネットアドレスの例

 (c) 使用できるアドレス数
 ホストアドレスとして使用できるアドレスは、最初の192.168.100.64(ネットワークアドレス)と、最後の192.168.100.95(ブロードキャストアドレス)を除いた192.168.100.65〜192.168.100.94になります。従って、このネットワークには30台までのホストを接続することが可能です。なお、この「ホストの数」には、ルータ等のネットワーク装置に割り当てるIPアドレスも含みます。また、サブネットアドレス部を変えることにより、サブネットの表す範囲は図6のように変わります。



    図6 サブネットが表すアドレス範囲

 (d) サブネットマスク
 図7に示すように、IPアドレス中のネットワークアドレス部とサブネットアドレス部を示す範囲に、ビット1を立てたものサブネットマスクと言います。192.168.100.64〜192.168.100.95のネットワークは、「192.168.100.64 255.255.255.224」と表すことができます。



    図7 サブネットマスク


 またこのネットワークに属するホストの内、192.168.100.75のアドレスを持つホストのアドレスを「192.168.100.75 255.255.255.224」と表します。図8に示すように、あるアドレスとそのサブネットマスクの論理積を取れば、そのアドレスが属するサブネットのネットワークが分かります。



図8 アドレスとサブネットマスクの論理積を取る

 (e) プレフィックス表記
 また、192.168.100.64〜192.168.100.95のネットワークを「192.168.199.64/27」と表すこともあります。これをプレフィックス表記と言います。図9に示すように、「/27」は先頭のビットから27ビットのサブネットマスクを使用することを意味します。つまり、サブネットワーク部を含むネットワークアドレス部の長さが27ビットであるという意味です。また、このマスクの長さをマスク長、サブネットマスク長、プレフィックス長等と言います。



  図9 プレフィックス表記

 (f) サブネット内のホスト数
 例えば「/27」のネットワークに接続可能なホスト数は、次のような計算により30台と分かります。IPアドレス全体の32ビットの内、ネットワークアドレス部とサブネットアドレス部で27ビット分ですから、残りの5ビットがホストアドレス部となります。従って、ネットワークアドレス(すべて0)とブロードキャストアドレス(すべて1)の2つを引いた25−2=30が、このネットワークに接続できるホストの数となります。

 (g) マスク長と接続可能なホスト数
 また、30台を超えるホストが接続されているネットワークにおいては、ホストアドレス部の範囲を5ビットから6ビットに広げて「/27」を「/26」に変更すれば、ネットワークに接続できるホストの数が62台となります。ただし、ホストアドレス部を広くした分、サブネットアドレス部が狭くなるため、構築できるネットワーク(セグメント)の数は減少します。例えば、1つのクラスCアドレスで「/27」のネットワークは8つ(=227-24)作れますが、「/26」のネットワークでは4つ(=226-24)しか作れません。

 表1にサブネットマスク、プレフィックス長、サブネットワーク数、接続可能ホスト数の関係を示します。マスク長が長くなるほど接続ホスト数は少なくなりますが、1つのクラスCで作成できるネットワークの数は多くなります。言い換えると、接続可能ホスト数に適したマスク長を設定することにより、より多くのネットワークを作成することができます。


表1 サブネットマスク、プレフィックス長、サブネットワーク数、接続化のホスト数の関係

クラスC(すなわち/24のとき)
サブネットワーク部
サブネットマスク
プレフィックス長
サブネットワーク数
接続可能ホスト数
1ビット
255.255.255.128
/25
最大  2
最大 126
2ビット
255.255.255.192
/26
最大  4
最大  62
3ビット
255.255.255.224
/27
最大  8
最大  30
4ビット
255.255.255.240
/28
 最大  16
最大  14
5ビット
255.255.255.248
/29
 最大  32
最大   6
6ビット
255.255.255.252
/30
 最大  64
最大   2

 (h) VLSM
 VLSMとは「Variable Length Subnet Mask」の略で、1つのネットワークをサブネットに分割する際に、サブネット毎に異なる長さのマスクを使用する方法です。例えば、ある1つのクラスCを分割するときに、「/26」と「/27」を同時に使用するようなことです。VLSMを使用したネットワークでダイナミックルーティングを使用する場合は、OSPFやRIP Version 2などのVLSMに対応したルーティングプロトコルを使う必要があります。

(4)CIDR

 CIDRとは「Classless Inter-Domain Routing」の略で、「サイダー」と読みます。これは、クラスA、B、Cの概念を取り払い、IPアドレスのネットワークアドレス部とホストアドレス部の長さを任意に決めることを可能にする考えです。1993年頃より使用されています。

 CIDRでは192.168.8.0/22のように、クラスCについてもプレフィックス長を24未満にすることができます。このように、あるネットワークの通常のマスク長(ナチュラルマスク:クラスCなら「24」)よりも短いマスク長で表すネットワークを、「supernet:スーパーネット」と呼びます。

 また、CIDRにおいて、プレフィックス表記で表すようなネットワーク、つまりマスクの情報を含めたネットワークを「prefix:プレフィックス」と言います。つまり、192.168.8.0/22は1つのプレフィックスです。

 CIDRではクラスの概念がないため、サブネットアドレス部という概念もなく、ネットワークアドレス部とホストアドレス部の2つにしか分かれません。その2つの部分は、任意の場所によって区別することができ、左端からそこまでのビット数がマスク長になります。

 CIDRにより、ネットワーク規模に準じた大きさのネットワークアドレスを表すことができます。例えば、400台のホストを1つのネットワークセグメントに接続するときに、クラスBのアドレスを使用することなく、クラスCのネットワーク2つ分を付与してそれを「/23」で使用することが可能になります。

 CIDRを使用すると、連続したネットワークを集約することができます。例えば、192.168.8.0/24、192.168.9.0/24、192.168.10.0/24、192.168.11.0/24の4つの連続したクラスCのネットワークを、192.168.8.0/22という1つのCIDRに集約して表現することができます。

 集約することのメリットは次の通りです。ルータはルーティングテーブルを持っています。ルーティングテーブルは、宛先ネットワークとネクストホップの対応情報の集まりです。従って、経路が集約されて対応情報の数が経れば、ルーティングテーブルの登録(エントリ)数を減らすことができ、ルータの使用メモリを減らすことができます。

 また、IPパケットが転送されるときにはルーティングテーブルが検索されますが、登録数が少なければそれだけ検索にかかる計算量も少なくてすむため、ルータの負荷を軽減することにもつながります。CIDRの採用による経路の集約は、あるISPから外部のISPへBGPで広告する経路情報において実際に使われます。

(5)IPアドレスの配分方法

 現在日本ではJPNIC(日本ネットワークインフォメーションセンター)からISPへIPアドレスが割り振られます。ISPは割り振られたアドレス空間(アドレスブロック)の一部を、さらにエンドユーザに割り当てます。正確に言うと、このISPはJPNICからIPアドレス割り当て管理業務を行う指定を受けた「IPアドレス管理指定事業者(IP指定事業者)」となります。

 JPNICやISP(IP指定事業者)は「IR:インターネットレジストリ」の1つとなります。IRはIPアドレス空間を下位のIRまたは顧客に分配し、その分配をデータベースに登録する責任を負います。JPNICは国別IR(NIR:National Internet Registry)の1つです。また、ISPはローカルIR(LIR:Local Internet Registry)となります。

 JPNICの上位にはAPNIC(Asia Pacific Network Information Center)があります。これは地域IR(RIR:Regional Internet Registry)の1つで、アジアパシフィック地域を担当します。さらにAPNICの上には、IPアドレス空間の元締めと言うべきIANA(Internet Assigned Numbers Authority)があります。

 最近では、国際非営利法人組織としてICANN(Internet Corporation for Assigned Names and Numbers)が設立され、現在、IANAはICANNの組織の中の一部となっています。

 (a) 割り振りと割り当て
 割り振り(allocation)とは、再配分用としてアドレス空間をIRに分配することです。割り当て(assignment)とはIRがエンドユーザに対し、割り振られたアドレス空間の一部(または全部)をエンドユーザのネットワークで利用するために分配することです。なお、ここで言うエンドユーザとはグローバルアドレスを固定でもらうエンドユーザのことになります。ダイヤルアップユーザはアドレス割り当てではなく、ISPのアドレスを借りている形になります。

 (b) 全インターネットの経路情報
 図10に示すように、ルーティングプロトコル的には、あるISPから外のインターネット全体にBGPで経路情報を広告するときは、JPNICから割り振られたアドレスブロックだけを広告すればいいことになります。このように、あるAS(Autonomous System)から外部には大きくまとまったアドレスブロックの経路情報を流すだけでよいので、インターネット上のルータの使用メモリやCPUの負荷などを減らすことができることになります。これがアドレス集約を行う大きなメリットの1つです。



   図10 インターネット上に流れる経路情報

(6)プライベートアドレスとNAT

 (a) グローバルアドレス
 グローバルアドレスとは、IRから割り当てられる全世界で唯一のアドレスのことで、インターネットに直接接続される装置に割り当てられます。グローバルアドレスの所在は、経路情報としてインターネット上に伝わりますので、インターネットのどこからでもグローバルアドレス宛のIPパケットは目的地に到達できます。

 通常、IPの通信ではIPパケットを受け取ると、そのパケットの送信元アドレスを宛先アドレスにして応答します。従って、グローバルアドレスが割り当てられたホスト同士の通信は、行きも帰りも宛先アドレスがグローバルアドレスになりますから、特別な装置を介することなく通信することができます。

 (b) プライベートアドレス
 グローバルアドレスに対して、個別のネットワーク内部で自由に設定できるIPアドレス領域をプライベートアドレスと言います。プライベートアドレスについてはRFC1918に詳しく書かれており、IANAは表2に示す3つのIPアドレス空間ブロックをプライベートアドレスのために予約しています。


        表2 3つのプライベートアドレス空間

10.0.0.0〜10.255.255.255 10.0.0.0/8:クラスA 1個分
172.16.0.0〜172.31.255.255 172.16.0.0/12:クラスB 16個分
192.168.0.0〜192.168.255.255 192.168.0.0/16:クラスC 256個分

 これらのプライベートアドレスは各組織で自由に使用可能で、IRからの割り当てを受ける必要がありません。また、プライベートアドレスは、インターネットにおいて唯一でなくてよく、ある組織と別の組織で同じアドレスが使用可能です。そのため、プライベートアドレスに関しては、経路情報をインターネット上に伝えることはできません。よって、プライベートアドレスが割り当てられたホストは、直接インターネットと通信することはできません。

 (c) NAT
 プライベートアドレスが割り当てられたホストがインターネットと通信するためには、プライベートアドレスのネットワーク(例えば社内ネットワーク)からインターネットへ出るところにNAT(Network Address Translation)と言う装置を入れます。

 NATの装置(NAT boxと呼ばれる)は、パケットがプライベートアドレスのネットワークから外部に出る際に、送信元アドレス内部のプライベートアドレスから外部のグローバルアドレスに付け替えます。そして、その応答パケットが外部から来たとき、NATはその宛先アドレスをグローバルアドレスから元のプライベートアドレスに戻します。

 つまり、NATではプライベートアドレスとグローバルアドレスの対応関係を管理しています。これによって、プライベートアドレスが割り当てられたホストからインターネットへのアクセスを可能にします。NATの装置にはNAT専用装置もありますが、ルータやファイヤーウォールのNAT機能を利用したり、PCやWSなどにNATの機能を入れて使用したりすることもよくあります。

 (d) NAPT
 上記のようにIPアドレスだけを変換する方法では、パケットヘッダにある送信元と宛先のIPアドレスだけを識別するため、プライベートアドレスとグローバルアドレスの対応は常に1対1でなければなりません。このため1つのグローバルアドレスを使用して外部にアクセスできるノードは、ある時点で1つだけに制限されてしまいます。

 これに対して現在一般的に使用されているものは、送信元IPアドレス、宛先アドレスの他に、送信元TCP/UDPポート、宛先TCP/UDPポートの対応関係を管理することで、1つのグローバルアドレスで複数のプライベートアドレスのホストが同時に通信できるようにする仕組みです。

 この機能はNAPTと呼ばれRFC2663に詳しく書かれています。また、この機能はLinux用語であるIPマスカレードと呼ばれることもあります。また、「PAT」「NAT+」「マルチNAT」と呼ばれることもあります。狭義にはNATとNAPTは別のものですが、広義にはNAPTを含めてNATと呼ばれることもあります。

 (e) NATを使用する場合の注意点
 NATやNAPTを使用することにより、データの中にIPアドレスやポート番号を含むアプリケーションや、逆方向(インターネット側からプライベートアドレス側)でアクセスし直すようなプロトコル(例えばFTP data)について、使用できない場合もあるので注意する必要があります。

 また、インターネットからプライベートアドレス側に向けてコネクションを張るようなことは基本的にできません。最初のコネクションを張ろうとするパケットが届かないからです。逆に言えばセキュリティの強化という利点にもつながります。

(7)IPv6

 IPv4アドレスの枯渇問題に対する長期的解決策としてIPv6があります。IPv4のアドレスは32ビットなので232個(約43億個)のアドレス空間ですが、IPv6のアドレスは128ビットなので2128個(約340澗個、澗=1036)のアドレス空間があります。

 IPv6のアドレス空間はほぼ無限なため、プライベートアドレスを使用するためのNATも不要になります。従ってIPv6の普及により、双方向接続が可能になるという大きなメリットがあります。また、セキュリティについてもIPv6にはIPsecが標準装備されているため、end-to-endでの安全な通信が可能になります。


[出典]
 (1) 友近剛史他2:インターネットルーティング入門,翔泳社(2002-1)

 以上、IPとルーティングについてまとめました。次回はルーティングの概要についてまとめる予定です。



[技術講座(ルーティング技術―2)]               (2003/05/30作成)

 今回はルーティングの概要についてまとめました。

2.ルーティングの概要

2.1 デフォルトルート

 デフォルトルートとは、ルータに来たパケットの宛先アドレスルーテイングテーブルに登録さていなかった場合に、そのパケットをどこに送ればよいかを指定するものです。ルーテイングテーブルに載っているアドレス以外はすべてデフォルトルートに転送するように指定されます。言い換えると、デフォルトルートとはルーテイングテーブルを検索する際に、必ず最後にマッチする経路であるということになります。

 デフォルトルートは、ルーテイングテーブルで通常「0.0.0.0/0」として表現し、設定するルータより1ホップISP側にあるルータをネクストホップに設定することが多いです。

2.2 スタティックルーテイングとダイナミックルーテイング

(1)スタティックルーテイング

 スタティックルーテイングとは、人間が直接手でルータにデータを入力し、ルーテイング情報を固定で設定する方法です。ネットワーク管理者がネットワーク構成を把握した上で、手作業でルーテイングテーブルを設定します。実際の設定では、ルータにコンソールをつなげて設定、telnet経由で遠隔設定、Webブラウザを使って設定など、方法は様々です。

 多くのネットワークに対しては設定が大変ですが、デフォルトルートを効果的に使用できるときは少ない設定ですみます。実際のパケットはルーティングテーブル設定後、そのテーブルに従って転送されます。

(2)ダイナミックルーティング

 ダイナミックルーティングとは、ルータ同士が話し合ってネットワークなどの情報(経路情報)をやりとりし、自動的にルータでルーティングテーブルを作成する方法です。ルータ間で行われるやりとりの方法を規定しているものを、ルーティングプロトコルと言います。ルーティングプロトコルにはOSPF、RIP、BGPなどがあります。

 図11にOSPFを話すルータによるダイナミックルーティングの例を示します。



     図11 ダイナミックルーティング

@ ルータFは自分のところに198.168.10.0/24があると把握しており、その経路情報をネットワークに伝えようとします。

A その経路情報がルータFからダイナミックルーティングプロトコルを通じて隣のルータDに伝わります。

B ルータDではその経路情報を受けて、宛先が192.168.10.0/24のパケットはルータFの方に転送するように自分のルーティングテーブルに書き加えます。

C さらに、ルータDは192.168.10.0/24に関する経路情報をルータCやルータEに伝えます。

D ルータCやEでは、それを受けて宛先が192.168.10.0/24のパケットはルータDに転送すればよいと分かり、そのように自分のルーティングテーブルに書き加えます。

E ルータCはさらにルータAにその経路情報を伝え、ルータAではそれを受けて自分のルーティングテーブルに同様に書き加えます。

 実際には192.168.10.0/24以外にもネットワークはたくさん存在する場合がほとんどで、その場合、各ネットワークに対して上記と同様に動作します。図11のようなネットワークを構築した最初の時に、ダイナミクルーティングプロトコルによってルーティングテーブルが作成され、その後パケットはルーティングテーブルに従って転送されます。ダイナミックルーティングのポイントは、経路情報と実際のデータパケットの向きが逆になることです。

(3)スタチックルーティングとダイナミックルーティングの比較

 (a) スタチクルーティングの短所

 第一に、大規模なネットワークの場合に設定管理が困難なことが挙げられます。デフォルトルートやネットワークのアドレス集約が有効に活用できない場合、すべてのルータですべてのネットワークに向けて手作業で設定することになります。また、初期設定だけでなく、ネットワーク構成を変更する場合も大変になります。

 第二の短所として、動的に経路を変更することが不可能であることが挙げられます。例えば中継ルータ間で回線切断などの障害が起こっても、発信元ルータはではそれを認識しないので、バックアップ経路に切り替わることができません。従って、パケットは目的地にたどり着けません。

 (b) ダイナミックルーティングの短所

 第一に、ルータでダイナミックルーティングを動かすためルータに負荷がかかります。大規模で複雑なネットワークの場合問題になることがあります。

 第二に、ルータ間で経路情報のやりとりをするため、ダイナミックルーティング自体のトラフィックが発生することです。

 例えば、ダイヤルアップルータでトラフィックが発生したときだけISDN回線や電話回線をつなげるような設定(よくある設定)の場合、ユーザが回線を使用していないときもダイナミックルーティング自体のトラフィックが発生して回線がつながり、電話料金を多く取られてしまいます。

 表3にスタティックルーティングとダイナミックルーティングの比較をまとめて示します。


     表3スタティックルーティングとダイナミックルーティングの比較

 
長所
短所
スタティックルーティング ・ルータに負荷がかからない
・ルーティングプロトコル自体のトラフィックが生じない
・設定管理が困難
・動的経路変更が不可能
ダイナミックルーティング
(RIP、OSPF、BGP等)
・設定が容易
・動的経路変更が可能
・ルータに負荷がかかる
・ルーティングプロトコル自体のトラフィックが発生する

2.3 ルーティングプロトコルの種類

(1)ASとは

 「AS」とはインターネットの構成単位であり、各ASはそれぞれの運用ポリシーを持っています。一般的に、ASの多くはISPであり、学術系ネットワークがASであることもあります。AS同士が各種の形態で接続されてインターネットが形成されています。

 ASは「Autonomous System」の略で、「自律システム」と訳すことができます。なお、ISPや学術系ネットワーク以外の組織でも、条件を満たせばASになることはできます。

 (a) AS番号
 各ASは、AS番号という世界で一意な番号を持ちます。AS番号1〜65535の範囲で表されます。このうちAS番号1〜64511はグローバルAS番号で、グローバルIPアドレスと同様にインターネットレジストリによって管理され、一意に割り当てられます。

 一方、AS番号64512〜65535はプライベートAS番号のために確保されています。プライベートAS番号は、IPアドレスにおけるプライベートIPアドレスと同様のもので、これらの番号は、個別のAS内部で自由に使用することができます。しかし、AS外にその情報を流してはいけません。

 (b) IGPとEGP
 ダイナミックルーティングのプロトコルは、大きく分けてIGP(Interior Gateway Protocol)とEGP(Exterior Gateway Protocol)に分類されます。IGPはAS内部で、EGPはAS間で使用されます。

 (c) IGP
 IGPはAS内部で使用されるルーティングプロトコルで、OSPF(Open Shortest Path First)、RIP(Routing Information Protocol)などの一般的なものや、OSIスタックのIS-IS(Intermediate System-to-Intermediate System)、Cisco社独自のIGRP(Interior Gateway Routing Protocol)などがあります。

 (d) EGP
 EGPはAS間で使用されるルーティングプロトコルで、現在使用されているものにBGP(Boarder Gateway Protocol)があります。

 図12にこれらのルーティングプロトコルをまとめて示します。



   図12 EGPとIGPの各種プロトコル

 (e) アルゴリズム
 これらのルーテイングプロトコルを、使用するアルゴリズムで分類すると図13のようになります。



  図13 ルーティングプロトコルの各アルゴリズム


[出典]
 (1) 友近剛史他2:インターネットルーティング入門,翔泳社(2002-1)

 以上、ルーティングの概要についてまとめました。次回はルーテイングプロトコルの1つであるOSPFについてまとめる予定です。



[技術講座(ルーティング技術―3)]                (2003/06/04作成)

 今回はルーテイングプロトコルの1つであるOSPFの概要についてまとめました。

3.OSPF

3.1 OSPFの概要

(1)OSPFの概要と特徴

 OSPFはAS内部で使用されるIGPの1つで、RIPと同様に多くの場所で使われているルーティングプロトコルです。現在、一般的に使用されているのはOSPF Version2で、RFC2328で標準化されています。

 RIPに比べると、OSPFより歴史が長いことや、サポートするルータやホストが多いなどの理由により、エンドユーザではRIPが使われていることが多いようです。しかし、最近ではOSPFのメリットが注目され、大規模ネットワークを初めとする多くの場所でOSPFが使われています。

 OSPFは「Open Shortest Path First」の略で、Shortest Path First(SPF)アルゴリズムに由来する名前です。OSPFの特徴としては次のものが挙げられます。

 ・リンクステートアルゴリズムを採用し、素早い収束性を実現
 ・コストに基づいたルーティング
 ・VLSMのサポート
 ・エリアの使用による高いスケーラビリティの実現
 ・イコールコストマルチパスのサポート
 ・DRとBDRの概念
 ・マルチキャストの使用
 ・認証のサポート

(2) リンクステートルーティングプロトコル

 OSPFはリンクステートアルゴリズムを使用したルーティングプロトコルです。ルータはリンクステートと呼ばれるメッセージを出します。図14に示すように、リンクステートにはルータが接続しているリンク(ルータに直接接続されたメディア)の状態や、そのリンクのネットワークアドレスコストなどの情報が入っています。



   図14 リンクステートアルゴリズム

 このようにリンクステートには、あるルータどのリンクにどのように接続しているか、と言う情報が書かれています。リンクステートを受け取ったルータでは、その情報に基づいてネットワーク構成を把握します。そして、ネットワーク構成を表す表を構築します。

 いわば、各ルータ全ルータとリンクの構成を把握した地図を持っているようになります。このネットワークを表す表を「リンクステートデータベース(トポロジカルデータベース)」と言います。

 各ルータは、このデータベースからShortest Path Firstアルゴリズムを用いて、自身をroot(始点)とした最短パスツリーを作成します。そして最後に、最短パスツリーからルーティングテーブルを作成します。

 リンクステートアルゴリズムの大きなメリットとして、各ルータがネットワーク構成を把握していることにより、ネットワーク構成が変化した際に、素早くルーティングテーブルを再構築することができます(素早い収束性)。このことは、大きなネットワークで安定して運用できることにつながり、OSPFはスケーラビリティ(規模対応性)に優れていると言えます。

(3)OSPFによるダイナミックルーティング

 [メトリック]
 メトリックとは、宛先ネットワークとの距離を表すパラメータ(計測単位)を示す一般用語です。同じネットワーク(同じプレフィックス)の経路情報が複数方向から来た場合、つまりそのネットワークにたどり着くのに複数の経路がある場合、ルータはメトリックが小さい経路の方が近いと判断し、そちらの方にパケットを転送します。OSPFではコストという値をメトリックとして用います。

 [コスト]
 コストは、ネットワーク管理者が各ルータのインタフェースで設定します。そして、リンクステートがルータのインタフェースを通過するときに足されていきます。

 図15に例を示します。管理者は、ルータDとルータEの右側のインタフェースでのコストを「10」とし、ルータBの右側のインタフェースでのコストを「5」、ルータCの右側のインタフェースでのコストを「20」、ルータAの右側のインタフェースでのコストを「10」としました。



         図15 OSPFにおけるコスト

 この場合、192.168.2.0/24のネットワークの情報が含まれるリンクステートは、ルータD→ルータB→ルータAと、ルータE→ルータC→ルータAと言う方向で流れてきます。前者はコストが10+5+10=25、後者はコストが10+20+10=40となっています。従って、ルータAはコストの小さい前者を選択し、ルーティングテーブルに載せます。その結果、ルータAに192.168.2.0/24宛のIPパケットが来た際には、ルータAはルータBに転送します。

 [バックアップ経路]
 図15の例で、上のリンクが切れた場合下の経路を選択することになります。従って、2本の経路がある場合には、コストの低い方がメイン経路、コストの高い方がバックアップ経路となります。

 [イコールコストマルチパス]
 OSPFはイコールコストマルチパスをサポートします。「イコールコストマルチパス」とは、その名の通りコストが同じ場合、複数の経路を選択することです。等コストの経路がn本ある時は、データトラフィックを各経路に1/nずつ転送します。このようにトラフィックを分散させることを、ロードバランスまたはロードシェアリングと言います。また、ロードバランス時も、経路の1本に切断などの障害が起こったら、その経路がルーティングテーブルから消え、トラフィックは残りの経路の方に行きます。

 [ロンゲストマッチ]
 すべてのルーティングプロトコルで、ルータにIPパケットが来た際に宛先アドレスを調べて、マッチするネットワークアドレスが複数ある場合には、通常プレフィックス長が長い方のネットワークアドレスを選択し、転送されます。これを「ロンゲストマッチ(longest match:最長一致)の規則)と言います。

 なお、前述のメトリックやコストは、プレフィックス長を含めて同じネットワーク、つまり全く同じプレフィックスが複数ある時に、どれをルーティングテーブルに載せるかを比較するものです。ここで述べているのは、ネットワークのアドレス部分は同じですがプレフィックス長が違うときのことで、違うプレフィックスですからコストで比較することなく両方ともルーティングテーブルに載るわけです。

(4)エリア

 OSPFを適用したネットワーク上のすべてのルータは、各ルータが発信したリンクステートをもとに作成したリンクステートデータベースを持ちます。そのため、ネットワークが大規模になればデータベースのサイズが膨大になり、ネットワーク上を飛び交うリンクステートの数も増えます。そこでOSPFには図16に示すように、ネットワークをエリアと呼ぶ論理的な単位に細分化して運用管理できる仕組みが備わっています。



   図16 エリア

 各エリアのルータは、全部のネットワーク構成ではなく、自分の所属するエリア内だけのネットワーク構成が分かるリンクステートデータベースを持ちます。自分のエリア外のネットワークについてはネットワーク構成までは把握せず、自エリアのエリア境界ルータの内どのルータの向こう側にあるかのみを把握するようにします。

 以上の仕組みにより、リンクステートデータベースのサイズが小さくなり、ルーティングテーブル作成時の演算も少なくて済み、エリア内のリンクステートのトラフィック量も少なくできます。これによって、OSPFは高いスケーラビリティを実現しています。

 各エリアは32ビットのエリアIDで区別されます。IDの付け方はIPアドレス風(例:Area 0.0.0.1)、単なる数(例:Area 1)など様々です。

 [バックボーンエリア]
 エリア間はバックボーンエリアと呼ぶ特別なエリアを介して相互に接続します。従って、OSPFではバックボーンエリアに他のすべてのエリアがぶら下がるような二階層構造をとることになります。バックボーンエリアは「Area 0」または「Area 0.0.0.0」で表します。また、エリアが1つだけのネットワークは、すべてがバックボーンエリアになります。

 [エリア境界ルータ]
 複数のエリアに属するルータは、エリア境界ルータ(ABR:エリアボーダールータ)と言います。エリアは必ずバックボーンエリアと接続されるため、エリア境界ルータは必ずバックボーンエリアにも属すことになります。

 [スタブエリア]
 他のルーティングプロトコルで発生し、それをOSPFルーティング領域に再配信した経路をAS-external経路(または単にExternal経路)と言います。スタブエリア(stub area)とは、AS-external経路が流れないようにした特殊なエリアです。

 スタブエリアがない場合、AS-external経路はすべてのOSPFルーティング領域に流れます。時にはAS-external経路が膨大になり、リンクステートデータベースの多くがこれらの経路で占められることがあります。スタブエリアはこれを回避するためのものです。スタブエリア内のルータはAS-external経路情報を持たないため、その分リンクステートデータベースのサイズを小さくでき、ルータに必要なメモリも少なくて済みます。

 スタブエリアに属するエリア境界ルータは、スタブエリアの中に向けてデフォルトルートを広告します。これは、「デフォルトルートを自分(エリア境界ルータ)に向けろ」という経路情報を他のルータに伝えることです。それにより、スタブエリア内のルータはデフォルトルートであるエリア境界ルータに向けてパケットをフォワードします。

 デフォルトルートによってOSPFルーティング領域以外のネットワークへの到達性が確保されるわけです。従って、スタブエリアは出口が1つ(エリア境界ルータが1つ)であるエリア、またはパケットの宛先アドレス毎にエリアの出口を選択する必要のないエリアで使われます。また、スタブエリア内にはAS境界ルータが置けません

 [NSSA]
 [NSSA]とは「Not So Stubby Area」の略で、準スタブエリアとも呼ばれます。OSPF自体の規定であるRFC2328ではなく、RFC1587”The OSPF NSSA Option”で規定されています。NSSAはAS境界ルータを置けないスタブエリアの制限を回避する仕組みで、AS-external経路情報は必要ないがAS境界ルータを置きたい、というエリアに使われる特別なエリアです。

 [エリアの設計]
 中規模以下のネットワークでは特にエリアを分ける必要はありませんが、大規模で複雑なネットワークではエリアを分けることが必須になります。その区分は、ルータの台数、ネットワーク構成の複雑さ、ルータの処理能力、ネットワークの安定性など様々な要素が関係するので一概には言えません。

 日本全国各地のLAN同士がWANでつながっているような大規模なネットワークにおいては、まず中心部分のWAN部分をバックボーンエリアにし、LAN部分を他エリアにしてユニークなエリアIDを与えていくようにします。

 ISPなどの高い信頼性を必要とするネットワークであれば、リダンダンシー(冗長性)確保のため、あるエリアをバックボーンエリアにつなげる際に複数のエリア境界ルータを置くべきです。また、できるだけ1つのエリア境界ルータが所属するエリアは2つまでにし、エリア境界ルータにおいてエリア毎の経路が集約できるように設計するべきです。

 [バーチャルリンク]
 すべてのエリアはバックボーンエリアに接続している必要がありますが、物理的にエリアをバックボーンに接続することが困難な場合があります。この場合、バーチャルリンクを用いて論理的に接続させることが可能です。バーチャルリンクは、バックボーン以外の共通のエリアにインタフェースを持つ任意の2つのルータ間で設定可能です。バーチャルリンク自体はバックボーンエリアに属しており、バックボーンエリアを張り出すものと言えます。

(5)DR

 [AdjacencyとNeighbor]
 OSPFでは、リンクステートの交換は同じネットワークセグメントに所属したルータ同士で行いますが、すべてのルータ同士で行うわけではありません。リンクステートを交換するルータのペアの関係を「Adjacency(Adjacent関係:隣接関係)」と呼びます。一方、同じネットワークセグメントに所属したルータのペアの関係を「Neighbor」と呼びます。つまり、Neighborであるルータのペアは、必ずしもAdjacencyにはならないと言うことです。

 Neighborの関係であるルータ同士は、Helloプロトコルのやりとりを定期的に行います。HelloプロトコルによりNeighbor関係を確立し維持します。マルチアクセスネットワークではHelloプロトコルによりDRを選出し、これによりAdjacencyがどのルータ同士になるかが決まります。そして図17に示すように、Adjacency担ったルータ同士はリンクステートの交換を行います。



    図17 AdjacencyとNeighbor

 [DR]
 「DR」はDesignated Routerのことで指名ルータと呼ばれます。OSPFは、すべてのマルチアクセスネットワークにおいて必ず1つだけのDRを持ちます。DRは同一ネットワークの他の全ルータとAdjacencyとなり、リンクステートの交換を行います。DRでもBDRでもないルータ同士はAdjacencyとはなりません。これは、リンクステート自体のトラフィックを減らすためです。DRはいわば、ルータ間の情報交換の中心拠点の役割を果たします。

 Adjacentなルータはリンクステートの交換をし、それぞれのリンクステートについてどちらが新しい情報を知っているかを比較し、リンクステートデータベースを同期し、新しく知った情報はさらに他のルータへ知らせます。このことをflooding手続きと言います。

 DRは大事なルータであるため、ネットワーク管理者は信頼性のあるルータをDRにするべきです。ISP等の大規模なネットワークではDRはかなりな負荷がかかりますので、これを考慮に入れてDRを決めた上で、ネットワークを設計する必要があります。

 [BDR]
 マルチアクセスネットワークにおいてDRは1台しかありません。よって、DRがダウンした際には、新たなDRを選択してリンクステートの交換からflooding手続きを行うことが必要になってきます。しかし、これには多くの時間がかかり、長い時間の通信断絶となりかねません。

 そこで、DRの障害時に新たなDRへの移行をスムーズに行うために、各マルチアクセスネットワークには1つのBDR(Backup Designated Router:バックアップ指名ルータ)が存在します。BDRもDRと同様に同一ネットワークの他の全ルータとAdjacencyとなります。DRが故障しても同じ情報をBDRが持っているため、DRの移行を最小限の時間で達成することができます。

 BDRはDRと比較すると、flooding手続きにおいていくつかの役割をDRに任せることで、リンクステートのトラフィックを減らすようにしています。また、DRのもう1つの大きな役割であるネットワークLSAの生成はBDRでは行いません。

(6)その他の特徴

 [VLSMに対応]
 OSPFはVLSMに対応しています。従って、OSPFではネットワークの規模に見合うプレフィックス長を設定できるため。IPアドレスを無駄に使用することを避けられます。

 [リンクステートのアップデートのタイミング]
 リンクステートは、30分に一度の定期的なリフレッシュを除くと、ネットワーク構成が変更になったときだけリンクステートのアップデート(Link-state Updateパケット)が送信されます。これによって、OSPFのルーティングプロトコル自体で発生するトラフィックと、ルータで行う処理を軽減しています。

 [プロトコル]
 RIPはUDP上、BGPはTCP上で動作しますが、OSPFはそれらと異なり、IPを直接使用します。IPプロトコル番号は「89」を使用します。

 [マルチキャスト]
 OSPFのメッセージは、ルータ間でIPマルチキャストを使用することができます。例えば、イーサネットなどのブロードキャストネットワークでのHelloパケットは、マルチキャストでAIISPFRoutersというマルチキャストアドレス(224.0.0.5)に送信されます。OSPFを話しているルータは、このアドレスのパケットを受け取らなければなりません。

 また、DRとBDRは、Link-state UpdateパケットとLink-state Acknowledgmentパケットを、やはりマルチキャストアドレスAIISPFRoutersに送信します。逆に、DR、BDR以外の全ルータはLink-state UpdateパケットとLink-state AcknowledgmentパケットをマルチキャストアドレスAIIDRouters(224.0.0.6)に送信します。DRとBDRはこのアドレスのパケットを受け取らなければなりません。

 [TOSに基づいた経路制御]
 1994年3月のRFC1583では、OSPFでIPパケットの各TOS(Type of Service)について独立した経路を計算することを規定していました。しかし、ほとんど使用されなかったこともあり、1997年7月のRFC2178ではTOSルーティングのオプションは削除されました。ただ、以前との互換性を保つために、OSPFのパケットフォーマットにはTOSを考慮するフィールドが残されています。これは現在のRFC2328でも同様です。

 [認証]
 OSPFは、ルータ間でOSPFルーティングプロトコルの情報交換について、認証を行わせることができます。認証には多様な機構を使用することができます。実際、各ネットワークセグメントについて違った認証機構を設定することが可能です。


[出典]
 (1) 友近剛史他2:インターネットルーティング入門,翔泳社(2002-1)

 以上、ルーテイングプロトコルの1つであるOSPFの概要についてまとめました。次回はOSPFのルーティングテーブル作成の過程についてまとめる予定です。



[技術講座(ルーティング技術―4)]                  (2003/06/30作成)

 今回はOSPFのルーティングテーブル作成の過程についてまとめました。

3.2 ルーティングテーブル作成の過程

(1)リンクステートデータベースの作成

 (a) リンクステートデータベース

 リンクステートデータベースとは、ネットワークの情報を図18に示すような表の形にまとめたものです。この表は、ルータとルータ、あるいはルータとネットワークの間を辺で結んでその関係を表すグラフ構造を持っています。



     図18 リンクステートデータベース

 (b) ネットワークのタイプや接続ルータ数による表現の仕方

 リンクステートデータベースは、ネットワークのタイプ(P-P、ブロードキャスト、マルチアクセス等)やネットワークに接続するルータの数によって異なる表現方法があります。

 図19はトランジットネットワークの例です。「トランジットネットワーク」とは、マルチアクセスネットワークで2台以上のルータが接続されている状態のことで、リンクステートデータベースのグラフは双方向になります。従って、ルータからネットワークの向きでも、ネットワークからルータへの向きでも辺で結ばれます。



   図19 トランジットネットワーク

 図20はスタブネットワークの例です。「スタブネットワーク」とは、ルータが1台しか接続されていないネットワークのことで、リンクステートデータベースのグラフはルータからネットワークへ向けての片方向になります。



   図20 スタブネットワーク

 図21はPoint-to-Point(P-P)ネットワークで2つのルータが物理的に結ばれている例です。リンクステートデータベースのグラフは、2つのルータが双方向の辺で結ばれる形になります。これはunnumbered(インタフェースに専用のIPアドレスを割り当てる必要がないリンク)に対応しやすいようにするためです。インタフェースにIPアドレスが割り当てられた場合は、それをスタブリンクとみなし、ルータから対向するルータのインタフェースに向けて、片方向の辺で結ばれる形になります。



   図21 Point-to-Pointネットワーク

 (c) リンクステートデータベースの例

 図22に1つのエリアのネットワーク構成図リンクステートデータベースの例を示します。この図は次のような状態を表しています。

 ・ルータ間の線はP-Pネットワークを表します。
 ・RT5とRT7はAS境界ルータであり、BGPのコネクションをOSPF外に持ちます。
 ・「H」はホストを表しています。従ってH1につながるRT12はホストルート(/32の経路)を流しています。
 ・P-Pネットワークの内インタフェースにアドレスを割り当てたのはRT6とRT10だけです。



   図22 1つのエリアにおけるリンクステートデータベースの例

 

 (d) コストの値

 実際のリンクステートデータベースでは、行と列で交差する部分に「X」ではなくコストの値を入れます。前述のように、コストはリンクステートがルータに入ってくるところで効きます。リンクステートとデータトラフィックの向きは逆であり、データトラフィックの観点から見ると、コストはルータインタフェースからデータトラフィックが出るところで効くことになります。

 また、リンクステートデータベースのグラフの向きはデータトラフィックの向きと同じです。従って、コストはデータベース表の「FROM」欄に表記された各ルータの列に、そのインタフェースのコスト値を入れます。また、ネットワークからルータへ向けてはコスト「0」となります。

 (e) LSA
 LSAとは5種類のOSPFパケットの内、Type4にあたるLink-state Updateパケットに含まれるLink-State Advertisement(リンクステート広告)を指します。LSAはルータやネットワークの状態を記述したデータです。表4に示すように、LSAには5種類のTypeがあります。


          表4 LSAの種類

LS Type
名   前
情     報
1 Router-LSA ルータにどのようなリンクが接続されているか
2 Network-LSA ネットワークにどのようなリンクが接続されているか
3 Summary-LSA(IP network) エリア外のネットワーク情報
4 Summary-LSA(ASBR) エリア外のネットワーク情報
5 AS-external-LSA 他のルーティング領域のネットワーク情報

 (f) LSAからリンクステートデータベースが作成される様子

 図23にLSAからリンクステートデータベースが作成される様子を示します。図の右下にLS Type1であるRouter-LSAからリンクステートデータベースの一部を作成した例を示します。Router-LSAはルータに接続されているネットワークの情報を伝えます。RT12からのRouter-LSAによって、RT12がN9、N10、H1に接続されていることと、それらに接続しているインタフェースのコストが分かります。その情報からリンクステートデータベースの一部が作成されます。



 図23 LSAからリンクステートデータベースが作成される様子

 また、図の右上にLS Type2であるNetwork-LSAからリンクステートデータベースの一部を作成した例を示します。Network-LSAはそのネットワークに接続しているすべてのルータの情報を伝えるので、N9がRT9、RT11、RT12に接続されていることが分かります。従ってリンクステートデータベースの一部が作成されます。

 このようにLSAを集めていくと、リンクステートデータベースになるわけです。

(2)リンクステートデータベースからのルーティングテーブルの作成

 (a) 自身をrootとした最短パスツリーの作成

 リンクステートデータベースが作成されると、そこからルータは自身をrootとした最短パスツリー(Shortest Path Tree)を作成します。そのときに使用されるアルゴリズムがSPFアルゴリズム(Dijkstraアルゴリズム)です。

 図24にリンクステートデータベースから作成される最短パスツリーを示します。ここではRT6が作る最短パスツリーの例を示しており、RT6がrootになっています。SPFアルゴリズムは「すべてのノードの中でコストが最小のノードを確定し、そのノードから次のノードを加えていく」ことを繰り返すだけで非常に単純です。



図24 リンクステートデータベースから作成される最短パスツリー

 [1回目のステップ]
 RT6自身がrootになるので始点にRT6を置きます。そして、リンクステートデータベースからRT6の次のノードを選びます。FROM欄がRT6の列を見ると、RT3、RT5、RT10、Ibが存在します。従って、それらをコストとともに最短パスツリーに書き加えます。この時点で確定しているのはRT6自体だけです。そして、SPFアルゴリズムの1回目の選択が始まります。

 「すべてのノードの中でコストが最小のノードを確定する」とは、最短パスツリーのリーフにあるノードの中でコストが最小であるものを確定していくということです。この段階ではコストの最小は「6」なので、コストが「6」であるRT3とRT5を確定します。

 [2回目のステップ]
 先ほど確定したRT3とRT5の次のノードを探します。FROMがRT3の列を見ると、RT6、N3、N4が存在します。ただし、RT6はすでに確定しているため対象外と考えます。従って、N3とN4を次のノードと考えてコストとともに最短パスツリーに書き加えます。

 ネットワークからルータへのコストは「0」なので、ネットワークの場合、次のノードも一緒に考えることにします。そこで、リンクステートデータベースからFROMがN3とN4の列があるかどうか探します。すると、FROMがN3の列が存在し、そこにはRT1、RT2、RT3、RT4が存在すると分かります。ただし、RT3はすでに確定しているため対象外と考えます。

 従って、RT1、RT2、RT4を次のノードと考えて、最短パスツリーに書き加えます。N4についてはFROMに存在しないのでそこでツリーは終わります。これはN4がスタブネットワークであることを意味します。

 一方、FROMがRT5の列を見ると、RT4、RT6、RT7、N12、N13、N14の6つが存在すると分かります。ただし、RT6はすでに確定しているため対象外と考えます。従って、RT4、RT7、N12、N13、N14の5つをコストとともに最短パスツリーに書き加えます。さらに、ネットワークについて次のノードを探しますが、ここではN12、N13、N14の3つともFROMにないので、その先のノードはないことが分かります。

 次に、SPFアルゴリズムの2回目の選択が始まります。1回目の最小コスト「6」を超える最小のコストのリーフを探します。ここでは、コスト「7」が最小で、対象はN3、RT1、RT2、RT4、RT10、Ibとなります。従ってこれらを確定します。

 さらに、確定したノードと同じノードが他の場所にあれば他の場所のものを消去します。ここでは、RT4がすでに確定した場所(N3の左側)以外に存在する(左上側:RT5の次)ので、そのRT4を消去します。

 [3回目のステップ]
 先ほど確定したN3、RT1、RT2、RT4、RT10、Ibの次のノードを探します。N3は2回目のステップで次のノードを探し終えていますし、Ibはインタフェースなので、対象はRT1、RT2、RT4、RT10の4つになります。

 FROMがRT1の列を見ると、N1とN3が存在します。ただし、N3はすでに確定しているため対象外と考えます。よって、N1をコストとともに最短パスツリーに書き加えます。また、N1がFROMにないので、N1の先は無いことが分かります。FROMがRT2の列も同様にして、N2をコストとともに最短パスツリーに書き加えます。

 FROMがRT4の列を見ると、RT5とN3が存在します。ただし、RT5もN3もすでに確定しているため対象外と考えます。従って、RT4の先はないことが分かります。

 図24を見ると、実際にはRT4はリング状のネットワーク構成の中にあります。しかし、2回目のステップにおいて、RT6から見て時計回り(RT3→N3経由)の経路の方を選択し、反時計回りの経路(RT5経由)は消去したため、RT5とRT4の間のリンクが消去した形となり、時計回りでRT3→N3→RT4の先は無いことになっているわけです。このようなことが次々に起こり、実際は複雑なトポロジーの網でも最終的にツリーで表現することができるわけです。

 続いて、FROMがRT10の列を見るとRT6、N6、N8、Iaが存在します。ただし、RT6はすでに確定しているため対象外と考えます。従って、N6、N8、Iaをコストとともに最短パスツリーに書き加えます。さらに、N6とN8についてはFROMにあるので、同様にリンクステートデータベースを見て、N6の先にはRT7とRT8、N8の先にはRT11を最短パスツリーに書き加えます。

 次にSPFアルゴリズムの3回目の選択が始まります。2回目の最小コスト「7」を超える最小コストのリーフを探します。ここでは、コスト「8」が最小で対象はN6、RT7、RT8となります。従って、これらを確定します。

 さらに、確定したノードと同じものが他にあれば消去します。ここでは、RT7がすでに確定していた場所(N6の右側)以外に存在します(左上側)ので、そこのRT7を消去します。これで3回目の作業は終了します。

 以上のような動作を繰り返すことによって、SPFアルゴリズムは、リンクステートデータベースから最短パスツリーを構築するわけです。

 (b) 最短パスツリーからルーティングテーブルの作成

 最短パスツリーからルーティングテーブルを作成することは非常に簡単です。自分のルータから対象となるネットワークまでの最短パスツリーにおける次のルータを示せばいいだけです。図25にRT6において、最短パスツリーからルーティングテーブルが作成される様子を示します。



図25 最短パスツリーからルーティングテーブルが作成される様子


[出典]
 (1) 友近剛史他2:インターネットルーティング入門,翔泳社(2002-1)

 以上、OSPFのルーティングテーブル作成の過程についてまとめました。次回はルーティングプロトコルの1つであるRIPについてまとめる予定です。



[技術講座(ルーティング技術―5)]                  (2003/06/16作成)

 今回はルーティングプロトコルの1つであるRIPについてまとめました。

4 RIP

4.1 RIPの歴史と概要

(1)RIPの概要

 RIP(Routing Information Protocol)の原理は、インターネットの元祖であるARPANET時代から使われてきました。RIPはいわば最初の世代のルーティングプロトコルです。そんなに古いプロトコルがまだ使われているのは、RIPが簡素なプロトコルであるため使うのも実装するのも容易だからです。ホスト数が数十の大きさのネットワークであれば、RIPは良い選択肢となり得るでしょう。

(2)RIPの歴史

 RIPは他のプロトコルと異なり、特に標準という規定がないまま実装されてきました。それぞれの実装は色々な点で細かい動作が異なります。1988年にRFC1058が規定されることにより、ようやく文書での標準といえる仕様が確定しました。このRFCは、4.3BSD UNIXで配布されデファクトスタンダードになったroutedというRIPの実装をベースに記述されています。

4.2 RIPの原理

(1)ディスタンスベクター型アルゴリズムの動作例

 (a) ディスタンスベクター型アルゴリズムの概要

 RIPは目的地までのホップ数(経由するルータの数)を距離と考え、目的のネットワークまで最もホップ数の少ない経路でパケットが配送されるように各ルータのルーティングテーブルを作る、ディスタンスベクター型のルーティングプロトコルです。図26にRIPによるルーティング例を示します。



   図26 ホップ数が最小になるルーティング

 (b) ディスタンスベクター型アルゴリズムの動作イメージ

 貴方がある国の秘密工作員だとしましょう。現在数十名の仲間と秘密作戦を展開しています。しかし、秘密工作員は捕らえられた時に仲間の情報を漏らすことがないよう、仲間についてほとんど知らされていません。仲間同士連絡を取り合う必要がある場合には、あなたが直接コンタクトを取ることのできる数人の仲間の誰かに、手紙を託すしかありません。

 あなたは仲間Zに伝えなければならないことがあり、Zに手紙を書きました。図27に示すように、あなたには手紙を渡すことのできる仲間が3人います。この仲間をA、B、Cとしましょう。あなたはA、B、Cの3人の誰かを選んで、Zへの手紙の転送を依頼します。手紙が確実に転送されるよう、仲間同士は次のような情報交換を行います。



       図27 仲間との情報交換

 あなたは、Aが誰に手紙を渡すことができるのかを、Aから聞きます。そうすると、Aは「DとEに直接渡すことができる」と言ってきました。同時に、あなたはAに対して、「BとCに直接渡すことができる」と伝えます。

 この情報交換により、Aは貴方経由でBとCに手紙を渡すことができることを知り、貴方はAを経由してDとEに手紙を渡すことができることを知りました。このAとの情報交換と同様に、BとCとも情報を交換します。

 しかし、情報交換はこれで終わりません。あなたがA、B、C3人に教えてもらった情報をすべて合わせて、「自分はBとCに直接渡すことができ、1人経由すればF、G、H、Iにもわたすことができる」と再度Aに教えます。これによって、Aは貴方経由でB、C、F、G、H、Iに手紙を届けることができるようになりました。

 同時に、Aも仲間DとEから聞いた情報を足して、あなたに「DとEに直接渡すことができ、1人経由すればZにも渡すことができる」と教えてきます。これで貴方もAを通してD、E、Zに手紙を渡してもらえることを知るのです。貴方は同様の情報交換をB、Cとも行います。

 すべての仲間はこの情報交換を定期的に繰り返します。そしてそれぞれ3人先、4人先と手紙を転送できる範囲を広げていき、最終的にどの仲間にも手紙を転送することができるようになるのです。

 さて、貴方は2巡目の情報交換で、Aに手紙を渡せばAがさらに誰かに渡して、その人が目的の仲間Zに直接渡してくれる、ということを知っています。そして3巡目の情報交換ではさらにBを経由してBの3人先にZがいることも知りました。貴方には仲間Zに手紙を渡すのに、Aに転送してもらう方法と、Bに転送してもらう方法の2つの選択肢があることになります。

 このとき、貴方はAとBのどちらに手紙を託すべきでしょうか。貴方が持っているZに関する情報は、「Aの2人先にいる」ということと、「Bの3人先にいる」ということの2つだけです。とすれば、少しでも早くZに手紙が届いたほうがいいので、仲間Zへの手紙はAに託すことにするでしょう。

 これが、ディスタンスベクター型アルゴリズムによる経路情報交換です。それぞれが手紙を渡すことができる仲間についての情報を交換し続けることで、すべての仲間がどの仲間にも手紙を転送することができるようになります。

 仲間同士の手紙の受け渡しが可能なルートがある場合は、このような情報交換によって確実に手紙を渡す方法を発見することができると数学的に証明されています。

(2)RIPの基本的な動作

 (a) RIPが繰り返す動作

 上記の工作員をルータに、手紙をIPパケットに置き換えれば、それがそのままRIPの基本的な動作となります。RIPによってルーティングテーブルを作ろうとするルータは、図28に示す手順を繰り返します。



     図28 RIPの基本動作

 ・各ルータは、いくつのルータを経由した先にどんなネットワークがあるかというルーティングテーブル上の情報を、直接接続されているルータに定期的に送信する。

 ・各ルータは、直接接続されたルータから教わったどのネットワークがいくつのルータを経由した先にあるかという情報を、自身のルーティングテーブルに付け加える。その際、そのネットワークへのネクストホップはその情報を教えてくれたルータにする。また、いくつのルータを経由した先にあるかという情報は、教わった情報に自分自身の分である「1」を足しておく

 (b) タイマーとレギュラーアップデート

 各ルータはRIPの情報送信用にタイマーを持っており、タイマーは「0」から始まって1秒に「1」ずつ 値が増えていきます。ルータはタイマーを見張っており、タイマーが「30」になると持っている情報を隣接するルータに対して送信し、タイマーをまた「0」に戻してこの処理を繰り返します。こうして、定期的に情報を送信するという動作をするわけです。

 このような定期的なルート情報の送信を、RIPではレギュラーアップデートと呼びます。通常時の情報更新というような意味で、30秒ごとにそのルータのすべてのルート情報を隣接するルータにブロードキャストします。

 (c) メトリック、コスト、ホップカウント

 「どのネットワークがいくつのルータを経由した先にあるか」という情報をメトリックと言います。あるネットワークに関する情報が、ルータからルータへメトリックが「1」ずつ 増えながら伝わっていくことで、そのネットワークはいくつのルータを経由した先にあるかという情報を、各ルータは得ることができるわけです。この情報は何ホップ先にあるかという意味で、ホップカウント(ホップ数)とも呼ばれます。

 さて、ここでメトリックを増やす単位を「1」でなくしたらどうなるでしょうか。あるルータが例えばメトリックを「5」増やして次のルータに伝えるとすると、情報を伝えられたルータは、そのルートがとても遠くにあると判断します。そしてルートの選択に影響を与えることになるのです。

 このようにメトリックを増やす単位をコストと言います。多くの場合RIPではコストは常に「1」で、実装によってコストを「1」以外にできない場合もあります。なお、RIPではメトリック数を「15」までに制限しています。メトリックが「16」以上のネットワークは、RIPでは到達できない無限に遠いネットワークと判断します。

 (d) メトリックによるルート選択

 RIPの基本動作が全ルータで繰り返し行われることで、各ルータはすべてのネットワークへのネクストホップメトリックを知ることになります。各ルータはこうして学習した経路情報の内、行き方が複数ある経路について、どの経路ルーティングテーブル上に採用するかを決めなければなりません。

 この場合、ルータは各経路のメトリックを比較します。そしてメトリックが小さい方を「より近く、好ましい」経路だと判断し、自身のルーティングテーブルに採用するのです。こうして、メトリック的に最小となる経路を各ネットワークに対して選択することができます。

 各ルータはこのように最適な経路を選択するので、ルータ(あるいはインタフェース)のコストを「1」よりも大きくすることで、そのルータ(あるいはインタフェース)を経由する経路のメトリックを意図的に大きくして、そこを経由する経路を選択されにくくすることができます。

 (e) ルート情報のタイムアウト

 ルータ間を結ぶ回線が切断された場合、何の対策もしなければルータはすでに作成したルーティングテーブルに従って、パケット転送を続けます。しかし、回線が切断されているルートではパケットが到達できません。

 このようなルートを捨て去り、新しいルートを選択し直すために。RIPでは前述のレギュラーアップデートを使用します。各ルータのルーティングテーブル上の各ルートには、個別にタイマーが付いており、1秒ごとにそれぞれ「1」ずつ 増加していきます。このルート毎のタイマーは、タイムアウトタイマーと呼ばれます。

 各ルータは、レギュラーアップデートなどでそのルートに関する情報を受け取ると、そのルートのタイムアウトタイマーを「0」にリセットします。従って、タイムアウトタイマーの値が小さいルートは、更新し続けられている有効なルートであり、この値が大きいルートは、情報更新されなくなった使用できないルートだと判断できるわけです。

 RIPでは、ルートの有効、無効の判断基準に180秒という時間を使用します。これは、30秒毎のレギュラーアップデートを6回連続受け取ることができなかった場合に相当します。タイムアウトタイマーが180秒より大きくなったルートは、ルーティングテーブルから取り除きます。

 そして同じ宛先に到達できる、次にメトリックが小さいルートがある場合は、それを新しいルートとしてルーティングテーブルに採用します。こうして、各ルータは回線断等で到達不能になったルートを取り除き、新しい有効なルートを選択し直すことができるわけです。

(3)ルート情報の取り下げ

 (a) ネットワーク構成の変化

 前述の動作だけではルータ間の断線、接続変更、ルータの損傷、増設などによるネットワーク構成の変化に対応して、素早く新しいルーティングテーブルを作成することはできません。例えば、目的ネットワークへのルートの途中に回線断があった場合、レギュラーアップデートによる更新は180秒経過後に行われるので、その間、断線部分と直接接続しているルータ以外のルータは、古い情報に基づく到達不能のルート(断線部分と直接接続しているルータ経由)でパケットを送り続けることになります。

 (b) ルート取り消し情報の送信

 RIPでは、断線部分に直接接続されているルータは、線が切れたのを知ると、目的ネットワークへのメトリックに「16」を入れたRIPアップデート情報を、直接接続されたルータ(断線していない側)に送ります。メトリック「16」はRIPの世界では無限に遠いということを意味します。

 このRIPパケットを受信した近隣のルータは、それを送信してきたルータ経由では目的地に到達できなくなったことを知ります。そして直ぐに、このルートを放棄します。

(4)スプリットホライズン

 (a) ループの発生

 通常、RIPルータはルートをくれたルータに対して、そのルートは自分経由で到達できるよ、と教え直します。しかし、これは構成が変化したときに問題を引き起こします。図29のようにルータが4台接続されている状況を考えます。



   図29 ループの形成

 ルータDが故障した場合、ルータCはルータDからのレギュラーアップデートを受け取れなくなったり、電気的に回線が切れていたりすることにより、Dへのルートを失ったことを知ります。ルータCはそれまでメトリック1で広告していたDへのルートに、改めてメトリック16を付けてBに広告します。これによりルータBは、ルータC経由でDに到達できないことを知ります。

 このようなやりとりに先立ち、ルータBはルータAに、Dへは自分を経由してメトリック3で到達できるよ、と教えています。そして、ルータAはその情報をくれたルータBに、Dへは自分を経由してメトリック4で到達できるよ、と教え返しています。この状況では、ルータBはより有利なルータC経由のルートを選択しています。

 しかし、このような状態でルータCからDへのメトリックが「16」であるという情報を受け取ると、ルータBはなんとルータAからのルートを採用し、DへのパケットをルータAに転送し始めてしまいます。しかし、このルートは、以前ルータBがルータAに教えたルートなので、ルータAはD宛のパケットをルータBに転送します。

 つまり、ルータAとルータBはDへのパケットをお互いに投げ合う、と言うことを繰り返し、ループが発生してしまうのです。このループは、教え合うルートのメトリックが増えていき、最終的に無限遠の「16」に達して解消されますが、そもそも生じさせる必要のない無駄なループです。

 (b) シンプルスプリットホライズン

 ループの発生を防ぐため、他のルータからもらった情報はその情報をくれた本人には流さない、というルールができました。このような動作をシンプルスプリットホライズンと言います。

 (c) ポイズンリバース付スプリットホライズン

 ポイズンリバース付スプリットホライズンでは、そのルートをくれた本人に、無限遠を指すメトリック16を入れて送り返すという動作をし、明示的にルートがないことを示します。ポイズンリバース付スプリットホライズンはシンプルスプリットホライズンよりも誤りを正す力が強くなります。しかし欠点もあります。

 (d) シンプルスプリットホライズンとポイズンリバース付スプリットホライズンの比較

 図30に示すように、イーサネットなどのブロードキャストメディアにRIPを話すルータが多数接続されており、各RIPルータが背後に多数のネットワークを抱えている状況を想定します。この場合、RIPパケットは次のようになります。



 図30 ポイズンリバースによる経路情報の増大

 シンプルスプリットホライゾンの場合、各RIPルータは自身が背後に持っているネットワークを、30秒に一度RIPアップデートとしてイーサネットにブロードキャストします。RIPルータが20台あり、各ルータが背後に10ネットワークずつ抱えているとすると、30秒間にイーサネットにブロードキャストされるエントリ数は、10×20=200エントリということになります。

 ポイズンリバース付スプリットホライズンの場合、各RIPルータは他の19台からもらったルートについてポイズンリバースします。すなわち、もらったすべてのルートにメトリック16を付けて、RIPアップデートで広告します。

 これにより、各ルータは自身の10ネットワークの情報と、他RIPルータから学習した10×19=190ルートが到達不能だという情報を、30秒に一度ブロードキャストしてしまいます。従って、30秒間にイーサネットにブロードキャストされるエントリ数は、(10+10×19)×20=4,000エントリにもなってしまいます。

 ここで例としてあげたネットワーク構成は、比較的ループの発生しにくいものです。従って、ポイズンリバース付スプリットホライズンを導入するメリットはあまりありません。ポイズンリバース付スプリットホライズンの必要性については、ネットワーク設計の段階でよく検討する必要があります。

(5)無限カウント問題とトリガードアップデート

 (a) 防ぐことのできないループ

 図31に示すネットワークにおいて、ルータB-E間の回線が切れたとします。この場合、次のようなことが起こります。



   図31 無限カウント問題

 @ ルータBは、AとDにEへのルートが無くなったことを通知します(Eへのルートはメトリック16だというパケットを送ります)。これにより、ルータAとDはBを通ってEに到達するルート情報を無効にします。

 A ルータCはAとDからEへの経路を学習しており、もともとルータD(またはルータA)をEへのネクストホップとして採用しています。また、このルートをAに教えています。ルータAはB経由のルートを失ったため、Cからのこのルート情報を新たに採用します。

 B ル−タAはこのルートをルータBにも教えます。
 C ルータBはこのルートを採用し、ルータDにも教えます。
 D ルータDも同様の動作を繰り返すため、こうしてルートの伝達がループします。

 E ルートを教えるときに、各ルータはルートのメトリックを増やすため、最終的にルートのメトリックは「16」に達し、ループが解消されます。この時点でようやくこのルートが謝ったものであったことが分かるのです・

 あり得ないルートなのですが、各ルータ間の定期的な情報交換は30秒に1回しかないため、メトリックが「16」に達してループが取り除かれるのに、30秒×15コストで7分以上もかかる場合もあり得るのです。

 このようにリング状になっているネットワークで、ルート情報がループしてしまうのは、RIPの採用しているディスタンスベクター型アルゴリズムの一般的な欠点と言えます。

 (b) トリガードアップデート

 上記の状況を打破するためには、残念ながらループの発生を防ぐという方法ではなく、できたループが無限コストに達するのを早めるという戦略がとられます。極めて単純ですが、各ルータは自身の経路情報に変化があったらレギュラーアップデートを待たずに、すぐに変化のあった情報を隣接ルータに送ります。この特別なアップデートをトリガーアップデートと呼んで、30秒おきのレギュラーアップデートと区別します。結局はメトリックが「16」に達するまで、無意味な情報を交換することは変わらないのですが、これでかなり収束時間を短くすることができるのです。

(6)ホールドダウンタイマー

 あるネットワークに対する同じルータからのルート情報のメトリックが増加していくのは、ループが発生してメトリックが徐々に増えている状況という可能性があります。Cisco社のルータでは、このような状況を検知したら、直ぐにそのルートを一時的に無効にするという動作を実装しています。

 具体的には、ルートのメトリックが、ネクストホップが変わらないまま「16」以外に増加すると、

 ・そのルートを一時的に無効にし、ホールドダウンタイマーというタイマーを「0」にセットして開始する。
 ・ホールドダウンタイマーの値を1秒に1ずつ増加させる。
 ・そのルートのメトリックが再び増加したら、ホールドダウンタイマーの値を「0」に戻し、1秒に1ずつの値の増加とルートの無効を継続する。
 ・メトリックがそれ以上増加せずホールドダウンタイマーの値が180秒に達したら、そのメトリックの増加は適切なものであったと判断して、ルートの無効を解除する。

 この動作により、トリガーアップデートによってルートがコスト16に達する以前に、ループを取除くことができるわけです。

4.3 RIPの限界とOSPFとの比較

(1)RIPの限界

 RIPはルート交換の仕組みから、比較的小規模なネットワークIGPとして使用されることを想定しています。このようなRIPの適用領域は、下記のプロトコル仕様上の制約からもたらされます。

 ・ループの解消は基本的にホップの無限カウントに頼っています。これは多くのホストで構成された複雑なネットワークの場合、頻繁なトリガーアップデートのブロードキャストなどで非常に多くの通信帯域を浪費します。また、無限カウントに頼ったルーティングテーブルの収束は、OSPFなどのリンクステート型プロトコルによる収束と比較して時間がかかりがちです。

 ・通常すべてのネットワークに対して等しく「1」のコストを使用します。しかし、RIPが適用されるような構内ネットワークにおいても、ギガビットイーサネットから低速なシリアル回線まで、極めて多様な回線が使用され、回線の帯域を考慮せずホップ数だけで最適なルートを決定することは困難です。

 ・最大15までのメトリックしかサポートしていないため、RIPによって作られるルーティングテーブルでは、15ホップ先のルータまでしか到達できません。

(2)OSPFとの比較

 (a) 長所

 ・多くのネットワーク機器で実装されている。
 ・処理の負担が小さい。

 (b) 短所

 ・ディスタンスベクター方式のため、ネットワーク変更の際収束に時間がかかる。
 ・ホップ数が「15」までしかなく、より小規模なネットワーク向きである。
 ・VLSM(Variable Length Subnet Mask)を処理できない。
 ・ルーティングテーブルのすべてのエントリをブロードキャストで流してしまうため、帯域を必要以上に消費する。
 ・基本的にネットワーク毎の重み付けができないため、回線の帯域に応じて適切な経路を選ぶことが難しい。
 ・エリア分けできないため、RIPネットワーク全体で同じ情報を使わざるを得ない。

 (c) 適用領域

 ・大規模ネットワークには、収束が速く階層構造を作ることのできるOSPFが適する。
 ・さほど大規模ではなく、デフォルトルートを効果的に使えるようなネットワークで、さらにVLSMが必要でない場合には、実装している機器が多いRIPが適する。

4.4 RIP Version 2

(1)RIP2による拡張

 (a) VLSM

 RIP2はRIP1と基本的に同じパケットフォーマットを使いながら、ルート毎にサブネットマスク情報を選ぶことでVLSMに対応できるようになりました。

 (b) 認証

 RIPアップデートパケットで認証を行うことが可能になりました。具体的には、アップデートパケットの1エントリ目に経路情報ではなく認証情報(パスワード)を格納することで、そのアップデートパケットの認証を行います。

 (c) ネクストホップの指定

 RIP1ではアップデートパケットの送信アドレスが自動的にネクストホップとして採用されましたが、RIP2ではルート毎にネクストホップを指定することもできるようになりました。これは、RIPを話さないゲートウェイをあるルートのネクストホップにしたい場合などに、他のRIPスピーカーが代理で広告する場合などに使用されます。

 (d) マルチキャストの使用

 RIPを話さないルータに無用な負荷を与えないため、RIPアップデートパケット送信にマルチキャストを使用することができるようになりました。


[出典]
 (1) 友近剛史他2:インターネットルーティング入門,翔泳社(2002-1)

 以上、RIPについてまとめました。次回はルーティングプロトコルの1つであるBGPについてまとめる予定です。



[技術講座(ルーティング技術―6)]                 (2003/07/20作成)

 今回はルーティングプロトコルの1つであるBGP についてまとめました。

4 BGP

4.1 BGP-4とは

(1)BGP-4の役割

 (a) BGP-4

 BGP(Border Gateway Protocol)は、EGP(Exterior Gateway)の1つで、AS(Autonomous System)間の標準的なルーティングプロトコルです。現在使われているバージョンは4であることからBGP-4と一般的に呼ばれ、RFC1771に記述されています。

 BGP-4はパスベクターアルゴリズムと呼ばれる考え方を採用し、AS間で経路情報のやりとりを行うために、172.16.0.0/16などとプレフィックスで表記されるIPアドレス(NLRI:Network Layer Reachability Information)とそれに付随したパス属性(Path Attribute)を、BGPの設定をした装置間で交換します。

 このNLRIパス属性を使うことにより、AS間の経路制御をそのASの持つポリシーに従って行うことができます。経路制御を行うことで、その経路情報を参照してルーティングされるトラフィックを制御することができます。

 なお、BGPを設定した装置をBGPスピーカーと呼びます。BGP-4は、CIDRにも対応しており、アドレスのクラスにとらわれない経路制御が可能です。

 (b) BGP-4とインターネット

 BGP-4で用いられるASは自律システム、つまり1つの運用ポリシーを持ったネットワークのかたまりです。一般的にISPが1つのASを構成しています。研究機関や学術系ネットワーク、その他の組織がASを持っていることもあります。

 インターネットは、各ISPがASという概念を持ち、BGP-4でお互いに接続され、全世界に渡るネットワークを構成しています。現在は、数千〜数万のASBGP-4を通じて接続され、流れる経路情報は10万経路以上に達しています。現在のインターネットはBGP-4で成り立っていると言っても過言ではありません。

 (c) BGP-4と経路制御

 一般に1つのASがインターネットへ接続する際に、信頼性を高めるために2つの接続点を持つことがよくあります。このとき、2つの回線に負荷を分散させてトラフィックを流すのか、または片方をメイン、もう片方をバックアップとして使うのかの選択が考えられます。どのISPと接続し、どのようにトラフィックを流すか、というのが最も簡単なポリシーと言えるでしょう。

 また、トラフィックには2つの方向があります。自ASから外のASに流れるトラフィック(上りトラフィック)と、外のASから自ASに流れてくるトラフィック(下りトラフィック)です。BGPでは、BGP特有のパス属性を使った経路制御技術によって、両方のトラフィックの流れを別々に制御することができます。図32にその様子を示します。



        図32 BGP-4と経路制御

 ただし、上りトラフィックは完全に自分の思い通りに制御できますが、下りトラフィックについては、接続先ASのポリシーとの兼ね合いになるので、必ず制御できるとは限りません。自分たちがメインで使いたい回線を、接続先のASはバックアップで使いたい、などとポリシーが相反する可能性があるからです。

 自ASの持つポリシーを接続先に伝えることはBGPを通じてできますが、接続先がそのポリシーを認めてくれる、または解釈してくれるかどうかは、接続先次第となります。これが、インターネットの世界でBGPを運用する上での難しいところです。

(2)BGP-4での経路情報交換

 BGPでは、経路情報を交換するためにTCP(ポート番号179)を使用します。一般的なIGPとは異なり、BGP-4では経路情報をより確実に伝えるため、情報を交換するルータ同士でTCPを用いた1対1のBGPセッション(以下、BGPピアと呼びます)を使用します。そして、図33に示すようにこのセッションを確立した上で、経路情報の交換を行うのです。



   図33 BGPピア

 (a) BGP-4の基本的動作

 図34にBGP-4の基本的な動作を示します。はじめにTCPを利用したピアを張ります。ピアが張れると隣接BGPスピカーから経路情報をもらいます。もらった経路情報は、BGPテーブルと一般に呼ばれるデータベースに格納されます。そしてパス属性の評価が行われた後、ベストパスと呼ばれる最適経路が各プレフィックスに1つ選ばれるのです。



   図34 BGPの基本的な動作の流れ

 選ばれたベストパスは、実際にフォワーディング処理に使われるためルーティングテーブルに載せられます。ベストパスの情報は、さらに別のピア先に対して広告されます。

 このとき一部のパス属性には変更が加えられます。パス属性の変更方法および別のピア先にアナウンスするか否かの判断は、その相手が同じASに属しているか、異なるASに属しているか等によって変わります。また、自分自身で経路を生成し、アナウンスを始める場合には、すべてのピア先に対してその経路情報をアナウンスします。

 注意が必要なのは、他のピアに対してアナウンスされる経路はベストパスとして選ばれた経路だということです。同じ経路情報を2つの異なるピアから受け取った場合も、どちらか一方だけがベストパスとして選択され、他のピアにアナウンスされます。

 経路情報のやりとりが終わった後は、変化があった時にいつでも経路情報のやりとりができるように、ピアを張った状態を維持します。

 このようにBGPでは、ピアを張って経路情報をもらい、ベストパス選択をしてルーティングテーブルを作り、さらにその情報を他のピアにアナウンスするという動作を、すべてのBGPスピーカが行います。

(3)BGP-4交換メッセージの種類

 BGP-4でやりとりされる情報には以下の4種類があります。
 − OPEN
 − UPDATE
 − NOTIFICATION
 − KEEPALIVE

 (a) OPENメッセージ
 ピアを張る際にやりとりされるメッセージで、AS番号などの情報が交換されます。

 (b) UPDATEメッセージ
 NLRIとパス属性をやりとりする際に使用されます。BGP-4では、ピアが確立した直後にはすべての経路情報を交換しますが、その後は変更分だけのやりとりをこのUPDATEメッセージで行います

 (c) NOTIFICATIONメッセージ
 エラーなどを検知した際に、相手にそのことを伝えるために使われます。

 (d) KEEPALIVEメッセージ
 ピアが正常に確立されているかを、定期的に確認するために使われます。

(4)BGPテーブルとルーティングテーブル

 BGPでは、OSPFのようなトポロジカルデータベースは持ちませんが、BGPテーブルと一般に呼ばれる、BGPで得た経路情報だけを格納するテーブルを持ちます。このBGPテーブルを基に、最終的にはルーティングテーブルを作成します。

 BGPテーブル上には、複数のBGPスピーカから同じ経路(NLRI)を得たため、全く同じ経路が複数存在することがあります。このときには、経路に付随したパス属性を基に、ベストパスだけが最終的にルーティングテーブルのエントリとして採用され、フォワーディング処理に使用されます。

 このベストパスを選ぶ動作はベストパス選択アルゴリズムと呼ばれ、ある規則に従った選択が行われます。

(5)Routing Information Bases(RIBs)

 BGPテーブルは、RFC上では「RIB(Routing Information Base)」と呼ばれ、BGPスピーカの内部では図35に示すように、UPDATEメッセージに含まれる情報を次の3つのテーブルに分けて扱います。

 − Adj-RIBs-In
 − Loc-RIB
 − Adj-RIBs-Out



     図35 BGPテーブルとルーティングテーブル

 (a) Adj-RIBs-In
 ピア先から受け取ったUPDATEメッセ時の内容、つまり、NLRIとそれに付随したパス属性等がそのまま蓄積されます。

 (b) Loc-RIB
 Adj-RIBs-Inの情報を取り出し、このBGPスピーカのポリシーを反映させた結果を蓄積したものです。ポリシーによっては、Adj-RIBs-Inの中のパス属性の内容を書き換えたり、不要な経路をフィルタリングして受け取らなかったりした結果がLoc-RIBの内容になります。Loc-RIBの内容は、最終的にルーティングテーブルに適用され、フォワーディングする際に使用されます。

 (c) Adj-RIBs-Out
 他のBGPスピーカにUPDATEをアナウンスする際に送られる情報が蓄積されます。ここにはベストパス選択された経路情報だけが載り、さらにどの経路情報を該当のBGPスピーカにアナウンスさせるかのポリシーを反映させることができます。

(6)パス属性

 BGP-4の特徴として、宛先アドレス情報(NLRI)に付随したパス属性が挙げられます。前述のように、パス属性はベストパス選択などBGP-4の動作を決める重要な役割を担います。パス属性の代表的なものには以下のものがあります。

 − ORIGIN属性
 − AS_PATH属性
 − NEXT_HOP属性
 − LOCAL_PREF属性
 − MULTI_EXIT_DISC(MED)属性

 特にAS_PATH属性、LOCAL_PREF属性、MED属性は、ISPの運用において経路情報にポリシーを反映させるためによく使用されます。

(7)eBGPとiBGP

 BGP-4には、異なるASに属するBGPスピーカ間のBGPピアであるeBGP(External BGP)と、同一AS内部のBGPスピーカ間のBGPピアであるiBGP(Internal BGP)の2種類のBGPセッションがあり、図36に示すようにそれぞれ異なった働きをします。



     図36 iBGPとeBGP

 (a) eBGP
 eBGPは、BGP-4の本来の目的であるAS外のBGPスピーカと経路情報のやりとりを行います。AS間を接続するときには、何らかの物理媒体を通して直接つなぎ、通常は隣接するBGPスピーカ間でピアを設定します。

 (b) iBGP
 eBGPで得た自分以外のASからの経路情報を、さらに自分のAS内の他のBGPスピーカに伝えるときに使われるのがiBGPです。例えば図36のように、他のASとつながるルータが複数ある場合や、AS内部でフォワーディング処理を行うためにBGPの経路情報が必要な場合などに使われます。

 eBGPでは、原則隣接するBGPスピーカ同士でピアを張りますが、iBGPでは、間に複数のルータが入るような離れたBGPスピーカ間でもピアを張ることができます。

 (c) iBGPの注意点
 離れた場所にいるBGPスピーカ同士がピアを張るためには、IP通信ができる必要があります。そのため、各BGPスピーカが持つIPアドレス情報がOSPFなどのIGPによって伝搬されなくてはなりません。

 iBGPで経路情報の交換ができるならOSPFはいらないのでは、と思われがちですが、iBGPのピアを張るための前提として、OSPFなどのIGPが設定されている必要があります。iBGPのピアノ相手は隣のルータでないことが多いため、IGPを設定していないとiBGPのピア先のアドレスがどこにあるか分からないからです。この場合、iBGPのピアが張れなくなります。

 また、iBGPは原則として、AS内のすべてのBGPスピーカとフルメッシュでピアを張っておく必要があります。iBGPでは、経路のループを防ぐため、あるiBGPピアを通してもらった経路情報を他のiBGPピアに送ることはしません。

 BGPスピーカの数が多くなると、このピアの数も膨大になりますが、これを解決する技術として後述のルートリフレクタが用いられます。

(8)BGPピアConfig設定例

 図37、図38にCisco社ルータでのBGPのピア設定の例を示します。



     図37 eBGPの設定例




     図38 iBGPの設定例

 最初にBGPプロセスを起動する設定は、

 router bgp 65001

となります。このルータはAS65001に所属するという意味になります。eBGPでピアを張る際には、

 neighbor X.X.X.X remote-as 65002

と設定します。X.X.X.Xはピア先のBGPスピーカが持つアドレスです。自分のAS番号とremote-asの番号が異なる場合はeBGPのピアとなります。

 iBGPでピアを張る際には、

 neighbor X.X.X.X remote-as 65001
 neighbor X.X.X.X update-source loopback0

と設定します。Remote-asのAS番号が自分のASと同じですからiBGPとなります。またupdate-sourceとは、BGPパケットを送出する際のソースアドレスを指定するもので、ここではループバックインタフェース(物理インタフェースに依存しない論理インタフェース)であるloopback0を設定しています。

4.2 BGP-4のパス属性

(1)パス属性とは

 UPDATEメッセージで送られるパス属性には、表5に示すように様々な種類が存在します。パス属性をうまく使うことで、インターネット経路制御においてそのASの持つポリシーを反映させたり、他のASに自分の持つポリシーを伝えたりすることができます。BGP-4において最も重要とも特徴的とも言える機能です。

          表5 パス属性タイプ一覧

タイプコード
パス属性の意味
属性タイプ
規定値or Subタイプ
規定値の意味
RFC
1
ORIGIN Well-known mandatory
0
IGP RFC1771
1
EGP RFC1771
2
IMCOMPLETE RFC1771
2
AS_PATH Well-known mandatory
1
AS_SET RFC1771
2
AS_SEQUENCE RFC1771
3
AS_CONFED_SEQUENCE RFC3065
4
AS_CONFED_SET RFC3065
3
NEXT_HOP Well-known mandatory
RFC1771
4
MUTI_EXIT_DISC Optional non-transitive
RFC1771
5
LOCAL_PREF Well-known discretionary
RFC1771
6
ATOMIC_AGGREGATE Well-known discretionary
RFC1771
7
AGGREGATER Optional transitive
RFC1771
8
COMMUNITY Optional transitive 0xFFFFFF01 NO_EXPORT RFC1997
0xFFFFFF02 NO_ADVERTISE RFC1997
0xFFFFFF03 NO_EXPORT_SUBCONFED RFC1997
9
ORIGINATOR Optional non-transitive
RFC2796
10
CLUSTER_LIST Optional non-transitive
RFC2796
14
MP_REACH_NLRI Optional non-transitive
RFC2858
15
MP_UNREACH_NLRI Optional non-transitive
RFC2858
16
EXTCOMMUNITY Optional transitive
Internet-draft

(2)パス属性の4つのカテゴリ

 表5に示したとおり、すべてのパス属性は以下の4つのカテゴリ(属性タイプ)のいずれかに分類されます。

 (a) Well-known mandatory、Well-known discretionary

 Well-known属性は、すべてのBGPスピーカがサポートしていなくてはなりません。Well-known属性には2種類あります。まずWell-known mandatoryは、すべてのUPDATEメッセージに含まれていなくてはならない属性です。例としては、ORIGIN属性AS_PATH属性が該当します。

 一方Well-known discretionaryは、UPDATEメッセージによって含まれる場合と含まれない場合があります。LOCAL_PREF属性などが例としてあげられます。なお、すべてのWell-known属性は、BGPスピーカから他のBGPスピーカへ伝えられて行かなくてはなりません。

 (b) Optional transitive、Optional non-transitive

 Well-known属性以外の属性はOptional属性になります。Optional属性は、すべてのBGPスピーカが必ずしもサポートしている必要のない属性です。Optional属性にも2種類あり、Optional transitiveは、これに該当する属性を受け取ったBGPスピーカが、この属性をサポートしておらず理解できなかったときでも、他のBGPスピーカに伝えられなくてはならないOptional属性です。AGGREGATOR属性やCOMMUNITY属性がこれに該当します。

 Optional non-transitiveは、自分がその属性をサポートしていなかったときに、他のBGPスピーカに伝える必要がないOptional属性です。MULTI_EXIT_DISC属性などがこれに該当します。

 このようなパス属性の扱いの違いは、UPDATEメッセージのPath Attributeフィールドに格納される、Attribute Flagsの値で区別されます。Well-known属性かOptional属性かの違いは、Attribute Flagsの内ビット0の値によって区別されます。Optional属性の場合のtransitiveかnon-transitiveかの違いは、ビット1で表します。

(3)AS_PATH属性

 AS_PATH属性は、ISPの運用に当たって最もよく参照される属性値の1つです。Well-known mandatory属性に該当し、AS内に閉じず、BGPで接続されているASのすべてのBGPスピーカに情報が伝わります。

 この属性は、該当するルーティング情報が通ってきたASを示すものです。図39にAS_PATH属性の情報が流れる様子を示します。eBGPのピアにおいて隣接のルータに経路を伝える際に、AS_PATHのリストに自分のAS番号を加えていきます。複数のASを経由して流れる経路は、途中通った分だけのAS番号がリストとして格納されます。



     図39 AS PATH属性

 AS_PATHは長ければ長いほど途中にたくさんのISPが存在しており、その経路が遠いところからきたことを示します。RFC上では特に規定されていませんが、多くのISPではBGPのパス選択において、基本的により近い方を優先するポリシーを採用しています。結果的にAS_PATHが短い方がベスト経路として選択されます。

 (a) AS_PATH属性の注意点

 一般にeBGPを通して受け取った経路のAS_PATH属性に自分自身のASが含まれている場合は、経路がループしていると判断し経路を受け取りません。通常グローバルASを使ってインターネットに接続している場合は、一意性が保証されているので問題ありませんが、複数のプライベートASを使って個別にネットワークを作るような場合には注意が必要です。

 (b) AS_PATH属性のフォーマット

 AS_PATH属性は、UPDATEメッセージ中のPath AttributeフィールドType Code = 2を使います。フォーマットは、
 <path segment type, path segment length, path segment value>
で構成されます。path segment typeフィールドは1オクテットの長さを持ち、定義されている値は表6に示すように4種類存在します。


 表6 path segment typeの値

セグメントタイプ
1
AS_SET
2
AS_SEQUENCE
3
AS_CONFED_SEQUENCE
4
AS_CONFED_SET

 AS_SETは、UPDATEメッセージが通ってきたAS番号が、通ってきた順番に関係なく格納されます。AS_SEQUENCEは、UPDATEメッセージが通ってきたASの番号が通ってきた順番に格納されます。

 AS_CONFED_SEQUENCEとAS_CONFED_SETは、大規模なISPにおいてBGPコンフェデレーションを用い、1つのAS内を複数のMember-ASという単位に分割した場合に使われるタイプです。

 Path segment lengthフィールドは、1オクテットの長さを持ち、path segment valueフィールドに含まれるASの数を示します。Path segment valueにはAS番号が1つまたは複数格納され、各々2オクテットの長さを持ちます。

 (c) AS_PATH属性のアナウンス規則

 BGPスピーカがiBGPに対して経路情報を送ろうとするときには、AS_PATH属性の内容は全く変更されません。eBGPに対して経路情報を送ろうとするときには、AS_PATH属性の内容が変更されます。これは、AS_PATH属性のタイプがAS_SETかAS_SEQUENCEかによって、変更のされ方が異なります。

 AS_PATH属性の最初のpath segment typeがAS_SEQUENCEの時には、自分のAS番号を順番の一番最後、つまり最も左よりの場所に追加します。最初のpath segment typeがAS_SETの時には、新しいpath segmentをAS_SEQUENCEとして追加します。このとき自分のAS番号を値として格納します。

 自分自身から経路が生成される場合には、その経路をiBGPに送る際はAS_PATH属性の値は空の状態で、eBGPに送る際は自分のAS番号だけをAS_PATH属性に格納して送ります。

(4)MULTI_EXIT_DISCRIMINATOR(MED)属性

 MED属性もAS_PATH属性と同じく、ISP運用の中でよく参照される属性値の1つです。Optional non transitive属性に該当し、この情報は1つのAS内で閉じます。Optional属性ですが、ある2つのAS間で複数の接続点がある場合の経路情報に一般的に使われており、ほとんどのBGPスピーカに実装されています。

 この属性は、メトリックと呼ばれる整数値で値が小さいほど優先であることを示します。MEDは通常、自分のASに向かってくる下りトラフィックの制御によく用いられます。2つのAS間に複数の回線が存在するとき、優先したい方の回線のMEDを小さく設定することにより、下りトラフィックを制御することができます。

(5)LOCAL_PREF属性

 「Local Preference」と言われるLOCAL PREF属性も、AS_PATH属性と同じくISP運用の中で最もよく参照される属性値の1つです。Well-known discretionary属性に該当し、情報は1つのAS内に閉じます。

 この属性は、整数値で表される経路の優先度で、値が大きいほど優先度が高いことを示します。また、同一AS内のすべてのBGPスピーカ間で交換されます。さもないと優先度の評価がルータによって異なり、ルーティングループが起こる可能性があります。

 LOCAL_PREF属性は、通常自分のASから出て行く上りトラフィックの制御によく使われます。2つのAS間に複数の経路が存在するとき、優先したい方の回線の属性値を大きくすることにより、上りトラフィックを制御することができます。

(6)NEXT_HOP属性

 NEXT_HOP属性は、その径路情報の出口となるボーダールータのアドレスを示します。Well-known mandatory属性に該当し、すべてのUPDATEメッセージがこの情報を持ちます。NEXT_HOP属性に格納されるアドレスには2種類あり、AS内の内部ピアから得たAS内のボーダールータのアドレスか、もしくはAS外のピアから得たAS外のボーダールータのアドレスです。

 いずれの場合もそのボーダールータのアドレス情報が、OSPFなどのIGPに流れていてルーティングテーブル上に存在しており、ネットワークとして到達性が無くてはなりません。

 このほかにも各種の属性がありますが、細部に入り過ぎるため省略します。

4.3 BGP-4 UPDATEメッセージの処理

(1)ベストパス選択アルゴリズム

 UPDATEメッセージを送信することによって、ベストパス選択された経路を他のBGPスピーカに対して伝えることができます。Decision Processと呼ばれるベストパス選択アルゴリズムは、複数のBGPピアから受け取った経路の中からベストパスを選択し、フォワーディングテーブルに反映させるとともに、他のBGPスピーカへアナウンスする経路を選び出す処理です。

 複数のピアから同じプレフィックスを受け取ったときに、そのパス属性を基にどちらかをベストパスとして選択します。この選択には、そのISPが持つポリシーが反映されます。RFC1771上では、下記の3つのフェーズが定義されています。

 (a) Phase 1:優先度計算

 BGPスピーカは経路を受け取ると、まず優先度の評価を行います。iBGPから経路を受け取ったときには、LOCAL_PREF属性の値を参照するか、または、あらかじめBGPスピーカに設定された優先度に従って優先度を計算します。

 eBGPから経路を受け取ったときには、あらかじめBGPスピーカに設定された優先度に従って優先度を計算します。その結果LOCAL_PREF属性の値が設定されます。

 (b) Phase 2:経路選択

 経路選択は、iBGPから受け取った経路、eBGPから受け取った経路、両方を含むすべてのAdj-RIBs-inの情報を集めて、最適経路を選択します。

 まず、はじめにNEXT_HOP属性の評価が行われます。NEXT_HOP属性に格納されているIPアドレスに対して、IGPの径路情報を参照し、到達性がない、つまりルーティングテーブルに載っていないと判断された場合には、その径路情報は無視されます。また到達不可能径路情報として流れてきた径路に関しても削除が行われます。

 選ばれるベストパスは、以下のいずれかを満たす必要があります。

(1) 最も高い優先度(LOCAL_PREF属性の値)を持つ径路であること
(2) ある宛先に対する唯一の径路情報であること
(3) 同じ宛先に対する同じ優先度を持つ径路情報が複数あった場合の処理で選ばれた径路であること

 (3)の同じ優先度を持つ径路情報が複数あったときには、さらに以下の経路が選択されます。

(1) MULTI_EXIT_DISC(MED)属性の値が評価され、最も低いMEDの値を持った径路
(2) NEXT_HOP属性に格納されたアドレスに対するIGPのコストが最も低い径路、つまりRIPやOSPFの計算結果で最も近いNEXT_HOPを持つ径路

(3) さらに同じコストを持つ径路情報が存在していたときには、eBGPピアからもらった径路が存在していた場合には、その隣接BGP Identifierが最も低いものからもらった径路、もしeBGPピアが存在しない場合には、iBGPピアの中で最も低いBGP Identifierを持つBGPスピーカからもらった径路

 (c) Phase 3:径路送信

 ベストパスとして選択された経路のみを、他のBGPピアに送信します。送信を行う契機は以下のいずれかになります。

 (1) IGP径路情報が変化して、NEXT_HOP属性に示されるアドレスへの到達径路が変化したとき
 (2) 自分で生成している径路情報が変化したとき
 (3) 新しいBGPスピーカが増え、ピアを張ったとき

 あるピアに対して径路を送信するか否かは、そのピアがiBGPかeBGP可によっても異なります。

(2)UPDATEメッセージの送信処理

 UPDATEメッセージの送信処理によって、ベストパス選択された経路は他のBGPスピーカに対して送信されます。径路受信時には、同じ宛先に対して複数の径路情報があった場合でも、送信されるのはベストパスとして選ばれた1つの径路情報だけです。径路情報送信は、BGPピアの相手が同じASに属するiBGPか、異なるASに属するeBGPかによって処理方法が異なります。

 (a) iBGPの場合の送信処理

 BGPスピーカは、iBGPから受け取った径路情報(UPDATEメッセージ)は、他のiBGPには再配信しません。これにより径路ループを防ぐ等の効果がありますが、iBGPピアを直列につないだ場合も径路は伝達していかないため、iBGPピアはBGPスピーカ間でフルメッシュである必要があります。

 異なるASに属するBGPスピーカからeBGPを通して受け取った新しい径路情報は、以下の条件を満たしたときにすべてのiBGPピアに対して再配信されます。

 1) 元々保有している径路よりも、優先度(LOCAL_PREF属性の値)の高い径路情報が流れてきたとき
 2) 元々保有していない新しい径路情報が流れてきたとき
 3) ベストパス選択の結果、元々保有している径路情報を新しい径路に置き換える必要が出てきたとき

 到達性が無くなったため、空ではないWithdraw Routesフィールド径路を含むUPDATEメッセージを受け取ったときには、そのWITHDRAWN径路を削除するとともに、以下の処理を行います。

 1) 元々その径路情報を他のiBGPにアナウンスしていなかった場合には、何もしない
 2) 同じ径路に関してパス属性の違う他の径路情報があれば、ベストパス選択を行い、WITHDRAWNとなる径路に代わって、新たに選ばれた径路情報をアナウンスする。
 3) 同じ径路に関して他に径路情報がなければ、WITHDRAWN径路としてUPDATEメッセージに格納しアナウンスする。

 (b) eBGPの場合の送信処理

 BGPスピーカは、eBGPに対しては、iBGPおよびeBGPどちらからもらった径路にかかわらず、再配信を行います。ただしその条件は、iBGPの場合と同様で、ベストパスと選択された経路および他に置き換える径路情報のないWITHDRAWN径路のみが送信されます。

4.4 BGP運用の実際

(1)インターネットとBGP-4

 (a) AS番号

 インターネットでは、AS間の径路情報交換のプロトコルとしてBGP-4が標準で使われています。BGP-4によってインターネットに接続されるISPは、各々AS番号を持っていなくてはなりません。AS番号は、1〜65535までの範囲で表されます。同じAS番号を持つネットワークに接続されると、BGP-4では、そのAS間の径路交換ができなくなるため、AS番号はインターネット全体で唯一のものでなくてはなりません。

 インターネットに接続するためには、JPNICなどのIR(Internet Registry)から正式なAS番号を取得する必要があります。このIRから正式に割り当てられるASを「グローバルAS」と呼び、1〜64511までがそれにあたります。残りの64512〜65535は、「プライベートAS」として予約されており、このASは自由に使うことができます。ただし、このプライベートASを使った場合には、自分の径路情報をインターネットには流せないなどの制限が発生します。

 AS番号の割り当て数は現在2万を超えており、AS番号の枯渇が問題になってきています。このため現在の2オクテット長から4オクテット長への拡張が検討されています。

 (b) インターネットフルルート

 BGP-4で接続されたネットワークの集まりであるインターネット上には、多くのASおよび径路情報が流れており、その情報量は10万径路以上に達します。インターネット上のすべての径路情報を総称してインターネットフルルートと呼ぶことがあります。インターネット上のすべての事業者と通信するためには、原則としてこのフルルート情報を得ることが必要になります。

(2)トランジットと対等ピア

 インターネットにおいて、ISP同士でBGP-4を用いて接続する際に、大きく分けて2種類の径路交換方法があります。それは図40に示すようにトランジット対等ピアです。また対等ピアには、ISP同士が直接接続するプライベートピアリングと、IX(Internet eXchange)と呼ばれる多くのISPが集まる接続点にて、複数のISPと同時に接続するパブリックピアリングの2種類があります。



     図40 トランジットと対等ピア

 (a) トランジット

 トランジットとは、BGP-4で接続することにより、インターネットフルルートを得ることです。これにより接続したISPは、図41に示すように、インターネット上のすべてのISPと通信できるようになります。フルルートを提供する側は、トランジットASまたはUp-Stream ASと呼ばれ、フルルートを受ける側は、通常そのトランジットASの顧客ASとなります。



     図41 トランジット

 トランジットASは、顧客ASに対してフルルートを提供するのと合わせて、顧客ASの情報(顧客AS配下の顧客ASも含む)をインターネットに流します。トランジットAS側は、顧客ASに対してインターネットへの接続性を提供しているという立場になります。

これはBGPではないStatic接続などの顧客と同じです。従って、顧客ASはトランジットASにお金を払います。

 (b) 対等ピアリング

 対等ピアリングとは、BGP-4でISP同士が接続する際に、フルルートの交換をするのではなく、お互いの内部および顧客の径路情報だけを交換します。従って、それだけではインターネット全体と通信できるわけではありません。通信できるのは、接続した相手のISP内のネットワークとその顧客のみです。

 接続するISPの規模が同じ程度で、お互いに接続することで該当ISP間のトラフィックがさばけ、双方にメリットがある場合によく行われます。お互いに自分と顧客の径路を渡し合う対等な関係のため、一般的にお金のやりとりが発生せず、対等ピアリングと呼ばれます。

 対等ピアリングの1つの方式が、IXにおいて実施するピアリングです。IXは多くのISPが1箇所に集まることにより対等なピアリングを容易に行えるようにしたものです。日本では学術系のNSPIXP2やNSPIXP3、商用IXのJPIXやJPNAPなどがあります。

 IXには通常ギガイーサスイッチなどのレイヤ2スイッチが設置されており、IXに加盟したISPがそのスイッチにつなぐことで、他のIXメンバーとピアを張ることができます。ただし、実際にピアを張ってトラフィックの交換ができるかどうかは、ISP間の交渉によります。物理的に同じネットワークセグメントでつながっていますが、eBGPのピアを張るかどうかは交渉によるわけです。この方式は、1つのスイッチをシェアして使うためパブリックピアリングとも呼ばれます。

 パブリックピアリングの欠点は、スイッチでトラフィックが混雑したときの品質や、セキュリティに問題が生じる点です。IXでもこれらの問題に関しては、きちんと対処されている場合が多いのですが、大手ISP同士の対等ピアリングは、これらの問題を避けて個別にピアリングを行うプライベートピアを多く実施しています。

 これはISP同士を専用のLAN回線や専用線等で接続し、他のISPとは設備を共用しない方法です。一般的にはその回線費用を両者で折半してピアリングを行います。直接接続するので他のISPのトラフィックに影響されず、高い品質を保つことができます。ただし、ルータインタフェース代や回線代など双方に費用が発生するため、お互いに利益がある場合に行われます。

 図42にパブリックピアリングとプライベートピアリングの比較を示します。



図42 パブリックピアリングとプライベートピアリング

 (c) インターネットの構造

 トランジットと対等ピア等、様々な組み合わせでISP間は接続されていますが、インターネットは世界的に見ると図43に示すような構造になっています。米国を中心としたツリー状になっており、最上位のISPはTier1と呼ばれ、その他の世界中のISPは、基本的にこのTier1への接続性をトランジットしてもらっているという構造です。



     図43 インターネットの構造

(3)マルチホーム経路制御

 (a) マルチホームの利点

 ISPや一般企業のネットワークが、信頼性向上のためにインターネットへ2つ以上の回線を使って接続性を持つことをマルチホームと言います。マルチホームの最大の利点は、インターネットへの接続に冗長性がとれることです。たとえ1つの回線が切れたときでも、残りの回線で通信を保つことができます。

 次に径路の最適化、つまりより近い宛先とはより近い回線を使ってトラフィックを流すための、最適な経路を選択することも利点としてあげられます。例えば、一方を国内に強いISPを選び、もう一方を国外に強いISPを選んだりするわけです。また、複数回線を使った負荷分散等も、マルチホーム構成において行われます。

 マルチホームを使う際には、一般的に複数のISPに対して接続性を持ちますが、同一ISPに対して複数の接続性を持つ場合もあります。

 (b) マルチホームの分類

 マルチホームの実際の構成は、これからマルチホームをしようとする事業者が、グローバルアドレスを使用するか、プライベートアドレスを使用するかによって変わってきます。これらの分類を図44に示します。



     図44 マルチホーム構成の分類

(4)BGP-4で直接インターネットに接続するマルチホーム

 これは、グローバルASを持ったISPのインターネットへの接続形態において、通常行っているマルチホームです。AS_PATH属性MED属性などを使った経路制御は、このマルチホームにおいて実現できる最も一般的な方法です。マルチホームが持つ冗長性および最適経路選択の利点の他、負荷分散に至るまで、マルチホームで取りうるすべての制御を取ることができます。

 (a) パス属性と行える経路制御

 パス属性とそれを利用して主に行える経路制御の関係を整理すると表7のようになります。このうちMED属性は、同一ASに対するマルチホーム構成でのみ制御可能な方法です。


 表7 パス属性と経路制御の関係

属性
主に行える経路制御
AS_PATH属性 下りトラフィックの制御
MED属性 下りトラフィックの制御
LOCAL_PREF属性 上りトラフィックの制御
COMMUNITY属性 下りトラフィックの制御

 (b) AS_PATH属性を用いた経路制御(AS_PATH prepend)

 AS_PATHが長いほど遠いと解釈される特性を利用して、AS_PATH prependと言う技術が一部のルータには実装されています。これは通常eBGPピアおいて、自分のAS番号をAS_PATHに加えて径路を送るときに、1つだけではなく複数の自分のAS番号を加えて送ります。

 これによって、隣接するASにもかかわらず複数のASが間に入っているように見えます。従って、同じ径路情報に対しての自分のASに向かってくる下りトラフィックの制御を行うために使われます。

 (c) MED属性を使った負荷分散径路情報

 BGPは、常にベストパスを1つに選択してしまうため、あるASで2回線から同じ径路情報が流れてきたとしても、その2つの径路情報を使って、流すトラフィックをロードバランスさせることは通常できません。ただし、ASが複数のIPアドレスプレフィックスを持っている場合には、プレフィックス単位で負荷分散を図ることが可能です。ここでは、MEDを使った下りトラフィックの負荷分散を説明します。

 図45にAS1とAS2の間に2回線存在し、AS1が172.16.0.0/16と172.17.0.0/16の2つのIPアドレスプレフィックスをアナウンスする場合を示します。このとき各回線で、MEDの値をプレフィックス毎に互い違いに付与すすることで、AS2からAS1へ向かうトラフィックを分散させることが可能です。



   図45 MED属性を使った負荷分散

 またこのとき、一方の回線に障害が発生し、BGPピアが切れた場合でも、残った回線を通して2つのプレフィックスのアナウンスが行われれば、MED=100の径路情報が消えてもMED=200の径路情報が残っているため、トラフィックは迂回し、通信を継続することが可能になります。

 (d) LOCAL_PREF属性を用いた上りトラフィック制御

 ISPが複数のトランジット回線を保存している場合、その回線の帯域などによってどちらか一方を優先的に使いたいという場合があります。このときLOCAL_PREF属性を用いた上りトラフィックの制御が有効です。

 図46にAS5がAS2とAS4にマルチホームし、インターネトへ接続する形態を示します。AS5のルータ1では、AS2から受け取る径路に対して、一律にLOCAL_PREF=90を付与します。また、ルーター2では、AS4から受ける径路に対して、一律にLOCAL_PREF=100を付与します。



図46 LOCAL_PREF属性を使用した上りトラフィック制御

 どちらのASからもトランジットを購入しているため、インターネットフルルートとしてはほぼ同じ径路情報が両者から来ているはずです。しかし、LOCAL_PREF属性の値に差を付けた場合、ベストパス選択においてLOCAL_PREF属性の評価は、ほぼ一番最初に行われます。

 そのため、ほぼすべてのインターネット向け上りトラフィックが、ルータ2からAS4へ出て行くルートを通ります。AS_PATH属性の評価よりLOCAL_PREF属性の評価が先のため、隣接のAS2へ向かうトラフィックもAS4経由で送信されます。

(5)プライベートASを用いたマルチホーム

 グローバルASとBGP-4によるマルチホーム構成以外に、PIアドレス(Provider Independent Address)とプライベートASを使ったマルチホーム構成があります。

 (a) プライベートASによる運用

 プライベートAS番号(AS64512〜AS65535)を使ってISPとBGP-4で接続する場合、設定方法などは通常のeBGPと変わりませんが、このAS番号をインターネットに流すことはできません。そのため、プライベートASを使用する場合は、外部に対してアナウンスする際にこの番号を取り除く必要があります。

 図47にプライベートASを利用したマルチホーム構成を示します。この例ではネットワーク事業者は、AS65000を使用して上位ISPであるAS2とBGP-4(eBGP)により接続しています。これによってフルルートを受けることができます。また、AS_PATHを用いたフィルタ等の制御ができるようになり、スタティックだけで接続するよりも柔軟な経路制御が可能になります。



   図47 プライベートASを使用したマルチホーム構成

 AS85000の情報はAS2に伝わりますが、このAS番号をそのままインターネットに流すことができないため、AS2においてさらに上位のISPに径路を流す際にAS65000を取り除きます。

 このときAS2からの径路として、この事業者のPIアドレスをアナウンスします。またもう一方の回線は、スタティックで上位と接続しています。このときは、同じく上位AS1よりインターネットへPIアドレスがアナウンスされます。

(6)プライベートアドレスによる運用

 プライベートアドレスを用いてインターネットに接続する際は、通常NAT(Network Address Translation)を使用します。マルチホーム構成を取る場合も同様です。図48にその様子を示します。



   図48 プライベートアドレスを使用したマルチホーム構成

 この場合、メリットとしては、グローバルアドレスをほとんど使わないこと、すでにNATを使ってシングルホーム構成を取っていたときに、容易にマルチホーム構成に移行できるといった点があげられます。一方デメリットとしては以下のものが考えられます。

 ・NATを使うため、IPアドレスがデータに入っていたり、ポート番号が固定であるネットワークゲームストリーミングなどの一部のアプリケーションが扱えない。
 ・マルチホームの際、トラフィックの最適化や負荷分散が困難であり、十分な経路制御ができない。
 ・外から内向けにコネクションを張りに来るものについては、外へのアドレスの見せ方など特別な対処が必要になる。

(7)その他の経路制御

 (a) 径路フィルタリング

 ISPの運用では、パス属性による経路制御だけでなく、あらかじめ登録しておいた径路だけを受け取るという、受け取り時の径路のフィルタリングによる制御(in-filter)や、アナウンスする径路を制限する径路フィルタリング(out-filter)を用います。

 また、パス属性の変更や付与なども、フィルタ機能を用いて該当の径路だけに所望のパス属性を付けるといった処理を行います。

 (b) フラップダンプニング

 BGPの径路情報が、現れたり消えたりを繰り返すことをフラップと呼びます。eGP接続している回線やルータがアップダウンを繰り返したりすることによってフラップは発生します。インターネットの世界では何万という径路が流れているため、このフラップが大量に起こると全世界のBGPスピーカで径路の更新、削除の処理が過度に発生CPUリソースが浪費されます。

 これを防ぐために、ある一定期間にフラップを繰り返した径路情報を、他のBGPスピーカにアナウンスしないようにするフラップダンプニングという機能が一般的によく使われています。これは、ばたつく径路毎に一定時間ペナルティを課して、BGPテーブルから削除してしまう方法です。

(8)iBGPスケーラビリティの問題

 BGP-4においてiBGPピアは、仕様上AS内のすべてのBGPスピーカ間でフルメッシュのピアが必要になります。BGPスピーカの数が多くなってくると、ピアの数は非常に多くなります。式で表すとn(n-1)/2(n:BGPスピーカ数)となります。

 ピアの数が増えることは、BGPスピーカにとって消費されるリソース(CPUやメモリなど)が増えることを意味しており、その増加を抑える対処が不可欠です。これを解決する方法として、ルートリフレクタの導入、BGPコンフェデレーションの導入という2通りの方法があります。

(9)ルートリフレクション

 iBGPフルメッシュを防ぐ方法として、ルートリフレクション機能がRFC2796に定義されています。特殊なBGPスピーカに、iBGPのピアを代表して集約するような役目を持たせることにより、BGPスピーカ間のフルメッシュのピアをなくそうというものです。

 このBGPスピーカはルートリフレクタ(RR)と呼ばれます。図49にRRの構成例を示します。BGPスピーカ間でフルメッシュのピアを張る代わりに、RRを中心としたスター状のピア構成をとります。RRの配下にピアを張って従属するルータは、ルートリフレクタクライアント(RRクライアント)と呼ばれます。



図49 ルートリフレクタによるiBGPフルメッシュ問題の解決

 RRは、RRクライアントからiBGP経由で受け取った径路情報を、他のすべてのRRクライアントへのピアに対してアナウンスします。「ルートリフレクタ」と呼ばれるのは、このようにRRクライアントからきた径路情報を反射する(reflection)動作をするためです。

 ルートリフレクション機能は、下記の方針に沿って作られています。

 ・簡潔な設定および機能で実現できること
 ・フルメッシュのiBGP構成からも容易に移行が可能であること
 ・同一AS内でリフレクション機能に対応していないBGPスピーカが存在する構成も可能であること

(10)BGPコンフェデレーション

 BGPコンフェデレーションは、ルートリフレクタと並んでiBGPのフルメッシュ問題の解決を行う手法の1つで、RFC3065に定義されています。「BGPコンフェデレーション」とは、非常に多くのBGPスピーカを持ったASにおいて、AS内部を複数の小さなサブASに分割し、サブAS単位でのピアおよび経路制御を実現するものです。AS外部に対しては、分割されたASの集合を1つのASとしてアナウンスします。この集合をASコンフェデレーションといいます。

 コンフェデレーションの特徴は、上記に加えてAS内のルーティング制御をより柔軟に行うことができるようになる点です。図50にBGPコンフェデレーションを用いたときの概念を示します。表8にBGPコンフェデレーションの構成要素を定義します。



     図50 BGPコンフェデレーション



       表8 BGPコンフェデレーションの構成要素

構成要素
説明
ASコンフェデレーション
(AS Confederation)
1つのASとして外部にアナウンスされるASの集合
ASコンフェデレーションID
(AS Confederation Identifier)
外部ASから見たときに1つのASとして見せるためのAS番号
(ASコンフェデレーションの外のASからはこのAS番号しか見えない)
Member-AS ASコンフェデレーションに属するAS
Member-AS番号
(Member-AS Number)
BGPコンフェデレーション内部のみでやりとりされるMember-ASが持つAS番号(ASコンフェデレーションの外のASからは見えない)

 ASコンフェデレーション内部では、Member-AS間のBGPピアをフルメッシュに張る必要はありません。これによりAS内部のピアの数を減らすことが可能になります。またこのときMember-AS単位にIGPを分割することもでき、IGPのスケーラビリティ問題の解決と合わせて使用されることもあります。

 (a) BGPコンフェデレーション実現のための拡張

 BGPコンフェデレーションを実現するために、Well-known mandatory属性であるAS_PATH属性に表9に示す新たなタイプが定義されます。


         表9 AS_PATH属性の新たなタイプ

タイプ
属性
AS_CONFED_SEQUENCE path segment type=3を使用し、UPDATEメッセージが通過するASコンフェデレーション内部のMember-ASの番号が順番に格納されます。
AS_CONFED_SET path segment type=4を使用し、UPDATEメッセージが通過するASコンフェデレーション内部のMember-ASの番号が順番に関係なく格納されます

(b) BGPコンフェデレーションの動作

 ASコンフェデレーション内部のBGPスピーカが、ASコンフェデレーション外部のBGPスピーカとeBGPピアを張る際には、ASコンフェデレーションIDがピアのやりとりに使われます。

 つまり、OPENメッセージ内のBGP IdentifierやAS_PATH属性には、外部に見せるためのASコンフェデレーションIDを使うため、外部ASからは、コンフェデレーション内部のMember-ASの番号は見えません。

 ASコンフェデレーション内部のBGPスピーカ同士がピアを張る際には、すべてMember-AS番号がやりとりに使用されます。従って、ASコンフェデレーション内部でMember-ASが違うBGPスピーカ間のピアは、eBGPのような振る舞いをし、同じであればiBGPのような振る舞いをします。

 また、自分のASコンフェデレーションIDを含むAS_PATH属性を受け取ったBGPスピーカ、および自分のMember-ASと同じ番号を含むAS_CONFED_SEQUENCE、AS_CONFED_SETを受け取ったBGPスピーカは、通常のBGPにおいて同じ番号を含むAS_PATH属性を持つ径路情報を受け取ったときと同じ動作をします。


[出典]
 (1) 友近剛史他2:インターネットルーティング入門,翔泳社(2002-1)

 以上、BGP についてまとめました。次回はルーティングプロトコルの1つであるMPLSについてまとめる予定です。



[技術講座(ルーティング技術―7)]           (2003/07/20作成)

 今回はルーティングプロトコルの1つであるMPLS についてまとめました。

5.MPLS

5.1 MPLSとは

(1)MPLSの特徴とはじまり

 (a) MPLSの特徴

 通常のIP通信では、IPパケットが送られてくると、ルータでそのIPアドレスを見て、次にフォワーディングを行うのが従来の方法でした。MPLS(Multi-Protocol Label Switching)は、ラベルという新しい識別子を使ってフォワーディングを行います。MPLSには以下のような特徴があります。

 ・複数のIPアドレスをまとめて1つのラベルとして表現できるため、フォワーディングテーブルが節約できる。
 ・ラベルパスを使うことによって、IPフォワーディングの世界にコネクションの概念を持ち込むことができる。
 ・最適なラベル値を使い、フォワーディング処理を最適化、高速化することができる。

 (b) MPLSのはじまり

 MPLSは、もともとATMスイッチ技術IPルーティング技術融合させるものとして登場しました。当時(1990年代半ば)、高速スイッチングと言えばATMが主流でした。しかし、ATMスイッチ単独ではIPアドレスを用いたルーティングをすることができず、VP/VCを個別に張らなくてはなりませんでした。

 端末が複数あるLAN環境などでは、煩雑な処理が必要になります。これを解決するために、図51に示すIPスイッチと呼ばれるIPの処理と高速スイッチングを融合させた装置が現れました。



     図51 IPスイッチの概念

 これはATMスイッチにIP処理部を接続させ、このIP処理部においてルーティングテーブル作成などのルーティング処理を行います。ルーティングテーブルを作った後、その情報をATMスイッチ部に送ります。そして、ATMスイッチ部ではVP/VCと対応させた上で、セルヘッダだけを見てフォワーディングを行います。

 このようにして、IPアドレスを参照することなく、ラベルスイッチングを可能にします。当時、多くのルータでは、IPパケットのフォワーディングはソフトウェア処理で行われていたため、ATMスイッチを使ってハードウェアでフォワーディング/スイッチングを行うこの方式は非常に魅力的でした。

 また、IPアドレスを見ずにスイッチングを行うため、IPではないプロトコルも同じ方式で処理が可能です。このため「マルチプロトコル(Multi Protocol)」の意味を持つ「MPLS」と呼ばれるようになりました。

 しかし、その後IPパケットのフォワーディングそのものをハードウェ化するASIC(Application Specific Integrated Circuit)と呼ばれる技術が発展し、フォワーディングの高速化に対するATM技術の必要性が薄れてきました。

 また逆に、通信自体は電話からデータ通信にシフトし、WWW等だけでなく、VoIPの出現やSNA(Systems Network Architecture)などのホスト系プロトコルのIPカプセル化技術など、IPトラフィックの通信全体の中での比重が急激に増加し、ATMスイッチや伝送装置を使わずに、ルータを用いてネットワークを直接作る方が効率的になってきています。

 (c) 現在のMPLSの流れ

 このような業界の流れを受けて、MPLSは2つの流れで発展しています。1つは当初のATMスイッチの流れをくむ形で、ATMネットワークでの自動VP/VC設定機能などをMPLS(ラベル情報)に対応させ、既存のATMネットワークをIPネットワークに変貌させる方式としての発展です。

 これは元々ATMネットワークを持っていた事業者が、IPを使ったサービスなどを提供する際にメリットとなります。ここではこれをATMベースのMPLSと呼びます。もう1つは、ネットワークの全面IP化の課題であった柔軟なトラフィック制御やVPN機能の提供などを、MPLS(ラベル情報)をIPアドレスに対応させ、ラベルパスを形成することで実現する方式としての発展です。

 これは、ATMネットワークや他の伝送装置を持たないIPネットワーク事業者が、様々なサービスを実現する際にメリットとなります。ここではこれをIPベースのMPLSと呼びます。

(2)MPLSの基本概念

 (a) MPLSの基本概念

 図52にMPLSの基本概念を示します。MPLSは、MPLSエッジルータMPLSコアルータで構成されます。MPLSエッジルータで囲まれた領域をMPLSドメインと呼び、この中ではラベルの使い方やラベルパスの形成などが1つのポリシーに従って行われます。



   図52 MPLSの基本概念

 ラベルの使い方は、そのネットワークを運営する事業者のサービス内容やサービスレベルを色濃く反映させたものとなります。そのため、1つのMPLSドメインはBGPのASと同じように、ほぼ1つの事業者に置き換えることができます。MPLSドメイン内にあり、MPLSを解釈できるルータは、まとめてLSR(Label Switched Router)と呼ばれることがあります。

 MPLSエッジルータでは、MPLSドメイン外から来たIPパケットをクラス分けし、該当するラベルを付与してMPLSドメイン内にパケットを送り込みます。このクラスの概念はFEC(Forwarding Equivalence Class)と呼ばれ、IPプレフィックスQoS(Quality of Service)等を単位としてクラスが構成されます。

 MPLSコアルータでは、エッジルータで付けられたラベルのみを解釈し、高速にフォワーディングを行います。コアルータからのパケットを受け取ったエッジルータは、反対にラベルを除去しドメイン外にパケットを送り出します。もしエッジルータが他のドメインに接している場合には、ラベル値の変換などドメイン間のポリシー変換処理が行われることになります。

 (b) MPLSの動作概要

 図53に実際のラベルの使い方を示します。通常のIPでのルーティングでは、IPパケットが到着した際に、ルーティングテーブルを参照し、該当するアドレスエントリを検索して、指定されたインタフェースにパケットを送出します。これを繰り返すことにより最終目的地に到着します。



     図53 MPLSの動作概要

 MPLSでは、このフォワーディングの動作をラベルの値をもとに行います。MPLSドメインのエッジに位置するルータ(図のルータA)にIPパケットが到着すると、通常のIPの場合と同じようにルーティングテーブルを検索します。該当するエントリを見つけてパケットを送出する際に、ラベルの情報を合わせて参照します。

 この場合は、192.168というエントリに対してラベル4という値が出力ラベルとして記載されています。つまりパケットを出力する際にラベル4をパケットに付加してから送出します(Label Push)。

 このように、ラベルが付与されたパケットを受け取ったルータ(図のルータD)では、パケットが入ってくるとそのラベルの値のみを参照します。この場合、隣のルータでは「4」という値を付けているので、入力ラベルが「4」となっているエントリを参照します。

 このときIPアドレスの192.168という所まで参照する必要はありません。このエントリには、出力インタフェースおよび出力の際に付与するラベルの値の情報もすでにあります。従って、このラベルの情報だけを参照し、出力インタフェース「0」にパケットを送出します。ラベルの値は該当する「9」に変えます(Label Swap)。

 このMPLSドメインの対向のエッジルータ(図のルータD)に到着したパケットは、入力ラベルの値を参照し、今度は出力ラベルの値が指定されていないので、ラベル番号を除去し(Label Pop)、通常のIPパケットとしてインタフェースにパケットを送出していきます。

 このようにMPLSドメイン内では、ラベルの値のみを見てフォワーディングが行われ、またラベルの値は、ルータ毎にホップバイホップで変わっていきます。これはフレームリレーでのDLCI(Data Link Connection Identifier)の値や、ATMでのVP/VC番号の考え方と同じです。値が変換されながら形成されるラベルパスLSP(Label Switched Path)と呼びます。

(3)MPLSのフォーマット

 図54にMPLSのラベルフォーマットを示します。これはSHIMヘッダと呼ばれるフォーマットで、IPベースのMPLSで使用されます。



 図54 MPLSのラベルヘッダフォーマット

 ヘッダのフィールドは全体が32ビットで構成されており、大きく4つに分かれています。最初の20ビットがラベル(Label)と呼ばれるフィールドで、前述のラベルの値が格納されます。

 それに続くのがEXPフィールドと呼ばれるもので、実験用に予約されている3ビットのフィールドです。DiffServのMPLSへの適用等に関連してCoS(Class of Service)フィールドとしても使われます。

 EXPフィールドの後には、1ビットのBottom of Stackフィールドが続きます。MPLSのSHIMヘッダは、1つではなく複数のヘッダを続けてスタックして挿入することが可能です。後述のMPLSを使ったIP-VPN実現技術では、このSHIMヘッダを2つスタックすることにより実現します。

 最後はTTLフィールドと呼ばれ、パケットの転送ホップ数の上限を指定します。これはIPヘッダのTTLフィールドと同じ役目をします。このSHIMヘッダは、レイヤ2ヘッダとレイヤ3ヘッダの間に挿入されます。このことからMPLSは「2.5層のプロトコル」と呼ばれることがあります。

 ATMベースのMPLSの場合は、このSHIMヘッダを使わずVP/VCの値をそのままラベルの値として使用します。

(4)MPLSのラベル値の決め方

 (a) ラベル決定プロトコル

 MPLSでのラベルの値の決め方にはいくつかのプロトコルがあり、大きく2つの方式に分けられます。基本的にすべての径路情報にラベルを割り当てるプレフィックスベース方式特定のend-to-endの通信に対してのみラベルを割り当てるトンネルベース方式です。

 またその中でも、ラベル付与要求があったときのみ、ラベルを割り付けるDownstream-on-Demandモード個々のルータが独立にラベルを割り付けるDownstream Unsolicitedモードなどがありますが、ここでは代表的な方式のみ記述します。

 (b) プレフィックスベース方式

 プレフィックスベース方式で代表的なプロトコルは、TDP(Tag Distribution Protocol)やLDP(Label Distribution Protocol)があります。TDPはベンダ独自のプロトコルでしたが、この機能を拡張し標準化されたものがLDPです。

 この方式は、OSPFなどのIGPでやりとりされるIPプレフィックスに対して、ラベルを付与する方式であることから「プレフィックスベース」と呼ばれます。LDPの中でもさらにいくつかのモードが存在しますが、ここではラベル決定の概念を説明するために、LDPのDownstream Unsolicitedモードでラベルの値が決定され、ラベルパスができあがるまでの様子を図55に示します。



    図55 MPLSのラベル決定方法

 はじめに通常のIPルーティングの場合と同様に、IGPを用いてネットワーク内の径路情報をやりとりします。一通りルーティングテーブルができあがった後、ラベル値の情報交換を行います。

 最も右にあるMPLSエッジルータにおいて、自分の持つ経路テーブルの各プレフィックスに対応するラベル値一意に付与します。付与した値を隣接ルータに教えます。例えば、ルータDでは、192.168というエントリに対してはラベル9を使うと宣言し、ルータBにそのことを伝えます。

 ルータBでは、192.168に対してはラベル4を使うと宣言しますが、同時にルータDに送る際に使用する出力ラベル値に、ルータDから受け取った「9」という値を付与します。これによって、ルータBではラベル4がついたパケットが入ってくると、ラベル9に置き換えてルータDに送信するというラベルパスができあがります。

 同じことをルータBからルータAに対しても行います。最終的にすべてのルータで情報交換が終わると、エッジからエッジへのラベルパスが完成します。このように自分が使用するラベル値隣接ルータから伝えられるラベル値別々の値として保持されるので、ラベルパスは一意に決定され、独立性が保たれます。

 この方式はラベル付与要求が無くても、自分が持っている経路情報に対して無条件にラベルを付与するため、Unsolicitedモードと呼ばれます。また、トラフィックの終点側はdownstream、トラフィックの始点はupstreamと呼ばれますが、この方式ではdownstream側であるルータDからラベルパスを作っていくので、「Downstream Unsolicitedモード」となります。

 (c) トンネルベース方式

 一方、トンネルベースのラベル付与方式として代表的なものに、RSVP-Extension(Resource Reservation Protocol-Extension)や、LDPを拡張したCR-LDP(Constraint-Based LDP)などがあります。これは、プレフィックスベースと異なり、あるルータ間で個別にラベルパスを作る方式です。

 RSVP-Extension方式では、RSVPのシグナリング方式がMPLS用に拡張され、ラベル付与リクエストを隣接ルータに対して送信します。リクエストを受け取ったルータは、その内容に応じて該当のプレフィックス等にラベルを付与していきます。

 LDPのunsolicitedモードと異なり、要求のあったプレフィックスに対してのみend-to-endで個々にラベルパスを作っていくので、IPSecなどのトンネル技術と非常に似ています。そのため「トンネルベース」と呼ばれることがあります。

 MPLSの応用例として後述するトラフィックエンジニアリングにおいて、よく使われる方式です。上記のMPLSの概念をまとめると図56のようになります。



  図56 MPLS基本概念のまとめ

5.2 MPLSの応用技術

(1)トラフィックエンジニアリング

 (a) トラフィックエンジニアリング

 近年、複雑なネットワーク構成を持つIPネットワークにおいて、柔軟な経路制御を行う手法として、MPLSを使ったトラフィックエンジニアリングが注目されています。特に大規模なネットワークを持つ米国のISPでは、すでにこの技術を使って実際にネットワークの運用が始まっています。

 トラフィックエンジニアリングを行う目的としては、主に以下のようなものがあります。

 ・空き回線の有効利用のため明示的な経路指定によるルーティングを行う(Explicit routing)
 ・バックアップ経路をあらかじめ指定しておき、障害発生時に経路切り替えを行う(Fast ReRoute)
 ・帯域を確保した経路指定を行う(QoS)

 (b) Explicitルーティング

 図57にExplicitルーティングの例を示します。一般的なMPLSでは、OSPF等のIGPで計算した最適ルートに応じた経路が作られ、ラベルパスもそれに合わせて作られます。それに対して、Explicitルーティングでは、図57のようにIGPでの最適経路とは関係なく明示的な経路指定を行います。



 図57 トラフィックエンジニアリングを使った特定経路の確保

 ルータAから宛先 a へ向かう場合、最適経路ではA→B→D→Fとパケットがフォワーディングされますが、宛先 a に対してExplicitルーティングを適用すると、A→B→C→E→D→Fと通すことができます。

 単純な最適経路計算ではルータBとルータDの間にトラフィックが集中してしまい混んでいる場合に、そのトラフィックの一部を別経路に通すことができれば、若干遠回りになったとしても回線の有効活用が可能になります。

 通常、Explicitルーティングはすべての経路に対して適用するのではなく、迂回させたいと思う経路に対してのみ適用するので、RSVP-ExtensionやCR-LDP方式などトンネルベースのラベル付与プロトコルが使われます。図57の場合、宛先 b〜d は通常の最適経路でルーティングし、宛先 a 向けのみルータA〜F間でラベルパスを指定しExplicitルーティングを実現しています。

 (c) Fast ReRoute(FRR)

 通常、ダイナミックルーティングを使用し、ネットワークを冗長化している場合に、一方の回線に障害が発生すると、もう1つの回線に迂回します。このとき障害を検知し、迂回回路が決まるまでIGPにて径路情報の再計算が行われます。

 小規模なネットワークでは短時間で計算が終わりますが、大規模なネットワークになると計算が終わるまで分単位の時間がかかることがあります。その間はパケットは正常にルーティングされません。

 この再計算中に、あらかじめ設定しておいたバックアップルートを使用することによって、正常にルーティングされない時間を極力短くするための技術を「Fast ReRoute(FRR)」と呼びます。図58にFRRの実現例を示します。

 図58では、宛先 b〜d に対して、ルータBにおいてあらかじめバックアップルートとして、ルータB→C→E→Dのルートを指定しておきます。このときルータB〜D間で回線断等の障害を検知すると、数ms以内にB→Dと流れていたトラフィックがB→C→E→Dに切り替わります。



   図58 TEを使ったFRRの実現

 (d) QoS

 RSVP-ExtensionやCR-LDP方式では、QoS制御を行うためのパラメータの交換を行うことができます。これを使うことによって、あるラベルパス用にあらかじめ帯域を確保しておく、といような制御も可能になります。IPネットワークでは一般的に帯域の確保は行いにくいですが、MPLSのラベルパスを使うと実装などの面で実現しやすいことから適用が期待されています。

(2)IP-VPN

 (a) MPLSを使ったIP-VPN

 MPLSのもう1つの応用例として、IP-VPN(IP Virtual Private Network)が近年日本においては特に注目されています。これまでIP-VPNではIPSec等のトンネル技術を用いた方式が中心でしたが、MPLSを応用することにより、より大規模なIP-VPNネットワークを構築できるようになります。MPLSによるIP-VPN実現技術についてもいくつかの方式がありますが、ここでは、RFC2547に記されているMPLS-VPN方式を中心に記述します。

 (b) MPLS-VPNの概要

 MPLS-VPNの特徴には次のようなものがあります。

 ・Cisco社を中心としてRFC2547(Informational)に記されたISPサービスとしてのIP-VPN実現技術
 ・パケット転送にはMPLS(LDP/TDP)、VPN径路情報交換にBGP(mpBGP:RFC2858)を使用
 ・ルーティングプロトコルがエッジで終端されるピアモデルのIP-VPN
 ・VPNごとに異なるルーティングテーブルを持ち、顧客ルータとルーティング情報を交換する

 図59にMPLS-VPNの概念図を示します。MPLS-VPNでは、MPLSドメインでのエッジルータをPE(Provider Edge)ルータ、コアルータをP(Provider)ルータ、ユーザ側ルータをCE(Customer Edge)ルータと呼びます。



    図59 MPLS-VPNの動作概念

 PEルータでは1台に複数のVPNを収容しますが、MPLSのラベルを用いてVPNの区別をするので、VPN間でパケットが混じり合うことなく、VPNごとに閉じたネットワークを提供することができます。また、IPSecなどのようにトンネルを使ったVPNと異なり、フラットなネットワークを用いて、大規模なIP-VPNサービスを提供できるため、個々のパス管理が不要になるなど、ユーザ側、ISP側双方にメリットがあります。

 図59では、VPN-Aの新宿からVPN-Aの大阪の拠点までのパケットの流れを示しています。VPN-A新宿拠点からIPパケットがPEルータAに到着すると、パケットの宛先より該当するラベルが付与され、MPLSドメイン内に転送されます。このときPEルータ内では、VPNも合わせて識別されるので、異なるVPN間で同じIPアドレスを設定することもできます。(VPN-Aの新宿とVPN-Bの横浜拠点)。

 MPLSドメイン内では、PEルータで付与されたラベルだけを見て転送されます。MPLS-VPNではラベルが2つ使用されますが、これについては後述します。出口のPEルータに到着すると該当するVPNが識別され、出口インタフェースが決まった後、ラベルは除去され通常のIPパケットとしてCEルータに送信されます。

 CEルータに到着するときにはラベルは付いていませんから、CEルータにはMPLSの機能は必要ありません。通常のIP通信ができるルータであれば十分なため、VPNのユーザは特別な装置はいりません。

 (c) MPLS-VPNにおけるPEルータの仕組み

 MPLS-VPNでは、複数のVPNを1台のPEルータに収容するために、VRFs(VPN Routing and Forwarding tables)という技術を使用します。これは図60に示すように、VPNごとに異なるルーティングテーブルを内部的に保持し、各々CEルータを接続するインタフェース該当するVRF(VPN)にくくりつけます。



 図60 MPLS-VPN PEルータのしくみ

 (d) MPLS-VPNにおけるラベルスタックと動作概要

 MPLS-VPNでは図61に示すように、MPLSラベルを2つスタックして使用します。1つは、MPLS-VPNだけで使われるVPN識別ラベルと呼ばれるものです。このラベルを用いることにより、出口のPEルータにおいて、どのVPN宛のパケットかを識別することができます。



図61 MPLS-VPNにおけるラベルスタック

 このラベルは入り口のPEルータにて挿入され、出口のPEルータに到着するまで途中のルータで参照されず、値も変わりません。このラベル情報の交換は、Multi-Protocol Extensions for BGP-4(mpBGP)によって行われます。なお、ラベルの詳細なフォーマットは、図54に示した32ビットのラベル構成に従います。

 2つ目は、MPLSドメイン内転送用ラベルで、入り口のPEルータから出口のPEルータに到達するために使用されます。これは通常のMPLS通信と同様に、LDP等で交換された情報をもとに付与されます。途中経路のPルータで毎回参照され、そのたびに値は変わります。図62にMPLS-VPNの動作概要を示します。



    図62 MPLS-VPN動作概要

 PEルータのラベルテーブルでは、通常のMPLSの場合にプラスして、VPNを識別するためのRD(Route Distinguisher)とVPN識別ラベルの情報を持ちます。RDは前述のVRFに相当する情報で、このエントリがどのVPNに関するものかを識別します。

通常のIPパケットとして到着したパケットは、ここで出口のPEルータでVPNを識別するためのVPN識別ラベル(図では「26」)、およびMPLSドメイン内を転送するための転送ラベル(図では「42」)の2つのラベルが付与され、MPLSドメイン内に送信されます。

 転送ラベルはPルータをホップするたびに値が変わっていきます。出口のPEルータで再びIPパケットに戻され、最終目的地に到達します。

 (e) MPLS-VPNでのラベルの決定方法

 MPLS-VPNでは図63に示すように、ラベルの値を決定するために複数のプロトコルを使用します。VPN識別ラベルを決定するために使用されるのが、Multi-Protocol Extensions for BGP-4(mpBGP)です。mpBGPでは、VPN内の径路情報とその径路に付随したラベルの情報が同時にやりとりされます。



    図63 MPLS-VPNラベル決定方法

 はじめにPEルータは、VPN内の径路情報PE-CE間のルーティングプロトコルによって学習します。ここで使用できるプロトコルは、Static、BGP-4、RIP、OSPFです。これらのプロトコルを通じて各VPNのそれぞれの拠点で使用している径路情報を得ます。

 得られた径路情報に対してVPN識別ラベルを付与します。この径路情報とそれに付与したラベル値を、PEルータにおいてmpBGPに再配信(redistribute)します。同時に、他のPEルータの持つ径路情報を、mpBGPより受け取ります。

 すべてのPEルータがこの動作をすることによって、VPNの径路情報MPLSドメイン内全般に行き渡りVPN通信が可能になります。

 転送用のラベルを決定するのに使われるのはLDPもしくはTDPです。はじめにMPLSドメイン内ではOSPF等のIGPで径路情報がやりとりされ、その後LDP等で各々の径路情報に対するラベルの値がやりとりされます。これは、前述のMPLSラベル決定方法と同様の動作です。

 なお、PE-CE間のOSPFとMPLSドメイン内で使用するOSPFとは全く独立して働くため、VPN径路情報とMPLSドメイン内で使用している径路情報が混じり合うことはありません。

5.3 その他のMPLS動向

(1)MPLS標準化動向

 MPLSのラベルフォーマットや、プレフィックスベースのラベル決定方式の1つであるLDP等についてはすでに標準化が終わっており、RFC3031〜RFC3038に記述されています。またトンネルベースのRSVP-Extension、CR-LDP方式についても標準化に向けて最終段階に入っています。

 トラフィックエンジニアリング関連の機能には、QoSなど現在論議中のものも数多くあります。MPLSを使ったIP-VPN方式は、RFC2547を含めまだ各社ベンダ独自のものがほとんどで、標準化作業については始まったばかりです。

(2)MPLSの将来展望

 MPLSは、その汎用的な考え方を使って、様々な応用が今後に向けて検討されています。代表的なものが、GMPLS(Generalized MPLS)と呼ばれるものです。これは、ラベルの考え方を使って、波長(λ)やSONETのタイムスロットなどを制御しようというものです。LDP等のプロトコルを使って制御情報をやりとりし、光交換装置の設定を自動的に行います。

 またXXX over MPLSとして、様々なレイヤ2プロトコルをMPLS上で実現する動きもあります。FR over MPLSEther over MPLS等が例としてあげられます。これによって、IPネットワークしか持たない事業者がMPLSを使って、FRなどのレイヤ2サービスを提供することができるようになります。

 その他トラフィックエンジニアリングVoIPへの応用やDiffServの適用など、様々な取り組みが議論されており、今後もMPLSは大きく発展していくと考えられています。


[出典]
 (1) 友近剛史他2:インターネットルーティング入門,翔泳社(2002-1)

 以上、MPLS についてまとめました。今のところ次回の予定はありません。


 

[技術分野■ADSL■無線■光ファイバー■衛星通信■CATV■伝送技術■交換技術■データ通信■ネットワーク技術■ルーティング技術]