JP5469081B2 - 制御パス入出力仮想化方法 - Google Patents

制御パス入出力仮想化方法 Download PDF

Info

Publication number
JP5469081B2
JP5469081B2 JP2010536539A JP2010536539A JP5469081B2 JP 5469081 B2 JP5469081 B2 JP 5469081B2 JP 2010536539 A JP2010536539 A JP 2010536539A JP 2010536539 A JP2010536539 A JP 2010536539A JP 5469081 B2 JP5469081 B2 JP 5469081B2
Authority
JP
Japan
Prior art keywords
data
pointer
descriptor
server
proxy controller
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.)
Active
Application number
JP2010536539A
Other languages
English (en)
Other versions
JP2011507065A (ja
Inventor
ピーカルスキー マレック
Original Assignee
ヴァーテンシス リミテッド
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ヴァーテンシス リミテッド filed Critical ヴァーテンシス リミテッド
Publication of JP2011507065A publication Critical patent/JP2011507065A/ja
Application granted granted Critical
Publication of JP5469081B2 publication Critical patent/JP5469081B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/70Virtual switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/45Arrangements for providing or supporting expansion

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

本発明の好適例は、入出力(I/O)装置、例えばイーサネット(登録商標)コントローラ、ファイバーチャンネル・コントローラの仮想化に関するものである。
コンピュータネットワークの実現では、イーサネット(登録商標)コントローラ及びストレージ・コントローラのようなI/Oリソースは、従来、サーバー内に組み込まれ、各サーバーは、それ自身のI/Oリソースの組を有する。しかし、高性能I/Oリソースはしばしば、サーバー自体より高価になり得るので、複数のサーバーが、これらのサーバーの外部にある1つ以上のI/Oリソースを共用することが有利である。さらに、これらのサーバーの1つ以上が故障した場合でも、関連するI/Oリソースはまだ使用することができるので、こうした構成はよりロバスト(頑健)であり得る。
I/O仮想化は、標準的なI/O装置と標準的なサーバーとの間でアクセスを変換して、これらのI/O装置を複数のサーバー間で共用することができ、この共用がサーバー及びI/O装置の両方に対して隠蔽されるようにする手法である。
I/O仮想化は多数の利点を有する。各仮想システムは、それ自身の専用I/Oリソースを必要とするのに対し、多数の物理的構成では、クライアントまたはサーバー上で利用可能なI/O装置は、その数が不十分であるか、あるいは、各アプリケーションに必要なI/O接続性及び帯域幅を提供するための適正な種類ではないことがある。
さらに、集中管理型I/Oリソースの使用は、ネットワーク及びシステムの管理を簡略化しつつ、I/Oのスケーラビリティ(拡張性)を改善する。ブレードサーバー及びラックマウントサーバーは共に、必要時に、必要なリソースにアクセスすることができる。さらに、I/Oは集中化したスイッチから管理することができるので、管理者はリソースをより容易かつ効率的に割り当てることができる。
集中化によるI/O仮想化への取り組みは、ネットワークI/O負荷平衡化及び帯域幅管理を最大化するための新たな機会をネットワーク管理者に提供する。例えば、サーバーが追加的帯域幅を必要とする場合に、ネットワーク管理者は、より大きいI/O容量を割り当てることができる。これに加えて、サーバーが必要以上のI/Oリソースを有する場合は、これらのリソースを、より必要としている他のサーバーに再割り当てすることができる。
I/O仮想化は、より高いシステム信頼性に役立つ見込みがある。ネットワーク・インフラストラクチャ(基盤)全体にわたって、周辺装置及びポートにおける過度の冗長性を解消して、ネットワーク内の構成要素数を低減することによって、故障率が最小化される。
ネットワーク管理者は、I/Oリソースを性能上の必要性により良好に整合させることができ、これにより、使用するカード、ケーブル及びポートをより少数にすることができるので、I/O仮想化は、システムコストを劇的に低減することも約束する。
今日の一般的なI/O装置仮想化の解決法は次の通りである:
1.VMware(登録商標)、Xen(登録商標)、及びマイクロソフト・バーチャルサーバー(Microsoft Virtual Server)(登録商標)のようなサーバー仮想化ソフトウェアによる仮想装置のエミュレーション。これは、単一の物理的サーバー上の複数の仮想マシンが、単一の物理的I/O装置を共用することを可能にする。複数の物理的サーバー間でI/Oリソースを共用する能力は存在しない。
2.イーサネット(登録商標)またはインフィニバンド(Infiniband)(登録商標)のような、I/Oネットワークと組み合わされた高レベルのI/O仮想化。これは、複数のサーバーが、特化したI/Oゲートウェイ機器によって提供される抽象化されたI/Oサービスへのアクセスを共用することを可能にする。
3.PCI-SIG IOV規格によって規定される低レベル、PCIベースのI/O仮想化。これは、普遍的なPCIプロトコルへの拡張を規定して、複数のサーバーがコモディティ(標準品)のI/O装置を共用することを可能にする。
4.PCI IOV的な特徴を既存の装置に追加する、帯域内仮想化装置の追加による、レガシー(旧式的)I/O装置の低レベル、PCIベースのI/O仮想化。これは、2005年に見られたNextIOの非営利技術デモンストレータを代表例とする。
高レベルの解決法(上記1及び2)は、I/O仮想化の管理的利点のいくつかをもたらすが、大きなコストを要し、厳しい性能ペナルティ(性能上の不利)を頻繁に伴う。このことは、I/Oトラフィックは、変換/カプセル化のいくつかの層を経なければならず、そしてハードウェアI/O装置をソフトウェアでエミュレートするということによる。低性能のI/Oにとっては、このことは許容可能な解決法であるが、高I/O性能システムでは、これらの解決法は非実用的である。
PCI-SIG IOVの解決法(上記3)は、ネイティブのI/Oインタフェースが真のマルチホストのネットワークになることを可能にし、そしてI/O装置が複数のサーバーをサポートすることができるようにI/O装置を変更することによって、これらのコスト/性能の問題を解決する。エミュレーション及びプロトコルの変換は存在しない。しかし、既存のPCIインフラストラクチャが、完全に前方(上位)互換性ではないという実用上の問題が存在する。特にこの問題を解決するためには、種々の新式のI/O装置及びスイッチ装置を設計し、実現し、市場に出さなければならず、複雑な相互依存性があれば、この技術を導入することのできる方法が明らかでない。
NextIOは、2005年にPCI IOVデモンストレータ(実証装置)を製造し(上記4)、PCI IOVデモンストレータは、(例えばPCI-SIG規格通りの)IOVスイッチを実現し、かつ帯域内仮想化フロントエンド装置を各装置に追加することによって、既存のI/O装置を使用している。しかし、フロントエンド装置はコモディティI/O装置に比べて非常に高価であるので、このことは商業的に実現可能な解決法ではなかった。
従って、既存のI/O装置、(これだけではないが)例えばPCI I/O装置に仮想化を加え、さらに、既存の解決法に関して以上で概説した問題を回避することが望まれる。
以下の説明では、本発明のPCI(Peripheral Component Interconnect Standard(周辺装置相互接続規格)、PCIエクスプレス(登録商標)を含む)実現を参照するが、異なる環境では他の具体例が用途を見出し得ることは明らかである。
本発明の第1の態様によれば、プロキシコントローラと組み合わされるデータスイッチが提供され、このデータスイッチは、少なくとも1つの入力/出力(I/O)装置と、メモリを含む少なくとも1つのサーバーとの間で、データトラフィック及び制御トラフィックをルーティング(経路設定)するように構成され、上記メモリは、一組のデータバッファ、及びコマンド/状態記述子(ステータス・ディスクリプタ)のリストを有し、このデータスイッチは:
i) パケットヘッダーを検査することによって、異なる種類のトラフィックを区別し;
ii) データトラフィックは、少なくとも1つのI/O装置と少なくとも1つのサーバーとの間で直接ルーティング(経路設定)し;
iii) 制御トラフィックは、プロキシコントローラを経由してルーティングする
ように構成されている。
本発明の第2の態様によれば、少なくとも1つの入力/出力(I/O)装置と少なくとも1つのサーバーとの間で、プロキシコントローラと組み合わされるデータスイッチを経由して、データトラフィック及び制御トラフィックをルーティングする方法が提供され、このサーバーは、一組のデータバッファ及びコマンド/状態記述子のリストを有するメモリを含み、このデータスイッチは:
i) パケットヘッダーを検査することによって、異なる種類のトラフィックを区別し;
ii) データトラフィックは、少なくとも1つのI/O装置と少なくとも1つのサーバーとの間で直接ルーティング(経路設定)し;
iii) 制御トラフィックは、プロキシコントローラを経由してルーティングする
ように構成されている。
プロキシコントローラは、上記記述子を読み込み、この記述子のフォーマットを理解するように構成されている。大部分の記述子は、少なくとも1つのデータバッファ及び/または後続するコマンドまたは状態記述子への少なくとも1つのポインタを有するが、一部の記述子はポインタを含まないことがある(例えば、単純な「リセット」コマンド用の記述子)。プロキシコントローラはこれらの記述子のフォーマットを理解することができるので、従って、どのポインタがデータバッファへのポインタであり、どのポインタが後続する記述子へのポインタかがわかる。メモリ内の記述子とデータバッファの配分は任意である。プロキシコントローラは、記述子へのポインタとデータバッファへのポインタとを容易に区別することができるように、当該プロキシコントローラが有する記述子のコピーを修正し、このことは一般に、ポインタ中の1つ以上の非上位ビットを割り当てて、このポインタが記述子ポインタであるか否かを示すことによって行う。さらに、あるポインタが後続する記述子へのポインタであるかデータバッファポインタであるかを示すために使用する以外の1つ以上の非上位ビットを修正するように当該ポインタを修正して、複数のサーバーまたはサーバーメモリのどれが、元の未修正の記述子またはデータバッファを含んでいるかを示すことができる。
修正に使用する非上位ビットの数は、サーバーの数が与えられれば、無理なく可能な限り少なく選定して、スイッチハードウェアを簡略化することが好ましい。例えば、1ビットを使用して、記述子とデータバッファとを区別することができ、そして追加的にNビットを使用して、最大2N台のサーバーをサポートする発信元サーバーを識別することができる。
このようにして、I/O装置は、データバッファ及び記述子がいくつかのサーバーメモリ空間内に散在している通常の(例えばPCI)物理アドレス空間内ではなく、記述子とデータバッファの配分が構造化された、単一の統合された仮想アドレス空間内で(無意識のうちに)動作するように作製されている。
このような、仮想アドレス空間内の記述子及びデータバッファの構造化した配置は、データスイッチが、制御トラフィック(記述子アクセス)をプロキシコントローラ経由でルーティングすることを可能にするが、(データバッファへの、またはデータバッファからの)データトラフィックを、スイッチによって、I/O装置と適切なサーバーとの間で直接ルーティングすることも可能にする。
換言すれば、スイッチが制御トラフィックとデータトラフィックとを識別して分離し、制御トラフィックをプロキシコントローラにリダイレクト(転送)することができるように、プロキシコントローラは制御トラフィックを修正し、このことは、ハードウェア仮想化「コプロセッサ」として実現することができ、データトラフィックはI/O装置とサーバーとの間で直接ルーティングされる。
好適例では、非上位ビットの修正は、アドレス空間内の一組の領域内への記述子のマッピング、及びこのアドレス空間内の他の不連続な一組の領域内へのデータバッファのマッピングとして見ることができ、これにより、スイッチは、これらの二組の(領域の)一方へのアクセスと他方へのアクセスとを容易に区別することができることは明らかである。単純な好適例では、このことは、各組を1つの領域のみで構成することによって比較的簡単にすることができるが、複数の領域で構成される組は、その代わりに、より複雑な好適例において実現することができる。
上記マッピングは、プロキシコントローラによって、及びスイッチによって共に行われる。一般に、プロキシコントローラは、上記ポインタを修正することによって、フォワードマッピング(例えば、複数のサーバー空間から単一の仮想空間へのマッピング)を行う。スイッチは、上記ポインタを元の形に戻すことによって、リバースマッピング(仮想空間から複数のサーバー空間へのマッピング)を行う。このことは、スイッチ及びプロキシコントローラは、サーバー及びI/O装置に対して本質的にトランスペアレントであることを意味する。
PCIでは、制御トラフィックは一般に、全帯域幅の約6〜8%のみを構成し、このことは、NextIOの解決法のように高い実現コストを生じさせることなしに、あるいは、現在のソフトウェアの解決法におけるように低性能を生じさせることなしに、プロキシコントローラをハードウェアで実現することができることを意味する。プロキシコントローラは、全帯域幅の残りの92〜94%を構成するデータトラフィックにアクセスするかデータトラフィックを処理する必要がない。データトラフィックは、通常のようにスイッチによってルーティングされ、プロキシコントローラを完全にバイパスする。
本願に記載するデータスイッチは、これに限らないが例えばPCIスイッチであり、通常は、サーバーとI/O装置との間で次のトランザクション型を搬送する:
i) サーバーからI/O装置へのコマンド。
ii) サーバーによるI/O装置内のリソースの状態読出し。
iii) I/O装置が、サーバーメモリ内のコマンド記述子を読出し中。
iv) I/O装置が、状態記述子をサーバーメモリに書込み中。
v) I/O装置が、サーバーメモリ内のデータバッファを読出し/書込み中。
スイッチは、上記トランザクションのすべてを識別し、型v)以外のすべてをプロキシコントローラにリダイレクト(転送)する。(帯域幅の90%以上を占める)トランザクション型v)は、通常のように進めることができる。トランザクション型i)及びii)は、所定伝搬方向用の一意的なフィールドをPCIパケットヘッダー内に有するので、容易に識別される(トランザクション型i)及びii)は共に、サーバーからI/O装置へのサーバー主導のトランザクションである(即ち、最初のパケットが下流に送信される)のに対し、トランザクション型iii)、iv)及びv)はすべて、I/O装置からサーバーへの装置主導のトランザクションである)。しかし、スイッチが型v)を型iii)及びiv)から分離するためには、以下の節で説明する新たなメカニズムを必要とする。
データバッファは、メモリ内の当該データバッファのアドレスのみによって、コマンド/状態記述子と区別することができる。現実のシステムでは、すべてのデータバッファがメモリ内に任意に散在する例が多数存在するので、すべてのデータバッファ及び記述子が、すべてのサーバーメモリ空間内に存在する場所をスイッチが記憶していることは、実用的でない。I/O装置のデータバッファへのアクセスを、コマンド/状態記述子へのアクセスから分離するために、I/O装置は、通常のPCI物理アドレス空間ではなく、単純な「仮想アドレス空間」内で(無意識のうちに)動作するように作製されている。この仮想アドレス空間は、すべてのコマンド/状態記述子のリストを、明確に規定された領域内に有する。スイッチは、メモリアドレスを単純な値と比較しさえすればよいので、このことは、スイッチが、型v)のトランザクションを型iii)及びiv)のトランザクションから分離することを容易にする。
制御トランザクションとデータトランザクションとを分離すると共に、スイッチは、特定データバッファが配置されているサーバーを知る必要がある。コマンド/状態記述子と同様に、プロキシコントローラは、各サーバーのデータバッファを特定の仮想アドレス空間領域内にマッピングすることができ、これにより、スイッチは単純なアドレス比較によってサーバーを識別することができる。スイッチは、上位ビットを用いてサーバーを識別すると共に、これらのビットをトランザクション上に戻すこともできる。
プロキシコントローラは、次のように仮想アドレス空間を生成することができる:
I/O動作を開始するために、サーバーは:
1.一組のデータバッファをメモリ内に生成し、
2.コマンド/状態記述子のリストをメモリ内に作成することができる。これらの記述子は、データバッファへのポインタ、及び「次の」コマンド/状態記述子へのポインタも有する。
3.サーバーは、最初のコマンド記述子へのポインタを有するI/O装置に直接、コマンドを送信する(型i)のトランザクション)。従来は、I/O装置がこのことを利用して、最初のコマンド記述子をメモリから読み出していたが、今度は、スイッチがこのコマンドをプロキシコントローラにリダイレクトする。
4.プロキシコントローラは、コマンド記述子を読み込む。プロキシコントローラは、記述子のフォーマットを理解し、従って、どれがデータバッファへのポインタであり、どれが次の記述子へのポインタであるかを知る。プロキシコントローラは、他の記述子へのポインタが(例えば最上位ビットを設定することによって)アドレス空間の上位領域内にマッピングされるように、当該プロキシコントローラが有する記述子のコピーを修正する。データバッファポインタは、各サーバーのバッファが連続領域内にマッピングされるように修正される。
5.プロキシコントローラは、サーバーからの元の直接的なコマンドを、今度は第1記述子の新たな位置を指示(ポイント)するように修正して、このコマンドをI/O装置に転送する。
6.I/O装置は、このコマンド中のポインタを用いて、最初のコマンド記述子をフェッチする。スイッチは、これが上位アドレスからの記述子クセスであることを識別して、要求をプロキシコントローラにリダイレクトし、プロキシコントローラは、修正した記述子の内容で応答する。
7.I/O装置がデータバッファにアクセスすると、スイッチは下位アドレスによってこのことを識別して、トランザクションを適切なサーバーに直接ルーティングする。
8.I/O動作が完了すると、I/O装置は「割込み(インタラプト)」によってサーバーに信号通知し、この「割込み」は、単にサーバーメモリ内の所定位置へのメモリ書込みである。コマンド/状態記述子と同様に、この「割込み」は、初期化中に、プロキシコントローラによって上位アドレス領域内に再マッピングされており、これにより、スイッチは、この「割込み」を容易にプロキシコントローラにリダイレクトすることができる。
ことができる。
上記メカニズムにより、スイッチは、低帯域幅の制御トラフィックを、高帯域幅のデータトラフィックから分離して、低帯域幅の制御トラフィックのみをプロキシコントローラに送信することができる。こうして、このプロキシコントローラは、仮想化機能(本明細書では説明しない)を提供することができる。
また、重要なこととして、この動作中には、サーバーもI/O装置も、何か異常な(非仮想化システムとは異なる)ことが発生したことには気が付かない。本発明の実施例の動作は全体的に、サーバー及びI/O装置に対してトランスペアレントである。
例えば、PCIスイッチの通常動作を修正し、I/O装置を仮想アドレス空間内で動作させることによって、本発明の実施例は、サーバーとI/O装置との間にあるPCIインタフェース内の制御パスとデータパスとの厳密な分離を可能にする。
このことは、プロキシコントローラまたは仮想化コプロセッサが、高帯域幅のデータパスを取り扱う負担なしに、専ら制御パス上で動作することを可能にする。
本発明の好適な実施例は、これに加えて、要求されたデータバッファを有するサーバーをスイッチが容易に識別することを可能にし、従って、上記トランザクションをいくつかのサーバーのうち1つに対して適切にルーティングすることを可能にする。このことは、単一のI/O装置をいくつかのサーバー間で共用することを可能にする。
本発明の実施例を、ネイティブなPCIの解決法として実現して、ソフトウェア仮想化に関連する高コスト及び低性能を回避することができる。
さらに、本発明の実施例は、PCIマルチルートIOV(PCI Multi-Root IOV)のような新たな規格に準拠するために、I/O装置の集合の再設計を必要としない。本発明の実施例は、既存のレガシー(旧式的)I/O装置と協働することができる。
さらに、本発明の実施例は、高帯域幅のデータパスを、サーバーとI/O装置との間で直接ルーティングすることを可能にすることによって、プロキシコントローラまたは仮想化コプロセッサのデータ処理要求を簡略化する。このことは、プロキシコントローラまたはコプロセッサを、低コストのハードウェアで実現することができ、従って、商業的に実現可能なシステムに要求されるコスト/性能をもたらすことができることを意味する。
以上で説明したポインタ操作は、スイッチによって実行される、最上位の制御トラフィックのプロキシコントローラへの再ルーティングの一態様に過ぎないことは明らかである。サーバーとI/O装置との間の大部分のトランザクションについては、制御トラフィック自体はパケットヘッダーから容易に識別することができ、従って、特別な処理または準備を必要としない。複雑性が生じるのは、I/O装置によって開始されるメモリアクセスにおいてのみであり(この点では、記述子アクセスとデータバッファアクセスとは通常、区別がつかないことによる)、このメモリアクセスでは、ポインタ修正またはポインタ操作が必要になる。
本明細書の説明及び特許請求の範囲全体を通して、「備える」及び「含む」、及びこれらの語の変化形、例えば「備えている」は、「含むが、それに限定されない」ことを意味し、他の成分、添加物、構成要素、整数値またはステップを排除せず、排除することを意図したものではない。
本明細書の説明及び特許請求の範囲全体を通して、各構成要素は複数存在し得るが、文脈上そう解釈すべきでない場合を除く。特に、本明細書は、単数並びに複数を意図しているが、文脈上そう解釈すべきでない場合を除く。
本発明の特定態様、実施例、または例に関連して説明した特徴、整数値、特性、化合物、化学的成分または化学基は、不適合でなければ、本明細書で説明した他のあらゆる態様、実施例または例に適用可能であることは明らかである。
本発明をより良く理解し、本発明を実施することのできる方法を示すために、以下、例として図面を参照しながら説明する。
本発明の実施例のアーキテクチャを示す図である。 2つのサーバーアドレス空間の、仮想アドレス空間内へのマッピングを示す図である。
図1に、一対のサーバー2、3と一対のnon-Multi Root Aware(non-MRA:非マルチルート・アウェア)I/O装置4、5間に相互接続されたデータスイッチ1を略図形式で示す。図からわかるように、データトラフィック6は、サーバー2、3とI/O装置4、5との間にあるスイッチ1を通して直接ルーティングされるのに対し、制御トラフィック7は、プロキシコントローラまたは仮想化コプロセッサ8に指向される。トラフィック6、7の帯域幅は一般に約20Gbit/sであり、トラフィックの90%以上はデータトラフィック6であり、従って、スイッチング/制御目的とは無関係である。
プロキシコントローラ8は、既存のPCI I/O装置4、5に仮想化を加える実用的手段であり、従来技術の解決法の欠点の一部を回避するのに役立つ。プロキシコントローラ8は、ネイティブなPCI I/O相互接続に基づき、従って、性能を低下させるプロトコル変換及びソフトウェアエミュレーションを回避する。プロキシコントローラ8は、新式のPCI-SIG Multi-Root IOV装置(と互換性はあるが)を必要としない。プロキシコントローラ8は、NextIO技術デモンストレータのコスト及び他の実用上の問題(電力、空間)を抱えることがない。プロキシコントローラ8は、スイッチ1がPCI制御パス7とデータパス6とを分離し、制御トラフィック7をハードウェア仮想化「コプロセッサ」8にリダイレクトすることができるように、PCIスイッチ1の通常の挙動を変更することによって、このことを行う。制御トラフィック7は、PCI帯域幅の約6〜8%のみを構成し、従って、コプロセッサ8は、NextIOの解決法におけるような高い実現コスト、あるいはソフトウェアの解決法にけるような低性能を生じさせることなしに、ハードウェアで実現することができる。仮想化機能は、データへのアクセスを必要としない。高帯域幅データは、PCIスイッチ1内で通常のようにルーティングされ、コプロセッサ8を完全にバイパスする。
このことは、サーバーバッファをコプロセッサ8の仮想アドレス空間内にマッピングすることによって達成される。こうしたマッピングの例を図2に示し、サーバー2のアドレス空間9を左側に示し、サーバー3のアドレス空間10を右側に示し、仮想アドレス空間11を中央に示す。図からわかるように、各アドレス空間9及び10内の記述子ポインタD0、D1、D2は、仮想アドレス空間11の上位にマッピングされる。このことは、関連する記述子内のポインタを修正することによって、例えば、ポインタの最上位ビットを、データバッファポインタの等価なビットの値とは異なる値(0または1)に設定することによって達成される。
次に、I/O装置は、これらのポインタを用いて、メモリアクセス要求を発行することによって記述子及びデータバッファにアクセスし、これらのポインタは、要求パケットのヘッダー内のアドレスフィールド中に配置する。
このようにして、型v)のデータトラフィックと、型iii)またはiv)の制御トラフィックとを区別し、このトラフィックを、パケットヘッダーの単純な検査による要求に応じて、サーバー2、3またはコプロセッサ8に対してルーティングすることは、スイッチ1にとって簡単なことになる。
さらに、いくつかのサーバー2、3が単一のI/O装置4を共用することを可能にするために、パケットヘッダーの次の4ビットを用いて、どちらの特定サーバー2、3が制御パケットの意図した受信機であるかを識別することができる。4ビットを使用することは、16台のサーバーが1つのI/O装置を共用することを可能にする。追加的ビット(即ち、先行ビットに続く5ビット)を借りることは、32台のサーバーが1つのI/O装置を共用することを可能にする。
例えば、再び図2を参照すれば、サーバー2内のデータバッファからのデータは、仮想アドレス空間11内の、記述子ポインタDをマッピングした領域の直下にある連続領域にマッピングし、サーバー3のデータバッファからのデータは、仮想アドレス空間11内の、サーバー2のデータバッファからのデータをマッピングした領域の直下にある連続領域にマッピングする。
コプロセッサ8及びスイッチ1は、パケットヘッダーの、最上位ビット及び後続するビット以外の部分を使用するように構成するか、プログラムすることができる。
本発明の実施例のアドレスマッピング態様の具体例を挙げるために、次のシーケンス(順序)を考えることができる。このことは、最上位ビットを制御/データトラフィック識別用に使用し、後続する4ビットをサーバー識別用に使用することを仮定する:
・I/O装置4を仮想化して、最大16台のサーバー2、3間で共用する。
・コプロセッサ8は、64ビットサーバーのアドレス空間の上位5ビットが未使用である(すべて「0」である)ものと仮定する。
・コプロセッサ8は、記述子及びデータバッファを、ビット59〜62がサーバーIDを含むように修正する。
・コプロセッサ8は、ビット「63」=1となるように記述子ポインタを修正する。
・スイッチ1は、ビット63=「1」では、I/O装置4からのすべてのメモリアクセスを、コプロセッサ8にリダイレクトする。
・スイッチ1は、ビット63=「0」では、I/O装置4からのすべてのメモリアクセスを、ビット59:62によって指示されるサーバー2、3にルーティングすると共に、これらのビットをクリアする。

