【実施例1】
【0019】
以下の実施例1では、
図1を用いて、マルチテナントシステムの一例を説明する。
図1は、マルチテナントシステムを説明する図である。
図1に示す例では、マルチテナントシステム1は、LAN(Local Area Network)2、4、6、ファブリック3、5、7、ネットワーク8、管理サーバ10を有する。
【0020】
ここで、LAN2は、サーバ2a、2bを有する。また、LAN4は、サーバ4a、4bを有する。また、LAN6は、サーバ6a、6bを有する。また、ファブリック3は、スイッチ3aを有する。また、ファブリック5は、スイッチ5aを有する。また、ファブリック7は、スイッチ7aを有する。
【0021】
なお、以下の説明では、サーバ2b、サーバ4a、サーバ4b、サーバ6a、サーバ6bは、サーバ2aと同様の機能を発揮するものとして、説明を省略する。また、スイッチ5a、スイッチ7aは、スイッチ3aと同様の機能を発揮するものとして、説明を省略する。
【0022】
サーバ2aは、仮想マシン(VM:Virtual Machine)を稼動させる情報処理装置である。詳細には、サーバ2aは、CPU(Central Processing Unit)とメモリと通信制御を行う通信制御部とを有し、VMの制御を行うハイパーバイザを動作させ、ハイパーバイザ上で1つ以上のVMを稼動させる。
【0023】
ファブリック3は、1つ以上のスイッチを有するスイッチの集合体であり、各サーバ2a、2b、4a、4b、6a、6b上で稼動するVMからは、ファブリック3全体で1つのスイッチとして識別される。なお、
図1では、理解を容易にするため、ファブリック3が有するスイッチのうち、スイッチ3aのみを記載した。また、
図1に示す例では、スイッチ3aは、サーバ2a、2b、およびネットワーク8と直接接続されたスイッチであるが、実施例はこれに限定されるものではない。
【0024】
例えば、スイッチ3aは、直接サーバ2a、2bと接続されていなくともよく、ネットワーク8に直接接続されていなくともよい。すなわち、マルチテナントシステム1においては、ファブリック3に含まれる任意のスイッチにスイッチ3aの機能を発揮させることとしてよい。
【0025】
スイッチ3aは、VXLAN(Virtual Extensible Local Area Network)の技術を利用して、ネットワーク8を介して転送するパケットの終端処理を行う終端装置である。例えば、スイッチ3aは、サーバ2a、サーバ2b、サーバ4a、サーバ4b、サーバ6a、サーバ6bが稼動させるVMが送受信するパケットの転送を行う。例えば、スイッチ3aは、サーバ2a上で稼動するVMが、サーバ2b上で稼動するVMに対して送信したパケットを受信すると、受信したパケットをサーバ2bに転送する。
【0026】
また、スイッチ3aは、サーバ2a上で稼動するVMが、サーバ4a上で稼動するVMに対して送信したパケットを受信すると、受信したパケットをカプセル化する。そして、スイッチ3aは、ネットワーク8を介して、カプセル化したパケットをスイッチ5aに転送する。また、スイッチ3aは、ネットワーク8を介して、カプセル化したパケットを受信すると、受信したパケットのカプセル化を解除し、カプセル化を解除したパケットをサーバ2a、またはサーバ2bに出力する。
【0027】
また、スイッチ3aは、管理サーバ10から配信される変換情報を用いて、パケットのカプセル化、およびカプセル化の解除を行う。詳細には、スイッチ3aは、サーバ2a、2b内で稼動するVMに対して割り当てられたVNI(Visual Network Identifier)とVLAN(Virtual Local Area Network)の番号とが対応付けられた変換情報を管理サーバ10から受信する。
【0028】
そして、スイッチ3aは、サーバ2a、2bから、送信元となるVMに割り当てられたVLAN番号を含む内部ヘッダが付与されたパケットを受信する。すると、スイッチ3aは、内部ヘッダに含まれたVLAN番号と対応付けられたVNIを変換情報から取得し、取得したVNIを含む外部ヘッダをパケットに付加することで、パケットをカプセル化する。そして、スイッチ3aは、ネットワーク8を介して、カプセル化したパケットをスイッチ5a、またはスイッチ7aへ送信する。
【0029】
一方、スイッチ3aは、ネットワーク8を介して、カプセル化したパケットを受信すると、受信したパケットの外部ヘッダに含まれるVNIと対応付けられたVLAN番号を変換情報から取得する。そして、スイッチ3aは、外部ヘッダを削除すると、内部ヘッダに格納されたVLAN番号を、変換情報から取得したVLAN番号に変換する。そして、スイッチ3aは、VLAN番号を変換したパケットをサーバ2a、またはサーバ2bに出力する。
【0030】
ここで、
図2を用いて、スイッチ3aがネットワーク8を介して送受信するパケットのフォーマットについて説明する。
図2は、ネットワークを流れるパケットのフレームフォーマットの一例を説明する図である、
図2に示すように、ネットワーク8を流れるパケットは、アウターヘッダとインナーヘッダとがデータに付与されたフォーマットを有する。
【0031】
詳細には、
図2中の「Data」とは、パケットに格納されるデータである。また、インナーヘッダとは、各LAN2、4、6内でパケットの送受信を行う際に利用される情報が格納されたヘッダである。具体的には、インナーヘッダには、「Inner DA(Destination Address)」、「Inner SA(Source Address)」、「C-tag[802.1Q]」が含まれる。また、インナーヘッダには、「IPv(Internet Protocol version)4 Header」、「UDP(User Datagram Protocol)/TCP(Transmission Control Protocol) Header」が含まれる。
【0032】
ここで、「Inner DA(Destination Address)」には、送信先のVMの仮想MACアドレスが格納され、「Inner SA(Source Address)」には、送信元のVMの仮想MACアドレスが格納される。また、「C-tag[802.1Q]」とは、VLAN番号を含むVLANタグである。また、「IPv4 Header」は、IPパケットのヘッダ、つまりVMが出力するパケットのIPヘッダであり、「UDP/TCP Header」は、VMが出力するパケットのUDP/TCPヘッダである。
【0033】
一方、アウターヘッダとは、ネットワーク8を介してパケットを送受信する際に用いるヘッダである。すなわち、スイッチ3aは、アウターヘッダを付加してパケットをカプセル化し、カプセル化したパケットを転送することで、ネットワーク8上に仮想的なネットワークであるオーバーレイネットワークを形成する。
【0034】
例えば、
図2に示す例では、アウターヘッダには「Outer DA」、「Outer SA」、「C-Tag[802.1Q]」、「Ether Type」、「IPv4Header」、「UDP Header」、「VXLAN Header」が含まれる。ここで、「Outer DA」とは、ネットワーク8においてパケットを送受信する際に用いる送信先のMACアドレスであり、「Outer SA」とは、ネットワーク8においてパケットを送受信する際に用いる送信元のMACアドレスである。また、「C-Tag[802.1Q]」とは、外部VLAN番号を含むタグである。また、「IPv4Header」、および「UDP Header」とは、ネットワーク8においてパケットの送受信する際に用いるIPヘッダ、およびUDPヘッダである。
【0035】
また、「VXLAN Header」とは、VXLANによるパケットの転送を行う際に用いる情報であり、送信元、および送信先のVMに付与されたVNIが格納される。詳細には、「VXLAN Header」は、
図2に示すように、8ビットのフラグ「RRRRIRRR」、24ビットの「Reserved」、24ビットの「VNI」、8ビットの「Reserved」を有する。ここで、「Reserved」とは、予備領域であり、「VNI」とは、各VMに割り当てられた24ビットのVNIが格納される領域である。
【0036】
例えば、スイッチ3aは、データにインナーヘッダが付加されたパケットをサーバ2aから受信すると、受信したパケットのインナーヘッダに含まれるVLANタグに格納されたVLAN番号を取得する。そして、スイッチ3aは、管理サーバ10から配布された変換情報に、インナーヘッダから取得したVLAN番号と対応付けられたVNIを取得する。その後、スイッチ3aは、取得したVNIを「VXLAN Header」に格納したアウターヘッダを付加してパケットをカプセル化し、カプセル化したパケットをネットワーク8に出力する。
【0037】
また、スイッチ3aは、カプセル化したパケットを受信すると、受信したパケットのアウターヘッダに含まれる「VXLAN Header」からVNIを取得し、取得したVNIと対応付けられたVLAN番号を変換情報から取得する。そして、スイッチ3aは、カプセル化されたパケットのアウターヘッダを削除すると、インナーヘッダのVLANタグに格納されたVLAN番号を、変換情報から取得したVLAN情報に変換し、変換後のパケットをサーバ2a、またはサーバ2bに出力する。
【0038】
図1に戻って、管理サーバ10は、マルチテナントシステム1が有するVM、および各スイッチ3a、5a、7aの管理を行う管理装置である。具体的には、管理サーバ10は、マルチテナントシステム1上で稼動する全てのVMのうち、VMを使用するテナントを示すVNIを割り当てる。
【0039】
また、管理サーバ10は、スイッチごとに、スイッチが設置されたLAN内でVMを使用するテナントを示すVLAN番号を選択する。そして、管理サーバ10は、特定したスイッチごとに、VMに割り当てたVNIと選択したVLAN番号とを対応付けた変換情報を生成し、生成した変換情報を特定したスイッチに配布する。
【0040】
以下、管理サーバ10が実行する処理の一例を説明する。なお、以下の説明では、あるテナントが使用するVMがサーバ2a、サーバ2b、およびサーバ4aで稼動する例について説明する。例えば、管理サーバ10は、同一のテナントが使用するVMに1つのVNI「A」を割り当てる。次に、管理サーバ10は、VMが稼動するLAN2およびLAN4で終端処理を行うスイッチ3a、およびスイッチ5aを特定する。
【0041】
次に、管理サーバ10は、LAN2内でVMを使用するテナントを示すVLAN番号「B」を選択し、LAN3内でVMを使用するテナントを示すVLAN「C」を選択する。ここで、管理サーバ10は、VLAN番号「B」とVLAN番号「C」とを同じ値にしてもよく、異なる値にしてもよい。つまり、管理サーバ10は、各スイッチ3a、5a、7aが終端処理を行うLANごとに、VMを使用するテナントを示すVLAN番号を選択する。
【0042】
このため、管理サーバ10は、同一のテナントが使用するVMであっても、LAN2内で稼動するVMとLAN4内で稼動するVMとに異なるVLAN番号を付与する場合がある。その後、管理サーバ10は、VNI「A」とVLAN番号「B」とを対応付けた変換情報をスイッチ3aに配信し、VNI「A」とVLAN番号「C」とを対応付けた変換情報をスイッチ5aに配信する。この結果、管理サーバ10は、マルチテナントシステム1全体で利用可能なVNIの数がVLAN番号の数に制限されるのを防ぐことができる。
【0043】
以下、
図3を用いて、管理サーバ10が実行する処理の効果を説明する。ここで、
図3は、管理サーバが実行する処理の一例を説明する図である。マルチテナントシステム1上で稼動する全てのVMには、VMを使用するテナントを示すVNIが割り当てられている。また、マルチテナントシステム1上で稼動する全てのVMには、スイッチ3a、5a、7aごとに、VMを使用するテナントを示すVLAN番号が付与されている。すなわち、
図3に示すように、LAN2、LAN4、LAN6は、それぞれ独立したVLANを有し、各VMには、各VLANごとに独立して選択されたVLAN番号が付与されている。
【0044】
また、ファブリック3は、LAN2が有するVLANが送受信するパケットの終端処理を行うスイッチ3a、すなわちVTEP(Virtual Tunnel End Point)#1を有する。また、ファブリック5は、LAN4が有するVLANが送受信するパケットの終端処理を行うスイッチ5a、すなわちVTEP#2を有する。また、ファブリック7は、LAN6が有するVLANが送受信するパケットの終端処理を行うスイッチ7a、すなわちVTEP#3を有する。
【0045】
そして、管理サーバ10は、各VTEP#1〜#3ごとに、終端処理を行うVLAN上で利用するVLAN番号とVNIとを対応付けた変換情報をVTEP#1〜#3へ配信する。詳細には、管理サーバ10は、VTEP#1が終端処理を行うVLANのVLAN番号をVNIに変換する変換情報をVTEP#1へ配信し、VTEP#2が終端処理を行うVLANのVLAN番号をVNIに変換する変換情報をVTEP#2へ配信する。また、管理サーバ10は、VTEP#3が終端処理を行うVLANのVLAN番号をVNIに変換する変換情報をVTEP#3へ配信する。
【0046】
この結果、マルチテナントシステム1において、各VMに付与されるVNIとVLAN番号との関係は、
図4に示すようにマッピングされる。
図4は、実施例1に係るマルチテナントシステムの効果の一例を説明する図である。例えば、ネットワーク8上に設定されるオーバーレイネットワークでは、24ビットのVNIを用いたパケット通信が行われるため、約16M(メガ)個のオーバーレイドメインが設定可能である。また、各VTEP#1〜#3が終端処理を行うVLANには、4096個のドメインが設定可能である。なお、理解を容易にするため、
図4に示す例では、各VLANに4000個のドメインを設定する例について記載した。
【0047】
ここで、マルチテナントシステム1では、各VTEP#1〜#3が終端処理を行うVLANごとに独立してVLAN番号を選択する。そして、各VTEP#1〜#3ごとに、VNIとVLAN番号との変換情報を生成し、生成した変換情報を用いて、VLAN番号とVNIとの変換を行う。この結果、マルチテナントシステム1では、
図4に示すように、1つのVNIに対して、VMを配置するVLANごとに独立したVLAN番号をマッピングする。
【0048】
つまり、マルチテナントシステム1では、各VLAN内でVMに割り当てるVLAN番号をマルチテナントシステム1全体で共通化せず、各VLANごとに独立して設定する。このため、VNIに対してVLANをマッピングする位置は、VLANごとに自由な位置にマッピング可能となる。この結果、マルチテナントシステム1では、使用可能なVNIの数がVLANの数に制限されるのを防ぐことができる。
【0049】
例えば、サーバ2a、2b、4a上で同一のテナントが使用するVMが稼動する場合は、各サーバ2a、2b、4a上で稼動するVMに対して、同一のVNIが割り当てられる。また、サーバ2a、2b上で稼動するVMに対しては、同一のVLAN番号が割り当てられ、サーバ4a上で稼動するVMに対しては、サーバ2a、2b上で稼動するVMとは異なるVLAN番号が割り当てられる。
【0050】
そして、管理サーバ10は、マルチテナントシステム1全体で割り当てたVNIと、各スイッチ3a、5a、7aごとに選択したVLAN番号とを対応付けた変換情報を、各スイッチ3a、5a、7aごとに生成する。その後、管理サーバ10は、生成した変換情報を各スイッチ3a、5a、7aへ配信する。このため、各スイッチ3a、5a、7aは、マルチテナントシステム1全体で割り当てたVNIと、各LAN2、4、6ごとに選択されたVLAN番号との変換を行うことができる。この結果、マルチテナントシステム1は、使用可能なVNIの数が制限されるのを防ぐことができる。
【0051】
なお、マルチテナントシステム1では、1つのテナントが使用するVMに対して複数のVNIを付与する場合がある。このような場合にも、マルチテナントシステム1は、各VMに付与されたVNIに応じて、各LAN3、4、6内で稼動するVMにVLAN番号を付与することとなる。
【0052】
次に、
図5を用いて、管理サーバ10が有する機能構成について説明する。
図5は、管理サーバの機能構成の一例を説明する図である。
図5に示す例では、管理サーバ10は、VTEP位置DB(Database)11、VM位置DB12、VM仮想ネットワークDB13、VLANプール14、割り当て数管理DB15、VNIプール16を有する。また、管理サーバ10は、通信制御部17、VM管理部18、VMネットワーク管理部19、VTEP管理部20を有する。また、VMネットワーク管理部19は、VNI割り当て制御部19aを有する。また、VTEP管理部20は、VLAN割り当て制御部20aと変換情報生成部20bとを有する。
【0053】
VTEP位置DB11は、各VTEPとして動作するスイッチを記憶する。例えば、
図6は、VTEP位置DBが記憶する情報の一例を説明する図である。
図6に示す例では、VTEP位置DB11は、VTEPを示すVTEPIDと、各識別子が示すVTEPとして動作するスイッチを示すスイッチIDと、各VTEPが終端処理を行うサーバを示すサーバIDとを対応付けて記憶する。
【0054】
例えば、VTEP位置DB11は、VTEPID「#1」と、スイッチ3aのスイッチID「#1」と、サーバ2aのサーバID「#1」、およびサーバ2bのサーバID「#3」とを対応付けて記憶する。また、VTEP位置DB11は、VTEPID「#2」と、スイッチ5aのスイッチID「#2」とサーバ4aのサーバID「#2」とを対応付けて記憶する。また、VTEP位置DB11は、VTEPID「#3」とスイッチ7aのスイッチID「#3」とサーバ6aのサーバID「#4」とを対応付けて記憶する。
【0055】
図5に戻り、VM位置DB12は、マルチテナントシステム1内のVMをどのサーバが実行しているかを記憶する。例えば、
図7は、VM位置DBが記憶する情報の一例を説明する図である。
図7に示す例では、VM位置DB12は、VMの識別子であるVMID(Virtual Machine Identifier)とサーバの識別子であるサーバIDとを対応付けて記憶する。
【0056】
例えば、
図7に示す例では、VM位置DB12は、VMID「1−1」とサーバID「#1」とを対応付けて記憶し、VMID「1−2」とサーバID「#1」とを対応付けて記憶する。また、VM位置DB12は、VMID「2−1」とサーバID「#2」とを対応付けて記憶し、VMID「2−2」とサーバID「#2」とを対応付けて記憶する。すなわち、VM位置DB12は、VMID「1−1」、および「1−2」が示すVMをサーバ2aが稼動させる旨を記憶している。また、VM位置DB12は、VMID「2−1」、および「2−2」が示すVMをサーバ4aが稼動させる旨を記憶している。
【0057】
図5に戻り、VM仮想ネットワークDB13は、各VMに割り当てられたVNIを記憶する。例えば、
図8は、VM仮想ネットワークDBが記憶する情報の一例を説明する図である。
図8に示す例では、VM仮想ネットワークDB13は、VMIDと、各VMIDが示すVMに割り当てられたVNIとを対応付けて記憶する。
【0058】
例えば、
図8に示す例では、VM仮想ネットワークDB13は、VMID「1−1」が示すVMにVNI「22」が割り当てられている旨を記憶する。また、
図8に示す例では、VM仮想ネットワークDB13は、VMID「1−2」が示すVMにVNI「34」が割り当てられている旨を記憶する。
【0059】
図5に戻り、VLANプール14は、各VTEPごとに、各VTEPがパケットの終端処理を行うVLAN内でVMに割り当てられていないVLAN番号を記憶する。例えば、
図9は、VLANプールが記憶する情報の一例を説明する図である。
図9に示す例では、VLANプール14は、VTEPIDとVLAN番号とを対応付けて記憶する。
【0060】
例えば、
図9に示す例では、VLANプール14は、VTEPID「#1」とVLAN番号「30、40…」を対応付けて記憶する。すなわち、VLANプール14は、VTEPID「#1」が示すVTEPが終端処理を行うVLANにおいて、VLAN番号「30」「40」、その他図示を省略したVLAN番号が割り当てられていない旨を記憶する。
【0061】
図5に戻り、割り当て数管理DB15は、各VTEPがパケットの終端処理を行うVLAN内のVMに割り当てられたVLAN番号と、各VLAN番号が割り当てられたVMの数とを記憶する。例えば、
図10は、割り当て数管理DBが記憶する情報の一例を説明する図である。
図10に示す例では、割り当て数管理DB15は、VTEPIDと、VLAN番号と、割り当て数と、VLAN番号を割り当てたVMIDとを対応付けて記憶する。
【0062】
例えば、
図10に示す例では、割り当て数管理DB15は、VTEPの識別子「#1」とVLAN番号「10」と割り当て数「2」とVMID「1−1、2−1」とを対応付けて記憶する。また、割り当て数管理DB15は、VTEPの識別子「#1」とVLAN番号「20」と割り当て数「1」とVMID「1−2」とを対応付けて記憶する。また、割り当て数管理DB15は、VTEPの識別子「#2」とVLAN番号「110」と割り当て数「1」とVMID「3−1」とを対応付けて記憶する。また、割り当て数管理DB15は、VTEPの識別子「#2」とVLAN番号「120」と割り当て数「1」とVMID「4−1」とを対応付けて記憶する。
【0063】
すなわち、割り当て数管理DB15は、VTEPID「#1」が示すVTEPが終端処理を行うVLANにおいて、VLAN番号「10」が割り当てられた2つのVMが稼動している旨を記憶する。また、割り当て数管理DB15は、VTEPID「#1」が示すVTEPが終端処理を行うVLANにおいて、VLAN番号「20」が割り当てられた1つのVMが稼動している旨を記憶する。
【0064】
また、割り当て数管理DB15は、VTEPID「#2」が示すVTEPが終端処理を行うVLANにおいて、VLAN番号「110」が割り当てられたVMが稼動している旨を記憶する。また、割り当て数管理DB15は、VTEPID「#2」が示すVTEPが終端処理を行うVLANにおいて、VLAN番号「120」が割り当てられたVMが稼動している旨を記憶する。
【0065】
図5に戻り、VNIプール16は、VMに割り当てられていないVNIを記憶する記憶部である。例えば、VNIプール16は、マルチテナントシステム1において、VNI「100」〜「200」がVMに割り当てられている場合は、VNI「100」〜「200」以外のVNIを記憶する。
【0066】
通信制御部17は、VM管理部18、およびVTEP管理部20と、各スイッチ3a、5a、7aとの間の通信制御を行う制御部である。例えば、通信制御部17は、VM管理部18がVMの生成、移動、停止等の指示を出力した場合は、各スイッチ3a、5a、7aを介して、VM管理部18が出力した指示を各サーバ2a、2b、4a、4b、6a、6bへ送信する。また、通信制御部17は、VTEP管理部20から各スイッチ3a、5a、7aへ配布する変換情報を受信すると、受信した変換情報を各スイッチ3a、5a、7aへ配布する。
【0067】
VM管理部18は、マルチテナントシステム1内で稼動するVMの管理を行う。すなわち、VM管理部18は、各サーバ2a、2b、4a、4b、6a、6bの計算資源に応じて、マルチテナントシステム1内で稼動するVMの生成、移動、停止等のライブマイグレーションを制御する。そして、VM管理部18は、ライブマイグレーションの結果、各サーバ2a、2b、4a、4b、6a、6b上で稼動するVMに変更があった場合は、変更結果をVM位置DB12に反映させる。その後、VM管理部18は、変更内容をVMネットワーク管理部19に通知する。
【0068】
例えば、VM管理部18は、VMID「1−1」が示すVMを停止させる場合は、VM位置DB12が記憶する情報のうち、VMID「1−1」が格納されたエントリを削除する。そして、VM管理部18は、VMID「1−1」が示すVMを停止させる旨をVMネットワーク管理部19に通知する。
【0069】
また、VM管理部18は、新たなVMにVMID「1−3」を割り当てて、サーバ2a上で稼動させる場合は、以下のエントリをVM位置DB12に格納する。すなわち、VM管理部18は、VMID「1−3」とサーバ2aのサーバID「#1」を対応付けてVM位置DB12に格納する。そして、VM管理部18は、VMID「1−3」が示すVMを生成した旨をVMネットワーク管理部19に通知する。
【0070】
また、VM管理部18は、VMID「1−1」が示すVMがサーバ2aからサーバ4aに移動した場合は、VM位置DB12が記憶するサーバの識別子のうち、VMID「1−1」と対応付けられたサーバID「#1」を「#2」に変換する。そして、VM管理部18は、各VTEPが終端処理を行うVLANを超えてVMが移動する場合は、VMネットワーク管理部19を介して、変換情報の更新指示をVTEP管理部20のVLAN割り当て制御部20aに出力する。詳細には、VM管理部18は、変換情報の更新指示とともに、移動するVMのVMIDと、移動元のサーバを示すサーバIDと、移動先のサーバを示すサーバIDとを合わせて通知する。
【0071】
VNI割り当て制御部19aは、各VMに対してVNIの割り当てを行う。具体的には、VNI割り当て制御部19aは、VMを生成した旨の通知を受信すると、生成されるVMを使用するテナントを識別する。また、VNI割り当て制御部19aは、識別したテナントが使用するVMに割り当てられたVNIを識別する。例えば、VNI割り当て制御部19aは、識別したテナントが使用するVMに対して、既に割り当てられたVNIを識別する処理や、テナントが指定するVNIを識別する。そして、VNI割り当て制御部19aは、識別したVNIとVM管理部18から通知されたVMIDとを対応付けたエントリをVM仮想ネットワークDB13に格納する。
【0072】
例えば、VNI割り当て制御部19aは、新規なテナントから指定されたVNIがVNIプール16に記憶されているか否かを判別し、指定されたVNIがVNIプール16に記憶されている場合は、指定されたVNIをVNIプール16から削除する。そして、VNI割り当て制御部19aは、VM管理部18から通知されたVMIDと、VNIプール16から選択したVNIとを対応付けたエントリをVM仮想ネットワークDB13に格納する。一方、VNI割り当て制御部19は、指定されたVNIがVNIプール16に記憶されていない場合は、他のVNIを指定するようテナントに通知する。
【0073】
また、VNI割り当て制御部19は、既存のテナントからVNIを指定された場合は、指定されたVNIがVNIプール16に記憶されているか判別し、記憶されている場合は、指定されたVNIをVNIプール16から削除する。そして、VNI割り当て制御部19aは、VM管理部18から通知されたVMIDと、VNIプール16から選択したVNIとを対応付けたエントリをVM仮想ネットワークDB13に格納する。
【0074】
なお、既存のテナントからVNIを指定された場合は、指定されたVNIがVNIプール16に記憶されていない場合は、既に同一のVNIが同一のテナントに割り当てられている。このため、VNI割り当て制御部19は、VM管理部18から通知されたVMIDと、指定されたVNIとを対応付けたエントリをVM仮想ネットワークDB13に格納する。
【0075】
その後、VNI割り当て制御部19aは、変換情報の生成指示をVTEP管理部20のVLAN割り当て制御部20aに出力する。詳細には、VNI割り当て制御部19aは、生成するVMのVMIDと対応付けてVM位置DB12が記憶していたサーバIDを取得する。そして、VNI割り当て制御部19aは、変換情報の生成指示とともに、生成するVMのVMIDと、VMを稼動させるサーバのサーバIDとをVLAN割り当て制御部20aに出力する。
【0076】
一方、VNI割り当て制御部19aは、VMを停止する場合は、停止するVMを示すVMIDと停止するVMに割り当てられたVNIとが対応付けられたエントリをVM仮想ネットワークDB13から削除する。その後、VNI割り当て制御部19aは、変換情報の削除指示と、停止するVMのVMIDとをVLAN割り当て制御部20aに出力する。
【0077】
なお、VNI割り当て制御部19aは、VM仮想ネットワークDB13から、停止するVMと同じVNIが対応付けられたVMIDが存在するか否かを判定する。そして、VNI割り当て制御部19aは、停止するVMと同じVNIが対応付けられたVMIDが存在しない場合は、停止するVMと対応付けられたVMIDをVNIプール16に格納する。
【0078】
VLAN割り当て制御部20aは、VM管理部18、またはVNI割り当て制御部19aから変換情報の生成指示を受信した場合は、各VMが動作するVLANの終端処理を行うVTEPを特定する。そして、VLAN割り当て制御部20aは、VTEPごとに、各VTEPが終端処理を行うVLAN内で、生成するVMを使用するテナントを示すVLAN番号を選択し、選択したVLAN番号を生成するVMに割り当てる。
【0079】
以下、VLAN割り当て制御部20aが実行する処理について詳細に説明する。まず、新たなVMを生成する際にVLAN割り当て制御部20aが実行する処理について説明する。まず、VLAN割り当て制御部20aは、生成するVMのVMIDと、VMを稼動させるサーバのサーバIDととともに、変換情報の生成指示を受信する。このような場合には、VLAN割り当て制御部20aは、受信したサーバIDと対応付けられたVTEPIDをVTEP位置DB11から取得する。つまり、VLAN割り当て制御部20aは、生成したVMを稼動させるサーバが設置されたネットワークの終端処理を行うVTEPを特定する。
【0080】
次に、VLAN割り当て制御部20aは、生成するVMのVMIDと、特定したVTEPとに応じて、生成するVMにVLAN番号の割り当てを行う。詳細には、VLAN割り当て制御部20aは、VTEP位置DB11から、特定したVTEPIDに対応付けられたサーバIDを識別する。
【0081】
そして、VLAN割り当て制御部20aは、VM位置DBから、識別したサーバIDと対応付けられたVMIDを識別する。そして、VLAN割り当て制御部20aは、VM仮想ネットワークDB13を閲覧し、識別したVMIDの中に、生成するVMに割り当てられたVNIと同じVNIが割り当てられたVMIDが存在するか否かを判定する。すなわち、VLAN割り当て制御部20aは、新たに生成するVMが送受信するパケットの終端処理を行うVTEPの配下に、新たに生成するVMと同じVNIが割り当てられたVMが存在するか否かを判定する。
【0082】
そして、VLAN割り当て制御部20aは、識別したVMIDの中に、生成するVMに割り当てられたVNIと同じVNIが割り当てられたVMIDが存在する場合は、以下の処理を実行する。すなわち、VLAN割り当て制御部20aは、生成するVMに割り当てられたVNIと同じVNIが割り当てられたVMIDを特定し、特定したVMIDと割り当てられたVLAN番号を割り当て数管理DB15から識別する。
【0083】
次に、VLAN割り当て制御部20aは、識別したVLAN番号と対応付けられた割り当て数に1を加算する。そして、VLAN割り当て制御部20aは、生成するVMのVMIDと、特定したVTEPのVTEPIDと、識別したVLAN番号と、変換情報の生成指示とを変換情報生成部20bに出力する。
【0084】
一方、VLAN割り当て制御部20aは、識別したVMIDの中に、生成するVMに割り当てられたVNIと同じVNIが割り当てられたVMIDが存在しない場合は、以下の処理を実行する。まず、VLAN割り当て制御部20aは、VLANプール14が、特定したVTEPのVTEPIDと対応付けて記憶するVLAN番号の中から、VLAN番号を1つ選択する。次に、VLAN割り当て制御部20aは、選択したVLAN番号をVLANプール14から削除する。
【0085】
そして、VLAN割り当て制御部20aは、選択したVLAN番号と、特定したVTEPのVTEPIDと、割り当て数1と、新たに生成するVMのVMIDとを対応付けて割り当て数管理DB15に格納する。そして、VLAN割り当て制御部20aは、生成するVMのVMIDと、特定したVTEPのVTEPIDと、特定したVLAN番号と、変換情報の生成指示とを変換情報生成部20bに出力する。
【0086】
次に、VMを停止する際にVLAN割り当て制御部20aが実行する処理について説明する。まず、VLAN割り当て制御部20aは、停止するVMのVMIDと変換情報の削除指示を受信する。すると、VLAN割り当て制御部20aは、割り当て数管理DB15から、受信したVMIDが格納されたエントリを特定し、特定したエントリの割り当て数から1を減算する。そして、VLAN割り当て制御部20aは、割り当て数から1を減算した結果、割り当て数が「0」であるか否かを判定する。
【0087】
ここで、VLAN割り当て制御部20aは、割り当て数から1を減算した結果、割り当て数が「0」である場合は、特定したエントリに格納されたVTEPIDとVLAN番号とを記憶し、特定したエントリを削除する。また、VLAN割り当て制御部20aは、記憶したVLAN番号と、VTEPIDとを対応付けてVLANプール14に格納する。また、VLAN割り当て制御部20aは、記憶したVLAN番号とVTEPIDと変換情報の削除指示とを変換情報生成部20bに出力する。
【0088】
一方、VLAN割り当て制御部20aは、割り当て数から1を減算した結果、割り当て数が「0」ではない場合は、特定したエントリの削除、および変換情報の削除指示の出力等を行わずに、処理を終了する。すなわち、割り当て数から1を減算した結果、割り当て数が「0」ではない場合は、VMを停止したサーバと同じVLANに、停止したVMと同一のVLAN番号を有するVMが稼動している。このため、VLAN割り当て制御部20aは、割り当て数から1を減算した結果、割り当て数が「0」ではない場合は、変換情報の削除指示を出力せずに、処理を終了する。
【0089】
次に、VMを移動させる際にVLAN割り当て制御部20aが実行する処理について説明する。まず、VLAN割り当て制御部20aは、VM管理部18から、変換情報の更新指示とともに、移動するVMのVMIDと、移動元のサーバを示すサーバIDと、移動先のサーバを示すサーバIDと受信する。
【0090】
このような場合は、VLAN割り当て制御部20aは、移動先のサーバを示すサーバIDを、新たなVMを生成するサーバのサーバIDとみなし、受信したVMIDを新たなVMのVMIDとみなす。そして、VLAN割り当て制御部20aは、上述した新たなVMを生成する際の処理を実行する。
【0091】
次に、VLAN割り当て制御部20aは、移動元のサーバを示すサーバIDを、停止するVMを稼動させていたサーバのサーバIDとみなし、受信したVMIDを、停止するVMのVMIDとみなす。そして、VLAN割り当て制御部20aは、上述したVMを停止する際の処理を実行する。すなわち、VLAN割り当て制御部20aは、VMの移動を行う場合は、VMを生成する際の処理とVMを停止させる際の処理とを実行する。
【0092】
変換情報生成部20bは、VNI割り当て制御部19aが割り当てたVNIと、VLAN割り当て制御部20aが選択したVLAN番号とを対応付けた変換情報を生成し、各スイッチ3a、5a、7aに配信する。以下、変換情報生成部20bが実行する処理について説明する。
【0093】
まず、変換情報生成部20bは、VLAN割り当て制御部20aから、生成するVMのVMIDと、VTEPIDと、VLAN番号と、変換情報の生成指示とを受信する。このような場合は、変換情報生成部20bは、生成するVMのVMIDと対応付けられたVNIをVM仮想ネットワークDB13から取得する。そして、変換情報生成部20bは、VLAN割り当て制御部20aから受信したVLAN番号と、VM仮想ネットワークDB14から取得したVNIとを対応付けた変換情報を生成する。
【0094】
また、変換情報生成部20bは、VLAN割り当て制御部20aから受信したVTEPIDと対応付けられたスイッチIDをVTEP位置DB11から識別する。そして、変換情報生成部20bは、通信制御部17を介して、識別したスイッチIDが示すスイッチに生成した変換情報を配信する。
【0095】
例えば、変換情報生成部20bは、VLAN割り当て制御部20aから、VMID「1−1」、VTEPID「#1」、VLAN番号「10」と変換情報の生成指示とを受信する。すると、変換情報生成部20bは、VMID「1−1」と対応付けられたVNI「22」をVM仮想ネットワークDB13から取得する。また、変換情報生成部20bは、VTEPID「#1」と対応付けられたスイッチID「#1」をVTEP位置DB11から取得する。そして、変換情報生成部20bは、VLAN番号「10」とVNI「22」とを対応付けた変更情報をスイッチID「#1」が示すスイッチ3aに配布する。
【0096】
また、変換情報生成部20bは、VLAN割り当て制御部20aから、VLAN番号と、VTEPIDと変換情報の削除指示とを受信する。このような場合は、変換情報生成部20bは、受信したVTEPIDと対応付けられたスイッチIDをVTEP位置DB11から識別する。そして、変換情報生成部20bは、通信制御部17を介して、識別したスイッチIDが示すスイッチに対し、受信したVLAN番号を含む変換情報を削除するよう指示する。
【0097】
例えば、変換情報生成部20bは、VLAN割り当て制御部20aから、VMID「2−1」、VTEPID「#2」、VLAN番号「110」と変換情報の削除指示とを受信する。このような場合は、変換情報生成部20bは、VTEPID「#2」と対応付けられたスイッチID「#2」をVTEP位置DB11から識別し、スイッチID「#2」が示すスイッチ5aにVLAN番号「110」を含む変換情報を削除するよう指示する。
【0098】
次に、
図11を用いて、スイッチ3aが有する機能構成について説明する。
図11は、スイッチが有する機能構成の一例を説明する図である。
図11に示す例では、スイッチ3aは、VLAN変換テーブル31、MACテーブル32、通信制御部33、ヘッダ制御部34を有する。また、ヘッダ制御部34は、受信部35、変換部36、転送部37、更新部38を有する。
【0099】
VLAN変換テーブル31は、変換情報を記憶する。例えば、
図12は、VLAN変換テーブルの一例を説明する図である。
図12に示す例では、VLAN変換テーブル31は、VNI「22」とVLAN番号「10」とを対応付けた変換情報、およびVNI「34」とVLAN番号「20」とを対応付けた変換情報とを記憶する。
【0100】
図11に戻って、MACテーブル32は、スイッチ3aがパケットの転送を行う際に利用するMACテーブルを記憶する。例えば、
図13は、MACテーブルの一例を説明する図である。
図13に示すように、MACテーブル32は、MACアドレスと、VLAN番号と、転送先とを対応付けたMACテーブルを記憶する。すなわち、MACテーブル32は、パケットの送信先となるMACアドレス、およびパケットの送信先となるVLAN番号に、パケットの転送先を対応付けて記憶する。
【0101】
例えば、
図13に示す例では、MACテーブル32は、宛先MACアドレスが「MAC#1」、および宛先のVLAN番号が「10」であるパケットをサーバ2aに転送する旨を記憶する。また、MACテーブル32は、宛先MACアドレスが「MAC#2」、および宛先のVLAN番号が「20」であるパケットをサーバ2bに転送する旨を記憶する。また、MACテーブル32は、宛先MACアドレスが「MAC#3」、または「MAC#4」等であり、宛先のVLAN番号が「30」、「40」等であるパケットをネットワーク8に転送する旨を記憶する。
【0102】
図11に戻って、通信制御部33は、各サーバ2a、2b、およびネットワーク8から受信すると、受信したパケットを受信部35に転送する。また、通信制御部33は、転送部37からパケットを受信すると、受信したパケットの宛先に応じて、パケットを各サーバ2a、2b、またはネットワーク8に転送する。また、通信制御部33は、管理サーバ10から、変換情報、または変換情報の削除指示とを受信した場合は、受信した変換情報および変換情報の削除指示を更新部38に出力する。
【0103】
受信部35は、パケットを受信すると、受信したパケットを変換部36に出力する。変換部36は、パケットを受信すると、受信したパケットの変換処理を実行する。具体的には、変換部36は、受信したパケットのヘッダ部分がインナーヘッダである場合、すなわち受信したパケットがカプセル化されていない場合は、インナーヘッダに格納されたInner SAから宛先MACアドレスを取得する。そして、変換部36は、MACテーブル32を参照し、取得した宛先MACアドレスと対応付けられた転送先が、ネットワーク8であるか否かを判定する。つまり、変換部36は、ネットワーク8を介してパケットを転送するか否かを判定する。
【0104】
また、変換部36は、取得した宛先MACアドレスと対応付けられた転送先が、ネットワーク8である場合、つまりネットワーク8を介してパケットを転送する場合は、パケットのカプセル化を行う。詳細には、変換部36は、インターヘッダに格納されたVLANタグ(C−tag)からVLAN番号を取得する。そして、変換部36は、取得したVLAN番号と対応付けられたVNIをVLAN変換テーブル31から取得する。その後、変換部36は、VLAN変換テーブル31から取得したVNIが格納されたアウターヘッダをパケットの付加することで、パケットのカプセル化を行う。
【0105】
そして、変換部36は、カプセル化したパケットを転送部37に出力する。一方、変換部36は、取得した宛先MACアドレスと対応付けられた転送先が、ネットワーク8ではない場合は、受信したパケットのカプセル化を行わずに転送部37に出力する。
【0106】
また、変換部36は、受信したパケットのヘッダ部分がアウターヘッダである場合、すなわち受信したパケットがカプセル化されている場合は、アウターヘッダに格納されたC−tagからVNIを取得する。そして、変換部36は、取得したVNIと対応付けられたVLAN番号をVLAN変換テーブル31から取得する。その後、変換部36は、受信したパケットのアウターヘッダを削除し、インナーヘッダのVLANタグに格納されたVLAN番号を、VLAN変換テーブル31から取得したVLAN番号に変換する。そして、変換部36は、パケットを転送部37に出力する。
【0107】
転送部37は、パケットの転送処理を行う。具体的には、転送部37は、変換部36からカプセル化されたパケットを受信すると、受信したパケットのインナーヘッダに格納されたInner DAから宛先MACアドレスを取得する。そして、転送部37は、取得した宛先MACアドレスに対応付けられた転送先をMACテーブル32から読み出し、読み出した転送先へパケットを転送するよう通信制御部33に指示する。なお、転送部37は、カプセル化されたパケットをネットワーク8に出力するよう通信制御部33に指示することとなる。
【0108】
また、転送部37は、パケット化されていないパケットを受信すると、受信したパケットのInner DAから宛先MACアドレスを取得する。そして、転送部37は、取得した宛先MACアドレスに対応付けられた転送先VTEPのMACアドレスをMACテーブル32から読み出し、読み出した転送先へパケットを転送するよう通信制御部33に指示する。
【0109】
更新部38は、VLAN変換テーブル31の更新を行う。例えば、更新部38は、管理サーバ10から変換情報を受信すると、受信した変換情報をVLAN変換テーブル31に格納する。また、更新部38は、管理サーバ10からVLAN番号とともに、変換情報の削除指示を受信すると、VLAN変換テーブル31が記憶する変換情報のうち、受信したVLAN番号を含む変換情報を特定する。そして、更新部38は、特定した変換情報を削除する。
【0110】
なお、上述した説明では説明を省略したが、ヘッダ制御部34は、受信したパケットの送信元MACアドレスを用いて、MACテーブル32の学習を行う機能を有していてもよい。例えば、変換部36は、受信したパケットのOuter SAやInner SAから送信元MACアドレスを識別し、C−tagからVLAN番号を識別する。そして、変換部36は、パケットの送信元である装置と、識別した送信元MACアドレスと、パケットに格納されたVLAN番号とを対応付けて、MACテーブル32に格納してもよい。
【0111】
次に、
図14を用いて、スイッチが実行する変換処理の一例について説明する。
図14は、スイッチが実行する変換処理の一例を説明する図である。例えば、
図14に示す例では、サーバ2aは、ハイパーバイザ2cを実行し、ハイパーバイザ2c上でVM2dとVM2eとを稼動させる。また、サーバ2bは、ハイパーバイザ2fを実行し、ハイパーバイザ2f上でVM2gを稼動させる。また、サーバ4aは、ハイパーバイザ4bを実行し、ハイパーバイザ4b上でVM4cとVM4dとを稼動させる。
【0112】
ここで、スイッチ3aは、サーバ2a、およびサーバ2bが送受信するパケットの終端処理を行うVTEP3bとして動作する。また、スイッチ5aは、サーバ4aが送受信するパケットの終端処理を行うVTEP5bとして動作する。また、VM2dとVM4dとは、テナント「B」が使用するVMであり、VM2e、VM2g、VM4cとは、テナント「A」が使用するVMであるものとする。また、
図14に示す例では、同一テナントが使用するVM同士は、パケット通信を行うことができるが、他のテナントが使用するVM同士は、パケット通信を行うことができないものとする。
【0113】
ここで、管理サーバ10は、マルチテナントシステム1全体で、各VM2d、2e、2g、4c、4dを使用するテナントごとにVNIを割り当てる。例えば、管理サーバ10は、テナント「A」が使用するVMにVNI「22」を割り当て、テナント「B」が使用するVMにVNI「34」を割り当てる。
【0114】
また、管理サーバ10は、各VTEP3b、5bごとに独立して、各VTEP3b、5bが終端処理を行うVLANのVLAN番号を各VM2d、2e、2g、4c、4dに割り当てる。つまり、管理サーバ10は、VTEP3bが終端処理を行うVLANにおいて、各VM2d、2e、2gを使用するテナントごとに一意なVLAN番号を選択する。また、管理サーバ10は、VTEP5bが終端処理を行うVLANにおいて、各VM2d、2e、2gを使用するテナントごとに一意なVLAN番号を選択する。
【0115】
この結果、例えば、
図14に示す例では、管理サーバ10は、VM2dにVLAN番号「20」を割り当て、VM2eおよびVM2gにVLAN番号「10」を割り当てる。また、管理サーバ10は、VM4cにVLAN番号「110」を割り当て、VM4dにVLAN番号「120」を割り当てる。すなわち、管理サーバ10は、同一のテナントが使用するVMであっても、異なるVTEPに含まれるVMに対しては、異なるVLAN番号の付与を許容する。
【0116】
そして、管理サーバ10は、VTEP3b、5bごとに変換情報を生成し、生成した変換情報を各VTEP3b、5bに配布する。詳細には、
図14に示す例では、管理サーバ10は、VNI「22」とVLAN「10」とを対応付け、VNI「34」とVLAN「20」とを対応付けた変換テーブルをVTEP3bへ配布する。また、管理サーバ10は、VNI「22」とVLAN「110」とを対応付け、VNI「34」とVLAN「120」とを対応付けた変換テーブルをVTEP5bに配布する。
【0117】
ここで、VLAN番号「10」のVM2eがVLAN番号「10」のVM2gを宛先とするパケットを出力すると、VTEP3bは、パケットをカプセル化せずにそのまま、パケットをサーバ2fが稼動させるVM2gに転送する。つまり、VTEP3bは、通常のVLANと同様のパケット転送処理を行うこととなる。
【0118】
一方、VM2dは、VM4dを宛先するパケットを出力する場合は、VLAN番号「20」をインナーヘッダに格納して出力する。このような場合は、VTEP3bは、変換情報を参照し、VLAN番号「20」と対応付けられたVNI「34」を取得する。そして、VTEP3bは、VNI「34」をアウターヘッダに格納したパケットをネットワーク8を介してVTEP5bに送信する。
【0119】
また、VTEP5bは、アウターヘッダにVNI「34」が格納されたパケットを受信すると、変換情報を参照し、VNI「34」と対応付けられたVLAN番号「120」を取得する。そして、VTEP3bは、パケットのカプセル化を解除すると、インナーヘッダに格納されたVLAN番号「20」をVLAN番号「120」に書き換える。そして、VTEP3bは、VLAN番号を書き換えたパケットをVM4dに出力する。
【0120】
こように、マルチテナントシステム1は、VM2dからVTEP3bまでは、VLAN番号「20」を用いて、通常のVLANと同様のパケット転送処理を行う。また、マルチテナントシステム1は、VTEP3bでVLAN番号「20」とVNI「34」との変換を行い、VTEP3bからVTEP5bまでは、VNI「34」を用いたVXLANのパケット転送処理を行う。そして、マルチテナントシステム1は、VTEP5bでVNI「34」とVLAN番号「120」との変換を行い、VTEP5bからVM4dまでは、VLAN番号「120」を用いて、通常のVLANと同様のパケット転送処理を行う。
【0121】
このため、マルチテナントシステム1は、各VTEP3b、5bに異なる変換情報を配布した場合にも、同一のテナントが使用するVM同士のパケット通信を実現することができる。
【0122】
次に、
図15を用いて、VMを生成する際に管理サーバ10が実行する処理の流れを説明する。
図15は、新たに生成したVMにVNIとVLAN番号とを割り当てる処理の流れを説明するためのフローチャートである。まず、管理サーバ10は、VMを使用するテナントに応じてVNIをVMに割り当てる(ステップS101)。
【0123】
次に、管理サーバ10は、VMを稼動させるサーバの位置からVTEPを特定する(ステップS102)。そして、管理サーバ10は、特定したVTEPが終端処理を行うVLANにおいて同一テナントのVMにVLAN番号を割り当て済みか否かを判定する(ステップS103)。そして、管理サーバ10は、特定したVTEPが終端処理を行うVLANにおいて同一テナントのVMにVLAN番号を割り当て済みである場合は(ステップS103肯定)、割り当て済みのVLANの割り当て数に1を加算する(ステップS104)。
【0124】
一方、管理サーバ10は、特定したVTEPが終端処理を行うVLANにおいて同一テナントのVMにVLAN番号を割り当て済みではない場合は(ステップS103否定)、VLAN番号の割り当てを行う。すなわち、管理サーバ10は、VLANプール14から、特定したVTEPにおいて、テナントに対するVLAN番号の割り当てを行う(ステップS105)。そして、管理サーバ10は、特定したVTEPにおいて、割り当てたVLAN番号の割り当て数を「1」にする(ステップS106)。その後、管理サーバ10は、VTEPに変換情報を配信し(ステップS107)、処理を終了する。
【0125】
次に、
図16を用いて、VMが移動した際に管理サーバ10が実行する処理の流れを説明する。
図16は、VMが移動した際にVNIとVLAN番号とを更新する処理の流れを説明するためのフローチャートである。まず、管理サーバ10は、VM移動先のサーバの位置から移動先のサーバの終端処理を行うVTEP(以下、移動先VTEPと記載する)を特定する(ステップS201)。
【0126】
次に、管理サーバ10は、移動先VTEPが終端処理を行うVLANにおいて同一テナントのVMにVLAN番号を割り当て済みか否かを判定する(ステップS202)。そして、管理サーバ10は、移動先VTEPが終端処理を行うVLANにおいて同一テナントのVMにVLAN番号を割り当て済みである場合は(ステップS202肯定)、以下の処理を実行する。すなわち、管理サーバ10は、移動先VTEPにおいて割り当て済みのVLAN番号の割り当て数に1を加算する(ステップS203)。
【0127】
一方、管理サーバ10は、移動先VTEPが終端処理を行うVLANにおいて同一テナントのVMにVLAN番号を割り当て済みではない場合は(ステップS202否定)、VLAN番号の割り当てを行う。すなわち、管理サーバ10は、VLANプール14から、移動先VTEPにおけるテナントに対するVLAN番号の割り当てを行う(ステップS204)。そして、管理サーバ10は、移動先VTEPにおいて、割り当てたVLAN番号の割り当て数を「1」にする(ステップS205)。その後、管理サーバ10は、移動先VTEPに変換情報を配信する(ステップS206)。
【0128】
続いて、管理サーバ10は、VMの移動元サーバの終端処理を行うVTEP(以下、移動元VTEPと記載する)を特定する(ステップS207)。そして、管理サーバ10は、特定した移動元VTEPにおいて、移動するVMに割り当てられたVLAN番号の使用するを1減算する(ステップS208)。
【0129】
また、管理サーバ10は、VLAN番号の割り当て数が「0」であるか否かを判定し(ステップS209)、「0」である場合は(ステップS209肯定)、移動元VTEPのVLANプールにVLAN番号を返却する(ステップS210)。一方、管理サーバ10は、VLAN番号の割り当て数が「0」ではない場合は(ステップS209否定)、ステップS210の処理をスキップする。そして、管理サーバ10は、移動元VTEPの変換情報を更新させ(ステップS211)、処理を終了する。
【0130】
次に、
図17を用いて、VMが停止した際に管理サーバ10が実行する処理の流れについて説明する。
図17は、VMが停止した際にVNIとVLAN番号との割り当てを解除する処理の流れを説明するためのフローチャートである。まず、管理サーバ10は、停止したVMの稼働するサーバの終端処理を行うVTEPを特定する(ステップS301)。そして、管理サーバ10は、特定したVTEPにおいて、稼働するVMに割り当てられたVLAN番号の割り当て数を1減算する(ステップS302)。
【0131】
また、管理サーバ10は、VLAN番号の割り当て数が「0」であるか否かを判定し(ステップS303)、「0」である場合は(ステップS303肯定)、特定したVTEPのVLANプールにVLAN番号を返却する(ステップS304)。一方、管理サーバ10は、VLAN番号の割り当て数が「0」ではない場合は(ステップS303否定)、ステップS304の処理をスキップする。そして、管理サーバ10は、特定したVTEPの変換情報を更新させ(ステップS305)、処理を終了する。
【0132】
[マルチテナントシステム1の効果]
上述したように、マルチテナントシステム1は、ネットワーク8を介して、VMが出力したパケットを転送する複数のVTEP3b、5bを有する。また、各VTEP3b、4bの管理を行う管理サーバ10を有する。ここで、管理サーバ10は、マルチテナントシステム1内で同一テナントが使用するVMに対して、VNIを割り当てる。
【0133】
そして、管理サーバ10は、VTEPごとに、各VTEPが終端処理を行うVLAN内でVMを使用するテナントを示すVTEP番号を選択する。その後、管理サーバ10は、VMに割り当てたVNIと選択したVLAN番号とを対応付けた変換情報をVTEPごとに生成し、生成した変換情報を各VTEPに配信する。
【0134】
一方、各VTEP3b、5bは、管理サーバ10が配信した変換情報を記憶する。そして、各VTEP3b、5bは、終端処理を行うVLAN内のVMからパケットを受信すると、VMのVLAN番号と対応付けられたVNIを変換情報から取得する。その後、各VTEP3b、5bは、取得したVNIを用いてパケットをカプセル化し、カプセル化したパケットをネットワーク8を介して転送する。
【0135】
このため、マルチテナントシステム1は、VLANとVXLANとの変換を行う際に使用可能なVNIの数の制限を解消する。すなわち、マルチテナントシステム1は、マルチテナントシステム1全体で、VMを使用するテナントを示すVNIを設定する。また、マルチテナントシステム1は、各VTEP3b、5bが終端処理を行うVLANごとに、各VMを使用するテナントを示すVLAN番号の割り当てを行う。
【0136】
そして、マルチテナントシステム1は、マルチテナントシステム1全体で割り当てを行ったVNIと各VTEP3b、5bが終端処理を行うVTEPごとに割り当てを行ったVLAN番号との対応付けを行う。この結果、マルチテナントシステム1は、各VTEP3b、5bが終端処理を行うVTEPごとに、VLAN番号とVNIとのマッピングを自由に設定することができる。この結果、マルチテナントシステム1は、VLANとVXLANとの変換を行う際に使用可能なVNIの数の制限を解消し、マルチテナントシステム1を使用可能なテナントの最大数をVNIの数(24ビット)まで引き上げることができる。
【0137】
また、例えば、VTEP5bは、VTEP3bからカプセル化したパケットを受信すると、受信したパケットのアウターヘッダに含まれるVNIと対応付けられたVLAN番号を変換情報から取得する。そして、VTEP5bは、受信したパケットに含まれるVLAN番号を変換情報から取得したVLAN番号に変換して、VMに転送する。このため、マルチテナントシステム1は、VTEP3b、5bが終端処理を行う各VLAN内とで、同一のテナントが使用するVMに異なるVLAN番号を割り当てる場合にも、同一テナントが使用するVM間のパケット通信を実現することができる。
【0138】
また、管理サーバ10は、ある1つのVLAN内において同一テナントが使用するVMに同一のVLAN番号を割り当てる。そして、各VTEP3b、5bは、同一VLAN内において同一テナントが使用するVM同士が送受信するパケットのカプセル化を行わずにVLAN内のパケット転送を実行する。
【0139】
この結果、マルチテナントシステム1は、1つのVTEPが終端処理を行うVLAN内で、同一のテナントが使用する複数のVMの稼動を実現するとともに、VLAN内のパケット転送の速度を向上させることができる。すなわち、マルチテナントシステム1において、VLAN内で転送されるパケットについては、カプセル化を行わないので、パケット転送の速度を向上させることができる。
【0140】
また、管理サーバ10は、各VTEPのVTEPIDと、各VTEPが終端処理を行うVLAN内で割り当てされていないVLAN番号とを対応付けたVLANプール14を有する。そして、管理サーバ10は、新たなテナントが使用するVMについては、VMの終端処理を行うVTEPのVTEPIDと対応付けられたVLAN番号から選択されたVLAN番号を割り当てる。このため、管理サーバ10は、各テナントが使用するVMに割り当てるVLAN番号がVLANごとに異なる場合も、複雑な処理を行うことなく、各VMに対して、テナントごとに一意なVLAN番号を選択することができる。
【0141】
また、管理サーバ10は、各VTEPのVTEPIDと、各VTEPが終端処理を行うVLAN内のVMが使用しているVLAN番号と、VLAN番号の割り当て数とを対応付けた割り当て数管理DB15を有する。そして、管理サーバ10は、VMを停止させる際は、停止させるVMが使用するVLAN番号と対応付けた割り当て数を1減算し、割り当て数が0であるVLAN番号については、VLANプール14に返却する。このため、管理サーバ10は、VMの停止により生じた割り当て可能なVLAN番号をVLANプール14に反映させることができる。
【実施例2】
【0142】
例えば、マルチテナントシステム1は、スイッチ3aにVLANプール14と割り当て数管理DB15とを設置し、サーバ2aが実行するハイパーバイザ上で動作するVNI変換部からの問い合わせに応じて、スイッチ3aがVLAN番号等の割り当てを行ってもよい。以下、サーバ2aが実行するハイパーバイザ上でVLAN番号の割り当てを行う実施例2について説明する。なお、以下の説明では、サーバ2b、4a、4b、6a、6bについては、サーバ2aと同様の機能を発揮するものとして、説明を省略する。
【0143】
例えば、
図18は、実施例2に係るサーバが有する機能構成の一例を説明する図である。
図2に示すように、サーバ2aは、ハイパーバイザ2cを動作させ、ハイパーバイザ2c上で、VM2d、2eを稼動させる。また、ハイパーバイザ2cは、VNI変換テーブル31a、通信制御部33、VLAN制御部36a、VNI変換部38aを有する。なお、通信制御部33は、
図11に示す通信制御部33と同様の機能を発揮するものとして、詳細な説明を省略する。
【0144】
VNI変換テーブル31aは、サーバ2a上で稼動するVMのVNIとVLAN番号とを対応付けた変換情報を記憶する。すなわち、マルチテナントシステム1全体で割り当てを行ったVNIをサーバ2a上において、一意なVLAN番号に対応付けるVNI変換処理を行うための変換情報を記憶する。なお、VNI変換テーブル31aが記憶する変換情報は、VLAN変換テーブル31が記憶する変換情報のうち、サーバ2a上で稼動するVMのVNIとVLAN番号とを対応付けた変換情報となる。
【0145】
VLAN制御部36aは、
図11に示す受信部35、変換部36、転送部37と同様の機能を発揮する。例えば、VLAN制御部36aは、VM2d、2eのVNIと対応付けられたVLAN番号をVNI変換テーブル31aから取得し、取得したVLAN番号を用いて、パケットにVLANタグを付与する。そして、VLAN制御部36aは、通信制御部33を介して、VLANタグを付与したパケットをスイッチ3aに出力する。
【0146】
また、VLAN制御部36aは、通信制御部33を介して、VLANタグ付きパケットを受信すると、VLANタグを削除し、そのパケットをVM2dまたはVM2eに出力する。
【0147】
VNI変換部38aは、新規なテナントが使用するVMをサーバ2a上に生成する場合は、生成するVMを使用するテナントに割り当てられたVNIとともに、VLAN番号の問い合わせをスイッチ3aに送信する。ここで、新規なテナントとは、サーバ2a上のVLAN番号の割り当てが行われていないテナントである。
【0148】
また、VNI変換部38aは、ハイパーバイザ2c上のVMを停止する場合は、通信制御部33を介して、停止するVMに割り当てられたVLANをスイッチ3aに通知する。なお、VNI変換部38aは、新規でないテナントが使用するVMをサーバ2a上に生成する場合は、すでに変換情報がVNI変換テーブル31aに格納されているので、VLAN番号の問い合わせを行わない。
【0149】
また、VNI変換部38aは、VMの移動を行う際に、サーバ2aが移動先のサーバとなり、かつ、移動するVMを使用するテナントが新規なテナントであるか否かを判定する。そして、VNI変換部38aは、サーバ2aが移動先のサーバとなり、かつ、テナントが新規なテナントである場合は、VMを使用するテナントに割り当てられたVNIとともに、VLAN番号の問い合わせをスイッチ3aに送信する。一方、VNI変換部38aは、サーバ2aが移動元のサーバとなる場合は、移動するVMを停止するVMとみなし、停止するVMに割り当てられたVLANをスイッチ3aに通知する。
【0150】
次に、
図19を用いて、実施例2に係るスイッチ3aが有する機能構成について説明する。
図19は、実施例2に係るスイッチが有する機能構成の一例を説明する図である。
図19に示す例では、スイッチ3aは、
図11に示す機能構成に加えて、VLANプール14a、割り当て数管理DB15a、VTEP管理部20cを有する。
【0151】
VTEP管理部20cは、サーバ2aからVNIとともにVLANの問い合わせを受信すると、受信したVNI生成するVMを使用するテナントに割り当てるVLAN番号をVLANプール14aから選択する。そして、VTEP管理部20cは、選択したVLAN番号と取得したVNIとを対応付けた変換情報を生成し、生成した変換情報をサーバ2aに送信する。この結果、VNI変換部38aは、スイッチ3aから、新たな変換情報を受信すると、受信した変換情報をVNI変換テーブル31aに格納する。
【0152】
一方、VTEP管理部20cは、サーバ2aからVMを停止する通知を受信すると、割り当て数管理DB15aが記憶する割り当て数のうち、停止するVMに有り当てられたVLAN番号と対応付けられた割り当て数を1削減する。そして、VTEP管理部20cは、割り当て数が「0」であるVLAN番号を含む変換情報を削除するようサーバ2aに通知する。この結果、VNI変換部38aは、停止するVMに割り当てられたVLAN番号を含むエントリをVNI変換テーブル31aから削除する。
【0153】
次に、
図20を用いて、実施例2に係るサーバ2aが実行する処理について説明する。
図20は、実施例2に係るサーバが実行する処理を説明する図である。
図20に示す例では、ハイパーバイザ2c、2f、4b上でVNI変換処理及びVLAN変更処理が動作する。
【0154】
例えば、VNI番号「34」のVM2dは、VM4d宛のパケットを出力する。すると、ハイパーバイザ2c上のVLAN制御部36aは、VNI番号「34」と対応付けられたVLAN番号「20」を用いて、VLANタグを付与し、そのパケットをスイッチ3aに出力する。すると、スイッチ3aは、VTEPでカプセル化し、ネットワーク8を介して、カプセル化されたパケットをスイッチ5aへ送信する。
【0155】
一方、スイッチ5aは、カプセル化されたパケットをVTEPでVLAN番号「120」に変換し、サーバ4aに送信する。すると、サーバ4aが実行するハイパーバイザ4b上のVLAN制御部36aは、VLANタグを除去して、そのパケットをVM4dに出力する。
【0156】
一方、VNI「22」のVM22eは、VM2g宛のパケットを出力する。すると、ハイパーバイザ2c上のVLAN制御部36aは、VNI「22」と対応付けられたVLAN番号「10」を用いて、パケットにVLANタグを付与し、そのパケットをスイッチ3aに出力する。このような場合には、スイッチ3aは、VLAN番号「10」とMACアドレスとを用いてパケットの転送処理を行い、パケットをサーバ2bに出力する。
【0157】
そして、サーバ2bが実行するハイパーバイザ2f上で動作するVLAN制御部は、VLANタグを除去して、そのパケットをVM2gに出力する。
【0158】
なお、上述した実施例2に係るサーバ2aは、実施例1に係るマルチテナントシステム1と組み合わせて利用することができる。すなわち、各サーバ2a、4a、6aは、VTEPを有するスイッチ3a、5a、7aにパケットを送信する際にVLAN番号が格納されたパケットを送信するのであれば、稼動させるVMをVNIで識別してもよいし、VLAN番号で識別してもよい。
【0159】
なお、管理サーバ10は、VTEPの位置に関係なく、VTEPが終端処理を行うVMの集合ごとに、VMを使用するテナントを示すVLAN番号を選択すればよい。この結果、管理サーバ10は、各VTEPの設置位置によらず、各VTEPに適切な変換処理を実行させることができる。つまり、管理サーバ10は、各サーバ2a、2b、4a、4b、6a、6bが、VTEPの機能をオフロードしているか否かに関係なく、変換処理を各VTEPに実行させることができる。
【0160】
例えば、サーバ2aは、サーバ4aにパケットを送信する際に、VTEPの機能をスイッチ3aにオフロードしてもよいし、しなくともよい。また、サーバ4aは、サーバ2aからパケットを受信する際に、VTEPの機能をスイッチ5aにオフロードしてもよいし、しなくともよい。
【0161】
次に、
図21、22を用いて、VMを移動させる際にサーバ2a、およびスイッチ3aが実行する処理について説明する。まず、
図21を用いて、VMの移動先となる際にサーバ2aとスイッチ3aとが実行する処理の流れについて説明する。
図21は、VMの移動先に係るサーバが実行する処理の一例を説明するためのシーケンス図である。まず、サーバ2aにVMが移動してくる(ステップS401)。すると、サーバ2aは、移動したVMに対するVLAN番号の問い合わせをスイッチ3aに送信する(ステップS402)。
【0162】
すると、スイッチ3aは、VLANプール14aが記憶するVLAN番号から割り当てるVLAN番号を選択する(ステップS403)。また、スイッチ3aは、選択したVLAN番号を使用するVMの割り当て数を1つ加算する(ステップS404)。そして、スイッチ3aは、新たな変換情報をサーバ2aに送信する(ステップS405)。一方、サーバ2aは、受信した変換情報をVNI変換テーブル31aに格納し(ステップS406)、処理を終了する。
【0163】
次に、
図22を用いて、VMの移動元となる際にサーバ2aとスイッチ3aとが実行する処理の流れについて説明する。
図22は、VMの移動先に係るVTEPが実行する処理の一例を説明するためのシーケンス図である。
図22に示す例では、VLAN番号が「110」のVMが移動する(ステップS501)。すると、サーバ2aは、VMの停止をスイッチ3aに通知する(ステップS502)。
【0164】
このような場合には、スイッチ3aは、VLAN「110」の割り当て数を1減算し(ステップS503)、割り当て数が「0」であるか否かを判定する(ステップS504)。そして、スイッチ3aは、割り当て数が「0」である場合は(ステップS504肯定)、VLAN番号「110」をVLANプールに格納する(ステップS505)。その後、スイッチ3aは、変換情報の削除をサーバ2aに通知する(ステップS506)。すると、サーバ2aは、VLAN番号「110」の変換情報を削除する(ステップS507)。一方、スイッチ3aは、割り当て数が「0」ではない場合は(ステップS504否定)、ステップS505、S506をスキップする。
【0165】
[スイッチ3aの効果]
上述したように、スイッチ3aは、VLANプール14aと、割り当て数管理DB15aとを有する。そして、スイッチ3aは、サーバ2a上で動作するVTEP3bからの要求に応じて、サーバ2a上のVLAN番号とマルチテナントシステム1全体でのVNIとを対応付けた変換情報をVTEP3bに送信する。このため、スイッチ3aは、管理サーバ10を用いずとも、サーバ2aがVNIとVLAN番号とを変換するヘッダ変換処理を実行するための変換情報を生成することができる。
【実施例4】
【0181】
上述した実施例1〜3では、各VMに対し、各VTEP3b、5bが終端処理を行うネットワークにおいて、VMを使用するテナントを示すVLAN番号を有り当てた。しかし、実施例はこれに限定されるものではない。すなわち、マルチテナントシステム1は、各VTEP3b、5bが終端処理を行うネットワークにおいて、各VMを使用するテナントを示す識別番号としてVLAN番号以外の番号を割り当ててもよい。
【0182】
以下、各VMを使用するテナントを示す識別番号として、SR−IOVアダプタ40が有する各VF43〜48のグループを示す拡張VLAN番号を付与するマルチテナントシステム1について説明する。なお、マルチテナントシステム1は、
図1に例示した構成を有するものとして、詳細な説明を省略する。
【0183】
まず、
図25を用いて、実施例4に係るマルチテナントシステム1が有する管理サーバ10aの機能構成について説明する。
図25は、実施例4に係る管理サーバの機能構成の一例を説明する図である。
図25に示すように、管理サーバ10aは、VTEP位置DB11、VM位置DB12、VM仮想ネットワークDB13、拡張VLANプール14b、割り当て数管理DB15b、VNIプール16を有する。また、管理サーバ10aは、通信制御部17、VM管理部18、VMネットワーク管理部19、VTEP管理部20を有する。
【0184】
なお、VTEP位置DB11、VM位置DB12、VM仮想ネットワークDB13は、
図5に示すVTEP位置DB11、VM位置DB12、VM仮想ネットワークDB13と同じ情報を記憶するものとして、説明を省略する。また、
図25に示す通信制御部17、VM管理部18、VMネットワーク管理部19、VTEP管理部20は、
図5に示す通信制御部17、VM管理部18、VMネットワーク管理部19、VTEP管理部20と同様の処理を実行するものとして、説明を省略する。
【0185】
拡張VLANプール14bは、VTEPごとに、各VTEPが終端処理を行うVLAN内においてVMを使用するテナントを示す拡張VLAN番号のうち、使用していない拡張VLAN番号を記憶する。例えば、
図26は、拡張VLANプールが記憶する情報の一例を説明する図である。
図26に示す例では、拡張VLANプール16bは、VTEPと拡張VLAN番号とを対応付けて記憶する。例えば、
図26に示す例では、拡張VLANプール16bは、VTEPID「#1」と拡張VLAN番号「101」、「103」等を対応付けて記憶する。
【0186】
次に、
図27を用いて、割り当て数管理DB15bが記憶する情報について説明する。
図27は、実施例4に係る割り当て数管理DBが記憶する情報の一例を説明する図である。
図27に示す例では、割り当て数管理DB15bは、VTEPIDと拡張VLAN番号と割り当て数とを対応付けて記憶する。
【0187】
例えば、
図27に示す例では、割り当て数管理DB15bは、VTEPID「#1」と拡張VLAN番号「100」と割り当て数「1」とを対応付けて記憶する。また、割り当て数管理DB15bは、VTEPID「#1」と拡張VLAN番号「102」と割り当て数「2」とを対応付けて記憶する。また、割り当て数管理DB15bは、VTEPID「#2」と拡張VLAN番号「100」と割り当て数「1」とを対応付けて記憶する。
【0188】
このように、管理サーバ10aは、管理サーバ10が管理するVLAN番号の代わりに、拡張VLAN番号を管理する。この結果、管理サーバ10aは、各VTEPが終端処理を実行するVNIごとに、テナントを示す拡張VLAN番号をVMに割り当てし、VNIと拡張VLAN番号とを対応付けた変換情報を各VTEPに配信する。このため、管理サーバ10aは、マルチテナントシステム1内において、各テナントにVLAN番号を自由に設定させることができる。
【0189】
すなわち、マルチテナントシステム1にVMを移動させるテナントは、従前使用していたVLAN番号を継続して利用したい場合がある。このような場合にも、マルチテナントシステム1は、拡張VLAN番号とVNIとを対応付けた変換情報を用いるので、各テナントに自由なVLAN番号を使用させることができる。
【0190】
なお、拡張VLAN番号とVNIとを対応付けた変換情報を用いてパケットの変換を行うVTEPは、任意の位置に配置することができる。そこで、以下の説明では、管理サーバ10aが配信する変換情報を用いて、サーバ2aとスイッチ3aとの間に設置されたSR−IOVアダプタ40がパケットの変換を行う処理の一例を説明する。
【0191】
図28は、実施例4に係るサーバの一例を説明する図である。
図28に示す例では、サーバ2aとスイッチ3aとの間に、SR−IOVアダプタ40が設置されている。また、SR−IOVアダプタ40は、PF41a、内部スイッチ42、VNI変換テーブル31b、VFグループ情報定義テーブル31cを有する。また、内部スイッチ42は、複数のVF43〜48を有する。
【0192】
VNI変換テーブル31bは、変換情報を記憶する。例えば、
図29は、実施例4に係るVLAN変換テーブルの一例を説明する図である。
図29に示すように、VNI変換テーブル31bは、各VM2d〜2hに割り当てられたVNIと、各VM2d〜2hが使用するVLAN番号と、各VM2d〜2hに割り当てられた拡張VLAN番号とを対応付けて記憶する。
【0193】
例えば、
図29に示す例では、VNI変換テーブル31bは、VNI「22」とVLAN番号「10」と拡張VLAN番号「100」とを対応付けて記憶し、VNI「34」とVLAN番号「20」と拡張VLAN番号「101」とを対応付けて記憶する。また、VNI変換テーブル31bは、VNI「50」とVLAN番号「10」と拡張VLAN番号「102」とを対応付けて記憶する。なお、VNI変換テーブル31bは、内部スイッチ42が有するVFの数だけ変換情報を記憶することができる。
【0194】
ここで、VXLANを用いたパケット通信を行う場合は、拡張VLAN番号をインナーヘッダに格納する必要がある。このため、管理サーバ10aがVNIと拡張VLAN番号とを対応付けた変換情報を配布し、ハイパーバイザ2cが、各VMが使用するVLAN番号を変換情報に追加することで、
図29に示すVNI変換テーブル31bを作成する。なお、管理サーバ10aが各VMに割り当てたVNIを拡張VLAN番号とあわせて記憶し、VNIと拡張VLAN番号と、VLAN番号とを対応付けた変換情報を配布することとしてもよい。
【0195】
図28に戻って、VFグループ情報定義テーブル31cは、各拡張VLAN番号が示すVFのグループ、すなわち、通信可能なVMと対応付けられたVFを示すグループ情報を記憶する。例えば、
図30は、VFグループ情報定義テーブルの一例を説明する図である。
図30に示すように、VFグループ情報定義テーブルは、各拡張VLAN番号と、グループ情報とを対応付けて記憶する。
【0196】
ここで、グループ情報は、SR−IOVアダプタ40が有する各VF43〜48を使用するVMが、パケット通信可能か否かを示すビット列である。例えば、
図30に示す例では、グループ情報は、各VF43〜48の識別子「1」〜「6」と対応付けられたビットを有する。そして、
図30に示す例では、VFグループ情報定義テーブル31cは、拡張VLAN「100」と、ビット列「100110」とを対応付けて記憶する。すなわち、VFグループ情報定義テーブル31cは、識別子が「1」、「4」、「5」であるVF43、46、47を使用するVMが、拡張VLAN番号「100」が格納されたパケットを送受信可能である旨を記憶する。
【0197】
また、VFグループ情報定義テーブル31cは、識別子が「2」、「6」であるVF44、48を使用するVMが、拡張VLAN番号「101」が格納されたパケットを送受信可能である旨を記憶する。また、VFグループ情報定義テーブル31cは、識別子が「3」であるVF45を使用するVMが、拡張VLAN番号「102」が格納されたパケットを送受信可能である旨を記憶する。
【0198】
図28に戻って、PF41aは、各VFと対応付けられたVMの拡張VLANとを用いて、VFグループ情報定義テーブル31cを作成する。例えば、PF41aは、各拡張VLAN番号について、同じ拡張VLAN番号が付与されたVMと対応付けられたVFを識別する。そして、PF41aは、識別したVFと対応するビットを「1」としたグループ情報を拡張VLAN番号と対応付けてVFグループ情報定義テーブル31cに格納する。そして、PF41aは、各VF43〜48と対応付けられたVMの拡張VLAN番号とを含む変換情報をVNI変換テーブル31bから取得し、取得した変換情報を各VF43〜48に割り当てる。
【0199】
VF43は、VM2dが送受信するパケットのヘッダ変換処理を行う。具体的には、VF43は、VM2dからパケットを受信すると、PF41aから割り当てられた変換情報を用いて、パケットのVLANタグを付与し、拡張VLAN番号を格納する。ここで、
図31は、実施例4に係るアダプタが送信するパケットのフォーマットの一例を説明する図である。
【0200】
図31に示すように、VF43は、インナーヘッダに含まれる4バイトのVLANタグの中に、ベースVLANタグと拡張VLAN番号とVLAN番号とを格納する。その後、VF43は、割り当てられた変換情報のVNIを含むアウターヘッダをパケットに付加してカプセル化し、カプセル化したパケットをスイッチ3aへ送信する。なお、以下の説明では、拡張VLAN番号とベールVLANタグとを含む2バイトのタグをTタグ(テナントタグ)と記載する。
【0201】
また、VF43は、Tタグを付与したパケットをスイッチ3aから受信すると、受信したパケットのTタグから拡張VLAN番号を取得する。そして、VF43は、取得した拡張VLAN番号が示すグループ情報をVFグループ情報定義テーブル31cから識別し、識別したグループ情報のうちVF43に対応するビットが「1」であるか否かを判定する。その後、VF43は、識別したグループ情報のうちVF43に対応するビットが「1」である場合は、パケット通信可能であると判定し、割り当てられた変換情報を用いて、パケットのTタグを削除し、そのパケットをVM2dに送信する。
【0202】
次に、
図32を用いて、実施例4に係るSR−IOVアダプタ40が実行する処理の一例を説明する。
図32は、実施例4に係るSR−IOVアダプタが実行する処理の一例を説明する図である。なお、
図32に示す例では、SR−IOVアダプタ40の各VF43〜48は、サーバ2a上で稼動するVMのヘッダ変換処理を行う。また、サーバ2bとスイッチ3aとの間には、SR−IOVアダプタ40aを有する。
【0203】
また、VM2dは、VLAN番号「10」を使用し、VNI「22」が割り当てられている。また、VM2eは、VLAN番号「10」を使用し、VNI「50」が割り当てられている。また、VM2gは、VLAN番号「10」を使用し、VNI「22」が割り当てられている。VNI「22」は、拡張VLAN番号「100」が割り当てられている。また、VNI「50」は、拡張VLAN番号「102」が割り当てられている。
【0204】
例えば、SR−IOVアダプタ40は、VM2eからパケットを受信すると、変換情報から、VM2eのVLAN番号「10」とVNI「50」に対応付けられた拡張VLAN番号「102」を取得する。そして、SR−IOVアダプタ40は、パケットに拡張VLAN番号「102」を格納したTタグを生成し、その後、SR−IOVアダプタ40は、スイッチ3aを介して、パケットをネットワーク8へ出力する。
【0205】
一方、SR−IOVアダプタ40は、Tタグを付与したパケットを受信すると、受信したパケットのTタグから拡張VLAN番号「102」を取得する。そして、取得した拡張VLAN番号が示すグループ情報をVFグループ情報定義テーブルから識別し、パケット通信可能であるか判定した後、パケットのTタグ削除する。パケット通信可能であると判断した場合、SR−IOVアダプタ40は、パケットをVM2eに送信する。
【0206】
また、SR−IOVアダプタ40は、VM2dがVM2g宛のパケットを出力すると、変換情報を用いて変換処理を行う。この結果、SR−IOVアダプタ40は、VLAN番号「10」、VNI「22」に対応する拡張VLAN番号「100」が格納されたパケットを送信する。
【0207】
ここで、スイッチ3aは、パケットに格納された、宛先MACアドレス、VLAN番号「10」、拡張VLAN番号「100」を用いて転送処理を行うため、MACテーブル32に、拡張VLAN番号をあわせて記憶する。そして、スイッチ3aは、パケットに格納された、宛先MACアドレス、VLAN番号「10」、拡張VLAN番号「100」を用いて転送処理を行う。この結果、スイッチ3aは、パケットをSR−IOVアダプタ40aを介して、VM2gまで転送する。
【0208】
このように、実施例4に係るマルチテナントシステム1は、各VTEP3b、5bが終端処理を行うVLAN内において、各仮想マシンを使用するテナントを示すため、VLAN番号ではなく、拡張VLAN番号を付与した。この結果、実施例4に係るマルチテナントシステム1は、各テナントが使用する仮想マシンに対して、自由にVLAN番号を付与することができる。
【0209】
なお、実施例4に係るマルチテナントシステム1は、各VTEP3b、5bが終端処理を行うVLAN内において、各仮想マシンを使用するテナントを示すことができるのであれば、他の情報を付与してもよい。すなわち、実施例4に係るマルチテナントシステム1は、各VTEP3b、5bが終端処理を行うVLAN内において、各仮想マシンを使用するテナントを示すため、VLAN番号と外部VLAN番号とを用いた2重タグを利用してもよい。
【0210】
例えば、
図33は、実施例4に係るVLAN変換テーブルのバリエーションの一例を説明する図である。
図33に示す例では、VNI変換テーブル31bは、VNIとVLAN番号と、外部VLAN番号とを対応付けた変換テーブルを記憶する。つまり、VNI変換テーブル31bは、
図29に例示した変換情報の拡張VLAN番号を外部VLAN番号に置き換えた情報を記憶する。
【0211】
また、
図34は、実施例4に係るVFグループ情報定義テーブルのバリエーションの一例を説明する図である。
図34に示す例では、VFグループ情報定義テーブル31cは、グループ情報と外部VLAN番号とを対応付けて記憶する。つまり、VFグループ情報定義テーブル31cは、
図30に例示するように、拡張VLAN番号ではなく、外部VLAN番号と対応付けてグループ情報を記憶する。
【0212】
SR−IOVアダプタ40は、
図33、および
図34に示すように、拡張VLANの代わりに外部VLANを用いて、各VLAN内のVMを使用するテナントを識別する場合は、拡張VLAN番号の変わりに、外部VLAN番号をVLANタグに格納する。例えば、
図35は、実施例4に係るパケットのバリエーションの一例を説明する図である。
図35に示すように、SR−IOVアダプタ40は、VLANタグに、ベースVLANタグと外部VLAN番号とVLAN番号とを格納する。
【0213】
すなわち、SR−IOVアダプタ40は、
図31に示すTタグの代わりに、ベースVLANタグと外部VLAN番号とが格納されたSタグをパケットに格納する。この結果、スイッチ3bは、パケットに格納された宛先MACアドレスとSタグの外部VLAN番号とVLAN番号とを用いて、パケットの転送処理を行う。
【0214】
次に、
図36を用いて、実施例4に係るSR−IOVアダプタ40が実行する処理のバリエーションを説明する。
図36は、実施例4に係るSR−IOVアダプタが実行する処理の一例を説明する図である。
図36に示す例では、VM2dは、VLAN番号「10」を使用し、VNI「22」が割り当てられている。また、VM2eは、VLAN番号「10」を使用し、VNI「50」が割り当てられている。また、VM2gは、VLAN番号「10」を使用し、VNI「22」が割り当てられている。VNI「22」は、外部VLAN番号「100」が割り当てられている。また、VNI「50」は、外部VLAN番号「102」が割り当てられている。
【0215】
例えば、SR−IOVアダプタ40は、VM2eからパケットを受信すると、VLAN番号「10」とVNI「50」に対応付けられた外部VLAN番号「102」を用いてパケットに2重タグを付与し、ネットワーク8へ出力する。一方、SR−IOVアダプタ40は、2重タグが付与されたパケットを受信すると、VNI「50」と対応付けられた外部VLAN番号「102」とVLAN番号「10」を用いてパケットの通信可否を判断する。通信可能な場合、SR−IOVアダプタ40は、2重タグを除去してパケットをVM2eに送信する。
【0216】
また、スイッチ3aは、パケットに格納された、宛先MACアドレス、VLAN番号「10」、外部VLAN番号「100」を用いて転送処理を行う。そして、スイッチ3aは、パケットに格納された、宛先MACアドレス、VLAN番号「10」、外部VLAN番号「100」を用いて転送処理を行う。
【0217】
[実施例4に係るマルチテナントシステム1の効果]
上述したように、マルチテナントシステム1は、マルチテナントシステム1全体においてテナントを示すVNIをVMに割り当てる。また、マルチテナントシステム1は、VTEP3b、5bが終端処理を行うVLANにおいて、テナントを示す拡張VLAN番号、または外部VLAN番号をVMに割り当てる。また、マルチテナントシステム1は、VNIと拡張VLAN、またはVNIと外部VLANを対応付けた変換情報を配布し、VTEP3b、5bにおいて、変換処理を実行させる。
【0218】
このため、マルチテナントシステム1は、各VTEP3b、5bが終端処理を行うVLANにおいて、各テナントが使用するVMに任意のVLAN番号を付与させることができる。この結果、マルチテナントシステム1は、各VTEP3b、5bが終端処理を行うVLANにおいて、各VMを使用するテナントを識別しつつ、重複したVLAN番号を使用するVMを混在させることができる。
【実施例5】
【0219】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例5として本発明に含まれる他の実施例を説明する。
【0220】
(1)VTEPについて
上述した実施例1では、ファブリック3、5、7内のスイッチをVTEPとして動作させた。しかし、実施例はこれに限定されるものではなく、VTEPが終端処理を行う仮想マシンの組に応じて、任意のスイッチをVTEPとして動作させることができる。
【0221】
また、1つの物理ファブリック内に複数の論理ファブリックを収容し、論理ファブリックごとにVTEPを設置してもよい。また、1つのサーバ内で稼動するVMを使用するテナントに対しては、VLAN番号が重複しないように割り当てを行ってもよい。
【0222】
(2)機能構成について
上述した処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的におこなうこともできる。あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0223】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、いわゆるクラウドネットワーク上における情報処理装置が、管理サーバ10、10aの機能の一部ずつを実行することで、管理サーバ10、10aの機能を発揮させてもよい。
【0224】
さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【0225】
(3)プログラム
上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、
図37を用いて、上記の管理サーバ10と同様の機能を有する管理プログラムを実行するコンピュータの一例について説明する。
【0226】
図37は、管理プログラムを実行するコンピュータの一例について説明する図である。
図37に示すように、コンピュータ100は、HDD(Hard Disk Drive)150と、ROM(Read Only Memory)160と、RAM(Random Access Memory)170と、CPU(Central Processing Unit)180、I/O(Input/Output)190を有する。これら150〜190の各部はバス140を介して接続される。
【0227】
RAM170には、管理サーバ10の機能をCPU180に発揮させる管理プログラム170aがあらかじめ記憶される。また、RAM170には、VTEP位置DB170b、VM位置DB170c、VM仮想ネットワークDB170d、VLANプール170e、割り当て数管理DB170f、VNIプール170gがあらかじめ記憶される。なお、管理プログラム170aについては、実施例1で示した各構成要素と同様、適宜統合または分離してもよい。
【0228】
また、VTEP位置DB170b、VM位置DB170c、VM仮想ネットワークDB170dは、
図5に例示したVTEP位置DB11、VM位置DB12、VM仮想ネットワークDB13が記憶する情報と同じ情報である。また、VLANプール170e、割り当て数管理DB170f、VNIプール170gは、
図5に示す割り当て数管理DB15、VNIプール16、VLANプール14が記憶する情報と同じ情報である。
【0229】
そして、CPU180が、管理プログラム170aを読み出して展開して実行することにより、管理プログラム170aは、管理プロセス180aとして機能する。この管理プロセス180aは、RAM170から、VTEP位置DB170b、VM位置DB170c、VM仮想ネットワークDB170d、VLANプール170e、割り当て数管理DB170f、VNIプール170gに基づいて各種処理を実行する。
【0230】
なお、管理プロセス180aを実行したCPU180は、VM管理部18、VMネットワーク管理部19、VTEP管理部20と同様の処理を実行する。また、CPU180上で仮想的に実現される各処理は、常に全ての処理部がCPU180上で稼動する必要はなく、処理に必要な処理のみが仮想的に実現されればよい。
【0231】
なお、上記の管理プログラム170aについては、必ずしも最初からRAM170に記憶させておく必要はない。例えば、コンピュータ100に挿入されるフレキシブルディスク、いわゆるFD(Flexible Disk)、CD(Compact Disk)−ROM、DVD(Digital Video Disk)、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。
【0232】
そして、コンピュータ100がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WAN(Wide Area Network)などを介して他のコンピュータまたはサーバ装置などに記憶させた各プログラムを、コンピュータ100が取得して実行するようにしてもよい。
【0233】
なお、
図37に示すコンピュータ100は、管理プログラム170a以外にも、例えば、管理サーバ10aと同様の機能を有する管理プログラムを実行することができる。
【0234】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【0235】
(付記1)仮想マシンが出力したパケットの転送を、第1のネットワークを介して行う複数の終端装置と、前記終端装置の管理を行う管理装置とを有するマルチテナントシステムにおいて、
前記管理装置は、
前記マルチテナントシステムに含まれるテナントのうち、前記マルチテナントシステム内で稼動する仮想マシンを使用するテナントを識別する第1の識別子を割り当てる第1の割り当て部と、
前記マルチテナントシステムに含まれるテナントのうち、終端装置が設置された第2のネットワーク内で稼動する仮想マシンに対し、前記終端装置ごとに、前記マルチテナントシステム内で稼動する仮想マシンを使用するテナントを識別する第2の識別子を割り当てる第2の割り当て部と、
各仮想マシンに対して前記第1の割り当て部が割り当てた第1の識別子と前記第2の割り当て部が割り当てた第2の識別子とを対応付けた変換情報を、前記終端装置ごとに生成する生成部と、
前記生成部が生成した変換情報を各終端装置に配信する配信部とを有し、
前記終端装置は、
前記配信部が配信した変換情報を記憶する記憶部と、
パケットを受信すると、受信した前記パケットを発信した仮想マシンを使用するテナントに割り当てられた第2の識別子と対応付けられた第1の識別子を、前記記憶部が記憶する変換情報から取得する取得部と、
前記取得部が取得した第1の識別子を含むヘッダを前記パケットに付加してカプセル化する変換部と、
前記変換部がカプセル化したパケットを、前記第1のネットワークを介して他の終端装置へ送信する送信部とを有することを特徴とするマルチテナントシステム。
【0236】
(付記2)前記取得部は、
前記他の終端装置からカプセル化されたパケットを受信すると、前記記憶部が記憶する変換情報から、カプセル化された前記パケットに含まれる第1の識別子に対応付けられた第2の識別子を取得し、
前記変換部は、
カプセル化された前記パケットを、前記取得部が取得した第2の識別子で識別される仮想マシン宛のパケットに変換し、
前記送信部は、
前記終端装置が設置された第2のネットワークに対して、前記仮想マシン宛のパケットを送信することを特徴とする付記1記載のマルチテナントシステム。
【0237】
(付記3)前記第2の割り当て部は、
1つの前記第2のネットワーク内で稼動する仮想マシンのうち、同一テナントに含まれる仮想マシンが複数存在する場合、前記同一テナントに含まれる複数の仮想マシンに対して、同一の第2の識別子を割り当て、
前記変換部は、
前記終端装置が設置された第2のネットワーク内で稼働する仮想マシンのうち、同一の第2の識別子が割り当てられた仮想マシン同士が送受信するパケットについては、カプセル化を行わないことを特徴とする付記1又は2に記載のマルチテナントシステム。
【0238】
(付記4)前記管理装置は、
前記終端装置を識別する終端装置識別子と、前記終端装置が設置されたネットワーク内で稼働する仮想マシンに割り当てられていない第2の識別子とを対応付けて記憶する識別子記憶部を有し、
前記第2の割り当て部は、
新たなテナントが使用する仮想マシンが稼働する場合は、前記識別子記憶部が記憶する第2の識別子のうち、前記新たなテナントが使用する仮想マシンが稼働する第2のネットワークに設置された終端装置の終端装置識別子に対応付けられた第2の識別子の中から、前記新たなテナントが使用する仮想マシンに割り当てる第2の識別子を選択し、前記選択した第2の識別子を前記新たなテナントが使用する仮想マシンに割り当てることを特徴とする付記1〜3のいずれか1項に記載のマルチテナントシステム。
【0239】
(付記5)前記管理装置は、
前記終端装置識別子と、当該終端装置識別子が示す終端装置が設置された第2のネットワーク内で稼働する仮想マシンに割り当てられた第2の識別子と、前記第2のネットワーク内で稼働する仮想マシンに割り当てられた第2の識別子を使用する仮想マシンの数とを対応付けて記憶する使用数記憶部と、
仮想マシンを停止させる場合、前記使用数記憶部が記憶する仮想マシンの数のうち、停止させる前記仮想マシンが稼動する第2のネットワークに設置された終端装置を示す終端装置識別子、および、停止させる前記仮想マシンに割り当てられた第2の識別子に対応付けられた仮想マシンの数から1を減算する減算部と、
仮想マシンの数が零である場合、停止させる前記仮想マシンに割り当てられた第2の識別子と、させる前記仮想マシンが稼働する第2のネットワークに設置された終端装置を示す終端装置識別子とを対応付けて前記識別子記憶部に格納する格納部と
を有することを特徴とする付記4記載のマルチテナントシステム。
【0240】
(付記6)前記ネットワーク内におけるVLAN番号、または拡張VLAN番号、または外部VLAN番号を前記第2の識別子とすることを特徴とする付記1〜5のいずれか1項に記載のマルチテナントシステム。
【0241】
(付記7)前記終端装置は、
前記終端装置が設置されたネットワーク内で稼動する仮想マシンと対応付けられた変換部を複数有し、
前記取得部は、
各変換部と対応付けられた仮想マシンに割り当てられた第2の識別子と対応付けられた第1の識別子を前記変換情報から取得して、取得した前記第1の識別子を各変換部に通知し、
前記変換部は、
前記取得部から通知された第1の識別子を用いて、前記対応付けられた仮想マシンが出力するパケットをカプセル化することを特徴とする付記1〜6のいずれか1項に記載のマルチテナントシステム。
【0242】
(付記8)マルチテナントシステムに含まれるテナントのうち、前記マルチテナントシステム内で稼動する仮想マシンを使用するテナントを識別する第1の識別子を割り当てる第1の割り当て部と、
前記マルチテナントシステムに含まれるテナントのうち、終端装置が設置された第2のネットワーク内で稼動する仮想マシンに対し、前記終端装置ごとに、前記マルチテナントシステム内で稼動する仮想マシンを使用するテナントを識別する第2の識別子を割り当てる第2の割り当て部と、
各仮想マシンに対して前記第1の割り当て部が割り当てた第1の識別子と前記第2の割り当て部が割り当てた第2の識別子とを対応付けた変換情報を、前記終端装置ごとに生成する生成部と、
前記生成部が生成した変換情報に従って前記パケットをカプセル化するように、各終端装置を設定する設定部と
を有することを特徴とする管理装置。
【0243】
(付記9)コンピュータに、
マルチテナントシステムに含まれるテナントのうち、前記マルチテナントシステム内で稼動する仮想マシンを使用するテナントを識別する第1の識別子を割り当てさせ、
前記マルチテナントシステムに含まれるテナントのうち、終端装置が設置された第2のネットワーク内で稼動する仮想マシンに対し、前記終端装置ごとに、前記マルチテナントシステム内で稼動する仮想マシンを使用するテナントを識別する第2の識別子を割り当てさせ、
各仮想マシンに対して割り当てた前記第1の識別子と前記第2の識別子とを対応付けた変換情報を、前記終端装置ごとに生成させ、
前記生成した変換情報に従って前記パケットをカプセル化するように、各終端装置を設定させることを特徴とする管理プログラム。
【0244】
(付記10)仮想マシンが出力したパケットの転送を、第1のネットワークを介して行う複数の終端装置と、前記終端装置の管理を行う管理装置とを有するマルチテナントシステムの制御方法において、
前記管理装置が、
前記マルチテナントシステムに含まれるテナントのうち、前記マルチテナントシステム内で稼動する仮想マシンを使用するテナントを識別する第1の識別子を割り当てし、
前記マルチテナントシステムに含まれるテナントのうち、終端装置が設置された第2のネットワーク内で稼動する仮想マシンに対し、前記終端装置ごとに、前記マルチテナントシステム内で稼動する仮想マシンを使用するテナントを識別する第2の識別子を割り当てし、
各仮想マシンに対して割り当てた前記第1の識別子と前記第2の識別子とを対応付けた変換情報を、前記終端装置ごとに生成し、
前記生成した変換情報を各終端装置に配信し、
前記終端装置が、
前記配信部が配信した変換情報を記憶し、
パケットを受信すると、受信した前記パケットを発信した仮想マシンを使用するテナントに割り当てられた第2の識別子と対応付けられた第1の識別子を、前記記憶した変換情報から取得し、
前記取得した第1の識別子を含むヘッダを前記パケットに付加してカプセル化し、
前記カプセル化したパケットを、前記第1のネットワークを介して他の終端装置へ送信することを特徴とするマルチテナントシステムの制御方法。