JP5660053B2 - ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体 - Google Patents
ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体 Download PDFInfo
- Publication number
- JP5660053B2 JP5660053B2 JP2011550962A JP2011550962A JP5660053B2 JP 5660053 B2 JP5660053 B2 JP 5660053B2 JP 2011550962 A JP2011550962 A JP 2011550962A JP 2011550962 A JP2011550962 A JP 2011550962A JP 5660053 B2 JP5660053 B2 JP 5660053B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- packet
- host
- network
- pci express
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/22—Arrangements for detecting or preventing errors in the information received using redundant apparatus to increase reliability
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4604—LAN interconnection over a backbone network, e.g. Internet, Frame Relay
- H04L12/462—LAN interconnection over a bridge based backbone
- H04L12/4625—Single bridge functionality, e.g. connection of two networks over a single bridge
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4633—Interconnection of networks using encapsulation techniques, e.g. tunneling
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Description
下流PCIエクスプレス−イーサネットブリッジ7は、PCIエクスプレスバスとイーサネットスイッチ200との間をブリッジする。なお、PCIエクスプレスバスは、PCI−SIG(PCI Special Interest Group)で標準化されているI/Oバスの規格の名称である。
ホスト1は、CPU(Central Processing Unit)11と、メモリ13と、ルートコンプレックス121と、上流PCIエクスプレス−イーサネットブリッジ15とを備える。ルートコンプレックス121は、CPU11とメモリ13と上流PCIエクスプレス−イーサネットブリッジ15とを相互に接続する。上流PCIエクスプレス−イーサネットブリッジ15は、PCIエクスプレスバスとイーサネットスイッチ200とをブリッジする、ネットワークインタフェースである。CPU11またはメモリ13と、周辺装置8との間で送受信されるパケットをI/Oパケットと呼ぶ。
上流PCIエクスプレス−イーサネットブリッジ15は、ルートコンプレックス121からI/Oパケットを受信すると、受信したI/Oパケットを、下流PCIエクスプレス−イーサネットブリッジ7を宛先とするイーサネットフレームにカプセル化して、イーサネットスイッチ200に送信する。
上流PCIエクスプレス−イーサネットブリッジ15は、また、イーサネットスイッチ200からI/Oパケットがカプセル化されたイーサネットフレームを受信すると、受信したI/Oパケットをデカプセル化して、ルートコンプレックス121に送信する。
下流PCIエクスプレス−イーサネットブリッジ7は、イーサネットスイッチ200からI/Oパケットがカプセル化されたイーサネットフレームを受信すると、受信したI/Oパケットをデカプセル化し、周辺装置8に送信する。
下流PCIエクスプレス−イーサネットブリッジ7は、周辺装置8からI/Oパケットを受信する。そして、下流PCIエクスプレス−イーサネットブリッジ7は、受信したI/Oパケットを、上流PCIエクスプレス−イーサネットブリッジ15を宛先とするイーサネットフレームにカプセル化して、イーサネットスイッチ200に送信する。
図17に記載されたネットワークシステムは次のように動作する。
ソフトウェアの制御によってCPU11がI/Oパケットを発行すると、I/Oパケットはルートコンプレックス121を経由して上流PCIエクスプレス−イーサネットブリッジ15に送信される。上流PCIエクスプレスイーサネットブリッジ15は、受信したI/Oパケットをイーサネットフレームを用いてカプセル化し、下流PCIエクスプレス−イーサネットブリッジ7を宛先としてイーサネットスイッチ200に送信する。下流PCIエクスプレス−イーサネットブリッジ7は、I/Oパケットをカプセル化したイーサネットフレームを受信し、I/Oパケットをデカプセル化し、周辺装置8に送信する。
一方、周辺装置8がI/Oパケットを発行すると、下流PCIエクスプレス−イーサネットブリッジ7は、周辺装置8から受信したI/Oパケットをイーサネットフレームを用いてカプセル化する。そして、下流PCIエクスプレス−イーサネットブリッジ7は、カプセル化されたI/Oパケットを上流PCIエクスプレス−イーサネットブリッジ15を宛先としてイーサネットスイッチ200に送信する。上流PCIエクスプレス−イーサネットブリッジ15は、I/Oパケットをカプセル化したイーサネットフレームを受信し、I/Oパケットをデカプセル化する。そして、上流PCIエクスプレス−イーサネットブリッジ15は、I/Oパケットをルートコンプレックス121に送信する。
ルートコンプレックス121は、I/Oパケットを受信し、I/OパケットをCPU11またはメモリ13へ送信する。そして、I/Oパケットは、CPU11への割り込み制御や、メモリ13へのDMA(Direct Memory Access)など、指定された処理を行う。
また、特許文献2は、CPUと、I/O機器とが、上流PCIエクスプレスブリッジ、ネットワーク及び下流PCIエクスプレス−イーサネットブリッジを介して接続された、特許文献1と構成が類似する共有システムを記載している。
さらに、特許文献3は、運用系のNIC(Network Interface Card)と予備系のNICとを備え、NICが故障した場合にはNICを予備系に切り替えて運用を継続する構成を記載している。
また、特許文献3に記載された構成においては、通常は運用系のNICのみにより通信が行われる。このため、特許文献3に記載された構成には、MG(Media Gateway)とMGC(Media Gateway Controller)との間の通信において、通信速度が1枚のNICの性能により制限されるという課題がある。
さらに、特許文献3に記載された構成においては、複数枚のNICがそれぞれ運用系と予備系として用意される必要があるので、NICの運用系から予備系への切り替えの際にハードウエアの切り替えが発生する。ハードウエアの切り替えには時間を要するので、特許文献3に記載された構成には、切り替え時のサービスの中断時間が長くなるという課題もある。
本発明の目的は、ホストと周辺機器との間における柔軟なバス接続を可能とすることで、上述した課題のいずれかを解決するネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体を提供することにある。
また、本発明のネットワークシステムは、複数のI/Oバスを保持するホストと、複数のI/Oインタフェースを備える周辺機器と、ホストと自装置とをネットワークを介して接続する第1のインタフェース手段と、周辺機器と自装置とを接続する第2のインタフェース手段と、複数のI/Oインタフェースを、それぞれ異なるI/Oバスの配下に接続するように制御する制御手段と、を備えるネットワーク装置と、を備える。
また、本発明のネットワーク構成方法は、複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続するステップと、複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続するステップと、複数のI/Oインタフェースを、それぞれ異なるI/Oバスの配下に接続するように制御するステップと、を備える。
さらに、本発明のネットワーク装置のプログラムを記録したプログラム記録媒体は、ネットワーク装置が備えるコンピュータを、複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続する第1のインタフェース手段、複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続する第2のインタフェース手段、複数のI/Oインタフェースを、それぞれ異なるI/Oバスの配下に接続するように制御する制御手段、として機能させるプログラムを記録している。
[第1の実施形態]
まず、本発明の第1の実施形態について説明する。
図16は、本発明の第1の実施形態のネットワーク装置の構成を示す図である。ネットワーク装置1601は、周辺機器とのインタフェース部1602、ホストとのインタフェース部1603と、制御部1604とを備える。制御部1604は、周辺機器が備える、ソフトウェアからアクセスされる複数のI/Oインタフェースを、周辺機器と接続されるホストが保持するそれぞれ異なるI/Oバスの配下に接続するように制御する。
制御部1604は、複数のインタフェースを保持する周辺機器の各I/Oインタフェースに対応するI/Oデバイスが、ホストから見て周辺機器の異なるI/Oバスに所属するように制御する。その結果、制御部1604は、ホストに対して、I/Oインタフェースの接続状態を、同一の周辺機器に接続された複数のI/Oデバイスが異なるバスに個別に接続するように認識させることができる。
その結果、第1の実施形態は、ホストと周辺機器との間の通信路を、柔軟に制御することができるという効果を奏する。
第1の実施形態の第1の変形例として、複数のI/Oデバイスのうち、1個を運用系、残余を予備系として動作させてもよい。この場合、運用系のI/Oデバイスに対応する経路上で障害が発生した場合、運用系のI/Oデバイスから予備系のI/Oデバイスに使用を切り替えるように動作させてもよい。
その結果、第1の実施形態の第1の変形例には、第1の実施形態の効果に加えて、さらに、冗長構成を備えたパケットの伝送路の系切り替えを高速に行うことができるという効果がある。
また、第1の実施形態の別の第2の変形例として、複数のI/Oデバイスを同時に運用系として動作させてもよい。この場合、複数のI/Oデバイスの間のデータ量をロードバランスさせてもよい。
その結果、第1の実施形態の第2の変形例には、第1の実施形態で説明した効果に加えて、さらに、ロードバランシングを容易に行うことができるという効果がある。
[第2の実施形態]
次に、本発明の第2の実施形態について説明する。第2の実施形態では、本願発明のネットワーク装置について、より詳細に説明する。
図1は、本発明の第2の実施形態のネットワークシステムの構成を示す図である。図1を参照すると、第2の実施形態のコンピュータシステムは、ホスト1と、イーサネット2と、下流PCIエクスプレスイーサネットブリッジ3と、SR−IOV(Single Root I/O Virtualization)対応I/O4とを含む。SR−IOV対応I/O4は、SR−IOVに準拠する周辺機器である。ここで、SR−IOVは、I/Oデバイスを制御して複数のVM(Virtual Machine)からのI/Oデバイスへのアクセスを実現するための、PCI−SIGが定めたPCIエクスプレスのI/Oデバイスに関する規格である。そして、SR−IOVに準拠した周辺機器は、複数のVMが動作しているホストのI/Oスロットに挿入して使用される。各VMは、割り当てられたVFに対して、ソフトウェアの仲介層を介さずに直接I/O命令を発行する。その結果、I/O処理に関するオーバヘッドの削減が可能卯となる。
ホスト1は、CPU11と、ブリッジ12と、メモリ13と、上流PCIエクスプレスイーサネットブリッジ14a及び14bと、を含む。上流PCIエクスプレス−イーサネットブリッジ14a及び14bは、イーサネット2に対するホスト1のネットワークインタフェースである。なお、上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとは同一のものであってもよい。これらのデバイスを識別するために、上流PCIエクスプレス−イーサネットブリッジ14の添字をa,bとしている。
ここで、SR−IOV対応I/O4は、ホスト1上のソフトウェアからアクセスできるインタフェースを複数備えている。これらの複数のインタフェースをそれぞれVF(Virtual Function)と呼ぶ。図1では、複数のインタフェースを区別するために、各VFをVF41a、VF41bなどと表記する。
また、第2の実施形態では、VF41aとVF41bとがホスト1に割り当てられる。VF41aは、下流PCIエクスプレス−イーサネットブリッジ3から、上流PCIエクスプレスイーサネットブリッジ14aを経由してホスト1に接続されるように割り当てられる。一方、VF41bは、下流PCIエクスプレス−イーサネットブリッジ3から、上流PCIエクスプレスイーサネットブリッジ14bを経由してホスト1に接続されるように割り当てられる。
図2は、第2の実施形態における、ホスト1のデバイスツリーを示す図である。SR−IOV対応I/O4のVF41aとVF41bとは、それぞれ上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとに関係づけられた、異なるPCIエクスプレスバスに属している。このため、ホスト1のデバイスツリーは、SR−IOV対応I/O部4が提供するI/O機能(以下、I/Oデバイスと呼ぶ)が、異なるバスに1つずつ備えられているように構成される。
図1において、下流PCIエクスプレス−イーサネットブリッジ3は、イーサネットアダプタ31と、ホスト側I/Oパケット転送部32と、制御部330と、I/O側I/Oパケット転送部34とを備えるネットワーク装置である。そして、下流PCIエクスプレス−イーサネットブリッジ3は、さらに、接続ホスト制御部35と、仮想リソースレジスタ36とを備える。ここで、制御部330は、アドレス変換部33と、アドレス変換テーブル37と、接続仮想化部38とを備える。さらに、接続仮想化部38は、アドレス対応部381と、アドレス割当部382とを備える。また、下流PCIエクスプレス−イーサネットブリッジ3は、さらに、CPU39及びメモリ40を備えていてもよい。
イーサネットアダプタ31は、I/Oパケットのイーサネットフレームへのカプセル化処理を行う。ホスト側I/Oパケット転送部32は、I/Oパケットを適切な宛先に転送する。アドレス変換部33は、I/Oパケットに記載されたアドレスを変換する。I/O側I/Oパケット転送部34は、I/Oパケットを適切な宛先に転送する。接続ホスト制御部35は、下流PCIエクスプレスイーサネットブリッジ3と、上流PCIエクスプレスイーサネットブリッジ14a、14bとの接続を制御する。図7に示すように、仮想リソースレジスタ36は、各VFの制御に用いられる仮想VFレジスタ361a、361bを含む。仮想リソースレジスタ36の構成については、後で図7を用いて説明する。アドレス変換テーブル37は、アドレス変換部33がI/Oパケットに記載されたアドレスを変換する際に使用される。アドレス対応部381及びアドレス割当部382は、ホスト1とSR−IOV対応I/O4との接続を制御する。
以下に、各部の動作をさらに詳細に説明する。
イーサネットアダプタ31は、イーサネット2からPCIエクスプレスのI/Oパケットがカプセル化されたイーサネットフレームを受信し、受信したI/Oパケットをデカプセル化する。また、イーサネットアダプタ31は、イーサネットフレームを受信した上流PCIエクスプレスイーサネットブリッジを識別する情報と共に、I/Oパケットをホスト側I/Oパケット転送部32に送信する。
イーサネットアダプタ31は、さらに、ホスト側I/Oパケット転送部32からSR−IOV対応I/O4が発行したI/Oパケットと、発行元のVFを識別する情報を受信する。そして、I/Oパケットの発行元がVF41aであれば、イーサネットアダプタ31は、上流PCIエクスプレスイーサネットブリッジ14aのMAC(Media Access Control)アドレスを用いてI/Oパケットをイーサネットフレームにカプセル化し、イーサネットネットワーク2に送信する。
また、I/Oパケットの発行元がVF41bであれば、イーサネットアダプタ31は、上流PCIエクスプレスイーサネットブリッジ14bのMACアドレスを用いてI/Oパケットをイーサネットフレームにカプセル化し、イーサネット2に送信する。
図3は、PCIエクスプレスのI/Oパケットがカプセル化されたイーサネットフレームの構成を示す図である。図3において、イーサネットフレーム1101は、イーサネットヘッダ1102及びTLP(Transaction Layer Packet)1103を含んで構成される。イーサネットヘッダ1102は、イーサネットフレーム1101のヘッダである。イーサネットヘッダ1102は、送信先MACアドレス1104、送信元MACアドレス1105を含む。TLP1103は、PCIエクスプレスのI/Oパケットである。PCIエクスプレスのI/Oパケットは、パケットの宛先アドレス1106、パケットの送信元アドレス1107及びペイロード1108を含む。
PCI Expressでは、接続されたデバイスに割り当てるアドレスとして、ホストのI/O空間にマッピングされたI/Oアドレスと、ホストのメモリ空間にマッピングされたメモリアドレスと、ID番号との3種類のアドレスが利用できる。ID番号は、バス(Bus)番号と、デバイス(Device)番号と、ファンクション(Function)番号との組で構成される。ID番号を構成するこれらの番号の組を、以下「BDF番号」と呼ぶ。
また、I/Oパケットのアドレッシングには、宛先のメモリアドレスまたはI/Oアドレスを指定するアドレスルーティングと、宛先のID番号を指定するIDルーティングとが利用できる。そして、パケットの宛先アドレス1106及びパケットの送信元アドレス1107としては、上で説明したメモリアドレス、I/Oアドレス及びID番号を組み合わせて用いることもできる。
図3に示すイーサネットフレームによって、イーサネットアダプタ31と上流PCIエクスプレス−イーサネットブリッジ14a、14bとの間で、イーサネットでカプセル化されたI/Oパケットが伝送される。
ホスト側I/Oパケット転送部32は、イーサネットアダプタ31から、I/Oパケット及びそのI/Oパケットが経由した上流PCIエクスプレス−イーサネットブリッジの識別情報を受信する。そして、ホスト側I/Oパケット転送部31は、受信したI/Oパケットがホスト1によるSR−IOV対応I/O4のアドレス制御に関するパケットである場合は、受信したI/Oパケットをアドレス対応部381に転送する。そして、ホスト側I/Oパケット転送部31は、受信したI/Oパケットがそれ以外のI/Oパケットであった場合は、受信したI/Oパケットをアドレス変換部33に転送する。いずれの場合も、受信したI/Oパケットは、I/Oパケットを送信した上流PCIエクスプレスイーサネットブリッジの識別情報と共に転送先へ転送される。ここで、I/Oパケットとともに転送される上流PCIエクスプレス−イーサネットブリッジの識別情報は、I/Oパケットに含まれていてもよい。
上流PCIエクスプレス−イーサネットブリッジの識別情報としては、上流PCIエクスプレス−イーサネットブリッジのMACアドレスまたはそのMACアドレスと対応する情報を用いてもよい。あるいは、ホスト側I/Oパケット転送部32は、上流PCIエクスプレス−イーサネットブリッジを識別できる他の情報を上流PCIエクスプレス−イーサネットブリッジの識別情報として扱ってもよい。たとえば、識別情報として、上流PCIエクスプレス−イーサネットブリッジに対して順に付与された番号を用いてもよい。
アドレスの制御に関するI/Oパケットの例としては、PCI Expressで定義されたコンフィグレーションリードパケットとコンフィグレーションライトパケットがある。コンフィグレーションリードパケットとコンフィグレーションライトパケットとは、それぞれ、SR−IOV対応I/O4に設定されたアドレスの値を読み出し、またはSR−IOV対応I/O4にアドレスの値を書き込むために用いられる。
また、ホスト側I/Oパケット転送部32は、アドレス変換部から、VF41aまたはVF41bが発行したI/Oパケットと、発行元VFを識別するためのVF識別番号とを受信する。そして、ホスト側I/Oパケット転送部32は、VF41aまたはVF41bが発行したI/OパケットとVF識別番号とをイーサネットアダプタ31に転送する。なお、I/Oパケットは、自パケットを発行したVF識別番号を含んでいてもよい。
図4は、アドレス変換部33により参照される、アドレス変換テーブル37の一例を示す図である。アドレス変換テーブル37は、ターゲットサーチテーブル370及び複数のマッピングテーブル371a、371bを含む。アドレス変換部33は、アドレス変換テーブル37を参照して、I/Oパケットのアドレスを書き替える。
ターゲットサーチテーブル370は、VF番号と、上流PCIエクスプレス−イーサネットブリッジの識別情報との対応関係を示す情報を含んでいる。図4のターゲットサーチテーブル370は、VF番号が1であるVFが、識別情報が1である上流PCIエクスプレス−イーサネットブリッジに対応し、VF番号が2であるVFが、識別情報が2である上流PCIエクスプレス−イーサネットブリッジに対応することを表している。
マッピングテーブル371a、371bは、上流PCIエクスプレス−イーサネットブリッジの識別情報ごとの複数のテーブルから成る。これらの複数のマッピングテーブルを区別するために、各マッピングテーブルは、マッピングテーブル371a、マッピングテーブル371bなどと表記される。本実施形態では、上流PCIエクスプレス−イーサネットブリッジが2個の場合について説明する。従って、マッピングテーブルは2個ある。しかし、上流PCIエクスプレス−イーサネットブリッジが3個あるいはそれ以上存在する場合は、その数に応じてマッピングテーブルの数を増やしてもよい。
マッピングテーブル371aを例にマッピングテーブルの内容を説明する。
マッピングテーブル371aは、識別情報が1である上流PCIエクスプレス−イーサネットブリッジを通過するI/Oパケットのアドレス変換の際に使用される。マッピングテーブル371aは、ホストのBDF番号と、VFのBDF番号とを含む。また、マッピングテーブル371aは、メモリアドレスの変換に用いるためのメモリベース値を含んでいてもよい。そして、マッピングテーブル371aは、これらのアドレスに関して、それぞれ、ホストが割り当てたアドレスと下流PCIエクスプレス−イーサネットブリッジ3が割り当てたアドレスを保持している。なお、ホスト及び下流PCIエクスプレス−イーサネットブリッジ3によるアドレス割当の動作については後述する。
アドレス変換部33は、ターゲットサーチテーブル370及びマッピングテーブル371a、371bを参照する。その結果、アドレス変換部33は、VF番号と上流PCIエクスプレス−イーサネットブリッジとの対応情報を得ることができる。さらに、アドレス変換部33は、上流PCIエクスプレス−イーサネットブリッジ毎の、ホストが割り当てたアドレスと下流PCIエクスプレス−イーサネットブリッジが割り当てたアドレスとの対応情報を得ることもできる。
ホスト1からSR−IOV対応I/O4に送信されるI/Oパケットの宛先アドレスは、アドレス変換部33において、次のように変換される。すなわち、I/Oパケットの宛先アドレスは、アドレス変換部33において、ホスト1が起動時にVF41aとVF41bとに割り当てたアドレスから、下流PCIエクスプレス−イーサネットブリッジ3がVF41aとVF41bとに割り当てたアドレスにそれぞれ変換される。
そして、ホストからSR−IOV対応I/O4に送信されるI/Oパケットの送信元アドレスは、アドレス変換部33において、ホスト1で付与されたアドレスから下流PCIエクスプレス−イーサネットブリッジ3のアドレスに変換される。
アドレス変換部33の具体的な動作を以下に説明する。アドレス変換部33は、ホスト1からのI/Oパケットを上流PCIエクスプレスイーサネットブリッジ14a(識別情報を「1」とする)を経由して受信すると、受信したパケットから、上流PCIエクスプレス−イーサネットブリッジ14aの識別情報が「1」であることを読み出す。その結果、アドレス変換部33は、上流PCIエクスプレス−イーサネットブリッジの識別情報「1」に対応する、マッピングテーブル371aを参照する。
一方、アドレス変換部33が、上流PCIエクスプレスイーサネットブリッジ14b(識別番号を2とする)を経由してホスト1からのI/Oパケットを受信した場合は、次のように動作する。すなわち、アドレス変換部33は、受信したパケットから、上流PCIエクスプレス−イーサネットブリッジ14bの識別情報が「2」であることを読み出す。その結果、アドレス変換部33は、上流PCIエクスプレス−イーサネットブリッジの識別情報「2」に対応する、マッピングテーブル371bを参照する。
ターゲットサーチテーブル370は、SR−IOV対応I/O4からホストへ転送されるI/OパケットのVF番号に対応する送信先の上流PCIエクスプレス−イーサネットブリッジを、アドレス変換部33が指定するために用いられる。
図5は、ホスト1が発行したI/Oパケットのアドレス変換の一例を説明するための図である。図5を用いて、具体的なアドレス変換の手順を説明する。
なお、図5では、I/Oパケット1201の上流PCIエクスプレス−イーサネットブリッジの識別情報は「1」である場合の例を示す。すなわち、I/Oパケット1201は、上流PCIエクスプレス−イーサネットブリッジ14aを経由して送信されたものとする。
図5に示したI/Oパケット1201は、宛先アドレス1202をアドレスルーティングで指定し、パケットの送信元アドレス1203をID番号で指定する場合を示している。すなわち、I/Oパケット1201は、宛先アドレス1202としてメモリアドレス、送信元アドレス1203としてホストBDF番号をそれぞれ格納している。
アドレス変換部33がホスト側I/Oパケット転送部32からI/Oパケット1201を受信した時点では、宛先アドレス1202及び送信元アドレス1203はそれぞれ「0001 0014h」及び「0,0,0」となっている。そして、アドレス変換部33は、I/Oパケット1201の上流PCIエクスプレス−イーサネットブリッジの識別情報が「1」であることから、識別情報が「1」である、図4のマッピングテーブル371aを参照する。
アドレス変換部33は、マッピングテーブル371aを参照し、I/Oパケット1201の宛先アドレス1202を、メモリベース値「0001 0000h」及び「0000 1000h」に基づいて、「0000 1014h」に書き替える。そして、I/Oパケット1201の送信元アドレス1203を、ホスト1が割り当てた「0,0,0」から下流PCIエクスプレス−イーサネットブリッジが割り当てた「1,0,0」に書き替える。このアドレス変換により、各VFは、I/Oパケット1201を、下流PCIエクスプレス−イーサネットブリッジが送信したパケットとして処理することが可能になる。
ここで、図5においては、I/Oパケット1201の宛先アドレスを、アドレスルーティングとした。しかし、宛先アドレスのルーティング方法にBDF番号によるルーティングを用いてもよい。BDF番号によるルーティングを行う場合には、アドレス変換部33において、BDF番号をホスト1が指定するBDF番号から下流PCIエクスプレス−イーサネットブリッジが指定するBDF番号へ変換してもよい。
次に、アドレス変換部33における、SR−IOV対応I/O4がホスト1に向けて発行したI/Oパケットのアドレス変換の手順について説明する。
アドレス変換部33は、SR−IOV対応I/O4が発行したI/OパケットをI/O側I/Oパケット転送部34から受信する。そして、アドレス変換部33は、I/Oパケットに記載されたアドレスを変換し、ホスト側I/Oパケット転送部32にI/Oパケットを発行したVFの識別番号と共に送信する。
ここで、アドレス変換部33は、SR−IOV対応I/O4から送信されたI/Oパケットを受信すると、I/Oパケットの送信元アドレスを、下流PCIエクスプレス−イーサネットブリッジ3が送信元のVFに割り当てたアドレスから、ホスト1が送信元のVFに割り当てたアドレスに変換する。
図6は、VF41が発行したI/Oパケットのアドレス変換の一例を説明するための図である。図6を用いて、具体的なアドレス変換の手順の例を説明する。
SR−IOV対応I/O4が発行したI/Oパケット1301のルーティング方法は、図5で説明したI/Oパケット1201と同様であるとする。すなわち、I/Oパケット1301は、宛先アドレス1302をメモリアドレスで指定し、送信元アドレス1303をBDF番号で指定する。図6では、I/Oパケット1301の送信元が、VF番号が「1」であるVF41aの場合について説明する。
アドレス変換部33がI/O側I/Oパケット転送部34からI/Oパケット1301を受信した時点では、I/Oパケット1301の宛先アドレス1302及び送信元アドレス1303は、それぞれ「0022 0000h」及び「1,0,1」となっている。そして、アドレス変換部33は、図4のターゲットサーチテーブル370を参照する。アドレス変換部33は、I/Oパケット1301の送信元VF番号が「1」であることから、経由する上流PCIエクスプレス−イーサネットブリッジの識別番号が「1」であることを知る。このため、アドレス変換部33は、識別情報が「1」であるマッピングテーブル371aを参照する。
I/Oパケット1301の送信元アドレスには、下流PCIエクスプレス−イーサネットブリッジが割り当てたVF番号1のVFに対応するBDF番号である「1,0,1」が設定されている。そして、I/Oパケット1301の宛先アドレス1302には、「0022 0000h」が設定されている。
アドレス変換部33は、マッピングテーブル371aを参照し、I/Oパケット1301の送信元アドレス1303を、下流PCIエクスプレス−イーサネットブリッジが割り当てた「1,0,1」からホスト1が割り当てた「13,0,0」に書き替える。このアドレス変換により、ホスト1は、I/Oパケット1301を、下流PCIエクスプレス−イーサネットブリッジ3が送信したパケットとして処理することが可能になる。
なお、上の説明においては、I/Oパケット1301のアドレス変換においては、宛先アドレス1302(「0022 0000h」)の書き換えを行っていない。これは、I/Oパケット1301の宛先のメモリへのアクセスがDMAで行われるからである。すなわち、DMAアクセスの場合には、I/Oパケット生成時にすでに宛先アドレスとしてホスト空間のアドレスが指定されるので、アドレス変換部において宛先アドレスを変換する必要がないからである。しかしながら、図5における宛先アドレスの変換と逆の手順を用いて、I/Oパケット1301の宛先アドレス1302を、下流PCIエクスプレス−イーサネットブリッジのアドレス空間からホスト1のアドレス空間へ変換を行う構成としてもよい。
また、図6においては、I/Oパケット1301の宛先アドレスを、アドレスルーティングとした。しかし、宛先アドレスのルーティング方法にBDF番号によるルーティングを用いてもよい。BDF番号によるルーティングを行う場合には、アドレス変換部33において、BDF番号を下流PCIエクスプレス−イーサネットブリッジが指定するBDF番号からホスト1が指定するBDF番号へ変換してもよい。
図5及び図6で説明した実施形態では、I/Oパケットの送信元アドレスが、アドレス変換部33において、ホスト1が割り当てたアドレスと下流PCIエクスプレス−イーサネットブリッジ3が割り当てたアドレスとの間で書き替えられる構成とした。ここで、I/Oパケットは、ホスト1あるいはSR−IOV対応I/O4から送信されたI/Oパケットである。しかしながら、I/Oパケットの転送先が、送信元アドレスの変換を行うことなくI/Oパケットを処理可能であれば、アドレス変換部は送信元アドレスの変換を行わず、そのままI/Oパケットを転送する構成としてもよい。
さらに、上述の説明で示したアドレス変換テーブル37に記載された数値は例示であり、他の数値あるいは文字列等による表記も可能である。例えば、上流PCIエクスプレス−イーサネットブリッジの識別情報として、MACアドレスを使用してもよい。
I/O側I/Oパケット転送部34は、ホスト1が発行したI/Oパケットをアドレス変換部33から受信し、SR−IOV対応I/O4の指定されたVFへ送信する。
I/O側I/Oパケット転送部34は、SR−IOV対応I/O4のVFからI/Oパケットを受信する。そして、受信したI/Oパケットが、下流PCIエクスプレスイーサネットブリッジがSR−IOV対応I/O4に割り当てるアドレスの制御に関するものであれば、I/O側I/Oパケット転送部34は、受信したI/Oパケットをアドレス割当部382に送信する。それ以外のI/Oパケットであれば、I/O側I/Oパケット転送部34は、受信したI/Oパケットをアドレス変換部33に送信する。
接続ホスト制御部35は、下流PCIエクスプレスイーサネットブリッジ3と上流PCIエクスプレスイーサネットブリッジ14a、14bとの接続を管理する。
上流PCIエクスプレス−イーサネットブリッジ14a、14bは、MACアドレスを含む自身の識別情報を定期的に下流PCIエクスプレス−イーサネットブリッジ3へブロードキャストする。接続ホスト制御部35は、上流PCIエクスプレス−イーサネットブリッジ14a、14bからブロードキャストされた上流PCIエクスプレス−イーサネットブリッジの識別情報を受信する。そして、接続ホスト制御部35は、下流PCIエクスプレスイーサネットブリッジ3と接続する上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとのMACアドレスをイーサネットアダプタ31に通知する。接続ホスト制御部35は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、この通知を行う。イーサネットアダプタ31は、通知されたMACアドレスを用いて、I/Oパケットをカプセル化する。
一方、接続ホスト制御部35は、上流PCIエクスプレスイーサネットブリッジ14aに対応する経路にVF41aを割り当て、上流PCIエクスプレスイーサネットブリッジ14bに対応する経路にVF41bを割り当てるようにアドレス対応部381に通知する。
接続仮想化部38は、アドレス対応部381とアドレス割当部382とを備える。アドレス対応部381は、接続ホスト制御部35から、各VFとホストとの対応に関する情報を受信する。また、アドレス対応部381は、ホスト側I/Oパケット転送部32から、ホスト1が発行した各VFへのコンフィグレーションリードパケット及びコンフィグレーションライトパケットを受信する。そして、アドレス対応部381は、受信したコンフィグレーションリードパケットに、パケットで指定されたVFに対応する仮想リソースレジスタ36の値を読み込ませる。さらに、アドレス対応部381は、受信したコンフィグレーションライトパケットで指定された値を、パケットで指定されたVFに対応する仮想VFレジスタに書き込む。さらに、アドレス対応部381は、仮想VFレジスタに記載された、ホスト1によって割り当てられたアドレス情報を、対応するVFのマッピングテーブルに登録する。
アドレス割当部382は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、SR−IOV対応I/O4にアドレスの制御に関するI/OパケットをI/O側I/Oパケット転送部34を介して発行し、SR−IOV対応I/O4のI/O情報を収集する。そして、アドレス割当部382は、I/O情報が要求するアドレスをVF41aとVF41bとに割り当てる。また、アドレス割当部382は、アドレス割当部382が割り当てたVF41aのアドレスをマッピングテーブル371aに、VF41bのアドレスをマッピングテーブル371bに登録する。さらに、アドレス割当部382は、取得したI/O情報を仮想リソースレジスタ36に反映させる。ここでアドレス割当部382が割り当てるアドレスは、マッピングテーブルにおいて、下流PCIエクスプレス−イーサネットブリッジが割り当てるアドレスに相当する。
図7は、仮想リソースレジスタ36の構成の一例を示す図である。仮想リソースレジスタ36は、各VFの制御に用いられる仮想VFレジスタ361a、361bを含む。これらの仮想VFレジスタが要求するアドレス領域や、デバイス情報は、アドレス割当部382により設定される。また、ホスト1から仮想VFレジスタへのアクセスは、アドレス対応部381の制御により、接続ホスト制御部35がホスト1に割り当てたVFに対応するレジスタに対してのみ行われる。ホスト1が、各VFにアドレスを割り当てるために仮想VFレジスタに設定した値は、アドレス変換テーブル37に反映される。
図7では、仮想VFレジスタは、仮想VFレジスタ361a、仮想VFレジスタ361bなどと表記される。仮想VFレジスタ361aはVF41aに、仮想VFレジスタ361bはVF41bにそれぞれ対応するものとする。そして、仮想VFレジスタ361aと仮想VFレジスタ361bには、ホスト1がVF41aとVF41bとに割り当てたアドレス、及び、各VFに対応するI/Oデバイスの情報(以下、「I/O情報」という。)がそれぞれ記載されている。
ホスト1が起動されるか、SR−IOV対応I/O4がホスト1にホットプラグされた場合、ホスト1は、アドレス割り当て処理の開始時に、I/Oバスにコンフィグレーションリードパケットを送信する。そして、ホスト1は、コンフィグレーションリードパケットの応答から、各I/Oバスの配下に接続されているI/O情報を取得する。以下に、その動作について説明する。
ホスト1は、コンフィグレーションリードパケットを用いて仮想VFレジスタ361a、361bをリードする。I/Oバスの配下にI/Oデバイスが存在すると、そのI/O情報がコンフィグレーションリードパケットの応答としてホスト1に返送される。
アドレス対応部381は、上流PCIエクスプレスイーサネットブリッジ14aを経由してホスト1から受信したコンフィグレーションリードパケットに、パケットで指定された仮想VFレジスタ361aの値をリードさせる。仮想VFレジスタ361aには、VF41aに対応するI/O情報が記載されている。そして、アドレス対応部381は、コンフィグレーションリードパケットの応答をホスト1に返信する。
同様に、アドレス対応部381は、ホスト1から上流PCIエクスプレスイーサネットブリッジ14bを経由して受信したコンフィグレーションリードパケットに、パケットで指定された仮想VFレジスタ361bをリードさせる。仮想VFレジスタ361bには、VF41bに対応するI/O情報が記載されている。そして、アドレス対応部381は、コンフィグレーションリードパケットの応答をホスト1に返信する。
ホスト1は、各I/Oバスからのコンフィグレーションリードパケットの応答から、I/Oバスとその配下にあるI/O情報の対応情報を得る。
その結果、ホスト1から見て、VF41a、VF41bは、それぞれ上流PCIエクスプレスイーサネットブリッジ14a、14bに関するI/Oバスに所属するように制御される。すなわち、ホスト1からは、VF41aが上流PCIエクスプレスイーサネットブリッジ14aを経由するI/Oバスに所属しており、また、VF41bが上流PCIエクスプレスイーサネットブリッジ14bを経由するI/Oバスに所属しているように見えるようになる。
アドレス対応部381は、さらに、ホスト1がVF41aにアドレスを割り当てるために発行したI/Oパケットを、上流PCIエクスプレスイーサネットブリッジ14aを経由して受信する。アドレス対応部381は、また、VF41bにアドレスを割り当てるために、ホスト1が発行したI/Oパケットを上流PCIエクスプレスイーサネットブリッジ14bを経由して受信する。
そして、ホスト1は、SR−IOV対応I/O4を使用するために次の手順でSR−IOV対応I/O4にアドレスを割り当てる。すなわち、ホスト1は、コンフィグレーションライトパケットを用いて仮想VFレジスタ361aにアドレスを書き込むことで、VF41aにアドレスを割り当てる。同様に、ホスト1は、コンフィグレーションライトパケットを用いて仮想VFレジスタ361bにアドレスを書き込むことで、VF41bにアドレスを割り当てる。
図8は、仮想VFレジスタ361aの内容の一例を示す図である。仮想VFレジスタ361aには、VF41aに関してホスト1が割り当てたホスト1及びVFのアドレスが書き込まれている。また、仮想VFレジスタ361aには、VFに対応するI/OデバイスのI/O情報も記載されている。VF41bに関するアドレスが書き込まれている仮想VFレジスタ361bも、構成は同様である。
アドレス対応部381は、仮想VFレジスタ361aに記載された、ホスト1によって割り当てられたアドレス情報を、マッピングテーブル371aに登録する。同様に、アドレス対応部381は、仮想VFレジスタ361bに記載された、ホスト1によって割り当てられたアドレス情報をマッピングテーブル371bに登録する。
上記で説明した接続ホスト制御部35及び接続仮想化部38の動作を、流れ図を用いて以下に説明する。
図9は、接続ホスト制御部35の動作を説明するための流れ図である。接続ホスト制御部35は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、下流PCIエクスプレスイーサネットブリッジ3と接続する、上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとのMACアドレスをイーサネットアダプタ31に通知する(ステップC1)。
そして、接続ホスト制御部35は、上流PCIエクスプレスイーサネットブリッジ14aに対応する経路にVF41aを割り当て、上流PCIエクスプレスイーサネットブリッジ14bに対応する経路にVF41bを割り当てるようにアドレス対応部381に通知する(ステップC2)。
図10は、アドレス割当部382の動作を説明するための流れ図である。
図10において、アドレス割当部382は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、SR−IOV対応I/O4にアドレスの制御に関するI/OパケットをI/O側I/Oパケット転送部34を介して発行し、SR−IOV対応I/O4のI/O情報を収集する(ステップD1)。ここで、アドレス割当部382は、ホスト1がSR−IOV対応I/O4の使用を開始する前に、ステップD1の動作を行う。そして、アドレス割当部382は、収集した情報に基づいて、I/Oが要求するアドレスを各VFに割り当てる(ステップD2)。そして、アドレス割当部382は、割り当てた各VFのアドレスをマッピングテーブルに登録する(ステップD3)。さらに、アドレス割当部382は、取得したI/O情報を仮想リソースレジスタ36に反映させる(ステップD4)。
図18は、アドレス対応部381の動作を説明するための流れ図である。
図18において、ホスト1が起動されるかSR−IOV対応I/O4がホスト1にホットプラグされると、アドレス対応部381は、接続ホスト制御部35からVFとホストとの対応に関する情報を受信する(ステップD5)。また、アドレス対応部381は、コンフィグレーションリードパケットに、パケットで指定されたVFに対応する仮想リソースレジスタの値を読み込ませる(ステップD6)。そして、アドレス対応部381は、コンフィグレーションライトパケットで指定された値を、パケットで指定されたVFに対応する仮想VFレジスタへ書き込ませる(ステップD7)。さらに、アドレス対応部381は、仮想VFレジスタに書き込まれた、ホスト1によって割り当てられた各VFのアドレス情報を、各VFに対応するマッピングテーブルに登録する(ステップD8)。その結果、アドレス対応部381は、ホスト1から見てVF41a、41bが上流PCIエクスプレスイーサネットブリッジ14a、14bに関するI/Oバスに所属するように制御する。
ここで、下流PCIエクスプレスイーサネットブリッジ3は、CPU39及びメモリ40を備えていてもよい。そして、図9及び図10にそれぞれ示した接続ホスト制御部35及びアドレス割当部382のいずれか又は両方の動作手順を、メモリ40にプログラムとして記憶させ、CPU39にそのプログラムに基づいて接続ホスト制御部35及びアドレス割当部382のいずれか又は両方を制御させることで実現してもよい。
あるいは、下流PCIエクスプレスイーサネットブリッジ3に、図9または図10に示したプログラムを書き込んだ組み込みプロセッサを実装してもよい。そして、その組み込みプロセッサが備えるCPUにプログラムを実行させることで、接続ホスト制御部35及びアドレス割当部382のいずれか又は両方を制御してもよい。
図11は、ホスト1が備えるCPU11上で動作するソフトウェアスタックを示す図である。ソフトウェアスタックは、オペレーティングシステム61と、複数のI/Oデバイスを仲介し、オペレーティングシステム61に対し1つのI/Oデバイスとして制御する仲介I/Oデバイスドライバ62と、個別のI/Oデバイスを制御するI/Oデバイスドライバ63a、63bとを含む。I/Oデバイスドライバ63aは、VF41aを制御する。I/Oデバイスドライバ63bはVF41bを制御する。仲介I/Oデバイスドライバ62は、I/Oデバイスドライバ63a、63bと同一のインタフェースを保持する。仲介I/Oデバイスドライバ62は、SR−IOV対応I/O4が提供するI/Oデバイスをホスト1が2つ保持しており、それらに対し、I/Oデバイスドライバ63aとI/Oデバイスドライバ63bとがロードされていると認識する。仲介I/Oデバイスドライバ62は、I/Oデバイスドライバ63aとI/Oデバイスドライバ63bを呼び出すことでSR−IOV対応I/O4を使用する。
仲介ドライバは、I/Oデバイスドライバ63a、63bを同時に制御することが可能である。従って、仲介ドライバは、VF41a及びVF41bの使用あるいは不使用や、VF41a及びVF41bがそれぞれ使用するパケットの伝送量を、それぞれ独立に制御することが可能である。ここで、本実施形態においては、ホストのデバイスツリー上では同一のSR−IOV対応I/Oが複数の異なるVF(VF41a、VF41b)でそれぞれ接続されているように制御されている。従って、第2の実施形態においては、仲介ドライバは、アドレス変換テーブルに記載されたアドレス設定を変更することなく、VF41a及びVF41bによるホスト1とSR−IOV対応I/O4との間のI/Oパケット転送を制御することができる。言い換えれば、仲介ドライバは、アドレス変換部の動作を変更することなく、VFごとのI/Oパケットの転送を制御することができる。
次に、ホスト1からSR−IOV対応I/O4に向けてパケットが転送される場合の、ホスト1及び下流PCIエクスプレス−イーサネットブリッジ3の動作を図面を参照して説明する。
図12は、ホスト1上で動作するソフトウェアがSR−IOV対応I/O4にI/Oパケットを発行する動作を示す流れ図である。ここではホスト1がVF41aにI/Oパケットを発行する場合について説明する。
オペレーティングシステム61からI/O要求を受信した仲介I/Oデバイスドライバ62は、使用するI/Oデバイスを選択する(ステップA1)。ここでは、例えばI/Oデバイス63aが選択されるとする。次に、仲介I/Oデバイスドライバ62が、I/Oデバイスドライバ63aを呼び出す(ステップA2)。そして、I/Oデバイスドライバ63aがI/O命令を発行すると(ステップA3)、ブリッジ12がI/Oパケットを発行する(ステップA4)。上流PCIエクスプレスイーサネットブリッジ14aは、発行されたI/Oパケットを受信し、下流PCIエクスプレスイーサネットブリッジ3のMACアドレスを宛先としてイーサネットフレームにカプセル化し、イーサネットネットワーク2に送信する(ステップA4)。
イーサネットネットワーク2はI/Oパケットがカプセル化されたイーサネットフレームを伝送する(ステップA5)。
図13は、下流PCIエクスプレス−イーサネットブリッジ3が、ホストが発行したI/Oパケットを処理する動作を説明する流れ図である。
下流PCIエクスプレス−イーサネットブリッジ3のイーサネットアダプタ31は、I/Oパケットがカプセル化されたイーサネットフレームを受信してI/Oパケットをデカプセル化し、ホスト側I/Oパケット転送部32に送信する(ステップA11)。
アドレス変換部33は、ホスト側I/Oパケット転送部32からI/Oパケットを受信し、アドレス変換テーブル37を参照し、I/Oパケットの宛先アドレスをホスト1がVF41aに割り当てたアドレスから下流PCIエクスプレスイーサネットブリッジ3がVF41aに割り当てたアドレスに変換し、I/Oパケットの送信元アドレスを、ホスト1のアドレスから下流PCIエクスプレスイーサネットブリッジ3のアドレスに変換する(ステップA12)。
そして、アドレス変換部33は、アドレス変換したI/OパケットをI/O側I/Oパケット転送部34に送信する(ステップA13)。
このようにして、VF41aはI/O側I/Oパケット転送部34からI/Oパケットを受信する。
次に、SR−IOV対応I/O4からホストにI/Oパケットが転送される場合の、下流PCIエクスプレス−イーサネットブリッジ3及びホスト1の動作を図面を参照して説明する。
図14は下流PCIエクスプレス−イーサネットブリッジが、SR−IOV対応I/Oが発行したI/Oパケットを処理する動作を示す流れ図である。ここではVF41aがホスト1にI/Oパケットを発行する場合について説明する。
VF41aがI/Oパケットを発行すると、アドレス変換部33はI/O側I/Oパケット転送部34を経由してI/Oパケットを受信する(ステップB1)。
アドレス変換部33は、アドレス変換テーブル37を参照し、I/Oパケットの宛先アドレスを、下流PCIエクスプレスイーサネットブリッジ3が割り当てたアドレスからホスト1が割り当てたアドレスに変換する。そして、アドレス変換部33は、I/Oパケットの送信元アドレスを、下流PCIエクスプレスイーサネットブリッジ3がVF41aに割り当てたアドレスからホスト1がVF41aに割り当てたアドレスに変換し、ホスト側I/Oパケット転送部32に送信する(ステップB2)。
イーサネットアダプタ31は、ホスト側I/Oパケット転送部からI/Oパケットを受信し、上流PCIエクスプレスイーサネットブリッジ14aのMACアドレスを用いてI/Oパケットをイーサネットフレームにカプセル化する。そして、イーサネットアダプタ31は、カプセル化したI/Oパケットをイーサネットネットワーク2に送信する(ステップB3)。
図15は、ホストがSR−IOV対応I/O4が発行したI/Oパケットを処理する動作を説明する流れ図である。
図15において、上流PCIエクスプレスイーサネットブリッジ14aは、I/Oパケットがカプセル化されたイーサネットフレームを受信し、I/Oパケットをデカプセル化し、ブリッジ12に送信する(ステップB11)。そして、ブリッジ12は、I/Oパケットを受信し、CPU11への割り込みや、メモリ13へのDMA処理など、I/Oパケットで指定された処理を行う(ステップB12)。
なお、図12から図15で説明した手順は、プログラムを用いて実現させてもよい。
以上説明したように、本実施形態によれば、ホストとSR−IOV対応I/Oとの間で、イーサネットでカプセル化されたPCIエクスプレスのI/Oパケットを送受信するネットワークシステムにおいて、ホストとSR−IOV対応I/Oとの間の複数の通信路を、柔軟に制御することができる。
その理由は、同一のSR−IOV対応I/Oに複数の異なるVFを割り当て、ホストのデバイスツリー上では同一のSR−IOV対応I/Oが異なるバスにそれぞれ接続されているように制御しているからである。そして、このようにVFを制御することで、仲介ドライバが、同一のSR−IOV対応I/Oに接続された複数のVFを、VFの設定を変更することなく制御できるからである。
第2の実施形態の第1の変形例として、仲介I/Oデバイスドライバ62は、2つのI/Oデバイスを、一方を運用系、他方を予備系として動作させてもよい。この場合、仲介I/Oデバイスドライバ62は、運用系のI/Oデバイスに対応する上流PCIエクスプレス−イーサネットブリッジや、ブリッジが接続するケーブルやバスに障害が発生した場合、予備系のI/Oデバイスに使用を切り替えるように動作させてもよい。
例えば、図1において、上流PCIエクスプレス−イーサネットブリッジ14aを経由してホスト1とVF41aとが接続される系が運用系であり、上流PCIエクスプレス−イーサネットブリッジ14bを経由してホスト1とVF41bとが接続される系が予備系であるとする。この場合、運用系として使用しているVF41aの経路上で障害が発生した場合に、仲介I/Oデバイスドライバ62は、パケットの伝送路をVF41bに切り替えるように制御することができる。仲介ドライバ62から見ると、VF41aとVF41bとは同種類の個別のSR−IOV対応I/Oに接続されているように制御されている。このため、VF41aからVF41bへの経路の切り替えの際には、ホスト1、下流PCIエクスプレス−イーサネットブリッジ3及びSR−IOV対応I/O4において、ハードウエアの起動を行う必要がない。さらに、VFの接続先アドレスの変更、あるいはアドレス変換テーブルの書き換えといった処理を行う必要もない。
その結果、第1の変形例には、第2の実施形態で説明した効果に加えて、さらに、冗長構成を備えたパケットの伝送路の系切り替えを高速に行うことができるという効果がある。
第2の実施形態の別の第2の変形例として、仲介I/Oデバイスドライバ62は、2つのI/Oデバイスを同時に運用系として動作させてもよい。この場合、仲介I/Oデバイスドライバ62の機能により、複数のI/Oデバイスの間でI/O命令をロードバランスさせることも可能である。
例えば、図1において、仲介I/Oデバイスドライバ62は、ホスト1から上流PCIエクスプレス−イーサネットブリッジ14aを経由してVF41aに接続する経路と、ホスト1から上流PCIエクスプレス−イーサネットブリッジ14bを経由してVF41bに接続する経路とを同時に使用してもよい。そして、伝送路の状況により、それぞれのVFに割り当てる伝送量を変化させ、ロードバランシング(負荷分散)を行なってもよい。
第1の変形例と同様に、仲介ドライバ62から見ると、経路の異なるVF41aとVF41bとは、同種類の個別のSR−IOV対応I/Oに接続されているように制御されている。このため、VF41aとVF41bとの間のロードバランシングの際にも、ホスト1、下流PCIエクスプレス−イーサネットブリッジ3及びSR−IOV対応I/O4において、ハードウエアの再起動を行う必要がない。さらに、VFの接続先アドレスの変更、あるいはアドレス変換テーブルの書き換えといった処理を行う必要もない。
さらに、複数のI/Oデバイスを同時に運用系として用いる構成においては、一部の上流PCIエクスプレス−イーサネットブリッジのデータ転送能力が低下したような場合でも、SR−IOV対応I/O4に対するデータ転送能力を維持することができる。これは、残余の上流PCIエクスプレス−イーサネットブリッジに対応するI/Oデバイスを利用する経路のデータ転送量を増加させることによって実現することができる
その結果、第2の実施形態の第2の変形例には、第2の実施形態で説明した効果に加えて、さらに、複数のVFの間でロードバランシングを容易に行うことができるという効果がある。
なお、第2の実施形態ではホスト1とSR−IOV対応I/O4とがそれぞれ1台である構成を示した。しかし、本発明が適用可能な実施形態の構成はこれに限定されない。例えば、複数台のホストと1台のSR−IOV対応I/O4による構成も可能である。この場合には、複数のホストをホスト1a、2aとすると、ホスト1aにVF41aとVF41bを割り当て、ホスト1bにはさらに異なるVFであるVF41cとVF41dとを割り当ててもよい。
また、1台のホスト1に対し、複数台のSR−IOV対応I/O4が接続される構成も可能である。この場合、各SR−IOV対応I/O4はそれぞれ個別の下流PCIエクスプレスイーサネットブリッジ3を介してイーサネット2に接続させる。上流PCIエクスプレスイーサネットブリッジ14aと上流PCIエクスプレスイーサネットブリッジ14bとは、SR−IOV対応I/O4と1対1に対応した下流PCIエクスプレスイーサネットブリッジ3に接続する。そして、各上流PCIエクスプレスイーサネットブリッジは、各SR−IOV対応I/Oが含むいずれか1つの異なるVFに対するI/Oバスの経路を提供する。
また、ホスト1及びSR−IOV対応I/O4がいずれも複数台で構成されるシステムは、上記のホスト1だけが複数台の場合と、SR−IOV対応I/O4だけが複数台の場合との組み合わせで実現できる。
また、第2の実施形態では、ホスト1に上流PCIエクスプレスイーサネットブリッジを2台接続する構成を用いて構成及び動作を説明した。しかし、上流PCIエクスプレスイーサネットブリッジの数量は2台以上であれば数に制限がない。この場合、ホストが接続する上流PCIエクスプレスイーサネットブリッジの数量に相当するVFが、SR−IOV対応I/O4からホスト1に割り当てられる。このように、VFの数は2個に限定されるものではない。
さらに、第2の実施形態ではI/OバスとしてPCIエクスプレス、ホストとI/Oを接続するネットワーク手段としてイーサネットネットワークを例として説明した。しかし、I/Oバスの種類及びネットワーク手段はこれらに限定されるものではない。本発明は、これらのI/Oバスやネットワーク手段と同様の機能を提供する他のプロトコルを用いた構成にも適用することができる。
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2010年1月20日に出願された日本出願特願2010−009991を基礎とする優先権を主張し、その開示の全てをここに取り込む。
Claims (11)
- 複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続する第1のインタフェース手段と、
複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続する第2のインタフェース手段と、
前記複数のI/Oインタフェースを、それぞれ異なる前記I/Oバスの配下に接続するように制御する制御手段と、
を備えるネットワーク装置。 - 前記制御手段は、
自ネットワーク装置が前記I/Oインタフェースに第1のアドレスを割り当てるアドレス割当手段、及び、前記ホストが前記I/Oインタフェースに割り当てた第2のアドレスと前記第1のアドレスとを対応させるアドレス対応手段、を備える接続仮想化手段と、
前記アドレス対応手段が対応させた前記第1のアドレスと前記第2のアドレスとを保持するアドレス保持手段と、
前記アドレス保持手段を参照して、前記ホストと前記周辺機器との間で前記第1のインタフェース手段および第2のインタフェース手段を介して転送されるI/Oパケットに記載されたアドレスを変換するアドレス変換手段と、
を備える、請求項1に記載されたネットワーク装置。
- 前記アドレス割当手段は、前記周辺機器の情報を収集し、
前記情報に基づいて、前記周辺機器が要求するアドレスを前記I/Oインタフェースに割り当て、
割り当てたアドレスを前記アドレス保持手段に登録する、
請求項2に記載されたネットワーク装置。 - 前記I/Oパケットを所定のネットワーク手段でカプセル化し、前記I/Oインタフェース毎に前記ホストが備える複数のネットワークインタフェースを対応させ、前記ネットワークインタフェースとの間で前記カプセル化した前記I/Oパケットを送受信するネットワークアダプタ手段、
をさらに備える、請求項2又は3に記載されたネットワーク装置。 - 前記ネットワーク装置は、さらに、
前記ネットワークインタフェースの識別情報を前記ネットワークアダプタ手段に通知し、前記I/Oパケットを送受信する経路に前記ネットワークインタフェースに対応する前記I/Oインタフェースを割り当てる、接続ホスト制御手段を備える、請求項4に記載されたネットワーク装置。 - 前記ネットワーク装置が接続するネットワークはイーサネット(登録商標)に準拠し、
前記I/OバスはPCIエクスプレスに準拠し、
前記周辺機器は、SR−IOVに準拠している、請求項1乃至5のいずれかに記載されたネットワーク装置。 - 前記ホストは、
前記I/Oインタフェースに対し個別にロードされたデバイスドライバを仲介し、少なくとも1つの前記デバイスドライバが制御するインタフェースを運用系として用い、少なくとも1つのデバイスドライバが制御するインタフェースを予備系として用いる仲介デバイスドライバを備える、請求項1乃至6のいずれかに記載されたネットワーク装置。 - 前記ホストは、
前記I/Oインタフェースに対し個別にロードされたデバイスドライバを仲介し、
前記デバイスドライバが制御する少なくとも2つのインタフェースの間でI/O命令をロードバランスする制御を行う仲介デバイスドライバを備える、請求項1乃至6のいずれかに記載されたネットワーク装置。 - 複数のI/Oバスを保持するホストと、
複数のI/Oインタフェースを備える周辺機器と、
前記ホストと自装置とをネットワークを介して接続する第1のインタフェース手段と、
前記周辺機器と自装置とを接続する第2のインタフェース手段と、
前記複数のI/Oインタフェースを、それぞれ異なる前記I/Oバスの配下に接続するように制御する制御手段と、を備えるネットワーク装置と、
を備える、ネットワークシステム。 - 複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続し、
複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続し、
前記複数のI/Oインタフェースを、それぞれ異なる前記I/Oバスの配下に接続するように制御する、
ネットワーク構成方法。 - ネットワーク装置が備えるコンピュータを、
複数のI/Oバスを保持するホストと自ネットワーク装置とをネットワークを介して接続する第1のインタフェース手段、
複数のI/Oインタフェースを備える周辺機器と自ネットワーク装置とを接続する第2のインタフェース手段、
前記複数のI/Oインタフェースを、それぞれ異なる前記I/Oバスの配下に接続するように制御する制御手段、
として機能させるためのネットワーク装置のプログラム、を記録したプログラム記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011550962A JP5660053B2 (ja) | 2010-01-20 | 2011-01-14 | ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010009991 | 2010-01-20 | ||
JP2010009991 | 2010-01-20 | ||
PCT/JP2011/051030 WO2011090145A1 (ja) | 2010-01-20 | 2011-01-14 | ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体 |
JP2011550962A JP5660053B2 (ja) | 2010-01-20 | 2011-01-14 | ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2011090145A1 JPWO2011090145A1 (ja) | 2013-05-23 |
JP5660053B2 true JP5660053B2 (ja) | 2015-01-28 |
Family
ID=44306945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011550962A Expired - Fee Related JP5660053B2 (ja) | 2010-01-20 | 2011-01-14 | ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20120183001A1 (ja) |
JP (1) | JP5660053B2 (ja) |
WO (1) | WO2011090145A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013046814A1 (ja) * | 2011-09-27 | 2013-04-04 | 日本電気株式会社 | 分散型計算機システム |
US9008085B2 (en) | 2012-08-15 | 2015-04-14 | International Business Machines Corporation | Network interface card having overlay gateway functionality |
WO2015079482A1 (ja) * | 2013-11-26 | 2015-06-04 | 株式会社日立製作所 | I/o制御システム、i/o制御方法およびコンピュータシステム |
US10324883B2 (en) | 2014-03-28 | 2019-06-18 | Nec Corporation | Computer system, data-processing apparatus, bus-data transferring method, and computer-readable recording medium for transferring data flowing through system bus |
JP2016208184A (ja) * | 2015-04-20 | 2016-12-08 | 日本電気株式会社 | 管理装置、管理システム、管理方法、および管理用プログラム |
US11372580B2 (en) * | 2018-08-07 | 2022-06-28 | Marvell Asia Pte, Ltd. | Enabling virtual functions on storage media |
US11656775B2 (en) | 2018-08-07 | 2023-05-23 | Marvell Asia Pte, Ltd. | Virtualizing isolation areas of solid-state storage media |
US11010314B2 (en) | 2018-10-30 | 2021-05-18 | Marvell Asia Pte. Ltd. | Artificial intelligence-enabled management of storage media access |
JP6922879B2 (ja) * | 2018-11-30 | 2021-08-18 | 日本電気株式会社 | 通信装置、情報処理システム、および通信方法 |
US11481118B2 (en) | 2019-01-11 | 2022-10-25 | Marvell Asia Pte, Ltd. | Storage media programming with adaptive write buffer release |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005011277A (ja) * | 2003-06-23 | 2005-01-13 | Hitachi Ltd | 外部ストレージに接続されるストレージ装置 |
WO2009025381A1 (ja) * | 2007-08-23 | 2009-02-26 | Nec Corporation | I/oシステムおよびi/o制御方法 |
JP2009238068A (ja) * | 2008-03-28 | 2009-10-15 | Fujitsu Ltd | 通信制御装置、通信制御方法 |
JP2011014023A (ja) * | 2009-07-03 | 2011-01-20 | Nec Corp | 中継手段、中継システム、中継方法およびプログラム |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5832244A (en) * | 1996-02-20 | 1998-11-03 | Iomega Corporation | Multiple interface input/output port for a peripheral device |
US8171230B2 (en) * | 2007-12-03 | 2012-05-01 | International Business Machines Corporation | PCI express address translation services invalidation synchronization with TCE invalidation |
-
2011
- 2011-01-14 WO PCT/JP2011/051030 patent/WO2011090145A1/ja active Application Filing
- 2011-01-14 JP JP2011550962A patent/JP5660053B2/ja not_active Expired - Fee Related
- 2011-08-30 US US13/137,614 patent/US20120183001A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005011277A (ja) * | 2003-06-23 | 2005-01-13 | Hitachi Ltd | 外部ストレージに接続されるストレージ装置 |
WO2009025381A1 (ja) * | 2007-08-23 | 2009-02-26 | Nec Corporation | I/oシステムおよびi/o制御方法 |
JP2009238068A (ja) * | 2008-03-28 | 2009-10-15 | Fujitsu Ltd | 通信制御装置、通信制御方法 |
JP2011014023A (ja) * | 2009-07-03 | 2011-01-20 | Nec Corp | 中継手段、中継システム、中継方法およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
US20120183001A1 (en) | 2012-07-19 |
JPWO2011090145A1 (ja) | 2013-05-23 |
WO2011090145A1 (ja) | 2011-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5660053B2 (ja) | ネットワーク装置、ネットワーク構成方法及びネットワーク装置のプログラムを記録したプログラム記録媒体 | |
US9742671B2 (en) | Switching method | |
US8683110B2 (en) | I/O system and I/O control method | |
US8144582B2 (en) | Differentiating blade destination and traffic types in a multi-root PCIe environment | |
US7913024B2 (en) | Differentiating traffic types in a multi-root PCI express environment | |
US8014413B2 (en) | Shared input-output device | |
JP6753412B2 (ja) | コンピュータ、デバイス割当管理方法及びプログラム | |
US20130151750A1 (en) | Multi-root input output virtualization aware switch | |
US10698849B2 (en) | Methods and apparatus for augmented bus numbering | |
JP5469081B2 (ja) | 制御パス入出力仮想化方法 | |
US11086703B2 (en) | Distributed input/output virtualization | |
US11609866B2 (en) | PCIe peripheral sharing | |
US9639489B2 (en) | I/O device sharing system and I/O device sharing method | |
US10509751B2 (en) | Information processing apparatus that converts an address and requester ID on a local host to an address and requester ID on a system host | |
WO2023112646A1 (ja) | 情報処理装置、及び情報処理装置の制御方法 | |
JP2008009926A (ja) | 情報処理装置、情報処理システムおよびアドレス変換方法 | |
KR20220132333A (ko) | PCIe 인터페이스 장치 및 그 동작 방법 | |
WO2015015652A1 (ja) | サーバ間通信機構を備えるサーバシステムおよびその複数サーバ間における通信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140826 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141017 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20141104 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141117 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5660053 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |