
ブロードバンドルータで理解するTCP/IPルーティング
連載:ルータの仕組みを学ぼう
第2回 イーサネットとルーティング
加地眞也
2001/6/21
連載の第1回(「ルータの役割とIPネットワークの仕組み」)で述べたように、IPネットワークはノードとノードをつなぐ。だがそれを実際のネットワークで実現するには、さらにもう1つの仕組みが必要だ。それは、物理的なネットワークとの連携である。
■ネットワークは1つではない
よく比喩されることだが、IPアドレスは「住所」のようなものだと思っていい。ただし、住所は1丁目から番号順に並んでいるため所在地が容易に特定できるかもしれないが、IPアドレスの場合はそうはいかない。世界中のどこでどのような番号が使われているか、番号を見ただけですぐには分からないのだ。実はこれこそが、ルーティングの仕組みを理解するための第一歩である。
ということは、IPアドレスで通信をするのに必要なことが幾つかあるのが分かるはずだ。
- どこに通信相手がいるのか
- どのようにしてそのIPアドレスを持つ相手までデータを届けるのか
といった情報や仕組みが必須となる。
それを知るためには、IPネットワークと物理的なネットワークとの関係を理解する必要がある。ここで登場するのが「イーサネット(Ethernet)」である。
皆さんが使っているPCやブロードバンドルータを見てみると、まずケーブルを用いてPCからブロードバンドルータへとつながっており、その先はADSL網を経由して再び別のルータへとつながっている。さらに幾つかのルータを経て、Webサーバなどへと接続されている。
●物理的に接続されたノード同士の通信を行うイーサネット
ここで重要なのは、実はネットワークとは「複数の物理的なネットワークが相互に接続されたもの」だということだ。ネットワーク同士を接続する回線がADSL網なのかネットワークケーブルなのかの違いはあるものの*1、一般にルータがそれぞれの間に入って複数の小さなネットワーク同士を接続し、より大きなIPネットワークを構成している。これがもっとも一般的なネットワーク、つまりインターネットの形なのである。ルータとは、複数のネットワークを接続しIP通信を中継する中継基地なのだ。
小さなネットワーク、という書き方をしたのには理由がある。例えばPCとルータの間(つまりノード間)の接続には、IPネットワークとは別のプロトコルも介在しているのだ。これが前述の「イーサネット」である。図1のネットワーク階層図では、ネットワーク/リンク層に位置している。
![]() |
| 図1 ネットワーク階層図 |
イーサネットは、10BASE-T/100BASE-TXで使われるような「ツイスト・ペア・ケーブル」や、10BASE-5などと呼ばれる同軸ケーブルなどの物理的な配線で通信を行うことを前提に考えられたプロトコルだ。階層図では最下位の物理層がこれを示している。
イーサネットと一言でいっても、実際には「Ethernet II」「IEEE802.3」「IEEE802.2」などの各種仕様が存在している。現在はEthernet IIが多く用いられているが、原理はほぼ同じだ。ここではイーサネットとして総称することにする。このイーサネットは、PCからルータへ、あるいはルータからルータなど、あるネットワーク内で物理的に接続されたノード間での通信を行うためのプロトコルである。つまり、こうした小さな通信が連なることで、遠く離れた国のサーバまで接続されているのだ。
このような通信を実現するために、PCに挿入するNIC(ネットワーク・インターフェイス・カード)やルータなどの接続ポートには、それぞれ識別番号が割り当てられている。これを「MACアドレス」と呼ぶ。もちろん、IPアドレスとは異なる番号だ。
![]() |
| 図2 MACアドレスのフォーマット |
| 画面1 メルコ BLR-TX4でのMACアドレスの確認例。ポートを2つ持つのでそれぞれのMACアドレスが設定されている |
![]() |
| 画面2 Windows 2000では「ipconfig /all」コマンドで、搭載されているNICのMACアドレスが確認可能だ(Windows 9xでは「winipcfg.exe」) |
MACアドレスは、それぞれのNICが持つ固有の番号だと思ってよい。IPアドレスと同様に全世界でユニークとなるように、各ネットワーク機器メーカーが、製品の出荷時に固有の番号をあらかじめ割り振っている。
●イーサネットの通信単位
イーサネットでの通信では、「フレーム」と呼ばれるデータ単位が用いられる。呼び方は異なるが、IPネットワークの「パケット」と考え方は同じだ。フレームには送信データが格納されるほか、送信先MACアドレスと送信元MACアドレスを含む。この送信データとは、実は「IPパケット」のことである。IPパケットを包含したフレームは、ノードからノードへとデータを順に受け渡し、最終的には目的のノードへとIPパケットを届けるのだ。例えるなら、バケツリレー式にバケツの中の水だけを順々に受け渡していくようなものだと思えばよい。
このような流れを物理ネットワーク分繰り返し、最終的に目的の送信先ノードへとデータ(IPパケット)が到達した時点で、ノードは送信先IPアドレスから自身へのデータであることを知り、パケットを受け取って上位のプロトコル(を担当するプログラム)へと転送するのである。
こうしたイーサネットでの通信が行われる物理ネットワークの最小単位を「セグメント」と呼ぶ。ここで、フレームはあくまで1つのセグメント内でしか有効でない点に注意しよう。最後まで到達するのは、あくまでIPパケットだけだ。バケツリレーの例でも、受け渡しているのは水だけなのだ。
|
■経路とルーティングテーブル
ネットワーク、特にインターネットにおいては、先のバケツリレーの際に複数の「経路」が存在する場合がある。つまり、経由するセグメントの組み合わせが複数有り得るということだ。あるいは、たとえ経路が1つしかないとしても、IPアドレスが間違っているなどの理由で、本当に届くのかどうかはIPアドレスの情報だけでは分からない。
こうした経路選択のために、通常、ルータは「ルーティング・テーブル」と呼ばれる内部情報に「どのIPアドレスへは、どのルータにフレームを転送すべきか」の情報を保持し、通信時に使用する。
![]() |
| 画面3 ルーティング・テーブルの例。Windowsなどでは「netstat -rn」コマンドや「route」コマンドでPCでのルーティング・テーブルが参照可能だ(画面をクリックすると拡大表示します) |
ルーティング・テーブルは、「送信先IPアドレス」と「担当ルータのIPアドレス」のマッピング表である。あらかじめ各ノードがそれぞれこうした情報を用意することで、ネットワーク間の経路を決定できるようになる。しかし、全社ネットワークなど大規模なネットワークを想定した場合、自分以外のすべてのIPアドレスを把握しなければならないとすると、このルーティング・テーブルは膨大な大きさになる。この解決法を知るには、まず「サブネット」について理解しなくてはならない。
●サブネットマスク
IPアドレスには番号を割り当てる際のルールがあり、前半を「ネットワーク番号」、後半を「ホスト番号」として構成することになっている。
![]() |
| 図3 IPアドレスにおけるネットワーク番号とホスト番号 |
このようなルールによってグルーピングされた一群のIPアドレスを「サブネット」と呼ぶ。また、ネットワーク番号の範囲を指定するのが「サブネットマスク」と呼ばれるIPアドレスのような数字だ。サブネットマスクでは、ネットワーク番号部分のビットを1として指定する。あるいは、その1のビットの長さを用いて「192.168.10.100/24」などとして、そのIPアドレスでは24ビットまでがネットワーク番号であることを示すこともある。この例では「255.255.255.0」と同じ意味だ。
ネットワーク番号の範囲は、そのIPアドレスがどの「クラス」(コラム参照)に所属しているかで、最小範囲が決まる。また、管理者がサブネットマスクを設定する(設定はそれぞれのノードごとに必要)ことで、その範囲の変更も行える。サブネットの範囲が変われば認識できるホストの数も変わるので、ネットワーク構築時の大きなポイントとなる。
さて、上記のルーティング・テーブルにはノード(ホスト)のIPアドレスだけでなく、ノードのサブネットも記載できるようになっている。IPアドレス自体が記載されていなくとも、そのIPアドレスが所属するサブネットのエントリーさえあれば、その経路で送信すればよいからだ。またそのために、同じサブネットに所属するIPアドレスを持つノードは、同一のセグメント内にすべて配置される必要があることに注意しよう。
![]() |
||||||||||||||||||||||||||
| ●ルータA内での処理 「10.10.10.2」の宛先自体は登録されていないが、3行目に「10.10.10.0」のサブネットが登録されていることは分かる。そのため、「10.10.10.2」は必ずこのサブネットにいることが推測できる。そこで、Interfaceとして指定されている「10.10.2.11」のポートからGatewayとなっている「10.10.2.10」のルータAのポートへ、イーサネット・フレームを転送してやればよい |
||||||||||||||||||||||||||
●ルーティングテーブル例(ルータA)
|
||||||||||||||||||||||||||
| 図4 ルーティング・テーブルによるルーティングの例。「10.10.1.2」のノードでは、デフォルトゲートウェイとして「10.10.1.1」を指定していれば、あとのルーティング処理はルータAが行ってくれる |
このようなサブネットの利用で、ルータは同一セグメント内のすべてのIPアドレスを把握しなくとも、サブネット単位で管理すればよいのだ。これにより、ルーティング・テーブルは必要最小限度の大きさで済むことになる。
|
■ダイナミック・ルーティング
こうしたルーティング・テーブルの設定は、個々のマシンやルータごとに行う必要があるが、「RIP(Routing Information Protocol)」というプロトコルを用いるプログラム(UNIXなどではroutedが一般的)を動かすことによって、ルータやノード間で自動的にルーティング・テーブル情報を交換して、テーブルを自動更新させることもできる。現在では、RIP2*2と呼ばれるバージョンが主流だ。結果的に、自身が管理するセグメントでの情報さえ正確に記載しておけば、ネットワーク全体のルーティングテーブルが自動的に作成されるわけだ。
こうした仕組みを「ダイナミック・ルーティング」と呼ぶ。これに対し、ユーザーや管理者が手動でルーティング・テーブルを作成/管理する方法を「スタティック・ルーティング」と呼ぶ。ブロードバンドルータでも、いずれかの方法の選択が可能だ。通常は、ルーティングを手動で行うか、RIPで行うかなどの設定ができるようになっている。また手動の場合は、ルーティング・テーブルの追加/削除を行うオプションが用意されている。
![]() |
| 図5 ダイナミック・ルーティングの動作。ルータCから、B→Aへと順にルーティングテーブルのエントリーが転送されていく様子を示している。Metricが転送されるごとに1ずつ増え、距離がそれだけあることが分かる。この例では、CからAへの一方向しか示してないが、もちろん双方向でこうした自動転送が行える |
ただし、ほとんどの場合、ブロードバンドルータとつながるISP側のルータでは、独自に最適化されたルーティング・テーブルを採用している。気軽にダイナミック・ルーティングにしたり、ルーティング・テーブルを変更することは、ISP全体に悪影響を及ぼす可能性が高いので、通常はスタティック・ルーティングとしておき、それ以上変更する必要はほとんどないだろう。
![]() |
| 画面4 メルコ BLR-TX4のルーティング設定画面。上段ではダイナミックかスタティック・ルーティングかを指定できる。下段ではスタティック・ルーティングのためのルーティング・テーブルが管理可能だ |
●デフォルトゲートウェイ
ブロードバンドルータに接続するPCでも、同様にこうしたルーティングの仕組みが動作しており、ルーティング・テーブルを元にしたルーティングが行われている。しかし、その保守は通常のルータほど複雑なものにはならない。それは「デフォルトゲートウェイ」という考え方があるためだ。
デフォルトゲートウェイとは、「ルーティング・テーブルに載っていないIPアドレスへの送信時に、最終的に利用するルータのIPアドレス」のことだ。ルーティング・テーブルは保持するものの、ほとんどのPCではデフォルトゲートウェイとしてブロードバンドルータを指定しさえすれば、通信できるようになっている。なぜなら、外部との出口はそのブロードバンドルータでしかありえないからだ。
こうしたデフォルトゲートウェイのみの設定は、部門ネットワークやSOHO環境など、セグメントの比較的小さなネットワーク環境では標準的な設定である。
|
|
|
| 【お詫びと訂正】 画面2の注釈で「Windows 2000では「ipconfig -a」コマンドで、搭載されて〜」となっていましたが、ipconfigコマンドのオプションは「ipconfig /all」の誤りでした。ここに訂正させていただき、ご迷惑をおかけした読者の方々にお詫びさせていただきます (2001/10/27) |
| 「Master of IP Network総合インデックス」 |
TechTargetジャパン
- 実機では測定できない性能を測定? (2012/2/7)
システムの完成前に、達成し得る性能値や必要なサーバリソースを知るには? その解となる「性能シミュレーション技法」を解説 - 性能チューニング個所の検討 (2012/1/30)
アプリのチューニングや環境増強で、どの程度改善が見込める? 今回からは「実際に活用できる性能対策」を解説します - 遅いところを直すだけでいいのですか? (2012/1/24)
負荷が集中したときの性能ボトルネックを改善するのに、アプリケーションサーバとDB、どちらを優先すべきでしょう? - cloudfoundry.comを使ってみよう (2012/1/19)
VMwareが提供するPaaSプラットフォーム「CloudFoundry」。注目を集めるこの基盤を活用してPaaSを構築!
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -








