(57)【要約】      （修正有）【課題】サービスプロバイダが、短時間で新しいサービスを経済的に提供可能とする。【解決手段】動的サービスブレードは、データパスに組み込まれており、ルータを含む。ブレードは、ルータと組み合わされてサービスをホストする一般的なコンピュータプラットホームを含む。ブレードは、ルータとコンピュータプラットホームとが配置されるコンテナを含む。サービスをホストする方法。その方法は、データパスに組み込まれた動的サービスブレードを用いて、制御プレーントラヒックにネットワーク機能を適用するステップを含む。動的サービスブレードを用いて、データプレーントラヒックにネットワーク機能を適用するステップがある。【選択図】図１
2007208960.tif 000002
【特許請求の範囲】
【請求項１】
データパスに組み込まれた動的サービスブレードであって、
ルータと、
ルータと組み合わされてサービスをホストする一般的なコンピュータプラットホームと、
ルータとコンピュータプラットホームとが配置されるコンテナとを具えるブレード。
【請求項２】
ルータは、スイッチファブリックを含む、請求項１に記載のブレード。
【請求項３】
ルータは、スイッチファブリックと通信するイングレスポートと、スイッチファブリックと通信するエグレスポートとを含み、外部ネットワークを用いてパケットを送信する、請求項２に記載のブレード。
【請求項４】
コンピュータプラットホームは、サードパーティソフトウェアを実行するように構成される、請求項３に記載のブレード。
【請求項５】
コンテナは、複数のスロットを有しており、ルータは、スロットに収まる複数のルート制御プロセッサカードと、スイッチファブリックを有し、スロットに収まる複数のスイッチファブリックカードとを含んでおり、コンピュータプラットホームは、サービスエンジンカードを含む、請求項４に記載のブレード。
【請求項６】
サービスエンジンカードは、分散アーキテクチャをもたらすように構成されている、請求項５に記載のブレード。
【請求項７】
ルート制御プロセッサカードは、ルーティング及びコンテナ管理を実行するように構成されている、請求項６に記載のブレード。
【請求項８】
サービスエンジンカードは、自動フェイルオーバをサポートするように構成された冗長性スイッチファブリックカードを含む、請求項７に記載のブレード。
【請求項９】
サービスエンジンカードは、クラス化、フォワード、キューイング及びバッファリング動作をして、イングレスポートからエグレスポートにパケットをスイッチングするように構成されている、請求項８に記載のブレード。
【請求項１０】
イングレスポート及びエグレスポートは、スロットに配置されたインターフェイスカード上にある、請求項９に記載のブレード。
【請求項１１】
コンピュータプラットホームは、データ変換又はフィルタ機能と共にパケットを通過させるバンプインザワイヤトポロジをもたらすように構成されている、請求項１０に記載のブレード。
【請求項１２】
コンピュータプラットホームは、ゲートウェイトランスレータとして構成されている、請求項１０に記載のブレード。
【請求項１３】
コンピュータプラットホームは、パケットのターミネーションポイントとして構成される、請求項１０に記載のブレード。
【請求項１４】
サービスをホストする方法であって、
データパスに組み込まれた動的サービスブレードを用いて、制御プレーントラヒックにネットワーク機能を適用するステップと、
動的サービスブレードを用いて、データプレーントラヒックにネットワーク機能を適用するステップとを含む方法。
【請求項１５】
動的サービスブレードのルータの部分として組み込まれたインターセプトアプリケーション及びメディアオーバＩＰアプリケーションをサポートするステップを含む、請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データパスに組み込まれる動的サービスブレードに関しており、該ブレードは、コンピュータプラットホーム及びルータを具えるコンテナを有する。より詳細には、本発明は、データパスに組み込まれる動的サービスブレードに関しており、該ブレードは、コンピュータプラットホーム及びルータを具えるコンテナを有し、制御プレーントラヒック及びデータプレーントラヒックにネットワーク機能を適用する。
【背景技術】
【０００２】
サービスプロバイダは、資本と経営上の全体的な出費の低減を試みており、エッジルーティング装置におけるより統合されたサービスを要求している。単一のプラットフォームにサービスを統合することで、プロバイダは、サービスを提供するのに要するプラットホームの数を低減でき、さらには、設置面積と、電気及び冷却コストと、管理コストとを低減できる。
【０００３】
サービスの要求は、プロバイダに特有であって、ＲＦＩ、ＲＦＱ及び顧客のトライアルステージの間に通常は対処される。入札過程で競争に勝つには、機器製造業者は、顧客の購買周期に合ったタイムフレームでサービスを提供する必要がある。通常、ソリューションの選択は、最善に満たないものであり、利鞘を減少させ、顧客の要求を直接的には満たさないＯＥＭソリューションを用いるか、エッジルータ自体に特有のカスタムソリューションを開発することになる。
【０００４】
サービスの種類に応じてカスタムソリューションを開発することは、開発期間と費用の観点から高くつく。かなりのリソースを、設計、集積、サービスのテストに費やす必要があろう。開発の全体的な労力の範囲に応じて、実施される完全なソリューションは、顧客の予算枠外になるか、予算枠内からソリューションが出てしまう恐れを著しく増大させる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
動的サービスブレードアーキテクチャの第１の全体的な目標は、新しいサービスが展開され得るという仮定の下で、可能な限り短い時間で、高質なサービスの実施を提供することである。この目標を達成するため、このアーキテクチャは、プライマリビークルとしてサードパーティのソフトウエアを使用するモデルに基づいている。ソフトウェアの実装は、ハードウェアの長いデザインサイクルを解消し、サードパーティの実施は、従前にテスト/保証されたデザインの質及び相互運用性の利点をもたらす。特定のサービスの専門知識も、エンジニアチームを増やすことなく得られる。複数のサードパーティソフトウェアアプリケーションを用いることで、プラットホーム上で提供されるサービス数は、限定された社内のリソースを用いて開発されるよりも、非常に速いペースで増える。
【０００６】
動的サービスブレードアーキテクチャの第２の目標は、費用効率が高く、拡張性のある方法で、プラットホームにサービスを統合可能にすることである。この目標を達成するために使用される主たる機構は、マルチプロセスエンジンブレードであり、該ブレードは、現存する動的サービスブレードのハードウェア及びソフトウェアコンポーネントを補完する方法で、動的サービスブレードのシャーシに統合されるように設計されている。そのカードは、ハイパフォーマンスな汎用処理と、特別な動的サービスブレードハードウェアと、組み込みソフトウェアとを使用して、ソフトウェアアプリケーションが移植できるプラットホームを生じる。単一の処理エンジンカードで複数のサービスをサポートするモデルを用いることに加えて、そのアーキテクチャは、同一のサービス又は複数のサービスがシステム内の２以上の処理エンジンブレードでサポートされ得るモデルもサポートする。
【０００７】
動的サービスブレードアーキテクチャの第３の目標は、コスト負担の観点から、購入した機器にサービス機能を追加することを、サービスプロバイダだけで実施可能にすることである。別の言い方をすれば、サービスアーキテクチャの如何なるコンポーネントもない構成における動的サービスブレードの基本コストは、アーキテクチャが実施される前のコストポイントから増加すべきでない。
【課題を解決するための手段】
【０００８】
本発明は、データパスに組み込まれた動的サービスブレードに関する。そのブレードはルータを含む。ブレードは、ルータと組み合わされて、サービスをホストする一般的なコンピュータプラットホームを具えている。ブレードは、ルータ及びコンピュータプラットホームが配置されるコンテナを具えている。
【０００９】
本発明は、サービスをホストする方法に関する。その方法は、データパスに組み込まれた動的サービスブレードを用いて、制御プレーントラヒックにネットワーク機能を適用するステップを含む。動的サービスブレードを用いて、データプレーントラヒックにネットワーク機能を適用するステップがある。
【発明を実施するための最良の形態】
【００１０】
図面を参照すると、幾つかの図を通じて、類似又は同様の部分には、同じ符号が付されている。特に、図１及び図１４には、データパスに組み込まれた動的サービスブレード(10)が示されている。ブレード(10)は、ルータ(12)を具えている。ブレード(10)は、一般的なコンピュータプラットホーム(14)を具えており、該コンピュータプラットホーム(14)は、ルータ(12)と組み合わされて、サービスをホストする。ブレード(10)はコンテナ(16)を具えており、該コンテナ(16)に、ルータ(12)及びコンピュータプラットホーム(14)が配置される。
【００１１】
ルータ(12)は、スイッチファブリック(20)を含んでいるのが好ましい。ルータ(12)は、スイッチファブリック(20)と通信するイングレスポート(18)と、スイッチファブリック(20)と通信するエグレスポート(22)とを含むのが好ましく、外部のネットワークとパケットの伝送を行う。プラットホーム(14)は、サードパーティのソフトウェアを実行するように構成されるのが好ましい。
【００１２】
コンテナ(16)は、複数のスロット(26)を有するのが好ましく、ルータ(12)は、スロット(26)に収まる複数のルート制御プロセッサカード(28)と、スイッチファブリック(20)を有しており、スロット(26)に収まる複数のスイッチファブリックカード(30)とを含んでおり、プラットホーム(14)は、サービスエンジンカード(24)を含んでいる。サービスエンジンカード(24)は、分散アーキテクチャを提供するように構成されている。ルート制御プロセッサカードは、ルーティングと、コンテナ(16)の管理とを実行するように構成されている。
【００１３】
サービスエンジンカード(24)は、自動フェイルオーバをサポートする冗長スイッチファブリックカード(30)を含むのが好ましい。サービスエンジンカード(24)は、クラス化、フォワード、キューイング及びバッファリング処理を提供するように構成されるのが好ましく、イングレスポート(18)からエグレスポート(22)にパケットをスイッチングする。イングレスポート(18)及びエグレスポート(22)は、スロット(26)に配置されたインターフェイスカード(32)上にあるのが好ましい。
【００１４】
プラットホーム(14)は、バンプインザワイヤ(bump in the wire)トポロジを提供するように構成されるのが好ましく、データ変換やフィルタ機構を伴ったパケットの通過が可能とされる。プラットフォーム(14)は、パケットのターミネーションポイントとして構成されるのが好ましい。
【００１５】
本発明は、サービスをホストする方法に関する。その方法は、データパスに組み込まれた動的サービスブレード(10)を用いて、制御プレーントラヒックにネットワーク機能を適用するステップを含む。動的サービスブレード(10)を用いて、データプレーントラヒックにネットワーク機能を適用するステップがある。
【００１６】
動的サービスブレード(10)のルータ(12)の一部として、組み込みのインターセプトアプリケーションと、メディアオーバＩＰアプリケーションとをサポートするステップがあるのが好ましい。
【００１７】
動的サービスブレード(10)は、カスタマイズされたアプリケーションを加えることで適用するサービスを差別化することを必要とする又は望むサービスプロバイダ用のビークルを提供する。ブレード(10)は、様々なアプリケーションをホストする標準ベースのエンジンを提供する。これによって、通信事業者である顧客は、単一のマネージメントインターフェイス下で、彼らのＩＰインフラストラクチャの全てをカスタマイズできるようになる。ルータ(12)が、サービスをホストする一般的なコンピュータプラットホーム(14)と組み合わされたのはこれが始めてであり、それは、通常、関連性、電力、スペース、動作コスト等に従って、多くのボックスに配置されていたものだった。ＤＳＢ(10)は、トラックロール等を必要とすることなく、１又は２以上のサービスを迅速に提供するビークルである。ＤＳＢ(10)は、事実上データパスに組み込まれており、制御プレーントラヒックに新たなネットワーク機能を提供するだけでなく、データプレーントラヒックにも同じことをする。この特異な特徴は、産業的に最初のものであって、通信事業者のデータセンタにて多数のボックスを互いに固定することなく、組み込みの合法な(lawful)インターセプトアプリケーションとメディアオーバＩＰアプリケーションとを、ルータ(12)自身の一部としてサポートする。
【００１８】
好ましい実施例では、主たる実施形態のビークルは、動的サービスブレード(ＤＳＢ)(10)と称されるマルチプロセッサベースエンジンブレード(10)である。カードは、前面にあるＰＳＥカード(24)スロット(26)に配置され、中央のスイッチファブリックのポートと直接にインターフェイスする。ＰＳＥのフォワーディングテーブルの変更により、ＰＳＥポートからエグレスＰＳＥポートに行く間にパケットストリームを、インラインサービスのためにＤＳＢ(10)に向けることができる。
【００１９】
パケットフローの向きをＤＳＢ(10)に変えることで、様々なサービスオプションをサポートすることが可能となる。データ変換又はフィルタ機能と共に通過することのみを必要とするサービスのために、「バンプインザワイヤ」タイプのトポロジをエミュレートできる。ゲートウェイトランスレータのようなプロキシサービスも同様な方法でエミュレートでき、ＤＳＢ(10)は、プロトコルスタックで上位のサービスを提供する。サードオプションは、ＤＳＢ(10)上でターミネーションポイントを直接使用できる。これは、ＩＰＳＥＣトンネルターミネーションと同様にプロトコルスタックの下位レベルであるか、シグナリングソフトウェアと同様にスタックの上位レベルであり得る。
【００２０】
動的サービスブレード(10)の実施ストラテジは、集中アーキテクチャを使用する。それによって、個々のＰＳＥカード(24)からのパケットフローが、ＤＳＢ(10)に転送される。ＤＳＢ(10)のサービスを必要とする多数のパケットフローが、カードの最大スループットに向かって増大している場合には、更なる負荷をサポートするための追加のＤＳＢ(10)を加えることができる。同様に、特定のＤＳＢ(10)で実施されるサービスの数が、処理又は記憶の限界点に向かって増えている場合には、負荷を処理するための追加のＤＳＢ(10)を加えることができる。中央アーキテクチャの主たる目的は、サードパーティソフトウェアをシステムに迅速に移植可能とすることである。
【００２１】
動的サービスブレード(10)の実施ストラテジは、分散アーキテクチャも使用する。それによって、パケットフローは、ＰＳＥカード(24)自身で直接的に処理される。このアーキテキチャは、集中ＤＳＢ(10)アーキテクチャに対して相補的なやり方で機能し、同じ構成要素の多くを使用する。サービスプロバイダのネットワークトポロジに基づいて、分散アーキテクチャは、より低コストで高いパフォーマンスを可能とする。分散アーキテクチャは、上述のサービスオプションの各々をサポートできるが、通常は、ＰＳＥカード当たり１つのサービスを提供するだろう。
【００２２】
以下のセクションは、動的サービスブレード(10)のアーキテクチャを構成する基本構成要素を簡単に説明する。
【００２３】
上述したＤＳＢ(10)がプラットホーム(14)として使用されて、サードパーティソフトウェアアプリケーションが集中アーキテクチャを介して実行される。そのカードによって実行される全体的な２つの機能領域は、ネットワークアプリケーションサービスと、パケットフォワーディングである。ＤＳＢ(10)のハードウェアは、顧客のサービス契約に合うようにキューイング及びバッファリングのリソースを配置するように実装される。ＤＳＢ(10)の組込みソフトウェアは、１)顧客のサービス契約に従ってパケットフローサービスが構成されることを保証すること、２)カード上のハードウェア動作をサポートすること、３)サードパーティソフトウェアアプリケーションをＤＳＢ(10)に迅速に移植することを可能にするように設計される。
【００２４】
サービスカードは、動的サービスブレード(10)内で分散サービスアーキテクチャを実施するのに主として使用される。それらは、ＰＳＥカード(24)に配置されるドーターカード(daughter card)であって、ハードウェア、ソフトウェア又はその両方で実施される特定のサービスをもたらす。通常、サービスカード上では１つのサービスが実施されるが、異なる複数のサービスカードが存在するだろう。上述の３種類のサービスオプションは、サービスカード上でサポートされる：バンプインザワイヤサービス、プロキシサービス及びターミネーションサービス。サービスカードで実施されるソフトウェアは、パフォーマンス上の理由から特別に調整される。サービスカードのモードに応じて、以下で説明するように、ソフトウェアは、ハードウェア要素をサポートするデバイスドライバレベルにあるか、プロセッサをサポートする組み込みレベルにある。
【００２５】
動的ハードウェアサービスブレード、ＤＨＳは、ＤＳＢ(10)のオフロードエンジンとして使用される。それは、ＤＳＢ(10)に対してハードウェア的なアシストを提供し、集中サービスアーキテクチャをサポートする。ＤＨＳは、フロントサイドのＤＳＢ(10)の後側物理インターフェイススロットにおいて、動的サービスブレード(10)に配置される。ＤＳＢ(10)に向かうパケットフローは、プロセッサ行きフローと、ＤＨＳ行きフローとに区別される。ＤＨＳに向けられると、ＤＳＢ(10)のプロセッサのコンプレックス(complex)で処理される必要なく、サービスを受けられる。ＤＨＳは、オンボードＮＰＵベースのフォワーディングエンジンと共に、ハードウェア特有のサービスエンジンを含んでいる。ＤＨＳをサポートするソフトウェアは、通常はサードパーテイソフトウェアではなく、動的サービスブレード(10)のその他の要素から調達される。
【００２６】
ＤＳＢ(10)の概要
動的サービスブレード(10)は、キャリアクラス６０Ｇｂ/ｓルーディングプラットフォーム(14)である。それは、１６スロットのミッドプレーンであって、フロントサイドの冗長性ルート制御プロセッサカード(28)と、冗長性スイッチファブリックカード(30)と、１２個までのパケットサービスエンジンカード(24)とをサポートする。パケットサービスエンジンカードの各々に、外部ネットワークへのインターフェイスを与えるリアサイドの物理インタフェースカード(32)が関係する。図１は、動的サービスブレード(10)システムのハイレベルなブロック図である。
【００２７】
ルート制御プロセッサ
動的サービスブレード(10)は、冗長性ルート制御プロセッサ(ＲＣＰｖ２)カードをサポートし、該カードは、システムに対してルーティング及びシャーシ管理プロセスを実行する。ＲＣＰｖ２の演算エンジンは、モトローラ社製ＭＰＣ７４５７ ＰＰＣプロセッサであって、１Ｇｈｚで動作し、メモリーサイズは１乃至３ＧＢである。ＩＤＥ ＩＯサブシステムは、４０ＧＢのハードディスクストレージと、１２８ＭＢのフラッシュストレージと、着脱自在なＰＣカードとを含んでいる。２つの１Ｇｂ/ｓのリンクがサポートされており、一方のリンクは、ＲＣＰｖ２間の通信専用であり、他方のリンクは、ＲＣＰｖ２とパケットサービスエンジン(ＰＳＥ)の通信専用である。
【００２８】
動的サービスブレード(10)は、冗長性スイッチファブリック(ＳＷｖ２)カードをサポートし、該カードは、システム内のＰＳＥカード(24)間で総計で６４Ｇｂ/sの全二重のスループットをもたらす。そのファブリックは、ＡＭＣＣのＰＲＳ６４Ｇメモリスイッチをベースとしており、全二重リンクが、システム内で、ＳＷｖ２と１２個のＰＳＥカード(24)の各々との間で動作する。ＳＷｖ２は、オンボードのマイクロエンジンを含んでおり、該エンジンは、ファブリックの動作をモニタし、冗長性スイッチファブリックカード(30)と通信して、自動フェイルオーバをサポートする。
【００２９】
動的サービスブレード(10)のパケットサービスエンジンカードは、イングレスポート(18)からエグレスポート(22)にパケットをスイッチングするのに必要なクラス化、フォワーディング、キューイング及びバッファリング処理を提供する。クラス化機能及びフォワーディング機能は、ＶｉｔｅｓｓｅのＩＱ２２００ ＮＰを用いるように設計されたネットワークプロセッサを介して提供される。ＰＳＥは、供給されたフローを１２８Ｋまでの帯域幅でサポートし、独自の(proprietary)ＷＦＱ及びＲＥＤ機構を用いてディフサーブＱＯＳモデルをサポートする。ＰＳＥデータプレーンは、最大で２.５Ｇｂ/ｓのスループットをサポートする。ＰＳＥ制御プレーンの演算エンジンは、ＭＰＣ７４４８ ＰＰＣであって、１.２Ｇｈｚで動作し、メモリーサイズは１ＧＢである。動的サービスブレード(10)システムは、１２枚までのＰＳＥカード(24)をサポートし、全ての種類の物理インターフェイスカード(32)をサポートするように、共通の設計が用いられる。
【００３０】
動的サービスブレード(10)は、複数の種類の物理インターフェイス(ＰＨＹ)カードをサポートする。ＰＨＹカード(32)は、外部メディアとＰＳＥカード(24)との間のインターフェイスを提供し、通常は、Ｌ１/Ｌ２ペアに特有である。ＤＳ０からＯＣ４８までの範囲のインターフェイスレートがサポートされる。サポートされるインターフェイスの種類は、ギガビットイーサネット(登録商標)、ＤＳ３チャンネライズド(Channelized)、ＤＳ３ＡＴＭ、ＯＣ１２チャンネライズドＯＣ３/ＯＣ１２/ＯＣ４８ＡＴＭ及びＯＣ３/ＯＣ１２/ＯＣ４８ＰＯＳである。
【００３１】
ＤＳＢ(10)は、クラス化されたパケットフローに、アプリケーションサービスとフォファーディングという、２種類の基本的な機能を実行する。
【００３２】
アプリケーションソフトウェアパッケージは、顧客が購入した価値付加サービスを実行する。それらは、ソフトウェアとして実施され、ＤＳＢ(10)上の２つのプロセッササブシステムの一方で実行される。アプリケーションソフトウェアパッケージは、ＩＰＳＥＣタイプのような低レベルのネットワークサービス、プロトコルゲートウェイのような中レベルのサービス、シグナリングソフトウェアのような高レベルのサービスを実行する。
【００３３】
フォワード機能も、ＤＳＢ(10)を通るパケットフローに実行される。トンネル化形態(tunneled form)で受信されたパケットは、フォワードが実行される前にトンネル化を解除される。例えば、トンネル化されたＩＰＳｅｃパケットが復号されて、パケットのＩＰヘッダが得られる。ＩＰヘッダは、クラス化及びフォワードに使用される。トライ(trie)テーブルと、ネクストホップレコードテーブルとが、ＤＳＢ(10)カードの内部に保持されている。ネクストホップレコードは、イングレスＰＳＥが生成するものと同じフォーマットを用いており、スイッチファブリックに伝送される全てのパケットについてカプセル化される。
【００３４】
以下のセクションでは、ＤＳＢ(10)カードにあるハードウェアの概要を述べる。ＤＳＢ(10)カードのブロック図は、図２に示されている。
【００３５】
ＤＳＢ(10)のプロセッササブシステムは、フリースケールのＭＰＣ７４４８ ＰＰＣプロセッサに基づいている。そのプロセッサは、１.５Ｇｈｚのプロセッサであって、内部に１ＭＢのＬ２キャッシュがある。それは、トリプル命令発行(instruction issue)を用いた３２ビットのスーパースカラアーキテクチャと、アルティベック(Altivec)コプロセッサとを用いている。そのプロセッサは、３６ビットのアドレス空間をサポートしている。それは、９０ｎｍプロセスで作製されており、３６０ＢＧＡでパッケージングされており、通常時に１５ワットの電力を消費する。
【００３６】
ＭＰＣ７４４８は、２００ＭｈｚシステムＭＰＸバスを介して、Ｍａｒｖｅｌｌ Ｄｉｓｃｏｖｅｒｙ IIIメモリコントローラデバイスにインターフェイスしている。そのＤｉｓｃｏｖｅｒｙは、一般的な７２ビットＤＩＭＭを介して２ＧＢのメインメモリをサポートしている。Ｄｉｓｃｏｖｅｒｙは、２５６ＭＢまでのフラッシュ、ボードレベルのＣＳＲ ＣＰＬＤ、ＦＰＧＡ構成のＣＰＬＤをサポートする標準のデバイスバスをサポートする。メモリインテンシブ(intensive)アプリケーションでは、ボードの変形型が与えられて、上記の２００Ｍｈｚの２０％未満のプロセッサバススピードで、プロセッサ当たり４ＧＢのメインメモリがサポートされると予期される。
【００３７】
Ｄｉｓｃｏｖｅｒｙ IIIもデュアルＰＣＩバスをサポートする。一般的な３３ＭｈｚＰＣＩバスは、ＲＣＰｖ２とＤＳＢ(10)の間をブリッジし、それらの間の転送に使用されるシステムにインターフェイスする。３２ビット１３３ＭｈｚＰＣＩ−Ｘバスが、高帯域幅インターフェイスとして、ＤＭＡされてシステムのメモリに出入りするパケットフローデータに使用される。
【００３８】
ＰＣＩ−Ｘバスは、ＤＳＢ(10)ボード上で、Ｄｉｓｃｏｖｅｒｙ III及びパケットスイッチのＦＰＧＡの間にあるポイントツーポイントバスである。
【００３９】
２つの独立したプロセッササブシステムがＤＳＢ(10)に含まれており、各サブシステムのＤｉｓｃｏｖｅｒｙ IIIコントローラは、パケットスイッチＦＰＧＡにおける別個のＰＣＩ−Ｘポートとインターフェイスする。イングレスＰＳＥから受け取ったパケットは、パケットスイッチＦＰＧＡにより特定のプロセッサに向けられて、そのプロセッサのメインメモリにＤＭＡされる。エグレスＰＳＥに伝送されるパケットについて、Ｄｉｓｃｏｖｅｒｙ IIIのコントローラは、パケットスイッチＦＰＧＡにバーストを転送し、該ＦＰＧＡは、スイッチファブリックに転送するバケットを作る。
【００４０】
単一の１０/１００/１０００フロントパネルイーサネット接続が、プロセッササブセクションごとにサポートされており、外部の開発システムへ、又は外部ネットワークに接続されたストレージへのアタッチメントとして使用される。さらに、単一のフロントパネルシリアルポートが、開発目的でプロセッササブシステムごとにサポートされる。
【００４１】
プロセッサ間の通信が、２つの方法でサポートされている。第１の方法は、より低い帯域幅のメッセージングに使用されており、各プロセッササブシステムのＤｉｓｃｏｖｅｒｙ IIIデバイス間の一般的なＰＣＩ通信を利用する。アドレスウィンドウは、オープンにされており、プロセッサのメモリの各々は、他方のプロセッサより書き込むことができる。サポートされる第２の方法は、より高速のブロック又はパケット転送に使用され、Ｄｉｓｃｏｖｅｒｙ IIIのＳＤＭＡリンクを利用する。ＳＤＭＡリンクは、ディレクション当たり１ＧＢ/ｓである全二重のリンクであって、内部のＤｉｓｃｏｖｅｒｙ IIIのＤＭＡエンジンを用いており、ディスクリプタチェイニング(descriptor chaining)をして各プロセッサのメモリ間でデータを伝送する。
【００４２】
ＩＤＥファイルシステムは、オペレーティングシステムとアプリケーションの格納をもたらす。オンボードのＰＣＩツー(to)ＩＤＥコントローラは、ＤＳＢ(10)のプロセッササブセクションからデュアルチャンネルＩＤＥサブシステムへのインターフェイスを提供する。デュアルチャンネルＩＤＥサブシステムは、着脱自在なドーターカード上に実装され、ＩＤＥチャンネル当たり２つのコンパクトフラッシュ(登録商標)メモリデバイスをサポートする。コンパクトフラッシュメモリデバイスのサイト(sites)の２つは、ＣＦ+タイプ１又は２のフォームファクタをサポートするが、残りの２つは、ＣＦ+タイプ１のみをサポートする。
【００４３】
ＣＦサイトごとにサポートされるコンパクトフラッシュの容量は、１ＧＢ、２ＧＢ、４ＧＢ又は８ＧＢであって、総計の容量は最大で３２ＧＢである。コンパクトフラッシュタイプのサポートは評価段階にあり、一般的なＣＦに加えて、安全なアクセスに加えて復活不能なデータ消去をサポートする改良型が存在することになるだろう。
【００４４】
パケットスイッチングサブセクションは、ＰＣＩ−Ｘバスに亘って、エグレスバッファリングシステムからプロセッサシステムメモリに、パケットを伝送するのに使用される。パケットサブシステムは、プロセッササブシステムごとに３２のエグレスチャンネルをサポートし、各チャンネルは、ＴＳＵ仮想出力キューに関係している。内部のＤＭＡエンジンは、プロセッサシステムメモリのキューをモニタして、パケットデータをプロセッサのメインメモリのキューに転送する。リングベース構造が用いられて、パケットデータが書き込まれるメモリページが決定される。
【００４５】
パケットスイッチングサブセクションも使用されて、パケットがイングレスバッファリングシステムに移動される前に、ＰＣＩ−Ｘバスに亘って、プロセッサメモリからスクラッチパッドリアセンブリバッファ(scratchpad reassembly buffer)にパケットが転送される。
【００４６】
パケットスイッチングサブセクションは、サービスカード及びＤＨＳカードへのパスも有している。これら両方のカードはオプションである。パケットスイッチＦＰＧＡは、内部のマッピングＲＡＭを用いて、エグレスチャンネルをサービスカード、ＤＨＳカード又はプロセッサに割り当てる。サービスカード又はＤＨＳカードの場合、パケットデータのリクエストは、パケットスイッチＦＰＧＡではなく、カード自体から発生する。
【００４７】
イングレスデータパスサブセクションは、カットスルーバッファリングシステム、レートポリサー(rate policer)及びスイッチアービタを含む。バッファリングシステムはエグレスＰＳＥ向けのパケットを格納する/キューに入れる。バッファリングシステムは、ＶＯＱベースで、３２のキューをサポートし、各スイッチファブリックのポートについて、ハイ及びローのプライオリティをサポートする。関連するスイッチファブリックセグメンター(segmenter)は、３２のセグメンテーションをサポートし、スイッチアービタは、共有メモリスイッチファブリックと共にフロー制御プロトコルを用いて、ファブリックカードを通る損失のないパケット伝送をもたらす。
【００４８】
イングレスデータパスサブセクションは、１２８Ｋのフローをサポートする。各フローは、デュアルトークンバケット機構を有しており、６４Ｋｂ/ｓから２.４Ｇｂ/ｓまでのレートポリシー帯域幅をサポートする。レートポリサーは、フローに関するサービス契約に基づいてパケットを転送し、リマークし(remark)、又は廃棄する。統計値がフロー毎を基準として保持される。パケットのフローの割り当て(assignment)は、パケットをサービスするプロセッササブシステムで生成され、ＤＨＳが使用されるならば、ＮＰベースのフォワーディングエンジンで生成される。
【００４９】
エグレスデータパスサブセクションは、キューイング及びバッファリングシステムを含む。バッファリングサブシステムは、６４Ｂのブロックに分割された２５６ＭＢ ＤＤＲパケットメモリを含んでいる。パケットは、６４Ｂのメモリブロックのリンクリストを介して格納される。関連するスイッチファブリックのリアセンブリ機能は、３２のリアセンブリストリームをサポートし、セグメンテーション機能は、１６Ｋのセグメンテーションをサポートする。
【００５０】
キューイングサブシステムは１２８Ｋのフローをサポートし、各フローは１６Ｋチャンネルの１つに多重化される(multiplexed)。各チャンネルは、高プライオリティで低レイテンシーのキューと、低プライオリティな均等化(weighted fair)キューとをサポートする。キューイングデータ構造に加えて、プロビジョニングメモリ(provisioning memory)が使用されて、帯域幅、限界値(threshold limit)等が割り当てられる。輻輳管理は、フロー毎を基準としてＲＥＤを用いて、低プライオリティのキューに与えられたフローについて行われる。ＱＯＳサポートは、ＥＦ、ＡＦ１−４及びＢＥサポートを伴ったディフサーブモデルを用いて行われる。エグレスの統計値の完全なコレクションが、フロー毎を基準として維持される。
【００５１】
両方のスイッチファブリック(30)に対するＤＳＢ(10)のデータプレーンインターフェイスは、Ｕｄａｓｌのインターフェイスコンバータチップを介する。Ｕｄａｓｌは、シリアライザ/デシリアライザ(serializer/deserializer)回路構成、データデスキュー回路構成及び切替(switchover)回路構成を含んでおり、両方のスイッチファブリック(30)との通信を可能にする。
【００５２】
両方のＲＣＰに対するＤＳＢ(10)のインターフェイスは、システムＰＣＩブリッジングを介する。ＩＣＰＭチャンネルが、ＤＳＢ(10)と各ＲＣＰとの間で設定されて、全二重の通信が可能となる。
【００５３】
以下のセクションでは、ＤＳＢ(10)カードで実行される主たるソフトウェア要素の概要を述べる。カードで実行されるソフトウェア要素の完全なリストではない。
【００５４】
ＲＴＯＳ
ＤＳＢ(10)上の２つのプロセッササブシステムは、パケットデータにネットワークサービスをもたらすコードを実行する。さらに、プロセッササブシステム０は、カード上の両方のプロセッサによって共有される全てのハードウェアについて、デバイスドライバソフトウェアを実行するタスクを割り当てられる。プロセッササブシステム１又はＲＣＰカード(28)の何れかによるデータ構造へのアクセスは、プロセッササブシステム０へのメッセージングを介する。
【００５５】
ＬｉｎｕｘＯＳは、ＤＳＢ(10)上のＲＴＯＳとして使用される。初期のＤＳＢ(10)の製品は、個別のメモリサブシステムと、サブシステム当たり１つのプロセッサとを有し、ＶｘＷｏｒｋｓのＲＴＯＳを用いており、コードベースがＰＳＥｖ２から利用されて、高速のポーティングエフォート(porting effort)になっていたが、Ｌｉｎｕｘは、成功に必要な最高のＣＰＵスケーリングとサードパーティソフトウェアライセンスの選択とをもたらす。
【００５６】
技術のスケールに併せてプロセッサのパフォーマンスにおいてＤＳＢ(10)を効果的にスケーリングするために、ＲＴＯＳがＳＭＰアーキテクチャをサポートすることが必要である。ＳＭＰアーキテクチャは、同じメモリを共有する複数のプロセッサ間でアプリケーションを実行する負荷を均等にする必要を排除する。また、それは、それらのプロセッサ間で静的にメモリをプロビジョニングする必要も排除する。その結果、シームレスなプロセッサのアップグレードにより、１つのプロセッササブセクション内に、１つ、２つ、又は将来的には４つのプロセッサが与えられる製品が可能となる。ＳＭＰアーキテクチャは、プロセスコンテクストスイッチの間、メモリへの完全なコンテクストのライトバックを取り扱う。プロビジョニングは、プロセッササブセクション０及び１の間でなお必要とされるが、プロセッサをスケーリングする能力は、プロセッササブセクションを加えることでは達成されないだろう。
【００５７】
動的サービスブレード(10)のアーキテクチャのスケーリング要請の結論として、ＳＭＰＬｉｎｕｘは、ＤＳＢ(10)の設計において最も長生き可能なＲＴＯＳの選択となる。優先/先取(prioritized/preemptive)タスクスケジューリング、低待ち時間の割込み、タスクシグナリング及びメッセージキューイングをサポートする如何なるＲＴＯＳと同様に、セマフォ及びメモリ管理サービスが必要とされる。
【００５８】
ＢＳＰは、ＭＣＰ７４４７Ａ/Ｄｉｓｃｏｖｅｒｙ IIIの評価プラットホームで非常に利用されるだろう。一般的なプロセッサコアＢＳＰのサポートに加えて、ＰＳＥｖ２ ＦＰＧＡデバイスドライバは、ＤＳＢ(10)にて、ＶｘＷｏｒｋｓ実装からＬｉｎｕｘ実装へと移植されるだろう。ＰＳＥｖ２とＤＳＢ(10)のＦＰＧＡドライバサポートの間における大きな差違の１つは、ＤＳＢ(10)にＤＭＡサポートを加えることが必要とされることである。パケットのキューが、各プロセッササブセクションのメモリ内に保持されており、Ｄｉｓｃｏｖｅｒｙ IIIコントローラは、パケットデータを転送するのに使用される。
【００５９】
ＦＰＧＡデバイスドライバと、ＦＰＧＡに付けられたメモリ内に存在するデータ構造の管理とは、プロセッササブセクション０で実行される。さらに、システムのシャーシ管理機能の全てがプロセッササブセクション０で実行されるだろう。これは、マスターＲＣＰとの全ての状態マシン相互作用を含んでおり、ＤＳＢ(10)の初期化、イメージアップデート及びシャットダウンが制御される。
【００６０】
ＤＳＢ(10)の内部のプロセッサメッセージングスキームは、データ構造アップデートリクエストとアクノリッジメントを、プロセッササブセクション間で中継する。より高いレベルである、サービスごとのＡＰＩは、ハードウェアのデータ構造のアップデートを必要とするサービスのプロセスで使用されるだろう。ＡＰＩコールが、ＲＴＯＳコールをする場合にアブストラクションレイヤを用いることで、コードが代わりのＲＴＯＳにさらに容易に移植される。
【００６１】
ロギング及び統計蓄積のようなシステムレベル機能は、各プロセッササブセクションで個々に実行されるだろう。各プロセッササブセクションは、ＲＣＰとの通信チャンネルを個別に保持しており、それらの間における全てのメッセージングは、カード上の如何なるハードウェア又はより低レベルの転送ソフトウェアにトランスペアレントである。
【００６２】
プロセッササブセクション間におけるロードバランシングは、プロビジョニング時に実行される。ＲＣＰカード(28)上で実行されているロードバランシングマネージャは、アプリケーションサービステーブルを保持している。そのテーブルには、シャーシ内の全てのＤＳＢ(10)について、プロセッササブセクション上で実行されている全てのサービスが、ＶＰＮ毎の基準で含まれている。テーブル内に含まれるデータ構造は、実行されているアプリケーション、アプリケーションに割り当てられた重み、アプリケーションに割り当てられた帯域幅、リソースに割り当てられたプロセッサ/メモリリソースである。ＶＰＮ上の新しいサービスのプロビジョニング時に、ロードバランシングマネージャは、サービスに関連するパラメータを入力し、サービスについて割り当てられるＤＳＢ(10)とプロセッササブセクションを決定する。各ＤＳＢ(10)カードは、ＶＰＮ毎の基準でサービスを可能にする及び解除するのに使用されるロードバランシングクライアントを含んでいる。
【００６３】
プロセッササブセクションに含まれるハードウェアデバイスバスは、互いに多重化されて、共通フラッシュメモリへのアクセスがもたらされる。電源を入れた際又はハードウェアリセットの際、プロセッササブセクション０は、最初にリセット解除される。ＴＩＳ選択、ＲＴＯＳ立ち上げ、ＦＰＧＡ及びデバイスドライバのロード、ＩＰＣＭを含むブートプロセスが完了すると、プロセスサブセクション１は、リセット解除されてブート可能となる。ブートが成功した後、サービス設定データがプロセッササブシステムにロードされる。カードは、パケットをサービスすることが可能となる。
【００６４】
動的サービスブレード(10)内におけるプロセッサ間の通信は、ＩＰＣＭプロトコルを用いて行われる。ＤＳＢ(10)は、ＩＰＣＭを用いて、カード上の各プロセッササブセクションとＲＣＰ間で、データを直接に転送する。ＤＳＢ(10)とＰＳＥ又はその他のＤＳＢ(10)の間では、直接の通信は起こらない。ＰＳＥとＤＳＢ(10)の間のどの通信も、ＲＣＰを用いて行われる。ＩＰＣＭは、プロセッサのメモリ空間内に設定されるＰＣＩメッセージングウインドウを必要とする。メモリ空間内には、その他のプロセッサもコマンド及びデータを書き込みできる。ＩＰＣＭプロセッサを実行する各プロセッサについて、１つのプロセッサのアドレス空間に、１６ＭＢのウィンドウが割り当てられる。
【００６５】
ＩＣＰＭのエクステンションが使用されて、プロセッササブセクションとＲＣＰの間で情報が転送される。同じメッセージングプロトコルが使用されるが、メッセージには、ＤＳＢ(10)固有のプロセッサ識別子が埋め込まれる。同じサイズの１６ＭＢのウインドウが、オンカードメッセージのキューイングに使用されて、データ転送は、ＤＳＢ(10)制御ＰＣＩバスに亘って行われる。
【００６６】
通常、ＲＣＰとＤＳＢ(10)のプロセッササブシステム０の間のメッセージングは、アプリケーションメッセージ、転送メッセージ及びシャーシ管理メッセージである。ＲＣＰとプロセッササブシステム１の間のメッセージングは、アプリケーション及び転送メッセージであり、プロセッササブシステム０とプロセッササブシステム１の間のメッセージは、データ構造アップデートメッセージ、又はハードウェアプロセッサステータスメッセージである。
【００６７】
ＤＳＢ(10)のプロセッササブセクションは、それらがサービスするパケットの転送に責任を持ち、カードは、ネットワークプロセッサベースの転送エンジンを含んでいない。ＦＩＢは、各プロセッサのメインメモリに保持され、トライ(trie)検索テーブル及びネクストホップレコードテーブルの両方を含む。パケットにサービスが実行された後、１６バイトのカプセル化ヘッダが、新たなネクストホップレコードと共に上書きされる。新たなカプセル化ヘッダは、スイッチポートマップに加えて、典型的なイグレス、エグレス及びＬ２フローのｉｄを含む、パケットは、その後スイッチポートキューに待ち行列化されて、エグレスＰＳＥに送られる。
【００６８】
ＤＳＢ(10)のプロセッササブセクションで実行されるアプリケーションソフトウェアは、サードパーティソフトウェア又は専用ソフトウェアである。ＤＳＢ(10)で実行可能な典型的なソフトウェアを以下に記載する。
・ファイヤウォール
・ＮＡＴ/ＰＡＴ
・コンテキストフィルタリング
・ディープパケットインスペクション
・ＩＰＳＥＣ
・ＩＰＶ４/ＩＰＶ６ゲートウェイ
・ＶＯＩＰシグナリングゲートウェイ
・アプリケーションプロキシゲートウェイ
・ＩＰＳＥＣトンネリング
・Ｌ２/Ｌ３トンネリングサービス
・イントルージョンディテクション(lntrusion Detection)
・ローフルインターセプト(Lawful Intercept)
【００６９】
ＤＳＢ(10)で提供されるサービスをサポートするために、ソフトウェアサービスサポートがＲＣＰカードとＰＳＥカード(24)に必要とされる。ＲＣＰサポートは、システムのプロセッサリソースに基づいてサービスをプロビジョニングすること、それらのサービスの管理サポート(ｓｔａｔ、ｌｏｇなど)を提供すること、ＦＩＢ情報をＰＳＥに配布して、割り当てられたＤＳＢ(10)プロセッサへのパケットフローの転送をサポートすることを中心とする。任意の動的ロードバランシングが将来的に実装されて、ＲＣＰで行われるだろう。それは、スローパスを介した制御パケットの受信により有効とされるだろう。
【００７０】
ＰＳＥサポートは、クラス化動作を中心としており、それは、パケットフローが転送されるＤＳＢ(10)及びプロセッササブセクションを決定するのに実行される。解析(parsing)及びクラス化検索の全ては、イングレスＰＳＥのネットワークプロセッサで実行される。典型的なＶＲＩＤ/ＶＩ及び宛先転送アドレスは、クラス化プロセスで主要な役割をする。パケットの先頭に付け加えられるカプセル化ヘッダ内のフローＩＤフィールドは、ＤＳＢ(10)カードによる処理の際に使用されるだろう。クラス化動作サポート以外には、イングレス又はエグレスＰＳＥコードにおいて、さらなるソフトウェアサポートは必要とされない。
【００７１】
以下のサブセクションは、ＤＳＢ(10)のサービスを必要とするパケットについて、動的サービスブレード(10)のプラットホーム(14)内におけるデータフローを定義する。ＤＳＢ(10)のサービスを必要とするパケットは、クラス化を実行するイングレスＰＳＥからサービスをするＤＳＢ(10)カードに、さらに、出力リンクに転送するエグレスＰＳＥに流れる。
【００７２】
図３及び図４は、インライン及びミラーリングタイプのサービスの両方について、動的サービスブレード(10)のシステムを通るデータフローを示す。
【００７３】
イングレスＰＳＥカードで受信されたパケットは、ＰＳＥのファストパス内でクラス化されて、そのクラス化が成功すると、パケットにネクストホップレコードが割り当てられる。ネクストホップレコードは、内部スイッチルーティングマップと共に、下流のエンジンで使用される一連のフロー識別子を含んでいる。ファストパス内でクラス化されないパケットは、ネクストホップレコードの生成のために、ＰＳＥスローパスに送られる。ネクストホップレコードフィールドは、パケットと共にＤＳＢ(10)カードに送られるカプセル化ヘッダに挿入される。
【００７４】
イングレスフロー識別子は、ネクストホップレコードに配置されており、イングレス側のレートポリシングエンジンで使用されるデュアルトークンバケツリソースを選択する。ポリシング動作の結果に基づいて、パケットは、転送され、リマークされ、又は廃棄される。全てのレートポリシングの結果について、パケット及びバイト基準で、統計が保持される。イングレスフローの割り当て(assignment)は、パケットのソースに基づいてなされる。
【００７５】
１７ビットのＳＶＣフロー識別子は、ネクストホップレコード内に配置されており、ＤＳＢ(10)カードによって使用され、パケットが入れられる適切なキューが選択される。ＤＳＢ(10)フローの割り当てに使用されるモデルは、ＶＰＮ毎のサービスタイプ毎に１つのフローを割り当てる。ＳＶＣフロー識別子は、一般的なイングレスツーエグレスＰＳＥトランスファで使用されるエグレスフローｉｄに取って代わる。
【００７６】
ポートマップもネクストホップレコード内に配置されており、セルフルーティングラベルとしてスイッチファブリックで使用されて、パケットデータが適切なスイッチファブリック出力ポートに送られる。２つの形態のポートマップがサポートされている。ユニキャストポートマップは、パケットがＤＳＢ(10)カードにのみ送られる場合に使用される。ＤＳＢ(10)のサービスの後、パケットはエグレスＰＳＥカードに送られる。この種類のポートマップは、インラインタイプのサービスに使用されて、パケットフローは、イングレスＰＳＥからＤＳＢ(10)、そしてエグレスＰＳＥに向かう。マルチキャストポートマップは、侵入検知又はＣＡＬＥＡのようなミラーリングサービス技術を用いるサービスに使用される。この場合のパケットフローは、インクレスＰＳＥを出て、ＤＳＢ(10)カード及びエグレスＰＳＥの両方にマルチキャストされる。
【００７７】
スイッチファブリックから送られてＤＳＢ(10)カードで受信したパケットの先頭には、パケットを処理するのに使用されるカプセル化ヘッダが付される。インターボックスヘッダ内のＳＶＣフローｉｄフィールドは、パケットを処理するＤＳＢ(10)カードのハードウェア上で使用される唯一のフィールドである。ＤＳＢ(10)のキューイングエンジンは、ＰＳＥで使用されるものと同じエンジンであり、ＤＳＢ(10)フローｉｄは、エグレスフローｉｄと同じとして取り扱われる。プロセッササブシステムへの転送帯域幅は、フロー毎の基準でプログラマブルであり、特定の帯域幅が割り当てられたユニークなパケットフローに、ＶＰＮのサービスを割り当てることができる。３２のＷＦＱが各プロセッササブシステムに割り当てられる。各フローは、ＷＦＱに割り当てられて、それ自身のＲＥＤレベルの閾値を有する。
【００７８】
ＤＳＢ(10)カード上のパケットスイッチングＦＰＧＡは、パケットデータをプロセッササブシステムのパケットメモリに書き込むのに使用されるＤＭＡエンジンロジックを含んでいる。ＤＭＡエンジンは、カード上の各プロセッササブセクションに個別に割り当てられる。スキャッタギャザ(Scatter gather)ＤＭＡ動作は、リングバッファ機能を用いてフリーメモリページにアクセスしており、プロセッサのメインメモリにデータを転送するのに使用される。パケットを書き込む際に４バイトのオフセットが使用されて、レートポリサーを通じてスイッチファブリックにサブセクションが転送し返すための一般的な１６バイトのインターボックスヘッダを、プロセッサが生成可能となる。パケットスイッチＦＰＧＡに存在するポインタ制御は、プロセッササブシステム当たり３２のリングバッファをサポートする。
【００７９】
プロセッササブシステムは、３２の小さなＦＩＦＯベースのキューをメモリ内に保持している。それらＦＩＦＯのサイズは小さく、ＦＳＵキューイングシステムがパケットキューイングの待ち時間の主たる決定要因となる。パケットがＦＩＦＯのヘッドに到達するとすると、プロセッサは、パケットにカプセル化された１２バイトのインターボックスヘッダにアクセスして、そのパケットのサービスを開示する。ＳＶＣフローｉｄ及び宛先ポートマップフィールドは、プロセッサメモリ内に配置されたサービス識別子テーブルとＶＰＮ識別子テーブルにインテックスするハンドルとして使用される。
【００８０】
メインメモリのパケットデータと、決定されたＶＰＮ設定データとを用いて、プロセッサは、要求されているサービス動作をパケットに実行する。設定されたサービスをパケットのフローに実行することに加えて、プロセッサはフォワード動作も実行する。インクレスＰＳＥでパケットの先頭に加えられた１６バイトのインターボックスヘッダは、プロセッサメモリに格納されたネクストホップレコードから得られた新しいインターボックスヘッダで上書きされる。プロセッサは、ＶＲＩＤ及びＩＰ宛先アドレスを用いてトライベースの検索を実行して、ネクストホップレコードを選択する。
【００８１】
要求されたサービスとフォワード動作を実行した後、パケットは、Ｄｉｓｃｏｖｅｒｙ IIIメモリコントローラ内のＤＭＡエンジンを介して、パケットスイッチＦＰＧＡ内のホールディングバッファに転送され、ＴＳＵのカットスルーバッファリングシステムに転送される。レートポリシング動作がハードウェア内で選択的に実行されて、アービトレイションの後、パケットはスイッチファブリックに再送される。
【００８２】
エグレスＰＳＥで受信されたパケットは、パケットがＤＳＢ(10)カードに送られたのか否か、又は、パケットがイングレスＰＳＥから直接フォワードされたか否かという如何なる履歴も含んでいない。エグレスフローはリンク帯域幅を割り当てられて、プログラム可能なＲＥＤ閾値と共に、ＷＦＱ構造の待ち行列に入れられる。パケットは、スイッチファブリックから受信されると、エグレスバッファシステムに格納される。
【００８３】
エグレスバッファシステムに格納されたパケットは、要求に応じて物理インターフェイスカード(32)に転送され、ＦＳＵセグメンテーションエンジンを介して出力リンクに転送される。Ｌ２フローｉｄが物理インターフェイスカード(32)で使用されて、パケットヘッダのカプセル化と変更が実行される。
【００８４】
サービスカードは、ＰＳＥカード又はＤＳＢ(10)カード上に装着されるメザニン型カードである。インラインハードウェアベース、インラインソフトウェアベース及びコプロセッサベースという一般的な３種類のカードのアーキテクチャが、動的サービスブレード(10)システムにて使用される。ＰＭＣ、ＰｒＰＭＣ、ＰＴ５ＭＣ、ＸＭＣ及びオーロラという５種類のインターフェイスが、動的サービスブレード(10)システムにて使用される。サービスカードは、通常、１つの機能のみを実施する。
【００８５】
インラインハードウェアベースのサービスカードは、パケットフローを処理するハードウェア又はマイクロコードエンジンを含んでいる。ＰＣＩバスが用いられて、カードに制御プレーン情報が転送される。インラインハードウェアベースのサービスカードの全てのハードウェアは、それが配置されるＰＳＥ又はＤＳＢ(10)カードのアドレス空間内に存在する。
【００８６】
データプレーンは、全２重の３Ｇｂ/ｓオーロラデータリンク(オーロラベースのサービスカードの場合)、又は１０００ＢａｓｅＴイーサネットリンク(ＰＴ５ＭＣベースのサービスカードの場合)によってサポートされる。ＰＳＥベースのサービスカード構成では、サービスカードは、ＰＨＹカード(32)とＰＳＥカード(24)の間に論理的に存在し、イングレスパス及びエグレスパスの両方でパケットをサービスできる。ＤＳＢ(10)ベースのサービスカード構成では、サービスカードは、プロセッサとファストパスロジックの間に論理的に存在し、プロセッササブセクションに出入りするパケットをサービスできる。
【００８７】
インラインソフトウェアベースのサービスカードは、パケットの処理を実行するのに使用されるオンボードプロセッサ及びメモリを含んでいる。インラインソフトウェアベースのサービスカード上の全てのハードウェアは、サービスカードプロセッサのアドレス空間に配置される。
【００８８】
制御及びデータの両方は、ＤＭＡエンジンを介して、ＰＣＩ−Ｘバス(ＰＭＣ又はＰｒＰＭＣカードのサービスタイプ)若しくはＰＣＩ−Ｅｘｐｒｅｓｓバス(ＸＭＣサービスカードタイプ)の何れかに亘って、又は、ＰＴ５ＭＣ若しくはＰｒＰＭＣタイプのサービスカード上のＧｉｇＥリンクを介してカードと送受信される。インラインプロセッサベースのサービスカードが装着されたＰＳＥ又はＤＳＢ(10)のパケットのデータフローは、上述したハードウェアベースのサービスカードと同じである。
【００８９】
コプロセッサベースのサービスカードは、パケットを処理する場合にＤＳＢ(10)のプロセッサをオフロードするのに使用されるハードウェア及びソフトウェアを含んでいる。この種類のサービスカードは、ＰＳＥでは使用されない。サービスカードは、ハードウェアオンリータイプのカードであってよく、ファームウェア又はソフトウェアを実行するプロセッサを含むものであってよい。ＤＳＢ(10)上のプロセッササブシステムの視点からは、コプロセッサベースのサービスカードは、ＰＣＩブリッジングアーキテクチャを介してアクセス可能である。ＰＣＩ−Ｘバス(ＰＭＣ/ＰｒＰＭＣカードタイプ)又はＰＣＩ−Ｅｘｐｒｅｓｓバス(ＸＭＣ)の何れかのインターフェイスが使用されて、ＰＣＩブリッジングアーキテクチャが実装される。
【００９０】
プロセッササブシステムのメインメモリへのＤＭＡ機能がサポートされる。典型的なプロセッササブシステムは、コマンドタイプとメモリアドレスを含むコプロセッサベースのサービスカードに、コマンドを書き込むだろう。サービスカードは、プロセッサメモリからパケットデータを読み出して、パケットデータを処理し、新しい又は変更されたパケットデータをプロセッサメモリに書き戻すだろう。
【００９１】
サービスカードのフォームファクタは、ＶＩＴＡ ４２.３標準に基づいている。これにより、ＰＣＩ−Ｅｘｐｒｅｓｓ、ＰＭＣ及びＰＴ５ＭＣメザニン型カードが使用できる。加えて、３.１２５Ｇｂ/ｓのカスタムメザニン型カードタイプも使用できる。各サービスカードのフォームファクタのタイプについて、コントロールインターフェイス及びデータインターフェイスを以下に記載する。
【００９２】
【表１】
2007208960.tif 000003
【００９３】
ＰＳＥカードにあるサービスカード向けのデータフローは、イングレスＰＳＥで実行されるクラス化処理から開始する。クラス化に続いて、パケットは、１７ビットのフロー識別子を先頭に付されて、イングレスのサービスをするサービスカードにフォワードされる。パケットに完全なサービスをするのに必要な全てのハードウェア及びソフトウェアは、サービスカード上にある。インクレスの処理の後、転送管理のために、パケットはＮＰＵに、又は直接ＴＳＵに戻される。サービスカード内の識別子テーブルが使用されて、イングレスパケットの宛先と、それが要するカプセル化ヘッダとが決定される。
【００９４】
エグレスパスでは、フローは、それらがプロビジョンされる帯域幅スケジューラブルチャンネルに従って、待ち行列に入れられる。特定のチャンネルにプロビジョンされた全てのパケットは、サービスカードに転送され、サービスカードでは、クラス化がフロー毎の基準で実行されて、パケットがサービスされるか、又はネットワークに直接に転送されるかが決定される。サービスが完了すると、サービスされたパケットは、待ち行列に入れられて、ネットワークに送信される。
【００９５】
オンラインハードウェアベースのサービスカードでは、イングレスパケットデータは、カードに送信されて、パイプライン化ハードウェアエンジンに送信される前に、ＦＩＦＯに一時的に格納される。データは、その後一般的に処理されて、カットスルー方式でサービスカード外に送信される。エグレス側のデータフローも同じであるが、データは、サービスカード上のコンテキストハンドリングエンジンに最初に送信されて、多数のエグレスＦＳＵチャンネルがより容易にサポートされる。インラインハードウェアベースのサービスカードでは、イングレスデータは、サービスカードプロセッサのメモリ空間に送られる。これは、典型的な格納及びフォワード動作である。パケットデータは、処理された後、ＤＭＡの書き込みにより、サービスカードから、ＰＳＥ上にあるＦＩＦＯベースのアドレス可能なターゲットＦＰＧＡに送信される。
【００９６】
ＤＳＢ(10)カードにあるサービスカード向けのデータフローは、ＰＳＥと同様であるが、インターボックスヘッダのＳＶＣ ＦＬＯＷ ＩＤが、サービスカードによって識別子ハンドルとして使用される点が異なる。典型的なデータフローでは、パケットは、ＤＳＢ(10)のスイッチインターフェイスから発して、ＦＳＵバッファリングシステムに送信されて、サービスカードに転送されるだろう。サービスの後、パケットは、ＳＶＣ ＦＬＯＷ ＩＤに基づいて選択されたプロセッササブシステムに送られるだろう。ＤＳＢ(10)のプロセッササブセクションによるパケット処理の後、パケットは、スイッチファブリックに戻される前に、更なる処理を行うサービスカードと、ＴＳＵトラヒックマネージャ/セグメンテーションエンジンとにフォワードされる。
【００９７】
ＤＳＢ(10)カードにあるコプロセッサベースのサービスカードでは、パケットデータフローは、この明細書のＤＳＢ(10)コプロセッサの節で説明したように生じる。プロセッササブシステムメモリに入ると、パケットデータは、サービスカードで読み出し及び処理されて、その後、プロセッサメモリに書き戻される。メモリに書き戻された後、フォワード処理が実行されて、パケットは、スイッチファブリックへの待ち行列に入れられる。
【００９８】
動的ハードウェアサービスブレード(ＤＨＳ)は、ＤＳＢ(10)カードに関連したＰＨＹカード(32)のスロットにある。その主たる機能は、パケットサービスとフォワード動作の両方について、ＤＳＢ(10)カードにハードウェアベースのオフロードを与えることである。ネットワークプロセッサがカードに与えられて、フォワード機能が与えられる。実行されるサービスに特有のハードウェアもカードに含められる。様々な異なる種類のカードが存在して、様々なサービスをサポートするだろう。初期のＤＨＳカードは、ＮＰを含むカードであって、３枚までのサービスカードを装着してマルチファンクションカードとなるキャリアカードである。このマルチファンクションカードでサポートされるカードの構成は確定されるだろう。
【００９９】
ＳＰＩ−３タイプのバスが使用されて、ＤＨＳカードへのデータの送受信が行われる。インターフェイスＦＰＧＡロジックコアは、ＤＳＢ(10)にインターフェイスするために全てのＤＨＳデザインで使用される。カード上のＮＰにインタフェイスするために、第２の共通のロジックコアが使用される。ＤＨＳカードにおけるその他全てのロジックは、カードのパケットサービスに特有のものである。
【０１００】
共通のソフトウェアデバイスドライバが使用されて、ＳＰＩ−３インタフェイスＦＰＧＡロジックが管理される。同様な共通のＰＳＥドライバ及びマイクロコードイメージが使用されて、ボード上のＩＱ２２００ベースのＮＰコンプレックスが管理される。これら両方の構成要素のドライバコードは、ＤＳＢ(10)ボードのプロセスサブジェクション０で実行される。
【０１０１】
ＤＳＢ(10)カードで受信されたパケットは、パケットスイッチＦＰＧＡにより、ＳＰＩ−３バスに亘ってＤＨＳに送信される。バスに亘る完全なマルチチャンネルサポートが与えられて、１６チャンネルがＤＨＳの専用になる。パケットの先頭に付されたネクストホップレコードのエグレスフローｉｄは、パケットフローのチャンネルを決定し、パケットがＤＨＳカードに送られるべきか否かを決定する。
【０１０２】
パケットがＤＨＳに送信されると、必要なサービス動作がパケットに実行されて、それはＮＰに送られてフォワードされる。フォワード動作が完了した後、パケットは待ち行列に入れられて、スイッチファブリックに送信される。
【０１０３】
ハードウェアパケットベースのパケットフローをサポートすることに加えて、様々なＤＨＳが使用されて、複数の１００ＭＢオンボード２.５”ドライバ又はＮＡＳインターフェイスロジックを介して、アプリケーションデータベースストレージがサポートされる。
【０１０４】
図５乃至図１０は、ＤＳＢ(10)とサービスカードを用いた幾つかの応用の構成例である。  それらは、可能な例のほんの一部である。ＤＳＢ(10)とサービスカードのソリューションの両方が、サービスのために存在する場合、(ＤＳＢ(10)で集中化された、又はサービスカードで分散された)最もコスト効果がある構成は、サービスプロバイダのプロビジョニングとトラヒックの負荷で決定される。
【０１０５】
マーケットウインドウの要求をサポートするために、ＤＳＢ(10)の初期実施形態は、ファストパスチップセットに基づくであろう。ギガビットイーサネットリンクが、ファストパスチップセットと７４４８ベースのプロセッササブセクション間のパケットトランスポートとして使用される。ファストパスチップセットからプロセッササブセクションへのインターフェイスにて、パケットフォーマットとカプセル化ヘッダは同じであって、パケットハンドリングコードにおける単一のソフトウェアバージョンを可能とする。以下の表は、バージョン１及び２のファストパスチップセットのＤＳＢ(10)の実施形態の両方でサポートされるＤＳＢ(10)の特徴を示す。
【０１０６】
【表２】
2007208960.tif 000004
【０１０７】
動的サービスブレード(ＤＳＢ)(10)は、サードパーティソフトウェアの開発チームがエッジルータ(12)製品の広範なサービスアプリケーションをマイグレート及び実装することを可能にするプラットホーム(14)である。ＤＳＢ(10)カードは、煩雑なケーブルや外部装置を用いることなく、サービス固有の処理を追加するために、ＤＳＢ(10)カードにパケットフローを向け又はミラーすることを可能としている。この明細書は、この目的のために開発者に利用されるアプリケーションプログラムインターフェイス(ＡＰＩ)を規定する。
【０１０８】
Ｌｉｎｕｘオペレーションシステムが、ＤＳＢ(10)カード上で動作する。それは、現存するネットワークアプリケーション、ライセンシング及び価格構造に基づいて選択された。利用可能なアプリケーションのリストは、大きく、そして増加している。これは、以下を含む。
・ＮＡＴ/ファイヤウォールアプリケーション
・パケットキャプチャ/ダンプアプリケーション
・ネットワークフローアプリケション
【０１０９】
任意の組込みシステムの場合のように、ＯＳの安定性、パフォーマンス及び配置サイズは、ＤＳＢ(10)カードでも有用な因子である。これらの理由から、ＤＳＢ(10)のＯＳは、２.６.ｘＬｉｎｕｘカーネルに基づいている。２.６.ｘカーネルは、リアルタイム性、完全なマルチプロセッシング、スレッディング能力について十分な機能を有するＯＳである。このバージョンのカーネルについて多数の組み込みシステムへの移植が成功しており、以下を含む多数のＩＰプロトコルがサポートされている。
・ＮＡＴ/ファイヤーウォール
・ＦＴＰ、ＴＦＴＰ
・ｔｅｌｎｅｔ
・Ｂｏｏｔｐ
【０１１０】
ツールチェイン及びルートファイルシステムは、ビルドルート(Buildroot)ソフトウェアパッケージに基づいており、以下を含む。
・ＧＣＣクロスコンパイラ、アセンブラ及びリンカ。
・組込みシステムに特別に設計された一般的なＣライブラリ(ｕＣｌｉｂｃ)。ｕＣｌｉｂｃライブラリは、一般的なＧＮＵ Ｃ ライブラリの多くの特徴をもたらすが、コードサイズは僅かである。
・最も一般的なＵＮＩＸ(登録商標)ユーティリティ(ＢｕｓｙＢｏｘ)。ｕＣｌｉｂｃパッケージと同様に、ＢｕｓｙＢｏｘ ＵＮＩＸユーティリティパッケージは、一般的なＵＮＩＸユーティリティに最小のフットプリントをもたらすように設計されている。
・パケットキャプチャライブラリ及びｔｃｐ＿ｄｕｍｐファシリティ。
【０１１１】
ＤＳＢ(10)は、セキュリティ上の多数の特徴を有する一般的なＬｉｎｕｘＯＳを実行する。任意のサーバと同様に、セキュリティは、最終的にはシステムアドミニストレータの責任である。
【０１１２】
多くの場合、同じシステムアドミニストレータによって、システム及びＤＳＢ(10)カードが管理されるが、これは常態ではないかも知れない。故に、システムアドミニストレータは、ＤＳＢ(10)カードを有効/無効にする能力を有し、ＤＳＢ(10)の特徴を特定の仮想ルータ(12)のコンテキストに制限する能力も有するだろう。
【０１１３】
仮想ルーティング(ＶＲ)は、システムの重要な特徴である。
【０１１４】
ソケットＡＰＩは、パケットの送受信に使用され、ｂｉｎｄコマンドは、ソケットを特定のインターフェイスに制限するのに使用される。特定のインターフェイスにバインドすることで、ＶＲ特有のアプリケーションがＤＳＢ(10)カードに実装可能となる。
【０１１５】
ＤＳＢ(10)カードは、独立した２つのプロセッサコンプレクスを含んでおり、個々のプロセッサの各々は、異なるデフォルトＶＲコンテクストについて設定され得る。以下に、デフォルトＶＲコンテキストを管理するのに利用可能なコマンドを規定する。
【０１１６】
Ｓｅｔ ＶＲ Ｃｏｎｔｅｘｔ ＡＰＩ (ｍｒ＿ｓｅｔ＿ｖｒ)
このＡＰＩは、特定のＤＳＢ(10)プロセッサについてデフォルト仮想ルータ(ＶＲ)(12)コンテキストを設定するのに使用される。ＤＳＢ(10)カードは、独立した２つのプロセッサコンプレクスを含んでおり、個々のプロセッサの各々は、異なるデフォルトＶＲコンテクストについて設定可能である。現在、単一のルーティングインスタンスのみサポートしているカーネルＩＰスタックは、このＶＲに制限される。このＡＰＩは、スーパーユーザ又はルート特権(root privilege)承認を伴うアプリケーション/ユーザに制限される。
【０１１７】
ネーム：
ｍｒ＿ｓｅｔ＿ｖｒ  --  デフォルト仮想ルータコンテキストを設定。
【０１１８】
説明：
指定されたプロセッサについてデフォルト仮想ルータ(12)コンテキストを設定する。これは、全ての一般的なポートベースのソケットコールについて仮定されるルータ(12)コンテキストである。任意のオープンソケットがある場合、このリクエストは拒否される。
【０１１９】
シノプシス：
ｉｎｔ ｍｒ＿ｓｅｔ＿ｖｒ (ｉｎｔ ｐｒｏｃｅｓｓｏｒ＿ｉｄ，ｉｎｔ ｖｒ＿ｃｏｎｔｅｘｔ)；
【０１２０】
引数：
・ｐｒｏｃｅｓｓｏｒ＿ｉｄ
ＤＳＢ(10)カードは、独立した２つのプロセッサを含んでおり、この引数の値幅は、０乃至１である。
・ｖｒ＿ｃｏｎｔｅｘｔ
この引数は、選択されたプロセッサについてＬｉｎｕｘＩＰスタックで使用される仮想ルータ(12)コンテキストを特定する。この引数の値幅は、２乃至８０００である。注意：ＶＲ ｃｏｎｔｅｘｔ １は、システムで取って置かれ、ＤＳＢ(10)カードではアクセスできない。
【０１２１】
戻値：
成功なら０が戻り、その他の場合、ｍｒ＿ａｐｉ.ｈファイルに定義が記述された負の値が戻る。
【０１２２】
コマンドライン：
ｉｐ ｖｒｆ ａｄｄ ＜ｖｒ＿ｃｏｎｔｅｘｔ＞ ｃｐｕ ＜ｐｒｏｃｅｓｓｏｒ＿ｉｄ＞
ｉｐ ｖｒｆ ａｄｄ １００ ｃｐｕ ０
【０１２３】
Ｇｅｔ ＶＲ Ｃｏｎｔｅｘｔ ＡＰＩ (ｍｒ＿ｓｅｔ＿ｖｒ)
このＡＰＩは、指定されたＤＳＢ(10)のプロセッサについてデフォルト仮想ルータ(ＶＲ)コンテキストを得るのに使用される。
【０１２４】
ネーム：
ｍｒ＿ｇｅｔ＿ｖｒ  --  デフォルト仮想ルータコンテキストを得る。
【０１２５】
説明：
このコマンドは、指定されたプロセッサについて、デフォルト仮想ルータコンテキストを得るのに使用される。
【０１２６】
シノプシス：
ｉｎｔ ｍｒ＿ｇｅｔ＿ｖｒ (ｉｎｔ ｐｒｏｃｅｓｓｏｒ＿ｉｄ)；
【０１２７】
引数：
・ｐｒｏｃｅｓｓｏｒ＿ｉｄ
ＤＳＢ(10)カードは、独立した２つのプロセッサを含んでおり、この引数の値幅は、０乃至１である。
【０１２８】
戻値：
ｐｒｏｃｅｓｓｏｒ＿ｉｄ引数が有効であるならば、このルーチンは、指定されたプロセッサについてデフォルト仮想ルータコンテキストを示す負ではない整数を戻す。その他の場合、ｍｒ＿ａｐｉ.ｈファイルに記述された負の値が戻される。
【０１２９】
コマンドライン：
ｉｐ ｖｒｆ ｓｈｏｗ
【０１３０】
Ｇｅｔ Ｐｒｏｃｅｓｓｏｒ Ｉｄ (ｍｒ＿ｇｅｔ＿ ｐｒｏｃｅｓｓｏｒ＿ｉｄ)
ＤＳＢ(10)カードは、独立した複数のプロセッサコンプレクスをサポートし、このＡＰＩは、どのプロセッサでアプリケーションが実行されているのかを判別するのにアプリケーションコードで利用される。
【０１３１】
ネーム：
ｍｒ＿ｇｅｔ＿ｐｒｏｃｅｓｓｏｒ＿ｉｄ  --  プロセス番号を得て戻す。
【０１３２】
説明：
プロセッサ識別子を戻す。ＤＳＢ(10)カードは、複数のプロセッサを含んでおり、ＡＰＩの幾つかは、その引数の１つとしてプロセッサ識別子を必要とする。
【０１３３】
シノプシス：
ｉｎｔ ｍｒ＿ｇｅｔ＿ｐｒｏｃｅｓｓｏｒ＿ｉｄ ()；
【０１３４】
引数：
なし。
【０１３５】
戻値：
１乃至２のプロセッサ識別子を戻す。
【０１３６】
ネットワークデバイスドライバは、通常のブートアップ初期化の一部として、ＤＳＢ(10)カードの物理ポートについて、設定及び初期化される。Ｌｉｎｕｘは、一般的なネットワークデバイスについて名前変換を強要し、ＤＳＢ(10)もそれに従う。例えば、ＤＳＢ(10)カードは、「ｅｔｈ０」及び「ｅｔｈ１」と名付けられた２つの物理的ギガビットイーサネットインターフェースを含んでいる。
【０１３７】
これらの物理的インターフェイスデバイスに加えて、ＤＳＢ(10)アプリケーションは、選択されたシステムインターフェイスへのアクセスも必要とする。システムが、１００の仮想ルータインスタンスと１０００のインターフェイスとをサポートできるとすると、可能な全てのインターフェイスについて、ネットワークデバイスを生成する現実的な方法はない。その代わりに、所定の数までの仮想ネットワークデバイスが、このために定義される。ユーザは、本明細書で後述する新たなｍｒｃｏｎｆｉｇツールを用いて、又は、本明細書で定義されるＡＰＩをプログラムで用いて、これらの仮想ネットワークデバイスを特定のインターフェイスに結びつける。仮想ネットワークデバイスの名前変換は、「ｍｒｖ０」、「ｍｒｖ１」、・・・・となる。
【０１３８】
仮想ネットワークデバイスが、指定されたインターフェイスに結び付けられる場合、ＤＳＢ(10)のカーネルは、システムと通信し、以下のフローモードの１つを用いて、そのインターフェイスに関係したパケットフローが、ＤＳＢ(10)に向けられるように要求する。
・ミラード(Mirrored)。このフローモードでは、指定されたインターフェイスで受信された、又はそれらに向けられた全てのＩＰパケットの鏡像(mirrored image)が、ＤＳＢ(10)カードに送られる。システムは、ＤＳＢ(10)にコピーをフォワードすることと並行して、パケットをそれらの宛先にフォワードする。そして、このために、ＤＳＢ(10)は、このモードで設定されたＤＳＢ(10)の仮想ネットワークデバイスに亘ってパケットを送信することは許されない。パケットをキャプチャ又はモニタするアプリケーションは、このモードを使うように構成されるだろう。
・バンプインザワイヤ(Bump in the wire)。このフローモードでは、指定されたインターフェイスで受信された、又はそれらに向けられたＩＰパケットは、更なる処理のためにＤＳＢ(10)カードにフォワードされる。それに乗じて、ＤＳＢ(10)は、システムからルーティングアップデートを受け取る。そして、ＤＳＢ(10)がこの種類のインターフェイスに亘ってパケットを送信する場合に、ルート検索がなされて、どのエグレスインターフェイスにパケットがフォワードされるかが決定される。ファイヤウォールアプリケーションは、このモードを使うように構成されるだろう。
・チェックとフィルタを伴うバンプインザワイヤ。このフローモードは、上述のモードと似ているが、イングレスで、通常のＩＰルート検索と、ＡＣＬフィルタを含むフィルタとがさらに行われる。パケットが受信されて、システムがそのパケットについて正しいルートを有していない場合、パケットは廃棄される。同様に、何れかのフィルタチェックでパケットが不合格の場合も、パケットは廃棄される。
・ローカル。このフローモードでは、指定されたインターフェイスで受信された全てのＩＰパケットは、ＤＳＢ(10)カードにフォワードされて、このインターフェイスに亘ってＤＳＢ(10)カードによって送信された任意のパケットは、そのインターフェイスから送り出される。ＮＡＴアプリケーションでは、ローカル又はプライベートネットワークインターフェイスが、このモードを使うように構成されるだろう。
【０１３９】
システムは、全てのレイヤー２プロトコルを取扱い、ＩＰパケットのみがＤＳＢ(10)にフォワードされることに注意することは重要である。ＤＳＢ(10)の仮想ネットワークデバイスはまた、指定されたインターフェイスのリンクステートをミラーする。そのインターフェイスのアドミニストレーション又は動作状態がダウンしていると、関連するＤＳＢ(10)の仮想ネットワークデバイスのインターフェイスもダウンしているだろう。
【０１４０】
以下のＡＰＩが使用されて、ＤＳＢ(10)の仮想ネットワークデバイスが、特定のインターフェイスにバインドされる。
【０１４１】
ネーム：
ｍｒ＿ｖｎｅｔ＿ｂｉｎｄ  --  ＤＳＢ仮想ネットワークデバイスをインターフェイスにバインドする。
【０１４２】
説明：
ＤＳＢ(10)の仮想ネットワークデバイスを、特定のインターフェイスにバインドする。引数が妥当性チェックをパスする場合、ＤＳＢ(10)のカーネルは、システムに対して、特定のインターフェイスに関するパケットフローが、このＤＳＢ(10)カードにミラーされる又は向けられることを要求するリクエストを生成する。システムは、以下を含む幾つかの理由でリクエストを拒絶する。
・システムアドミニストレータが、このＤＳＢ(10)カードからこのようなリクエストをシステムが受け入れることを可能にしていない。
・リクエストされた論理デバイスが存在していない。
・ｉｆ＿ｔｙｐｅが、リクエストされた論理デバイスでサポートされていない。
【０１４３】
シンポシス：
＃ｉｎｃｌｕｄｅ  ＜ｍｒ＿ａｐｉ．ｈ＞
ｉｎｔ ｍｒ＿ｖｎｅｔ＿ｂｉｎｄ (ｃｈａｒ ＊ｖｎｅｔ＿ｎａｍｅ，ｉｎｔ ｖｒｆ＿ｉｄ，ｉｎｔ ｓｌｏｔ＿ｉｄ，ｉｎｔ ｐｏｒｔ＿ｉｄ，ｉｎｔ ｉｆ＿ｔｙｐｅ，ｉｎｔ ｉｆ＿ｃｈａｎｎｅｌ，ｕｎｓｉｇｎｅｄ ｉｎｔ ｉｐ＿ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ ｉｎｔ ｉｐ＿ｍａｓｋ，ｉｎｔ ｐａｃｋｅｔ＿ｆｌｏｗ＿ｍｏｄｅ）；
【０１４４】
引数：
ＤＳＢ(10)の仮想ネットワークデバイスは、レイヤー２リンク情報、レイヤー３ＩＰ情報、又はそれら両方の組合せに基づいて生成される。「０」値は、呼び出し側が不要とみなす任意の引数について使用される。例えば、デバイスがＩＰ情報のみで生成されているとすると、レイヤー２について指定される引数の全ては「０」値になる。
【０１４５】
・ｖｎｅｔ＿ｎａｍｅ
インターフェイスにバインドされるＤＳＢ(10)の仮想ネットワークデバイスを指定する。例えば、有効なデバイス名は、「ｍｒｖ０」、「ｍｒｖ１」,・・・を含む。
【０１４６】
・ｖｒｆ＿ｉｄ
仮想ルータコンテキスト識別子(１乃至Ｎ)。
【０１４７】
・ｓｌｏｔ＿ｉｄ
インターフェイスに関するスロット番号(１乃至１６)。
【０１４８】
・ｐｏｒｔ＿ｉｄ
このインターフェイスに関する物理ポート(１乃至Ｎ)。
【０１４９】
・ｉｆ＿ｔｙｐｅ
ＩＡＮＡ機関で指定されるようなインターフェイスの種類。指定されたｉｆ＿ｔｙｐｅが、指定された仮想インターフェイスでサポートされていない場合、エラーが戻される。
【０１５０】
・ｉｆ＿ｃｈａｎｎｅｌ
インターフェイスのインターフェイスチャンネル識別子。指定されたｉｆ＿ｃｈａｎｎｅｌが、指定されたポートでサポートされていない場合、エラーが戻される。これは、ｉｆ＿ｔｙｐｅに基づいて以下のように変化する。
【０１５１】
【表３】
2007208960.tif 000005
【０１５２】
・ｉｐ＿ａｄｄｒｅｓｓ
インターフェイスのＩＰｖ４アドレス。
【０１５３】
・ｉｐ＿ｍａｓｋ
インターフェイスのＩＰｖ４マスク。
【０１５４】
・ｐａｃｋｅｔ＿ｆｌｏｗ＿ｍｏｄｅ
システムは、以下のモードを用いてＩＰパケットフローを運ぶ。
・ミラードモード(１)。このフローモードでは、ＩＰパケットのレプリカが、フォワードと並行してＤＳＢ(10)カードに運ばれる。如何なるフォワード先も生じることなくトラヒックをキャプチャ/モニタする必要があるアプリケーションは、このモードを使用するだろう。このモードで構成されるネットワークデバイスは、パケットを送信する機能がなく、如何なる試みもエラーになる。
・バンプインザワイヤモード(２)。このフローモードでは、指定されたインターフェイスで受信された、又はそれらに向けられたＩＰパケットは、更なる処理のために、ＤＳＢ(10)カードにフォワードされる。ＤＳＢ(10)は、システムからルーティングアップデートを受け取って、それに乗じて、ＤＳＢ(10)がこの種類のインターフェイスに亘ってパケットを送信する場合、ルート検索がなされて、どのエグレスインターフェイスにパケットがフォワードされるかが決定される。
・チェックとフィルタを伴うバンプインザワイヤ(３)。これは、上述のモードと似ているが、イングレスで、通常のＩＰルート検索と、ＡＣＬフィルタを含むフィルタとがさらに行われる。パケットが受信されて、システムがそのパケットについて正しいルートを有していない場合、パケットは廃棄される。同様に、何れかのフィルタチェックでパケットが不合格の場合も、パケットは廃棄される。
・ローカル(４)。このフローモードでは、指定されたインターフェイスで受信されたＩＰパケットは、ＤＳＢ(10)カードにフォワードされ、このインターフェイスに亘ってＤＳＢ(10)カードによって送信された任意のパケットは、そのインターフェイスから送り出される。
【０１５５】
戻値：
成功した場合、指定されたインターフェイスの仮想ルータコンテキストを示す正の整数が戻される。その他の場合、ｍｒ＿ａｐｉ.ｈファイルに定義が記述された負の値が戻される。この生成リクエストは、以下を含む幾つかの理由で失敗する。
・何れかの引数が不当又は範囲外である場合。
・指定されたｓｌｏｔ＿ｉｄが空である。
・指定されたｐｏｒｔ＿ｉｄが存在していない。
・指定されたｉｆ＿ｔｙｐｅが、指定されたｐｏｒｔ＿ｉｄでサポートされていない。
【０１５６】
コマンドライン：
ｍｒｃｏｎｆｉｇ ＜ｄｅｖｉｃｅ＿ｎａｍｅ＞ ｖｒｆ ＜ｖｒｆ＿ｉｄ＞ ｓｌｏｔ ＜ｓｌｏｔ＿ｉｄ＞ ｐｏｒｔ ＜ｐｏｒｔ＿ｉｄ＞ ｉｎｅｔ ＜ｉｐ＿ａｄｄｒｅｓｓ＞ ｎｅｔｍａｓｋ ＜ｉｐ＿ｍａｓｋ＞ ｍｏｄｅ ＜ｐａｃｋｅｔ＿ｆｌｏｗ＿ｍｏｄｅ＞
【０１５７】
Ｓｏｃｋｅｔ  ＡＰＩ
ＤＳＢ(10)は、ＬｉｎｕｘパケットソケットＡＰＩを含む、一般的なソケットＡＰＩをサポートする。ＤＳＢ(10)にミラーされる/向けられるパケットは、標準ではない１６バイトのヘッダを含んでおり、このために、新しいプロトコルタイプ(ＥＴＨ＿Ｐ＿ＭＲ８Ｋ)がパケットソケットＡＰＩに加えられた。例えば、ＩＰパケットを調べる必要があるアプリケーションは、ソケットを以下のように生成する。
【０１５８】
＃ｉｎｃｌｕｄｅ ＜ｌｉｎｕｘ/ｉｆ＿ｐａｃｋｅｔ.ｈ＞
＃ｉｎｃｌｕｄｅ ＜ｌｉｎｕｘ/ｉｆ＿ｅｔｈｅｒ.ｈ＞
ｉｎｔ ｐａｃｋｅｔ＿ｓｏｃｋｅｔ ＝ ｓｏｃｋｅｔ (ＰＦ＿ＰＡＣＫＥＴ，ＳＯＣＫ＿ＤＧＲＡＭ，ｈｔｏｎｓ (ＥＴＨ＿Ｐ＿ＭＲ８Ｋ))；
【０１５９】
デフォルトで、上述の指定されたプロトコルタイプ(ＰＦ＿ＰＡＣＫＥＴ)の全てのパケットは、上述のｐａｃｋｅｔ＿ｓｏｃｋｅｔに、そのソケットがｂｉｎｄＡＰＩを用いる特定のインターフェイスにバインドされている限り引き継がれる。特定のインターフェイスにソケットをバインドすることはかなり共通した慣行であるが、仮想ルーティング環境で実行されている場合には、ソケットを特定のインターフェイスにバインドすることは、非常に推奨される。カーネルコードは,デフォルトＶＲコンテキストについて知るのみであり、潜在的に重複するＩＰアドレス空間を伴う複数のＶＲ環境では、予期しない結果が起こり得る。
【０１６０】
例えば、ＤＳＢ(10)の仮想ネットワークデバイスが、「ｍｒｖ３」であるＤＳＢ(10)の仮想ネットワークデバイス上のインターフェイスについて生成されているとすると、上述のｐａｃｋｅｔ＿ｓｏｃｋｅｔをこのインターフェイスにバインドすることは、以下のようになされる。
【０１６１】
【表４】
2007208960.tif 000006
【０１６２】
デバイスドライバレベルで未処理のパケット(raw packet)を送受信するのに使用されるパケットソケットＡＰＩもサポートされる。この一般的なＡＰＩは、ＳＯＣＫ＿ＤＧＲＡＭ及びＳＯＣＫ＿ＲＡＷモードをサポートする。ＳＯＣＫ＿ＤＧＲＡＭは、ＩＰレイヤーで動作し、ＳＯＣＫ＿ＲＡＷは、レイヤー２リンクヘッダを含む。ＤＳＢ(10)カードでは、ＳＯＣＫ＿ＲＡＷは、パケットをフォワードするためにハードウェアで使用される標準外の１６バイトヘッダを含む。このヘッダ情報は、アプリケーションに僅かしか使用されず、リコメンデーションは、ＳＯＣＫ＿ＤＧＲＡＭのオプションを用いる。
【０１６３】
ローカルＩＰアドレスコンフィグレーション
幾つかのＤＳＢ(10)のアプリケーションは、様々な理由からリモートサーバに直接アクセスすることを必要とするかも知れない。例えば、アプリケーションは、ピアサーバに、２つのサーバを接続するインターフェイスを介して、セッションをモニタした結果をＦＴＰする必要があるかも知れない。このような場合、ＤＳＢ(10)は、ＤＳＢ(10)上でＩＰアドレスを設定する必要があり、システムの視点としては、ローカルに繋がれたホストを考慮するだろう。システムで受信されて、このＩＰアドレスに向かうパケットは、ＤＳＢ(10)カードに直接フォワードされる。
【０１６４】
一般的なｉｆｃｏｎｆｉｇコマンドが使用されて、ＤＳＢ(10)のＩＰインターフェイスが設定されるだろう。例えば、ＤＳＢ(10)の仮想ネットワークデバイス「ｍｒｖ３」が、仮想ルータ１００のインターフェイスにバインドされているとする。
【０１６５】
さらに、ローカルＩＰアドレス１０.１.１.３５が、ＤＳＢ(10)カードにターミネートされる必要があるとすると、シェル又はスタートアップスクリプトから発動されたコマンド：ｉｆｃｏｎｆｉｇ ｍｒｖ３ １０.１.１.３５ ｎｅｔｍａｓｋ ２５５.２５５.２５５.２５５ ｕｐが、このアドレスを設定するのに使用される。
【０１６６】
このコマンドを受信すると、ＤＳＢ(10)は、システムに対して、ＩＰアドレス１０.１.１.３５を仮想ルータ１００に加えるリクエストを出すだろう。そのリクエストが受け入れられると、システムは、このＩＰアドレスが宛先であるパケットを、ＤＳＢ(10)カードにフォワードするだろう。
【０１６７】
ＭＲ８Ｋ⇔ＤＳＢプロキシＣＬＩインターフェイス
最終な目的は、システムとＤＳＢ(10)カードの依存関係をできるだけ少なくすることである。ＭＲ８８⇔ＤＳＢ通信のほとんどは、ＤＳＢ(10)のアプリケーションからこの明細書で定義されたＡＰＩの背後に隠れる。しかしながら、幾つかの状況下では、システムアドミニストレータがＤＳＢ(10)のＣＬＩに直接アクセスすることで、システムアドミニストレータに、システムの管理及びモニタに使用するものと同じ接続から、ＤＳＢ(10)のアプリケーションを設定及び管理する能力を与えることが望ましいかも知れない。
【０１６８】
これは、Ｌｉｎｕｘの疑似ターミナルを用いることで達成される。８個の疑似ターミナルが、この目的のためにＤＳＢ(10)カードで使用できる。ＭＲ８Ｋ−ＣＬＩから、そのセッションは、コマンド：ｓｅｌｅｃｔ ｄｓｂ ＜ｓｌｏｔ＞ ＜ａｐｐｌｉｃａｔｉｏｎ ｎａｍｅ＞を発することで初期化される。
【０１６９】
引数＜ｓｌｏｔ＞は、ＤＳＢカードのスロット(１−１６)を指定し、＜ａｐｐｌｉｃａｔｉｏｎ ｎａｍｅ＞は、ＤＳＢのアプリケーションを指定する。セッションが初期化されると、ＭＲ８Ｋ−ＣＬＩの入力の全てが、ＤＳＢ(10)カード上の指定された疑似ターミナルに向けられる。そして、この疑似ターミナルを通るＤＳＢカードからの如何なる応答も、ＭＲ８Ｋ−ＣＬＩに出力される。適当だと判断すると、これらコマンドの解釈及び応答は、ＤＳＢのアプリケーションで行われる。
【０１７０】
ＤＳＢ(10)カードは、以下を含む一般的なＬｉｎｕｘの疑似ターミナルＡＰＩをサポートする。
ｉｎｔ ｇｒａｎｔｐｔ (ｉｎｔ ｆｉｌｅ＿ｄｅｓｃｒｉｐｔｏｒ)；
ｉｎｔ ｕｎｌｏｃｋｐｔ (ｉｎｔ ｆｉｌｅ＿ｄｅｓｃｒｉｐｔｏｒ)；
ｃｈａｒ ＊ｐｔｓｎａｍｅ (ｉｎｔ ｆｉｌｅ＿ｄｅｓｃｒｉｐｔｏｒ)；
【０１７１】
しかしながら、デフォルトでは、アプリケーションの１つによってマスター疑似ターミナルのオープンをリクエストされるまで、ＤＳＢ(10)は、マスター疑似ターミナルをオープンしない。このオープンは、ＡＰＩ：ｉｎｔ ｍｒ＿ｏｐｅｎ＿ｐｔ (ｃｈａｒ ＊ａｐｐｌｉｃａｔｉｏｎ＿ｎａｍｅ)；を用いて行われる。
【０１７２】
このＡＰＩは、利用可能な接続がある場合に、ＭＲ８Ｋ−ＣＬＩとの疑似ターミナル接続をオープンすることを試みる。成功した場合、そのＡＰＩコールは、マスターファイル識別子を戻し、アプリケーションコードは、その後、以下に示すように、それを用いてスレーブ疑似ターミナル接続をオープンできる。
【０１７３】
【表５】
2007208960.tif 000007
【０１７４】
ＤＳＢ(10)カードがスロット１０内にあるとすると、「ｘｙｚ」アプリケーションに接続するためのＭＲ８Ｋ−ＣＬＩコマンドは、ｓｅｌｅｃｔ ｄｓｂ １０ ｘｙｚとなる。
【０１７５】
ＭＲ８Ｋ−ＣＬＩは、そのコマンドを「ｅｘｉｔ  ｄｓｂ」コマンドと解釈し、ＭＲ８Ｋ−ＣＬＩ接続が中断する。
【０１７６】
Ｏｐｅｎ  Ｐｓｕｅｄｏ−Ｔｅｒｍｉｎａｌ (ｍｒ＿ｏｐｅｎ＿ｐｔ)
名前：
ｍｒ＿ｏｐｅｎ＿ｐｔ  −  ＭＲ８Ｋ−ＣＬＩとの疑似ターミナル接続をオープン。
【０１７７】
説明：
ＤＳＢカーネルとＭＲ８Ｋ−ＣＬＩの間のマスター疑似ターミナルを確立することを試みる。
【０１７８】
シンポシス：
ｉｎｔ ｍｒ＿ｏｐｅｎ＿ｐｔ (ｃｈａｒ ＊ａｐｐｌｉｃａｔｉｏｎ＿ｎａｍｅ)；
【０１７９】
引数：
・ａｐｐｌｉｃａｔｉｏｎ＿ｎａｍｅ
この疑似ターミナルに関連するアプリケーションの名称。この名称は、その他の疑似ターミナル接続のアプリケーションの名称と抵触してはならない。抵触する場合、エラーが戻される。ＭＲ８Ｋ−ＣＬＩは、この名称を用いて接続を確立する。
【０１８０】
戻値：
成功の場合、マスター疑似ターミナル接続のファイル識別子を示す負でない整数を戻す。その他の場合、ｌｉｎｕｘ/ｅｒｒｎｏ.ｈファイルに定義が記述された負の値が戻される。
【０１８１】
Ｃｌｏｓｅ  Ｐｓｕｅｄｏ−ｔｅｒｍｉｎａｌ (ｍｒ＿ｃｌｏｓｅ＿ｐｔ)
説明：
ＤＳＢカーネルとＭＲ８Ｋ−ＣＬＩの間のマスター疑似接続をクローズすることを試みる。
【０１８２】
シンポシス：
ｉｎｔ ｍｒ＿ｃｌｏｓｅ＿ｐｔ (ｃｈａｒ ＊ａｐｐｌｉｃａｔｉｏｎ＿ｎａｍｅ)；
【０１８３】
引数：
・ａｐｐｌｉｃａｔｉｏｎ＿ｎａｍｅ
この疑似ターミナルに関連するアプリケーションの名称。
【０１８４】
戻値：
成功ならば、０を戻し、その他の場合には、ｌｉｎｕｘ/ｅｒｒｎｏ.ｈファイルに定義が記述された負の値が戻される。
【０１８５】
ＮＡＴアプリケーション例
この節は、本明細書で説明されたＡＰＩ及び方法を用いて、ネットワークアドレストランスレーション(ＮＡＴ)アプリケーションを実施するためのコーディング例を示す。ＮＡＴは、ＩＥＴＦ標準(ＲＦＣ２６３１)であり、プライベートＩＰネットワークとパブリックＩＰネットワーク間のマッピングをする方法を規定する。ＤＳＢＬｉｎｕｘカーネルは、ＤＳＢ(10)上でＮＡＴを構成するのに使用されるネットフィルタ及びｉｐテーブル構成をサポートしている。
【０１８６】
２つの異なるＮＡＴの例が示される。第１の例は、内蔵Ｌｉｎｕｘカーネルの機能を用いてＮＡＴを構築し、第２の例は、アプリケーションが、ＶＲベースのＮＡＴアプリケーションを実施するのに如何に記述されるかを実際に示す。
【０１８７】
ＬｉｎｕｘカーネルＮＡＴの例
ＤＳＢＬｉｎｕｘカーネルは、通常のＮＡＴコマンドの全てを受け入れるが、簡単化の理由から、以下の説明では、図１１に示すような、ステートレスのＮＡＴ構成について取り上げる。
【０１８８】
例：
１．プロセッサ０上にデフォルトＶＲコンテキスト１００を生成する。
ｉｐ ｖｒｆ ａｄｄ １００
ｉｐ ｄｅｆａｕｌｔ ｖｒｆ １００ ｐｒｏｃｅｓｓｏｒ ０
【０１８９】
ＤＳＢＬｉｎｕｘカーネルの初期リリースは、ＤＳＢ(10)プロセッサ当たり１つのルータコンテキストのみをサポートするだろう。そのカーネルでサポートされるカーネル常駐のインターフェイス及び機能の全ては、このデフォルトＶＲを仮定するだろう。
【０１９０】
２．「ｍｒｖ３」であるＤＳＢの仮想ネットワークデバイスを、プライベートＮＡＴネットワークにアクセスするのに使用されるインターフェイスにバインドする。
ｍｒｃｏｎｆｉｇ ｍｒｖ３ ｖｒｆ １００ ｓｌｏｔ ２ ｐｏｒｔ １ ｍｏｄｅ ５
【０１９１】
この例では、プライベートＮＡＴネットワークリンクは、スロット−２に配置されたカードのＧＩＧＥポート１に接続される。以下は、引数の簡単な説明である。
【０１９２】
【表６】
2007208960.tif 000008
【０１９３】
そのインターフェイスが使用されている場合、又はｓｌｏｔ/ｐｏｒｔ/ｍｏｄｅ引数の何れかが無効である場合、コマンドは拒絶されて、記述的なエラーメッセージが戻される。
【０１９４】
３．グローバルＮＡＴネットワークにアクセスするのに使用されるインターフェイスに、「ｍｒｖ４」であるＤＳＢの仮想ネットワークデバイスをバインドする。
ｍｒｃｏｎｆｉｇ ｍｒｖ４ ｖｒｆ １００ ｉｎｅｔ １１７.３３.２２.１ ｎｅｔｍａｓｋ ｆｆｆｆｆｆ００ ｍｏｄｅ ２
【０１９５】
以下に、引数の簡単な説明を示す。
【０１９６】
【表７】
2007208960.tif 000009
【０１９７】
上述のＶＲ又はＩＰアドレス情報が、システム設定と一致しない場合、上述のコマンドは拒絶されて、記述的エラーメッセージが戻される。
【０１９８】
注意：この例は、上述のインターフェイスがシステム上に既に存在していることを仮定しているが、このようなケースでない場合、アドレス及びリンクがシステムでは既に使用されていないとすると、さらなる引数が加えられて、ＤＳＢがこのアドレスを設定可能である。例えば、
ｍｒｃｏｎｆｉｇ ｍｒｖ４ ｖｒｆ １００ ｉｎｅｔ １１７.３３.２２.１ ｎｅｔｍａｓｋ ｆｆｆｆｆｆ００ ｓｌｏｔ １２ ｐｏｒｔ ２ ｉｆｔｙｐｅ ？？？ ｍｏｄｅ ２
【０１９９】
４．ＮＡＴ設定
ｉｐ ｒｏｕｔｅ ａｄｄ ｎａｔ １１７.３３.２２.２ ｖｉａ １０.１.１.１ ｄｅｖ ｍｒｖ３
ｉｐ ｒｕｌｅ ａｄｄ ｎａｔ １１７.３３.２２.２ ｆｒｏｍ １９２.１６８.１００.１７ ｄｅｖ ｍｒｖ３
【０２００】
上述の「ｄｅｖ」オプションは、上述のｒｕｌｅをどのＶＲに適用するかを、カーネルが如何に決定するかということであるのに注意することは重要である。初期リリースでは、指定されたＶＲが、設定されたデフォルトのＶＲと一致していない場合、リクエストは拒絶されて、記述的エラーメッセージが戻される。今後のリリースでは、ＤＳＢ(10)カードは、カーネル常駐のインターフェイスについて複数のＶＲコンテキストをサポートするＶＲＦＬｉｎｕｘカーネルをサポートするだろう。
【０２０１】
ＮＡＴプライベート及びパブリックインターフェイス設定
典型的なＮＡＴシステムは、２又は３以上のインターフェイスを必要とし、それらの１つは、プライベートネットワーク接続用であり、もう１つは、パブリックネットワーク接続用である。ＤＳＢ(10)ベースのＮＡＴアプリケーションも同様であるが、各インターフェイスに物理ネットワークデバイスを使用するのではなく、ＤＳＢ(10)のアプリケーションが、ＤＳＢ(10)の仮想ネットワークデバイスを生成及び使用する必要がある点で異なる。
【０２０２】
この例では、図１２に示すように、プライベートネットワーク接続用の「ｍｒｖ３」デバイスと、パブリックネットワーク接続用の「ｍｒｖ４」デバイスという、２つのＤＳＢ(10)の仮想ネットワークデバイスがあると仮定される。
【０２０３】
ＮＡＴアプリケーションは、「ｍｒｖ３」でプライベートパケットを受信し、その後、そのパケットを「ｍｒｖ４」を介して転送する前に、プライベートＩＰ及びポートを取り去って、パブリックＩＰアドレス及びポートアドレスに置き換える。同様に、ＮＡＴアプリケーションは、「ｍｒｖ４」で受信したパブリックＩＰアドレス及びポートアドレスを、確立されたプライベートＩＰ及びポートセッションと比較する。パブリックアドレスがローカルアドレスで置き換えられるならば、ＮＡＴアプリケーションは、その後、「ｍｒｖ３」を介してパケットをプライベートネットワークにフォワードする。
【０２０４】
以下の節では、ＤＳＢ(10)の仮想ネットワークデバイスを如何に構成するかと、これらのネットワークデバイスを通じてパケットを如何に送信/受信するかとについて、詳細を示す。
【０２０５】
プライベートネットワークデバイス
ＤＳＢ(10)の仮想ネットワークデバイスは、プライベートネットワークとパケットを送受信するのに必要とされる。システムは、指定されたリンクで受信した全てのＩＰパケットを、ＤＳＢ(10)カードにフォワードするように構成される必要がある。同様に、ＤＳＢ(10)の仮想ネットワークデバイスから送信されたパケットが、そのリンクに送信されるように構成される必要がある。システムは、プライベートネットワークの知識を有しておらず、これらのパケットの内容を変更又は解析しない。パケットの内容は、ＤＳＢ(10)カードで実行されているＮＡＴアプリケーションのみの責務となる。リンクで受信されたパケットは、無分別にＤＳＢ(10)のアプリケーションに運ばれて、このＤＳＢ(10)のネットワークデバイスを通じて送信されたパケットは、システムによって、無分別にリンクに送信される。
【０２０６】
ＤＳＢ(10)の仮想ネットワークデバイスは、次のようにシェル又はスタートアップスクリプトから、特定のインターフェイスにバインドされる。
ｍｒｃｏｎｆｉｇ ｍｒｖ３ ｖｒｆ １００ ｓｌｏｔ ３ ｐｏｒｔ ４ ｔｙｐｅ ３０ ｍｏｄｅ ４
【０２０７】
ＤＳＢ(10)のネットワークデバイスはまた、以下のようにして、特定のネットワークをプログラムでバインドできる。
【０２０８】
【表８】
2007208960.tif 000010
【０２０９】
成功ならば、指定されたインタフェースの仮想ルータ(12)コンテキストを示す正の整数が戻される。リクエストが拒絶される場合、ｍｒ＿ａｐｉ.ｈファイルに定義が記述された負の値が戻される。生成リクエストは、以下を含む幾つかの理由で失敗する。
・何れかの引数が不当又は範囲外である場合。
・指定されたｓｌｏｔ＿ｉｄが空である。
・指定されたｐｏｒｔ＿ｉｄが存在していない。
・指定されたｉｆ＿ｔｙｐｅが、指定されたｐｏｒｔ＿ｉｄでサポートされていない。
・プロセスが優先されていない。優先されたプロセスのみが、ＤＳＢ(10)の仮想ネットワークデバイスインターフェイスをインターフェイスにバインドできる。
【０２１０】
この場合にはＰＰＰプロトコルパケットを含み得る全てのレイヤー２パケットが、システムで取り扱われてよく、これらのパケットは、ＤＳＢ(10)カードに転送されない。ＤＳＢ(10)の仮想ネットワークデバイスはまた、インターフェイスのリンクステートを受信及びミラーする。
【０２１１】
パブリックネットワークデバイス
異なるＤＳＢ(10)の仮想ネットワークデバイスが、パブリックネットワークと送受信するのに必要とされる。システムは、通常、このＤＳＢ(10)の仮想ネットワークデバイスを通って、指定されたリンクからＤＳＢ(10)に向けて案内されるようにして、全てのＩＰパケットをフォワードするように構成される必要がある。それに乗じて、ＤＳＢ(10)のカーネルコードは、システムからルーティングアップデートを受け取る。この情報に基づいて、このＤＳＢ(10)の仮想ネットワークデバイスを通って送信されるパケットが、適切なエグレスポートに転送される。
【０２１２】
ｍｒ＿ｖｎｅｔ＿ｂｉｎｄ ＡＰＩが使用されて、シェル若しくはスタートアップスクリプトから、又は、以下のようにプロクラムで、このＤＳＢ(10)仮想ネットワークデバイスをバインドできる。
【０２１３】
【表９】
2007208960.tif 000011
【０２１４】
プライベート及びパブリックネットワーク接続で使用されるネットワークデバイスの違いは、ｐａｃｋｅｔ＿ｆｌｏｗ＿ｍｏｄｅの引数のみであることに注意のこと。成功すると、指定されたインターフェイスの仮想ルータ(12)のコンテキストを示す正の整数が戻される。この例では、仮想ルータ(12)のコンテキストは１００であり、この値が呼び出し側に戻される。その他の場合、ｍｒ＿ａｐｉ.ｈファイルに定義が記述された負の値が戻される。生成リクエストは、以下を含む幾つかの理由で失敗する。
・何れかの引数が、不当又は範囲外である場合。
・指定されたｓｌｏｔ＿ｉｄが空である。
・指定されたｐｏｒｔ＿ｉｄが存在していない。
・指定されたｉｆ＿ｔｙｐｅが、指定されたｐｏｒｔ＿ｉｄでサポートされていない。
・プロセスが優先されていない。優先されたプロセスのみが、ＤＳＢの仮想ネットワークデバイスインターフェイスをインターフェイスにバインドできる。
【０２１５】
この場合にはＰＰＰプロトコルパケットを含み得る全てのレイヤー２パケットが、さらにシステムで取り扱われてよく、これらのパケットは、ＤＳＢ(10)カードにフォワードされない。ＤＳＢ(10)の仮想ネットワークデバイスはまた、インターフェイスのリンクステートを受信及びミラーする。
【０２１６】
ＩＰアドレスコンフィグレーション
ＮＡＴデバイスは、パブリックＩＰアドレスを必要とし、この例では、このパブリックアドレスは、「ｍｒｖ４」ネットワークデバイスで設定される必要がある。これは、シェル若しくはスタートアップスクリプトから行うことができ、又は、ｉｆｃｏｎｆｉｇ ｍｒｖ４ １１７.３３.２２.２ ２５５.２５５.２５５.０ ｕｐのように、Ｌｉｎｕｘの一般的なｉｆｃｏｎｆｉｇコマンドを用いてプログラムから行うことができる。
【０２１７】
ｉｆｃｏｎｆｉｇリクエストは、以下を含む幾つかの理由で失敗する。
・何れかの引数が、不当であるか範囲外である場合。
・指定されたネットワークデバイスは存在しない。
・指定されたネットワークデバイスに関係するＤＳ３リンクが、設定されたＩＰアドレスを既に有している。
・プロセスが優先されていない場合。優先されたプロセスのみが、ＤＳＢ(10)の仮想ネットワークデバイスインターフェイスをインタフェイスにバインドできる。
【０２１８】
送信/受信パケット
この例では、ソケットインターフェイスが生成される。第１ソケットがプライベートネットワーク接続に使用される。それは、「ｍｒｖ３」ネットワークデバイスを使用する。第２ソケットがパブリックネットワーク接続に使用される。それは、「ｍｒｖ４」ネットワークデバイスを使用する。以下で例示するコードは、プライベートネットワークへのソケットインターフェイスを生成するのに使用される。
【０２１９】
【表１０】
2007208960.tif 000012
【０２２０】
以下に例示するコードは、パブリックネットワークへのソケットインターフェイスを生成するのに使用される。
【０２２１】
【表１１】
2007208960.tif 000013
【０２２２】
一般的なＬｉｎｕｘパケットソケットＡＰＩは、ネットワークドライバレベルで未処理のＩＰパケットを送受信し、一般的なパケットソケットＡＰＩの全てのコールがサポートされる。この例を続けると、ＮＡＴアプリケーションは、プライベートネットワークパケットをグローバルネットワークのパケットに変換及びマップするｎａｔ＿ｐｒｉｖａｔｅ＿ｔｏ＿ｇｌｏｂａｌルーチンを実行すると仮定する。そして、先に定義されたｍｒ＿ｐｒｉｖａｔｅ＿ｓｏｃｋｅｔ、ｍｒ＿ｐｒｉｖａｔｅ＿ａｄｄｒｅｓｓ、ｍｒ＿ｇｌｏｂａｌ＿ｓｏｃｋｅｔ及びｍｒ＿ｇｌｏｂａｌ＿ａｄｄｒｅｓｓ構造が与えられているとすると、プライベートネットワークからグローバルネットワークへの移動は、以下のようにできるだろう。
【０２２３】
【表１２】
2007208960.tif 000014
【０２２４】
ほぼ理想的なループが書かれて、グローバルネットワークで受信したパケットがプライベートネットワークに変換され得る。
【０２２５】
イントロダクション
図１３に示すように、動的サービスブレード(10)のアーキテクチャが説明されている。それは、典型的なサービスアプリケーションをサポートするのに使用される主要な構成要素、データフロー及びデータ構造に加えて、プラットホーム構成も与える。
【０２２６】
用語集
・ＡＰＩ  アプリケーションプログラムインターフェイス
・ＣＬＩ  コマンドラインインターフェイス
・ＤＬＬ  動的リンクライブラリ
・ＤＳＢ  動的サービスブレード
・ＧＰＬ  ＧＮＵパブリックライセンス(Ｌｉｎｕｘ)
・ＩＰＣ  プロセッサ間通信
・ＭＲ８Ｋ−ＣＬＩ  ＭＲ８Ｋの標準コマンドラインインターフェイス
・ＮＡＴ  ネットワークアドレストランスレーション
・ＰＳＥ  パケットサービスエンジン
・ＳＭＰ  対称マルチプロセッシング
・ＲＣＰ  ルート制御プロセッサ
【０２２７】
説明を目的として以上の実施例について本発明が詳細に説明されたが、このような詳細は単に説明を目的としており、当該技術分野における通常の知識を有する者には、特許請求の範囲に記載されている場合を除き、本発明の精神と技術的範囲から逸脱することなくそれらを変更できることは理解されるべきである。
【図面の簡単な説明】
【０２２８】
添付の図面では、本発明の好ましい実施例と、本発明を実施する好ましい方法とが図示されている。
【図１】図１は、動的サービスブレードのブロック図である。
【図２】図２は、動的サービスブレードのブロック図である。
【図３】図３は、動的サービスブレードのデータフロー−インラインサービスを示す。
【図４】図４は、動的サービスブレードのデータフロー−ミラードサービスを示す。
【図５】図５は、安全アクセスサービス及びコアサービスを示す。
【図６】図６は、安全アクセスサービス及びコアサービスを示す。
【図７】図７は、リモートアクセスＶＰＮサービスを示す。
【図８】図８は、マネージドアクセスファイヤウォールを示す。
【図９】図９は、ＩＰＶ４/ＩＰＶ６ゲートウェイを示す
【図１０】図１０は、ＶＩＯＰシグナリングゲートウェイを示す。
【図１１】図１１は、ＤＳＢＬｉｎｕｘカーネルの例に関するブロック図である。
【図１２】図１２は、ＮＡＴプライベート及びパブリックインターフェイス構成のブロック図である。
【図１３】図１３は、動的サービスブレードを示す。
【図１４】図１４は、動的サービスブレードのブロック図である。
【図１】
2007208960.tif 000015
【図２】
2007208960.tif 000016
【図３】
2007208960.tif 000017
【図４】
2007208960.tif 000018
【図５】
2007208960.tif 000019
【図６】
2007208960.tif 000020
【図７】
2007208960.tif 000021
【図８】
2007208960.tif 000022
【図９】
2007208960.tif 000023
【図１０】
2007208960.tif 000024
【図１１】
2007208960.tif 000025
【図１２】
2007208960.tif 000026
【図１３】
2007208960.tif 000027
【図１４】
2007208960.tif 000028
【外国語明細書】
2007208960000001.pdf