Claims (9)

  1. プロキシコントローラと組み合わされるデータスイッチであって、少なくとも1つの入力/出力(I/O)装置と、メモリを含む少なくとも1つのサーバーとの間で、データトラフィック及び制御トラフィックをルーティングするように構成され、前記メモリは、一組のデータバッファ、及びコマンド/状態記述子のリストを含むアドレス空間を有するデータスイッチにおいて、このデータスイッチが、
    i) パケットヘッダーを検査することによって、異なる種類のトラフィックを区別し;
    ii) データトラフィックは、前記少なくとも1つのI/O装置と前記少なくとも1つのサーバーとの間で直接ルーティングし;
    iii) 制御トラフィックのみを、前記プロキシコントローラを経由してルーティングする
    ように構成され、
    前記プロキシコントローラが、前記記述子を読み込むことによってコピーし、前記記述子内のポインタが、前記データバッファへのポインタである第1クラスのポインタであるか、後続する記述子へのポインタである第2クラスのポインタであるかを示すように、前記記述子のコピーを修正することを特徴とするデータスイッチ。
  2. 前記プロキシコントローラが、前記第1クラスのポインタと前記第2クラスのポインタとが前記データスイッチによって互いに区別可能になるように、当該プロキシコントローラが有する前記記述子のコピーを修正することを特徴とする請求項1に記載のデータスイッチ。
  3. 前記プロキシコントローラが、前記第1クラスのポインタ中の1つ以上の非上位ビットを第1設定値に設定し、前記第2クラスのポインタ中の1つ以上の非上位ビットを第2設定値に設定するように構成されていることを特徴とする請求項2に記載のデータスイッチ。
  4. 前記第1クラスのポインタ及び/または前記第2クラスのポインタ中の、前記1つ以上の非上位ビット以外の追加的な非上位ビットを、複数のサーバーのうち、元の未修正の前記記述子及び/または前記データバッファを含むサーバーを識別するように設定することを特徴とする請求項3に記載のデータスイッチ。
  5. 前記プロキシコントローラが、前記サーバーの前記アドレス空間を、前記プロキシコントローラの仮想アドレス空間内にマッピングするように構成されていることを特徴とする請求項1〜4のいずれかに記載のデータスイッチ。
  6. 前記記述子を、前記仮想空間の第1組の領域内にマッピングし、前記データバッファを、前記仮想アドレス空間の第2組の領域内にマッピングすることを特徴とする請求項5に記載のデータスイッチ。
  7. 前記第1組の領域と前記第2組の領域とが、不連続な領域であることを特徴とする請求項6に記載のデータスイッチ。
  8. 前記第1組の領域及び前記第2組の領域の各々が、それぞれ単一の第1領域及び単一の第2領域で構成されることを特徴とする請求項6または7に記載のデータスイッチ。
  9. 前記データスイッチが、前記仮想アドレス空間の前記第1組の領域へのアクセスを、前記プロキシコントローラを経由してルーティングし、前記仮想アドレス空間の前記第2組の領域へのアクセスを、前記I/O装置と前記サーバーとの間で直接ルーティングするように構成され、前記第1組の領域へのアクセスは制御トラフィックから成り、前記第2組の領域へのアクセスはデータトラフィックから成ることを特徴とする請求項6、7または8に記載のデータスイッチ。
