I/O ÃÌ µw IoT = îqb ¹ÑÄ¢£ ExpEther w

9
情報処理学会研究報告 IPSJ SIG Technical Report I/O デバイスの IoT 化を実現する ソフトウェア ExpEther の提案 鈴木 順 1,a) 辻聡 1, 1,b) 林 佑樹 1,c) 竹中 崇 1, 2,d) 概要IoT(Internet of Things) では,IoT デバイスをネットワークに接続したホストから制御する機会が 多い.各 IoT デバイスは制御ホストと通信を行うため,CPU,メモリ,I/O デバイスを備える小型コン ピュータと合わせて実装される.小型コンピュータはソフトウェアネットワークスタックを用いて制御ホ ストと通信する.本稿では,IoT デバイスが小型コンピュータではなく I/O デバイスだけと実装されるこ れまでより細粒度の IoT を議論する.I/O デバイスは遠隔制御ホストのローカルデバイスとして仮想化さ れ,IoT デバイスは I/O デバイスを介したデータ通信によって制御される.このような IoT システムに より IoT デバイスノードの構成が単純化され,実装コストの低減が実現される.しかし,従来手法では制 御ホストと IoT デバイスと合わせて実装される遠隔 I/O デバイスの接続に特殊なハードウェアインター フェースが必要だった.そこで本稿では制御ホストとネットワークに分散された I/O デバイスを接続す る新しいソフトウェア仮想化手法,ソフトウェア ExpEther を提案する.提案手法により,制御ホストの NIC(Network Interface Card) を介してのみ通信できる遠隔の I/O デバイスが,ホストの I/O デバイスツ リーに属するローカル I/O デバイスとして仮想化される.これにより,携帯型からラックマウント型に及 ぶあらゆるコンピュータが提案ソフトウェアのインストールにより遠隔の IoT デバイスを制御できる.ま た仮想化は PCI Express(PCIe) 層で行うため,提案手法は PCIe に準拠する I/O デバイスをデバイスドラ イバの改造なく遠隔ホストに接続できる.本稿では提案手法のソフトウェア ExpEther を実装し,NIC びストレージコントローラに対し評価を行うことでその実現性を実証する. IoT of I/O Devices with Software ExpEther Suzuki Jun 1, a) Tsuji Satoshi 1, 1, b) Hayashi Yuki 1, c) Takenaka Takashi 1, 2, d) 1. はじめに IoT(Internet of Things) の普及によりセンサ,乗り物, 生産機械等の多くのデバイスがネットワークに接続され るようになった.通常,これらの IoT デバイスは遠隔の 制御ホストから制御される.図 1(a) に示すように,個々 IoT デバイスは制御ホストと通信を行うために小型の コンピュータと合わせて実装される.小型のコンピュータ 1 NEC システムプラットフォーム研究所 神奈川県川崎市中原区下沼部 1753 1 現在,NEC IoT デバイス研究所 2 現在,NEC サービス・テクノロジー本部 a) [email protected] b) [email protected] c) [email protected] d) [email protected] CPU,メモリ,I/O デバイスを含む.そして,OS やア プリケーションを動作させ,ソフトウェアネットワークス タックを用いて制御ホストと通信する. 本稿では,図 1(b) に示すように,IoT デバイスが小型 コンピュータではなく I/O デバイスだけと実装されるよ り細粒度の IoT を議論する.I/O デバイスは遠隔の制御ホ ストのローカルデバイスとして仮想化され,IoT デバイス I/O デバイスを介した制御ホストとのデータ通信によっ て制御される.このような IoT システムの実現を本稿では I/O デバイスの IoT 化と呼ぶ.IoT 化される I/O デバイス の例は USB(universal-serial-bus) コントローラ,ストレー ジコントローラ,シリアルインターフェースである.また IoT 化された I/O デバイスに制御される IoT デバイスの 2017 Information Processing Society of Japan 1 Vol.2017-OS-140 No.6 2017/5/16

Transcript of I/O ÃÌ µw IoT = îqb ¹ÑÄ¢£ ExpEther w

情報処理学会研究報告IPSJ SIG Technical Report

I/OデバイスのIoT化を実現するソフトウェアExpEtherの提案

鈴木 順1,a) 辻 聡1,†1,b) 林 佑樹1,c) 竹中 崇1,†2,d)

概要:IoT(Internet of Things)では,IoTデバイスをネットワークに接続したホストから制御する機会が

多い.各 IoT デバイスは制御ホストと通信を行うため,CPU,メモリ,I/O デバイスを備える小型コン

ピュータと合わせて実装される.小型コンピュータはソフトウェアネットワークスタックを用いて制御ホ

ストと通信する.本稿では,IoTデバイスが小型コンピュータではなく I/Oデバイスだけと実装されるこ

れまでより細粒度の IoTを議論する.I/Oデバイスは遠隔制御ホストのローカルデバイスとして仮想化さ

れ,IoT デバイスは I/O デバイスを介したデータ通信によって制御される.このような IoT システムに

より IoTデバイスノードの構成が単純化され,実装コストの低減が実現される.しかし,従来手法では制

御ホストと IoTデバイスと合わせて実装される遠隔 I/Oデバイスの接続に特殊なハードウェアインター

フェースが必要だった.そこで本稿では制御ホストとネットワークに分散された I/O デバイスを接続す

る新しいソフトウェア仮想化手法,ソフトウェア ExpEtherを提案する.提案手法により,制御ホストの

NIC(Network Interface Card)を介してのみ通信できる遠隔の I/Oデバイスが,ホストの I/Oデバイスツ

リーに属するローカル I/Oデバイスとして仮想化される.これにより,携帯型からラックマウント型に及

ぶあらゆるコンピュータが提案ソフトウェアのインストールにより遠隔の IoTデバイスを制御できる.ま

