VMware View 4で採用された画面転送プロトコル「PCoIP」


 11月末に試用版も公開されたVDI(Virtual Desktop Infrastructure)ソリューションの最新版「VMware View 4」。最大の特徴は、新たにサポートした画面転送プロトコル「PCoIP(PC over IP)」だろう。今回は、PCoIPにフォーカスして解説していく。


ディスプレイ出力を圧縮しIP化して転送するPCoIP

VMware View 4のソフトウェアPCoIPは、このようなソフトウェアスタックで実現されている

 PCoIPは、Windows OSに搭載されているRDP(Remote Desktop Protocol)と同じような画面転送のためのプロトコルだ。

 PCoIPは、VMwareが開発したモノではなく、カナダのTeradiciが開発したプロトコルだ。Teradiciがリリースした当初は、ホスト側のビデオカードの出力(DVI)をPCoIPプロトコルに変換する専用カードとPCoIPプロトコルを受信する専用ターミナルというハードウェアで構成されていた。

 2008年に開催されたVMworld 2008の基調講演で、VMwareはソフトウェア化したPCoIPをTeradiciと共同開発し、VMware ViewでサポートしてVDIの機能を飛躍的にアップすると発表していた。

 PCoIPの最大の特徴は、ディスプレイの出力を圧縮し、IP化して転送するところにある。圧縮の仕方としては、画面上で変化のない部分は転送せず、変化のあった部分だけを圧縮して転送するようになっている。これにより、ホスト側でHD動画を再生しても、ある程度のネットワーク帯域があれば、十分に再生できるのだ。

 Windows 7で採用されたRDP 7.0は、MPEGなどの動画フォーマットのファイルはホストPC側でレンダリングせず、そのままクライアントPCに転送しクライアント側で再生する方式を採用している(GDIもクライアントPCでレンダリングする)。つまり、GPUなどを搭載したPCをクライアントとして利用すれば、RDP 7.0は動画を十分なパフォーマンスで再生できる。しかし、シンクライアントを利用する場合、シンクライアント側にある程度のGPU機能が必要となってしまう。

 PCoIP 2.1(VMware View 4の登場に合わせてアップデート)も、WMV 7/8/9、WMA、AC3、MP3、MPEG1/2、MPEG4-Part2などのビデオ・オーディオファイルは、クライアントでレンダリングするようになっている(再生にはWMP 10が推奨されている)。ただし、RDP 7.0と異なり、クライアント側にDirectXなどの高度なGPUを搭載しなくても、ある程度のスペックのハードウェアで十分再生できる。

 Flashに関しては、ホスト側で特別にレンダリングしている。これは、インターネット上で、Flashをメニュー操作に利用するサイトが数多くあるためだ。通常の画面と同じようにPCoIPで転送してしまうと、Flashによるインタラクティブな画面表示が重くなり、低回線で画面転送ができなくなる。このため、PCoIPではFlashは特別な画面転送を行っている。

PCoIPでは、4つのモニターをサポートする

 また、PCoIPでは、1920×1200ドットで32ビットカラーのディスプレイを最大4台までサポートするなど、マルチモニターのサポートも行われている。各モニターは、1920×1200ドットまでなら自由に解像度を変更できる。さらに、文字をきれいに表示するClear Type(フォントのエッジを滑らかにする技術)もサポートしている。

 Teradiciが公開している資料によれば、PCoIPとRDP(RDPのバージョンは明記されていないが、RDP 6.1だろう)を比べると、LANなど帯域のあるネットワークでは、それほどパフォーマンスに差はない。PCoIPとRDPの差が出るのは、低速回線での表示パフォーマンスだ。Teradiciでは、400KbpsのWAN回線(200msの遅延)で、PowerPointのスライドやPDFファイルを表示した場合、PCoIPはRDPに比べて2倍以上高速に表示できるとしている。


PCoIPとRDPの画面転送プロトコルを使用してPDFファイルを表示した場合のパフォーマンス。LAN回線ではそれほど差はでないが、WAN回線はで圧倒的にPCoIPの方が高い性能を出しているPowerPointのデータをスライド表示したときには、PCoIPのパフォーマンスの高さがよくわかる。ただし、ここで比較されているRDPはRDP 6.1

 さらに、PCoIPでは、回線のスピードによって、画面をプログレッシブに表示することができる。つまり、低速の回線では、文字がキチンと読めるように、テキスト部分に集中してデータを転送するが。グラフィック部分などは粗い画像を転送する。ただし、回線スピードが上がれば、自動的にグラフィック部分の解像度をアップし、高解像度なグラフィックが表示できるようになる。


