以下、実施形態について、図面を参照しながら詳細に説明する。具体的には、まず、図1〜3を参照して実施形態の概要について説明する。次に、実施形態の利点についての理解を助けるために、図4〜7を参照して2つの比較例について説明する。その後、実施形態の詳細について図8〜12を参照して説明する。最後に、他の実施形態についても説明する。
図1は、実施形態のシステム構成図である。図1のネットワークシステム100は、複数の物理マシンと複数の通信装置を含む。各通信装置は、複数の物理ネットワークに接続される。各物理マシンは、いずれか1台の通信装置に接続される(換言すれば、各通信装置には、1台以上の物理マシンが接続される)。
ネットワークシステム100は、具体的には、IaaS(Infrastructure as a Service)事業者が運営するDC(Data Center)内に構築されるシステムであってもよい。ネットワークシステム100の全体は、物理的には、1箇所の建屋内にあってもよいし、2箇所以上の建屋に分散していてもよい。
各物理マシンは、1つ以上の仮想マシン(VM:Virtual Machine)を実行することができる。IaaS事業者は、物理マシン上で稼働する(running)VMを、ネットワークを介して顧客に提供する。VMを提供するサービスは、クラウドコンピューティングの普及とともに広まりつつあるサービス形態である。
以下では、IaaS事業者にとっての顧客のことを単に「ユーザ」ともいう。本実施形態におけるユーザは、換言すれば、テナントである。また、本実施形態では、ユーザへのサービスの提供(具体的にはVMの貸与)のために物理マシンが使われるので、物理マシンのことを「物理サーバ」ともいう。
具体的には、図1の例では、DC内にラック110が設置される。ラック110内には、ToR(Top of Rack)111と呼ばれるL2(Layer 2)スイッチと、ToR111に接続される1台以上の物理サーバが設置される。ToRは、「ToRスイッチ」とも呼ばれる。
図1では、ラック110内に3台の物理サーバ112、113、および120が設置されているが、もちろん、1台のラック内の物理サーバの台数は任意である。図1では、紙幅の都合上、物理サーバ112と113の詳細は省略されており、物理サーバ120のみ、その詳細が示されている(物理サーバ120の詳細については後述する)。また、紙幅の都合上、図1では、物理サーバ112とToR111を接続するケーブルと、物理サーバ113とToR111を接続するケーブルも省略されている。
同様に、DC内には、ラック130も設置される。ラック130内にはToR131と、ToR131に接続される1台以上の物理サーバが設置される。図1では、ラック130内に3台の物理サーバ132、133、および140が設置されており、このうち物理サーバ140についてのみ詳細が示されている(物理サーバ140の詳細も後述する)。また、物理サーバ132とToR131を接続するケーブルと、物理サーバ133とToR131を接続するケーブルは図1では省略されている。
さらに、DC内には、ラック150も設置される。ラック150内には、ToR151と、ToR151に接続される1台以上の物理サーバが設置される。図1では、ラック150内に3台の物理サーバ152、153、および物理サーバ160が設置されており、このうち物理サーバ160についてのみ詳細が示されている(物理サーバ160の詳細も後述する)。また、物理サーバ152とToR151を接続するケーブルと、物理サーバ153とToR151を接続するケーブルは図1では省略されている。
なお、図1では、ネットワークシステム100に含まれる複数の通信装置の例として、3台のToR111、131、および151が例示されている。しかし、実施形態に応じて、通信装置の台数は2台であってもよいし、4台以上であってもよい。
また、上記のとおり、複数の通信装置の各々(具体的には各ToR)は、複数の物理ネットワークに接続される。図1には、複数の物理ネットワークの例として、以下の3つのL3ネットワークが例示されている。
・ベストエフォートIPルータ網(best-effort Internet Protocol router network)170。
・MPLS網(Multi-Protocol Label Switching network)171。
・専用回線網(leased line network)172。
これらの複数の物理ネットワークの各々は、IaaS事業者により提供されてもよいし、通信キャリア会社により提供されてもよい。複数の物理ネットワークが、互いに異なる複数の通信キャリア会社により提供されてもよい。また、実施形態に応じて、物理ネットワークの数は2つでもよいし、4つ以上でもよい。複数の物理ネットワークそれぞれの種類も、実施形態に応じて適宜決められる。
ベストエフォートIPルータ網170は、複数のルータを含むネットワークである。ベストエフォートIPルータ網170では、ベストエフォート型の通信が行われ、サービス品質(QoS:Quality of Service)は保証されない。
MPLS網171は、MPLSをサポートする複数のルータ(またはスイッチ)を含むネットワークである。MPLS網171では、ラベルに応じたQoS制御が行われる。MPLS網171上の通信に先立って、RSVP−TE(Resource Reservation Protocol - Traffic Engineering)によるシグナリングが行われる。例えば、MPLS網171上のトンネル(tunnel over the MPLS network)の両端点(endpoints)が設定されたときに、RSVP−TEによるシグナリングが行われてもよい。すると、MPLS網171上のトンネルを介した実際の通信は、ラベルに応じたQoSで行われる。
専用回線網172は、例えば、100Gbps(ギガビット毎秒)などの所定の帯域幅が保証されるネットワークである。専用回線網172は、具体的には、複数のL2スイッチを含むネットワークであってもよい。
図1に示すように、ToR111は、ベストエフォートIPルータ網170とMPLS網171と専用回線網172に接続される。ToR131も同様に、ベストエフォートIPルータ網170とMPLS網171と専用回線網172に接続される。また、ToR151も同様に、ベストエフォートIPルータ網170とMPLS網171と専用回線網172に接続される。
以上のような構成によれば、ToR111に接続された任意の物理サーバ上で稼働する任意のVMと、ToR131に接続された任意の物理サーバ上で稼働する任意のVMを、いずれかの物理ネットワーク上のL2トンネルを介して接続することが可能である。換言すれば、ToR111に接続された任意の物理サーバ上で稼働する任意のVMと、ToR131に接続された任意の物理サーバ上で稼働する任意のVMは、いずれかの物理ネットワーク上のL2トンネルを介してL2フレームを送受信することが可能である。
同様に、ToR111に接続された任意の物理サーバ上で稼働する任意のVMと、ToR151に接続された任意の物理サーバ上で稼働する任意のVMを、いずれかの物理ネットワーク上のL2トンネルを介して接続することも可能である。さらに、同様に、ToR131に接続された任意の物理サーバ上で稼働する任意のVMと、ToR151に接続された任意の物理サーバ上で稼働する任意のVMを、いずれかの物理ネットワーク上のL2トンネルを介して接続することも可能である。
そして、L3ネットワークたる物理ネットワーク上のL2トンネルを利用してIaaS内の2つのVM同士を接続することにより、2つのVM間の通信リンクを実現することができる。よって、T本(1≦T)のトンネルによりT本の通信リンクを実現することで、IaaS内の複数のVM間を接続する仮想イーサネットを構築することが可能である(なお、「イーサネット」は登録商標である)。
トンネリング技術を用いてL3ネットワーク上に仮想イーサネットを構築する技術は、NVO3(Network Virtualization over Layer 3)と呼ばれる。NVO3は、IETF(Internet Engineering Task Force)のNVO3ワーキンググループにより、標準化の検討がなされている。クラウドコンピューティングの広まりにともなう、いくつかのスケーラビリティの問題は、NVO3の利用によって解消することが可能である。
例えば、1つの物理的なL2ネットワークセグメント内に収容可能な物理ノードの数には上限がある。また、1台のL2スイッチが取り扱うことのできるMACアドレスの数にも、上限がある。上限の具体的な値は、L2スイッチの性能にもよる。例えば、最大で約4千個〜約1万個程度のMACアドレスを取り扱えるL2スイッチが使われることも多い。
しかし、クラウドの成長にともなって、DC内の物理サーバの台数は増加している。例えば、1千台以上の物理サーバを有するDCもあり、約1万台もの物理サーバを有するDCもある。よって、DC内の全物理サーバを1つのL2ネットワークセグメントでカバーすることは、難しくなりつつある。
そして、上記のとおりDC内の物理サーバの台数は増加傾向にあるから、それにともなってDC内で稼働するVMの数も増加している。1台の物理サーバ上で稼働するVMの数は様々であるが、例えば、約60個のVMが1台の物理サーバ上で稼動する場合もある。よって、DC内で数万のVMが稼働する可能性もある。
ところが、数万以上にもなり得るVMの数と比べると、異なるVLAN−IDによって区別可能なVLANの個数は遥かに少ない。なぜなら、IEEE(Institute of Electrical and Electronics Engineers)802.1Q規格によれば、VLAN−IDは12ビットの値だからである。つまり、使用可能なVLANの数は、不足する傾向にある。
このように、物理的なL2ネットワークには、いくつかのスケーラビリティの問題がある。NVO3は、大規模DCにおいて、これらのスケーラビリティの問題を解消することのできる技術である。
よって、本実施形態でも、スケーラビリティの問題の解消のため、NVO3が利用される。具体的には、上記のとおり、本実施形態では、L3物理ネットワーク上のL2トンネルによって2つのVM間が接続される。なお、ある物理ネットワーク上にL2トンネルが作成される場合、当該物理ネットワークは、デリバリ・ネットワーク(delivery network)とも言われる。
また、詳しくは後述するように、本実施形態の利点の1つは、VMのペアごとにデリバリ・ネットワークが選択可能なことである。その結果、本実施形態によれば、VMのペアごとに、トンネルを介した通信のQoSが選択可能となる。なぜなら、異なる物理ネットワークは、異なるQoSを提供し得るからである。以上の利点は、ユーザにとっては、「VMのペアごとに、当該ペアのVM間の通信のサービスレベルが選択可能である」ということを意味する。
ところで、図1には、ネットワークシステム100中の複数の物理サーバを管理するIaaS管理サーバ180も示されている。以下では説明の便宜上、IaaS管理サーバ180がベストエフォートIPルータ網170に接続されているものとする。
しかし、IaaS管理サーバ180は、MPLS網171または専用回線網172に接続されていてもよい。あるいは、ToR111、131、151の各々は、さらに、図1には不図示の管理用ネットワークに接続されていてもよい。そして、IaaS管理サーバ180が当該管理用ネットワークに接続されていてもよい。
いずれにせよ、IaaS管理サーバ180は、何らかのネットワークを介して各物理サーバと通信することができる。よって、IaaS管理サーバ180は、トンネルの一方の端点のVMが稼働している物理サーバと、トンネルの他方の端点のVMが稼働している物理サーバに対して、トンネルの設定に関する命令を与えることができる。
さて、図1には、物理サーバ120が有するNIC(Network Interface Card)121と、物理サーバ140が有するNIC141と、物理サーバ160が有するNIC161が示されている。各NICは、物理的なネットワークインタフェイス装置の具体例である。
各NICは、拡張カード型のNICでもよいし、オンボード型のNICでもよい。各NICは、具体的には、ケーブルを挿すための物理的なポート、物理層の処理を行うための「PHYチップ」と呼ばれる回路、MAC副層の処理を行うための「MACチップ」と呼ばれる回路、などを含む。
本実施形態では、各NICに、3つの物理ネットワークに対応する異なる3つのプレフィックスから始まる異なる3つのIPアドレスが割り当てられる。以下では説明の便宜上、次のように仮定する。
・ベストエフォートIPルータ網170に対応するプレフィックスは、2001:db8:1::/48である。よって、IPアドレスの49〜64ビット目によって、ベストエフォートIPルータ網170内のL2セグメントを識別することができる。
・MPLS網171に対応するプレフィックスは、2001:db8:2::/48である。よって、IPアドレスの49〜64ビット目によって、MPLS網171内のL2セグメントを識別することができる。
・専用回線網172に対応するプレフィックスは、2001:db8:3::/48である。よって、IPアドレスの49〜64ビット目によって、専用回線網172内のL2セグメントを識別することができる。
・NIC121には、3つのIPアドレスI1(2001:db8:1:1::1)とI2(2001:db8:2:1::1)とI3(2001:db8:3:1::1)が割り当てられている。
・NIC141には、3つのIPアドレスI4(2001:db8:1:98::1)とI5(2001:db8:2:98::1)とI6(2001:db8:3:98::1)が割り当てられている。
・NIC161には、3つのIPアドレスI7(2001:db8:1:99::1)とI8(2001:db8:2:99::1)とI9(2001:db8:3:99::1)が割り当てられている。
なお、上記の例では、ベストエフォートIPルータ網170に対応する3つのIPアドレスI1とI4とI7の下位64ビット(least significant 64 bits)の値は、いずれも「0:0:0:1」である。同様に、上記の例では、IPアドレスI2とI5とI8の下位64ビットの値同士も互いに等しいし、IPアドレスI3とI6とI9の下位64ビットの値同士も互いに等しい。
また、別の観点から見ると、上記の例では、1枚のNIC121に割り当てられている3つのIPアドレスI1とI2とI3の下位64ビットの値同士も等しい。同様に、上記の例では、IPアドレスI4とI5とI6の下位64ビットの値同士も等しいし、IPアドレスI7とI8とI9の下位64ビットの値同士も等しい。
以上のように、同じ物理ネットワークに対応して異なる複数のNICに割り当てられている複数のIPアドレスの下位ビットを同じ値に設定することは、IaaS事業者が行う管理作業を簡素化するうえで有益である。同様に、1枚のNICに割り当てられている複数のIPアドレスの下位ビットを同じ値に設定することも、管理作業を簡素化するうえで有益である。しかし、もちろん、各物理ネットワークに対応するプレフィックスよりも下位のビットの値は、任意に設定されてもよい。
なお、以上の説明のとおり、本実施形態では、1枚のNICに複数のIPアドレスが割り当てられる。IPv6(Internet Protocol version 6)のマルチプレフィックス機能によれば、このように複数のIPアドレスを1つの装置に割り当てることが可能となる。換言すれば、マルチプレフィックス機能により、1つの装置の1つのMACアドレスに複数のIPアドレスを対応づけることが可能となる。
また、図1には、物理サーバ120上で稼働するVM122および123、物理サーバ140上で稼働するVM142、ならびに、物理サーバ160上で稼働するVM162も例示されている。もちろん、物理サーバ120、140、および/または160上で、不図示の他のVMがさらに稼働していてもよい。
なお、本実施形態において、1台の物理サーバ上で1つまたは複数のVMを稼働させるための仮想化アーキテクチャの種類は、特に限定されない。例えば、ハイパーバイザが用いられてもよいし、または、KVM(Kernel-based Virtual Machine)が用いられてもよい。あるいは、「コンテナ」または「ゾーン」などと呼ばれる複数の環境をOS上で提供するためのOS仮想化技術が用いられてもよい。
いずれの仮想化アーキテクチャが使われるにせよ、VMによるネットワークアクセスは、広義のホストOSを介して行われる。ホストOSは、物理NICなどの物理ハードウェアへのアクセス特権を有する特別なOSである。
例えば、Xenハイパーバイザが使われる場合、ホストOSは、「ドメイン0」(つまり、物理ハードウェアに関する特権を有するドメイン)上で動作するOSであり、VMは「ドメインU」(特権を持たないドメイン)のことである。また、KVMが利用される場合、ホストOSのカーネルの機能を用いて、各VM上でゲストOSが動作する。OS仮想化技術が使われる場合は、例えば、ホストOSにより提供される大域ゾーン(global zone)内に、各VMに相当するインスタンスである非大域ゾーン(non-global zone)が含まれてもよい。
いずれの仮想化アーキテクチャが使われるにせよ、VM内には、仮想NICが含まれる。VM内の仮想NICは、図1では省略されている。その代わり、図1には、ホストOS内の仮想NICが例示されている。
ホストOS内の仮想NICは、物理NICとVM(より詳しくはVM内の仮想NIC)との間に、物理サーバ(より具体的にはホストOS)により提供される、仮想インタフェイスである。紙幅の都合上、図1では、ホストOS内の各仮想NICは、「VNIC」と略記されている。
より詳しく説明すると、ホストOS内の仮想NICは、VM側の仮想インタフェイスと、仮想ブリッジを含む。そして、仮想ブリッジは、VM側の仮想インタフェイスと物理NICのインタフェイスとの間をブリッジする。例えば、Xenハイパーバイザが使われる場合、VM側の仮想インタフェイスは「vif1.0」などの名前で識別され、仮想ブリッジは「xenbr0」などの名前で識別され、物理NICのインタフェイスは「peth0」などの名前で識別される。他の仮想化アーキテクチャでも、類似の仮想NICがホストOS内に設けられる。つまり、ホストOS内の仮想NICは、VM内の仮想NICとペアになった仮想インタフェイスと、物理インタフェイス(すなわち、物理NICのインタフェイス)との間をブリッジする仮想ブリッジにより、VMと物理NICの間にインタフェイスを提供する。
図1には、具体的には、以下のような仮想NICが示されている。
VM122とVM162の間が、ベストエフォートIPルータ網170上のトンネルを介して接続される。この接続のために、物理サーバ120のホストOS内には仮想NIC124が設けられ、物理サーバ160のホストOS内には仮想NIC163が設けられる。
物理サーバ120のホストOS内の仮想NIC124は、NIC121と、VM122内の不図示の仮想NICとの間のインタフェイスを提供する。つまり、仮想NIC124は、VM122内の不図示の仮想NICとペアになっている。より具体的には、仮想NIC124は、ベストエフォートIPルータ網170に対応するプレフィックスから始まるIPアドレスI1(2001:db8:1:1::1)を用いた通信のためのインタフェイスを、VM122に対して提供する。
同様に、物理サーバ160のホストOS内の仮想NIC163は、NIC161と、VM162内の不図示の仮想NICとの間のインタフェイスを提供する。つまり、仮想NIC163は、VM162内の不図示の仮想NICとペアになっている。より具体的には、仮想NIC163は、ベストエフォートIPルータ網170に対応するプレフィックスから始まるIPアドレスI7(2001:db8:1:99::1)を用いた通信のためのインタフェイスを、VM162に対して提供する。
よって、VM122とVM162は、仮想NIC124、NIC121、ToR111、ベストエフォートIPルータ網170、ToR151、NIC161、および仮想NIC163を介して、互いに通信することができる。
より具体的には、トンネル作成時にIaaS管理サーバ180から与えられる命令にしたがって、物理サーバ120が仮想NIC124をセットアップする。そして、仮想NIC124は、VM122から出力されるL2フレームを適宜カプセル化する(encapsulate)。カプセル化されたL2フレームは、L3パケットの中に含められる。それにより、L3パケット内にカプセル化されたL2フレームは、ベストエフォートIPルータ網170上のトンネルを介して、VM162に到達する。
同様に、トンネル作成時にIaaS管理サーバ180から与えられる命令にしたがって、物理サーバ160が仮想NIC163をセットアップする。そして、仮想NIC163は、VM162から出力されるL2フレームを適宜カプセル化する。カプセル化されたL2フレームは、L3パケットの中に含められる。それにより、L3パケット内にカプセル化されたL2フレームは、ベストエフォートIPルータ網170上のトンネルを介して、VM122に到達する。
また、図1の例では、VM123とVM142の間が、専用回線網172上のトンネルを介して接続される。この接続のために、物理サーバ120のホストOS内には仮想NIC125がさらに設けられ、物理サーバ140のホストOS内には仮想NIC143が設けられる。
物理サーバ120のホストOS内の仮想NIC125は、NIC121と、VM123内の不図示の仮想NICとの間のインタフェイスを提供する。より具体的には、仮想NIC125は、専用回線網172に対応するプレフィックスから始まるIPアドレスI3(2001:db8:3:1::1)を用いた通信のための仮想的なインタフェイスを、VM123に対して提供する。
同様に、物理サーバ140のホストOS内の仮想NIC143は、NIC141と、VM142内の不図示の仮想NICとの間のインタフェイスを提供する。より具体的には、仮想NIC143は、専用回線網172に対応するプレフィックスから始まるIPアドレスI6(2001:db8:3:98::1)を用いた通信のための仮想的なインタフェイスを、VM142に対して提供する。
よって、VM123とVM142は、仮想NIC125、NIC121、ToR111、専用回線網172、ToR131、NIC141、および仮想NIC143を介して、互いに通信することができる。
より具体的には、トンネル作成時にIaaS管理サーバ180から与えられる命令にしたがって、物理サーバ120が仮想NIC125をセットアップする。そして、仮想NIC125は、VM123から出力されるL2フレームを適宜カプセル化する。それにより、カプセル化されたL2フレームは、専用回線網172上のトンネルを介して、VM142に到達する。
同様に、トンネル作成時にIaaS管理サーバ180から与えられる命令にしたがって、物理サーバ140が仮想NIC143をセットアップする。そして、仮想NIC143が、VM142から出力されるL2フレームを適宜カプセル化する。それにより、カプセル化されたL2フレームは、専用回線網172上のトンネルを介して、VM123に到達する。
ところで、ベストエフォートIPルータ網170の内部では、ベストエフォート型の通信(つまりQoSが保証されない通信)が行われる。ベストエフォートIPルータ網170により提供されるQoSは、便宜上、ゼロと見なせる。
他方、MPLS網171の内部では、ラベルに応じたQoSで通信が行われる。MPLS網171は、ある1種類のQoSのみをサポートしてもよいし、2種類以上のQoSをサポートしてもよい。
また、専用回線網172の内部では、保証された所定の帯域幅で(換言すれば、所定のQoSで)通信が行われる。換言すれば、専用回線網172は、所定のQoSをサポートする。
しかし、MPLS網171の外部ではQoSは保証されず、専用回線網172の外部でもQoSは保証されない。つまり、物理ネットワークの内部の通信は、当該物理ネットワークの提供するQoSで行われるが、当該物理ネットワークの外部では、QoSの保証がない。
ところが、2つのVM間の通信に使われるトンネルの両端点は、いずれも、ベストエフォートIPルータ網170、MPLS網171、および専用回線網172などの物理ネットワークの外部にある。したがって、物理ネットワークの内部だけでなく以下の2つの区間においても所望のQoSを達成することにより、トンネルの一方の端点から他方の端点までの全体にわたって、所望のQoSが達成される。
・送信元のVMが稼働している物理サーバの物理NICから、ToRを介して、デリバリ・ネットワークたる物理ネットワークのエッジルータ(またはエッジスイッチ)に至るまでの区間。
・当該物理ネットワークのもう一つのエッジルータ(またはもう一つのエッジスイッチ)から、ToRを介して、送信先のVMが稼働している物理サーバの物理NICに至るまでの区間。
トンネルの一方の端点から他方の端点までの全体にわたって所望のQoSを達成するためには、少なくとも2つの方法がある。本実施形態では、どちらの方法が使われてもよい。また、2つの方法を組み合わせることも好ましい。
1つ目の方法は、十分に大きなスループットを持つToRを使う方法である。なお、ここでの「十分に大きなスループット」は、以下のような様々な要因に依存する。
・ToRに接続される物理サーバの数。
・各物理サーバ上で稼働するVMの数。
・各VMが送受信するデータの量。
・ToRが接続される物理ネットワークの数(つまりネットワークシステム100で使われる物理ネットワークの数)。
・各物理ネットワークが提供するQoS。
また、ToRのスループットは、ToRの仕様に応じて決まる。ToRの仕様は様々な項目により規定される。例えば、ToR内でポートからポートへのフレームのスイッチングを行うためのハードウェア回路および/またはプロセッサの性能や、ToR内のバッファの容量や、ToRがサポートする通信規格などが、仕様項目として挙げられる。
よって、ネットワークシステム100を設計する設計者(例えばIaaS事業者のネットワーク管理者)は、上記のような様々な要因から、「十分に大きい」と見なせるだけのスループットを見積もる。そして、設計者は、見積もった値以上のスループットを持つToRを使って、ネットワークシステム100を構築する。
十分に大きなスループットを持つToRを使うことにより、上記2つの区間での輻輳を避けることができる。その結果、輻輳に起因する遅延や、輻輳に起因するフレームの廃棄を避けることもできる。つまり、十分に大きなスループットを持つToRを使うことにより、上記2つの区間での通信QoSの劣化を防ぐことができる。したがって、十分に大きなスループットを持つToRを使うことにより、VM間でエンド・ツー・エンドのQoS(end-to-end QoS)を達成することができる。
VM間でエンド・ツー・エンドのQoSを達成するための2つ目の方法は、上記2つの区間でVLANタグによるCoS(Class of Service)制御を行う方法である。
IEEE802.1Q規格によれば、VLANタグは、16ビットのTPID(Tag Protocol Identifier)と、16ビットのTCI(Tag Control Information)を含む。そして、TCIは、3ビットのPCP(Priority Code Point)と、1ビットのCFI(Canonical Format Indicator)と、12ビットのVLAN−IDを含む。VLANタグ中のこれらのフィールドのうち、PCPが優先度を示す。PCPは、CoS制御のために使われる。PCPフィールドでは、「0」という値が最低の優先度を示し、「7」という値が最高の優先度を示す。
2つ目の方法では、QoSに応じた値がVLANタグ中のPCPとして設定される。よって、設定された優先度にしたがって上記の2つの区間でCoS制御が行われる。
例えば、図1に例示した3つの物理ネットワークが使われる場合、専用回線網172のQoSが最も高く、MPLS網171のQoSが2番目に高く、ベストエフォートIPルータ網170のQoSが最も低い。よって、0から7という8つの値の中から予め適宜選ばれた3つの値のうち、最も大きな値が、専用回線網172上のトンネルを介して送信されるデータに対応するPCPとして使われる。また、MPLS網171上のトンネルを介して送信されるデータに対応するPCPとしては、上記3つの値のうち、2番目に大きな値が使われる。そして、ベストエフォートIPルータ網170上のトンネルを介して送信されるデータに対応するPCPとしては、上記3つの値のうち、最も小さな値が使われる。
上記3つの値は、IaaS事業者が適宜予め決めてよい。説明の便宜上、上記3つの値が、例えば、「0」と「2」と「5」であるとする。
また、上記のように、図1の例では、VM123と142は、専用回線網172上のトンネルを介してデータを送受信する。よって、VM123と142の間で送受信されるデータには、下記2つの区間において、PCPとして、専用回線網172に対応する「5」という値が指定される。
・NIC121からToR111を介して専用回線網172のエッジルータ(またはエッジスイッチ)に至るまでの区間。
・専用回線網172のもう一つのエッジルータ(またはエッジスイッチ)からToR131を介してNIC141に至るまでの区間。
一方、図1の例では、VM122と162は、ベストエフォートIPルータ網170上のトンネルを介してデータを送受信する。よって、VM122と162の間で送受信されるデータには、下記2つの区間において、PCPとして、ベストエフォートIPルータ網170に対応する「0」という値が指定される。
・NIC121からToR111を介してベストエフォートIPルータ網170のエッジルータ(またはエッジスイッチ)に至るまでの区間。
・ベストエフォートIPルータ網170のもう一つのエッジルータ(またはエッジスイッチ)からToR151を介してNIC161に至るまでの区間。
例えば、仮に、VM123がVM142にデータを送ろうとするのとほぼ同時に、VM122がVM162にデータを送ろうとしたとする。このような場合でも、VM123がVM142に送ろうとするデータの方が、VM122がVM162に送ろうとするデータよりも優先的に、NIC121からToR111へ送信される。換言すれば、前者のデータと後者のデータがNIC121内で仮に競合したとしても、前者のデータが競合に勝つ。なぜなら、前者のデータには、後者のデータに対して指定される「0」というPCPよりも高い優先度を示す、「5」というPCPが指定されているからである。
また、別の例として、仮に、次の2つの時点がほぼ同時であったとする。
・ToR111が、VM162からのVM122宛のデータを、ベストエフォートIPルータ網170のエッジルータから受信する時点。
・ToR111が、VM142からのVM123宛のデータを、専用回線網172のエッジルータから受信する時点。
このような場合でも、VM142からのVM123宛のデータの方が、VM162からのVM122宛のデータよりも優先的に、ToR111からNIC121へ送信される。換言すれば、前者のデータと後者のデータがToR111内で(より詳しくは、NIC121と接続されるポート用の出力キューにおいて)仮に競合したとしても、前者のデータが競合に勝つ。なぜなら、前者のデータには、後者のデータに対して指定される「0」というPCPよりも高い優先度を示す、「5」というPCPが指定されているからである。
以上のように、2つ目の方法によれば、物理サーバ(より詳しくは、物理サーバの有する物理NIC)と、物理ネットワークのエッジルータ(またはエッジスイッチ)の間の区間でCoS制御が行われる。そして、このCoS制御により、実質的には、物理サーバとエッジルータ(またはエッジスイッチ)の間で、QoSに応じて流量を制限することが可能となる。その結果、2つ目の方法では、エンド・ツー・エンドのQoSが達成される。
以上のように、1つ目の方法、2つ目の方法、または両者の組み合わせにより、VM間でのエンド・ツー・エンドのQoSが実質的に保証される。
ところで、NIC121からToR111に送信されるL2フレームは、以下のフィールドを含む。
・外側(outer)L2ヘッダ。
・トンネリング用のヘッダ(以下「トンネルヘッダ」という)。
・内側(inner)L2ヘッダ。
・内側L3パケット。
・外側L2トレイラ。
ここで、内側L3パケットは、カプセル化されてトンネルを介して送信される対象の内側L2フレームの、ペイロードである。内側L3パケットに使われるL3プロトコルは、特に限定されない。例えば、内側L3パケットは、IPパケット(すなわちIPデータグラム)であってもよい。また、内側L3パケットのペイロードは、任意のプロトコルのPDU(Protocol Data Unit)であってよい。
内側L2フレームは、送信元のVMにより生成される。内側L2フレームは、VM間で使われるL2プロトコル(つまりトンネリングにおけるペイロード・プロトコル)にしたがった形式を有する。VM間で使われるL2プロトコルは、特に限定されない。例えば、内側L2フレームがイーサネットフレームであってもよい。
トンネルヘッダの具体的形式は、トンネリングにおけるデリバリ・プロトコルによる。本実施形態では、デリバリ・プロトコルは特に限定されない。例えば、以下に例示するように様々なプロトコルが利用可能である。
・VXLAN(Virtual Extensible Local Area Network)が使われる場合、トンネルヘッダは、IPヘッダとUDP(User Datagram Protocol)ヘッダとVXLANヘッダを含む。
・NVGRE(Network Virtualization using Generic Routing Encapsulation)が使われる場合、トンネルヘッダは、IPヘッダとGRE(Generic Routing Encapsulation)ヘッダを含む。
・L2TPv3(Layer 2 Tunneling Protocol version 3)が使われる場合、トンネルヘッダは、IPヘッダとL2TPヘッダを含む。実装によっては、トンネルヘッダは、IPヘッダとUDPヘッダとL2TPヘッダを含んでもよい。
・EtherIPが使われる場合、トンネルヘッダは、IPヘッダとEtherIPヘッダを含む。
このように、トンネルヘッダの具体的形式は、実施形態に応じて様々に異なり得る。しかし、いずれの場合も、トンネルヘッダはIPヘッダを含む。トンネルヘッダに含まれるIPヘッダは、図1に示す本実施形態では、より詳しくは、IPv6ヘッダである。
そして、トンネルヘッダ内のIPv6ヘッダ内に指定される送信元IPアドレスは、送信側の物理サーバの物理NICに割り当てられている複数のIPアドレスのうち、デリバリ・ネットワークたる物理ネットワークのプレフィックスから始まるIPアドレスである。また、トンネルヘッダ内のIPv6ヘッダ内に指定される送信先アドレスは、受信側の物理サーバの物理NICに割り当てられている複数のIPアドレスのうち、デリバリ・ネットワークたる物理ネットワークのプレフィックスから始まるIPアドレスである。
なお、外側L2フレームのペイロードは、トンネルヘッダ、内側L2ヘッダ、および内側L3パケットを含む。トンネリングが行われる場合、プロトコルによっては、内側L2フレームのトレイラは省略される。例えば、VXLANプロトコルが使われる場合、内側L2フレームのFCS(Frame Check Sequence)が省略される。一方、本実施形態の外側L2フレームはイーサネットフレームであり、外側L2トレイラとして具体的にはFCSが使われる。
なお、上記の第2の方法が採用される場合は、物理サーバとエッジルータ(またはエッジスイッチ)の間の区間では、外側L2ヘッダはVLANタグを含む。そして、VLANタグ内のPCPの値にしたがって、上記のとおりCoS制御が行われる。しかし、上記の第2の方法が採用されない場合には、外側L2ヘッダVLANタグを含まない。
VLANタグが使われるかどうかによらず、本実施形態によれば、いずれかの物理ネットワーク上のトンネルを介して、内側L2フレームがVMからVMへと、ユーザの所望のQoSで送信される。つまり、ユーザが希望するサービスレベルを提供することのできるQoSをサポートするような物理ネットワーク上に、トンネルを作成することにより、所望のQoSによるVM間通信が可能となる。
そして、図1に示すように、複数の異なるQoSをサポートする複数の物理ネットワークが使われる場合、QoSの選択肢は複数存在する。よって、本実施形態によれば、ユーザの希望に応じて複数の選択肢の中から適宜選ばれたQoSで、VM同士がデータを送受信することが可能である。
また、VM間で所望のQoSを達成するためには、具体的には、2つのVMをそれぞれホストする2つの物理サーバが、IaaS管理サーバ180から与えられる命令にしたがって、適宜トンネルをセットアップする。以下に、IaaS管理サーバ180の動作という観点から、本実施形態についてさらに説明する。
IaaS管理サーバ180は、ネットワークシステム100を管理する管理装置の一例である。IaaS管理サーバ180は、特定のQoSに対応するトンネル(具体的にはレイヤ2トンネル)を介して、異なる物理マシン上で動作するVM同士を互いに接続するための命令(以下「トンネル接続命令」という)を受け付ける。
具体的には、IaaS管理サーバ180は、入力装置(例えば後述の図3の入力装置254)または通信装置(例えば後述の図3のNIC253)を介して、トンネル接続命令を受け付ける。換言すれば、入力装置は、トンネル接続命令を受け付けるための受け付け手段の1つの例であり、通信装置は受け付け手段の別の例である。
ここで、物理ネットワークの数がN個(N≧2)であるとする。図1の例ではN=3である。各物理ネットワークは1つ以上のQoSをサポートするので、N個の物理ネットワークにより、延べM通りのQoSがサポートされる(M≧N)。
例えば、MPLS網171が1種類のQoSのみをサポートする場合、M=N=3であり、MPLS網171が2種類のQoSをサポートする場合、M=4である。上記のようにトンネル接続命令によりトンネルに対して指定される特定のQoSは、M通りのQoSのうちのいずれかである。また、ここでのトンネルは、具体的には、L3物理ネットワーク上のL2トンネルである。
説明の便宜上、第1のVMと第2のVMの間を、ある特定のQoSに対応するトンネルを介して互いに接続するためのトンネル接続命令を、IaaS管理サーバ180が受け付けるものとする。例えば、第1のVMがVM123であり、第2のVMがVM142であってもよい。
また、第1のVM(例えばVM123)は、第1の物理マシン(例えば物理サーバ120)上で動作するものとする。第1の物理マシンは、第1の物理ネットワークインタフェイス装置(例えばNIC121)を介して、N個の物理ネットワークに接続される。具体的には、第1の物理マシンは、第1の物理ネットワークインタフェイス装置を介して第1の通信装置(例えばToR111)に接続され、第1の通信装置が、N個の物理ネットワークに接続される。
同様に、第2のVM(例えばVM142)は、第2の物理マシン(例えば物理サーバ140)上で動作するものとする。第2の物理マシンは、第2の物理ネットワークインタフェイス装置(例えばNIC141)を介して、N個の物理ネットワークに接続される。具体的には、第2の物理マシンは、第2の物理ネットワークインタフェイス装置を介して第2の通信装置(例えばToR131)に接続され、第2の通信装置が、N個の物理ネットワークに接続される。
さて、第1の物理ネットワークインタフェイス装置には、複数のアドレスが割り当てられている。具体的には、第1の物理ネットワークインタフェイス装置には、N個の物理ネットワークに対応して、N個のアドレス(具体的にはIPアドレスであり、さらに詳細に言えばIPv6アドレスである)が割り当てられている。
これらN個のアドレスのうち、N個の物理ネットワークの中で特定のQoSをサポートする特定の物理ネットワークに対応するアドレスを、便宜上、「第1のアドレス」という。つまり、第1のアドレスは、特定の物理ネットワークに対応して第1の物理ネットワークインタフェイス装置に割り当てられているアドレスである。
例えば、NIC121には、N(=3)個のIPアドレスI1〜I3が割り当てられている。そして、特定の物理ネットワークが例えば専用回線網172である場合、第1のアドレスは、IPアドレスI1〜I3のうち、IPアドレスI3である。
同様に、第2の物理ネットワークインタフェイス装置にも、複数のアドレスが割り当てられている。具体的には、第2の物理ネットワークインタフェイス装置にも、N個の物理ネットワークに対応して、N個のアドレスが割り当てられている。
これらN個のアドレスのうち、特定の物理ネットワークに対応するアドレスを、便宜上、「第2のアドレス」という。つまり、第2のアドレスは、特定の物理ネットワークに対応して第2の物理ネットワークインタフェイス装置に割り当てられているアドレスである。
例えば、NIC141には、N(=3)個のIPアドレスI4〜I6が割り当てられている。そして、特定の物理ネットワークが例えば専用回線網172である場合、第2のアドレスは、IPアドレスI4〜I6のうちI6である。
さて、上記のようなトンネル接続命令を受け付けると、IaaS管理サーバ180は、IaaS管理サーバ180に内蔵または接続された通信装置を介して、第1と第2の物理マシンに対して命令を与える。IaaS管理サーバ180に内蔵または接続された通信装置は、トンネル接続命令を受け付ける受け付け手段として動作し得るだけでなく、さらに、第1と第2の物理マシンに命令を送信するための送信手段としても動作する。
IaaS管理サーバ180が第1と第2の物理マシンにそれぞれ与える命令は、L2フレーム(例えばイーサネットフレーム)のカプセル化の際に使われるアドレスに関する命令である。
第1のVMが第2のVMへ送信しようとする第1のL2フレームを、トンネルを介して送信するために、第1の物理マシンが、第1のL2フレームを第1のL3パケット(具体的にはIPパケット)の中にカプセル化することがある。IaaS管理サーバ180は、そのカプセル化の際には、上記の第1と第2のアドレスを使うように、第1の物理マシンに対して命令する。より具体的には、IaaS管理サーバ180は、第1のL3パケットの送信元アドレスとして第1のアドレスを使うように、かつ、第1のL3パケットの送信先アドレスとして第2のアドレスを使うように、第1の物理マシンに対して命令する。
同様に、第2のVMが第1のVMへ送信しようとする第2のL2フレームを、トンネルを介して送信するために、第2の物理マシンが、第2のL2フレームを第2のL3パケット(具体的にはIPパケット)の中にカプセル化することがある。IaaS管理サーバ180は、そのカプセル化の際には、上記の第2と第1のアドレスを使うように、第2の物理マシンに対して命令する。より具体的には、IaaS管理サーバ180は、第2のL3パケットの送信元アドレスとして第2のアドレスを使うように、かつ、第2のL3パケットの送信先アドレスとして第1のアドレスを使うように、第2の物理マシンに対して命令する。
以上のような第1の物理マシンに対する命令は、具体的には、第1のアドレスと第2のアドレスを含む情報の通知であってもよい。換言すれば、カプセル化のための送信元アドレスとして第1のアドレスを指定するとともに、カプセル化のための送信先アドレスとして第2のアドレスを指定する設定情報を、IaaS管理サーバ180が第1の物理マシンに送信してもよい。第1の物理マシンは、送信された設定情報にしたがって第1と第2のアドレスを記憶し、第1のL2フレームのカプセル化の際には、記憶した第1と第2のアドレスを使用する。第2の物理マシンに対する命令についても同様である。
また、IaaS管理サーバ180は、トンネル(すなわちL2トンネル)を識別するトンネル識別情報を生成または決定し、通信装置を介してトンネル識別情報を第1の物理マシンと第2の物理マシンに通知してもよい。例えば、IaaS管理サーバ180は、第1のアドレスと第2のアドレスとトンネル識別情報を含む情報を、第1の物理マシンに送信してもよい。それによって、IaaS管理サーバ180は、上記の命令を第1の物理マシンに与えるとともに、トンネル識別情報を第1の物理マシンに通知してもよい。同様に、IaaS管理サーバ180は、第2のアドレスと第1のアドレスとトンネル識別情報を含む情報を、第2の物理マシンに送信してもよい。
第1の物理マシンは、上記カプセル化の際にトンネル識別情報を使ってもよい。具体的には、第1の物理マシンは、第1のL3パケットにおいて、カプセル化された第1のL2フレームより前にトンネル識別情報を含めてもよい。同様に、第2の物理マシンは、第2のL3パケットにおいて、カプセル化された第2のL2フレームより前にトンネル識別情報を含めてもよい。
第1と第2のL3パケットは、具体的には、例えば上述したようなトンネルヘッダを含む。例えばVXLANヘッダが使われる場合、トンネル識別情報は、具体的にはVNI(VXLAN Network Identifier)である。あるいは、GREヘッダが使われる場合、トンネル識別情報は、具体的には、RFC(Request For Comments)2890で定義されるキーの、全部または一部であってもよい。GREヘッダ中のキーは「GREキー」とも言われ、キーの一部をTNI(Tenant Network Identifier)として使う技術も知られている。
ところで、IaaS管理サーバ180が上記のように指定する第1と第2のアドレスは、第1と第2の物理ネットワークインタフェイス装置にそれぞれ割り当てられているアドレスである。一方、第1と第2のVMは、物理的な装置に割り当てられたアドレスを直接は認識しない。よって、第1の物理ネットワークインタフェイス装置と第1のVMとの間には、第1の物理マシンにより、第1の仮想インタフェイスが提供される。また、第2の物理ネットワークインタフェイス装置と第2のVMとの間には、第2の物理マシンにより、第2の仮想インタフェイスが提供される。
IaaS管理サーバ180は、第1の物理マシンに対して、さらに、第1の仮想インタフェイスを、第1のアドレスと第2のアドレスとトンネル識別情報の組み合わせに対応づけるよう、命令してもよい。つまり、IaaS管理サーバ180は、第1のアドレスと第2のアドレスとトンネル識別情報の組み合わせに対応する第1の仮想インタフェイスを、第1の物理ネットワークインタフェイス装置と第1のVMとの間に設けるよう、第1の物理マシンに命令してもよい。この命令により、IaaS管理サーバ180は、第2のL3パケットを第1の物理ネットワークインタフェイス装置が受信した場合に第1の物理マシンが第1の仮想インタフェイスを介して第2のL2フレームを第1のVMに出力するようにさせることができる。
例えば、第1のVMがVM123であり、第1の物理マシンが物理サーバ120であり、第1のアドレスがIPアドレスI3だとする。また、第2のVMがVM142であり、第2の物理マシンが物理サーバ140であり、第2のアドレスがIPアドレスI6だとする。
以上のような場合、第1の仮想インタフェイスは、物理サーバ120のホストOS内に設けられる仮想NIC125であり、第2の仮想インタフェイスは、物理サーバ140のホストOS内に設けられる仮想NIC143である。IaaS管理サーバ180は、仮想NIC125をIPアドレスI3とI6とトンネル識別情報の組み合わせに対応づけるよう、物理サーバ120に命令する。
物理サーバ120は、命令にしたがって仮想NIC125をIPアドレスI3とI6とトンネル識別情報の組み合わせに対応づける。
ここで、VM142からVM123に宛てて送信される第2のL2フレームがカプセル化されて含まれている第2のL3パケットをNIC121が受信した場合、外側L3ヘッダには、送信先IPアドレスとしてIPアドレスI3が含まれる。また、外側L3ヘッダには、送信元IPアドレスとしてIPアドレスI6も含まれるし、トンネル識別情報も含まれる。
よって、物理サーバ120は、物理サーバ120内に2つ以上存在し得る仮想インタフェイスの中から、IPアドレスI3とI6とトンネル識別情報の組み合わせに対応づけられた仮想NIC125を選ぶことができる。その結果、物理サーバ120は、仮想NIC125を介して、内側L2フレームをVM123に出力することができる。以上のようにして、内側L2フレームがVM123に適切に到達することが可能となる。
同様に、IaaS管理サーバ180は、第2の物理マシンに対して、第2の仮想インタフェイスを、第2のアドレスと第1のアドレスとトンネル識別情報の組み合わせに対応づけるよう、命令してもよい。この命令により、IaaS管理サーバ180は、第1のL3パケットを第2の物理ネットワークインタフェイス装置が受信した場合に第2の物理マシンが第2の仮想インタフェイスを介して第1のL2フレームを第2のVMに出力するようにさせることができる。
ところで、トンネル接続命令は、どのQoSに対応するトンネルもまだ第1のVMと第2のVMの間に作成されていないときに、特定のQoSに対応するトンネルを新たに作成するための命令であってもよい。逆に、トンネル接続命令は、第1のVMと第2のVMの間に作成済みの、特定のQoSとは異なる別のQoSに対応する別のトンネルを、特定のQoSに対応するトンネルに置き換えるための命令であってもよい。詳しくは図11〜12とともに後述するように、後者の場合、IaaS管理サーバ180は、既存のトンネルを削除するための命令を第1と第2の物理マシンに明示的に与えてもよい。
例えば、第1のVMがVM122であり、第2のVMがVM162であり、図1に示すように、ベストエフォートIPルータ網170上に既存のトンネルが存在するものとする。この場合、既存のトンネルを新たなトンネルに置き換えるために、既存のトンネルの削除と新たなトンネルの作成が行われてもよい。
例えば、新たなトンネル用に指定される特定のQoSが、具体的には、MPLS網171によりサポートされるQoSであるものとする。ベストエフォートIPルータ網170上の既存のトンネルを介した通信のためのカプセル化では、IPアドレスI1とI7(つまりベストエフォートIPルータ網170に対応するアドレス)が使われる。しかし、MPLS網171上の新たなトンネルを介した通信のためのカプセル化では、IPアドレスI2とI8(つまりMPLS網171に対応するアドレス)が使われる。
よって、IaaS管理サーバ180は、既存のトンネルを削除するために、第1のVMをホストする第1の物理マシン(この例では物理サーバ120)に対して、カプセル化においてIPアドレスI1とI7を使用することをやめるように、命令してもよい。同様に、IaaS管理サーバ180は、第2のVMをホストする第2の物理マシン(この例では物理サーバ160)に対して、カプセル化においてIPアドレスI7とI1を使用することをやめるように、命令してもよい。
ところで、詳しくは図8〜10とともに後述するように、トンネル接続命令は、ある命令(以下、「ネットワーク設定命令」という)の一部としてIaaS管理サーバ180に与えられてもよい。
例えば、ユーザは、複数のVMが属する1つの仮想ネットワークを設計する場合がある。トンネル接続命令の対象である第1と第2のVMは、これら複数のVMの中の2つであってもよい。
仮想ネットワークは、複数のVMのうちの任意の2つのVMの各ペアについて、当該2つのVM間のリンクを実現するトンネルを作成することにより、実現される。ネットワーク設定命令は、具体的には、仮想ネットワークに属する2つのVMの各ペアについて、当該2つのVM間を接続するためのトンネルのQoSを指定するための命令である。IaaS管理サーバ180は、このようなネットワーク設定命令を受け付けてもよい。
例えば、4つのVMが属する仮想ネットワークは、6(=4×3/2)本のトンネルにより実現される。よって、4つのVMが属する仮想ネットワークに関するネットワーク設定命令は、6つのトンネル接続命令を含んでいてよい。このように、トンネル接続命令は、ネットワーク設定命令の一部であってもよい。IaaS管理サーバ180は、入力装置または通信装置を介してネットワーク設定命令を受け付けることができる。
以上、IaaS管理サーバ180の動作の観点から本実施形態について説明した。次に、VMをホストする物理マシンの観点からの説明を補足する。
物理マシン(例えば物理サーバ120)は、上記のように、N個のアドレスが割り当てられた物理ネットワークインタフェイス装置(例えばNIC121)を有する。
物理マシンはさらにプロセッサを有する。プロセッサは、VMを実行し、VMが他のVMへ送信しようとするL2フレームをL3パケットの中にカプセル化し、L3パケットを物理ネットワークインタフェイス装置に送信させる。後述の図3のCPU(Central Processing Unit)221はプロセッサの例である。
また、物理マシンは、L2フレームのカプセルにおいて用いられる送信元アドレスと送信先アドレスを記憶する記憶装置を有する。記憶装置の例として、後述の図3には、RAM(Random Access Memory)222と不揮発性の記憶装置223が例示されている。
例えば、第1の物理マシンは、上記のようなIaaS管理サーバ180からの命令に応じて、記憶装置に送信元アドレスとして第1のアドレスを記憶し、送信先アドレスとして第2のアドレスを記憶する。IaaS管理サーバ180がトンネル識別情報も第1の物理マシンに通知する場合は、第1の物理マシンは、トンネル識別情報も記憶装置に記憶する。
同様に、第2の物理マシンも、IaaS管理サーバ180からの命令に応じて、記憶装置に送信元アドレスとして第2のアドレスを記憶し、送信先アドレスとして第1のアドレスを記憶する。IaaS管理サーバ180がトンネル識別情報も第2の物理マシンに通知する場合は、第2の物理マシンは、トンネル識別情報も記憶装置に記憶する。
つまり、IaaS管理サーバ180からの命令は、換言すれば、送信元アドレスと送信先アドレスを指定する設定情報である。上記の説明から明らかなように、設定情報がトンネル識別情報を含んでいてもよい。
ところで、図1に関して「第2の方法」として説明したように、物理マシンと、物理ネットワークのエッジルータ(またはエッジスイッチ)との間の区間では、CoS制御が行われてもよい。
上記のとおり、第1の物理マシン(例えば物理サーバ120)は、カプセル化された第1のL2フレームを含む第1のL3パケットを、第1の物理ネットワークインタフェイス装置(例えばNIC121)から第1の通信装置(例えばToR111)に送信する。この送信の際に、第1の物理マシンの第1のプロセッサは、第1のL2ヘッダ(つまり外側L2ヘッダ)を第1のL3パケットの前に付加(prepend)する。
第2の方法が採用される場合、具体的には、第1のL2ヘッダに、優先度に関する情報が含められる。つまり、第1のプロセッサは、トンネルに対して指定されている上記特定のQoSに対応する特定の優先度を示す特定の値を、第1のL2ヘッダ内に指定する。同様に、第2の物理マシンが第2のL3パケットを第2の物理ネットワークインタフェイス装置から第2の通信装置に送信する際に、第2のプロセッサは、上記特定の値を指定した第2のL2ヘッダを、第2のL3パケットの前に付加する。
より具体的には、第1のL2ヘッダは、上記特定の値の指定された第1のVLANタグを含み、第2のL2ヘッダは、上記特定の値の指定された第2のVLANタグを含む。また、第1のVLANタグは、上記特定のQoSまたは上記特定の物理ネットワークに対応する特定のVLAN−IDをさらに含んでいてもよく、第2のVLANタグも、当該特定のVLAN−IDをさらに含んでいてもよい。なお、上記特定の物理ネットワークが2つ以上のQoSをサポートする場合、VLAN−IDは、特定の物理ネットワークに固有の値であってもよいし、QoSごとに異なる値であってもよい。
ところで、上記のようにトンネルは、トンネル接続命令に応じて特定の物理ネットワーク上に作成される。特定の物理ネットワークは、1つのQoSのみをサポートする場合もあり得るし、2つ以上のQoSをサポートする場合もあり得る。
特定の物理ネットワークが、特定のQoSを含む2つ以上のQoSをサポートしている場合、第1のL3パケットに含まれる、QoSに関わる第1のフィールドが、第1のL3パケットの送信中に参照されてもよい。同様に、第2のL3パケットに含まれる、QoSに関わる第2のフィールドが、第2のL3パケットの送信中に参照されてもよい。
具体的には、第1と第2のL3パケットは、いずれも、本実施形態ではIPv6パケットである。IPv6パケットのヘッダ中の「トラフィッククラス」フィールドや「フローラベル」フィールドには、QoSに関わる情報が設定されていてもよい。そして、トラフィッククラスやフローラベルの値が、IPv6パケットの送信中に参照されてもよい。つまり、トラフィッククラスやフローラベルの値に応じたQoS制御が、特定の物理ネットワーク内で行われてもよい。
また、特定の物理ネットワークが、上記のように特定のQoSを含む2つ以上のQoSをサポートしている場合、実際のパケットの送信に先立って、特定の物理ネットワーク上でシグナリング情報が送信されてもよい。
具体的には、第1のL3パケットの送信の前に、第1の物理マシンから第2の物理マシンへ、特定の物理ネットワークを介して、特定のQoSを指定する第1のシグナリング情報が送信されてもよい。同様に、第2のL3パケットの送信の前に、第2の物理マシンから第1の物理マシンへ、特定の物理ネットワークを介して、特定のQoSを指定する第2のシグナリング情報が送信されてもよい。例えば、RSVP−TEにしたがって、MPLS網171を介してシグナリング情報が送信されてもよい。
あるいは、第1と第2の物理マシンの代わりに、IaaS管理サーバ180が、第1のシグナリング情報と第2のシグナリング情報を、特定の物理ネットワークに送信してもよい。この場合、第1のシグナリング情報は、上記と同様に特定のQoSを指定するだけでなく、さらに、パスの両端点として第1と第2のIPアドレスも指定する情報である。また、この場合、第2のシグナリング情報は、上記と同様に特定のQoSを指定するだけでなく、さらに、パスの両端点として第2と第1のIPアドレスも指定する情報である。
さて、図2は、IaaS管理サーバ180のブロック構成図である。
図1に関して説明したように、IaaS管理サーバ180は、何らかのネットワークを介して各物理サーバと接続される。紙幅の都合上、図2には、図1中の物理サーバのうち、物理サーバ112と160のみが例示されている。
また、IaaS管理サーバ180は、各物理サーバと接続するための上記ネットワークを介して(または、さらに別の不図示のネットワークを介して)、ユーザ端末190とも接続される。ユーザ端末190は、ユーザ(つまりIaaS事業者にとっての顧客)が使う端末である。
IaaS管理サーバ180は、UI(User Interface)処理部181とVM管理部182と定義記憶部183とVNET管理部184を有する。なお、「VNET」は「仮想ネットワーク」の略である。
UI処理部181は、ユーザ端末190に対して、ユーザシステムを定義するためのUIを提供する。また、UI処理部181は、ユーザ端末190からの入力(つまりユーザシステムを定義する定義情報)を受け付ける。
なお、ここで「ユーザシステム」とは、ユーザにより設計されるシステムである。ユーザシステムは、ユーザがIaaS事業者から借りる1つ以上のVM(つまりIaaS事業者によりユーザに対してサービスとして提供される1つ以上のVM)を含む。ユーザシステムを定義する定義情報の具体例については、後述する。
UI処理部181は、ユーザ端末190から受信した定義情報を定義記憶部183に記憶する。なお、図2には1台のユーザ端末190のみが図示されているが、UI処理部181は、複数のユーザに対応する複数のユーザ端末190のそれぞれから定義情報を受信し、各定義情報を定義記憶部183に記憶する。
VM管理部182は、VMに関する様々な管理を行う。例えば、UI処理部181が定義情報を受信すると、VM管理部182は、ユーザシステムに含まれる各VMをどの物理サーバに配置する(deploy)かを決定する。また、VM管理部182は、決定に基づいて、適宜の物理サーバに対して、新たなVMを起動するよう命令する。
VNET管理部184は、1つのユーザシステム内に含まれる1つまたは複数の仮想ネットワークを管理する。具体的には、VNET管理部184が管理する各仮想ネットワークは、1つ以上のL3物理ネットワーク上の1本以上のL2トンネルを用いて実現される、仮想的なL2ネットワークである。つまり、この仮想的なL2ネットワークは、1種のオーバレイ・ネットワークである。
より詳しくは、1つの仮想ネットワークにV個の仮想ネットワークインタフェイスが接続されている場合、1つの仮想ネットワークは、(V×(V−1)/2)本のL2トンネルを用いて実現される。そして、(V×(V−1)/2)本のL2トンネルは、1つの物理ネットワーク上に作成されてもよいし、2つ以上の異なる物理ネットワーク上に作成されてもよい。トンネルごとに、「どの物理ネットワーク上にトンネルを作成するのか」ということが定義情報により指定される。VNET管理部184は、定義情報に基づいて、トンネルの作成のための適宜の命令を適宜の物理サーバに与える。
例えば、図1のVM122とVM162を含むユーザシステムを定義する定義情報がユーザ端末190から入力されたとする。この場合、VM管理部182は、物理サーバ120に対してVM122の作成と起動を命令し、物理サーバ160に対してVM162の作成と起動を命令する。また、この場合、VNET管理部184は、VM122とVM162の間のトンネルの設定のための情報を物理サーバ120と160に送信する。
すると、物理サーバ120は、VM管理部182からの命令に基づいてVM122を作成し、VNET管理部184から与えられる情報に基づいてホストOS内に仮想NIC124を作成し、VM122を仮想NIC124に関連づけ、VM122を起動する。同様に、物理サーバ160は、VM管理部182からの命令に基づいてVM162を作成し、VNET管理部184から与えられる情報に基づいてホストOS内に仮想NIC163を作成し、VM162を仮想NIC163に関連づけ、VM162を起動する。その結果、VM122とVM162の間では、トンネルを介した通信が可能となる。
続いて、図3のハードウェア構成図を参照して、図1のネットワークシステム100を実現するためのハードウェアの例を説明する。なお、紙幅の都合上、図3では、図1のラック150とラック150内の装置が省略されている。
また、図3では簡単のため、ベストエフォートIPルータ網170、MPLS網171、専用回線網172がそれぞれ単に「ネットワーク170」、「ネットワーク171」、および「ネットワーク172」と表記されている。図3には、例として、ベストエフォートIPルータ網170にIaaS管理サーバ180とユーザ端末190がともに接続される場合が示されている。
図3には、ベストエフォートIPルータ網170内のエッジルータ201と202、MPLS網171内のLER(Label Edge Router)203と204、専用回線網172内のエッジスイッチ205と206も図示されている。エッジルータ201とLER203とエッジスイッチ205は、ToR111と接続される。エッジルータ202とLER204とエッジスイッチ206は、ToR131と接続される。
ラック110内のToR111は、少なくとも6つの物理的なポート211〜216を有する。ポート211はケーブルを介してエッジルータ201と接続され、ポート212はケーブルを介してLER203と接続され、ポート213はケーブルを介してエッジスイッチ205と接続される。ポート214はケーブルを介して物理サーバ112と接続され、ポート215はケーブルを介して物理サーバ113と接続され、ポート216はケーブルを介して物理サーバ120(より具体的にはNIC121)と接続される。
物理サーバ120はコンピュータである。物理サーバ120は、図1に示したようにNIC121を有する。さらに、物理サーバ120は、1台以上のCPU221と、RAM222を有する。図1のVM122、VM123、仮想NIC124、および仮想NIC125は、CPU221がプログラムを実行することにより、実現される。CPU221はプロセッサの一例である。
また、物理サーバ120は、不揮発性の記憶装置223も有する。記憶装置223は、HDD(Hard Disk Drive)、SSD(Solid-State Drive)、またはその組み合わせである。記憶装置223としてさらにROM(Read-Only Memory)が使われてもよい。記憶装置223には、CPU221が実行するプログラムが予め記憶されている。NIC121、CPU221、RAM222、および記憶装置223は、互いにバス224で接続される。
また、ラック130内のToR131も、少なくとも6つの物理的なポート231〜236を有する。ポート231はケーブルを介してエッジルータ202と接続され、ポート232はケーブルを介してLER204と接続され、ポート233はケーブルを介してエッジスイッチ206と接続される。ポート234はケーブルを介して物理サーバ132と接続され、ポート235はケーブルを介して物理サーバ133と接続され、ポート236はケーブルを介して物理サーバ140(より具体的にはNIC141)と接続される。
物理サーバ140もコンピュータである。物理サーバ140は、図1に示したようにNIC141を有する。さらに、物理サーバ140は、1台以上のCPU241と、RAM242を有する。図1のVM142と仮想NIC143は、CPU241がプログラムを実行することにより、実現される。CPU241もプロセッサの一例である。
また、物理サーバ140は、不揮発性の記憶装置243も有する。記憶装置243は、HDD、SSD、またはその組み合わせである。記憶装置243としてさらにROMが使われてもよい。記憶装置243には、CPU241が実行するプログラムが予め記憶されている。NIC141、CPU241、RAM242、および記憶装置243は、互いにバス244で接続される。
IaaS管理サーバ180もコンピュータである。具体的には、IaaS管理サーバ180は、1台以上のCPU251と、RAM252を有する。CPU251はプロセッサの一例である。CPU251は、プログラムをRAM252にロードし、RAM252をワーキングエリアとしても利用しながら、プログラムを実行する。
IaaS管理サーバ180はさらにNIC253を有する。NIC253は通信装置の例である。NIC253は、トンネル接続命令を受け付けるための受信装置でもあり、物理サーバに命令を送信するための送信装置でもある。NIC253は、拡張カード型のNICでもよいし、オンボード型のNICでもよい。IaaS管理サーバ180は、NIC253を介してネットワーク(例えば、図3ではベストエフォートIPルータ網170)に接続される。
IaaS管理サーバ180は、さらに入力装置254と出力装置255を有していてもよい。入力装置254は、例えば、キーボード、マウスなどのポインティングデバイス、またはその組み合わせである。ポインティングデバイスとしてタッチスクリーンが使われてもよい。出力装置255は、例えば、ディスプレイ、スピーカ、またはその組み合わせである。ディスプレイがタッチスクリーンであってもよい。
また、IaaS管理サーバ180は不揮発性の記憶装置256を有する。記憶装置256は、HDD、SSD、またはその組み合わせである。記憶装置256としてさらにROMが使われてもよい。
IaaS管理サーバ180は、さらに、記憶媒体260の駆動装置257を有していてもよい。記憶媒体260は、CD(Compact Disc)やDVD(Digital Versatile Disk)などの光ディスク、光磁気ディスク、磁気ディスクのいずれであってもよい。または、記憶媒体260が半導体メモリカードであってもよく、駆動装置257の代わりにメモリカード用のリーダ/ライタが使われてもよい(なお「リーダ/ライタ」は、リーダとライタを兼ねる装置の意味である)。
以上説明したIaaS管理サーバ180内の各コンポーネントは、バス258を介して互いに接続される。
CPU251が実行するプログラムは、予め記憶装置256にインストールされていてもよい。プログラムは、記憶媒体260に格納されて提供され、駆動装置257により読み取られ、記憶装置256にインストールされてもよい。プログラムは、ベストエフォートIPルータ網170などのネットワークとNIC253とを介してダウンロードされ、記憶装置256にインストールされてもよい。
RAM252、記憶装置256、および記憶媒体260は、いずれも、コンピュータ読み取り可能な記憶媒体の例である。これらの記憶媒体は、有形の(tangible)媒体であり、信号搬送波のような一時的な(transitory)媒体ではない。
なお、図2のUI処理部181は、ユーザ端末190との間の通信を行うNIC253と、プログラムを実行するCPU251により実現される。または、図3のようにIaaS管理サーバ180が入力装置254と出力装置255を有する場合は、UI処理部181は、入力装置254と出力装置255とCPU251により実現されてもよい。
例えば、入力画面を表示するための命令を、CPU251が出力装置255に与えてもよい。出力装置255に表示された入力画面を見ながら、ユーザは、入力装置254を介して定義情報などの情報を入力してもよい。CPU251は、入力装置254を介して入力された情報を適宜記憶装置256に記憶したり処理したりしてもよい。
もちろん、CPU251は、入力画面をユーザ端末190のディスプレイに表示させるための情報を生成してもよく、NIC253がその情報をユーザ端末190に送信してもよい。また、NIC253は、ユーザがユーザ端末190を介して入力した定義情報などの情報を受信してもよく、CPU251は、受信された情報を適宜記憶装置256に記憶したり処理したりしてもよい。
VM管理部182は、各物理サーバとの間の通信を行うNIC253と、プログラムを実行するCPU251により実現される。同様に、VNET管理部184も、各物理サーバとの間の通信を行うNIC253と、プログラムを実行するCPU251により実現される。定義記憶部183は、記憶装置256により実現される。
続いて、図1〜3に示した実施形態の利点の理解を助けるために、サービスレベルとQoSについて説明し、また、図4〜7を参照して2つの比較例について説明する。図1〜3の実施形態と、図4の第1比較例と、図5〜7の第2比較例は、いずれも、2つのVM間の仮想リンクのサービスレベルをユーザが複数の選択肢の中から選べるようにすることを1つの目的とする。しかし、以下の説明から分かるように、図1〜3および後述の図8〜12に示す実施形態(ならびに、後述するその他の実施形態)は、第1比較例よりも優れており、かつ、第2比較例よりも優れている。
図2に関して説明したように、ユーザは1つ以上のVMをIaaS事業者から借り、借りたVMを使ったユーザシステムを管理する。また、1つのユーザシステムは、1つのVMを使ったスタンドアロン・システムでない限り、1つまたは複数の仮想ネットワークを含む。
ところで、ユーザがIaaS事業者から1つ以上のVMを借りる目的は様々である。DB(database)サーバとして利用するためにVMを借りるユーザもいるし、ストレージサーバあるいはファイルサーバとして利用するためにVMを借りるユーザもいる。また、Webサーバとして利用するためにVMを借りるユーザもいるし、アプリケーションサーバとして利用するためにVMを借りるユーザもいる。
よって、ユーザの目的に応じて、VM間の仮想ネットワークに対してユーザが望む通信性能(換言すればQoS)は異なり得る。通信性能は、例えば、帯域幅(換言すればビットレート)により表されることもあるし、遅延時間により表されることもあるし、両者の組み合わせにより表されることもある。
例えば、ユーザシステムが、複数のDBサーバを含むように冗長に構成されたDBシステムである場合、ユーザシステムには、各々がDBサーバとして使われる複数のVMを接続する仮想ネットワークが含まれる。DBサーバ間の素早いデータ同期を可能とするために、ユーザは、仮想ネットワークが広帯域であることを望む場合がある。同様に、冗長に構成されたストレージシステム内の複数のストレージサーバ間の素早いデータ同期のために、ユーザは、仮想ネットワークが広帯域であることを望む場合がある。他方、Webサーバとして使われるVMや、アプリケーションサーバとして使われるVMが接続される仮想ネットワークに関しては、ユーザは、それほど広帯域でなくても構わない、と考える可能性もある。
以上のように、ユーザの目的に応じて、VM間の仮想ネットワークに対してユーザが望むQoSは異なり得る。しかし、複数の選択肢の中からユーザが所望のQoSを選べるようにすることには困難がともなう。そのため、従来の多くのIaaS事業者は、QoSを保証しないで、単にベストエフォート型の仮想ネットワークをユーザに提供してきた。
例えば、IaaS事業者は、複数の物理サーバを接続する物理ネットワークを設計し、構築する。しかし、物理ネットワークの適切な容量を予測することは大変難しい。
なぜなら、IaaS事業者にとっては、「どのようなユーザが将来VMを利用する可能性があるのか」・「どのようなユーザシステムのためにユーザがVMを利用する可能性があるのか」といったことは、事前には分からないことが多いからである。また、仮にユーザシステムの構成が事前に判明しているとしても、「ユーザシステム上でどの程度多くのトラフィックが発生するのか」ということを予測することは、ユーザにとってもIaaS事業者にとっても、非常に難しい。
よって、「トラフィック予測に基づいて、予測されたトラフィックが滞りなく流れるような十分な容量を持った物理ネットワークを設計する」ということは、IaaS事業者にとってほとんど非現実的である。そのため、従来の多くのIaaS事業者は、ベストエフォート型の仮想ネットワークをユーザに提供してきた。つまり、従来は、SLA(Service Level Agreement)が設けられないことが多かった。
IaaS事業者から提供される仮想ネットワークがベストエフォート型である場合、当然、ユーザが望む通信性能が仮想ネットワーク上で得られる保証もない。したがって、ユーザシステム全体としても、ユーザが望む性能が得られる保証はない。例えば、物理サーバを用いて構築されたユーザシステムを現在運用しているユーザは、ユーザシステムの仮想化を検討するかもしれないが、性能保証がないことを理由に、仮想化を諦めるかもしれない。
一方、大まかな傾向としては、個々のユーザがそれぞれ独立に物理サーバを使うよりも、IaaS事業者がユーザにVMを貸し出す方が、コンピュータ資源が効率よく利用され、無駄も少なく、省エネルギーである。よって、資源の有効活用や省エネルギー化のためには、上記のような性能保証の欠如を克服し、ユーザが仮想化を受け入れやすいようにすることが有益である。また、もちろん、ユーザにとっても、仮想ネットワークの通信性能が保証されることは、喜ばしいことである。
そこで、発明者は、「IaaS事業者が、複数のサービスレベルをメニューとしてユーザに対して提示することができるようにする」ということを目的にして、鋭意研究した。研究の結果として発明者が得た知見によれば、第1比較例、第2比較例、図1〜3および後述の図8〜12に示す実施形態、ならびにその他の実施形態のいずれによっても、複数のサービスレベルの提示は可能である。しかし、図1〜3および後述の図8〜12に示す実施形態、ならびにその他の実施形態は、第1比較例や第2比較例と比べて優れている。以下では、図4を参照して第1比較例について説明し、図5〜7を参照して第2比較例について説明する。
さて、図4は、第1比較例のネットワークシステム300のシステム構成図である。以下の説明から分かるように、ネットワークシステム300を運用するIaaS事業者は、ユーザに対して少なくとも3つのサービスレベルを提示することが可能である。
第1比較例では、DC内にラック310が設置され、ラック310内には3台のToR311〜313が設置される。ラック310内には、さらに、物理サーバ314、315、および320も設置される。図4では紙幅の都合上、物理サーバ320のみ、その詳細が示されている。
物理サーバ320は、3枚のNIC321〜323を有する。NIC321はToR311に接続され、NIC322はToR312に接続され、NIC323はToR313に接続される。図4では紙幅の都合上省略されているが、物理サーバ314も同様に、3台のToR311〜313すべてに接続され、物理サーバ315も同様に3台のToR311〜313すべてに接続される。
また、物理サーバ320上では、例えばVM324と325が稼働する。物理サーバ上で稼働するVMは、ホストOS内の仮想NICを介して通信を行う。しかし、図3では、図示の簡略化のため、各物理サーバのホストOS内の仮想NICは省略されている。
例えば、VM324内の不図示の仮想NICと、物理的なNIC323との間のインタフェイスは、ホストOS内の不図示の仮想NICにより提供されるが、図3では、VM324とNIC323が直接的に線で結ばれている。同様に、VM325内の不図示の仮想NICと、物理的なNIC321との間のインタフェイスは、ホストOS内の不図示の別の仮想NICにより提供されるが、図3では、VM325とNIC321が直接的に線で結ばれている。
また、DC内にはラック330も設置され、ラック310と同様にラック330内にも3台のToR331〜333が設置される。ラック330内には、さらに、物理サーバ334、335、および340も設置される。紙幅の都合上、図4では、物理サーバ334と335の詳細と、物理サーバ334とToR331〜333を接続するケーブルと、物理サーバ335とToR331〜333を接続するケーブルは、省略されている。
物理サーバ340も物理サーバ320と同様に、3枚のNIC341〜343を有する。NIC341はToR331に接続され、NIC342はToR332に接続され、NIC343はToR333に接続される。
また、物理サーバ340上では、例えばVM344が稼働する。VM344と物理的なNIC343との間のインタフェイスは、物理サーバ340のホストOS内の不図示の仮想NICにより提供される。
さらに、DC内にはラック350も設置され、ラック310と同様にラック350内にも3台のToR351〜353が設置される。ラック350内には、さらに、物理サーバ354、355、および360も設置される。紙幅の都合上、図4では、物理サーバ354と355の詳細と、物理サーバ354とToR351〜353を接続するケーブルと、物理サーバ355とToR351〜353を接続するケーブルは省略されている。
物理サーバ360も物理サーバ320と同様に、3枚のNIC361〜363を有する。NIC361はToR351に接続され、NIC362はToR352に接続され、NIC363はToR353に接続される。
また、物理サーバ360上では、例えばVM364が稼働する。VM364と物理的なNIC361との間のインタフェイスは、物理サーバ360のホストOS内の不図示の仮想NICにより提供される。
さて、第1比較例のネットワークシステム300も、複数の物理ネットワークを利用する。具体的には、図3には、ベストエフォートIPルータ網370と、MPLS網371と、専用回線網372が例示されている。これら3つの物理ネットワークは、図1の3つの物理ネットワークと同様である。
ただし、図1の実施形態では、1台のToRが3つの物理ネットワークすべてに接続されるのに対し、図3の第1比較例では、各ToRは、当該ToRに対応する1つの物理ネットワークにのみ接続される。具体的には、ToR311と331と351はベストエフォートIPルータ網370に接続され、ToR312と332と352はMPLS網371に接続され、ToR313と333と353は専用回線網372に接続される。
以上のような図3の第1比較例によれば、例えば、専用回線網372上のL2トンネルを介して、VM324と344が通信しあうことが可能である。また、図3の第1比較例によれば、例えば、ベストエフォートIPルータ網370上のL2トンネルを介して、VM325と364が通信しあうことも可能である。
そして、第1比較例によれば、異なる物理ネットワーク上の異なるトンネルを流れるトラフィック同士は、物理的な通信路を共有しない。よって、これらのトラフィック間での競合は生じない。そのため、「競合のせいで、トンネルの一部においてQoSが達成されない」という事態は回避される。つまり、第1比較例によっても、エンド・ツー・エンドのQoSが達成される。
例えば、仮に、VM324がVM344にデータを送ろうとするのとほぼ同時に、VM325がVM364にデータを送ろうとしたとする。このような場合でも、2つのトラフィックが競合することはない。なぜなら、前者のデータは、NIC323からToR313を介して専用回線網372へ送信され、後者のデータは、NIC321からToR311を介してベストエフォートIPルータ網370へ送信されるからである。
このように、第1比較例では、前者のデータが送信される物理的な通信路と、後者のデータが送信される物理的な通信路の間には、共通の部分がない。よって、前者のデータと後者のデータの間での競合も生じない。したがって、「物理サーバ320からの前者のデータの送信が、物理サーバ320からの後者のデータの送信のせいで遅延する」ということもない。
また、別の例として、仮に、次の2つの時点がほぼ同時であったとする。
・VM344からのVM324宛のデータを、ToR313が、専用回線網372のエッジルータから受信する時点。
・VM364からのVM325宛のデータを、ToR311が、ベストエフォートIPルータ網370のエッジルータから受信する時点。
このような場合でも、VM344からのVM324宛のデータと、VM364からのVM325宛のデータの間での競合は生じない。なぜなら、ToR313と物理サーバ320の間の物理的な通信路と、ToR311と物理サーバ320の間の物理的な通信路の間には共通な部分がないからである。よって、「物理サーバ320における前者のデータの受信が、物理サーバ320における後者のデータの受信のせいで遅延する」ということもない。
よって、第1比較例でもエンド・ツー・エンドのQoSが実現される。よって、第1比較例でも、IaaS事業者は以下の3つのサービスレベルをユーザに提示することができる。
・ベストエフォートIPルータ網370上のトンネルを介した通信のQoSに対応する第1のサービスレベル。
・MPLS網371上のトンネルを介した通信のQoSに対応する第2のサービスレベル。
・専用回線網372上のトンネルを介した通信のQoSに対応する第3のサービスレベル。
よって、第1比較例でも、ユーザは、トンネルごとにサービスレベルを選択することができる。つまり、ユーザは、トンネルごとに、そのトンネルに対して望むQoSに応じて、提示された3つのサービスレベルの中から1つを選択することができる。なお、QoSは連続値で表されてもよいし、離散値で表されてもよい。一方、サービスレベルは上記の例のごとく離散的であってよい。
さて、図1と図4を比較すると分かるように、第1比較例には以下のようないくつかの欠点がある。換言すれば、第1比較例よりも実施形態の方が優れている。
図1の実施形態では、物理ネットワークの数とは関係なく、各ラックには1台のToRがあれば十分である。しかし、図4の第1比較例では、1つの物理ネットワークごとに、各ラックに1台のToRが必要である。
また、図1の実施形態では、物理ネットワークの数とは関係なく、各物理サーバには1枚の物理NICがあれば十分である。しかし、図4の第1比較例では、1つの物理ネットワークごとに、各物理サーバに1枚の物理NICが必要である。
つまり、第1比較例よりも実施形態の方が、ToRやNICにかかる金銭的コストが安いし、ToRの管理(例えば初期設定など)にかかる手間も少ない。大規模DCでは、物理サーバの数も非常に多いので、ToRや物理NICの数の違いに起因する金銭的コストの違いも馬鹿にならない。
しかも、第1比較例よりも実施形態の方が、ネットワークシステム全体としての故障率も低くなると期待される。なぜなら、第1比較例よりも実施形態の方が、ネットワークシステム全体に含まれるコンポーネントの数(具体的にはToRの数と物理NICの数)が少ないからである。
また、図1の実施形態と図4の第1比較例では、新たな物理ネットワークを構築することで、ユーザに対してメニューとして提示可能なサービスレベルの数を増やすことも可能である。例えば、ある時点では、ベストエフォートIPルータ網170に対応する低いサービスレベルと、専用回線網172に対応する高いサービスレベルのみがメニューに用意されていてもよい。IaaS事業者は、これら2つのサービスレベルの間の中間的なサービスレベルを、新たなメニューとしてユーザに提示することを可能とするために、新たにMPLS網171を構築してもよい。
例えば以上のようにして、新たなサービスレベルを増やすために新たな物理ネットワークが構築される場合、図1の実施形態ではToRを増やす必要がないが、図4の第1比較例では、各ラックに1台ずつToRを増やす必要がある。同様に、新たな物理ネットワークが構築される場合、図1の実施形態ではNICを増やす必要がないが、図4の第1比較例では、各物理サーバに1枚ずつNICを増やす必要がある。
よって、図1の実施形態では、ネットワークシステム100の運用を止めなくても、新たなサービスレベルの追加が可能である。それに対して、図4の第1比較例では、新たなサービスレベルの追加のためには、ネットワークシステム300の運用を止める必要がある。
例えば、図1の実施形態において、上記のように新たに中間的なサービスレベルを追加するために、IaaS事業者がMPLS網171を敷設するものとする。MPLS網171には、いくつかのLER(例えば図3のLER203と204など)と、いくつかのLSR(Label Switch Router)と、これらのルータ同士を接続する複数のケーブルが含まれる。MPLS網171の敷設は、ネットワークシステム100の運用中に、どの物理サーバも停止させることなく、行うことが可能である。
MPLS網171の敷設が完了したら、IaaS事業者は、MPLS網171の各LERを、ケーブルを介して適宜のToRに接続する。例えば、IaaS事業者は、LER203をToR111に接続し、LER204をToR131に接続する。LERとToRをケーブルで接続する作業も、ネットワークシステム100を停止させることなく、行うことが可能である。
以上のように、図1の実施形態では、新たなサービスレベルの追加のために、物理サーバを停止する必要もないし、物理サーバを再起動する必要もない。なお、物理NICへの新たなIPアドレス(つまり、MPLS網171に対応するプレフィックスから始まるIPアドレス)の割り当ては、物理サーバの稼働中に実行することが可能である。例えば、物理サーバ120を停止させたり再起動させたりしなくても、IPアドレスI2を新たにNIC121に割り当てることが可能である。よって、図1の実施形態では、物理サーバ上で稼働しているVMを停止させる必要なしに、新たなサービスレベルの追加が可能である。
ところが、図4の第1比較例では、新たなサービスレベルの追加のためには物理サーバを停止させる必要がある。そのため、第1比較例では、物理サーバ上で稼働しているVMも停止させるか、あるいは、VMのマイグレーションを実行する必要がある。
例えば、図4の第1比較例において、上記のように新たに中間的なサービスレベルを追加するために、IaaS事業者がMPLS網371を敷設するものとする。
MPLS網371には、いくつかのLERおよびいくつかのLSRと、これらのルータ同士を接続する複数のケーブルが含まれる。MPLS網371自体の敷設は、ネットワークシステム300の運用中に、どの物理サーバも停止させることなく、行うことが可能である。
また、IaaS事業者は、MPLS網371に対応する新たなToR(例えばToR312、332、352など)を設置する。そして、IaaS事業者は、MPLS網371の各LERを、ケーブルを介して、新たに設置した適宜のToRに接続する。以上のような新たなToRの設置と、LERと新たなToRとの接続も、ネットワークシステム300の運用中に行うことが可能である。
しかし、第1比較例では、各物理サーバの停止が必要である。例えば、IaaS事業者は、物理サーバ320を停止させ、物理サーバ320に新たなNIC322を追加し、NIC322の物理ポートとToR312とをケーブルで接続し、その後、物理サーバ320を起動する。他の物理サーバについても同様である。物理サーバの台数が多ければ、以上のような物理サーバの停止や物理NICの追加などの作業の手間は、大変大きい。
なお、第1比較例では、MPLS網371内のルータがどれも中継用のLSRであってもよい。この場合、MPLS網371に接続されるToR312、332、352の各々は、具体的には、単なるL2スイッチではなく、LERである。しかし、たとえそうだとしても、第1比較例では、MPLS網371により提供される新たなサービスレベルの追加のために、各物理サーバの停止が必要なことに変わりはない。
しかも、物理サーバが停止している間はVMも停止させるか、または、物理サーバの停止に先立ってVMのマイグレーションを実行する必要がある。VMの停止は、VMを使ってユーザが運用しているユーザシステムの可用性を損なう。また、VMのマイグレーションは、どの物理サーバをどういうタイミングで停止させるかに応じて行う必要がある。さらに、マイグレーションにともなって、既存のトンネルの削除と新たなトンネルの作成も必要である。第1比較例では、新たな物理ネットワークの追加にともなって、どの物理サーバも1回は停止されるので、どのVMも、停止またはマイグレーションが必要である。
以上のとおりなので、第1比較例と比べると、図1などに示す実施形態には、以下のように様々な利点がある。
・ToRやNICが少ない。よって、ToRやNICにかかる金銭的コストが低いし、ToRの管理の手間も少ない。また、ネットワークシステム100全体としての故障率も低いと期待される。
・新たなサービスレベルの追加にともなう手作業も少ない。
・VMの可用性を損なわずに(しかも、VMのマイグレーションなどの余計な処理負荷をネットワークシステム100に生じさせることもなく)、新たな物理ネットワークを利用する新たなサービスレベルを追加することが可能である。よって、既存の多数のVMに与える影響を考慮する必要なしに、任意のスケジュールで、新たなサービスレベルの追加を行うことが可能である。
続いて、図5〜7を参照して第2比較例について説明する。図5は、第2比較例のネットワークシステム400のシステム構成図である。
第2比較例では、DC内にラック410が設置され、ラック410内にはLER411(つまりMPLSをサポートするエッジルータ)が設置される。ラック410内には、さらに、物理サーバ412、413、および420も設置される。
物理サーバ420はNIC421を有し、NIC421はLER411に接続される。図5では紙幅の都合上省略されているが、同様に、物理サーバ412もLER411に接続され、物理サーバ413もLER411に接続される。
また、物理サーバ420上では、例えばVM422と423が稼働する。物理サーバ上で稼働するVMは、ホストOS内の仮想NICを介して通信を行う。しかし、図5では、図示の簡略化のため、各物理サーバのホストOS内の仮想NICは省略されている。
例えば、VM422内の不図示の仮想NICと、物理的なNIC421との間のインタフェイスは、ホストOS内の不図示の仮想NICにより提供されるが、図5ではVM422とNIC421が直接的に線で結ばれている。同様に、VM423とNIC421も、図示の簡略化のために直接的に線で結ばれている。
また、DC内にはラック430も設置され、ラック430内にはLER431が設置される。ラック430内にはさらに、物理サーバ432、433、および440も設置される。
物理サーバ440はNIC441を有し、NIC441はLER431に接続される。また、物理サーバ440上では、例えばVM442が稼働する。VM442と物理的なNIC441との間のインタフェイスは、物理サーバ440のホストOS内の不図示のNICにより提供される。
なお、図5では、物理サーバ432と433の詳細と、物理サーバ432とLER431を接続するケーブルと、物理サーバ433とLER431を接続するケーブルは省略されている。
さらに、DC内にはラック450も設置され、ラック450内にはLER451が設置される。ラック450内にはさらに、物理サーバ452、453、および460も設置される。
物理サーバ460はNIC461を有し、NIC461はLER451に接続される。また、物理サーバ460上では、例えばVM462が稼働する。VM462と物理的なNIC461との間のインタフェイスは、物理サーバ460のホストOS内の不図示のNICにより提供される。
なお、図5では、物理サーバ452と453の詳細と、物理サーバ452とLER451を接続するケーブルと、物理サーバ453とLER451を接続するケーブルは省略されている。
さて、第2比較例で使われる物理ネットワークは1つだけである。具体的には、第2比較例では、MPLS・RSVP−TE網470が使われる。MPLS・RSVP−TE網470では、シグナリング・プロトコルとしてRSVP−TEが使われる。より具体的には、ラベルの配布(label distribution)にRSVP−TEが使われる。そして、RSVP−TEにしたがって確立され、かつ、帯域幅が確保(reserve)されたLSP(Label Switched Path)に沿って、データが送信される。MPLS・RSVP−TE網470は、異なる複数のQoSを提供することができる。
以上のような図5の第2比較例によれば、例えば、MPLS・RSVP−TE網470上で広い帯域幅が確保された第1のLSP(すなわち、高いQoSのLSP)上のL2トンネルを介して、VM422と462が通信しあうことが可能である。また、第2比較例によれば、第1のLSPよりも狭い帯域幅が確保された第2のLSP上のL2トンネルを介して、VM423とVM442が通信しあうことも可能である。
このように、第2比較例によれば、MPLSとRSVP−TEの機能を使うことにより、単一の物理ネットワーク(つまりMPLS・RSVP−TE網470)上で複数のQoSを提供することができる。換言すれば、第2比較例によれば、MPLSとRSVP−TEの機能を使うことにより、IaaS事業者は、複数のQoSに対応する複数のサービスレベルを、ユーザに対してメニューとして提示することができる。
なお、MPLS・RSVP−TE網470は、フローごとに異なるQoSを設定することの可能なネットワークの一例である。MPLSとRSVP−TEの代わりに他のプロトコルが使われてもよい。例えば、ATM(Asynchronous Transfer Mode)網やフレームリレー網がMPLS・RSVP−TE網470の代わりに使われてもよい。
図6は、第2比較例の管理画面と定義情報の例を示す図である。図5では省略されているが、第2比較例でも、ある種のIaaS管理サーバとユーザ端末が使われる。IaaS管理サーバは、MPLS・RSVP−TE網470または他のネットワークを介して各物理サーバと接続される。ユーザ端末は、MPLS・RSVP−TE網470または他のネットワークを介してIaaS管理サーバと接続される。
図6には、ユーザ端末のディスプレイに表示される管理画面500が例示されている。ユーザ端末がネットワークを介してIaaS管理サーバにアクセスすると、IaaS管理サーバは、管理画面500を表示するための情報をユーザ端末に与える。ユーザ端末は、与えられた情報に基づいてディスプレイ上に管理画面500を表示する。管理画面500は、ユーザシステム510を定義するためのGUI(Graphical User Interface)の例である。ユーザは、キーボードやポインティングデバイスなどの入力装置を用いて、ユーザシステム510の定義を編集することができる。
図6のユーザシステム510は、2つの仮想ネットワークと6つのVMを含む。
具体的には、ユーザシステム510は、ネットワーク511と512を含む。ネットワーク511は、MPLS・RSVP−TE網470上の複数のL2トンネルにより実現される仮想ネットワークである。ネットワーク512も、MPLS・RSVP−TE網470上の複数のL2トンネルにより実現される仮想ネットワークである。
具体的には、ネットワーク511には、GW(gateway)513、第1Webサーバ514、第2Webサーバ515、およびFW(firewall)516が接続される。GW513、第1Webサーバ514、第2Webサーバ515、およびFW516は、いずれも、VMである。
また、FW516はネットワーク512にも接続される。よって、管理画面500には、ネットワーク511にFW516を接続するための第1NIC517と、ネットワーク512にFW516を接続するための第2NIC518も示されている。第1NIC517は、より具体的には、VMであるFW516を実行する物理サーバのホストOS内の仮想NICである。同様に、第2NIC518は、FW516を実行する物理サーバのホストOS内の別の仮想NICである。
しかし、管理画面500を見ながらユーザシステム510を設計するユーザは、第1NIC517と第2NIC518がどのように実装されるかを知る必要はない。ユーザは、単に、FW516とネットワーク511のインタフェイスとして第1NIC517を管理画面500上で定義し、FW516とネットワーク512のインタフェイスとして第2NIC518を管理画面500上で定義する。
さて、ネットワーク512には、FW516に加えて、第1DBサーバ519と第2DBサーバ520も接続される。第1DBサーバ519と第2DBサーバ520の各々も、VMである。
なお、図6では、図の簡略化のため、GW513用の仮想NIC(つまり、VMであるGW513を実行する物理サーバのホストOS内の仮想NIC)は省略されている。同様に、図6では、第1Webサーバ514と第2Webサーバ515と第1DBサーバ519と第2DBサーバ520用の仮想NICも省略されている。図6で省略されているこれらの仮想NICは、図7に仮想NIC521〜525として示されている。
ユーザシステム510は、不図示の外部ネットワーク(例えばインターネット)を介してクライアントから要求を受け付け、クライアントに応答を返すシステムである。GW513は上記外部ネットワークとユーザシステム510の境界にある。GW513はロードバランサを兼ねていてもよい。
クライアントからの要求は、GW513によって第1Webサーバ514または第2Webサーバ515に転送(forward)される。第1Webサーバ514と第2Webサーバ515の各々は、要求を受け取ると、要求に応じた適宜の処理を行い、応答を返す。応答は、GW513と上記の外部ネットワークを介してクライアントに送信される。
また、第1Webサーバ514と第2Webサーバ515の各々が行う処理は、DBアクセスをともなう処理であってもよい。ユーザシステム510で使われるDBは冗長化されており、具体的には、第1DBサーバ519に保持されるDBの複製が、第2DBサーバ520に保持される。FW516は、第1DBサーバ519と第2DBサーバ520を保護するために、ネットワーク511と512の境界に設けられる。
ユーザは、管理画面500のようなGUIを介して、以上説明したようなネットワーク構成を有するユーザシステム510を定義することができる。そして、ユーザシステム510を定義する定義情報は、ユーザ端末によって編集され、IaaS管理サーバに送信される。IaaS管理サーバは、ユーザ端末から定義情報を受信し、定義情報を格納する。
図6には、IaaS管理サーバに格納される定義情報も例示されている。具体的には、ユーザシステム510に対応する定義情報530が、テーブル形式で図6に示されている。定義情報530は以下の2つのフィールドを含む。
・仮想システムであるユーザシステム510の名前が「VSYS−001」であることを示す「VSYS名」フィールド。
・ユーザシステム510に含まれる仮想ネットワークを定義する「VNET」フィールド。
図6に示すように、定義情報530の「VNET」フィールドには、以下のことが記録される。
・ユーザシステム510は、第1VNET(すなわちネットワーク511)と第2VNET(すなわちネットワーク512)を含む。
・第1VNETには、GW513と、第1Webサーバ514と、第2Webサーバ515と、FW516の第1NIC517が接続される。
・第2VNETには、FW516の第2NIC518と、第1DBサーバ519と、第2DBサーバ520が接続される。
さて、第2比較例のIaaS管理サーバは、定義情報530に基づいて以下のような処理を行う。以下のような処理の結果として、第2比較例では、例えば図7に示すように9本のトンネルが作成される。
・ユーザシステム510内の6つのVMを適宜の物理サーバに配置する処理。
・ネットワーク511を実現するための複数のトンネルを作成するための命令を、ネットワーク511に属するVMが配置された物理サーバのそれぞれに対して与える処理。
・ネットワーク512を実現するための複数のトンネルを作成するための命令を、ネットワーク512に属するVMが配置された物理サーバのそれぞれに対して与える処理。
図7の例では、GW513が物理サーバ541上に配置され、第1Webサーバ514と第1DBサーバ519が物理サーバ542上に配置される。また、第2Webサーバ515と第2DBサーバ520が物理サーバ543上に配置され、FW516が物理サーバ544上に配置される。
なお、物理サーバ541〜544の各々は、図5のネットワークシステム400に含まれる複数の物理サーバのうちのいずれかである。また、図5には紙幅の都合上、3台のラックに搭載された9台の物理サーバのみが描かれているが、もちろん、ネットワークシステム400は、4台以上のラックに搭載された10台以上の物理サーバを含んでいてよい。
ところで、図6の第1NIC517と第2NIC518は、上記のとおり、FW516に対応してホストOS内に作成される仮想NICである。よって、図7では、第1NIC517と第2NIC518のいずれも、「仮想NIC」と表記されている。
同様に、物理サーバ541のホストOS内には、GW513に対応して仮想NIC521が作成される。また、物理サーバ542のホストOS内には、第1Webサーバ514に対応して仮想NIC522が作成され、第1DBサーバ519に対応して仮想NIC523が作成される。そして、物理サーバ543のホストOS内には、第2Webサーバ515に対応して仮想NIC524が作成され、第2DBサーバ520に対応して仮想NIC525が作成される。
ここで、図6に示すように、ネットワーク511には、GW513と第1Webサーバ514と第2Webサーバ515とFW516が属する。よって、図7では、GW513用の仮想NIC521と、第1Webサーバ514用の仮想NIC522と、第2Webサーバ515用の仮想NIC524と、FW516用の仮想NIC517が、ネットワーク511のブロック内に描かれている。
また、図6に示すように、ネットワーク512には、FW516と第1DBサーバ519と第2DBサーバ520が属する。よって、図7では、FW516用の仮想NIC518と、第1DBサーバ519用の仮想NIC523と、第2DBサーバ520用の仮想NIC525が、ネットワーク512のブロック内に描かれている。
ところで、定義情報において、ある仮想ネットワーク(具体的には仮想的なL2ネットワーク)への接続のための仮想NICが、V個定義されているとする。この場合、当該仮想ネットワークは、物理ネットワーク上の(V×(V−1)/2)本のL2トンネルにより実現される。
図5〜7に示す第2比較例では、ネットワーク511への接続のために4つの仮想NIC(つまり仮想NIC521、522、524、および517)が定義されている。よって、ネットワーク511は、MPLS・RSVP−TE網470上の6(=4×3/2)本のトンネルにより実現される。これら6本のトンネルは、図7では、1点鎖線により示されている。これら6本のトンネルにより、ネットワーク511に属する4つのVMのうちの任意の2つの間での通信(具体的にはL2通信)が可能となる。
また、図5〜7に示す第2比較例では、ネットワーク512への接続のために3つの仮想NIC(つまり仮想NIC523、525、および518)が定義されている。よって、ネットワーク512は、MPLS・RSVP−TE網470上の3(=3×2/2)本のトンネルにより実現される。これら3本のトンネルは、図7では、破線により示されている。これら3本のトンネルにより、ネットワーク512に属する3つのVMのうちの任意の2つの間でのL2通信が可能となる。
なお、図7から明らかなように、ネットワーク511に属する仮想NICとネットワーク512に属する仮想NICの間には、トンネルが作成されない。また、各トンネルは、IaaS管理サーバから物理サーバに与えられる命令に基づいて作成される。
さて、以上のように図5〜7を参照して説明した第2比較例を、図1〜3(および後述の図8〜12)に示す実施形態と比較してみると、実施形態の方が優れている。具体的には以下のとおりである。
第2比較例では、単一の物理ネットワークにより、複数のサービスレベルに対応する複数のQoSが提供される。よって、ネットワークシステム400を提供するIaaS事業者は、ネットワークシステム400を設計する際に、サービスレベルのメニューを予め決定する必要がある。
IaaS事業者は、決定したメニューに含まれるどのサービスレベルに対応するQoSでもサポートする機能を持ったネットワーク装置(例えばルータやスイッチ)を使って、物理ネットワークを構築する。こうして構築される物理ネットワークは、図5のMPLS・RSVP−TE網470であってもよいし、上記のように、フローごとのQoS制御が可能な他の種類のネットワーク(例えばATM網またはフレームリレー網)であってもよい。
このように、第2比較例では、単一の物理ネットワークがサポートするQoS制御機能によって、IaaS事業者が提供可能なサービスレベルのメニューが決まってしまう。つまり、第2比較例では、一旦構築された物理ネットワークがサポートしないようなQoSに対応する新規サービスレベルを、後から追加することはできない。換言すれば、第2比較例では、メニューが硬直的であり、メニューの拡張性がほとんど(あるいは、まったく)ない。
第2比較例における上記のような拡張性のなさは、図1などの実施形態における柔軟な拡張性(つまり、「随時、物理ネットワークの追加によって、新たなサービスレベルを追加することが可能である」という特徴)とは対照的である。
拡張性のなさは、新たなネットワーク技術が開発されても、その新たなネットワーク技術をネットワークシステム400に取り入れられないことを意味する。よって、同じメニューを提供し続けるだけの第2比較例のネットワークシステム400は、年月の経過とともに、時代遅れのサービスしかユーザに提供することができない不便なシステムに成り下がるおそれさえある。つまり、拡張性のなさは、長期的にはユーザビリティの低下を招く可能性がある。
また、拡張性のなさは、初期投資の増大を招き得るので、IaaS事業者にとっても不都合である。例えば、IaaS事業者は、拡張性のなさを考慮に入れて、ネットワークシステム400を最初に設計するときに、「できるだけ豊富なサービスレベルの選択肢を最初から用意しておこう」と考えるかもしれない。しかし、多くのサービスレベルを提供するには、物理ネットワーク内のルータ等のネットワーク装置が、多くのレベルのQoSをきめ細かに制御する機能を有していなくてはならない。そのような高機能のネットワーク装置は、高価であることが多い。高価なネットワーク装置を使った物理ネットワークを敷設するための初期投資は、当然、高額になってしまう。よって、拡張性のなさは、初期投資の増大を招く要因となり得るのである。
他方、図1などの実施形態によれば、初期投資を抑えることが可能である。例えば、IaaS事業者は、最初は、1つのベストエフォートIPルータ網170のみを利用したネットワークシステム100から始めてもよい。そうすれば、初期投資額は比較的低くて済むであろう。
IaaS事業者は、その後、ユーザからの要求や経営環境などに応じて、適宜、新規サービスレベルを追加することができる。例えば、IaaS事業者は、あるとき専用回線網172により実現されるサービスレベルをメニューに追加してもよく、その後でさらに、MPLS網171により実現されるサービスレベルをメニューに追加してもよい。
もちろん、新たなネットワーク技術が開発されたら、IaaS事業者は、その新たなネットワーク技術を使った新たな物理ネットワークにより実現されるサービスレベルをメニューに追加してもよい。それにより、IaaS事業者は、技術開発の恩恵を受けた新たなサービスレベルをユーザに提供することが可能となる。
逆に、ネットワークシステム100で使われている物理ネットワークのうちの1つが、技術的に陳腐化してしまう可能性も、ゼロではない。そのような場合、IaaS事業者は、陳腐化した物理ネットワークに対応するサービスレベルをメニューから削除し、陳腐化した物理ネットワークを撤去してもよい。つまり、図1などに示す実施形態によれば、技術的な新陳代謝をネットワークシステム100に反映させることが可能である。
以上、図4〜7を参照して説明したように、図1などに示す実施形態は、第1比較例と比べても優れており、第2比較例と比べても優れている。以下では、そのような優れた特徴を持つ実施形態について、図8〜12を参照しながら、より詳しく説明する。
図8は、実施形態の管理画面と定義情報の例を示す図である。図8には、ユーザに対して提示されるサービスレベルメニュー600が例示されている。また、図8には、ユーザ端末190のディスプレイに表示される管理画面610と、管理画面610を介して定義される定義情報640も例示されている。定義情報640は、ユーザ端末190からIaaS管理サーバ180に送信されて、定義記憶部183に記憶される。
サービスレベルメニュー600は、例えば、管理画面610とともにユーザ端末190のディスプレイに表示されてもよい。ユーザとIaaS事業者の間で取り交わされるSLAの中に、サービスレベルメニュー600が記載されていてもよい。
図8の例では、サービスレベルメニュー600により「レベルA」、「レベルB」、および「レベルC」という3つのサービスレベルが提示されている。サービスレベルメニュー600は、ユーザへの課金についても定めている。
サービスレベルメニュー600によれば、レベルAはベストエフォート型のレベルである。具体的には、レベルAの通信は、ベストエフォートIPルータ網170上のトンネルにより実現される。サービスレベルメニュー600によれば、レベルAのトンネルは、追加料金なしに利用可能である。
また、レベルBは、1Gbpsの帯域幅を最大8つのVMで共有するレベルである。具体的には、レベルBの通信は、MPLS網171上のトンネルにより実現される。サービスレベルメニュー600によれば、IaaS事業者は、レベルBのトンネルを利用するユーザに対して課金する。具体的には、レベルBの1本のトンネルに対しては、1時間あたり0.1円がユーザに課金される。
なお、レベルBの通信を実現するために、VM管理部182は、複数のVMを複数の物理サーバに適切に分配するものとする。VMの物理サーバへの適切な分配のために、例えば公知のアルゴリズムが利用されてもよい。また、上記の最大8つのVMを公平に扱うための公知のアルゴリズムが利用されてもよい。
レベルCは、専用スイッチ網型(つまり専用回線網型)のレベルである。具体的には、レベルCの通信は、専用回線網172上のトンネルにより実現される。サービスレベルメニュー600によれば、IaaS事業者は、レベルCのトンネルを利用するユーザに対して課金する。具体的には、レベルCの1本のトンネルに対しては、1時間あたり0.9円がユーザに課金される。
もちろん、実施形態に応じて、提供されるサービスレベルの数は任意である。また、各サービスレベルのトンネルの利用に対する課金の額も、実施形態に応じて適宜決められてよい。
さて、ユーザ端末190がネットワークを介してIaaS管理サーバ180にアクセスすると、IaaS管理サーバ180のUI処理部181が、管理画面610を表示するための情報を、ネットワークを介してユーザ端末190に与える。ユーザ端末190は、与えられた情報に基づいて、ディスプレイ上に管理画面610を表示する。管理画面610は、ユーザシステム620を定義するためのGUIの例である。ユーザシステム620の定義は、ユーザ端末190の入力装置を介してユーザから与えられる入力にしたがって、編集され得る。
より具体的には、管理画面610は、ユーザシステム620のネットワークトポロジを視覚的に表示する領域と、いくつかのGUIを含む。図6には、GUIの例として、「起動」ボタン611と「変更」ボタン612も例示されている。
「起動」ボタン611は、管理画面610を介したユーザシステム620の定義が完了したときに、クリックまたはタップされる。「起動」ボタン611は、ユーザシステム620を起動するようIaaS管理サーバ180に要求するためのGUIである。
他方、「変更」ボタン612は、起動済みの(つまり運用中の)ユーザシステム620に関して、管理画面610を介して定義情報640が編集される場合に使われる。変更のための編集が完了すると、ユーザは「変更」ボタン612をクリックまたはタップする。「変更」ボタン612は、ユーザシステム620の定義情報640を変更するよう(つまり、ユーザシステム620の設定(configuration)を変更するよう)、IaaS管理サーバ180に要求するためのGUIである。
ところで、IaaS管理サーバ180の定義記憶部183には、ユーザシステムのテンプレートが1つ以上記憶されていてもよい。各テンプレートは、IaaS事業者により予め作成され、定義記憶部183に予め記憶される。管理画面610には、1つ以上のテンプレートの中からユーザが1つのテンプレートを選択するための不図示のGUIがさらに含まれていてもよい。
ユーザは、適宜のテンプレートを選択し、選択したテンプレートを編集せずに「起動」ボタン611をクリックまたはタップしてもよい。ユーザは、選択したテンプレートを編集してから、「起動」ボタン611をクリックまたはタップしてもよい。もちろん、ユーザは、テンプレートを使わずにユーザシステムを定義し、ユーザシステムを定義し終えてから、「起動」ボタン611をクリックまたはタップしてもよい。いずれの場合も、ユーザは、管理画面610を介して、所望のユーザシステム620を指定することができる。
図8のユーザシステム620のトポロジは、図6のユーザシステム510のトポロジと同様である。つまり、ユーザシステム620は、2つの仮想ネットワーク(すなわちネットワーク621と622)と、6つのVMを含む。
ネットワーク621には、GW623、第1Webサーバ624、第2Webサーバ625、およびFW626が接続される。GW623、第1Webサーバ624、第2Webサーバ625、およびFW626は、いずれもVMである。
また、FW626はネットワーク622にも接続される。よって、管理画面610には、ネットワーク621にFW626を接続するための第1NIC627と、ネットワーク622にFW626を接続するための第2NIC628も示されている。第1NIC627は、具体的には、VMであるFW626を実行する物理サーバのホストOS内の仮想NICである。同様に、第2NIC628は、FW626を実行する物理サーバのホストOS内の別の仮想NICである。
しかし、ユーザは、第1NIC627と第2NIC628がどのように実装されるかを知る必要はない。ユーザは、単に、FW626とネットワーク621のインタフェイスとして第1NIC627を管理画面610上で定義し、FW626とネットワーク622のインタフェイスとして第2NIC628を管理画面610上で定義する。
さて、ネットワーク622には、FW626に加えて、第1DBサーバ629と第2DBサーバ630も接続される。第1DBサーバ629と第2DBサーバ630の各々もVMである。
なお、図8では、図の簡略化のため、GW623用の仮想NIC(つまり、VMであるGW623実行する物理サーバのホストOS内の仮想NIC)は省略されている。同様に、図8では、第1Webサーバ624と第2Webサーバ625と第1DBサーバ629と第2DBサーバ630用の仮想NICも省略されている。図8で省略されているこれらの仮想NICは、図9と12に仮想NIC634〜638として示されている。
以上の説明から明らかなように、ネットワーク621は、6(=4×3/2)本のトンネルにより実現され、ネットワーク622は3(=3×2/2)本のトンネルにより実現される。本実施形態では、これら9(=6+3)本のトンネルのそれぞれについて、ユーザは、サービスレベルをレベルA、B、Cの中から任意に選ぶことができる。換言すれば、ユーザは、2つのVM間のリンクのQoSを規定するサービスレベルを、レベルA、B、Cの中から任意に選ぶことができる。
ここで、ユーザシステム620の用途や、ユーザシステム620内の各VMの動作は、図6のユーザシステム510と同様なので、詳しい説明を省略するが、ユーザは、例えば各VMの役割に基づいて、以下のように判断してもよい。
・第1Webサーバ624がクライアントに返す応答は、画像ファイル、動画ファイル、音声ファイルなど、比較的大きなサイズのファイルを含む場合がある。つまり、比較的大きなサイズのファイルが第1Webサーバ624からGW623へ送信されることがある。よって、第1Webサーバ624とGW623の間のリンク631の帯域幅は広い方が好ましい。
・同様の理由から、第2Webサーバ625とGW623の間のリンク632の帯域幅も広い方が好ましい。
・第1DBサーバ629上のDBが更新されると、第2DBサーバ630上の複製を更新するよう、第1DBサーバ629が第2DBサーバ630に命令する。第1DBサーバ629上のDBと、第2DBサーバ630上のDB(すなわち複製)との同期にかかる時間は短い方が好ましい。よって、第1DBサーバ629と第2DBサーバ630の間のリンク633の帯域幅は、広い方が好ましい。
例えば以上のような判断に基づいて、ユーザが、ユーザ端末190の入力装置を介して、以下のようにサービスレベルを指定したとする。
・ユーザシステム620内のリンクのデフォルトのサービスレベルは、レベルAである。つまり、個別に別途指定されない限り、ユーザシステム620内のどのリンクのサービスレベルも、レベルAである。
・リンク631と632のサービスレベルは、レベルBである。
・リンク633のサービスレベルは、レベルCである。
なお、管理画面610は、サービスレベルの指定のためのGUIをさらに含むものとする。ユーザ端末190は、上記のようなサービスレベルの指定のための入力を、管理画面610中のGUIを介してユーザから受け取ることができる。
以上説明したように、本実施形態では、ユーザは、管理画面610のようなGUIを介して、ユーザシステム620の構成を任意に定義することができる。また、本実施形態では、ユーザは、任意の2つのVM間のリンク(すなわち物理ネットワーク上のトンネルにより実装される仮想的なリンク)に対してサービスレベルを指定することにより、リンクのQoSを指定することができる。
そして、ユーザシステム620の構成と各リンクのサービスレベルを定義する定義情報640は、「起動」ボタン611がクリックまたはタップされると、ユーザ端末190からIaaS管理サーバ180に送信される。IaaS管理サーバ180のUI処理部181は、ユーザ端末190から受信した定義情報640を定義記憶部183に記憶する。
図8に例示されている定義情報640は、ユーザシステム620を定義している。図8には定義情報640がテーブル形式で示されているが、テーブル形式以外のデータ形式が使われてもよい。定義情報640は以下の3つのフィールドを含む。
・仮想システムであるユーザシステム620の名前が「VSYS−002」であることを示す「VSYS名」フィールド。
・ユーザシステム620内のリンクのデフォルトのサービスレベルが、上記のようにレベルAであることを示す「デフォルト・サービスレベル」フィールド。
・ユーザシステム620に含まれる仮想ネットワークを定義する「VNET」フィールド。
図8に示すように、定義情報640の「VNET」フィールドには、以下のことが記録される。なお、紙幅の都合上、図8では、「サービスレベル」が「SL」と略されている箇所がある。
・ユーザシステム620は、第1VNET(すなわちネットワーク621)と第2VNET(すなわちネットワーク622)を含む。
・第1VNETには、GW623と、第1Webサーバ624と、第2Webサーバ625と、FW626が接続される。より詳しくは、FW626は、2つの仮想NICのうち、第1NIC627を介して第1VNETに接続される。
・第1VNETに接続されるVM間のリンクのうち、GW623と第1Webサーバ624の間のリンク631と、GW623と第2Webサーバ625の間のリンク632のサービスレベルは、レベルBである。
・第2VNETには、FW626と、第1DBサーバ629と、第2DBサーバ630が接続される。より詳しくは、FW626は、2つの仮想NICのうち、第2NIC628を介して第2VNETに接続される。
・第2VNETに接続されるVM間のリンクのうち、第1DBサーバ629と第2DBサーバ630の間のリンク633のサービスレベルは、レベルCである。
さて、新たにユーザがユーザ端末190を用いて管理画面610を介してユーザシステム620を定義し、「起動」ボタン611をクリックまたはタップすると、ユーザ端末190は、定義情報640をIaaS管理サーバ180に送信する。すると、IaaS管理サーバ180は後述の図10に示す処理を実行する。その結果、ユーザシステム620が稼働し始める。後述の図9には、図10の処理の結果の一例が示されている。
なお、ユーザシステム620が稼働し始めた後にユーザが定義情報640を編集することも可能である。つまり、ユーザ端末190からの要求に応じて、UI処理部181は、定義記憶部183内の定義情報640をユーザ端末190に送信してもよい。定義情報640は、ユーザ端末190において、管理画面610を介して編集される。
定義情報640が編集された後、「変更」ボタン612がクリックまたはタップされると、ユーザ端末190は、編集後の定義情報640をIaaS管理サーバ180に送信する。IaaS管理サーバ180のUI処理部181は、ユーザ端末190から定義情報640を受信し、受信した定義情報640を定義記憶部183に記憶する。
以上のように定義情報640が編集される場合、IaaS管理サーバ180は、変更の内容に応じた処理を実行する。例えば、ある2つのVM間のリンクのサービスレベルが変更された場合、IaaS管理サーバ180は、後述の図11の処理を実行する。後述の図12には、図11の処理の結果の一例が示されている。
さて、図9は、本実施形態で作成されるトンネルの例を示す。ユーザシステム620が新たに図8のように定義され、「起動」ボタン611がクリックまたはタップされると、後述の図10の処理の結果として、例えば図9のように6つのVMがいくつかの物理サーバに配置され、9本のトンネルが新たに作成される。
図9の例では、GW623が物理サーバ651上に配置され、第1Webサーバ624と第1DBサーバ629が物理サーバ652上に配置される。また、第2Webサーバ625と第2DBサーバ630が物理サーバ653上に配置され、FW626が物理サーバ654上に配置される。
なお、物理サーバ651〜654の各々は、図1のネットワークシステム100に含まれる複数の物理サーバのうちのいずれかである。また、図1には紙幅の都合上、3台のラックに搭載された9台の物理サーバのみが描かれているが、もちろん、ネットワークシステム100は、4台以上のラックに搭載された10台以上の物理サーバを含んでいてよい。
ところで、図8の第1NIC627と第2NIC628は、上記のとおり、VMであるFW626に対応してホストOS内に作成される仮想NICである。よって、図9では、第1NIC627と第2NIC628のいずれも、「仮想NIC」と表記されている。
同様に、物理サーバ651のホストOS内には、GW623に対応して仮想NIC634が作成される。また、物理サーバ652のホストOS内には、第1Webサーバ624に対応して仮想NIC635が作成され、第1DBサーバ629に対応して仮想NIC636が作成される。そして、物理サーバ653のホストOS内には、第2Webサーバ625に対応して仮想NIC637が作成され、第2DBサーバ630に対応して仮想NIC638が作成される。
ここで、図8に示すように、ネットワーク621には、GW623と第1Webサーバ624と第2Webサーバ625とFW626が属する。よって、図9では、GW623用の仮想NIC634と、第1Webサーバ624用の仮想NIC635と、第2Webサーバ625用の仮想NIC637と、FW626用の仮想NIC627が、ネットワーク621のブロック内に描かれている。
また、図8に示すように、ネットワーク622には、FW626と第1DBサーバ629と第2DBサーバ630が属する。よって、図9では、FW626用の仮想NIC628と、第1DBサーバ629用の仮想NIC636と、第2DBサーバ630用の仮想NIC638が、ネットワーク622のブロック内に描かれている。
なお、図8の定義情報640では、図示の便宜上、単純に「GW」などとVMの名前(つまりVMを識別する識別情報)を用いて、各仮想ネットワークに接続されるVMや、個別にサービスレベルが設定されるリンクが指定されている。しかし、仮想L2ネットワーク(つまりネットワーク621または622)に接続される端点は、正確には、VM自体ではなく、図9に示すように、VMに対応してホストOS内に作成される仮想的なインタフェイス(すなわち仮想NIC)である。
換言すれば、トンネルの端点は、正確にはホストOS内の仮想NICである。例えば、トンネリング用のプロトコルとしてVXLANプロトコルが使われる場合、トンネルの端点は、VTEP(VXLAN Tunnel End Point)とも呼ばれる。VTEPは、正確には、VMではなく、ホストOS内の仮想NICである。しかし、説明の簡単化のため、単純に「トンネルの両端のVM」や「トンネルの両端の物理サーバ」などの表現を用いることもある。
なお、図8の定義情報640で「GW」などのVMの名前が使われているのは、例えば、GW623に関しては、GW623と仮想ネットワークとの接続のために作成されるインタフェイスが1つだけ(つまり仮想NIC634だけ)だからである。この場合、「GW」というVMの名前によって、仮想NIC634を特定することが可能である。
他方、2つの仮想NIC627と628に対応づけられているFW626に関しては、「FW」という単なるVMの名前だけでは、1つの仮想NICを特定することができない。そのため、定義情報640でも、「FW(第1NIC)」や「FW(第2NIC)」などの表記が使われている。
もちろん、図8に例示したような定義情報640での表記法は、説明の便宜上の例示に過ぎない。定義情報640において、ネットワーク621に接続される4つの端点が、仮想NIC634を識別する識別情報と、仮想NIC635を識別する識別情報と、仮想NIC637を識別する識別情報と、仮想NIC627を識別する識別情報により示されてもよい。同様に、個別にサービスレベルが設定されるリンク631も、仮想NIC634を識別する識別情報と、仮想NIC635を識別する識別情報とのペアにより示されてもよい。また、リンク632も、仮想NIC634を識別する識別情報と、仮想NIC637を識別する識別情報とのペアにより示されてもよい。
同様に、定義情報640において、ネットワーク622に接続される3つの端点が、仮想NIC636を識別する識別情報と、仮想NIC638を識別する識別情報と、仮想NIC628を識別する識別情報により示されてもよい。そして、個別にサービスレベルが設定されるリンク633も、仮想NIC636を識別する識別情報と、仮想NIC638を識別する識別情報とのペアにより示されてもよい。
以上のように、定義情報640における具体的な表記法は、実施形態に応じて適宜定められてよい。具体的にどのような表記法が採用されるにせよ、ネットワーク621への接続のために定義される仮想NICは4つであり、ネットワーク622への接続のために定義される仮想NICは3つである。
4つの仮想NICのうちの任意の2つの組み合わせは、6(=4×3/2)通りある。よって、ネットワーク621は、6本のトンネル661〜666により実現される。これら6本のトンネル661〜666は、図9では1点鎖線により示されている。
また、3つの仮想NICのうちの任意の2つの組み合わせは3(=3×2/2)通りある。よって、ネットワーク622は、3本のトンネル667〜669により実現される。これら3本のトンネル667〜669は、図9では破線により示されている。
なお、図9から明らかなように、ネットワーク621に属する仮想NICとネットワーク622に属する仮想NICの間には、トンネルが作成されない。よって、ユーザシステム620内のVM間の通信は、全部で9(=6+3)本のトンネル661〜669により実現される。
また、図8の定義情報640に示すように、9本のトンネルにより実現される9本のリンクのうち3本には、個別にサービスレベルが設定されている。そして、サービスレベルメニュー600に関して説明したように、レベルAの通信はベストエフォートIPルータ網170上のトンネルにより実現される。また、レベルBの通信はMPLS網171上のトンネルにより実現され、レベルCの通信は専用回線網172上のトンネルにより実現される。
よって、9本のトンネル661〜669の詳細は、具体的には以下のとおりである。
・レベルBが指定されたリンク631を実現するために、仮想NIC634と635の間に、MPLS網171上のトンネル661が作成される。また、トンネル661の作成にともなって、MPLS網171上でRSVP−TEによるシグナリングが行われ、その結果、MPLS網171を介して物理サーバ651と652を結ぶ物理的な経路が確立される。
・レベルBが指定されたリンク632を実現するために、仮想NIC634と637の間に、MPLS網171上のトンネル662が作成される。また、トンネル662の作成にともなって、MPLS網171上でRSVP−TEによるシグナリングが行われ、その結果、MPLS網171を介して物理サーバ651と653を結ぶ物理的な経路が確立される。
・GW623とFW626の間のリンクにはデフォルトのサービスレベルが適用される。このリンクを実現するために、仮想NIC634と627の間に、ベストエフォートIPルータ網170上のトンネル663が作成される。
・第1Webサーバ624とFW626の間のリンクにもデフォルトのサービスレベルが適用される。このリンクを実現するために、仮想NIC635と627の間に、ベストエフォートIPルータ網170上のトンネル664が作成される。
・第2Webサーバ625とFW626の間のリンクにもデフォルトのサービスレベルが適用される。このリンクを実現するために、仮想NIC637と627の間に、ベストエフォートIPルータ網170上のトンネル665が作成される。
・第1Webサーバ624と第2Webサーバ625のリンクにもデフォルトのサービスレベルが適用される。このリンクを実現するために、仮想NIC635と637の間に、ベストエフォートIPルータ網170上のトンネル666が作成される。
・レベルCが指定されたリンク633を実現するために、仮想NIC636と638の間に、専用回線網172上のトンネル667が作成される。
・FW626と第1DBサーバ629の間のリンクにはデフォルトのサービスレベルが適用される。このリンクを実現するために、仮想NIC628と636の間に、ベストエフォートIPルータ網170上のトンネル668が作成される。
・FW626と第2DBサーバ630の間のリンクにはデフォルトのサービスレベルが適用される。このリンクを実現するために、仮想NIC628と638の間に、ベストエフォートIPルータ網170上のトンネル669が作成される。
ところで、図1に関して「第2の方法」として説明したように、物理サーバと物理ネットワークのエッジルータ(またはエッジスイッチ)との間の区間では、VLANタグ中のPCPの値にしたがって、CoS制御が行われてもよい。そして、PCPの値は、トンネルにより実現されるリンクに対してユーザにより指定されたサービスレベルに応じた値である。換言すれば、ユーザにより指定されたサービスレベルに対応してIaaS事業者が提供するQoSに応じた値が、PCPフィールドに設定される。よって、「第2の方法」が採用される場合、図9のように9本のトンネルが作成されると、ユーザシステム620内のVM間の通信は、送信元のVMから送信先のVMまでエンド・ツー・エンドで、指定されたサービスレベルのQoSを保って、行われるようになる。
もちろん、「第2の方法」ではなく「第1の方法」(つまり十分に高性能なToRを利用する方法)によって、エンド・ツー・エンドのQoSが達成されてもよい。
続いて、「起動」ボタン611がクリックまたはタップされたときのIaaS管理サーバ180の動作について、図10を参照して説明する。また、図10の処理が完了した後の物理サーバの動作については、図10の説明の後に述べる。
図8の管理画面610を介してユーザシステム620が定義され、「起動」ボタン611がクリックまたはタップされると、ユーザ端末190は、IaaS管理サーバ180に定義情報640を送信する。すると、UI処理部181は、定義情報640を受信し、新たな名前を生成し、定義情報640の「VSYS名」フィールドに生成した名前を設定し、定義情報640を定義記憶部183に記憶する。
あるいは、定義情報640の代わりに、単に、予め定義記憶部183に記憶されているテンプレートのうちの1つを指定するためのテンプレート識別情報が、ユーザ端末190からIaaS管理サーバ180に送信されてもよい。この場合、UI処理部181は、指定されたテンプレートをコピーすることで、定義情報640の新たなインスタンスを生成する。そして、UI処理部181は、新たな名前を生成し、生成したインスタンスの「VSYS名」フィールドに生成した名前を設定し、以上のようにして名前をつけたインスタンスを定義記憶部183に記憶する。
なお、UI処理部181が定義情報640を受信する処理は、図1に関して説明したネットワーク設定命令をIaaS管理サーバ180が受け付ける処理の一例である。また、UI処理部181がテンプレート識別情報を受信する処理も、ネットワーク設定命令をIaaS管理サーバ180が受け付ける処理の一例である。具体的には、図8の例では、「起動」ボタン611がクリックまたはタップされると、UI処理部181が以下の2つのネットワーク設定命令を受け付ける。
・ネットワーク621に関するネットワーク設定命令(6本のトンネルについての6つのトンネル接続命令を含む)。
・ネットワーク622に関するネットワーク設定命令(3本のトンネルについての3つのトンネル接続命令を含む)。
いずれにせよ、「起動」ボタン611がクリックまたはタップされると、定義記憶部183には、新たなユーザシステム620を定義する新たな定義情報640が記憶される。そこで、ステップS101でVM管理部182は、新たに記憶された定義情報640に基づいて、ユーザシステム620内の各VMをどの物理サーバに配置するかを決める。つまり、VM管理部182は、VMの物理サーバへの割り当てを決める。
ステップS101での割り当てアルゴリズムは任意である。例えば、図8の定義情報640に基づいて、VM管理部182は、図9のような割り当てをステップS101で決めてもよい。また、VM管理部182は、決定した配置をVNET管理部184に通知する。
次に、ステップS102でVNET管理部184は、定義情報640で定義されている1つ以上の仮想ネットワークのうちの1つを選択する。以下では説明の便宜上、ステップS102で選択された仮想ネットワークを「選択VNET」という。例えば、VNET管理部184は、定義情報640で定義されている第1VNET(すなわちネットワーク621)と第2VNET(すなわちネットワーク622)のうち、第1VNETを先にステップS102で選択してもよい。
次に、ステップS103でVNET管理部184は、選択VNETに接続される各VMに関して、当該VMが配置される物理サーバに対して、当該VMに対応する仮想NICをホストOS内に作成するよう、当該物理サーバに命令する。
例えば、選択VNETがネットワーク621であるとする。この場合、選択VNETには、GW623と、第1Webサーバ624と、第2Webサーバ625と、FW626という、4つのVMが接続される。また、ステップS101でのVM管理部182による決定によれば、これら4つのVMが図9のように物理サーバ651〜654に配置されるものとする。この場合、ステップS103でVNET管理部184は以下のように動作する。
・VNET管理部184は、GW623が配置される物理サーバ651に対して、GW623に対応する仮想NIC634をホストOS内に作成するよう、命令する。より詳しくは、ネットワーク621への接続用にGW623内にこれから作成される仮想NICに対応して、ホストOS内に仮想NIC634を作成するよう、VNET管理部184は物理サーバ651に命令する。
・VNET管理部184は、第1Webサーバ624が配置される物理サーバ652に対して、第1Webサーバ624に対応する仮想NIC635をホストOS内に作成するよう、命令する。より詳しくは、ネットワーク621への接続用に第1Webサーバ624内にこれから作成される仮想NICに対応して、ホストOS内に仮想NIC635を作成するよう、VNET管理部184は物理サーバ652に命令する。
・VNET管理部184は、第2Webサーバ625が配置される物理サーバ653に対して、第2Webサーバ625に対応する仮想NIC637をホストOS内に作成するよう、命令する。より詳しくは、ネットワーク621への接続用に第2Webサーバ625内にこれから作成される仮想NICに対応して、ホストOS内に仮想NIC637を作成するよう、VNET管理部184は物理サーバ653に命令する。
・VNET管理部184は、FW626が配置される物理サーバ654に対して、FW626に対応する仮想NIC627をホストOS内に作成するよう、命令する。より詳しくは、ネットワーク621への接続用にFW626内にこれから作成される仮想NICに対応して、ホストOS内に仮想NIC627を作成するよう、VNET管理部184は物理サーバ654に命令する。
なお、ステップS103の命令を受けた各物理サーバは、命令にしたがってホストOS内に新たな仮想NICを作成する。例えば、図9のような配置がステップS101で決められ、ステップS102でネットワーク621が選択された場合、図9の仮想NIC634、635、637、および627が作成される。あるいは、ステップS102でネットワーク622が選択された場合、図9の仮想NIC636、638、および628が作成される。
VNET管理部184は、ステップS103においてさらに、上記の命令を与えた各物理サーバから、仮想NICの作成が完了したことを示す報告を受信してもよい。報告には、作成された仮想NICを識別する識別情報が含まれていてもよい。識別情報は仮想NICの名前であってもよい。なお、仮想NICの識別情報は、ステップS103でVNET管理部184により物理サーバに対して明示的に指定されてもよい。
続いて、ステップS104でVNET管理部184は、選択VNET内の仮想NIC同士のペアのうち、未選択のペアを1つ選択する。以下では説明の便宜上、ステップS104で選択されたペアを「選択ペア」という。
例えば、図9のような配置がステップS101で決められ、ステップS102でネットワーク621が選択されたとする。この場合、選択VNET内には、仮想NIC634、635、637、および627が含まれる。よって、ステップS104でVNET管理部184は、以下の6つのペアのうちの1つを選択する。
・仮想NIC634と635のペア。
・仮想NIC634と637のペア。
・仮想NIC634と627のペア。
・仮想NIC635と637のペア。
・仮想NIC635と627のペア。
・仮想NIC637と627のペア。
次に、ステップS105でVNET管理部184は、定義記憶部183に記憶された定義情報640を参照して、選択ペアに対して個別にサービスレベルが指定されているか否かを判断する。そして、選択ペアに対して個別にサービスレベルが指定されている場合、VNET管理部184は次にステップS106を実行する。逆に、選択ペアに対して個別にサービスレベルが指定されていない場合(つまり、選択ペアに対してデフォルトのサービスレベルが適用される場合)、VNET管理部184は次にステップS107を実行する。
なお、図8に示した定義情報640では、理解を容易にするために(また、表現を簡素化するために)、仮想NICを識別する情報ではなく、VMを識別する名前が使われている。しかし、これは、上記のとおりVMの名前から仮想NICが一意に特定可能だからである。また、定義情報640において、VMの名前の代わりに仮想NICの識別情報が使われてもよいことも、上述したとおりである。よって、ステップS105でVNET管理部184は、定義情報640を参照することにより、選択ペアに対して個別にサービスレベルが指定されているか否かを判断することができる。
例えば、ステップS105に関して例示した6つのペアのうち、仮想NIC634と635のペアが選択されたとする。この場合、図8の定義情報640によれば、選択ペアに対してレベルBが個別に指定されている。よって、VNET管理部184は次にステップS106を実行する。
あるいは、ステップS105に関して例示した6つのペアのうち、仮想NIC635と627のペアが選択されたとする。この場合、図8の定義情報640によれば、選択ペアにはデフォルトのサービスレベル(すなわちレベルA)が適用される。よって、VNET管理部184は次にステップS107を実行する。
さて、ステップS106でVNET管理部184は、個別に設定されたサービスレベルに対応する物理ネットワーク用のIPアドレスを使用してL2トンネルを設定するための命令を、トンネルの両端の物理サーバに与える。
例えば、説明の便宜上、ステップS105で仮想NIC634と635のペアが選択されたものとする。この場合、VNET管理部184は、VM管理部182がステップS101で決めた配置から、以下のことを認識している。
・GW623は物理サーバ651に配置され、したがって、仮想NIC634も物理サーバ651にある。
・第1Webサーバ624は物理サーバ652に配置され、したがって、仮想NIC635も物理サーバ652にある。
また、IaaS管理サーバ180の記憶装置256には、予め、ネットワークシステム100内の各物理サーバの物理NICのIPアドレスが登録されている。したがって、VNET管理部184は、ベストエフォートIPルータ網170とMPLS網171と専用回線網172に対応して物理サーバ651の物理NICに割り当てられている3つのIPアドレスを記憶装置256から読み出すことができる。VNET管理部184は、同様に、物理サーバ652の物理NICに割り当てられている3つのIPアドレスも記憶装置256から読み出すことができる。
ここで、上記の仮定によれば、選択ペアに対して個別に設定されたサービスレベルは、レベルBである。そして、レベルBを実現するQoSをサポートする物理ネットワークはMPLS網171である。よって、VNET管理部184は、具体的には、MPLS網171に対応して物理サーバ651の物理NICに割り当てられているIPアドレスと、MPLS網171に対応して物理サーバ652の物理NICに割り当てられているIPアドレスを読み出す。以下では説明の便宜上、前者のIPアドレスが「2001:db8:2:3::1」であり、後者のIPアドレスが「2001:db8:2:6::1」であるものとする。
また、VNET管理部184は、選択ペアの2つの仮想NIC間のトンネルを識別するトンネル識別情報を決定する。例えば、トンネリングのためにGREが使われる場合、トンネル識別情報としてGREキーが使われてもよい。あるいは、VXLANが使われる場合、トンネル識別情報としてVNIが使われてもよい。
例えば、VM管理部182が決める配置によっては、ある2台の物理サーバ間に複数のトンネルが存在し、しかもそれら複数のトンネルが、同じ1つの物理ネットワーク上の複数のトンネルであるような場合もあり得る。つまり、トンネリング用に使われる外側IPヘッダ内の送信先IPアドレスと送信元IPアドレスのペアが、複数のトンネルの間で共通している場合があり得る。
このような場合であっても、トンネル識別情報を利用することにより、2台の物理サーバそれぞれのホストOSは、トンネル同士を区別することができる。つまり、トンネル識別情報の利用により、カプセル化された内側L2フレームを適切な仮想NICを介して適切なVMへ出力することが可能となる。
そのため、VNET管理部184は、ステップS106で上記のとおり、トンネル識別情報を決定する。例えば、IaaS管理サーバ180の記憶装置256には、不図示のDB(以下「トンネル管理DB」という)が記憶されていてもよい。
トンネル管理DBには、既存のトンネルに関する情報(例えば、トンネルの両端の仮想NICを識別する情報、トンネリングに使われる2つのIPアドレス、トンネル識別情報など)が記憶されていてもよい。この場合、VNET管理部184は、トンネル識別情報の候補を生成し、生成した候補がトンネル管理DBに既存のトンネル識別情報として登録されていなければ、生成した候補を新たなトンネル用のトンネル識別情報として決定してもよい。VNET管理部184は、未使用のトンネル識別情報が見つかるまで、候補の生成を繰り返してもよい。
もちろん、トンネル識別情報として単純なシーケンス番号が利用可能であれば、VNET管理部184は単純にカウンタを使ってトンネル識別情報を生成してもよい。いずれにせよ、VNET管理部184は、新たなトンネル用に、未使用のトンネル識別情報を決定することができる。
例えば、上記の仮定のように、選択ペアが仮想NIC634と635のペアである場合、VNET管理部184は、具体的には、以下のように物理サーバ651と652に命令を与える。
すなわち、VNET管理部184は、物理サーバ651に、「2001:db8:2:3::1」と「2001:db8:2:6::1」という2つのIPアドレスと、上記のように決めた未使用のトンネル識別情報と、仮想NIC634の識別情報を通知する。つまり、VNET管理部184は、物理サーバ651のホストOSに、トンネルヘッダで使う情報を通知するとともに、上記トンネル識別情報で識別されるトンネルの、物理サーバ651上の端点が、仮想NIC634であることを通知する。換言すれば、VNET管理部184は、物理サーバ651(具体的には物理サーバ651のホストOS)に対して、以下のように命令する。
・上記トンネル識別情報で識別されるトンネルを介した通信のために内側L2フレーム(つまりGW623から仮想NIC634に出力されるL2フレーム)をカプセル化する際には、以下のように動作しなさい。すなわち、送信元IPアドレスとして「2001:db8:2:3::1」を使い、送信先IPアドレスとして「2001:db8:2:6::1」を使い、トンネルヘッダ内には上記トンネル識別情報を指定しなさい。
・送信元IPアドレスが「2001:db8:2:6::1」で、送信先IPアドレスが「2001:db8:2:3::1」で、トンネルヘッダ内に上記トンネル識別情報が指定された外側L3パケットを物理NICが受信したら、以下のように動作しなさい。すなわち、受信した外側L3パケットを仮想NIC634に出力しなさい。
同様に、VNET管理部184は、物理サーバ652に、「2001:db8:2:6::1」と「2001:db8:2:3::1」という2つのIPアドレスと、上記トンネル識別情報と、仮想NIC635の識別情報を通知する。つまり、VNET管理部184は、物理サーバ652のホストOSに、トンネルヘッダで使う情報を通知するとともに、上記トンネル識別情報で識別されるトンネルの、物理サーバ652上の端点が、仮想NIC635であることを通知する。換言すれば、VNET管理部184は、物理サーバ652のホストOSに対して、以下のように命令する。
・上記トンネル識別情報で識別されるトンネルを介した通信のために内側L2フレーム(つまり第1Webサーバ624から仮想NIC635に出力されるL2フレーム)をカプセル化する際には、以下のように動作しなさい。すなわち、送信元IPアドレスとして「2001:db8:2:6::1」を使い、送信先IPアドレスとして「2001:db8:2:3::1」を使い、トンネルヘッダ内には上記トンネル識別情報を指定しなさい。
・送信元IPアドレスが「2001:db8:2:3::1」で、送信先IPアドレスが「2001:db8:2:6::1」で、トンネルヘッダ内に上記トンネル識別情報が指定された外側L3パケットを物理NICが受信したら、以下のように動作しなさい。すなわち、受信した外側L3パケットを仮想NIC635に出力しなさい。
なお、以上のようにして与えられる命令にしたがい、物理サーバ651のホストOSは、通知された2つのIPアドレスとトンネル識別情報と仮想NIC634の識別情報を対応づけるエントリを、記憶装置(例えばRAM)に記憶する。このエントリは、物理サーバ651のホストOS内から参照可能である。つまり、ホストOS内の仮想NIC634は、このエントリを参照することで、トンネルヘッダに設定する送信先IPアドレス、送信元IPアドレス、およびトンネル識別情報を認識することができる。
同様に、VNET管理部184から与えられる命令にしたがい、物理サーバ652のホストOSも、通知された2つのIPアドレスとトンネル識別情報と仮想NIC635の識別情報を対応づけるエントリを、記憶装置(例えばRAM)に記憶する。
なお、各物理サーバの記憶装置には、物理サーバがVNET管理部184からの命令を受けるたびに上記のごときエントリが追加される。よって、記憶装置には複数のエントリが存在し得る。以下では説明の便宜上、これらのエントリの集合のことも「トンネル管理DB」という。しかし、各物理サーバのトンネル管理DBと、VNET管理部184が管理するトンネル管理DBの形式は、違っていてよい。
実施形態によっては、ステップS106でVNET管理部184がさらに、以下の2つの値の一方または両方を物理サーバ651と652に通知してもよい。
・選択ペアに対して指定されているサービスレベルに対応して予め決められている優先度の値(具体的にはVLANタグのPCPフィールドに設定される値)。
・選択ペアに対して指定されているサービスレベルに対応して予め決められているVLAN−ID。
PCPの値が通知される場合、物理サーバ651のホストOSは、通知されたPCPの値も、トンネル管理DBのエントリに含める。VLAN−IDが通知される場合、物理サーバ651のホストOSは、通知されたVLAN−IDの値も、トンネル管理DBのエントリに含める。物理サーバ652のホストOSも同様に動作する。
しかし、たとえ物理ネットワークのエッジルータ(またはエッジスイッチ)と物理サーバとの間の区間でVLANタグが使われる場合であっても、PCPの値やVLAN−IDの通知は省略可能である。理由は以下のとおりである。
例えば、物理サーバのホストOSに含まれる、物理NIC用のドライバ(例えばイーサネットドライバ)に、物理サーバの起動時に予めVLANに関するパラメタが設定されてもよい。例えば、IPv6アドレスのプレフィックスと、VLAN−IDと、PCPの値とを対応づける情報が、上記ドライバに設定されていてもよい。
すると、物理サーバのホストOSは、トンネルヘッダ(具体的にはその中のIPヘッダ)内の送信元IPアドレスと送信先IPアドレスに共通のプレフィックスから、当該プレフィックスに対応するVLAN−IDとPCPの値をルックアップすることができる。よって、ホストOSは、トンネルが通る物理ネットワークがサポートするQoSに応じた適宜のVLAN−IDとPCPの値を指定したVLANタグを、外側L2ヘッダに含めることができる。
もちろん、上記のようにPCPの値がVNET管理部184から物理サーバに明示的に通知されてもよい。その場合、物理サーバのホストOSは、トンネル管理DBのエントリ中に記憶したPCPの値を参照することで、VNET管理部184から通知されたPCPの値を指定したVLANタグを、外側L2ヘッダに含めることができる。
また、VLAN−IDの値だけがVNET管理部184から物理サーバに明示的に通知されてもよい。その場合、物理サーバのホストOSに含まれる、物理NIC用のドライバには、予め、各VLAN−IDにPCPの値を対応づける情報が設定されているものとする。具体的には、物理ネットワークにより提供されるQoSごとに、以下の2つの値を対応づける情報が、上記ドライバに設定されているものとする。
・当該QoSに対応して予め決められたVLAN−ID。
・当該QoSに対応して予め決められたPCPの値。
すると、物理サーバのホストOS(上記ドライバを含む)は、トンネル管理DBのエントリからVLAN−IDを読み出し、読み出したVLAN−IDと対応づけられているPCPの値を得ることができる。したがって、ホストOSは、トンネルが通る物理ネットワークがサポートするQoSに応じた適宜のVLAN−IDとPCPの値が指定されたVLANタグを、外側L2ヘッダに含めることができる。
以上のようにして、ステップS106では、L2トンネルの作成のための命令が、VNET管理部184からトンネル両端の物理サーバに対して与えられる。
さて一方、ステップS107では、VNET管理部184は、デフォルトで指定されたサービスレベルに対応する物理ネットワーク用のIPアドレスを使用してL2トンネルを設定するための命令を、トンネルの両端の物理サーバに与える。
ステップS107とS106の違いは、VNET管理部184が指定する2つのIPアドレスである。また、VNET管理部184がPCPの値および/またはVLAN−IDを明示的に物理サーバに通知する場合は、通知されるPCPの値および/またはVLAN−IDも、ステップS106とS107で異なる。
しかし、それ以外の点においては、ステップS106とS107は同様である。よって、ステップS107についての詳しい説明は省略するが、ステップS107で指定されるIPアドレスの例について説明すれば以下のとおりである。
例えば、選択ペアが仮想NIC635と627のペアであるものとする。また、デフォルトのサービスレベルに対応する物理ネットワーク(つまり、ベストエフォートIPルータ網170)に対応して、物理サーバ652の物理NICに割り当てられているIPアドレスが「2001:db8:1:6::1」であるものとする。そして、ベストエフォートIPルータ網170に対応して、物理サーバ654の物理NICに割り当てられているIPアドレスは、「2001:db8:1:15::1」であるものとする。
この場合、ステップS107でVNET管理部184は、「2001:db8:1:6::1」と「2001:db8:1:15::1」という2つのIPアドレスを、送信元IPアドレスと送信先IPアドレスとして、物理サーバ652に通知する。また、VNET管理部184は、「2001:db8:1:15::1」と「2001:db8:1:6::1」という2つのIPアドレスを、送信元IPアドレスと送信先IPアドレスとして、物理サーバ654に通知する。
ステップS106またはS107の実行後、ステップS108が実行される。ステップS108でVNET管理部184は、選択VNET内の仮想NIC同士のペアのうち、未選択のペアがあるか否かを判断する。未選択のペアが1つ以上残っていれば、VNET管理部184は次にステップS104を再び実行する。逆に、選択VNET内の仮想NIC同士のペアがすべて選択済みならば、次にステップS109が実行される。
ステップS109でVNET管理部184は、定義情報640で定義されている1つまたは複数の仮想ネットワークのうち、未選択の仮想ネットワークがあるか否かを判断する。未選択の仮想ネットワークが1つ以上残っていれば、VNET管理部184は次にステップS102を再び実行する。逆に、定義情報640で定義されている1つまたは複数の仮想ネットワークがすべて選択済みならば、次にステップS110が実行される。
ステップS110では、VM管理部182が、ユーザシステム620に属するすべてのVMを起動させるための処理を行う。具体的には、ユーザシステム620に属する各VMについて、VM管理部182は、当該VMに対応してステップS101で決めた物理サーバに対して、当該VMを起動するよう命令する。より具体的には、VM管理部182は、VMを起動するためのコマンドのオプション・パラメタに設定する値として、当該VMに対応してステップS103で当該物理サーバに作成させた仮想NICの識別情報を、当該物理サーバに指定する。例えば、図9の例では、VM管理部182は以下のように物理サーバ651〜654に命令を与える。
・VM管理部182は、仮想NIC634の識別情報をオプションに指定してGW623を起動するように、物理サーバ651(より具体的には物理サーバ651のホストOS)に命令する。
・VM管理部182は、仮想NIC635の識別情報をオプションに指定して第1Webサーバ624を起動するように、かつ、仮想NIC636の識別情報をオプションに指定して第1DBサーバ629を起動するように、物理サーバ652に命令する。
・VM管理部182は、仮想NIC637の識別情報をオプションに指定して第2Webサーバ625を起動するように、かつ、仮想NIC638の識別情報をオプションに指定して第2DBサーバ630を起動するように、物理サーバ653に命令する。
・VM管理部182は、仮想NIC627の識別情報と仮想NIC628の識別情報をオプションに指定してFW626を起動するように、物理サーバ654に命令する。
以上のようなステップS110の処理が完了すると、図10の仮想システム起動処理も完了する。また、ステップS110の命令を受け取った各物理サーバは、命令にしたがって適宜VMを起動する。
続いて、図10の仮想システム起動処理が完了した後の通信の具体例について説明する。説明の便宜上、図10の処理の結果として、図9のようにユーザシステム620の6つのVMが4台の物理サーバ651〜654に配置され、9本のトンネル661〜669が作成されたものとする。また、以下では、例として、第1Webサーバ624がGW623にデータを送信する場合について説明する。
第1Webサーバ624は、GW623に送信する内側L3パケットを作成する。内側L3パケットは、どのL3プロトコルの形式でもよい。
例えば、内側L3パケットはIPv4パケットでもよい。その場合、内側L3パケットのIPヘッダ(つまり内側L3ヘッダ)には、送信元IPアドレスとして、第1Webサーバ624のIPv4アドレス(例えば「192.168.2.2」)が指定される。また、内側L3パケットのIPヘッダには、送信先IPアドレスとして、GW623のIPv4アドレス(例えば「192.168.2.1」)が指定される。なお、ユーザは、ユーザシステム620内のどのVMのIPアドレスも、任意に決定することが可能である。
そして、第1Webサーバ624は、内側L3パケットの前に内側L2ヘッダを付加することで、内側L2フレームを作成する。内側L2フレームは、どのL2プロトコルの形式でもよい。
例えば、内側L2フレームはイーサネットフレームでもよい。その場合、内側L2ヘッダ(つまり内側L2フレームのイーサネットヘッダ)には、送信元MACアドレスとして、第1Webサーバ624のMACアドレス(より詳細には第1Webサーバ624内の不図示の仮想NICのMACアドレス)が指定される。また、内側L2ヘッダには、送信先MACアドレスとして、GW623のMACアドレス(より詳細にはGW623内の不図示の仮想NICのMACアドレス)が指定される。
なお、VM内の仮想NICのMACアドレスは、物理NICのMACアドレスとは無関係の値であってよい。例えば、仮想化のためにハイパーバイザが使われる場合は、ハイパーバイザがVMの起動時に自動的にVM内の仮想NICのMACアドレスを決定してもよい。あるいは、ユーザが明示的にVM内の仮想NICのMACアドレスを指定してもよい。
なお、第1Webサーバ624は、第1Webサーバ624内のARP(Address Resolution Protocol)テーブルを参照することで、GW623のMACアドレスを認識してもよい。ARPテーブルにGW623のMACアドレスが既に学習されていれば、第1Webサーバ624は、学習済みのMACアドレスを上記のように内側L2ヘッダの送信先MACアドレスとして指定することができる。
しかし、ユーザシステム620が起動した直後には、ARPテーブルにはまだGW623のMACアドレスが学習されていない。この場合、第1Webサーバ624は、まずネットワーク621(つまり仮想的なL2ネットワークセグメント)でのアドレス解決を行う。
具体的には、第1Webサーバ624は、TPA(Target Protocol Address)としてGW623のIPv4アドレス(例えば「192.168.2.1」)を指定したARP要求(ARP request)パケットを内側L3パケットとして生成する。そして、第1Webサーバ624は、送信先MACアドレスとしてブロードキャストアドレスを指定した内側L2ヘッダを内側L3パケットの前に付加することで、内側L2フレームを作成する。第1Webサーバ624は、作成した内側L2フレームを仮想NIC635に出力する。なお、内側L2ヘッダ内の送信元MACアドレスは、第1Webサーバ624内の不図示の仮想NICのMACアドレスである。
内側L2ヘッダ内の送信先MACアドレスがブロードキャストアドレスの場合、物理サーバ652のホストOSは、以下のように動作する。すなわち、ホストOSは、内側L2フレームを第1Webサーバ624から受け取った仮想NIC635を端点とする各トンネルを介して、カプセル化された内側L2フレームを含む外側L3パケットを送信する。
つまり、この例では、トンネル661、664、および666のそれぞれを介して、ARP要求パケットを内側L3パケットとして含む外側L3パケットが送信される。それにより、ネットワーク621上のブロードキャスト送信が実現される。より詳しく説明すると、以下のとおりである。
物理サーバ652内においては、ホストOS内の仮想NIC635が、ARP要求パケットを含む内側L2フレームを、第1Webサーバ624から受け取る。よって、仮想NIC635は、内側L2フレームの送信元MACアドレスが、(トンネルを介して接続される通信相手のアドレスではなく)物理サーバ652内で仮想NIC635とペアになったVMである第1Webサーバ624のアドレスであることを学習する。
ここで、ステップS106とS107に関する説明から分かるとおり、物理サーバ652のトンネル管理DBには、トンネル661、664、および666に対応する3つのエントリが存在する。したがって、仮想NIC635は、仮想NIC635の識別情報を含むエントリをトンネル管理DB内で検索することにより、3つのエントリを見つける。
仮想NIC635は、見つけた各エントリについて、当該エントリから送信先IPアドレス、送信元IPアドレス、およびトンネル識別情報を読み出し、読み出した送信先IPアドレス、送信元IPアドレス、およびトンネル識別情報をトンネルヘッダに設定する。仮想NIC635は、第1Webサーバ624から出力された内側L2フレーム(つまりARP要求パケットを含むフレーム)の前にトンネルヘッダを付加することで、外側L3パケットを生成する。
以上のようにして生成される3つの外側L3パケットの各々には、物理サーバ652のホストOSにより、それぞれ適宜の外側L2ヘッダが付加される。そして、物理サーバ652の物理NICから3つの外側L2フレームが送信される。外側L2ヘッダに指定される送信先MACアドレスは、具体的には以下のようにして決められる。なお、以下に述べる近隣探索(neighbor discovery)や近隣キャッシュ(neighbor cache)等は、例えばRFC(Request for Comments)4861などに記載されているとおり、IPv6に関して使われる技術である。
トンネルヘッダ内の送信先IPアドレスで示される物理サーバが、送信元たる物理サーバ652と同一のネットワークセグメント内にある場合、物理サーバ652のホストOSは、近隣キャッシュを参照する。そして、送信先IPアドレスに対応するMACアドレスが近隣キャッシュ中に見つかれば、ホストOSは、見つかったMACアドレスを、外側L2ヘッダ内の送信先MACアドレスとして指定する。
送信先IPアドレスに対応するMACアドレスが近隣キャッシュ中に見つからない場合、ホストOSは、近隣探索を実行する。より具体的には、ホストOSは、近隣要請(neighbor solicitation)を実行する。
送信先IPアドレスで示される物理サーバが、送信元たる物理サーバ652と同一のネットワークセグメント内にある場合、近隣要請の結果として、ホストOSは、近隣通知(neighbor advertisement)パケットを受信することができる。ホストOSは、送信先IPアドレスに対応するMACアドレスを、近隣通知パケットから学習することができる。よって、ホストOSは、学習結果を近隣キャッシュに記憶し、学習したMACアドレスを、外側L2ヘッダ内の送信先MACアドレスとして指定する。
逆に、送信先IPアドレスで示される物理サーバが、送信元たる物理サーバ652とは異なるネットワークセグメントにある場合、物理サーバ652のホストOSは、近隣キャッシュを参照して、ルータのMACアドレスを読み出す。そして、ホストOSは、ルータのMACアドレスを、外側L2ヘッダ内の送信先MACアドレスとして指定する。
なお、図1や図3から分かるように、送信元たる物理サーバ652には、1台のToRを介して、複数の物理ネットワークそれぞれのエッジルータ(またはエッジスイッチ)が接続される。よって、近隣キャッシュには、これらの複数のエッジルータ(またはエッジスイッチ)についての複数のエントリが含まれる。
しかし、ここでは、これらの複数のエッジルータ(またはエッジスイッチ)のうち、送信先IPアドレスのプレフィックスを持つ物理ネットワークのエッジルータ(またはエッジスイッチ)のMACアドレスを、ホストOSが近隣キャッシュから読み出す。換言すれば、送信元IPアドレスと送信先IPアドレスに共通するプレフィックスから始まるルータIPアドレスに対応するMACアドレスを、ホストOSが近隣キャッシュから読み出す。
なお、IPv6ネットワークにおけるルータは、定期的にルータ通知(router advertisement)パケットを送信する。また、ルータ通知パケットは、プレフィックスに関する情報を含む。また、各物理サーバは、起動したときに、ルータ要請(router solicitation)パケットを送信してもよく、ルータ要請パケットに対する返信としてルータ通知パケットを受信してもよい。
よって、各物理サーバは、ルータ通知を受信することで、プレフィックス長を認識することができる。また、各物理サーバは、ルータ通知を受信することで、ルータのMACアドレスを学習することができる。
したがって、物理サーバ652は、認識したプレフィックス長に基づいて、「送信先IPアドレスで示される物理サーバが、送信元たる物理サーバ652と同一のネットワークセグメント内にあるか否か」を判断することができる。また、物理サーバ652は、上記のようにルータのMACアドレスを近隣キャッシュから読み出すこともできる。
以上のように、外側L2ヘッダには適宜の送信先MACアドレスが指定される。なお、外側L2ヘッダ内の送信元MACアドレスは、物理サーバ652の物理NICのMACアドレスである。また、外側L2ヘッダが、PCP(またはPCPとVLAN−ID)の指定されたVLANタグを含んでもよいことは、前述したとおりである。上記のとおり、例えば、ホストOSのイーサネットドライバが、予め設定された情報にしたがって適宜のVLANタグを挿入してもよい。
以上のようにして、同じARP要求パケットを内側L3パケットとして含む3つの外側L3パケットが、トンネル661、664、および666を介して送信される。
その結果、仮想NIC634が、ARP要求パケットを内側L3パケットとして含む外側L3パケットを、トンネル661を介して受信する。
具体的には、まず、物理サーバ651の物理NICで外側L3パケットが受信される。物理サーバ651のホストOSは、外側L3パケットの外側L3ヘッダ(具体的には外側IPヘッダ)内の「次ヘッダ(next header)」フィールドの値を参照することで、外側IPヘッダの次のヘッダのプロトコルを判断する。次ヘッダフィールドに指定されているプロトコルが、トンネリングに使われるプロトコルでなければ、ホストOSはプロトコルに応じた適宜の処理を行う。
逆に、次ヘッダフィールドに指定されているプロトコルが、トンネリングに使われるプロトコル(例えばGRE)であれば、ホストOSは、外側L3パケットを適宜の仮想NICに出力する。
具体的には、ホストOSは、外側IPヘッダに続く次ヘッダ(例えばGREヘッダ)からトンネル識別情報(例えばGREキー)を読み出し、読み出したトンネル識別情報を含むエントリを、トンネル管理DBにおいて探す。なお、実施形態によっては、ホストOSは、トンネル識別情報だけでなく、外側IPヘッダに指定されている2つのIPアドレスも検索キーとして用いてもよい。
予期せぬエラーや不正な送信がなければ、検索の結果、トンネル661に対応する1つのエントリ(つまり、トンネル661の作成のためにVNET管理部184から与えられた命令に応じて、かつてホストOSが作成したエントリ)が見つかる。ホストOSは、見つかったエントリから仮想NICの識別情報を読み出し、読み出した識別情報により識別される仮想NIC(すなわち、この例においては仮想NIC634)に、外側L3パケットを受け渡す。
以上のようにして、仮想NIC634は、トンネル661を介して外側L3パケットを受信することができる。また、この受信の際、仮想NIC634は、内側L2ヘッダの送信元MACアドレスが、(物理サーバ651内のVMのアドレスなのではなく)トンネル661を介して接続された通信相手のアドレスであることを学習する。換言すれば、仮想NIC634は、内側L2ヘッダの送信元MACアドレスと、受信した外側L3パケットのトンネルヘッダ中のトンネル識別情報(つまりトンネル661の識別情報)との対応づけを学習する。具体的には、仮想NIC634は、学習テーブルに、内側L2ヘッダの送信元MACアドレスと、外側L3パケット内のトンネル識別情報とを対応づけるエントリを追加する。
仮想NIC634は、外側L3パケットのトンネルヘッダ(例えばIPヘッダとGREヘッダを含む)を取り除く。そして、仮想NIC634は、仮想NIC634とペアになったVMであるGW623に、内側L2フレームを出力する。
ここで、GW623が受信した内側L2フレームに含まれるARP要求パケットのTPAは、GW623のIPv4アドレスである。よって、GW623は、ARP要求パケットのSPA(Sender Protocol Address)とSHA(Sender Hardware Address)のペア(つまり第1Webサーバ624のIPアドレスとMACアドレスのペア)を学習する。つまり、GW623は、SPAとSHAのペアをARPテーブルに記憶する。
また、GW623は、ARP応答(ARP reply)パケットを内側L3パケットとして含む内側L2フレームを作成する。ARP応答パケットにおいて、SPAはGW623のIPアドレスであり、SHAはGW623のMACアドレスである。また、この内側L2フレームには、送信元MACアドレスとしてGW623のMACアドレスが設定され、送信先MACアドレスとして第1Webサーバ624のMACアドレスが設定される。
GW623は、作成した内側L2フレームを仮想NIC634に出力する。よって、仮想NIC634は、内側L2フレームの送信元MACアドレスが、(トンネルを介して接続される通信相手のアドレスではなく)物理サーバ651内で仮想NIC634とペアになっているVM(つまりGW623)のアドレスであることを学習する。
また、「第1Webサーバ624のMACアドレスが、トンネル661を介して接続された通信相手のアドレスである」ということは、上記のとおり、ARP要求パケットを含む外側L3パケットの受信の際に、既に学習されている。つまり、仮想NIC634は、第1Webサーバ624のMACアドレスとトンネル661のトンネル識別情報の対応づけを学習済みである。よって、この学習結果と内側L2ヘッダ内の送信先MACアドレスに基づいて、仮想NIC634は、トンネル661のトンネル識別情報を認識する。
そして、仮想NIC634は、カプセル化に使う情報を得るために、仮想NIC634自身の識別情報と、認識したトンネル識別情報を含むエントリを、トンネル管理DBにおいて検索する。検索の結果、トンネル661に対応するエントリ(つまり、トンネル661の作成のためにVNET管理部184から与えられた命令に応じて、かつてホストOSが作成したエントリ)が見つかる。
よって、仮想NIC634は、見つかったエントリに含まれる送信先IPアドレスと送信元IPアドレスを、トンネリング用の外側IPヘッダ内に指定する。また、仮想NIC634は、認識したトンネル識別情報をトンネルヘッダ内に指定する。例えば、仮想NIC634は、内側L2ヘッダ内の送信先MACアドレスに基づいて認識したGREキーを、GREヘッダ内の「キー」フィールドに指定してもよい。
こうして仮想NIC634が生成した外側L3パケットには、物理サーバ651のホストOSによって、外側L2ヘッダが付加される。そして、外側L2フレームは物理サーバ651の物理NICから送信される。なお、外側L2ヘッダに指定される送信先MACアドレスの決定においては、近隣キャッシュが参照される。
ところで、仮想NIC627は、ARP要求パケットを内側L3パケットとして含む外側L3パケットを、トンネル664を介して受信する。この受信の際、仮想NIC627は、内側L2ヘッダの送信元MACアドレス(つまり第1Webサーバ624のMACアドレス)と、トンネル664のトンネル識別情報の対応づけを学習する。
また、仮想NIC627は、内側L2フレームを、仮想NIC627とペアになったVMであるFW626に出力する。もし既にARPテーブル内に第1Webサーバ624のIPアドレス用のエントリがあれば、FW626は、当該エントリのMACアドレスをARP要求パケットのSHAに更新する。
同様に、仮想NIC637も、ARP要求パケットを内側L3パケットとして含む外側L3パケットを、トンネル666を介して受信する。この受信の際、仮想NIC637は、内側L2ヘッダの送信元MACアドレス(つまり第1Webサーバ624のMACアドレス)と、トンネル666のトンネル識別情報の対応づけを学習する。
また、仮想NIC637は、内側L2フレームを、仮想NIC637とペアになったVMである第2Webサーバ625に出力する。もし既にARPテーブル内に第1Webサーバ624のIPアドレス用のエントリがあれば、第2Webサーバ625は、当該エントリのMACアドレスをARP要求パケットのSHAに更新する。
なお、第2Webサーバ625とFW626は、どちらも、ARP応答パケットを生成しない。一方、上記のように、ARP応答パケットを内側L3パケットとして含む外側L3パケットが、トンネル661を介して仮想NIC634から送信される。この外側L3パケットは、物理サーバ652内の仮想NIC635により受信される。
具体的には、物理サーバ652のホストOSは、受信された外側L3パケットの外側IPヘッダの「次ヘッダ」フィールドを参照する。「次ヘッダ」フィールドには、トンネリング用のプロトコルが指定されているので、ホストOSは、次に、トンネル識別情報を参照する。
そして、ホストOSは、トンネル識別情報で識別されるトンネルを表すエントリを、トンネル管理DBにおいて検索する。検索の結果、トンネル661を表すエントリが見つかる。このエントリには仮想NIC6355の識別情報が含まれるので、ホストOSは、外側L3パケットを仮想NIC635に受け渡す。
なお、こうして外側L3パケットを受信する際、仮想NIC635は、内側L2ヘッダの送信元MACアドレスと、受信した外側L3パケットのトンネルヘッダ中のトンネル識別情報との対応づけを学習する。つまり、仮想NIC635は、GW623のMACアドレスとトンネル661のトンネル識別情報との対応づけを学習する。
仮想NIC635は、外側L3パケットのトンネルヘッダ(例えばIPヘッダとGREヘッダを含む)を取り除く。そして、仮想NIC635は、仮想NIC635とペアになったVMである第1Webサーバ624に、内側L2フレームを出力する。
その結果、第1Webサーバ624は、内側L3パケットとして内側L2フレームに含まれるARP応答パケットを受信する。したがって、第1Webサーバ624は、ARP応答パケットのSPAとSHAのペア(つまりGW623のIPアドレスとMACアドレスのペア)を学習する。つまり、第1Webサーバ624は、SPAとSHAのペアをARPテーブルに記憶する。
以上のようにして、L3物理ネットワーク上のL2トンネルにより実現されるネットワーク621上での、ARPによるアドレス解決が実現される。したがって、ARP要求パケットの送信とARP応答パケットの受信により、または、ARPテーブル中の学習済みのエントリにより、第1Webサーバ624は、GW623のMACアドレスを認識することができる。
よって、上記のように第1Webサーバ624が、GW623に送信するための内側L3パケットを作成する場合において、第1Webサーバ624は、内側L2ヘッダに指定する送信先MACアドレスを決定することができる。
つまり、第1Webサーバ624は、GW623に送信しようとする内側L3パケットを含む内側L2フレームを生成することができる。この内側L2フレームには、送信先MACアドレスとしてGW623のMACアドレスが指定され、送信元MACアドレスとして第1Webサーバ624のMACアドレスが指定される。
第1Webサーバ624は、作成した内側L2フレームを仮想NIC635に出力する。ここで、仮想NIC635は、上記のとおり、ARP応答パケットを内側L3パケットとして含む外側L3パケットを受信した際に、GW623のMACアドレスとトンネル661のトンネル識別情報との対応づけを学習済みである。よって、この学習結果と内側L2ヘッダ内の送信先MACアドレスに基づいて、仮想NIC635は、トンネル661のトンネル識別情報を認識する。
そして、仮想NIC635は、仮想NIC635自身の識別情報と、認識したトンネル識別情報を含むエントリを、トンネル管理DBにおいて検索する。検索の結果、トンネル661に対応するエントリ(つまり、トンネル661の作成のためにVNET管理部184から与えられた命令に応じて、かつてホストOSが作成したエントリ)が見つかる。
よって、仮想NIC635は、見つかったエントリに含まれる送信先IPアドレスと送信元IPアドレスを、トンネリング用の外側IPヘッダ内に指定する。つまり、仮想NIC635は、MPLS網171に対応して物理サーバ651の物理NICに割り当てられているIPアドレスを送信先IPアドレスとして指定する。また、仮想NIC635は、MPLS網171に対応して物理サーバ652の物理NICに割り当てられているIPアドレスを送信元IPアドレスとして指定する。
さらに、仮想NIC635は、上記のようにして認識した、トンネル661のトンネル識別情報を、トンネルヘッダ内に指定する。例えば、仮想NIC635は、内側L2ヘッダ内の送信先MACアドレスに基づいて認識したGREキーを、GREヘッダ内の「キー」フィールドに指定してもよい。
こうして仮想NIC635が生成した外側L3パケットには、物理サーバ652のホストOSによって、外側L2ヘッダが付加される。そして、外側L2フレームは物理サーバ652の物理NICから送信される。なお、外側L2ヘッダに指定される送信先MACアドレスの決定においては、近隣キャッシュが参照される。
そして、外側L3パケットは、MPLS網171上のトンネル661を介して、物理サーバ651に到達する。物理サーバ651のホストOSは、物理NICで受信された外側L3パケットの外側IPヘッダの「次ヘッダ」フィールドを参照する。「次ヘッダ」フィールドには、トンネリング用のプロトコルが指定されているので、ホストOSは、次に、トンネル識別情報を参照する。
そして、ホストOSは、トンネル識別情報で識別されるトンネルを表すエントリを、トンネル管理DBにおいて検索する。検索の結果、トンネル661を表すエントリが見つかる。このエントリには仮想NIC634の識別情報が含まれるので、ホストOSは、外側L3パケットを仮想NIC634に受け渡す。
なお、こうして外側L3パケットを受信する際、仮想NIC634は、内側L2ヘッダの送信元MACアドレスと、外側L3パケット中のトンネル識別情報との対応づけを確認する。この対応づけは、上述のようにARP要求パケットを内側L3パケットとして含む外側L3パケットが受信されたときに既に学習されている。よって、仮想NIC634は、今回は、学習テーブルにエントリを追加する必要はない。
さて、仮想NIC634は、以上のようにして受信した外側L3パケットのトンネルヘッダ(例えばIPヘッダとGREヘッダを含む)を取り除く。そして、仮想NIC634は、仮想NIC634とペアになったVMであるGW623に、内側L2フレームを出力する。
その結果、GW623は、内側L2フレームに含まれる内側L3パケットを受信する。GW623は、内側L3パケットのペイロードに応じて、適宜の処理を実行する。
例えば以上のようにして、第1Webサーバ624は、ネットワーク621に属するGW623に内側L3パケットのデータを送信することができる。トンネルを介して接続されている他の任意の2つのVM間の通信も、同様にして実現される。
以上の説明から分かるように、VNET管理部184がステップS106またはS107で物理サーバに与える命令にしたがって物理サーバのホストOSが動作することにより、トンネルに応じて指定されるQoSでのVM間通信が実現される。換言すれば、VNET管理部184からの命令にしたがって各物理サーバのホストOSが動作することで、仮想ネットワーク内のリンク(例えばネットワーク621内のリンク631)に応じて指定されるサービスレベルでのVM間通信が実現される。
さて、図11は、サービスレベル変更処理のフローチャートである。例えば、運用中のユーザシステム620に関して、ユーザが、図8の管理画面610を介して、ユーザシステム620内のいずれかのリンクのサービスレベルを指定しなおす場合がある。この場合、ユーザが「変更」ボタン612をクリックまたはタップすると、サービスレベルの変更された新たな定義情報640が、ユーザ端末190からIaaS管理サーバ180に送信され、UI処理部181において受信される。すると、UI処理部181は新たな定義情報640を定義記憶部183に記憶する。そして、図11のサービスレベル変更処理が開始される。
ステップS201でVNET管理部184は、サービスレベルを変更するようユーザから指定されたトンネルを切断(つまり削除)するための命令を、トンネルの両端の物理サーバに与える。なお、図8に関して説明したとおり、トンネルは、定義情報640においては、トンネルの両端点たる仮想NICのペアにより指定される。
次に、ステップS202でVNET管理部184は、新たに指定されたサービスレベルに対応する物理ネットワーク上のトンネルを、トンネルの両端の仮想NIC間に開設するための命令を、トンネルの両端の物理サーバに与える。ステップS202が完了すると、サービスレベル変更処理も完了する。
なお、トンネルの両端の物理サーバは、ステップS201とS202で与えられる命令にしたがって動作する。その結果、既存のトンネルは削除され、新たなトンネルが作成される。
例えば、図8の定義情報640によれば、第1DBサーバ629と第2DBサーバ630の間のリンク633のサービスレベルは、ユーザにより、レベルCと指定されている。しかし、あるとき、ユーザが、管理画面610を介して、リンク633のサービスレベルをレベルBに指定しなおし、「変更」ボタン612をクリックまたはタップしたとする。この場合、ステップS201でVNET管理部184は、図9のトンネル667(つまりリンク633を実現するためのトンネル)を削除するための命令を、物理サーバ652と653に与える。
ここで説明の便宜上、以下のように仮定する。
・専用回線網172に対応して、物理サーバ652の物理NICに割り当てられているIPアドレスは、「2001:db8:3:6::1」である。
・MPLS網171に対応して、物理サーバ652の物理NICに割り当てられているIPアドレスは、「2001:db8:2:6::1」である。
・専用回線網172に対応して、物理サーバ653の物理NICに割り当てられているIPアドレスは、「2001:db8:3:1c::1」である。
・MPLS網171に対応して、物理サーバ653の物理NICに割り当てられているIPアドレスは、「2001:db8:2:1c::1」である。
以上のような仮定のもとでは、ステップS201でVNET管理部184は、具体的には、物理サーバ652と653に以下のような命令を与える。
すなわち、VNET管理部184は、「2001:db8:3:6::1」というIPアドレスと仮想NIC636との対応づけを解消するよう、物理サーバ652に命令する。換言すれば、VNET管理部184は、第1DBサーバ629から出力されるL2フレームをカプセル化する際に「2001:db8:3:6::1」と「2001:db8:3:1c::1」というIPアドレスを使うのをやめるよう物理サーバ652に命令する。
同様に、VNET管理部184は、「2001:db8:3:1c::1」というIPアドレスと仮想NIC638との対応づけを解消するよう、物理サーバ653に命令する。換言すれば、VNET管理部184は、第2DBサーバ630から出力されるL2フレームをカプセル化する際に「2001:db8:3:1c::1」と「2001:db8:3:6::1」というIPアドレスを使うのをやめるよう物理サーバ653に命令する。
なお、上記の命令にしたがい、物理サーバ652のホストOSは、上記2つのIPアドレスとトンネル667の識別情報と仮想NIC636の識別情報とを対応づけるエントリをトンネル管理DBから削除する。同様に、物理サーバ653のホストOSも、上記2つのIPアドレスとトンネル667の識別情報と仮想NIC638の識別情報とを対応づけるエントリをトンネル管理DBから削除する。
また、ステップS202は、ステップS106やS107と類似である。ただし、ステップS202でVNET管理部184は、ステップS201で削除を命令したトンネル667用のトンネル識別情報を、レベルBでリンク633を実現するための新たなトンネル用のトンネル識別情報として使ってもよい。あるいは、VNET管理部184は、未使用のトンネル識別情報を、新たなトンネル用のトンネル識別情報として使ってもよい。
いずれにせよ、VNET管理部184は、物理サーバ652に、送信元IPアドレスと送信先IPアドレスとして「2001:db8:2:6::1」と「2001:db8:2:1c::1」をそれぞれ通知する。また、VNET管理部184は、上記のように決めたトンネル識別情報と、物理サーバ652上のトンネル端点である仮想NIC636の識別情報も、物理サーバ652に通知する。
同様に、VNET管理部184は、物理サーバ653に、送信元IPアドレスと送信先IPアドレスとして「2001:db8:2:1c::1」と「2001:db8:2:6::1」をそれぞれ通知する。また、VNET管理部184は、上記のように決めたトンネル識別情報と、物理サーバ653上のトンネル端点である仮想NIC638の識別情報も、物理サーバ653に通知する。
なお、上記の命令にしたがい、物理サーバ652のホストOSは、上記2つのIPアドレスとトンネル識別情報と仮想NIC636の識別情報とを対応づけるエントリをトンネル管理DBに追加する。同様に、物理サーバ653のホストOSも、上記2つのIPアドレスとトンネル識別情報と仮想NIC638の識別情報とを対応づけるエントリをトンネル管理DBに追加する。その結果、ステップS106またはS107の場合と同様にして、新たなトンネルが作成される。
なお、仮想L2ネットワーク(例えばネットワーク622)の1本のリンク(例えばリンク633)を実現するためのトンネルが同時に2つ存在する状態を避けるためには、上記のように、既存トンネルの削除を新規トンネルの作成より先に実行することが好ましい。
さて、図12は、実施形態におけるトンネルの変更の例を示す図である。図12は、具体的には、図9における専用回線網172上のトンネル667が削除されて、新たにMPLS網171上のトンネル670が作成される例を示している。この例は、図11に関して上述した具体例に相当する。
つまり、図12は、第1DBサーバ629と第2DBサーバ630の間のリンク633のサービスレベルが、レベルCからレベルBに変更される例を示す。このような変更は、具体的には、上述の図11の処理の結果として実現される。トンネル667がトンネル670に置き換えられた後の、第1DBサーバ629と第2DBサーバ630の間の通信は、MPLS網171上のトンネル670を介して行われる。
ところで、本発明は上記実施形態に限られるものではない。上記の説明においてもいくつかの変形について説明したが、上記実施形態は、さらに例えば下記の観点から様々に変形することもできる。上記および下記の変形は、相互に矛盾しない限り、任意に組み合わせることが可能である。
物理ネットワークの数と種類は実施形態に応じて適宜決められてよい。例えば、ATM網および/またはフレームリレー網が使われてもよいし、2つ以上の専用回線網が使われてもよい。
図1に例示されている物理サーバは、ラックマウント型サーバ(rack-mount server)である。しかし、もちろん、ブレード型サーバ(blade server)が使われてもよい。例えば、1つのシャーシの中に、1つのスイッチブレードと、スイッチブレードに接続される複数のCPUブレードが含まれていてもよい。この場合、スイッチブレードが図1におけるToRに相当する。
1台のラック内には、上記のようなシャーシが複数あってもよい。この場合、各物理ネットワークのエッジスイッチには、1台のラック内の複数のスイッチブレードが接続されていてもよい。このようなエッジスイッチは、集約スイッチ(aggregation switch)とも呼ばれる。
ところで、場合によっては、2台の物理サーバ間は、同一の物理ネットワーク上の複数のトンネルで接続され得る。これら複数のトンネルは、トンネル識別情報により互いに区別されてもよい。しかし、トンネル識別情報を使わない実施形態も可能である。そのような実施形態では、最下位の(least significant)いくつかのビットのみが異なるいくつかのIPアドレスが、1つの物理ネットワークに対応して1枚の物理NICに割り当てられてもよい。
例えば、図9では、第1Webサーバ624と第2Webサーバ625が異なる物理サーバ上に配置されている。しかし、第1Webサーバ624と第2Webサーバ625がともに物理サーバ652に配置されてもよい。
この場合、GW623と第1Webサーバ624の間のリンクが物理サーバ651と652の間のトンネルにより実現され、GW623と第2Webサーバ625のリンクも、物理サーバ651と652の間の別のトンネルにより実現される。よって、この場合、物理サーバ651から送信されてきたデータを物理サーバ652が受信したときに、第1Webサーバ624と第2Webサーバ625のどちらに内側L2フレームを出力するかを適切に決めるための、何らかの仕組みが使われる。その仕組みの一例は、上記のとおりトンネル識別情報を含むトンネル管理DBである。しかし、トンネル識別情報の代わりに、1つの物理ネットワークに対応する複数のIPアドレスが利用されてもよい。
例えば、物理サーバ652の物理NICには、MPLS網171のプレフィックスから始まる少なくとも2つのIPアドレスが割り当てられていてもよい。もちろん、物理サーバ652の物理NICには、ベストエフォートIPルータ網170のプレフィックスから始まる1つ以上のIPアドレスと、専用回線網172のプレフィックスから始まる1つ以上のIPアドレスも割り当てられる。
第1Webサーバ624に対応して物理サーバ652のホストOS内に作られる仮想NIC635は、MPLS網171のプレフィックスから始まる上記の少なくとも2つのIPアドレスのうちの1つに対応づけられてもよい。また、第2Webサーバ625に対応して物理サーバ652のホストOS内に作られる仮想NICは、上記の少なくとも2つのIPアドレスのうちの別の1つに、対応づけられてもよい。
このように、1つの物理ネットワークに対応して2つ以上のIPアドレスが物理NICに割り当てられる場合、物理サーバのトンネル管理DB内の各エントリは、IPアドレスのペアと、ホストOS内の仮想NICの識別情報とを含むだけでも十分である。つまり、トンネル識別情報は必須ではない。なぜなら、トンネル識別情報がなくても、IPアドレスによってトンネル同士を区別することが可能だからである。
また、このようにトンネル識別情報を使わない実施形態の場合、VNET管理部184が、トンネルごとに、上記の少なくとも2つのIPアドレスの中から適宜のIPアドレスを1つ選んで、選んだIPアドレスを物理サーバに対して通知する。例えば、上記の例の場合、VNET管理部184は、以下の2つのIPアドレスが異なるように、ステップS106またはS107で、トンネルごとにIPアドレスを適宜選ぶ。
・GW623と第1Webサーバ624の間の、MPLS網171上のトンネル用に使う、物理サーバ652の物理NICのIPアドレス。
・GW623と第2Webサーバ625の間の、MPLS網171上のトンネル用に使う、物理サーバ652の物理NICのIPアドレス。
以上のように、トンネル識別情報が使われるか否かは、実施形態による。
ところで、IaaS管理サーバ180は、VMのマイグレーション(例えば、ライブ・マイグレーション)に応じて、トンネルを削除および再作成するための命令を適宜の物理サーバに与える。VMのマイグレーションは、VM管理部182により制御される。
例えば、第1の物理サーバ上の第1のVMと、第2の物理サーバ上の第2のVMとの間にトンネルが存在する場合に、VM管理部182が第1のVMを第3の物理サーバに移動させる(migrate)ことに決めたとする。この場合、VNET管理部184は、第1と第2の物理サーバに命令を与えることにより、既存のトンネルを削除し、第2と第3の物理サーバに命令を与えることにより、新たなトンネルを作成する。既存のトンネルの削除のための処理はステップS201と類似であり、新たなトンネルの作成のための処理は、ステップS202と類似である。
以上説明した種々の実施形態によれば、VM間でエンド・ツー・エンドにQoSを保てる。また、ユーザにとっては、いくつかの選択肢の中から、所望のサービスレベルを選択することが可能である。しかも、ある2つのVM間のリンクに対してユーザが望むサービスレベルが変化した場合にも、図11〜12に示すように、その変化に応じて柔軟にトンネルの削除と再作成が行われる。
さらに、上記のとおり、第1比較例や第2比較例と比べて、実施形態は、様々な点で優れている。例えば、実施形態には、金銭的コスト、システムの可用性および拡張性、管理の手間、初期投資などの様々な面で利点がある。そのため、IaaS事業者は、サービスレベルのメニューに、柔軟に選択肢を増やすことが可能である。その結果、ユーザは、増えた選択肢の中から希望に応じて適宜のサービスレベルを選択することができるから、ユーザの満足度も向上すると期待される。
最後に、上記の種々の実施形態に関して、さらに下記の付記を開示する。
(付記1)
コンピュータに、
異なる物理マシン上で動作する仮想マシン同士を、特定のサービス品質に対応するレイヤ2トンネルを介して接続するためのトンネル接続命令であって、各々が1つ以上のサービス品質をサポートする複数の物理ネットワークに第1の物理ネットワークインタフェイス装置を介して接続される第1の物理マシン上で動作する第1の仮想マシンと、前記複数の物理ネットワークに第2の物理ネットワークインタフェイス装置を介して接続される第2の物理マシン上で動作する第2の仮想マシンとを接続するためのトンネル接続命令を受け付け、
前記第1の物理マシンに対して、前記第1の仮想マシンが前記第2の仮想マシンへ送信しようとする第1のレイヤ2フレームを第1のレイヤ3パケットの中にカプセル化する際には、前記第1の物理ネットワークインタフェイス装置に割り当てられている複数のアドレスのうち、前記特定のサービス品質をサポートする特定の物理ネットワークに対応する第1のアドレスと、前記第2の物理ネットワークインタフェイス装置に割り当てられている複数のアドレスのうち、前記特定の物理ネットワークに対応する第2のアドレスとを使うように命令し、
前記第2の物理マシンに対して、前記第2の仮想マシンが前記第1の仮想マシンへ送信しようとする第2のレイヤ2フレームを第2のレイヤ3パケットの中にカプセル化する際には、前記第2のアドレスと前記第1のアドレスとを使うように命令する
ことを含む処理を実行させることを特徴とする管理プログラム。
(付記2)
前記処理は、前記レイヤ2トンネルを識別するトンネル識別情報を生成または決定して、前記トンネル識別情報を前記第1の物理マシンと前記第2の物理マシンに通知することをさらに含み、
前記第1のレイヤ3パケットは、カプセル化された前記第1のレイヤ2フレームより前に前記トンネル識別情報を含み、
前記第2のレイヤ3パケットは、カプセル化された前記第2のレイヤ2フレームより前に前記トンネル識別情報を含む
ことを特徴とする付記1に記載の管理プログラム。
(付記3)
前記第1の物理マシンに対して、前記第1の物理ネットワークインタフェイス装置と前記第1の仮想マシンとの間に前記第1の物理マシンが提供する第1の仮想インタフェイスを、前記第1のアドレスと前記第2のアドレスと前記トンネル識別情報との組み合わせに対応づけるよう命令することで、前記第2のレイヤ3パケットを前記第1の物理ネットワークインタフェイス装置が受信した場合には、前記第1の物理マシンが前記第1の仮想インタフェイスを介して前記第2のレイヤ2フレームを前記第1の仮想マシンに出力するようにさせ、
前記第2の物理マシンに対して、前記第2の物理ネットワークインタフェイス装置と前記第2の仮想マシンとの間に前記第2の物理マシンが提供する第2の仮想インタフェイスを、前記第2のアドレスと前記第1のアドレスと前記トンネル識別情報との組み合わせに対応づけるよう命令することで、前記第1のレイヤ3パケットを前記第2の物理ネットワークインタフェイス装置が受信した場合には、前記第2の物理マシンが前記第2の仮想インタフェイスを介して前記第1のレイヤ2フレームを前記第2の仮想マシンに出力するようにさせる
ことを前記処理がさらに含むことを特徴とする付記2に記載の管理プログラム。
(付記4)
前記第1の物理ネットワークインタフェイス装置に割り当てられている前記複数のアドレスの各々は、各物理ネットワークに対応するプレフィックスから始まるIP(Internet Protocol)バージョン6アドレスであり、
前記第2の物理ネットワークインタフェイス装置に割り当てられている前記複数のアドレスの各々は、各物理ネットワークに対応する前記プレフィックスから始まるIPバージョン6アドレスである
ことを特徴とする付記1から3のいずれか1項に記載の管理プログラム。
(付記5)
前記トンネル接続命令は、どのサービス品質に対応するレイヤ2トンネルもまだ前記第1の仮想マシンと前記第2の仮想マシンの間に作成されていないときに、前記特定のサービス品質に対応する前記レイヤ2トンネルを新たに作成するための命令である
ことを特徴とする付記1から4のいずれか1項に記載の管理プログラム。
(付記6)
前記トンネル接続命令は、前記第1の仮想マシンと前記第2の仮想マシンの間に作成済みの、前記特定のサービス品質とは異なる別のサービス品質に対応する別のレイヤ2トンネルを、前記特定のサービス品質に対応する前記レイヤ2トンネルに置き換えるための命令である
ことを特徴とする付記1から4のいずれか1項に記載の管理プログラム。
(付記7)
前記複数の物理ネットワークの中で前記別のサービス品質をサポートしており前記特定の物理ネットワークとは異なる別の物理ネットワークに対応して前記第1の物理ネットワークインタフェイス装置に割り当てられている第3のアドレスと、前記別の物理ネットワークに対応して前記第2の物理ネットワークインタフェイス装置に割り当てられている第4のアドレスを、前記第1の仮想マシンが前記第2の仮想マシンへ送信しようとするレイヤ2フレームのカプセル化において使用することをやめるように、前記第1の物理マシンに命令するとともに、
前記第2の仮想マシンが前記第1の仮想マシンへ送信しようとするレイヤ2フレームのカプセル化において、前記第4のアドレスと前記第3のアドレスを使用することをやめるように、前記第2の物理マシンに命令する
ことを前記処理がさらに含むことを特徴とする付記6に記載の管理プログラム。
(付記8)
前記第1の仮想マシンと前記第2の仮想マシンを含み、かつ、1つの仮想ネットワークに属している複数の仮想マシンのうちの2つの仮想マシンの各ペアについて、当該2つの仮想マシン間を接続するためのレイヤ2トンネルのサービス品質を指定するためのネットワーク設定命令を受け付けることを、前記処理は含んでおり、
前記トンネル接続命令は、前記ネットワーク設定命令の中に含まれており、
前記トンネル接続命令を受け付ける処理は、前記ネットワーク設定命令を受け付ける処理に含まれる
ことを特徴とする付記1から7のいずれか1項に記載の管理プログラム。
(付記9)
異なる物理マシン上で動作する仮想マシン同士を、特定のサービス品質に対応するレイヤ2トンネルを介して接続するためのトンネル接続命令であって、各々が1つ以上のサービス品質をサポートする複数の物理ネットワークに第1の物理ネットワークインタフェイス装置を介して接続される第1の物理マシン上で動作する第1の仮想マシンと、前記複数の物理ネットワークに第2の物理ネットワークインタフェイス装置を介して接続される第2の物理マシン上で動作する第2の仮想マシンとを接続するためのトンネル接続命令を受け付ける受け付け手段と、
第1の命令を前記第1の物理マシンに送信するとともに、第2の命令を前記第2の物理マシンに送信する送信手段を備え、
前記第1の命令は、前記第1の物理マシンに対して、前記第1の仮想マシンが前記第2の仮想マシンへ送信しようとする第1のレイヤ2フレームを第1のレイヤ3パケットの中にカプセル化する際には、前記第1の物理ネットワークインタフェイス装置に割り当てられている複数のアドレスのうち、前記特定のサービス品質をサポートする特定の物理ネットワークに対応する第1のアドレスと、前記第2の物理ネットワークインタフェイス装置に割り当てられている複数のアドレスのうち、前記特定の物理ネットワークに対応する第2のアドレスとを使うように命ずる命令であり、
前記第2の命令は、前記第2の物理マシンに対して、前記第2の仮想マシンが前記第1の仮想マシンへ送信しようとする第2のレイヤ2フレームを第2のレイヤ3パケットの中にカプセル化する際には、前記第2のアドレスと前記第1のアドレスとを使うように命ずる命令である
ことを特徴とする管理装置。
(付記10)
ネットワークシステムであって、
各々が1つ以上のサービス品質をサポートする複数の物理ネットワークに接続された第1の通信装置と、
前記複数の物理ネットワークに接続された第2の通信装置と、
第1の物理マシンであって、
前記複数の物理ネットワークに対応して複数のアドレスが割り当てられており、かつ、前記第1の通信装置に接続される、第1の物理ネットワークインタフェイス装置と、
第1の仮想マシンを実行し、前記第1の仮想マシンが第2の仮想マシンへ送信しようとする第1のレイヤ2フレームを第1のレイヤ3パケットの中にカプセル化し、前記第1のレイヤ3パケットを前記第1の物理ネットワークインタフェイス装置に送信させる第1のプロセッサと、
前記第1のレイヤ2フレームのカプセル化において用いられる第1の送信元アドレスと第1の送信先アドレスを記憶する第1の記憶装置を備える第1の物理マシンと、
第2の物理マシンであって、
前記複数の物理ネットワークに対応して複数のアドレスが割り当てられており、かつ、前記第2の通信装置に接続される、第2の物理ネットワークインタフェイス装置と、
前記第2の仮想マシンを実行し、前記第2の仮想マシンが前記第1の仮想マシンへ送信しようとする第2のレイヤ2フレームを第2のレイヤ3パケットの中にカプセル化し、前記第2のレイヤ3パケットを前記第2の物理ネットワークインタフェイス装置に送信させる第2のプロセッサと、
前記第2のレイヤ2フレームのカプセル化において用いられる第2の送信元アドレスと第2の送信先アドレスを記憶する第2の記憶装置を備える第2の物理マシンと、
前記第1の物理マシンおよび前記第2の物理マシンと通信可能な管理コンピュータであって、
前記第1の仮想マシンと前記第2の仮想マシンを、特定のサービス品質に対応するレイヤ2トンネルを介して互いに接続するためのトンネル接続命令を受け付ける入力装置または受信装置と、
前記第1の物理ネットワークインタフェイス装置の前記複数のアドレスのうち、前記特定のサービス品質をサポートする特定の物理ネットワークに対応する第1のアドレスと、前記第2の物理ネットワークインタフェイス装置の前記複数のアドレスのうち、前記特定の物理ネットワークに対応する第2のアドレスを、前記第1の送信元アドレスと前記第1の送信先アドレスとしてそれぞれ指定する第1の設定情報を、前記第1の物理マシンに送信するとともに、前記第2のアドレスと前記第1のアドレスを前記第2の送信元アドレスと前記第2の送信先アドレスとしてそれぞれ指定する第2の設定情報を、前記第2の物理マシンに送信する送信装置を備える管理コンピュータ
を備えることを特徴とするネットワークシステム。
(付記11)
前記第1の物理マシンが前記第1のレイヤ3パケットを前記第1の通信装置に送信する際に、前記第1のプロセッサは、前記特定のサービス品質に対応する特定の優先度を示す特定の値を指定した第1のレイヤ2ヘッダを、前記第1のレイヤ3パケットの前に付加し、
前記第2の物理マシンが前記第2のレイヤ3パケットを前記第2の通信装置に送信する際に、前記第2のプロセッサは、前記特定の値を指定した第2のレイヤ2ヘッダを、前記第2のレイヤ3パケットの前に付加する
ことを特徴とする付記10に記載のネットワークシステム。
(付記12)
前記第1のレイヤ2ヘッダは、前記特定の値の指定された第1のVLAN(Virtual Local Area Network)タグを含み、
前記第2のレイヤ2ヘッダは、前記特定の値の指定された第2のVLANタグを含む
ことを特徴とする付記11に記載のネットワークシステム。
(付記13)
前記第1のVLANタグは、前記特定のサービス品質または前記特定の物理ネットワークに対応する特定のVLAN識別子をさらに含み、
前記第2のVLANタグも、前記特定のVLAN識別子をさらに含む
ことを特徴とする付記12に記載のネットワークシステム。
(付記14)
前記特定の物理ネットワークが、前記特定のサービス品質を含む2つ以上のサービス品質をサポートしている場合、前記第1のレイヤ3パケットに含まれる、サービス品質に関わる第1のフィールドが、前記第1のレイヤ3パケットの送信中に参照されるか、または、前記第1のレイヤ3パケットの送信の前に、前記特定の物理ネットワークを介して、前記特定のサービス品質を指定する第1のシグナリング情報が送信され、
前記特定の物理ネットワークが、前記特定のサービス品質を含む前記2つ以上のサービス品質をサポートしている場合、前記第2のレイヤ3パケットに含まれる、サービス品質に関わる第2のフィールドが、前記第2のレイヤ3パケットの送信中に参照されるか、または、前記第2のレイヤ3パケットの送信の前に、前記特定の物理ネットワークを介して、前記特定のサービス品質を指定する第2のシグナリング情報が送信される
ことを特徴とする付記10から13のいずれか1項に記載のネットワークシステム。