(57)【特許請求の範囲】
【請求項１】
仮想ノードを搭載する複数のネットワークモジュールと、
前記複数のネットワークモジュールを接続するスイッチモジュールと、
受信したデータの情報から取り出したキーを基にあて先検索を行うことにより、前記あて先検索の結果に基づき、いずれかのネットワークモジュールに搭載された仮想ノードに前記データを伝送するネットワーク仮想化部と、
を備える、ネットワークノード。
【請求項２】
前記複数のネットワークモジュールはスター接続されて、前記スイッチモジュールが当該スター接続の基点となり、
前記各ネットワークモジュールは、前記ネットワーク仮想化部を備えるとともに、当該ネットワークモジュールを外部ネットワークに接続する物理インタフェースを備え、
前記ネットワーク仮想化部は、前記物理インタフェースに到着したデータの情報から前記キーを取り出し、前記あて先検索を行って、あて先が、到着した物理インタフェースを搭載するネットワークモジュールに搭載された仮想ノードか、前記スイッチモジュールを経由して接続されるネットワークモジュールに搭載された仮想ノードか、を判断し、前記判断結果に応じて、いずれかのネットワークモジュールに搭載された仮想ノードに前記データを伝送する、請求項１に記載のネットワークノード。
【請求項３】
前記各ネットワークモジュールは、アンダーレイネットワークにおける転送プロトコルを処理するネットワークスタック部を備え、
前記ネットワークスタック部は、前記アンダーレイネットワークの経路情報を保持する共有転送テーブルを備え、前記共有転送テーブルを検索して前記アンダーレイネットワークの経路情報を取得し、
すべての前記ネットワークモジュールにおいて同期された情報が前記共有転送テーブルに格納される、請求項１または２に記載のネットワークノード。
【請求項４】
前記物理インタフェースと前記仮想ノードとを前記ネットワークモジュール内のパスで接続し、アンダーレイネットワークのプロトコルスタックの処理をバイパスするようにした、請求項２に記載のネットワークノード。
【請求項５】
前記仮想ノードで行われる制御信号の処理の結果に基づいて生成する情報を、制御メッセージを介して、前記ネットワークノード内のすべての前記ネットワークモジュールおよび前記スイッチモジュールの間で情報同期させるネットワーク制御手段をさらに有する、請求項２に記載のネットワークノード。
【請求項６】
前記生成する情報は、ルーティングおよびプロビジョニングのための制御信号の処理の結果に基づいて構築されるネットワーク経路情報及び仮想リンク情報である、請求項５に記載のネットワークノード。
【請求項７】
前記ネットワーク仮想化部は、
当該ネットワーク仮想化部を備える前記ネットワークモジュール上の前記仮想ノードを検索するための仮想ノードインタフェース転送テーブルを備え、
仮想ノード宛ての通信データをネットワークノード内で伝送するために、当該通信データから抽出したキー情報に基づいて前記仮想ノードインタフェース転送テーブルを検索して、当該ネットワークモジュール上にある仮想ノード宛の通信データを見つけ出す、請求項１または２に記載のネットワークノード。
【請求項８】
前記ネットワーク仮想化部は、
当該ネットワーク仮想化部を備える前記ネットワークモジュール以外のネットワークモジュール上の前記仮想ノードを検索するための他モジュール転送テーブルを備え、
仮想ノード宛ての通信データをネットワークノード内で伝送するために、当該通信データから抽出したキー情報に基づいて前記他モジュール転送テーブルを検索して、他ネットワークモジュール上にある仮想ノード宛の通信データを見つけ出す、請求項１または２に記載のネットワークノード。
【請求項９】
前記各ネットワークモジュールは、複数の仮想ノードを搭載する、請求項１乃至８のいずれか１項に記載のネットワークノード。
【請求項１０】
仮想ノードを搭載して外部ネットワークとの接続に用いる物理インタフェースを備える複数のネットワークモジュールと、前記複数のネットワークモジュールをスター接続する際に当該スター接続の基点となるスイッチモジュールと、を備えるネットワークノードにおける負荷分散方法であって、
前記物理インタフェースに到着したデータに関し、該データの情報から取り出したキーを基にあて先検索を行うことと、
前記あて先検索の結果に基づき、該データのあて先が、到着した物理インタフェースを搭載するネットワークモジュールに搭載された仮想ノードか、前記スイッチモジュールを経由して接続されるネットワークモジュールに搭載された仮想ノードか、を判断することと、
前記判断結果に応じて、いずれかのネットワークモジュールに搭載された仮想ノードに前記データを伝送することと、
前記複数のネットワークモジュールのうち負荷が最も軽いネットワークモジュールに新たな仮想ノードを設置することと、
を有する、負荷分散方法。
【請求項１１】
複数の前記新たな仮想ノードを設置する、請求項１０に記載の方法。
【請求項１２】
請求項１に記載のネットワークノードにおける負荷分散方法であって、
新たな仮想ノードを前記ネットワークモジュールのいずれかに設置するときに、最も負荷の軽いネットワークモジュールに当該仮想ノードを設置する、負荷分散方法。
【請求項１３】
請求項２に記載のネットワークノードにおける負荷分散方法であって、
新たな仮想ノードを前記ネットワークモジュールのいずれかに設置するときに、最も負荷の軽いネットワークモジュールに当該仮想ノードを設置する、負荷分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の同等な機能を持つネットワークモジュールにより通信装置として構成されたネットワークノードとその負荷分散方法に関する。
【背景技術】
【０００２】
ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）やＭＰＬＳ（Ｍｕｌｔｉ−Ｐｒｏｔｏｃｏｌ  Ｌａｂｅｌ  Ｓｗｉｔｃｈｉｎｇ）などに基づくネットワークをアンダーレイネットワークとして、このようなアンダーネットワーク上に覆いかぶせるように構築した仮想ネットワークであって、アンダーレイネットワークとは異なる名前空間を有するネットワークのことを、オーバーレイネットワークと呼ぶ。アンダーレイネットワーク上には、複数のサービスに対応して複数のオーバーレイネットワークを構築することが可能である。非特許文献１（Ａｎｄｙ  Ｂａｖｉｅｒ，  Ｎｉｃｋ  Ｆｅａｍｓｔｅｒ，  Ｍａｒｋ  Ｈｕａｎｇ，  Ｌａｒｒｙ  Ｐｅｔｅｒｓｏｎ，  Ｊｅｎｎｉｆｅｒ  Ｒｅｘｆｏｒｄ，  “Ｉｎ  ＶＩＮＩ  ｖｅｒｉｔａｓ：  ｒｅａｌｉｓｔｉｃ  ａｎｄ  ｃｏｎｔｒｏｌｌｅｄ  ｎｅｔｗｏｒｋ  ｅｘｐｅｒｉｍｅｎｔａｔｉｏｎ，”  Ｓｅｐｔｅｍｂｅｒ  ２００６，  ＳＩＧＣＯＭＭ  ’０６：  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２００６  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ａｐｐｌｉｃａｔｉｏｎｓ，  ｔｅｃｈｎｏｌｏｇｉｅｓ，  ａｒｃｈｉｔｅｃｔｕｒｅｓ，  ａｎｄ  ｐｒｏｔｏｃｏｌｓ  ｆｏｒ  ｃｏｍｐｕｔｅｒ  ｃｏｍｍｕｎｉｃａｔｉｏｎｓ）には、オーバーレイネットワークで構成した仮想ネットワーク内では、既存のネットワーク技術に依存しないネットワーク技術を使えることが開示されている。これらのオーバーレイネットワーク技術は、例えば、インターネット上でＳｋｙｐｅやＢｉｔＴｏｒｒｅｎｔなどのサービスや機能を提供するために使われている。このようなオーバーレイネットワーク技術により、これまでのＴＣＰ／ＩＰ通信では実現できなかったファイヤーウォール越えの音声通信などを実現している。このように、オーバーレイネットワークの需要は、その使い勝手の良さとともに年々高まっている。また、上述のＡｎｄｙ  Ｂａｖｉｅｒらによる論文（非特許文献１）では、単一のサーバーを用いて複数の仮想ネットワークを収容するため、ソフトウェアで構成した仮想ノードを仮想マシン（バーチャルマシン；Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）技術で分離する手法も開示されている。【０００３】
オーバーレイネットワークを実現する手法として、複数のクライアント間でのピアツーピア（ｐｅｅｒ−ｔｏ−ｐｅｅｒ）通信による手法がある。しかしながら、ピアツーピア通信を用いる場合にはトラフィックの最適化がネットワーク主導で行えないため、現状では、ピアツーピア通信によるオーバーレイネットワークのトラフィック増大が、各通信事業者のネットワークにおける帯域の浪費をもたらしている。【０００４】
そこで特開２００８−５４２１４号公報（特許文献１）には、アンダーレイネットワーク上のサーバーに、ソフトウェアにより実現された仮想ノードを配備することによって、オーバーレイネットワークにおけるネットワーク主導によるトラフィックの最適化を実現する手法が開示されている。【０００５】
しかしながら、特開２００８−５４２１４号公報に記載されたような、ソフトウェアにより実現された仮想ノードをアンダーレイネットワークに配備する手法では、一度に大量のオーバーレイネットワークを処理することができないため、仮想ノードがオーバーレイネットワークのスケーラビリティのボトルネックとなる。このため、ボトルネック解消のために、仮想ノードを搭載したネットワークノードの負荷分散を行う必要がある。【０００６】
ところでネットワークにおけるノードの負荷分散を図る一般的な手法としては、単一のアドレスへのアクセスをラウンドロビン手法により複数のノードに振り分ける技術がある。また特開２００４−１１０６１１号公報（特許文献２）には、ローカルネットワークに複数のサーバー（ローカルサーバー）が配備されているときに、外部ネットワークからの特定の一つのアドレスに対するアクセスを記憶してローカルサーバーのアドレスに変換を行うことにより、アクセスデータを複数のサーバーに振り分けてサーバーの処理を負荷分散する通信装置（以下、負荷分散装置あるいはロードバランサーと呼ぶ）が開示されている。【０００７】
図１は、負荷分散装置９０２と負荷分散装置９０２に接続された複数のネットワークモジュール９０３とを有するシステムを示している。ネットワークモジュール９０３は、例えば、サーバーとして用いられるものである。この構成では、負荷分散装置９０３を用いて複数のネットワークモジュール９０３にサーバーアクセスの分散を行うことにより、システムのトータルとしての処理性能を向上できる。しかしながら、負荷分散装置９０２は物理インタフェース９０１を介して外部ネットワークと接続されているため、この物理インタフェース９０１がボトルネックとなる。したがってこのシステムでは、負荷分散装置９０２あるいは物理インタフェース９０１の転送性能によって性能が規定されることとなり、ネットワークモジュールの数を増やしたとしても、トータルとしての転送性能の頭打ちが発生する。【０００８】
また上述した手法により、オーバーレイネットワークの構築のために複数のサーバーによってネットワークノードを構成する場合に、アンダーレイネットワーク上に複数のサーバーを配備しその前段にロードバランサーを配備し、このロードバランサーによりサーバー宛ての通信を振り分け、個々のサーバーに入力されるトラフィックを分散させてサーバー当たりの処理負荷を軽減することができる。しかしながらこの構成では、複数のサーバー群が外部通信装置と通信するときの外部ネットワークとの接続箇所が、ロードバランサーの一点に集中するため、トラフィックがロードバランサーに集中し、ロードバランサーの転送性能がボトルネックとなり、問題となる。またこのような構成では、あるサーバーにおける仮想ノードとしての制御信号処理、例えば、ルーティングやプロビジョニングなどの処理の結果を、ロードバランサーの処理に反映することができないため、統合的な制御を行うことができなくて、運用が煩雑になる。ロードバランサーは、あらかじめ設定された情報に一致するアクセスを検知したときに、どのサーバーへそのアクセスを振り分けるか決定し、そのアクセスを記憶するように構成されている。このため、仮想ノードが動的なルーティングプロトコル（ＳＴＰ（Ｓｐａｎｉｎｎｇ  Ｔｒｅｅ  Ｐｒｏｔｏｃｏｌ）やＯＳＰＦ（Ｏｐｅｎ  Ｓｈｏｒｔｅｓｔ  Ｐａｔｈ  Ｆｉｒｓｔ）、ＤＨＴ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｈａｓｈ  Ｔａｂｌｅ）など）や動的なプロビジョニングを行って待ち受け状態を変更した場合には、ロードバランサーのあらかじめ設定された情報を動的に追加・変更・削除する必要がある。しかしながら、このような情報を仮想ノードからロードバランサーに転送するための仮想ノードとロードバランサーとの間の通信手段が存在しないため、仮想ノードとしての制御信号処理の結果を、ロードバランサーの処理に反映することができなくなる。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の例示的な目的は、オーバーレイネットワークを収容することができる仮想ノードを１または複数実行することができるネットワークモジュールを構成要素として、これらの複数のネットワークモジュールを統合した一つのネットワークノードにおいて、ネットワークモジュールを増加させるに応じて、トータルの処理性能と転送性能が増加するようにすることにある。【００１０】
また本発明の別の例示的な目的は、オーバーレイネットワークの仮想ノードを構成する複数のネットワークモジュール間で連携した制御を行うことにより、複数のネットワークモジュールを統合して一つのネットワークノードとして扱えるようにして、その管理・運用を容易にすることにある。
【課題を解決するための手段】
【００１１】
本発明の例示的な一態様によれば、ネットワークノードは、仮想ノードを搭載する複数のネットワークモジュールと、複数のネットワークモジュールをスター接続する際に当該スター接続の基点となるスイッチモジュールと、を備え、各ネットワークモジュールは、そのネットワークモジュールを外部ネットワークに接続する物理インタフェースと、物理インタフェースに到着したデータに関し、該データの情報から取り出したキーを基にあて先検索を行うことにより、あて先が、到着した物理インタフェースを搭載するネットワークモジュールに搭載された仮想ノードか、スイッチモジュールを経由して接続されるネットワークモジュールに搭載された仮想ノードか、を判断し、判断結果に応じて、いずれかのネットワークモジュールに搭載された仮想ノードにデータを伝送するネットワーク仮想化部と、を備える。【００１２】
本発明の例示的な別の態様によれば、仮想ノードを搭載して外部ネットワークとの接続に用いる物理インタフェースを備える複数のネットワークモジュールと、複数のネットワークモジュールをスター接続する際に当該スター接続の基点となるスイッチモジュールと、を備えるネットワークノードにおける負荷分散方法は、物理インタフェースに到着したデータに関し、該データの情報から取り出したキーを基にあて先検索を行うことと、あて先検索の結果に基づき、該データのあて先が、到着した物理インタフェースを搭載するネットワークモジュールに搭載された仮想ノードか、スイッチモジュールを経由して接続されるネットワークモジュールに搭載された仮想ノードか、を判断することと、判断結果に応じて、いずれかのネットワークモジュールに搭載された仮想ノードにデータを伝送することと、複数のネットワークモジュールのうち負荷が最も軽いネットワークモジュールに新たな仮想ノードを設置することと、を有する。【００１３】
上述した構成では、例えば、オーバーレイネットワークの仮想ノードを構成する複数のネットワークモジュール間で連携した制御を行わせることができて、複数のネットワークモジュールを統合して一つのネットワークノードとして扱うことが可能となり、ネットワークノードとしての管理・運用が容易になる。また、ネットワークノード内のネットワークモジュールを増加させることにより、例えば、処理分散による仮想ノードの性能向上と、インタフェース数が増えることによるトータル転送性能の向上を図ることができる。
【図面の簡単な説明】
【００１４】
【図１】ロードバランサー（負荷分散装置）を有するシステムを示す図である。
【図２】物理ネットワークとこの物理ネットワークに収容される複数の仮想ネットワークとの概要を説明する図である。
【図３】仮想ノードと仮想リンクによる仮想ネットワークの構成を示す図である。
【図４】ネットワークノードの構成を示すブロック図である。
【図５】送受信データを処理する機能ブロック間の接続を示すブロック図である。
【図６】制御信号の処理に関わる機能ブロック間の接続を示すブロック図である。
【図７】送受信データの制御情報を説明する図である。
【図８】仮想ノードのライフサイクルを示す図である。
【図９】仮想ノードインタフェースの構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
次に、本発明の実施の形態について図面を参照して説明する。
【００１６】
以下に説明する本発明の例示的な実施形態は、複数の同等な機能を持つネットワークモジュールにより通信装置として構成されたネットワークノードとその負荷分散方法に関するものである。特に例示実施形態は、それぞれのネットワークモジュールに独立に配備され仮想化された仮想ノードの通信を実現するための、ネットワークモジュール間で連携したパスとそのテーブルの管理と制御とに向けられている。
【００１７】
最初に、本発明の例示実施形態を適用することが可能なネットワークの構成の一例について説明する。図２は、例えば物理ネットワーク（すなわちアンダーレイネットワーク）１００と、そのような物理ネットワーク上に構築される複数の仮想ネットワーク（すなわちオーバーレイネットワーク）１４０，１５０との基本的な関係を示している。
【００１８】
物理ネットワーク１００から、仮想ネットワークを構築するネットワークノード１０１〜１０５が構成され、これらのネットワークノード上に仮想ノード１１０〜１１３、１２０〜１２３が搭載されている。ここでは、２つの仮想ネットワーク１４０，１５０は、“Ａ”および“Ｂ”の文字で区別されており、文字“Ａ”がラベルされた仮想ノード１１０〜１１３は、“Ａ”の仮想ネットワーク１４０の仮想ノードであり、文字“Ｂ”がラベルされた仮想ノード１２０〜１２３は“Ｂ”の仮想ネットワーク１５０の仮想ノードである。同一のネットワークノードに両方の仮想ネットワークの仮想ノードが共存してもよいし、片方の仮想ネットワークの仮想ノードのみが存在してもよい。これらの仮想ノードは、オーバーレイネットワークである仮想ネットワークごとに、仮想リンク１４１〜１４４、１５１〜１５４で相互に接続されている。仮想リンクには、例えば、ＴＣＰセッションやＩＰ／ＩＰＳｅｃ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  Ｓｅｃｕｒｉｔｙ）トンネル、ＭＰＬＳパス、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）コネクションなどが用いられる。物理ネットワーク１００では、ネットワークノード１０１〜１０５間は、例えばリンク１３０〜１３３で接続されている。
【００１９】
ネットワークノードとそれらの間のリンクは、物理ネットワークでのノードおよびリンク（物理リンク）と１対１に対応しているわけではない。図３は、仮想ネットワークと物理ネットワークでのノードやリンクとの関係の例を示している。ここで示した例では、２つのネットワークノード１０１，１０２間のリンクが、複数のアンダーレイノード１７０〜１７３を経由している。ネットワークノード１０１，１０２に搭載されている仮想ノード１１０，１１１が仮想リンク１４１により接続されて、仮想ネットワークが構築されている。ネットワークノード１０１，１０２とアンダーレイノード１７０，１７２との間、およびアンダーレイノード１７０〜１７３の相互間は、物理リンク１６０〜１６５によって接続されている。アンダーレイノード１７０〜１７３は、一般的なルーターやスイッチによって構成されるものであって、既存のＳＴＰやＯＳＰＦ等のルーティングプロトコルで経路計算を行い、ＴＣＰ／ＩＰやＥｔｈｅｒｎｅｔ（登録商標）、ＭＰＬＳなどの転送プロトコルを用いてデータ転送を行う。
【００２０】
仮想ネットワークは、“Ａ１”とラベルされている仮想ノード１１０と“Ａ２”とラベルされている仮想ノード１１１とを仮想リンク１４１によって接続することにより、アンダーレイネットワーク（すなわち物理ネットワーク）から見て、入れ子状になっている。アンダーレイネットワークに対して独立した名前空間を仮想ネットワークに持たせることにより、アンダーレイネットワークのプロトコルに依存することのない仮想ネットワークを構築することができる。独立した名前空間の利用は、既知の技術として、ＭＰＬＳによるＩＰ−ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）や、ＩＰｓｅｃによるインターネットＶＰＮで使用されている。一方で、仮想ノードの処理動作を変更し、複数の仮想リンクで接続された仮想ノードにおいて新規のネットワーク技術を処理させることにより、仮想ネットワーク上で新規のネットワーク技術を適用することが可能となる。
【００２１】
図４は、例示実施形態におけるネットワークノード１０１の内部構成の一例を示している。ネットワークノード１０１は、通信装置として構成されたものである。ネットワークノード１０１は、複数のネットワークモジュール３０１ａ〜３０１ｎと、これらのネットワークモジュール３０１ａ〜３０１ｎの間を接続するスイッチモジュール３０８とから構成されている。スイッチモジュール３０８から放射状に設けられたデータ転送用の接続３０７ａ〜３０７ｎにより、各ネットワークモジュール３０１ａ〜３０１ｎは、スイッチモジュール３０８に接続している。したがってスイッチモジュール３０８は、ネットワークモジュール３０１ａ〜３０１ｎをスター接続する際にそのスター接続の基点となるものである。
【００２２】
以下の説明において、複数のネットワークモジュールを区別することなく、ネットワークモジュール一般を示す場合には、符号３０１を用いることとする。同様に、複数の接続を区別することなくデータ転送用の接続一般を示す場合には符号３０７を用いることとする。
【００２３】
ネットワークノード１０１において、ネットワークモジュール３０１ａ〜３０１ｎにはそれぞれ物理インタフェース３０４ａ〜３０４ｎが設けられている。物理インタフェース３０４ａ〜３０４ｎによって、ネットワークモジュール３０１ａ〜３０１ｎをそれぞれ外部ネットワークに接続することができる。ネットワークモジュール３０１ａ〜３０１ｎは、いずれも同様の構成のものである。ネットワークモジュール３０１ａは、ネットワーク仮想化部（ＮＷＶ）３０５ａ、ネットワークスタック部（ＮＷＳ）３０６ａ、複数の仮想ノード部（ＶＮ）３０２１ａ，３０２２ａおよびネットワーク制御部（ＮＷＣ）３０３ａを備え、さらに前述の物理インタフェース３０４ａを備えている。同様に他のネットワークモジュール３０１ｂ〜３０１ｎも、ネットワーク仮想化部３０５ｂ〜３０５ｎ、ネットワークスタック部３０６ｂ〜３０６ｎ、仮想ノード部３０２１ｂ〜３０２１ｎ，３０２２ｂ〜３０２２ｎ、ネットワーク制御部３０３ｂ〜２０２ｎおよび物理インタフェース３０４ｂ〜３０４ｎを備えている。これらの各機能ブロックには、それを特定するための固有の識別子／番号が割り当てられている。
【００２４】
以下の説明において、いずれのネットワークモジュールに含まれるかを区別しない場合には、ネットワークモジュール３０１ａ〜３０１ｎに含まれる仮想ノード部３０２１ａ〜３０２１ｎ，３０２２ａ〜３０２２ｎを一般的に符号３０２１，３０２２で表すこととする。同様に、いずれのネットワークモジュールに含まれるかを区別しない場合には、ネットワーク制御部３０３ａ〜３０３ｎ、物理インタフェース３０４ａ〜３０４ｎ、ネットワーク仮想化部３０５ａ〜３０５ｎおよびネットワークスタック部３０６ａ〜３０６ｎを、それぞれ、符号３０３，３０４，３０５，３０６で表すこととする。
【００２５】
ネットワーク仮想化部３０５は、外部ネットワークからネットワークノード１０１で受信されるデータの配送先を、同じネットワークモジュール３０１内のネットワークスタック部３０６、同じネットワークモジュール３０１内の仮想ノード部３０２１，３０２２、および異なるネットワークモジュール３０１上の仮想ノード部３０２１，３０２２の中から検索して選び出し、選び出した配送先に、その受信データを転送する。またネットワーク仮想化部３０５は、ネットワークノード１０１から外部ネットワークに送信されるデータの配送先を、同じネットワークモジュール３０１内の物理インタフェース３０４、および異なるネットワークモジュール３０１上の物理インタフェース３０４の中から検索して選び出し、選び出した物理インタフェースにその送信データを転送する。すなわちネットワーク仮想化部３０５は、物理インタフェース３０４に到着したデータに関し、そのデータの情報から取り出したキーを基にあて先検索を行うことにより、あて先が、到着した物理インタフェースを搭載するネットワークモジュールに搭載された仮想ノードか、スイッチモジュール３０８を経由して接続されるネットワークモジュールに搭載された仮想ノードか、を判断し、判断結果に応じて、いずれかのネットワークモジュールに搭載された仮想ノードにデータを伝送する機能を有する。
【００２６】
ネットワークスタック部３０６は、アンダーレイネットワークにおける転送プロトコルを処理するものである。ネットワークスタック部３０６は、ネットワーク仮想化部３０５から送受信データの制御情報を受け取った場合には、その受け取った制御情報に応じて、仮想ノード部３０２１，３０２２から１つを選択して選択した仮想ノード部にデータを転送するか、あるいは、アンダーレイネットワークにおける転送プロトコルにより送受信データのあて先を検索する。アンダーレイネットワークにおける転送プロトコルによりあて先の検索を行った場合には、ネットワークスタック部３０６は、その検索結果により、仮想ノード部３０２１，３０２２の１つを選択してその仮想ノード部にデータを転送するか、あるいは、外部ネットワークか他のネットワークモジュール３０１上の仮想ノードに転送するために、そのデータをネットワーク仮想化部３０５に送信する。またネットワークスタック部３０６は、仮想ノード部３０２１，３０２２から送受信データの制御情報を受け取った場合には、その制御情報に基づいて、ネットワーク仮想化部３０５にデータを送信するか、あるいは、アンダーレイネットワークにおける転送プロトコルにより送受信データのあて先を検索してそのあて先にデータを転送するためにネットワーク仮想化部３０５にデータを送信する。さらにネットワークスタック部３０６は、アンダーレイネットワークの名前空間におけるアドレスを終端する。
【００２７】
本例示実施形態においては、ネットワークモジュール３０１内に複数の仮想ノード部３０２１，３０２２が搭載されているが、このように複数の仮想ノード部を一つのネットワークモジュールに搭載することは、関連技術分野における仮想マシンやコンテナ技術などの一般的な技術を使用することに実現可能である。そのことは、当業者には自明のことである。ここでは、各ネットワークモジュールには２個の仮想ノード部が搭載されているが、一つのネットワークモジュールに搭載される仮想ノード部の個数は、２個に限られるものではなく、３個以上であってもよい。あるいは一つのネットワークモジュールには単一の仮想ノード部のみが搭載されるようにしてもよい。
【００２８】
仮想ノード部３０２１，３０２２は、ネットワークスタック部３０６から受信した送受信データを処理し、仮想ネットワークにおける仮想リンクの終端、仮想リンク上を転送される通信データの処理、および仮想ネットワークにおける制御信号の処理の実行を行う。ここでの通信データの処理には、終端や転送などの処理が含まれる。仮想ノード部３０２１，３０２２における受信データの処理の結果、あるいは、制御信号処理などの内部処理の結果、データを送信しなければならないときには、仮想ノード部は、ネットワークスタック部３０６に対して、制御情報６０２とともにデータ６０１を送信する。制御情報６０２の詳細については後述する。
【００２９】
ネットワーク制御部３０３は、ネットワークモジュール３０１内の各種のテーブル情報の登録・修正・削除の処理を実行し、各仮想ノード部３０２１，３０２２からの制御情報を処理するものである。特にネットワーク制御部３０３は、自ネットワークモジュール３０１に対して影響のある情報に関しての設定情報を取得し、テーブルをメンテナンスする。またネットワーク制御部３０３は、他のネットワークモジュール３０１やスイッチモジュール３０８に対して影響のある情報に関して、制御メッセージを交換して情報同期を行う。さらにネットワーク制御部３０３は、他のネットワークモジュール３０１やスイッチモジュール３０８から得られた制御メッセージに基づいて情報同期を行い、自ネットワークモジュール３０１に対して影響のある情報に関して設定情報を取得し、テーブルをメンテナンスする。
【００３０】
スイッチモジュール３０８は、スイッチファブリック部３１０とスイッチネットワーク制御部（ＳＷＮＷＣ）３０９とにより構成されている。スイッチファブリック部３１０は、送受信データの転送において、後述の制御情報６０２を参照することにより、いずれのネットワークモジュール３０６に送受信データを転送するか選び出し、そのネットワークモジュールに送受信データを転送する。スイッチネットワーク制御部３０９は、スイッチモジュール３０８内のテーブル情報の登録・修正・削除などのメンテナンスを行い、ネットワークモジュール３０６と制御メッセージを交換する。特にスイッチネットワーク制御部３０９は、各ネットワークモジュール３０１からの制御情報にしたがって、スイッチモジュール３０８に対して影響のある情報に関して設定情報を取得し、テーブルをメンテナンスする。
【００３１】
このようにネットワークモジュール３０１内のネットワーク制御部３０３とスイッチモジュール３０８内のスイッチネットワーク制御部３０９とは、相互に制御メッセージの交換を行い、かつ各種のテーブルの内容のメンテナンスを行うことによって、複数のネットワークモジュール３０１とスイッチモジュール３０８との間でのネットワーク制御情報の同期を実行するネットワーク制御手段として機能する。ここでいうネットワーク制御情報には、仮想ノード部でのルーティングやプロビジョニングなどの処理結果によって構築されるネットワーク経路情報や仮想リンク情報などが挙げられる。
【００３２】
次に、図５を参照して、ネットワークノード１０１内で送受信データの通信経路を構成する各要素について説明する。図５は、ネットワークノード１０１において、送受信データを直接処理する各機能ブロック間の接続を示している。ネットワークモジュール３０１において送受信データの通信経路を構成する要素には、ネットワークスタック部３０６内に設けられる共有転送テーブル４０１と、ネットワーク仮想化部３０５内に設けられる他モジュール転送テーブル４０２及び仮想ノードインタフェース転送テーブル４０３と、ネットワーク仮想化部３０５とネットワークスタック部３０６との間の接続４０５と、ネットワークスタック部３０６と仮想ノード部３０２１，３０２２との間の接続４０６１，４０６２とが含まれる。共有転送テーブル４０１は、ネットワークスタック部３０６において送受信データの転送先を検索するために使用されるものであり、アンダーレイネットワークの経路情報を保持する。他モジュール転送テーブル４０２及び仮想ノードインタフェース転送テーブル４０３は、いずれも、ネットワーク仮想化部３０５において、送受信データの転送先を検索するために使用される。特に他モジュール転送テーブル４０２は、このネットワーク仮想化部３０５を備えるネットワークモジュール以外の他ネットワークモジュール上の仮想ノードを検索するために使用され、その一方で、仮想ノードインタフェース転送テーブル４０３は、このネットワーク仮想化部３０５を備えるネットワークモジュール上の仮想ノードを検索するために使用される。接続４０５，４０６１，４０６２は送受信データの転送のために用いられる接続である。また、スイッチモジュール３０８において送受信データの通信経路を構成する要素には、スイッチファブリック部３０１内に設けられて、スイッチファブリック部３１０において送受信データの転送先を検索するために使用されるスイッチ転送テーブル４０４が含まれる。これらの各要素（すなわちブロック）とデータ転送用の接続とによって、送受信データの通信経路が実現されている。
【００３３】
同様に、図６を参照して、ネットワークノード１０１内でブロック間での制御信号の接続構成を説明する。図６は、ネットワークノード１０１において、制御信号の処理に関わる各機能ブロック間の接続を示している。ネットワークモジュール３０１において制御信号のための接続構成は、ネットワーク制御部３０３と仮想ノード部３０２１，３０２２との間の接続５０３１，５０３２と、ネットワーク制御部３０３と共有転送テーブル４０１との間の接続５０４と、ネットワーク制御部３０３と他モジュール転送テーブル４０２との間の接続５０５と、ネットワーク制御部３０３と仮想ノードインタフェース転送テーブル４０３との間の接続５０６とからなる。スイッチモジュール３０８において制御信号のための接続構成は、スイッチネットワーク制御部３０９とスイッチ転送テーブル４０４との間の接続５０７からなっている。接続５０３１，５０３１，５０４，５０５，５０６，５０７は、いずれも、制御信号の伝送のために用いられるものである。さらに制御信号の接続構成には、複数のネットワークモジュール３０１とスイッチモジュール３０６との間の制御メッセージを伝送するためのネットワーク制御部間の通信経路５０１と、この通信経路５０１とネットワークモジュール３０１のネットワーク制御部３０３との間の接続５０２１と、通信経路５０１とスイッチモジュール３０６のスイッチネットワーク制御部３０９との間の接続５０２２とが含まれる。これらの各要素（すなわちブロック）及び接続によって、制御信号の接続構成が実現されている。
【００３４】
次に、制御情報６０２について説明する。図７は、送受信データとその制御情報との関係を示している。送受信データを扱うために、ネットワークノード１０１は、受信および／または送信されるデータ本体を送受信データ６０１として、そのような送受信データ６０１と、その送受信データに対する制御情報６０２とを、それぞれの送受信データ単位に管理する。制御情報６０２は、ネットワークモジュール番号６０２１と、インタフェース番号６０２２と、仮想ノード番号６０２３と、受信・送信フラグ６０２４とから構成されている。制御情報６０２は、データ６０１の受信時および送信時に、ネットワーク仮想化部３０５、ネットワークスタック部３０６および仮想ノード部３０２１，３０２２で作成され、また、ネットワーク仮想化部３０５、ネットワークスタック部３０６、仮想ノード部３０２１，３０２２およびスイッチファブリック部３１０において参照され、書き換えられるものである。
【００３５】
なお送受信データ６０１は、例えば、ＩＰパケットやＥｔｈｅｒｎｅｔ（登録商標）フレームなどとして構成される。
【００３６】
データ受信時に、データのあて先が仮想ノード３０２１，３０２２であるときは、受信・送信フラグ６０２４は受信を示し、ネットワークモジュール番号６０２１には、あて先となるネットワークモジュールの識別子／番号が設定され、インタフェース番号６０２２には、受信時のネットワークノード１０１においてユニークなインタフェース識別子／番号が設定され、仮想ノード番号６０２３には、仮想ノードの識別子／番号が設定される。データ受信時に、データのあて先があらかじめ仮想ノード部３０２１，３０２２のいずれにも設定されていないときは、受信・送信フラグ６０２４は受信を示し、ネットワークモジュール番号６０２１には、自ネットワークモジュールの識別子／番号が設定され、インタフェース番号６０２２には、受信時のネットワークノード１０１でユニークなインタフェース識別子／番号が設定され、仮想ノード番号６０２３には、特別の番号が設定される。このデータは、ネットワークスタック部３０６に送付され、アンダーレイネットワークのプロトコルによって転送処理が行われる。
【００３７】
データ送信時には、受信・送信フラグ６０２４は送信を示し、ネットワークモジュール番号６０２１には、あて先となるネットワークモジュールの識別子／番号が設定され、インタフェース番号６０２２には、送信インタフェースのネットワークノード１０１でユニークなインタフェース識別子／番号が設定され、仮想ノード番号６０２３は“ドントケア（Ｄｏｎ’ｔ  Ｃａｒｅ）”となる。
【００３８】
動作の説明：
次に、図３に示すような仮想ネットワーク構成において、ネットワークモジュール３０１の性能を向上するために、負荷分散の手法により各仮想ノード部３０２１，３０２２の処理を低減させるための動作を説明する。図８は、仮想ノードのライフサイクルを示しており、図９は、仮想ノードのインタフェースの構成を示している。
【００３９】
図８を参照すると、仮想ノードのライフサイクルでは、ステップ７０１に示すように、負荷分散のため、負荷の低いネットワークモジュール３０１を見つけ出し、そのようなネットワークモジュールにおいて仮想ノード部３０２１，３０２２を新たに生成する。負荷の低いネットワークモジュールを発見する手法としては、例えば、ネットワークノード１０１内のすべてのネットワークモジュール３０１のＣＰＵ負荷状態を監視して、負荷の平均が一番小さいネットワークモジュールを選択する手法や、それぞれのネットワークモジュール３０１に流れるトラフィック量を監視して、トラフィック量が一番少ないネットワークモジュールを選択する手法が考えられ、さらには、これらの手法を組み合わせたものとを用いることも考えられる。ここでは、ネットワークモジュール３０１ａに仮想ノード部３０２１ａ，３０２２ａが生成したものとする。
【００４０】
続いてステップ７０２において、生成された仮想ノード部３０２１ａに対するインタフェースのパスが設定される。ここでは、アンダーレイネットワークの転送プロトコルがＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）であるとし、仮想リンクを構成するトンネルプロトコルがＧＲＥ（Ｇｅｎｅｒｉｃ  Ｒｏｕｔｉｎｇ  Ｅｎｃａｐｓｕｌａｔｉｏｎ）であるとする。この場合、一般的には、どの物理インタフェースからＩＰトラフィックが受信されるかを特定できないため、仮想ノード部３０２１ａと、すべてのネットワークモジュール３０１ａ〜３０１ｎのすべての物理インタフェース３０４ａ〜３０４ｎで受信されるデータとに対して、パス設定を有効にする必要がある。したがって、図９に示す破線のパスの設定が必要となる。このようなパスの設定の動作は、以下のように行われる。
【００４１】
はじめに、仮想ノード部３０２１ａにおいて、トンネルプロトコル（ここではＧＲＥとＩＰ）と仮想ネットワークとの要件が設定される。仮想ネットワークは、トンネルのトポロジとして設定される。本実施形態では、ＩＰトラフィックであるので、仮想ノード部３０２１ａは、すべての物理インタフェースとのパスを構築する判断を行う。次に、仮想ノード部３０２１ａは、同じネットワークモジュール３０１ａ内のネットワーク制御部３０３ａに対して、パス要件を伝える。本例の場合は、そのパス要件は、図９に示す破線で表される。
【００４２】
次に、ネットワークモジュール３０１ａでは、ネットワーク制御部３０３ａが、そのネットワークモジュールで収容する仮想ノード部３０２１ａ宛のデータに対しての設定を、仮想ノードインタフェース転送テーブル４０３ａに行う。この例では、ＩＰアドレスとＧＲＥ  Ｋｅｙとをキーとしたエントリを登録することにより、この設定が行われる。引き続き、ネットワーク制御部３０３ａは、制御バスであるネットワーク制御部間の通信経路５０１を経由して、スイッチモジュール３０８内のスイッチネットワーク制御部３０９と、他のネットワークモジュール３０１ｂ〜３０１ｎ内のネットワーク制御部３０３ｂ〜３０３ｎとに対して、仮想ノード部３０２１ａのパス情報を伝送する。
【００４３】
ネットワークモジュール３０１ｂ〜３０１ｎでは、それぞれのネットワーク制御部３０３ｂ〜３０３ｎが、他モジュール転送テーブル４０２ｂ〜４０２ｎの設定を行うとともに、ネットワークモジュール３０１ａで収容する仮想ノード部３０２１ａ宛のデータに対しての設定を、他モジュール転送テーブル４０３ｂ〜４０３ｎに対して行う。この例では、仮想ノード部３０２１ａに関し、そのＩＰアドレスとＧＲＥ  Ｋｅｙとをキーとしたエントリが他モジュール転送テーブル４０３ｂ〜４０３ｎに登録される。
【００４４】
スイッチネットワーク制御部３０９は、スイッチ転送テーブル４０４においてネットワークモジュール３０１ａ宛のエントリがない場合に、そのエントリの設定を行う。
【００４５】
このような設定を行うことにより、仮想ノード部３０２１ａ宛のトンネルプロトコル（この例ではＧＥＲとＩＰ）に一致するデータが、ネットワークノード１０１のいかなる物理インタフェース３０４に到着したとしても、すべて、ネットワークモジュール３０１ａの仮想ノード部３０２１ａに転送されるようになる。これにより、図８のステップ７０３に示すように、仮想ノード部３０２１ａは、仮想ネットワークに対応した処理を実行することができるようになる。
【００４６】
ここでもし、仮想ノード部３０２１ａに関係するネットワークモジュール３０１に変更があったとする。そのような場合、ステップ７０４において、ネットワークモジュール３０１の新規追加や交換、削除により、パスの再設定が駆動される。このとき、該当するネットワークモジュールに係わるテープルエントリのみが修正される。
【００４７】
また、仮想ノード部３０２１ａのサービスを停止することが決まった場合、ステップ７０５において、関連するパスをネットワークノード１０１のすべてのテーブルエントリから削除し、仮想ノード部の処理を停止させる。
【００４８】
次に、本例示実施形態での、データ受信時における、データに対する処理フローを説明する。以下の説明において、“［Ｒ１］”とか“［ＲＡ６］”の記載は、フローにおける各処理を区別するラベルである。
【００４９】
［Ｒ１］→［Ｒ２］→［Ｒ３］→［Ｒ４ａ］→［ＲＡ５］→［ＲＡ６］によって示される処理フローが、データを受信したネットワークモジュール３０１ａにおいてデータに対応する仮想ノード部３０２１ａが搭載されているときの、正常な処理フローである。この処理フローを第１の受信処理フローと呼ぶ。
【００５０】
［Ｒ１］→［Ｒ２］→［Ｒ３］→［Ｒ４ｂ］→［ＲＢ５ｃ］→［ＲＢＣ６］→［ＲＢＣ７］→［ＲＢＣ８］→［ＲＢＣ９］→［ＲＢＣ１０］によって示される処理フローが、データを受信したネットワークモジュール３０１ａとは別のネットワークモジュール３０１ｎにおいて、データに対応する仮想ノード部３０２１ｎが搭載されているときの、正常な処理フローを示している。この処理フローを第２の受信処理フローと呼ぶ。
【００５１】
［Ｒ１］→［Ｒ２］→［Ｒ３］→［Ｒ４ｂ］→［ＲＢ５ｄ］→［ＲＢＤ６］→［ＲＢＤ７］によって示される処理フローが、アンダーレイネットワークの転送プロトコルによって転送されるデータに対する、正常な処理フローである。この処理フローを第３の受信処理フローと呼ぶ。
【００５２】
まず、第１の受信処理フローにおける各処理を説明する。第１の受信処理フローにおける各ラベルごとの処理は、以下に示されるものである。以下では、ラベルを見出しとし、それに引き続いて、当該ラベルでの処理を説明している。
【００５３】
［Ｒ１］  データを受信する；
［Ｒ２］  ネットワーク仮想化部３０５ａは、制御情報６０２を生成し、インタフェース番号６０２２に、データを受信したときの物理インタフェースの識別子／番号を付与する；
［Ｒ３］  ネットワーク仮想化部３０５ａは、データ６０１に含まれる情報（例えば、あて先ＩＰアドレスとプロトコル番号とＧＲＥ  Ｋｅｙ値など）とインタフェース番号６０２２とをキーとして、仮想ノードインタフェース転送テーブル４０３ａを検索する；
［Ｒ４ａ］  処理［Ｒ３］での検索の結果、データが自ネットワークモジュール３０１ａに搭載された仮想ノード部３０２１ａ宛のものであった場合、ネットワーク仮想化部３０５ａは、制御情報６０２のネットワークモジュール番号６０２１と仮想ノード番号６０２３を、それぞれ自ネットワークモジュール識別子／番号と仮想ノードの識別子／番号に更新して、ネットワークスタック部３０６ａに、データ６０１と制御情報６０２を転送する；
［ＲＡ５］  ネットワークスタック部３０６ａは、制御情報６０２のネットワークモジュール番号６０２１と仮想ノード番号６０２３とに基づいて、データ６０１と制御情報６０２とを適切な仮想ノード部３０２１ａに転送する；
［ＲＡ６］  仮想ノード部３０２１ａは、制御情報６０２に基づいて物理インタフェース番号を取得する。また、受信したデータ６０１のトンネルプロトコルを仮想リンクとして終端し、仮想ネットワークにおける通信データを取得し、あらかじめ決められた処理を行う。
【００５４】
次に、第２の受信処理フローについて説明する。［Ｒ１］から［Ｒ３］までの処理は第１の受信処理フローと同じであり、以下では、処理［Ｒ３］に引き続く処理のみを説明する。
【００５５】
［Ｒ４ｂ］  処理［Ｒ３］での検索の結果、ミスヒットした場合、ネットワーク仮想化部３０５ａは、同じキーを使用して、他モジュール転送テーブル４０２ａを検索する；
［ＲＢ５ｃ］  処理［Ｒ４ｂ］での検索の結果、データが他ネットワークモジュール３０１ｎ宛のものであった場合、ネットワーク仮想化部３０５ａは、制御情報６０２のネットワークモジュール番号６０２１を、あて先の他ネットワークモジュール識別子／番号に更新して、スイッチファブリック部３１０に、データ６０１と制御情報６０２を転送する；
［ＲＢＣ６］  スイッチファブリック部３１０は、受信した制御情報６０２のネットワークモジュール番号６０２１に基づいて、スイッチ転送テーブル４０４を検索し、ネットワークモジュール３０１ｎのネットワーク仮想化部３０５ｎにデータを転送する；
［ＲＢＣ７］  ネットワーク仮想化部３０５ｎは、データ６０１に含まれる情報（例えば、あて先ＩＰアドレスとプロトコル番号とＧＲＥ  Ｋｅｙ値など）とインタフェース番号６０２２をキーとして、仮想ノードインタフェース転送テーブル４０３ｎを検索する；
［ＲＢＣ８］  処理［ＲＢＣ７］での検索の結果、データが自ネットワークモジュール３０１ｎに搭載された仮想ノード部３０２１ｎ宛のものであった場合、ネットワーク仮想化部３０５ｎは、制御情報６０２の仮想ノード番号６０２３を、仮想ノードの識別子／番号に更新して、ネットワークスタック部３０６ｎに、データ６０１と制御情報６０２を転送する；
［ＲＢＣ９］  ネットワークスタック部３０６ｎは、制御情報６０２のネットワークモジュール番号６０２１と仮想ノード番号６０２３とに基づいて、データ６０１と制御情報６０２を適切な仮想ノード部３０２１ｎに転送する；
［ＲＢＣ１０］  仮想ノード部３０２１ｎは、制御情報６０２に基づいて物理インタフェース番号を取得する。また、受信したデータ６０１のトンネルプロトコルを仮想リンクとして終端し、仮想ネットワークにおける通信データを取得し、あらかじめ決められた処理を行う。
【００５６】
次に、第３の受信処理フローについて説明する。［Ｒ１］から［Ｒ４ｂ］までの処理は第２の受信処理フローと同じであり、以下では、処理［Ｒ４ｂ］に引き続く処理のみを説明する。
【００５７】
［ＲＢ５ｄ］  処理［Ｒ４ｂ］での検索の結果、ミスヒットした場合、ネットワーク仮想化部３０５ａは、ネットワークスタック部３０６ａに、データ６０１と制御情報６０２を転送する；
［ＲＢＤ６］  ネットワークスタック部３０６ａは、制御情報６０２の仮想ノード番号６０２３がセットされていないことにより、データ６０１をアンダーレイネットワークの通信データと判断し、データ６０１に対してプロトコル処理を行った上で、これに含まれるアンダーレイネットワークの転送プロトコルに対応したヘッダ情報（例えば、ＩＰヘッダ情報など）と、制御情報６０２のインタフェース番号６０２２とをキーとして、共有転送テーブル４０１ａを検索する；
［ＲＢＤ７］  処理［ＲＢＤ６］での検索の結果、あて先解決されたデータ６０１について、ネットワークスタック部３０６ｎは、制御情報６０２の送信・受信フラグ６０２４を受信から送信に書き換え、ネットワークモジュール番号６０２１とインタフェース番号６０２２とを、それぞれ送信インタフェースを含むネットワークモジュールの識別子／番号と送信インタフェース識別子／番号とに更新し、ネットワーク仮想化部３０５ａに転送する。
【００５８】
次に、本例示実施形態での、データ送信時における、データに対する処理フローを説明する。以下の説明において、“［Ｔ１］”とか“［ＴＡ５］”の記載は、フローにおける各処理を区別するラベルである。
【００５９】
［Ｔ１］→［Ｔ２］→［Ｔ３ａ］→［ＴＡ４］→［ＴＡ５］によって示される処理フローは、仮想ノード部３０２１ａにおいて出力先の物理インタフェース３０４が解決できる場合の処理フローである。これを第１の送信処理フローと呼ぶ。
【００６０】
［Ｔ１］→［Ｔ２］→［Ｔ３ｂ］→［ＴＢ５］→［ＴＢ６］によって示される処理フローは、仮想ノード部３０２１ａにおいて出力先の物理インタフェース３０４を解決できないため、アンダーレイネットワークの転送プロトコルによって転送先を解決させることにより出力先の物理インタフェース３０４にデータを送信する場合の処理フローである。これを第２の送信処理フローと呼ぶ。
【００６１】
まず、第１の送信処理フローにおける各処理を説明する。第１の送信処理フローにおける各ラベルごとの処理は、以下に示されるものである。以下では、ラベルを見出しとし、それに引き続いて、当該ラベルでの処理を説明している。
【００６２】
［Ｔ１］  データ６０１の送信先を解決した結果に基づいて、仮想ノード部３０２１ａは、制御情報６０２の送信・受信フラグ６０２４を受信から送信に書き換え、ネットワークモジュール番号６０２１とインタフェース番号６０２２、仮想ノード番号６０２３を、それぞれ送信インタフェースを含むネットワークモジュールの識別子／番号と送信インタフェース識別子／番号、仮想ノード識別子／番号に更新し、ネットワークスタック部３０６ａにデータ６０１を転送する；
［Ｔ２］  ネットワークスタック部３０６ａは、受信したデータ６０１の制御情報６０２のインタフェース番号６０２２を確認する；
［Ｔ３ａ］  処理［Ｔ２］においてインタフェース番号６０２２に有効な値が設定されている場合は、ネットワークスタック部３０６ａは、データ６０１と制御情報６０２をネットワーク仮想化部３０５ａに転送する；
［ＴＡ４］  ネットワーク仮想化部３０５ａでは、ネットワークモジュール番号６０２１とインタフェース番号６０２２に基づき、データ６０１と制御情報６０２を転送する。もし、データ６０１が他ネットワークモジュール３０１ｎの物理インタフェース宛であった場合、処理［ＲＢＣ６］の手順を使い、他ネットワークモジュール３０１ｎにデータ６０１と制御情報６０２を転送する。送信・受信フラグ６０２４が送信であるときに、ネットワークモジュール番号６０２１とインタフェース番号６０２２が自ネットワークモジュール３０１ａ〜３０１ｎの物理インタフェース３０４ａ〜３０４ｎを示している場合、ネットワーク仮想化部３０５ａ〜３０５ｎは、データ６０１を当該物理インタフェースに出力する；
［ＴＡ５］データを送信する。
【００６３】
次に、第２の送信処理フローについて説明する。［Ｔ１］及び［Ｔ２］の処理は第２の送信処理フローと同じであり、以下では、処理［Ｔ２］に引き続く処理のみを説明する。
【００６４】
［Ｔ３ｂ］  処理［Ｔ２］においてインタフェース番号６０２２が設定されていないときは、ネットワークスタック部３０６ａは、データ６０１をアンダーレイネットワークの通信データと判断し、データ６０１に対してプロトコル処理を行った上で、これに含まれるアンダーレイネットワークの転送プロトコルに対応したヘッダ情報（例えば、ＩＰヘッダ情報など）と、制御情報６０２のインタフェース番号６０２２とをキーとして、共有転送テーブル４０１ａを検索する；
［ＴＢ４］  処理［Ｔ３ｂ］での検索の結果、あて先解決されたデータ６０１について、ネットワークスタック部３０６ａは、制御情報６０２のネットワークモジュール番号６０２１とインタフェース番号６０２２を、それぞれ送信インタフェースを含むネットワークモジュールの識別子／番号と送信インタフェース識別子／番号に更新し、ネットワーク仮想化部３０５ａに転送する；
［ＴＢ５］  ネットワーク仮想化部３０５ａは、ネットワークモジュール番号６０２１とインタフェース番号６０２２に基づき、データ６０１と制御情報６０２を転送する。もし、データ６０１が他ネットワークモジュール３０１ｎの物理インタフェース宛であった場合、処理［ＲＢＣ６］の手順を使い、他ネットワークモジュール３０１ｎにデータ６０１と制御情報６０２を転送する。送信・受信フラグ６０２４が送信であるときに、ネットワークモジュール番号６０２１とインタフェース番号６０２２が自ネットワークモジュール３０１ａ〜３０１ｎの物理インタフェース３０４ａ〜３０４ｎを示している場合、ネットワーク仮想化部３０５ａ〜３０５ｎは、データ６０１を当該物理インタフェースに出力する；
［ＴＢ６］データ送信を行う。
【００６５】
本例示実施形態において、アンダーレイネットワークにおけるネットワークプロトコルの経路情報は、ネットワークモジュール３０１のネットワークスタック部３０６内にある共有転送テーブル４０１に登録される。すべてのネットワークモジュール３０１の共有転送テーブル４０１には、同一の情報が同期して登録される。本例示実施形態の構成では、負荷分散のためにネットワークモジュール３０１の間で分散配置されるのは、仮想ノード部３０２１，３０２２である。このため、仮想ノード部宛のデータ以外の送受信データについては、どのネットワークモジュール３０１のネットワークスタック部３０６の共有転送テーブル４０１を検索しても出力先の物理インタフェースとして同じものが導き出されるようにするにより、共有転送テーブル４０１間の同期を容易なものにすることができる。また、送信時に物理インタフェースが異なるネットワークモジュール３０１に所属しているとしても、ネットワーク仮想化部３０５とスイッチファブリック部３１０により、制御情報６０２の情報に基づいてデータ６０１がネットワークノード１０１内を転送されるので、ネットワークスタック部３０６が個別に意識して共有転送テーブル４０１の設定を変更する必要はなく、ネットワークノード１０１で一様に同じ情報を共有転送テーブル４０１に登録すればよい。
【００６６】
本例示実施形態によれば、既存のアンダーレイネットワークのプロトコルを処理するネットワークスタック部３０６の下位層にネットワーク仮想化部３０５を配備することで、既存のネットワークスタック部３０６を大きく変更することなく、ネットワーク仮想化部３０５を使用することが可能となる。これは、このような構成によれば、既存のネットワークスタック部３０６では全く処理できない送受信データを、あらかじめネットワーク仮想化部３０５で振り分けておくことができるようになり、ネットワークスタック部３０６をバイパスすることが可能となるからである。またネットワーク仮想化部３０５を、ネットワークスタック部３０６の下位層に配備することで、仮想ノード部３０２１，３０２２を搭載するネットワークモジュールの負荷分散が可能となる。これは、ネットワークノード１０１内の複数のネットワークモジュール３０１のネットワークスタック部３０６において同じ識別子／番号のアドレスを使っても、ネットワーク仮想化部３０５において、アドレスより細かい粒度の情報、例えば、ＴＣＰポート番号やＵＤＰポート番号などで送受信データの振り分けを行うことが可能となるためである。
【００６７】
結局、上述したネットワークノード１０１は、
１または複数の仮想ノード部と、
送受信データを処理する仮想ノード部を、ネットワークノード１０１内の複数のネットワークモジュール３０１の１または複数の仮想ノード部の中から特定するために、あらかじめ設定されたテーブル情報を基に決定する、ネットワークモジュール３０１上のネットワーク仮想化部３０５と、
受信データを処理する仮想ノード部３０２１，３０２２および出力方路を含むネットワークモジュール３０１を、あらかじめ設定されたテーブル情報に基づいて、ネットワークノード１０１内の複数のネットワークモジュール３０１の中から特定する、スイッチモジュール３０８上のスイッチファブリック部３１０と、
前述のテーブル情報を登録・変更・削除などのメンテナンスを行うネットワークモジュール３０１のネットワーク制御部３０３およびスイッチモジュール３０８のスイッチネットワーク制御部３０９と、
前述のテーブル情報などを複数のネットワークモジュール３０１とスイッチモジュール３０８との間で共有するために、ネットワークモジュール３０１のネットワーク制御部３０３とスイッチモジュール３０８のスイッチネットワーク制御部３０９の間で情報交換される制御メッセージを伝送する通信経路５０１と、
仮想ノード部で決定したネットワーク制御情報をネットワークに反映させるためにその情報をネットワーク制御部３０３に通知する手段と、
を備えていることになる。ネットワーク制御情報は、例えば、仮想ネットワークにおけるルーティングやトポロジーやＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）などのプロビジョニング情報などである。通知手段は、例えば、制御信号用の接続５０３１，５０３２によって構成されている。
【００６８】
このようにネットワークノード１０１を構成することによって、ネットワークモジュール３０１が増加するたびに、処理分散による仮想ノード３０２１，３０２２の性能向上と、インタフェース数が増えることによるトータル転送性能の向上の両方を図ることができる。また、送受信データの処理に関し、ネットワークノード１０１内に分散された仮想ノード部３０２１，３０２２における制御信号の処理結果を反映して、ネットワークノード１０１内で分散され配置された複数のネットワークモジュール３０１のそれぞれで、その指示にしたがった処理を行うことができる。必要であればネットワークノード１０１内に分散配置されたネットワークモジュール３０１上のある仮想ノードに、送受信データを伝送することができる。
【００６９】
上述した例示実施形態においては、下記に示すようなさらなる変更が可能である。
【００７０】
実施例１：
ネットワーク制御部３０３とスイッチネットワーク制御部３０９にアクセスリストを配備することにより、仮想ノード部３０２１，３０２２からのアクセスで設定してはいけないテーブルエントリなどをフィルタすることが可能になる。これにより、仮想ネットワーク相互のアイソレーションを実現することが可能になる。
【００７１】
実施例２：
ネットワーク制御部３０３は、他のネットワークモジュール３０１からの制御メッセージを、仮想ノード部３０２１，３０２２に転送することができる。これにより、独立した仮想ネットワーク間における協調動作や、仮想ノード部３０２１，３０２２で動いている処理を強調させることが可能となる。例えば、ネットワークモジュール３０１ａ上の仮想ノード部３０２１ａで動作しているＯＳＰＦと、ネットワークモジュール３０１ｂ上の仮想ノード部３０２２ｂで動作しているＢＧＰ（Ｂｏｒｄｅｒ  Ｇａｔｅｗａｙ  Ｐｒｏｔｏｃｏｌ）とを連動させることが可能となる。
【００７２】
実施例３：
制御情報６０２の送信・受信フラグ６０２４が“送信”に設定されているときにおいて、例えば全てのエントリに“Ｆ”の値を格納するなどしてインタフェース番号６０２２の情報が無効にされ、仮想ノード番号６０２３には有効な値が入力されているという条件に一致するときに、ネットワーク仮想化部３０５が仮想ノードインタフェース転送テーブル４０３を検索することにより、あるネットワークモジュール３０１で一度処理されたデータを異なるネットワークモジュール３０１で再び処理することができるようになる。これにより、仮想ノード部の多段接続が可能になり、仮想ネットワークにおいてパイプライン処理により転送性能を向上させることや、同じ転送性能を有するネットワークにより一つのデータに対してより複雑な処理を実行することが可能になる。
【００７３】
実施例４：
制御情報６０２のネットワークモジュール番号６０２１のフィールドを送信用のネットワークモジュール番号と受信用のネットワークモジュール番号とに分離し、インタフェース番号６０２２のフィールドを送信用のインタフェース番号と受信用のインタフェース番号とに分離し、仮想ノード番号６０２３のフィールドを送信用の仮想ノード番号と受信用の仮想ノード番号とに分離することができる。このように各フィールドを送信用と受信用とに分けて送信用の制御情報と受信用の制御情報とを分けて格納するようにした場合には、制御情報６０２の書き換えが必要なくなり、実施例３で示したような多段接続を行う際に以前の情報が消失しなくなるため、受信インタフェース番号を使い続けて後段でフィルタ処理等を行うことも実現可能になる。
【００７４】
実施例５：
アンダーレイネットワークのルーティングプロトコルパケットに関して、仮想ノード部のパスを設定する手順と同じ手順で設定することにより、仮想ノード部３０２１，３０２２にプロトコルパケットを集めることが可能となる。これにより、仮想ノード部３０２１，３０２２においてアンダーレイネットワークのルーティングプロトコルを処理し、ネットワークスタック部３０６の共有転送テーブル４０４に格納されるべき経路情報を作成することが可能になる。この構成では、アンダーレイネットワークのルーティングプロトコル処理のために別にモジュールを準備する必要がなくなる。
【００７５】
実施例６：
アンダーレイネットワークがレイヤ２ネットワークである場合、ネットワークノード１０１での仮想ノード部３０２１，３０２２での仮想リンクのパスの設定において、隣接するネットワークノード１０２とのリンクを直接収容する特定の物理インタフェース３０４を収容するネットワークモジュール３０１にのみ、パスを設定してもよい。この構成では、すべてのネットワークモジュール３０１のテーブルエントリを消費してパスの設定を行う必要がなくなる。
【００７６】
以上、例示実施形態及び実施例を参照して本発明を説明したが、本発明は上記の例示実施形態及び実施例に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００７７】
この出願は、２００８年１０月２日に出願された日本国特許出願：特願２００８−２５７５３０を基礎とする優先権を主張し、その開示の全てを参照によりここに取り込む。
【先行技術文献】
【特許文献】
【００７８】
【特許文献１】日本：特開２００８−５４２１４号公報
【特許文献２】日本：特開２００４−１１０６１１号公報
【非特許文献】
【００７９】
【非特許文献１】Ａｎｄｙ  Ｂａｖｉｅｒ，  Ｎｉｃｋ  Ｆｅａｍｓｔｅｒ，  Ｍａｒｋ  Ｈｕａｎｇ，  Ｌａｒｒｙ  Ｐｅｔｅｒｓｏｎ，  Ｊｅｎｎｉｆｅｒ  Ｒｅｘｆｏｒｄ，  “Ｉｎ  ＶＩＮＩ  ｖｅｒｉｔａｓ：  ｒｅａｌｉｓｔｉｃ  ａｎｄ  ｃｏｎｔｒｏｌｌｅｄ  ｎｅｔｗｏｒｋ  ｅｘｐｅｒｉｍｅｎｔａｔｉｏｎ，”  Ｓｅｐｔｅｍｂｅｒ  ２００６，  ＳＩＧＣＯＭＭ  ’０６：  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ２００６  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ａｐｐｌｉｃａｔｉｏｎｓ，  ｔｅｃｈｎｏｌｏｇｉｅｓ，  ａｒｃｈｉｔｅｃｔｕｒｅｓ，  ａｎｄ  ｐｒｏｔｏｃｏｌｓ  ｆｏｒ  ｃｏｍｐｕｔｅｒ  ｃｏｍｍｕｎｉｃａｔｉｏｎｓ
【符号の説明】
【００８０】
１００    物理ネットワーク
１０１    ネットワークノード
１４０，１５０    仮想ネットワーク
３０１ａ〜３０１ｎ    ネットワークモジュール
３０２１ａ〜３０２１ｎ，３０２２ａ〜３０２２ｎ    仮想ノード部
３０３    ネットワーク制御部
３０４    物理インタフェース
３０５    ネットワーク仮想化部
３０６    ネットワークスタック部
３０８    スイッチモジュール
３０９    スイッチネットワーク制御部
３１０    スイッチファブリック部
４０１    共有転送テーブル
４０２    他モジュール転送テーブル
４０３    仮想ノードインタフェース転送テーブル
４０４    スイッチ転送テーブル
【図１】
0005429179.tif 000002
【図２】
0005429179.tif 000003
【図３】
0005429179.tif 000004
【図４】
0005429179.tif 000005
【図５】
0005429179.tif 000006
【図６】
0005429179.tif 000007
【図７】
0005429179.tif 000008
【図８】
0005429179.tif 000009
【図９】
0005429179.tif 000010