Windows Server 2012の持つ最新のネットワークテクノロジ


 Windows Server 2012(以下WS2012)は、クラウドOSというテーマに沿って、ネットワークにおいても、さまざまな部分で機能強化されている。ネットワークの最適化(CPU負荷をかけずにトラフィックをどうさばいていくのか)、仮想化におけるネットワークのパフォーマンスのアップ、ファイル共有の性能アップなどが行われている。

 Windows Server 2012のネットワーク機能は、単なるデータ通信だけでなく、SAN(Storage Area Network)機能の強化を行っている。

 

異なるメーカーのNICによるチーミング


Windows Server 2012では、ネットワークの基礎部分の改良が数多く行われている

・NICチーミング機能
 現在、データセンターのEthernetにおいては、1Gbpsから10Gbpsへの移行期にさしかかっている。サーバーにおいて、今後10Gigabit Ethernet(GbE)は必須となり始めている。さらにプライベートクラウドなどの構築を考えると、バックボーンのネットワークは10Gbps回線が1本では不足し始めている。もちろん、40GbEなどを利用してもいいのだが、まだコストが高いため、10GbEを複数本利用することになるだろう。

 以前のWindows Serverでは、複数のNICを仮想的に1本のNICとしてまとめるチーミング機能はサポートされていなかった。NICのメーカーが、自社のドライバソフトでチーミング機能をサポートしていることがあるが、基本的には自社のNIC同士でチーミング機能を提供していた。このため、メーカーの異なるNIC同士ではチーミングを行うことはできなかった。

 Windows Server 2012では、NICのドライバの上位レイヤでMicrosoftがチーミング機能を提供している。このため、NICのドライバレベルでチーミングを構築しなくてもよくなった。さらに、NICのドライバより上位レイヤでチーミングされるため、複数のメーカーのNICをチーミングで1本の仮想的な回線にまとめ上げることができる。ただし、NIC自体に独自機能を持つ場合は、チーミング時にすべての独自機能を使えるわけではない。


Windows Server 2012のNICチーミング機能は、MicrosoftがNICをチーミングするためのレイヤを提供することで、さまざまなメーカーのNICを1つにまとめることができる

・RSSとRSC
 NICのパフォーマンスをアップする方法として、Windows Server 2012ではRSS(Receive Side Scaling)をサポートしている。これは、TCPの受信制御をマルチコアに分散して行う機能だ。この機能を利用すれば、1つのCPUコアに集中しているTCPの受信処理をマルチコアに分散できるため、個々のCPUコアの負荷が低下する。いわば、TCPの受信処理におけるマルチスレッド化のようなものだ。

 Windows Server 2008 R2/Windows 7でもRSS機能は用意されていたが、Windows Server 2012ではNICチーミング機能との併用に対応している。

 一方のRSC(Receive Segment Coalescing)は、大量のネットワークI/Oを処理する場合に、一つずつパケットを処理するのではなく、複数のパケットをためておいて、一度に処理を行う方式だ。データ長の短いパケットをある程度の大きさのパケットにすることで、処理が一度に済んでしまう。パケットを一つずつ処理するよりも、ある程度まとめて一度に処理した方がCPU側に負荷がかからないので、効果的にCPUのパワーを利用できる。


マルチコア対応化したRSSにより高いパフォーマンスでパケット処理ができるRSCではパケットの処理を一括で行うことで、CPUに対する負荷を小さくしている

・TCP Chimney Offload
 Windows Server 2012のTCP Chimney Offloadは、TCPに関する処理をNIC側のハードウェアで処理してしまう機能だ。もちろん、NIC側がTCP Chimney Offloadに対応している必要がある。この機能を利用すれば、NIC側でネットワークに関する多くの処理を行ってくれるため、CPU側にはほとんど負荷がかからなくなる。

 ただし、Hyper-Vの仮想マシンでは使用できないし、Windows Server 2012のチーミング機能には対応していない。

 

SMB 3.0のRDMA

・RDMA
 Windows Server 2012では、ファイル共有プロトコルがSMB 3.0にバージョンアップされている。SMB 3.0では、さまざまな機能向上が行われているが、特にRDMA(Remote Direct Memory Access)によりファイル転送のパフォーマンスが大幅にアップしている。

 ネットワークを利用する場合、さまざまなレイヤでデータのコピーが行われる。このため、データ量の大きなファイル共有などでは、データのコピーだけで、多量のメモリ領域を消費したり、データのコピーに時間がかかったりすることになる。

 そこで、リモートサーバーのメインメモリに対して、直接データを転送できるようにする機能がRDMAだ。NICが直接アプリケーションメモリのデータを転送できる機能をサポートすることで、データがバッファリングされることをなくし、高速にデータ転送が行えるようにしている。

 Windows Server 2012はこのRDMAのテクノロジーを取り込むことで、ファイルサーバーとサーバー間のデータアクセスが飛躍的に高速化している。Microsoftが行ったベンチマークでは、RDMAと高速なネットワークを使えば、ローカルのHDDにアクセスするのと同じぐらいのディスクアクセスが実現できるとしている。

 RDMAを利用するためには、サーバー側、ファイルサーバー側両方ともRDMAをサポートしたインターフェイスカードが必要になる(Ethernetだけでなく、FCやInfiniBandでも構わない)。

 もともとRDMAは、高スループット、低レイテンシを必要とするHPCの分野で発展してきた。こうした背景があり、RDMAは当初InfiniBandなどのインターコネクトで採用されていたが、最近のEthernetではiWarp(Internet Wide Area RDMA Protocol)、FCではRoCE(RDMA over Converged Ethernet)などでサポートされている。以前は、RDMAをサポートしているNICは特殊だったが、最近ではサーバー用のNICの多くでRDMAの機能を持っている。

RDMAは、直接データをNICが扱う。OS内部でデータコピーを行わないため、パフォーマンスがアップするMellanoxのインターフェイスカードは、InfiniBandとEthernetの両方をサポート。どちらでもRDMAがサポートされているため、高いパフォーマンスでのデータ転送が行える
Intelの10GbEカードでは、RDMA機能をサポートしたiWarp機能が内蔵されている。ドライバもWindows Server 2012に内蔵されているSMB 3.0で使用する場合、InfiniBandと10GbEを利用することが薦められている

・Dynamic VMQ/SR-IOV
 Windows Server 2012のハイパーバイザーHyper-Vは、親パーティション(Dom0)で各種のハードウェアをサポートしている。このため、ハイパーバイザー専用のドライバを開発しなくてもWindows Server 2012用のドライバがそのまま利用できる。

 Windows Server 2008 R2では、仮想マシンごとにネットワークのキューをサポートするVMQ(Virtual Machine Queue)機能がサポートされた。この機能は、親パーティションに接続されているNIC側に仮想マシンごとのキューを持つことで、仮想マシンへのデータ通信のパフォーマンスをアップしている(ちなみに、VMQは、動作している仮想マシンの数が多くなるほどパフォーマンスに差が出る)。

 ただ、Windows Server 2008 R2のVMQは、使用するCPUコアが静的に決まっていたが、Windows Server 2012では、動的にCPUコアの数を変化させることが可能になった。負荷の高いとき、多数のCPUコアを利用し、負荷が低くなるとCPUコアの数を減らせるようにしているが、使用するCPUコアの数が減れば、省電力機能によりCPUの電力が抑えられる。


