(57)【特許請求の範囲】
【請求項１】
複数の通信制御装置がそれぞれリンクで接続されることで構成されるネットワークシステムに用いられる通信制御装置であって、
前記通信制御装置は、受信部と、送信部と、経路テーブルと、既定流量計算部と、未定流量計算部と、転送先決定部とを有しており、
前記経路テーブルには、パケットの送信元と宛先との組み合わせで定義されるフローごとに、そのフローの宛先への経路上に位置し、自身に隣接する転送先の前記通信制御装置と、その隣接する前記通信制御装置の候補になる前記通信制御装置の台数とが対応づけて格納されており、
前記受信部は、他の前記通信制御装置からパケットを受信すると、そのパケットが自身宛てでないときに、受信したパケットを前記送信部へと通知し、
前記送信部は、通知されたパケットの宛先をもとに前記経路テーブルを検索し、その宛先に向かうための隣接する前記通信制御装置を特定して、その特定した前記通信制御装置へパケットを送信し、
前記既定流量計算部は、隣接する前記通信制御装置の候補が１台のフローと、隣接する前記通信制御装置の候補が複数台のフローのうちの前記受信部を介して受信したフローとを、ネットワークシステム内の各リンクに割り当てることで、リンクごとの流量を計算し、
前記未定流量計算部は、
隣接する前記通信制御装置の候補が複数台のフローのうちの前記送信部を介して送信するフローについて、複数台の候補のうちの１台を選択して、その選択した前記通信制御装置へのリンクに割り当てる仮割当処理について、選択する前記通信制御装置を前記仮割当処理ごとに異なるものとして複数回実行し、
前記既定流量計算部が計算したリンクごとの流量と、前記仮割当処理により割り当てられたフローのリンクごとの流量とを加算することにより、前記各仮割当処理におけるリンクごとの流量を計算し、
前記転送先決定部は、前記未定流量計算部が計算した前記各仮割当処理におけるリンクごとの流量を入力とする負荷評価関数を計算することにより、その負荷評価関数において負荷のばらつきが最も少ない前記仮割当処理を特定し、その特定した前記仮割当処理により各リンクに割り当てられたフローをもとに、前記経路テーブルを更新することを特徴とする
通信制御装置。
【請求項２】
前記未定流量計算部は、前記既定流量計算部が計算したリンクごとの流量と、前記仮割当処理により割り当てられたフローのリンクごとの流量とを加算するときに、各リンクごとの流量に対して、異なった重み値を乗算してから加算し、前記既定流量計算部が計算したリンクごとの流量にかかる重み値よりも、前記仮割当処理により割り当てられたフローのリンクごとの流量にかかる重み値を小さい値とすることを特徴とする
請求項１に記載の通信制御装置。
【請求項３】
前記転送先決定部は、前記負荷評価関数を計算するときに、リンクごとの流量について、最も大きい流量から最も小さい流量を減じた流量のレンジを計算し、そのレンジが最も小さい値である前記仮割当処理を、前記負荷評価関数において負荷のばらつきが最も少ない前記仮割当処理とすることを特徴とする
請求項１または請求項２に記載の通信制御装置。
【請求項４】
前記転送先決定部は、前記負荷評価関数を計算するときに、リンクごとの流量を入力とする分散評価関数を計算し、その分散値が最も小さい値である前記仮割当処理を、前記負荷評価関数において負荷のばらつきが最も少ない前記仮割当処理とすることを特徴とする
請求項１または請求項２に記載の通信制御装置。
【請求項５】
複数の通信制御装置がそれぞれリンクで接続されることで構成されるネットワークシステムに用いられる通信制御装置による通信制御方法であって、
前記通信制御装置は、制御部と、受信部と、送信部と、経路テーブルとを有しており、
前記経路テーブルには、パケットの送信元と宛先との組み合わせで定義されるフローごとに、そのフローの宛先への経路上に位置し、自身に隣接する転送先の前記通信制御装置と、その隣接する前記通信制御装置の候補になる前記通信制御装置の台数とが対応づけて格納されており、
前記制御部は、
前記受信部に、他の前記通信制御装置からパケットを受信させると、そのパケットが自身宛てでないときに、受信したパケットを前記送信部へと通知させる受信制御ステップと、
前記送信部に通知されたパケットの宛先をもとに前記経路テーブルを検索させ、その宛先に向かうための隣接する前記通信制御装置を特定させて、その特定した前記通信制御装置へパケットを送信させる送信制御ステップと、
隣接する前記通信制御装置の候補が１台のフローと、隣接する前記通信制御装置の候補が複数台のフローのうちの前記受信部を介して受信したフローとを、ネットワークシステム内の各リンクに割り当てることで、リンクごとの流量を計算させる既定流量計算ステップと、
隣接する前記通信制御装置の候補が複数台のフローのうちの前記送信部を介して送信するフローについて、複数台の候補のうちの１台を選択して、その選択した前記通信制御装置へのリンクに割り当てる仮割当処理について、選択する前記通信制御装置を前記仮割当処理ごとに異なるものとして複数回実行し、前記既定流量計算ステップで計算されたリンクごとの流量と、前記仮割当処理により割り当てられたフローのリンクごとの流量とを加算することにより、前記各仮割当処理におけるリンクごとの流量を計算させる未定流量計算ステップと、
前記未定流量計算ステップで計算された前記各仮割当処理におけるリンクごとの流量を入力とする負荷評価関数を計算することにより、その負荷評価関数において負荷のばらつきが最も少ない前記仮割当処理を特定させ、その特定した前記仮割当処理により各リンクに割り当てられたフローをもとに、前記経路テーブルを更新させる転送先決定ステップとを実行することを特徴とする
通信制御方法。
【請求項６】
前記制御部は、前記未定流量計算ステップにおいて、前記既定流量計算ステップで計算されたリンクごとの流量と、前記仮割当処理により割り当てられたフローのリンクごとの流量とを加算するときに、各リンクごとの流量に対して、異なった重み値を乗算してから加算し、前記既定流量計算ステップで計算されたリンクごとの流量にかかる重み値よりも、前記仮割当処理により割り当てられたフローのリンクごとの流量にかかる重み値を小さい値とすることを特徴とする
請求項５に記載の通信制御方法。
【請求項７】
前記制御部は、前記転送先決定ステップにおいて、前記負荷評価関数を計算するときに、リンクごとの流量について、最も大きい流量から最も小さい流量を減じた流量のレンジを計算し、そのレンジが最も小さい値である前記仮割当処理を、前記負荷評価関数において負荷のばらつきが最も少ない前記仮割当処理とすることを特徴とする
請求項５または請求項６に記載の通信制御方法。
【請求項８】
前記制御部は、前記転送先決定ステップにおいて、前記負荷評価関数を計算するときに、リンクごとの流量を入力とする分散評価関数を計算し、その分散値が最も小さい値である前記仮割当処理を、前記負荷評価関数において負荷のばらつきが最も少ない前記仮割当処理とすることを特徴とする
請求項５または請求項６に記載の通信制御方法。
【請求項９】
請求項５ないし請求項８のいずれか１項に記載の通信制御方法を、コンピュータに実行させることを特徴とする通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御装置、通信制御方法、および、通信制御プログラムの技術に関する。
【背景技術】
【０００２】
インターネットなどのネットワークシステムは、複数のルータがそれぞれリンクで接続されることで構成され、各ルータは、受信したパケットのヘッダに記載されている宛先アドレスを参照して、自ルータから宛先へ向かう隣接ルータへと、パケットを転送する。ここで、あるルータから宛先アドレスへの経路が分岐しているなどして、複数の隣接ルータの候補があるときには、それらの候補から転送先の１つの隣接ルータを選択する必要がある。
【０００３】
非特許文献１に記載のＬＮＦ（Left Neighbor First）and ＲＮＦ（Right Neighbor First）は、固定的に同じ１つの隣接ルータに転送することがあらかじめ決められているルーティング方法である。転送先の候補が２つあり、自身から見て、必ず左のリンクに送出するのがＬＮＦで、必ず右のリンクに送出するのがＲＮＦである。
【０００４】
非特許文献２に記載のＲＣＡ（Regional Congestion Awareness）は、ネットワーク内の特定のルータを宛先とするパケットを隣接ルータに転送するときに、転送する候補である複数の隣接ルータそれぞれについて、その隣接ルータの輻輳状態を参照して、転送先のルータを決定するルーティング方法である。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Zhao、You−Jian and Yue、Zu−Hui and Wu、Jian−Ping著、“Research on Next−Generation Scalable Routers Implemented with H−Torus Topology”、Journal of Computer Science and Technology、vol．23、684−693、2008．
【非特許文献２】P．Gratz、B．Grot、 and S．W．Keckler著、“Regional Congestion Awareness for Load Balance in Networks−on−Chip”、In International Symposium on High−Performance Computer Architecture、203−214、February 2008．
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ネットワークシステムの通信効率を向上させるためには、ネットワークシステムを構成する各構成要素にかかる負担を、なるべくバランスよく分散されることが、望ましい。もし、ある１つのルータだけに負荷が集中してしまうと、そのルータがネットワークシステム全体のボトルネックとなり、他のルータの処理能力に余裕があるにもかかわらず、ネットワークシステム全体の通信効率が向上しないためである。
【０００７】
一方、従来の技術では、ネットワークシステム全体の負荷分散を考慮した、転送先のルータを決定する方法は提案されていない。
非特許文献１では、そもそも負荷情報を全く考慮せず、常に同一の隣接ルータに転送するために、その転送先の隣接ルータへの負荷集中が発生しやすい。
非特許文献２では、負荷情報として隣接ルータ（隣接する通信制御装置）だけの輻輳状態を参照するだけなので、ルータ間のホップ数が２ホップ以上先に、ネットワークトポロジ全体に負荷を分散できる迂回路が存在していても、その迂回路は採用されづらい。
【０００８】
そこで、本発明は、前記した課題を解決し、パケットの転送先である隣接する通信制御装置を選択するときに、ネットワークシステム全体の負荷分散を実現することを、主な目的とする。
【課題を解決するための手段】
【０００９】
前記課題を解決するために、本発明は、複数の通信制御装置がそれぞれリンクで接続されることで構成されるネットワークシステムに用いられる通信制御装置であって、
前記通信制御装置が、受信部と、送信部と、経路テーブルと、既定流量計算部と、未定流量計算部と、転送先決定部とを有しており、
前記経路テーブルには、パケットの送信元と宛先との組み合わせで定義されるフローごとに、そのフローの宛先への経路上に位置し、自身に隣接する転送先の前記通信制御装置と、その隣接する前記通信制御装置の候補になる前記通信制御装置の台数とが対応づけて格納されており、
前記受信部が、他の前記通信制御装置からパケットを受信すると、そのパケットが自身宛てでないときに、受信したパケットを前記送信部へと通知し、
前記送信部が、通知されたパケットの宛先をもとに前記経路テーブルを検索し、その宛先に向かうための隣接する前記通信制御装置を特定して、その特定した前記通信制御装置へパケットを送信し、
前記既定流量計算部が、隣接する前記通信制御装置の候補が１台のフローと、隣接する前記通信制御装置の候補が複数台のフローのうちの前記受信部を介して受信したフローとを、ネットワークシステム内の各リンクに割り当てることで、リンクごとの流量を計算し、
前記未定流量計算部が、
隣接する前記通信制御装置の候補が複数台のフローのうちの前記送信部を介して送信するフローについて、複数台の候補のうちの１台を選択して、その選択した前記通信制御装置へのリンクに割り当てる仮割当処理について、選択する前記通信制御装置を前記仮割当処理ごとに異なるものとして複数回実行し、
前記既定流量計算部が計算したリンクごとの流量と、前記仮割当処理により割り当てられたフローのリンクごとの流量とを加算することにより、前記各仮割当処理におけるリンクごとの流量を計算し、
前記転送先決定部が、前記未定流量計算部が計算した前記各仮割当処理におけるリンクごとの流量を入力とする負荷評価関数を計算することにより、その負荷評価関数において負荷のばらつきが最も少ない前記仮割当処理を特定し、その特定した前記仮割当処理により各リンクに割り当てられたフローをもとに、前記経路テーブルを更新することを特徴とする。
その他の手段は、後記する。
【発明の効果】
【００１０】
本発明によれば、パケットの転送先である隣接する通信制御装置を選択するときに、ネットワークシステム全体の負荷分散を実現することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態に関するネットワークシステムの構成例を示す説明図である。
【図２】本発明の一実施形態に関するネットワークシステムに用いられるルータを示す構成図である。
【図３】本発明の一実施形態に関するルータによるフロー通信処理および経路変更処理を示すフローチャートである。
【図４】本発明の一実施形態に関するネットワークシステムを構成するネットワークトポロジを示す構成図である。
【図５】本発明の一実施形態に関する図４のネットワークシステムにおいて、フローの経路の変更処理を示す説明図である。
【発明を実施するための形態】
【００１２】
以下、本発明の一実施形態を、図面を参照して詳細に説明する。
【００１３】
図１は、ネットワークシステムの構成例を示す説明図である。ネットワークシステムは、複数のルータ１（通信制御装置）が、それぞれリンクで接続されて構成される。ルータ１とは、他装置から受信したフローのパケットを隣接するルータ１へと転送する転送手段と、自装置が作成したパケットを隣接するルータ１へと送信する送信手段とを備えた通信装置であり、ルータ専用機だけでなく、その他の通信機器、無線ネットワークを構築するデバイスなどによって構成されてもよい。
【００１４】
ルータ１は、制御部（ＣＰＵ）、記憶部（メモリ、ハードディスクなど）、および、通信部（受信部および送信部を実現するためのネットワークインタフェース）を備えるコンピュータとして構成される。ルータ１は、例えば、ホップ数に基づく最短経路法により構築されたルーティングテーブルを参照して、パケットの転送先を決定する。
なお、本実施形態の説明において、ルータごとにそのルータのＩＤ（図１のＲ１など）や、リンクごとにそのリンクのＩＤ（１から順に採番した番号）などを付して説明する。
【００１５】
【表１】
0005212503.tif 000002
【００１６】
表１は、図１のネットワークシステム上を流れるフローの分類を示す表である。
「フロー」とは、ネットワークを流れるトラフィック（パケット）のうちの、送信元と宛先との組み合わせが一致するパケットの集合を示す。フローの識別情報（送信元と宛先との組み合わせ）は、例えば、パケットのヘッダを読み取ることによって、取得することができる。
「送信元ルータ」とは、フローの送信元を示すルータである。
「宛先ルータ」とは、フローの宛先を示すルータである。
「隣接ルータ」とは、送信元ルータから宛先ルータへの経路上のルータ群のうち、自ルータからみて経路の次ホップに位置するルータ（換言すると、自ルータからみてパケットの直接の送信先であるルータ）である。なお、「宛先ルータ」が自ルータから直接リンクで接続されている場合、宛先ルータと隣接ルータとは、同じルータになる。
「転送先ルータ（適宜「転送先」と略す）」とは、送信元ルータから宛先ルータへのフローの経路が一意に決定したとき、その決定した経路上に位置する「隣接ルータ」である。
「転送先数」とは、自ルータからみた、所定の「宛先ルータ」に向かうための転送先ルータの候補数（隣接ルータの数）である。
【００１７】
「経路数」とは、送信元ルータから宛先ルータへの経路のうちの、ルーティングにホップ数に基づく最短経路法を採用した場合、最短ホップ数でフローを伝達できる経路の候補数である。
例えば、図１（ａ）では、送信元ルータ（Ｒ２）から宛先ルータ（Ｒ５）へのフローの経路数は、以下に示すように、「２」である。
・フローＦｙ（ルータＲ２→ルータＲ３→ルータＲ５：２ホップ）
・フローＦｚ（ルータＲ２→ルータＲ４→ルータＲ５：２ホップ）
また、図１（ａ）では、送信元ルータ（Ｒ４）から宛先ルータ（Ｒ５）へのフローの経路数は、フローＦｘ（ルータＲ４→ルータＲ５）の「１」である。なお、迂回経路（ルータＲ４→ルータＲ２→ルータＲ３→ルータＲ５）は、ホップ数が３であるため、最短経路には該当しない。
ここで、隣接ルータを通過する経路とは、「経路数」が最短（最小）である経路であることが、望ましい。つまり、「経路数」が最短ではない迂回経路を通過する次ホップのルータを、転送先ルータの候補である隣接ルータから除外してもよい。
【００１８】
「転送先」と「転送先数」とについて、例えば、図１（ａ）では、自ルータ（Ｒ２）からみて、送信元ルータ（Ｒ２）から宛先ルータ（Ｒ５）へのフローの「転送先数」は、２つ（転送先＝ルータＲ３，Ｒ４）である。
一方、図１（ｂ）では、自ルータ（Ｒ１）からみて、送信元ルータ（Ｒ１）から宛先ルータ（Ｒ５）へのフローの「転送先数」は、１つ（転送先＝ルータＲ２）である。フローＦｐでも、フローＦｑでも同じルータＲ２が「隣接ルータ」となるためである。
【００１９】
「方向」とは、自ルータからみた、フローの送受信の方向を示す。同じフローＦｙでも、ルータＲ２からみたら「方向＝送信」であり、ルータＲ５からみたら「方向＝受信」である。
「分類」とは、第１〜第４フローを「既定フロー」または「未定フロー」のいずれかに分類するものである。「既定フロー」とは、自ルータからみて宛先の「隣接ルータ」を複数の候補から１つの候補を選択する必要がないフローである。「未定フロー」とは、自ルータからみて宛先の「隣接ルータ」を複数の候補から１つの候補を選択する必要があるフローである。
【００２０】
第１フローは、経路数「１」かつ転送先数「１」かつ方向「送受信」に該当するフローであり、図１（ａ）では、例えば、ルータＲ４からみたフローＦｘが第１フローに該当する。
第２フローは、経路数「複数」かつ転送先数「１」かつ方向「送受信」に該当するフローであり、図１（ｂ）では、例えば、ルータＲ１からみた、フローＦｐやフローＦｑが該当する。
第３フローは、経路数「複数」かつ転送先数「複数」かつ方向「受信」に該当するフローであり、図１（ａ）では、例えば、ルータＲ５からみた、フローＦｙやフローＦｚが該当する。
第４フローは、経路数「複数」かつ転送先数「複数」かつ方向「送信」に該当するフローであり、図１（ａ）では、例えば、ルータＲ２からみた、フローＦｙやフローＦｚが該当する。
【００２１】
【表２】
0005212503.tif 000003
【００２２】
表２は、本実施形態で説明に用いる各パラメータを示す変数リストを示す表である。
【００２３】
カウンタ用（制御用）の変数「ｉ、ｊ、ｋ、ｒ」は、同じ処理を繰り返すときに、現在の処理対象を特定するために用いられる。
フローの流量を示す変数集合「ｆ１、ｆ２、ｆ３、ｆ４」は、表１で示した４種類のフローそれぞれのネットワークシステム上で流れている流量の値を示す。なお、ネットワークシステムには複数のリンクが存在するため、フローの流量を示す変数集合（例えば、ｆ１）のうちの所定のリンクでのフローの流量（例えば、２番目のリンクの流量）を示すために、配列表現（ｆ１［２］）を適宜用いている。
【００２４】
重み値「ｗ２、ｗ３、ｗ４」は、第２〜第４フローの流量「ｆ２，ｆ３，ｆ４」にそれぞれ乗算する値である。ｗ２、ｗ３、ｗ４は、それぞれ０より大きく１以下の値から任意に設定でき、ある重み値と、別の重み値とが同じ値でもよいし、別の値でもよい。
第２〜第４フローは、経路数が複数あるフローであり、経路が切り替わることで経由するルータが変わることもある。つまり、その複数の経路の内のどのリンクに割り当てられるかは、経路テーブル１３（図２参照）の経路表の内容や、転送先決定部１６（図２参照）で決定された経路に依存する。
【００２５】
よって、第２〜第４フローは、経路の「隣接ルータ」が変更される可能性があることも考慮するため、第２〜第４フローの各流量（ｆ２〜ｆ４）に対して、第１フローの重み「１」以下の重み値（ｗ２〜ｗ４）を乗算（重み付け演算）することによって、経路の切替が発生する可能性がない第１フローよりも、経路の切替が発生する可能性がある第２〜第４フローの影響を低く設定している。
以下の説明では、重み値「ｗ２＝１，ｗ３＝１，ｗ４＝０．５」を例に説明する。
【００２６】
計算結果格納用の変数集合「Ａ、Ｂ、Ｃ」は、ルータ１が第４フローの転送先である隣接ルータを特定するための計算結果（計算過程も含む）を格納するものである。これらの各変数集合の詳細は、図２の構成図や図３（ａ），図３（ｂ）のフローチャートにおいて、明らかにする。
【００２７】
図２は、ネットワークシステムに用いられるルータを示す構成図である。この図２の説明では、ルータ１内の各構成要素の処理概要を説明するものであり、その処理概要に対応する処理詳細（計算式など）は、後記する図３のフローチャートの説明において、明らかにする。
ルータ１は、受信部１１と、送信部１２と、経路テーブル１３と、既定流量計算部１４と、未定流量計算部１５と、転送先決定部１６とを含めて構成される。
なお、既定流量計算部１４、未定流量計算部１５、および、転送先決定部１６は、ルータ１の制御部（ＣＰＵ）がルータ１の記憶手段から読み取ったプログラムを実行することにより実現される。
【００２８】
受信部１１は、隣接ルータから受信したパケットあるいは自ルータが作成したパケットを受信する。
送信部１２は、送信対象のパケットの転送先である隣接ルータを、経路テーブル１３から特定し、その隣接ルータに対して、送信対象のパケットを送信する。
経路テーブル１３には、フローの宛先ごとに、その宛先に向かうための１つの隣接ルータが対応づけられている。
既定流量計算部１４は、流量ｆ１〜ｆ３、重みｗ２，ｗ３をもとに、リンクｉごとに既定流量Ａ［ｉ］を計算する。換言すると、既定流量計算部１４は、既定フローの各流量ｆ１〜ｆ３を、各リンクｉに割り当てる。
未定流量計算部１５は、ｊ＝１〜Ｍ回の仮割当を行うことで第４フローの流量ｆ４［ｊ］［ｉ］を特定し、その仮割当ごとに、仮割当流量Ｂ［ｊ］を計算する。換言すると、未定流量計算部１５は、未定フローの流量ｆ４を各リンクｉに割り当てるとともに、各リンクｉに割り当てられた既定フローと未定フローの合計値をもとに、各リンクｉの負荷を見積る。
転送先決定部１６は、複数の仮割当流量Ｂ［ｊ］から、それぞれの負荷評価関数を計算し、１つの仮割当流量Ｂ［ｋ］を仮割当から本割当として決定する。さらに、転送先決定部１６は、決定したｋ回目の仮割当のフロー経路上に位置する隣接ルータを、転送先として経路テーブル１３へと書き込む。
【００２９】
なお、転送先決定部１６は、同じフローのパケット群（送信元ルータと宛先ルータとの組み合わせが同じパケット群）を、同じ隣接ルータへと転送する。例えば、同じ時間帯において、図１（ａ）のフローＦｙかフローＦｚかのいずれかが本割当のフローとして決定され（例えば、フローＦｙ）、決定されなかったフローの経路（例えば、フローＦｚ）は用いられない。これにより、パケットの経路変更によるパケットの順序の入れ替わりを抑制する。
【００３０】
一方、非特許文献２の方法では、同じフローのパケットであっても、それぞれ異なる隣接ルータヘ順次転送されると、経路ごとの転送時間の差から宛先のルータで順序の入れ替わりが発生してしまい、ＴＣＰ（Transmission Control Protocol）などのセッションを管理しているトラフィックがネットワーク内に流れている場合には、宛先で到着したパケットが順番通りに届いていないとパケットの再送などの問題が生じる。
【００３１】
図３（ａ）は、ルータ１によるフロー通信処理を示すフローチャートである。
【００３２】
Ｓ１０１において、受信部１１は、隣接ルータから受信したパケットあるいは自ルータが作成したパケットを受信する。受信したパケットが、自ルータを宛先ルータとするパケットであれば、自ルータがそのままパケットを読み取り、送信部１２への通知を省略する。一方、自ルータを宛先ルータとするパケットでなければ、受信したパケットを転送用のパケットとして送信部１２に通知する。
【００３３】
Ｓ１０２において、送信部１２は、送信対象のパケット（自ルータが新たに作成したパケットや、受信部１１から通知された転送用のパケット）を受け、送信対象のパケットの宛先を検索キーとして、経路テーブル１３から該当するレコードの「転送先」である隣接ルータを特定する。
【００３４】
Ｓ１０３において、送信部１２は、Ｓ１０２で特定された隣接ルータに対して、送信対象のパケットを送信する。
【００３５】
図３（ｂ）は、ルータ１による経路変更処理を示すフローチャートである。この図３（ｂ）の処理は、所定契機（定期的に、または、不定期に）ごとに実行される。以下の説明では、後記する図４，図５のルータＲ１を自ルータとしたときの処理を一例として説明する。
【００３６】
【表３】
0005212503.tif 000004
【００３７】
表３は、パケットの伝送量を示す表である。この表は、行要素が送信元のルータ、列要素が宛先のルータである２次元の表である。例えば、１行目（Ｒ１）と２列目（Ｒ２）とが交差するセル値「２」とは、ルータ１からルータ２へのパケットの伝送量が２であることを示す。なお、対角要素（ｄ行目，ｄ列目）は、自ルータから自ルータヘのパケットの伝送量であり、簡単のために「０」とした。
ルータ１は、自身の記憶手段（図示省略）内に、表３のようなパケットの伝送量を示すデータをあらかじめ記憶しておく。
【００３８】
【表４】
0005212503.tif 000005
【００３９】
表４は、図３（ｂ）の処理を行う前（経路テーブル１３の変更前）における、ルータＲ１の経路テーブル１３と、各フローの経路（送信元ルータ、中継ルータ、宛先ルータ）を示す表である。この経路テーブル１３を構成する各パラメータ（フローごとの転送先数など）は、あらかじめルーティングプロトコルの処理により動的に作成されてもよいし、管理者が手入力した経路テーブル１３を用いてもよい。
【００４０】
経路テーブル１３において、１行目のフローＡ（ルータＲ１→ルータＲ２）と、２行目のフローＢ（ルータＲ１→ルータＲ３）との割当内容は、次のようになっている。
フローＡ（ルータＲ１→ルータＲ２）は、隣接ルータＲ４（ｉ＝１）へと送信される。
フローＢ（ルータＲ１→ルータＲ３）は、隣接ルータＲ４（ｉ＝１）へと送信される。
経路テーブル１３において、３行目〜５行目では、第２ルータ集合に属する各ルータ（Ｒ４，Ｒ５，Ｒ６）は、それぞれ第１ルータ集合のルータＲ１から直接接続されたリンクを介して、１ホップで通信可能である（宛先＝転送先）。
【００４１】
Ｓ２０１において、既定流量計算部１４は、既定流量Ａの計算に必要な入力パラメータ（流量ｆ１〜ｆ３、重みｗ２，ｗ３）を取得する。
そのため、まず、既定流量計算部１４は、表１で既定フローと分類されている第１〜第３フローの流量（ｆ１，ｆ２，ｆ３）を取得する。次に、既定流量計算部１４は、ルータ１内の記憶手段にあらかじめ格納されている重みリスト（図示省略）から、重み値「ｗ２＝１，ｗ３＝１」を取得する。
【００４２】
なお、第１〜第４フローのうちのどのフローに該当するかを分類する処理を例示する。
まず、既定流量計算部１４は、受信部１１が受信したパケットの通知を受け、そのパケットのヘッダを参照することで、フローの特定情報（送信元および宛先の組み合わせ）を取得する。
次に、既定流量計算部１４は、フローの特定情報を検索キーとして、ルータ１内の記憶手段にあらかじめ格納されているフロー分類リスト（図示省略）から検索し、そのフローの特定情報に対応するフローの分類結果（第１〜第４フローのうちのいずれか）を取得する。
つまり、フロー分類リストは、フローの特定情報ごとに、そのフローの分類結果（第１〜第４フローのうちのいずれか）をあらかじめ定義するものである。
【００４３】
例えば、ルータＲ１を自ルータとすると、後記する図４，図５のネットワークトポロジでは、第１フローは流れるものの、第２フローおよび第３フローは流れない。よって、表３のパケットの伝送量から、以下のようにフロー流量が取得される。
・ｆ１［１］＝２８、ｆ１［２］＝２７、ｆ１［３］＝１６
リンク番号「ｉ＝１」は、ルータＲ１とルータＲ４とを接続するリンクに付された番号である。
リンク番号「ｉ＝２」は、ルータＲ１とルータＲ５とを接続するリンクに付された番号である。
リンク番号「ｉ＝３」は、ルータＲ１とルータＲ６とを接続するリンクに付された番号である。
・ｆ２［ｉ］＝０（ｉ＝１，２，３）
・ｆ３［ｉ］＝０（ｉ＝１，２，３）
【００４４】
Ｓ２０２において、既定流量計算部１４は、リンクｉごとに既定流量Ａを計算する。つまり、計算式「既定流量Ａ［ｉ］＝ｆ１［ｉ］＋ｆ２［ｉ］×ｗ２＋ｆ３［ｉ］×ｗ３」を、各リンク（ｉ＝１〜Ｎ）ごとに計算する。
例えば、ルータＲ１を自ルータとしたときには、ルータＲ１に接続されている３つのリンク（ｉ＝１，２，３）ごとに、既定流量Ａ［ｉ］が計算される。
Ａ［１］＝２８＋１×０＋１×０＝２８
Ａ［２］＝２７＋１×０＋１×０＝２７
Ａ［３］＝１６＋１×０＋１×０＝１６
【００４５】
Ｓ２０３において、未定流量計算部１５は、転送先決定部１６が転送先を決定する対象となる第４フローの集合を取得する。そのため、未定流量計算部１５は、定期にもしくは不定期に、所定期間分に送信部１２が送信するパケットを、送信部１２から受け取る。そして、未定流量計算部１５は、送信部１２から受け取った各フローから、Ｓ２０１で説明したように第１〜第４フローの分類処理を行うことで、第４フローとして分類されたフローの集合を取得する。
【００４６】
Ｓ２０４において、未定流量計算部１５は、ｊ＝１〜Ｍ回の仮割当を行う。それぞれの仮割当は、第４フローを隣接ルータへ割り当てる組み合わせにより表現され、前回以前の仮割当の組み合わせと、今回の仮割当の組み合わせとは、異なる組み合わせとする。仮割当の結果は、ｆ４［ｊ］［ｉ］である。
なお、仮割当の組み合わせが複数個あるときに、どの組み合わせを優先的に選択するかについては、例えば、隣接ルータのルータＩＤがなるべく小さい値になる組み合わせを優先的に選択してもよい（非特許文献１に記載されている方法）。
【００４７】
以下では、仮割当の回数として、Ｍ＝２の場合を例示する。なお、一般的には、Ｓ２０３で取得した第４フローの集合から、その集合に属する各フローの転送先数（フローＡでは「３」、フローＢでは「３」）をそれぞれ取得し、取得した転送先数どうしを乗算した結果（３×３＝９）がＭ回の上限値（すべての組み合わせを網羅した仮割当回数）に該当する。
【００４８】
図４は、ネットワークシステムを構成するネットワークトポロジを示す構成図である。この図４のネットワークシステムの構成例は、後記する図５の仮割当処理の説明用のネットワークシステムである。
このネットワークシステムでは、６つのルータ１のうちのルータＲ１〜Ｒ３を第１ルータ集合とし、残りのルータＲ４〜Ｒ６を第２ルータ集合とすると、第１ルータ集合に属する任意のルータ１と、第２ルータ集合に属する任意のルータ１とが直接接続されている。
つまり、あるルータ１は、自身とは異なるルータ集合に属するルータ１への通信を、直接接続されたリンクを介して、１ホップで通信できる。一方、あるルータ１は、自身と同じルータ集合に属する他のルータ１への通信を、自身とは異なるルータ集合を経由して、２ホップで通信できる。
【００４９】
図５は、図４のネットワークシステムにおいて、フローの経路の変更処理を示す説明図である。図５では図４で示したリンクのうち、フローが流れないリンクを省略しているが、実際には図４で示したリンクは存在する。
【００５０】
図５（ａ）では、ｊ＝１回目の仮割当として、フローＡ（ルータＲ１→ルータＲ２）の隣接ルータをルータＲ４（ｉ＝１）に割り当て、フローＢ（ルータＲ１→ルータＲ３）の隣接ルータをルータＲ６（ｉ＝３）に割り当てる。つまり、ｆ４［１］［ｉ］は、以下の値である。
ｆ４［１］［１］＝２（表３の１行目２列目）
ｆ４［１］［２］＝０（仮割当の対象外）
ｆ４［１］［３］＝８（表３の１行目３列目）
【００５１】
図５（ｂ）では、ｊ＝２回目の仮割当として、フローＡ（ルータＲ１→ルータＲ２）の隣接ルータをルータＲ５（ｉ＝２）に割り当て、フローＢ（ルータＲ１→ルータＲ３）の隣接ルータをルータＲ５（ｉ＝２）に割り当てる。つまり、ｆ４［１］［ｉ］は、以下の値である。
ｆ４［２］［１］＝０（仮割当の対象外）
ｆ４［２］［２］＝１０（表３の１行目２列目＋表３の１行目３列目）
ｆ４［２］［３］＝０（仮割当の対象外）
【００５２】
Ｓ２０５において、未定流量計算部１５は、ｊ回目の仮割当における仮割当流量Ｂ［ｊ］を計算する。なお、仮割当流量Ｂ［ｊ］は、仮割当流量Ｂ［ｊ］［１］〜仮割当流量Ｂ［ｊ］［Ｎ］によって構成される。
そして、未定流量計算部１５は、ｉ番目のリンクごとの仮割当流量Ｂ［ｊ］［ｉ］を、以下の計算式で計算する。
仮割当流量Ｂ［ｊ］［ｉ］＝Ａ［ｉ］＋ｆ４［ｊ］［ｉ］×ｗ４
なお、Ａ［ｉ］は、Ｓ２０２で計算されたパラメータであり、既定流量計算部１４から未定流量計算部１５へと通知される。
【００５３】
ｊ＝１回目の仮割当では、仮割当流量Ｂ［１］は、以下の仮割当流量Ｂ［１］［ｉ］から構成される。
仮割当流量Ｂ［１］［１］＝Ａ［１］＋ｆ４［１］［１］×ｗ４＝２８＋２×０．５＝２９
仮割当流量Ｂ［１］［２］＝Ａ［２］＋ｆ４［１］［２］×ｗ４＝２７＋０×０．５＝２７
仮割当流量Ｂ［１］［３］＝Ａ［３］＋ｆ４［１］［３］×ｗ４＝１６＋８×０．５＝２０
【００５４】
ｊ＝２回目の仮割当では、仮割当流量Ｂ［２］は、以下の仮割当流量Ｂ［１］［ｉ］から構成される。
仮割当流量Ｂ［２］［１］＝Ａ［１］＋ｆ４［２］［１］×ｗ４＝２８＋０×０．５＝２８
仮割当流量Ｂ［２］［２］＝Ａ［２］＋ｆ４［２］［２］×ｗ４＝２７＋１０×０．５＝３２
仮割当流量Ｂ［２］［３］＝Ａ［３］＋ｆ４［２］［３］×ｗ４＝１６＋０×０．５＝１６
【００５５】
Ｓ２０６において、転送先決定部１６は、複数の仮割当流量Ｂ［ｊ］から、１つの仮割当流量Ｂ［ｋ］を転送先として決定する（換言すると、複数の仮割当の候補から、１つの割当内容を決定する）。この転送先の決定処理には、仮割当流量Ｂ［ｊ］を入力パラメータとする、ネットワークシステム全体の負荷分散度合いを評価する負荷評価関数を用いる。以下、負荷評価関数を２つ例示する。
【００５６】
１つめの負荷評価関数は、仮割当流量Ｂ［ｊ］の取り得る値の幅（レンジ）として、レンジＲ［ｊ］を計算する関数である。ｊ回目の仮割当（仮割当流量Ｂ［ｊ］）のレンジは、次の式で計算できる。
レンジＲ［ｊ］＝（仮割当流量Ｂ［ｊ］［ｉ］のうちの最大値）−（仮割当流量Ｂ［ｊ］［ｉ］のうちの最小値）
【００５７】
２つめの負荷評価関数は、仮割当流量Ｂ［ｊ］の各値の分散Ｖ［ｊ］を計算する関数である。ｊ回目の仮割当（仮割当流量Ｂ［ｊ］）の分散は、次の式で計算できる。
【００５８】
【数１】
0005212503.tif 000006
【００５９】
例えば、１つめの負荷評価関数を採用すると、転送先決定部１６は、仮割当流量Ｂ［１］および仮割当流量Ｂ［２］それぞれについて、以下の負荷評価値を計算する。
レンジＲ［１］＝２９−２０＝９
レンジＲ［２］＝３２−１６＝１６
そして、転送先決定部１６は、負荷評価値が低い「ｊ＝ｋ回目」の仮割当を転送先として採用する。この場合は、ｋ＝１回目が採用される。
【００６０】
Ｓ２０７において、転送先決定部１６は、決定したｋ回目の仮割当の経路を、経路テーブル１３へと書き込む。これにより、Ｓ１０２において、更新された経路テーブル１３を参照した送信部１２は、ネットワーク全体の負荷分散がなされたｋ＝１回目の割当結果である経路を活用することができ、ネットワークの利用効率を高めることができる。
【００６１】
【表５】
0005212503.tif 000007
【００６２】
表５は、表４の状態から、転送先決定部１６による経路テーブル１３の更新処理（Ｓ２０７）が実行された後の各テーブルを示す。経路テーブル１３の２行目の転送先が、図５（ａ）で示されるように、ルータＲ４からルータＲ６へと更新されている。
【００６３】
以上、転送先決定部１６が仮割当流量Ｂ［ｊ］の負荷評価関数をもとに、採用する仮割当の経路を決定する処理を説明した。
転送先決定部１６は、さらに、リンクごとの情報である仮割当流量Ｂ［ｊ］の代わりに、ルータごとの情報であるルータ負荷値Ｃ［ｊ］を負荷評価関数の入力パラメータとして用いてもよい。ルータ負荷値Ｃ［ｊ］は、ルータ負荷値Ｃ［ｊ］［１］〜ルータ負荷値Ｃ［ｊ］［Ｒ］の集合であり、ルータ負荷値Ｃ［ｊ］［１］とは、ｊ回目の仮割当における１番目のルータの負荷値を示す。
【００６４】
ルータ負荷値Ｃ［ｊ］［ｒ］は、以下の計算式で求められる。
ルータ負荷値Ｃ［ｊ］［ｒ］＝（ｊ回目の仮割当におけるｒ番目のルータに流入する第１フローから第４フローまでの流量の総和）＋（ｊ回目の仮割当におけるｒ番目のルータから流出する第１フローから第４フローまでの流量の総和）
【００６５】
表４の経路テーブル１３の内容では、ルータ負荷値Ｃは、以下のように計算される。なお、表４の経路テーブル１３では、仮割当をしていないため、ｊ＝０とする。
ルータ負荷値Ｃ［０］［１］＝６８
ルータ負荷値Ｃ［０］［２］＝４１
ルータ負荷値Ｃ［０］［３］＝５３
ルータ負荷値Ｃ［０］［４］＝６８
ルータ負荷値Ｃ［０］［５］＝６０
ルータ負荷値Ｃ［０］［６］＝３６
ルータ負荷値Ｃ［０］の負荷評価値は、レンジＲ［０］＝６８−３６＝３２、または、分散Ｖ［０］＝１５３となる。
【００６６】
例えば、ルータ負荷値Ｃ［０］［１］＝６８は、以下の３つの流量の和（２６＋１４＋２８＝６８）である。
・１番目のルータＲ１を送信元ルータとするフローの流量＝表３の１行目要素＝0+2+8+4+7+5=26
・１番目のルータＲ１を宛先ルータとするフローの流量＝表３の１列目要素＝0+3+2+1+8+0=14
・１番目のルータＲ１を中継ルータとするフローの流量＝表４の中継ルータが「Ｒ１」であるフローを抽出し（表４の７行目〜１２行目）、抽出したフローごとに、各フローを識別するための「送信元ルータと宛先ルータとの組み合わせ」を取得し、その取得したフローに該当する伝送量を表３から読み取る。例えば、表４の７行目のフローは、「送信元ルータＲ４，宛先ルータＲ５」なので、表３の４行目５列目の要素「４」を読み取る。このようにして、抽出した表４の７行目〜１２行目に該当するフローの伝送量として、4+1+8+8+28+0+7=28が計算される。
【００６７】
表５の経路テーブル１３の内容では、ルータ負荷値Ｃは、以下のように計算される。ｊ＝１とする。
ルータ負荷値Ｃ［１］［１］＝５２
ルータ負荷値Ｃ［１］［２］＝４１
ルータ負荷値Ｃ［１］［３］＝６９
ルータ負荷値Ｃ［１］［４］＝４９
ルータ負荷値Ｃ［１］［５］＝６０
ルータ負荷値Ｃ［１］［６］＝５５
ルータ負荷値Ｃ［１］の負荷評価値は、レンジＲ［１］＝６９−４１＝２８、または、分散Ｖ［１］＝７６となる。
よって、経路変更前の表４の経路テーブル１３よりも、経路変更後の表５の経路テーブル１３のほうが、負荷評価値を低くすることができ、各ルータの処理量がネットワーク全体で、効率的に分散されている。
【００６８】
以上説明した本実施形態では、ルータの接続するリンクを流れるパケットの伝送量から得られる指標（フローの流量）に基づいて、ルータの接続するリンクを流れるパケットの伝送量が同じになるように（レンジや分散値がなるべく低くなるように）、宛先ルータごとにパケットの転送先である隣接ルータを決定する。この隣接ルータを決定する処理をネットワークシステム内の各ルータがそれぞれ独立して行う。
これにより、ネットワークシステム内のルータごとの処理量の偏りが緩和されるので、パケットの転送先である隣接する通信制御装置を選択するときに、ネットワークシステム全体の負荷分散を実現することができる。
【符号の説明】
【００６９】
１      ルータ（通信制御装置）
１１    受信部
１２    送信部
１３    経路テーブル
１４    既定流量計算部
１５    未定流量計算部
１６    転送先決定部
【図１】
0005212503.tif 000008
【図２】
0005212503.tif 000009
【図３】
0005212503.tif 000010
【図４】
0005212503.tif 000011
【図５】
0005212503.tif 000012