はてなブックマーク Yahoo!ブックマークに登録  印刷
   
連載
基礎から学ぶWindowsネットワーク

2.ルーティング

デジタルアドバンテージ
2003/02/21


ルータによるIPパケットのフォワード

 ルータの処理を簡単にいうと、「IPフォワード(IP forward)」の繰り返しによるIPパケットのネットワーク・インターフェイス間での転送である。IPフォワードとは、あるネットワーク・インターフェイスから受信したIPパケットを、別のネットワーク・インターフェイスへ転送・送出する動作をいう。このときに、どのネットワークへ送出するかを決めるためにルーティング・テーブルが使われる。

 ルータでは、受信したIPパケットの「あて先」のIPアドレスを取り出し、それがルーティング・テーブル中のどのエントリと一致するかを判断する(「送信元IPアドレス」ではなく、一般的には「あて先IPアドレス」だけに基づいて判断する)。

 次の図を見てもらいたい。例えば左側のネットワーク・インターフェイスから入ってきた「10.1.1.2あてのパケット」は「10.1.1.0/24」のネットワークに含まれるので、上側のインターフェイスへと中継され、送信される。同様に「192.168.1.20あてのパケット」は下側のインターフェイスへと中継、送出される。どのエントリとも一致しない場合は、デフォルト・ゲートウェイへ向けてパケットが送信される。

IPパケットのフォワード
ルータは、受信したパケットの「あて先」アドレスを見て、該当するネットワーク・インターフェイスに転送、送出する。これをIPフォワードという。ルーティング・テーブル中に一致するエントリが見付からない場合は、デフォルト・ゲートウェイへ向けて再送信する。

■あて先ネットワークの判定
 ルーティング処理では、あて先IPアドレスがルーティング・テーブルのどのエントリと一致するかを判断しなければならない。このためには、大小関係を使った比較処理ではなく、「第7回 IPアドレスとネットマスク――2.IPアドレスとネットマスク」で述べた、AND演算処理が使われる。

 この処理では、まずルーティング・テーブルのエントリを1つ取り出し、その中の「ネットマスク」と対象とするIPパケットの「あて先IPアドレス」に対してAND演算を行う。この結果取り出された値を、エントリ中の「ネットワーク・アドレス」を比較し、同じならばそのエントリと一致したと見なす。

 例えば図中のの例を見てみよう。IPパケットのあて先IPアドレスは「10.1.1.2」であり、ルーティング・テーブルから取り出したエントリが「10.1.1.0/255.255.255.0」であるとする。IPアドレスとネットマスクをAND演算して、ネットワーク・アドレスと同じかどうかを確認する。

 
1.あて先 00001010.00000001.00000001.00000010
2.マスク 11111111.11111111.11111111.00000000
3.1と2をAND演算 00001010.00000001.00000001.00000000
4.ネットワーク・アドレス 00001010.00000001.00000001.00000000
あて先「10.1.1.2」とエントリ「10.1.1.0/255.255.255.0」の比較

 この結果、3と4の値が一致するので、このあて先IPアドレスは、ルーティング・テーブルのエントリ「10.1.1.0/255.255.255.0」と一致することが分かる。同様にエントリ「172.16.1.0」と比較してみると次のようになる。

 
1.あて先 00001010.00000001.00000001.00000010
2.マスク 11111111.11111111.11111111.00000000
3.1と2をAND演算 00001010.00000001.00000001.00000000
4.ネットワーク・アドレス 10101100.00010000.00000001.00000000
あて先「10.1.1.2」とエントリ「172.16.1.0/255.255.255.0」の比較

 この場合は、3と4の値は一致しないので、このエントリは該当しないということが分かる。

 このように簡単なAND演算と比較演算だけで一致を判定することができるので、速度が要求される高性能ルータでは、これをハードウェア回路化して、高速にルート情報の検索を行えるようにしているものも多い。

