(57)【特許請求の範囲】
【請求項１】
第１の装置からスイッチを通じて第２の装置にデータパケットを送信する方法であって、前記第１の装置と前記スイッチとの間に介在するインターセプト装置において、
前記第１の装置から第１のデータパケットを受信するステップと、
前記第１のデータパケットが前記第２の装置に送信されることを決定するステップと、
前記第１のデータパケットが前記インターセプト装置から前記スイッチを通じて前記第２の装置に送信できない第１のタイプであるかどうかを決定するステップと、
前記第１のデータパケットが前記第１のタイプであると決定される場合、
第２のデータパケット内に前記第１のデータパケットをカプセル化するステップであって、前記第２のデータパケットは前記インターセプト装置から前記スイッチを通じて前記第２の装置に送信できる第２のタイプであるステップと、
前記スイッチを通じて前記第２の装置に前記第２のデータパケットを送信するステップと、
前記第１のデータパケットが前記第１のタイプではないと決定される場合、
前記スイッチを通じて前記第２の装置に前記第１のデータパケットを送信するステップと
を含む、方法。
【請求項２】
前記スイッチはＰＣＩｅスイッチであり、前記第１のタイプは構成トランザクションであり、前記第２のタイプはデータトランザクションである、請求項１に記載の方法。
【請求項３】
前記第１のデータパケットはアドレスフィールドを含み、前記アドレスフィールドは第１の仮想装置の指示を含む、請求項１又は２に記載の方法。
【請求項４】
前記第１のデータパケットが前記第２の装置に送信されることを決定するステップは、前記第２の装置が前記第１の仮想装置に関係付けられることを決定することを含む、請求項３に記載の方法。
【請求項５】
前記第２の装置は、前記第１の装置にとって前記第１の仮想装置により提供されるように見えるリソースを提供する、請求項３又は４に記載の方法。
【請求項６】
前記第２の装置は、第４の装置に代わって前記第１又は第２のデータパケットを受信するように配置されるプロキシ装置であり、前記第４の装置は、前記第１の装置にとって前記第１の仮想装置により提供されるように見えるリソースを提供する、請求項３又は４に記載の方法。
【請求項７】
前記インターセプト装置において、
前記スイッチから第３のデータパケットを受信するステップと、
前記第３のデータパケットがカプセル化データパケットであるかどうかを決定するステップと、
前記第３のデータパケットがカプセル化データパケットであると決定される場合、
前記第３のデータパケットを非カプセル化して第４のデータパケットを取得するステップと、
前記第４のデータパケットを前記第１の装置に送信するステップと、
前記第３のデータパケットがカプセル化データパケットではないと決定される場合、
前記第３のデータパケットを前記第１の装置に送信するステップと
を更に含む、請求項１〜６の何れか１項に記載の方法。
【請求項８】
前記第３のデータパケットは前記第２のタイプであり、前記第４のデータパケットは前記第１のタイプである、請求項７に記載の方法。
【請求項９】
前記インターセプト装置において、
第１の仮想エンドポイント装置を含む仮想装置階層を示すデータを受信するステップを更に含み、前記第１の仮想エンドポイント装置に向けられる少なくとも一部のデータパケットが前記第２の装置に送信される、請求項１〜８の何れか１項に記載の方法。
【請求項１０】
前記インターセプト装置において、
前記第１の装置から数え上げデータパケットを受信するステップと、
仮想装置階層を示す前記データに基づいて前記数え上げデータパケットに応答するステップと
を更に含む、請求項９に記載の方法。
【請求項１１】
仮想装置階層を示す前記データは、少なくとも１つの物理装置を含む物理装置階層を示すデータを更に含み、前記少なくとも１つの物理装置は、前記第１の装置にとって前記少なくとも１つの仮想装置により提供されるように見えるリソースを提供する、請求項９又は１０に記載の方法。
【請求項１２】
前記インターセプト装置において、
前記少なくとも１つの仮想装置を前記少なくとも１つの物理装置と関係付けるデータを記憶するステップを更に含む、請求項１１に記載の方法。
【請求項１３】
前記第１のデータパケットが前記第１のタイプではないと決定される場合、
前記方法は、前記第１のデータパケットが前記スイッチを通じて前記第２の装置に送信される前に、前記第１のデータパケットのアドレスフィールドを修正するステップを更に含み、
前記アドレスフィールドは第１の部分及び第２の部分を含み、前記第１の部分における複数のビットは仮想エンドポイント装置を示し、前記第２の部分における複数のビットはそれぞれ同じ値を有し、
アドレスフィールドを修正するステップは、前記第２の部分における少なくとも１つの既定のビットを未修正のままにしながら、前記仮想エンドポイント装置に関係付けられる物理装置を示すように前記第２の部分における一部のビットを修正することを含む、請求項９〜１２の何れか１項に記載の方法。
【請求項１４】
仮想装置階層を示すデータを受信するステップは、前記スイッチのアップストリームポートに接続されている第５の装置からデータを受信することを含む、請求項９〜１３の何れか１項に記載の方法。
【請求項１５】
前記第１の装置及び前記第２の装置は、前記スイッチの各ダウンストリームポートに接続される、請求項１〜１４の何れか１項に記載の方法。
【請求項１６】
データパケットを送信する方法であって、第１の装置とスイッチとの間に介在するインターセプト装置において、
前記スイッチから第１のデータパケットを受信するステップであって、前記第１のデータパケットは第２の装置で発生するステップと、
前記第１のデータパケットがカプセル化データパケットであるかどうかを決定するステップと、
前記第１のデータパケットがカプセル化データパケットであると決定される場合、
前記第１のデータパケットを非カプセル化して第２のデータパケットを取得するステップと、
前記第２のデータパケットを前記第１の装置に送信するステップと、
前記第１のデータパケットがカプセル化データパケットではないと決定される場合、
前記第１のデータパケットを前記第１の装置に送信するステップと
を含む、方法。
【請求項１７】
前記インターセプト装置において、
前記第１の装置から第３のデータパケットを受信するステップと、
前記第３のデータパケットが前記第２の装置に送信されることを決定するステップと、
前記第３のデータパケットは前記インターセプト装置から前記スイッチを通じて前記第２の装置に送信できない第１のタイプであるかどうかを決定するステップと、
前記第３のデータパケットが前記第１のタイプであると決定される場合、
第４のデータパケット内に前記第３のデータパケットをカプセル化するステップであって、前記第４のデータパケットは前記インターセプト装置から前記スイッチを通じて前記第２の装置に送信できる第２のタイプであるステップと、
前記第４のデータパケットを前記スイッチを通じて前記第２の装置に送信するステップと、
前記第３のデータパケットが前記第１のタイプではないと決定される場合、
前記スイッチを通じて前記第２の装置に前記第３のデータパケットを送信するステップと
を更に含む、請求項１６に記載の方法。
【請求項１８】
第２の装置からスイッチを通じて第１の装置にデータパケットを送信する方法であって、
前記第２の装置において、
前記スイッチを通じて前記第１の装置に送信するための第１のデータパケットを生成するステップと、
前記第１のデータパケットは前記第２の装置から前記スイッチを通じて前記第１の装置に送信できない第１のタイプであることを決定するステップと、
第２のデータパケット内に前記第１のデータパケットをカプセル化するステップであって、前記第２のデータパケットは前記第２の装置から前記スイッチを通じて前記第１の装置に送信できる第２のタイプであるステップと
を含む、方法。
【請求項１９】
前記スイッチはＰＣＩｅスイッチであり、前記第１のタイプは構成トランザクションタイプであり、前記第２のタイプはデータトランザクションタイプである、請求項１８に記載の方法。
【請求項２０】
前記第１の装置及び前記第２の装置は、前記スイッチの各ダウンストリームポートに接続される、請求項１８又は１９に記載の方法。
【請求項２１】
第１の装置とスイッチとの間の接続のためのインターセプト装置であって、
データパケットを受信する受信機と、
データパケットを送信する送信機と、
コンピュータ可読命令を記憶するメモリと、
前記コンピュータ可読命令を実行するプロセッサと
を備え、
前記コンピュータ可読命令は前記インターセプト装置に、
前記第１の装置から第１のデータパケットを受信すること、
前記第１のデータパケットが第２の装置に送信されることを決定すること、
前記第１のデータパケットが前記インターセプト装置から前記スイッチを通じて前記第２の装置に送信できない第１のタイプであるかどうかを決定すること、
前記第１のデータパケットが前記第１のタイプであると決定される場合、
第２のデータパケット内に前記第１のデータパケットをカプセル化することであって、前記第２のデータパケットは前記インターセプト装置から前記スイッチを通じて前記第２の装置に送信できる第２のタイプであること、
前記スイッチを通じて前記第２の装置に前記第２のデータパケットを送信すること、及び
前記第１のデータパケットが前記第１のタイプではないと決定される場合、
前記スイッチを通じて前記第２の装置に前記第１のデータパケットを送信すること
を行わせるように構成される、インターセプト装置。
【請求項２２】
第１の装置とスイッチとの間の接続のためのインターセプト装置であって、
データパケットを受信する受信機と、
データパケットを送信する送信機と、
コンピュータ可読命令を記憶するメモリと、
前記コンピュータ可読命令を実行するプロセッサと
を備え、
前記コンピュータ可読命令は前記インターセプト装置に、
前記スイッチから第１のデータパケットを受信すること、
前記第１のデータパケットがカプセル化データパケットであるかどうかを決定すること、
前記第１のデータパケットがカプセル化データパケットであると決定される場合、
前記第１のデータパケットを非カプセル化して第２のデータパケットを取得すること、及び
前記第２のデータパケットを前記第１の装置に送信すること、
前記第１のデータパケットがカプセル化データパケットではないと決定される場合、
前記第１のデータパケットを前記第１の装置に送信すること
を行わせるように構成される、インターセプト装置。
【請求項２３】
データパケットを送信する送信機と、
コンピュータ可読命令を記憶するメモリと、
前記コンピュータ可読命令を実行するプロセッサと
を備えるプロキシ装置であって、
前記コンピュータ可読命令は前記プロキシ装置に、
スイッチを通じて第１の装置に送信するための第１のデータパケットを生成すること、
前記第１のデータパケットは前記スイッチを通じて前記第１の装置に送信できない第１のタイプであることを決定すること、
第２のデータパケット内に前記第１のデータパケットをカプセル化することであって、前記第２のデータパケットはスイッチを通じて前記第１の装置に送信できる第２のタイプであること、及び
前記スイッチを通じて前記第１の装置に前記第２のデータパケットを送信すること
を行わせるように構成される、プロキシ装置。
【請求項２４】
第１のデータパケットを生成するように構成される第１の装置と、
スイッチと、
前記スイッチに接続される第２の装置と、
前記第１の装置と前記スイッチとの間に介在するインターセプト装置と
を備えるシステムであって、
前記インターセプト装置は、
前記第１の装置から第１のデータパケットを受信し、
前記第１のデータパケットが前記第２の装置に送信されることを決定し、
前記第１のデータパケットが前記インターセプト装置から前記スイッチを通じて前記第２の装置に送信できない第１のタイプであるかどうかを決定し、
前記第１のデータパケットが前記第１のタイプであると決定される場合、
第２のデータパケット内に前記第１のデータパケットをカプセル化し、前記第２のデータパケットは前記インターセプト装置から前記スイッチを通じて前記第２の装置に送信できる第２のタイプであり、
前記スイッチを通じて前記第２の装置に前記第２のデータパケットを送信し、且つ
前記第１のデータパケットが前記第１のタイプではないと決定される場合、
前記スイッチを通じて前記第２の装置に前記第１のデータパケットを送信するように構成される、システム。
【請求項２５】
前記スイッチはＰＣＩｅスイッチであり、前記第１のタイプは構成トランザクションタイプであり、前記第２のタイプはデータトランザクションタイプである、請求項２４に記載のシステム。
【請求項２６】
前記スイッチに接続される第４の装置を更に含み、
前記第２の装置は前記第４の装置に代わって前記第１又は第２のデータパケットを受信するように構成されるプロキシ装置であり、前記第４の装置は前記第１の装置にとって仮想装置により提供されるように見えるリソースを提供するように構成される、請求項２４又は２５に記載のシステム。
【請求項２７】
スイッチと、
インターセプト装置を介して前記スイッチの第１のダウンストリームポートに接続される第１の装置と、
前記スイッチの第２のダウンストリームポートに接続される第２の装置と
を備え、
前記第１の装置は、前記スイッチを通じて前記第２の装置に送信されるデータパケットを生成するように構成され、
前記インターセプト装置は、
前記第１の装置から第１のデータパケットを受信し、
前記第１のデータパケットが前記第２の装置に送信されることを決定し、
前記第１のデータパケットが前記インターセプト装置から前記スイッチを通じて前記第２の装置に送信できない第１のタイプであるかどうかを決定し、
前記第１のデータパケットが前記第１のタイプであると決定される場合、
第２のデータパケット内に前記第１のデータパケットをカプセル化し、前記第２のデータパケットは前記インターセプト装置から前記スイッチを通じて前記第２の装置に送信できる第２のタイプであり、
前記スイッチを通じて前記第２の装置に前記第２のデータパケットを送信し、且つ
前記第１のデータパケットが前記第１のタイプではないと決定される場合、
前記スイッチを通じて前記第２の装置に前記第１のデータパケットを送信するように更に構成される、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１の装置から第２の装置にデータパケットを送信するための方法、システム及び装置に関する。
【背景技術】
【０００２】
コンピュータシステムにおいては装置間でデータを送ることが必要な場合が多い。例えば、処理装置を複数の入出力（Ｉ／Ｏ）装置に接続することが必要な場合が多い。有線リンク又は無線リンクであり得る物理リンクを介して互いにデータパケットを送信することを可能にするように装置を接続することにより、適切なデータ通信が達成される。データパケットの送受信は、トランザクションに関して記載されることが多い。トランザクションは、装置間で送信される１つ以上のデータパケットを含む。
【０００３】
ある装置の出力から１つ以上の他の装置の入力にデータパケットをルーティングするためにスイッチを使用することが当技術分野で周知である。このようなスイッチは、スイッチにデータパケットを受信させるために配置される１つ以上の入力ポート、及びスイッチからデータパケットを送信させるために配置される１つ以上の出力ポートを備える。
【発明の概要】
【０００４】
多くの従来のコンピュータシステムは、入出力（Ｉ／Ｏ）装置を共有しない。即ち、各コンピュータは、自身に専用のＩ／Ｏエンドポイント装置を有する。しかしながら、複数のコンピュータが１つ以上の共有Ｉ／Ｏエンドポイント装置にアクセスできるようにＩ／Ｏエンドポイント装置の共有を可能にすることが有利である。これはＩ／Ｏエンドポイント装置がそのコンピュータシステムに専用（即ち、ローカル）であるようにコンピュータシステムに見えることを可能にしつつ、実際にはそれは複数のコンピュータ間で共有される。
【０００５】
Ｉ／Ｏエンドポイント装置の共有は、Ｉ／Ｏ仮想化として知られているものを使用して実装され得る。Ｉ／Ｏ仮想化は、特定のＩ／Ｏエンドポイント装置に関係付けられる物理リソース（例えば、メモリ）が複数のコンピュータによって共有されることを可能にする。Ｉ／Ｏ仮想化の１つの利点は、Ｉ／Ｏエンドポイント装置が複数の装置として機能するように見えることを可能にすることである。ここで、複数の装置の各々は特定のコンピュータに関係付けられる。
【０００６】
Ｉ／Ｏエンドポイント装置の共有は、良好なリソース利用、スケーラビリティ、更新の容易性、及び信頼性の改善をもたらし得る。Ｉ／Ｏ仮想化の１つの応用は、単一のコンピュータ上のＩ／Ｏエンドポイント装置がそのコンピュータ上で現在実行されている複数のオペレーティングシステムにより共有されることを可能にする。Ｉ／Ｏ仮想化の別の応用は、複数の独立したコンピュータが１組のＩ／Ｏエンドポイント装置を共有することを可能にする。このようなコンピュータは、コンピュータネットワークによって互いに接続されてもよい。ラックマウント方式又はブレードサーバ型のコンピュータプラットフォームは、特に、限定されないが、Ｉ／Ｏリソースの統合から利益を得る。
【０００７】
Ｉ／Ｏ仮想化は、これらのＩ／Ｏエンドポイント装置に接続されるコンピュータにＩ／Ｏエンドポイント装置の一部又は全ての仮想表現が提供されるようにＩ／Ｏエンドポイント装置を仮想化するために使用され得る。Ｉ／Ｏエンドポイント装置の仮想化ビューを提供することにより、こうした装置を使用するコンピュータは、現在使用している特定の装置に接続されなくてもよい。これは、ロードバランシング、フェイルオーバ及びポート／リンクアグリゲーション等の特徴の提供を可能にする。
【０００８】
ロードバランシングは、特定のコンピュータが複数のＩ／Ｏエンドポイント装置間で作業を共有することを可能にすることによりリソース利用の改善に役立つ。多数のＩ／Ｏエンドポイント装置間で作業を共有することにより、ボトルネックを回避することができ、作業をより効率的に行うことができる。フェイルオーバは、１つ以上のこうしたＩ／Ｏエンドポイント装置が利用不可能になったときに複数のＩ／Ｏエンドポイント装置の少なくとも１つへの継続したアクセスをコンピュータに提供する。ポート／リンクアグリゲーションは、（例えば、個々のネットワーク接続の帯域を統合するために）複数の低帯域Ｉ／Ｏエンドポイント装置が単一の広帯域Ｉ／Ｏエンドポイント装置として表されることを可能にする。
【０００９】
仮想化の実装を可能にするために修正されたスイッチ及び／又は修正されたＩ／Ｏエンドポイント装置を使用することが知られている。しかしながら、これは、費用の増加、コンポーネント間の選択の減少、及び複雑さの増加をもたらす。
【図面の簡単な説明】
【００１０】
【図１】スイッチのダウンストリームに２つのエンドポイント装置及びサーバを備えるネットワークを示す概略図である。
【図２ａ】データパケットの概略図である。
【図２ｂ】一実施形態によりカプセル化された図２ａのデータパケットの概略図である。
【図３ａ】データパケットをそれぞれ送信及び受信するために図１のネットワークのコンポーネントにより実行される処理を示すフローチャートである。
【図３ｂ】データパケットをそれぞれ送信及び受信するために図１のネットワークのコンポーネントにより実行される処理を示すフローチャートである。
【図４】スイッチのダウンストリームに接続された２つのサーバを示すネットワークの概略図である。
【図５】図１のネットワークを数え上げるために図１のネットワークのルートポートマネージャコンポーネントにより実行される処理を示すフローチャートである。
【図６】仮想装置階層を示す図１のネットワークの概略図である。
【図７】代替的な仮想装置階層を示す図１のネットワークの概略図である。
【図８】一部の実施形態により修正された場合のデータパケットフォーマットの概略図である。
【図９】一部の実施形態により修正された場合のデータパケットフォーマットの概略図である。
【図１０】一部の実施形態により修正された場合のデータパケットフォーマットの概略図である。
【図１１】一部の実施形態により修正された場合のデータパケットフォーマットの概略図である。
【図１２】仮想プロキシコントローラを含むネットワークの概略図である。
【図１３】一部の実施形態においてトランザクション中に生成されるデータパケットの概略図である。
【図１４】一部の実施形態においてトランザクション中に生成されるデータパケットの概略図である。
【図１５】一部の実施形態においてトランザクション中に生成されるデータパケットの概略図である。
【図１６】一部の実施形態においてデータ転送トランザクションに使用されるコマンドブロックの概略図である。
【図１７】一部の実施形態によるデータ転送トランザクション中に図１２のネットワークのコンポーネントにより実行される処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
最初に図１を参照すると、サーバ１が装置３（以下、インターセプト装置と呼ばれる）を介してスイッチ２に接続されている。特に、サーバ１は、（インターセプト装置３を介して）スイッチ２のダウンストリームブリッジに接続されている。スイッチ２は、１つのアップストリーム（又はルート）ブリッジ４及び３つのダウンストリームブリッジ５、６、７を備える。サーバ１は、ダウンストリームブリッジ５に接続されている。コンピュータ装置８がアップストリームブリッジ４に接続されており、一方で２つのエンドポイント装置９、１０がそれぞれダウンストリームブリッジ６、７に接続されている。コンピュータ装置８は、本明細書ではルートポートマネージャ（ＲＰＭ）と呼ばれる。当業者には容易に明らかであるが、（インターセプト装置３を介する）サーバ１、ＲＰＭ８及びエンドポイント装置９、１０は、スイッチ２の各ポート（図示せず）に接続されている。特に、ＲＰＭ８はアップストリームポートに接続されており、一方でインターセプト装置３及びエンドポイント装置９、１０は、スイッチ２のダウンストリームポートにそれぞれ接続されている。
【００１２】
「アップストリーム」及び「ダウンストリーム」という用語が本明細書で使用される場合、特段の定めが無ければ、これらの用語は、（一部の実施形態で提供され且つ以下で検討される仮想装置階層とは対照的に）図１に示される物理装置階層を参照して使用される。即ち、「ダウンストリーム」方向に移動するデータパケットは、アップストリームブリッジ４からダウンストリームブリッジ５，６，７に向かう方向に進行する。「アップストリーム」方向に移動するデータパケットは、ダウンストリームブリッジからアップストリームブリッジに向かって進行する。従って、図１の配置では、ＲＰＭ８は最もアップストリームの位置に（又はネットワークのルートに）あり、一方でエンドポイント９、１０及び（インターセプト装置３を介する）サーバ１はＲＰＭ８及びスイッチ２のダウンストリームにある。
【００１３】
エンドポイント装置９、１０は、任意のタイプの装置であってもよい。例えば、エンドポイント装置は、ネットワークインターフェースカード、記憶装置又はグラフィックスレンダリング装置等のＩ／Ｏエンドポイント装置であってもよい。１つ以上のエンドポイント装置９、１０が、データパケットを処理してサーバ１にＩ／Ｏエンドポイント装置の仮想化を提供するように構成される装置であってもよい。データパケットを処理してサーバ１にＩ／Ｏエンドポイント装置の仮想化を提供するように構成される装置は、以下、仮想化プロキシコントローラ（ＶＰＣ）と呼ばれる。
【００１４】
スイッチ２のブリッジ４から７は、以下、物理ブリッジと呼ばれる。物理ブリッジ４から７はハードコードされたコンポーネントであり、ハードコードされていないコンポーネントである仮想ブリッジとは区別されることが理解されるべきである。即ち、スイッチ２は、ブリッジ４から７を常に提供する。本明細書に記載の実施形態では、スイッチ２はＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）スイッチである。一般にＰＣＩｅスイッチはブリッジであると考えられる個別のハードウェア構成要素を含まないことに留意すべきである。即ち、ＰＣＩｅスイッチは、あたかも既定数の個別のハードウェアブリッジを含んで見えるようにハードコードされるが、ブリッジは実際には他の手段により提供されてもよい。従って、ブリッジがスイッチのハードコードされた（静的）コンポーネントであったとしても、本明細書で「物理ブリッジ」と呼ばれる装置は他の場所では「論理」又は「仮想」ブリッジと呼ばれる場合がある。従って、仮想ブリッジという用語は本明細書では非ハードコードのコンポーネントを意味し、他の場所で「仮想ブリッジ」と名付けられるコンポーネントとは異なり得ることに留意することが重要である。
【００１５】
サーバ１は、エンドポイント装置９、１０と通信できることが望ましい。即ち、サーバ１は、エンドポイント装置９、１０により提供される機能を利用できることが望ましい。これは、スイッチ２を介してサーバ１とエンドポイント装置９、１０との間でデータを送信可能であることを必要とする。しかしながら、スイッチ２は、（ＰＣＩｅプロトコルに従って動作して）ダウンストリームブリッジに接続されたサーバがアップストリーム方向に（即ち、サーバ１から離れて）様々なトランザクションを発行することを防ぐ。サーバ１がアップストリーム方向に発行することができないトランザクションは、エンドポイント装置９、１０のサーバ１により利用される必要があってもよい。
【００１６】
この制限を克服するために、インターセプト装置３は、サーバ１からスイッチ２に発せられるデータパケットを傍受して、アップストリーム方向の前方送信を可能にするためにデータパケットを処理するように配置される。特に、インターセプト装置３は、許可されたトランザクション内で禁止されたサーバトランザクションをカプセル化するように構成されるカプセル化論理１１を含み、それによりデータパケットがサーバ１からアップストリームにルーティングされることを可能にする。インターセプト装置３は、任意の従来のやり方で実装されてもよく、例えば、ＦＰＧＡ又はＡＳＩＣであってもよい。
【００１７】
より詳細には、ＰＣＩｅトランザクションは、この目的のため、構成トランザクション又はデータトランザクションと見なされ得る。更に、ＰＣＩｅプロトコルを使用するトランザクションは、一般に、以下の５つのクラスの１つに分類され得る。
１．サーバからエンドポイント装置に送信されるコマンド、
２．エンドポイント装置のリソースに関してサーバにより送信される状態読み込みコマンド、
３．サーバメモリ内のコマンド記述子を読み取るエンドポイント装置コマンド、
４．サーバメモリ内の状態記述子を書き込むエンドポイント装置コマンド、及び
５．サーバメモリ内のデータバッファを読み取る／書き込むエンドポイント装置コマンド。
【００１８】
上記のリストのクラス１に分類されるトランザクションが構成トランザクションと見なされ、このようなトランザクションのデータパケットはアップストリーム方向にサーバ１からスイッチ２を通じてルーティングされることが許可されないトランザクションである。クラス２から５に分類されるトランザクションはデータトランザクション（例えば、メモリ読み取り又はメモリ書き込みトランザクション）であり、このようなトランザクションのデータパケットはアップストリーム方向にサーバ１からスイッチを通じてルーティングされることが可能である。即ち、クラス２から５のトランザクションのデータパケットは、サーバ１からスイッチ２を通じてエンドポイント装置９、１０にルーティングされることができる。従って、インターセプト装置３のカプセル化論理１１は、データトランザクション（メモリ読み取り又はメモリ書き込みの何れか）内の上記のリストのクラス１に分類されるデータパケットをカプセル化するように配置される。スイッチ２を通じてアップストリーム方向にルーティングされ得るトランザクションは本明細書では「許可トランザクション」と呼ばれる場合があり、一方でスイッチ２を通じてアップストリーム方向にルーティングされないトランザクションは本明細書では「拒否トランザクション」と呼ばれる場合がある。更に、以下でより詳細に記載されるように、クラス２から３に分類されるデータパケットは、特定のルーティング要求を達成するために、メモリ読み取り又はメモリ書き込みデータパケット内にカプセル化されてもよい。
【００１９】
図２ａは、ヘッダ部１２ａ及びペイロード部１２ｂを含むＰＣＩｅデータパケット１２を概略的に示す。当業者には周知のように、ヘッダ部１２ａは、データパケットのタイプ（例えば、メモリ書き込み、メモリ読み取り、構成等）を識別する情報、送信者を識別する情報（リクエスタ識別子）、及びデータパケットがルーティングされる装置が決定されることを可能にする情報を含む。
【００２０】
図２ｂは、インターセプト装置３によるカプセル化後のデータパケット１２を含むカプセル化データパケット１２ｃを概略的に示す。特に、追加ヘッダ１２ｄがデータパケット１２に加えられていることが見て取れる。このヘッダ１２ｄは、スイッチ２を通じてアップストリームにルーティングされ得るトランザクションに関係付けられるヘッダである。例えば、ヘッダ１２ｄは、メモリデータ書き込みトランザクションに関係付けられるヘッダであってもよい。
【００２１】
図３ａは、装置９、１０の１つへの前進伝送のためにスイッチ２にデータパケットを転送する場合に、サーバ１及びインターセプト装置３によって実行される処理を示すフローチャートである。ステップＳ１において、サーバ１は、スイッチ２を通じて装置９、１０の１つへの前進伝送のためのデータパケットを生成する。データパケットは、上記のリストのクラス１から４の１つに分類されるトランザクションのものであってもよく、又は上記のリストのクラス５に分類されるトランザクションのデータパケットであってもよい。処理はステップＳ１からステップＳ２に移って、サーバはスイッチ２にデータパケットを送信する。
【００２２】
ステップＳ３において、インターセプト装置３はステップＳ１で生成されたデータパケットを傍受して、ステップＳ４において、データパケットが構成トランザクション（即ち、上記のリストのクラス１に分類されるトランザクション）に属するかどうかを決定する。ステップＳ４において、データパケットが構成トランザクションのデータパケットであると決定される場合、処理はステップＳ５に移り、データパケットは許可トランザクションのデータパケット内にカプセル化される。処理はステップＳ５からステップＳ６に移り、カプセル化データパケットは、設定目標（例えば、エンドポイント装置９、１０）への前進伝送のためにスイッチ２に送信される。
【００２３】
他方で、ステップＳ４で、データパケットが構成トランザクションの一部ではないと決定される場合、処理は直接ステップＳ４からステップＳ６に移り、データパケットはカプセル化無しでスイッチ２に送信される。
【００２４】
図３Ｂは、スイッチ２を通じて装置９、１０の１つからデータパケットを受信したサーバ１及びインターセプト装置３により実行される処理を示すフローチャートである。ステップＳ１０において、データパケットはインターセプト装置３で受信される。処理はステップＳ１１に移り、データパケットがカプセル化されているかどうかが決定される。即ち、スイッチ２を通じてサーバ１にルーティングされる場合に、スイッチ２におけるダウンストリームブリッジにも接続されている装置からサーバ１に移動するデータパケットも、許可トランザクションのデータパケット内にカプセル化されてもよいことが理解される。
【００２５】
ステップＳ１１において、ステップＳ１０で受信されたデータパケットがカプセル化データパケットであると決定される場合に、処理はステップＳ１１からステップＳ１２に移り、カプセル化データパケットは非カプセル化される。即ち、ステップＳ１２において、インターセプト装置３は、拒否トランザクションクラスの元のデータパケットを取得するために許可トランザクションクラスのデータパケットに関するヘッダ情報を取り除く。処理はステップＳ１２からステップＳ１３に移って、インターセプト装置３は非カプセル化データパケットをサーバ１に転送する。非カプセル化データパケットは、ステップＳ１４でサーバ１により受信される。他方で、ステップＳ１１において、ステップＳ１０で受信されたデータパケットがカプセル化データパケットでないと決定される場合に、処理は直接ステップＳ１１からステップＳ１３に移る。この場合、ステップＳ１０で受信されたデータパケットはステップＳ１３でサーバ１に転送されて、非カプセル化せずにステップＳ１４でサーバ１により受信される。
【００２６】
図１には単一のサーバ１が示されているが、図３ａ及び３ｂを参照して先に記載された処理は、スイッチの他のダウンストリームポートに接続されたエンドポイント装置により提供されるリソースを共有する複数のサーバがスイッチのダウンストリームブリッジに接続されている場合に特に有益である。図４を参照すると、図１の配置に似た配置が示されているが、２つのサーバが含まれている。図４の配置では、コンピュータ装置８は、スイッチ２’のアップストリームポート４’に接続されている。スイッチ２’は、４つのダウンストリームブリッジ５’，６’，７’及び１３を更に備える。サーバ１はインターセプト装置３を介してダウンストリームブリッジ５’に接続されており、エンドポイント装置９、１０はそれぞれダウンストリームブリッジ６’、７’に接続されている。更に、サーバ１４が、インターセプト装置１５を介してカプセル化論理１６を備えるダウンストリームブリッジ１３に接続されている。インターセプト装置１５及びカプセル化論理１６は、図３ａ、３ｂを参照して先に記載されたように、サーバ１１４から送信され且つスイッチ２から受信されたデータパケットを処理するように構成される。このようにして、サーバ１、１４は共に通信し、従って、装置９、１０により提供されるリソースを共有することができる。
【００２７】
エンドポイント装置の共有は、Ｉ／Ｏ仮想化として知られているものを使用して実装され得る。Ｉ／Ｏ仮想化は、特定のＩ／Ｏエンドポイント装置に関係付けられる物理リソース（例えば、メモリ）が、サーバ１、１４等の複数のコンピュータによって共有されることを可能にする。Ｉ／Ｏ仮想化の１つの利点は、Ｉ／Ｏエンドポイント装置が複数の装置として機能するように見えることを可能にすることである。ここで、複数の装置の各々は特定のサーバに関係付けられる。Ｉ／Ｏエンドポイント装置の共有は、良好なリソース利用、スケーラビリティ、更新の容易性、及び信頼性の改善をもたらし得る。
【００２８】
従来技術のネットワークでは、接続されているＩ／Ｏエンドポイント装置を利用するサーバが、深さ優先探索を使用して接続されているネットワークにおける装置の全てを数え上げる。数え上げ（ｅｎｕｍｅｒａｔｉｏｎ）処理は、ネットワークに接続された各装置に識別子を適用して、どのような装置がネットワークに接続されているかに関する情報をサーバが取得できるようにすることを意図している。既知のＰＣＩｅネットワークにおいて、サーバは、スイッチのアップストリームブリッジに接続されている。即ち、サーバは、ＰＣＩｅネットワークのルート（即ち、最もアップストリームの地点）に存在し、ダウンストリーム装置を数え上げるであろう。しかしながら、図１及び４の配置では、ＲＰＭ８が図示のネットワークのルートにあり、サーバ１及び１４の両方がダウンストリームブリッジに接続されていることが理解される。
【００２９】
一部の実施形態では、仮想化を実装するために、サーバは、サーバが仮想ネットワーク階層のルートにある仮想ネットワーク階層を提示される。従って、サーバにより行われる数え上げ処理は、（サーバの観点から）基準として開始してもよく、サーバが提示されている仮想装置の各々への識別子の割り当てをもたらす。今度はサーバ１に仮想ネットワーク階層を提供する処理が図１の配置を参照して記載される。
【００３０】
図５を参照すると、ＲＰＭ８により実行される処理を示すフローチャートが示されている。一般論として、ＲＰＭ８は、そのネットワーク内のダウンストリーム物理装置の各々を数え上げる。以下に記載のバス、装置及び機能識別子は、例示及び記載の簡潔だけのために提供される。ステップＳ２０において、ネットワークの数え上げが開始して、ＲＰＭ８で実行されている数え上げソフトウェアが、ＲＰＭ８からスイッチ２への接続に沿って数え上げコントロールデータパケット（即ち、構成読み取りパケット）を送信して、ステップＳ２１において、数え上げられていない接続に接続された何らかの装置があるかどうかを決定する。ＲＰＭ８からブリッジ４への接続はＢＵＳ０として数え上げられる。ＢＵＳ０に接続された未数え上げ装置が存在すると決定される場合、その装置は、数え上げソフトウェアに対して自身を識別する応答コントロールデータパケット（即ち、構成完了パケット）を返すことにより数え上げコントロールデータパケットに応答する。
【００３１】
未数え上げ装置がＢＵＳ０に接続されている（即ち、応答コントロールデータパケットが受信された）と決定される場合、処理はステップＳ２２に移り、応答コントロールデータパケットにおける情報に基づいて、現在のバス（ＢＵＳ０）に接続されている装置がブリッジであるかどうかが決定される。現在のバスに接続されている装置がブリッジであれば、処理はステップＳ２３に移り、数え上げソフトウェアによりブリッジは装置番号を割り当てられる。例えば、ＢＵＳ０において数え上げられた第１の装置は、装置番号０を割り当てられてもよい。装置からのダウンストリーム（即ち、ＲＰＭ８から離れた）接続は、次の利用可能なバス番号を割り当てられる。例えば、ブリッジがＢＵＳ０に接続された第１の数え上げ済み装置である場合、そのブリッジからのダウンストリーム接続はＢＵＳ１として数え上げられてもよい。
【００３２】
ステップＳ２３から処理がステップＳ２４に移ると、数え上げソフトウェアは（数え上げデータパケットを送信することにより）ネットワーク階層において次のバスを検査する。次に、処理はステップＳ２１に移り、現在のバス（即ち、ステップＳ２４で選択されたバス）に接続されている何らかの未数え上げ装置が有るかどうかが決定される。ＰＣＩｅの特定のブランチに更に数え上げられるブリッジが無くなるまで、処理はステップＳ２１からＳ２４をループする。
【００３３】
ステップＳ２２において、バスに接続されている未数え上げ装置がブリッジではないと決定される場合、処理はステップＳ２２からステップＳ２５に移る。ステップＳ２５において、未数え上げ装置が未数え上げ装置が（Ｉ／Ｏ装置又は仮想化プロキシコントローラ等の）エンドポイント装置であるか又はインターセプト装置３等のインターセプト装置であるかが決定される。ステップＳ２５において、未数え上げ装置がエンドポイント装置であることが決定される場合、プロセッサはステップＳ２５からステップＳ２６に移り、エンドポイントは、接続されているバスに対して一意の装置番号により数え上げられる。更に、ＰＣＩｅエンドポイント装置は、最大で８つの独立機能を提供する。各機能は別々に数え上げられる。図１の例では、各エンドポイント装置９、１０が単一の機能のみを提供することが想定される。従って、その単一の機能は、各エンドポイント装置の機能０として数え上げられる。
【００３４】
エンドポイントからのＰＣＩｅ接続が更に無いとき、処理はステップＳ２６からステップＳ２７に移り、数え上げソフトウェアは、ステップＳ２１において、まだ数え上げられていない何らかの装置がそのバス上にあるかどうかを決定するためにネットワーク階層における以前のバスに戻る。
【００３５】
ステップＳ２５において、未数え上げ装置がインターセプト装置であると決定される場合、処理はステップＳ２５からステップＳ２８に移り、数え上げソフトウェアはインターセプト装置に装置及び機能番号を割り当てる。数え上げソフトウェアは、インターセプト装置を超えて数え上げない。以下に更に詳細に記載されるように、ＲＰＭ８で動作する数え上げソフトウェアは、物理階層の数え上げ後に各インターセプト装置により仮想装置が提供されるように構成する。処理はステップＳ２８からステップＳ２７に移る。
【００３６】
ステップＳ２１において、現在のバスに未数え上げ装置が無いことが決定される場合、処理はステップＳ２９に移り、現在のバスがネットワーク階層のルートバス（即ち、最もアップストリームのバス）である（即ちＢＵＳ０）かどうかが決定される。ステップＳ２９において、現在のバスがルートではないと決定される場合、処理はステップＳ２７に移り、数え上げソフトウェアは、ステップＳ２１において、まだ数え上げられていない何らかの装置がそのバス上にあるかどうかを決定するためにネットワーク階層における以前のバスに戻る。
【００３７】
他方で、ステップＳ２９において、現在のバスがルートバスであると決定される場合、これは、ネットワークにおいて数え上げられるブリッジ、エンドポイント又はインターセプト装置が更に無いように物理ネットワーク階層の全てのブランチが横断されたことを示すので、処理はステップＳ３０で終了する。
【００３８】
更に、ステップＳ２３において、（標準ＰＣＩｅ数え上げ動作のように）装置及びバス番号をブリッジに割り当てることに加えて、ＲＰＭ８は、スイッチ２のダウンストリームブリッジ５，６，７に接続されている装置間の決定性ピアツーピア接続を可能にするために、ダウンストリームブリッジのレジスタに一意の値を書き込むように構成される。特に、ＲＰＭ８は、ＲＰＭ８により制御される全てのスイッチに対して一意である識別子を関係付けるように構成される。ＲＰＭ８によってブリッジと関係付けられた一意の値は、本明細書では「アドレスルーティングフィールド」（ＡＦ）値と呼ばれ、これは物理装置階層においてダウンストリームブリッジに接続された装置のアドレスを一意に識別する。
【００３９】
図５を参照して記載される処理の理解を助けるために、次に図６に示された配置を参照して例示が提供される。図６の配置は、図１のそれと同じである。ＲＰＭ８により割り当てられる装置及びバス番号は説明のための単なる例示として提供されることが理解されるであろう。
【００４０】
ＲＰＭ８は、スイッチ２への接続をＢＵＳ０として数え上げる。ステップＳ２０において、ＲＰＭ８は、ＢＵＳ０に沿って数え上げコントロールデータパケットを送信する。ステップＳ２１において、ブリッジ４が数え上げコントロールデータパケットに応答すると、現在のバス（ＢＵＳ０）に接続されている装置が存在することが決定される。ステップＳ２２において、応答に含まれる情報から、ＢＵＳ０に接続されている装置がブリッジである（即ち、スイッチ２の中のアップストリームブリッジ４）であると決定される。ステップＳ２３において、ブリッジ４は、バスＢＵＳ０における装置０として数え上げられる。ブリッジ４からのダウンストリーム接続はＢＵＳ１として数え上げられる。
【００４１】
ステップＳ２４において、次に数え上げソフトウェアは階層における次のバス、即ちＢＵＳ１を検査して、処理はステップＳ２１に戻る。ステップＳ２１において、装置、ブリッジ５が現在のバス（ＢＵＳ１）に接続されていることが決定され、ステップＳ２２において、装置はブリッジであると決定される。ステップＳ２３において、ブリッジ５はＢＵＳ１において装置０として数え上げられて、ブリッジ５からのダウンストリーム接続はＢＵＳ２として数え上げられる。ブリッジ５は、“ＡＦ＝１”のＡＦ値を割り当てられる。従って、インターセプト装置３／サーバ１は、物理階層においてＡＦ＝１と識別されてもよい。
【００４２】
ステップＳ２４において、次に数え上げソフトウェアは階層における次のバス、ＢＵＳ２を検査して、処理はステップＳ２１に戻る。ステップＳ２１において、ＢＵＳ２に接続されている装置が存在することが決定され、ステップＳ２２において、この装置はブリッジではないと決定される。処理はステップＳ２５に移り、装置は」インターセプト装置であると決定される。従って、ＢＵＳ２の処理は中断して、処理はステップＳ２７に移り、階層における以前のバス、ＢＵＳ１が調べられる。
【００４３】
ステップＳ２１において、ＢＵＳ１上に未数え上げ装置があることが決定され、処理はステップＳ２２に移る。ステップＳ２２において、次の未数え上げ装置がブリッジ（即ち、ブリッジ６）であると決定され、処理はステップＳ２３に移る。ステップＳ２３において、ブリッジ５６はＢＵＳ１における装置１として数え上げられ、ブリッジ６からのダウンストリーム接続はＢＵＳ３として数え上げられ、ブリッジ６は“ＡＦ＝２”のＡＦ値を割り当てられる（これは、以下により詳細に記載されるエンドポイント９にデータパケットをルーティングするために使用され得る）。ステップＳ２４において、次に数え上げソフトウェアは階層における次のバス、ＢＵＳ３を検査する。ステップＳ２１において、ＢＵＳ３に接続されている装置が存在することが決定され、ステップＳ２２において、この装置はブリッジではないと決定される。ステップＳ２５において、装置はエンドポイントであると決定され、従って、処理はステップＳ２６に移る。
【００４４】
ステップＳ２６において、エンドポイント装置９は、ＢＵＳ３における装置０として数え上げられる。図６の説明のため、エンドポイント装置９及びエンドポイント装置１０はそれぞれ単一の機能のみを提供されることが想定される。即ち、ＰＣＩｅエンドポイント装置は最大で８つの独立機能を提供してもよいが、本例示のために単一の機能のみが考慮される。しかしながら、本明細書の記載から、本発明の他の実施形態では複数の機能が利用されることが容易に理解されるであろう。
【００４５】
次に、処理はステップＳ２７に移り、階層における以前のバス、即ち、ＢＵＳ１が現在のバスに設定される。ステップＳ２１において、ＢＵＳ１（即ち、ブリッジ７）上に未数え上げ装置があることが決定され、処理はステップＳ２２に移る。ステップＳ２２において、次の未数え上げ装置がブリッジであると決定され、処理はステップＳ２３に移る。ステップＳ２３において、ブリッジ７はＢＵＳ１において装置２として数え上げられて、ブリッジ７からのダウンストリーム接続はＢＵＳ４として数え上げられ、ブリッジ７は“ＡＦ＝３”のＡＦ値を割り当てられる。ステップＳ２４において、数え上げソフトウェアは、現在のバスとして、階層における次のバス、ＢＵＳ４を設定する。ステップＳ２１において、ＢＵＳ４に接続されている装置（即ち、エンドポイント装置１０）が存在することが決定され、ステップＳ２２において、この装置はブリッジではないと決定される。ステップＳ２５において、装置はエンドポイントであると決定され、従って、処理はステップＳ２６に移る。
【００４６】
ステップＳ２６において、エンドポイント装置１０は、ＢＵＳ４における装置０として数え上げられる。次に、処理はステップＳ２７に移り、階層における以前のバス、即ち、ＢＵＳ１が現在のバスに設定される。
【００４７】
ステップＳ２１において、現在のバスに装置が更に無いことが決定され、ステップＳ２９において、現在のバスがネットワーク階層のルートではないことが決定される。従って、処理はステップＳ２７に移り、階層における以前のバス（ＢＵＳ０）が現在のバスに設定される。
【００４８】
ＢＵＳ０に接続されている未数え上げ装置が無いので、処理はステップＳ２９に移り、現在のバスはネットワーク階層のルートであると決定される。処理はステップＳ２９からステップＳ３０に移って終了する。
【００４９】
物理ネットワーク階層を数え上げて、ＲＰＭ８は、各物理エンドポイント装置の所望の数の仮想コピーをサーバ１に割り当て、仮想装置階層を伝達する。任意の仮想装置階層の正確な構造はアプリケーション依存であることが理解されるであろう。特に、仮想階層は物理階層と同じである必要はないことが理解されるであろう。しかしながら、例示的な配置が図６に示されており、そこでは仮想ネットワーク階層がインターセプト装置３内に示されている。仮想ネットワーク階層はそれぞれダウンストリーム仮想バスを有する３つの仮想ブリッジ１６，１７，１８を備えており、各仮想バスは各仮想エンドポイント装置１９，２０，２１に接続している。仮想ブリッジ１６，１７，１８及び仮想エンドポイント装置１９，２０，２１がインターセプト装置３により常に提供されるわけではなく、必要に応じて動的に構成されることを「仮想」は意味している。仮想コンポーネントは、物理コンポーネントから区別するために破線で示されている。
【００５０】
ＲＰＭ８が仮想ネットワーク階層を構築し終える前に、サーバ１は数え上げを行うことができない。これはサーバ１を遅延させるためにインターセプト装置３内に記憶されるコードを使用して達成されてもよく、一方でＲＰＭ８は仮想装置階層の確立を完了する。
【００５１】
ＲＰＭ８は仮想ブリッジ及び仮想エンドポイントに適切な装置番号を割り当て、その結果、それらは標準のサーバ数え上げ手続きにより発見されるであろう。更に、仮想エンドポイント装置は、ＲＰＭ８により本明細書ではＨＥＤ（「ホストエンドポイント装置」）と呼ばれる一意の識別子を割り当てられ、その結果、仮想エンドポイント装置は一意に識別され得る。例えば、特定の物理エンドポイント装置に対する装置番号及びＨＥＤ値は、図５のステップＳ２６においてＲＰＭ８により割り当てられてもよい。ＨＥＤ値の使用は、図１２から１７及び仮想化プロキシコントローラを使用する処理を参照して以下により詳細に説明される。
【００５２】
インターセプト装置３内の仮想ネットワーク階層の構築の後で、ＲＰＭ８により、サーバ１は、ネットワーク階層内の装置を数え上げるための数え上げ動作を開始する。サーバ１の観点から、サーバ１はネットワーク階層のルートにあり、標準的なやり方で、即ち、数え上げコントロールデータパケットを発行することにより、ダウンストリーム装置の数え上げを試行する。インターセプト装置３は、ＲＰＭ８により構築された仮想階層に基づいてサーバ１により発行される数え上げコントロールパケットに応答する。従って、サーバ１は、仮想ブリッジ１６，１７，１８、仮想エンドポイント装置１９，２０，２１、及び仮想ブリッジを仮想エンドポイント装置に接続する仮想バスが仮想コンポーネントであることに気付かない。次に、図６を参照すると、どのようにサーバ１がインターセプト装置３により提供される仮想階層における装置を数え上げ得るかの例が記載されている。以下で参照される装置及びバス番号は説明のための単なる例示として提供されることが理解されるであろう。図６にサーバにより割り当てられた番号がイタリック体で示されている。
【００５３】
サーバ１は、バスＢＵＳ９における装置０の機能０として自身を数え上げる。サーバ１をインターセプト装置３に接続するバスはＢＵＳ１０として数え上げられ、インターセプト装置３により提供されるアップストリームブリッジ３ａはＢＵＳ１０における装置０として数え上げられる。バスＢＵＳ１０は、サーバ１とインターセプト装置３との間の実際の接続であるので実線で示されている。更に、少なくとも１つのブリッジが常に必要とされるので、ブリッジ３ａは物理ブリッジであってもよい（即ち、ブリッジ３ａはインターセプト装置の「ハードコード」された特徴であってもよい）。ブリッジ３ａは実線で示されており、図６のブリッジ３ａが物理ブリッジとして実装されることを示す。インターセプト装置３により１つより多くの物理ブリッジが提供され得ることが理解されるであろう。ブリッジ３ａからダウンストリームの仮想バスはＢＵＳ１１と数え上げられ、一方で仮想ブリッジ１６はＢＵＳ１１における装置０として数え上げられる。仮想ブリッジ１６を仮想エンドポイント装置１９に接続する仮想バスはＢＵＳ１２として数え上げられ、仮想エンドポイント装置１９の単一の機能はＢＵＳ１２における装置０の機能０として数え上げられる。
【００５４】
仮想ブリッジ１７はＢＵＳ１１における装置１として数え上げられ、一方で仮想ブリッジ１７を仮想エンドポイント装置２０と接続する仮想バスはＢＵＳ１３と数え上げられる。仮想エンドポイント装置２０の単一の機能は、ＢＵＳ１３における装置０の機能０として数え上げられる。仮想ブリッジ１８はバス１１における装置２として数え上げられ、一方で仮想ブリッジ１８を仮想エンドポイント装置２１と接続する仮想バスはＢＵＳ１４と数え上げられる。仮想エンドポイント装置２１の単一の機能は、ＢＵＳ１４における装置０の機能０として数え上げられる。
【００５５】
従って、数え上げの後で、サーバ１は３つの物理エンドポイント装置により提供されるリソースへのアクセスを有すると考えることが見て取れる。仮想エンドポイント装置１９，２０，２１により提供されるリソースは、実際には、エンドポイント装置９、１０により提供される。特に、仮想エンドポイント装置１９はエンドポイント装置９により提供され、一方で仮想エンドポイント装置２０、２１により提供されるリソースはエンドポイント装置１０により提供される。従って、インターセプト装置３はサーバ１により行われる仮想エンドポイント装置の数え上げと、ＲＰＭ８により適切なリソースを提供する物理仮想エンドポイント装置に割り当てられる一意の識別子との関連性を記憶する。特に、インターセプト装置３はサーバ数え上げ［ＢＵＳ１２における装置０の機能０］を識別子［ＡＦ２、ＢＵＳ３、ＨＥＤ１］と関係付け、サーバ数え上げ［ＢＵＳ１３における装置０の機能０］を識別子［ＡＦ３、ＢＵＳ４、ＨＥＤ２］と関係付け、［ＢＵＳ１４における装置０の機能０］を識別子［ＡＦ３、ＢＵＳ４、ＨＥＤ３］と関係付ける。また、ＲＰＭ８により各仮想装置に割り当てられるＨＥＤ値は、その仮想エンドポイント装置に機能性を提供する物理エンドポイント装置に隣接して示される。
【００５６】
上記のように、ＰＣＩ  Ｅｘｐｒｅｓｓにおいて、各エンドポイント装置は、最大で８つの論理的に独立した機能を有してもよい。装置の独立した機能の各々は、装置が接続されているバスのＰＣＩｅバス番号、装置の装置番号及び機能番号から成る一意の識別子を有し、これらの各々は構成ソフトウェア（図５の配置ではＲＰＭ８において動作する）による数え上げ中にエンドポイント装置に割り当てられる。従って、仮想階層は、任意の物理エンドポイント装置により提供される物理機能を利用するためにＲＰＭ８により生成されてもよい。更に、仮想機能は、インターセプト装置３内で構成される仮想階層内で提供されてもよい。図７は、更なる例示として、図１に示される物理階層を使用して提供され得る代替的な仮想階層を示す。
【００５７】
図７を参照すると、ＲＰＭ８は、図５を参照して記載された物理階層を数え上げている。即ち、図５のように、エンドポイント装置９、１０の各々が単一の機能を提供する。図７の配置では、インターセプト装置３に提供される仮想階層は、６つの仮想ブリッジ、仮想ブリッジ１６，１７，１８及び仮想ブリッジ１７のダウンストリームに接続されている追加の３つの仮想ブリッジ１７’，２３，２６を備える。仮想エンドポイント装置１９は再び仮想ブリッジ１６に接続され、仮想エンドポイント装置２１は再び仮想ブリッジ１８に接続されている。仮想エンドポイント装置２７は仮想ブリッジ２３に接続され、仮想エンドポイント装置２８は仮想ブリッジ２６に接続されている。仮想階層は、仮想エンドポイント装置２７及び２８がそれぞれ８つの独立した機能を提供するように見えるように構成される。即ち、仮想装置２７及び２８は、（仮想エンドポイント装置２７における指定［０：７］及び仮想エンドポイント装置２８における［８：１５］により図７に示されている）８つの仮想機能を提供する。従って、サーバ１による数え上げ中に、仮想エンドポイント装置２７及び２８により提供される仮想機能の各々は、上記のように一意の識別子を割り当てられる。ＲＰＭ８は、それぞれＨＥＤ１、ＨＥＤ２、ＨＥＤ３及びＨＥＤ４のＨＥＤ値を仮想エンドポイント装置１９，２７，２８，２１に提供している（また、ＨＥＤ値は、図７において、こうしたＨＥＤ値を割り当てられる仮想エンドポイント装置に機能性を提供する物理エンドポイント装置に隣接して示されている）。サーバの数え上げ中にサーバ１により提供される識別子は図７に示されていない。
【００５８】
図７を参照して記載された上記の例では、エンドポイント装置９、１０の各々は単一の機能だけを提供し、その結果、仮想エンドポイント装置により提供される全ての仮想機能が仮想エンドポイント装置に対応する物理エンドポイント装置の単一の機能により提供される。しかしながら、例えば、仮想エンドポイント装置２７により提供される８つの仮想機能が物理エンドポイント装置により提供される１つより多くの機能により提供されてもよい。例えば、物理エンドポイント装置９はそれ自身が８つの機能を提供してもよく、８つの機能のそれぞれは仮想エンドポイント装置２７により提供される各仮想機能に対応する。
【００５９】
図６及び７の配置は共に単なる例示として提供されている。任意の適切な仮想階層が必要に応じてインターセプト装置３内で構成されてもよいことが理解されるであろう。
【００６０】
サーバ１による仮想階層の数え上げの後で、仮想エンドポイント装置／機能にアドレス指定されるデータパケットが正しい物理的宛先に到達することを確実にする必要がある。正しい物理的宛先は、仮想エンドポイント装置／機能が関係付けられる物理エンドポイント装置／機能であってもよく、又は以下により詳細に記載されるように、プロキシコントローラであってもよい。
【００６１】
上記のように、スイッチ２を通じてアップストリームに（即ち、ＲＰＭ８に又はエンドポイント装置９、１０の１つに）送信できないトランザクションに属するデータパケットは、スイッチ２を通じてアップストリームに送信できるタイプのデータパケット内にカプセル化される。仮想装置階層がサーバ１に提供される場合、サーバ１は、生成するデータパケットを必要とされるリソースを提供する物理エンドポイント装置ではなく仮想エンドポイント装置にアドレス指定することが理解されるであろう。従って、一部のデータパケットのカプセル化に加えて、インターセプト装置３は、サーバ１によって発行される及び受信されるデータパケットが物理装置階層を通じて正しくルーティングされることも確実にする。これは、図８、９及び１０を参照して及び図６の配置を参照して以下により詳細に記載される。
【００６２】
図８は、標準的なメモリ書き込み（又はメモリ読み取り）パケットヘッダ４０の構造を概略的に示す。当業者には容易に理解されるように、ヘッダ４０は、ヘッダ４０ａが属するデータパケットを発行した装置を示す１６ビットのリクエスタＩＤフィールド４０ａを含む。上記のように、ＰＣＩｅデータパケットのリクエスタＩＤフィールドは、機能、装置及びバス番号を含む。ヘッダ４０は、８ビットのタグフィールド４０ｂを更に含む。ＰＣＩｅトランザクションは、要求データパケット及び１つ以上の対応する完了データパケットで構成されてもよい。各要求データパケットは、タグフィールド４０ｂに保存される値に関係付けられる。対応する完了データパケットのそれぞれは、タグフィールド４０ｂに保存される同じ値を有するので、完了データパケットを関連の要求データパケットと関係付ける。一意のタグ値が、宛先装置から１つ以上の完了データパケットを要求する全ての未処理要求に割り当てられる。
【００６３】
ヘッダ４０は、２つの３２ビットフィールドとして示される６４ビットアドレスを更に含む。第１のフィールド４０ｃがアドレスの最上位３２ビットを構成する一方で、第２のフィールド４０ｄがアドレスの最下位３２ビットを構成する。サーバアドレスフィールド４０ｃ、４０ｄは、データが読み取られる（又はデータが書き込まれる）（例えば、サーバ１の）メモリ内の場所を示す。
【００６４】
ヘッダ４０を含むデータパケットを傍受すると、インターセプト装置３は、（数え上げ中にサーバ１により仮想装置階層内の仮想装置に書き込まれるＰＣＩｅ  Ｂａｓｅ及びＬｉｍｉｔアドレスレジスタを参照して）アドレスフィールド４０ｃ、４０ｄから、データパケットが（サーバ１により）アドレス指定されている仮想エンドポイント装置を識別する。インターセプト装置３は、データパケットが送信されるべき物理エンドポイント装置の識別子を更に識別する。次に、インターセプト装置３は、識別された物理装置に送信するために、以下により詳細に記載されるようにデータパケットを修正する。一部の状況において、修正はカプセル化を含んでもよいが、他の状況では、カプセル化は不要である。
【００６５】
上記のように、データパケットがどの物理装置（例えば、エンドポイント装置又はＲＰＭ８）に送信されるべきかの決定はアプリケーション特有であろう。例えば、データパケットは、サーバがデータパケットをアドレス指定した仮想装置により仮想化されるリソースを提供するエンドポイント装置に直接送信されてもよい。これは、データパケットを受信するエンドポイント装置が上記のように仮想化をサポートし、且つ修正されたデータパケットを適切に処理するように構成されることを必要とすることが理解されるであろう。例えば、受信側エンドポイント装置は、インターセプト装置３と同様にデータパケットを処理するように構成され、サーバ１により数え上げられる仮想階層の表現を提供されてもよい。代替的に、対応するインターセプト装置が、各エンドポイント装置とスイッチ２との間に提供されてもよい。代替的に、データパケットは、ネットワーク階層におけるエンドポイント装置の仮想化をサポートするために修正されたデータパケットを処理するように適合される装置（仮想化プロキシコントローラと呼ばれる場合がある）に送信されてもよい。このような仮想化プロキシコントローラ装置及びネットワークを通じた装置の仮想化を容易にするためのその利用は、米国特許出願第１２／４３０４８０号、米国特許公開第ＵＳ２００９／０３０７３８８号、米国特許公開第ＵＳ２０１１−００６９７１０号、及び米国特許公開第ＵＳ２０１０／０１４６１６０号に記載されている。
【００６６】
次に、インターセプト装置３により行われるデータパケットの修正の例が記載される。カプセル化無しの修正の例が図９を参照して記載されており、一方でカプセル化有りの修正の例が図１０及び１１を参照して記載される。
【００６７】
図９は、元のデータパケットにおいて指定されたアドレスが仮想装置に関連する場合に、インターセプト装置３により物理装置へのルーティングを可能にするために、カプセル化無しで修正されたメモリ書き込み又はメモリ読み取りデータパケットヘッダ４１を概略的に示す。一部のデータパケットはスイッチ２を超えて送信するためにカプセル化されるが、他のデータパケットはカプセル化する必要がないことが既に記載されている。
【００６８】
ヘッダ４１において、最上位１５ビット（ヘッダ４０においてアドレスフィールド４０ｃの一部を構成する）が修正されて、（アドレスフィールド４０ｃの一部を置換する）アドレスフィールドを生成している。アドレスフィールド４１ａは、８ビットのアドレスルーティングフィールド（ＡＦ）４１ｂ、１ビットのコントロールビットフィールド（ＣＦ）４１ｃ、６ビットの仮想機能（ＶＦ）フィールド４１ｄを含む。１ビットのサインフィールド（Ｓ）４１ｅは修正されず、修正前のアドレスフィールド４１ａの最初の最上位１５ビットの値を示す。
【００６９】
即ち、最上位１５ビットのみを修正することで、サーバが最大で４８ビットまでのアドレスを使用することが可能になる（それにより、最大でアドレス空間の２５６ＴＢまでアドレス指定する能力をサーバに提供する）。サーバ１が４８ビットのアドレスの使用を許可される場合、アドレスの最初の１６ビットは全て１又は全て０のいずれかであろう。従って、アドレスの最初の１５ビットのみを修正することにより、サインビットフィールド４１ｅは最初の１５ビットの元の（修正されていない）値を示し、その結果、元の修正されていないアドレスは以下に記載されるように復元されてもよい。しかしながら、図９に示されている修正されたアドレスの各フィールドに使用されるビットの数は単なる例示であり、必要に応じて各フィールドにより少ない又は追加のビットが提供されてもよいことが理解されるであろう。
【００７０】
アドレスルーティングフィールド４１ｂは、データパケットがルーティングされる物理装置のＡＦ値を保存する（呼び出されるものがＲＰＭ８により割り当てられる）。コントロールビットフィールド４１ｃは１ビットを保存し、その値はデータパケットがカプセル化データパケットであるかどうか、従って、宛先装置においてデータパケットがどのように処理されるべきであるかを示す。特に、コントロールビットフィールド４１ｃが値０を有する場合、これは、データパケットがカプセル化データパケットではないことを示し、逆もまた同様である。仮想機能フィールド４１ｄは、サーバ階層内の仮想機能を指定する。アドレスフィールド４１ａの残りの１６ビットは修正されない。リクエスタＩＤフィールド４１ｆは、ＲＰＭ８により数え上げるインターセプト装置３を示す（即ち、機能０、装置０、ＢＵＳ２）。
【００７１】
従って、修正されたヘッダ４１によって、サーバ数え上げ階層内のアドレスを含むデータパケットは、物理装置階層（即ち、ＲＰＭ数え上げ階層）内の所望の物理装置にルーティングされ得る。同様に、サーバ１は、エンドポイント装置からデータパケット（メモリ読み取りデータパケットに応答して完了データパケット等）を受信する。修正されたヘッダを含み且つサーバ１に送信されるデータパケットを受信すると、（物理装置を指定する）修正されたアドレスは、サーバ１により提供される元のアドレス値を復元されなければならない。元のアドレスは、修正された１５ビットをサインフィールド４１ｅの値（アドレスフィールド４１ａの１６番目のビット）と置換することにより復元される。即ち、サインフィールド４１ｅが０の値を有する場合、アドレスフィールド４１ａの６３から４９ビットが０に設定される。一方で、サインフィールド４１ｅが１の値を有する場合、アドレスフィールド４１ａの６３から４９ビットは１に設定される。
【００７２】
上記の記載は図９を参照して、非カプセル化されたパケットが図６のネットワーク階層においてどのようにルーティングされ得るかを記載している。次に、カプセル化を必要とするデータパケットがどのように処理されて図６の階層内をルーティングされるかの例が記載される。
【００７３】
図１０は、メモリ書き込みデータパケット内にカプセル化された元のデータパケットを含むデータパケット６０を概略的に示す。データパケット６０は、ヘッダ６１及びペイロード６２を含む。ペイロード６２は、（元のデータパケットのヘッダ及びペイロードを含む）メモリ書き込みデータパケット内にカプセル化された元のデータパケットである。例えば、元のデータパケットは、仮想エンドポイント装置１９から２１の１つに向けられるサーバ構成データパケットであってもよい。ヘッダ６１は、リクエスタＩＤフィールド６３及びタグフィールド６４を含む。ヘッダ６１は、アドレスルーティングフィールド６５、コントロールビットフィールド６６、及びコントロールデータフィールド６７を更に含む。
【００７４】
リクエスタＩＤは、カプセル化を行う装置を示す（例えば、インターセプト装置３）。アドレスルーティングフィールド６５及びコントロールビットフィールド６４は、図９を参照して既に記載された通りである。即ち、アドレスルーティングフィールド６３は、データパケット６０が送信される物理階層における装置を示す。コントロールビットフィールド６６は１の値に設定され、データパケット６０がカプセル化パケットであることを受信側装置に示す。コントロールデータフィールド６７は、標準的なＰＣＩｅデータパケットのアドレスフィールドを置換して、受信側装置によりデータパケット６０の処理を可能にするために必要とされる任意の追加の情報を提供する。コントロールデータフィールド６７に提供される情報の性質はアプリケーション特有であることが理解されるであろう。オプションのコントロールデータフィールド６８は、必要であれば追加のコントロールデータの提供に使用されてもよい。
【００７５】
図１１は、データパケット６０と同じフォーマットを有するデータパケット７０を示す。データパケット７０は、メモリ書き込みヘッダ７１及びペイロード７２を有する。しかしながら、データパケット７０において、ペイロード７２は、サーバ１に向けられた完了データパケットであり、例えば、データパケット６０（及び、特に、ペイロード６２）に応答して生成される。データパケット７０は、カプセル化データパケットを生成するように適切に構成されるエンドポイント装置からインターセプト装置３により受信されてもよい。インターセプト装置３でデータパケット７０を受信すると、インターセプト装置３は、ヘッダ７１を取り除いて、完了パケット７２をサーバ１に転送する。
【００７６】
仮想化プロキシコントローラ装置は一部の実施形態における仮想化を容易にすることを支援するために使用され得ることが既に記載されている。図１２は、図６のネットワークと実質的に同じ配置を有するネットワークを示す。しかしながら、図６のネットワークとは対照的に、ＲＰＭ８、（インターセプト装置３を介する）サーバ１及びエンドポイント９、１０はスイッチ２’’に接続されている。スイッチ２’’は、４つのダウンストリームブリッジ５’’，６’’，７’’及び８０が接続されている１つのアップストリームブリッジ４’’を備える。サーバ１はインターセプト装置３を介してダウンストリームブリッジ５’’に接続し、エンドポイント装置９、１０はそれぞれダウンストリームブリッジ６’’，７’’に接続し、本明細書で仮想化プロキシコントローラ（ＶＰＣ）と呼ばれる装置はダウンストリームブリッジ８０に接続している。
【００７７】
例示の目的で、ＲＰＭ８は以下のように図１２の物理ネットワーク階層を数え上げている。ＲＰＭ８をブリッジ４２’’と接続しているバスはＢＵＳ０である。ブリッジ４２’’はＢＵＳ０において装置０である。ブリッジ４’’をブリッジ５’’，６’’，７’’及び８０と接続しているバスはＢＵＳ１である。ブリッジ５’’はＢＵＳ１において装置０であり、ＡＦ＝１のＡＦ値を有する。ブリッジ６’’はＢＵＳ１において装置１であり、ＡＦ＝２のＡＦ値を有する。ブリッジ７’’はＢＵＳ１において装置２であり、ＡＦ＝３のＡＦ値を有する。ブリッジ８０はＢＵＳ１において装置３であり、ＡＦ＝４のＡＦ値を有する。ブリッジ５’’をインターセプト装置３と接続しているバスはＢＵＳ２である。インターセプト装置３はＢＵＳ２における装置０の機能０である。ブリッジ６’’をエンドポイント９と接続しているバスはＢＵＳ３である。エンドポイント９はＢＵＳ３における装置０の機能０であり、仮想装置にＨＥＤ１のＨＥＤ値を提供する。ブリッジ７’’をエンドポイント装置１０と接続しているバスはＢＵＳ４である。エンドポイント装置１０はＢＵＳ４における装置０の機能０であり、仮想装置にＨＥＤ２及びＨＥＤ３のＨＥＤ値を提供する。ブリッジ８０をＶＰＣ８１と接続しているバスはＢＵＳ５である。ＶＰＣ８１はＢＵＳ５における装置０の機能０である。
【００７８】
ＲＰＭ８は仮想階層をサーバ１に提示するようにインターセプト装置３を構成しており、それは図６に示される仮想階層のものと同じである。即ち、仮想エンドポイント装置１９はエンドポイント９に対応し、一方で仮想エンドポイント装置２０、２１はエンドポイント１０に対応する。
【００７９】
次に、サーバ１により発行され且つ受信されるトランザクションに属するデータパケットに行われる修正の例が図１２の配置及び図１３から１５を参照して記載される。明確のため、図１３から１５に概略的に示されたデータパケットでは、データパケットの一部のフィールドのみが示されている。
【００８０】
図１３はサーバ構成トランザクションを概略的に示す。サーバ１によりサーバ構成要求データパケット９０が生成される。データパケット９０はＢＵＳ１０における装置０の機能０のアップストリームのアドレスを示すリクエスタＩＤフィールドを含む（例えば、サーバ１により数え上げられるネットワーク階層におけるサーバ１）。データパケット９０は、仮想バスＢＵＳ１２における装置０の機能０を示す（データパケットが向けられる及び完了データパケットが予定される仮想装置を示す）コンプリータ識別子を更に含む。従って、コンプリータ識別子は、サーバ１によって数え上げられるネットワーク階層における仮想装置１９を示す。
【００８１】
データパケット９０は、インターセプト装置３により受信され、データパケットが向けられる仮想エンドポイント装置及び、この場合はエンドポイント装置９である対応する物理エンドポイント装置を決定するために上記のように処理される。インターセプト装置３は、データパケット９０がＶＰＣ８１に送信されるべきであると決定する。従って、インターセプト装置３はメモリ書き込みデータパケット９１内にデータパケット９０をカプセル化し、このデータパケット９０はデータパケット９１のペイロードを形成する。データパケット９１は、（ＲＰＭ８により数え上げられるインターセプト装置３を示す）ＢＵＳ２における装置０の機能０を示すリクエスタ識別子を有する。データパケット９１は、（ＶＰＣ８１を示す）“ＡＦ＝４”のＡＦ値を示すアドレスルーティングフィールド、１のコントロールフィールド値、及び仮想装置１９を示すＨＥＤ１のＨＥＤ値を含むコントロールデータフィールド（エンドポイント装置９により提供されるとＶＰＣ８１が分かる）を更に含む。
【００８２】
データパケット９１は、インターセプト装置３からスイッチ２を通じてＶＰＣ８１に送信される。データパケット９１を受信すると、ＶＰＣ８１は、データパケット９０を取得して、必要に応じてデータパケット９０を処理する。ＶＰＣ８１により行われる処理は、米国特許出願第１２／４３０４８０号、米国特許公開第ＵＳ２００９／０３０７３８８号、米国特許公開第ＵＳ２０１１−００６９７１０号、及び米国特許公開第ＵＳ２０１０／０１４６１６０号に記載されている。必要に応じてデータパケットが処理されると、ＶＰＣ８１は完了データパケット９２を生成する。完了データパケット９２は、バスＢＵＳ１２における装置０の機能０（即ち、サーバ１により数え上げられる仮想装置１９）を示すコンプリータ識別子及びバスＢＵＳ１０における装置０の機能０のアップストリームのアドレス（即ち、サーバ１により数え上げられるサーバ１）を示すリクエスタ識別子を含む。従って、サーバ１にとって、構成完了データパケット９２は、構成要求データパケット９０に応答して仮想装置１９により生成されたように見える。
【００８３】
構成要求９０と同様に、構成完了９２は、ダウンストリーム装置からスイッチにアップストリームに送信することができない。従って、ＶＰＣ８１は、メモリ書き込みデータパケット９３内でデータパケット９２をカプセル化する。データパケット９３は、バスＢＵＳ５における装置０の機能０を示す（即ち、ＲＰＭ８により数え上げられるＶＰＣ８１を示す）リクエスタ識別子を含み、“ＡＦ＝１”の値を有する（インターセプト装置３が接続されているブリッジ５’を示す）アドレスルーティングフィールド、値“１”を有する（それがカプセル化データパケットであることを示す）コントロールビットフィールド及び仮想エンドポイント装置１９を示すＨＥＤ１のＨＥＤ値を含むコントロールデータフィールドを含む。
【００８４】
インターセプト装置３でデータパケット９３を受信すると、インターセプト装置３は、メモリ書き込みヘッダを取り除いて、構成完了データパケットバ９２を取得する。次に、構成完了データパケット９２はサーバ１に送信される。
【００８５】
図１４は、サーバ１によって発行されるメモリ読み取りトランザクションデータパケット１００を概略的に示す。データパケット１００は、バスＢＵＳ１０における装置０の機能０のアップストリームのアドレスを示すリクエスタＩＤフィールドを含む（例えば、サーバ１により数え上げられるネットワーク階層におけるサーバ１）。データパケット１００は、サーバ１により見られるネットワークのメモリアドレス範囲内のメモリ場所を示すアドレスフィールドを更に含む。データパケット１００は、サーバ１からインターセプト装置３で受信され、データパケットが向けられた仮想エンドポイント装置及び仮想エンドポイント装置に対応する物理エンドポイント装置を決定するために上記のように処理される。
【００８６】
インターセプト装置３は、データパケット１００が処理のためＶＰＣ８１に送信されるべきであると決定する。データパケット１００はメモリ読み取り要求であるが（そのためスイッチ２’’を通じてアップストリームに送信できる）、データパケット１００のカプセル化が行われる。カプセル化は元のデータパケットのリクエスタ識別子をより簡単に追跡するために行われ、その結果元のリクエスタ識別子はサーバ１に送信されることを要求されるメモリ読み取り完了データパケットに含まれ得る。
【００８７】
従って、インターセプト装置３はメモリ書き込みデータパケット１０１内にデータパケット１００をカプセル化し、このデータパケット１００はデータパケット１０１のペイロードを形成する。データパケット１０１は、（ＲＰＭ８により数え上げられるインターセプト装置３を示す）ＢＵＳ２における装置０の機能０を示すリクエスタ識別子を有する。データパケット１０１は、（ＶＰＣ８１を示す）“ＡＦ＝４”のＡＦ値を示すアドレスルーティングフィールド、１のコントロールフィールド値、及び仮想エンドポイント装置９を示すＨＥＤ１のＨＥＤ値を含むコントロールデータフィールド（それによりＶＰＣ８１はデータパケット１０１を正確に処理するためにデータパケット１０１がどの仮想エンドポイント装置に関連するかが分かる）を更に含む。
【００８８】
データパケット１０１は、インターセプト装置３からスイッチ２’を通じてＶＰＣ８１に送信される。データパケット１０１を受信すると、ＶＰＣ８１は、任意の必要な処理を行って（メモリ読み取り要求データパケット１００において指定されるメモリ読み取り動作を行う等）、仮想装置１９から発生するように見えるメモリ読み取り完了データパケット１０２を生成する。メモリ読み取り完了データパケット１０２は、メモリ書き込みデータパケット１０３内にカプセル化される。データパケット１０３は、バスＢＵＳ５における装置０の機能０を示す（即ち、ＲＰＣ８１により数え上げられるＶＰＣ８１を示す）リクエスタ識別子を含み、“ＡＦ＝１”の値を有する（インターセプト装置３が接続されているブリッジ５’を示す）アドレスルーティングフィールド、値“１”を有する（それがカプセル化データパケットであることを示す）コントロールビットフィールド及びエンドポイント装置９を示すＨＥＤ１のＨＥＤ値を含むコントロールデータフィールドを含む。
【００８９】
インターセプト装置３でデータパケット１０３を受信すると、インターセプト装置３は、メモリ書き込みヘッダを取り除いて、メモリ読み取り完了データパケットバ１０２を取得する。次に、メモリ読み取り完了データパケット１０２はサーバ１に送信される。
【００９０】
サーバ１により発行され且つＶＰＣ８１に転送されるメモリ書き込みトランザクションの処理は、完了が必要とされない例外を有する図１４のメモリ読み取りトランザクションを参照して上記の通りに進む。
【００９１】
図１５は、エンドポイント装置９の代わりにＶＰＣ８１により発行されるメモリ読み取り要求トランザクションデータパケット１０５を示す。データパケット１０５は、ＢＵＳ３における装置０の機能０を示すリクエスタ識別子を有する（即ち、ＲＰＭ８により数え上げられるエンドポイント装置９）。データパケット１０５は、（インターセプト装置３が接続されているブリッジ５’を示す）値ＡＦ＝１を有するアドレスルーティングフィールド、データパケット１０５がカプセル化されていないことを示す“０”のコントロールフィールド値、及びリクエスタ識別子で示された物理機能にマッピングされる（サーバ１により数え上げられる）仮想階層内の仮想機能を示す仮想機能フィールドを更に含む。図１５の例では、仮想機能は機能０である。実際、図１５の例では、仮想機能は、図６の配置における単一の仮想機能のみと共に仮想装置１９から２１の各々が確立されているので機能０のみであり得る。しかしながら、多数の仮想機能が仮想階層内の単一の仮想エンドポイント装置に対して構成されること、仮想機能フィールドは他の値を取り得ることが理解されるであろう。
【００９２】
データパケット１０５は、ＶＰＣ８１によりデータパケット１０５が生成されるという指示を含むタグフィールドを更に含む。データパケット１０５は、（サーバ１に転送する前にアドレスルーティングフィールド、コントロールフィールド及び仮想機能フィールドがインターセプト装置により設定される値を示す）サインビットフィールドを更に含む。データパケット１０５は、サーバ１のメモリ内のメモリ場所を示すアドレスを更に含む。
【００９３】
データパケット１０５は、ＶＰＣ８１からインターセプト装置３に送信される。受信すると、インターセプト装置は、データパケット１０５を修正して、上記のようにサインビットフィールドの値を使用して修正されたアドレスビットを復元して、（この場合、仮想装置１９である）物理エンドポイント装置９に対応する仮想装置に対するリクエスタ識別子を識別するためのリクエスタ識別子フィールドを修正することによりデータパケット１０６を生成する。従って、データパケット１０６は、バスＢＵＳ１２における装置０の機能０を示すリクエスタ識別子フィールドを含む。また、データパケット１０６はＶＰＣ８１を示すタグ値も含む。データパケット１０６のタグ値（即ち、ＶＰＣ８１を参照するためにインターセプト装置により使用されるタグ値）は、インターセプト装置３が２つのタグ値の間でマッピングを維持するとすれば、データパケット１０５のタグ値（即ち、それ自身を参照するためにＶＰＣ８１により使用されるタグ値）と同じでなくてもよい。これは、図１５において値“ＶＰＣ−ｉｄ”を有するデータパケット１０６のタグ値により示される。これは、ＶＰＣ８１及びインターセプト装置３がＶＰＣ８１を示す識別子に対してタグフィールドの異なるビットを利用する場合に有益であってもよい。
【００９４】
データパケット１０６は、インターセプト装置３からサーバ１に送信される。サーバ１は、通常のやり方でデータパケット１０６を処理して、完了データパケット１０７を生成する。データパケット１０７は、バスＢＵＳ１０における装置０の機能０のアップストリームのアドレス（例えば、サーバ１）を示すコンプリータ識別子、及びバスＢＵＳ１２における装置０の機能０（例えば、サーバ１により数え上げられる仮想装置１９）を示すリクエスタ識別子を含む。完了データパケット１０７は、データパケット１０６と同じタグフィールドを更に含む。
【００９５】
完了データパケット１０７は、サーバ１から送信されて、データパケット１０７を修正して完了データパケット１０８を生成するインターセプト装置３により受信される。完了データパケット１０８は、ＲＰＭ８により数え上げられるインターセプト装置３（即ち、バスＢＵＳ２における装置０の機能０）を示すコンプリータ識別子及び（エンドポイント装置９ではなく）ＶＰＣ８１を示すリクエスタ識別子を含む。インターセプト装置３及びＶＰＣ８１により使用されるタグ値が異なる場合、上記のように、インターセプト装置は、データパケット１０５においてＶＰＣ８１により使用されるものとデータパケット１０７のタグ値を置換する。データパケット１０８は、インターセプト装置３からサーバ８１に送信される。
【００９６】
エンドポイント装置９、１０により発行されるメモリ読み取り又はメモリ書き込みトランザクションは、タグフィールドが発行側エンドポイント装置を示すことを除いてＶＰＣ８１により発行されるものに関して上記と同じやり方で進む。
【００９７】
サーバとエンドポイント装置との間のバルクデータ転送は、ＰＣＩｅネットワーク上でデータトラフィックの大半を形成する。一旦データ転送が構成されると、データ転送はサーバとエンドポイント装置との間で直接ルーティングされ、カプセル化を必要としない。次に図１２の配置及び図１６及び１７を参照して例示のデータ転送が記載される。概略的に、図１６を参照して、サーバからエンドポイント装置へのデータ転送（即ち、サーバメモリからエンドポイント装置へのデータ書き込み）を行うために、サーバはサーバのメモリ内の場所に含むコマンドブロック１１０を生成する。コマンドブロック１１０は、記述子１１１ａ、１１１ｂ等を含む「記述子リング」１１１のアドレス（Ａｃ）を含む。記述子リング１１１における各記述子１１１ａ、１１１ｂは、エンドポイント装置に転送されるデータが保存されるサーバのメモリ内の各データバッファ１１２ａ、１１２ｂの個別アドレス（Ａｄ）を含む。
【００９８】
図１７は、サーバ１及びエンドポイント装置９からのデータ転送を実行するために図１２の配置における装置により実行される処理を示すフローチャートである。
【００９９】
ステップＳ５０において、サーバ１は、（図１６に示したものと同様の）コマンドブロックを生成して、メモリ書き込みデータパケットを発行する。上記のように、メモリ書き込みデータパケットは、コマンドブロックのＡｃアドレスを含むアドレスフィールドを含む。サーバ１は、メモリ書き込みデータパケットを送信する。処理はステップＳ５０からステップＳ５１に移り、メモリ書き込みデータパケットはインターセプト装置３で受信される。ステップＳ５２において、図１４を参照して先に記載されたように、インターセプト装置はデータパケットがアドレス指定される仮想エンドポイント装置（仮想エンドポイント装置１９）を決定し、対応する物理エンドポイント装置（エンドポイント装置１９）を決定し、ＶＰＣ８１に送信するためのメモリ書き込みデータパケット内にメモリ書き込みデータパケットをカプセル化する。カプセル化メモリ書き込みデータパケットは、インターセプト装置３を示すリクエスタ識別子（即ち、バスＢＵＳ２における装置０の機能０）、“ＡＦ＝４”の値を有するアドレスルーティングフィールド、“１”の値を有するコントロールフィールド及びＨＥＤ値“ＨＥＤ１”を含むコントロールデータを含む。カプセル化データパケットはＶＰＣ８１に送信される。
【０１００】
処理はＳ５２からＳ５３に移って、ＶＰＣ８１はカプセル化パケットを受信する。ステップＳ５４において、ＶＰＣ８１はカプセル化パケットを処理する。特に、ＶＰＣ８１は、コントロールフィールドが“１”の値を有することを決定し、サーバ１により発行された元のメモリ書き込みパケットを抽出する。ステップＳ５５において、ＶＰＣ８１は、対応するメモリ読み取りデータパケットを生成することにより元のメモリ書き込みデータパケットにおいてアドレス指定された記述子を読む準備をする。メモリ読み取りデータパケットは図１５に示された通りである。特に、ステップＳ５５で生成されたメモリ読み取りデータパケットは、エンドポイント装置９（バスＢＵＳ３における装置０の機能０）を示すリクエスタ識別子、及びステップＳ５０でサーバにより発行されたメモリ書き込みデータパケット内に含まれる６４ビットＡｃアドレスの最下位４９ビットを含むアドレスフィールドを含む。最下位４９番目のビットはサインビットフィールドを含むことが理解されるであろう。最上位１６ビットは上記のように修正される。特に、アドレスルーティングフィールドはインターセプト装置３（ＡＦ＝１）を示し、コントロールフィールドは“０”の値を有し、仮想機能フィールドは“０”の値を有する。タグフィールドはＶＰＣ８１を示す。ステップＳ５６において、メモリ読み取り要求データパケットが送信される。
【０１０１】
ステップＳ５７において、ＶＰＣ８１はメモリ読み取り要求に応答してインターセプト装置から完了データパケットを受信する。完了データパケットは、コマンドブロックによりアドレス指定される記述子の値（即ち、（複数の）Ａｄアドレス）を含む。ステップＳ５８において、ＶＰＣ８１は、“ＡＦ＝４”（即ち、ＶＰＣ８１）を示すアドレスルーティングフィールド、（カプセル化データパケットではないことを示す）“０”の値を有するコントロールフィールド及び（サーバ１が相互作用していると信じる仮想機能を示す）“０”の仮想機能フィールドを含むようにＡｃアドレスが修正される修正コマンドブロックを生成する。Ａｄアドレスも同様に修正されるが、“ＡＦ＝１”（即ち、インターセプト装置３）を示すアドレスルーティングフィールドを有する。次に、ＶＰＣ８１は、メモリ書き込みトランザクションを使用してエンドポイント装置９内のメモリ場所にコマンドブロックを書き込む。
【０１０２】
ステップＳ５９において、エンドポイント装置９は、メモリ読み取りトランザクション（“ＡＦ４”の値を有する修正Ａｃアドレスを含むデータパケット）を使用してＶＰＣ８１から修正記述子を読み取り、ＶＰＣ８１からメモリ読み取り完了を受信する。ステップＳ６０において、エンドポイント装置９は、アドレスフィールドが“ＡＦ＝１”のアドレスルーティング値を有する修正Ａｄアドレスを含む（複数の）メモリ読み取りデータパケットを使用してＶＰＣ８１から取得した記述子によりアドレス指定されたデータをフェッチする。ステップＳ６１において、インターセプト装置は、メモリ読み取りデータパケットを受信し、上記のサインビットを使用して修正Ａｄアドレスを復元し、メモリ読み取りデータパケットをサーバ１に送信する。ステップＳ６２において、サーバは、上記の完了パケットを使用してエンドポイント装置にデータを送信する。明確性及び簡潔性のため、データを含む完了転送は本明細書では詳細に記載されないが、図１５を参照して上記のように進む（しかしエンドポイント装置９を示すタグフィールドを有する）。
【０１０３】
ステップＳ６３において、データはエンドポイント装置９で受信される。最終データバッファがサーバ１からエンドポイント装置９に転送された場合、ステップＳ６４において、エンドポイント装置９は転送が完了したことをＶＰＣ８１に示す。例えば、エンドポイント装置９の実装次第では、データはＶＰＣ８１において指定されたアドレスに書き込まれてもよく、又は記述子はＶＰＣ８１に戻されてもよい。ステップＳ６５において、ＶＰＣ８１は、例えば、（上記のように修正されたＭＷｒを使用して）サーバ１のメモリにおけるリターンポインタを返すことにより、又は代替的に、必要とされるプロトコルに従って（復元されたＡｄアドレスを有する）記述子を返すことにより、データ転送が完了したことをサーバ１に通知する。
【０１０４】
先の記載から、実施形態は、スイッチのダウンストリームポートにそれぞれ接続されている装置（サーバ、エンドポイント装置（例えば、Ｉ／Ｏエンドポイント装置）及び仮想化プロキシコントローラ等）間で標準のスイッチ（即ち、アップストリームにコントロールデータパケットの送信を明示的に許可するように修正されていないスイッチ）を通じてデータパケットがルーティングされることを可能にすることが見て取れる。
【０１０５】
上記の例示では単一のスイッチのみが記載されているが、本明細書の教示から複数のスイッチが接続され得ることが容易に明らかであろう。例えば、図１の配置では、更なるスイッチがスイッチ２の更なるダウンストリームポート（図示せず）に接続されてもよい。この場合、ＲＰＭ８で動作するソフトウェアは、図５を参照して記載されたように更なるスイッチの物理ブリッジ及び更なるスイッチに接続された装置を数え上げるであろう。
【０１０６】
先の記載は、サーバとＩ／Ｏエンドポイント装置又は仮想化プロキシコントローラ等のエンドポイント装置との間でデータパケットが送信される実施形態を記載している。サーバという用語は、広範囲に意図されており、任意のコンピュータ装置を含むことが意図されていることが理解されるであろう。同様に、仮想化プロキシコントローラという用語は、本明細書に記載の及び／又は米国特許出願第１２／４３０４８０号、米国特許公開第ＵＳ２００９／０３０７３８８号、米国特許公開第ＵＳ２０１１−００６９７１０号、及び米国特許公開第ＵＳ２０１０／０１４６１６０号の何れか１つに記載の処理を実行するために適切な任意の装置を広く含むことが意図されている。他の場所にも記載されたように、インターセプト装置及び仮想化プロキシコントローラは共に、例えば、適切にプログラムされたＦＰＧＡ又はＡＳＩＣ等、任意の好都合なやり方で実装されてもよい。
【０１０７】
（結論）
結論として、次に多くの可能な態様が記載される。
【０１０８】
第１の態様によれば、第１の装置からスイッチを通じて第２の装置にデータパケットを送信するための方法が提供される。方法は、第１の装置とスイッチ装置との間に介在するインターセプト装置において、第１の装置から第１のデータパケットを受信するステップと、第１のデータパケットが第２の装置に送信されることを決定するステップと、第１のデータパケットがインターセプト装置からスイッチを通じて第２の装置に送信できない第１のタイプであるかどうかを決定するステップとを含む。第１のデータパケットが第１のタイプであると決定される場合、方法は、第２のデータパケット内に第１のデータパケットをカプセル化するステップであって、第２のデータパケットはインターセプト装置からスイッチを通じて第２の装置に送信できる第２のタイプであるステップと、スイッチを通じて第２の装置に第２のデータパケットを送信するステップとを含む。第１のデータパケットが第１のタイプではないと決定される場合、方法は、スイッチを通じて第２の装置に第１のデータパケットを送信するステップを含む。
【０１０９】
このようにして、第１の態様は、データパケットが第１の装置又はインターセプト装置からスイッチを通じて通常は送信され得ないタイプであっても、データパケットが第１の装置から第２の装置に送信されることを可能にする。例えば、スイッチがＰＣＩｅスイッチであり、（インターセプト装置を介する）第１の装置がダウンストリームポートでイスイッチに接続されている場合、一部のデータパケットは、第１の装置（又はインターセプト装置）からダウンストリームポートを通じて（即ち、スイッチを通じてアップストリームに）送信できない。第１の態様はこの問題を克服する。
【０１１０】
スイッチはＰＣＩｅスイッチであってもよい。第１のタイプは構成トランザクションであってもよい。第２のタイプのタイプはデータトランザクションであってもよい。
【０１１１】
第１のデータパケットはアドレスフィールドを含んでもよい。アドレスフィールドは第１の仮想装置の指示を含んでもよい。
【０１１２】
第１のデータパケットが第２の装置に送信されることを決定することは、第２の装置が第１の仮想装置に関係付けられることを決定することを含んでもよい。
【０１１３】
第２の装置は、第１の装置にとって第１の仮想装置により提供されるように見えるリソースを提供してもよい。
【０１１４】
第２の装置は、第４の装置に代わって第１又は第２のデータパケットを受信するプロキシ装置であってもよく、第４の装置は第１の装置にとって第１の仮想装置により提供されるように見えるリソースを提供する。
【０１１５】
方法は、インターセプト装置において、スイッチから第３のデータパケットを受信するステップと、第３のデータパケットがカプセル化データパケットであるかどうかを決定するステップとを更に含んでもよい。第３のデータパケットがカプセル化データパケットであると決定される場合、方法は、第４のデータパケットを取得するために第３のデータパケットを非カプセル化するステップと、第４のデータパケットを第１の装置に送信するステップとを更に含んでもよい。第３のデータパケットがカプセル化データパケットではないと決定される場合、方法は、第３のデータパケットを第１の装置に送信するステップを更に含んでもよい。
【０１１６】
第３のデータパケットは、第２のタイプであってもよい。第４のデータパケットは、第１のタイプであってもよい。
【０１１７】
方法は、インターセプト装置において、第１の仮想エンドポイント装置を含む仮想装置階層を示すデータを受信するステップを更に含んでもよく、第１の仮想エンドポイント装置に向けられる少なくとも一部のデータパケットは第２の装置に送信される。
【０１１８】
方法は、インターセプト装置において、第１の装置から数え上げデータパケットを受信するステップと、仮想装置階層を示すデータに基づいて数え上げデータパケットに応答するステップとを更に含んでもよい。
【０１１９】
仮想装置階層を示すデータは、物理装置階層を示すデータを含んでもよい。物理装置階層は、第１の装置にとって少なくとも１つの仮想装置により提供されるように見えるリソースを提供する少なくとも１つの物理装置を含んでもよい。
【０１２０】
方法は、インターセプト装置において、少なくとも１つの仮想装置を少なくとも１つの物理装置と関係付けるデータを記憶するステップを更に含んでもよい。
【０１２１】
第１のデータパケットが第１のタイプではないと決定される場合、方法は、第１のデータパケットがスイッチを通じて第２の装置に送信される前に、第１のデータパケットのアドレスフィールドを修正するステップを更に含んでもよい。アドレスフィールドは、第１の部分及び第２の部分を含んでもよい。第１の部分におけるビットは仮想エンドポイント装置を示し、第２の部分におけるビットはそれぞれ同じ値を有する。アドレスフィールドを修正することは、第２の部分における少なくとも１つの既定のビットを未修正のままにしながら、仮想エンドポイント装置に関係付けられる物理装置を示すように第２の部分における一部のビットを修正することを含んでもよい。
【０１２２】
このようにして、第２の部分において修正されたビットは、少なくとも１つの未修正のビットに基づいて容易に且つ効果的に復元されてもよい。
【０１２３】
仮想装置階層を示すデータを受信することは、スイッチのアップストリームポートに接続されている第５の装置からデータを受信することを含んでもよい。
【０１２４】
第１の装置及び第２の装置は、スイッチの各ダウンストリームポートに接続されてもよい。
【０１２５】
第２の態様によれば、第１の装置及びスイッチの間に介在するインターセプト装置において、スイッチから第１のデータパケットを受信するステップを含むデータパケットを送信する方法が提供され、第１のデータパケットは第２の装置において発生して第１のデータパケットがカプセル化データパケットであるかどうかを決定する。第１のデータパケットがカプセル化データパケットであると決定される場合、方法は、第２のデータパケットを取得するために第１のデータパケットを非カプセル化するステップと、第２のデータパケットを第１の装置に送信するステップとを含んでもよい。第１のデータパケットがカプセル化データパケットではないと決定される場合、方法は、第１のデータパケットを第１の装置に送信するステップを含んでもよい。
【０１２６】
方法は、インターセプト装置において、第１の装置から第３のデータパケットを受信するステップと、第３のデータパケットが第２の装置に送信されることを決定するステップと、第３のデータパケットがインターセプト装置からスイッチを通じて第２の装置に送信できない第１のタイプであるかどうかを決定するステップとを含む。第３のデータパケットが第１のタイプであると決定される場合、方法は、第４のデータパケット内に第３のデータパケットをカプセル化するステップであって、第４のデータパケットはインターセプト装置からスイッチを通じて第２の装置に送信できる第２のタイプであるステップと、スイッチを通じて第２の装置に第４のデータパケットを送信するステップとを含んでもよい。第３のデータパケットが第１のタイプではないと決定される場合、方法は、スイッチを通じて第２の装置に第３のデータパケットを送信するステップを含んでもよい。
【０１２７】
第３の態様によれば、第２の装置から第１の装置にスイッチを通じてデータパケットを送信する方法であって、第２の装置において、スイッチを通じて第１の装置に送信するための第１のデータパケットを生成するステップと、第１のデータパケットが第２の装置からスイッチを通じて第１の装置に送信できない第１のタイプであると決定するステップと、第２のデータパケット内に第１のデータパケットをカプセル化するステップであって、第２のデータパケットは第２の装置からスイッチを通じて第１の装置に送信され得る第２のタイプであるステップとを含む方法が提供される。
【０１２８】
スイッチはＰＣＩｅスイッチであってもよい。第１のタイプは構成トランザクションタイプであってもよく、第２のタイプはデータトランザクションタイプであってもよい。
【０１２９】
第１の装置及び第２の装置は、スイッチの各ダウンストリームポートに接続されてもよい。
【０１３０】
第４の態様によれば、第１の装置とスイッチとの間の接続のための装置であって、データパケットを受信するための受信機と、データパケットを送信するための送信機と、コンピュータ可読命令を記憶するためのメモリと、コンピュータ可読命令を実行するためのプロセッサとを備える装置が提供される。コンピュータ可読命令は、第１の装置から第１のデータパケットを受信すること、第１のデータパケットが第２の装置に送信されることを決定すること、及び第１のデータパケットが装置からスイッチを通じて第２の装置に送信できない第１のタイプであるかどうかを決定することを装置に行わせるように構成される。コンピュータ可読命令は、第１のデータパケットが第１のタイプであると決定される場合、第２のデータパケット内に第１のデータパケットをカプセル化することであって、第２のデータパケットは装置からスイッチを通じて第２の装置に送信できる第２のタイプであること、及びスイッチを通じて第２の装置に第２のデータパケットを送信することを行うように更に構成される。第１のデータパケットが第１のタイプではないと決定される場合、スイッチを通じて第２の装置に第１のデータパケットを送信する。
【０１３１】
第５の態様によれば、第１の装置とスイッチとの間の接続のための装置であって、データパケットを受信するための受信機と、データパケットを送信するための送信機と、コンピュータ可読命令を記憶するためのメモリと、コンピュータ可読命令を実行するためのプロセッサとを備える装置が提供される。コンピュータ可読命令は、スイッチから第１のデータパケットを受信すること、第１のデータパケットがカプセル化データパケットであるかどうかを決定すること、第１のデータパケットがカプセル化データパケットであると決定される場合、第２のデータパケットを取得するために第１のデータパケットを非カプセル化すること、第２のデータパケットを第１の装置に送信すること、一方で第１のデータパケットがカプセル化データパケットではないと決定される場合、第１のデータパケットを第１の装置に送信することを装置に行わせるように構成される。
【０１３２】
第６の態様によれば、データパケットを送信するための送信機と、コンピュータ可読命令を記憶するためのメモリと、コンピュータ可読命令を実行するためのプロセッサとを備えるプロキシ装置が提供される。コンピュータ可読命令は、スイッチを通じて第１の装置に送信するための第１のデータパケットを生成すること、第１のデータパケットがスイッチを通じて第１の装置に送信できない第１のタイプであると決定すること、第２のデータパケット内に第１のデータパケットをカプセル化することであって、第２のデータパケットはスイッチを通じて第１の装置に送信され得る第２のタイプであること、及び第１の装置にスイッチを通じて第２のデータパケットを送信することをプロキシ装置に行わせるように構成される。
【０１３３】
第７の態様によれば、第１のデータパケットを生成するように構成される第１の装置と、スイッチと、スイッチに接続される第２の装置と、第１の装置とスイッチとの間に介在するインターセプト装置とを備えるシステムが提供され、インターセプト装置は第１の装置から第１のデータパケットを受信し、第１のデータパケットが第２の装置に送信されることを決定し、且つ第１のデータパケットがインターセプト装置からスイッチを通じて第２の装置に送信できない第１のタイプであるかどうかを決定するように構成される。インターセプト装置は、第１のデータパケットが第１のタイプであると決定される場合、第２のデータパケット内に第１のデータパケットをカプセル化することであって、第２のデータパケットはインターセプト装置からスイッチを通じて第２の装置に送信できる第２のタイプであること、及びスイッチを通じて第２の装置に第２のデータパケットを送信すること、一方で第１のデータパケットが第１のタイプではないと決定される場合、スイッチを通じて第２の装置に第１のデータパケットを送信することを行うように構成される。
【０１３４】
スイッチはＰＣＩｅスイッチであってもよい。第１のタイプは構成トランザクションタイプであってもよく、第２のタイプはデータトランザクションタイプであってもよい。
【０１３５】
システムは、スイッチに接続される第４の装置を更に含んでもよい。第２の装置は、第４の装置に代わって第１又は第２のデータパケットを受信するように構成されるプロキシ装置であってもよく、第４の装置は第１の装置にとって仮想装置により提供されるように見えるリソースを提供するように構成される。
【０１３６】
第８の態様によれば、スイッチとインターセプト装置を介してスイッチの第１のダウンストリームポートに接続される第１の装置と、スイッチの第２のダウンストリームポートに接続される第２の装置とを備えるシステムが提供され、第１の装置はスイッチを通じて第２の装置に送信されるデータパケットを生成するように構成される。
【０１３７】
インターセプト装置は、第１の装置から第１のデータパケットを受信し、第１のデータパケットが第２の装置に送信されることを決定し、第１のデータパケットがインターセプト装置からスイッチを通じて第２の装置に送信できない第１のタイプであるかどうかを決定するように構成されてもよい。また、インターセプト装置は、第１のデータパケットが第１のタイプであると決定される場合、第２のデータパケット内に第１のデータパケットをカプセル化することであって、第２のデータパケットはインターセプト装置からスイッチを通じて第２の装置に送信できる第２のタイプであること、及びスイッチを通じて第２の装置に第２のデータパケットを送信すること、一方で第１のデータパケットが第１のタイプではないと決定される場合、スイッチを通じて第２の装置に第１のデータパケットを送信することを行うように構成されてもよい。
【０１３８】
第９の態様によれば、ネットワークにおける仮想装置に識別子を提供する方法であって、数え上げデータパケットを受信するステップと、第１の仮想エンドポイント装置の識別子を含む応答により数え上げデータパケットに応答するステップと、更なる数え上げデータパケットを受信するステップと、第２の仮想エンドポイント装置の識別子を含む応答により更なる数え上げデータパケットに応答するステップとを含む方法が提供され、第１の仮想エンドポイント装置及び第２のエンドポイント仮想装置の機能は単一の物理エンドポイント装置により提供される。
【０１３９】
このようにして、第９の態様は、複数の仮想装置が数え上げ装置に提供され、複数の仮想装置の機能は単一の物理装置により提供されることを有利に可能にする。
【０１４０】
方法は、第１及び第２の仮想エンドポイント装置を含む仮想装置階層を示すデータ及び第１の又は第２の仮想エンドポイント装置に向けられるデータパケットが単一の物理エンドポイント装置に送信されることの指示を受信するステップを更に含んでもよい。
【０１４１】
態様は、適切なハードウェア及び／又はソフトウェアによることを含む任意の従来のやり方で実装され得ることが理解されるであろう。例えば、実施形態を実装するように配置される装置は、適切なハードウェアコンポーネントを使用して作られてもよい。代替的に、プログラム可能装置が実施形態を実装するようにプログラムされてもよい。従って、本発明は、態様を実装するための適切なコンピュータプログラムも提供する。このようなコンピュータプログラムは、有形の伝送媒体（例えば、ハードディスク、ＣＤ−ＲＯＭ等）及び通信信号等の無形の伝送媒体を含む適切な伝送媒体で実行され得る。
【０１４２】
本明細書に記載の１つ以上の態様は、本明細書に記載の任意の１つ以上の他の態様と及び／又は本明細書に記載の任意の１つ以上の特徴と組み合わされてもよい。
【０１４３】
添付の請求項の範囲から逸脱することなく、本明細書の教示により当業者には本発明の更なる修正及び応用が容易に明らかであろう。
【図１】
0006408567.tif 000002
【図２ａ】
0006408567.tif 000003
【図２ｂ】
0006408567.tif 000004
【図３ａ】
0006408567.tif 000005
【図３ｂ】
0006408567.tif 000006
【図４】
0006408567.tif 000007
【図５】
0006408567.tif 000008
【図６】
0006408567.tif 000009
【図７】
0006408567.tif 000010
【図８】
0006408567.tif 000011
【図９】
0006408567.tif 000012
【図１０】
0006408567.tif 000013
【図１１】
0006408567.tif 000014
【図１２】
0006408567.tif 000015
【図１３】
0006408567.tif 000016
【図１４】
0006408567.tif 000017
【図１５】
0006408567.tif 000018
【図１６】
0006408567.tif 000019
【図１７】
0006408567.tif 000020