VMQを使用することで、仮想マシン上のネットワークパフォーマンスがアップするMicrosoftのテストでは、Hyper-V上でVMQを使用することで、高いパフォーマンスが実現する

 VMQは、ネットワークを複数の仮想マシンで共有する場合に使われる機能だ。しかし、高いスループットを必要とするアプリケーションを仮想マシンで動かす場合、仮想マシンがSANを直接サポートしていると大きなメリットになる。

 そこで使用されるが、SR-IOV機能だ。SR-IOVは、親パーティションの仮想スイッチなどは利用せず、仮想マシンから直接NICにアクセスする機能だ。1つの仮想マシンがNICを占有するのではなく(VT-d)、複数の仮想マシンで1枚のNICを共有することができる。

 SR-IOVを利用するためには、SR-IOV対応のNICが必要になる(IntelのTV-c対応NICは、SR-IOV機能を含んでいる)。さらに、各仮想マシンにVF(Virtual Function)を作成し、親パーティションにはPF(Physical Function)が設定される。

 SR-IOVは、多くの処理をNIC側で行うため、Windows Server 2012が持つ標準的な仮想スイッチとは別の仮想ネットワークを構成することになる。

 

仮想ネットワークの分離機能

・Address Rewrite/GRE
 Windows Server 2012では、クラウドOSを目指して開発されたため、仮想マシン上でマルチテナントのサーバーを動かせるように、仮想ネットワークの分離機能が用意されている。この機能により、複数のテナントが同じIPアドレス体系を使用していても、きちんとネットワークを分離して、トラブルなくそれぞれが通信できるようにしている。

 Address Rewrite機能は、クラウド管理者がつけたIPアドレスをテナント側が必要とするIPアドレスに書き換える機能だ。この機能により、クラウド管理者は仮想マシンや仮想ネットワークを一元的に管理しつつ、各テナントは自社独自のIPアドレス体系として利用できる。

 GRE(Generic Routing Encapsulation)は、GREヘッダの拡張KeyフィールドにテナントのネットワークIDを埋め込むことで、仮想ネットワークをキチンと分離していく仕組みだ。ただし、GRE対応のネットワーク機器が必要になる。


Windows Server 2012では、ネットワークの仮想化により、同じIPアドレス体系を持つサーバー群を同じクラウドに収容できるAddress Rewriteは、パケットのIPアドレスをマッピングして、独自体系のIPアドレスが利用できるようにしているGREは、テナントのネットワークIDをヘッダーに埋め込む。これにより、GRE対応ネットワーク機器でパケットのハンドリングができるようになる

・ODXのサポート
 EMCやNetApp、DellのEqualLogicなどのネットワークストレージは、単なるストレージではなく、インテリジェントを持つストレージユニットになっている。普通に利用するとWindows Server OSでは、ネットワークストレージのインテリジェント部分がわからないため、各社は専用のソフトウェアをリリースして、ソフトウェアでさまざまな機能をサポートしている。

 そこで、Windows Server 2012では、各社のストレージユニットのインテリジェントを利用するために、ODX(Offload Data Transfer)というAPIを用意した。このAPIをサポートしたストレージユニットは、サーバーからの指令を受けて、ストレージユニット側のCPUを使ってさまざまな処理を行う。このため、サーバー側は、指令を出すだけで、実際の作業を行わなくてよくなる。ODXのサポートは、サーバーの負荷を大幅に低下させる。


ODXは、ネットワークストレージの性能を最も生かす仕組みだ。現在、NetAppやDell、EMCなどが対応を進めている

 このほかにも、IPsecをNIC側にオフロードするIPsec Task Offloadがある。さらに、SMB 3.0でサーバーとファイルサーバー間の通信が複数回線化されている場合は、ネットワーク回線を集約して広帯域のネットワークとして利用したり、回線トラブルが起こった場合は自動的に回線を切り替えるフォールトトレランス機能などを実現したりするマルチチャンネル機能が用意されている。

 このように、ネットワークやNICドライバなどを大幅に機能アップしたことで、ストレージやネットワークの仮想化を行っても、十分なパフォーマンスを得ることが可能になった。

 また、SANとしてはFCがスタンダードだが、10GbEやInfiniBandという選択肢も利用可能になるだろう。特に10GbEは、NICのハードウェアコストが低下するにつれて、Windows Server 2012では大きな存在となるだろう。パフォーマンス面を考えるとInfiniBandやFCは魅力的だが、コストや使い勝手という面では10GbEに負けるポイントが多いように感じる。

関連情報
(山本 雅史)
2012/10/10 06:00