ルータ(スタティックルーティング)
目次
ルーティングテーブルを・・・
ルータが経路選択、つまりルーティングを行うためにはルーティングテーブルが必要です。これには、あて先のネットワークや次にどのルータにデータを渡せばいいかという情報が入っています。
このルーティングテーブルをネットワーク管理者が手動で設定するのが「スタティックルーティング」です。
ルーティングテーブルの設定
下の図のようなネットワークを考えてみます。
2台のルータA、Bで 10.0.0.0/8 と 20.0.0.0/8 と 30.0.0.0/8 の3つのネットワークを接続しています。
ルータは、自分が直接つながっているネットワークの情報は知っています。ルータのポートにIPアドレスを設定するとそのネットワークへの経路は自動的にルーティングテーブルに追加されます。
しかし、これ以外のネットワークは知りません。そうすると、困ったことになります。
たとえば、このときルータAに 30.0.0.0/8 あてのデータがやってきたとします。ルータAはルーティングテーブルを見て、どこに送ればいいのかなぁと考えるのですが、その情報はありません。そうすると、ルータはそのデータを捨ててしまいます。ただ、単に捨てるのはあんまりなので、「そのあて先はわかりません」というエラーメッセージを送信元に送り返します。ちなみに、このとき ICMP というプロトコルを使います。
30.0.0.0/8 へデータを届けるためには、ネットワーク管理者がそのあて先をルータに教えてあげる必要があります。図で言うと、ルーティングテーブルの青い部分です。30.0.0.0/8 あてのデータはルータBに渡すという情報をルーティングテーブルに追加します。そうすれば、ルータAは 30.0.0.0/8 のデータはルータBに渡します。ルータBにとっては、30.0.0.0/8 のネットワークは自分に直接つながっているので、データを送り届けることができます。
さらに、ルータBにも 10.0.0.0/8 への経路を登録してあげる必要があります。そうじゃないと「行きはよいよい帰りは怖い」ってな感じで返事が返せなくなってしまいます。pingコマンドなどは、行き帰りができないとエラーになってしまいますね。つまり、スタティックルーティングでは、ネットワーク上のすべての経路について各ルータにその経路を設定してあげなくてはいけません。
すると、少し考えればスタティックルーティングはとっても大変なんですね・・・
スタティックルーティングの面倒
このネットワーク環境にあらたにルータCを追加して、40.0.0.0/8 のネットワークを拡張した場合を考えます。
このときルータA、Bは 40.0.0.0/8 のネットワークへの経路を知りません。同じようにルータCは 10.0.0.0/8 への経路、30.0.0.0/8 への経路を知りません。
ですから、この場合は 10.0.0.0/8 、30.0.0.0/8 、40.0.0.0/8 のネットワークは相互に通信を行うことができないわけですね。
では、通信を行うためにどうすればいいか?
ネットワーク管理者がルータA、B、Cに各ネットワークへの経路を教えてあげないといけないわけですね。ルーティングテーブルに各ネットワークへの経路を追加した様子が次の図です。
いまの例だと、もともとルータ2台のネットワークに1台追加したので、設定を変える必要があるのが合計で3台のルーターになります。これがもし、10台、20台・・・というようにネットワークの規模が大きくなればなるほど、その設定作業がめんどくさくなるのは、想像できますよね?
ルータを追加するだけでなく、たとえば、ネットワークのアドレスが変わったときなどもネットワーク上のすべてのルータの設定の変更が必要になってきます。そうすると、ネットワーク管理者の仕事がルーティングテーブルの書き換えだけで終わってしまうってなことにもなりかねません。
つまり、スタティックルーティングではネットワークの構成の変化に柔軟に対応できないというところがデメリットになるわけですね。
こんなことやってられない、なんとか楽にルーティングテーブルを作る方法がないんだろうか?ということからダイナミックルーティングにうつっていくわけですね。
ダイナミックルーティングでは、ルータ同志で話をさせて、ルーティングテーブルを自動的に作っていくことになります。