以下、図面と共に本発明の実施の形態を説明する。
<実施形態1:物理構成>
図2は、本発明の一実施の形態における伝送経路変更システムの物理構成例である。同図に示すシステムは、IPネットワーク上において音声や映像などのコンテンツを配信するためのシステムであり、データ転送装置によって構成された物理的なネットワークの上に、論理ネットワーク構築装置が複数の異なる論理ネットワークを重畳して構築する機能を有する。同図に示すシステムは、トランスポートネットワークに1つ以上のユーザ拠点100、1台以上の論理ネットワーク構築装置200、および、1台の論理ネットワーク制御装置300が接続された構成となっている。
トランスポートネットワークは、データ転送機能を有する1台以上のデータ転送装置400、および、データ転送装置400どうしを接続する物理リンクによって構成される物理的なネットワークである。
また、ユーザ拠点100、論理ネットワーク構築装置200、および、論理ネットワーク制御装置300も物理リンクを介してデータ転送装置400に接続される。これにより、ユーザ拠点100内の各種装置や端末、論理ネットワーク構築装置200、および、論理ネットワーク制御装置300はトランスポートネットワークを介して相互に通信できる。
トランスポートネットワーク内のデータ転送装置400はIP(Internet Protocol)パケットの転送機能を有する通信機器、具体的には、レイヤ2スイッチ、レイヤ3スイッチ、あるいはルータと呼ばれる通信機器であり、トランスポートネットワークとそれに接続されている全ての装置の間ではIPによる通信が行われるものとする。
論理ネットワーク構築装置200は、当該論理ネットワーク構築装置200内部に1つまたは複数個の仮想的なデータ転送ノード(以下、「論理ノード」と記す)を生成し、さらに、他の論理ネットワーク構築装置上の論理ノード、あるいは、ユーザ拠点100内の端末収容装置と自身の内部の論理ノードとを接続する論理リンクを構築して、データ転送装置400が1台または複数台接続された物理ネットワーク上に、論理ノードの集合、端末収容装置の集合、および、論理リンクの集合からなるネットワーク(以下、「論理ネットワーク」と記す)を1つ、または複数個重畳して構築する。このように、論理ネットワーク構築装置200は、物理ネットワークであるトランスポートネットワークの上に、相互に干渉しない独立した仮想的なネットワークである論理ネットワークを多数重畳して作成する機能を有する装置である。
さらに、論理ネットワーク構築装置200は、自身の内部の、異なる論理ネットワークに属する論理ノードどうしを接続してそれらの間のパケット転送を可能にする論理ネットワーク間接続リンクを動的に構築、あるいは、削除する機能を有する。
論理ネットワーク制御装置300は、一般の汎用コンピュータ装置であり、論理ネットワーク構築装置200に対して論理ネットワークの構築/削除を指示する機能、および、後述する通信品質管理装置からの依頼に基づき、論理ネットワークのトポロジー情報を提供したり、論理ネットワーク構築装置200に対する論理ネットワーク間接続用リンクの設定/削除の依頼を行う機能を有する装置である。
図3は、図2に記載したユーザ拠点100の内部の物理構成例である。同図に示すように、ユーザ拠点100は、1台以上のデータ転送装置110、1台以上の通信品質管理装置120、1台以上のユーザ端末130、1台以上のコンテンツデータベース140、1台以上の端末データベース150、および、1台以上の端末収容装置160から成る。
データ転送装置110は、トランスポートネットワークと当該ユーザ拠点とを物理的に接続するもので、一般のレイヤ2スイッチ、レイヤ3スイッチ、あるいは、ルータと呼ばれる、前記トランスポートネットワークにおけるデータ転送装置400と同様の通信機器である。
通信品質管理装置120は、一般の汎用コンピュータ装置であり、本実施形態の伝送経路変更システムにおけるデータ伝送経路制御を実現する輻輳回避制御プログラムが本装置上で稼働する。通信品質管理装置120は、輻輳回避制御プログラムの稼働によって、輻輳区間を特定し、迂回先候補の論理ネットワークを検索し、コンテンツデータの少なくとも一部を迂回先候補の論理ネットワークに迂回させる。
以下に詳細に説明するように、輻輳回避制御プログラムの稼働によって、通信品質管理装置120は、論理ネットワーク制御装置300から、論理ネットワークのトポロジー情報を取得する。また、通信品質管理装置120は、論理ネットワーク構築装置200内の論理ノードや、端末収容装置160からデータ転送装置110を経由して通知されるトラヒック情報を受信し、当該トラヒック情報に基づきコンテンツデータの伝送中における論理ネットワーク内の輻輳を検出してデータ伝送経路上における輻輳区間を特定する。取得した論理ネットワークのトポロジー情報を参照して、輻輳区間を持つ論理ネットワークのデータ伝送経路の途中で輻輳区間のトラヒックを他の論理ネットワークに転送して輻輳区間を迂回することを可能にする迂回先候補の論理ネットワークを検索する。当該検索された迂回先候補の論理ネットワークの可用帯域がコンテンツデータの少なくとも一部を伝送可能な帯域であれば、論理ネットワーク制御装置300と論理ネットワーク構築装置200とを介して、輻輳区間を有する論理ネットワークと迂回先候補の論理ネットワークとを接続する論理ネットワーク間接続用リンクを構築させ、コンテンツデータのパケットを迂回先候補の論理ネットワークに転送する割合を通知することにより、当該論理ネットワーク間接続用リンクを介してコンテンツデータの少なくとも一部を迂回先候補の論理ネットワークに迂回させる。その結果、論理ネットワーク構築装置200内の論理ノードは、構築された論理ネットワーク間接続用リンクを介して、通知された割合に従ってコンテンツデータを転送する。
ユーザ端末130は、一般の汎用コンピュータ装置であり、本実施形態で伝送経路制御の対象とするコンテンツデータの送受信を行う端末である。
コンテンツデータベース140は、一般のデータストレージ装置であり、データ転送の対象となるコンテンツデータを識別するコンテンツ識別子と、そのコンテンツ識別子で表されるコンテンツデータの伝送に必要なネットワークの帯域量との組を情報として格納する。この情報は通信品質管理装置120上の、本実施形態の伝送経路変更方法を実現するプログラムが利用する。
端末データベース150は、一般のデータストレージ装置であり、前記ユーザ端末130の識別子(IPアドレス)、そのユーザ端末130を物理的に収容している端末収容装置160の識別子(IPアドレス)、および、そのユーザ端末130と端末収容装置160とを接続しているVLAN回線の識別子(VLAN ID)の組を情報として格納する。この情報は通信品質管理装置120上の、本実施形態の伝送経路変更方法を実現するプログラムが利用する。
端末収容装置160は、1台以上のユーザ端末130を物理的に収容し、前記通信品質管理装置120からの指示に基づいて、各々のユーザ端末130をその論理的な収容先となる論理ネットワークに接続したり、あるいは、各々のユーザ端末130の収容先の論理ネットワークを変更する機能を有する装置である。本装置はVLAN回線を介してユーザ端末130と接続され、バックボーン回線を介してデータ転送装置110と接続される。簡単のため、本実施形態においてはバックボーン回線の数を1本とする。
以上が本発明の一実施の形態における伝送経路変更システムの物理構成の説明である。次に、前記のトランスポートネットワークの上に構築される論理ネットワークについて説明する。
<実施形態1:論理ネットワーク構成>
図4は、前記の論理ネットワーク構築装置200によってトランスポートネットワークの上に構築される論理ネットワークの概要を表した図である。1つの論理ネットワークは、仮想的なネットワークノードである論理ノード、端末収容装置、および、論理ノードどうし、あるいは、論理ノードと端末収容装置とを接続する論理リンク、によって構成される。
論理ノードは、1台の論理ネットワーク構築装置の上にソフトウェアによって生成される仮想的なネットワークノードである。図4の例で説明すると、論理ネットワーク1の論理ノード1から論理ノード4は、それぞれ論理ネットワーク構築装置200-1、200-3、200-4、200-5の上に生成されており(図4では、各論理ノードとそれを含む論理ネットワーク構築装置を点線で結んでいる)、論理ネットワーク2の論理ノード5から論理ノード7は、それぞれ論理ネットワーク構築装置200-1、200-2、200-3の上に生成されている。なお、簡単のため、本実施形態においては、1台の論理ネットワーク構築装置200の上に生成する論理ノードは論理ネットワーク毎に1つまでとする。すなわち、同一の論理ネットワークに属する複数の論理ノードが同一の論理ネットワーク構築装置の上に構築されることはないものとする。
論理リンクは、上記論理ネットワークにおける、2つの論理ノード、あるいは、1つの論理ノードと端末収容装置160とを接続するリンクである。論理リンクは、その両端の論理ノードが存在する論理ネットワーク構築装置200を結ぶトランスポートネットワークの経路の上、あるいは、論理ノードが存在する論理ネットワーク構築装置200とユーザ拠点100内の端末収容装置160とを結ぶ物理ネットワークの上に構築した仮想的なネットワークリンクとして実現される。
各論理リンクはそれぞれ個別に割り当てられた帯域リソースを持つ。この帯域リソースは他の論理ネットワークや自身が属する論理ネットワーク内の他の論理リンクのそれとは分離されており、ある論理リンクの帯域リソースの消費率が他の論理リンク上のトラヒックの影響を受けることはないものとする。
論理リンクの実現方法、および、論理リンクへの帯域リソース割り当ての実現方法については後述する。
ユーザ拠点100内の物理装置としての端末収容装置160は、1つ、あるいは、複数の論理ネットワークの中に論理的に属することができるものとする。図4の例では、ユーザ拠点100-1の端末収容装置160-1は、論理ネットワーク1内に端末収容装置160-1-1、論理ネットワーク2内に端末収容装置160-1-2として属する。同様に、ユーザ拠点100-2の端末収容装置160-2は、論理ネットワーク1内に端末収容装置160-2-1、論理ネットワーク2内に端末収容装置160-2-2として属し、ユーザ拠点100-3の端末収容装置160-3は、論理ネットワーク1内に端末収容装置160-3-1として属している。
以上が論理ネットワークの説明である。本実施形態では、異なるユーザ拠点100にあるユーザ端末130どうしは、この論理ネットワークを介してコンテンツデータのパケットの送受信を行う。
論理ネットワーク構築装置200については、前述のような論理ネットワークの重畳機能を有するものであれば既存技術の流用も可能である。本実施形態では非特許文献7に記載のシステムの流用を前提として、論理ネットワークの実現方法を説明する。
論理ネットワーク構築装置200、および、ユーザ拠点100内の端末収容装置160は、図2、および、図3に示したように、データ転送装置400によって構築されたトランスポートネットワークや物理リンクを介して物理的に相互接続されている。また、データ転送装置400は、リンクレイヤでのVLAN設定機能を有する。このような装置上で、これらの物理的な接続トポロジーに依存しない任意のトポロジーの論理ネットワークを構築し、かつ、相互に分離された帯域リソースの割り当てを実現するために、L2 VLANパス(以下、VLANパス)とGRE(Generic Routing Encapsulation)トンネル(例えば、非特許文献8、9を参照)を併用して論理ネットワークを構築する。
具体的には、VLANパスによって、トランスポートネットワークの物理的なトポロジーに関係なく、全ての論理ネットワーク構築装置200をフルメッシュ接続し、そのVLANパス上に1つ1つの論理リンクに対応したGREトンネルを構築する。そして、非特許文献10に記載のように、トランスポートネットワーク上でVLANパスに対して帯域を割り当て、さらに、VLANパスに対して割り当てた帯域を当該VLANパス上に構築する論理リンクに振り分ける。このような方法により、任意の論理ネットワーク構築装置200間を論理的に接続するリンクを構築でき、かつ、リンク毎に個別に帯域を割り当てることができる。なお、ユーザ拠点100内の端末収容装置160については、簡単のため、VLANパスを介して論理的に接続される直近の論理ネットワーク構築装置200は1台のみであるとする。
帯域割り当ての実現方法について、まずVLANパスへの帯域割り当ては、データ転送装置となる一般のスイッチやルータが有するL2 VLANへの帯域割り当て機能により実現する。なお、論理ネットワーク構築装置200とデータ転送装置400とを接続する物理リンク、および、ユーザ拠点100内の端末収容装置160とデータ転送装置110とを接続するバックボーン回線は当該装置によって占有されるため、これらの部分におけるVLANパスへの帯域割り当ては必須ではなく、本実施形態においても論理ネットワーク構築装置200と端末収容装置160にはVLANパスへの帯域割り当て機能は持たせていない。また、VLANパスに割り当てた帯域をそのVLANパス上の論理リンクへ振り分ける方法については、例えば非特許文献11に記載の方法が流用できる。
以上の概要を図5に示す。図中の各破線がトランスポートネットワーク上に構築した1本のVLANパスで(それぞれの破線はそれぞれ異なるVLAN IDを有するVLANである)、このようなVLANパスを複数用いて図のように全ての論理ネットワーク構築装置200を論理的にフルメッシュ接続している。そして、VLANパス上に、論理ネットワークに対応した論理リンクを実現するGREトンネルを構築している。これらにより、トポロジーが異なる論理ネットワーク1と論理ネットワーク2の2種類の論理ネットワークを構築している。
論理ネットワークにおける論理ノードについては、非特許文献7に記載の方法と同様に、論理ネットワーク構築装置内で動作するVM(Virtual Machine)として実現する。
<実施形態1:端末収容装置の構成および動作>
次に、端末収容装置160について説明する。端末収容装置160は、前記通信品質管理装置120からの指示に基づき、ユーザ端末130が属するVLANとトランスポートネットワーク上の論理ネットワークとの対応を管理して、各々のユーザ端末130をその論理的な収容先となる論理ネットワークに接続したり、あるいは、各々のユーザ端末130の収容先の論理ネットワークを変更する機能を有する。本実施形態における端末収容装置160は、特許文献1に記載の端末収容装置に対して、バックボーンインタフェース上に帯域分割割り当て機構、トラヒック通知部、IPヘッダ処理部、ICMP(Internet Control Message Protocol)処理部、および、入力パケット処理部内の制御通知処理部を追加し、さらに、可用帯域測定手段163の構成と可用帯域測定の方法に変更を施すことにより実現する。
端末収容装置160の構成を図6に示す(本実施形態においては簡単のため、バックボーン回線の数を1としている)。帯域分割割り当て機構は、非特許文献11に記載の方法により、バックボーン回線へのパケット出力時に各論理ネットワークに対応した論理リンク、すなわち、GREトンネルへの出力トラヒック量がそれぞれに割り当てられた帯域を超えないようにする処理を実施する。トラヒック通知部は、その内部に、時刻計測用のタイマーと、各論理リンクへの転送データ量の累積を記録する論理リンク毎の転送バイトカウンタを有し、これらの情報に基づいて各論理リンクの帯域使用量(出力トラヒック量)を通信品質管理装置120に対して定期的に通知する。この通知は物理的には、端末収容装置160のバックボーン回線からデータ転送装置110を経由して通信品質管理装置120へ通知される。この通信を実現するためにデータ転送装置110に施す具体的な設定については規定しない。IPヘッダ処理部、ICMP処理部、および、制御通知処理部の機能は後述のパケット転送手段におけるものと同一であり、詳細は後述する。
また、可用帯域測定手段163は、通信品質管理装置120から指定された、ある論理ネットワークに属する論理ノードや自端末収容装置160以外の端末収容装置160との間の、当該論理ネットワークにおける可用帯域を測定し、測定した可用帯域の値を通信品質管理装置120に通知する機能を有する。可用帯域測定手段163の構成と同手段における可用帯域測定方法についても特許文献1に記載の端末収容装置から変更を施しているが、同手段の構成や測定方法はパケット転送手段におけるものと同一であるため詳細は後述する。
図7は、特許文献1の実施形態に記載の端末収容装置における収容ネットワーク変更手段161の一部分を抜粋した図である。VLAN管理表は、ユーザ端末を収容する各VLAN回線を識別するVLANインタフェースID、当該VLAN回線で使用されているVLANのID(VLANがポートVLANの手法で実現されていることを前提としている)、および、そのVLANに対して割り当てられているIPネットワークアドレス(サブネットワークアドレス)の対応を保持する。収容ネットワーク管理表は、前記、各VLAN回線で使用されているVLANのIDと、そのVLANを収容する論理ネットワークのIDリスト(1つのVLANを複数の論理ネットワークに収容することもできる)を格納する表で、これにより、各ユーザ端末を収容する論理ネットワークを制御、管理する。
論理ネットワーク接続管理表は、各論理ネットワークに対応する論理リンクの識別子であるGREキー(例えば、非特許文献9を参照)を管理する表である。前述のように、端末収容装置160がVLANパスによって論理的に接続される直近の論理ネットワーク構築装置200は1台のみであり、また、同じく前述のように1台の論理ネットワーク構築装置200の上に生成する論理ノードは論理ネットワーク毎に1つまでであることから、1台の端末収容装置160と論理ネットワークとを接続する論理リンクは、論理ネットワーク毎に1本に限定される。よって、論理ネットワークIDと、その論理ネットワークとの通信に使われる論理リンクのGREキーとの対応は1対1であり、論理ネットワーク接続管理表はこの対応を管理する。
図7に示すように、端末収容装置160はユーザ端末から自身のアドレス宛ではないパケットを受信すると、そのパケットを送出したユーザ端末が属するVLAN IDを識別する。そして、次に収容ネットワーク管理表を参照し、当該VLANを収容している論理ネットワークのIDを特定する(複数の論理ネットワークに属するVLANからのパケットをユーザ端末から受信した場合はエラー処理とする)。この論理ネットワークIDを特定すると、論理ネットワーク接続管理表を参照して当該論理ネットワークIDに対応するGREキーの値を得、GREキーに対応するGREトンネル(論理リンク)を使ってパケットをトランスポートネットワーク上の当該論理ネットワークへ送信する。
また、図8に示すように、端末収容装置160はトランスポートネットワーク上の論理ネットワークからパケットを受信すると、論理ネットワーク接続管理表を用いて、そのパケットのGREヘッダ中のGREキーの値に対応する論理ネットワークIDを特定する。
さらに、VLAN管理表を用いて、受信したパケットのGREのペイロードパケットの宛先IPアドレスに対応するVLAN IDを特定し、次に収容ネットワーク管理表を用いて、当該VLAN IDを収容している論理ネットワークのIDのリストを特定する。
ここで、論理ネットワーク接続管理表を用いて特定した論理ネットワークIDが、収容ネットワーク管理表を用いて特定した論理ネットワークIDリストの中に含まれていた場合、受信したパケットは当該ユーザ端末が属するVLANを収容している論理ネットワークから送信されてきたものと解釈し、当該パケットのうちのGREのペイロード部分を宛先のユーザ端末へ送信する(上記のペイロードパケットの宛先IPアドレスが自身のIPアドレスの場合は、宛先のポート番号に基づいて自装置内の然るべき手段に転送する)。
論理ネットワーク接続管理表を用いて特定した論理ネットワークIDが、収容ネットワーク管理表を用いて特定した論理ネットワークIDリストの中に含まれていない場合は、宛先のユーザ端末が属するVLANを収容していない論理ネットワークから誤って届いたパケットと解釈し、当該パケットを廃棄する。
本実施形態における端末収容装置の使用方法の概要を図9に示す。ある送信端末と受信端末との間でコンテンツデータの伝送を行う場合、受信端末を収容している端末収容装置160は、端末間でのコンテンツデータの伝送開始前に、通信品質管理装置120からの指示により、自身が接続されている全ての論理ネットワーク(図9の例では論理ネットワーク1、3、4)に当該受信端末を収容する。そして、経路設定管理手段162の機能により、当該受信端末が属するサブネットワークの経路情報をIP経路制御プロトコルによってそれぞれの論理ネットワークへ広報する。このようにコンテンツデータの伝送開始前にあらかじめ当該受信端末への経路情報を各論理ネットワークへ広報しておくことにより、コンテンツデータ伝送開始後の可用帯域測定(後述)やコンテンツデータのパケット転送を迅速に実行できる。
なお、上記のIP経路制御プロトコルはそれぞれの論理ネットワーク内に閉じて動作する。したがって、論理ネットワーク内の論理リンクに付与するサブネットアドレスについては、異なる論理ネットワーク間で重複するサブネットワークアドレスを使用することができる(論理ネットワーク間接続用リンクに付与するサブネットアドレスについては後述する)。ただし、ユーザ端末を収容しているサブネットワークについては物理的なサブネットワークに付与されているサブネットアドレスをそのまま各論理ネットワークへ広報する。したがって、全ての論理ネットワークにおける全てのサブネットアドレスは、ユーザ端末を収容するいずれのサブネットアドレスとも重複させてはならない。
また、送信端末を収容している端末収容装置160は、端末間でのコンテンツデータの伝送開始前に、通信品質管理装置120からの指示により、送信側の端末収容装置と受信側の端末収容装置の両方を含む論理ネットワークのうちの1つ(図中の論理ネットワーク1)に当該送信端末を収容する。そして、コンテンツデータの伝送開始後は、通信品質管理装置120からの指示によって上記送信端末を随時他の論理ネットワークへ収容変更する。
以上が、端末収容装置160、および、図9を用いた端末収容装置160の使用方法の説明である。
<実施形態1:各種制御のための通信>
次に、コンテンツデータの伝送以外の各種制御のための通信を実現する方法について説明する。
本実施形態における制御用の通信路は、非特許文献12に記載の6プレーンモデルに基づき、制御の対象や目的毎に構築したVLANを、トランスポートネットワーク、トランスポートネットワークとユーザ拠点を接続する物理リンク、および、ユーザ拠点内の物理回線上に構築することで実現する。具体的には図10に示すように、制御インタフェースVLAN、論理ネットワーク構築装置制御VLAN、論理ノード制御VLAN、および、端末収容装置制御VLAN、の4種類のVLANを構築する。
制御インタフェースVLANは、通信品質管理装置120と論理ネットワーク制御装置300とを接続するVLANであり、上記の非特許文献12に記載のY-Planeに相当する。本実施形態では、通信品質管理装置120はこのVLANを介して、論理ネットワーク制御装置300に対し、論理ネットワークのトポロジー情報の要求や、論理ネットワーク間接続用リンクの設定/削除の依頼を行う。また、論理ネットワーク制御装置300はこのVLANを介して、通信品質管理装置120に対し、要求された論理ネットワークのトポロジー情報を送信する。
なお、本実施形態における論理ネットワーク制御装置300は、非特許文献12に記載のDC(Domain Controller)に相当する装置で、同文献に記載のDCの処理機能に対し、本実施形態による論理ネットワーク間接続用リンクの設定/削除の依頼を処理する機能を追加することにより実現できる。
論理ネットワーク構築装置制御VLANは、論理ネットワーク制御装置300と全ての論理ネットワーク構築装置200を接続するVLANであり、非特許文献12に記載のM-Planeに相当する。論理ネットワーク制御装置300はこのVLANを介して、論理ネットワーク構築装置200に対し、論理ネットワークの構築/削除、あるいは、論理ネットワーク間通信用リンクの設定/削除の指示を行う。
論理ノード制御VLANは、通信品質管理装置120と全ての論理ネットワーク内の全ての論理ノードとを接続するVLANであり、非特許文献12に記載のZ-Planeに相当する。本実施形態では、通信品質管理装置120はこのVLANを介して、各論理ノード内のパケット転送手段(後述)に対し、パケット転送方法に関する指示や経路・トラヒック情報要求を送信する。また、各論理ノード内のパケット転送手段はこのVLANを介して、通信品質管理装置120に対し、各論理リンクへの出力トラヒック量を定期的に通知するとともに、上記の経路・トラヒック情報要求に対する結果通知を送信する。
端末収容装置制御VLANは、特許文献1に記載の管理用論理ネットワークに相当する機能、すなわち、通信品質管理装置120と全ての端末収容装置160とを接続する機能を実現する。本実施形態では、特許文献1と異なり、通信品質管理装置120と端末収容装置160との接続に論理ネットワークではなく上記のVLANを用い、また、通信品質管理装置120を、端末収容装置160のVLAN回線側に収容せずバックボーン回線を経由して端末収容装置160と接続しているが、実現される機能は同じである。通信品質管理装置120はこのVLANを介して、端末収容装置160に対し、特許文献1に記載の方法でユーザ端末の収容先となる論理ネットワークの指定/変更の指示を行う。また、端末収容装置160から定期的に送信されてくるトラヒック通知をこのVLANを介して受信する。
以上がコンテンツデータの伝送以外の各種制御のための通信を実現する方法についての説明である。なお、論理ネットワーク構築装置200が論理ネットワーク構築装置制御VLAN、および、論理ノード制御VLANをその内部で収容する方法は、非特許文献12に記載のVNodeが前述のM-Plane、および、Z-Planeをその内部で収容する方法によればよく、その方法は同文献に記載の通りである。
<実施形態1:パケット転送に関する機能>
次に、各論理ネットワーク内のパケット転送を行うパケット転送手段について説明する。パケット転送手段は前述の、各論理ノードを実現するVM内のアプリケーション層で動作するソフトウェアとして実現する。
パケット転送手段のモジュール構成を図11に示す。図中の仮想NIC(Network Interface Card)は当該論理ノードを実現しているVMが有する仮想的なネットワークインタフェースで、一般のVMが実装しているものである。本実施形態のパケット転送手段では、当該論理ネットワーク内の論理リンクにつながる論理ネットワーク内通信用、論理ネットワーク間接続リンクにつながる論理ネットワーク間通信用、および、前述の論理ノード制御VLANにつながる外部通信用、の3種類の仮想NICが存在するが、ネットワークインタフェースとしての機能はどれも同じである。
各論理ノードのVMの生成時には、論理ネットワーク内通信用NICとして使用する仮想NICを、論理ネットワークのトポロジーによって定まる、その論理ノードが有する論理リンクの数だけ生成する。また、外部通信用NICとして使用する仮想NICを1つ生成する。論理ネットワーク間接続用NICとして使用する仮想NICは、システムが許容する数に応じて生成する。
後述するように、論理ネットワーク間接続リンクは通信品質管理装置120によって動的に構築、削除されるものであるため、論理ネットワーク間通信用の各仮想NICが接続される論理ネットワーク間接続用リンクは動的に変化する。これに対し、論理ネットワーク内通信用NICが接続される論理リンクは固定である。
パケット転送手段は以下の4つの機能を有する。
(1)論理ネットワーク内パケット転送:通信品質管理装置120からの指示に基づいて、1つのフローに属するパケット群のうち指示された割合のパケット群を、論理ノードが属する論理ネットワーク内で稼働するIP経路制御プロトコルによって構築されたパケット転送表によって決定される論理ネットワーク内の次段の論理ノードに対して論理リンクを介してパケットを転送する機能である。
(2)論理ネットワーク間パケット転送:通信品質管理装置120から指示された割合のパケット群を、論理ネットワーク間接続リンクを介して異なる論理ネットワークに属する論理ノードに対してパケットを転送する機能である。
(3)各論理リンクへの出力トラヒック量の通知:論理ノード内の各論理リンクと各論理ネットワーク間接続リンクについて、それらのリンクが持つ帯域幅の値とそれらのリンクから送出した全てのフローのデータのビットレートを一定時間おきに通信品質管理装置120に対して通知する機能である。
(4)パケット転送経路に沿った可用帯域の測定と通知:論理ノードが属する論理ネットワークと同じ論理ネットワークに属する、通信品質管理装置120から指定された論理ノードあるいは端末収容装置との間の可用帯域を測定し、測定した可用帯域の値を通信品質管理装置120に通知する機能である。
パケット転送手段は、通常は自身が属する論理ノードを含む論理ネットワーク内でのパケット転送を実行する。すなわち、ある論理ネットワーク内通信用NICから入力したパケットの宛先IPアドレスを参照し、自身が有するIP経路表に基づいて、出力先となる別の論理ネットワーク内通信用NICを決定し、パケットを出力する動作を実行する。これが上記(1)の機能である。
また、通信品質管理装置120からの指示に基づき、論理ネットワーク間接続リンクを介して、自身が属する論理ネットワークとは異なる論理ネットワークとの間でパケットを送受信することもできる。これが上記(2)の機能である。
上記(1)におけるパケット転送手段の処理の概要を、図11を用いて説明する。図のフレーム傍受部は、当該仮想NIC宛てに届いた、その仮想NICのMACアドレスを宛先にもつリンクレイヤのフレームを、OSのカーネルから、アプリケーション層で動作するパケット転送手段の入力処理部に転送するモジュールである。これにより、当該フレームのペイロードに含まれるIPパケットの宛先アドレスがその仮想NICのIPアドレスでない場合でも、当該パケットをアプリケーション層で動作するパケット転送手段に渡し、同手段を通常のIPルータのように動作させることができる。フレーム傍受部の実装方法はOSの種類に依存するため本実施形態では規定しない。また、多くのOSではOS自体がパケット転送機能を持つが、本実施形態ではOSが持つパケット転送機能を停止し、パケット転送は本実施形態のパケット転送手段だけが行うようにする。
フレーム傍受部からフレームを受信した入力処理部は、図12に示すように、フレームのペイロード部分の内容を参照し、IPパケットであれば、リンクレイヤのヘッダを除去してIPヘッダの検査(破壊検査や内容整合検査などの、通常のIPルータで行われるものと同様の検査)を行ったのち、当該パケットを転送方法検査部へ転送する。上記ペイロード部分の内容がIPパケット以外の場合については、例えばARP queryパケットやARP replyパケットの場合などが考えられるが、通常のIPルータと同様の処理を行えばよく本実施形態の説明には関係しないので、記載を省略する。
図11の転送方法検査部では、フロー識別ハッシュ表を用いて、当該パケットを異なる論理ネットワークへ転送する必要があるか否かを検査する。フロー識別ハッシュ表は、当該パケットが属するフローを識別するためのヘッダ情報(フローを特定するヘッダ情報として、送信元/宛先のIPアドレス、送信元/宛先のポート番号、プロトコル番号、の5つの組み合わせである5-tupleが用いられることが多い。本実施形態でも5-tupleの組み合わせを用いることもできるが、簡単のため、以下ではパケットの宛先IPアドレスと宛先ポート番号との対を用いる)をキーとするハッシュ表である。入力キーがハッシュ表に登録されていれば、上記のIPアドレスとポート番号によって定まるフローに割り振られたフローIDの値を出力し、これにより当該パケットを異なる論理ネットワークへ転送する必要があることを示す。また、入力キーがハッシュ表に登録されていなければミスヒットを示す値を出力し、当該パケットを異なる論理ネットワークへ転送する必要がないことを示す。キーの登録や削除は通信品質管理装置120からの指示に基づき実施する。詳細は後述する。
フロー識別ハッシュ表の出力値がミスヒット、すなわち、異なる論理ネットワークへのパケット転送が必要なければ、図13に示すように、当該パケットを論理ネットワーク内パケット転送部へ転送した後、パケットの宛先IPアドレスを参照し、IP経路表に基づいて、出力先となる論理ネットワーク内通信用NICを決定し、当該NICに対応する出力処理部へパケットを転送する。出力処理部の構成と処理内容は後述する。なお、このIP経路表は、一般のIPルータが有するそれと同じもので、当該パケット転送手段と同じ論理ノード内で動作するIPルーティングプロトコルによって内容を生成、維持する(IPルーティングプロトコルを動作させるソフトウェアとパケット転送手段とを連動させる具体的な方法について、本実施形態では規定しない)。
一方、フロー識別ハッシュ表の出力値がミスヒットでない場合、すなわち、異なる論理ネットワークへのパケット転送が必要な場合は、ハッシュ表の出力値であるフローIDの値をキーとして論理ネットワーク間パケット転送表を検索し、当該パケットの転送方法を調べる。
論理ネットワーク間パケット転送表は図14に示す構造をしており、前記フローID毎に、当該フローのパケット群をどのような割合で、どの出力先に、どのような処理を施して転送するかを記述したエントリ群を持つ。それぞれのパケットは、前記フローIDと、フロー毎のパケットカウンタ(後述)の値との組み合わせによって一意に定まるエントリに記載された内容に従って転送処理される。
各エントリの最初のフィールドである「パケットカウンタ値」は、転送方法検査部の当該フローのパケットカウンタの値がFromに示した値以上、Toに示した値以下である場合に、当該パケットをこのエントリの内容に沿って処理することを示すフィールドである。
操作種別フィールドは、論理ネットワーク内での転送であるか、異なる論理ネットワークへの転送であるかの区別を表す。特に後者の場合は、当該パケットを他の論理ネットワークへ迂回する処理であるか、迂回先の論理ネットワークから元の論理ネットワークへ戻す処理であるかの区別を表す(動作上、このフィールドは必須ではない)。
転送先フィールドは、当該パケットの転送先を示す。操作種別フィールドで「論理ネットワーク内転送」が指定されている場合、パケットは自パケット転送手段内の論理ネットワーク内パケット転送部へ転送される。そして、図13の場合と同様に、IP経路表に基づいて適切な論理ネットワーク内通信用の仮想NICに対応した出力処理部へ転送される。操作種別フィールドで他の論理ネットワークへの「迂回」や迂回元の論理ネットワークへの「戻し」が指定されている場合は、然るべき論理ネットワーク間接続リンクにつながる論理ネットワーク間通信用の仮想NICに対応した出力処理部へ転送される。
Next hopフィールドは、当該パケットを異なる論理ネットワークへ転送する場合に、論理ネットワーク間接続リンクの対向に存在する論理ノードの仮想NICのIPアドレス、すなわち、IPルーティングにおけるNext hopアドレスを保持する(通信品質管理装置120は、この仮想NICのアドレスを情報として保持しているものとする。これを実現する方法は本実施形態では規定しない)。このNext hopアドレスは、自パケット転送手段の、当該パケットの出力先となる仮想NICに対応する出力処理部において、Next hopとなる仮想NICのリンクレイヤアドレスを得るためのARP query処理の実行時に使用される。なお、パケット転送手段がパケットを同一の論理ネットワークへ転送する場合は、一般のIPルータの場合と同様に、論理ネットワーク内パケット転送部のIP経路表が有するNext hopの値を使うことができるため、Next hopフィールドに値は記載しない。
新規ヘッダフィールドは、当該パケットを異なる論理ネットワークへ転送する場合で、宛先IPアドレスと宛先ポート番号の書き換え操作を伴う場合(後述)に、当該目的のために使用する値を保持するフィールドである。
以上述べた論理ネットワーク間パケット転送表の内容は、通信品質管理装置120からの指示に基づき更新する。詳細は後述する。
異なる論理ネットワークへの転送を含む場合のパケット転送手段の処理の概要を図15に示す。転送方法検査部のフロー識別ハッシュ表を参照した結果、出力値がミスヒットを表す値でなければ、ハッシュ表の出力値であるフローIDの値をキーとして論理ネットワーク間パケット転送表を参照し、該当するエントリ群を抽出する。そして、当該パケットが属するフローに該当するパケットカウンタの現在の値を参照し、フローIDから抽出したエントリ群のうち、上記のパケットカウンタの値がパケットカウンタ値フィールドのFromからToの範囲内に含まれるエントリを見つけ(一意に定まる)、そのエントリ内に記載された処理を実行する。
上記のパケットカウンタは、論理ネットワーク間転送を行っているフロー毎に存在するカウンタである。当該フローに属するパケットを1つ転送処理するたびに値が1つずつインクリメントされ、値は0から99を周回する。各フローに対応するパケットカウンタは、パケット転送手段が通信品質管理装置120から当該フローの新規迂回通知(後述)を受信した際に作成し、通信品質管理装置120から当該フローの迂回取り消し通知(後述)を受信した際に削除される、ソフトウェアによるパケットカウンタである。本実施形態ではそのデータ構造については規定しない。
このようなフロー毎のパケットカウンタと、論理ネットワーク間パケット転送表のパケットカウンタ値フィールドを組み合わせて、当該フローのパケット群を、複数の出力先に所望の割合で転送する。図14の例で説明すると、最初のフローIDに相当するフローのパケット群について、パケットカウンタの値が0から49までの間は最初のエントリにしたがって他の論理ネットワークへ転送し、パケットカウンタの値が50から99までの間は同じ論理ネットワーク内に転送している。すなわち、当該フローのパケット群の半数を他の論理ネットワークへ迂回している。2番目と3番目のフローIDに相当するフローのパケット群は、その全てを異なる論理ネットワークへ転送している。4番目のフローIDに該当するフローのパケット群は、複数の、元の論理ネットワークとは異なる論理ネットワークへ転送し、残りを同じ論理ネットワーク内に転送している。
通信品質管理装置120は、論理ネットワーク内のトラヒックの状況に応じて、適切なパケット転送手段に対し、前述のフロー識別ハッシュ表や論理ネットワーク間パケット転送表の内容変更を指示することで、トラヒックの配信経路を変更し輻輳回避を実行する。
通信品質管理装置120からパケット転送手段への上記の指示は、新規迂回通知、迂回方法変更通知、迂回取り消し通知、の3種類が存在する。これらの通知は、論理ノード制御用VLAN上で、通信品質管理装置120から、当該パケット転送手段の外部通信用仮想NICのIPアドレス宛に送信される。当該パケット転送手段の制御通信処理部は、ソケットインタフェースを介してこれらを受信する。そして、受信した通知がこれらの3種類のいずれかであることを識別すると、受信した通知を転送方法検査部へ転送する。これらの通知の内容と、これらを受信した転送方法検査部が実施する処理の内容を図16に示す。
新規迂回通知は、制御の対象となるフローの識別子である宛先IPアドレスと宛先ポート番号の組、および、当該フローのパケットの転送方法を指定したエントリ群をその内容に含む。このエントリ群は、図14に示した論理ネットワーク間パケット転送表のエントリ群に相当するものである。この通知を受信した転送方法検査部は、受信したフロー識別子をキーとするハッシュエントリをフロー識別ハッシュ表に挿入する。そして、論理ネットワーク間パケット転送表に対し、上記のハッシュエントリ挿入時にハッシュ関数によって当該フローに新規に割り当てられたフローIDと、新規迂回通知によって通知されたエントリ群とから成る組を追加する。以上の処理により、当該フローのパケット群の当該パケット転送手段における迂回処理(異なる論理ネットワークへの転送処理)が実現される。
迂回方法変更通知は、新規迂回通知と同様の内容を含む。この通知を受信した転送方法検査部は、受信したフロー識別子をキーとしてフロー識別ハッシュ表を検索し、出力として得られるフローIDに対応する論理ネットワーク間パケット転送表のエントリ群を、受信した通知内のエントリ群で置き換える。以上の処理により、当該フローのパケット群の当該パケット転送手段における転送方法が変更される。
迂回取り消し通知は、制御の対象となるフローの識別子のみをその内容に含む。この通知を受信した転送方法検査部は、受信したフロー識別子をキーとしてフロー識別ハッシュ表を検索し、出力として得られるフローIDに対応する論理ネットワーク間パケット転送表のエントリ群を削除する。さらに、フロー識別ハッシュ表から、当該キーとフローIDの組から成るハッシュエントリを削除する。以上の処理により、当該フローのパケット群の当該パケット転送手段における迂回処理が削除され、これ以降、論理ネットワーク内転送だけが行われるようになる。以上が、パケット転送手段におけるパケット転送機能の実現方法である。
図17と図18は、論理ネットワーク間パケット転送を輻輳回避処理へ適用する際の、基本的な適用形態を示した図である。
本実施形態では、あるフローのパケット群の全部、あるいは、一部を他の論理ネットワークへ転送する場合、異なる論理ネットワークへ転送したパケット群を元の論理ネットワークへ戻すことを想定する場合と想定しない場合の、2つの場合が存在する。図17は、元の論理ネットワークへ戻す場合の論理ネットワーク間パケット転送の概要である。論理ネットワーク1内のパケット転送手段1が、論理ネットワーク1を介した送信端末と受信端末間のデータ転送パケットの一部を、論理ネットワーク間接続リンクを介して論理ネットワーク2内のパケット転送手段2へ転送し、論理ネットワーク2内のパケット転送手段3は、論理ネットワーク2へ転送されてきたパケットの全てを、論理ネットワーク間接続リンクを介してパケット転送手段4へ転送している。すなわち、論理ネットワーク1内のパケット転送手段1とパケット転送手段4の間の区間で発生した輻輳を、論理ネットワーク2を使って回避した後、元の論理ネットワーク1へ戻す例である。
パケット転送手段1は、受信した論理ネットワーク1内の当該トラヒックのパケットについて、論理ネットワーク1内で転送するものについてはIP経路表が示す出力インタフェースへそのまま出力する。しかし、論理ネットワーク2へ転送するものについては、その宛先IPアドレスを、迂回先の論理ネットワーク2におけるパケット転送の末端となるパケット転送手段3が有するIPアドレスのうちの1つ(代表IPアドレスと呼ぶ)に書き換え、また、宛先ポート番号を異なる新規の番号に書き換えたのち、パケット転送手段2へつながる論理ネットワーク間接続リンクへ出力する。
この書き換えにより、論理ネットワーク2へ転送されたパケットを、その内部で稼働するIPルーティングプロトコルによって確立されたパケット転送経路に従って、パケット転送手段2からパケット転送手段3まで転送することが可能となる。すなわち、論理ネットワーク2の内部において、パケットの転送パス等を新たに設定する操作は必要ない。
ここで、宛先IPアドレスだけではなく宛先ポート番号を書き換える理由について、図19を用いて説明する。本実施形態の輻輳回避制御においては、あるコンテンツデータのトラヒックの迂回処理を繰り返し実行していく中で、異なる迂回元(論理ノード、あるいは、論理ネットワーク)からのパケット群が同じ論理ネットワークの論理リンクを共有することが起こり得る。図19の例は、論理ネットワーク0の2箇所の論理ノード(論理ノードAとB)で迂回したあるコンテンツデータのパケット群が、論理ネットワーク1の論理リンクの一部(論理ノード2、3、4を結ぶ論理リンク)を共有する様子を示している。
同図では、論理ネットワーク0の論理ノードAからの迂回パケット群を論理ノード6から迂回元に戻し、また、論理ネットワーク0の論理ノードBからの迂回パケット群を論理ノード5から迂回元に戻しているが、論理ネットワーク1上のパケット転送手段においてこのような異なる転送処理を実施するには、これら2つのパケット群を、それらの宛先IPアドレスによらず常に異なるフローに属するパケットとする必要がある。これが、他の論理ネットワークへの迂回時に随時異なる番号を割り当てて宛先ポート番号の書き換えを実施する理由の1つ目である。
また、本実施形態においては、アルゴリズムの簡略化のため、輻輳検出と輻輳回避の制御を実際の論理ネットワークを単位に実行するのではなく、1回の迂回操作によって論理ネットワークを移動したパケット群に個別に着目し、それらを単位として実行する。図19の例では、まず論理ネットワーク0から1への迂回が発生していない初期状態において、論理ネットワーク0上のパケット群の伝送経路上での輻輳検出と輻輳回避処理を実施し、その結果、同図のような論理ノードA、Bの2箇所からの論理ネットワーク1への迂回が発生したものとして、次は論理ネットワーク1を流れる上記の2つの迂回トラヒックをまとめて扱うのではなく、論理ノードAから迂回されてきたパケット群について、その伝送経路(論理ノード1、2、3、4、6から成る経路)上での輻輳検出と輻輳回避処理を実施し、さらに、論理ノードBから迂回されてきたパケット群について、その伝送経路(論理ノード2、3、4、5から成る経路)上での輻輳検出と輻輳回避処理を実施する。迂回元が異なるパケット群を上記のようにそれぞれ個別に処理するためには、それぞれのパケット群の転送制御(迂回処理)を別々に実施できるようにする必要があり、そのために宛先ポート番号の書き換えを実施する。これが、宛先ポート番号の書き換えを実施する理由の2つ目である。
以上の2つが、論理ネットワーク間での迂回処理の際にパケットの宛先ポート番号を書き換える理由である。なお、新規に割り当てるポート番号を決定する方法については本実施形態では規定しない。
なお、このような、1回の迂回操作によって新しいポート番号を与えられ独立したフローとなったパケット群から成るフローと、そのパケット群の迂回先の論理ネットワークにおける伝送経路からなる当該論理ネットワークの部分ネットワークとの組を、以降ではフローセグメントと呼ぶ。図19の例では、フロー2と、論理ノード1、2、3、4、6およびそれらを接続する論理リンクから成る部分ネットワークの組が1つのフローセグメントであり、さらに、フロー3と、論理ノード2、3、4、5およびそれらを接続する論理リンクから成る部分ネットワークとの組も1つのフローセグメントである。なお、以降の説明における簡便性のため、コンテンツの送信端末を収容する端末収容装置160から送信されているパケット群から成るフローとその伝送経路からなる論理ネットワークの部分ネットワークとの組もフローセグメントと呼ぶことにする。以降の説明では、フローセグメントNを構成するフローを表すためにF(N)という表記を用いる。
図17のパケット転送手段1と3の上記の動作は、通信品質管理装置120がこれらのパケット転送手段のフロー識別ハッシュ表と論理ネットワーク間パケット転送表の内容を制御することで実現する。具体的には、パケット転送手段1に対して、受信端末のIPアドレスと受信アプリケーションのポート番号の組をフローIDとし、転送先フィールドに論理ネットワーク内パケット転送部を記載したエントリと、転送先フィールドにパケット転送手段2とつながる論理ネットワーク間接続リンクに対応する仮想NIC番号を記載し、新規ヘッダフィールドにパケット転送手段3の代表IPアドレスと新規ポート番号を記載したエントリの、2つのエントリを有する新規迂回通知を送信する。また、パケット転送手段3に対しては、パケット転送手段3の代表IPアドレスと新規ポート番号の組をフローIDとし、転送先フィールドにパケット転送手段4とつながる論理ネットワーク間接続リンクに対応する仮想NIC番号を、新規ヘッダフィールドに受信端末のIPアドレスと受信アプリケーションのポート番号を記載したエントリを有する新規迂回通知を送信する。
なお、パケット転送手段2、および、4は論理ネットワーク内パケット転送部のIP経路表に従ってパケット転送を行うだけでよいため、これらのパケット転送手段の制御は必要ない。
次に、図18は、異なる論理ネットワークへ転送したパケット群を元の論理ネットワークへ戻さずそのまま受信端末へ転送する場合の概要である。図のように迂回先である論理ネットワークが受信側の端末収容装置160に至るまでの経路を有している場合はこのような転送方法をとることができる。
図9の説明で述べたように、受信端末は端末収容装置160によって事前に論理ネットワーク2へ収容されているため、論理ネットワーク2内の全てのパケット転送手段は受信端末が属するサブネットワークへの経路情報をIP経路表の中に有している。しかし、前述のように論理ネットワーク1から2へのパケット転送時には宛先ポート番号を書き換える必要があり、また、書き換えた宛先ポート番号はパケットが端末収容装置160へ届く前に元に戻す必要がある。そのため、論理ネットワーク1のパケット転送手段1は、論理ネットワーク2のパケット転送手段2へのパケット転送の際に、宛先ポート番号を書き換えると同時に、宛先IPアドレスを、論理ネットワーク2内の、端末収容装置160に直結されたパケット転送手段の代表IPアドレス(図ではパケット転送手段3の代表IPアドレス)に書き換え、このパケットを受信したパケット転送手段3に宛先ポート番号を元に戻す処理を行わせる。
図18のパケット転送手段1の上記の動作を実現させる方法は図17の場合と同様である。パケット転送手段3については、パケット転送手段3の代表IPアドレスと新規ポート番号の組をフローIDとし、転送先フィールドに論理ネットワーク内パケット転送部を、新規ヘッダフィールドに受信端末のIPアドレスと受信アプリケーションのポート番号を記載したエントリを有する新規迂回通知を、通信品質管理装置120から送信する。
本実施形態では、このような論理ネットワーク間でのパケット転送を組み合わせて論理ネットワーク内で発生する輻輳を回避する制御を実行する。なお、論理ネットワーク間接続リンクを介したパケット転送について、別の論理ネットワークから論理ネットワーク間接続リンクを介して受信したパケットを、同じパケット転送手段における別の論理ネットワーク間接続リンクを介してそのままさらに他の論理ネットワークへ転送してもよい。この場合も、図17、または、図18のいずれかの制御を実行する。
次に、図20を用いて、論理ネットワーク間接続リンクの詳細を説明する。論理ネットワーク間接続リンクは、同一の論理ネットワーク構築装置200上にある、異なる論理ネットワークに属する論理ノードの仮想NICどうしを、その論理ネットワーク構築装置200の内部で論理的に接続することで実現する。本実施形態における論理ネットワーク構築装置200の実現方法として流用している非特許文献7のシステムはその内部に仮想OpenFlowスイッチ(ソフトウェアで実現したOpenFlowスイッチ)を有しており(例えば、非特許文献12を参照)、例えばこのようなスイッチを用いて上述の仮想NICどうしの内部接続を実現できる。
接続する仮想NICの組み合わせは状況に応じて変わるため、異なる論理ネットワークに属するどの仮想NICどうしが1本のリンクとして接続されても良いように、全ての仮想NICは同一のIPサブネットアドレスに属するIPアドレスを持つ必要がある。したがって、論理ネットワーク間接続用の仮想NICには、論理ノードを生成した時点であらかじめ、同一のIPサブネットアドレスに属し、かつ、互いに異なるIPアドレスを付与しておく。なお、前述のように、論理ノードを実現するVMのOSが有するパケット転送機能は停止させるため、上記のように、1つのOSの配下の複数の仮想NICが同じIPサブネットアドレスに属するIPアドレスの付与を行っても問題はない。
なお、それぞれの論理ネットワーク間通信用仮想NICと仮想OpenFlowスイッチを接続する論理的なリンクに対して、論理ネットワーク内の論理ノード間を接続する論理リンクの場合と同様に、互いに分離された固定の帯域リソースを割り当てる。仮想OpenFlowスイッチはそれらの帯域リソースの総和に相当する量のデータのスイッチングを実行する十分な性能を有するものとする。
以上が、パケット転送手段におけるパケット転送機能に関する説明である。次に、パケット転送手段の前述の機能(3)、各論理リンクへの出力トラヒック量の通知機能について説明する。
図21は、パケット転送手段の各仮想NICに対応する出力処理部の構成を示す図である。出力処理部におけるトラヒック通知部は、当該仮想NICを介して出力された、フローを区別しない全てのパケットのデータ量(バイト数)の合計値を保持する転送バイトカウンタと、時間計測のためのタイマーを有する。パケット転送手段は出力処理部からパケットを出力するたびに、この転送バイトカウンタの値に当該パケットのバイト数を足し合わせる。そして、タイマーで計測した一定時間間隔毎に、その間の転送バイトカウンタの値の増分を計算し、それを当該時間間隔で割った値をその間における当該仮想NICの出力ビットレートとする。そして、このようにして算出した出力ビットレートの値と、対応する仮想NICに繋がる論理リンクに割り当てられている出力方向の帯域値とを、論理ノード制御VLANを使って外部通信用仮想NIC経由で通信品質管理装置120に通知する(なお、転送バイトカウンタの値の更新時に桁あふれが生じた場合は上記通知をスキップするものとする)。
上記の値の通知は、論理ネットワーク内の論理ノード間を結ぶ論理リンク、および、論理ネットワーク間接続用リンクの両者について行う。論理ネットワーク間接続用リンクの場合は、図20の説明において述べた、論理ネットワーク間通信用仮想NICと仮想OpenFlowスイッチとを接続するリンクに割り当てられている帯域リソースの量を、当該リンクに割り当てられている出力方向の帯域値として通知する。
出力処理部から通知される上記の値は、通信品質管理装置120において、論理ネットワーク内での輻輳検出、輻輳時に他の論理ネットワークへ迂回する必要があるデータ量の算出、および、パケットの迂回経路に沿った可用帯域の算出、のために用いられる。通信品質管理装置120がこれらを実行する方法の詳細は後述する。また、図21のその他の部分については後述する。
次に、パケット転送手段の機能(4)、すなわち、パケット転送経路に沿った可用帯域の測定と通知機能について説明する。図17、および、図18の説明で述べたように、トラヒックの迂回先の論理ネットワーク内では、別の論理ネットワークから転送されてきたパケットは、迂回先の論理ネットワーク内で動作するIP経路制御プロトコルによって定まるIPルーティングの設定、すなわち、各論理ノード内のパケット転送手段が保持するIP経路表の内容に従って転送される。したがって、迂回先の候補となっている論理ネットワークに対して実際に流せるトラヒックの量は、その論理ネットワーク内のIPルーティング設定によって定まるパケット転送経路に沿った可用帯域の値によって決まる。機能(4)は、パケット転送手段が、この経路に沿った論理リンクの一覧、および、それら各論理リンクに割り当てられている出力方向の帯域とその時点での出力方向のトラヒック量に関する情報とを用いて算出した可用帯域の値を通信品質管理装置120に通知する機能である。通信品質管理装置120は、これらの情報を用いて、パケットの転送経路が未知である迂回先候補の論理ネットワーク上での転送経路情報、および、その経路に沿った可用帯域の情報を得る。
パケット転送手段の機能(4)の動作の概要を図22に示す。この動作は、IPネットワーク上で動作するソフトウェアとして一般に使用されているtracerouteコマンドの実現方法を流用したもので、tracerouteで用いられるICMPのTTL expireメッセージに対し、論理リンクに割り当てられている出力方向の帯域とトラヒック量の情報を付与することで機能(4)を実現する。
図22は、通信品質管理装置120が、ある論理ネットワークのパケット転送手段1が存在する論理ノードからパケット転送手段Nが存在する論理ノードに向けてパケットを転送したときに、実際にパケットが転送される経路の情報、および、その経路に沿った可用帯域の値を算出するのに必要な情報を得るために、パケット転送手段1に対して論理ネットワークの可用帯域を測定させるための経路・トラヒック情報要求を送信し、パケット転送手段1によって情報収集がなされた後、結果を受信する様子を示している。
通信品質管理装置120が送信する経路・トラヒック情報要求(ステップS101)には、可用帯域を知りたい区間の末端となる論理ノードのネットワークインタフェースのIPアドレスが含まれている。図22では、パケット転送手段Nにおける、論理リンクN-1に接続された仮想NICのIPアドレスがこれに相当する。
経路・トラヒック測定要求を受信したパケット転送手段1は、まず、上記のIPアドレスを宛先に持つ情報要求パケットを、IPヘッダ内のTTL(Time To Live)の値を1にセットして、IP経路表によって決定される仮想NIC(図中の論理リンク1につながる仮想NIC)から送信しようとする。しかし、出力処理部のIPヘッダ処理部においてTTLの値をデクリメントした結果、その値が0となるため、当該パケットは上記の仮想NICへは転送されず、代わりにTTL expire通知が情報要求パケットの送信元であるパケット転送手段1、すなわち自分自身へ送信される(ステップS102)。このTTL expire通知が送信されるまでの処理内容は、図21に示す通りである。すなわち、IPヘッダ処理部でTTLの値をデクリメントした際にその値が0になったことを検出し、当該パケットをICMP処理部に転送して図22のパケット転送手段1を宛先とするICMP TTL expire通知を生成し、さらに、トラヒック通知部から供給される論理リンク名、当該論理リンクの出力方向の帯域割り当て値、および、当該論理リンクの出力ビットレートを付与して、論理ネットワーク内パケット転送部へ転送する。
このTTL expire通知を受信したパケット転送手段1は、この通知に含まれる上記論理リンク1の情報、すなわち、論理リンク1の論理リンク名、論理リンク1の出力方向の帯域割り当て値、および、論理リンク1の出力ビットレート、を内部に記録する。
次に、パケット転送手段1は、TTLの値を2にセットして同様の情報要求パケットの送信を試みる。このパケットは同パケット転送手段からの出力時にTTLの値が1減算され、TTLの値が1となった状態で次段のパケット転送手段2に届く(ステップS103)。この情報要求パケットを受信したパケット転送手段2は、その情報要求パケットを宛先へ転送するために、適切な論理リンクへそのパケットを転送しようとする。しかし、パケット出力時のIPヘッダ処理においてTTLの値をデクリメント結果、その値が0となるため当該パケットは出力できず、代わりにICMPによってTTL expire通知が情報要求パケットの送信元であるパケット転送手段1へ送信される(ステップS104、S105)。
そして、パケット転送手段2から上記のTTL expire通知を受信したパケット転送手段1は、この通知に含まれる上記論理リンク2の情報、すなわち、論理リンク2の論理リンク名、論理リンク2の出力方向の帯域割り当て値、および、論理リンク2の出力ビットレート、を内部に記録する。そして、これ以降、TTLの値を1ずつ増やしながら、同様の情報要求パケットの送信、および、TTL expire通知とともに通知されてくる論理リンクの情報の記録、を繰り返す(ステップS106〜ステップS111)。
このようにしてTTLの値を1ずつ増やしながら経路・トラヒック情報要求を送信し続けることにより、やがて、それが本来の宛先であるパケット転送手段Nへ到達する(ステップS112)。このパケットを受信したパケット転送手段Nは、送信元のパケット転送手段1に対して情報要求パケットの受信通知を返送する(ステップS113)。
この受信通知を受信したパケット転送手段1は、一連の動作の中で記録した、図中の論理リンク1からN-1についての情報、すなわち、これらの論理リンク名、各論理リンクの出力方向の帯域割り当て値、および、各論理リンクの出力ビットレートの情報をもとに、これらの論理リンクから成るパケットの転送経路に沿った可用帯域の値を算出する(値の算出方法は後述する)。そして、上記の論理リンク名、各論理リンクの出力方向の帯域割り当て値、および、算出した可用帯域の値を通信品質管理装置へ返信する(図22中の結果通知、ステップS114)。
以上が図22の説明である。次に、図22で説明した一連の動作をパケット処理手段において実装する方法を、図21、および、図23から図28を用いて説明する。
パケット転送手段は図15に記載した各処理部以外に、図23に記載の経路・トラヒック情報要求処理部と受信パケット処理部を有する。これら2つの処理部は図22で説明した動作を実現するためのものである。
通信品質管理装置120からの経路・トラヒック情報要求を受信したパケット転送手段が、TTLの値が1である最初の帯域要求パケットの送信を試みるまでの動作は図24のように実現される。すなわち、制御通知処理部が、外部通信用の仮想NICを経由して受信(図中S151)した通知が経路・トラヒック情報要求であると同定すると、経路・トラヒック情報要求処理部に対して情報収集の開始を通知する(図中S152)。そして、この通知を受けた経路・トラヒック情報要求処理部は、通信品質管理装置120からの前記経路・トラヒック情報要求において指定されたIPアドレスを宛先に持ち、かつ、TTLの値が1である情報要求パケットを作成し、論理ネットワーク内パケット転送部へ送信する(図中153)。論理ネットワーク内パケット転送部は、パケットの宛先と自身が有するIP経路表を参照して、当該パケットを適切な出力処理部へ転送する(図中154)。
出力処理部がパケットを仮想NICへ出力するまでの処理は図21に示す通りである。IPヘッダ処理部は一般のIPルータと同様の、パケット転送時のIPヘッダの内容更新に係る処理を実行する。このヘッダ処理部における処理内容には、TTLの値をデクリメントする処理が含まれる。このTTLのデクリメントの結果、その値が0にならなかった場合、当該パケットはトラヒック通知部、および、ARP query部を通して仮想NICから論理リンクへ出力される。
前記経路・トラヒック情報要求処理部が最初に送信した情報要求パケットはTTLの値が1であるため、上記のTTLデクリメントによりその値は0となる。TTLの値が0となった情報要求パケットはICMP処理部へ転送される。この転送を受けたICMP処理部は、当該出力処理部が接続されている論理リンクの論理リンク名、当該論理リンクの出力方向の帯域割り当て値、および、その時点での当該論理リンクの出力ビットレート情報、をトラヒック通知部から収集し、これらの情報と、TTLの値が0となった情報要求パケットをもとに、TTL expire通知パケットを生成する。このTTL expire通知パケットの宛先は前記情報要求パケットの送信元のパケット転送手段である。
このTTL expire通知は、図25に示すように自パケット転送手段の論理ネットワーク内パケット転送部に送信される(図中S155)。そして、論理ネットワーク内パケット転送部のIP経路表に基づき、宛先のパケット転送手段に向けて返信される(図中S156)。
前記情報要求パケットの送信元であるパケット転送手段がこのTTL expire通知を受信した際の処理は図26のように実現される。すなわち、当該パケット転送手段の論理ネットワーク内パケット転送部は、TTL expire通知が自転送手段宛てであることを識別すると(図中S157)、この通知パケットを受信パケット処理部へ転送する(図中S158)。この転送を受けた受信パケット処理部は、経路・トラヒック情報要求処理部に対し、論理リンク情報通知を送信する(図中S159)。この通知は、TTL expire通知に含まれていた論理リンク名、当該論理リンクの出力方向の帯域割り当て値、および、当該論理リンクの出力ビットレート情報を含む。
上記の論理リンク情報通知を受信した経路・トラヒック情報要求処理部は、同通知に含まれるこれらの情報を内部に記録する。そして、TTLの値を前回生成した情報要求パケットのTTLの値から1だけ増やした情報要求パケットを生成し(パケットの宛先は変えない)、それを論理ネットワーク内パケット転送部へ転送する(図中S160)。このパケットを受信した論理ネットワーク内パケット転送部は、IP経路表を参照して上記の情報要求パケットを然るべき出力処理部へ転送する(図中S161)。このようにして論理ネットワーク内に出力された情報要求パケットは、TTLの値が0になるまで、論理ネットワーク内で設定されたIPルーティングに従って宛先のパケット転送手段に向かって転送されていく。
以下、最初に通信品質管理装置120から経路・トラヒック情報要求を受信したパケット転送手段は、TTL expire通知を受信するたびに、通知されてきた論理リンク名、当該論理リンクの出力方向の帯域割り当て値、および、当該論理リンクの出力ビットレート情報、を記録するとともに、TTLの値を1つずつ増やしながら同じ宛先に情報要求パケットを送信する動作を繰り返す。そして、TTLの値がある値になると、帯域要求パケットが本来の宛先であるパケット転送手段、すなわち、可用帯域を測定したい区間の末端のパケット転送手段に到達する。
情報要求パケットを受信した上記のパケット転送手段の処理は図27のように実現される。すなわち、当該パケットを受信したパケット転送手段の論理ネットワーク内パケット転送部は、パケットの宛先が自転送手段宛てであることを認識すると(図中S162)、受信した当該パケットを受信パケット処理部へ転送する(図中S163)。このパケットを受信した受信パケット処理部は、情報要求パケットの送信元のパケット転送手段を宛先とする受信完了通知パケットを生成し、論理ネットワーク内パケット転送部へ送信する(図中S164)。このパケットを受信した論理ネットワーク内パケット転送部は、IP経路表を参照して上記の受信完了通知パケットを然るべき出力処理部へ転送する(図中S165)。このようにして論理ネットワーク内に出力された受信完了通知パケットは、論理ネットワーク内で設定されたIPルーティングに従って宛先のパケット転送手段に向かって転送されていく。
情報要求パケットの送信元であるパケット転送手段が上記の受信完了通知を受信し、結果を通信品質管理装置120へ返信する動作は、図28のように実現される。すなわち、当該パケット転送手段は、受信完了通知が自転送手段宛てであることを識別すると(図中S166)、この通知パケットを受信パケット処理部へ転送する(図中S167)。この転送を受けた受信パケット処理部は、経路・トラヒック情報要求処理部に対し、情報収集完了通知を送信する(図中S168)。
上記の情報収集完了通知を受信した経路・トラヒック情報要求処理部は、一連の処理の中で記録した、全ての論理リンクの出力方向の帯域割り当て値と出力方向のビットレート情報を元に、それらの論理リンクから成るパケット転送経路に沿った可用帯域の値を算出する(算出方法については後述する)。そして、一連の処理の中で記録した、全ての論理リンクの論理リンク名と出力方向の帯域割り当て値、および、算出した可用帯域の値を情報として含む情報収集完了通知パケットを生成し、制御通知処理部へ送信する(図中S169)。そして、この情報収集完了通知パケットを受信した制御通知処理部は、上記の情報を含む結果通知パケットを通信品質管理装置へ送信する(図中S170)。
以上がパケット転送手段の機能(4)の説明である。なお、この可用帯域の通知機能は端末収容装置160にも実装する。この実装方法を図29に示す。図29は、図6に対し、可用帯域測定手段163と経路設定管理手段162の構成の詳細を追記したものである(収容ネットワーク変更手段161は省略している)。この構成を前提として、前述の可用帯域測定を端末収容装置160において実行する際の処理の流れを図30から図35を用いて説明する。
端末収容装置160は如何なるデータの伝送経路においてもその始点、あるいは、終点のみに位置する。したがって、通信品質管理装置120が端末収容装置160に対して論理ネットワークの可用帯域を測定させるための可用帯域測定処理においては、通信品質管理装置120から経路・トラヒック情報要求を受信する始点装置、または、同情報要求の宛先の装置としてそれを受信し結果通知を返信する終点装置、のいずれかの装置として動作する。
始点装置となる端末収容装置160は、入力パケット処理部内の制御通知処理部が、受信したパケットを通信品質管理装置120から送信されてきた経路・トラヒック情報要求であると認識すると(図中S181)、当該パケットの宛先となる論理ネットワークを識別し、可用帯域測定手段内の当該論理ネットワークに対応する論理ネットワーク用リソース内の経路・トラヒック情報要求処理部に対して情報収集開始通知を送信する(図中S182)。
情報収集開始通知を受信した経路・トラヒック情報要求処理部は、通信品質管理装置120からの前記経路・トラヒック情報要求において指定されたIPアドレスを宛先に持ち、かつ、TTLの値が1である情報要求パケットを作成し、当該論理ネットワークへ向けて送信する(図中S183)。
このとき、バックボーンインタフェース上のIPヘッダ処理部は、上記の情報要求パケットのTTLの値をデクリメントした結果、その値が0となるため、このパケットをICMP処理部へ転送する(図中S184)。この転送を受けたICMP処理部は、当該論理ネットワークに対応する論理リンクの論理リンク名、出力方向の帯域割り当て値、および、その時点での出力ビットレートをトラヒック通知部から収集し、これらの情報と、TTLの値が0となった情報要求パケットをもとに、TTL expire通知パケットを生成する。このTTL expire通知パケットの宛先は当該論理ネットワークにおける自端末収容装置のIPアドレスであり、可用帯域測定手段内の当該論理ネットワークに対応した論理ネットワーク用リソース内の受信パケット処理部へ転送される(図中S185)。
このTTL expire通知パケットを受信した受信パケット処理部は、経路・トラヒック情報要求処理部に対し、論理リンク情報通知を送信する(図中S186)。そして、この通知を受信した経路・トラヒック情報要求処理部は、同通知に含まれる論理リンク名、出力方向の帯域割り当て値、および、出力ビットレートの情報を内部に記録する。そして、TTLの値を前回生成した情報要求パケットのTTLの値から1だけ増やした同パケットを生成し(パケットの宛先は変えない)、当該論理ネットワークに向けて送信する(図中S187)。
経路・トラヒック情報要求処理部から送信された時点でTTLの値が2以上の情報要求パケットについては、図中S188に示すように端末収容装置内においてTTL expireとなることなく、当該論理ネットワークへと送出される。これ以降、最初に通信品質管理装置120から経路・トラヒック情報要求を受信した端末収容装置160は、TTL expire通知を受信するたびに、通知されてきた論理リンク名、出力方向の帯域割り当て値、および、出力ビットレートの情報を記録するとともに、TTLの値を1つずつ増やしながら同じ宛先に情報要求パケットを送信する動作を繰り返す。
図34は、自身を宛先とする情報要求パケットを受信した端末収容装置160、すなわち、当該伝送経路の終点装置となる端末収容装置160の動作を示す図である。入力パケット処理部内の制御通知処理部が、受信したパケットを自身宛ての情報要求パケットであると認識すると、当該パケットの宛先となる論理ネットワークを識別し、可用帯域測定手段内の当該論理ネットワークに対応する論理ネットワーク用リソース内の受信パケット処理部に対して情報収集開始通知を送信する(図中S189)。そして、それを受信した受信パケット処理部は、送信元の端末収容装置を宛先とする受信完了通知パケットを生成し、送信する(図中S190)。
図35は、前記の受信完了通知を受信した端末収容装置160の動作を示す図である。入力パケット処理部内の制御通知処理部が、受信したパケットを自身宛ての受信完了通知であると認識すると、当該パケットの宛先となる論理ネットワークを識別し、可用帯域測定手段内の当該論理ネットワークに対応する論理ネットワーク用リソース内の受信パケット処理部に対して同パケットを送信する(図中S191)。そして、それを受信した受信パケット処理部は、経路・トラヒック情報要求処理部に対し、情報収集完了通知を送信する(図36中S192)。
上記の情報収集完了通知を受信した経路・トラヒック情報要求処理部は、一連の動作の中で記録した、全ての論理リンクに関する全ての情報を含む結果通知パケットを生成し、通信品質管理装置120へ送信する(図中S193)。以上が端末収容装置における可用帯域測定機能の実現方法、および、その動作の説明である。
本実施形態を構成する装置群の説明は以上である。以降では、ユーザ端末間でのコンテンツデータ伝送において、通信品質管理装置120がこれらの装置群やパケット転送手段を制御してネットワーク上の輻輳箇所を回避する方法を説明する。
<実施形態1:通信品質管理装置における処理>
通信品質管理装置120の構成を図36に示す。通信品質管理装置120は、入出力部121、トポロジー情報取得部122、トポロジー情報記憶部123、初期論理ネットワーク決定部124、輻輳検出部125、および、迂回処理部126によって構成される。
入出力部121は、拠点内接続線を介して、論理ネットワーク構築装置200、論理ネットワーク制御装置300、データ転送装置110、コンテンツデータベース140、および、端末データベース150との情報の送受信を行う。
トポロジー情報取得部122は、論理ネットワーク制御装置300から、論理ネットワークのトポロジー情報を取得する。
トポロジー情報記憶部123は、トポロジー情報取得部122によって取得されたトポロジー情報を記憶するための記憶装置である。
初期論理ネットワーク決定部124は、コンテンツの送信を開始したい送信端末からのコンテンツ送信要求に応じて、当該コンテンツの伝送に必要なネットワークの帯域量の情報に基づき当該コンテンツの伝送に用いる最初の論理ネットワークを決定する。
輻輳検出部125は、論理ネットワーク構築装置200内の論理ノード内のパケット転送手段(後述)や、端末収容装置160からデータ転送装置110を経由して通知されるトラヒック情報を受信し、当該トラヒック情報に基づきコンテンツデータの伝送中における論理ネットワーク内の輻輳を検出してデータ伝送経路上における輻輳区間を特定する。
迂回処理部126は、論理ネットワークのトポロジー情報を参照して、輻輳区間を持つ論理ネットワークのデータ伝送経路の途中で輻輳区間のトラヒックを他の論理ネットワークに転送して輻輳区間を迂回することを可能にする迂回先候補の論理ネットワークを検索する。また、迂回処理部126は、端末収容装置の可用帯域測定手段や論理ネットワーク構築装置200内の論理ノード内のパケット転送手段(後述)を用いて論理ネットワークの可用帯域を測定し、コンテンツを伝送するに足る十分な可用帯域があれば、コンテンツデータの伝送の全部または一部をこの論理ネットワークに切り替える。具体的には、上記の検索された迂回先候補の論理ネットワークの可用帯域がコンテンツデータの少なくとも一部を伝送可能な帯域であれば、論理ネットワーク制御装置300と論理ネットワーク構築装置200とを介して、輻輳区間を有する論理ネットワークと迂回先候補の論理ネットワークとを接続する論理ネットワーク間接続用リンクを構築させ、コンテンツデータのパケットを迂回先候補の論理ネットワークに転送する割合を通知することにより、当該論理ネットワーク間接続用リンクを介してコンテンツデータの少なくとも一部を迂回先候補の論理ネットワークに迂回させる。
また、迂回処理部126は、コンテンツデータの迂回を既に実行している論理ネットワークがある場合に、その論理ネットワークの可用帯域を測定し、その論理ネットワークへの該コンテンツデータの迂回量をさらに増加できる可用帯域があれば、該論理ネットワークへの迂回量を増加することにより、輻輳区間の輻輳を回避あるいは軽減する機能を有する。また、迂回処理部126は、輻輳が発生している論理ネットワークの輻輳処理の対象区間を拡張しながら、上記の新規迂回、あるいは、迂回量の増加が行える論理ネットワークを検索し実際に新規迂回処理や迂回量の増加を行う機能を有する。
図37は、コンテンツデータの送信開始から終了までに通信品質管理装置120が行う処理を示したフローチャートである。同フローチャートは、通信品質を保持しながら伝送したいコンテンツの、1つ1つのコンテンツについての処理を示している。各処理ステップのうち、特に太線で囲ったステップS204、ステップS205、ステップS207、および、ステップS208が、本実施形態の輻輳回避制御を実現する、論理ネットワークの制御に関する処理ステップである。
最初のステップS200は、トポロジー情報取得部122が入出力部121を介して論理ネットワーク制御装置300にアクセスして、トランスポートネットワーク上に構築されている全ての論理ネットワークについてのトポロジー情報を取得するステップである。このトポロジー情報は、例えば非特許文献12のAppendix Dに記載のスライスデザインのようなテキストファイル形式で実現でき、トポロジー情報記憶部123に記憶される。
このトポロジー情報により、通信品質管理装置120は、各論理ネットワークについて、その論理ネットワークに接続されている端末収容装置160の一覧、その論理ネットワークに含まれる論理ノードの一覧、および、各論理ノードが生成されている論理ネットワーク構築装置200、に関する情報を得る。通信品質管理装置120はこれらの情報を利用して、コンテンツを伝送する初期論理ネットワークの決定処理(図中のステップS204)、送受信端末の論理ネットワークへの収容処理(図中のステップS205)、および、輻輳回避制御(図中のステップS207)における迂回先論理ネットワークの探索処理を実行する。
ステップS201は、初期論理ネットワーク決定部124が入出力部121を介してコンテンツの送信を開始したい送信端末からのコンテンツ送信要求を受信するステップである。このコンテンツ送信要求には付随する情報として、当該送信端末の識別子である送信端末識別子(IPアドレス)、コンテンツ伝送の宛先となる受信端末の識別子である受信端末識別子(IPアドレス)、送信対象となるコンテンツの識別子であるコンテンツ識別子、および、コンテンツを受信するアプリケーションが使用するポート番号が含まれる。
コンテンツ送信要求を受信した通信品質管理装置120の初期論理ネットワーク決定部124は、ユーザ拠点内のコンテンツデータベース140を参照し、前記のコンテンツ識別子を用いて、当該コンテンツの伝送に必要なネットワークの帯域量の情報を得る(ステップS202)。
次に、前記送信端末識別子と前記受信端末識別子をキーとして端末データベース150を参照し、これらの端末を収容している端末収容装置160の識別子を特定する(ステップS203)。
そして、これらの端末収容装置160を含む論理ネットワーク群の中から、当該コンテンツの伝送に用いる最初の論理ネットワークを1つ決定する(ステップS204)。この論理ネットワークを初期論理ネットワークと呼ぶ。初期論理ネットワークを決定する方法、すなわち、ステップS204の処理内容の詳細は後述する。適切な初期論理ネットワークが存在しなかった場合、当該送信端末へコンテンツの送信が不可である通知を送信した(ステップS209)後、処理を終了する。
ステップS204において適切な初期論理ネットワークが存在した場合、ステップS205に移る。ステップS205ではまず、通信品質管理装置120の初期論理ネットワーク決定部124が、入出力部121を介してコンテンツの送信端末を収容している端末収容装置160に対し、当該送信端末をステップS204で定めた初期論理ネットワークへ収容する命令を発行する。この命令は、端末収容装置制御VLANを介して通信品質管理装置120から端末収容装置160へ伝送される。さらに、受信端末を収容している端末収容装置160に対し、コンテンツの受信端末を、当該端末収容装置が接続されている全ての論理ネットワーク(前記初期論理ネットワークを含む)へ収容する命令を発行する。この命令も、端末収容装置制御VLANを介して通信品質管理装置120から端末収容装置160へ伝送される。
これらの処理により、送受信端末の論理ネットワークへの収容を完了する。なお、受信端末を上記のように複数の論理ネットワークに収容する理由は、図9の説明において述べた通りである。
送受信端末の論理ネットワークへの収容が完了すると、通信品質管理装置120の初期論理ネットワーク決定部124は、送信端末に対して当該コンテンツデータの送信開始を許可する通知を送信する(ステップS206)。送信端末はこの通知を受信するとコンテンツデータの送信を開始する。
コンテンツデータの送信開始許可通知を送信した後、通信品質管理装置120は輻輳回避制御(ステップS207)の実行に移る。ここでは、輻輳検出部125においてコンテンツデータの伝送に使用されている論理ネットワークの混雑状況を入出力部121を介して監視しながら、必要に応じて迂回処理部126において輻輳回避のための制御を入出力部121を介して実施する(ステップS207の輻輳回避制御のサブルーチンの詳細は後述する)。
ステップS207の実行中にコンテンツの送信端末から当該コンテンツの全てのデータの送信が完了した旨の通知を受信すると、ステップS208に移る。ステップS208では、迂回処理部126が、ステップS207の輻輳回避制御の中で確立した、輻輳回避のための論理ネットワーク間接続リンクの全てを削除するとともに、入出力部121を介して関連する全てのパケット転送手段に対して迂回取り消し通知を発行する。ステップS208のトラヒック回収処理のサブルーチンの詳細は後述する。ステップS208の処理が完了すると、通信品質管理装置120は全ての処理を終了する。
以上が、コンテンツデータの送信開始から終了までの処理の流れである。以下では、本実施形態の輻輳回避制御を実現する、論理ネットワークの制御に関する処理ステップであるステップS204、ステップS207、および、ステップS208の詳細を説明する。
ステップS204は、当該コンテンツの伝送に使用する最初の論理ネットワークを決定するステップである。本実施形態では、コンテンツ伝送の開始時には論理ネットワーク間接続用リンクを使用せず、1つの論理ネットワーク(初期論理ネットワーク)を用いて伝送を開始する。ステップS204は、この初期論理ネットワークを決定するステップである。
具体的には、図37のステップS200で取得した論理ネットワークのトポロジー情報を用いて、コンテンツの送信端末を収容する端末収容装置160と受信端末を収容する端末収容装置の両方の端末収容装置160を含む論理ネットワークを全て選び出し、その中から、当該コンテンツの伝送経路に沿った可用帯域の値が当該コンテンツの伝送に必要な帯域量以上であり、かつ、最大の論理ネットワークを1つ選出し、それを初期論理ネットワークとする。この処理の概要を図38に示す。なお、通信品質管理装置120は同図に示すように、論理ネットワークの上で伝送しているフローと、それが当該論理ネットワークの伝送経路上の各論理リンクにおいて消費している帯域量を常時管理し把握する。図38の例は、初期論理ネットワークを使用した当該コンテンツの伝送開始直後において、伝送経路上の各論理リンクの帯域を、当該コンテンツの伝送に必要な帯域量Bだけ消費している状態を示しており、通信品質管理装置120はこのような帯域の消費状態を管理するものとする。なお、通信品質管理装置120がこの情報管理のために内部で使用するソフトウェアのデータ構造については本実施形態では規定しない。
図39は、図37のステップS204、すなわち、初期論理ネットワークの決定サブルーチンの処理内容を示したフローチャートである。以下、同図について説明する。
まず、ステップS204-1では、処理に用いる内部変数の初期化を実施する。すなわち、それまでの処理において初期論理ネットワークの候補となっている論理ネットワークを記録するための変数Nmaxを空に初期化し、また、その論理ネットワークが有する可用帯域の値を記録するための変数amaxの値を0に初期化する。
そして、ステップS204-2では、図37のステップS200で取得した全論理ネットワークのトポロジー情報を参照して、送信端末を収容する端末収容装置E1と受信端末を収容する端末収容装置E2の両方を含み、ステップS204-3からステップS204-6の処理を未だ行っていない論理ネットワークの有無を検査する。もしそのような論理ネットワークがあれば、そのうちの1つを選択し(Nとする)、当該コンテンツデータのパケット群から成るフローをNの上で伝送した場合の伝送経路に沿った可用帯域の値aを算出する(ステップS204-3)。
ステップS204-4では、ステップS204-3で算出した可用帯域の値aと、当該コンテンツの伝送に必要な帯域量B1の値とを比較する。aの値がB1未満であれば、N上で当該コンテンツの伝送は行えないため、Nを初期論理ネットワークの候補とはせずステップS204-2に戻る。aの値がB1以上であればステップS204-5に移ってaの値とamaxを比較する。そして、aの方が大きければステップS204-6に移ってNmaxをNで、amaxをaで置き換え、そうでなければNを初期論理ネットワークの候補とはせずステップS204-2に戻る。
ステップS204-2の検査において当該条件の論理ネットワークが無くなった場合はステップS204-7へ移る。ステップS204-7では、Nmaxが初期値である空のままであるか否かを検査する。空であれば、それは初期論理ネットワークの条件を満足する論理ネットワークが存在しなかったことを意味するため、図37のステップS209へ移り、送信端末に対してコンテンツ送信不可通知を送信する。Nmaxが空でなければ、Nmaxを初期論理ネットワークに決定し(ステップS204-8)、処理を終了する。
以上が初期論理ネットワークの決定処理の説明である。ここで、各論理リンクの可用帯域、および、複数の論理リンクから成る経路に沿った可用帯域のそれぞれについて、図40を参照しながらそれらの定義を説明する。本実施形態の前提として、各論理リンクiは、論理ネットワークの作成時に静的に割り当てられた帯域量を有するものとする。これをリンク容量と呼び、c(i)で表す。また、ある時点において論理リンクi上を流れる、制御対象のトラヒックとそれ以外の全てのトラヒックとが消費している帯域の合計量をその時点における論理リンクiの使用帯域といい、u(i)で表す。
そして、この使用帯域のリンク容量に対する割合が、予め定めた閾値α(%)を上回る論理リンク、すなわち、
である論理リンクを輻輳リンクと呼び、リンク容量に対してα(%)となる帯域量を輻輳回避発動帯域と呼ぶ。
また、使用帯域のリンク容量に対する割合が、予め定めた閾値β(%)を下回る論理リンク、すなわち、
である論理リンクを余剰リンクと呼び、リンク容量に対してβ(%)となる帯域量をトラヒック回収発動帯域と呼ぶ。なお、α>βとする。
使用帯域u(i)が輻輳回避発動帯域を上回った論理リンクは、後に説明する図41のステップS207-3の迂回処理の対象となり、トラヒックの一部を他の論理ネットワークへ迂回して使用帯域u(i)を減らす処理が実行される。また、使用帯域u(i)がトラヒック回収発動帯域を下回った論理リンクは、同図のステップS207-6の迂回解消処理の対象となり、他の論理ネットワークへ迂回していたトラヒックをその論理リンクを含む論理ネットワークへ回収する処理が実行される。これらの迂回処理と迂回解消処理の詳細については後述する。
また、α>γ>βとして、当該論理リンクのリンク容量のγ(%)となる帯域幅を充填許容帯域と呼ぶ。この充填許容帯域は、その論理リンクの使用帯域u(i)を、制御によりその値まで意図的に増やすことを許容する上限値とする。具体的には、トラヒックを他の論理ネットワークへ迂回する場合の、迂回先の論理ネットワークへ迂回させることができるトラヒック量の上限や、他の論理ネットワークへ迂回していたトラヒックを回収する場合の、回収することができるトラヒック量の上限はこの充填許容帯域の値に基づいて定める。さらに、輻輳リンクのトラヒックを他の論理ネットワークへ迂回する場合は、輻輳リンクの使用帯域u(i)をこの充填許容帯域まで減らすことを目標に制御を実施する。これらの詳細は後述する。
c(i)、u(i)、および、充填許容帯域をこのように定義するとき、各論理リンクについて、充填許容帯域を超えない範囲で現在の使用帯域u(i)から増加させても良いトラヒック量、すなわち、
を、その時点における論理リンクiの可用帯域と呼ぶ。
そして、各論理リンクの可用帯域a(i)をこのように定義するとき、複数の論理リンクから成る経路に沿ったその経路全体の可用帯域aを以下のように定義する。
すなわち、ある経路の可用帯域とは、その経路を構成する各論理リンクの可用帯域の最小値である。したがって、この値は、当該経路上の全ての論理リンクの充填許容帯域を超えない状態のままその経路に追加できるトラヒック量の最大値を意味する。
次に、図37のステップS207について説明する。ステップS207は、当該コンテンツ伝送の継続中に実施する輻輳回避制御処理である。図41は、図37のステップS207の輻輳回避制御の内訳を示すフローチャートである。以下、図41を参照しながら、図37のステップS207の輻輳回避制御の概要を説明する。
ステップS207-1では、当該コンテンツの送信端末からコンテンツの送信完了通知を既に受信していないかどうかを検査する。もし受信していれば輻輳回避制御を終了し、図37のステップS208に移る。上記通知をまだ受信していなければ、当該コンテンツの伝送が継続中であるとみなし、ステップS207-2に移る。
ステップS207-2では、図37のステップS204で決定した初期論理ネットワーク、および、既にトラヒックの迂回を実施している場合はトラヒックの迂回先の全てのフローセグメントも対象にして、輻輳箇所が発生しているフローセグメントの有無、すなわち、後述する迂回対象区間が発生しているフローセグメントの有無を検査する。迂回対象区間が発生しているフローセグメントが1つでもあれば、ステップS207-3の迂回処理に移り、輻輳箇所を回避するための具体的な制御を実施する。そのようなフローセグメントがなければ、ステップS207-5に移る。ステップS207-3の詳細は後述する。なお、本実施形態では、通信品質管理装置120が各フローセグメントの迂回対象区間の有無を管理するための方法は規定しない。
ステップS207-5では、通信品質管理装置120が内部に持つタイマーの値を参照し、前回のタイマーの初期化から所定の時間が経過しているか否かを検査する。このタイマーは、通信品質管理装置がコンテンツ毎に対応する物を持ち、迂回処理(ステップS207-3)または迂回解消処理(ステップS207-6)の実行が完了する度に、それぞれステップS207-4、ステップS207-7においてその値が初期化される。すなわち、ステップS207-5では、どのフローセグメントにも所定の時間、輻輳が発生せず安定した状態が続いており、かつ、前回の迂回解消処理からも所定の時間が経過していることを確認することで、それぞれのフローセグメントにおける、他のフローセグメントへのトラヒックの迂回の解消処理を発動するか否かを判断している。
前回のタイマーの初期化から所定の時間が経過していれば、ステップS207-6へ移り、トラヒックの迂回解消処理を実行する。ステップS207-6の詳細は後述する。所定の時間が経過していなければステップS207-1に戻る。なお、ステップS207-6の処理中にいずれかのフローセグメントで輻輳が発生した場合、迂回解消処理を中断してステップS207-3の迂回処理に移る。
以上のように、図37のステップS207は、当該コンテンツの送信端末からのコンテンツ送信完了通知を受信するまで、ステップS207-3の迂回処理、または、ステップS207-6の迂回解消処理を繰り返すステップである。
次に、図41のステップS207-3の迂回処理の詳細を説明する。図42は、このステップS207-3の処理の内訳を示すフローチャートである。
まず、図42、あるいは、それ以降のフローチャートの中で使用している用語の定義について、図43を参照しながら説明する。まず、「迂回リンク」とは、ある論理ネットワーク、あるいはフローセグメントから見て、自身のトラヒックを他のフローセグメントへ迂回するのに使用している論理ネットワーク間接続用リンクを指す。逆に「戻りリンク」とは、別のあるフローセグメントへ迂回していたトラヒックを自身の論理ネットワーク、あるいは、フローセグメントに戻すのに使用している論理ネットワーク間接続用リンクを指す。
次に、「迂回対象区間」とは、あるフローセグメントのパケットの伝送経路において、前記(式1)で表される状態にある輻輳リンクが存在する場合に、それらのうち最も上流の輻輳リンクから最も下流の輻輳リンクまでを含む区間を指すものとする。図43の例では、初期論理ネットワークにおける当該トラヒックのパケットの伝送経路上に3本の輻輳リンクが存在しており、これに対応する迂回対象区間は、同図に示した、論理ノードSから論理ノードEまでの区間となる。
なお、通信品質管理装置120は、パケット転送手段から定期的に送信されてくる各論理リンクの論理リンク名、論理リンクのリンク容量、および、出力ビットレート情報をもとに、輻輳リンクの検出と記録、および、その情報に基づいた迂回対象区間の算出と記録とを定期的に実施するものとする。上記の演算、および、その結果を記録するための方法は本実施形態では規定しない。
以上の用語の定義を前提として、図42のフローチャートを説明する。まず、ステップS207-3-1で、処理の対象にするフローセグメントのレベルを保持する変数Lvを0に初期化する。ここで、フローセグメントの「レベル」とは、コンテンツの送信端末を収容する端末収容装置から送信されているパケット群から成るフローを含むフローセグメントのレベルを0とし、レベルLvのフローセグメントから他の論理ネットワークへの迂回処理によって生成されたフローセグメントのそれをLv+1、とすることによって定まる数値と定義する。
そして、ステップS207-3-2では、レベルLvのフローセグメント群の中に、まだ輻輳リンクの有無の検査を実行していないものが存在するか否かを検査する(このようなフローセグメントの有無を管理するための方法は本実施形態では規定しない)。
そのようなフローセグメントが存在すれば、それらのうちの1つNを選択し(ステップS207-3-3)、N上の伝送経路のパケット転送手段から通知されてくる各論理リンクの出力トラヒック通知の値を参照して輻輳リンクの有無を検出する(ステップS207-3-4、S207-3-5)。もし輻輳リンクが存在すれば、迂回先の検索とトラヒックの迂回処理(ステップS207-3-6)を実行する。存在しなければ、ステップS207-3-2に戻る。
ステップS207-3-2の検査でレベルLvの未処理のフローセグメントが存在しなければ、ステップS207-3-7に移り、レベルLv+1のフローセグメントの有無を検査する(通信品質管理装置120がこのような情報を管理し、検査を実施するための方法は本実施形態では規定しない)。レベルLv+1のフローセグメントが存在すれば、変数Lvの値を1増やし(ステップS207-3-8)、ステップS207-3-2へ戻る。レベルLv+1のフローセグメントが存在しなければ本サブルーチンを終了する。
このように、図41のステップS207-3は、レベル0の初期論理ネットワークから始めて、Lvの値を1つずつ増やしながら迂回対象区間を持つフローセグメントの有無を検査し、そのような論理ネットワークがある場合は1つずつ迂回処理を実行するステップである。
図44から図49は、図42のステップS207-3-6の処理の内訳を示すフローチャートである。このフローチャートは、迂回対象区間を持つ論理ネットワークNに対し、トラヒックの迂回先となる論理ネットワークを検索する方法と、実際にトラヒックを迂回する方法とを記載したものである。図44から図49のフローチャートについて以下に説明する。
図44のステップS207-3-6-1では、図42のステップS207-3-3で選択した処理対象のフローセグメントNの迂回対象区間を特定する。この区間は前述のように、当該コンテンツのパケットの伝送経路における、最も上流の輻輳リンクから最も下流の輻輳リンクまでを含む区間であり、図43の例に示したように、同区間の最も上流に位置する論理ノードまたは端末収容装置をS、最も下流に位置する論理ノードまたは端末収容装置をEとして、d(S-E)と書き表す。また、内部処理で使用する変数Phaseの値を0に初期化する。
ステップS207-3-6-2では、現在処理中のフローセグメントNのレベルが0か否かを調べる。レベルが0の場合、当該コンテンツの送信端末を収容する論理ネットワークを他のものに切替えるだけでNにおける輻輳を回避できる可能性があるため、ステップS207-3-6-3へ進んでこの処理を試す。レベルが0でない場合は、トラヒックの他の論理ネットワークへの迂回による輻輳回避しか行えないため、ステップS207-3-6-11へ進む。
ステップS207-3-6-3では、コンテンツの送信端末を収容している送信側の端末収容装置と、コンテンツの受信端末を収容している受信側の端末収容装置の両方を含み、フローF(N)を伝送している論理ネットワークとは異なる論理ネットワークの中で、未だステップS207-3-6-4の試行対象となっていない論理ネットワークが存在するか否かを調べ、存在していればステップS207-3-6-4に、存在していなければステップS207-3-6-10へ進む。
ステップS207-3-6-4では、ステップS207-3-6-3で存在を確認した論理ネットワークのうちの1つを選択する(論理ネットワークN'とする)。そして、ステップS207-3-6-5で、論理ネットワークN'の可用帯域の値aを算出する。
ステップS207-3-6-6では、上記可用帯域の値aと当該コンテンツの消費帯域B1とを比較し、aの値がB1未満であればステップS207-3-6-3に戻って他の切替え先候補となる論理ネットワークを検索する。
aの値がB1以上であれば、当該コンテンツの送信端末をこの論理ネットワークN'に収容替えする(ステップS207-3-6-7)。そして、論理リンクを占める帯域情報の更新(ステップS207-3-6-8)、および、フローセグメントNの伝送経路から他の論理ネットワークへつながる迂回設定を全て削除(ステップS207-3-6-9)し、本サブルーチンを終了する。なお、ステップS207-3-6-9のトラヒック回収処理サブルーチンの詳細は後述する。
ステップS207-3-6-10では、迂回対象区間dの先頭Sが端末収容装置であるか否かを検査する。もしSが端末収容装置の場合、当該コンテンツの送信端末の収容先の論理ネットワークの切替えによっても、さらに、論理ネットワーク間でのトラヒックの迂回によっても迂回対象区間dの輻輳を回避することはできないため、そのまま本サブルーチンを終了する。
ステップS207-3-6-2の検査においてフローセグメントNのレベル値が0でないか、または、ステップS207-3-6-10の検査においてSが端末収容装置でない場合はステップS207-3-6-11の処理へ移る。
ステップS207-3-6-11では、ステップS207-3-6-1で定めた迂回対象区間dを、d1(S1-S2)、・・・、di(Si-Si+1)、・・・、dn(Sn-E)のn個の小区間に分割する。具体的には、論理ノードSi+1へのフローF(N)の総入力帯域が、論理ノードSiのそれよりも大きくなる箇所で分割する。この操作を施す理由は、上記のような総入力帯域が逆転する箇所を含む区間をひとまとめにしてトラヒックの迂回量を決めた場合、論理ノードへの総入力帯域がその迂回量を下回り、その論理ノードから所望の迂回量のトラヒックを迂回する処理ができなくなる場合が生じるためである。
このステップS207-3-6-11の処理について、図60を参照しながら詳細に説明する。図60は、論理ノード1〜6によって構成される迂回対象区間d(S-E)に対してステップS207-3-6-11の処理を施す例である。fa、fb等の添え字は、対応する各論理リンクを流れる制御対象のフローF(N)のトラヒックの帯域を示している。ここで、制御対象となっているフローセグメントN内の当該フローを他のフローセグメントへ迂回する処理を施した経緯が過去にある場合、他のフローセグメントへ迂回したトラヒックがフローセグメントNの現在の迂回対象区間内のノードに戻され、その戻りのトラヒックを受信する論理ノードへの総入力帯域が1つ上流の論理ノードのそれを上回るような場合が起こり得る。図60の例では、過去の迂回処理によって作られた、論理ノード0から論理ノード7を経て論理ノード2へ至る経路が既に存在し、その結果、論理ノード2の総入力帯域fa+f1-f2が論理ノード1の総入力帯域faを上回っている(f1>f2とした場合)。したがって、図44のステップS207-3-6-11の処理によって、迂回対象区間dは、論理ノード1と2とで挟まれた小区間d1(S1-S2)と、論理ノード2と6とで挟まれた小区間d2(S2-E)の2つの小区間に分割される。なお、論理ノード4から論理ノード9へのトラヒックの迂回によって論理ノード5の総入力帯域量は、論理ノード4のそれであるfbとは異なるfcとなっているが、fb>fcであるため、この部分はステップS207-3-6-11の処理による分割の対象とはならず、dはこれ以上の小区間には分割されない。
図44のステップS207-3-6-12以降の処理では、このように分割した小区間diについて1つずつ順番に、小区間diに含まれる全ての輻輳リンクの輻輳状態を解消するために他の論理ネットワークへ迂回すべきトラヒックの帯域量riを算出(ステップS207-3-6-16、または、ステップS207-3-6-20)し、その値に基づいて迂回解消処理を実行していく。
ただし、後述のように、小区間di-1の輻輳回避処理によって小区間diの輻輳も解消される場合があるため、ステップS207-3-6-14、または、ステップS207-3-6-18でこれを検査し、すでに輻輳が解消されていればiの値を1つ増やして(ステップS207-3-6-17)次の区間の処理に移る。
また、小区間di-1の輻輳回避処理の結果、小区間di全体の輻輳が回避されていなくても、その論理リンクの一部の輻輳が解消されている可能性があることを考慮し、ステップS207-3-6-15、または、ステップS207-3-6-19では、小区間diにおいてその下流の論理リンクが輻輳リンクである最も上流の論理ノードをS*とし、処理区間を改めてd'i(S*-E)に設定する。下流方向をEまで延長する理由は、輻輳回避処理によって論理ノードS*から他の論理ネットワークへ迂回したトラヒックをS*からEまでの区間内に戻すことにより、ステップS207-3-6-11で精査した箇所以外に新たに総入力帯域が逆転する論理ノードが発生することを防止するためである。
小区間diの輻輳を解消するために必要な迂回量riは、同区間内の1つ1つの論理リンクに着目してその輻輳状態を回避するために必要な迂回量を計算し、それらの値の最大値をとったものとなる。したがって、小区間diに含まれる各論理リンクをli_j、この論理リンクの輻輳状態を回避するために必要な迂回量をr(li_j)とすると、上記の迂回量riは
となる。ただし、m(i)は、小区間d
iに含まれる論理リンクの数である。
ここで、r(li_j)の計算方法について、図61を参照しながら説明する。ある論理リンクが輻輳状態にあるとき、当該論理リンクの帯域使用率u(li_j)について、100%に達している場合と、α%から100%の間にある場合の2つの場合がある。図61のケース1とケース2は前者の例、同図のケース3とケース4は後者の例である。
前者の場合、当該論理リンクを有するパケット転送手段において他の論理リンクから入力され当該論理リンクに出力が向けられたパケット群から成るトラヒックの総量は、当該論理リンクのリンク容量Cと必ずしも等しいとは限らず、Cを上回っている可能性もある。したがって、当該論理リンクを流れているトラヒックを他の論理ネットワークへ迂回しても再び当該論理リンクのトラヒックが溢れる可能性があり、当該論理リンクを流れるトラヒックの量を正確に制御することはできない。以上を鑑みて、ケース1やケース2のように帯域使用率uが100%に達している論理リンクについては、迂回制御の対象である当該コンテンツのフローを構成するトラヒックの総量ud(li_j)をそのまま迂回量とする。
一方、uがα%と100%の間にある場合は、図61のケース3のように、当該コンテンツのフロー以外のトラヒックだけで帯域使用量がγ%を超えている場合と、ケース4のようにそうでない場合とがある。前者の場合、迂回制御によって帯域使用量をγ%まで下げることはできないが、迂回制御の対象となる当該コンテンツのフローの総量ud(li_j)をそのまま迂回量として、帯域使用量を最大限に減らす。後者の場合は、当該コンテンツのフローのうち、帯域使用量をγ%まで下げるのに必要な量(図中に記載)だけを迂回量とする。
以上より、論理リンクli_jの迂回量r(li_j)は以下の(式6)で計算される。
以上の(式5)、および、(式6)によって、小区間d
iの輻輳を解消するために必要な迂回量を求める(図44のステップS207-3-6-16、および、ステップS207-3-6-20)。
図45のステップS207-3-6-21以降は実際の輻輳回避処理である。まずステップS207-3-6-21では、Eが論理ノードの場合と端末収容装置の場合に分けて処理を分岐している。Eが端末収容装置の場合はステップS207-3-6-47へ移るが、この場合については後述する。Eが端末収容装置ではなく論理ノードの場合は、ステップS207-3-6-22に移る。
ステップS207-3-6-22では、現在処理中のフローセグメントNが、S*から当該フローのトラヒックを迂回しており、Eでそれを再度受信しているような、レベルLv+1のフローセグメントの有無を検査する。そのようなフローセグメントが存在しなければステップS207-3-6-34へ移る(ステップS207-3-6-34以降の処理については後述する)。そのようなフローセグメントが存在すれば、その中からフローセグメントNsを1つ選択する(ステップS207-3-6-23)。そして、Nsにおいて、フローセグメントN内の論理ノードS*、Eとそれぞれ接続されている論理ノードA、および、Bを特定(ステップS207-3-6-24)し、Ns上の伝送経路の各論理リンクの出力トラヒック量通知の値を参照してNs上の伝送経路の可用帯域aを算出する(ステップS207-3-6-25)。
そして、ステップS207-3-6-26ではS*からA方向の迂回リンクの可用帯域Laの値を、ステップS207-3-6-27ではBからE方向の戻りリンクの可用帯域Lbの値を算出し、aとLaとLbの最小値Tを求める(ステップS207-3-6-28)。
ステップS207-3-6-29ではTの値が0か否かを検査し、0であればステップS207-3-6-22へ戻る。Tの値が0でなければ、Nsへのトラヒックの迂回量を増加させてNの輻輳を軽減できるので、ステップS207-3-6-30でTの値と、ステップS207-3-6-15、あるいは、ステップS207-3-6-19で求めたrの値との大小関係を比較する。この結果、Tの値がrの値以上であれば、Nsの当該経路上にrを全て迂回できるだけの十分な可用帯域があるので、S*からNsへ迂回するトラヒックの量をrだけ追加する(ステップS207-3-6-31)。ステップS207-3-6-31の迂回量追加サブルーチンの処理内容については後述する。
ステップS207-3-6-30の検査においてTの値がrの値未満であれば、Nsの当該経路上にはrの一部分(Tに相当する帯域量)を迂回する可用帯域しかないため、S*からNsへ迂回するトラヒックの量をTだけ追加する(ステップS207-3-4-32)。そして、上記rの値をTだけ減らし(ステップS207-3-6-33)た後、ステップS207-3-6-22へ戻る。
このように、ステップS207-3-6-31、および、ステップS207-3-6-32の迂回量サブルーチンによって、コンテンツデータの迂回を既に実行している論理ネットワークがあり、かつ、当該論理ネットワークにコンテンツデータの迂回量をさらに増加できる可用帯域がある場合、論理ネットワークへの迂回量を増加させることができる。
次に、ステップS207-3-6-34以降の処理について説明する。ステップS207-3-6-34では、S*と論理ネットワーク構築装置を共有する論理ノード(Aとする)、および、Eと論理ネットワーク構築装置を共有する論理ノード(Bとする)とを含む論理ネットワークの有無を検査する。そのような論理ネットワークが存在しなければステップS207-3-6-70へ移る。ステップS207-3-6-70以降の処理については後述する。
ステップS207-3-6-34の検査内容に該当する論理ネットワークが存在すれば、その中からまだ迂回処理に使用していない1つの論理ネットワークNdを選択する(ステップS207-3-6-35)。そして、トラヒックの新規迂回に備えて新規にポート番号P'を割り当て(S207-3-6-36)た後、NdにおけるAからBまでのパケットの伝送経路の可用帯域の値aを計測する(ステップS207-3-6-37)。ステップS207-3-6-37の処理の詳細は後述する(図中のステップS207-3-6-37では、論理ノードB内のパケット転送手段の代表IPアドレスをAddr(B)と表記している。また、ステップS207-3-6-61では、端末収容装置Eの、論理ネットワークEdとの接続に使われている論理リンクのインタフェースのアドレスをAddr(E,Nd)と表記している)。
ステップS207-3-6-38では、上記可用帯域の値aが0かどうかを検査する。aの値が0であれば、ステップS207-3-6-34に戻る。aの値が0でなければ、S*とA、および、EとBとの間に論理ネットワーク間接続用リンクを新規に構築可能か否かを検査し(ステップS207-3-6-39)した後、ステップS207-3-6-40へ移る。ステップS207-3-6-39の処理内容の詳細は後述する。
ステップS207-3-6-40では、上記aの値と、ステップS207-3-6-39の返値L、すなわち、論理ネットワーク間接続用リンクの部分の可用帯域との最小値を計算し、これをTとする。そして、ステップS207-3-4-41ではTの値が0か否かを検査し、0であればNとNdとの間で論理ネットワーク間接続用リンクが構築できないと判断しステップS207-3-6-34へ戻る。
Tの値が0でなければ、ステップS207-3-4-15、または、ステップS207-3-4-19で算出した迂回すべき帯域量rとの大小を比較する(ステップS207-3-4-43)。Tの値がrの値以上であれば、迂回すべき帯域量rを全て、ステップS207-3-6-35で選択した論理ネットワークNdへ迂回できるので、この迂回処理を実行(ステップS207-3-6-44)した後、ステップS207-3-6-17戻る。ステップS207-3-6-44の新規迂回サブルーチンの処理内容については後述する。
ステップS207-3-6-43において、Tの値がrの値未満であれば、迂回すべき帯域量rのうち、上記の論理ネットワークNdへ迂回できる量はTだけであるため、論理ネットワークNdに対して帯域量rのうちTだけを迂回する処理を実行(ステップS207-3-6-45)する。そして、迂回すべき帯域量の残りの値を更新(ステップS207-3-6-46)して、ステップS207-3-6-34へ戻る。
図46のステップS207-3-6-47からステップS207-3-6-69では、前述のステップS207-3-6-22からステップS207-3-6-46と同様の迂回処理を行うが、Eが端末収容装置であることを前提としている点、ステップS207-3-4-58で迂回先の論理ネットワークの候補が存在しない場合にステップS207-3-4-76へ移る点が異なっている。詳細は省略する。
図59は、図45のステップS207-3-6-21から図46のステップS207-3-6-69までのステップで行われる迂回処理の概要を示している。図59に示すように、これらのステップでは、処理対象のフローセグメントの迂回対象区間の両端の論理ノード(図中のSとE)と論理ネットワーク構築装置を共有する論理ノードを有するフローセグメントや論理ネットワークを検索し、それらのフローセグメントへの迂回量を増やしたり、あるいは、それらの論理ネットワークへ新規にトラヒックを迂回して、当該迂回対象区間の輻輳の回避を試みている。
次に、ステップS207-3-6-70以降について説明する。図47のステップS207-3-6-70からステップS207-3-6-71は、Eが端末収容装置ではない場合に、迂回対象区間(変数Phaseの値が0の場合は小区間di、Phaseの値が1の場合は区間d(S-E))を下流方向に広げることによって迂回先の論理ネットワークの探索区間を広げる処理である。
ステップS207-3-6-70では、処理中のフローセグメントNのフローF(N)の伝送経路において、現在の迂回対象区間の最も下流の論理ノードであるEよりもさらに下流に論理ノード、または、端末収容装置があるかどうかを検査し、存在すれば迂回対象区間の最も下流の論理ノードを1つ下流に移動して(ステップS207-3-6-71)、ステップS207-3-6-22に戻る。Eよりも下流に論理ノード、あるいは端末収容装置がなければステップS207-3-6-72に移る。
ステップS207-3-6-72では、変数Phaseの値を検査する。変数Phaseの値が0であることは、ステップS207-3-6-74およびS207-3-6-75をまだ一度も実施しておらず、前述の各小区間di の迂回解消処理を実施しているフェーズであることを意味している。ステップS207-3-6-72の検査においてPhaseの値が0の場合、現在迂回処理を実施中の小区間diを下流方向に拡張できなくなったことを意味している。したがって、iの値がステップS207-3-6-11で定まったnに等しいか否かを検査し(ステップS207-3-6-73)、nでなければステップS207-3-6-17に戻って次の小区間の迂回解消処理に移る。ステップS207-3-6-72の検査においてPhaseの値が0でない場合は、既に一度ステップS207-3-6-74およびS207-3-6-75を実行して、小区間di 毎の迂回解消処理を終了し、区間d(S-E)を上流方向および下流方向へ拡張しながら迂回先の論理ネットワークの探索区間を広げる処理を実施中であることを意味している。この場合はステップS207-3-6-81へ写り、区間d(S-E)を上流方向に拡張する、2回目以降の処理を実行する。ステップS207-3-6-81からS207-3-6-86はこの処理を表すステップであるが、これはステップS207-3-6-74からS207-3-6-80(区間d(S-E)を上流方向へ拡張する1回目の処理)と同様であるため、詳細は省略する。
ステップS207-3-6-73の検査においてiの値がnである場合、小区間毎の輻輳回避処理が全ての小区間について完了したことを意味している。したがって、次に、区間d(S-E)を上流方向および下流方向へ拡張しながら迂回先の論理ネットワークの探索区間を広げて迂回解消処理を実施するフェーズに移る。そのため、まずステップS207-3-6-74において、
処理中のフローセグメントNのフローF(N)の伝送経路においてSよりもさらに上流に論理ノードがあるかを検査する。Sよりも上流に論理ノードがなければステップS207-3-6-87に移る。ステップS207-3-6-87では、現在処理中のフローセグメントのレベル値Lvが0か否かを検査する。もしLvの値が0であれば、これ以上の迂回処理はできないので、本サブルーチンを終了する。Lvの値が0でなければ、現在処理中のフローセグメントへトラヒックを迂回している迂回元のフローセグメントが存在し、この迂回元のフローセグメントがトラヒックを迂回している他のフローセグメントが存在して、それらのフローセグメントへのトラヒックの迂回量を増やすことにより現在処理中のフローセグメントへの迂回量を減らせる可能性があるため、この方法による輻輳回避を試みるためにステップS207-3-6-91へ移る。ステップS207-3-6-91以降の処理については後述する。
ステップS207-3-6-74の検査において、処理中のフローセグメントNのフローF(N)の伝送経路においてSよりもさらに上流に論理ノードが存在する場合は、変数Phaseの値を1にし(ステップS207-3-6-75)て、区間d(S-E)を拡張しながらの迂回解消処理フェーズに移る。ステップS207-3-6-76ではS*をSの1つ上流の論理ノードに設定し、ステップS207-3-6-77ではEをステップS207-3-6-1で決定したEに戻す。これにより、d(S-E)の区間を上流方向へ1論理ノード分拡張する。そして、この新たに設定したd(S*-E)全体の輻輳解消のために迂回すべき帯域量r' を式5、6で算出する(ステップS207-3-6-78)。
ただしこのとき、ステップS207-3-6-76で定めたS*から他の論理ネットワークへ迂回可能な帯域量はr' を下回る可能性がある。このため、ステップS207-3-6-79において、S*から他の論理ネットワークへ迂回可能な帯域量、すなわち、フローセグメントNにおけるフローF(N)の伝送経路上におけるS*からの送出帯域量r*を求め、ステップS207-3-6-78で求めたr' とr* の小さい方の値をS*からの迂回量rとする(ステップS207-3-6-80)。なお、通信品質管理装置は各論理ノードからの送出帯域量を常時管理していることを前提としているため、この管理情報からr*の値を求めることができる。そして、S*からの迂回量rが決定すると、ステップS207-3-6-22へ戻って迂回先の論理ネットワークの検索処理を実施する。
ステップS207-3-6-88は、図45または図46の、迂回量追加サブルーチンまたは新規迂回サブルーチンの処理によって目標とする迂回量r の他の論理ネットワークへの迂回が成功した後の処理である。変数Phaseの値が0の場合は、ステップS207-3-6-13へ戻って、次の小区間diの処理に移る。変数Phaseの値が0でない場合は、区間d(S-E)全体の輻輳が回避された否かを検査し(ステップS207-3-6-89)、解消されていれば本サブルーチンを終了する。解消されていなければ、ステップS207-3-6-81へ移り、区間d(S-E)を上流方向へ新たに拡張して迂回解消処理を実行する。
ステップS207-3-6-90は、ステップS207-3-6-18の検査において、最後の小区間dn の輻輳が解消されていることを確認した後の処理である。区間d(S-E)全体の輻輳が解消されていれば本サブルーチンを終了し、解消されていなければステップS207-3-6-74に移って、区間d(S-E)を拡張しながら輻輳回避処理を実行するフェーズに移行する。
図47のステップS207-3-6-76からステップS207-3-6-78は、Eが端末収容装置の場合に、処理対象の論理ネットワークの迂回対象区間を広げる処理である。Eを下流にずらすことはできないため、S'iを上流にずらす処理だけを行っている。
図62は、図47のステップS207-3-6-70からステップS207-3-6-90の処理の概要を示したものである。すなわち、輻輳区間である元々の迂回対象区間を拡張しながら、輻輳回避のための迂回先候補の論理ネットワークを検索している。論理ノードSからEまでの元々の迂回対象区間を、図中の同(2)、同(3)、同(4)のように下流の方向へ1つずつ広げながら迂回先を探索していく。そして、それでも輻輳が解消しない場合は、図中の同(5)のように元の迂回対象区間の最も上流の論理ノードSを上流の方向へ1つ移動した後、迂回対象区間の最も下流の論理ノードをEから始めて1つずつ下流に移動しながら迂回対象区間を広げ、迂回先を探索していく。以下同様にして、処理中のフローセグメントの当該コンテンツの伝送経路における最も上流の論理ノードに到達するまで探索処理を続けている。
次に、ステップS207-3-6-91以降の処理について説明する。図48のステップS207-3-6-91では、現在処理中のフローセグメントNに対してトラヒックを迂回している迂回元のフローセグメントN-における、トラヒックの迂回元の論理ノードAを特定する。ステップS207-3-6-92では、フローセグメントNから迂回元のフローセグメントN-へのトラヒックの戻し先となる論理ノードBを特定する。ただし、トラヒックを迂回元のフローセグメントへ戻していない場合は受信側の端末収容装置をBとする。
そして、ステップS207-3-6-93からステップS207-3-4-107において、現在処理中の論理ネットワークNへ迂回されているトラヒックの全部あるいは一部を、同じ論理ノードAを迂回元として共有する、現在処理中のフローセグメントとは異なるフローセグメントへスライドする操作が可能か否かを調べる。以下、これらの処理について説明する。
ステップS207-3-6-93では、トラヒックのスライド先の候補となるフローセグメントの有無を検査する。具体的には、上記の論理ノードAから当該コンテンツのトラヒックの迂回を受け、かつ、上記の論理ノードBまたはBより下流の論理ノードへ当該トラヒックを戻すか受信側の端末収容装置まで当該トラヒックを伝送するフローセグメントの有無を検査する。
そのようなフローセグメントがなければステップS207-3-6-108へ移る。ステップS207-3-6-108以降の処理については後述する。上記のようなフローセグメントが存在すれば、そのうちの1つをフローセグメントN*として選択し(ステップS207-3-6-94)、迂回元のフローセグメントの論理ノードAと論理ネットワーク間接続されている論理ノードXを特定し(ステップS207-3-6-95)、さらに、フローセグメントN*におけるフローF(N*)の伝送経路の最も下流の論理ノード、または、端末収容装置であるYを特定する(ステップS207-3-6-96)。
これらのノードが特定できると、N*におけるXからYまでのフローF(N*)の伝送経路の各論理リンクの出力トラヒック量通知の値を参照して、同伝送経路に沿った可用帯域aを算出(ステップS207-3-6-97)した後、ステップS207-3-6-98へ移る。
ステップS207-3-6-98では、AからX方向の迂回リンクの可用帯域Lxを算出する。そして、ステップS207-3-6-99ではYが端末収容装置であるか否かを検査し、端末収容装置であれば、上記のaとLxの最小値Tを算出し(ステップS207-3-6-101)、それを迂回リンクまで含めたN*の可用帯域とする。Yが端末収容装置でなければ、YからN-へ戻る迂回リンクの可用帯域Lyを算出し(ステップS207-3-6-100)、aとLxとLyの最小値Tを算出して(ステップS207-3-6-102)、それを迂回リンクまで含めたN*の可用帯域とする。
ステップS207-3-6-103では上記Tの値が0かどうかを検査する。Tの値が0であればステップS207-3-6-93に戻り、0でなければステップS207-3-6-104へ移る。
ステップS207-3-6-104では、上記Tの値と迂回量rとの大小を比較する。もしTの値がrの値以上であれば、迂回量rを全て論理ネットワークN*へスライドすることで現在処理中のフローセグメントNの輻輳回避処理を完了することができるため、ステップS207-3-6-105でこのトラヒックのスライド処理を実行し、本サブルーチンを終了する。ステップS207-3-6-105のトラヒックのスライドサブルーチンの処理内容については後述する。
もしTの値がrの値より小さければ、迂回量rのうち、上記の論理ネットワークN*へスライドできる量はTだけであるため、ステップS207-3-6-106でこのトラヒックのスライド処理を実行したのち、迂回すべき帯域量の残りの値を更新(ステップS207-3-6-107)して、ステップS207-3-6-93へ戻る。
図63は、図48のステップS207-3-6-91からステップS207-3-6-107の処理の例を示したものである。図63において、輻輳回避の処理対象のフローセグメントのLvの値は1である。同図は、このフローセグメントの、論理ノードSからEに至る迂回対象区間の輻輳回避処理を示している。既にLvの値が2の2つのフローセグメントへトラヒックの迂回を実行しており、まだ輻輳が解消しないため、図48のステップS207-6-79からステップS207-3-6-95を実行して、Lvの値が1の2つのフローセグメントN*に、論理ノードAを介してトラヒックを移動した様子を示している。
次に、図48のステップS207-3-6-108以降の処理について説明する。ステップS207-3-6-108では、現在処理中のフローセグメントNへトラヒックを迂回している迂回元のフローセグメントN-におけるフローF(N-)の伝送経路において、Aよりも上流に位置し、かつ、そのノードから他のフローセグメントへトラヒックを迂回している論理ノードが存在するか否かを検査する。そのような論理ノードがあれば、Aに最も近いものをA'として(ステップS207-3-6-109)、ステップS207-3-6-110へ移る。そのような論理ノードがなければ本サブルーチンを終了する。
図49のステップS207-3-6-110では、上記のA'から迂回しているトラヒック量を増加させることができるフローセグメントの候補の有無を検査する。具体的には、論理ノードA'からフローF(N-)のトラヒックの迂回を受け、かつ、ステップS207-3-4-92で特定した論理ノードBまたはBより下流の論理ノードへ当該トラヒックを戻すか受信側の端末収容装置まで当該トラヒックを伝送するフローセグメントの有無を検査する。
そのようなフローセグメントが存在しなければ、N-におけるフローF(N-)の伝送経路上のA'よりも上流に、フローF(N-)のトラヒックを迂回している論理ノードがあるか否かを検査し(ステップS207-3-6-125)、存在しなければ本サブルーチンを終了する。存在すれば、そのような論理ノードのうち、現在のA'に最も近いものを改めてA'として(ステップS207-3-6-126)、ステップS207-3-6-106へ戻る。
ステップS207-3-6-110の検査でフローセグメントが存在すれば、そのうちの1つをフローセグメントN*'として選択する(ステップS207-3-6-111)。そして、迂回元のフローセグメントの論理ノードA'と論理ネットワーク間接続されている論理ノードXを特定(ステップS207-3-6-112)し、さらに、N*'におけるフローF(N*')の伝送経路の最も下流の論理ノード、または、端末収容装置であるYを特定する(ステップS207-3-6-113)。
これらのノードが特定できると、N*'におけるフローF(N*')の伝送経路の各論理リンクの出力トラヒック量通知の値を参照して、同伝送経路に沿った可用帯域aを算出(ステップS207-3-6-114)した後、ステップS207-3-6-115へ移る。
ステップS207-3-6-115では、AからX方向の迂回リンクの可用帯域Lxを算出する。そして、ステップS207-3-6-116ではYが端末収容装置であるか否かを検査し、端末収容装置であれば、上記のaとLxの最小値Tを算出し(ステップS207-3-6-118)、それを迂回リンクまで含めたN*'の可用帯域とする。Yが端末収容装置でなければ、YからN-へ戻る迂回リンクの可用帯域Lyを算出し(ステップS207-3-6-117)、aとLxとLyの最小値Tを算出して(ステップS207-3-6-119)、それを迂回リンクまで含めたN*'の可用帯域とする。
ステップS207-3-6-120では、上記可用帯域の値Tが0かどうかを検査する。Tの値が0であればステップS207-3-6-110に戻り、0でなければステップS207-3-6-121へ移る。
ステップS207-3-6-121では、上記Tの値と、迂回量rとの大小を比較する。Tの値がrの値以上であれば、論理ノードA'から論理ネットワークN*'へ迂回する当該コンテンツのトラヒックの量をrだけ増やし、論理ノードAから現在処理中の論理ネットワークへの迂回量をrだけ減らして輻輳回避処理を完了することができるため、ステップS207-3-6-122でこのトラヒック移動処理を実行し、本サブルーチンを終了する。ステップS207-3-6-122のトラヒック移動サブルーチンの内容内容については後述する。
Tの値がrの値より小さければ、論理ノードA'から論理ネットワークN*'への迂回量として増加できるのはTだけであるため、ステップS207-3-6-123でこのトラヒック移動処理を実行したのち、迂回すべき帯域量の残りの値を更新(ステップS207-3-6-124)して、ステップS207-3-6-110へ戻る。
図64は、図48のステップS207-3-6-108から図49のステップS207-3-6-124の処理の例を示したものである。図64において、輻輳回避の処理対象のフローセグメントのLvの値は1である。同図は、このフローセグメントの、論理ノードSからEに至る迂回対象区間の輻輳回避処理を示している。既にLvの値が2の2つのフローセグメントへトラヒックの迂回、および、論理ノードAから同じようにトラヒックを迂回している他のフローセグメントへのトラヒックのスライド(図では省略してある)を実行しており、それでも輻輳が解消しないため、図48のステップS207-6-96から図49のステップS207-3-6-112を実行して、論理ノードA'からトラヒックの迂回を受けているLvの値が1のフローセグメントN*'にトラヒックを移動した様子を示している。
次に、図50のフローチャートを用いて、図44から図46の可用帯域算出サブルーチンS207-3-6-5、S207-3-6-37、S207-3-61の処理内容の詳細を説明する。このサブルーチンは、フローセグメントを表すN1、可用帯域を測定したいN1における伝送経路の始点となる論理ノードまたは端末収容装置の識別子であるS1、同伝送経路の終点となる論理ノードまたは端末収容装置のIPアドレスR1、および、当該伝送経路上を伝送されるフローを構成するパケット群のポート番号P1、を引数に持ち、フローF(N1)、すなわち、宛先IPアドレスR1、宛先ポート番号P1を持つパケット群の、N1における伝送経路に沿った可用帯域の値を算出するサブルーチンである。なお、ステップS245-1は通信品質管理装置の動作であり、残りのステップはS1で識別されるパケット転送手段または端末収容装置の動作である。
ステップS245-1では、S1で識別されるパケット転送手段または端末収容装置に対し、フローセグメントN1におけるフローF(N1)、すなわち、宛先IPアドレスR1、宛先ポート番号P1を持つパケットの伝送経路についての経路・トラヒック情報要求を送信する。ここまでのステップは通信品質管理装置が実施する処理である。
上記の経路・トラヒック情報要求を受信したS1内のパケット転送手段または端末収容装置は、ステップS245-2以降の処理を実行する。これらの処理ステップは、図22に示したパケット転送手段1が実行する処理をフローチャートとして表したものである。
ステップS245-2では、ステップS245-3で送信する情報要求パケットのTTLの値を表す変数iの値を1に初期化する。そして、ステップS245-3で、このiの値をTTLの値に持ち、宛先IPアドレスがR1、宛先ポート番号がP1の情報要求パケットを送信し、そのパケットに対する応答を待つ(ステップS245-4)。
ステップS245-5では、受信した応答パケットが、送信した情報要求パケットに対するICMP TTL expire通知であるか否かを検査する。ICMP TTL expire通知の場合、通知されてきた論理リンクの情報を記録し(ステップS245-6)、iの値をインクリメントして(ステップS245-7)、ステップS245-3に戻って次の情報要求パケットを送信する。ICMP TTL expire通知でない場合はステップS245-8へ移る。
ステップS245-8では、受信したパケットが情報要求パケットに対する受信通知であるか否かを検査する。そうでない場合は受信したパケットを廃棄し(ステップS245-11)、ステップS245-4に戻って応答パケットを待つ。受信通知である場合は、情報要求パケットの宛先に至るまでの全ての論理リンクに関する情報が得られたので、それらを用いて式4に基づいて可用帯域を算出し(ステップS245-9)、経路情報と可用帯域の値を通信品質管理装置に返信して(ステップS245-10)、処理を終了する。以上が可用帯域算出サブルーチンの説明である。
次に、図51のフローチャートを用いて、図45、および、図46の迂回量追加サブルーチンS207-3-6-31、S207-3-6-32、S207-3-6-55、S207-3-6-56の処理内容の詳細を説明する。このサブルーチンは、トラヒックの迂回元のフローセグメントN1、N1からトラヒックの迂回を受けている迂回先のフローセグメントN2、N1からN2への迂回リンクの始点(迂回元)となる論理ノードS1、N2からN1への戻りリンクの終点(戻り先)となる論理ノード、または、N1におけるフローF(N1)の伝送経路の終点となる端末収容装置を表すE1、N1からN2への迂回リンクの終点(迂回先)となる論理ノードS2、N2からN1への戻りリンクの始点(戻り元)となる論理ノード、または、N2におけるフローF(N2)の伝送経路の終点となる端末収容装置を表すE2、および、N1からN2へのトラヒックの迂回量の増加分V、を引数に持つ。このサブルーチンは、N1とN2以外のフローセグメントを流れるトラヒック量を変化させることなく、S1からS2へのトラヒックの迂回量をVだけ増加する処理を実行する。
また、図51のフローチャート、すなわち、迂回量追加サブルーチンによって実行される処理の概要を図65に示す。
図51のステップS246-1からステップS246-7は、N2への迂回量の増加に伴ってN2からさらにトラヒックを迂回しているフローセグメントへの迂回量が増加しないようにするための処理である。具体的には、S2からE2に至るフローF(N2)の伝送経路上にあって、フローF(N2)のトラヒックを他のフローセグメントへ迂回している迂回リンクを有する論理ノードについて、その論理ノードから迂回リンクへの出力パケット分配率を減じる処理を実施する。
ステップS246-1では、論理ノードまたは端末収容装置を指す変数nの値をS2に初期化する。ステップS246-2では、変数nが指している論理ノードに、フローF(N2)のトラヒックを他のフローセグメントへ迂回している迂回リンクが存在するか否かを検査し、そのような迂回リンクが存在しなければステップS246-5へ移る。存在していれば、そのうちの1つをLとして選択する(ステップS246-3)。
そして、ステップS246-4で、論理ノードnからLへのフローF(N2)のパケット出力の分配率を減少させるための迂回方法変更通知をn上のパケット転送手段に対して発行する。具体的には、ステップS246-8でN2への迂回量を追加する前の時点でのnへのフローF(N2)のトラヒックの総入力帯域をrnとして、パケット出力のLへの分配率をrn/(rn+V)倍とする。これにより、N1からN2への迂回量をV増加させた後も、Lを介してN2から他のフローセグメントへ迂回されるトラヒックの量を不変にできる。
ステップS246-5の検査では、nがE2を指していればステップS246-8へ移り、そうでなければnを、N2のフローF(N2)の伝送経路上の1つ下流のノードを指すように変更する(ステップS246-6)。その結果、nが端末収容装置を指しているか否かを検査し(ステップS246-7)、端末収容装置を指していれば、パケット出力の分配率を減じる処理は終了したためステップS246-8へ移る。端末収容装置を指していなければステップS246-2へ戻る。
ステップS246-8は、N1からN2への迂回量を増加させるための処理である。すなわち、論理ノードS1から論理ノードS2へのフローF(N1)の出力パケット分配率を増やす迂回方法変更通知をS1上のパケット転送手段に対して発行する。具体的には、S1へのフローF(N1)の総入力帯域をrとして、パケット出力のS2への分配率を100V/rパーセント増やす。これにより、N1からN2への迂回量をVだけ増加させることができる。
ステップS246-9からステップS246-15は、N1からN2への迂回量の増加に伴って、S1から下流の部分でN1からさらにトラヒックを迂回している他のフローセグメントへの迂回量が減少しないようにするための処理である。ステップS246-8の処理とこれらの処理を両方実行することで初めてS1からE1に至る迂回対象区間を流れるフローF(N1)のトラヒック量をVだけ減少させることができる。具体的には、S1より1つ下流の論理ノードからE1に至るフローF(N1)の伝送経路上にあって、他のフローセグメントへフローF(N1)のトラヒックを迂回している論理ノードについて、その論理ノードからそれぞれのフローセグメントへの出力パケット分配率を増やす処理を実施する。
ステップS246-9では、論理ノードを指す変数nを、S1より1つ下流の論理ノードに設定する。ステップS246-10では、変数nが指している論理ノードから他のフローセグメントへの迂回が存在するか否かを検査し、存在していなければステップS246-13へ移る。存在していれば、対応する迂回リンクのうちの1つをLとして選択する(ステップS246-11)。
そして、ステップS246-12で、論理ノードnからLへのフローF(N1)の出力パケット分配率を増加させるための迂回方法変更通知をn上のパケット転送手段に対して発行する。具体的には、ステップS246-8でN1からN2への迂回量を追加する前の時点でのnへのフローF(N1)のトラヒックの総入力帯域をrnとして、Lへの出力パケット分配率をrn/(rn-V)だけ増加する。これにより、N1からN2への迂回量をV増加させた後も、Lを介して他のフローセグメントへ迂回されるトラヒックの量を不変にできる。
ステップS246-13の検査では、nがE1を指していればステップS246-16へ移り、そうでなければnを、N1のフローF(N1)の伝送経路上の1つ下流のノードを指すように変更する(ステップS246-14)。その結果、nが端末収容装置を指すか否かを検査し(ステップS246-15)、端末収容装置を指していれば、出力パケット分配率を増やす処理は終了したためステップS246-16へ移り、端末収容装置を際していなければステップS246-10へ戻る。
ステップS246-16からステップS246-23は、各論理ノードが下流の論理ノードに転送しているトラヒック量に関する情報を更新する処理である。通信品質管理装置がパケット転送手段に対して出力パケット分配率に関する適切な指示を発行するために、このような情報を通信品質管理装置において管理しておく必要がある。ただし、本実施形態ではこのような情報を管理するための方法は規定しない。
ステップS246-16からステップS246-19では、N1からの迂回トラヒックが増大したN2の、S2からE2に至るフローF(N2)の伝送経路上の論理ノードについて、下流への転送トラヒック量がV増加したことを記録する。また、ステップS246-20からステップS246-23では、N1の、S1からE1に至るフローF(N1)の伝送経路上の論理ノードについて、下流への転送トラヒック量がV減少したことを記録する。以上が迂回量追加サブルーチンの処理内容の詳細の説明である。
次に、図52のフローチャートを用いて、図45、および、図46の論理ネットワーク間接続検査サブルーチンS207-3-6-39、S207-3-63の処理内容の詳細を説明する。このサブルーチンは、2つのフローセグメントの間での構築可能性を検査する迂回リンクの始点候補および終点候補である論理ノードS1とA1、および、同検査を施す戻りリンクの始点候補および終点候補である論理ノードB1とE1を引数に持つ。このサブルーチンは、S1とA1を接続する迂回リンク、および、B1とE1を接続する戻りリンクの構築可能性を検査し、これらのリンク部分の合計帯域の値を返す。
まずステップS247-1では、変数Flagを0に初期化する。そして、ステップS247-2において、S1とA1との間に迂回リンクを新規に構築可能なリソース、具体的には、図20で説明した論理ネットワーク間通信用仮想NICの空きがあるか否かを検査する。もし空きがあれば、変数Flagの値を1にセットし(ステップS247-3)、変数L1の値を、1本の論理ネットワーク間接続リンクに対して標準で割り当てられる帯域量(この値は事前に設定されることを仮定する)にセットして、ステップS247-8に移る。
上記の検査でリソースの空きがなければ、S1とA1を接続する既存の論理ネットワーク間接続用リンクの有無、すなわち、他のフローと共有可能な論理ネットワーク間接続用リンクの有無を検査する(ステップS247-5)。そのようなリンクがなければ、変数Lの値、すなわち、論理ネットワーク間接続用リンク部分の合計帯域の値を0にセットして(ステップS247-7)論理ネットワーク間接続が不能であることを示し、本サブルーチンを終了する。ステップS247-5の検査で既存の論理ネットワーク間接続用リンクが存在すれば、当該リンクのS1からA1方向のトラヒック情報を参照して可用帯域を求め、その値を変数L1にセットして(ステップS247-6)ステップS247-8へ移る。
ステップS247-8は、本サブルーチンの呼び出し時に与えられた引数E1がNull(空)か否かを検査する。E1がNullの場合は、図46のステップS207-3-6-63を経由して本サブルーチンが呼び出されており、これは、戻りリンクの検査が必要ないことを意味する。したがって、この場合は変数Flagの値を検査して迂回リンクの新規構築が必要な場合か、あるいは、既存の迂回リンクをそのまま利用する場合かの判断を実施する(ステップS247-9)。Flagの値が1の場合、迂回リンクの新規構築が必要なため、論理ネットワーク制御装置に対してS1とA1との間の新規の論理ネットワーク間接続用リンクの構築を依頼する(ステップS247-10)。Flagの値が1でない場合はステップS247-10をスキップする。そして、ステップS247-11で、リンク部分の合計帯域の値Lを、ステップS247-3またはステップS247-6で設定したL1にセットして本サブルーチンを終了する。
ステップS247-8の検査でE1がNullでない場合は、図45のステップS207-3-6-39を経由して本サブルーチンが呼び出されており、これは、戻りリンクの検査が必要であることを意味する。したがって、この場合はステップS247-12で、E1とB1との間に戻りリンクを新規に構築可能なリソース、具体的には、図20で説明した論理ネットワーク間通信用仮想NICの空きがあるか否かを検査する。上記の検査でリソースの空きがなければ、E1とB1を接続する既存の論理ネットワーク間接続用リンクの有無、すなわち、他のフローと共有可能な論理ネットワーク間接続用リンクの有無を検査する(ステップS247-15)。そのようなリンクがなければ、変数Lの値、すなわち、論理ネットワーク間接続用リンク部分の合計帯域の値を0にセットして(ステップS247-17)論理ネットワーク間接続が不能であることを示し、本サブルーチンを終了する。ステップS247-15の検査で既存の論理ネットワーク間接続用リンクが存在すれば、当該リンクのB1からE1方向のトラヒック情報を参照して可用帯域を求め、その値を変数L2にセットして(ステップS247-16)ステップS247-18へ移る。
ステップS247-12の検査でリソースの空きがあれば、戻りリンクの新規構築が可能なため、論理ネットワーク制御装置に対してE1とB1との間の新規の論理ネットワーク間接続用リンクの構築を依頼する(ステップS247-13)。そして、変数L2の値を、1本の論理ネットワーク間接続リンクに対して標準で割り当てられる帯域量にセットして、ステップS247-18に移る。
ステップS247-18では、変数Flagの値を検査して迂回リンクの新規構築が必要な場合か、あるいは、既存の迂回リンクをそのまま利用する場合かの判断を実施する。Flagの値が1の場合、迂回リンクの新規構築が必要なため、論理ネットワーク制御装置に対してS1とA1との間の新規の論理ネットワーク間接続用リンクの構築を依頼する(ステップS247-19)。Flagの値が1でない場合はステップS247-19をスキップする。そして、ステップS247-20で、リンク部分の合計帯域の値Lを、L1とL2の小さい方の値にセットして本サブルーチンを終了する。以上が、論理ネットワーク間接続検査サブルーチンの説明である。
次に、図53、および、図54のフローチャートを用いて、図45、および、図46の新規迂回サブルーチンS207-3-6-44、S207-3-6-45、S207-3-6-67、S207-3-6-68の処理内容の詳細を説明する。このサブルーチンは、トラヒックの迂回元のフローセグメントN1、N1から新規にトラヒックの迂回を受ける迂回先のフローセグメントN2、N1からN2への迂回リンクの始点(迂回元)となる論理ノードS1、N2からN1への戻りリンクの終点(戻り先)となる論理ノード、または、N1におけるフローF(N1)の伝送経路の終点となる端末収容装置を表すE1、N1からN2への迂回リンクの終点(迂回先)となる論理ノードS2、N2からN1への戻りリンクの始点(戻り元)となる論理ノード、または、N2におけるフローF(N2)の伝送経路の終点となる端末収容装置を表すE2、N2内の、フローF(N2)の伝送経路におけるE2の1つ上流の論理ノードE3、当該コンテンツの受信端末の識別子(IPアドレス)R1、当該コンテンツの受信アプリケーションのポート番号P1、フローF(N2)に割り当てた新規ポート番号P2、および、N1からN2へ迂回するトラヒック量V、を引数に持つ。このサブルーチンは、新規に構築した論理ネットワーク間接続リンクを使って、N1からN2へトラヒックを新たにVだけ迂回する処理を実行する。
また、図53、および、図54のフローチャート、すなわち、新規迂回サブルーチンによって実行される処理の概要を図66に示す。
ステップS248-1では、E1(およびE2。E1とE2は共に端末収容装置であるか、あるいは、共に端末収容装置ではないかのいずれかである)が端末収容装置であるか否かを検査し、これらが端末収容装置でなければステップS248-2、ステップS248-3を実行した後ステップS248-6へ移り、端末収容装置であればステップS248-4、ステップS248-5を実行した後ステップS248-6へ移る。
ステップS248-2では、E2内のパケット転送手段に対し、N2へ迂回されてきたパケット群を全て、迂回元のN1へ戻す動作を実行させるための新規迂回通知を発行する。具体的には、E2の代表IPアドレス、および、ポート番号P2を宛先に持つパケット群に対し、宛先アドレスをフローF(N1)の宛先IPアドレスに、宛先ポート番号をフローF(N1)の宛先ポート番号に書き換え、また、パケット転送動作におけるnext hopを戻りリンクの対向インタフェースとして、E1へ転送するように指示する。
ステップS248-3では、S1内のパケット転送手段に対し、フローF(N1)のパケット群のうち帯域量Vに相当する量を迂回先のフローセグメントN2へ転送する動作を実行させるための新規迂回通知を送信する。ただし、迂回したパケットは最終的にN1へ戻すことを前提とした制御を実施する。具体的には、フローF(N1)のパケット群のうち100V/rパーセントのものについて、宛先アドレスをE2の代表IPアドレスに、宛先ポート番号をP2に書き換え、また、パケット転送動作におけるnext hopを迂回リンクの対向インタフェースとして、S2へ転送するように指示する。
ステップS248-4では、E3内のパケット転送手段に対し、フローF(N2)を構成するパケット群の宛先IPアドレスを当該コンテンツの受信端末のIPアドレスに、宛先ポート番号を受信アプリケーションのポート番号に書き換え、パケット転送動作におけるnext hopをE2(端末収容装置)として、E2へ転送させる新規迂回通知を発行する。
ステップS248-5では、S1内のパケット転送手段に対し、フローF(N1)のパケット群のうち帯域量Vに相当する量を迂回先のフローセグメントN2へ転送する動作を実行させるための新規迂回通知を送信する。ただし、迂回したパケットはN1へ戻さず、N2内の端末収容装置を介してコンテンツの受信端末に転送することを前提とした制御を実施する。具体的には、フローF(N1)のパケット群のうち100V/rパーセントのものについて、宛先アドレスをE3の代表IPアドレスに、宛先ポート番号をP2に書き換え、パケット転送動作におけるnext hopを迂回リンクの対向インタフェースとして、S2へ転送するように指示する。
実際のトラヒックの迂回はステップS248-3、あるいは、ステップS248-5の実行によって始まる。ステップS248-6からステップS248-12は、図51のステップS246-9からステップS246-15と同様の処理で、N1からN2への新規迂回に伴って、S1から下流の部分でN1からさらにトラヒックを迂回している他のフローセグメントへの迂回量が減少しないようにする処理である。詳細は省略する。また、ステップS248-13からステップS248-20は、図51のステップS246-16からステップS246-23と同様の、トラヒック量に関する情報の更新処理であるため、詳細は省略する。
以上が新規迂回サブルーチンの処理内容の詳細の説明である。次に、図55、および、図56のフローチャートを用いて、図48のトラヒックのスライドサブルーチンS207-3-6-105、S207-3-6-106の処理内容の詳細を説明する。このサブルーチンは、輻輳回避処理対象の迂回対象区間を含むフローセグメントN1、N1のトラヒックのスライド先となるフローセグメントN2、N1とN2へトラヒックを迂回している迂回元のフローセグメントN0、N0からN1への迂回リンクの終点(迂回先)となる論理ノードS1、N1からN0への戻りリンクの始点(戻り元)となる論理ノード、または、N1におけるフローF(N1)の伝送経路の終点となる端末収容装置を表すE1、N0からN2への迂回リンクの終点(迂回先)となる論理ノードS2、N2からN0への戻りリンクの始点(戻り元)となる論理ノード、または、N2におけるフローF(N2)の伝送経路の終点となる端末収容装置を表すE2、N0からN1およびN2への迂回リンクの始点(迂回元)となる論理ノードR、および、N1からN2へスライドするトラヒック量V、を引数に持つ。このサブルーチンは、N0からN1へ迂回されているトラヒックのうち、帯域量Vに相当する量を、論理ノードRを介してN1からN2へスライドする処理を実行する。
また、図55、および、図56のフローチャート、すなわち、トラヒックスライドサブルーチンによって実行される処理の概要を図67に示す。
ステップS249-1からステップS249-7は、図51のステップS246-1からステップS246-7と同様の処理で、N1からN2へのトラヒックのスライドに伴って、フローF(N2)の伝送経路におけるS2から下流の部分で、N2から他のフローセグメントへのトラヒックの迂回量が増加しないようにする処理である。詳細は省略する。
ステップS249-8は、R内のパケット転送手段に対し、フローF(N0)のパケット群のN2への迂回量をVだけ増加させるための迂回方法変更通知を発行する。具体的には、フローF(N0)のN2への出力パケット分配率を100V/rパーセントだけ増やすように指示する。また、ステップS249-9は、R内のパケット転送手段に対し、フローF(N0)のパケット群のN1への迂回量をVだけ減らす動作を実行させるための迂回方法変更通知を発行する。具体的には、フローF(N0)のN1への出力パケット分配率を100V/rパーセントだけ減らすように指示する。
ステップS249-10からステップS249-16は、図51のステップS246-9からステップS246-15等と同様の処理で、N1からN2へのトラヒックのスライドに伴って、フローF(N1)の伝送経路におけるS1から下流の部分で、N1から他のフローセグメントへの迂回量が減少しないようにして、S1からE1に至るフローF(N1)の伝送経路上のトラヒック量を所望のVだけ減少させる処理である。詳細は省略する。
ステップS249-17からステップS249-24は、図51のステップS246-16からステップS246-23等と同様の処理であり、詳細は省略する。
以上がトラヒックのスライドサブルーチンの処理内容の詳細の説明である。次に、図57、および、図58のフローチャートを用いて、図49のトラヒック移動サブルーチンS207-3-6-122、S207-3-6-123の処理内容の詳細を説明する。このサブルーチンは、輻輳回避処理対象の迂回対象区間を含むフローセグメントN1、N1のトラヒックの移動先となるフローセグメントN2、N1とN2へトラヒックを迂回している迂回元のフローセグメントN0、N0からN1への迂回リンクの終点(迂回先)となる論理ノードS1、N1からN0への戻りリンクの始点(戻り元)となる論理ノード、または、N1におけるフローF(N1)の伝送経路の終点となる端末収容装置を表すE1、N0からN2への迂回リンクの終点(迂回先)となる論理ノードS2、N2からN0への戻りリンクの始点(戻り元)となる論理ノード、または、N2におけるフローF(N2)の伝送経路の終点となる端末収容装置を表すE2、N0からN1への迂回リンクの始点(迂回元)となる論理ノードR、N0からN2への迂回リンクの始点(迂回元)となる論理ノードR'、および、N1からN2へ移動するトラヒック量V、を引数に持つ。このサブルーチンは、N0からN1へ迂回されているトラヒックのうち、帯域量Vに相当する量を、論理ノードR'を制御してN1からN2へ移動する処理を実行する。
また、図57、および、図58のフローチャート、すなわち、トラヒック移動サブルーチンによって実行される処理の概要を図68に示す。
図57のステップS250-1からステップS250-7は、N1からN2へのトラヒックの移動に伴って、フローF(N2)の伝送経路におけるS2から下流の部分で、N2から他のフローセグメントへの迂回量が増加しないようにする処理である。詳細は省略する。
ステップS250-8は、R'内のパケット転送手段に対し、フローF(N0)のパケット群のN2への迂回量をVだけ増加させるための迂回方法変更通知を発行する。具体的には、フローF(N0)のN2への出力パケット分配率を100V/rパーセントだけ増やすように指示する。
ステップS250-9からステップS250-15は、N0上のフローF(N0)の伝送経路のR'からRまでの部分において、N0から他のフローセグメントへの迂回量が減少しないようにして、R'からRに至るフローF(N0)の伝送経路上のトラヒック量を所望のVだけ減少させる処理である。詳細は省略する。
ステップS250-16からステップS250-18は、R内のパケット転送手段に対し、フローF(N0)のパケット群のN1以外への迂回量を減らさないようにするための指示である。また、ステップS250-19は、同じくR内のパケット転送手段に対し、フローF(N0)のパケット群のN1への迂回量をVだけ減少させる動作を実行させるための指示である。ステップS250-18とステップS250-19により、R内のパケット転送手段からN1への迂回量はVだけ減少し、それ以外のフローセグメントへの迂回量は不変にできる。
ステップS250-20からステップS250-26は、N1からN2へのトラヒックの移動に伴って、N1上のフローF(N1)の伝送経路のS1からE1までの部分において、N1から他のフローセグメントへの迂回量が減少しないようにして、フローF(N1)のS1からE1に至る伝送経路上のトラヒック量を所望のVだけ減少させる処理である。詳細は省略する。
ステップS250-27からステップS250-30は、フローF(N2)のS2からE2に至る伝送経路上の論理ノードについて、同伝送経路での下流への出力トラヒック量がV増加したことを記録する。また、ステップS250-31からステップS250-34では、N0の、R'からRに至るフローF(N0)の伝送経路上の論理ノードについて、同伝送経路での下流への出力トラヒック量がV減少したことを記録する。さらに、ステップS250-35からステップS250-38では、N1の、フローF(N1)のS1からE1に至る伝送経路上の論理ノードについて、同伝送経路での下流への出力トラヒック量がV減少したことを記録する。以上がトラヒックの移動サブルーチンの処理内容の詳細の説明である。
以上、図41のステップS207-3のトラヒックの迂回処理を説明した。
次に、図41のステップS207-6の迂回解消処理の詳細を説明する。図69はこの迂回解消処理サブルーチンの大きな流れをなすフローチャートで、帯域に余裕のあるフローセグメント、すなわち、余剰リンクを持つフローセグメントの有無を調べ、そのようなフローセグメントが見つかった場合にそこから他のフローセグメントへの迂回を解消する処理の流れを示している。そして、図70から図72は、図69内のトラヒック回収処理サブルーチン、すなわち、他のフローセグメントへの迂回を解消する際の実際の処理内容を詳細に記載したものである。また、図73は、図70から図72のフローチャートが表すトラヒック回収処理の概要を示した図である。これらについて以下に説明する。
図69の処理では、まず、処理中のレベルを保持する変数Lvを0に初期化する(ステップS207-6-1)。そして、全Lvの全フローセグメントの中に輻輳リンクを含むフローセグメントが存在するか否かを検査し(ステップS207-6-2)、そのようなフローセグメントが1つでも存在すれば、迂回解消処理を中断して図41のステップS207-3へ移る。
ステップS207-6-2の検査において輻輳リンクを含むフローセグメントがなければ、レベルLvのフローセグメント群の中に、図40で説明した余剰リンクを持つ、まだ迂回解消処理を実行していないフローセグメントが存在するかどうかを検査する(ステップS207-6-3)。そのようなフローセグメントが存在しなければ、レベルLv+1のフローセグメントが存在するかどうかを検査し(ステップS207-6-6)、そのようなフローセグメントが存在すればLvの値を1だけ増やして(ステップS207-6-7)ステップS207-6-2へ戻る。レベルLv+1のフローセグメントが存在しなければ、本サブルーチンを終了し、図41のステップS207-7へ移る。ステップS207-6-3の検査で余剰リンクを持つフローセグメントが存在すれば、その中から処理対象とするフローセグメントNを1つ選択し(ステップS207-6-4)、実際のトラヒック回収処理を実行(ステップS207-6-5)した後、ステップS207-6-2に戻る。
すなわち、図41のステップS207-6の迂回解消処理では、レベルLvの値が小さい論理ネットワークから順に余剰リンクを持つフローセグメント、すなわち、帯域に余裕のあるフローセグメントの有無を検査し、トラヒックの回収を実行する。
図70から図72は、図69のステップS207-6-5のトラヒック回収処理のサブルーチンの内訳を示すフローチャートである。まず、図73を参照しながら、図70から図72のフローチャートによって実施される処理内容の概要を説明する。
図70から図72のフローチャートでは、図69で選択した処理対象のフローセグメント(図73中のフローセグメントN)について、フローF(N)の伝送経路上の論理ノードで、同経路の下流方向に余剰リンクを持つものについて、当該論理ノードから他のフローセグメントへの迂回の有無を調べ、もしがあれば、迂回停止条件を満足する場合に当該迂回リンクへの当該フローのパケット転送を停止し、さらに、他のフローとのリンクの共有がなければ当該迂回リンクや当該戻りリンクを削除する処理を実行する。なお、上記の迂回停止条件とは、Nにおいて迂回リンクと接続されている論理ノード(図73中のn)から、戻りリンクがある場合はNにおいて戻りリンクと接続されている論理ノード(図73中のn')、戻りリンクが無い場合はフローF(N)の伝送経路の終点である端末収容装置に至るまでのフローF(N)の伝送経路上の論理リンクが全て余剰リンクであること、および、同伝送経路上の可用帯域が当該迂回リンクへのトラヒックの迂回量以上であること、としている。すなわち、本迂回解消処理では、余剰リンクだけを使って、迂回リンクへ転送しているトラヒックの全てを回収する処理を実行する。以上が図70から図72のフローチャートによって実現される処理の概要である。以下では、まず図70、および、図71のフローチャートについて詳細に説明する。
図70、および、図71のサブルーチンは、トラヒックの回収元となるフローセグメントNを引数に持つ。ステップS207-6-5-1では、論理ノードを指す変数nを、Nにおける、フローF(N)の伝送経路を形成する論理ノードで、同経路の下流方向に余剰リンクを持つもののうち、同経路上の最上流の論理ノードで初期化する。
ステップS207-6-5-2では、全てのLvに属する論理ネットワークの中で輻輳リンクを含むものが1つでも存在するか否かを検査し、存在すれば図41のステップS207-3の迂回処理へ移る。すなわち、輻輳区間を含む論理ネットワークが現れた時点で迂回解消処理を中断し、輻輳回避のための迂回処理を優先して実行する。
ステップS207-6-5-2の検査において輻輳リンクを含む論理ネットワークがなければ、ステップS207-6-5-3へ移る。ステップS207-6-5-3では、変数nが指す論理ノードから1つ下のレベルのフローセグメントへフローF(N)のトラヒックを迂回している迂回リンクの有無を検査する。そのような迂回リンクがなければ、N内のフローF(N)の伝送経路において、下流方向に余剰リンクを持つ論理ノードがnよりも下流に存在するか否かを検査し(ステップS207-6-5-4)、存在しなければ本サブルーチンを終了する。そのような論理ノードが存在すれば、nを、フローF(N)の伝送経路内の、下流方向に余剰リンクを持つ1つ下流の論理ノードに移動し(ステップS207-6-5-5)、ステップS207-6-5-2へ戻る。
ステップS207-6-5-3の検査で迂回リンクが存在すれば、そのうちの1つdを選択する(ステップS207-6-5-6)。そして、レベルLv+1の迂回先のフローセグメントからの戻りリンクd'の有無を特定し(ステップS207-6-5-7、S207-6-5-8)、戻りリンクd'が存在すれば、Nにおいて戻りリンクd'と接続されている論理ノードn'を特定(ステップS207-6-5-9)するとともに、フローF(N)の伝送経路上でn'より1つ上流の論理ノードn''を特定(ステップS207-6-5-11)して、図71のステップS207-6-5-12へ移る。戻りリンクd'が存在しなければ、NにおいてフローF(N)を受信する端末収容装置n'を特定(ステップS207-6-5-10)するとともに、フローF(N)の伝送経路上でn'より1つ上流の論理ノードn''を特定(ステップS207-6-5-11)して、図71のステップS207-6-5-12へ移る。
ステップS207-6-5-12では、NにおけるフローF(N)の伝送経路において、nからn'に至るまでの部分の論理リンクが全て余剰リンクであるかどうかを検査する。もし余剰リンクでないものが1つでもあれば、ステップS207-6-5-2へ戻り、論理ノードnの別の迂回リンクの処理に移る。上記の論理リンクの全てが余剰リンクであれば、ステップS207-6-5-13に移り、NにおけるフローF(N)の伝送経路のnからn'までの部分の可用帯域aを式4に基づいて算出する。
そして、ステップS207-6-5-14で、ステップS207-6-5-6で選択した迂回リンクdに迂回しているフローF(N)のトラヒック量Vと上記の可用帯域aの値とを比較する。aの値がV以上であれば、論理ノードnから迂回リンクdへのトラヒックの迂回を停止して当該トラヒックを全てフローセグメントNへ戻すことができると判断し、ステップS207-6-5-15以降の処理を実行する。もしaの値がVより小さければ、迂回リンクdへ迂回しているトラヒックの回収は行わず、ステップS207-6-5-2へ戻る。
ステップS207-6-5-15からステップS207-6-5-20は、dを介したトラヒックの迂回の取り消し処理を実行して、フローF(N)の伝送経路上の、論理ノードnの1つ下流の論理ノードからn''に至るまでの論理ノードへの入力トラヒック量が増えた場合に、これらの論理ノードから他のフローセグメントへの迂回トラヒック量が増えないようにするため、これらの論理ノードからのフローF(N)の出力パケット分配率を予め下げておく処理である。図51等の処理と同様のため詳細は省略する。
この処理が完了すると、論理ノードnから迂回リンクdへのパケット転送取り消し処理を実行する(ステップS207-6-5-21)。このサブルーチンの処理内容の詳細は後述する。
論理リンクへのパケット転送取り消し処理を行った後、フローセグメントN内のフローF(N)の伝送経路上の論理ノードnからn'に至るまでの論理リンクを流れる当該フローのトラヒック量はV増加する。ステップS207-6-5-22からステップS207-6-5-26では、このトラヒック情報を記録するため、論理ノードnからn''について、フローF(N)のトラヒックの下流方向への出力帯域情報をV増加する処理を実行している。この処理が完了すればステップS207-6-5-2へ戻る。以上が図70、および、図71の説明である。
図72のフローチャートは、図71のステップS207-6-5-21の迂回リンクへのパケット転送取り消し処理サブルーチンの処理内容の詳細である。本サブルーチンは、トラヒックの迂回元の論理ノードnと、その論理ノードからのトラヒックの迂回に使用されている迂回リンクdを引数に持つ。
ステップS263-1ではまず、迂回リンクdを介したnの対向の論理ノードAと、dからの迂回トラヒックを伝送している、Aを含んだフローセグメントN'を特定する(図73中にAおよびN'で示す)。そして、迂回リンクdへのパケット転送を停止するため、論理ノードn内のパケット転送手段に対し、フローF(N)の迂回リンクdへの迂回取り消し通知を送信(ステップS263-2)した後、パケット転送手段における当該処理の完了が保証できるだけの十分な時間だけ待つ(ステップS263-3)。なお、この時間を決定する方法については規定しない。
上記の完了通知を受信すると、ステップS263-4からステップS263-11の処理によって、N'におけるフローF(N')の伝送経路上の、Aから末端の論理ノードのそれぞれについて、フローF(N')の下流への出力帯域情報を0にクリアする操作、および、その論理ノードからフローF(N')のトラヒックの他のフローセグメントへの迂回に使用されていた迂回リンクが存在するか否かを検査し、存在すれば当該論理ノードと当該迂回リンクを引数として自サブルーチンを再帰的に呼び出す処理(ステップS263-6)を実行する。これらの処理により、トラヒックの回収元のフローセグメントNから見たトラヒックの回収対象のフローセグメントN'について、N'からさらに他のフローセグメントに向かう全ての迂回リンクへのパケット転送取り消し処理が実行される。
上記の処理を完了すると、フローセグメントN'からNへの戻りリンクが存在する場合は、その戻りリンクへパケット転送していたパケット転送手段に対して迂回取り消し通知を送信(ステップS263-13)した後、当該戻りリンクの他のフローとの共有の有無を検査して(ステップS263-15)、他のフローとの共有がなければ当該戻りリンクの削除を論理ネットワーク制御装置に対し要請する(ステップS263-16)。また、上記戻りリンクの有無にかかわらず、迂回リンクdの他のフローとの共有の有無を検査して(ステップS263-12)、他のフローとの共有がなければ当該迂回リンクの削除を論理ネットワーク制御装置に対し要請する(ステップS263-17)。以上により、迂回リンクdを介したフローセグメントへのパケット転送の取消処理が完了する。以上が図72の説明である。
以上の図69から図72の手順により、図41のステップS207-6の迂回解消処理サブルーチンが実行される。
<実施形態2>
本発明の実施形態2は、本発明の実施形態1においてパケット転送手段、および、端末収容装置によって実現していた可用帯域測定機能を、後述の経路算出装置170によって実現するものである。
本発明の実施形態2における伝送経路変更システムの物理構成は、図2示した、本発明の実施形態1におけるそれと同様である。
ただし、本発明の実施形態2におけるユーザ拠点100の物理構成は、図3に示した、本発明の実施形態1におけるそれとは異なる。本発明の実施形態2におけるユーザ拠点100の物理構成を図74に示す。同図に示すように、実施形態1におけるユーザ拠点の物理構成に対して経路算出装置170を加えた構成となっている。
経路算出装置170は、一般の汎用コンピュータ装置である。本装置上では、図2のトランスポートネットワークの上に構築される各論理ネットワークのトポロジー情報(各論理ネットワークを構成する端末収容装置、論理ノード、論理リンク、それらの接続関係、および、各論理リンクに割り当てられた帯域、から成る情報)を保持し、その情報を利用しながら、各論理ネットワーク内で動作しているIP経路制御プロトコルの経路設定動作をシミュレートすることにより各論理ネットワークにおけるフローの伝送経路を算出する機能を実現するプログラムが稼働する(本実施形態ではこのプログラムの実現方法の詳細は規定しない)。
本実施形態2では、通信品質管理装置120は、論理ネットワークの可用帯域を算出する際、実施形態1の図22に示した方法は実行せず、上記の経路算出装置170によって算出された伝送経路から可用帯域を算出する。すなわち、本実施形態2では、実施形態1の図22に示したパケット転送手段や端末収容装置を実行主体とするパケットの送受信を利用せず、コンピュータ装置の上で動作するプログラムを用いて可用帯域を算出する点が実施形態1と異なる。
したがって、本実施形態2におけるパケット転送手段、端末収容装置の構成も実施形態1におけるそれとは異なる。パケット転送手段においては、図21に示した、出力処理部におけるトラヒック通知部からICMP処理部への情報通知(論理リンク名、出力方向の帯域割り当て値、出力ビットレート)、および、図23から図28に示した経路・トラヒック情報要求処理部と受信パケット処理部が、実施形態2では不要となる。また、端末収容装置においては、図6、および、図29から図35に示した、トラヒック通知部からICMP処理部への情報通知(論理リンク名、出力方向の帯域割り当て値、出力ビットレート)、制御通知処理部、および、可用帯域測定手段が、実施形態2では不要となる。
本実施形態2において通信品質管理装置120が経路算出装置170を用いて可用帯域を算出する手順は、図75のフローチャートに示す通りである。まずステップS266-1で、自身と同じユーザ拠点内の経路算出装置170に対し、フローセグメントNにおける、RaとPによって定まるフローのトラヒックの、Sを始点とする経路情報要求を送信する。その後、経路算出装置170からの経路情報の到着を待ち(ステップS266-2)、それを受信すると、与えられた経路情報を参照して、当該フローの伝送経路を構成する各論理リンクへの割り当て帯域、および、各データ転送装置や端末収容装置から通知されるそれらの論理リンクへの出力トラヒックのビットレート情報を特定し、これらの値を用いて実施形態1の説明で用いた(式4)に基づいて所望の可用帯域の値を算出する(ステップS266-3)。
なお、図75に示した可用帯域算出部分以外の全ての制御の手順は、実施形態1と同じである。
以上が本発明の実施形態2の説明である。
<ハードウェア構成例>
図76に、本発明の実施形態に係る論理ネットワーク構築装置200、論理ネットワーク制御装置300、通信品質管理装置120、経路算出装置170のハードウェア構成例を示す。各装置は、CPU(Central Processing Unit)501等のプロセッサ、RAM(Random Access Memory)やROM(Read Only Memory)等のメモリ装置502、ハードディスク等の記憶装置503等から構成されたコンピュータでもよい。各装置の機能及び処理は、記憶装置503、または、メモリ装置502に格納されているデータやプログラムをCPU501が実行することによって実現される。また、各装置に必要な情報は、入出力インタフェース装置504から入力され、各装置において求められた結果は、入出力インタフェース装置504から出力されてもよい。
<本発明の実施形態の効果>
一態様によれば、ある論理ネットワーク内でのデータ伝送中に輻輳が発生した場合、図77に示すように、十分な余剰帯域を有する他の論理ネットワークとの間で論理ネットワーク間接続リンクを構築し、その論理ネットワークへトラヒックを迂回して輻輳箇所を回避することができる。
すなわち、当該論理ネットワーク間接続リンクに関与する論理ネットワーク構築装置と、同論理ネットワーク構築装置内のパケット転送手段の制御だけで元の論理ネットワーク内のデータ伝送経路の一部分を変更することができるため、伝送経路の変更を一部分だけ局所的に行うことができずグローバルな処理が必要となるためにそれに伴う処理負荷がネットワークの性能低下につながる可能性があるという従来技術の課題を解決できる。
さらに、一態様によれば、トラヒックの迂回先の論理ネットワーク内では、元の論理ネットワークから転送されてきたパケットは、迂回先の論理ネットワーク内の既存のIPルーティング設定、すなわち、各論理ノード内のパケット転送手段が保持するパケット転送表に従って図77中の始点から終点まで転送される。すなわち、迂回先の論理ネットワークの各パケット転送手段のパケット転送表の内容を変更しなくても迂回経路を確立できる。このため、経路変更に関係する全てのネットワーク機器の設定変更が必要となりそれに伴う処理負荷がネットワークの性能低下につながる可能性があるという従来技術の課題を解決できる。
さらに、一態様によれば、輻輳が発生した論理ネットワークから迂回先の論理ネットワークに向けて論理ネットワーク間接続リンクを介してパケットを転送するパケット転送手段においては、当該トラヒックのフローを構成するパケット群のうち、当該論理ネットワーク間接続リンクを介して迂回先の論理ネットワークへ転送するパケット数の割合を任意の値に設定できる。このため、あるフローに属するパケット群を複数の経路に任意の割合で振り分けるような柔軟な流量制御ができず、ネットワークの帯域リソースを有効利用しにくいという従来技術の課題を解決できる。
<補足>
説明の便宜上、本発明の実施形態に係る伝送経路変更システムの各装置は機能的なブロック図を用いて説明しているが、本発明の実施形態に係る伝送経路変更システムの各装置は、ハードウェア、ソフトウェア、または、それらの組み合わせで実現されてもよい。例えば、本発明の実施形態に係る伝送経路変更システムの各装置は、コンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。
また、本発明の実施形態は、コンピュータに対して本発明の実施形態に係る伝送経路変更システムの各装置の機能を実現させるプログラム、コンピュータに対して本発明の実施形態に係る方法の各手順を実行させるプログラム等により、実現されてもよい。また、各機能部が必要に応じて組み合わせて使用されてもよい。また、本発明の実施形態に係る方法は、実施形態に示す順序と異なる順序で実施されてもよい。
以上、ある論理ネットワーク内でのデータ伝送中に輻輳が発生した場合、グローバルな処理や経路変更に関係する全てのネットワーク機器の設定変更を行うことなく、他の論理ネットワークとの間で論理ネットワーク間接続リンクを構築し、その論理ネットワークへトラヒックを迂回して輻輳を回避または軽減するための手法について説明したが、本発明は、上記の実施形態に限定されることなく、特許請求の範囲内において、種々の変更・応用が可能である。