PCoIPは、接続されている回線スピードに合わせて、プログレッシブに画像を表示する。低速回線では、テキスト表示などに帯域をさき、グラフィックは粗い画面だ。回線のスピードがアップするか、時間がたてば、テキスト表示中心から、グラフィックに回線の帯域を振り替えて、高解像度なグラフィックが表示できる

 リモートデスクトップ機能を利用した場合、低速ネットワークを利用したときに、マウスポインタの表示とマウスの動きが合わないことがある。これは、マウスの動きが速すぎて、マウスポインタの表示が追いつかずに、とびとびになってしまうために起きている。

 PCoIPでは、クライアント側でマウスポインタをオーバーレイとして表示することで解決している。つまり、マウスポインタはクライアント側で処理し、ホスト側にはマウスの位置情報だけを送信する。これにより、マウスが移動しても、ホスト側では画面の書き換えが起こらない。このため、低速ネットワークでも、スムーズなマウスコントロールが可能になるというわけだ。

VMware View 4は、ソフトウェアPCoIPだけでなく、Teradiciのハードウェアを利用したPCoIPクライアントも一括して管理する。PCoIPの専用ハードウェアを利用すれば、CADや3Dグラフィックなどの帯域を必要とするアプリケーションもリモートからスムーズに利用できる

 VMware View 4では、vSphere 4上に構築された仮想デスクトップPCだけでなく、Teradiciのホストカードを搭載したブレードPCやラックマウントのワークステーションも管理できる。Teradiciのホストカードを使用すれば、ソフトウェアのPCoIPサーバーよりも高いパフォーマンスで画面転送が行えるので、CADや3D CGなどのヘビーなアプリケーションをインターネット越しで利用することが可能になる。実際に、Teradiciのデモでは、ロンドンに置かれたクライアントPCとニューヨークにあるリモートサーバーにインターネットで接続して、リアルタイムにCADソフトやCGソフトを利用していた。

 RDP 7.0でもPCoIPと同じような機能が利用できるが、Windows 7とWindows Server 2008 R2だけの機能となっており、Windows XPやWindows Vistaはサポートしていない。このため、VDIとしてホストOSにWindows XPやWindows Vistaを使用している場合、パフォーマンスをアップするには現状ではPCoIPという選択肢になるだろう。ちなみに、VMware View 4は、PCoIPとRDPの両方が利用できる。


RDPか? PCoIPか?

 画面転送プロトコルとしては、RDP 7.0の方が高いパフォーマンスで、サーバーやクライアントの負荷が少なそうだ。これは、DirectXベースの転送プロトコルになっていることが大きい。RDP 7.0も、Direct3DやDirect2D、DirectWriteなどWindows 7でサポートされた新しい画面表示機能をリモートではサポートしていない。マイクロソフトでは、早急にRDP 7.0をバージョンアップして、Windows 7でサポートされた機能をRDPに取り込もうとしている。

 ただ、RDP 7.0はWindows XPやWindows Vistaではサポートされていないため、Windows 7がVDIの仮想PCとなる。クライアントPCにWindows 7を使ってしまうと、VDI化する意味も薄れてしまう。こういうことを考えれば、Windows XPやWindows VistaでパフォーマンスをアップするPCoIPのメリットは大きいだろう。
【お詫びと訂正】初出時、Windows XP/VistaにおいてRDP 7.0がサポートされていないと記述しましたが、更新プログラムが公開されておりました。お詫びして訂正します。

 しかし、未来永劫(えいごう)PCoIPがベストとは言い切れない。Windows VistaやWindows 7は、Windows XPで中心的な役割を果たしていたGDIから、DirectXベースの画面表示に移行しようとしている。画面表示に関して大きなターニングポイントといえる。

 もし、すべてのアプリケーションがGDIではなく、DirectXを利用したWPF(Windows Presentation Foundation)に切り替われば、RDPベースのプロトコルは大幅にパフォーマンスアップするだろう。ただし、クライアント側でもDirectXがキチンとサポートされている必要があるため、クライアントでもある程度のGPUが必要になる。

 このような環境ができれば、PCoIPを使わなくても良くなる。こういった環境は、4~5年は整わないだろう(次世代のWindows 8がリリースされるころには、ある程度環境が整っているかもしれないが)。だからこそ、Windows View 4では、PCoIPだけでなく、RDPもサポートしているのだろう。


 VDIという機能を考えていくと、重要なのは画面転送プロトコルよりも、どれだけ簡単に仮想PC環境が管理できるかということだ。マスターとなるOSイメージをベースとして、コネクションサーバーからのリクエストに応じて、オンデマンドで簡単に仮想PCが作成できるということが重要だ。もちろん、ターミナルサーバーのように、同じUIといった環境もあるが、できればユーザーごとに差分情報だけが保存されるようになれば、使い勝手もよくなるだろう。管理側としては、ユーザーごとにフルのOSイメージは必要ないため、数百人のVDI環境を実現しても、大きな容量のストレージも必要ない。

 今後VDIは、統合された管理機能がどれだけ使いやすいのかが重要になってくるだろう。画面転送プロトコルに関しては、VMware View 4でPCoIPとRDPがサポートされているように、さまざまな企業が独自に開発したプロトコルが利用できるようになるだろう。画面転送プロトコルで機能差を出すよりも、管理ツールの使いやすさが重要なポイントになってくるとおもわれる。





(山本 雅史)

2009/12/14/ 00:00