(57)【特許請求の範囲】
【請求項１】
コンピュータネットワークにおいて、データ転送を行うように適合された転送要素と、
コンピュータネットワークにおいて、ネットワークのシグナリングおよび制御を行うように適合され、転送要素を構成するための標準化されたデータセットを生成するように適合された制御要素と、
転送要素を制御要素へ有効に接続する相互接続要素と、
転送要素を構成すべく、標準化されたデータセットを制御要素から受け取るために、標準化されたデータセットを特殊化されたデータセットに変換するために、かつ、特殊化されたデータセットを転送要素へ伝達するために、制御要素と統合される転送要素固有のプラグインと
を具備し、
前記転送要素は、コンピュータネットワークにおいてデータ転送を行うように該転送要素を構成するために、特殊化されたデータセットを利用し、
前記特殊化されたデータセットは、前記転送要素の専有的設計およびアーキテクチャ情報に対応することを特徴とするコンピュータシステム。
【請求項２】
前記制御要素から標準化されたデータセットを受け取りかつ該標準化されたデータセットを転送要素固有のプラグインへ伝達するための不透明転送要素プラグインにして、転送要素固有のプラグインから特殊化されたデータセットを受け取りかつ該特殊化されたデータセットを転送要素へ伝達するための不透明転送要素プラグインをさらに有することを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記特殊化されたデータセットは、バイナリラージオブジェクトであることを特徴とする請求項１に記載のコンピュータシステム。
【請求項４】
前記転送要素は、転送要素を構成するために、特殊化されたデータセットを受け取って、かつ、該特殊化されたデータセットを、転送要素内のデバイス固有の転送要素インターフェースにより読み取り可能なデータの形にカプセル化解除するカプセル化除去装置を有することを特徴とする請求項１に記載のコンピュータシステム。
【請求項５】
前記特殊化されたデータセットは、該特殊化されたデータセットをカプセル化解除するために、転送要素内のカプセル化除去装置へ伝達されることを特徴とする請求項１に記載のコンピュータシステム。
【請求項６】
前記特殊化されたデータセットは、転送要素へ伝達する前に暗号化され、かつ、該暗号化した特殊化されたデータセットは、転送要素において解読されることを特徴とする請求項１に記載のコンピュータシステム。
【請求項７】
前記転送要素固有のプラグインは、ダイナミックリンクライブラリであることを特徴とする請求項１に記載のコンピュータシステム。
【請求項８】
コンピュータデバイスを構成するための方法であって、
転送要素を構成するために、制御要素により、標準化されたデータセットを生成する段階と、
標準化されたデータセットを、制御要素から、該制御要素と統合された転送要素固有のプラグインへ伝達する段階と、
前記転送要素固有のプラグインが標準化されたデータセットを、特殊化されたデータセットに変換する段階と、
転送要素を構成するために、特殊化されたデータセットを、該転送要素へ伝達する段階と
を具備し、
前記特殊化されたデータセットは、前記転送要素の専有的設計およびアーキテクチャ情報に対応することを特徴とする方法。
【請求項９】
前記転送要素は、コンピュータネットワークにおいてデータ転送を行うように適合されることを特徴とする請求項８に記載の方法。
【請求項１０】
前記制御要素は、コンピュータネットワークにおいてネットワークのシグナリングおよび制御を行うように適合されることを特徴とする請求項８に記載の方法。
【請求項１１】
前記標準化されたデータセットを、不透明転送要素プラグインにより、制御要素から受け取る段階と、
標準化されたデータセットを、不透明転送要素プラグインにより、転送要素固有のプラグインへ伝達する段階と
をさらに有することを特徴とする請求項８に記載の方法。
【請求項１２】
前記特殊化されたデータセットを、不透明転送要素プラグインにより、転送要素固有のプラグインから受け取る段階と、
特殊化されたデータセットを、不透明転送要素プラグインにより、転送要素へ伝達する段階と
をさらに有することを特徴とする請求項８に記載の方法。
【請求項１３】
前記転送要素を構成するために、特殊化されたデータセットを、転送要素内のデバイス固有の転送要素インターフェースにより読み取り可能なデータの形にカプセル化解除する段階をさらに有することを特徴とする請求項８に記載の方法。
【請求項１４】
前記特殊化されたデータセットは、バイナリラージオブジェクトであることを特徴とする請求項８に記載の方法。
【請求項１５】
前記特殊化されたデータセットを、転送要素へ伝達する前に暗号化する段階と、
特殊化データセットを、転送要素において解読する段階と
をさらに有することを特徴とする請求項８に記載の方法。
【請求項１６】
前記転送要素固有のプラグインは、ダイナミックリンクライブラリであることを特徴とする請求項８に記載の方法。
【請求項１７】
転送要素を構成するために制御要素と統合されるように適合されたコンピュータ読み取り可能なプログラムコードを具備する転送要素プラグインソフトウェアプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記コンピュータ読み取り可能なプログラムコードは、
前記制御要素と統合された転送要素固有のプラグインが、制御要素により生成された、転送要素を構成するための標準化されたデータセットを受け取る段階と、
前記転送要素固有のプラグインが、標準化されたデータセットを、特殊化されたデータセットに変換する段階と、
前記転送要素固有のプラグインが、転送要素を構成するために、特殊化されたデータセットを、転送要素へ伝達する段階と
を具備し、
前記特殊化されたデータセットは、前記転送要素の専有的設計およびアーキテクチャ情報に対応することを特徴とする転送要素プラグインソフトウェアプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１８】
前記コンピュータ読み取り可能なプログラムコードは、
前記転送要素固有のプラグインが、標準化されたデータセットを、不透明転送要素プラグインから受け取る段階と、
前記転送要素固有のプラグインが、特殊化されたデータセットを、不透明転送要素プラグインへ伝達する段階と
をさらに具備することを特徴とする請求項１７に記載の転送要素プラグインソフトウェアプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１９】
前記コンピュータ読み取り可能なプログラムコードは、
前記制御要素が、特殊化されたデータセットを、転送要素へ伝達する前に暗号化する段階
をさらに具備することを特徴とする請求項１７に記載の転送要素プラグインソフトウェアプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項２０】
前記特殊化されたデータセットは、バイナリラージオブジェクトであることを特徴とする請求項１７に記載の転送要素プラグインソフトウェアプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項２１】
前記コンピュータ読み取り可能なプログラムコードは、ダイナミックリンクライブラリであることを特徴とする請求項１７に記載の転送要素プラグインソフトウェアプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータシステムの分野に関し、より詳細には、オープンネットワークアーキテクチャにおいて、特殊目的（special purpose）ネットワーキングハードウェアのような専有（proprietary）転送要素（forwarding element）が、概してソフトウェアの形で実施される標準的（standard）制御要素（control element）と相互運用（interoperate）することを可能にするための方法および装置に関する。
【０００２】
【従来の技術】
最近では、ネットワーキングハードウェア産業において、ある傾向が現れている。ルーターおよびスイッチのようなデバイスは、モノリシックであって著しくカスタマイズかつ統合された設計から、別個のモジュール化された構成要素（components）の集合体の形へ進化し始めている。ネットワーキングデバイスアーキテクチャのモジュール化は、ルーターまたはスイッチのような複雑なデバイスを組成している種々の構成要素間における厳重な統合依存性を打ち破ることにより、ネットワーキングハードウェアおよびソフトウェアにおいて、より速い周期でのイノベーションおよび開発を可能にし始めている。より最近では、さらなる傾向が、プログラム可能なＡＳＩＣ（特定用途向け集積回路）またはネットワークプロセッサの出現という形で現れている。これらのデバイスは、汎用プロセッサまたはサーバーから、アプリケーションを意識した（application-aware）パケット分類および処理能力を有するスイッチへの、アプリケーション層またはネットワークレベルでのパケット処理の負荷の軽減（off-loading）を可能にする。例えば、スイッチは、ルックアップ（lookup）のルーティングや、ハードウェア内での転送を行うことができるだけでなく、アプリケーションレベルのプロキシおよびネットワークの機能、または、トランスポート層のアドレス変換の機能を行うこともできる。これらの傾向を利用し、かつ、促進するために、水平的オープンネットワーキングアーキテクチャ（例えば、図２を参照）の利用は、通常はパケット転送と関連した機能性を分離させるために、ＡＰＩ（アプリケーションプログラムインターフェース）およびプロトコルのセットを標準化しようとするものである。このような機能性は、通常は特殊目的ハードウェアの形で実施され、“転送要素（forwarding element）”と称することができる。通常は汎用処理アーキテクチャソフトウェアの形で実施されるネットワークのシグナリングおよび制御と関連した機能性については、“制御要素（control element）”と称することができる。水平的オープンネットワーキングアーキテクチャにより提唱される制御要素／転送要素という構成要素の利用とともに、ネットワーキングデバイスの機能性の分離および標準化は、開放的特徴を維持する一方で、専有的設計が現れ続けることを可能にし、かつ、イノベーションおよび急速な製品開発をさらに可能にする。
【０００３】
制御要素および転送要素の分離は、インターフェースのセットが各々の構成要素の形式で開発されることを必要とする。これらのインターフェースは、構成要素の機能性を互いに提示し、該構成要素を作用的統一体の形に統合することを可能にする。例えば、転送要素における、アプリケーションを意識したスイッチング能力の機能性については、制御要素がデータ経路におけるパケット処理または転送機能の負荷を軽減するためにスイッチを“プログラム”できるように、オープンインターフェースを介して、制御要素に対して提示する必要がある。このような機能性を提示する一つの方法は、一般的な様式でスイッチ能力について記述する抽象的インターフェースを定義することである。制御要素は、所望の効果を達成すべく抽象的コマンド／オペレーションを用いてスイッチ機能を構成する（configure）かまたは操作する（manipulate）ために、このような抽象的インターフェースを用いることができ、かつ、転送要素は、これらの抽象的コマンドを、ハードウェア固有の（hardware-specific）タスクの形に変換する必要がある。こうして抽出されたハードウェア固有の能力は、転送テーブルのＡＳＩＣ固有のフォーマットと、パケット待ち行列パラメータと、暗号化、マーキング、または、アドレス変換のようなパケット毎の処理作用とを含む広範囲のハードウェア能力に及び得る。
【０００４】
前記転送要素および制御要素の能力をインターフェースを介して提示することは、ある欠点を有している。詳細には、インターフェースの仕様は、通常は、根本的な実施手段を反映している。このことは、転送要素の場合に当てはまり、これにより、コストに対して敏感（cost-sensitive）であって、著しくタスク固有のデバイスとなる傾向がある。このようなデバイスにおいて、非常に抽象的な様式で根本的な機能性を反映することは、転送要素の側において余分な処理パワー（および、コスト）を必要とする。これらのデバイスのコストに対する敏感さは、抽象的なインターフェースの利用を妨げる傾向があり、その代わりに、各々の転送要素の実際の実施と厳密に整合する非常に特定的なインターフェースという結果につながる。各々の構成要素が同一の製造業者により設計しかつ構築され得るような専有システムを構築する場合には、根本的な実施手段についての機密情報は社内に保持されるので、この提示は許容可能なものである。しかしながら、特にオープンアーキテクチャを用いる場合のように、様々なベンダーからの構成要素が統合される場合には、この提示は、他の状況では決して利用可能にはならないであろう転送要素のアーキテクチャと能力とについての情報を可視状態にしてしまうという点で問題となる。
【０００５】
【発明が解決しようとする課題および課題を解決するための手段】
本発明の一実施形態において、コンピュータシステムは、オープンネットワークアーキテクチャにおいて、専有転送要素が、標準的制御要素と相互運用することを可能にする。前記システムは、コンピュータネットワークにおいてデータ転送機能を行うように適合されている転送要素を有する。制御要素は、コンピュータネットワークにおいてネットワークのシグナリング機能および制御機能を行うように適合される。制御要素は、転送要素を構成するための標準化されたデータセットを生成するように適合される。相互接続要素は、転送要素を制御要素へ有効に（operatively）接続する。転送要素プラグインは、転送要素を構成すべく、標準化されたデータセットを制御要素から受け取るために、標準化されたデータセットを特殊化されたデータセットに変換するために、かつ、特殊化されたデータセットを転送要素へ伝達するために、制御要素と統合される。特殊化されたデータセットは、コンピュータネットワークにおいてデータ転送を行うように転送要素を構成するために利用される。
【０００６】
【発明の実施の形態】
図１は、従来技術のネットワーキングデバイスの垂直的専有ネットワーキングアーキテクチャ（vertical proprietary networking architecture）の一例を示している。図１に与えられたネットワーキングボックスレベルハードウェア１００の例において、設備のベンダーは、通常は、専有（proprietary）ネットワークオペレーティングシステム（ＮＯＳ）１２０を、ネットワーキングボックスレベルハードウェア１００の底部の専有インターフェース（下方にあるＡＳＩＣ（特定用途向け集積回路）／スイッチファブリック／バスに対するインターフェース１１０）や、ネットワーキングボックスレベルハードウェア１００の最上部の専有インターフェース（ネットワークサービスおよびアプリケーションを書き込むことができるようにハードウェアの状態および機能性を提示するインターフェース１３０）とともに用いる。したがって、サードパーティーの独立系ソフトウェアベンダー（ＩＳＶ）および独立系ハードウェアベンダー（ＩＨＶ）のどちらも、最初にこれらのプライベートインターフェースにアクセスせずには、付加価値的（value-added）ソフトウェアまたはハードウェアソリューションを提供することができない。例えば、ある独立系ソフトウェアベンダーは、“最も優れた”ファイアウォール（firewall）または侵入検出ソフトウェアを有しているかも知れないが、完全に垂直的なソリューションに投資するか、または、有力なネットワーク設備のベンダーからの協力を得ることなしには、市場に売り出すことはできない。後者の場合には、独立系ソフトウェアベンダーは、自らのアプリケーションを個々のプラットフォームに移植する（port）ためには、多数のベンダーおよび該ベンダーの専有インターフェースと協働する必要がある。同様に、次世代転送ハードウェアを有する独立系ハードウェアベンダーは、完全に垂直的なソリューションに投資する必要があるか、または、有力なベンダーが該独立系ハードウェアベンダーのハードウェアソリューションを採用するのを待つ必要がある。さらに、有力なハードウェアベンダーでさえ、通常は、様々なネットワークオペレーティングシステムおよびアーキテクチャを用いる多くの様々なプラットフォームを有している。したがって、新たなハードウェアまたはソフトウェアの機能性を導入することは、かなりの労力および投資を必要とする。要するに、図１に示される垂直的に統合されたアーキテクチャは、イノベーションを抑圧し、かつ、新たなハードウェアおよびソフトウェアの能力を活用することを困難にしている。
【０００７】
図１に示されるネットワーキングアーキテクチャの３つの主要な構成要素１１０，１２０，１３０は、相互依存によって、互いに十分に独立した機能を行う。底部には、データ転送プレーン（data-forwarding plane）において動作し、かつ、パケット毎の（per-packeting）工程および処理を担う転送ハードウェア１１０が存在する。中央部には、主に、制御プレーン（control plane）における動作を担い、かつ、ルーティング／シグナリング／ネットワーク制御のプロトコルを実行するネットワークオペレーティングシステム１２０が存在する。さらに、ネットワークオペレーティングシステム１２０は、転送インターフェースのための転送テーブルとフロー毎の（per-flow）ＱｏＳ（サービス品質）テーブルとアクセス制御リストとを操作することにより、下方にあるハードウェア１１０の転送行動を指示する。最上部には、主にネットワークの管理／制御機能を行うアプリケーションおよび／またはサービスのセット１３０が存在する。場合によっては、これらのアプリケーションの中には、パケット化毎の処理を行うことができるものもある。例えば、アプリケーションレベルプロキシは、特定の記述と整合する各々のデータパケットを処理することができる。しかしながら、大抵の場合には、これらのアプリケーションは、転送ハードウェアを適切に“プログラム”することにより、データ転送の決定に主たる影響を与える。
【０００８】
図２は、本発明の一実施形態による水平的オープンネットワーキングアーキテクチャ（horizontal open networking architecture）の一例を示している。図２のような水平的オープンネットワーキングアーキテクチャの主要な目標は、図１に示される構成要素間のインターフェースを標準化する（standardize）ことであり、これにより、各々のレベルでのイノベーションが促進され、かつ、独立系ハードウェアベンダーが新たな能力をできるだけ早く市場に売り出すことを容易にする。図２の水平的オープンネットワーキングアーキテクチャ２００は、２つのオープンインターフェース２２０，２４０の他に、転送要素２１０、制御要素２３０、および、ネットワークサービス／アプリケーション２５０、という３つの主要な構成要素を有することが好ましい。水平的オープンネットワーキングアーキテクチャ２００は、本質的に、制御プレーンを、データ転送プレーンから分離する。制御要素２３０は、ルーティング／シグナリングプロトコルを含む全ての制御機能を処理し、その一方で、転送要素２１０は、データパケットの転送および処理を担う。
【０００９】
例えば、図２の水平的オープンネットワーキングアーキテクチャ２００を用いて実施されるＬ３スイッチについて考える。このようなスイッチにおいて、制御要素２３０は、必要なルーティングプロトコル（ＲＩＰ（ルーティング情報プロトコル）、ＯＳＰＦ（open shortest path first）など）を実行し、かつ、転送テーブルをスイッチングファブリックまたはインターフェースへダウンロードし、これにより、（転送要素２１０の）転送シリコン（forwarding silicon）２１２は、データパケットをワイヤスピード（wire-speed）で転送することができる。転送シリコン２１２は、全ての制御トラフィック（ＩＧＭＰ（インターネットグループマルチキャストプロトコル）の照会、ＲＳＶＰ（“お返事下さい”）パケット、および、ルーティング更新情報）を、制御要素２３０へ供給するように“プログラム”される。
【００１０】
前記制御要素と転送要素との間のインターフェース２２０は、どちらの要素についても、他方の要素に影響を及ぼさずに置き換えることができるように設計されている。（転送要素２１０の）ネットワーキングミドルウェア２１４は、は、インターフェース２２０を介して受け取られた概括的な構成（configuration）および制御情報を、転送シリコンの状態を適切に操作するために必要な特定の構造に変換することを担う。
【００１１】
前記転送要素２１０の上部に提示された制御要素２３０およびインターフェース２４０は、付加価値的ネットワーキングサービスおよびアプリケーションを構築するための開放的であって標準化された方法を提供する同様の機能を行う。インターフェース２４０は、ハードウェア固有の（hardware-specific）機能性を抽出かつ提示し、これにより、これらのサービスは、ポリシーベース（policy-based）ネットワーキングや、セキュリティ（内部的および外部的ファイアウォール、プロキシ、侵入検出など）や、ＱｏＳ（サービス品質）のようなサービスを実施するために、さらには、ウェブサーバーのためのロードバランシングのような機能さえも実施するために、ハードウェアの能力を活用することができる。例えば、ネットワークサービスは、転送要素２１０内の転送経路におけるパケットの状態監視（stateful inspection）に基づいて取るべき行動を指定するポリシーのルールをダウンロードするために、このインターフェースを用いることができる。制御要素２３０は、転送要素２１０へダウンロードするために、抽象的なルール表示を、簡潔なコマンドおよび構成情報（configuration information）の形に変換することを引き受ける。
【００１２】
付加価値的サービスおよびアプリケーションを構築する標準化された方法を提供することに加えて、インターフェース２４０によって、これらのサービスが、制御または管理状態（例えば、デバイス固有の構成（device-specific configuration）、ルート／経路の管理、トポロジーディスカバリ、データベース）にアクセスすることが可能となり、これにより、ネットワークワイドのサービスが提供される。イベント誘発型（event-triggered）管理や、トラフィック管理や、ポリシーベースネットワーキングのような、より複雑なネットワーク管理ツールおよびサービスを、このインターフェースの最上部に構築することもできる。
【００１３】
デバイスの機能性に関する明確な機能的分離、および、インターフェース２２０，２４０の開放的性質によって、水平的オープンネットワーキングアーキテクチャ２００を、種々の構成の形で実現することが可能となる。ちょうど従来的なスイッチ／ルーターのように、ボックス内の制御ＣＰＵは、制御要素２３０およびサービス２５０を、バスにより接続された転送要素２１０および制御要素２３０によって、ホストすることができる。あるいはまた、高速のバックプレーン（backplane）と幾つかのデータ転送プレーンとを備えたシャシー（chassis）の場合に、制御要素２３０は、同じバックプレーンにプラグインされた別個のプレーン内に存在することができる。この構成において、各々のネットワークサービス２５０については、分散型アーキテクチャを生じさせる同じバックプレーンにプラグインされている別個のサービス機器上で実行することができる。さらに他の分散型構成において、制御要素２３０および転送要素２１０については、それぞれ、物理的に同じ場所に配置することは全く不可能であるが、その代わりに、ネットワーク（イーサネット（登録商標）、ＡＴＭ ＶＣ（非同期転送モード）、または、他の相互接続テクノロジー）により分離させることができる。この場合には、中央サーバーは、制御要素２３０をホストし、かつ、ネットワーク全域において転送要素２１０と相互に作用する。制御サーバー自体は、１つ以上の転送要素２１０の制御を担うことができる。ある例示的構成は、大きな建造物内のある階から／へのトラフィックのスイッチングを担う８つのスイッチを備えたワイヤクロゼット（wire closet）からなる。図２に示される水平的オープンネットワーキングアーキテクチャ２００の下で、専用サーバー上で実行される１つの制御要素２３０は、８つのスイッチに関する制御機能の提供を担うことができる。
【００１４】
分散型構成に関する他の例は、顧客宅内に存在する１つ以上の転送要素２１０の制御を担うサービスプロバイダのクラウド（cloud）内における制御要素２３０である。様々なトラフィックストリームをルーティングしかつ区別化する能力を備えたＡＤＳＬ（非対称ディジタル加入者回線）モデムについては、図２の水平的オープンネットワーキングアーキテクチャ２００を用いて、サービスプロバイダから遠隔的に制御することができ、これにより、サービスプロバイダが、簡略化された管理および付加価値的なサービスを、自らの顧客へ提供することが可能となる。
【００１５】
最後に、前記水平的オープンネットワーキングアーキテクチャ２００によって、ネットワークサービス２５０を、制御要素２３０とは別個にホストすることも可能となる。この構成において、サービスは、制御要素２３０と相互に作用するための最上部のオープンインターフェース２４０の“遠隔可能（remoteable）”版を用いる。
【００１６】
図３は、本発明の一実施形態による水平的オープンネットワーキングアーキテクチャの主要な構成要素を示している。図３の水平的オープンネットワーキングアーキテクチャ２００は、ネットワークサービスＡＰＩ（アプリケーションプログラムインターフェース）２４０、制御要素２３０、転送要素２１０、および、接続ＡＰＩ２２０、という４つの主要な構成要素からなる。転送要素２１０および制御要素２３０については、バス、高速バックプレーン、または、ネットワークリンクにより接続することができる。接続ＡＰＩ２２０は、２つの要素２１０，２３０間における標準インターフェースを示し、かつ、これらの要素の相互接続の全域において、相互作用の詳細を覆い隠す。ネットワークリンクの場合には、接続ＡＰＩ２２０は、標準化されたワイヤフォーマット（wire-format）プロトコルを用いて実施される。
【００１７】
前記ネットワークサービスＡＰＩ２４０によって、水平的オープンネットワーキングアーキテクチャ２００およびプラットフォームを、サードパーティの独立系ソフトウェアベンダーのような外部団体に対して可視状態にすることが可能となる。ネットワークサービスＡＰＩ２４０は、データ転送要素２１０に関するハードウェア固有の機能性（例えば、スイッチ、ルーター、および、ネットワークインターフェースカード（ＮＩＣ））を、ハードウェアに依存しない（hardware-independent）一様な方法で、アプリケーションプログラマーに対して利用可能にする。ＶｏＩＰ（voice-over internet protocol）ゲートウェイや、侵入検出や、アプリケーション固有の（application-specific）プロキシや、ＶＰＮ（仮想プライベートネットワーク）サーバーのような、ネットワークを意識した（network-aware）アプリケーションを書くサードパーティの独立系ソフトウェアベンダーは、データプレーンおよび制御プレーンの両方におけるデータ転送経路の性質を制御／変更するために、ネットワークサービスＡＰＩ２４０を用いる。例えば、予め指定されたパケットフィルターに基づいてパケットをフィルタリングする能力を備えたＬ３／Ｌ４スイッチの場合には、Ｈ．３２３プロキシは、さらなる処理のために、Ｈ．３２３関連のパケットを傍受しかつ該パケットを自分へ転送するように、転送要素２１０に指示するために、ネットワークサービスＡＰＩ２４０を用いる。しかしながら、ワイヤスピードでデータパケットの状態監視を行う能力を備えたＬ４／Ｌ７スイッチの場合には、侵入検出アプリケーションは、セッション状態を検査しかつ“侵入の痕跡”を識別するために、分類フィルターとこれに関連した作用とを指定するポリシーのルールを、転送要素２１０にインストールすることができる。本発明の一実施形態による水平的オープンネットワーキングアーキテクチャ２００において、制御要素２３０は、ネットワークサービスＡＰＩ２４０の実施をホストし、かつ、制御要素２３０は、ネットワークサービスＡＰＩ２４０のコール（calls）を、適切なメッセージパッシング（message passing）や、転送要素２１０におけるハードウェア固有のコールの呼び出し（invocations）の形に変換することについての詳細を覆い隠す。
【００１８】
本発明の一実施形態による水平的オープンネットワーキングアーキテクチャ２００の転送要素２１０は、データまたはパケット転送機能を処理する。転送要素２１０の例は、（レイヤー２ブリッジを含む）スイッチと、ルーターと、ネットワークアダプタ（ネットワークインターフェースカード）とを含む。転送要素２１０は、通常は、１つ以上のネットワークインターフェースを有しており、かつ、着信パケットの処理しかつ該パケットを１つ以上の外部ネットワーク接続用インターフェース（outgoing interface）を介して転送する責任を担う。転送要素２１０は、Ｌ２／Ｌ３転送と、パケット分類と、パケット内のＬ４（または、より高位の）層情報に基づくフィルタリングと、データ暗号化と、ポリシー施行とを含む種々の能力を有することができる。本発明による水平的オープンネットワーキングアーキテクチャ２００において、転送要素２１０は、制御要素２３０が、ルーティング／シグナリングプロトコルや、付加価値的アプリケーションに対するインターフェースなどのような通常の管理／制御機能を処理することを頼りにする。転送要素２１０は、その能力と固有の機能とを、接続ＡＰＩ２２０を用いることによって、制御要素２３０へエクスポートする。
【００１９】
前記転送要素２１０内には、制御要素２３０との相互作用を処理するように適合され、かつ、パケット転送や、ＱｏＳ（サービス品質）や、モニタリングや、アクセス制御や、ポリシー施行のようなハードウェアサービスを、制御要素２３０に対して可視状態にするように適合された転送要素マネージャ２１２が存在することができる。例えば、転送要素マネージャ２１２は、制御要素２３０との通信を確立しかつ制御要素２３０からのパケット転送テーブルを受け入れるために、転送要素接続マネージャ２１４のサービスを用いることができる。転送要素２１０内の転送要素接続マネージャ２１４については、進行中の相互接続問題およびデータ交換を見つけ出し、固有のトランスポート媒体（transport medium）を介して特定の制御要素２３０と結びつけ、かつ、処理することを含む、制御要素２３０との通信に関する全ての詳細を処理するように適合させることができる。
【００２０】
本発明による水平的オープンネットワーキングアーキテクチャ２００の制御要素２３０は、（１）制御要素マネージャ２３２と、（２）制御要素接続マネージャ２３４と、転送要素プラグインＡＰＩ／サンプルプラグイン２３６とを有することが好ましい。転送要素プラグインＡＰＩ／サンプルプラグイン２３６を通して、制御プレーン機能の大部分を実施し、ネットワークサービスＡＰＩ２４０をサポートし、かつ、多くの様々な種類の転送要素２１０との相互作用を処理するという意味で、制御要素マネージャ２３２は、水平的オープンネットワーキングアーキテクチャ２００の“中枢部”を示す。制御要素接続マネージャ２３４は、転送要素接続マネージャ２１４に対応しており、かつ、特定の転送媒体の処理に関する細目を含む制御された転送要素２１０との通信に関する詳細を処理する。
【００２１】
前記制御要素２３０は、その制御の範囲内において、転送要素２１０に代わって、種々の制御機能を行う。例えば、制御要素２３０は、転送要素２１０に代わって、ルーティングプロトコルを実行する。外部の観測者にとって、制御要素２３０とその転送要素２１０とは、ちょうど従来的なルーターのように見える。１つ以上の転送要素２１０上にポートのセットが与えられる場合に、制御要素２３０は、これらをまとめることができ、かつ、これらを１つの仮想ルーターとして示すことができる。制御要素２３０は、転送要素２１０のインターフェースを観測した状態に基づいて、ルーティングプロトコルの交換の発生を引き受けることができる。さらに、制御要素２３０は、転送要素２１０上のポートを、様々なグループ（この場合に、各々のグループは、外部の観測者にとって、別個のルーターのように見える）の形にまとめることにより、２つ以上の仮想ルーターを一度に作成しかつ示すことができる。このような能力は、アクセス制御の目的のために転送ドメインを動的に構築することの他に、管理目的のためにも非常に有用である。
【００２２】
本発明による水平的オープンネットワーキングアーキテクチャ２００によって、転送要素プラットフォーム固有の（forwarding element platform-specific）機能性を、ネットワークサービスＡＰＩ２４０を通して、制御要素マネージャ２３２と独立系ソフトウェアベンダーとに対して利用可能にすることが可能となる。しかしながら、ＡＰＩおよびその実施手段は、（１）転送要素２１０において、ＡＰＩのコールを、ハードウェア固有の機能性の呼び出しに変換し、かつ同時に、（２）ハードウェアベンダーの知的財産を暴露することなく、ＡＰＩを通して、あらゆるハードウェア固有の特徴を提示することにより、該ハードウェアベンダーに区別化能力を許容する、という２つのことを行う必要がある。第二の特徴の一例は、アプリケーションを書く人物がパケット内容の状態監視のためのコードをダウンロードすることを可能にする転送要素プラットフォームである。転送要素固有の（forwarding element-specific）機能性に関する他の例は、転送要素２１０のための転送／フローテーブルを予め計算するように特殊化されたハッシング（hashing）アルゴリズムの利用である。使用されるＡＳＩＣ（特定用途向け集積回路）または特別な転送シリコンに応じて、各々のハードウェアベンダーは、通常は、その独自にカスタマイズされたテーブルフォーマットおよびルックアップアルゴリズムを、ワイヤスピードでの転送とフロー毎の待ち行列化（queuing）とを容易にするために用いる。ハードウェアベンダーは、このようなアルゴリズムに関する内部の詳細を制御要素２３０に対して提示することに抵抗がある。代わりに、ベンダーは、この計算を制御要素２３０上で行って、次に、カスタマイズされたテーブルを転送要素２１０へダウンロードする、という選択を行うことができる。
【００２３】
これにより、転送要素プラグインＡＰＩ／サンプルプラグイン２３６によって、独立系ハードウェアベンダーが、ハードウェア固有の機能性を捕捉するソフトウェアモジュールを提供し、かつ、このモジュールを制御要素マネージャ２３２に“プラグイン”することが可能となる。次に、制御要素マネージャ２３２は、プラグインモジュール２３６を用いて、ネットワークサービスＡＰＩ２４０を通してハードウェア固有の機能性を提示し、かつ、ネットワークサービスＡＰＩのコールを、該モジュールによりサポートされるハードウェア固有の機能に対してマッピングする。例えば、転送要素プラグインＡＰＩ／サンプルプラグイン２３６によって、ベンダーが、ネットワークサービスＡＰＩ２４０に提示されている予め定義された機能性には含まれていない特別な機能性を、ネットワークサービスＡＰＩ２４０に対する拡張部分のセットに供給することが可能となる。さらに、プラグインの能力によって、ベンダーが独自のコードを供給することが可能となり、該独自のコードは、制御要素２３０により準備された転送／フローテーブルを取得する（take）ことができ、かつ、制御要素２３０がこれらのテーブルを転送要素２１０へ伝達する前に、これらテーブルを該ベンダーのＡＳＩＣが必要とする形式にフォーマットすることができる。
【００２４】
前記接続ＡＰＩ２２０インターフェースは、転送要素２１０の機能性を抽出し、これにより、転送要素２１０の能力を、制御要素２３０により遠隔的に構成しかつ制御することができる。接続ＡＰＩ２２０は、（Ｌ３スイッチング、または、暗号化のような）転送要素２１０のサブセットのみによりサポートされるように期待される特徴の他に、基本的モニタリング機能のような全ての形式の転送要素２１０において見出されるように期待される標準的特徴を定義する。さらに、接続ＡＰＩ２２０は、予想されていない機能性またはベンダー固有の（vendor-specific）機能性を含むことを可能にすべく、不透明な（opaque）情報を転送要素２１０へ渡すための規定を含むこともできる。接続ＡＰＩ２２０は、制御要素２３０が転送要素の特徴を発見することを可能にするために、制御要素２３０と転送要素２１０との間における能力ネゴシエーション機構（capability negotiation mechanism）を含むこともできる。
【００２５】
前記接続ＡＰＩ２２０自体は、トランスポートに依存しない（transport-independent）様式で根本的なトランスポートの状態を検査しかつ操作するための方法とともに、基本的な通信プリミティブを有している。接続ＡＰＩ２２０については、ＰＣＩ（周辺機器相互接続：peripheral component interconnect）、ＮＧＩＯバックプレーン、イーサネット（登録商標）、または、ＡＴＭ（非同期転送モード）のような種々のトランスポートを介して実施することができる。このトランスポートに応じて、トランスポート固有の（transport-specific）モジュールは、相互接続テクノロジーのオペレーションにおける正常または例外的状態を処理する方法の他に、接続ＡＰＩのＵＤＰ（ユーザーデータグラムプロトコル）が特定の相互接続テクノロジーに基づいてカプセル化（encapsulate）される方法を正確に指定する。トランスポートに関する２つの例は、ＰＣＩおよびＩＰを含む。ＩＰトランスポートについては、イーサネット（登録商標）またはＡＴＭを介して用いられることが好ましく、かつ、ＵＤＰ（ユーザーデータグラムプロトコル）またはＴＣＰ（伝送制御プロトコル）のいずれかをトランスポートプロトコルとして用いて実施できることが好ましい。しかしながら、これらのプロトコルの利用は、接続ＡＰＩ２２０の実施のために、ネイティブな（native）ＡＴＭまたはイーサネット（登録商標）によるトランスポートを用いる可能性を除外するものではない。
【００２６】
図４は、本発明の一実施形態による転送要素および制御要素の図式を示している。図４に示されるように、標準的制御要素（standard control element）２３０は、（１）図３に示されるような制御要素マネージャ２３２と制御要素接続マネージャ２３４とを有する制御要素４７０、（２）不透明転送要素プラグインＡＰＩ（opaque forwarding element plugin API）４８０、および、（３）転送要素固有のプラグイン（forwarding element-specific plugin）４９０、という３つの主要な構成要素を有している。図４に示されるような専有転送要素（proprietary forwarding element）２１０は、（１）転送要素ソフトウェア／ハードウェア４１０、（２）デバイス固有の転送要素インターフェース（device-specific forwarding element interface）４２０、（３）“ＢＬＯＢ”カプセル化除去装置（"BLOB" decapsulator）４３０，および、（４）抽象的転送要素ＡＰＩ４４０（abstract forwarding element API）、という４つの主要な構成要素を有している。標準的制御要素２３０および専有転送要素２１０は、オープン転送要素／制御要素相互接続（open forwarding element/control element interconnect）２２０により相互接続されている。
【００２７】
本発明の水平的オープンネットワーキングアーキテクチャ２００の利用において、転送要素のベンダーは、転送要素ハードウェアデバイス２１０とともに用いるためのソフトウェアプラグイン４８０，４９０を、該転送要素ハードウェアデバイス２１０とともに有している。転送要素固有のプラグイン４９０と不透明転送要素プラグインＡＰＩ４８０とを含むソフトウェアプラグインは、標準的制御要素２３０上にインストールされて、該標準的制御要素２３０と統合される。標準的制御要素２３０は、オープン転送要素／制御要素相互接続２２０や抽象的転送要素ＡＰＩ４４０のようなオープンＡＰＩを用いるので、抽象的転送要素ＡＰＩのコールを、専有転送要素２１０のネイティブフォーマットに変換することに関するオーバーヘッドはない。
【００２８】
したがって、前記制御要素４７０は、専有転送要素２１０を構成する（configuring）ための抽象的転送要素構成（abstract forwarding element configuration）（すなわち、標準化されたデータセット（standardized data set））４７５を生成するように適合される。抽象的転送要素構成４７５は、水平的オープンネットワーキングアーキテクチャ２００内における標準化されたデータセットであり、独立系ハードウェアベンダーによる製品開発だけでなく、独立系ソフトウェアベンダーによる製品開発においても、データトランザクションのための準拠を提供する。抽象的転送要素構成４７５は、不透明転送要素プラグインＡＰＩ４８０へ渡されることが好ましく、該不透明転送要素プラグインＡＰＩ４８０は、抽象的転送要素構成４７５を転送要素固有のプラグイン４９０へ渡す。不透明転送要素プラグインＡＰＩ４８０は、抽象的転送要素構成４７５（標準化されたデータセット）を制御要素４７０から転送要素固有のプラグイン４９０へ中継するタスクと、転送要素固有の構成ＢＬＯＢ（forwarding element-specific configuration BLOB）４９５（ＢＬＯＢ＝バイナリラージオブジェクト：binary large object）（特殊化されたデータセット（specialized data set））を転送要素固有のプラグイン４９０から専有転送要素２１０へ中継するタスクとを行う。
【００２９】
前記転送要素のベンダーにより提供された転送要素固有のプラグイン４９０は、抽象的転送要素構成（標準化されたデータセット）４７５を、特殊化されたデータセット（好ましくは、転送要素固有の構成ＢＬＯＢ４９５）へ変換するように適合されている。転送要素固有のプラグイン４９０は、２進形式のダイナミックリンクライブラリ（ＤＬＬ）であることが好ましい。転送要素固有のプラグイン４９０は標準的制御要素２３０上で実行されるので、専有転送要素２１０上でのさらなる処理パワーの必要性が回避される。
【００３０】
前記転送要素固有の構成ＢＬＯＢ（特殊化されたデータセット）４９５は、専有転送要素２１０に特有である機能の、転送要素固有の呼び出し（forwarding element-specific invocations）を含む。標準化されたデータセットを特殊化されたデータセットに変換するために転送要素固有のプラグイン４９０を利用することにより、専有転送要素２１０の実施手段を提示する必要がない。したがって、専有的設計およびアーキテクチャ情報の機密性が保たれる。転送要素固有のプラグイン４９０は２進形式であるので、標準化されたデータセットから特殊化されたデータセットへの変換工程は、本質的に、誰からも隠され、これにより、専有転送要素２１０の実施手段が保護される。転送要素固有のプラグインＤＬＬファイルからの変換工程を特定しようとするならば、途方もない数量の複雑なリバースエンジニアリング（reverse engineering）が必要とされることになる。
【００３１】
いったん、前記転送要素固有の構成ＢＬＯＢ４９５が生成されると、該ＢＬＯＢ４９５は、不透明転送要素プラグインＡＰＩ４８０へ戻されることが好ましく、該不透明転送要素プラグインＡＰＩ４８０は、ＢＬＯＢ４９５を専有転送要素２１０へ伝達する。ＢＬＯＢ４９５は、オープン転送要素／制御要素相互接続２２０を通過して、抽象的転送要素ＡＰＩ４４０へ渡され、かつ、最終的には、ＢＬＯＢカプセル化除去装置４３０へ渡されることが好ましい。ＢＬＯＢカプセル化除去装置４３０は、ＢＬＯＢ４９５を取得してカプセル化を解除し（このことは、非常に平易な作業である）、かつ、カプセル化を解除したＢＬＯＢデータを、デバイス固有の転送要素インターフェース４２０へ直接的に渡す。デバイス固有の転送要素インターフェース４２０は、カプセル化を解除したＢＬＯＢデータからの情報を取得して、転送要素ソフトウェア／ハードウェア４１０を構成し、これにより、専有転送要素２１０が適切に動作する。こうして、デバイス固有の転送要素インターフェース４２０内に存在する、専有転送要素のアーキテクチャについての機密情報は、決して、標準的制御要素２３０へ提示されることはなく、これにより、転送要素の独立系ハードウェアベンダーが自らの知的財産を保護することが可能となる。
【００３２】
さらに、標準的制御要素２３０から専有転送要素２１０へ渡される特殊化されたデータセットをさらに保護するために、暗号化を利用することもできる。いったん、特殊化されたデータセット（すなわち、転送要素固有の構成ＢＬＯＢ４９５）が標準化されたデータセット（抽象的転送要素構成４７５）から変換されると、該特殊化されたデータセットを暗号化することができる。暗号化した特殊化されたデータセットは、専有転送要素２１０へ渡され、次に、該専有転送要素２１０において解読される。しかしながら、暗号化の利用は、解読処理を行うために、専有転送要素２１０にさらなるハードウェアを追加する。
【００３３】
上述の説明は本発明の特定の実施形態について言及しているが、その一方で、本発明の真意から逸脱することなく、多数の修正形態がなされ得ること我利介される。添付の請求項は、本発明の範囲および真意に収まるような修正形態を包含するように意図されている。したがって、ここに開示された実施形態については、あらゆる点で、例示的なものとして考慮されるべきであって、制限的なものとして考慮されるべきではなく、本発明の範囲は、前述の説明ではなく添付の請求項により示されており、したがって、これらの請求項の意味および範囲において生じる全ての変更は、該請求項内に包含されるように意図されている。
【図面の簡単な説明】
【図１】  従来技術のネットワーキングデバイスの垂直的専有ネットワーキングアーキテクチャの一例を示す図である。
【図２】  本発明の一実施形態による水平的オープンネットワーキングアーキテクチャの一例を示す図である。
【図３】  本発明の一実施形態による水平的オープンネットワーキングアーキテクチャの主要な構成要素を示す図である。
【図４】  本発明の一実施形態による転送要素および制御要素の図式を示す図である。
【符号の説明】
２００  水平的オープンネットワーキングアーキテクチャ
２１０  転送要素
２１２  転送要素マネージャ
２１４  転送要素接続マネージャ
２２０  ワイヤフォーマット−接続ＡＰＩ
２２０  オープン転送要素／制御要素相互接続
２３０  制御要素
２３２  制御要素マネージャ
２３４  制御要素接続マネージャ
２３６  転送要素プラグインＡＰＩ／サンプルプラグイン
２４０  ネットワークサービスＡＰＩ
２５０  サードパーティアプリケーション
４１０  転送要素ソフトウェア／ハードウェア
４２０  デバイス固有の転送要素インターフェース
４３０  “ＢＬＯＢ”カプセル化除去装置
４４０  抽象的転送要素ＡＰＩ
４７０  制御要素
４７５  抽象的転送要素構成
４８０  不透明転送要素プラグインＡＰＩ
４９０  転送要素固有のプラグイン
４９５  転送要素構成ＢＬＯＢ
【図１】
0004554136.tif 000002
【図２】
0004554136.tif 000003
【図３】
0004554136.tif 000004
【図４】
0004554136.tif 000005