ルータによって相互接続されたネットワーク

 ルータの動作原理は、以上で述べたように、非常に簡単なものである。2つのネットワーク・インターフェイス間でパケットをIPフォワードしているにすぎない。そのため、お互いに通信をしたいコンピュータがあるルータを介して相互にネットワーク接続されていれば、ルータがパケットを1回フォワードするだけで、お互いに通信することができる(ここでいう通信とは、IPパケットを相手に正しく届けることができる、という意味。IPパケットが戻ってくるためには、逆方向のルートもきちんと設定されていなければならない)。

 それでは、複数のネットワークがルータで相互に接続されたもっと大規模なネットワーク(インターネットなど)の場合はどうであろうか。実はこの場合も原理は簡単である。経路の途中にあるルータが、ちょうどバケツ・リレーのように、必要な回数だけIPフォワードを繰り返せば、IPパケットは最終的なあて先まで届けられることになる。インターネットは世界中に網の目のように張り巡らされているが、その基本原理はこのようなIPパケットのバケツ・リレーによる転送である。IPパケットを受け取ったルータはその「あて先IPアドレス」に基づいて、どのネットワークへフォワードするかを決め、パケットを送信する。そのネットワークの先にはやはりまた別のルータがいて、同じようにパケットを受信し、あて先を判断して送信という動作を繰り返している。こうやって世界中へパケットが届いているのである。

ルータによって相互接続されたネットワーク
複数のLANセグメントがあるネットワークは、相互にルータを介して接続することによって、お互いに通信することができる。ほかのセグメントあてのパケットはルータがそれを隣接するセグメントへ転送する。場合によっては複数のルータ間で次々と中継され、目的のネットワークまで届けられる。この場合、下側のルータは、インターネットへ送信するためには172.16.2.1のルータへ送信しなければならないということを知っている(ルーティング・エントリが用意されている)。IPアドレスやネットマスクはもちろんのこと、デフォルト・ゲートウェイ・アドレスもLANごとに異なる値になるので、正しく設定されていないとほかのセグメントと通信ができなくなる。

 この図にあるPC1から送信する場合()、同一LAN(172.16.2.0/24)あての通信の場合はそのまま自分のネットワーク・インターフェイスからLAN上へパケットを送信すればよい。だが、インターネットあての通信を行いたい場合は、インターネットとの接続点にあるデフォルト・ゲートウェイ(172.16.2.1)へパケットを渡す。そうすれば、その後のパケットのルーティングはすべてルータが処理してくれる。

 図の下側にあるPC2がインターネットと通信したい場合は()、下側のルータ(172.16.3.1)にパケットを送信すればよい(下側のルータは、インターネットへ到達するためには172.16.2.1のルータへフォワードすればよいことを知っているものとする)。そうすれば、このルータはさらに172.16.2.1のルータへとパケットを転送し、インターネットへの送信される。このように、デフォルト・ゲートウェイは各ネットワーク・ごとに異なるルータになる。各ノードに付けるIPアドレスやネットマスクがその属しているネットワークごとに異なるように、デフォルト・ゲートウェイ・アドレスもやはりネットワークに依存して変わることになるので、間違えないようにしなければならない。もしPC2のデフォルト・ゲートウェイ・アドレスとして172.16.2.1を与えてしまうと、PC2からは直接172.16.2.1に到達することができないので、同一LANあて(172.16.3.0/24あて)以外の通信は一切できなくなってしまうだろう。End of Article


 INDEX
  [連載]基礎から学ぶWindowsネットワーク
  第9回 IPルーティング
     1.ルータ
   2.ルーティング
 
 連載
Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード


スキルアップ/キャリアアップ
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  New! 納得の開発環境「MyEclipse」で構築する
Amazon Webサービスを利用したECサイト!

  New! “予防”と“発見”で強化する内部統制
――@IT主催内部統制セミナー詳細

  「番次郎さん、WSSが使えそうです!」
“いぶき”がついに、難題突破口を発見!

  ORACLE MASTER取得者へ林優子氏が指南!
「次に身に付けるべきスキルとは……」

  フロントシステムの4つの課題を解決!
企業システムでAjaxが実用化段階に

  サン&オラクル推奨のデータベース環境。
驚きのパフォーマンス性能に迫る!

  2008年:これが成功するITエンジニア像だ!
〜エンジニア・キャリア進化論(第2回)〜

  オープンソースのアプリケーションサーバ
GlassFishのレシピを紹介します!

  「地方のエンジニアも幸せにしたい」
その思いがニアショア開発へとつながった

  「学ぶ」だけで「経験」が身に付く?
ITエンジニアの私が大学に入学した理由

  ■ メール管理者の悩みを軽減する! ■
情報漏えい、スパム対策の最新アプローチ

  マーケティングのプロがSPSSを選んだ
理由:「プロでなくても使えるから」

  フリーエンジニアのための社会保険入門
万が一の時、リスクにどう備えるべきか?

  ■ボトルネックバスターズ 2■ 連載 第2話
「彗星寺先生」現る!――答えはどっちだ!?

  障害の発生前に事前通知!!復旧時間を
早める切札で、サーバ管理がラクになる!