先日のエントリー「多様性のアーキテクティング」で、そのための中心的な方法論の一つとして「仮想化」をあげたが、そもそも仮想化とは何か、ということについて書いておかなくてはならない。
最近、コンピューティング領域での「仮想化」とは、「HypervisorやVMによるサーヴァの仮想化」を指すことが多いようである。しかし、それは仮想化のごく一部に過ぎない。
仮想化とは、レイヤ概念(layer of indirection)を設定し、下位のレイヤを上位レイヤが使いやすくするための抽象化を行うことである。だから、コンピュータもネットワークも、それら自体がまさに「仮想化」そのものである。「仮想化するかどうか」は問題ではない。問題は、どのように階層化モデルとレイヤを設定するか、抽象化のレヴェルと切り出し方の単位をどうするか、仮想化されたエンティティの割当と制御・管理をどうするか、などである。
今、特にネットワーク領域における仮想化について、混乱があるかもしれないと思う。例えば、「ネットワーク仮想化企業」と称されるNicira社のNetwork Virtualization Platformでは、これまでのネットワークを「物理ネットワーク(Physical Network)」と位置づけ、それとは切り離した、論理的な仮想ネットワークを構成するという(*1)。
(*1)
http://www.datacentertalk.com/2012/02/nicira-network-virtualization-platform-decouples-physical-and-virtual-network-infrastructure/
しかし「物理ネットワーク」って一体何だ?「物理ネットワーク」なんてあり得ない!物理層だけでネットワークを構成するのでない限り、ネットワーク自体が仮想なのだ。例を挙げるまでもないが少し挙げるとLAG, multi-path, vlan, overlay, tunnel, pseudo wire, logical interface, VPN, VRF, logical routing instance, multi-topology, map and encap....。Interface, Path, Topology, Nodeと言ったあらゆるネットワーク要素は既に仮想化されている。
現在の課題とされていることは、これらの仮想化要素を、いかに、オープンに、柔軟に、自由に、使えるようにするか、ということだろう。そしてそのための捉え方や要件は、誰が使うか(*2)によって異なる。
(*2)
使うのはネットワーク運用者である。しかし、かつてネットワーク運用の目的は専らTransportやConnectivity提供であったが、今は、Contents Provider, Data Center/Cloud Provider (IaaS, PaaS, SaaS...), M2M provider, SNS, Game Providerなど、サーヴィス提供形態は様々であり、それに伴い、「ネットワーク運用」の意味も、ネットワーク運用者の属性も変わってきている。
「ネットワーク仮想化」と言うとき、そこに求められる本質は何か。それぞれの状況に応じた適切な抽象化の度合いや、切り出し方について、まだまだ議論する必要があると感じている。
そう、人によってあるいはコンテキストによってネットワークの仮想化ってまちまちですよね。私的には仮想ネットワークとは「いままで使ってきたネットワークとまったく同等の機能を持つが、仮想的に作り出され、使う側にそれを意識させないたネットワーク」だと思っています。ちょうどハイパーバイザーに対する仮想マシンと同じアナロジーですね。その意味では、まだまだうちの会社の仮想ネットワークも発展途上だと思っています。
投稿情報: Motonori Shindo | 2012.06.26 06:17
おー、進藤さん、ありがとうございます。
なるほど、「いままでのネットワーク」と「仮想的に作り出されたネットワーク」の関係を、「ハイパーバイザー」と「仮想マシン」の関係と相等、と捉える訳ですね。
「いままでのネットワーク」というのが定義できない感はあるけれど、インターネット上にできたオーヴァレイとかが当てはまるかな?
投稿情報: Miya | 2012.06.27 08:04