L3SWによるVLAN間ルーティングの考え方

L3SWというからにはレイヤ3の機器である。つまり、レイヤ3までを理解する機械である。 ということは、内部モジュールにそれぞれレイヤ1,2,3に相当する部分が存在する。 これをうまく利用してVLAN間ルーティングを行うわけだ。

  • レイヤ1: 物理ポート
  • レイヤ2: VLAN
  • レイヤ3: 内部ルータ

端的に言ってしまえば、内部ルータを利用してそれぞれのVLANに転送します。以上終わり。 但し、ルータを使わずL3SWを使っているのは速度を出したいからで、内部的には結構工夫して高速化している。

レイヤが異なるので、それぞれのレイヤをまたいだ処理を行うためには連携する必要がある。 まず物理ポートとVLANを結びつけ、VLANと内部ルータを結びつける。 VLANと内部ルータの結びつけ方の工夫をすることで高速化している。 この結びつけ方はCCNPレベルでは3種類覚えておけばいい。

  • プロセススイッチング
  • ファストスイッチング
  • CEF(Cisco Express Forwarding)

下に行くほどより高速な手法である。 CEFは名前から分かるとおりCisco独自の手法。

これらのメカニズムの違いを理解するためには、まずスイッチの内部構造を知らなければならない。 スイッチのモジュールは下図のようになっている。

コントロールプレーンは汎用CPUやメモリ、Supervisor IOSで構成されており、 スイッチ全体を統括している。

データプレーンはASIC(Application Specific Integrated Circuit)と TCAM(Ternary Content Addressable Memory)で構成される。 TCAMに格納されたデータをASICで読み込み、パケットを転送する。

ルーティングはコントロールプレーンでの処理が基本となるが、 汎用CPUを利用するため、他の処理の空き時間に処理を行うことになる。 結果として低速になってしまう。 そのためコントロールプレーンでの処理をいかに減らし、 データプレーンにあるデータを読み込むだけで済ませるかが高速化の基本となる。

プロセススイッチング プロセススイッチングは毎回コントロールプレーンにアクセスする方式である。 一番単純で一番遅い処理になる。

ファストスイッチング ファストスイッチングはもう少し賢い。 例えばファイルの転送などを考えた場合、転送が完了するまではずっと同じ送信元から送信先への通信が続く。 つまり毎回どのポートへ転送するかを考えなくとも、同じインタフェースへ転送してやればよい。 ファストスイッチングでは、通信の最初のパケットだけコントロールプレーンで処理し、 その際のルーティング情報をキャッシュに残しておき、それ以降のパケットは同じように処理する。 但し、ネットワーク上に多数のマシンが存在する場合、組み合わせが爆発するためキャッシュに乗り切らない。 キャッシュがあふれると書き換えが発生し、キャッシュから消された通信については再度コントロールプレーンで計算する必要が乗じる。

CEF CEFではこの再計算が発生しないように工夫している。 あらかじめ必要な情報を全てデータプレーンに載せておき、それを利用して転送を行う。 転送に関してはコントロールプレーンを全く利用しない方式である。 (転送以外の以下の処理についてはコントロールプレーンを利用する。 ・トンネルインタフェースを利用した通信 ・パケットの分割 ・IPヘッダのオプションの処理 ・ARPA以外のイーサネットカプセル化の処理) CEFの処理手順は以下の通り。 前準備 ・ルーティングテーブルが更新されるたび、FIBテーブルにルーティングテーブルのエントリを全て格納する ・ARPテーブルから隣接テーブルを作っておく 実際の転送 ・FIBテーブルに従って転送先を決定する (FIBテーブルにないIPアドレスについては、ルーティングテーブルにもないので宛先不明で廃棄する) ・隣接テーブルの情報を利用して、転送先IPアドレスにあわせてMACアドレスを付与する

うまいことできている。 実際に設定を行ってみる。

Written on December 17, 2011