(57)【特許請求の範囲】
【請求項１】
プロセッサとデバイスとを有する情報処理装置内で、前記プロセッサと前記デバイスとの間を接続するネットワークを他のスイッチと形成するスイッチにおいて、
前記プロセッサがデバイスの識別に使用する第１識別子と、前記第１識別子に割与えられた論理アドレスの範囲とを対応付けた第１記憶部と、
前記第１識別子と、前記ネットワークで前記デバイスの識別に共通して使用される第２識別子とを対応付けて記憶する第２記憶部と、
前記他のスイッチからアクセス要求を受信した場合に、当該アクセス要求に前記第２識別子が付加されているか否かを判定する判定部と、
前記プロセッサからアクセス要求を受信した場合に、または、前記判定部が前記アクセス要求に前記第２識別子が付加されていないと判定した場合に、当該アクセス要求に含まれる論理アドレスに対応する前記第１識別子を前記第１記憶部から特定し、特定された前記第１識別子に対応する前記第２識別子を前記第２記憶部から特定する特定部と、
前記特定部によって特定された第２識別子を前記アクセス要求に付加して拡張アクセス要求を生成し、前記特定部によって特定された前記第１識別子に対応する前記デバイスに、当該拡張アクセス要求を送信する送信制御部と
を有することを特徴とするスイッチ。
【請求項２】
前記送信制御部は、前記拡張アクセス要求の宛先が前記他のスイッチである場合に、当該拡張アクセス要求をそのまま送信し、前記拡張アクセス要求の宛先がデバイスである場合に、当該拡張アクセス要求から前記第２識別子を削除して送信することを特徴とする請求項１に記載のスイッチ。
【請求項３】
前記特定部は、前記判定部が前記アクセス要求に前記第２識別子が付加されていると判定した場合に、当該アクセス要求を前記拡張アクセス要求と判定し、当該拡張アクセス要求に含まれる前記第２識別子を抽出し、前記第２識別子とポート番号とを対応付けて記憶する第３記憶部を参照して、抽出した前記第２識別子に対応するポート番号を特定し、
前記送信制御部は、前記特定部によって特定された前記ポート番号に対応するポートから、当該拡張アクセス要求を送信することを特徴とする請求項１に記載のスイッチ。
【請求項４】
前記スイッチを管理する管理サーバから、前記第１記憶部または前記第２記憶部に記憶される情報を変更する指示を受信した場合に、前記第１記憶部または前記第２記憶部に記憶される情報を指示された内容に変更する変更制御部をさらに有することを特徴とする請求項１に記載のスイッチ。
【請求項５】
前記第１記憶部は、ＰＣＩＥｘｐｒｅｓｓを用いて前記デバイスにアクセスするプロセッサが使用する第１識別子と、前記論理アドレスの範囲とを対応付けて記憶し、
前記送信制御部は、前記プロセッサが前記ＰＣＩＥｘｐｒｅｓｓを用いて送信したアクセス要求における前記ＰＣＩＥｘｐｒｅｓｓのＴＬＰプレフィックス領域に、前記特定部によって特定された第２識別子を記載して前記拡張アクセス要求を生成することを特徴とする請求項１に記載のスイッチ。
【請求項６】
プロセッサと、
前記プロセッサとデバイスとの間を接続する複数の内部スイッチと、
前記プロセッサがデバイスの識別に使用する第１識別子と、前記第１識別子に割与えられた論理アドレスの範囲とを対応付けた第１記憶部と、
前記第１識別子と、前記複数の内部スイッチが形成するネットワークで前記デバイスの識別に共通して使用される第２識別子とを対応付けて記憶する第２記憶部と、
前記内部スイッチからアクセス要求を受信した場合に、当該アクセス要求に前記第２識別子が付加されているか否かを判定する判定部と、
前記プロセッサからアクセス要求を受信した場合に、または、前記判定部が前記アクセス要求に前記第２識別子が付加されていないと判定した場合に、当該アクセス要求に含まれる論理アドレスに対応する前記第１識別子を前記第１記憶部から特定し、特定された前記第１識別子に対応する前記第２識別子を前記第２記憶部から特定する特定部と、
前記特定部によって特定された第２識別子を前記アクセス要求に付加して拡張アクセス要求を生成し、前記特定部によって特定された前記第１識別子に対応する前記デバイスに、当該拡張アクセス要求を送信する送信制御部と
を有することを特徴とする情報処理装置。
【請求項７】
プロセッサとデバイスとを有する情報処理装置内で、前記プロセッサと前記デバイスとの間を接続するネットワークを他のスイッチと形成するスイッチが、
前記プロセッサがデバイスの識別に使用する第１識別子と、前記第１識別子に割与えられた論理アドレスの範囲とを対応付けを第１記憶部に記憶し、
前記第１識別子と、前記ネットワークで前記デバイスの識別に共通して使用される第２識別子とを対応付けを記憶する第２記憶部に記憶し、
前記他のスイッチからアクセス要求を受信した場合に、当該アクセス要求に前記第２識別子が付加されているか否かを判定し、
前記プロセッサからアクセス要求を受信した場合に、または、前記アクセス要求に前記第２識別子が付加されていないと判定した場合に、当該アクセス要求に含まれる論理アドレスに対応する前記第１識別子を前記第１記憶部から特定し、特定された前記第１識別子に対応する前記第２識別子を前記第２記憶部から特定し、
特定した第２識別子を前記アクセス要求に付加して拡張アクセス要求を生成し、特定された前記第１識別子に対応する前記デバイスに、当該拡張アクセス要求を送信する
処理を実行することを特徴とする通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スイッチ、情報処理装置および通信制御方法に関する。
【背景技術】
【０００２】
コンピュータの高性能化等に伴って入出力の高性能化に対する需要も増大し、ＰＣＩ（Peripheral  Component  Interconnect）に代わって、ＰＣＩＥｘｐｒｅｓｓ（以下、「ＰＣＩｅ」と記載する場合がある）などの高速な入出力インタフェースが利用されている。
【０００３】
ＰＣＩやＰＣＩｅは、コンピュータ内部でＣＰＵ（Central  Processing  Unit）と入出力デバイスを接続する規格である。ＰＣＩは、ＣＰＵと入出力デバイスとをバス構造で直接接続する。ＰＣＩｅは、ＰＣＩとは異なり、ＣＰＵと入出力デバイスとの間にＰＣＩｅスイッチを設けたスター構造で、ＣＰＵと入出力デバイスとを接続する。すなわち、ＣＰＵと入出力デバイスは１対１で接続され、分岐を行う場合にはＰＣＩｅスイッチを介して分岐する。
【０００４】
このようなＰＣＩｅスイッチは、内部に仮想的なバスを設定し、ＣＰＵと各入出力デバイスとを仮想的なバスで接続するような論理イメージを提供する。これにより、ＣＰＵは、構成の違いを意識することなく、ＰＣＩとＰＣＩｅを同様に扱うことができる。
【０００５】
近年では、ＰＣＩｅを用いたコンピュータに接続する入出力デバイスを増やす手法として、ＰＣＩｅスイッチにＰＣＩｅスイッチを接続する多段構成も利用されている。つまり、ＰＣＩｅスイッチの下にＰＣＩｅスイッチを接続し、ＰＣＩｅスイッチを階層構造で複数接続することで、１つのＣＰＵに接続される入出力デバイスの数を増やすことができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−７９８１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ＰＣＩｅスイッチを複数接続する際、ＰＣＩｅスイッチの接続方法に制限が生じるという問題がある。なお、この問題は、ＰＣＩｅスイッチに限ったものではなく、ＰＣＩｅスイッチと同様の機能を有する他のスイッチについても同様に存在する。
【０００８】
例えば、ＰＣＩｅスイッチを多段構成に接続する場合であっても、ＰＣＩｅスイッチではツリー構造でＣＰＵと入出力デバイスとを接続するという制限がある。つまり、ＰＣＩｅスイッチを複数接続した場合に発生するループ構造を許容することができない。したがって、ループ構造にならないように、二重化された接続を無効化することが行われる。また、ＰＣＩｅスイッチを多段構成で接続していることから、ＰＣＩｅスイッチの故障に対応するために冗長化も行われるが、ツリー構造を維持しながらループ構造の無効化や冗長化の実現を行うことになるので、ＰＣＩｅスイッチの管理も複雑になる。
【０００９】
１つの側面では、スイッチを複数接続する際に生じる制限を緩和できるスイッチ、情報処理装置および通信制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
第１の案では、スイッチは、記憶部と特定部と送信制御部とを有する。記憶部は、第１識別子と第２識別子と宛先とを対応付けて記憶する。第１識別子は、プロセッサがデバイスの識別に使用される。第２識別子は、前記プロセッサと前記デバイスとを接続する複数のスイッチが形成するネットワークで前記デバイスの識別に共通して使用される。宛先は、前記デバイスに対するアクセス要求の宛先である。特定部は、前記プロセッサからアクセス要求を受信した場合に、当該アクセス要求に含まれる第１識別子に対応付けられた第２識別子と宛先とを前記記憶部から特定する。送信制御部は、前記特定部によって特定された第２識別子を前記アクセス要求に付加し、前記特定部によって特定された宛先に、当該アクセス要求を送信する。
【発明の効果】
【００１１】
スイッチを複数接続する際に生じる制限を緩和できる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係る情報処理装置の全体構成例を示す図である。
【図２】図２は、ＰＣＩｅスイッチの構成を示すブロック図である。
【図３】図３は、ＰＣＩＩＤ変換テーブルに記憶される情報の例を示す図である。
【図４】図４は、内部ネットワークＩＤ変換テーブルに記憶される情報の例を示す図である。
【図５】図５は、経路テーブルに記憶される情報の例を示す図である。
【図６】図６は、拡張ＰＣＩｅパケットのフォーマット例を示す図である。
【図７】図７は、ＴＬＰプレフィックスの例を示す図である。
【図８】図８は、ＣＰＵからパケットを受信した場合の処理の流れを示すフローチャートである。
【図９】図９は、他のスイッチからパケットを受信した場合の処理の流れを示すフローチャートである。
【図１０】図１０は、パケットの流れを説明する図である。
【図１１】図１１は、ＰＣＩｅスイッチを用いた物理構成を示す図である。
【図１２】図１２は、図１１をＣＰＵから見た場合の論理構成を示す図である。
【図１３】図１３は、図１１を従来技術で見た場合の論理構成を示す図である。
【図１４】図１４は、ＰＣＩｅスイッチ（Ａ）が保持する内部ネットワークＩＤ変換テーブルの例を示す図である。
【図１５】図１５は、各ＰＣＩｅスイッチが保持する経路テーブルの例を示す図である。
【図１６】図１６は、Ｉ／Ｏデバイス２への経路を示す図である。
【図１７】図１７は、ＰＣＩｅスイッチのネットワーク障害を示す図である。
【図１８】図１８は、テーブル更新例を示す図である。
【図１９】図１９は、経路切替後の物理構成を示す図である。
【図２０】図２０は、従来技術を用いた場合の経路切替後の論理構成を示す図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するスイッチ、情報処理装置および通信制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１４】
［全体構成］
図１は、実施例１に係る情報処理装置の全体構成例を示す図である。図１に示すように、情報処理装置は、ＣＰＵ（Central  Processing  Unit）１００、ＰＣＩＥｘｐｒｅｓｓスイッチ（Ａ）〜（Ｅ）、管理ユニット２００、少なくとも１つのデバイス５００を有する。なお、各ＰＣＩＥｘｐｒｅｓｓスイッチ（以下、「ＰＣＩｅスイッチ」と記載する場合がある）と管理ユニット２００は、情報処理装置の外部にあってもよく、情報処理装置に内蔵されていてもよい。
【００１５】
ＣＰＵ１００は、ＰＣＩｅスイッチ（Ａ）とＰＣＩＥｘｐｒｅｓｓで接続する処理部であり、デバイス５００に対して各種アクセス要求を送信して結果を受信する。例えば、ＣＰＵ１００は、デバイス５００にデータ書込み要求を送信し、書込み結果を受信する。
【００１６】
ＰＣＩｅスイッチ（Ａ）〜（Ｅ）は、ＣＰＵ１００とデバイス５００とを接続するスイッチであり、各スイッチがＰＣＩＥｘｐｒｅｓｓで接続されたＰＣＩｅネットワーク３を形成する。管理ユニット２００は、各ＰＣＩｅスイッチが保持する経路情報等を更新する処理部であり、ＰＣＩｅネットワーク３を管理する。デバイス５００は、入出力デバイス（以下、「Ｉ／Ｏデバイス」と記載する場合がある）であり、ＣＰＵ１００からのアクセスを受け付ける。
【００１７】
このような状態において、各ＰＣＩｅスイッチは、記憶部を有する。記憶部は、ＣＰＵ１００がデバイス５００の識別に使用するＰＣＩＩＤと、ＰＣＩｅネットワーク３でデバイス５００の識別に共通して使用される内部ネットワークＩＤと、デバイス５００に対するアクセス要求の宛先とを対応付けて記憶する。そして、各ＰＣＩｅスイッチは、ＣＰＵ１００からアクセス要求を受信した場合に、当該アクセス要求に含まれるＰＣＩＩＤに対応付けられた内部ネットワークＩＤと宛先とを記憶部から特定する。その後、各ＰＣＩｅスイッチは、特定された内部ネットワークＩＤをアクセス要求に付加し、特定された宛先に、当該アクセス要求を送信する。
【００１８】
このように、各ＰＣＩｅスイッチは、ＣＰＵ１００が使用するＰＣＩＩＤをＰＣＩｅスイッチ内で管理する内部ネットワークＩＤに変換し、当該ＩＤを含む新たなヘッダーを用いてアクセス要求をデバイス５００まで転送させる。この結果、上位層による転送を可能にし、ＰＣＩｅスイッチの接続制限を緩和することができる。
【００１９】
［ＰＣＩｅスイッチの構成］
図２は、ＰＣＩｅスイッチの構成を示すブロック図である。なお、図１に示した各ＰＣＩｅスイッチは同様の構成を有するので、ここでは、ＰＣＩｅスイッチ１０として説明する。
【００２０】
図２に示すように、ＰＣＩｅスイッチ１０は、ＰＣＩＩＤ変換テーブル１１、内部ネットワークＩＤ変換テーブル１２、経路テーブル１３、第１入力バッファ１４、第１中継部１５、ＴＬＰ付加部１６、第１ルーティング実行部１７、ブリッジ接続部１８を有する。また、ＰＣＩｅスイッチ１０は、第２入力バッファ１９、第２中継部２０、ＴＬＰ識別部２１、第２ルーティング実行部２２、第３ルーティング実行部２３、クロスバ２４を有する。また、ＰＣＩｅスイッチ１０は、ＴＬＰ削除部２５、第３中継部２６、第１出力バッファ２７、第４中継部２８、第２出力バッファ２９を有する。
【００２１】
なお、各処理部は、例えばＣＰＵなどの電子回路やＦＰＧＡ（Field-Programmable  Gate  Array）などの集積回路である。また、各処理部は、ＣＰＵなどによって実行される処理部である。各テーブルは、例えば半導体メモリ素子などに設けられる。また、図２に示した処理部は一例であり、例えばネットワークインタフェースカード等を有していてもよい。
【００２２】
ＰＣＩＩＤ変換テーブル１１は、デバイス５００に割当てられた論理アドレスを、ＣＰＵ１００がデバイスを論理的に識別するＰＣＩＩＤに変換する情報を記憶する記憶部である。図３は、ＰＣＩＩＤ変換テーブルに記憶される情報の例を示す図である。図３に示すように、ＰＣＩＩＤ変換テーブル１１は、「Ｖａｌｉｄ、ホスト番号、ＰＣＩＩＤ、論理アドレス範囲」を対応付けて記憶する。
【００２３】
ここで記憶される「Ｖａｌｉｄ」は、エントリが有効であるか否かを示す情報であり、有効である場合には１が設定され、無効である場合には０が設定される。「ホスト番号」は、ＣＰＵ１００を識別する識別子である。「ＰＣＩＩＤ」は、ＣＰＵ１００がデバイスを論理的に識別する識別子である。「論理アドレス範囲」は、ＰＣＩＩＤに割当てられた論理アドレスの範囲である。
【００２４】
図３の一例を説明すると、ＣＰＵ１００がアクセスする論理アドレス「0x1200〜0x3300」の範囲には、ホスト番号「1」のＣＰＵ１００に接続されるＰＣＩＩＤ「0x0011」のデバイスが対応し、現在は有効なデバイスであることを示す。なお、ＰＣＩＩＤ変換テーブル１１に記憶される情報は、管理ユニット２００等によって更新される。また、ここで示した情報は一例であり、これに限定されるものではなく、例えばデバイス名などの情報をさらに対応付けて記憶させてもよい。
【００２５】
内部ネットワークＩＤ変換テーブル１２は、ＰＣＩＩＤを、複数のＰＣＩｅスイッチが形成するＰＣＩｅネットワーク３でデバイス５００の識別に共通して使用される識別子に変換する情報を記憶する記憶部である。図４は、内部ネットワークＩＤ変換テーブルに記憶される情報の例を示す図である。図４に示すように、内部ネットワークＩＤ変換テーブル１２は、「Ｖａｌｉｄ、ホスト番号、ＰＣＩＩＤ、内部ネットワークＩＤ」を対応付けて記憶する。
【００２６】
ここで記憶される「Ｖａｌｉｄ」は、エントリが有効であるか否かを示す情報であり、有効である場合には１が設定され、無効である場合には０が設定される。「ホスト番号」は、ＣＰＵ１００を識別する識別子である。「ＰＣＩＩＤ」は、ＣＰＵ１００がデバイスを論理的に識別する識別子である。「内部ネットワークＩＤ」は、複数のＰＣＩｅスイッチが形成するＰＣＩｅネットワーク３でデバイス５００の識別に共通して使用される識別子である。
【００２７】
図４の一例を説明すると、ホスト番号が「1」であるＣＰＵ１００からＰＣＩＩＤ「0x0011」に出力されたアクセス要求には、内部ネットワークＩＤ「01234567」に変換されることを示す。なお、内部ネットワークＩＤ変換テーブル１２に記憶される情報は、管理ユニット２００等によって更新される。また、ここで示した情報は一例であり、これに限定されるものではなく、例えばデバイス名などの情報をさらに対応付けて記憶させてもよい。
【００２８】
経路テーブル１３は、ＣＰＵ１００または他のＰＣＩｅスイッチから入力されたパケットの宛先を記憶する記憶部である。図５は、経路テーブルに記憶される情報の例を示す図である。図５に示すように、経路テーブル１３は、「Ｖａｌｉｄ、内部ネットワークＩＤ、ポート番号」を対応付けて記憶する。
【００２９】
ここで記憶される「Ｖａｌｉｄ」は、エントリが有効であるか否かを示す情報であり、有効である場合には１が設定され、無効である場合には０が設定される。「内部ネットワークＩＤ」は、複数のＰＣＩｅスイッチが形成するＰＣＩｅネットワーク３でデバイス５００の識別に共通して使用される識別子である。「ポート番号」は、ＰＣＩｅスイッチ１０が有するポートを識別する識別子であり、パケットの出力先のポート番号が設定される。
【００３０】
図５の一例を説明すると、内部ネットワークＩＤ「01234567」が割り与えられたパケットの出力先は、ポート番号「0」のポートであることを示す。なお、経路テーブル１３に記憶される情報は、管理ユニット２００等によって更新される。また、ここで示した情報は一例であり、これに限定されるものではなく、任意に設定変更することができる。
【００３１】
第１入力バッファ１４は、ＣＰＵ１００から入力されたＰＣＩｅパケットを保持する記憶部である。例えば、第１入力バッファ１４は、ＣＰＵ１００からデバイス５００に対して送信されたアクセス要求としてのＰＣＩｅパケットを保持する。第１中継部１５は、第１入力バッファ１４に格納されるＰＣＩｅパケットを読み出してＴＬＰ付加部１６に出力する処理部である。例えば、第１中継部１５は、第１入力バッファ１４を監視し、第１入力バッファ１４にアクセス要求としてのＰＣＩｅパケットが格納されると、当該パケットを読み出してＴＬＰ付加部１６に出力する。
【００３２】
ＴＬＰ付加部１６は、第１中継部１５が読み出したＰＣＩｅパケットにＴＬＰ（Transaction  Layer  Packet）プレフィックスを付加する処理部である。具体的には、ＴＬＰ付加部１６は、ＣＰＵ１００から出力されるリンク層のＰＣＩｅパケットに、ＰＣＩｅに準拠したオプション機能であるトランザクション層のＴＬＰプレフィックスを付加する。この結果、ＰＣＩｅネットワーク３において、上位層による独自ルーティングが可能になるとともに、リンク層はＰＣＩｅをそのまま使用できる。
【００３３】
例えば、ＴＬＰ付加部１６は、第１中継部１５から入力されたＰＣＩｅパケットのヘッダーから、宛先である論理アドレス「0x2100」を抽出する。続いて、ＴＬＰ付加部１６は、ブリッジ接続部１８と第２入力バッファ１９を経由してＰＣＩＩＤ変換テーブル１１を参照し、抽出した論理アドレス「0x2100」を含むＰＣＩＩＤが「0x0011」であることを特定する。そして、ＴＬＰ付加部１６は、内部ネットワークＩＤ変換テーブル１２を参照し、特定したＰＣＩＩＤ「0x0011」に対応付けられる内部ネットワークＩＤ「01234567」を特定する。その後、ＴＬＰ付加部１６は、第１中継部１５から入力されたＰＣＩｅパケットに、内部ネットワークＩＤ「01234567」を含むＴＬＰプレフィックスを付加した拡張ＰＣＩｅパケットを生成して、第１ルーティング実行部１７に出力する。
【００３４】
ここで、ＴＬＰプレフィックスについて説明する。図６は、拡張ＰＣＩｅパケットのフォーマット例を示す図であり、図７は、ＴＬＰプレフィックスの例を示す図である。図６及び図７は、ビットフォーマットの例を示している。図６に示すように、拡張ＰＣＩｅパケットは、ＴＬＰプレフィックスとヘッダーとデータとＴＬＰダイジェストとを有する。
【００３５】
ＴＬＰプレフィックスは、図７に示すように、３２ビットの情報であり、「Ｆｍｔ」と「Ｔｙｐｅ」と「Ｇｌｏｂａｌ  Ｋｅｙ」と「Ｄｅｓｔｉｎａｔｉｏｎ  ＩＤ」とを有する。「Ｆｍｔ」は、３ビットの情報であり、ＴＬＰプレフィックスであることを示す固定値である。「Ｔｙｐｅ」は、５ビットの情報であり、01110bまたは01111bの固定値である。この「Ｔｙｐｅ」は、ＰＣＩｅで定義されたVendPrefixL0あるいはVendPrefixL1を用いることを定義するものである。「Ｇｌｏｂａｌ  Ｋｅｙ」は、１０ビットの情報であり、プロテクションのためのキーであり、同一のキーをもつパケットを通信させることに使用される。「Ｄｅｓｔｉｎａｔｉｏｎ  ＩＤ」は、１４ビットの情報であり、宛先を特定する情報である。この「Ｄｅｓｔｉｎａｔｉｏｎ  ＩＤ」に上記内部ネットワークＩＤが格納される。
【００３６】
ヘッダーは、３２ビットの情報であり、ＣＰＵ１００が指定するデバイスの情報が格納される。つまり、ヘッダーには、上記論理アドレスが格納される。データは、アクセス要求の処理内容が格納されたり、実際のデータが格納されたりする。ＴＬＰダイジェストは、３２ビットの情報であり、オプションで使用することができる。なお、ＣＰＵ１００が出力するパケットは、上記ヘッダーとデータとから構成される。
【００３７】
また、ＴＬＰ付加部１６は、第１中継部１５から入力されたＰＣＩｅパケットの送信元がデバイス５００である場合、当該パケットをブリッジ接続部１８に出力する。なお、ＴＬＰ付加部１６は、入力されたＰＣＩｅパケットのヘッダーに格納される送信元がデバイス５００の論理アドレスか否かによって、当該パケットの種別を判定することができる。
【００３８】
図２に戻り、第１ルーティング実行部１７は、拡張ＰＣＩｅパケットを宛先に出力する処理部である。例えば、第１ルーティング実行部１７は、ＴＬＰ付加部１６から入力された拡張ＰＣＩｅパケットのＴＬＰプレフィックスの「Ｄｅｓｔｉｎａｔｉｏｎ  ＩＤ」から内部ネットワークＩＤ「01234567」を抽出する。そして、第１ルーティング実行部１７は、経路テーブル１３を参照し、抽出した内部ネットワークＩＤ「01234567」に対応付けられたポート番号「0」を特定する。その後、第１ルーティング実行部１７は、入力された拡張ＰＣＩｅパケットと当該拡張ＰＣＩｅパケットの出力先がポート番号「0」であることを、クロスバ２４に出力する。
【００３９】
ブリッジ接続部１８は、ＴＬＰ付加部１６と入力バッファ１９との間のパケット通信を制御する処理部である。例えば、ブリッジ接続部１８は、ＴＬＰ付加部１６がＰＣＩＩＤ変換テーブル１１を参照する通信を中継する。また、ブリッジ接続部１８は、ＴＬＰ付加部１６から入力された、ＣＰＵ１００を宛先とするＰＣＩｅパケットすなわちデバイス５００から出力されたＰＣＩｅパケットを第２入力バッファ１９に格納する。
【００４０】
また、ブリッジ接続部１８は、第２入力バッファ１９に入力されたＴＬＰプレフィックスが付加されていないパケットを、ＴＬＰ付加部１６に出力する。つまり、ブリッジ接続部１８は、他のスイッチから入力されたパケットであるにも関らずＴＬＰプレフィックスが付加されていないと判定されたパケットを、ＴＬＰ識別部２１から受け付けてＴＬＰ付加部１６に出力する。
【００４１】
なお、ブリッジ接続部１８は、管理ユニット２００からのテーブル設定変更要求を受信して、各テーブルを更新してもよい。このとき、ブリッジ接続部１８は、ＴＬＰ付加部１６や第１ルーティング実行部１７、第２入力バッファ１９を経由して、各種テーブルを更新する。また、管理ユニット２００が、図示しないネットワークインタフェースカード等と介し、各種処理部を経由して各テーブルを直接更新してもよい。
【００４２】
第２入力バッファ１９は、他のＰＣＩｅスイッチから入力された拡張ＰＣＩｅパケットや、ＴＬＰが付加されていないパケットを保持する記憶部である。また、第２入力バッファ１９は、ブリッジ接続部１８から入力されたＣＰＵ１００を宛先とするＰＣＩｅパケット、すなわちデバイス５００から出力されたＰＣＩｅパケットを保持する。
【００４３】
第２中継部２０は、第２入力バッファ１９に保持されるパケットを読み出してＴＬＰ識別部２１に出力する処理部である。例えば、第２中継部２０は、第２入力バッファ１９を監視し、第２入力バッファ１９に各種パケットが格納されると、当該パケットを読み出してＴＬＰ識別部２１に出力する。
【００４４】
ＴＬＰ識別部２１は、第２中継部２０から入力された各種パケットからＴＬＰプレフィックスを識別する処理部である。例えば、ＴＬＰ識別部２１は、第２中継部２０から入力されたパケットを参照し、ＴＬＰプレフィックスが付加されている否かを判定する。そして、ＴＬＰ識別部２１は、ＴＬＰプレフィックスが付加されているパケットについては、第２ルーティング実行部２２に出力する。
【００４５】
一方、ＴＬＰ識別部２１は、ＴＬＰプレフィックスが付加されていないパケットについては、当該パケットのヘッダーを参照し、宛先がＣＰＵ１００かデバイスかを特定する。そして、ＴＬＰ識別部２１は、ＴＬＰプレフィックスが付加されておらず、宛先がＣＰＵ１００であるパケットについては、第３ルーティング実行部２３に出力する。また、ＴＬＰ識別部２１は、ＴＬＰプレフィックスが付加されておらず、宛先がデバイス５００であるパケットについては、ブリッジ接続部１８に出力する。
【００４６】
第２ルーティング実行部２２は、拡張ＰＣＩｅパケットを宛先に出力する処理部である。例えば、第２ルーティング実行部２２は、ＴＬＰ識別部２１から入力された拡張ＰＣＩｅパケットのＴＬＰプレフィックスの「Ｄｅｓｔｉｎａｔｉｏｎ  ＩＤ」から内部ネットワークＩＤを抽出する。そして、第２ルーティング実行部２２は、経路テーブル１３を参照し、抽出した内部ネットワークＩＤに対応付けられたポート番号を特定する。その後、第２ルーティング実行部２２は、入力された拡張ＰＣＩｅパケットと出力先のポート番号とを、クロスバ２４に出力する。
【００４７】
第３ルーティング実行部２３は、ＴＬＰ識別部２１から入力されたパケットの宛先に出力する処理部である。例えば、第３ルーティング実行部２３は、ＴＬＰ識別部２１から入力されたパケットのヘッダーから、ＰＣＩＩＤまたは論理アドレスを抽出する。そして、第３ルーティング実行部２３は、ＰＣＩＩＤ変換テーブル１１を参照し、抽出したＰＣＩＩＤまたは論理アドレスに対応付けられるホスト番号を特定する。その後、第３ルーティング実行部２３は、入力されたパケットと、特定された宛先となるホスト番号とを、クロスバ２４に出力する。
【００４８】
クロスバ２４は、入力された各種パケットの宛先に基づいて、出力先を切替えてパケットを出力する処理部である。このクロスバ２４は、管理者や管理ユニット２００の設定によって、自スイッチの役割が末端スイッチなのか、中継スイッチなのか、先頭スイッチなのかを認識することができる。なお、末端スイッチとは、デバイス５００に直接接続されるＰＣＩｅスイッチである。中継スイッチとは、ＣＰＵ１００にもデバイス５００にも直接接続されず、各種パケットを中継するＰＣＩｅスイッチである。先頭スイッチとは、ＣＰＵ１００に直接接続されるＰＣＩｅスイッチである。
【００４９】
例えば、クロスバ２４は、第１ルーティング実行部１７や第２ルーティング実行部２２から拡張ＰＣＩｅパケットと宛先のポート番号とを受け付けると、自スイッチの役割を特定する。そして、クロスバ２４は、自スイッチの役割が中継スイッチかまたは先頭スイッチと判定した場合、スイッチング回路を切替えて第４中継部２８に接続する。そして、クロスバ２４は、受け付けた拡張ＰＣＩｅパケットと、指定されたポート番号に出力する指示とを第４中継部２８に出力する。
【００５０】
また、クロスバ２４は、自スイッチの役割が末端スイッチと判定した場合、スイッチング回路を切替えてＴＬＰ削除部２５に接続する。そして、クロスバ２４は、受け付けた拡張ＰＣＩｅパケットと、指定されたポート番号に出力する指示とをＴＬＰ削除部２５に出力する。
【００５１】
また、クロスバ２４は、第３ルーティング実行部２３からパケットが入力された場合、スイッチング回路を切替えてＴＬＰ削除部２５に接続する。そして、クロスバ２４は、入力されたパケットと、宛先となるホスト番号に出力する指示とを、ＴＬＰ削除部２５に出力する。つまり、クロスバ２４は、自スイッチが先頭スイッチであり、入力されたパケットがＣＰＵ１００への応答である場合には、当該パケットをＣＰＵ１００へ送信する。
【００５２】
ＴＬＰ削除部２５は、クロスバ２４から入力されたパケットにＴＬＰプレフィックスが存在する場合、当該パケットからＴＬＰプレフィックスを削除して第３中継部２６に出力する処理部である。このとき、ＴＬＰ削除部２５は、クロスバ２４から宛先のポート番号やホスト番号も第３中継部２６に出力する。つまり、ＴＬＰ削除部２５は、ＰＣＩｅネットワーク３の外部にパケットを送信する場合に、拡張ＰＣＩｅパケットを通常のパケットに戻して出力する。
【００５３】
第３中継部２６は、ＴＬＰ削除部２５から入力されたパケットを宛先の第１出力バッファ２７に出力する処理部である。例えば、第３中継部２６は、ＴＬＰ削除部２５からパケットとポート番号とが入力された場合、当該ポート番号に対応する第１出力バッファ２７にパケットを格納する。また、第３中継部２６は、ＴＬＰ削除部２５からパケットとホスト番号とが入力された場合、当該ホスト番号に対応する第１出力バッファ２７にパケットを格納する。
【００５４】
第１出力バッファ２７は、第３中継部２６から入力されたパケットを保持する記憶部である。この第１バッファ２７は、ＰＣＩｅスイッチ１０が有するポートごとに設けられる。そして、第１バッファ２７に保持されるパケットは、第３中継部２６等に読み出されて、該当のポートから出力される。なお、第１バッファ２７は、ＰＣＩｅスイッチ１０内で１つあってもよい。
【００５５】
第４中継部２８は、クロスバ２４から入力されたパケットを宛先の第２出力バッファ２９に出力する処理部である。具体的には、第４中継部２８は、拡張ＰＣＩｅパケットとポート番号とを受け付けて、当該ポート番号に対応する第２出力バッファ２９に拡張ＰＣＩｅパケットを格納する。
【００５６】
第２出力バッファ２９は、第４中継部２８から入力された拡張ＰＣＩｅパケットを保持する記憶部である。この第２バッファ２９は、ＰＣＩｅスイッチ１０が有するポートごとに設けられる。そして、第２バッファ２９に保持される拡張ＰＣＩｅパケットは、第４中継部２８等に読み出されて、該当のポートから出力される。なお、第２バッファ２９は、ＰＣＩｅスイッチ１０内で１つあってもよい。
【００５７】
［処理の流れ］
次に、ＰＣＩｅスイッチ１０が実行する処理の流れを説明する。ここでは、ＣＰＵ１００からパケットを受信した場合の流れと、他のスイッチからパケットを受信した場合の流れとを説明する。
【００５８】
（ＣＰＵからパケット受信）
図８は、ＣＰＵからパケットを受信した場合の処理の流れを示すフローチャートである。図８に示すように、ＰＣＩｅスイッチ１０のＴＬＰ付加部１６は、パケットをデコードする（Ｓ１０１）。例えば、ＴＬＰ付加部１６は、第１中継部１５が第１入力バッファ１４から読み出したパケットを受信する。
【００５９】
続いて、ＴＬＰ付加部１６は、パケットのヘッダーから読み出した論理アドレスに対応するＰＣＩＩＤをＰＣＩＩＤ変換テーブル１１から特定し、当該パケットの宛先を決定する（Ｓ１０２）。
【００６０】
そして、ＴＬＰ付加部１６は、特定したＰＣＩＩＤＩに対応する内部ネットワークＩＤを内部ネットワークＩＤ変換テーブル１２から特定し、宛先を変換する（Ｓ１０３）。その後、ＴＬＰ付加部１６は、内部ネットワークＩＤが宛先となるように、ＴＬＰプレフィックスを生成し、デコードしたパケットに付加して拡張ＰＣＩｅパケットを生成する（Ｓ１０４）。
【００６１】
そして、第１ルーティング実行部１７は、経路テーブル１３を参照して、拡張ＰＣＩｅパケットに含まれる内部ネットワークＩＤに対応付けられたポート番号を特定し、宛先を決定する（Ｓ１０５）。
【００６２】
その後、クロスバ２４は、自スイッチの役割やポート番号等基づいて行き先の種類を判定する（Ｓ１０６）。そして、クロスバ２４によって、行き先がＣＰＵ１００やデバイス５００であると判定された場合（Ｓ１０６Ｎｏ）、ＴＬＰ削除部２５は、クロスバ２４から入力された拡張ＰＣＩｅパケットからＴＬＰプレフィックスを削除する（Ｓ１０７）。その後、第３中継部２６は、ＴＬＰプレフィックスが削除されたパケットを通常のＰＣＩｅパケットとして、第１出力バッファ２７を介して宛先に送信する（Ｓ１０８）。
【００６３】
一方、クロスバ２４によって、行き先が他のスイッチであると判定された場合（Ｓ１０６Ｙｅｓ）、第４中継部２８は、クロスバ２４から入力された拡張ＰＣＩｅパケットを、第２出力バッファ２９を介して宛先に送信する（Ｓ１０９）。
【００６４】
（他スイッチからパケット受信）
図９は、他のスイッチからパケットを受信した場合の処理の流れを示すフローチャートである。図９に示すように、ＰＣＩｅスイッチ１０のＴＬＰ識別部２１は、入力されたパケットにＴＬＰプレフィックスが付加されているか否かを判定する（Ｓ２０１）。すなわち、ＴＬＰ識別部２１は、第２中継部２０が第２入力バッファ１９から読み出したパケットが拡張ＰＣＩｅパケットであるか否かを判定する。
【００６５】
そして、ＴＬＰ識別部２１によって、入力されたパケットが拡張ＰＣＩｅパケットではないと判定された場合（Ｓ２０１Ｎｏ）、ＴＬＰ付加部１６が、Ｓ１０２からＳ１０５と同様の処理を実行して、拡張ＰＣＩｅパケットを生成する（Ｓ２０２からＳ２０５）。
【００６６】
ＴＬＰ識別部２１によって、入力されたパケットが拡張ＰＣＩｅパケットであると判定された場合（Ｓ２０１Ｙｅｓ）、または、Ｓ２０５が実行された後、クロスバ２４は、自スイッチの役割やポート番号等基づいて行き先の種類を判定する（Ｓ２０６）。
【００６７】
そして、クロスバ２４によって、行き先がＣＰＵ１００やデバイス５００であると判定された場合（Ｓ２０６Ｎｏ）、ＴＬＰ削除部２５は、クロスバ２４から入力された拡張ＰＣＩｅパケットからＴＬＰプレフィックスを削除する（Ｓ２０７）。その後、第３中継部２６は、ＴＬＰプレフィックスが削除されたパケットを通常のＰＣＩｅパケットとして、第１出力バッファ２７を介して宛先に送信する（Ｓ２０８）。
【００６８】
一方、クロスバ２４によって、行き先が他のスイッチであると判定された場合（Ｓ２０６Ｙｅｓ）、第４中継部２８は、クロスバ２４から入力された拡張ＰＣＩｅパケットを、第２出力バッファ２９を介して宛先に送信する（Ｓ２０９）。
【００６９】
［パケットの流れ］
次に、ＣＰＵ１００から出力されたアクセス要求、すなわちパケットがデバイス５００に届くまでの流れを説明する。図１０は、パケットの流れを説明する図である。図１０に示すように、ＣＰＵ１００は、ＰＣＩｅリンクにのせて、通常のＰＣＩｅパケットをデバイス５００に向けて送信する（Ｓ３０１）。
【００７０】
ＰＣＩｅスイッチ１０は、受信したＰＣＩｅパケットの宛先デバイスに対応する内部ネットワークＩＤを含んだＴＬＰプレフィックスを生成する（Ｓ３０２）。そして、ＰＣＩｅスイッチ１０は、受信したＰＣＩｅパケットに、生成したＴＬＰプレフィックスを付加した拡張ＰＣＩｅパケットを生成する（Ｓ３０３）。
【００７１】
その後、ＰＣＩｅスイッチ１０は、拡張ＰＣＩｅパケット内の内部ネットワークＩＤによって特定される出力先が他のスイッチである場合には、当該拡張ＰＣＩｅパケットを宛先に向けて送信する（Ｓ３０４）。
【００７２】
一方、ＰＣＩｅスイッチ１０は、拡張ＰＣＩｅパケット内の内部ネットワークＩＤによって特定される出力先がデバイス５００である場合、拡張ＰＣＩｅパケットからＴＬＰプレフィックスを削除して、元のＰＣＩｅパケットを生成する（Ｓ３０５）。その後、ＰＣＩｅスイッチは、ＰＣＩｅパケットをデバイス５００に送信する（Ｓ３０６）。なお、ＰＣＩｅスイッチ１０は、他のＰＣＩｅスイッチから入力された拡張ＰＣＩｅパケットについては、当該拡張ＰＣＩｅパケットに含まれる内部ネットワークＩＤを用いて、Ｓ３０４からＳ３０６を実行する。
【００７３】
このように、ＰＣＩｅスイッチ１０は、ＴＬＰプレフィックスに記載されたネットワークルーティング情報をもとに、パケットのルーティングを行い、目的の宛先にパケットを中継する。このため、ＰＣＩｅスイッチ１０は、ＰＣＩＥｘｐｒｅｓｓの規格に依らずルーティングを行うことができるので、任意のネットワーク構成を用いることができる。つまり、従来では、ＰＣＩｅスイッチを多数接続する場合には、ループ構成を用いることができなかったが、上述した手法を用いることで、ループ構成を用いることができる。
【００７４】
また、本実施例では、ＰＣＩｅでオプションとして使用できるＴＬＰプレフィックスを用いてパケットを拡張しており、パケットの拡張もＰＣＩｅスイッチ１０内部で実行される。したがって、ＣＰＵ１００やデバイス５００に新たな機能を追加することもなく、ＣＰＵ１００は従来と同じようにアクセス要求を送信すればよい。したがって、標準的なＰＣＩｅスイッチからの変更点を最小限に抑えつつ、独自のルーティング方式を用いたパケットルーティングを可能とし、従来ではできなかった自由なＰＣＩｅスイッチの接続構成を用いることができる。
【００７５】
また、ループ構成を採用することができるので、経路の冗長化を用意に行うことができる。さらに、上述したように、ＰＣＩｅスイッチを複数接続する際に生じる制限を緩和でき、接続の二重化も許容することができるので、ＰＣＩｅスイッチの構成やＰＣＩｅスイッチの設定などの管理も容易になる。
【実施例２】
【００７６】
実施例１では、ＰＣＩｅスイッチで独自のルーティングを実行する例を説明したが、開示するＰＣＩｅスイッチは、経路が遮断された場合に、別の経路に切替えることもできる。実施例２では、ＰＣＩｅスイッチで構成されるネットワークで異常が発生した場合に、経路切替を実行する例を説明する。
【００７７】
（物理構成）
図１１は、ＰＣＩｅスイッチを用いた物理構成を示す図である。図１１に示すように、実施例２に係る情報処理装置の構成は図１と同様である。具体的には、ＣＰＵ１００から出力されたアクセス要求のパケットは、複数のＰＣＩｅスイッチを介してデバイス５００に到達する。なお、各ＰＣＩｅスイッチは、実施例１で説明したＰＣＩｅスイッチ１０と同様の構成を有するものとする。
【００７８】
ここで、実施例２で想定する具体的な物理構成を説明する。ＰＣＩｅスイッチ（Ａ）は、ポート０でＣＰＵ１００に接続し、ポート１でＰＣＩｅスイッチ（Ｂ）に接続し、ポート２でＰＣＩｅスイッチ（Ｃ）に接続する。また、ＰＣＩｅスイッチ（Ｂ）は、ポート０でＰＣＩｅスイッチ（Ａ）に接続し、ポート１でＰＣＩｅスイッチ（Ｄ）に接続し、ポート２でＰＣＩｅスイッチ（Ｅ）に接続する。同様に、ＰＣＩｅスイッチ（Ｃ）は、ポート０でＰＣＩｅスイッチ（Ａ）に接続し、ポート１でＰＣＩｅスイッチ（Ｄ）に接続し、ポート２でＰＣＩｅスイッチ（Ｅ）に接続する。
【００７９】
また、ＰＣＩｅスイッチ（Ｄ）は、ポート０でＰＣＩｅスイッチ（Ｂ）に接続し、ポート１でＰＣＩｅスイッチ（Ｃ）に接続し、ポート２でＰＣＩｅスイッチ（Ｅ）に接続する。さらに、ＰＣＩｅスイッチ（Ｄ）は、ポート３でＩ／Ｏデバイス０に接続し、ポート４でＩ／Ｏデバイス１に接続する。
【００８０】
同様に、ＰＣＩｅスイッチ（Ｅ）は、ポート０でＰＣＩｅスイッチ（Ｃ）に接続し、ポート１でＰＣＩｅスイッチ（Ｂ）に接続し、ポート２でＰＣＩｅスイッチ（Ｄ）に接続する。さらに、ＰＣＩｅスイッチ（Ｅ）は、ポート３でＩ／Ｏデバイス２に接続し、ポート４でＩ／Ｏデバイス３に接続する。
【００８１】
また、各ＰＣＩｅスイッチは、ＰＣＩｅネットワーク内では、各装置を内部ネットワークＩＤで識別する。ここでは、各ＰＣＩｅスイッチは、ＣＰＵ１００を内部ネットワークＩＤ＝０で識別し、ＰＣＩｅスイッチ（Ａ）を内部ネットワークＩＤ＝１で識別し、ＰＣＩｅスイッチ（Ｂ）を内部ネットワークＩＤ＝２で識別する。また、各ＰＣＩｅスイッチは、ＰＣＩｅスイッチ（Ｃ）を内部ネットワークＩＤ＝３で識別し、ＰＣＩｅスイッチ（Ｄ）を内部ネットワークＩＤ＝４で識別し、ＰＣＩｅスイッチ（Ｅ）を内部ネットワークＩＤ＝５で識別する。
【００８２】
さらに、各ＰＣＩｅスイッチは、ＰＣＩｅネットワーク内では、Ｉ／Ｏデバイス０を内部ネットワークＩＤ＝６で識別し、Ｉ／Ｏデバイス１を内部ネットワークＩＤ＝７で識別する。また、各ＰＣＩｅスイッチは、Ｉ／Ｏデバイス２を内部ネットワークＩＤ＝８で識別し、Ｉ／Ｏデバイス３を内部ネットワークＩＤ＝９で識別する。
【００８３】
このように、実施例２に係る情報処理装置は、ＰＣＩｅスイッチを複数接続した形態で、ＣＰＵ１００と各Ｉ／Ｏデバイスとを接続する。また、図１１に示すように、各ＰＣＩｅスイッチは、多段構成になっている。
【００８４】
（論理構成）
一方で、ＣＰＵ１００からは従来と同じＰＣＩｅパケットを用いてＩ／Ｏデバイスにアクセスすることができる。図１２は、図１１をＣＰＵから見た場合の論理構成を示す図である。図１２に示すように、ＣＰＵ１００は、各ＰＣＩｅスイッチとは異なり、各Ｉ／ＯデバイスをＰＣＩＩＤで識別する。なお、ここではＰＣＩＩＤを用いる例で説明するが、論理アドレスであってもよい。具体的には、ＣＰＵ１００は、Ｉ／Ｏデバイス０にアクセスする場合には、ＰＣＩＩＤ＝１を指定することで、Ｉ／Ｏデバイス０にアクセスすることができる。つまり、ＣＰＵ１００は、ＰＣＩＩＤ＝１を含めたＰＣＩｅパケットを送信することで、Ｉ／Ｏデバイス０にデータを書き込んだりすることができる。
【００８５】
ところで、従来のＰＣＩｅスイッチは、論理的な仮想バスを形成して、ＣＰＵ１００と各Ｉ／Ｏデバイスとを接続する。図１３は、図１１を従来技術で見た場合の論理構成を示す図である。図１３に示すように、従来技術の場合、各ＰＣＩｅスイッチが、独自の論理構成で仮想バスを形成する。このため、ＣＰＵＰ１００からは、各Ｉ／Ｏデバイスまでの経路が、各ＰＣＩｅスイッチが形成する仮想バスによるツリー構造で形成されているように見える。したがって、ＰＣＩｅスイッチの制限を受けることになり、ループ構成を用いることができない。
【００８６】
（テーブル構成）
次に、図１１に示した各ＰＣＩｅスイッチのテーブル構成を説明する。なお、ここでは、経路変更の説明に用いるテーブルについて説明する。図１４は、ＰＣＩｅスイッチ（Ａ）が保持する内部ネットワークＩＤ変換テーブルの例を示す図である。このテーブルは、ＰＣＩｅスイッチ（Ａ）だけが有していてもよく、他のＰＣＩｅスイッチも有していてもよい。図１４に示すように、ＰＣＩｅスイッチ（Ａ）は、「Ｖａｌｉｄ、ホスト番号、ＰＣＩＩＤ、内部ネットワークＩＤ」を対応付けて記憶する。具体的には、ＰＣＩｅスイッチ（Ａ）は、ＰＣＩＩＤ＝１を内部ネットワークＩＤ＝６に変換し、ＰＣＩＩＤ＝２を内部ネットワークＩＤ＝７に変換する情報を保持する。また、ＰＣＩｅスイッチ（Ａ）は、ＰＣＩＩＤ＝３を内部ネットワークＩＤ＝８に変換し、ＰＣＩＩＤ＝４を内部ネットワークＩＤ＝９に変換する情報を保持する。
【００８７】
また、各ＰＣＩｅスイッチは経路テーブルも保持する。図１５は、各ＰＣＩｅスイッチが保持する経路テーブルの例を示す図である。図１５に示すように、各ＰＣＩｅスイッチは、「Ｖａｌｉｄ、内部ネットワークＩＤ、ポート番号」を対応付けて記憶する。一例を挙げると、ＰＣＩｅスイッチ（Ａ）は、内部ネットワークＩＤ＝０の拡張ＰＣＩｅパケットをポート０に出力し、内部ネットワークＩＤ＝８の拡張ＰＣＩｅパケットをポート２に出力する情報を保持する。
【００８８】
また、ＰＣＩｅスイッチ（Ｂ）は、内部ネットワークＩＤ＝６の拡張ＰＣＩｅパケットをポート番号１に出力する情報を保持する。また、ＰＣＩｅスイッチ（Ｃ）は、内部ネットワークＩＤ＝８の拡張ＰＣＩｅパケットをポート２に出力する情報を保持する。また、ＰＣＩｅスイッチ（Ｄ）は、内部ネットワークＩＤ＝７の拡張ＰＣＩｅパケットをポート４に出力する情報を保持する。また、ＰＣＩｅスイッチ（Ｅ）は、内部ネットワークＩＤ＝８の拡張ＰＣＩｅパケットをポート３に出力する情報を保持する。
【００８９】
このような状態において、一例として、ＣＰＵ１００からＩ／Ｏデバイス２へアクセスする際の経路について説明する。図１６は、Ｉ／Ｏデバイス２への経路を示す図である。図１６に示すように、ＣＰＵ１００は、Ｉ／Ｏデバイス２の論理アドレスを指定したパケットを、Ｉ／Ｏデバイス２へのアクセス要求を示すパケットとしてＰＣＩｅスイッチ（Ａ）に送信する。
【００９０】
ＰＣＩｅスイッチ（Ａ）は、ＣＰＵ１００から受信したパケットに含まれる論理アドレスに対応するＰＣＩＩＤが「３」であることを、図１４を参照して特定する。続いて、ＰＣＩｅスイッチ（Ａ）は、ＰＣＩＩＤ＝３に対応付けられる内部ネットワークＩＤが「８」であることを、図１５を参照して特定する。この結果、ＰＣＩｅスイッチ（Ａ）は、ＣＰＵ１００が指定した論理アドレスを内部ネットワークＩＤ「８」に変換する。
【００９１】
その後、ＰＣＩｅスイッチ（Ａ）は、内部ネットワークＩＤ「８」を新たな宛先とする拡張ＰＣＩｅパケットを生成して、図１５を参照して特定した宛先のポート２と接続されるＰＣＩｅスイッチ（Ｃ）に送信する。続いて、ＰＣＩｅスイッチ（Ｃ）は、ＰＣＩｅスイッチ（Ａ）から受信した拡張ＰＣＩｅパケットのＴＬＰプレフィックスを参照し、内部ネットワークＩＤ「８」を抽出する。その後、ＰＣＩｅスイッチ（Ｃ）は、図１５を参照して内部ネットワークＩＤ「８」に対応するポート番号「２」を特定し、ポート２と接続されるＰＣＩｅスイッチ（Ｅ）に、拡張ＰＣＩｅパケットを送信する。
【００９２】
続いて、ＰＣＩｅスイッチ（Ｅ）は、ＰＣＩｅスイッチ（Ｃ）から受信した拡張ＰＣＩｅパケットのＴＬＰプレフィックスを参照し、内部ネットワークＩＤ「８」を抽出する。その後、ＰＣＩｅスイッチ（Ｅ）は、図１５を参照して内部ネットワークＩＤ「８」に対応するポート番号「３」を特定する。また、ＰＣＩｅスイッチ（Ｅ）は、自スイッチが末端スイッチであることを認識しているので、受信した拡張ＰＣＩｅパケットからＴＬＰプレフィックスを削除して、元のＰＣＩｅパケットを生成する。その後、ＰＣＩｅスイッチ（Ｅ）は、ポート３と接続されるＩ／Ｏデバイス２に、元のＰＣＩｅパケットを送信する。
【００９３】
（経路切替）
次に、図１６に示したＣＰＵ１００からＩ／Ｏデバイス２への経路でネットワーク障害が発生した例を説明する。図１７は、ＰＣＩｅスイッチのネットワーク障害を示す図である。図１７に示すように、ＰＣＩｅスイッチ（Ｂ）とＰＣＩｅスイッチ（Ｅ）との間のネットワークおよびＰＣＩｅスイッチ（Ｃ）とＰＣＩｅスイッチ（Ｅ）との間のネットワークで障害が発生したとする。つまり、ＰＣＩｅスイッチ（Ｃ）のポート２からＰＣＩｅスイッチ（Ｅ）のポート０への疎通が不能となり、同様に、ＰＣＩｅスイッチ（Ｂ）のポート２からＰＣＩｅスイッチ（Ｅ）のポート１への疎通が不能となったとする。
【００９４】
この場合、管理ユニット２００は、各ＰＣＩｅスイッチの経路テーブルを更新する。具体的には、管理ユニット２００は、管理者の操作や一般的な障害管理ツール等によってネットワーク障害を検出すると、各ＰＣＩｅスイッチの経路テーブルを更新して、ＣＰＵ１００からＩ／Ｏデバイス２およびＩ／Ｏデバイス３への迂回路を設定する。つまり、管理ユニット２００は、ＣＰＵ１００から内部ネットワークＩＤ＝８への経路と、ＣＰＵ１００から内部ネットワークＩＤ＝９への経路とを設定し直して、それぞれに新たな経路を設定する。また、管理ユニット２００は、Ｉ／Ｏデバイス２またはＩ／Ｏデバイス３からＣＰＵ１００への経路、すなわち、内部ネットワークＩＤ＝８または内部ネットワークＩＤ＝９から内部ネットワークＩＤ＝０への経路を設定し直して、新たな経路を設定する。
【００９５】
図１８は、テーブル更新例を示す図である。図１８に示すように、管理ユニット２００は、ＰＣＩｅスイッチ（Ｂ）の経路テーブルにおいて、内部ネットワークＩＤ＝８と内部ネットワーク＝９各々に対応付けられるポート番号を２から１に変更する。また、管理ユニット２００は、ＰＣＩｅスイッチ（Ｃ）の経路テーブルにおいて、内部ネットワークＩＤ＝８と内部ネットワーク＝９各々に対応付けられるポート番号を２から１に変更する。また、管理ユニット２００は、ＰＣＩｅスイッチ（Ｅ）の経路テーブルにおいて、内部ネットワークＩＤ＝０に対応付けられるポート番号を０から２に変更する。
【００９６】
この結果、図１９に示すように、新たな経路を設定することができる。図１９は、経路切替後の物理構成を示す図である。図１９に示すように、ＣＰＵ１００は、Ｉ／Ｏデバイス２の論理アドレスを指定したパケットを、Ｉ／Ｏデバイス２へのアクセス要求を示すパケットとしてＰＣＩｅスイッチ（Ａ）に送信する。ＰＣＩｅスイッチ（Ａ）は、ＣＰＵ１００から受信したパケットのＰＣＩＩＤ「３」を内部ネットワークＩＤ「８」に変換して、拡張ＰＣＩｅパケットを生成する。そして、ＰＣＩｅスイッチ（Ａ）は、図１８を参照して、内部ネットワークＩＤ「８」に対応付けられたポート番号「２」を特定する。その後、ＰＣＩｅスイッチ（Ａ）は、ポート２と接続されるＰＣＩｅスイッチ（Ｃ）に、拡張ＰＣＩｅパケットを送信する。
【００９７】
続いて、ＰＣＩｅスイッチ（Ｃ）は、図１８を参照して、受信した拡張ＰＣＩｅパケットの内部ネットワークＩＤ「８」に対応付けられたポート番号「１」を特定する。その後、ＰＣＩｅスイッチ（Ｃ）は、ポート１と接続されるＰＣＩｅスイッチ（Ｄ）に、拡張ＰＣＩｅパケットを送信する。
【００９８】
さらに、ＰＣＩｅスイッチ（Ｄ）は、図１８を参照して、受信した拡張ＰＣＩｅパケットの内部ネットワークＩＤ「８」に対応付けられたポート番号「２」を特定する。その後、ＰＣＩｅスイッチ（Ｄ）は、ポート２と接続されるＰＣＩｅスイッチ（Ｅ）に、拡張ＰＣＩｅパケットを送信する。
【００９９】
その後、ＰＣＩｅスイッチ（Ｅ）は、図１８を参照して、受信した拡張ＰＣＩｅパケットの内部ネットワークＩＤ「８」に対応付けられたポート番号「３」を特定する。その後、ＰＣＩｅスイッチ（Ｅ）は、ポート３と接続されるＰＣＩｅスイッチ（Ｅ）に、拡張ＰＣＩｅパケットからＴＬＰプレフィックスを削除した通常のＰＣＩｅパケットを送信する。
【０１００】
このように、通常使用されていた経路、すなわちＣＰＵ１００、ＰＣＩｅスイッチ（Ａ）、ＰＣＩｅスイッチ（Ｃ）、ＰＣＩｅスイッチ（Ｅ）、Ｉ／Ｏデバイス２を経由する経路を変更することができる。具体的には、ＣＰＵ１００、ＰＣＩｅスイッチ（Ａ）、ＰＣＩｅスイッチ（Ｃ）、ＰＣＩｅスイッチ（Ｄ）、ＰＣＩｅスイッチ（Ｅ）、Ｉ／Ｏデバイス２を経由する経路に切替えることができる。つまり、ＰＣＩｅスイッチで形成されるネットワークで障害が発生した場合でも、管理ユニット２００からの設定によって経路テーブルを変更するだけで簡単に迂回路を設定することができる。
【０１０１】
一方、従来技術では、図２０に示すように、物理構成の変更に伴って論理構成も変更することになる。図２０は、従来技術を用いた場合の経路切替後の論理構成を示す図である。図２０と図１３とを比較してもわかるように、経路切替前と経路切替後とでは、ＣＰＵ１００から各Ｉ／Ｏデバイスまでに存在するＰＣＩｅスイッチの論理構成が異なる。具体的には、図２０は、ＰＣＩｅスイッチ（Ｂ）が含まれていない。これは、従来技術の場合、ＣＰＵ１００から各Ｉ／Ｏデバイスまでの経路が、ＰＣＩｅスイッチで形成されるネットワークではなく、ＰＣＩＩＤを用いた論理パスだからである。したがって、従来技術の場合、経路を切替える場合には、単純に各ＰＣＩｅスイッチが保持するテーブルを更新するだけでなく、ツリー構造の維持とループ構造の制限を意識することになり、簡単に経路を切替えることができない。
【０１０２】
このように、実施例２に係るＰＣＩｅスイッチは、ＰＣＩｅの規格に依らずルーティングを行うことができるので、任意の結合のネットワーク構成をとることができる。たとえば、多重化されたリンクを利用して、使用するリンクを切り替えてパケットを中継することも容易に行うことができる。
【実施例３】
【０１０３】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施例を説明する。
【０１０４】
（ＣＰＵ）
実施例１や実施例２では、ＣＰＵが１つの例で説明したが、これに限定されるものではなく、ＣＰＵの数は複数であってもよい。図３や図４に示すように、各テーブルにＣＰＵを識別するホスト番号を設けることで、実施例１や実施例２と同様の処理を行うことができる。
【０１０５】
また、各実施例では、ＣＰＵ１００からデバイス５００へのパケット送信を例に説明したが、デバイスからＣＰＵへの応答に際しても、各実施例と同様の手法を用いることができる。例えば、各ＰＣＩｅスイッチは、経路テーブルに、ＣＰＵを識別する内部ネットワークＩＤとポート番号とを対応付けて保持しておく。そして、各ＰＣＩｅスイッチは、デバイス５００からＣＰＵへの応答パケットを受信した場合、当該応答パケットから送信元デバイスの論理アドレスまたはＰＣＩＩＤを抽出する。続いて、各ＰＣＩｅスイッチは、ＰＣＩＤ変換テーブルを参照し、抽出した論理アドレスまたはＰＣＩＩＤに対応するホスト番号を特定する。
【０１０６】
その後、ＰＣＩｅスイッチは、内部ネットワークＩＤ変換テーブルを参照して、特定したホスト番号に対応する内部ネットワークＩＤを特定する。そして、ＰＣＩｅスイッチは、特定した内部ネットワークＩＤを用いて拡張ＰＣＩｅパケットを生成し、実施例１などと同様に各スイッチを転送させていく。このようにすることで、デバイスからＣＰＵへの応答に際しても、各実施例と同様に処理することができる。
【０１０７】
（スイッチの種別）
上記実施例では、ＰＣＩｅスイッチを用いた場合で説明したが、これに限定されるものではなく、ＰＣＩｅスイッチと同様の機能を有する他のスイッチについても同様に処理することができる。
【０１０８】
（システム）
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１０９】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【符号の説明】
【０１１０】
１０  ＰＣＩｅスイッチ
１１  ＰＣＩＩＤ変換テーブル
１２  内部ネットワークＩＤ変換テーブル
１３  経路テーブル
１４  第１入力バッファ
１５  第１中継部
１６  ＴＬＰ付加部
１７  第１ルーティング実行部
１８  ブリッジ接続部
１９  第２入力バッファ
２０  第２中継部
２１  ＴＬＰ識別部
２２  第２ルーティング実行部
２３  第３ルーティング実行部
２４  クロスバ
２５  ＴＬＰ削除部
２６  第３中継部
２７  第１出力バッファ
２８  第４中継部
２９  第２出力バッファ
【図１】
0005928087.tif 000002
【図２】
0005928087.tif 000003
【図３】
0005928087.tif 000004
【図４】
0005928087.tif 000005
【図５】
0005928087.tif 000006
【図６】
0005928087.tif 000007
【図７】
0005928087.tif 000008
【図８】
0005928087.tif 000009
【図９】
0005928087.tif 000010
【図１０】
0005928087.tif 000011
【図１１】
0005928087.tif 000012
【図１２】
0005928087.tif 000013
【図１３】
0005928087.tif 000014
【図１４】
0005928087.tif 000015
【図１５】
0005928087.tif 000016
【図１６】
0005928087.tif 000017
【図１７】
0005928087.tif 000018
【図１８】
0005928087.tif 000019
【図１９】
0005928087.tif 000020
【図２０】
0005928087.tif 000021