細々と、ネットワークアーキテクチャに関する連載を続けています。今は希有のアーキテクチャ揺籃期ですから、書いておきたいことがどんどん溜まってきます!が、筆無精、遅筆のためなかなか進みません。前回、NFV(Network Function Virtualization; ネットワーク機能仮想化)を取り上げましたが、今回はその続きを書きます。
NFVにおける-ilities
この連載の初回(序論)で、「あるシステムの性質や能力(-ilities)を規定するのはそのシステムのアーキテクチャである」ということを書きました。(特性や能力を表す英単語は Availability、Scalability、Flexibility、Security、Extensibility、Elasticity… のように -ility という語尾がつくことが多いことから、それらが「-ilities」 と総称されます。)
当初サーバ仮想化が普及したときのアーキテクチャ指針は、専ら「 シンプルに」ということだったのではないかと思います。Scalability や Performance の面も、単にブレードを増やすことにより Scale Out させることができる。High Availability にしても、あるブレードが壊れたらそれを自動的に切り離し、即時に別のブレードに VMインスタンスをクローンすればよい。シンプルに、Scalability、Availability、Flexibility、Extensibility、 Elasticity… を実現できるのが、仮想化アーキテクチャの強みです。
しかし、通信事業者が目指す NFV は、そうも言ってられません。「キャリア グレード」という社会的要請、そして通信事業者やシステム提供側のエンジニアリングに対する指向というものもあり、仮想化環境においてもやはり「High Availability」「High Performance」「High Scalability」といったものを設計に組み込むことが求められています。
最適化
そのため、最近では仮想化環境において様々な最適化が行われています。転送性能を最適化するためのDPDK(Intel社によるData Plane Development Kit)や SR-IOV(Single Root IO Virtualization、PCI側による仮想化のサポート)など。また、Open Source Hypervisor である KVM を元に、独自に信頼性や性能を向上させた「Carrier-Grade Hypervisor」などもアナウンスされています。[1] [2]
何のための仮想化か
しかしこのまま最適化を追求して行くと、結局 ATCA(Advanced TCA – Telecom Computing Architecture)を再生産しているだけにならないでしょうか。仮想化の最大のメリットのひとつは、汎用プラットフォームを使うことによるコスト削減、モジュラー性による柔軟性やオープン性の向上です。そのため、特定の Hypervisor に依存しない“Hypervisor Agnostic”という性質も、仮想化設計にあたっての重要な要素でした。しかし、独自拡張を施してしまうと、そこに依存性が出てきます。もちろん、当初は独自であっても標準化すればよい訳ですが、機能が高度化すると細かい仕様の解釈や実装の差異が出やすくなり、標準化されていても現実的には相互接続しにくい、という事態が生じます。ATCA でオープンなエコシステムが機能していたかどうかは疑問です。
シスコにおける現時点での取り組み – ユーザスペースにおける高度化
弊社で仮想化戦略の先陣を切ったのは、やはりデータセンター領域です。そこでは“Hypervisor Agnositc”性がひとつの大きなアーキテクチャ指針になっています。また、共通基盤となるモジュールはできるだけシンプルにしておいた方がよい、という思想があります。なぜなら、機能を高度化すると、ロジックも複雑になるため、そこにバグが混入する可能性が高まるからです。さらに、機能の維持・向上のためにバージョンアップの実施も必要になるでしょう。
仮想化環境においては、個々のユーザ スペースにおけるモジュールの停止・再開、バージョンアップが、非常に簡単に行えますが、その分、共通基盤のミッションクリティカル性は高くなります。したがって「共通基盤の高度化」は、魅力的である一方でリスクも伴うのです。
そのため、弊社における NFV における最適化は、ユーザ スペースにおける取り組みが主になっています。例えば VPP(Vector Packet Processing)。これは Rx メモリの並行的読み出しによりパケット転送処理の高速化を行いますが、ユーザスペースにて direct PCI pass through を行うことにより実現しています。これは Hypervisor 非依存です。また、Virtual EPC(Evolved Packet Core; 仮想モバイルコア)においては、ユーザモジュール間で check pointing およびセッション状態情報の共有を行うことにより、Session Stateful Redundancy を実現します。これも Hypervisor に依存しません。
しかしながら、例えば ETSI NFV ドキュメントの Resiliency Requrements [3] などを見ると、やはり仮想化基盤側への高信頼化要求が記述されています。ATCA の思想からあまり離れていないように見えます。
「-ilities」向上のための高度化・最適化を行うのは共通基盤側かユーザスペース側か。これは、NFV における、ひとつの大きなアーキテクチャ選択肢になると思います。
[1] NEC Virtualized EPC Innovation Powered by Multi Core Intel® Architecture Processors
http://www.intel.cn/content/dam/www/public/us/en/documents/white-papers/communications-nec-virtualized-epc-paper.pdf
[2] NEC Launches World’s First Virtualization Mobile Core Network Solution
http://www.nec.com/en/press/201310/global_20131022_03.html
[3] “Network Function Virtualization (NFV) Resiliency Requirements”, NFV RELA- GS13_0610_v003