ニュースレターNo.38/2008年3月発行
インターネット10分講座:経路制御
今回の10分間講座は、経路制御について解説します。
本稿で取り上げる経路制御とは、インターネット上でIPパケットを目的地に転送するための、パケットの通り道(経路)についての情報を管理し、複数ある経路のうちから、最適な経路を選択する仕組みのことをいいます。 今回の10分講座では、経路制御に関する基礎的な事項について整理した後に、最近の経路制御に関する話題について紹介します。
前提となるIPアドレス構成の知識
まず、経路制御の理解に必要となる、IPアドレスの知識について解説します。
IPアドレスの構成
ネットワーク部とホスト部
IPアドレスは、その上位ビットが該当ホストの所属するネットワークを表し、下位ビットが該当ネットワーク内の所在を表します。それぞれ、上位ビットをネットワーク部(またはプリフィクス部)、下位ビットをホスト部と呼びます。またネットワーク部の長さは、先頭ビットからのネットワーク部のビット数(ネットマスク)で表現されます。このネットワーク部の長さを表現する手段として、IPアドレスの後ろにスラッシュ(/)を付ける表記があります。このような表記を、プリフィクス表記と呼びます。
IPアドレスは、ネットワーク部とホスト部との組み合わせで、一意に表現されています。ネットワーク部とホスト部の構成は、パケット配送の仕組みに関連しています。
ある離れたネットワークに存在するホストに向けてパケットを届けたい場合、まず宛先IPアドレスの所属するネットワーク宛にパケットを配送し、該当ネットワーク内部でさらに宛先のホストに向かってパケットを配送する、階層構造になっています。
ネットワーク部とホスト部の境界の調整
以前は、IPアドレスのネットワーク部とホスト部の境界を、該当IPアドレスの上位数ビットによって自動的に決定する、クラスフルという方式が採られていました。しかし、この方式ではIPアドレスの分配を柔軟に行うことができないことから、現在では任意のビット数でネットワーク部とホスト部の境界を決めることができる、クラスレスという方式が採られています。
このクラスレスの方式を活用して、所与のネットワークをさらに小さく分割するサブネッティング、逆に所与の複数のネットワークをさらに大きく統合する集約化(アグリゲーション)を行うことができます。
- (1)サブネッティング
- 所与のIPアドレスのネットワーク部を、さらに任意のビット数だけサブネット部として延長し、ネットワークを小さなサブネットに分割する行為を、サブネッティングといいます。既存のホスト部のうち任意のビット数だけ、サブネット部として使うことになります。
- 例えば、192.168.10.0/24のネットワークについて、 サブネット部として2ビットを使用し、 4個のネットワークに分割することができます。(図1)
- (2)集約化(アグリゲーション)
- 複数の連続したネットワークを統合して、より短いプリフィクス長を持つネットワーク部に集約する行為を、集約化(アグリゲーション)といいます。
- 例えば、172.16.0.0/24、172.16.1.0/24、172.16.2.0/24、 172.16.3.0/24、の四つの連続したネットワークについて、 上位22ビットが共通していることから172.16.0.0/22という一つの集約されたネットワークに統合することができます。(図2) サブネッティング、集約化を効果的に活用することによって、 管理するネットワークの数を調整することができます。
経路制御の仕組みについて
概要
IPパケットを目的のアドレスに届けるときには、パケットのネットワーク部に着眼して宛先を判断します。それでは、IPパケットが目的のホストに到達するまでには、具体的にどのような経路を通るのでしょうか?
IPパケットは、ネットワークの経路情報を管理した表を保持するホスト毎に、バケツリレーのように転送されます。個々のホストは、インターネット上の全ての経路について把握しているわけではなく、ある宛先に向けてパケットを送信するためには、自らと隣りあっているホストのどれに転送を依頼すればよいのかを、認識しているだけです。その、宛先ネットワークと転送するべき隣接ホスト(ネクストホップ)との対応表を、経路表と呼びます。また、IPパケットの転送と、経路表の作成・更新を受け持つ機器をルータと呼びます。
経路制御が必要になる状況
ルータのネットワークインタフェースには、IPアドレスとネットマスクが管理者により設定されます。その場合、該当インタフェースに直接接続されているネットワークについては、経路表に自動的に掲載されます。
しかし、ルータのインタフェースに直接繋がっていない離れたネットワークの場合、その離れたネットワークがどこに(どのインタフェースの方向に)存在するのか、直接的な判断は不可能です。そこで、宛先ネットワークの存在する方向を経路表に載せて、経路選択を行います。
具体例として、図3を元に説明します。ルータAは複数のインタフェースを持っており、それぞれのインタフェースは、172.16.0.0/16のネットワーク(IF0の方向)、10.10.10.0/24のネットワーク(IF1の方向)に接続されています。ここで、192.168.10.0/24のネットワークに向けてIPパケットを送る際には、IF0とIF1のどちらからパケットを送ればよいのか選択しなければなりません。この選択の基準になるのが、ルータAの経路表に記載されている、“192.168.10.0/24のネットワークはIF0の方向に存在する”という情報です。この情報に基づいて、IF0からルータBに向けてパケットを転送すれば、ルータBが目的のネットワークに配送してくれることを期待できます。
以上のように、複数ある経路のうちから、最適な経路を選択する仕組みが経路制御ですが、この経路制御が無ければ、192.168.10.0/24のネットワークに向けたIPパケットはどのインターフェースから送出すればよいのか不明となり、破棄されてしまいます。
経路表
宛先ネットワークとネクストホップの対応について掲載されている表が、経路表でありますが、より細かく経路表の要素をピックアップすると、以下の項目があります。(表1)
(1)宛先ネットワーク |
(2)ネクストホップ |
(3)出力インタフェース |
(4)情報源 |
(5)メトリック |
(1)宛先ネットワーク
ホストが管理している、宛先ネットワークのエントリです。ネットワークアドレスと、ネットマスクの情報が含まれます。経路制御を実施する際には、対象となるIPパケットの宛先IPアドレスと、経路表に記載されているネットマスクを照合して、宛先ネットワークを計算します。
(2)ネクストホップ
宛先ネットワークに到達するために、次にどの隣接ルータにIPパケットを転送すればよいのかについての情報です。
(3)出力インタフェース
ネクストホップアドレスにIPパケットを送るためには、該当ルータのどのインタフェースから出力すればよいのかという情報です。
(4)情報源
経路表に記載された情報が、何の情報に基づいているのかについて示しています。例えば、ネットワーク管理者が手動で設定したものなのか、経路制御アルゴリズムにより計算した結果なのか、といった情報が記載されます。
(5)メトリック
同じ宛先ネットワークへの経路が複数存在する場合に、各経路について優先順位を付けるものです。IPパケットは、特別な理由が無ければ、最短の経路で遅延や損失無く届けられることが望ましいでしょう。そうした経路を選択する基準がメトリックです。メトリックの具体的な基準は、経路制御アルゴリズムによって異なります。例えば、RIP(Routing Information Protocol)では、通過するホストの数(ホップ数)を基準とし、ホップ数の最も少ない経路が最適であると判断します。
ルータは上述のような経路表に基づいて、適切な隣接ルータにパケットを転送していきます。隣接するルータ単位でパケットを転送していく様子を、ホップバイホップと表現します。
経路制御の分類
前項で確認した通り、ルータは経路表に基づいてパケットを転送しますが、経路制御とはこの経路表を作成・更新する管理手法ともいえます。経路表の作成原理は、大別すると「静的経路制御」と「動的経路制御」の2種類があります。
(1)静的経路制御
人間が、あらかじめ特定の経路について経路表を作成し、ルータに保持させる方法です。ダイアルアップ接続など、使用者が任意のタイミングで通信ができれば済むような場合に向いています。
また、経路表のエントリのいずれとも一致しない宛先を持つパケットを、特定のホストに転送するように経路を記載することがあります。この経路をデフォルト経路と呼びます。また、このデフォルト経路に頼って経路制御をする行為を、デフォルト経路制御と呼びます。デフォルト経路の記載が無ければ、経路表のエントリのいずれとも一致しない宛先を持つパケットは破棄されます。デフォルトとは、辞書的な定義では怠慢というネガティブなニュアンスがありますが、デフォルト経路制御については、自身が知らない経路の処理を、他のルータにお任せするというイメージで捉えることができます。
(2)動的経路制御
経路制御アルゴリズムに基づいて、ルータに経路表を管理させる方法です。経路の情報に変更があったとき(接続されているネットワークが切断された場合など)に、経路制御アルゴリズムに従い自動的に経路表を更新します。静的経路制御と比べて、アルゴリズムを動作させる稼動によりルータに負荷がかかりますが、障害が発生したときなどの、突発的なネットワーク構成に変化があった場合には、自動的に最適な経路を再計算できる利点があります。
- ・経路制御アルゴリズム
- 経路制御アルゴリズムにはいくつかの分類軸があります。
- - 自律システム内/外
- インターネットは、多数の組織がそれぞれ自律的に管理するネットワークの集合体といえますが、ある組織が管理するネットワークを自律システム(Autonomous System:AS)といいます。ISPや学術組織が、ASの具体例です。
- 経路制御アルゴリズムについても、ASの内部で完結するアルゴリズムであるのか、AS外と通信を行うためのアルゴリズムであるのかという観点から、AS内で経路情報の交換を行うIGP(Interior Gateway Protocol)と、AS間で経路情報の交換を行うEGP(Exterior Gateway Protocol)に大別されます。
- IGPの具体例としては、RIP、OSPF(Open Shortest Path First)があります。
- EGPの具体例としては、BGP(Border Gateway Protocol)があります。
- - 経路表の作成・更新原理
- また、制御アルゴリズムについては、経路表の作成・更新原理に着眼して、3種類に分類することができます。
- (1)距離ベクトル型
- 距離ベクトル型経路制御アルゴリズムでは、それぞれのルータが、隣接しているルータ同士で、宛先までの距離と、宛先に向かうネクストホップの方向(ベクトル)を交換し合います。ここでの「宛先までの距離」とは、通過するルータの数(ホップ数)のことを指します。ホップ数は、物理的な意味での距離とは必ずしも一致しませんが、本アルゴリズムでは、ホップ数が多いほど距離が離れているというロジックで経路を制御します。(図4)
- 距離ベクトル型経路制御アルゴリズムの例としては、RIPがあります。
- (2)リンク状態型
- リンク状態型経路制御アルゴリズムでは、それぞれのルータは、自身に接続されている回線(リンク)の状態を交換し合います。回線(リンク)の状態とは、ルータのインタフェースに関する状況や、接続されているネットワークの状況などです。このリンクの状態を交換することによって、各ルータはネットワークのトポロジー情報を共有することができます。各ルータは、トポロジー情報に基づいて、個々に経路表を作成します。
- リンク状態型の経路制御アルゴリズムの例としては、OSPF、IS-IS(Intermediate System - Intermediate System)があります。
- (3)パスベクトル型
- パスベクトル型経路制御アルゴリズムでは、それぞれのルータが到達可能なネットワークのエントリに加えて、各ネットワークまでの経路情報(ASの並び、ASパス)を保持します。経路情報がASの並びであるとすると、そこから経由するASの数(距離)を算出することができますので、パスベクトル型経路制御アルゴリズムは、距離ベクトル型の応用として捉えることができます。(図5)
- パスベクトル型の経路制御アルゴリズムの例としては、BGPがあります。今日のBGPの運用では、単純にASの数のみで経路を決定するのではなく、管理者のポリシーに基づいた経路制御を行うことができます。
- BGPの詳細については、JPNIC Newsletter No.35※1をご参照ください。
経路集約
冒頭で説明した、IPアドレスの構成で確認したように、連続したネットワークは、集約して一つのまとまりにすることができます。経路表は、宛先ネットワークについての管理情報の集合ですので、宛先ネットワークのエントリが減少すると、経路表も小さくなります。経路表が小さくなると、経路表の作成・保持・検索にかかる負荷が少なくなります。
経路集約による経路の伝達
AS内では、IGPで経路情報が交換されますが、ASの外に対しては、AS単位での経路の情報を対外的に知らせることができれば、AS内の細かな経路情報について知らせる必要はありません。そこで、ASから外部に対して経路の情報を伝える際に、経路を集約して情報交換することが行われます。また、ASは自律的な経路制御が行われる場ですので、AS内で経路集約を行うことは自由です。(図6)
経路制御についての話題
ここまでの基礎知識を踏まえて、最近話題となっている事項について紹介します。
経路数の増加
AS間で、BGPを用いられて交換されている経路情報は、増加の一途を辿っています。2007年末時点では、AS間でやり取りされる全経路(フルルート)の数は、24万を超えています。※2
現在稼動しているBGPルータの性能で、増大する経路情報を処理できるか、BGPの運用管理者は常に関心を払っています。また、BGPルータを更新する際には、該当機器の性能で、どのくらいの経路数まで処理することが可能なのかについても検討が必要です。
uRPF(unicast Reverse Path Forwarding)
経路制御の仕組みを応用し、送信元IPアドレスの正当性を検証することで、不正なトラフィックを遮断する技術です。
これまで述べてきたように、通常の経路制御では、ルータはパケットの宛先IPアドレスを元に経路表を検索します。このuRPFでは、パケットの送信元IPアドレスと、経路表に記載されているIPアドレス・出力インタフェースを照らし合わせ、正当でない経路から入って来たパケットを破棄することができます。(図7)
ウィルスに感染したパソコンが出す不正なトラフィックは、送信元IPアドレスが偽装されて送信されることが多いことから、送信元IPアドレスが経路表に無いパケットが来た場合は、不正なパケットであると考えられることが背景にあります。
(JPNIC 技術部 澁谷晃)
- ※1 JPNIC Newsletter No.35
-
インターネット10分講座「BGP」
http://www.nic.ad.jp/ja/newsletter/No35/0800.html - ※2 AS65000 - BGP Table Statistics
- http://bgp.potaroo.net/as1221/bgp-active.html