(57)【要約】  仮想ネットワーク構築の実現にあたり、高速・大容量な通信に適し、またネットワーク通信の動作の一貫性を高めることのできる、通信システム、制御システム、通信方法および記録媒体を提供する。本発明による制御システムは、ＶＮＩ（VXLAN Network Identifier）とＶＸＬＡＮ（Virtual eXtensible Local Area Network）トンネルのユーザのＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索するデータベースを、有する。
2016035306.tif 000002
【特許請求の範囲】
【請求項１】
ＶＮＩ（VXLAN Network Identifier）とＶＸＬＡＮ（Virtual eXtensible Local Area Network）トンネルのユーザのＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索するデータベースを有する、
制御システム。
【請求項２】
利用可能なＯＳ（Operating System）のネットワークスタック処理を使用するためのＵＤＰ（User Datagram Protocol）ソケットと、
前記ＯＳのネットワークスタック処理の結果生成されるパケットを受け取るためのファイルディスクリプタとをさらに有する、請求項１に記載の制御システム。
【請求項３】
前記利用可能なＯＳのネットワークスタック処理のＡＲＰ（Address Resolution Protocol）テーブルに対応するキャッシュをさらに有する、請求項２に記載の制御システム。
【請求項４】
物理マシン上に構成されたＶＭ（Virtual Machine）と、
前記物理マシン上に構成されたトンネルエンドポイントであって、ＶＮＩ（VXLAN Network Identifier）と他の物理マシンにあるＶＭ（Virtual Machine）のＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索するデータベースを有するトンネルエンドポイントと、
ネットワークスタック処理部を有するＯＳと、を備える通信システム。
【請求項５】
前記トンネルエンドポイントは、前記ＯＳのネットワークスタック処理を使用するためのＵＤＰ（User Datagram Protocol）ソケットと、前記ＯＳのネットワークスタック処理の結果生成されるパケットを受け取るためのファイルディスクリプタとをさらに有する、請求項４に記載の通信システム。
【請求項６】
前記トンネルエンドポイントは、前記ＯＳのネットワークスタック処理のＡＲＰ（Address Resolution Protocol）テーブルに対応するキャッシュをさらに有する、請求項５に記載の通信システム。
【請求項７】
ＶＮＩ（VXLAN Network Identifier）とＶＸＬＡＮ（Virtual eXtensible Local Area Network）トンネルのユーザのＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索し、
前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得できたときには、カプセリングしたパケットを完成させて、ＮＩＣ（Network Interface Card）からパケットを送出して前記通信先のトンネルエンドポイントの外向きのインターフェースへ通信を行う、通信方法。
【請求項８】
前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得できないときには、利用可能なＯＳ（Operating System）のネットワークスタック処理を使用して、前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得し、カプセリングしたパケットを完成させて、ＮＩＣ（Network Interface Card）からパケットを送出する、請求項７に記載の通信方法。
【請求項９】
前記取得できた前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスと、ＡＲＰ（Address Resolution Protocol）テーブルとから通信先のトンネルエンドポイントの外向きのインターフェースのＭＡＣアドレスを特定する、請求項７に記載の通信方法。
【請求項１０】
パケット送出により通信するためのプログラムが記録された記録媒体であって、
トンネルエンドポイントに、
ＶＮＩ（VXLAN Network Identifier）とＶＸＬＡＮ（Virtual eXtensible Local Area Network）トンネルのユーザのＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索する処理と、
前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得できたときには、カプセリングしたパケットを完成させて、ＮＩＣ（Network Interface Card）からパケットを送出して前記通信先のトンネルエンドポイントの外向きのインターフェースへ通信する通信処理と、を実行させるプログラムが記録された記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム、通信システム、通信方法および記録媒体に関し、特に物理ネットワークを論理的に分離することで、仮想的なネットワークを物理ネットワーク上に構築する通信システムや通信方法に関する。
【背景技術】
【０００２】
サーバ仮想化におけるメリットの１つとして、仮想マシン（ＶＭ:Virtual Machine）の物理的な配置を柔軟にできることが挙げられるが、その柔軟さを最大限に生かすためには、ネットワークも合わせて仮想化を行う必要がある。ネットワーク仮想化で重要な機能は、物理ネットワークをユーザテナント毎などの単位で論理的にスライシングし、仮想的なネットワークを物理ネットワーク上に重層的に構築することである。仮想ネットワーク構築の実現においては、ＶＸＬＡＮ（Virtual eXtensible Local Area Network）といったトンネリングプロトコルを使用する手法が知られている。【０００３】
現在注目されている手法の１つは、ＶＸＬＡＮといったトンネリングプロトコルを利用する手法である（非特許文献１）。サーバ間に仮想化のための特殊な機器を導入することなく、レイヤ２の通信をレイヤ３でトンネリングすることでブロードキャストドメインが延長される。これにより、ネットワークの利用者はこのことを意識することなく、延長されたブロードキャストドメインを利用することができる。【０００４】
一方近年のネットワーク通信は、一般的に使われているＯＳ（Operating System）による処理では追い付けないほど大容量な性能を求められることが増えている。そのため、Ｉｎｔｅｌ（登録商標） ＤＰＤＫ（非特許文献２）などの、汎用のハードウェアの上で動作し、パケット転送の性能に特化して高速化する仕組みが考案されている。またこの仕組みを利用し、仮想マシン間の通信を高速に行う仮想スイッチも実現されつつある（非特許文献３）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】「VXLAN: A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks」、［online］、［平成２６年（２０１４）年７月２４日検索］、インターネット<http://datatracker.ietf.org/doc/draft-mahalingam-dutt-dcops-vxlan/>
【非特許文献２】「Packet Processing - Intel（登録商標）DPDK」、［online］、［平成２６年（２０１４）年７月２４日検索］、インターネット<https://01.org/packet-processing/overview/dpdk-detail>
【非特許文献３】「Packet Processing - Intel（登録商標）DPDK vSwitch and Openstack* Paches」、［online］、［平成２６年（２０１４）年７月２４日検索］、インターネット<https://01.org/packet-processing/intel%C2%AE-dpdk-vswitch-and-openstack-patches>
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＶＸＬＡＮは、ＵＤＰ（User Datagram Protocol）を使用してカプセル化を行う。この時、仮想ネットワーク上で大容量通信を実現しようとした場合、いくつかの解決すべき課題がある。【０００７】
第１の課題は、ＵＤＰを使用する際、一般にはＯＳのＵＤＰソケットを使用することになるため、求める大容量通信の実現が難しいことである。ネットワークスタックの処理は重い処理であり、またＯＳで実装されていることから高速化の工夫を入れ込むことが難しいため、どうしても通信性能を劣化させる要因となってしまう。【０００８】
第２の課題は、何らかの高速化の仕組みの上にＵＤＰ通信を実装することで仮想ネットワーク上の通信性能を向上しようとしても、信頼性、一貫性、メンテナンス性などの観点で問題が発生してしまうことである。広く一般的に使われているＯＳによるネットワークスタックとは別に、ネットワークスタックの処理を改めて実装することは難易度が高く、商用で運用するには信頼性という面で課題が多い。またＯＳで実装されるようなレイヤについては専用品ではなく、汎用のＬｉｎｕｘ（登録商標）などの使用が求められることも多く、ネットワークスタック処理を独自に作りこむこと自体が受け入れられない分野も存在する。ＶＸＬＡＮではＵＤＰ／ＩＰ（User Datagram Protocol/Internet Protocol）を利用するが、その際一般的に使用されているＬｉｎｕｘ系ＯＳにて通信処理を行うと、高速・大容量な通信が実現できない。また、高速パケット転送処理の仕組みを使うとすると、ＵＤＰ／ＩＰといったレイヤの処理を改めてその仕組みの上で作りこむ必要があり、複数のネットワークスタック処理が１つの装置内に存在することとなる。【０００９】
このため、もし高速なネットワークスタック処理の実装ができた場合でも、ネットワークスタック処理としてＯＳとＶＸＬＡＮ用との２つのルート・管理情報が存在してしまうため、ネットワーク通信の動作の一貫性が失われてしまう。障害解析やバグ対処などの難易度を高める原因となってしまう。このため、メンテナンス性が低下するといった課題があった。【００１０】
キャリアにおける大量のデータ通信を処理するノードの仮想化の用途においては、発生する通信量が一般的なオペレーティングシステムが備えるネットワーク通信機能で処理しきれない量になるため、何らかのパケット高速転送処理が必要になる。また一部の狭い世界のみで使われているようなソフトウェアの利用は避けられており、広く一般で使用されているＯＳを使用したいという需要が存在している。【００１１】
したがって本発明の目的は、仮想ネットワーク構築の実現にあたり、高速・大容量な通信に適し、またネットワーク通信の動作の一貫性を高めることのできる、制御システム、通信システム、通信方法および記録媒体を提供することにある。
【課題を解決するための手段】
【００１２】
前記目的を達成するため、本発明に係る制御システムは、ＶＮＩ（VXLAN Network Identifier）とＶＸＬＡＮ（Virtual eXtensible Local Area Network）トンネルのユーザのＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索するデータベースを、有する。【００１３】
本発明に係る通信システムは、
物理マシン上に構成されたＶＭ（Virtual Machine）と、
上記物理マシン上に構成されたトンネルエンドポイントであって、ＶＮＩ（VXLAN Network Identifier）と他の物理マシンにあるＶＭ（Virtual Machine）のＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索するデータベースを有するトンネルエンドポイントと、
ネットワークスタック処理部を有するＯＳ（Operating System）と、を備える。【００１４】
本発明に係る通信方法は、ＶＮＩ（VXLAN Network Identifier）とＶＸＬＡＮ（Virtual eXtensible Local Area Network）トンネルのユーザのＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索し、
上記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得できたときには、カプセリングしたパケットを完成させて、ＮＩＣ（Network Interface Card）からパケットを送出して上記通信先のトンネルエンドポイントの外向きのインターフェースへ通信を行う。【００１５】
本発明に係るパケット送出により通信するためのプログラムが記録された記録媒体は、
トンネルエンドポイントに、
ＶＮＩ（VXLAN Network Identifier）とＶＸＬＡＮ（Virtual eXtensible Local Area Network）トンネルのユーザのＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索する処理と、
上記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得できたときには、カプセリングしたパケットを完成させて、ＮＩＣ（Network Interface Card）からパケットを送出して上記通信先のトンネルエンドポイントの外向きのインターフェースへ通信する通信処理と、を実行させるプログラムが記録されている。
【発明の効果】
【００１６】
本発明は、ＶＸＬＡＮで実現する仮想ネットワーク上で大容量な通信を実現できる。
【図面の簡単な説明】
【００１７】
【図１Ａ】本発明の最上位概念の実施形態に係る制御システムを示すブロック図である。
【図１Ｂ】本発明の上位概念の実施形態に係る制御システムを示すブロック図である。
【図２】本発明の第１実施形態に係る通信システムを示すブロック図である。
【図３】本発明の第１実施形態に係る通信システムの動作を説明するためのブロック図である。
【図４】本発明の第１実施形態に係る通信システムの動作を説明するためのブロック図である。
【図５】本発明の第１実施形態に係る通信システムの動作を説明するためのブロック図である。
【図６】本発明の第１実施形態に係る通信システムの動作を説明するためのブロック図である。
【図７】本発明の第１実施形態に係る通信システムの動作を説明するためのブロック図である。
【発明を実施するための形態】
【００１８】
本発明の実施形態では、物理ネットワークを論理的に分離することで、仮想的なネットワークを物理ネットワーク上に重層的に構築した際に、その仮想ネットワーク上での大容量通信を実現する。
【００１９】
本発明の実施形態では、一般的なＴＣＰ／ＩＰ、ＵＤＰ／ＩＰ通信の機能を持つオペレーティングシステム、およびサービスが必要とする高速なパケット転送処理の仕組みが存在する状況において、仮想ネットワーク上での大容量通信の実現を達成する。しかも、装置として一貫性を持ったネットワーク通信機能を持ちながら、仮想ネットワーク上での大容量通信の実現を達成する。
【００２０】
本発明の実施形態では、ネットワークスタック処理を最低限に抑えることにより、実効上の性能をパケット転送のみの性能にほぼ等しくする。ＶＸＬＡＮの特性によりＵＤＰのヘッダに乗る情報がほとんど変わらないことを利用し、通信性能にネットワークスタック処理を含まないようにする仕組みを実現する。
【００２１】
さらに本発明の実施形態では、ネットワークスタック処理の安定性、一貫性、メンテナンス性を低下させない。全てのネットワークスタック処理をＯＳにそのまま引き渡すことにより、汎用品のＯＳを使って仮想ネットワーク上の大容量通信を実現できる。また処理を行うルート・管理情報が１つになるので、ネットワーク処理自体の解析がシンプルになり、メンテナンス対象も１つに絞ることができる。
【００２２】
図１Ａは、本発明の最上位概念の実施形態に係る制御システムを示すブロック図である。図１Ａの制御システム２０ａは、ＦＤＢ（Forwarding Database）２５を備える。ＦＤＢ２５はキャッシュデータであり、ＶＮＩとＶＸＬＡＮトンネルのユーザのＭＡＣアドレスから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを検索するためのデータベースである。制御システム２０ａはＶＭからパケットを受け取った場合、その宛先ＶＭのＭＡＣアドレスを見るだけで、ＦＤＢ２５により宛先ＯｕｔｅｒのＩＰアドレスなどから宛先ＯｕｔｅｒのＭＡＣアドレスを特定できる。そのため単純なヘッダ追加でＵＤＰ／ＩＰヘッダを完成させることができ、パケット転送処理のみでＶＸＬＡＮの通信を行うことができる。
【００２３】
図１Ｂは、本発明の上位概念の実施形態に係る制御システムを示すブロック図である。制御システムの一例として、トンネルエンドポイント２０を示す。図１Ｂのトンネルエンドポイント２０は、ＦＤＢ２５と、ＵＤＰソケット２３と、ＦＤ（ファイルディスクリプタ）２４と、を備える。ＦＤＢ２５はキャッシュデータであり、ＶＮＩとＶＸＬＡＮトンネルのユーザのＭＡＣアドレスから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを検索するためのデータベースである。以下、ＶＸＬＡＮトンネルのユーザの一例として、他の物理マシンにあるＶＭの場合で説明する。
【００２４】
ＵＤＰソケット２３は、ＦＤＢ２５に宛先ＶＭの情報がない場合や、宛先がブロードキャストであるため外向きのインターフェースからマルチキャスト通信を行う必要があるといった場合に、ＯＳによるネットワークスタック処理を利用するためのものである。
【００２５】
ＦＤ２４は、ＯＳによるネットワークスタック処理の結果できたパケットを受け取るためのものである。
【００２６】
このトンネルエンドポイント２０はＶＭからパケットを受け取った場合、その宛先ＶＭのＭＡＣアドレスを見るだけで、ＦＤＢ２５により宛先ＯｕｔｅｒのＩＰアドレスなどから宛先ＯｕｔｅｒのＭＡＣアドレスを特定できる。そのため単純なヘッダ追加でＵＤＰ／ＩＰヘッダを完成させることができ、パケット転送処理のみでＶＸＬＡＮの通信を行うことができる。
【００２７】
さらに、トンネルエンドポイント２０がＶＭから受け取ったパケットについて、ＦＤＢ２５に宛先ＶＭの情報がない場合は、ＵＤＰソケット２３を使って、ＯＳによりネットワークスタック処理を実施する。また、トンネルエンドポイント２０がＶＭから受け取ったパケットについて、宛先がブロードキャストであるためＯｕｔｅｒからマルチキャスト通信を行う必要があるといった場合にも、ＵＤＰソケット２３を使って、ＯＳのネットワークスタック処理を実施する。さらにトンネルエンドポイント２０は、ネットワークスタック処理の結果できたパケットをＦＤ２４から受け取ることで、ＶＭのＭＡＣアドレスと対応するＯｕｔｅｒのＩＰアドレスの組を知ることができる。こうして、ＵＤＰ／ＩＰヘッダを完成させることができ、ＶＸＬＡＮの通信を行うことができる。以下、本発明の好ましい実施形態について、図面を参照しながら詳細に説明する。
【００２８】
〔第１実施形態〕
次に、本発明の第１実施形態による通信システムについて、説明する。図２は、本発明の第１実施形態による通信システムを説明するためのブロック図である。図２の各ブロックは１つの物理マシン上に搭載される。この構成を持つ物理マシンは複数あることが想定される。既存の通信を行う装置として、仮想マシン１１が存在している。仮想マシンを以下、ＶＭ(Virtual Machine)と呼び、仮想マシン１１を以下、ＶＭ１１と呼ぶことにする。１つの物理マシン上に搭載されるＶＭの数に、制限はない。各ＶＭは仮想ネットワークを意識せず、通常のＴＣＰ／ＩＰ通信（Transmission Control Protocol/Internet Protocol通信）を行う。物理マシン上には、ＵＤＰ／ＩＰ通信が可能なネットワークスタック処理部３１を持つＯＳ３０が存在している。
【００２９】
さらに物理マシン上には、ＶＸＬＡＮによるトンネリングを実施するトンネルエンドポイント２０が存在する。トンネルエンドポイント２０は、ＶＸＬＡＮの仕様に従いトンネルを管理する。ＶＸＬＡＮでは、ＶＮＩ（VXLAN Network Identifier）と呼ばれるＩＤで仮想ネットワークが管理される。
【００３０】
各ＶＭの仮想ＮＩＣ（Network Interface Card）がどのＶＮＩに収容されるかの管理、および違う物理マシン上にいる同じＶＮＩに収容された仮想ＮＩＣを持つＶＭ同士をレイヤ２トンネリングすることにより、物理ネットワーク上に仮想ネットワークを実現する。トンネリングの実装方法に制限はない。
【００３１】
トンネルエンドポイント２０は、内向きのインターフェースとしてＩｎｎｅｒ２１を有し、外向きのインターフェースとしてＯｕｔｅｒ２２を有している。外向きのインターフェースとしてＯｕｔｅｒ２２には、ＩＰアドレスが振られている。複数物理マシン間のトンネルエンドポイント同士は、お互いのＯｕｔｅｒ同士が通信できるようにＵＤＰ／ＩＰヘッダによりカプセリングを行い、ＵＤＰ／ＩＰ通信を行う。これにより、複数物理マシン間のトンネルエンドポイント同士は、レイヤ３超えの通信を行う。
【００３２】
ＶＭ１１とトンネルエンドポイントのＩｎｎｅｒ２１との間、およびトンネルエンドポイントのＯｕｔｅｒ２２とＮＩＣ４１を通じた外部との間は、高速パケット転送処理を用いて大容量の通信が可能であるとする。
【００３３】
本発明の実施形態の手法の第一点として、トンネルエンドポイント２０に、ＦＤＢ（Forwarding Database）と呼ばれるキャッシュデータを持たせている。ＦＤＢは、ＶＮＩとＶＸＬＡＮトンネルのユーザの一例としての他の物理マシンにあるＶＭのＭＡＣアドレスから、通信先のトンネルエンドポイントＯｕｔｅｒのＩＰアドレスを引くためのＤＢである。
【００３４】
トンネルエンドポイント２０がＶＭ１１からパケットを受け取った場合、その宛先ＶＭのＭＡＣアドレスを見るだけで、ＦＤＢ２５から宛先ＯｕｔｅｒのＭＡＣアドレスを特定できる。すなわちＦＤＢ２５を参照することにより、宛先ＯｕｔｅｒのＩＰアドレス、そのＩＰアドレスとＯＳ３０のＡＲＰ（Address Resolution Protocol）テーブルから、宛先ＯｕｔｅｒのＭＡＣアドレスを特定できる。そのため単純なヘッダ追加でＵＤＰ／ＩＰヘッダを完成させることができ、パケット転送処理のみでＶＸＬＡＮの通信を行うことができる。
【００３５】
第二点として、トンネルエンドポイント２０にＯＳ３０のネットワークスタック処理を使用するためのＵＤＰソケット２３、およびその処理の結果生成されるパケットを受け取るためのＦＤ（ファイルディスクリプタ）２４を持たせている。
【００３６】
トンネルエンドポイント２０がＶＭ１１から受け取ったパケットについて、ＦＤＢ２５に宛先ＶＭの情報がない場合は、ＵＤＰソケット２３を使って、ＯＳ３０のネットワークスタック処理部３１によりネットワークスタック処理を実施する。トンネルエンドポイント２０がＶＭ１１から受け取ったパケットについて、宛先がブロードキャストであるためＯｕｔｅｒからマルチキャスト通信を行う必要があるといった場合にも、ＯＳ３０によるネットワークスタック処理を実施する。
【００３７】
さらにトンネルエンドポイント２０は、ネットワークスタック処理の結果できたパケットをＦＤ２４から受け取ることで、ＶＭのＭＡＣアドレスと対応するＯｕｔｅｒのＩＰアドレスの組を知ることができるため、ＦＤＢ２５にその情報を追加する。
【００３８】
この操作により、ＶＸＬＡＮのためだけにネットワークスタック処理を持つ必要がなくなる。また各物理装置上のＶＭ構成、仮想ネットワーク構成に変更がない限りはＦＤＢのレコードは不変であるため、ＯＳによるネットワークスタック処理は通信の最初のみの実施となる。ネットワークスタック処理の性能は全体の通信性能にほとんど影響を与えない。
【００３９】
（実施形態の構成）
次に、本発明の実施形態の構成について、図面を参照して詳細に説明する。図２を参照すると、本実施形態の構成は、通信を行いサービス提供するＶＭ１１と、ＶＸＬＡＮによる仮想ネットワーク通信を行うトンネルエンドポイント２０と、ＵＤＰ／ＩＰ通信機能を持つＯＳ３０と、外部と通信するためのＮＩＣ４１とから構成されている。本構成を持つ物理マシンが複数存在し、ＮＩＣ４１を通してＩＰ通信が可能となっている。
【００４０】
トンネルエンドポイント２０は、ＶＭ１１とパケットをやり取りするＩｎｎｅｒ２１と、ＩＰアドレスを持ちＮＩＣ４１を通して外部の別物理マシンと通信するＯｕｔｅｒ２２と、を有する。さらにトンネルエンドポイント２０は、ＯＳ３０のネットワークスタック処理を使うためのＵＤＰソケット２３を有する。さらにトンネルエンドポイント２０は、ＯＳ３０が行ったネットワークスタック処理の結果できたパケットの受け取りや、外部から来たパケットをネットワークスタック処理に渡すためのＦＤ２４を有する。またトンネルエンドポイント２０は、ＶＸＬＡＮ処理を実施するためのキャッシュデータとして、ＦＤＢ（Forwarding Database）２５を持つ。
【００４１】
ＶＭ１１とＩｎｎｅｒ２１の間は高速パケット転送処理の仕組み、および仮想スイッチを利用して、Ｌ２レイヤで繋がれた高速な通信ができるようにする。同様にＯｕｔｅｒ２２がＮＩＣ４１を通して行う外部との通信も高速で行えるようにする。
【００４２】
ＦＤＢ２５は、ＶＮＩと仮想ＮＩＣのＭＡＣアドレスの組をキーとし、その仮想ＮＩＣと収容するＶＮＩの対応を管理しているトンネルエンドポイントのＯｕｔｅｒＩＰアドレスを紐づけるＤＢ（Database）である。
【００４３】
ＯＳ３０はＵＤＰソケットからネットワークスタック処理を実施し、ＵＤＰ／ＩＰ通信ができるものであれば、その他の制限はない。
【００４４】
（実施形態の動作）
次に、図３〜図５を参照して本発明の実施形態の動作として、ＶＭがＶＸＬＡＮを使って他のＶＭへ通信する処理を詳細に説明する。
【００４５】
図３、図４がＶＭ１１から送信を行う場合の処理の流れである。ＦＤＢ２５に送信先のＯｕｔｅｒの情報がある場合とない場合で処理が分岐する。
【００４６】
図３が、ＦＤＢ２５に送信先のＯｕｔｅｒの情報がある場合の送信の流れである。ＶＭ１１はＶＸＬＡＮを使って送信をするため、トンネルエンドポイント２０のＩｎｎｅｒ２１に向かって高速にパケットを転送する。トンネルエンドポイント２０は、パケットを受け取った仮想ＮＩＣを収容するＶＮＩと、受け取ったパケットに記載のある宛先ＶＭのＭＡＣアドレスをキーとして、ＦＤＢ２５を参照する。こうして、ＦＤＢ２５から宛先ＶＭの仮想ＮＩＣを収容するトンネルエンドポイントのＯｕｔｅｒＩＰアドレスを取得する。
【００４７】
ＯＳ３０のＡＲＰテーブルを参照し、ＡＰＲ情報を取得する。ＡＲＰテーブルの情報だけ参照すればＯｕｔｅｒのＭＡＣアドレスも分かり、カプセル化するための情報が揃う。こうして、カプセリングしたパケットを完成させ、直接ＮＩＣ４１から高速にパケットを送出することで、宛先トンネルエンドポイントのＯｕｔｅｒへの通信を行う。
【００４８】
図４が、ＦＤＢ２５に送信先のＯｕｔｅｒの情報がない場合の送信の流れである。またＯｕｔｅｒの情報がＡＲＰテーブルにない時、およびＶＭ１１からの送信要求がブロードキャストである時もこの場合に該当する。ＶＭ１１はＶＸＬＡＮを使って送信をするため、トンネルエンドポイント２０のＩｎｎｅｒ２１に向かって高速にパケットを転送する。
【００４９】
トンネルエンドポイント２０は、パケットを受け取った仮想ＮＩＣを収容するＶＮＩと、受け取ったパケットに記載のある宛先ＶＭのＭＡＣアドレスをキーとして、ＦＤＢ２５から情報を参照する。ＦＤＢ２５に送信先のＯｕｔｅｒの情報がない場合には必要な情報が揃わないため、ＶＸＬＡＮの仕様に従ったマルチキャストやＡＲＰリクエストを行う必要がある。トンネルエンドポイント２０はＵＤＰソケット２３を使ってＯＳ３０に送出するパケット生成を任せ、その結果をＮＩＣ４１から送出する。
【００５０】
図５がＶＭ１１への受信を行う場合の処理の流れである。外部からＮＩＣ４１を通じて、トンネルエンドポイントのＯｕｔｅｒ２２へパケットが届き、ＶＸＬＡＮのパケットと判断されれば、カプセルを外してから、Ｉｎｎｅｒ２１から受信するＶＭ１１へパケットを高速に転送する。またこのとき、ＶＮＩ、通信元ＶＭのＭＡＣアドレス、通信元トンネルエンドポイントＯｕｔｅｒのＩＰアドレスがパケットに乗っているため、必要であればこの情報をＦＤＢ２５に学習させる。
【００５１】
図６で別の受信時の処理を説明する。ＯＳ３０がネットワークスタック処理を行う際に必要となる情報として、他の物理マシンにあるトンネルエンドポイントのＡＲＰ Ｒｅｓｐｏｎｓｅを受け取る必要がある。受信パケットがＡＲＰ Ｒｅｓｐｏｎｓｅと分かった段階で、ＦＤ２４からＯＳ３０のネットワークスタック処理部３１にパケットを流し込んで渡して、ＯＳ３０のＡＲＰテーブルを学習させる。
【００５２】
（実施形態の効果）
第１の効果は、ＶＸＬＡＮで実現する仮想ネットワーク上で大容量な通信ができることにある。この結果、既存で大容量通信を行っている装置をそのまま使用して、大容量の通信性能を維持したままサーバ仮想化、ネットワーク仮想化を実現できる。
【００５３】
その理由としては、ネットワーク仮想化実現のために用いたトンネリングのためのＵＤＰ通信で、必要なネットワークスタック処理を必要最低限に抑えることができたことがあげられる。そのため通信処理の大部分を単純なパケット転送処理に限定することができ、大容量な通信処理を実現できるようになる。
【００５４】
第２の効果は、仮想ネットワーク上で必要な性能を出すためのパケット転送の仕組み、およびＵＤＰ通信のためのネットワークスタック処理を、自由に選択できることにある。この結果、仮想ネットワークに求める性能と、その装置上で使用するＯＳを、独立して選択することができる。
【００５５】
その理由は、必要最低限に抑えたネットワークスタック処理は通信性能にほとんど影響を与えないため、たとえ選択したＯＳのネットワークスタック処理が低速であっても、処理自体を引き渡すことができるためである。
【００５６】
また、ここで選択したネットワークスタック処理は、高速である必要がない他の処理でも使用される処理であり、装置内でネットワークスタックの処理が統一されるため、障害時の解析や保守作業をシンプルにすることができる。
【００５７】
〔その他の実施形態〕
次に、本発明のその他の実施形態による通信システムについて、説明する。上述した第１実施形態では、ＯＳ３０がネットワークスタック処理部３１を備えており、ＯＳ３０のネットワークスタック処理を利用するものとして、説明した。このネットワークスタック処理部３１が持つＡＲＰテーブルをキャッシュとして、トンネルエンドポイント２０の中に持っても良い。
【００５８】
本実施形態によれば、上述した第１実施形態と同様な効果がもたらされる。さらに本実施形態では、このネットワークスタック処理部３１が持つＡＲＰテーブルをキャッシュとして、トンネルエンドポイント２０の中に持つ構成により、図２の送信処理の際にカプセル処理の全てをトンネルエンドポイント２０にて実施できる。その結果、第１実施形態と比べて、より高速な通信が期待できる。
【００５９】
ただしＡＲＰテーブルがトンネルエンドポイント２０とＯＳ３０の２か所に存在することになるので、キャッシュのエイジングを行う、ＯＳからＡＲＰテーブルの変更を通知してもらうなどの、一貫性の問題が起きないような適切な管理をする必要がある。
【００６０】
さらに、本発明の実施形態では、送信処理が図３の流れになるか、図４の流れになるかは、宛先トンネルエンドポイントの情報が揃うかどうかで分岐していたが、その他の制限の都合で図４の流れを選択させてもよい。例えば宛先情報が確定している場合でも、フラグメントの必要がある場合にはその処理をＯＳに任せる必要があるため、図４の流れを選択する。また受信時もフラグメントしたパケットを受け取るケースがある場合は、図７のようにＦＤ２４からネットワークスタック処理部３１へ処理を投げてから、ＶＭ１１へ渡すこともあり得る。このルートを構成することで、あらゆるＶＸＬＡＮパケットの送受信に対応することができる。
【００６１】
以上、本発明の好ましい実施形態や実施形態を説明したが、本発明はこれに限定されるものではない。上述した実施形態では、ＶＮＩと他の物理マシンにあるＶＭのＭＡＣアドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを検索するものとして説明したが、本発明はこれに限られない。例えば、ＶＮＩとＶＸＬＡＮトンネルのユーザのＭＡＣアドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを検索する場合に、上述した顕著な効果がもたらされる。また、上述したトンネルエンドポイントの動作は、このような動作を実行させるプログラムにおいても実現可能である。なお、このプログラムは、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記録デバイス、フレキシブルディスク（Flexible Disk）等の磁気記録媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記録媒体などのコンピュータが読み取り可能な記録媒体の形態で、流通され得る。このような記録媒体に記録されたプログラムを読み込んで実行することにより、本実施形態の通信機能をソフトウェア的に実現してもよい。請求の範囲に記載した発明の範囲内で、種々の変形が可能であり、それらも本発明の範囲に含まれることはいうまでもない。
【００６２】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）ＶＮＩ（VXLAN Network Identifier）とＶＸＬＡＮ（Virtual eXtensible Local Area Network）トンネルのユーザのＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索するデータベースを有する、制御システム。
（付記２）利用可能なＯＳ（Operating System）のネットワークスタック処理を使用するためのＵＤＰ（User Datagram Protocol）ソケットと、前記ＯＳのネットワークスタック処理の結果生成されるパケットを受け取るためのファイルディスクリプタとをさらに有する、付記１に記載の制御システム。
（付記３）前記利用可能なＯＳのネットワークスタック処理のＡＲＰ（Address Resolution Protocol）テーブルに対応するキャッシュをさらに有する、付記２に記載の制御システム。
（付記４）前記ＶＸＬＡＮトンネルのユーザは、他の物理マシンにあるＶＭ（Virtual Machine）である、付記１乃至付記３のいずれか一つに記載の制御システム。
（付記５）物理マシン上に構成されたＶＭ（Virtual Machine）と、前記物理マシン上に構成されたトンネルエンドポイントであって、ＶＮＩ（VXLAN Network Identifier）と他の物理マシンにあるＶＭ（Virtual Machine）のＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索するデータベースを有するトンネルエンドポイントと、ネットワークスタック処理部を有するＯＳ（Operating System）と、を備える通信システム。
（付記６）前記トンネルエンドポイントは、前記ＯＳのネットワークスタック処理を使用するためのＵＤＰ（User Datagram Protocol）ソケットと、前記ＯＳのネットワークスタック処理の結果生成されるパケットを受け取るためのファイルディスクリプタとをさらに有する、付記５に記載の通信システム。
（付記７）前記トンネルエンドポイントは、前記ＯＳのネットワークスタック処理のＡＲＰ（Address Resolution Protocol）テーブルに対応するキャッシュをさらに有する、付記６に記載の通信システム。
（付記８）ＶＮＩ（VXLAN Network Identifier）とＶＸＬＡＮ（Virtual eXtensible Local Area Network）トンネルのユーザのＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索し、前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得できたときには、カプセリングしたパケットを完成させて、ＮＩＣ（Network Interface Card）からパケットを送出して前記通信先のトンネルエンドポイントの外向きのインターフェースへ通信を行う、通信方法。
（付記９）前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得できないときには、利用可能なＯＳ（Operating System）のネットワークスタック処理を使用して、前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得し、カプセリングしたパケットを完成させて、ＮＩＣ（Network Interface Card）からパケットを送出する、付記８に記載の通信方法。
（付記１０）前記取得できた前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスと、ＡＲＰ（Address Resolution Protocol）テーブルとから通信先のトンネルエンドポイントの外向きのインターフェースのＭＡＣアドレスを特定する、付記８に記載の通信方法。
（付記１１）前記ＶＸＬＡＮトンネルのユーザは、他の物理マシンにあるＶＭ（Virtual Machine）である、付記８乃至付記１０のいずれか一つに記載の通信方法。
（付記１２）トンネルエンドポイントに、ＶＮＩ（VXLAN Network Identifier）とＶＸＬＡＮ（Virtual eXtensible Local Area Network）トンネルのユーザのＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索する処理と、前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得できたときには、カプセリングしたパケットを完成させて、ＮＩＣ（Network Interface Card）からパケットを送出して前記通信先のトンネルエンドポイントの外向きのインターフェースへ通信する通信処理と、を実行させる、パケット送出により通信するためのプログラムが記録された記録媒体。
（付記１３）前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得できないときには、利用可能なＯＳ（Operating System）のネットワークスタック処理を使用して、前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得し、カプセリングしたパケットを完成させて、ＮＩＣ（Network Interface Card）からパケットを送出する、付記１２に記載のプログラムが記録された記録媒体。
（付記１４）前記取得できた前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスと、ＡＲＰ（Address Resolution Protocol）テーブルとから通信先のトンネルエンドポイントの外向きのインターフェースのＭＡＣアドレスを特定する特定処理をさらに含む、付記１２に記載のプログラムが記録された記録媒体。
（付記１５）前記ＶＸＬＡＮトンネルのユーザは、他の物理マシンにあるＶＭ（Virtual Machine）である、付記１２乃至付記１４のいずれか一つに記載のプログラムが記録された記録媒体。
【産業上の利用可能性】
【００６３】
本発明は、キャリアにおける大量のデータ通信を処理するノードの仮想化の用途に適用できる。【００６４】
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。【００６５】
この出願は、２０１４年９月１日に出願された日本出願特願２０１４−１７６９２７号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００６６】
１１    ＶＭ
２０    トンネルエンドポイント
２０ａ    制御システム
２１    Ｉｎｎｅｒ
２２    Ｏｕｔｅｒ
２３    ＵＤＰソケット
２４    ＦＤ
２５    ＦＤＢ
３０    ＯＳ
３１    ネットワークスタック処理部
４１    ＮＩＣ
【図１Ａ】
2016035306.tif 000003
【図１Ｂ】
2016035306.tif 000004
【図２】
2016035306.tif 000005
【図３】
2016035306.tif 000006
【図４】
2016035306.tif 000007
【図５】
2016035306.tif 000008
【図６】
2016035306.tif 000009
【図７】
2016035306.tif 000010
【手続補正書】
【提出日】平成29年2月20日(2017.2.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ＶＮＩ（VXLAN Network Identifier）とＶＸＬＡＮ（Virtual eXtensible Local Area Network）トンネルのユーザのＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索するデータベースを有する、
制御システム。
【請求項２】
利用可能なＯＳ（Operating System）のネットワークスタック処理を使用するためのＵＤＰ（User Datagram Protocol）ソケットと、
前記ＯＳのネットワークスタック処理の結果生成されるパケットを受け取るためのファイルディスクリプタとをさらに有する、請求項１に記載の制御システム。
【請求項３】
前記利用可能なＯＳのネットワークスタック処理のＡＲＰ（Address Resolution Protocol）テーブルに対応するキャッシュをさらに有する、請求項２に記載の制御システム。
【請求項４】
物理マシン上に構成されたＶＭ（Virtual Machine）と、
前記物理マシン上に構成されたトンネルエンドポイントであって、ＶＮＩ（VXLAN Network Identifier）と他の物理マシンにあるＶＭ（Virtual Machine）のＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索するデータベースを有するトンネルエンドポイントと、
ネットワークスタック処理部を有するＯＳと、を備える通信システム。
【請求項５】
前記トンネルエンドポイントは、前記ＯＳのネットワークスタック処理を使用するためのＵＤＰ（User Datagram Protocol）ソケットと、前記ＯＳのネットワークスタック処理の結果生成されるパケットを受け取るためのファイルディスクリプタとをさらに有する、請求項４に記載の通信システム。
【請求項６】
前記トンネルエンドポイントは、前記ＯＳのネットワークスタック処理のＡＲＰ（Address Resolution Protocol）テーブルに対応するキャッシュをさらに有する、請求項５に記載の通信システム。
【請求項７】
ＶＮＩ（VXLAN Network Identifier）とＶＸＬＡＮ（Virtual eXtensible Local Area Network）トンネルのユーザのＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索し、
前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得できたときには、カプセリングしたパケットを完成させて、ＮＩＣ（Network Interface Card）からパケットを送出して前記通信先のトンネルエンドポイントの外向きのインターフェースへ通信を行う、通信方法。
【請求項８】
前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得できないときには、利用可能なＯＳ（Operating System）のネットワークスタック処理を使用して、前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得し、カプセリングしたパケットを完成させて、ＮＩＣ（Network Interface Card）からパケットを送出する、請求項７に記載の通信方法。
【請求項９】
前記取得できた前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスと、ＡＲＰ（Address Resolution Protocol）テーブルとから通信先のトンネルエンドポイントの外向きのインターフェースのＭＡＣアドレスを特定する、請求項７に記載の通信方法。
【請求項１０】
パケット送出により通信するためのプログラムであって、
トンネルエンドポイントに、
ＶＮＩ（VXLAN Network Identifier）とＶＸＬＡＮ（Virtual eXtensible Local Area Network）トンネルのユーザのＭＡＣ（Media Access Control）アドレスとから、通信先のトンネルエンドポイントの外向きのインターフェースのＩＰ（Internet Protocol）アドレスを検索する処理と、
前記通信先のトンネルエンドポイントの外向きのインターフェースのＩＰアドレスを取得できたときには、カプセリングしたパケットを完成させて、ＮＩＣ（Network Interface Card）からパケットを送出して前記通信先のトンネルエンドポイントの外向きのインターフェースへ通信する通信処理と、を実行させるプログラム。
【国際調査報告】
2016035306.tif 000011
2016035306.tif 000012
2016035306.tif 000013
2016035306.tif 000014