説明

DMAセキュリティチェック回路及びDMAセキュリティチェック方法

【課題】IO TLB(I/O Translation Look aside Buffer)でキャッシュミスした場合にDMAが待たされることを防止する。
【解決手段】IOV(I/O Virtualization) HBA(Host Bus Adapter)に対応したDMA(Direct Memory Access)セキュリティチェック回路が、HBAからのDMAリード要求に対しディスクリプタフェッチを検知した場合に、当該DMAリード要求のリプライデータの中から抽出した論理アドレスと、当該リプライデータに含まれるリクエストIDとが同じゲスト空間のものであるかを判定し、同じゲスト空間のものである場合に当該リプライデータに含まれるアドレスが適切であると判断する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、IOV(I/O Virtualization) HBA(Host Bus Adapter)に対応したルートコンプレックスに関し、より詳細には、各DMA(Direct Memory Access)のアドレスが妥当であるか否かのチェックに関する。
【背景技術】
【0002】
一般的なコンピュータシステムの構成及び動作について図1を参照して説明する。
【0003】
図1を参照すると、一般的なコンピュータシステムはメモリ100、CPU200、ルートコンプレックス300及びHBA400を有する。
【0004】
また、メモリ100上にはTLB(Translation Look aside Buffer)110が設けられている。
【0005】
ルートコンプレックス300はCPU200のサウスブリッジとして存在する。なお、ルートコンプレックス300を複数の任意の個数のCPUでシェアする事も可能である。CPU200は別ポートでメモリ100に接続され、ルートコンプレックス300からのリクエスト、CPU200からのリプライデータを適宜CPU200にてルーティングする。ルートコンプレックス300は配下にHBA400を複数個持つ。そして、ルートコンプレックス300は、CPU200からHBA400へのリード・ライト、あるいはHBA400からのDMA要求を適切なCPU200へ、またそのリプライを適切なHBA400へルーティングする。
【0006】
一方、近年OS(Operating System)の仮想化技術により、図1に示すような1つのシステム上で複数のOSが混在して動作することが可能となった。しかしながら安全で安定した装置で在るためには、複数のOSがそれぞれ互いのメモリ領域を侵犯しないことが重要となる。
【0007】
この点、CPUが直接行うメモリトランザクションに関してはゲストOSに提示するページ情報によって、複数のOSがそれぞれ互いのメモリ領域を侵犯しないことを達成できる。
【0008】
一方、一般的な仕様である物理アドレスでメモリを直接操作するI/O DMAは、CPUが直接関与しない所で発生するので、ゲストOS間での干渉のチェックが必要であり、この干渉のチェックを行うために少なからずI/O性能か、使用できるI/O数か、の何れかを制限しなくてはならないというトレードオフが発生していた。
【0009】
上述の問題を解消するために、現在PCI−SIGでIOVの仕様化を策定中である。IOVは一つのHBA上に複数のHBAが存在しているかの様に見せる事が可能であり、それぞれのゲストOSに異なるHBAとして見せることが可能である。図2を参照するとHBA400上に仮想HBAが複数(例として、仮想HBA401−1、401−2及び401−nを図示する。)存在するように見せていることが分かる。
【0010】
また、DMAリクエストに対してチェックを行う事により、ゲストOS間の干渉を監視する。
【0011】
このような、IOVを利用した技術の具体例として、例えば特許文献1に記載の技術が挙げられる。特許文献1に記載の技術では、IOVによる仮想化及びリクエストに対してのチェックを利用する。物理的には一つのホスト2で二つの仮想マシン(VM0,VM1)を動作させる。これら二つの仮想マシンは同じプログラムを実行し、同一の演算処理を行なっている。そして、仮想インターフェースVIF0,VIF1へのアクセスを、I/Oデバイス1内部に備えられたcheckerよって一致しているかどうか検査する、これによりI/Oデバイスに対するI/Oアクセスの信頼性を向上させることが可能となる。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特開2009−238068号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
上述したように、IOVは一般的に利用されている。しかしながらIOVにおいては、解決すべき課題が存在している。この課題について説明するためにIOVについて更に詳細に説明する。
【0014】
具体的には、DMAに含まれるリクエストIDにはバス番号、デバイス番号、ファンクション番号が含まれており、これとゲストOSが対応付けられている。更にゲストOSと論理空間はTLBにより対応付けられている。そのため、リクエストIDよりゲストOSを特定し、DMAのアドレスがそのゲストOS用の空間であるかをチェックすれば良い。これを実現する為、IOVではチェック機構の簡易化のために、DMAを論理アドレスで行わせる仕様としている。もっとも、論理アドレスそのままではメモリ側に発行できないので、ルートコンプレックスにて論理から物理に変換する機構が新たに設けられている。この機構はメモリ上のTLBに対し、その変換結果をIO TLB(I/O Translation Look aside Buffer)としてルートコンプレックス上に持ち、DMAリクエストに対してIO TLBを索引してアドレス変換を行うものである。
【0015】
しかしながら、上述のようなIOVにおいては、次のような課題がある。
【0016】
第1の課題は、IO TLBでキャッシュミスした場合にDMAが待たされるということである。
【0017】
第2の課題は、OSの仮想数が増えると必要なI/O数も増えるため、IO TLBのサイズが仮想数とI/O性能を決定する要因となる事である。
【0018】
そこで、本発明はDMAの待ち合わせを発生させずに、小さなサイズのIO TLBでもI/O性能を低下させることが無く、DMA監視が可能な、DMAセキュリティチェック回路及びDMAセキュリティチェック方法を提供することを目的とする。
【課題を解決するための手段】
【0019】
本発明の第1の観点によれば、IOV(I/O Virtualization) HBA(Host Bus Adapter)に対応したDMA(Direct Memory Access)セキュリティチェック回路において、HBAからのDMAリード要求に対しディスクリプタフェッチを検知した場合に、当該DMAリード要求のリプライデータの中から抽出した論理アドレスと、当該リプライデータに含まれるリクエストIDとが同じゲスト空間のものであるかを判定し、同じゲスト空間のものである場合に当該リプライデータに含まれるアドレスが適切であると判断することを特徴とするセキュリティチェック回路が提供される。
【0020】
本発明の第2の観点によれば、IOV(I/O Virtualization) HBA(Host Bus Adapter)に対応したルートコンプレックスが行うDMA(Direct Memory Access)セキュリティチェック方法において、HBAからのDMAリード要求に対しディスクリプタフェッチを検知した場合に、当該DMAリード要求のリプライデータの中から抽出した論理アドレスと、当該リプライデータに含まれるリクエストIDとが同じゲスト空間のものであるかを判定し、同じゲスト空間のものである場合に当該リプライデータに含まれるアドレスが適切であると判断することを特徴とするセキュリティチェック方法が提供される。
【発明の効果】
【0021】
本発明によれば、ディスクリプタフェッチ時にゲストOSとアドレス妥当性を検証していることから、DMAが待たされることを無くすことが可能となる。
【0022】
また、本発明によれば、ディスクリプタフェッチ時にアドレス変換を行うことから小さなサイズのIO TLBであってもI/O性能を低下させないことが可能となる。
【図面の簡単な説明】
【0023】
【図1】一般的なコンピュータシステムの基本的構成を表す図である。
【図2】仮想HBAについて示すイメージ図である。
【図3】本発明の実施形態の基本的構成を表す図である。
【図4】PCI−SIGが策定中のIOVに対応したルートコンプレックスについて表す図である。
【図5】本発明の実施形態の基本的動作を表すフローチャートである。
【発明を実施するための形態】
【0024】
次に、本発明の実施形態について図面を用いて詳細に説明する。
【0025】
図3を参照すると、本実施形態はルートコンプレックス300と、HBA400を有する。ルートコンプレックス300は、図1に示したようにCPU200と接続されている。ここで、ルートコンプレックス300は、本願発明における「DMAセキュリティチェック回路」に相当する。なお図1に示した構成については既に説明をしているため、再度の説明は省略する。
【0026】
また、本実施形態のルートコンプレックス300はIO TLB310、アドレス変換部320、区間一致判定部330、ポート選択部340、アドレス抽出部350及びディスクリプタ検知部360を有する。
【0027】
ここで本実施形態の各部について説明するにあたり、前提として、仮想OSを一つの装置に混在させる一般的技術及びPCI−SIGが策定中のIOVに対応したルートコンプレックスについて説明する。
【0028】
仮想OSを一つの装置に混在させる一般的技術には、各ゲストOSのI/O DMA転送を互いの物理メモリ領域の干渉を無くすように監視するという課題が合った。その課題を克服する為に一般的には3つの手段が存在する。
【0029】
1つ目はサービスVMモデルで、各ゲストOSが行うHBAへのアクセスは全てホストOSを介して行い、ホストOSにて監視するという方法である。課題としてはゲストOSの改造が必要になるのと、ホストOS側でどのゲストOSに対し実行するかの調停が発生する為、I/O性能が出ない点が上げられる。
【0030】
2つ目はハイパーバイザーモデルで、ハイパーバイザーで各ゲストOSのI/O命令をエミュレーションする事により行う。監視と言う点では1つ目と同じではあるが、各ゲストOS毎にエミュレータを割り付けられるので調停が無く、性能面では多少優位にある。課題としては仮想数によりハイパーバイザーが巨大になってしまうのと、エミュレーションのためHBAの特殊機能はサポートが難しく、標準的な機能に留まる点が上げられる。
【0031】
3つ目はゲストOS毎に異なるHBAを割り付ける方法で、性能面では単一OSと遜色無く、HBAの特殊機能も利用可能となる。しかし、課題としてはゲストOS数の分だけI/O数が必要となるので、搭載可能なI/O数により構成できる仮想数が制限されてしまう点がある。
【0032】
上述した課題を克服するべく、近年I/Oの仮想化(IOV)が標準化されようとしている。IOVではHBA内も仮想化させ、バス番号、デバイス番号、ファンクション番号等が異なるデバイスとしてOS側に見せる事が可能となる。このことから、図2に示すように単一の物理ポートしか持たないHBAであっても、HBAの空間としては複数個持つ事が可能となる。
【0033】
また、DMAアドレスの干渉チェックは、一般的には物理アドレスで行われていたDMAを論理アドレスで行う事により、DMAパケットのリクエストIDに含まれるバス番号、デバイス番号、ファンクション番号と、アクセスしようとしている論理空間が予め設定された紐付けと合致しているかどうかをルートコンプレックス(チップセット)にて行う。この為、ルートコンプレックスには一般的には無かったIO TLBというメモリ上にあるTLBのキャッシュが必要となり、DMAリクエスト内のアドレスに対して論理空間から物理空間への変換が必要性となった。課題としてはIO TLBは論理アドレスから物理アドレスに変換する際の変換結果をキャッシュしたものであり、ゲストOSの仮想数が増えてDMAが多数入り混じるとIO TLBのキャッシュミスを誘発し、結果メモリ上にて再度変換の必要性が生じる。このため仮想OSの多重度の高いシステムにおいては、DMAの待ち合わせが発生するかもしれず、IO TLBのサイズが許容する仮想数と、I/O性能を決定する要因となってしまう点である。
【0034】
図4を参照して、PCI−SIGが策定中のIOVに対応したルートコンプレックスについて詳細に説明する。図4に示すルートコンプレックス300は、IO TLB310、アドレス変換部320及び区間一致判定部330を有する。
【0035】
HBA400より上げられる全てのDMAリクエストに対しアドレス変換部320にて論理アドレスから物理アドレスに変換する。
【0036】
変換はIO TLB310に対し論理アドレスにて索引し、物理アドレスを得ることにより行われる。この際に、IO TLB310は索引として与えられた論理アドレスの登録が無かった場合はCPU200に対して変換を要求する。変換した結果はキャッシュとしてIO TLB310に登録するため、一つのエントリをLRU(Least Recently Used)に従い置き換える。区間一致判定部330はリクエストIDと論理アドレスが同一OSに対して割当てられているものかどうかを判定し、合致しない場合はリクエストに呼応したコンプリーションを例外としてHBA400側に返す。
【0037】
一方、本実施形態では、図4に示したルートコンプレックス300のようにデータの送受信を行うDMA時にチェックを行うのでは無く、ディスクリプタフェッチのDMA時にリプライデータに含まれるアドレス部分をチェックする事により各ゲストOS間の干渉のチェック行う。これを実現するにはIOVの標準仕様に対し以下の3つの改造が必要である。
【0038】
1つ目はIOVのDMAを論理アドレスでは無く、通常通り物理アドレスで行わせる点である。これによりデバイスとの送受信DMA発行時には待ち合わせが発生しない。
【0039】
2つ目はDMAリードで要求されたアドレスがディスクリプタ領域であるかどうかを検知する為、予めディスクリプタ領域の論理メモリアドレスを登録しておき、合致した場合はそのリプライを監視する手段が必要である。
【0040】
3つ目はそのリプライデータの何処にバッファのアドレスが書かれているかの登録がルートコンプレックス側に必要となり、抽出したアドレスに対して論理アドレスから物理アドレスへの変換が必要である。
【0041】
次に、図2を参照して本実施形態の説明に戻る。
【0042】
図2においてはIO TLB310は、アドレス変換部320から送られてくる論理アドレスに対してキャッシュ登録があればその物理アドレスを返却し、無い場合はCPUに対し変換を要求してその結果を新たにキャッシュデータとして登録する。
【0043】
ディスクリプタ検知部360は、DMAリード要求に対し物理アドレスを取得し、そのアドレスが予め登録されているディスクリプタ領域であるかを判定する。
【0044】
アドレス抽出部350は、ディスクリプタフェッチに対するリプライデータからアドレス部分を抽出する。
【0045】
アドレス変換部320は、ディスクリプタに含まれる論理アドレスを物理アドレスに変換する。変換の際にIO TLB310を索引する。変換したアドレスはDMAのコンプリーションデータとしてHBA400に返却する。
【0046】
空間一致判定部330は、アドレス抽出部350で抽出したアドレスと、リプライデータに含まれるリクエストIDとで予め設定された各ゲストOSに対する対応が取れているかを判定する。判定した結果、一致が取れない場合はシステム例外としてエラーをCPU200に報告する。
【0047】
ポート選択部340は一般的なポート選択部である。通常ルートコンプレックス300配下には複数のPCI Expressポートが存在し、どのHBA400のリクエストを選択するかの調停を行う。通常はメモリ側に発行できるリクエスト数は制限しているため、制限数を越えた場合はクレジットが無い事を宣言してHBA400側に待たせる役目も果たす。DMAリードの場合はコンプリーションバッファのサイズにより使用可能なクレジット数が決まっている。
【0048】
図3及び図5のフローチャートを参照して本実施形態の動作について説明する。
【0049】
まず、ルートコンプレックス300がHBA400からのDMAリード要求を受ける(ステップS10)。そしてルートコンプレックス300はこのDMAリード要求に対し、ディスクリプタ検知部360により該DMAがディスクリプタフェッチかどうかを判定する(ステップS11)。
【0050】
そして、ディスクリプタフェッチであった場合は(ステップS11においてYes)アドレス抽出部350にリクエストIDを通知する(ステップS12)。
【0051】
アドレス抽出部350はリクエストIDと一致するリプライデータの中からバッファアドレス部分を抽出し、アドレス変換部320と空間一致判定部330に引き渡す(ステップS13)。
【0052】
アドレス変換部320は論理アドレスにてIO TLB310を索引して物理アドレスを取得し、得られた物理アドレスを元のディスクリプタのアドレスと置換してコンプリーションデータとしてHBA400に引き渡す(ステップS14)。
【0053】
但し空間一致判定部330でゲストOS間の干渉チェックを並行して行う。具体的には、アドレス抽出部350で抽出したアドレスと、リプライデータに含まれるリクエストIDとが同じゲスト空間のものであるかを判定し(ステップS15)、論理アドレスとリクエストIDの対応一致がとれたもの(同じゲスト空間のもの)のみをコンプリーションとして返却し(ステップS15においてYes、ステップS16)、一致しない場合は(ステップS15においてNo)システム例外としてエラーをCPUに報告する(ステップS17)。
【0054】
以上説明した本発明の実施形態は、以下に示すような多くの効果を奏する。
【0055】
第1の効果はキャッシュミスの不特定要因による性能の劣化が無くなることである。
【0056】
その理由は、ディスクリプタフェッチ時にゲストOSとアドレスの妥当性を検証しているので、デバイスとのデータ送受信の為のDMAは止まる事無く動作できるからである。
【0057】
第2の効果はハードウェア資源を節約出来ることである。
【0058】
その理由は、ディスクリプタフェッチ時にアドレス変換を行うので、多数のゲストOSによるDMAが入り混じった状況下においてIO TLBのキャッシュが小さなサイズであっても、一度のキャッシュフィルでディスクリプタ内全ての変換が可能だからである。
【0059】
なお、本発明の実施形態であるDMAセキュリティチェック回路は、ハードウェアにより実現することもできるが、コンピュータをそのDMAセキュリティチェック回路として機能させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【0060】
また、本発明の実施形態によるDMAセキュリティチェック方法は、ハードウェアにより実現することもできるが、コンピュータにその方法を実行させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【0061】
また、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【産業上の利用可能性】
【0062】
本発明は、例えばクラウド、ブレードサーバ等の仮想化を行えるコンピュータシステムに好適である。
【符号の説明】
【0063】
100 メモリ
110 TLB
200 CPU
300 ルートコンプレックス
310 IO TLB
320 アドレス変換部
330 区間一致判定部
340 ポート選択部
350 アドレス抽出部
360 ディスクリプタ検知部
400 HBA

