■Catalystの基本構造
LANスイッチはコントロールプレーン、データプレーン、バックプレーン、物理インターフェイスの4つの部分で構成されています。
LANスイッチの転送処理は基本的にデータプレーンで実行されます。ただしアーキテクチャと条件によってはコントロールプレーンが転送処理をしなければならないことがあります。このような可能性をできるだけ少なくしてコントロールプレーンに負荷をかけないことがLANスイッチのアーキテクチャにおける最も重要な課題です。
■コントロールプレーンとデータプレーン
歴史的にはネットワーク機器にはコントロールプレーンとデータプレーンの明確な違いはありませんでした。例えば従来のルータにはデータプレーンはなく全ての転送処理をコントロールプレーンで行なっていました。それとは対照的にレイヤ2スイッチは初期の製品からハードウェアによる転送処理を実現していました。
従来のレイヤ2スイッチにルータを融合させレイヤ2とレイヤ3の両方の転送処理をハードウェア化することによりレイヤ3スイッチが誕生しました。その際に従来のルータの機能をほとんど残しつつハードウェア化するためコントロールプレーンとデータプレーンの区別が生まれました。
データプレーンにおいてハードウェアによるレイヤ3転送やACL、QoSの処理を可能にしたのが専用のハードウェアであるASIC ( Application Specific Integrated Circuit ) とTCAM ( Ternary Content Addressable Memory ) です。コントロールプレーンは従来のルータと同じく汎用のCPUとメモリ、それにIOSで構成されます。
コントロールプレーン ( 制御部 ) | データプレーン ( 処理部 ) | |
実装 | 汎用CPU、メモリ、ソフトウェア | ASIC+TCAM |
役割 | 複雑な処理 ( トポロジ管理など ) | 単純な処理 ( パケット転送など ) |
柔軟性 | 高 | 低 |
処理速度 | 低 | 高 |
レイヤ3スイッチの全ての機能がASIC化できるのであればコントロールプレーンは不要です。しかしASICはソフトウェアのような柔軟性を持っていません。すなわち高性能である反面、最初に想定していなかった機能が必要になったとき機能の追加や変更ができません。そのためASIC化が困難あるいは不適切な機能をコントロールプレーンが担当しています。ASIC化が困難あるいは不適切な機能としてはルーティングプロトコルやスパニングツリーの処理などがあります。
■バックプレーンの方式
受信した物理インターフェイスから送信インターフェイスまでフレームを高速に運ぶことがバックプレーンの役割です。バックプレーンの主な方式にはバス、共有メモリ、クロスバースイッチの3種類があります。実際のLANスイッチでは物理インターフェイスの数や性能に合わせてこれらの方式のいずれかを採用します。またバスと共有メモリといったように異なる複数の方式のバックプレーンを併用する機種もあります。
○ バス方式
バス方式の考え方はHUBと同じで送信されたデータはバスに接続しているすべてが受信します。そのため同時に複数の送受信は不可能で送信者は常にひとつに限られます。それを制御しているのがバスアービタと呼ばれるバスへの送信許可を管理する仕組みです。
○ 共有メモリ方式
共有メモリ方式では複数の送受信インターフェイスから共通の読み書きできる記憶領域 ( 共有メモリ ) を使用します。受信されたフレームは一度共有メモリに書き込まれます。転送処理の結果がでると共有メモリからフレームを読みだして送信インターフェイスに渡し、共有メモリからは消去します。
○ クロスバースイッチ方式
クロスバースイッチ方式は複数のバスを網目状に並べたものと考えてください。パスの本数と同じ数まで同時に送信を行うことができるので、3つの方式の中で最も性能の限界が高いという特徴を持っています。
■ハードウェアCEF
レイヤ3スイッチでは通常、コントロールプレーンが従来のルータの機能を備えています。ルータは非常に多くの機能を持っていますが最も重要な核の機能がルーティングです。ルーティングには大きくわけて2つの意味があります。
・OSPFなどを用いてルーティングテーブルを更新して適切な内容を保つこと
・ルーティングテーブルにしたがってパケットを転送すること
レイヤ3スイッチはレイヤ3転送の際に必要な上記の動作を従来のルータと同様にコントロールプレーンでも実行できます。但し、コントロールプレーンはソフトウェアベースなので従来のルータと同程度のパフォーマンスしかでません。このためレイヤ3スイッチでは転送処理をデータプレーンで実行することで性能を高めています。但し、データプレーンの役割は製品によって違いがあり大きく以下の3つに分類されます。
項目 | 説明 |
Process Switching方式 | レイヤ3転送のたびに毎回コントロールプレーンにアクセスする。 最も低速な手法 |
Fast Switching方式 | データプレーンがコントロールプレーンのレイヤ3転送処理の結果を 盗み見てその結果を記憶し次回から同じ処理を代行する |
CEF方式 | データプレーンがコントロールプレーンからレイヤ3転送に 必要な情報を事前に受け取りそれをもとに自力で転送処理を行う。 最も高速な手法。 |
今日のCatalystではデフォルトでCEF方式が設定されています。デフォルトであるためあまり意識する必要はないかもしれませんが知識として知っておいて損はないと思います。