クラスフルとクラスレス
ルータが交換するルート情報の中に、サブネットマスクの情報が含まれるかどうかによって、ルーティングプロトコルは以下の2種類に分類される。
- クラスフルルーティングプロトコル
- クラスレスルーティングプロトコル
クラスフルルーティングプロトコルは、原則としてクラス単位でネットワークアドレスを認識する。クラスがわかれば、どこまでがネットワークアドレスであるかがわかるので、サブネットマスクの情報は不要である。そのため、クラスフルルーティングプロトコルが交換するルート情報には、サブネットマスクを含まない。
また、クラスフルルーティングプロトコルでは、可変長サブネットマスク(Variable Length Subnet Mask:VLSM)をサポートしない。固定長サブネットマスク(Fixed Length Subnet Mask:FLSM)の環境でのみ利用できる。クラスフルルーティングプロトコルの代表例はRIPv1である。
一方、クラスレスルーティングプロトコルは、ネットワークアドレスをクラスレスなアドレスとして扱う。ということは、ネットワークアドレスはかならずしも8ビット単位になるわけではない。そのため、ルータ同士が交換するルート情報の中にサブネットマスクを含めて、ネットワークアドレスの区切りを明確にする必要がある。クラスレスルーティングプロトコルの例としては、次のプロトコルが挙げられる。
- RIPv2
- OSPF
- IS-IS
- EIGRP
- BGP
こうしたクラスレスルーティングプロトコルは、VLSMの環境をサポートできる。表2に、クラスフルルーティングプロトコルとクラスレスルーティングプロトコルの特徴についてまとめた。
RIPの動きを見てみよう
では実際に、RIPによるルーティングテーブルのコンバージェンスは、どのように行なわれるのだろうか。ここでは5台のルータがある環境を想定して、ネットワークAの情報が各ルータに伝播する動きを解説しよう(図3)。
まず、ネットワークAがつながっているルータAは、隣接するルータ(ルータBおよびC)に対して、「ネットワークAが直結している」という情報を送信する。次に、この情報を受け取ったルータBは、自身につながっているネットワークの情報(ここでは簡略化のために省いている)に加えて、「ネットワークAにパケットを送るなら、私の隣のルータが使える」という情報を、隣接するルータEに送る(ルータAにも送る)。このとき、「隣」という情報を伝えるために、ルータBがルータEに送るルータAの情報には、「ホップ数(ホップ数は中継するルータの数で、RIPではこのホップ数が小さいと「より近い経路である」と判断する)」が1つ追加される。これで、ネットワークAの情報がルータEまで伝わったわけだ。
今度は図の下の経路に注目してみよう。ルータCは、ルータBと同様に自身の情報をプラスしつつ、ルータAからの情報にホップ数を1つ加えたものをルータDに送る。ルータDは、ルータAからの情報を含むルータCからきた情報にホップ数を1つ加えてルータEに送る。これで、ルータAにつながったネットワークAに関する情報が、すべてのルータに伝わったことになる。
ここで、ルータEに注目したい。ネットワークAに関して、ルータBとルータDから2つの情報が届いていることがわかるだろうか。これはインターネットの世界ではよくあることで、いつのまにかネットワークがリング状になっていると、このようなことがいくらでも起こりえるのだ。
では、ルータEはどのように判断するのだろうか。ここで重要になるのがホップ数だ。RIPでは、ホップ数が小さい経路が最適と判断する。そのため、ルータB経由で届いた「ホップ数が3」という情報とルータD経由の「ホップ数が4」という情報を比較して、「ネットワークAにパケットを送るには、ルータB経由が最適経路である」と判断して、ルーティングテーブルに記録する。
各ルータにつながったネットワークに関する情報は、このようにしてルータ越しにリレーされて伝わっていくのだ。
この連載の記事
-
第8回
ネットワーク
HTTP、FTP、SMTP、SIPはどう動くの? -
第7回
ネットワーク
帯域を効率的に利用するTCPの仕組みとは? -
第6回
ネットワーク
TCPのコネクションとはなんですか? -
第5回
ネットワーク
TCPのキモはコネクションとポート番号 -
第3回
ネットワーク
特別なIPアドレスって知っていますか? -
第2回
ネットワーク
TCP/IPはどのように普及していったの? -
第1回
ネットワーク
TCP/IPの基礎の基礎を理解していますか? -
ネットワーク
TCP/IPまるわかり - この連載の一覧へ