JP2010536539A 2007-12-07 2008-12-01 制御パス入出力仮想化方法 Active JP5469081B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US1225707P 2007-12-07 2007-12-07
GB0723939.5 2007-12-07
US61/012,257 2007-12-07
GB0723939.5A GB2455347B (en) 2007-12-07 2007-12-07 Control path I/O virtualisation
PCT/GB2008/051139 WO2009071941A1 (en) 2007-12-07 2008-12-01 Control path i/o virtualisation

Publications (2)

Publication Number Publication Date
JP2011507065A JP2011507065A (ja) 2011-03-03
JP5469081B2 true JP5469081B2 (ja) 2014-04-09

Family

ID=39016318

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010536539A Active JP5469081B2 (ja) 2007-12-07 2008-12-01 制御パス入出力仮想化方法

Country Status (5)

Country Link
US (1) US9021125B2 (ja)
JP (1) JP5469081B2 (ja)
CN (1) CN101889263B (ja)
GB (1) GB2455347B (ja)
WO (1) WO2009071941A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2460841B (en) * 2008-06-10 2012-01-11 Virtensys Ltd Methods of providing access to I/O devices
WO2012073304A1 (ja) 2010-11-29 2012-06-07 株式会社日立製作所 計算機システム、それに使用されるスイッチ及びパケット転送制御方法
US8923149B2 (en) * 2012-04-09 2014-12-30 Futurewei Technologies, Inc. L3 gateway for VXLAN
EP2823617B1 (de) * 2012-05-31 2018-07-11 Siemens Aktiengesellschaft Kommunikation zweier clients über einen server
US9319349B2 (en) * 2013-06-20 2016-04-19 Micron Technology, Inc. Encapsulation enabled PCIE virtualisation
US9806998B2 (en) * 2014-06-06 2017-10-31 Extreme Networks, Inc. Method of reducing traffic loss when bringing up a switch within a multi chassis switch cluster without using dedicated intra cluster links
US10073725B2 (en) * 2016-02-11 2018-09-11 Micron Technology, Inc. Distributed input/output virtualization
CN115176428A (zh) * 2020-01-21 2022-10-11 哲库科技有限公司 软硬件互通系统中的命令和响应描述符处理
US11641978B2 (en) 2020-12-31 2023-05-09 Sharkninja Operating Llc Micro puree machine

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5386524A (en) * 1992-04-16 1995-01-31 Digital Equipment Corporation System for accessing information in a data processing system
US6216167B1 (en) * 1997-10-31 2001-04-10 Nortel Networks Limited Efficient path based forwarding and multicast forwarding
CN100397372C (zh) * 1998-01-22 2008-06-25 英纳瑞公司 用于通用数据交换网关的方法和装置
AU2060101A (en) * 1999-12-10 2001-06-18 Diva Systems Corporation Method and apparatus of load sharing and improving fault tolerance in an interactive video distribution system
CN1307570C (zh) * 2001-01-31 2007-03-28 国际商业机器公司 控制数据处理系统间经由存储器的数据流的方法和装置
US6463265B1 (en) * 2001-06-05 2002-10-08 International Business Machines Corp. Data source hand-off in a broadcast-based data dissemination environment
JP2003044421A (ja) * 2001-07-26 2003-02-14 Fujitsu Ltd 仮想ストレージシステム及び同システムに使用されるスイッチングノード
JP4207520B2 (ja) * 2001-10-02 2009-01-14 株式会社日立製作所 排他制御装置及び排他制御方法
US7243229B2 (en) * 2001-10-02 2007-07-10 Hitachi, Ltd. Exclusive access control apparatus and method
US20030105830A1 (en) * 2001-12-03 2003-06-05 Duc Pham Scalable network media access controller and methods
US7171495B2 (en) * 2002-05-06 2007-01-30 Silverstorm Technologies, Inc. System and method for implementing virtual adapters and virtual interfaces in a network system
US7752361B2 (en) * 2002-06-28 2010-07-06 Brocade Communications Systems, Inc. Apparatus and method for data migration in a storage processing device
US20040028043A1 (en) * 2002-07-31 2004-02-12 Brocade Communications Systems, Inc. Method and apparatus for virtualizing storage devices inside a storage area network fabric
US6883083B1 (en) * 2002-12-20 2005-04-19 Veritas Operating Corporation System and method for maintaining and accessing information regarding virtual storage devices
US7669032B2 (en) * 2003-11-26 2010-02-23 Symantec Operating Corporation Host-based virtualization optimizations in storage environments employing off-host storage virtualization
US7633955B1 (en) * 2004-02-13 2009-12-15 Habanero Holdings, Inc. SCSI transport for fabric-backplane enterprise servers
ATE422261T1 (de) * 2004-02-18 2009-02-15 Harman Becker Automotive Sys Atapi schalter
KR100601886B1 (ko) * 2004-07-12 2006-07-19 삼성전자주식회사 이종 네트워크 간 핸드오버 제어방법
JP4309321B2 (ja) * 2004-09-28 2009-08-05 株式会社日立製作所 ネットワークシステムの運用管理方法及びストレージ装置
US20060193327A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation System and method for providing quality of service in a virtual adapter
US20060235973A1 (en) * 2005-04-14 2006-10-19 Alcatel Network services infrastructure systems and methods
US7620741B2 (en) * 2005-04-22 2009-11-17 Sun Microsystems, Inc. Proxy-based device sharing
CN100413291C (zh) * 2005-10-26 2008-08-20 广东省电信有限公司研究院 宽带网络上的业务区分和业务服务质量控制的实现方法
US9032164B2 (en) * 2006-02-17 2015-05-12 Emulex Corporation Apparatus for performing storage virtualization
JP4175379B2 (ja) * 2006-04-25 2008-11-05 日本電気株式会社 ファイル共有方法およびファイル共有システム

