(57)【特許請求の範囲】
【請求項１】
ＩＰアドレスに基づき、複数のネットワークにそれぞれ対応する複数のインタフェース間のパケット転送を制御するルータと、
ＭＡＣアドレス及びＶＬＡＮ識別子に基づき、前記複数のネットワークにそれぞれ対応する複数のポートの各々と前記複数のネットワーク内の複数の仮想ネットワークにそれぞれ対応する複数のポートの各々との間のパケット転送を制御するスイッチと、
前記ルータの前記複数のインタフェースの各々と前記スイッチの当該インタフェースに対応するポートとの間でパケットを転送するとともに、前記ルータを、複数の仮想ルータであって、各々が、前記複数の仮想ネットワークの内の、当該仮想ルータに関連付けられた仮想ネットワーク間のパケット転送を制御する、複数の仮想ルータとして提供する、ルータ仮想化装置と、
を備え、
前記ルータ仮想化装置は、前記スイッチからパケットが入力された場合、当該パケットを前記ルータに転送し、前記ルータからパケットが入力された場合、当該パケットに基づき、前記複数の仮想ルータの内の当該パケットの転送を行う仮想ルータを特定し、当該パケットに、当該特定された仮想ルータに関連付けられたＶＬＡＮ識別子を付与し、前記スイッチに転送する、
ネットワーク制御システム。
【請求項２】
前記ルータ仮想化装置は、前記ルータからパケットが入力された場合、当該パケットに、前記特定された仮想ルータと当該パケットが入力されたポートとの組み合わせに関連付けられたＶＬＡＮ識別子を付与する、
請求項１に記載のネットワーク制御システム。
【請求項３】
前記ルータ仮想化装置は、前記ルータからパケットが入力された場合、当該パケットが入力されたポートと当該パケットの送信元アドレスへ到達可能なポートとに基づき、当該パケットの転送を行う仮想ルータを特定する、
請求項１または２に記載のネットワーク制御システム。
【請求項４】
ＩＰアドレスに基づき、複数のネットワークにそれぞれ対応する複数のインタフェース間のパケット転送を制御するルータの前記複数のインタフェースの各々と、ＭＡＣアドレス及びＶＬＡＮ識別子に基づき、前記複数のネットワークにそれぞれ対応する複数のポートの各々と前記複数のネットワーク内の複数の仮想ネットワークにそれぞれ対応する複数のポートの各々との間のパケット転送を制御するスイッチの当該インタフェースに対応するポートと、の間でパケットを転送するとともに、前記ルータを、複数の仮想ルータであって、各々が、前記複数の仮想ネットワークの内の、当該仮想ルータに関連付けられた仮想ネットワーク間のパケット転送を制御する、複数の仮想ルータとして提供する、ルータ仮想化装置であって、
前記スイッチからパケットが入力された場合、当該パケットを前記ルータに転送し、前記ルータからパケットが入力された場合、当該パケットに基づき、前記複数の仮想ルータの内の当該パケットの転送を行う仮想ルータを特定し、当該パケットに、当該特定された仮想ルータに関連付けられたＶＬＡＮ識別子を付与し、前記スイッチに転送する、
ルータ仮想化装置。
【請求項５】
前記ルータからパケットが入力された場合、当該パケットに、前記特定された仮想ルータと当該パケットが入力されたポートとの組み合わせに関連付けられたＶＬＡＮ識別子を付与する、
請求項４に記載のルータ仮想化装置。
【請求項６】
ＩＰアドレスに基づき、複数のネットワークにそれぞれ対応する複数のインタフェース間のパケット転送を制御するルータの前記複数のインタフェースの各々と、ＭＡＣアドレス及びＶＬＡＮ識別子に基づき、前記複数のネットワークにそれぞれ対応する複数のポートの各々と前記複数のネットワーク内の複数の仮想ネットワークにそれぞれ対応する複数のポートの各々との間のパケット転送を制御するスイッチの当該インタフェースに対応するポートと、の間でパケットを転送するとともに、前記ルータを、複数の仮想ルータであって、各々が、前記複数の仮想ネットワークの内の、当該仮想ルータに関連付けられた仮想ネットワーク間のパケット転送を制御する、複数の仮想ルータとして提供する、ルータ仮想化装置におけるネットワーク制御方法であって、
前記スイッチからパケットが入力された場合、当該パケットを前記ルータに転送し、
前記ルータからパケットが入力された場合、当該パケットに基づき、前記複数の仮想ルータの内の当該パケットの転送を行う仮想ルータを特定し、当該パケットに、当該特定された仮想ルータに関連付けられたＶＬＡＮ識別子を付与し、前記スイッチに転送する、
ネットワーク制御方法。
【請求項７】
前記ルータからパケットが入力された場合、当該パケットに、前記特定された仮想ルータと当該パケットが入力されたポートとの組み合わせに関連付けられたＶＬＡＮ識別子を付与する、
請求項６に記載のネットワーク制御方法。
【請求項８】
前記ルータからパケットが入力された場合、当該パケットが入力されたポートと当該パケットの送信元アドレスへ到達可能なポートとに基づき、当該パケットの転送を行う仮想ルータを特定する、
請求項６または７に記載のネットワーク制御方法。
【請求項９】
ＩＰアドレスに基づき、複数のネットワークにそれぞれ対応する複数のインタフェース間のパケット転送を制御するルータの前記複数のインタフェースの各々と、ＭＡＣアドレス及びＶＬＡＮ識別子に基づき、前記複数のネットワークにそれぞれ対応する複数のポートの各々と前記複数のネットワーク内の複数の仮想ネットワークにそれぞれ対応する複数のポートの各々との間のパケット転送を制御するスイッチの当該インタフェースに対応するポートと、の間でパケットを転送するとともに、前記ルータを、複数の仮想ルータであって、各々が、前記複数の仮想ネットワークの内の、当該仮想ルータに関連付けられた仮想ネットワーク間のパケット転送を制御する、複数の仮想ルータとして提供する、ルータ仮想化装置におけるルータ仮想化方法であって、
前記スイッチからパケットが入力された場合、当該パケットを前記ルータに転送し、
前記ルータからパケットが入力された場合、当該パケットに基づき、前記複数の仮想ルータの内の当該パケットの転送を行う仮想ルータを特定し、当該パケットに、当該特定された仮想ルータに関連付けられたＶＬＡＮ識別子を付与し、前記スイッチに転送する、
ルータ仮想化方法。
【請求項１０】
ＩＰアドレスに基づき、複数のネットワークにそれぞれ対応する複数のインタフェース間のパケット転送を制御するルータの前記複数のインタフェースの各々と、ＭＡＣアドレス及びＶＬＡＮ識別子に基づき、前記複数のネットワークにそれぞれ対応する複数のポートの各々と前記複数のネットワーク内の複数の仮想ネットワークにそれぞれ対応する複数のポートの各々との間のパケット転送を制御するスイッチの当該インタフェースに対応するポートと、の間でパケットを転送するとともに、前記ルータを、複数の仮想ルータであって、各々が、前記複数の仮想ネットワークの内の、当該仮想ルータに関連付けられた仮想ネットワーク間のパケット転送を制御する、複数の仮想ルータとして提供する、コンピュータに、
前記スイッチからパケットが入力された場合、当該パケットを前記ルータに転送し、
前記ルータからパケットが入力された場合、当該パケットに基づき、前記複数の仮想ルータの内の当該パケットの転送を行う仮想ルータを特定し、当該パケットに、当該特定された仮想ルータに関連付けられたＶＬＡＮ識別子を付与し、前記スイッチに転送する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク制御システム、ルータ仮想化装置、ネットワーク制御方法、ルータ仮想化方法およびプログラムに関し、特に、ルータ仮想化技術を含むネットワーク制御システム、ルータ仮想化装置、ネットワーク制御方法、ルータ仮想化方法およびプログラムに関する。
【背景技術】
【０００２】
クラウドコンピューティングやＸ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＸａａＳ）で実現されるマルチテナント環境において、テナントごとに複数のサブネットをもつネットワークを構成する場合は、各テナントにルータを割り当てる必要がある。
【０００３】
特許文献１には、ローカルなイントラネットセグメントとしてのＶｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（以下、ＶＬＡＮ）間の経路を制御するローカルスイッチと、グローバルなインターネットセグメントとの間の経路を制御するメインルータと、ローカルスイッチからメインルータへはインターネットセグメントのトラヒックのみが送られるようにパケットをフィルタリングするローカルルータスイッチとを備えたネットワークスイッチング方式が開示されている。
【０００４】
しかし、テナントごとに物理ルータを用意するとシステムの規模が膨大になったり、システム構成が複雑になったりするため、仮想ルータと呼ばれる仮想化されたルータのインスタンスを生成し、それらをテナントに割り当てることが行われている。
【０００５】
仮想ルータを実現するためには、例えば、Ｖｉｒｔｕａｌ  Ｒｏｕｔｉｎｇ  ａｎｄ  Ｆｏｒｗａｒｄｉｎｇ（ＶＲＦ）に対応したルータや、仮想ルータの機能をもつＳｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋｉｎｇ（ＳＤＮ）製品を利用するといった方法がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−１９０７１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述の方法で生成された仮想ルータでは、置き換え前に使用されていた物理ルータとの互換性が保証されないという課題があった。たとえば、ファイアウォールや性能情報監視、障害監視、管理用インターフェースといった、置換前の物理ルータで用いてきた様々な機能と仮想ルータ上で実現する対応する機能とに差異や不足がある。このため、既存のＩｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ（ＩＣＴ）環境をマルチテナント化する際、仮想ルータによって置き換える前と同様に、ルータによってネットワークを管理・保守することができなくなることがあった。
【０００８】
本発明のネットワーク制御システムは、ルータを仮想化し、かつ物理ルータとの互換性を維持することを可能とすることを目的とする。
【課題を解決するための手段】
【０００９】
請求項１
【発明の効果】
【００１０】
本発明によれば、ルータを仮想化し、かつ物理ルータによってネットワークの管理・保守が可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第一の実施形態におけるネットワーク制御システムの構成を示すブロック図である。
【図２】本発明の第一の実施形態における動作を示すフローチャートである。
【図３】本発明の第一の実施形態における動作を示すフローチャートである。
【図４】本発明の第二の実施形態におけるネットワーク制御システムの構成を示すブロック図である。
【図５】本発明の第二の実施形態におけるネットワーク制御システムのトポロジ定義テーブル、ルータ定義テーブル、送信待ちフレームテーブルの例を示す図である。
【図６】本発明の第二の実施形態における動作を示すフローチャートである。
【図７】本発明の第二の実施形態における動作を示すフローチャートである。
【図８】本発明の第二の実施形態における動作を示すフローチャートである。
【図９】本発明の第二の実施形態における動作を示すフローチャートである。
【図１０】本発明の第二の実施形態における動作を示すフローチャートである。
【図１１】本発明の他の実施形態におけるネットワーク制御システムの構成を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下に、本発明を実施するための好ましい形態について図面を参照して詳細に説明する。ただし、以下に述べる実施形態は本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。
【００１３】
［第一の実施形態］
まず、本実施形態について図面を参照して詳細に説明する。図１は、第一の実施形態におけるネットワーク制御システムの構成を示すブロック図である。
【００１４】
［構成の説明］
図１に示すように、本実施形態におけるネットワーク制御システム１は、ルータ１０、仮想ネットワーク２０~２３、スイッチ３０、ルータ仮想化装置４０を備えている。
【００１５】
ルータ１０は、複数のネットワーク間の経路を制御する。スイッチ３０は、前述のネットワーク内の仮想ネットワーク２０~２３と接続される。
【００１６】
ルータ仮想化装置４０は、ルータ１０及びスイッチ３０と接続し、ルータ１０を、複数の仮想ネットワーク２０~２３間の経路を制御する複数の仮想ルータ５０、５１として提供する。具体的には、ルータ仮想化装置４０は、スイッチ３０から入力されたパケットをルータ１０に転送し、ルータ１０から入力されたパケットを複数の仮想ルータ５０，５１のうち所定の仮想ルータに応じて付与された識別子に基づいて、スイッチ３０に転送する。
【００１７】
［動作の説明］
次に、第一の実施形態におけるネットワーク制御システム１の動作を、図１〜図３を参照して説明する。
【００１８】
まず、仮想ネットワーク２０〜２３で構成されたネットワークから、ルータ１０までパケットが転送される動作について図２を参照して説明する。
図２において、仮想ネットワーク２０~２３で構成されたネットワークから、接続されるスイッチ３０へとパケットが入力される（Ｓ２００）。次に、この入力されたパケットが、スイッチ３０からルータ仮想化装置４０に入力される（Ｓ２０１）。ルータ仮想化装置４０は、スイッチ３０から入力されたパケットをルータ１０に転送する（Ｓ２０３）。
【００１９】
次に、ルータ１０から、仮想ネットワーク２０〜２３で構成されたネットワークまで、パケットが転送される動作について図３を参照して説明する。
図３において、ルータ１０が、ルータ仮想化装置４０にパケットを転送する（Ｓ３００）と、ルータ仮想化装置４０は、ルータ１０から入力されたパケットを複数の仮想ルータ５０，５１のうち所定の仮想ルータに応じて付与された識別子に基づいて、スイッチ３０に転送する（Ｓ３０１）。スイッチ３０は、ルータ仮想化装置４０から入力されたパケットを、付与された識別子に基づいて対応する仮想ネットワークへ転送する（Ｓ３０２）。
【００２０】
以上、説明した二つの動作において、ルータ１０は、複数のネットワーク間のルーティングを制御する。つまり、仮想ネットワーク２０~２３で構成されたネットワークからスイッチ３０とルータ仮想化装置４０とを介して入力されるパケットを、ルータ１０はルータ仮想化装置４０へ転送する。
【００２１】
［効果の説明］
第一の実施形態におけるルータ仮想化装置４０を用いたネットワーク制御システム１では、上述したように、ルータ１０及びスイッチ３０と接続したルータ仮想化装置４０によって、ルータ１０を活用して複数の仮想ルータ５０，５１を提供することができる。さらに、ルータ１０を活用することで、ルータ１０との互換性を維持することができる。加えて、ネットワークの管理・保守を、ルータ１０の設定において行うことができる。
【００２２】
［第二の実施形態］
次に、発明の第二の実施形態を、図面を参照して説明する。
【００２３】
図４は、第二の実施形態におけるネットワーク制御システム１の構成を示すブロック図である。第二の実施形態では、仮想ネットワーク２０〜２３として、Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ  Ｉｄｅｎｔｉｆｉｅｒ（以下、ＶＬＡＮ  ＩＤという）２１１〜２１４と対応するＶＬＡＮ１２０〜１２３、スイッチ３０としてレイヤ２スイッチ（以下、Ｌ２スイッチという）１３０を用いる。また、ルータ仮想化装置４０は、オープンフロースイッチ（以下、ＯＦＳという）１４０とオープンフローコントローラ（以下、ＯＦＣという）１５０とを備える。ＯＦＣ１５０は、トポロジ定義テーブル１５１、ルータ定義テーブル１５２、及び送信待ちフレームテーブル１５３を有する。
【００２４】
第二の実施形態では、ＯｐｅｎＦｌｏｗプロトコルを使用してルータ仮想化装置４０を実現する。
【００２５】
［構成の説明］
以下、図４、図５を参照して、第二の実施形態の構成を詳細に説明する。図５は、第二の実施形態におけるネットワーク制御システムのトポロジ定義テーブル１５１、ルータ定義テーブル１５２、及び送信待ちフレームテーブル１５３の例を示す図である。
【００２６】
ルータ１０は、ルータ仮想化装置４０によって仮想化される実際のルータである。図４に示すように、ルータ１０は、１９２．１６８．１．２５４／２４のＩＰアドレスを設定されたインターフェース１１、１７２．１６．２５５．２５４／１６のＩＰアドレスを設定されたインターフェース１２、及び１９２．１６８．２．２５４／２４のＩＰアドレスを設定されたインターフェース１３の、３つのインターフェースをもつ。また、インターフェース１３についてはイントラネット８０へのゲートウェイとなるため、１０．０．０．０／８への経路も設定されている。
【００２７】
業務ネットワーク７０は、仮想ルータ５０、５１によってルーティングされるネットワークである。業務ネットワーク７０には、テナント６１と、テナント６２との、２つのテナントが存在する。ここで、ＶＬＡＮ１２０とＶＬＡＮ１２１はテナント６０内のネットワークであり、ＶＬＡＮ１２２とＶＬＡＮ１２３はテナント６１内のネットワークである。テナント６１ではＶＬＡＮ１２０およびＶＬＡＮ１２１の間を仮想ルータ５０によってルーティングする。また、テナント６２ではＶＬＡＮ１２２およびＶＬＡＮ１２３の間を仮想ルータ５１によってルーティングする。また、ＶＬＡＮ１２３については、仮想ルータ５１によってイントラネット８０に接続する。
【００２８】
ルータ仮想化装置４０は、ルータ１０を仮想ルータ５０、５１に仮想化する。ルータ仮想化装置４０は、ＯＦＳ１４０と、ＯＦＣ１５０とで構成される。ＯＦＳ１４０は、ＯｐｅｎＦｌｏｗプロトコルで規定されるデータプレーンであり、ＯＦＣ１５０の指示に従ってフレームの転送や破棄をおこなうスイッチである。ＯＦＳ１４０は、内向きポートとしてポート４１、ポート４２、及びポート４３を、外向きポートとしてポート４４、ポート４５、及びポート４６を、それぞれ備える。
【００２９】
ここで「内向きポート」とは、ルータ１０から業務ネットワーク７０内のホストへ転送されるパケットが入力されるポートである。「外向きポート」とはホストからルータ１０へ転送されるパケットが入力されるポートである。
【００３０】
ポート４５へは、ＶＬＡＮタグ付きのフレーム（ＶＬＡＮ  ＩＤを有するフレーム）が入力され、またはポート４５から転送される。その他のポートへはＶＬＡＮタグ無しのフレームが入力される。
【００３１】
ＯＦＣ１５０は、ＯｐｅｎＦｌｏｗプロトコルで規定されるコントロールプレーンであり、ＯＦＳ１４０を制御することでルータの仮想化を実現する装置である。ＯＦＣ１５０は、仮想ルータの構成情報データベースとして、図５に示すトポロジ定義テーブル１５１と、ルータ定義テーブル１５２と、送信待ちフレームテーブル１５３とを備える。
【００３２】
Ｌ２スイッチ１３０は、ＶＬＡＮ１２０~１２３で構成されたネットワークとポート３４〜３７で接続される。また、Ｌ２スイッチ１３０は、ルータ仮想化装置４０におけるＯＦＳ１４０の外向きポート４４〜４６と、ポート３１〜３３で接続される。
【００３３】
図５を参照すると、トポロジ定義テーブル１５１は、仮想ルータ５０、５１と、各仮想ルータ５０、５１がもつリンクを定義する。リンクとは、仮想ルータに接続する内向きポートおよびそのＶＬＡＮタグと、外向きポートおよびそのＶＬＡＮタグとを、１対１で関連づけるための識別子である。
【００３４】
ここで、仮想ルータ５０が持つリンク５１１２は、ポート４２及びＶＬＡＮタグがない場合と、ポート４５及びＶＬＡＮタグ２１２を持つ場合とを対応付けている。一方、仮想ルータ５１が有するリンク５１１３は、ポート４２及びＶＬＡＮタグがない場合と、ポート４５及びＶＬＡＮタグ２１３を持つ場合とを対応付けている。リンク５１１２とリンク５１１３とは、「ポート４２及びＶＬＡＮタグがない場合と、ポート４５と」を対応付けている点では一致しているが、ポート４５と対応づけられたＶＬＡＮタグの差異によって、リンク５１１２におけるポート４５からＶＬＡＮ１２１への経路と、リンク５１１３におけるポート４５からＶＬＡＮ１２２への経路とに分岐している。
【００３５】
仮想ルータ５０および仮想ルータ５１は、それぞれテナント６１およびテナント６２が利用する仮想ルータであり（いいかえると、各テナントに対して仮想ルータが割り当てられており）、上述のようにポート４５に対応付けられているＶＬＡＮタグによって、テナント６０、６１内の経路をテナント間で分けることができる。
【００３６】
図５のトポロジ定義テーブル１５１に示すように、仮想ルータ５０は、リンク５１１１でポート４１とポート４４と（いずれもＶＬＡＮタグは無し）を、リンク５１１２でポート４２（ＶＬＡＮタグ無し）とポート４５のＶＬＡＮタグ２１２とを、それぞれ関連づける。
【００３７】
一方、仮想ルータ５１は、リンク５１１３でポート４２（ＶＬＡＮタグ無し）とポート４５のＶＬＡＮタグ２１３とを、リンク５１１４でポート４３とポート４６と（いずれもＶＬＡＮタグは無し）を、それぞれ関連づける。
【００３８】
ルータ定義テーブル１５２は、ルータ１０がもつインターフェースの情報を定義する。たとえば、インターフェース１１は、ポート４１とＶＬＡＮタグ無しで接続し、ＭＡＣアドレスはｄｅ：ａｄ：ｂｅ：ｅｆ：００：０１、ＩＰアドレスは１９２．１６８．１．２５４、経路として１９２．１６８．１．０／２４をもつ。インターフェース１２、インターフェース１３についても同様である。なお、インターフェース１３がもつイントラネット８０への経路１０．０．０．０／８についても、ルータ定義テーブル１５２で定義する。
【００３９】
送信待ちフレームテーブル１５３は、ＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）による宛先ＭＡＣアドレスの解決待ちのため、外向きポートに出力できないフレームを格納するバッファである。例えば、送信待ちフレームテーブル１５３中のフレーム５３１とフレーム５３２のように、それぞれ別のＶＬＡＮ上に存在する、ＭＡＣアドレスは異なるがＩＰアドレスは同じであるようなホスト宛てにフレームを転送する事がある。この場合、ルータ１０ではＭＡＣアドレスを解決できない。このため、ルータ１０には疑似ＭＡＣアドレスによりＭＡＣアドレスを解決させておき、ルータ１０が送信した疑似ＭＡＣアドレス宛てのフレームを送信待ちフレームテーブル１５３に格納したうえで、実際のＭＡＣアドレスの解決を行う。
【００４０】
［動作の説明］
次に、図６〜８を参照して、第二の実施形態における動作を詳細に説明する。また、第一の実施形態におけるルータ仮想化装置４０としての動作と、第二の実施形態におけるルータ仮想化装置４０がＯＦＳ１４０及びＯＦＣ１５０を備えた場合の動作とに差異がある場合には、適宜対比して説明する。図６〜８は、ルータ仮想化装置４０がＯＦＳ１４０及びＯＦＣ１５０を備えた場合として記載する。
【００４１】
図６は第二の実施形態におけるメインルーチンを示すフローチャートである。図７は第二の実施形態における、外向きポート４４〜４６に入力されたフレームを処理するサブルーチンを示すフローチャートである。図８は第二の実施形態における、内向きポート４１〜４３に入力されたフレームを処理するサブルーチンを示すフローチャートである。図９は、第二の実施形態における、仮想ルータ候補を取得するサブルーチンを示すフローチャートである。図１０は、第二の実施形態における、フレーム転送処理のサブルーチンを示すフローチャートである。
【００４２】
まず、図６を参照して、第二の実施形態におけるメインルーチンを説明する。ルータ仮想化装置４０がＯＦＳ１４０及びＯＦＣ１５０を備えた場合、図６に示す動作は、ＯＦＳ１４０にフレームが入力された際、そのフレームに合致するフローエントリが登録されていない場合にＯＦＳ１４０から発行されるＰａｃｋｅｔ−Ｉｎメッセージを契機に、ＯＦＣ１５０で実行される。図７〜１０に示す動作も同様に、ＯＦＣ１５０で実行される。
【００４３】
ここで、システムの構成変更に対応するため、フローエントリは永続性をもたないものとする。具体的には、フローエントリ登録時にＯＦＣ１５０がＯＦＳ１４０に発行するＭｏｄｉｆｙ  Ｆｌｏｗ  Ｅｎｔｒｙメッセージにおいて、適当なハードタイムアウトを指定する。
【００４４】
ＯＦＳ１４０にフレームが到着し、ＯＦＳ１４０からＯＦＣ１５０へＰａｃｋｅｔ−ｉｎメッセージが発行されると、ＯＦＣ１５０はまず任意のフレームに合致するように初期化された、フローエントリのマッチ条件の構造体を作成する（Ｓ４００）。続いて、ＯＦＣ１５０は、フレームの入力ポートと入力ＶＬＡＮタグをマッチ条件に追加して（Ｓ４０１）、入力ポートと入力ＶＬＡＮタグを元にトポロジ定義テーブル１５１を検索する（Ｓ４０２）。
【００４５】
一方、第一の実施形態に記載のルータ仮想化装置４０においては、ルータ仮想化装置４０にフレームが入力されるたびに図６の動作が実行される。フレームが到着すると、ルータ仮想化装置４０はフレームの入力ポートと入力ＶＬＡＮタグを取得し、続いて入力ポートと入力ＶＬＡＮタグを元にトポロジ定義テーブル１５１を検索する。
【００４６】
ここで、トポロジ定義テーブル１５１内でマッチ条件と合致する行が見つからなかった場合は、未定義のポートまたは未定義のＶＬＡＮタグであるため、ＯＦＣ１５０は、Ｍｏｄｉｆｙ  Ｆｌｏｗ  Ｅｎｔｒｙメッセージを用いて合致したフレームを破棄するフローエントリをフローテーブルに登録して処理を終了する（Ｓ４０３）。第一の実施形態におけるルータ仮想化装置４０では、Ｓ４０３においてフレームを破棄して処理を終了する。以下、ＯＦＣ１５０が「Ｍｏｄｉｆｙ  Ｆｌｏｗ  Ｅｎｔｒｙメッセージを用いて合致したフレームを破棄するフローエントリをフローテーブルに登録して処理を終了する」場合、第一の実施形態に記載のルータ仮想化装置４０では、フレームを破棄して処理を終了する。
【００４７】
一方、合致する行が見つかった場合は、ＯＦＣ１５０は、フレームのイーサタイプをマッチ条件に追加するとともに（Ｓ４０４）、イーサタイプで示されるプロトコルがＡＲＰまたはＩＰであるかを検査する（Ｓ４０５）。第一の実施形態に記載のルータ仮想化装置４０では、Ｓ４０４においてフレームのイーサタイプを取得し、Ｓ４０５においてイーサタイプで示されるプロトコルがＡＲＰまたはＩＰであるかを検査する。ここで、プロトコルがＡＲＰでもＩＰでもない場合は、処理できないプロトコルであるため、ＯＦＣ１５０は、Ｍｏｄｉｆｙ  Ｆｌｏｗ  Ｅｎｔｒｙメッセージを用いて合致したフレームを破棄するフローエントリをフローテーブルに登録して処理を終了する（Ｓ４０３）。
【００４８】
一方、プロトコルがＡＲＰまたはＩＰである場合は、ＯＦＣ１５０は、入力ポートを元にルータ定義テーブル１５２を検索する（Ｓ４０６）。ここで、行が見つからなかった場合は、外向きポートからの入力なので、ＯＦＣ１５０は、図７に示す外向きポートのフレームを処理するサブルーチンを実行する（Ｓ４０７）。一方、行が見つかった場合は、内向きポートからの入力なので、ＯＦＣ１５０は、図８に示す内向きポートのフレームを処理するサブルーチンを実行する（Ｓ４０８）。
【００４９】
図７は、外向きポートから入力されたフレームを処理するサブルーチンである。まず、ＯＦＣ１５０は、フレームのイーサタイプで示されるプロトコルがＡＲＰとＩＰのどちらであるか検査する（Ｓ５００）。ここで、プロトコルがＩＰである場合は、ＯＦＣ１５０は、フレームに含まれる送信元ＩＰアドレスと宛先ＩＰアドレスとをマッチ条件に追加し（Ｓ５０１）、続いて宛先ＩＰアドレスを指定して図９に示す仮想ルータ候補を取得するサブルーチンを実行する（Ｓ５０２）。ルータ仮想化装置４０では、Ｓ５０１においてフレームに含まれる送信元ＩＰアドレスと宛先ＩＰアドレスとを取得し、Ｓ５０２の処理を実行する。ここで、仮想ルータ候補の数が０個または複数個である場合は（Ｓ５０３）、仮想ルータを唯一に絞り込むことができない不正なＩＰアドレスであるため、ＯＦＣ１５０は、Ｍｏｄｉｆｙ  Ｆｌｏｗ  Ｅｎｔｒｙメッセージを用いて合致したフレームを破棄するフローエントリをフローテーブルに登録して処理を終了する（Ｓ５０４）。
【００５０】
一方、仮想ルータ候補の数が１個の場合は、ＯＦＣ１５０は、その仮想ルータにおいて入力ポートおよび入力ＶＬＡＮタグと、同じリンクに関連づけられた出力ポートおよび出力ＶＬＡＮタグをトポロジ定義テーブル１５１から取得し（Ｓ５０５）、続いてフレームのＶＬＡＮタグを出力ＶＬＡＮタグに変更するアクションと、出力ポートを出力先とするアクションとを指定して、図１０に示すフレーム転送処理のサブルーチンを実行する（Ｓ５０６）。第一の実施形態に記載のルータ仮想化装置４０では、Ｓ５０６においてフレームのＶＬＡＮタグを出力ＶＬＡＮタグに変更して出力ポートからフレームを出力する
Ｓ５００でプロトコルがＡＲＰであった場合は、ＯＦＣ１５０は、ＡＲＰリプライかＡＲＰリクエストかを検査する（Ｓ５０７）。ここで、ＡＲＰの種別がＡＲＰリクエストであった場合は、ＯＦＣ１５０は、トポロジ定義テーブル１５１から入力ポートおよび入力ＶＬＡＮタグとリンクを共有するポートおよびＶＬＡＮタグを取得し、続いてルータ定義テーブル１５２からインターフェースのＩＰアドレスとＭＡＣアドレスを取得する（Ｓ５０８）。
【００５１】
そして、ＡＲＰリクエストに含まれるターゲットＩＰアドレスがルータのＩＰアドレスと一致する場合は（Ｓ５０９）、ＯＦＣ１５０は、ルータのＭＡＣアドレスをセンダーＭＡＣアドレスとするＡＲＰリプライのフレームを生成し、Ｓｅｎｄ  Ｐａｃｋｅｔメッセージを用いて入力ＶＬＡＮタグを付与して入力ポートから出力する（Ｓ５１０）。第一の実施形態に記載のルータ仮想化装置４０では、Ｓ５１０において生成したフレームを、入力ＶＬＡＮタグを付与して入力ポートから出力する。
【００５２】
一方、ＡＲＰの種別がＡＲＰリプライであった場合は、まず入力ポートと入力ＶＬＡＮタグ、ＡＲＰリプライに含まれるセンダーＩＰアドレスとを元に送信待ちフレームテーブル１５３を検索し（Ｓ５１１）、検索条件と合致した行の取得を試み、行が取得できたかどうか検査する（Ｓ５１２）。
【００５３】
ここで、行が取得できた場合は、以下のアクションを指定し、図１０に示すフレーム転送処理のサブルーチンを実行する（Ｓ５１３）。つまり、行に含まれるフレームデータを出力フレームとし、フレームのＶＬＡＮタグを、取得した行に含まれるＶＬＡＮタグに変更するアクションと、フレームの宛先ＭＡＣアドレスをＡＲＰリプライに含まれるセンダーＭＡＣアドレスに変更するアクションと、行に含まれるポートを出力先とするアクションとを指定する。第一の実施形態に記載のルータ仮想化装置４０では、Ｓ５１３において行に含まれるフレームデータを出力フレームとし、フレームのＶＬＡＮタグを行に含まれるＶＬＡＮタグに変更するとともに、フレームの宛先ＭＡＣアドレスをＡＲＰリプライに含まれるセンダーＭＡＣアドレスに変更して、行に含まれるポートからフレームを出力する。
【００５４】
そして、転送が完了したフレームの行を送信待ちフレームテーブル１５３から削除するとともに（Ｓ５１４）、残りの送信待ちフレームに対して同様の処理を繰り返す（Ｓ５１１）。
【００５５】
図８は、内向きポートから入力されたフレームを処理するサブルーチンである。まず、フレームのイーサタイプで示されるプロトコルがＡＲＰとＩＰのどちらであるか検査する（Ｓ６００）。ここで、プロトコルがＩＰである場合は、フレームに含まれる送信元ＩＰアドレスと宛先ＩＰアドレスとをマッチ条件に追加し（Ｓ６０１）、続いて送信元ＩＰアドレスを指定して図９に示す仮想ルータ候補を取得するサブルーチンを実行する（Ｓ６０２）。ルータ仮想化装置４０では、Ｓ６０１においてフレームに含まれる送信元ＩＰアドレスと宛先ＩＰアドレスとを取得し、Ｓ６０２の処理を実行する。
【００５６】
ここで、仮想ルータ候補の数が０個または複数個である場合は（Ｓ６０３）、仮想ルータを唯一に絞り込むことができない不正なＩＰアドレスであるため、Ｍｏｄｉｆｙ  Ｆｌｏｗ  Ｅｎｔｒｙメッセージを用いて合致したフレームを破棄するフローエントリを登録して処理を終了する（Ｓ６０４）。
【００５７】
一方、仮想ルータ候補の数が１個の場合は、その仮想ルータにおいて入力ポートおよび入力ＶＬＡＮタグとリンクを共有する出力ポートおよび出力ＶＬＡＮタグをトポロジ定義テーブル１５１から取得し（Ｓ６０５）、続いてフレームの宛先ＭＡＣアドレスが疑似ＭＡＣアドレスかどうかを検査する（Ｓ６０６）。
【００５８】
ここで、宛先が疑似ＭＡＣアドレスであった場合は、疑似ＭＡＣアドレス内にエンコードされた宛先ＩＰアドレスを取得し（Ｓ６０７）、宛先ＩＰアドレスと出力ポート、出力ＶＬＡＮタグ、およびフレーム全体のデータを送信待ちフレームテーブル１５３に登録するとともに（Ｓ６０８）、宛先ＩＰアドレスをターゲットＩＰアドレスとするＡＲＰリクエストのフレームを生成し、Ｓｅｎｄ  Ｐａｃｋｅｔメッセージを用いて、フレームに出力ＶＬＡＮタグを付与して出力ポートから出力する（Ｓ６０９）。第一の実施形態に記載のルータ仮想化装置４０では、Ｓ６０９において生成したフレームに出力ＶＬＡＮタグを付与して出力ポートから出力する。
【００５９】
一方、宛先が疑似ＭＡＣアドレスでない場合は、フレームのＶＬＡＮタグを出力ＶＬＡＮタグに変更するアクションと、出力ポートを出力先とするアクションとを指定して、図１０に示すフレーム転送処理のサブルーチンを実行する（Ｓ６１０）。第一の実施形態に記載のルータ仮想化装置４０では、Ｓ６１０においてフレームのＶＬＡＮタグを出力ＶＬＡＮタグに変更して出力ポートからフレームを出力する。
【００６０】
Ｓ６００でプロトコルがＡＲＰであった場合は、ＡＲＰリプライかＡＲＰリクエストかを検査し、ＡＲＰリプライであった場合は無視して処理を終了する（Ｓ６１１）。一方、ＡＲＰリクエストであった場合は、入力ポートと入力ＶＬＡＮタグを元にルータ定義テーブル１５２からインターフェースのＩＰアドレスを取得し、これがＡＲＰリクエストのターゲットＩＰアドレスと同じ場合は、ＡＲＰリプライを送信せずに処理を終了する（Ｓ６１２）。これは、ルータがＩＰアドレスの重複を確認するために自身のＩＰアドレスに対するＡＲＰリクエストを送信する事があり、そのようなＡＲＰリクエストを無視するための処理である。
【００６１】
一方、ＡＲＰリクエストのターゲットＩＰアドレスとルータのインターフェースのＩＰアドレスが異なる場合は、ターゲットＩＰアドレスをエンコードした疑似ＭＡＣアドレスをセンダーＭＡＣアドレスとするＡＲＰリプライのフレームを生成し、Ｓｅｎｄ  Ｐａｃｋｅｔメッセージを用いて、フレームに入力ＶＬＡＮタグを付与して入力ポートから出力する（Ｓ６１３）。ここで、疑似ＭＡＣアドレスは、下位３２ビットにＩＰアドレスを格納するとともに、実際のＭＡＣアドレスとの重複を避けるためにＵ／Ｌビットを１に設定するものとする。第一の実施形態に記載のルータ仮想化装置４０では、Ｓ６１３においてターゲットＩＰアドレスをエンコードした疑似ＭＡＣアドレスをセンダーＭＡＣアドレスとするＡＲＰリプライのフレームを生成し、フレームに入力ＶＬＡＮタグを付与して入力ポートから出力する。
【００６２】
図９は、仮想ルータ候補を取得するサブルーチンである。まず、フレームの入力ポートと入力ＶＬＡＮタグをもつすべての行をトポロジー定義テーブル１５１から取得し、それらの行に含まれる仮想ルータの集合を仮想ルータ候補Ａとする（Ｓ７００）。例えば、ポート４２にＶＬＡＮタグなしで入力されたフレームに対しては、仮想ルータ候補Ａは｛５１１，５１２｝となる。
【００６３】
次に、本サブルーチンの呼び出し時に指定されたＩＰアドレスが特殊なＩＰアドレスの場合は（Ｓ７０１）、仮想ルータ候補Ａを仮想ルータ候補として返却する（Ｓ７０２）。ここで特殊なＩＰアドレスとは、２５５．２５５．２５５．２５５や０．０．０．０、マルチキャストアドレスである。このようなＩＰアドレスは以降の経路の検索に用いることができないため、仮想ルータ候補Ａを仮想ルータ候補として返却する。
【００６４】
一方、特殊なＩＰアドレスでない場合は、ルータ定義テーブル１５２からＩＰアドレスの経路をロンゲストマッチで検索し、経路を唯一に絞り込む（Ｓ７０３）。ここで、経路が見つからなかった場合は（Ｓ７０４）、仮想ルータ候補Ａを仮想ルータ候補として返却する（Ｓ７０２）。
【００６５】
一方、経路が見つかった場合は、その行に含まれるポートおよびＶＬＡＮタグをもつすべての行をトポロジ定義テーブル１５１から取得し、それらの行に含まれる仮想ルータの集合を仮想ルータ候補Ｂとする（Ｓ７０５）。例えば、ＩＰアドレスが１０．０．０．１の場合は、仮想ルータ候補Ｂは｛５１２｝となる。そして、最後に仮想ルータ候補Ａと仮想ルータ候補Ｂとの積集合を仮想ルータ候補として返却する（Ｓ７０６）。
【００６６】
図１０は、フレーム転送処理のサブルーチンである。まず、本サブルーチンの呼び出し時に指定されたアクションを用いてＳｅｎｄ  Ｐａｃｋｅｔメッセージを発行し、フレームを送信する（Ｓ８００）。次に、本サブルーチンの呼び出し時に指定されたアクションとマッチ条件を用いてＭｏｄｉｆｙ  Ｆｌｏｗ  Ｅｎｔｒｙメッセージを発行し、フローエントリを登録する（Ｓ８０１）。第一の実施形態に記載のルータ仮想化装置４０では、図１０における動作（Ｓ８００、Ｓ８０１）を実行しない。
【００６７】
［効果の説明］
第二の実施形態におけるルータ仮想化装置４０を用いたネットワーク制御システム１では、ルータ仮想化装置４０において、仮想ルータとテナントとを対応付けることにより、ＶＬＡＮタグを用いて特定のテナントへの通信を制御する構成としたため、物理ルータを活用したマルチテナント環境において、互換性を維持したまま仮想ルータの導入をすることができる。
【００６８】
［他の実施形態］
以下、本発明のバリエーションについて説明する。第一の実施形態において説明した識別子は、ルータ仮想化装置４０によって付与されてよい。また、識別子は所定の仮想ルータと、スイッチ３０に転送するパケットが入力したルータ仮想化装置４０のポートとの組み合わせに基づいて付与されてもよい。同様に、識別子は、前述のパケットの送信元の仮想ネットワークの識別子及びＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスと、スイッチ３０に転送するパケットが入力されたルータ仮想化装置４０のポートとの組み合わせに基づいて付与されてもよい。さらに、前述の組み合わせは、予めテーブルとして保存されていてよい。
【００６９】
第一の実施形態においては、ルータ１０と、スイッチ３０と、ルータ仮想化装置４０と、を有するネットワーク制御システム１として説明した。しかし、ルータ仮想化装置４０が単体の場合でも、上述した構成・動作であれば、作用効果を奏する。
【００７０】
第二の実施形態では、ＯｐｅｎＦｌｏｗプロトコルを用いて、ルータ仮想化装置をＯＦＳとＯＦＣの組み合わせで実現する方法を説明した。しかし、本発明のルータ仮想化装置４０は単一の物理的または仮想的なネットワーク装置を、その装置に内蔵されたハードウェアまたはファームウェアで制御することで実現することもできる。また、複数のネットワークインターフェースをもつ物理的または仮想的な計算機の上で動作するソフトウェアとして実現することもできる。
【００７１】
また、上述の第二の実施形態ではＬ２スイッチ１３０で構成したが、図１１に示すように、ハイパーバイザー１６０上に仮想スイッチ１６５〜１６８を作成し、Ｌ２スイッチ１３０と同様に動作させることができる。ここで、図１１はハイパーバイザー１６０とその構成要素のみ符号を示している。また、第二の実施形態において、ＩＰｖ４のアドレス体系を用いて説明を行ったがＩＰｖ６のアドレス体系を用いてもよい。
【００７２】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００７３】
［付記１］
複数のネットワーク間の経路を制御するルータと、
前記ネットワーク内の仮想ネットワークと接続されるスイッチと、
前記ルータ及び前記スイッチと接続し、前記ルータを、複数の前記仮想ネットワーク間の経路を制御する複数の仮想ルータとして提供するルータ仮想化装置と、
を有し、
前記ルータ仮想化装置は、前記スイッチから入力されたパケットを前記ルータに転送し、前記ルータから入力されたパケットを前記複数の仮想ルータのうち所定の仮想ルータに応じて付与された識別子に基づいて、前記スイッチに転送する、
ネットワーク制御システム。
【００７４】
［付記２］
前記識別子は、前記所定の仮想ルータと、前記スイッチに転送する前記パケットが入力された前記ルータ仮想化装置のポートと、の組み合わせに基づいて付与される、
付記１に記載のネットワーク制御システム。
【００７５】
［付記３］
前記識別子は、前記パケットの送信元の仮想ネットワークの識別子及びＩＰアドレスと、前記スイッチに転送する前記パケットが入力された前記ルータ仮想化装置のポートと、の組み合わせに基づいて付与される、
付記１または２に記載のネットワーク制御システム。
【００７６】
［付記４］
前記組み合わせはテーブルとして保存されている、
付記３に記載のネットワーク制御システム。
【００７７】
［付記５］
テナント内に複数の前記仮想ネットワークを有し、複数の前記テナントの、おのおのの前記テナントに対して前記仮想ルータが割り当てられている、付記１から４のいずれかに記載のネットワーク制御システム。
【００７８】
［付記６］
ルータによって経路が制御される複数のネットワークにおいて、前記複数のネットワーク内の複数の仮想ネットワーク間の経路を制御する仮想ルータとして、前記ルータを提供し、
前記仮想ネットワークと接続されるスイッチから入力されたパケットを、前記ルータに転送し、前記ルータから入力されたパケットを前記複数の仮想ルータのうち所定の仮想ルータに応じて付与された識別子に基づいて、前記スイッチに転送する、
ルータ仮想化装置。
【００７９】
［付記７］
前記識別子は、前記所定の仮想ルータと、前記スイッチに転送する前記パケットが入力した前記ルータ仮想化装置ポートと、の組み合わせに基づいて付与される、
付記６に記載のルータ仮想化装置。
【００８０】
［付記８］
スイッチから入力されたパケットをルータに転送する第一のステップと、
前記ルータから入力されたパケットに、複数の仮想ネットワーク間の経路を制御する仮想ルータに応じた識別子を付与して、仮想ネットワークで構成された前記ネットワークと接続されるスイッチに転送する第二のステップと、を含むネットワーク制御方法。
【００８１】
［付記９］
前記第二のステップにおいて、前記スイッチに転送する前記パケットの識別子は、前記仮想ルータと、前記スイッチに転送する前記パケットが入力された前記ルータ仮想化装置のポートと、の組み合わせに基づいて付与される、
付記８に記載のネットワーク制御方法。
【００８２】
［付記１０］
前記第二のステップにおいて、前記組み合わせはテーブルとして保存されている、
付記９に記載のネットワーク制御方法。
【００８３】
［付記１１］
スイッチから入力されたパケットをルータに転送する第一のステップと、
前記ルータから入力されたパケットに、複数の仮想ネットワーク間の経路を制御する仮想ルータに応じた識別子を付与して、仮想ネットワークで構成された前記ネットワークと接続されるスイッチに転送する第二のステップと、を含む、
ルータ仮想化方法。
【００８４】
［付記１２］
スイッチから入力されたパケットをルータに転送する処理と、
前記ルータから入力されたパケットに、複数の仮想ネットワーク間の経路を制御する仮想ルータに応じた識別子を付与して、仮想ネットワークで構成された前記ネットワークと接続されるスイッチに転送する処理と、
をコンピュータに実行させることを特徴とするプログラム。
【００８５】
但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【００８６】
１    ネットワーク制御システム
１０    ルータ
１１〜１３    インターフェース
２０〜２３    仮想ネットワーク
３０    スイッチ
３１〜３７    ポート
４０    ルータ仮想化装置
４１〜４６    ポート
５０、５１    仮想ルータ
６０、６１    テナント
７０    業務ネットワーク
８０    イントラネット
１２０〜１２３    ＶＬＡＮ
１３０    Ｌ２スイッチ
１４０    オープンフロースイッチ
１５０    オープンフローコントローラ
１５１    トポロジ定義テーブル
１５２    ルータ定義テーブル
１５３    送信待ちフレームテーブル
１６０    ハイパーバイザー
１６１〜１６４    物理ＮＩＣ
１６５〜１６８    仮想スイッチ
１６５ａ、  １６５ｂ  ポート
１６６ａ、  １６５ｂ‘、  １６５ｂ’‘  ポート
１６５ａ、  １６５ｂ  ポート
１６５ａ、  １６５ｂ  ポート
【図１】
0006464631.tif 000002
【図２】
0006464631.tif 000003
【図３】
0006464631.tif 000004
【図４】
0006464631.tif 000005
【図５】
0006464631.tif 000006
【図６】
0006464631.tif 000007
【図７】
0006464631.tif 000008
【図８】
0006464631.tif 000009
【図９】
0006464631.tif 000010
【図１０】
0006464631.tif 000011
【図１１】
0006464631.tif 000012