た仮想化は PCI Express(PCIe)層で行うため,提案手法は PCIeに準拠する I/Oデバイスをデバイスドラ

イバの改造なく遠隔ホストに接続できる.本稿では提案手法のソフトウェア ExpEtherを実装し,NIC及

びストレージコントローラに対し評価を行うことでその実現性を実証する.

IoT of I/O Devices with Software ExpEther

Suzuki Jun1,a) Tsuji Satoshi1,†1,b) Hayashi Yuki1,c) Takenaka Takashi1,†2,d)

1. はじめに

IoT(Internet of Things)の普及によりセンサ,乗り物,

生産機械等の多くのデバイスがネットワークに接続され

るようになった.通常,これらの IoT デバイスは遠隔の

制御ホストから制御される.図 1(a)に示すように,個々

の IoT デバイスは制御ホストと通信を行うために小型の

コンピュータと合わせて実装される.小型のコンピュータ

1 NEC システムプラットフォーム研究所神奈川県川崎市中原区下沼部 1753

†1 現在,NEC IoT デバイス研究所†2 現在,NEC サービス・テクノロジー本部a) [email protected]) [email protected]) [email protected]) [email protected]

は CPU,メモリ,I/Oデバイスを含む.そして,OSやア

プリケーションを動作させ,ソフトウェアネットワークス

タックを用いて制御ホストと通信する.

本稿では,図 1(b)に示すように,IoTデバイスが小型

コンピュータではなく I/Oデバイスだけと実装されるよ

り細粒度の IoTを議論する.I/Oデバイスは遠隔の制御ホ

ストのローカルデバイスとして仮想化され,IoTデバイス

は I/Oデバイスを介した制御ホストとのデータ通信によっ

て制御される.このような IoTシステムの実現を本稿では

I/Oデバイスの IoT化と呼ぶ.IoT化される I/Oデバイス

の例は USB(universal-serial-bus)コントローラ,ストレー

ジコントローラ,シリアルインターフェースである.また

IoT化された I/Oデバイスに制御される IoTデバイスの

ⓒ 2017 Information Processing Society of Japan 1

Vol.2017-OS-140 No.62017/5/16

情報処理学会研究報告IPSJ SIG Technical Report

図 1 ネットワークに接続した IoT デバイスの構成.(a) 小型コン

ピュータと合わせて実装された IoTデバイス.(b)I/Oデバイ

スのみと実装された IoT デバイス.

例は,USBやシリアルインターフェースからのコマンド

で制御されるセンサやアクチュエータである.これにより

IoTデバイスに個別に小型コンピュータを実装する場合と

比較して単純でコストが低減された IoTシステムを実現で

きる.また,小型コンピュータのソフトウェアアップデー

トやセキュリティ問題も解消される.

従来,I/Oデバイスのネットワークを構築するには,特

殊なハードウェアブリッジを用いていた [1], [2].これらの

ブリッジは制御ホストと I/Oデバイスをネットワークに接

続するために用いられる.そして通常のコンピュータの内

部の I/Oバスで送受信される I/Oパケットを,制御ホス

トと I/Oデバイスを接続するネットワーク上でトンネリン

グする.しかし,これらの技術の普及は特殊なハードウェ

アインターフェースを必要とするため制限があった.制御

ホストにはブリッジチップを実装した NICを I/Oスロッ

トに挿入するか,ホストのマザーボードにブリッジチップ

を実装する必要があった.この要件は実装コストを増加

させるだけでなく,I/Oスロットの予備がない小型のコン

ピュータや,既にサービスに導入されているホストへの適

用の障害になっていた.

本稿ではイーサネットで接続された I/Oデバイスと遠

隔ホストを接続するための新しいソフトウェア仮想化技術

を提案する.提案手法をソフトウェア ExpEtherと呼ぶ.

ソフトウェア ExpEtherは導入の容易さとあらゆる I/Oデ

バイスへの広い適用性を同時に実現する.導入容易とは制

御ホストに従来の特殊なハードウェアを必要としないとい

うことである.一方 I/Oデバイスのイーサネットへの接

続には我々が [1]で提案している従来手法のハードウェア

ブリッジを用いる.ソフトウェア ExpEtherをホストにイ

ンストールすることにより,携帯からラックマウント型に

及ぶあらゆるホストが遠隔の I/Oデバイスを制御できる.

また広い適用性はソフトウェア ExpEtherがホストと遠隔

I/Oデバイスを PCIeレイヤで接続することにより実現す

る.これにより PCIeに準拠するデバイスであればデバイ

スドライバを変更することなくイーサネットで接続可能に

なる.

ソフトウェアExpEtherは,イーサネットで接続した遠隔

の I/Oデバイスをホストの I/Oデバイスツリーに属するよ

うに仮想化する.ホストと遠隔 I/Oデバイスはホストの標

準 NICを介してのみ通信できる.ソフトウェア ExpEther

は接続したホストと遠隔 I/Oデバイスの間で PCIeトラン

ザクションをソフトウェアで実現する.提案手法の実装は

仮想マシン (VM)のパススルーモードを拡張することによ

り行った.パススルーモードでは PCIeレイヤにおいてホ

ストの I/OデバイスをVMに割り当てる仮想化機能が実現

されており,拡張して提案手法を実装することが容易だっ

た.ソフトウェア ExpEther は遠隔 I/O デバイスのコン

フィグレーション,アドレス領域の割り当て,I/Oパケッ

トの作成とイーサネットフレームへのカプセル化、VMと

遠隔 I/Oデバイスのアドレス空間のマッピング等の機能を

提供する.またこれらの主要な機能はホスト OSのアプリ

ケーションソフトウェアとして実装される.

本稿ではソフトウェア ExpEtherを実装しNICおよびス

