単純なことなんだけど、、、
あらためて、ルーティングってことを考えてみる。
(というか、ルータやL3スイッチの動作)
あらためて、ルーティングってことを考えてみる。
(というか、ルータやL3スイッチの動作)
登場人物として
PC1
IPアドレス 192.168.3.100
サブネットマスク 255.255.255.0
デフォルトゲートウェイ 192.168.3.1
PC2
IPアドレス 192.168.2.100
サブネットマスク 255.255.255.0
デフォルトゲートウェイ 192.168.2.1
ルータ
インターフェース eth1
IPアドレス 192.168.1.1
サブネットマスク 255.255.255.0
インターフェース eth2
IPアドレス 192.168.2.1
サブネットマスク 255.255.255.0
インターフェース eth3
IPアドレス 192.168.3.1
サブネットマスク 255.255.255.0
状況としてPC1からPC2にパケットを投げたいとする。
(1) PC1は自分のルーティングテーブルを確認して、パケットをデフォルトゲートウェイ(192.168.3.1)に投げなければいけないことを確認する。
(2) 192.168.3.1のMACアドレスが判らないので、192.168.3.1宛にARPリクエストを送る。(この時、DstMacアドレスはブロードキャストアドレスを使う)
(3) ブロードキャストパケットを受け取ったルータは自分宛(192.168.3.1)のARPリクエストであることを確認して、自身のMacアドレスをSrc MacとしてARPリプライパケットを返す。
(4) PC1はARPリプライパケットを受信して、ルータ(192.168.3.1)のMacアドレスが00-00-5e-00-01-03であることを知る。
(5) PC1はPC2(192.168.2.100)宛のパケットを送信する。このとき、Src IP、Dst IP、Src Macは自分とPC2のIPアドレス、自分のMacアドレスを使用するが、Dst MacとしてはルータのMacアドレスを使用する。
(6) ルータは自分のMacアドレス宛に来たパケットなので、それを受け取る。(実は、IPアドレスの部分は見てません・・・)
(7) ルータは自分のルーティングテーブルを確認して、パケットをeth2インターフェースに転送すればいい事を確認する。前提として、ルータはIPルーティング(もしくはIPフォワーディング)機能が有効になっていることが必要。
※ 通常のルータはインターフェースの数にかかわらず、ルーティングテーブルは1つしか存在しないが、一部の機器では仮想ルータ(Virtual Router)機能を備え、内部的に仮想の複数のルータが存在する・・・ような機器もある。
(8) ルータはARPテーブルを確認し、192.168.2.100のMACアドレスが判らないので、192.168.2.100宛にARPリクエストを送る。(この時、DstMacアドレスはブロードキャストアドレスを使う)
(9) ブロードキャストパケットを受け取ったPC2は自分宛(192.168.2.100)のARPリクエストであることを確認して、自身のMacアドレスをSrc MacとしてARPリプライパケットを返す。
(10) ルータはARPリプライパケットを受信して、PC2(192.168.2.100)のMacアドレスが00-00-22-22-22-22であることを知る。
(11) ルータはパケットのDst MacアドレスをPC2のMacアドレス、Src Macアドレスを自身のeth2インターフェースのMacアドレスに書き換えて、パケットを送信する。このとき、パケットをルーティングしたのでTTLを1つ減らす。(結果、TTLが0になる場合はパケットを破棄し、発信元にICMPメッセージでTTL Expireを返す)
・・・・と。
これだけなんだけど。
さすがに毎回これをやってる訳ではなく、ARPリクエストの結果はある程度の時間PCもルータもARPテーブルにキャッシュしてそれを利用している。
また、毎回ルーティングを確認して、パケットを書き換える・・・という作業をCPUがソフトウェアで実施していたら、ルータのCPUの負荷が高くなるし処理も遅くなる。L3スイッチの場合はその部分をハードウェア(ASIC)で行うことで、転送速度を向上させている。
ちょっと余談だが、Ciscoではルータ(3600以上)とMLS(Multi Layer Switching)に対応したCatalyst5000/6000などのL2スイッチを組み合わせることで、L3スイッチと同等のASIC処理を行うことができる・・・という仕組みを持っている。この場合は1回目のパケット転送はルータで行うが、2回目以降はL2スイッチが行うという・・・ルータとL3スイッチの折衷案のような仕組みがある。IP マルチレイヤ スイッチングの設定例
これだけなんだけど。
さすがに毎回これをやってる訳ではなく、ARPリクエストの結果はある程度の時間PCもルータもARPテーブルにキャッシュしてそれを利用している。
また、毎回ルーティングを確認して、パケットを書き換える・・・という作業をCPUがソフトウェアで実施していたら、ルータのCPUの負荷が高くなるし処理も遅くなる。L3スイッチの場合はその部分をハードウェア(ASIC)で行うことで、転送速度を向上させている。
ちょっと余談だが、Ciscoではルータ(3600以上)とMLS(Multi Layer Switching)に対応したCatalyst5000/6000などのL2スイッチを組み合わせることで、L3スイッチと同等のASIC処理を行うことができる・・・という仕組みを持っている。この場合は1回目のパケット転送はルータで行うが、2回目以降はL2スイッチが行うという・・・ルータとL3スイッチの折衷案のような仕組みがある。IP マルチレイヤ スイッチングの設定例



コメントする