ルーティングとは
ネットワークでパケットを送受信するときに、
そのデータが正しく相手に届くように経路の選択を行うこと。
複数経路がある場合、ルータは目的地に最も近い相手にパケットを送る。
「目的地に最も近い相手」とはどうやって知るのか?は以下の2通りがある
- 静的ルーティング
- 動的ルーティング
静的ルーティング
手動で宛先ネットワークへの経路をルート情報に登録する方法。
管理者が宛先ネットワークへの最適なルートを手動で設定する。
スタティックルーティングともよぶ。後述の動的ルーティングより優先される。
メリット
- 管理者の思い通りに経路を制御しやすい
- ルータへの負荷はほぼなし(ルータが自分で考える必要がない)
デメリット
- 大量に経路を設定する場合は手間がかかる
- 最適経路を人間が考える必要がある
- 障害時への迂回経路への切り替えも手動でする必要がある
動的ルーティング
ルータ同士で自分が知っているネットワークの情報をやり取りし、ルーティングテーブルを作り上げる方法。
ルーティングプロトコルを使用し、他のルータに設定されているルーティングテーブルを同期し、自分のルーティングテーブルに自動で追加する。
ダイナミックルーティングともよぶ。
メリット
- 大規模ネットワークでも設定の手間が少ない
- 最適経路をルーティングプロトコルが判断してくれる(判断基準はプロトコルのルールに基づく)
- 障害時に自動で迂回経路へ切り替えてくれる
デメリット
- 複雑なネットワークの場合、管理者のルーティングプロトコルに対する深い理解が必要
(そうでないと思い通りに扱えない) - ネットワーク帯域を消費してしまう
(本来送るべきデータを送るのが遅くなったりする可能性があったが、今は機器の性能が上がりそこまで気にする問題ではなくなっている) - ルータのCPUへの負荷がかかる
ルーティングプロトコルの種類
大きく以下の2つに分けられる
- IGP
内部ネットワーク内でのルーティングテーブルのやり取りに使う。社内ネットワークなど。 - EGP
外部ネットワークとのルーティングテーブルのやり取りに使う。インターネットなど。
それぞれに特徴の異なるルーティングプロトコルがある。
ネットワーク要件などによって使い分けを行う。
今回はIGPの中でも、特にRIPとOSPFについて。
RIP
「目的地に最も近い相手」をルータの経由数である『ホップ数』を基に判断するもの。
例えばルータAは、ネットワークAに行くまでに以下の経路があるとする。
経路1.ルータBを通る経路
経路2.ルータC→ルータBを通る経路
ルータBにいく(1つのルータを経由する)のを1ホップと数える。
経路1は1ホップ、経路2は2ホップとなり、ホップ数が最小な経路1を、最適と判断する。
またルータ間で頻繁にルーティングテーブル全体を交換し合う(ルーティングアップデートと呼ばれるパケットを互いに送り合う)ことで、自分の知らないネットワークのことを他のルータから教えてもらい、自分の持っている経路情報と同期する。
★問題点
- ルーティングループ
ルータAとルータBが同じタイミングでルーティングアップデートを送り合ってしまった場合、正しく同期が行われない。
ルーティングループ発生の仕組みは以下より
RIPによるルーティングテーブルの作成 (1/2)
- 最大ホップ数
RIPの最大ホップ数は15となり、16以上ルータを中継するものは使えない。
(16以上のものは「到達不能」と判断される)
以上のことがあり、今ではあまりRIPは使われていない。
後述するOSPFが高価なときは使われていたが、今では安くなったので使われなくなっていった。
OSPF
OSPFはコスト(リンク間の帯域幅:最高通信速度)に基づいて最適経路を判断する。
コスト = 100Mbps / リンク(インターフェース)の帯域幅(bps)
以下のステップを踏む。
1. 隣接ルータにネイバー関係を確立する
2. ネットワーク全体を知るためにすべてのルータから情報を収集する(LSAというパケットを送り合う)
3. 収集した情報をとポロジテーブルに格納する
4. トポロジマップから、ネットワーク構成図を作成する
5. ネットワーク構成図から最短経路を計算し、最短パスをルーティングテーブルに登録する
RIPより以下のメリットがある。
- 経路変化が起こった時の経路情報の収束が速い(差分のみ送り合う)
- RIPほどの頻繁な情報交換がなく、ネットワークへの負荷が軽い(30分に一回程度)
- ルーティングループが発生しない(管理者の設定ミスは除く)
- メトリック値の上限がない(RIPでは15ホップ)
- 複数経路で負荷分散が可能
おわり。
最後に
ルーティングを深く掘り下げたことがなかったので、すべて新鮮でした。
けどやっぱり難しそう。。。