トレージコントローラに対し評価を行うことで実現性を実

証する.また性能オーバヘッドに対する考察を行う.

以下本稿では 2節で遠隔 I/Oデバイスの仮想化技術への

要求,3節でソフトウェア ExpEtherのアーキテクチャ,4

節で VMへの実装,5節でプロトタイプを用いた評価結果

を述べ,最後に 6節でまとめる.

2. システム要求

本節では遠隔 I/Oデバイスの仮想化技術に対するシステ

ム要求を議論する.イーサネットで接続された I/Oデバイ

スはホストの I/Oデバイスツリーに属するように仮想化

される.本節で議論する要求は次節以降で提案するソフト

ウェア ExpEtherのアーキテクチャに反映されている.

導入容易性: I/Oデバイスの IoT化のために特殊なハード

ウェアインターフェースが必要であれば,システム導入の

障壁となる.従って新たな仮想化技術はソフトウェアで実

現されることが望ましい.特殊なハードウェアは導入コス

トを増加させるだけでなく,実装空間が制限された組込み

コンピュータでも課題となる.さらに既にサービスで稼働

しているシステムに特殊なハードウェアを導入することも

困難である.

スケーラビリティ: I/Oデバイスが IoT化されるシステム

では制御ホストに多数の遠隔 I/Oデバイスが割り当てられ

る.例えば工場において数百の生産機械やセンサを制御す

ることが想定される.従って新たな仮想化技術は接続する

I/Oデバイス数に関してスケーラビリティを提供する必要

がある.またホストと I/Oデバイスを接続するネットワー

クには複数のホストと I/Oデバイスの組が同時に接続でき

ることが望まれる.

システム再構成: ネットワークに分散した I/Oデバイスの

制御ホストへの割り当ては変更できることが望ましい.こ

ⓒ 2017 Information Processing Society of Japan 2

Vol.2017-OS-140 No.62017/5/16

情報処理学会研究報告IPSJ SIG Technical Report

図 2 ソフトウェア ExpEtherを含むシステム全体のアーキテクチャ

れらの変更はシステム管理者からの要求により直ちに,ま

た容易に行われるべきである.また,制御ホストのリブー

トを伴わずに行われるべきである.

互換性: 新たな仮想化技術は現在用いられているシステム

との互換性を保持することが望ましい.理想は現在のハー

ドウェアとソフトウェアを変更することなく導入できるこ

とである.従って,新たな仮想化技術では関連する部位へ

の変更を最小限に留めるべきである.今回の手法で関連す

る部位はホストと I/Oデバイスを接続するネットワークス

イッチ,ネットワークを用いて接続する I/Oデバイスとそ

のドライバ,ホストのOSである.またそれに加え,様々な

I/Oデバイスに同一の手法で対応できることが望ましい.

性能: 一般にハードウェア資源を仮想化する場合,仮想化

オーバヘッドが不可避である.今回仮想化する資源は遠隔

I/Oデバイスである.そこで遠隔 I/Oデバイスの性能に関

してデバイスをホストの I/Oスロットに直接設置する場

合と近い性能を実現することが望ましい.また仮想化に必

要な CPUの負荷を低減することで,ホストの他のアプリ

ケーションに影響を与えないことが重要である.

3. ソフトウェアExpEtherのアーキテクチャ

3.1 概要

図 2 にソフトウェア ExpEther を含むシステム全体の

アーキテクチャを示す.ホストと遠隔 I/Oデバイスはイー

サネットにより接続される.イーサネットにはホストへの

I/Oデバイスの割り当てを管理するシステムマネージャも

接続する.ホストに割り当てられた I/Oデバイスはホスト

の I/Oデバイスツリーに属するように仮想化される.ホ

ストは割り当てられた I/Oデバイスを従来の I/Oスロッ

トに挿入された I/Oデバイスと同様に使用できる.ホス

トと I/Oデバイスの間では PCIeの I/Oパケット (TLP:

Transaction Layer Packet)がイーサネットにカプセル化さ

れ,トンネリングにより伝送される.

ソフトウェア ExpEther はシステムソフトウェアに位

置付けられる.アクセス検出,DMA(Direct Memory Ac-

cess),TLP作成とカプセル化,高信頼低遅延通信,アド

レスマップ,デバイス管理の機能を有する.アクセス検出

機能はホストが遠隔 I/Oデバイスに行ったアクセスを検出

し,その内容を抽出する.DMA機能は遠隔の I/Oデバイ

スから要求された DMAを行う.TLP作成とカプセル化

機能は抽出した I/Oデバイスへのアクセス情報を用いて

TLPを作成し,イーサネットフレームにカプセル化する.

高信頼低遅延通信機能はホストと遠隔 I/Oデバイスとの間

の通信機能を提供する.アドレスマップ機能は遠隔 I/Oデ

バイスに割り当てらるアドレス空間を管理し,TLP作成機

能にアドレス変換テーブルを提供する.デバイス管理機能

は割り当てられた遠隔 I/Oデバイスのコンフィグレーショ

ンを行う.

一方遠隔 I/Oデバイスは著者らが [1]で提案したハード

ウェアの ExpEtherブリッジを用いてイーサネットに接続

する.ExpEther ブリッジは TLP のカプセル化,デカプ

セル化を行う.CPUやメモリを保持せず,接続されたホ

ストには PCI-PCIブリッジとして認識される.ExpEther

ブリッジはイーサネット及び PCIeインターフェースを保

持する FPGA(Field-Programmable Gate Array),または

ASIC(Application Specific Integrated Circuit)として実装

することができる.ブリッジチップは遠隔 I/Oデバイスを

収容する I/O資源ボックスのマザーボードに実装される.

これにより I/O資源ボックスはハードウェア ExpEtherブ

リッジと I/Oデバイスだけの単純な構成となる.

