(57)【要約】  本発明は、ネットワーク全体の負荷分散を可能とする。通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシン（ＶＭ）が実行する通信システムにおける通信制御装置（５００）は、前記通信機能と通信セッションを確立するために複数の経路（５０４１〜５０４ｎ）に向けて転送されるパケット（５０３）の転送先を、複数の前記仮想マシン（ＶＭ）から選択する第一の手段（５０１）と、前記パケットを選択された仮想マシン（ＶＭ）に転送する第二の手段（５０２）とを含む。
2014208538.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムにおける通信制御装置であって、
前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットの転送先を、複数の前記仮想マシンから選択する第一の手段と、
前記パケットを、選択された仮想マシンに転送する第二の手段と
を有する通信制御装置。
【請求項２】
前記第一の手段は、前記通信制御装置に集約された前記パケットの転送先を、複数の前記仮想マシンから選択する
ことを特徴とする請求項１に記載の通信制御装置。
【請求項３】
前記第一の手段は、前記パケットを前記通信制御装置に集約する機能を有するネットワークスイッチから前記パケットを受信し、受信したパケットの転送先を、複数の前記仮想マシンから選択する
ことを特徴とする請求項１記載の通信制御装置。
【請求項４】
前記第一の手段は、前記パケットの転送先が複数の前記仮想マシン間で分散するように、前記パケットの転送先を選択する
ことを特徴とする請求項１乃至３のいずれか１項に記載の通信制御装置。
【請求項５】
前記第一の手段は、複数の前記仮想マシンの動作状況に応じて、前記パケットの転送先を選択する
ことを特徴とする請求項１乃至４のいずれか１項に記載の通信制御装置。
【請求項６】
前記第一の手段は、前記通信制御装置からの指示に応じて動作するネットワークスイッチから前記パケットを受信し、受信した前記パケットの転送先を、複数の前記仮想マシンから選択する
ことを特徴とする請求項１乃至５のいずれか１項に記載の通信制御装置。
【請求項７】
前記第一の手段は、前記パケットの処理方法に対応する指示が未知である場合に、前記ネットワークスイッチから前記パケットに関する指示の要求を受信し、当該要求に応じて、前記パケットの転送先を、複数の前記仮想マシンから選択する
ことを特徴とする請求項６に記載の通信制御装置。
【請求項８】
前記第一の手段は、前記ネットワークスイッチから、前記通信制御装置からの指示に従って転送された前記パケットを受信し、当該パケットの転送先を、複数の仮想スイッチから選択する
ことを特徴とする請求項６に記載の通信制御装置。
【請求項９】
通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムにおける通信制御方法であって、
前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットの転送先を、複数の前記仮想マシンから選択し、
前記パケットを、選択された仮想マシンに転送する
ことを特徴とする通信制御方法。
【請求項１０】
通信制御装置に集約された前記パケットの転送先を、複数の前記仮想マシンから選択する
ことを特徴とする請求項９に記載の通信制御方法。
【請求項１１】
前記パケットを通信制御装置に集約する機能を有するネットワークスイッチから前記パケットを受信し、受信したパケットの転送先を、複数の前記仮想マシンから選択する
ことを特徴とする請求項９に記載の通信制御方法。
【請求項１２】
前記パケットの転送先が複数の前記仮想マシン間で分散するように、前記パケットの転送先を選択する
ことを特徴とする請求項９乃至１１のいずれか１項に記載の通信制御方法。
【請求項１３】
複数の前記仮想マシンの動作状況に応じて、前記パケットの転送先を選択する
ことを特徴とする請求項９乃至１２のいずれか１項に記載の通信制御方法。
【請求項１４】
通信制御装置からの指示に応じて動作するネットワークスイッチから前記パケットを受信し、受信した前記パケットの転送先を、複数の前記仮想マシンから選択する
ことを特徴とする請求項９乃至１３のいずれか１項に記載の通信制御方法。
【請求項１５】
前記パケットの処理方法に対応する指示が未知である場合に、前記ネットワークスイッチから前記パケットに関する指示の要求を受信し、当該要求に応じて、前記パケットの転送先を、複数の前記仮想マシンから選択する
ことを特徴とする請求項１４に記載の通信制御方法。
【請求項１６】
前記ネットワークスイッチから、前記通信制御装置からの指示に従って転送された前記パケットを受信し、当該パケットの転送先を、複数の仮想スイッチから選択する
ことを特徴とする請求項１４に記載の通信制御方法。
【請求項１７】
通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムにおける通信制御装置に、
前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットの転送先を、複数の前記仮想マシンから選択する処理と、
前記パケットを、選択された仮想マシンに転送する処理と、
を実行させる、ことを特徴とする通信制御プログラム。
【請求項１８】
通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムの通信制御装置であって、
前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットの転送先を、複数の前記仮想マシンから選択する第一の手段と、
前記パケットを選択された仮想マシンに転送することを、ネットワークスイッチに指示する第二の手段と
を有する通信制御装置。
【請求項１９】
通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムの通信制御方法であって、
前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットの転送先を、複数の前記仮想マシンから選択し、
前記パケットを選択された仮想マシンに転送することを、ネットワークスイッチに指示する
ことを特徴とする通信制御方法。
【請求項２０】
通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムにおける通信装置であって、
前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットを識別する手段と、
複数の前記仮想マシンから選択された仮想マシンに前記パケットを転送する装置に、識別した前記パケットを集約する手段と
を有する通信装置。
【請求項２１】
通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムにおける通信方法であって、
前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットを識別し、
複数の前記仮想マシンから選択された仮想マシンに前記パケットを転送する装置に、識別した前記パケットを集約する
ことを特徴とする通信方法。
【請求項２２】
通信ネットワークで用いられるハードウェア機器の通信機能を実行する仮想マシンが配置される情報処理装置であって、
ネットワークスイッチの機能を有する仮想スイッチを稼動させるための手段を有し、
前記仮想スイッチは、
前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットを、複数の前記仮想マシンから選択された仮想マシンに転送する転送手段を有する
ことを特徴とする情報処理装置。
【請求項２３】
前記仮想スイッチの前記転送手段は、前記通信機能と通信セッションを確立するために複数の経路に向けて転送される前記パケットを、通信制御ユニットに転送し、
前記通信制御ユニットにより選択された仮想マシンに、前記パケットを転送する
ことを特徴とする請求項２２に記載の情報処理装置。
【請求項２４】
通信ネットワークで用いられるハードウェア機器の通信機能を実行する仮想マシンが配置される情報処理装置における通信方法であって、
ネットワークスイッチの機能を有する仮想スイッチを稼動させ、
前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットを、複数の前記仮想マシンから選択された仮想マシンに転送する
ことを特徴とする通信方法。
【請求項２５】
前記通信機能と通信セッションを確立するために複数の経路に向けて転送される前記パケットを、通信制御ユニットに転送し、
前記通信制御ユニットにより選択された仮想マシンに、前記パケットを転送する
ことを特徴とする請求項２４に記載の通信方法。
【請求項２６】
通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムであって、
前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットの転送先を、複数の前記仮想マシンから選択する第一の手段と、
前記パケットを、選択された仮想マシンに転送する第二の手段と
を有する通信システム。
【請求項２７】
前記通信機能と通信セッションを確立するために複数の経路に向けて転送される前記パケットを、前記第一の手段に対して転送する第三の手段を備えることを特徴とする請求項２６に記載の通信システム。
【請求項２８】
通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムにおける通信方法であって、
前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットの転送先を、複数の前記仮想マシンから選択し
前記パケットを、選択された仮想マシンに転送する
ことを特徴とする通信方法。
【請求項２９】
前記通信機能と通信セッションを確立するために複数の経路に向けて転送される前記パケットを、前記第一の手段に対して転送する
ことを特徴とする請求項２８に記載の通信方法。
【請求項３０】
複数の経路に向けて転送されるパケットを少なくとも１つ受信すると、前記パケットに対して少なくとも１つの転送先を選択し、前記選択した転送先に前記パケットを転送する手段を備えた、通信システム。
【請求項３１】
前記手段は、ネットワーク上をブロードキャストされるパケットを集約し、前記選択した転送先に、前記パケットをユニキャストで転送するノードを含む、請求項３０記載の通信システム。
【請求項３２】
パケットを転送するポートを複数有するスイッチを少なくとも１つ備え、
前記スイッチは、前記複数の経路に向けて転送されるパケットを受信すると、制御装置に通知し、
前記制御装置は、前記選択した転送先に対応するスイッチのポートから、前記パケットを転送するように指示する、請求項３０又は３１に記載の通信システム。
【請求項３３】
前記制御装置が、パケットの転送に関する処理規則を前記スイッチに設定し、
前記スイッチが、前記制御装置によって設定された処理規則にしたがって入力パケットの転送を処理する、請求項３２記載の通信システム。
【請求項３４】
複数の回線を集線する集線装置を備え、前記集線装置が、前記スイッチを備え、前記パケットを、前記選択した転送先に転送する、請求項３２又は３３記載の通信システム。
【請求項３５】
前記パケットの転送先を決定する負荷分散装置を備えた請求項３４記載の通信システム。
【請求項３６】
複数の回線を集線する集線装置と、
前記パケットの転送先を決定する負荷分散装置と、
を備え、前記負荷分散装置で決定した転送先に前記パケットが転送される、請求項３５記載の通信システム。
【請求項３７】
前記制御装置は、複数の前記スイッチに接続され、
複数の前記スイッチは、前記複数の経路に向けて転送されたパケット受信時、前記制御装置に前記パケットを受信したことを通知し、
前記制御装置は、最初に前記スイッチから前記パケット受信の通知を受けると、タイマをスタートさせ、タイムアウトが発生すると、前記少なくとも１つのポート又前記ポートに対応するスイッチを選択する、請求項３２又は３３記載の通信システム。
【請求項３８】
複数の前記スイッチの各々が、１つ又は複数のポートを介して１つ又は複数のネットワーク機能部に接続し、
前記制御装置が、複数の前記スイッチに接続される複数の前記ネットワーク機能部に接続し、
前記制御装置は、前記スイッチからの前記複数の経路に向けて転送されたパケットの受信の通知を受け、複数の前記ネットワーク機能部の負荷に基づき、少なくとも１つの前記ネットワーク機能部を選択し、
前記制御装置は、前記選択したネットワーク機能部に接続するポートを有するスイッチに対して、前記ポートから前記選択したネットワーク機能部への前記パケットの転送を指示する、請求項３２、３３、３７のいずれか１項に記載の通信システム。
【請求項３９】
前記ネットワーク機能部がサーバの仮想基盤上に仮想化された仮想マシンである、請求項３８記載の通信システム。
【請求項４０】
前記複数の経路に向けて転送されたパケットを受信した場合に前記制御装置に通知するスイッチが、前記スイッチが構成するネットワークと、前記他のネットワークとの境界に配置されている、請求項３２、３３、３７のいずれか１項に記載の通信システム。
【請求項４１】
複数の経路に向けて転送されるパケットを受信したスイッチから、前記パケット受信の通知を受ける手段と、
前記パケットに対して少なくとも１つの転送先を選択し、選択した転送先に、前記パケットを転送するように制御する手段と、
を備えた制御装置。
【請求項４２】
複数の経路に向けて転送されるパケットを少なくとも１つ受信すると、前記パケットに対して少なくとも１つの転送先を選択し、選択した転送先に前記パケットを転送する、通信方法。
【請求項４３】
複数の経路に向けて転送されるパケットを少なくとも１つ受信すると、前記パケットに対して少なくとも１つの転送先を選択し、選択した転送先に前記パケットを転送する処理を、コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願についての記載）
本発明は、日本国特許出願：特願２０１３−１３３０５０号（２０１３年６月２５日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は通信システムと装置と方法とプログラムに関する。
【背景技術】
【０００２】
ネットワークをソフトウェアで制御できるようにするＳＤＮ（Software Defined Network）技術や、例えばコア網（Core Network）等のネットワーク機能を仮想化する「ＮＦＶ（Network Functions Virtualization）」等、ネットワークにおいても、ＩＴ（Intelligent Technology）技術で培われたサーバ仮想化等によるネットワークアプライアンス（機器）の仮想化に関心が高まっている。例えば欧州の標準化団体「ＥＴＳＩ」（European Telecommunications Standards Institute）のＮＦＶグループには多くの有力通信事業者、ベンダ等が参加している。通信事業者の網に含まれる様々なアプライアンス、例えばモバイルコアの機能であるＭＭＥ（Mobility Management Entity）、Ｓ−ＧＷ（Serving-GateWay）、Ｐ−ＧＷ（Packet Data Network-GateWay）、ルータ、大規模ＮＡＴ（LSN：Large Scale Network address translation）、ＨＬＲ（Home Location Register）、ＲＮＣ（Radio Netwok Controller）／ｅＮｏｄｅＢ、ファイアウォールや認証サーバ等は、現在、それぞれ専用機器で構成されている。【０００３】
ＮＦＶでは、これら専用装置に実装されていたネットワーク機器等を、例えば汎用のサーバを用いたサーバ仮想化技術で実装することで、設備コスト、運用コストの削減を図る。また、制御信号等の通信負荷の増大等に対してリソースを追加することで、耐障害性を高めることを可能としている。【０００４】
図１は、事業者網（キャリアネットワーク）を模式的に例示した図である。この事業者網は、後述する実施形態の適用対象とされるネットワークの一例でもあるので、その関連技術を説明しておく。【０００５】
図１には、ＰＰＰｏＥ（Point to Point Protocol over Ethernet（登録商標））による接続の一例が模式的に示されている。ＰＰＰｏＥについては、例えば非特許文献１が参照される。加入者宅内１の端末１１１〜１１ｎはルータ１０、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム１２、ＡＤＳＬ回線１５を介して、局舎のＤＳＬＡＭ（Digital Subscriber Line Access Multiplexer）２１に接続される。ＢＡＳ（Broadband Access Server）２０は、ルータの機能を持つアクセスサーバであり、ユーザからの接続認証やプロバイダ識別子に従いプロバイダ３０の切り替えや帯域管理を行う。ＤＳＬＡＭ２１は複数のＡＤＳＬ回線を１つに束ねるレイヤ２（Ｌ２）の集線装置である。なお、ＢＡＳはＢＲＡＳ（Broadband Remote Access Server）であってもよい。以下では、ＡＤＳＬで説明するが、ＡＤＳＬのかわりに、ＦＴＴＨ（Fiber To The Home）であってもよい（この場合、モデムは不要であり、ルータはＦＴＴＨ用ルータとなる）。【０００６】
ＰＰＰｏＥ接続では加入者宅内のルータ１０（クライアント）と、アクセスサーバＢＡＳ２０との間をブリッジ接続しＰＰＰ（Point to Point Protocol）接続を行う。ＢＡＳ２０は、例えば、「ユーザＩＤ＠プロバイダ識別子」のユーザアカウントにより、どのプロバイダ（ＩＳＰ:Internet Service Provider）に接続するか認識しユーザの認証を行い、プロバイダとの接続点へユーザデータを転送する。ルータ１０からＤＳＬＡＭ２１まではＰＰＰｏＥによるトンネリングが行われ、ＤＳＬＡＭ２１とＢＡＳ２０間はＬ２ＴＰ（Layer 2 Tunneling Protocol）によるトンネリングが行われる。【０００７】
図２は、ＰＰＰｏＥディスカバリステージのシーケンス動作を説明する図である。ＰＰＰｏＥセッションの開始は、ＰＰＰｏＥクライアントであるルータ側からのＰＡＤＩ（PPPoE Active Discovery Initiation）パケットの送信で開始する。ＰＡＤＩパケットは、図２７にヘッダーフォーマットを例示したように、ヘッダの宛先ＭＡＣアドレス（４８ビット）が全て１のブロードキャストパケットである。【０００８】
ＢＡＳは、サービス可能なＰＡＤＩを受けると、応答パケットＰＡＤＯ（PPPoE Active Discovery Offer）を、ＰＡＤＩを送信したホストであるルータ（図１の１０）に返す。【０００９】
ルータは、受信したＰＡＤＯの送信元のＢＡＳ宛に、ユニキャストでＰＡＤＲ（PPPoE Active Discovery Request）を送信したのち、ＰＡＤＲを送信したＢＡＳとの間でセッションを開始する。なお、ルータがＰＡＤＲを送信後、セッションを開始するまでの手順の説明は省略する。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】Ｌ．Ｍａｍａｋｏｓその他、“A Method for Transmitting PPP Over Ethernet (PPPoE)”［平成２５年４月１日検索］、インターネット＜URL:http://www.ietf.org/rfc/rfc2516.txt＞
【発明の概要】
【発明が解決しようとする課題】
【００１１】
以下に関連技術の分析を与える。【００１２】
上記した通り、ＮＦＶ等では、通信事業者のネットワークアプライアンスを、汎用サーバの仮想化基盤上の仮想マシン上に実装することにより、ネットワークアプライアンスの仮想化を実現している。【００１３】
図３は、例えばＢＲＡＳ／ＢＡＳを仮想化した構成（プロトタイプ）を例示する図である。図３に示すように、ＢＲＡＳ機能（ＢＲＡＳ１、２、３）は、サーバの仮想化基盤上の仮想マシン（ＶＭ）２３０１、２３０２、２３０３上でそれぞれ動作するソフトウェアによって実現される。【００１４】
図３に示したように、ＢＲＡＳ／ＢＡＳを仮想化した場合では、ＢＲＡＳ／ＢＡＳの機能のみを実行する専用装置のかわりに、汎用装置（汎用サーバ上の仮想マシン）を使うため、専用装置を用いる場合と比較して、ＢＲＡＳ／ＢＡＳの処理性能が低くなる。【００１５】
このため、ＢＲＡＳ／ＢＡＳを仮想化した場合には、ＢＲＡＳ／ＢＡＳの処理性能を考慮して、個々のＢＲＡＳ／ＢＡＳが収容するセッション数（クライアント数）の負荷分散を行う必要がある。【００１６】
一方、現在のＰＰＰｏＥのプロトコルでは、図２を参照して説明したように、ＰＡＤＩというブロードキャストパケットによりセッションを確立している。すなわち、クライアントがＰＡＤＩを送り、複数のＢＲＡＳ／ＢＡＳが応答した場合、クライアントがどれか１つを選択してセッションを確立することになっている。【００１７】
つまり、現在のＰＰＰｏＥプロトコルでは、複数のＢＲＡＳ／ＢＡＳからの応答に対して、どのＢＲＡＳ／ＢＡＳとのセッションを確立するか、を選択することができない。このため、上記のような現状のＰＰＰｏＥプロトコルでは、ＢＲＡＳ／ＢＡＳの負荷分散を行うことは難しい。【００１８】
したがって、本発明は、上記問題点に鑑みて創案されたものであって、その目的は、ネットワークシステム全体での負荷分散を可能とするシステム、装置、方法、プログラムを提供することにある。
【課題を解決するための手段】
【００１９】
本発明のいくつかの側面の１つによれば（視点１）、通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムにおける通信制御装置であって、前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットの転送先を、複数の前記仮想マシンから選択する第一の手段と、前記パケットを、選択された仮想マシンに転送する第二の手段とを有する通信制御装置が提供される。【００２０】
他の側面によれば（視点２）、通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムにおける通信制御方法であって、前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットの転送先を、複数の前記仮想マシンから選択し、前記パケットを、選択された仮想マシンに転送する、通信制御方法が提供される。【００２１】
さらに他の側面によれば（視点３）、通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムにおける通信制御装置に、前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットの転送先を、複数の前記仮想マシンから選択する処理と、前記パケットを、選択された仮想マシンに転送する処理と、を実行させる通信制御プログラムが提供される。【００２２】
さらに他の側面によれば（視点４）、上記視点３のプログラムを記録したコンピュータ読み出し可能な媒体（半導体メモリ、磁気／光ディスク等）が提供される。【００２３】
さらに他の側面によれば、通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムの通信制御装置であって、前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットの転送先を、複数の前記仮想マシンから選択する第一の手段と、前記パケットを選択された仮想マシンに転送することを、ネットワークスイッチに指示する第二の手段とを有する通信制御装置が提供される。【００２４】
さらに他の側面によれば、通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムにおける通信装置であって、前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットを識別する手段と、複数の前記仮想マシンから選択された仮想マシンに前記パケットを転送する装置に、識別した前記パケットを集約する手段とを有する通信装置が提供される。【００２５】
さらに他の側面によれば、通信ネットワークで用いられるハードウェア機器の通信機能を実行する仮想マシンが配置される情報処理装置であって、ネットワークスイッチの機能を有する仮想スイッチを稼動させるための手段を有し、前記仮想スイッチは、前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットを、複数の前記仮想マシンから選択された仮想マシンに転送する転送手段を有する情報処理装置が提供される。【００２６】
さらに他の側面によれば、複数の経路に向けて転送されるパケットを少なくとも１つ受信すると、前記パケットに対して少なくとも１つの転送先を選択し、前記選択した転送先に前記パケットを転送する手段（工程、処理）を備えた通信システム（方法、プログラム）が提供される。
【発明の効果】
【００２７】
本発明によれば、ネットワークシステムの負荷分散を可能としている。
【図面の簡単な説明】
【００２８】
【図１】ＰＰＰｏＥ接続を例示する模式図である。
【図２】ＰＰＰｏＥディスカバリステージを説明する図である。
【図３】プロトタイプ例を説明する図である。
【図４】実施形態を説明する図である。
【図５】本発明の実施形態１におけるネットワーク機能の仮想化を例示する図である。
【図６】本発明の実施形態１のＯＦＣの構成を例示する図である。
【図７】本発明の実施形態１の動作を模式的に例示する説明図である。
【図８】本発明の実施形態１のシーケンス動作を例示する図である。
【図９】本発明の実施形態１のＯＦＣの変形例の構成を例示する図である。
【図１０】本発明の実施形態１の変形例のシーケンス動作を例示する図である。
【図１１】本発明の実施形態２を例示する図である。
【図１２】（Ａ）、（Ｂ）は実施形態２と関連技術のＤＳＬＡＭをそれぞれ例示する図である。
【図１３】本発明の実施形態３を例示する図である。
【図１４】本発明の実施形態３のＤＳＬＡＭを例示する図である。
【図１５】本発明の実施形態４を例示する図である。
【図１６】本発明の実施形態４のＤＳＬＡＭを例示する図である。
【図１７】本発明の実施形態５を例示する図である。
【図１８】本発明の実施形態６を例示する図である。
【図１９】本発明の実施形態６を模式的に説明する図である。
【図２０】本発明の実施形態６のＯＦＣの構成を例示する図である。
【図２１】本発明の実施形態６のシーケンス動作を例示する図である。
【図２２】本発明の実施形態６のＯＦＣの変形例の構成を例示する図である。
【図２３】本発明の実施形態６の変形例のシーケンス動作を例示する図である。
【図２４】本発明の実施形態７の動作を模式的に例示する説明図である。
【図２５】本発明の実施形態７のコントローラの構成を例示する図である。
【図２６】本発明の実施形態７の変形例のシーケンス動作を例示する図である。
【図２７】ＰＡＤＩパケットのフォーマットを示す図である。
【図２８】フローエントリを説明する図である。
【図２９】パケットヘッダを説明する図である。
【図３０】本発明の基本概念を説明する図である。
【図３１】本発明の基本概念を説明する図である。
【図３２】本発明の基本概念を説明する図である。
【発明を実施するための形態】
【００２９】
本発明の基本概念を説明する。本発明のいくつかの好ましい形態によれば、図３０を参照すると、通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムにおける通信制御装置（５００）は、前記通信機能と通信セッションを確立するために複数の経路（５０４１〜５０４ｎ、但し、ｎは２以上の所定の正整数）に向けて転送されるパケット（５０３）の転送先を、複数の前記仮想マシン（ＶＭ：５０５１〜５０５ｎ）から選択する第一の手段（５０１）と、前記パケット（５０３）を、選択された仮想マシン（ＶＭ）に転送する第二の手段（５０２）を備えている。
【００３０】
前記第一の手段（５０１）は、前記通信制御装置（５００）に集約された前記パケットの転送先を、複数の前記仮想マシンから選択するようにしてもよい。
【００３１】
前記第一の手段（５０１、あるいは例えば図５のＯＦＣ２００に対応）は、前記パケット（５０３）を前記通信制御装置（５００）に集約する機能を有するネットワークスイッチ（図３０では不図示、例えば図５のＯＶＳ２２０）から前記パケットを受信し、受信したパケットの転送先を、複数の前記仮想マシンから選択するようにしてもよい。
【００３２】
前記第一の手段（５０１）は、前記パケットの転送先が複数の前記仮想マシン間で分散するように、前記パケットの転送先を選択するようにしてもよい。
【００３３】
前記第一の手段（５０１）は、複数の前記仮想マシンの動作状況に応じて、前記パケットの転送先を選択するようにしてもよい。
【００３４】
前記第一の手段（５０１）は、前記通信制御装置（５００）からの指示に応じて動作するネットワークスイッチ（図３０では不図示、例えば図５のＯＶＳ２２０）から前記パケットを受信し、受信した前記パケットの転送先を、複数の前記仮想マシンから選択するようにしてもよい。
【００３５】
前記第一の手段（５０１）は、前記パケットの処理方法に対応する指示が未知である場合に、前記ネットワークスイッチ（例えば図５のＯＶＳ２２０）から前記パケットに関する指示の要求を受信し、当該要求に応じて、前記パケットの転送先を、複数の前記仮想マシンから選択するようにしてもよい。
【００３６】
前記第一の手段（５０１）は、前記ネットワークスイッチから、前記通信制御装置（５００）からの指示に従って転送された前記パケットを受信し、当該パケットの転送先を、複数の仮想スイッチから選択するようにしてもよい。
【００３７】
本発明の別の好ましい形態によれば、図３１を参照すると、通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムの通信制御装置（６００）は、前記通信機能と通信セッションを確立するために複数の経路（６０５１〜６０５ｎ、但し、ｎは２以上の所定の正整数）に向けて転送されるパケット（６０３）の転送先を、複数の前記仮想マシン（ＶＭ：６０６１〜６０６ｎ）から選択する第一の手段（６０１）と、前記パケット（６０３）を選択された仮想マシン（ＶＭ）に転送することを、ネットワークスイッチ（６０４）に指示する第二の手段（６０２）を有する。
【００３８】
本発明のさらに別の好ましい形態によれば、通信ネットワークで用いられるハードウェア機器の通信機能を仮想マシンが実行する通信システムにおける通信装置は、前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットを識別する手段と、複数の前記仮想マシンから選択された仮想マシンに前記パケットを転送する装置に、識別した前記パケットを集約する手段とを有する。
【００３９】
本発明の別の好ましい形態によれば、図３２を参照すると、複数の経路（経路１〜経路ｎ、但し、ｎは２以上の所定の正整数）に向けて転送されるパケットを少なくとも１つ受信すると、前記パケットに対して少なくとも１つの転送先（経路ｍ、１≦ｍ≦ｎ）を選択し、前記選択した転送先に前記パケットを選択的に転送する、という転送先の絞り込みを行う手段（７００）を備えている。
【００４０】
本発明のいくつかの好ましい形態によれば、通信ネットワークで用いられるハードウェア機器の通信機能を実行する仮想マシンが配置される情報処理装置（例えば図５の２５０）は、ネットワークスイッチの機能を有する仮想スイッチ（例えば図５の２２０）を稼動させるための手段（図５の２４０）を有し、前記仮想スイッチ（例えば図５の２２０）は、前記通信機能と通信セッションを確立するために複数の経路に向けて転送されるパケットを、複数の前記仮想マシンから選択された仮想マシンに転送する手段を有する。前記仮想スイッチ（例えば図５の２２０）の転送手段は、前記通信機能と通信セッションを確立するために複数の経路に向けて転送される前記パケットを、通信制御ユニット（図５の２００）に転送し、前記通信制御ユニット（図５の２００）により選択された仮想マシンに、前記パケットを転送する。
【００４１】
本発明のいくつかの好ましい形態によれば、転送先の絞り込みを行う手段（図３０の５００）は、前記ネットワーク上をブロードキャストされるパケットを集約し、前記選択した転送先に、前記パケットをユニキャストで転送するノード（図４の２６）を含むようにしてもよい。
【００４２】
本発明のいくつかの好ましい形態によれば、制御装置は、複数の経路に向けて転送されるパケットを受信したスイッチから通知を受ける手段（図２５の４０２）と、前記複数のスイッチのうち、前記所定の形式のパケットを転送する少なくとも１つのポート（ＰＯＲＴ）又は、前記ポートに対応するスイッチ（ＳＷ）を選択する手段（図２５の４０１）と、を備えている。これらの手段は、制御装置を構成するコンピュータで実行されるプログラムによりその機能を実現するようにしてもよい。
【００４３】
本発明のいくつかの好ましい形態によれば、前記スイッチ（図５のＯＶＳ、図１８のＯＦＳ）が、前記制御装置（図５のＯＦＣ、図１８のＯＦＣ）によって設定された処理規則にしたがって入力パケットの転送を処理し、前記制御装置（図５のＯＦＣ、図１８のＯＦＣ）が、パケットの転送に関する前記処理規則を前記スイッチに設定する。
【００４４】
本発明のいくつかの好ましい形態によれば、複数の回線を集線する集線装置（図１１のＤＳＬＡＭ）を備え、前記集線装置が、前記制御装置（図１１の２７）によって制御される前記スイッチを備え、前記パケットを、前記選択した転送先に転送する構成としてもよい。あるいは、前記パケットの転送先を決定する負荷分散装置（図１３のＬＢ）を備えた構成としてもよい。
【００４５】
本発明のいくつかの好ましい形態によれば、複数の回線を集線する集線装置（図１５、図１７のＤＳＬＡＭ）と、前記パケットの転送先を決定する負荷分散装置（図１５、図１７のＬＢ）と、を備え、前記負荷分散装置で決定した転送先に前記パケットが転送される構成としてもよい。
【００４６】
前記制御装置（図１８のＯＦＣ）は、複数の前記スイッチ（図１８のＯＦＳ１、ＯＦＳ２、ＯＦＳ３）に接続され、前記複数のスイッチは、ブロードキャストパケット受信時、前記制御装置（図１８のＯＦＣ）に対して、ブロードキャストパケット受信を通知する。前記制御装置（図１８のＯＦＣ）は、最初に前記スイッチからブロードキャストパケット受信の通知を受けると、タイマをスタートさせ、タイムアウトが発生すると、少なくとも１つのポート又はスイッチを選択するようにしてもよい。
【００４７】
あるいは、複数の前記スイッチ（図５ＯＶＳ１、ＯＶＳ２、ＯＶＳ３）の各々が、１つ又は複数のネットワーク機能部（ＶＭ１１〜ＶＭ１３、ＶＭ２１〜ＶＭ２３、ＶＭ３１〜ＶＭ３３）に接続し、前記制御装置（図５のＯＦＣ）は、複数の前記スイッチ（図５のＯＶＳ１、ＯＶＳ２、ＯＶＳ３）に接続される複数のネットワーク機能部（ＶＭ１１〜ＶＭ１３、ＶＭ２１〜ＶＭ２３、ＶＭ３１〜ＶＭ３３）に接続し、前記スイッチからのブロードキャストパケット受信の通知を受け、複数の前記ネットワーク機能部（ＶＭ１１〜ＶＭ１３、ＶＭ２１〜ＶＭ２３、ＶＭ３１〜ＶＭ３３）の負荷に基づき、少なくとも１つの前記ネットワーク機能部を選択し、選択したネットワーク機能部に接続するポートを有するスイッチに対して、前記ポートから前記ブロードキャストパケットの転送を指示する。
【００４８】
本発明のいくつかの好ましい形態によれば、前記ネットワーク機能部（ＶＭ１１〜ＶＭ１３、ＶＭ２１〜ＶＭ２３、ＶＭ３１〜ＶＭ３３）がサーバの仮想基盤（ＶＭＭ）上に仮想化された仮想マシンである。
【００４９】
本発明のいくつかの好ましい形態によれば、前記同一パケットが複数の宛先へ転送される転送形式のパケット（例えばブロードキャストパケット）を受信した場合に、前記制御装置に通知するスイッチ（図１８のＯＦＳ１〜ＯＦＳ３、図２４のＳＷ１〜ＳＷ３）が、前記スイッチが構成するネットワーク（図１８の３１、図２４の４１）と他のネットワーク（図１８の３２、図２４の４２）との境界に配置されている。
【００５０】
このような構成とすることで、ネットワークシステム全体での負荷分散を可能としている。次に、実施形態について説明する。
【００５１】
ＳＤＮ（Software Defined Network）を実現するための技術として、例えば、一元的に管理を行うコントローラがスイッチ等の機器に対して、ソフトウェア的に指示を出すことでフロー制御等を可能とする「ＯｐｅｎＦｌｏｗ」が知られている。ＯｐｅｎＦｌｏｗでは、通信をエンドツーエンドのフローエントリベース（フローは、例えば入力ポートとＭＡＣ（Media Access Control）アドレスやＩＰ（Internet Protocol）アドレス、ポート番号などの組み合わせにより定義される）に、経路制御、障害回復、負荷分散、最適化を行う。オープンフロースイッチ（OpenFlow Switch：「ＯＦＳ」と略記される）は、制御装置に相当するオープンフローコントローラ（OpenFlow Controller：「ＯＦＣ」と略記される）との通信用のセキュアチャネルを備え、ＯＦＣから追加または書き換えを適宜指示されるフローテーブルに従って動作する。
【００５２】
ＯＦＳのフローテーブルは、例えば図２８に示すように、フロー毎に、受信パケットのヘッダと照合するマッチングルール（照合欄：Match Field）（ヘッダフィールド）と、処理内容を定義したアクション（Actions）と、フロー統計情報（Counters）との組がフロー毎に定義される。マッチングルールは、正確な値（exact）、及びワイルドカード（wild card）が用いられる。アクション（Actions）は、ルールとマッチしたパケットに適用するアクションである。フロー統計情報は、アクティビティカウンタともいい、例えばアクティブエントリ数、パケットルックアップ数、パケットマッチ数、フロー単位に、受信パケット数、受信バイト数、フローがアクティブな期間、ポート単位で受信パケット、送信パケット、受信バイト、送信バイト、受信ドロップ、送信ドロップ、受信エラー、送信エラー、受信フレームアラインメントエラー、受信オーバーランエラー、受信ＣＲＣ（Cyclic Redundancy Check）エラー、コリジョン数等を含む。
【００５３】
パケットヘッダの所定のフィールドがＯＦＳのフローテーブルのルールとの照合（マッチ）に用いられる。ヘッダにおけるマッチ対象の情報は、図２９に示すように、例えば、
宛先ＭＡＣ（Media Access Control）アドレス（ＭＡＣ  ＤＡ（Destination Address）：４８ビット）、送信元ＭＡＣアドレス（ＭＡＣ  ＳＡ（Source Address）：４８ビット）、Ｅｈｅｒｎｅｔ(登録商標)タイプ（ＴＰＩＤ）、ＶＬＡＮ  ＩＤ（Virtual LAN(Local Area Network) ID）、ＶＬＡＮ  ＴＹＰＥ（優先度）、ＩＰソースアドレス（ＩＰ  ＳＡ（：３２ビット）、ＩＰディスティネーションアドレス（ＩＰ  ＤＡ（：３２ビット）、ＩＰプロトコル、ソースポート（Source Port：TCP(Transmission Control Protocol)/UDP(User Datagram Protocol）、あるいは、ICMP(Internet Control Message Protocol) Type）、ディスティネーションポート（Destination port：TCP/UDＰ destination port、あるいは、ICMP Code））等を含む。
【００５４】
ＯＦＳは、パケットを受信すると、フローテーブルから、受信パケットのヘッダ情報に適合するマッチングルールを持つエントリを検索する。検索の結果、受信パケットに適合するエントリが見つかった場合、ＯＦＳは、フロー統計情報（カウンタ）を更新するとともに、受信パケットに対して、該エントリのアクションフィールドに記述された処理内容（指定ポートからのパケット送信、フラッディング、廃棄等）を実施する。一方、検索の結果、受信パケットに適合するエントリが見つからなかった場合、ＯＦＳは、セキュアチャネルを介して、ＯＦＣに対して、受信パケットを転送し、受信パケットの送信元・送信先に基づいたパケットの経路の決定を依頼し、これを実現するフローエントリを受け取ってフローテーブルを更新する。このように、ＯＦＳは、フローテーブルに格納されたエントリを処理規則として用いてパケット転送を行う。本明細書では、Ｌ２層のＰＤＵ（Protocol Data Unit）であるフレーム、Ｌ３層での転送単位であるパケットを特に区別せずに、転送単位を「パケット」という場合がある。
【００５５】
＜実施形態１＞
図４は、本発明の実施形態１の構成を例示する図である。図４は、本発明の技術思想を、図３のプロトタイプ例に適用した一例を示す図である。
【００５６】
図４を参照すると、スイッチ（エッジスイッチ）２３１〜２３２は、それぞれ、クライアント１からのブロードキャストパケット（上述したＰＡＤＩパケット）を予め定められた集約ノード２６に集約する。集約ノード２６では、ブロードキャストパケットの転送先を少なくとも１つ決定し、決定した転送先にユニキャスト送信する。特に制限されないが、集約ノード２６では、仮想マシン（ＶＭ）２３０１〜２３０３の負荷（例えばＢＲＡＳ機能を実現するＶＭの負荷）を分散するように、ブロードキャストパケット（ＰＡＤＩパケット）の転送先の仮想マシン（ＶＭ）を決定する。例えばブロードキャストパケット（ＰＡＤＩパケット）の転送先を、仮想マシン（ＶＭ）２３０１〜２３０３に対してラウンドロビン方式で順番に割り当てるか、あるいは、仮想マシン（ＶＭ）２３０１〜２３０３の負荷状態（例えばポーリング等で取得管理する）に基づき、低負荷の仮想マシン（ＶＭ）を選択するようにしてもよい。なお、以降の例では、ブロードキャストパケット（ＰＡＤＩパケット）の場合を例に挙げて説明するが、これに限られるものではなく、ＢＲＡＳ／ＢＡＳ等の通信機能と通信セッションを確立するために、複数の経路に向けて転送されるパケットのことであればよい。例えば、ブロードキャストパケットでなくてもよく、マルチキャストパケットであってもよい。
【００５７】
図５は、図４の具体的な構成例として、ＢＲＡＳのファンクションを仮想化した構成を例示する図である。少なくともＢＲＡＳ機能を、サーバ２５０のハイパーバイザ(hypervisor)等の仮想マシンモニタ（Virtual Machine Monitor：ＶＭＭ）上に実装される仮想マシン（Virtual Machine：ＶＭ）２３０として実現している。また、図５は、上述したＯｐｅｎＦｌｏｗを適用した場合の構成例を示している。ＯＦＳの機能（Ｆｕｎｃｔｉｏｎｓ）は、ソフトウェア等により仮想化した仮想スイッチ（ＯＶＳ）２２０として、例えばサーバ２５０上で仮想化されており、ＶＭＭ上に実装される。Ｌ２(Layer 2)スイッチ（Ｌ２ＳＷ）を含むＬ２ネットワーク２Ａは、事業者ＩＰ（Internet Protocol）網を構成するネットワーク（図１の事業者網２の一部）である。コアネットワーク２２は、例えばＩＭＳ（Internet Multimedia System）コアネットワークである（あるいはＥＰＣ（Evolved Packet Core）／ＬＴＥ（Long Term Evolution）コアネットワークであってもよい）。さらに、サーバ２５０は、制御部２４０を含む。制御部２４０は、例えば上述したようなハイパーバイザ等のＶＭＭである。ＶＭ２３０及び仮想スイッチであるＯＶＳ２２０を稼働させる機能を有する。なお、制御部２４０をハイパーバイザで構成した場合、仮想マシンＶＭ２３０、及びＯＶＳ２２０からのネットワークアクセス等、ハードウェア資源へのアクセスはいずれもハイパーバイザを介して行われる（すなわちハイパーバイザを介して該当するハードウェアデバイスのデバイスドライバによって行われる）が、図５では、図面の簡単化のため、ＯＶＳ２２０等は、ハイパーバイザ（制御部２４０）を介してではなく直接、Ｌ２ネットワーク２Ａ等に接続するものとして図示されている。
【００５８】
ＯＦＣ２００は、図４における集約ノード２６に相当し、ＯＶＳ２２０およびＶＭ２３０の制御を行う。仮想スイッチ（ＯＶＳ）２２０がＯｐｅｎＦｌｏｗプロトコルのＰａｃｋｅｔ＿ＩｎメッセージでＰＡＤＩパケットをＯＦＣ２００に集約する。ＯＦＣ２００で、ＰＡＤＩパケットの転送先の仮想マシン（ＶＭ）を決定し、Ｐａｃｋｅｔ＿Ｏｕｔメッセージを、仮想スイッチ（ＯＶＳ）２２０に送信し、ＰＡＤＩパケットの転送を指示する。このように、本実施形態によれば、ＯｐｅｎＦｌｏｗプロトコルを用いてＰＡＤＩパケットをＯＦＣに集約する。
【００５９】
実施形態１では、ＯｐｅｎＦｌｏｗプロトコルのＰａｃｋｅｔ＿Ｉｎメッセージを利用して、ＰＡＤＩパケットをＯＦＣに集約する。よって、クライアント（ホスト）は、ＰＡＤＩパケットの宛先等を変更することなく、現状のＰＰＰｏＥプロトコルで規定されているフォーマットのまま送信することができる。
【００６０】
このように、実施形態１によれば、ＯｐｅｎＦｌｏｗプロトコルを利用することで、ＰＰＰｏＥプロトコルを変更することなく、ＰＡＤＩパケットを集約することができる。よって、ＯＦＣにおいて、集約したＰＡＤＩパケットの転送先を決めることができるので、結果として、ＯＦＣによるＢＲＡＳの負荷分散が可能となる。
【００６１】
図５において、仮想マシンＶＭ１１〜ＶＭ１３の各々は、ＯＶＳ１のポート（不図示）にそれぞれ接続され、ＯＶＳ１の対応する出力ポート（不図示）から転送されるパケットを入力する。仮想マシンＶＭ１１〜ＶＭ１３の各々からの出力パケットは、ＯＶＳ１の対応する入力ポート（不図示）に入力される。仮想マシンＶＭ２１〜ＶＭ２３の各々は、ＯＶＳ２のポート（不図示）にそれぞれ接続され、ＯＶＳ２の対応する出力ポート（不図示）から転送パケットを入力し、仮想マシンＶＭ２１〜ＶＭ２３の各々からの出力パケットは、ＯＶＳ２の対応する入力ポート（不図示）に入力される。同様に、仮想マシンＶＭ３１〜ＶＭ３３の各々は、ＯＶＳ３のポート（不図示）にそれぞれ接続され、ＯＶＳ３の対応する出力ポート（不図示）から転送パケットを入力し、仮想マシンＶＭ３１〜ＶＭ３３の各々からの出力パケットは、ＯＶＳ３の対応する入力ポート（不図示）に入力される。なお、図５の例では、仮想マシンＶＭ１１〜ＶＭ３３、ＯＶＳ１〜ＯＶＳ３が１つのサーバ上のハイパーバイザ等のＶＭＭ（制御部２４０）上で仮想化されている構成とされているが、かかる構成に制限されるものでないことは勿論である。例えば、仮想マシンＶＭ１１〜ＶＭ１３、ＯＶＳ１が、１つのサーバ上のハイパーバイザ等のＶＭＭ上で仮想化され、仮想マシンＶＭ２１〜ＶＭ２３、ＯＶＳ２が他の１つのサーバのＶＭＭ上で仮想化され、仮想マシンＶＭ３１〜ＶＭ３３、ＯＶＳ３がさらに他の１つのサーバのＶＭＭ上で仮想化される構成としてもよい。
【００６２】
図５に示すように、ＯＶＳ１〜ＯＶＳ３は、コントロールプレーン２２２で、それぞれＯＦＣ２００に接続される。ＯＶＳ１〜ＯＶＳ３は、データプレーン２２１で、事業者ＩＰ網を構成するＬ２ネットワーク２ＡのＬ２スイッチ（Ｌ２ＳＷ）に接続される。ＯＦＣ２００は、マネージメントプレーン２３３で仮想マシン（ＶＭ１１〜ＶＭ３３）と接続される。ＳＤＮでは、ソフトウェアによって抽象化された「プレーン（ｐｌａｎｅ）」という単位でネットワーキング機能を分離しており、ネットワークトポロジの設定や管理を動的に行うコントロールプレーン、パケット転送を行うフォワーディングプレーン、ネットワーク機器の管理を行うマネージメントプレーン、ネットワークサービスを管理するサービスプレーン等を含む。なお、図５では、仮想マシンＶＭ２３０が各ＯＶＳ２２０に３台接続された構成が示されているが、ＯＶＳ２２０に接続されるＶＭの個数等はかかる構成に制限されるものでないことは勿論である。またＯＶＳ２２０に接続される仮想マシンＶＭの個数は、ＯＶＳ毎に異なっていてもよい。
【００６３】
図５に例示した構成では、ＯＶＳがＰＡＤＩパケットを受信すると、Ｐａｃｋｅｔ−Ｉｎの仕組みを用いて、ＯＦＣにＰＡＤＩパケットを集約することが可能になる。よって、上述したように、ＰＰＰｏＥプロトコルを変更する必要がないだけでなく、Ｌ２ネットワークのアーキテクチャや、Ｌ２スイッチに対する変更を行うことなく、ＢＲＡＳの負荷分散を行うことができる。
【００６４】
図６は、図５のＯＦＣ２００の構成の一例を例示した図である。図６を参照すると、ＯＦＣ２００は、フローエントリ作成部２０１、経路計算部２０２、メッセージ送信部２０３、Ｐａｃｋｅｔ−Ｉｎ識別部２０４、ブロードキャストパケット（Ｂｒｏａｄｃａｓｔ  Ｐａｃｋｅｔ）検出部２０５、タイマ２０６、ＶＭ負荷情報取得コマンド送信部２０７、ＶＭ負荷情報受信部２０８、ＶＭ選択部２０９、ＯＶＳとの間の通信を行うインタフェースであるノード通信部２１１、ＶＭとの間の通信を行うインタフェースであるＶＭ通信部２１２、ネットワークのトポロジ情報を記憶管理するためのトポロジ情報記憶部２１３、ユーザ情報（例えば図１の加入者の端末１１１〜１１ｎの情報）を記憶するユーザ情報記憶部２１４を備えている。これらの各部２０１〜２１２はＯＦＣ２００を構成するコンピュータで実行されるプログラムによりその機能を実現するようにしてもよい。
【００６５】
Ｐａｃｋｅｔ−Ｉｎ識別部２０４は、ＯＶＳ（図５の２２０）からセキュアチャネルで送られたＰａｃｋｅｔ−Ｉｎメッセージを識別する。なお、Ｐａｃｋｅｔ−Ｉｎ識別部２０４にて、Ｐａｃｋｅｔ−Ｉｎメッセージを検出すると、当該受信パケットのパケット転送経路を計算するために、経路計算部２０２等に通知される。
【００６６】
ブロードキャストパケット検出部２０５は、Ｐａｃｋｅｔ−Ｉｎ識別部２０４でＰａｃｋｅｔ−Ｉｎと識別されたメッセージから、Ｐａｃｋｅｔ−Ｉｎメッセージを送信したＯＶＳで受信されたパケットがＰＡＤＩパケットであるか否か（ＰＡＤＩパケット受信の有無）判別する。
【００６７】
図２７に、ＰＡＤＩパケットのパケットフォーマットの例を示す（詳細は非特許文献１参照）。ＰＡＤＩパケットにおいて、
・Ｅｔｈｅｒｎｅｔ（登録商標）フレームの宛先ＭＡＣアドレス（Ｄｅｓｔｉｎａｔｉｏｎ  Ａｄｄｒｅｓｓ）はブロードキャストアドレス（４８ビット全て１＝０ｘｆｆｆｆｆｆｆｆｆｆｆｆ：０ｘは１６進を表す）、
・送信元ＭＡＣアドレス（ＳＯＵＲＣＥ＿ＡＤＤＲ）には、送信元のＭＡＣアドレス、
・ＥＴＨＥＲ＿ＴＹＰＥは、０ｘ８８６３（ディスカバリステージ）とされる。
・ＶＥＲフィールド（Ｖ）は４ビット長でＰＰＰｏＥのバージョンでは０ｘ１、
・ＴＹＰＥフィールド（Ｔ）は４ビット長でＰＰＰｏＥのバージョンでは０ｘ１、
・ＣＯＤＥフィールドは８ビット長で、ディスカバリおよびＰＰＰセッションステージのために定義される。
・ＳＥＳＳＩＯＮ＿ＩＤフィールドは、１６ビット長で符号無しの値で表され、
・ＬＥＮＧＴＨフィールドは１６ビット長、ＰＰＰｏＥペイロードの長さ、
・ＴＡＧ＿ＴＹＰＥは１６ビット長のフィールドでＴＡＧ＿ＴＹＰＥとＴＡＧ＿ＶＡＬＵＥを記述し、
・ＴＡＧ＿ＬＥＮＧＴＨは１６ビット長のフィールドである。
【００６８】
再び図６を参照すると、ブロードキャストパケット検出部２０５は、Ｐａｃｋｅｔ−Ｉｎメッセージが、ＯＶＳでのＰＡＤＩパケットの受信を通知するものであることを検出すると、タイマ２０６による計時をスタートさせ、タイムアウトが発生するまで、他のＯＶＳからのＰＡＤＩパケット受信の通知を待つ。
【００６９】
特に制限されないが、ブロードキャストパケット検出部２０５では、最初のＰＡＤＩパケット受信の通知であるか否かは、タイマ２０６が計時中であるか、ストップしているか（タイマ２０５の動作状態）で判断することができる。タイマ２０５が計時動作中は、不図示の動作フラグ（例えば１ビット）をオンとし、停止中は不図示の動作フラグはオフされる。
【００７０】
なお、他のＯＶＳも、最初にＰＡＤＩパケット受信を通知したＯＶＳと同一の送信元（クライアント１のルータ）からＬ２ネットワーク２Ａを介してブロードキャストされたＰＡＤＩパケットの受信通知をＰａｃｋｅｔ−ＩｎメッセージでＯＦＣ２００に対して行う。ブロードキャストパケット検出部２０５でＰＡＤＩパケット受信を検出しても、タイマ２０６が計時中であるときは、ブロードキャストパケット検出部２０５は、タイマ２０６のスタート等は行わない。
【００７１】
タイマ２０６においてタイムアウトが発生すると、これに応答して、ＶＭ負荷情報取得コマンド送信部２０７は、仮想マシン（ＶＭ）に対して、ＶＭ負荷情報を取得するためのＶＭ負荷情報取得コマンド（メッセージ）を送信する。ＶＭ負荷情報取得コマンドは、ＶＭ通信部２１２を介してマネージメントプレーン２２３から、仮想マシン（ＶＭ）２３０に送信される。
【００７２】
なお、本実施形態では、タイマのタイムアウト発生時等に、ＶＭ負荷情報取得コマンド（メッセージ）を送信して仮想マシンＶＭの最新の負荷を取得するようにしているが、本発明はかかる構成に制限されるものでないことは勿論である。例えば、ＶＭ負荷情報取得コマンド送信部２０７は、事前に、周期的なポーリング等によるＶＭ負荷情報取得コマンドの送信、あるいは、ＶＭ側からの定期的な負荷情報のＯＦＣ側へのアップロード等により、ＶＭ負荷情報受信部２０８でＶＭ負荷情報を取得するようにしてもよい。
【００７３】
ＶＭ負荷情報受信部２０８は、ＶＭ２３０から送信された負荷情報を、ＶＭ通信部２１２を介して受信し、ＶＭ選択部２０９に、ＶＭ負荷情報を入力する。
【００７４】
ＶＭ選択部２０９は、ＶＭ通信部２１２からのＶＭ負荷情報に基づき、例えば現在、負荷が最も少ない仮想マシン（ＶＭ）を選択する。特に制限されないが、ＶＭ負荷情報は、ＢＡＳを構成するＶＭでの例えば単位時間あたりの処理（例えば認証処理）件数や、所定時間あたりの累積処理件数、あるいはその他の統計情報等を含むようにしてもよい。
【００７５】
ＶＭ選択部２０９は、選択した仮想マシン（ＶＭ）の情報を、経路計算部２０２に通知する。経路計算部２０２は、トポロジ情報記憶部２１３から、選択した仮想マシン（ＶＭ）に接続するＯＶＳを特定し、メッセージ送信部２０３は、ノード通信部２１１を介して当該ＯＶＳに対して、Ｐａｃｋｅｔ−Ｏｕｔメッセージを転送し当該ＯＶＳで受信したＰＡＤＩパケットの転送を指示する（転送先の物理ポート番号）。ＯＦＣ２００からＰａｃｋｅｔ−Ｏｕｔメッセージを受信した当該ＯＶＳは、指定されたポートからＰＡＤＩパケットを出力することで、該ＰＡＤＩパケットを、選択されたＶＭに転送する。
【００７６】
ＯＦＣ２００において、Ｐａｃｋｅｔ−Ｉｎ識別部２０４でＯＶＳ（図６の２２０）から送信されたＰａｃｋｅｔ−Ｉｎメッセージを識別し、ブロードキャストパケット検出部２０５においてＰＡＤＩパケットを検出しない場合（ＯＶＳで受信したパケットがＰＡＤＩパケットでない場合）には、ＯＦＣの経路計算部２０２が経路を計算し、フローエントリ作成部２０１がフローエントリを作成し、メッセージ送信部２０３はＰａｃｋｅｔ−Ｏｕｔメッセージを送信する。
【００７７】
本実施形態では、ＯＦＣ２００のブロードキャストパケット検出部２０５は、ＯＶＳから当該ＯＶＳでのＰＡＤＩパケット受信を通知するＰａｃｋｅｔ−Ｉｎメッセージを、最初に受信してから、予め定められた所定の期間（すなわち、タイマ２０６でタイムアウト発生までの時間）、他のＯＶＳからのＰＡＤＩ受信を通知するＰａｃｋｅｔ−Ｉｎメッセージの到着を待つ。そして、タイマ２０６でのタイムアウトが発生すると、タイマ２０６による計時期間中に、Ｐａｃｋｅｔ−ＩｎメッセージによりＰＡＤＩパケット受信を通知したＯＶＳに接続する複数の仮想マシンに対して、ＶＭ負荷情報取得コマンド送信部２０７が、ＶＭ通信部２１２、マネージメントプレーン２２３を介してＶＭ負荷取得コマンド（Ｇｅｔ  ＶＭ  ｌｏａｄ）を送信する。あるいは、タイマ２０６で計時がスタートしてからタイムアウトが発生するまでの間に、ＰＡＤＩパケットの受信の通知を送信しないＯＶＳに接続する仮想マシン（ＶＭ）に対してもＶＭ負荷情報取得コマンドを送信するようにしてもよい。ＶＭ負荷取得コマンド（Ｇｅｔ  ＶＭ  ｌｏａｄ）は、マネージメントプレーン２２３上をマルチキャスト転送してもよい。
【００７８】
本実施形態において、特に制限されないが、タイマ２０６のタイムアウト時間は、Ｌ２ネットワーク２Ａ等におけるブロードキャストパケット転送の最大遅延等を考慮した値に設定するようにしてもよい。タイマ２０６の管理により、ＯＦＣ２００において、１つのＯＶＳからのＰＡＤＩパケット受信の通知（Ｐａｃｋｅｔ−Ｉｎメッセージ）を受信後、他のＯＶＳからのＰＡＤＩパケット受信の通知をいつまでもウェイトすることによるアクセス性能の低下、レスポンス時間の増大を回避している。また、ＯＦＣ２００は、複数のＯＶＳのうちＰＡＤＩパケットを受信したＯＶＳを的確に把握することができる。
【００７９】
図７は、図５において、Ｌ２ネットワーク２ＡからＯＶＳ１にＰＡＤＩパケットが最初に到着し、ＯＶＳ１において、フローエントリテーブルに登録されていないパケットであるため、ＯＶＳ１がＯＦＣ２００にＰａｃｋｅｔ−Ｉｎメッセージを送信している状態を模式的に示している。つづいて、Ｌ２ネットワーク２ＡからのＰＡＤＩパケットがＯＶＳ２、ＯＶＳ３の順で到着し、ＯＶＳ２、ＯＶＳ３はそれぞれ、ＯＦＣ２００にＰａｃｋｅｔ−Ｉｎメッセージを送信することになる。ＯＦＣ２００は、図６のタイマ２０６でタイムアウト発生前に、ＯＶＳ２、３からＰａｃｋｅｔ−Ｉｎメッセージを受信した場合、ＯＶＳ１、ＯＶＳ２、ＯＶＳ３にそれぞれ接続する仮想マシン（ＶＭ１１〜ＶＭ１３、ＶＭ２１〜ＶＭ２３、ＶＭ３１〜ＶＭ３３）に対して、ＶＭ負荷情報取得コマンド（Ｇｅｔ  ＶＭ  Ｌｏａｄ）を送信する。
【００８０】
ＯＦＣ２００において、図６のタイマ２０６で計時開始後、タイムアウト発生前に、ＯＶＳ２からＰａｃｋｅｔ−Ｉｎメッセージを受信した場合、前述したように、ＯＦＣ２００は、ＯＶＳ１、ＯＶＳ２に接続する仮想マシン（ＶＭ１１〜ＶＭ１３、ＶＭ２１〜ＶＭ２３）に対してだけ、ＶＭ負荷情報取得コマンド（Ｇｅｔ  ＶＭ  Ｌｏａｄ）を送信するようにしてもよい。この場合、ＯＦＣのＶＭ選択部２０９は、仮想マシン（ＶＭ１１〜ＶＭ１３、ＶＭ２１〜ＶＭ２３）から受信したＶＭ負荷情報に基づき、仮想マシン（ＶＭ１１〜ＶＭ１３、ＶＭ２１〜ＶＭ２３）のうち、最小又はそれに準ずる負荷の仮想マシンを１つ選択する。なお、ＶＭ選択部２０９でのＶＭの選択は、負荷情報だけでなく、仮想マシンに割当てられているハードウェアリソースの容量（メモリ、ストレージ）、処理性能（割当てられているＣＰＵ）等を勘案して決定してもよいことは勿論である。
【００８１】
図８は、本実施形態の動作シーケンスの一例を例示する図である。ルータ、Ｌ２ＮＷ、ＯＶＳ１、ＯＶＳ２、ＶＭ１、ＶＭ２、ＯＦＣは、図７のクライアント（加入者宅）のルータ１０、Ｌ２ネットワーク２Ａ、ＯＶＳ１、ＯＶＳ２、仮想マシンＶＭ１１〜ＶＭ１３（及びその中の選択された１つ）、仮想マシンＶＭ２１〜ＶＭ２３、ＯＦＣに対応している。なお、図８では、単に図面作成の都合で、図７のＯＶＳ３は省略している。図８には、各シーケンスの番号が付されており、以下の説明では、文末の括弧内の数字は当該シーケンスの番号を指示する。
【００８２】
ＰＰＰｏＥクライアントであるルータからＰＡＤＩパケットがＬ２ＮＷに転送される（１）。
【００８３】
Ｌ２ＮＷは、ＰＡＤＩパケットをブロードキャスト転送し、最初にＯＶＳ１に到着する（２）。
【００８４】
ＯＶＳ１では、受信したＰＡＤＩパケットのヘッダ情報を、ＯＶＳ１が保持するフローテーブルのフローエントリの条件と照合し、一致するものがないため、Ｐａｃｋｅｔ−ＩｎメッセージをＯＦＣに送信する（３）。
【００８５】
ＯＶＳ１へのＰＡＤＩパケットの到着に遅れて、ＯＶＳ２にもＰＡＤＩパケットが到着し（４）、ＯＶＳ２では、受信したＰＡＤＩパケットのヘッダ情報をフローテーブルのフローエントリの条件と照合し、一致するものがないため、Ｐａｃｋｅｔ−ＩｎメッセージをＯＦＣに送信する（５）。
【００８６】
ＯＦＣは、ＯＶＳ１からのＰａｃｋｅｔ−Ｉｎメッセージを受信し、ブロードキャストパケット（ＰＡＤＩ）の受信であることを検出する（６）。ＯＦＣは、タイマ（図６の２０６）での計時を開始し、タイムアウトが発生するまでウェイトする（７）。このウェイト間に、ＯＦＣは、シーケンス番号５でＯＶＳ２から送信されたＰａｃｋｅｔ−Ｉｎメッセージを受信する。
【００８７】
ＯＦＣは、タイマ（図６の２０６）でタイムアウトが発生すると（一定時間経過後）、ＶＭ負荷情報を取得する（８）。すなわち、ＯＦＣは、ＶＭ負荷情報取得コマンド（Ｇｅｔ  ＶＭ  Ｌｏａｄ）をそれぞれ、仮想マシンＶＭ１（ＶＭ１１〜ＶＭ１３）、ＶＭ２（ＶＭ２１〜ＶＭ２３）に送信する（９、１０）。この場合、ＶＭ負荷情報取得コマンド（Ｇｅｔ  ＶＭ  Ｌｏａｄ）の送信先の仮想マシンを、ブロードキャストパケット検出部（図６の２０５）によるタイマ（図６の２０６）のスタートの契機となるＰＡＤＩ受信通知を行ったＯＶＳ１と、タイマ（図６の２０６）でのタイムアウト発生前にＰＡＤＩ受信通知を行ったＯＶＳ２に接続する仮想マシンＶＭ１（ＶＭ１１〜ＶＭ１３）、ＶＭ２（ＶＭ２１〜ＶＭ２３）に限定するようにしてもよい。すなわち、タイマ（図６の２０６）でのタイムアウト発生前にＰＡＤＩ受信通知を行わなかったＯＶＳに接続する仮想マシンを選択候補から外し、仮想マシン（ＶＭ）の選択範囲を絞り込むようにしてもよい。
【００８８】
仮想マシンＶＭ１（ＶＭ１１〜ＶＭ１３）、ＶＭ２（ＶＭ２１〜ＶＭ２３）は、それぞれの負荷情報（ＶＭ負荷情報）をＯＦＣに送信する（１１、１２）。
【００８９】
ＯＦＣは、仮想マシンＶＭ１（ＶＭ１１〜ＶＭ１３）、ＶＭ２（ＶＭ２１〜ＶＭ２３）からのＶＭ負荷情報に基づき、低負荷のＶＭを選択する（１３）。この場合、仮想マシンＶＭ１１〜ＶＭ１３のうちの少なくとも１つを選択する。
【００９０】
ＯＦＣは、選択した仮想マシンＶＭ１（ＶＭ１１〜ＶＭ１３の少なくとも１つ）に接続する出力ポートに有するＯＶＳ１に対して、該ＯＶＳで受信したＰＡＤＩパケットの転送を指示する（１４）。すなわち、ＯＦＣは、Ｐａｃｋｅｔ−Ｏｕｔメッセージを、ＯＶＳ１に送信する（１５）。ＯＶＳ１は、Ｐａｃｋｅｔ−Ｏｕｔメッセージを受け、保持しておいたＰＡＤＩパケットを、仮想マシンＶＭ１１〜ＶＭ１３のうちＯＦＣのＶＭ選択部（図６の２０９）で選択されたＶＭに転送する（１６）。この場合、ＯＦＣは、Ｐａｃｋｅｔ−Ｏｕｔメッセージに、ＯＦＣで選択されたＶＭの情報（選択されたＶＭに接続するＯＶＳのポート（出力ポート）の番号）を含ませ、ＯＶＳでは、ＶＭ１１〜ＶＭ１３のうち選択された、ＶＭに接続する出力ポート（選択されたポート）から、ＶＭ宛にＰＡＤＩパケットを転送するようにしてもよい。例えば、ＯＦＣによってＶＭ１２が転送先として選択された場合には、ＯＦＣは、ＯＶＳ１に対して、ＶＭ１２に対応するポートから出力するように、Ｐａｃｋｅｔ−Ｏｕｔメッセージを用いて指示する。
【００９１】
また、ＯＦＣは、Ｐａｃｋｅｔ−Ｏｕｔメッセージを利用せずに、選択されたＶＭに対して、直接ＰＡＤＩパケットを転送することもできる。
【００９２】
さらに、ＯＦＣは、ＯＶＳに対して、ＰＡＤＩパケットの宛先ＭＡＣアドレスを、選択されたＶＭの宛先ＭＡＣアドレスに書き換えるような処理を規定したエントリを設定することも可能である。例えば、ＯＦＣによってＶＭ１２が転送先として選択された場合には、ＰＡＤＩパケットの宛先ＭＡＣアドレス（ブロードキャストアドレス）を、ＶＭ１２の宛先ＭＡＣアドレスに書き換える処理を規定したエントリを、ＯＶＳ１に設定する。このようにＯＶＳ１に対してエントリの設定を行うことで、ＰＡＤＩパケットの送信元クライアントから送信されるＰＡＤＩパケットは、すべてＶＭ１２に転送されるように設定することが可能となる。従って、ＰＡＤＩパケットの送信元クライアントのＰＰＰｏＥセッションの収容先となるＢＲＡＳを決定することができる。また、ＰＡＤＩパケットの送信元クライアントとのセッションが終了した後、再度セッション確立のためにＰＡＤＩパケットが送信されても、ＯＦＣ２００に対して再度Ｐａｃｋｅｔ−Ｉｎを送信することなく、ＰＡＤＩパケットを決定したＶＭに送信することができるので、ＯＦＣ２００に対する通信負荷を抑制することができる。また、この場合、ＢＲＡＳに対応するＶＭの起動が終了するなどして、機能しなくなった場合には、ＯＦＣ２００は、対応するＯＶＳに設定されているエントリを削除する。
【００９３】
なお、図８には示されていないが、ＰＡＤＩパケットのＶＭへの送信後のシーケンスは、前述した図２のシーケンスに従う（ただし、新規パケットを受信したＯＶＳは、Ｐａｃｋｅｔ−ＩｎメッセージをＯＦＣに送信し、ＯＦＣからのＰａｃｋｅｔ−Ｏｕｔメッセージを受けてパケットを指定された出力ポートから転送する）。
【００９４】
すなわち、ＰＡＤＩパケットを受信した仮想マシンＶＭからルータへの応答であるユニキャストパケットのＰＡＤＯパケット（図２参照）が、当該仮想マシンＶＭから、当該仮想マシンＶＭが接続するＯＶＳにデータプレーンで転送される。このＰＡＤＯパケットを受信したＯＶＳではフローエントリが見つからないため、ＯＦＣにＰａｃｋｅｔ−Ｉｎメッセージを送信する。ＯＦＣでは、当該ＰＡＤＯパケットのパケット転送経路（ＯｐｅｎＦｌｏｗネットワーク上でのパケット転送経路）を計算し、Ｐａｃｋｅｔ−Ｏｕｔメッセージを当該ＯＶＳに送信して、指定した物理ポートからのパケット転送を指示する。当該ＯＶＳは、仮想マシンＶＭから転送された当該ＰＡＤＯパケットをＬ２ネットワークに転送し、Ｌ２ネットワーク２Ａからルータ１０（図５参照）に転送される。ルータ１０（図５参照）からのユニキャストパケットのＰＡＤＲパケットは、Ｌ２ネットワーク２Ａから当該ＯＶＳに転送される。ＰＡＤＲパケットを受信したＯＶＳは、Ｐａｃｋｅｔ−ＩｎメッセージをＯＦＣに送信する。ＯＦＣは、Ｐａｃｋｅｔ−ＯｕｔメッセージをＯＶＳに送信し、ＯＶＳはＰＡＤＲパケットを、ＰＡＤＯパケットの送信元である仮想マシンＶＭに送信する。ＰＡＤＲパケットを受信した仮想マシンＶＭは、セッションＩＤを発行し、セッションＩＤを含むＰＡＤＳパケットを、当該ＶＭが接続するＯＶＳに送信する。ＰＡＤＳパケットを受信したＯＶＳでは、フローエントリが見つからないため、ＯＦＣにＰａｃｋｅｔ−Ｉｎメッセージを送信する。ＯＦＣでは、該ＰＡＤＳパケットのパケット転送経路を計算し、Ｐａｃｋｅｔ−ＯｕｔメッセージをＯＶＳに送信して指定した物理ポートからのパケット転送を指示する。ＯＶＳは、ＰＡＤＳパケットをＬ２ネットワーク２Ａ（図５参照）に転送し、ルータ１０に転送される。
【００９５】
＜変形例＞
図９は、図６のＯＦＣの変形例の構成を示す図である。図９に示すＯＦＣ２００’では、図６のタイマ２０６が削除されている点が相違している。図９に示すＯＦＣ２００’において、他の構成は、図６に示したに示すＯＦＣ２００と同一である。以下では、図６との相違点について説明する。この変形例では、ＯＦＣ２００’において、ＯＶＳからＰＡＤＩパケットの新規受信を通知するＰａｃｋｅｔ−Ｉｎメッセージを受信し、ブロードキャストパケット検出部２０５がＰＡＤＩパケットの受信を検出すると、ＶＭ負荷情報取得コマンド送信部２０７がＶＭ負荷情報取得コマンドＧｅｔ  ＶＭ  Ｌｏａｄをマネージメントプレーン２２３からＶＭ（仮想マシン）に対して送信する。
【００９６】
図１０は、図９の変形例のシーケンス動作を説明する図である。以下では、図８との相違点を説明する。
【００９７】
図１０において、ＯＦＣでは、ＯＶＳ１からの新規ＰＡＤＩパケット受信を通知するＰａｃｋｅｔ−Ｉｎメッセージを受信する（６）と、他のＯＶＳからのＰＡＤＩパケット受信を通知するＰａｃｋｅｔ−Ｉｎメッセージの受信を待つことなく、ただちに、ＶＭ負荷情報を取得する（７）。ＯＦＣは、ＶＭ負荷情報取得コマンド（Ｇｅｔ  ＶＭ  Ｌｏａｄ）をＶＭ１（ＶＭ１１〜ＶＭ１３）、ＶＭ２（ＶＭ２１〜ＶＭ２３）に送信する（８、９）。
【００９８】
すなわち、ＯＶＳ１へのＰＡＤＩパケットの到着に遅れて、ＯＶＳ２にもＰＡＤＩパケットが到着し（４）、ＯＶＳ２では、受信したＰＡＤＩパケットのヘッダ情報をフローテーブルのフローエントリの条件と照合し、一致するものがないため、Ｐａｃｋｅｔ−ＩｎメッセージでＯＦＣに新規パケットの受信を通知するが（５）、ＯＦＣは、ＯＶＳ２からのＰａｃｋｅｔ−Ｉｎメッセージで通知されたＰＡＤＩパケット受信に関する処理は行わない。
【００９９】
ＶＭ１（ＶＭ１１〜ＶＭ１３）、ＶＭ２（ＶＭ２１〜ＶＭ２３）はそれぞれの負荷情報（ＶＭ負荷情報）をＯＦＣに送信する（１０、１１）。
【０１００】
ＯＦＣは、ＶＭ負荷情報に基づき、低負荷のＶＭを選択する（１２）。この場合、ＯＦＣは、ＶＭ２１〜ＶＭ２３のうちの少なくとも１つを選択する。ＯＦＣは、選択したＶＭに接続する出力ポートを有するＯＶＳ２に対してＰＡＤＩパケットの転送を指示する（１３）。すなわち、ＯＦＣは、Ｐａｃｋｅｔ−ＯｕｔメッセージをＯＶＳ２に送信する（１４）。ＯＶＳ２は、Ｐａｃｋｅｔ−Ｏｕｔメッセージを受け、保持しておいた受信ＰＡＤＩパケットを、ＶＭ２１〜ＶＭ２３のうち、ＯＦＣのＶＭ選択部２０９で選択されたＶＭに接続する出力ポートから出力することで、選択されたＶＭに転送する（１５）。
【０１０１】
なお、上記実施形態では、ネットワーク機能を仮想化する例として、仮想スイッチＯＶＳ、仮想マシンＶＭへの適用例を説明した。しかしながら、スイッチは、仮想スイッチＯＶＳに限定されるものでなく、後述するように、実装置（通常装置）であるＯＦＳに適用可能であることは勿論である。
【０１０２】
また、ＢＲＡＳ機能（あるいはＢＡＳ機能）を仮想化した仮想マシン（ＶＭ）への適用に制限されるものでなく、ＢＲＡＳ機能を、複数の物理マシン（Ｐｒｏｃｅｓｓｏｒ  Ｅｌｅｍｅｎｔｓ）等に分散化した複数の処理単位で構成し、各処理単位に接続するポートを介してＯＦＳからＰＡＤＩパケットを送信する構成に対しても、上記実施形態とその変形例はそのまま適用可能である。
【０１０３】
＜実施形態２＞
図１１は、実施形態２を説明する図である。実施形態２は、複数のＡＤＳＬ回線をマルチプレクスするＤＳＬＡＭ２１’にＯｐｅｎＦｌｏｗ機能（ＯＦＳ）を搭載したものである。図１１において、ＯＦＣ２７は、例えばＤＳＬＡＭ２１’内のＯＦＳ（不図示）に対して、ＰＡＤＩパケット転送先のＢＲＡＳが動作する仮想マシン（ＶＭ）に対応するＶＬＡＮタグやポートＶＬＡＮを、ＰＡＤＩパケットのヘッダに設定して、ＢＲＡＳに転送する。仮想マシン（ＶＭ１）２３０１で動作するＢＲＡＳ１にＰＡＤＩパケットを送る場合、ＤＳＬＡＭ２１で、パケットヘッダにＶＬＡＮタグ（＝１）を付与する。
【０１０４】
ＯｐｅｎＦｌｏｗにおいて、パケットヘッダ（フレームヘッダ）のＶＬＡＮ  ＩＤフィールド（図２９参照）を修正するアクションとして、
ＳＥＴ＿ＶＬＡＮ＿ＶＩＤ（指定ＶＬＡＮ  ＩＤでＶｌａｎ  Ｔａｇを追加・更新する処理）が定義されている。
【０１０５】
本実施形態において、ＤＳＬＡＭ２１’内のＯＦＳのフローテーブルに、ＰＡＤＩパケットの条件にマッチするアクションとしてＳＥＴ＿ＶＬＡＮ＿ＶＩＤを、ＯＦＣから設定しておき、ＯＦＳでは、ＰＡＤＩパケットに、ＶＬＡＮ  ＩＤを設定して転送するようにしてもよい。なお、仮想マシン（ＶＭ１）２３０１、２３０２、２３０３の各仮想マシンは、それぞれ１台に限定されるものでなく、図５のように、複数の仮想マシンを並列接続してもよい。
【０１０６】
図１２（Ａ）は、図１１のＤＳＬＡＭ２１’の構成の一例を示す図である。ＤＳＬＡＭ２１’において、ＡＴＭ（Ａｓｙｎｃｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）スイッチ２１−１は、複数のＡＤＳＬ回線１５１〜１５ｎ（ｎは２以上の整数）からのＡＴＭセルの切換え（スイッチング）を行う。ＡＴＭ−Ｅｔｈｅｒ変換部２１−２は、ＡＴＭセルとＥｔｈｅｒｎｅｔ（登録商標）フレームのプロトコル変換を行う。ＯｐｅｎＦｌｏｗ機能として、ＯＦＳ２１−４は、ＡＴＭ−Ｅｔｈｅｒ変換部２１−２でＥｔｈｅｒフレームに変換されたパケットを受けると、当該パケットに対応するフローエントリがフローエントリに登録されていない場合、Ｐａｃｋｅｔ−ＩｎメッセージをＯＦＣ２７に送信する。ＯＦＣ２７が、パケット転送先を決定し、Ｐａｃｋｅｔ−ＯｕｔメッセージをＯＦＳ２１−４に送信し、ＯＦＳ２１−４に対して、指定ポートからＰＡＤＩパケットの転送を指示する。なお、ＯＦＳを複数備えた構成としてもよいことは勿論である。またＤＳＬＡＭ２１’を仮想マシン上に実装してもよい。さらに、ＯＦＣ２１−４を仮想スイッチ（ＯＶＳ）で実装する構成としてもよい。
【０１０７】
図１２（Ｂ）は、図１等の関連技術のＤＳＬＡＭ２１の構成を示す図である。ＤＳＬＡＭ２１は、ＡＴＭスイッチ２１−１と、ＡＴＭ−Ｅｔｈｅｒ変換部２１−２と、インタフェース部２１−３を備えている。インタフェース部２１−３は例えば１０ＢＡＳＥ−Ｔや１００ＢＡＳＥ−ＴＸ等のＥｔｈｅｒｎｅｔ（登録商標）に接続される送受信インタフェースである。
【０１０８】
本実施形態によれば、事業者網をいくつかのＶＬＡＮ（例えば図１１では３つのＶＬＡＮ）に分割し、ＤＳＬＡＭ２１’において、ブロードキャストパケット（ＰＡＤＩ）転送先のＶＬＡＮを、ブロードキャストパケットのヘッダ（フレームヘッダ）のＶＬＡＮ  ＩＤフィールドに設定して転送することで、ＢＲＡＳ／ＢＡＳの負荷分散に貢献する。
【０１０９】
＜実施形態３＞
図１３は、実施形態３を説明する図である。実施形態３では、ネットワーク、仮想マシンの負荷分散を行うロードバランサ（ＬＢ）２８を備えている。実施形態３においても、前記実施形態２と同様、ＤＳＬＡＭ２１"に、ＯｐｅｎＦｌｏｗ機能を載せる。ＤＳＬＡＭ２１"に搭載されるＯＦＳ（不図示）は、仮想スイッチＯＶＳとして実装してもよい。
【０１１０】
なお、本実施形態において、ロードバランサ（ＬＢ）２８は、複数の仮想マシンを順繰りに割り当てるラウンドロビン方式や、仮想マシンの負荷のモニタ結果等に基づき決定する動的割り当て方式等により、ＰＡＤＩパケットの転送先の仮想マシン（ＶＭ）を決定する。ロードバランサ（ＬＢ）２８は、サーバ上の仮想マシンに実装してもよいことは勿論である。
【０１１１】
図１３において、クライアント１からのＰＡＤＩがＤＳＬＡＭ２１"に入力されると、ＤＳＬＡＭ２１"のＯＦＳ（不図示）は、ＯＦＣ２７にＰａｃｋｅｔ−Ｉｎメッセージを送信し、ＯＦＣ２７は、ＤＳＬＡＭ２１"のＯＦＳ（不図示）に対して、ＰＡＤＩパケットをロードバランサ（ＬＢ）２８へ転送するように指示する。この場合、ＯＦＳのフローテーブルに、ＰＡＤＩパケットを入力した場合、ロードバランサ（ＬＢ）に接続するポートから転送するという処理（アクション）規則を規定したフローエントリを追加するようにしてもよい。ロードバランサ（ＬＢ）２８は、ＯＦＳから転送されたＰＡＤＩパケットを、選択した仮想マシンに転送する。
【０１１２】
図１４は、図１３のＤＳＬＡＭ２１"の構成例を示す図である。図１４を参照すると、図１２（Ａ）のＤＳＬＡＭ２１’に対して、ＤＳＬＡＭ２１”のＯＦＳ２１−４がロードバランサ（ＬＢ）２８に接続するポートを有している。図１４において、ＡＤＳＬ回線１５からＰＡＤＩパケットがＤＳＬＡＭ２１"に入力されると、ＤＳＬＡＭ２１"のＯＦＳ２１−４は、ＯＦＣ２７にＰａｃｋｅｔ−Ｉｎメッセージを送信する。ＯＦＣ２７は、ＰＡＤＩパケットをロードバランサ（ＬＢ）２８へ転送するようにＯＦＳ２１−４に指示する。ロードバランサ（ＬＢ）２８は、ＯＦＳ２１−４から転送されたＰＡＤＩパケットを、選択した仮想マシン２３０に転送する。なお、ＯＦＣ２７は、ＯＦＳ２１−４から送信されるＰａｃｋｅｔ−Ｉｎメッセージが、ＯＦＳ２１−４でのＰＡＤＩパケット受信の通知でない場合には（すなわちＰＡＤＩパケット以外のパケット受信を通知するものである場合）、Ｐａｃｋｅｔ−ＯｕｔメッセージをＯＦＳ２１−４に転送し、当該受信パケットをロードバランサ（ＬＢ）２８に転送することなく、直接、宛先の仮想マシン（ＶＭ）に転送するようにＯＦＳ２１−４に指示する。
【０１１３】
なお、本実施形態において、ロードバランサ（ＬＢ）２８は、ＯＦＳ２１−４からフロー毎のフローエントリの統計情報を取得し、フローの負荷等に基づき、負荷の最も少ないフローの仮想マシン（ＶＭ）をＰＡＤＩパケットの転送先に決定するようにしてもよい。
【０１１４】
本実施形態によれば、ＯｐｅｎＦｌｏｗスイッチで受け取ったＰＡＤＩパケットは専用のロードバランサ（ＬＢ）に転送され、ロードバランサ（ＬＢ）で負荷分散を考慮したＰＡＤＩパケットの転送先が決定される。ロードバランサ（ＬＢ）を別途備えた分、負荷分散の効果を高めることができる。またＯＦＣへの負荷の集中も回避することができる。
【０１１５】
＜実施形態４＞
図１５は、実施形態４を説明する図である。図１５を参照すると、ＤＳＬＡＭ２１'''にロードバランス機能（ＬＢ）２８’を搭載している。ＤＳＬＡＭ２１'''は、ブロードキャストパケット（例えばＰＡＤＩパケット）を受信すると、ロードバランス機能（ＬＢ）２８’の制御に基づき、ＰＡＤＩパケット転送先の仮想マシン（ＶＭ）を選択し、選択した仮想マシン（ＶＭ）にＰＡＤＩパケットを転送する。ＤＳＬＡＭ２１'''は、例えばＰＡＤＩパケット以外のパケットをＡＤＳＬ回線（１５１〜１５ｎ）から受信した場合、ロードバランス機能（ＬＢ）２８’の制御を受けることなく、パケットのヘッダで指定される宛先の仮想マシン（ＶＭ）に転送するようにしてもよい。
【０１１６】
図１６は、実施形態４のＤＳＬＡＭ２１'''の構成を例示する図である。図１６を参照すると、図１２（Ｂ）のＤＳＬＡＭ２１に、ロードバランサ（ＬＢ）２８’を備えている。ロードバランサ（ＬＢ）２８’は、選択した仮想マシン宛に、ＰＡＤＩパケットを送信するように、インタフェース回路（ＩＦ）２１−３を制御する。
【０１１７】
本実施形態によれば、負荷分散を考慮してブロードキャストパケットの転送先を決定することができる。ＯｐｅｎＦｌｏｗネットワークを具備せず、構成を簡易化することができる。
【０１１８】
＜実施形態５＞
図１７は、実施形態５を説明する図である。実施形態５では、ロードバランサ（ＬＢ）２８をＤＳＬＡＭ２１の後段に備えている。ＤＳＬＡＭ２１から出力されるＰＡＤＩパケットは、ロードバランサ（ＬＢ）２８で選択された仮想マシン（ＶＭ）宛てに転送される。ロードバランサ（ＬＢ）２８は、複数の仮想マシン（ＶＭ）２３０１〜２３０３を順繰りに割り当てるラウンドロビン方式や、仮想マシン２３０１〜２３０３の負荷のモニタ結果等に基づき決定する動的割り当て方式等により、ＰＡＤＩパケットの転送先の仮想マシン（ＶＭ）２３０１〜２３０３を決定する。ロードバランサ（ＬＢ）２８はサーバ上の仮想マシンに実装してもよいことは勿論である。
【０１１９】
本実施形態によれば、ブロードキャストパケットの転送先を負荷分散を考慮して決定することができる。ロードバランサを仮想化せず、専用装置で構成した場合、処理の高速化を図ることができる。
【０１２０】
＜実施形態６＞
図１８は、実施形態６の構成を示す図である。図１８を参照すると、Ｌ２ネットワーク３１とＯｐｅｎＦｌｏｗネットーク３２の境界にＯＦＳ１、ＯＦＳ２、ＯＦＳ３が配置されている。ＯｐｅｎＦｌｏｗネットーク３２の端部ノードＯＦＳ７、８にサーバ等のＨＯＳＴ１、２、３が接続されている。ＯｐｅｎＦｌｏｗネットーク３２のＯＦＳ１〜ＯＦＳ８はＯＦＣ３００で一元的に管理される。
【０１２１】
図１９は、Ｌ２ネットワーク３１からのブロードキャストパケットＢＰがＯｐｅｎＦｌｏｗネットーク３２に転送される様子を模式的に示す図である。ＯＦＳ１は、ブロードキャストパケットＢＰを受信し、該当するフローエントリが見つからないためＰａｃｋｅｔ−ＩｎメッセージをＯＦＣ３００に送信し、該ブロードキャストパケットＢＰに対するフローの設定（経路計算）を依頼する。ＯＦＳ２、ＯＦＳ３では、ブロードキャストパケットＢＰを受信し、該当するフローエントリが見つからないためＰａｃｋｅｔ−ＩｎメッセージをＯＦＣ３００に送信し、経路計算を依頼する。ＯＦＣ３００では、ＯＦＳの負荷情報に基づき、ＯＦＳを選択し（例えばＯＦＳ１）、ブロードキャストパケットＢＰを転送するフロー（経路）を計算し、経路上のＯＦＳにフローエントリを設定し（ＦｌｏｗＭｏｄｉｆｙメッセージをＯＦＳ４、ＯＦＳ７に送信）、選択したＯＦＳ１にＰａｃｋｅｔ−Ｏｕｔメッセージを送信する。非選択のＯＦＳ２とＯＦＳ３には、Ｐａｃｋｅｔ−Ｏｕｔメッセージを送信しない。Ｐａｃｋｅｔ−Ｏｕｔメッセージを受信したＯＦＳ１は、指定された出力ポートからブロードキャストパケットＢＰをＯＦＳ４に転送する。さらにブロードキャストパケットＢＰは、ＯＦＳ４からＯＦＳ７、８を介して、ＨＯＳＴ１、２、３に転送される。
【０１２２】
図２０は、実施形態６のＯＦＣ３００の構成を例示した図である。図２０を参照すると、ＯＦＣ３００は、フローエントリ作成部３０１、経路計算部３０２、メッセージ送信部３０３、Ｐａｃｋｅｔ−Ｉｎ識別部３０４、ブロードキャストパケット（Broadcast Packet）検出部３０５、タイマ３０６、ＯＦＳ負荷監視部３０７、ＯＦＳ選択部３０８、ＯＦＳとの間の通信を行うインタフェースであるノード通信部３０９、ネットワークのトポロジ情報を記憶管理するためのトポロジ情報記憶部３１１、ユーザ情報を記憶するユーザ情報記憶部３１３を備えている。
【０１２３】
ブロードキャストパケット検出部３０５でブローキャスト受信通知を最初に検出した場合、タイマ３０６をスタートさせ、タイマ３０６でのタイムアウト発生時に、ＯＦＳ負荷監視部３０７は、ＯＦＳ１、２、３に対して、ＯＦＳ負荷情報取得コマンドを送信し、ＯＦＳからフローエントリの統計情報（受信バイト数等）を取得することで、ＯＦＳの負荷を監視するようにしてもよい。
【０１２４】
あるいは、ＯＦＳ負荷監視部３０７は、ＯｐｅｎＦｌｏｗネットワーク３２を構成するＯＦＳ１〜８に対して、ＯＦＳ負荷情報取得コマンドを送信してフロー別の負荷を導出するようにしてもよい。あるいは、ＯＦＳ負荷監視部３０７は、ＯＦＳからのＰａｃｋｅｔ−Ｉｎメッセージに、当該ＯＦＳからフローエントリの統計情報（受信パケット数、受信バイト数等）を含ませることで、通信量等の負荷情報を取得するようにしてもよい。
【０１２５】
あるいは、ＯＦＳ負荷監視部３０７は、ポーリング等により、周期的にＯＦＳの負荷情報を取得して記録しておき、タイマ３０６でのタイムアウト発生時に、ただちに、ＯＦＳの負荷情報をＯＦＳ選択部３０８に入力するようにしてもよい。
【０１２６】
ＯＦＳ選択部３０８は、Ｐａｃｋｅｔ−Ｉｎメッセージを送信したＯＦＳの中から、負荷の最小のＯＦＳを選択し、メッセージ送信部３０３は、ＯＦＳ選択部３０８で選択されたＯＦＳにＰａｃｋｅｔ−Ｏｕｔメッセージを送信する。また、経路計算部３０２は、選択されたＯＦＳからブロードキャストパケット転送先のＨＯＳＴ１、２、３への経路を計算し、フローエントリ作成部３０１がブロードキャストパケット転送経路上のＯＦＳに対するフローエントリを作成し、メッセージ送信部３０３を介して、フローエントリ設定コマンド（Flow-Modify）を、ブロードキャストパケット転送経路上のＯＦＳに送信する。なお、ブロードキャストパケット転送経路上のＯＦＳは、フローエントリ設定コマンド（Flow-Modify）を受け取り、フローエントリをフローテーブルに追加する。
【０１２７】
図２１は、実施形態６のシーケンス動作を説明する図である。Ｌ２ＮＷ、ＯＦＳ１、ＯＦＳ２／３、ＯＦＳ４−８、ＨＯＳＴ１−３、ＯＦＣは、図１９のＬ２ネットワーク３１、ＯＦＳ１、ＯＦＳ２／３、ＯＦＳ４−８、ＨＯＳＴ１−３、ＯＦＣ３００に対応している。図２１には、各シーケンスの番号が付されており、以下の説明では、文末の括弧内の数字は当該シーケンスの番号を指示する。なお、図２１では、ＯＦＳ負荷監視部３０７では、タイマ３０６でのタイムアウト発生時に、ＯＦＳの負荷情報を既に取得している場合も考慮して、ＯＦＳ負荷情報取得コマンドの送信のシーケンスは示されていない。
【０１２８】
ブロードキャストパケットがＬ２ネットワークに到着する（１）。
【０１２９】
Ｌ２ネットワークからのブロードキャストパケットがＯＦＳ１に到着する（２）。
【０１３０】
ＯＦＳ１はＰｃａｋｅｔ−ＩｎメッセージをＯＦＣに送信する（３）。
【０１３１】
Ｌ２ネットワークからのブロードキャストパケットがＯＦＳ２に到着する（４）。
【０１３２】
ＯＦＳ２はＰｃａｋｅｔ−ＩｎメッセージをＯＦＣに送信する（５）。  
【０１３３】
ＯＦＣでは、ＯＦＳ１はＰｃａｋｅｔ−Ｉｎメッセージを受信し、ＯＦＳ１でブロードキャストパケットを受信したことを検出すると、タイマ（図２０の３０６）をスタートさせる（６）。
【０１３４】
タイマ（図２０の３０６）でタイムアウトが発生すると（７）、ＯＦＣは、ＯＦＳの負荷監視結果からＯＦＳ１を選択し（８）、Ｐａｃｋｅｔ−ＯｕｔメッセージをＯＦＳ１に送信し、指定ポートからのブロードキャストパケットの転送を指示する（１０）。また、ＯＦＣは、当該ブロードキャストパケットの転送経路上のＯＦＳ４、７、８に対して、Ｆｌｏｗ−Ｍｏｄｉｆｙメッセージを送信し、ＯＦＳ４、７、８は、Ｆｌｏｗ−Ｍｏｄｉｆｙメッセージに基づき、それぞれ当該ブロードキャストパケットに対するフローエントリを、フローテーブルに設定する（９）。例えばＯＦＳ７のフローテーブルには、当該ＰＡＤＩパケットを受信すると、当該ＰＡＤＩパケットをＨＯＳＴ１、ＨＯＳＴ２、ＯＦＳ８にそれぞれ接続する３つの出力ポートから出力する処理（Ａｃｔｉｏｎｓ）のフローエントリが設定される。
【０１３５】
ＯＦＳ１は、ブロードキャストパケットを指定されたポートからＯＦＳ４に転送し（１１）、ブロードキャストパケットは、ＯＦＳ７、８を介して、ＨＯＳＴ１、２、３に転送される（１２）。
【０１３６】
上記シーケンス１１、１２において、ＯＦＳ４、７、８では、前段のＯＦＳから該ブロードキャストパケットを受信した場合、パケットヘッダが、ＯＦＣから設定されたフローエントリの照合欄（Match Field）とマッチするため、ＯＦＣに対してＰａｃｋｅｔ−Ｉｎメッセージを送信することなく、フローエントリの処理欄（Actions）（図２８参照）に従い、該ブロードキャストパケットを指定ポートから転送する。なお、境界のＯＦＳ１〜３のうち、ＯＦＳ１以外のＯＦＳ２とＯＦＳ３にはＰａｃｋｅｔ−Ｏｕｔメッセージは送信されず、ＯＦＳ２とＯＦＳ３からはブロードキャストパケットは転送されない。
【０１３７】
上記実施形態６において、ＯＦＣ３００のＯＦＳ選択部３０８は、Ｐａｃｋｅｔ−Ｉｎメッセージでブロードキャストパケットの受信を通知したＯＦＳの中から選択されたＯＦＳ１はブロッドキャストパケットが入来したポートを除く転送可能状態（Forwarding状態）の全てのポートに転送するようにしてもよい。また後段のＯＦＳ４、７、８等も前段のＯＦＳからのブロッドキャストパケットが入来したポートを除く転送可能状態（Forwarding状態）の全てのポートに転送するようにしてもよい。
【０１３８】
実施形態６によれば、Ｌ２ネットワーク３１とＯｐｅｎＦｌｏｗネットワーク３２の境界のＯＦＳ１、２、３のうちの少なくとも１つを選択することで、ＯＦＳ１、２、３の各々がブロードキャストパケットを転送する場合と比べて、ＯｐｅｎＦｌｏｗネットワーク上を転送されるブロードキャストパケットのトラフィックを大幅に低減することができる。
【０１３９】
＜変形例＞
図２２は、実施形態６の変形例のＯＦＣの構成を示す図である。図２２を参照すると、この変形例のＯＦＣでは、図２０のタイマ３０６が削除されている。その他の構成は図２０と同一である。実施形態６では、ＯＦＣ３００は、最初にＯＦＳからブロードキャストパケットの受信が通知されるとタイマ３０６をスタートさせ、タイムアウト発生時に、ＯＦＳ負荷監視部３０７に通知し、ＯＦＳ選択部３０８でＯＦＳを選択している。
【０１４０】
これに対して、この変形例では、境界にあるＯＦＳから最初にブロードキャストパケットの受信が通知されると、境界にある他のＯＦＳからのブロードキャストパケットの受信が通知されることを待つことなく、ＯＦＳ負荷監視部３０７に通知し、ＯＦＳ選択部３０８でＯＦＳを選択する。この場合、Ｌ２ネットワーク３１とＯｐｅｎＦｌｏｗネットワーク３２の境界のＯＦＳ１〜３のうち、いずれからかブロードキャストパケットの受信が通知されると、もっとも低負荷のＯＦＳを選択するようにしてもよい。あるいは、境界にあるＯＦＳから最初にブロードキャストパケットの受信が通知されると当該ＯＦＳを選択するようにしてもよい。この場合、ＯＦＳ負荷監視部３０７は不要とされる。
【０１４１】
図２３は、図２２を参照して説明した変形例の動作を説明する図である。以下、図２１との相違点について説明する。
【０１４２】
ＯＦＣでは、ＯＦＳ１からＰｃａｋｅｔ−Ｉｎメッセージを受信すると、ＯＦＳ２からＰｃａｋｅｔ−Ｉｎメッセージ（５）を待つことなく、ＯＦＳの負荷監視結果からＯＦＳ１を選択し（６）、Ｐａｃｋｅｔ−ＯｕｔメッセージをＯＦＳ１に送信する（８）。またＯＦＳは、ＯＦＳ４、７にＦｌｏｗ−Ｍｏｄｉｆｙメッセージを送信し、当該ブロードキャストパケットの転送経路を設定する（７）。ＯＦＳ１はブロードキャストパケットをＯＦＳ４に転送し（９）、ＯＦＳ７、８を介してＨＯＳＴ１、２、３に転送される（１０）。なお、境界のＯＦＳ１〜３のうち、ＯＦＳ１以外のＯＦＳ２とＯＦＳ３には、Ｐａｃｋｅｔ−Ｏｕｔメッセージは送信されない。
【０１４３】
この変形例によれば、実施形態６と同様、Ｌ２ネットワーク３１とＯｐｅｎＦｌｏｗネットワーク３２の境界のＯＦＳ１、２、３のうちの少なくとも１つを選択することで、ＯＦＳ１、２、３の各々がブロードキャストパケットを転送する場合と比べて、ＯｐｅｎＦｌｏｗネットワーク上を転送されるブロードキャストパケットのトラフィックを大幅に低減することができる。さらに、実施形態２のタイマによる管理を不要としている。
【０１４４】
＜実施形態７＞
図２４は、本発明の実施形態７を説明する図である。図２４を参照すると、第１のネットワーク４１と、第２のネットワーク４２の境界に、スイッチＳＷ１、ＳＷ２、ＳＷ３がある。実施形態７の第２のネットワーク４２は、実施形態２のＯｐｅｎＦｌｏｗネットワークのＯＦＳ１〜８を、Ｌ２スイッチ等のスイッチＳＷ１〜ＳＷ８で置き換えたものである。スイッチＳＷ１〜ＳＷ８は、入力ポートからブロードキャストパケットを受信すると、ブロードキャストパケット（ＢＰ）を複製し、複数のポートから出力する（例えば全ての出力ポートへフラッディング）。
【０１４５】
実施形態７では、コントローラ４００は、スイッチＳＷ１、ＳＷ２、ＳＷ３のうちの一つから、ブロードキャストパケットの受信が通知されると、例えば、スイッチＳＷ１、ＳＷ２、ＳＷ３の中の１つを選択し、残りを非選択とする。選択されたスイッチは、受信したブロードキャストパケットを例えばフラッディングする。一方、非選択とされたスイッチは、受信したブロードキャストパケットの転送は行わない。これにより、ネットワーク４２内におけるブロードキャスのあふれの発生を抑制することができる。図２４の例では、ＳＷ１から、ブロードキャストパケット受信の通知を受けたコントローラ（ＣＴＲＬ）４００は、ＳＷ１を選択する。コントローラ４００は、スイッチＳＷ２、ＳＷ３からも、ブロードキャストパケット受信の通知を受けるが、スイッチＳＷ２とＳＷ３は非選択とし、スイッチＳＷ２とＳＷ３からは、当該ブロードキャストパケットの転送は行われない。
【０１４６】
あるいは、例えばスイッチＳＷ１から、ブロードキャストパケット受信の通知を受けたコントローラ（ＣＴＲＬ）４００は、スイッチＳＷ１の特定の出力ポート（少なくとも１つの出力ポート）を選択するようにしてもよい。
【０１４７】
第１のネットワーク４１と第２のネットワーク４２はともにＬ２ネットワークからなる構成としてもよい。この場合、スイッチＳＷ１〜Ｓ８は、第１のネットワーク４１のスイッチＳＷと同様、例えばＬ２スイッチからなる。
【０１４８】
図２５は、実施形態７のコンローラ４００の構成を例示する図である。コントローラ４００は、ポート／スイッチ（ＰＯＲＴ／ＳＷ）選択部４０１と、パケット受信検出部４０２と、スイッチ情報記憶部４０３を備えている。パケット受信検出部４０２は、例えばスイッチＳＷでブロードキャストパケット受信時に、スイッチＳＷから通知を受けることで、ブロードキャストパケット受信を検出する。
【０１４９】
ポート／スイッチ選択部４０１は、パケット受信検出部４０２におけるスイッチＳＷでのブロードキャストパケット受信の検出に応答して、スイッチ情報記憶部４０３を参照して、ブロードキャストパケットの転送先に応じて、スイッチＳＷ１〜ＳＷ３の中から少なくとも１つのスイッチを選択し、残りのスイッチを非選択とする。あるいは、ポート／スイッチ選択部４０１は、スイッチ情報記憶部４０３を参照して、スイッチＳＷ１〜ＳＷ３の中から、少なくとも１つのスイッチのポートを選択する。選択された少なくとも１つのスイッチは、ブロードキャストパケットを、例えば全てのポートから転送し、残りのスイッチは、ブロードキャストパケットを転送しない。あるいは、少なくとも１つの出力ポートが選択された少なくとも１つのスイッチは、選択された少なくとも１つの出力ポートから、ブロードキャストパケットを転送する。
【０１５０】
図２６は、実施形態７の動作を説明する図である。図２６において、ＮＷ、ＳＷ１、ＳＷ２／３、ＳＷ４−８、ＨＯＳＴ１−３、ＣＴＲＬは、図２４のネットワーク４１、スイッチＳＷ１、ＳＷ２／３、ＳＷ４−８、ホストＨＯＳＴ１−３、コントローラＣＴＲＬ４００にそれぞれ対応している。図２６には、各シーケンスの番号が付されており、以下の説明では、文末の括弧内の数字は当該シーケンスの番号を指示する。
【０１５１】
ブロードキャストパケットがネットワーク（ＮＷ）に到着する（１）。
【０１５２】
ＮＷからのブロードキャストパケットがスイッチＳＷ１に到着する（２）。
【０１５３】
ＳＷ１はブロードキャストパケット受信をコントローラ（ＣＴＲＬ）に通知する（３）。Ｌ２ネットワークからのブロードキャストパケットがスイッチＳＷ２に到着する（４）。スイッチＳＷ２はブロードキャストパケット受信をコントローラ（ＣＴＲＬ）に通知する（５）。  
【０１５４】
コントローラ（ＣＴＲＬ）は、例えばスイッチＳＷ１からブロードキャストパケット受信通知を受信すると、スイッチＳＷ１（又はポート）を選択する（６）。コントローラ（ＣＴＲＬ）は、ブロードキャストパケット転送指示をスイッチＳＷ１に送信する（７）。ＳＷ１はブロードキャストパケットを、スイッチＳＷ４に転送し（８）、スイッチＳＷ７、ＳＷ８を介してＨＯＳＴ１、２、３に転送される（９）。第１のネットワーク４１と第２のネットワーク４２の境界のスイッチＳＷ１、２、３のうち少なくとも１つ（又はスイッチＳＷの複数の出力ポートの中の少なくとも１つの出力ポート）を選択することで、スイッチＳＷ１、２、３のすべてがそれぞれの全出力ポートからブロードキャストパケットを転送する場合と比べて、ネットワーク上を転送されるブロードキャストパケットのトラフィックを大幅に低減し、ブロードキャストパケットでネットワーク（ブロードキャストドメイン）が溢れてしまうことを回避可能としている。
【０１５５】
なお、実施形態７において、実施形態６と同様、ポート／スイッチ選択部４０１は、スイッチＳＷ１〜ＳＷ３の負荷に基づき低負荷のスイッチを選択するようにしてもよい。また、スイッチＳＷ１からブロードキャストパケット受信通知を受信すると、実施形態１と同様に、図２５のコンローラ４００においては、不図示のタイマをスタートさせ、タイマでのタイムアウト発生時に、スイッチの選択を行うようにしてもよい。
【０１５６】
また、ブロードキャストパケットのほか、例えばＩＰマルチキャストグループアドレスを用いたマルチキャストパケット（ネットワークのスイッチ、ルータ等でパケットを複製し複数受信者へ転送）についても、該パケットの転送経路情報、スイッチの接続情報等に基づき、スイッチＳＷ１〜３の少なくとも１つを選択するようにしてもよい。
【０１５７】
以上、本発明の各実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、更なる変形・置換・調整を加えることができる。
【０１５８】
なお、上記非特許文献の開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得る各種変形、修正を含むことは勿論である。
【符号の説明】
【０１５９】
１  加入者宅（加入者）
２  事業者網
３  インターネット
１０  ルータ
１１１〜１１３  端末
１２  ＡＤＳＬモデム
１５、１５１〜１５ｎ  ＡＤＳＬ回線
２０  ＢＡＳ／ＢＲＡＳ
２１、２１１〜２１３、２１’、２１”、２１'''  ＤＳＬＡＭ
２１−１  ＡＴＭ−ＳＷ
２１−２  ＡＴＭ−Ｅｔｈｅｒ変換部
２１−３  ＩＦ
２１−４  ＯＦＳ
２２  コアネットワーク
２Ａ  Ｌ２ネットワーク
２３、２３１、２３３  エッジスイッチ
２４  集約スイッチ
２５  エッジルータ
２６  集約ノード
２７  ＯＦＣ
２８、２８’  ロードバランサ
３０１、３０２  ＩＳＰ（インターネットサービスプロバイダ）
３１１、３１２  ＲＡＤＩＵＳサーバ
３２  オープンフローネットワーク
４１  第１のネットワーク
４２  第２のネットワーク
２００、２００’、３００、３００’  ＯＦＣ
２０１、３０１  フローエントリ作成部
２０２、３０２  経路計算部
２０３、３０３    メッセージ送信部
２０４、３０４  Ｐａｃｋｅｔ−Ｉｎ識別部
２０５、３０５  ブロードキャストパケット（Ｂｒｏａｄｃａｓｔ  Ｐａｃｋｅｔ）検出部
２０６、３０６  タイマ
２０７  ＶＭ負荷情報取得コマンド送信部
２０８  ＶＭ負荷情報受信部
２０９  ＶＭ選択部
２１１、３０９  ノード通信部
２１２  ＶＭ通信部
２１３、３１１  トポロジ情報記憶部
２１４、３１３  ユーザ情報記憶部
２２０  ＯＶＳ
２２１  データプレーン
２２２  コントロールプレーン
２２３  マネージメントプレーン
２３０、２３０１〜２３０３  仮想マシン（ＶＭ）
２４０  制御部
２５０  サーバ
３０７  ＯＦＳ負荷監視部
３０８  ＯＦＳ選択部
４００  コントローラ（ＣＴＲＬ）
４０１  ポート／スイッチ選択部
４０２  パケット受信検出部
４０３  スイッチ情報記憶部
５００  通信制御装置
５０１  第一の手段（ユニット）
５０２  第二の手段（ユニット）
５０３  パケット（セッション確立用のパケット）
５０４１〜５０４ｎ  経路
５０５１〜５０５ｎ  ＶＭ（仮想マシン）
６００  通信制御装置
６０１  第一の手段（ユニット）
６０２  第二の手段（ユニット）
６０３  パケット（セッション確立用のパケット）
６０４  ネットワークスイッチ
６０５１〜６０５ｎ  経路
６０６１〜６０６ｎ  ＶＭ（仮想マシン）
７００  転送先絞り込み手段
【図１】
2014208538.tif 000003
【図２】
2014208538.tif 000004
【図３】
2014208538.tif 000005
【図４】
2014208538.tif 000006
【図５】
2014208538.tif 000007
【図６】
2014208538.tif 000008
【図７】
2014208538.tif 000009
【図８】
2014208538.tif 000010
【図９】
2014208538.tif 000011
【図１０】
2014208538.tif 000012
【図１１】
2014208538.tif 000013
【図１２】
2014208538.tif 000014
【図１３】
2014208538.tif 000015
【図１４】
2014208538.tif 000016
【図１５】
2014208538.tif 000017
【図１６】
2014208538.tif 000018
【図１７】
2014208538.tif 000019
【図１８】
2014208538.tif 000020
【図１９】
2014208538.tif 000021
【図２０】
2014208538.tif 000022
【図２１】
2014208538.tif 000023
【図２２】
2014208538.tif 000024
【図２３】
2014208538.tif 000025
【図２４】
2014208538.tif 000026
【図２５】
2014208538.tif 000027
【図２６】
2014208538.tif 000028
【図２７】
2014208538.tif 000029
【図２８】
2014208538.tif 000030
【図２９】
2014208538.tif 000031
【図３０】
2014208538.tif 000032
【図３１】
2014208538.tif 000033
【図３２】
2014208538.tif 000034
【国際調査報告】
2014208538.tif 000035
2014208538.tif 000036
2014208538.tif 000037
2014208538.tif 000038