【特許請求の範囲】
【請求項1】
IOV(I/O Virtualization) HBA(Host Bus Adapter)に対応したDMA(Direct Memory Access)セキュリティチェック回路において、
HBAからのDMAリード要求に対しディスクリプタフェッチを検知した場合に、当該DMAリード要求のリプライデータの中から抽出した論理アドレスと、当該リプライデータに含まれるリクエストIDとが同じゲスト空間のものであるかを判定し、同じゲスト空間のものである場合に当該リプライデータに含まれるアドレスが適切であると判断することを特徴とするセキュリティチェック回路。
【請求項2】
請求項1に記載のセキュリティチェック回路において、
前記リプライデータから抽出された論理アドレスを物理アドレスに変換するために、予めディスクリプタの書式をアドレス別に登録していることを特徴とするセキュリティチェック回路。
【請求項3】
請求項1又は2に記載のセキュリティチェック回路において、
前記ディスクリプタフェッチを検知した場合に前記リプライデータから抽出された論理アドレスを物理アドレスに変換することによりコンプリーションデータを生成し当該コンプリーションデータを前記HBAに引き渡すことを特徴とするセキュリティチェック回路。
【請求項4】
請求項1乃至3の何れか1項に記載のセキュリティチェック回路において、
前記判定の結果適切であると判断できなかった場合は、システム例外としてエラーをCPUに報告することを特徴とするセキュリティチェック回路。
【請求項5】
請求項1乃至4の何れか1項に記載のセキュリティチェック回路において、
問い合わせを受けた論理アドレスに対してキャッシュ登録があればその物理アドレスを返却し、無い場合はCPUに対し変換を要求してその結果を新たにキャッシュデータとして登録するIO TLB(I/O Translation Look aside Buffer)と、
前記HBAからのDMAリード要求に対し、該DMAがディスクリプタフェッチかどうかを判定するディスクリプタ検知手段と、
前記DMAがディスクリプタフェッチだった場合に当該DMAの前記リクエストIDを通知され、当該リクエストIDと一致するリプライデータの中からアドレス部分を抽出するアドレス抽出手段と、
前記抽出されたアドレスに基づき前記IO TLBを索引して物理アドレスを取得し、得られた物理アドレスを元のディスクリプタのアドレスと置換してコンプリーションデータとするアドレス変換手段と、
前記アドレス変換手段の動作と並行して前記アドレスが適切か否かの判断を行う空間一致判定手段と、
を備えることを特徴とするセキュリティチェック回路。
【請求項6】
IOV(I/O Virtualization) HBA(Host Bus Adapter)に対応したルートコンプレックスが行うDMA(Direct Memory Access)セキュリティチェック方法において、
HBAからのDMAリード要求に対しディスクリプタフェッチを検知した場合に、当該DMAリード要求のリプライデータの中から抽出した論理アドレスと、当該リプライデータに含まれるリクエストIDとが同じゲスト空間のものであるかを判定し、同じゲスト空間のものである場合に当該リプライデータに含まれるアドレスが適切であると判断することを特徴とするセキュリティチェック方法。
【請求項7】
請求項6に記載のセキュリティチェック方法において、
前記リプライデータから抽出された論理アドレスを物理アドレスに変換するために、予めディスクリプタの書式をアドレス別に登録していることを特徴とするセキュリティチェック方法。
【請求項8】
請求項6又は7に記載のセキュリティチェック方法において、
前記ディスクリプタフェッチを検知した場合に前記リプライデータから抽出された論理アドレスを物理アドレスに変換することによりコンプリーションデータを生成し当該コンプリーションデータを前記HBAに引き渡すことを特徴とするセキュリティチェック方法。
【請求項9】
請求項6乃至8の何れか1項に記載のセキュリティチェック方法において、
前記判定の結果適切であると判断できなかった場合は、システム例外としてエラーをCPUに報告することを特徴とするセキュリティチェック方法。
【請求項10】
請求項6乃至9の何れか1項に記載のセキュリティチェック方法において、
問い合わせを受けた論理アドレスに対してキャッシュ登録があればその物理アドレスを返却し、無い場合はCPUに対し変換を要求してその結果を新たにキャッシュデータとして登録するIO TLB(I/O Translation Look aside Buffer)を用意するステップと、
前記HBAからのDMAリード要求に対し、該DMAがディスクリプタフェッチかどうかを判定するディスクリプタ検知ステップと、
前記DMAがディスクリプタフェッチだった場合に当該DMAの前記リクエストIDを通知され、当該リクエストIDと一致するリプライデータの中からアドレス部分を抽出するアドレス抽出ステップと、
前記抽出されたアドレスに基づき前記IO TLBを索引して物理アドレスを取得し、得られた物理アドレスを元のディスクリプタのアドレスと置換してコンプリーションデータとするアドレス変換ステップと、
前記アドレス変換ステップの動作と並行して前記アドレスが適切か否かの判断を行う空間一致判定ステップと、
を備えることを特徴とするセキュリティチェック方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−203937(P2011−203937A)
【公開日】平成23年10月13日(2011.10.13)
【国際特許分類】
【出願番号】特願2010−69782(P2010−69782)
【出願日】平成22年3月25日(2010.3.25)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】