システムマネージャはイーサネットに接続したホストと

I/Oデバイスの管理を行う.それらの障害を検出し,シス

テムマネージャのユーザインターフェースに表示する.ま

た,I/Oデバイスのホストへの割り当てもシステムマネー

ジャのコマンドを用いて変更する.システムマネージャが

行った変更はソフトウェア ExpEtherブリッジで検出され,

割り当てられた I/Oデバイスが更新される.

ホストへの I/O デバイスの割り当てには MAC(Media

Access Control)アドレスをキーに用いる.ソフトウェア

ExpEtherは割り当てられた I/Oデバイスが接続するハー

ドウェア ExpEtherブリッジの MACアドレスを記憶し,

記憶したアドレスを用いて TLPを作成する.

これらのアーキテクチャは 2節で述べたシステム要求を

満たすものである.ソフトウェア ExpEtherはホスト側に

イーサネット上の I/Oデバイスに接続するための特殊は

ハードウェアブリッジを必要とせず,技術の導入障壁を解

消する.また 1つのホストに接続可能な I/Oデバイスは

32Kまでスケールする.これはデバイスに用いる ID番号

の bit長の制限である.ホストへの I/Oデバイスの割り当

ても再構成可能である.また遠隔 I/Oデバイスとの接続が

PCIeレイヤで仮想化されるため,PCIeに準拠するあらゆ

る I/Oデバイスが接続可能である.さらにソフトウェア

ⓒ 2017 Information Processing Society of Japan 3

Vol.2017-OS-140 No.62017/5/16

情報処理学会研究報告IPSJ SIG Technical Report

ExpEtherは I/Oデバイス,デバイスドライバ,ドライバ

を動作させる OS,イーサネットスイッチへの変更を必要

としない.高信頼低遅延通信機能はイーサネットにおける

輻輳を抑制し TLPを低遅延で伝送する.これにより遠隔

I/Oデバイスの仮想化オーバヘッドを抑制する.

3.2 遠隔 I/Oデバイスの仮想化

本節ではイーサネットで接続され,ホストの I/Oデバイ

スの NIC(Network Interface Card)を介してのみ通信可能

な遠隔 I/Oデバイスをローカルデバイスとして仮想化する

アーキテクチャについて述べる.ソフトウェア ExpEther

はソフトウェアの仮想化レイヤで PCIeアクセスを提供す

ることにより本機能を実現する.

ホストが起動されると,デバイス管理機能は遠隔 I/Oデ

バイスのアドレスを予約する.予約されるアドレスはPCIe

で使用するアドレス空間,I/Oポート空間,バス/デバイ

ス/ファンクション (BDF)番号の組である.そしてアクセ

ス検出機能が予約したアドレスに対応する遠隔 I/Oデバイ

スに発行されたアクセスを検出する.TLP作成とカプセ

ル化機能は検出した I/Oデバイスへのアクセスからアクセ

ス内容を抽出し,TLPを作成する.ここで TLPのあて先

アドレスはホストが指定した値から遠隔 I/Oデバイスに予

約されたアドレスに変換される.アドレス変換は次節で述

べるソフトウェア ExpEtherの Linux KVM(Kernel-based

Virtual Machine)への実装に必要となる.VM内にカプセ

ル化されたホストのアドレス空間と,ホスト OS上で動作

するソフトウェア ExpEtherが管理するアドレス空間が異

なるからである.TLP作成のためのアドレス変換テーブ

ルはアドレスマップ機能により提供される.また I/Oデバ

イスから受信する TLPは,DMA以外は TLPの内容を抽

出しホストに渡す.一方 TLPがDMAの場合,DMA機能

がホストのあて先アドレスに DMAを実行する.ここでも

DMAのあて先アドレスはアドレス変換が行われる.

3.3 高信頼低遅延通信

PCIe標準は TLPが通信途中で欠落しないことを想定し

ている.それに加え,ホストと遠隔 I/Oデバイスの通信遅

延は I/Oデバイスの性能に大きく影響する.通常の PCIe

I/Oバスではこれらの要求を I/Oバス毎の Ackと,クレ

ジットによる帯域制御で実現している.一方ソフトウェ

ア ExpEtherでは,到達 Ackはソフトウェア ExpEtherと

ハードウェア ExpEther ブリッジの間でイーサネットの

エンド間で送信する.通信で欠落した TLPは Go-Back-N

ARQ(Automatic Repeat-Request)により再送される.ま

た遅延は,ソフトウェア ExpEtherが遅延に基づく輻輳制

御を採用し,TCPのようなパケットロスに基づく制御より

低遅延の通信機能を提供する.採用した輻輳制御アルゴリ

ズムの詳細は [3]で提案している.

図 3 PEB レイヤの実装.

図 4 遠隔 I/O デバイスに割り当てられた仮想アドレス資源.I/O

ポートアドレスの図示は省略.

4. 実装

ソフトウェア ExpEther の実装は KVM のパススルー

モードを拡張して行った.パススルーモードは PCIeレイ

ヤでホストの I/Oデバイスを VMに割り当てる仮想化機

能が実現されており,提案手法の実装に適していた.ソ

フトウェア ExpEther 機能の大部分はホスト OS のアプ

リケーションプログラムとして実装したが,VM による

遠隔 I/O デバイスへのアクセスの検出のために QEMU-

KVM(Quick Emulator KVM)の一部は改造した.ソフト

ウェア ExpEtherは PCIe-to-Ethernetブリッジ (PEB)レ

イヤ及びイーサネット転送レイヤから構成される.前者は

3節で述べた高信頼低遅延通信以外の機能を提供し,後者

は高信頼低遅延通信機能を提供する.それぞれのレイヤの

機能について以下に述べる.またイーサネットで接続され