Also Published As

Publication number Publication date
JP2011507065A (ja) 2011-03-03
GB2455347A (en) 2009-06-10
US9021125B2 (en) 2015-04-28
CN101889263A (zh) 2010-11-17
US20090150563A1 (en) 2009-06-11
CN101889263B (zh) 2013-04-03
WO2009071941A1 (en) 2009-06-11
GB0723939D0 (en) 2008-01-23
GB2455347B (en) 2012-04-11

Similar Documents

Publication Publication Date Title
JP5469081B2 (ja) 制御パス入出力仮想化方法
US8176204B2 (en) System and method for multi-host sharing of a single-host device
US7574536B2 (en) Routing direct memory access requests using doorbell addresses
US7293129B2 (en) Flexible routing and addressing
CN108268412B (zh) 用于扩展外围组件互连高速结构的系统和方法
US8316377B2 (en) Sharing legacy devices in a multi-host environment
US7565463B2 (en) Scalable routing and addressing
EP1706824B1 (en) Method and apparatus for shared i/o in a load/store fabric
US7613864B2 (en) Device sharing
US7620741B2 (en) Proxy-based device sharing
US7620066B2 (en) Method and apparatus for shared I/O in a load/store fabric
US7865654B2 (en) Programmable bridge header structures
US8374175B2 (en) System and method for remote direct memory access over a network switch fabric
US8103810B2 (en) Native and non-native I/O virtualization in a single adapter
KR101364820B1 (ko) 시스템, 클러스터 포트 및 방법
US7694047B1 (en) Method and system for sharing input/output devices
EP2722771B1 (en) Controller integration
US20070050520A1 (en) Systems and methods for multi-host extension of a hierarchical interconnect network
JP5490336B2 (ja) Pciエクスプレス・マルチプル・ルートi/o仮想化環境における低待ち時間の優先順位付け
US20060253619A1 (en) Virtualization for device sharing
US20070025354A1 (en) Method and apparatus for shared i/o in a load/store fabric
US7783822B2 (en) Systems and methods for improving performance of a routable fabric
US11829309B2 (en) Data forwarding chip and server
JP2023529831A (ja) 直接取り付けられたディスパッチを使用した、分離されたスイッチ制御経路
US20170357594A1 (en) Transactional memory that is programmable to output an alert if a predetermined memory write occurs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111125

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130403

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130625

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130913

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: 20140107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140130

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5469081

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

S631 Written request for registration of reclamation of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313631

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250