た遠隔 I/Oデバイスはホスト上のいずれかの一つの VM

に割り当てられ,同時に複数の VMから共有されない前提

とした.

4.1 PCIe-to-Ethernetブリッジ (PEB)レイヤ

図 3 に PEB レイヤの構成を示す.ソフトウェア Ex-

pEther初期化部は遠隔デバイスのコンフィグレーションを

行うため,デバイス構成部を呼び出す.ホストに割り当て

られた全ての I/OデバイスはVMに割り当てられる前にコ

ンフィグレーションが行われる.コンフィグレーションは

ⓒ 2017 Information Processing Society of Japan 4

Vol.2017-OS-140 No.62017/5/16

情報処理学会研究報告IPSJ SIG Technical Report

PCIeの手順に準拠して行われ,メモリマップアドレス,I/O

ポートアドレス,BDF番号が割り当てられる.以下ではソ

フトウェア ExpEtherにより割り当てられた BDF番号を

VBDF番号と呼ぶ.同一ホストに割り当てられた I/Oデバ

イスに割り振られるアドレス空間と VBDF番号はユニー

クな値である.従来のコンピュータでは I/Oデバイスに

対するコンフィグレーションはBIOS(Basic Input/Output

System)が行っている.

図 3に示す PEBレイヤの左側は TLP作成及びカプセル

化を行う.改造した QEMU-KVMが VMの遠隔 I/Oデバ

イスへのアクセスを検出し,アクセス情報を抽出しソケッ

ト通信により要求アービトレーション部に送る.TLP作成

部はその情報を用いてTLPを作成する.一方,逆方向のト

ラフィックでは,イーサネットからイーサネット転送レイ

ヤを介して受信した TLPをデカプセル化し,TLPが保持

する情報を抽出する.続いてそれらの情報をQEMU-KVM

を介して I/Oデバイスが割り当てられた VMに渡す.こ

こで VMへの要求が DMAだった場合,QEMU-KVMが

VMがマップされた DMAのあて先メモリに対し指定され

た DMAを行う.

制御フレーム処理部は制御フレームを用いて割り当てら

れた遠隔 I/Oデバイスとのコネクション管理を行う.また

システムマネージャに状態監視のための状態通知も行う.

次に TLPの作成及び受信 TLPの情報抽出を行う際に

用いるアドレステーブルの構成と,それらが保持するデー

タの使用方法について述べる.アドレステーブルはメモ

リマップテーブルと BDF MACテーブルから成る.メモ

リマップテーブルは遠隔 I/Oデバイスがマップされたメ

モリ及び I/Oポート空間の情報を保持する.メモリマッ

プテーブルは VBDF番号をサーチキーとして検索を行う

構成となっている.BDF MACテーブルは VBDF番号と

I/Oデバイスが接続するハードウェア ExpEtherブリッジ

のMACアドレスの対応を保持する.

ソフトウェア ExpEtherが起動されたとき,ホストに割

り当てられた I/Oデバイスを探索し,それらにアドレス空

間とVBDF番号を割り当てる.このとき割り当てるアドレ

ス空間と VBDF番号は,図 4に示すように,ホストOSが

ローカル I/Oデバイスに用いているアドレス空間や BDF

番号と干渉しないようにする.VMによる遠隔 I/Oデバ

イスへのアクセス検出では,QEMU-KVMのパススルー

モードを再利用することが望ましい.そこでソフトウェア

ExpEtherでは,ホスト OSのデバイスエントリであるデ

バイスファイルを作成する.そして VMを起動する際に割

り当てられた I/Oデバイスのエントリを QEMU-KVMに

通知する.これにより QEMU-KVMは遠隔 I/Oデバイス

に割り当てられたアドレス空間とVBDFを識別し,パスス

ルーモードに関するコードが改造された箇所で VMによる

遠隔 I/Oデバイスへのアクセスを抽出することができる.

図 5 イーサネット転送レイヤの実装.

QEMU-KVMが遠隔 I/Oデバイスへのアクセスを検出

すると,遠隔 I/Oデバイスに割り当てられた VBDF番号

が探索され,その番号が PEBレイヤに通知される.遠隔

I/Oデバイスへのアクセスが VBDFでルーティングされ

る場合,TLP作成部はその値を用いて TLPを作成する.

一方ルーティングがメモリや I/Oポートアドレスで行われ

る場合,VBDFを探索キーとしてメモリマップテーブルの

エントリを探索する.作成する TLPのあて先アドレスは,

QEMU-KVMから通知されたオフセット値を,メモリマッ

プテーブルが保持する遠隔 I/Oデバイスがマップされたメ

モリや I/Oポート空間のベースアドレスに加算することに

より求められる.

また逆方向のトラフィックでは,遠隔 I/Oデバイスから

受信した TLPが VBDF番号でルーティングされていた場

合,TLPはDMA命令ではない.このとき,QEMU-KVM

によりあて先のVMが TLPに記載されたVBDFから探索

され,VMに受信したデータが渡される.一方 TLPがメ

モリアドレスでルーティングされていた場合,トラフィッ

クはあて先 VMのメモリ空間に対する DMAである.こ

のとき受信した TLPに記載されたアドレス値は,VM内

のデバイスドライバによる I/Oコマンドから指定された値

であり,VM内のアドレス空間における物理アドレスであ

る.ここで QEMU-KVMは内部の VMの物理アドレスと

アプリケーションプログラムとしての VMの論理アドレス

のマッピング情報を保持している.QEMU-KVMはこの

情報を用いて VMの物理アドレスを VMの論理アドレス

に変換する.これにより QEMU-KVMは遠隔 I/Oデバイ

スから指定された VMのメモリにアクセスし,DMAを行

う.データ読み込みの DMAでは,読み込んだデータを含

む応答 TLPを作成し遠隔 I/Oデバイスに返送する.

4.2 イーサネット転送レイヤ

イーサネット転送レイヤはTLPをカプセル化したイーサ

ネットフレームに対し高信頼低遅延通信を提供する.イー

サネット転送レイヤの構成を図 5に示す.PEBレイヤが送

ⓒ 2017 Information Processing Society of Japan 5

Vol.2017-OS-140 No.62017/5/16

情報処理学会研究報告IPSJ SIG Technical Report

表 1 実装及び評価に用いたプラットフォーム.CPU Intel(R) Xeon(R) CPU E3-1225 V2 (4 core)

Host Memory 16 GB

OS CentOS 7

CPU QEMU Virtual CPU Version 1.5.3 (1 core)

Guest Memory 2 GB

OS CentOS 7

Test I/O NIC Intel 82579LM Gigabit Network Connection

Device SATA Silicon Image, SiI 3132 SATA Raid II Cont.

信したイーサネットフレームは再送バッファ部に記憶され

る.それらのフレームは送信スケジューラ部により送信タ

イミングのスケジューリングが行われる.一方遠隔 I/Oデ

バイスから受信したフレームはイーサネットフレームアー

ビトレーション部から PEBレイヤに渡される.

再送バッファで送信待ちのイーサネットフレームは,あ

て先MACアドレス毎のキューに記憶される.それぞれの

キューからの送信は,トークンバケットを用いたラウンド

ロビンスケジューリングにより制御される.トークンを加

算するレートはレート計算部によりそれぞれのキュー毎の

値が計算される.トークンバケットを採用する理由は I/O

デバイスのトラフィックが 256 バイト程度の短パケット

で,かつトラフィックがバースト的だからである.

レート計算部はホストと I/Oデバイスの接続毎に送信

レートを決定する.送信レート計算のアルゴリズムは [3]

で提案している.我々が提案した手法は短いバーストフ

レームが低遅延で伝送されるものである.またイーサネッ

トのエンド間で送信遅延に基づく送信レート制御を採用し

ており,イーサネット内の輻輳を抑制し低遅延通信が実現

できる.送信レート計算に用いるレート方程式は

RNEXT = R+ (α− (RTT −RTTMIN )R)β

RTT, (1)

で示される. ここで R は送信レート, RTT はイーサネッ

トの Round-Trip Time, RTTMIN は RTTの最小値, αと

β は調整パラメータである.送信端で観測される RTT が

増大すると,送信レートを抑制することでイーサネット内

の輻輳を抑制し,RTTが最小値に近づくようにフィード

バックを行う.

イーサネット転送レイヤはまた,高信頼通信を実現するた

めにハードウェア ExpEtherブリッジとの間でGo-Back-N

ARQを行う.イーサネットフレームアービトレーション

部が Ackフレームを受信した場合,再送バッファに記憶さ

れたフレームから到達が確認されたフレームを解放する.

一方定められた時間内に Ackフレームを受信しない場合,

再送バッファのリードポインタを未到達の最初のフレーム

に戻す.また,逆方向の受信フレームに関しては,Ack生

成部が複数の受信フレームに対しまとめて 1つの Ackフ

レームを作成し送信ノードに返信する.

5. 評価結果

ソフトウェア ExpEtherを実装し評価を行った.本節で

図 6 評価構成.

は評価結果とその考察について述べる.

表 1 に実装と評価に用いたプラットフォームを示す.

KVMは CentOS 7で配布されるものを用いた.評価に用

いた遠隔 I/OデバイスはNIC及び SATA(Serial Advanced

Technology Attachment)コントローラである.これらは

一般的に用いられる I/Oデバイスであり,これらのデバ

イスを用いることで提案手法が様々な I/Oデバイスに適

用可能であることを示す.両 I/O デバイスは PCIe イン

ターフェースを保持していた.NICの帯域は 1Gb/sだっ

た.SATAコントローラはインテルX25-E Extreme SATA

SSD(Solid State Drive) に接続した.VM 内の OS,デバ

イスドライバ,遠隔 I/Oデバイスはコモディティ製品であ

り,提案手法のための改造は行っていない.

図 6に評価に用いた 3つの構成を示す.(a)ではホスト

と遠隔 I/OデバイスであるNICがソフトウェア ExpEther

により接続される.(b)ではホストと NICがハードウェア

の PCIe-over-Ethernetブリッジ (ハードウェア ExpEther

ブリッジ)で接続される.この場合ブリッジチップを実装

したネットワークインタフェースがホストの I/Oスロット

に挿入される.(c)では NICが直接ホストの I/Oスロット

に挿入される.(b)及び (c)では NICがホスト内の VMに

パススルーデバイスとして割り当てられる.(c)は性能評

価におけるベースラインである.なお,SATAコントロー

ラを用いた評価では図 6に示した遠隔 NICが SATAコン

トローラに置き換えられる.今回,評価機材の制約で対向

試験ホストの NICの帯域が 100Mb/sだった.

図 7にソフトウェア ExpEtherで接続した遠隔 NICを

介して評価した VM の Ping 遅延を示す.ソフトウェア

ExpEther の遅延はベースラインのローカルデバイスの

NICの 4.4倍だった.またハードウェアブリッジとベース

ラインの遅延は同等だった.これらの結果は,現在の実装

のボトルネックがホストと I/Oデバイス間の通信遅延では

なく,ソフトウェア ExpEtherの低速なソフトウェア処理

であることを示している.

ⓒ 2017 Information Processing Society of Japan 6

Vol.2017-OS-140 No.62017/5/16

情報処理学会研究報告IPSJ SIG Technical Report

図 7 Ping 遅延.

表 2 処理時間の解析.

Process Time [ms]

Request Arbitration (Downstream) 0.033

Request Arbitration (Upstream) 0.035

TLP Construction and Encapsulation 0.002

TLP Decapsulation and Destruction 0.014

Transmission Scheduler 0.003

Frame Transmission 0.024

Inter-thread Communication 0.034

そこでソフトウェア処理のオーバヘッドをさらに解析す

るため,ソフトウェア ExpEther内の個別機能の処理時間

を解析した.表 2 に結果をまとめる.それぞれのプロセ

スは図 3及び 5に記載した名前に対応する.Upstreamは

I/Oデバイスからホスト方向に送信されるTLPのフローで

あり,Downstreamはその逆である.最終行のスレッド間

通信は,ソフトウェア ExpEtherを構成する複数のスレッ

ド間で行うメッセージ通信の時間である.ここで図 7 に遅

延を示した 1つの Pingでは,ホストと遠隔 NICの間で 10

往復程度の PCIeトランザクションが発生する.そこで表

2 で得られた遅延を 1 Pingコマンド分積算すると,図 7の

遅延を説明できることを確認した.この結果はソフトウェ

ア ExpEtherの仮想化オーバヘッドの大部分が,低速なソ

フトウェア処理に起因するという仮説を裏付けるものであ

る.表 2は数 10µ秒を要する機能が複数あることを示して

いる.

現在のソフトウェア ExpEtherの初期実装では,内部の

複数スレッド間のデータ通信にメッセージ通信を用いて

いる.一般にメッセージ通信を行うためには 20µ秒程度

が必要であり,表 2 のスレッド間通信が数 10µ秒に達す

る原因と考えられる.またその他の処理も複数スレッド構

成を前提としており,非効率な実装となっている可能性が

ある.これらの性能はソフトウェア ExpEtherの実装構成

を改善することで改善が期待される.それに加えパケッ

トの授受にポーリングを用いる場合,DPDK(Data Plane

Development Kit)[4]のような方法も全体性能の向上に役

立つ可能性がある.これらの性能改善は今後の課題である.

図 8にソフトウェア ExpEtherで接続したNICのスルー

プットを示す.送信結果は VMが試験ホストにパケット

図 8 iperf で測定した NIC のスループット.

図 9 fio で測定した SSD のスループット.

を送信する場合であり,受信結果は VMが試験ホストから

パケットを受信する場合である.評価には iperfを用いた.

現在のソフトウェア ExpEtherの実装オーバヘッドにより,

ベースラインより平均で 69% スループットが低下した.

図 9は SATAコントローラと接続した SSDのスループッ

トの評価結果である.評価には fioを用いた.ベンチマー

クにおける I/O アクセスサイズは 1MBに設定し,アクセ

スタイプはランダムリード/ライトとした.ここでもソフ

トウェア ExpEtherのスループットはベースラインと比較

し 90% 低下した.

以上の評価結果が示すように,現在の初期実装ではソフ

トウェア ExpEtherのソフトウェア処理の実装を改善する

ことで,性能を向上できる見込みが大きい.しかし,今回

得られた結果により本稿では新しい仮想化手法の実現性を

示した.また提案手法が一般的な PCIeデバイスに適用可

能であることを示した.評価に用いた NIC及び SATAコ

ントローラは,無改造のコモディティ製品である.

6. 関連技術

従来の I/Oデバイスのネットワークは I/Oデバイスが

割り当てられるホストに特殊なハードウェアブリッジが

必要だった.我々も [1], [5]で I/Oデバイスの接続に有線,

または無線イーサネットを使用する手法を提案した.Intel

は Thunderboltと呼ぶ独自規格のネットワークを商用化し

ている [2].Krishnanも I/Oデバイスネットワークを実現

する別の技術を提案した [6].ソフトウェア ExpEtherでは

I/Oデバイスをイーサネットに接続するためにハードウェ

アブリッジを用いるが,ホストには特殊なハードウェアを

ⓒ 2017 Information Processing Society of Japan 7

Vol.2017-OS-140 No.62017/5/16

情報処理学会研究報告IPSJ SIG Technical Report

必要としない.

従来の I/Oデバイスのネットワークを実現する別の手

法として,ソフトウェア I/Oスタックを分離する手法が

ある.分離された I/Oスタックは異なるホストに配置さ

れ,それらのスタック間の通信をネットワークで伝送す

る.Hirofuchiらは USBスタックを [7],Satranらは SCSI

スタックを [8] 分離する手法を提案した.これらの手法で

は I/Oデバイス及び IoTデバイスを保持するネットワー

クノードもホストコンピュータである必要があり,本稿の

目的と一致しない.

ホストの I/Oデバイスをホスト内のVMに割り当てる手

法も従来から複数提案されている.VMWare ESX Server

は I/O デバイスのドライバと VM からのアクセスを仲

介する仮想デバイスモデルの両方を VMMレイヤに保持

する [9].一方 VMWare Workstation [10]や KVM [11]の

I/Oデバイスはホスト OSで動作するデバイスドライバか

ら駆動される.これらの方式では VMの I/Oデバイスへ

のアクセスはホスト OSのアプリケーションプログラムと

して動作するエミュレータで仲介される.また,I/Oデバ

イス仮想化のオーバヘッド削減に関する研究も実施されて

いる.パススルーモードはホストの I/Oデバイスをソフト

ウェア処理の仲介なく VMに割り当てる技術である [12].

これにより I/Oデバイスから VMのメモリ領域に DMA

が行えるようになった.パススルーモードをハードウェア

で支援する技術としてアドレス変換 [13]や新たな PCIeデ

バイスのインターフェース [14]も導入された.本稿で提案

したソフトウェア ExpEtherでは KVMのパススルーモー

ドを拡張した.ソフトウェア ExpEtherはパススルーモー

ドを利用し,VMから遠隔 I/Oデバイスへのアクセスを検

出する.また遠隔 I/Oデバイスを用いるための新たな仮想

化レイヤを付加している.これらの拡張部分は主にホスト

OSのアプリケーションプログラムとして動作する.

VMMはまた,内包する VMのセキュア環境を実現する

手段としても用いられている [15].その中で BitVisor [9]

は I/Oデバイスのセキュリティに着目している.パスス

ルーモードを用いた小規模の VMMがセキュリティの目的

でパススルーの I/Oアクセスを傍受する.一方提案手法

ではパススルー I/Oアクセスが検出され,イーサネットを

用いて接続した遠隔 I/Oデバイスへのアクセスに変換さ

れる.

7. まとめ

本稿ではイーサネットに分散する IoTデバイスが小型

コンピュータではなく I/Oデバイスのみと合わせて実装

される I/Oデバイスの IoT化に着目した.そして I/Oデ

バイスの IoT化を実現する新しい仮想化アーキテクチャ

としてソフトウェア ExpEtherを提案した.ソフトウェア

ExpEtherは IoTデバイスと合わせて実装される I/Oデバ

イスを遠隔の制御ホストに割り当て,制御ホストからロー

カルデバイスとして使用できるようにする.またソフト

ウェア ExpEtherはホストに特殊なハードウェアブリッジ

を必要としない.

ソフトウェア ExpEtherは遠隔の I/Oデバイスをホスト

の I/Oデバイスツリーに属すように仮想化する.そして

制御ホストと遠隔 I/Oデバイスとの間の PCIeトランザク

ションを仮想化ソフトウェアのレイヤで実現する.ソフト

ウェア ExpEtherは遠隔 I/Oデバイスのアドレス予約,コ

ンフィギュレーション,アドレスマッピング,そして TLP

作成とイーサネットフレームへのカプセル化機能を有す

る.仮想化は PCIeレイヤで行うため,PCIe標準に準拠す

るあらゆる I/Oデバイスが接続可能である.それに加え,

イーサネットスイッチ,I/Oデバイス,ドライバ,ドライ

バが動作する OSに変更の必要がない.

本稿ではソフトウェアExpEtherのプロトタイプをKVM

を用いて作成した.またプロトタイプの性能評価をNIC及

び SATAコントローラを用いて行った.評価結果は提案手

法の実現性と一般的な I/Oデバイスに対する広い適用性を

示した.しかし,本稿の初期実装では仮想化オーバヘッド

により遠隔 I/Oデバイスの性能が 68-90% 低下することが

わかった.これらのオーバヘッドは実装の改善による改善

が見込まれ,今後の課題である.

参考文献

[1] Suzuki, J. et al.: ExpressEther - Ethernet-Based Virtu-alization Technology for Reconfigurable Hardware Plat-form, Proc. IEEE Symposium on High Performance In-terconnects (HOTI’06), Stanford, CA, pp. 45–51 (2006).

[2] : Thunderbolt Technology, , available from〈http://www.intel.com/content/www/us/en/architecture-and-technology/thunderbolt/thunderbolt-technology-brief.html〉

[3] Shimonishi, H. et al.: A Congestion Control Algorithmfor Data Center Area Communications, Proc. IEEECQR Int. Workshop (2008).

[4] : Data Plane Development Kit, , available from〈http://dpdk.org/〉

[5] Hayashi, Y. et al.: Delay-Bounded Transport using Rate-less Codes for I/O Bus over Wireless Ethernet, Proc.IEEE International Conference on Communications,Kuala Lumpur, Malaysia (2016).

[6] Krishnan, V.: Evaluation of an Integrated PCI ExpressIO Expansion and Clustering Fabric, Proc. 16th IEEESymposium on High Performance Interconnects, Stan-ford, CA, pp. 93–100 (2008).

[7] Hirofuchi, T. et al.: USB/IP-A peripheral bus extensionfor device sharing over IP network, Proceedings of theannual conference on USENIX Annual Technical Con-ference, USENIX Association, pp. 42–42 (2005).

[8] Satran, J. and Meth, K.: Internet small computer sys-tems interface (iSCSI), RFC3720 (2004).

[9] Shinagawa, T. et al.: BitVisor: A Thin Hypervisorfor Enforcing I/O Device Security, Proceedings of the2009 ACM SIGPLAN/SIGOPS international confer-ence on Virtual execution environments, ACM, pp. 121–

ⓒ 2017 Information Processing Society of Japan 8

Vol.2017-OS-140 No.62017/5/16

情報処理学会研究報告IPSJ SIG Technical Report

130 (2009).

[10] Sugerman, J. et al.: Virtualizing I/O Devices onVMware Workstation’s Hosted Virtual Machine Moni-tor., USENIX Annual Technical Conference, GeneralTrack, pp. 1–14 (2001).

[11] Habib, I.: Virtualization with KVM, Linux Journal,Vol. 2008, No. 166, p. 8 (2008).

[12] Ben-Yehuda, M. et al.: Utilizing IOMMUs for virtual-ization in Linux and Xen, OLS’06: The 2006 OttawaLinux Symposium, Citeseer, pp. 71–86 (2006).

[13] Abramson, D. et al.: Intel Virtualization Technology forDirected I/O., Intel technology journal, Vol. 10, No. 3(2006).

[14] Raj, H. and Schwan, K.: High performance and scal-able I/O virtualization via self-virtualized devices, Pro-ceedings of the 16th international symposium on Highperformance distributed computing, ACM, pp. 179–188(2007).

[15] Garfinkel, T. et al.: A Virtual Machine Introspec-tion Based Architecture for Intrusion Detection., NDSS,Vol. 3, pp. 191–206 (2003).

ⓒ 2017 Information Processing Society of Japan 9

Vol.2017-OS-140 No.62017/5/16