次に、本発明の好ましい実施形態について、図面を参照して説明する。
まず、本発明の一実施形態のスケジューリング方法の概念について説明する。このスケジューリング方法は本発明に基づくものであって、このスケジューリング方法では、TDMネットワークにおいて動的なリソース割り当てを行う際に、トラヒック変動周期などの再計算周期ごとに全てのリソース割り当てについての再計算を行うのではなく、この間のトラヒック変動分のみを考慮した再計算を行うことで、計算量を減らし、かつ、タイムスロット割り当ての最適解に高速に漸近するようにしている。この方法では、所要TSマトリクスの計算を行った上で、前回計算された所要TSマトリクスとの比較の上で変化があった部分についてのみ、リンクスケジュールテーブルにおけるタイムスロット割り当ての変更を行う。タイムスロット割り当ての変更は、例えば、トラヒック量が減少して所要タイムスロット数が減少した対地(パス)について、割り当てられているタイムスロット数を減少させ(これをタイムスロットの剥ぎ取り(Rip-up)処理と呼ぶ)、トラヒック量が増加した対地について、追加のタイムスロットを割り当てる(これをタイムスロットの貼り付け(Re-allocation)処理と呼ぶ)ことによって行われる。
図8は、リンクスケジュールテーブルにおける変化を示すことによって、本実施形態のスケジューリング方法の概念を示している。図1に示すものと同様の5個のノードA〜Eを有する一方向リングネットワークにおいて、ある時点でのリンクスケジュールテーブルの内容が図8の左側に示すもののようであったとする。ここで、トラヒック変動があり、C→A、A→D及びD→Aの各対地のトラヒック量が減少し、A→B及びB→Eの各対地のトラヒックが増加したとすると、本発明に基づくスケジューリング方法では、図8の右側に示すように、C→A、A→D及びD→Aの各対地について割当タイムスロットを剥ぎ取り、剥ぎ取った分をA→B及びB→Eの各対地に貼り付ける。これにより複数パス間で帯域を融通し合う。このとき、所要トラヒック量に変化があった対地についてのみ計算を行うことにより、計算量を大幅に減少させて計算速度を向上させ、トラヒック変動に追従し動的に帯域(すなわちタイムスロット)を再割当可能なネットワークシステムの大規模化を実現させる。
図9は、本実施形態のスケジューリング方法をより模式的に示した図である。本実施形態では、前回と今回との間で要求トラヒック量の変動が大きい対地(パス)に注目し、大きく要求量が減少した対地で使われていた帯域を、要求量が大きく増加した対地に割り当てる。例えば、図9の(a)に示すように、ネットワーク上のノードA,Bのうち、ノードA向けのトラヒック量が多く、ノードA向けにより大きな帯域が割り当てられているものとする。この状態で、図9の(b)に示すように、ノードA向けのトラヒック量がノードB向けのトラヒック量が増加した場合には、A向けの帯域が余り、B向けの帯域が不足することになる。そこで本実施形態の方法では、余っている方のA向けの帯域を削って(すなわち剥ぎ取り処理)、不足している方のB向けの帯域に割り当てる(すなわち貼り付け処理)という操作を、全対地を対象として実行する。図9の(c)に示すように、剥ぎ取り及び貼り付けの実行回数(対象とするパスの本数)にしたがって、剥ぎ取りあるいは貼り付けのための計算時間は増加するが、タイムスロット割り当てにおける非効率さは改善され、ネットワークにおける実際の帯域利用率を向上させることができる。したがって、少ない回数の剥ぎ取り及び貼り付け処理によって非効率さが大幅に改善されればよく、そのために、後述するように、どの順番で剥ぎ取り処理や貼り付け処理を行うパスを決定し、リンクスケジュールテーブル上のどの位置から剥ぎ取り処理や貼り付け処理を行うかのアルゴリズムが重要となる。
以下、本実施形態のスケジューリング方法についてさらに詳しく説明する。以下の説明では、図1に示したような5個のノードA〜Eを有する一方向リングネットワークを考え、リンク当たりで同一タイムスロットに同時に接続可能なチャネルは1つである(すなわちファイバ多重や波長多重を行わない)ものとする。例えばこのようなネットワークは、単一の波長を用いる光ネットワークであって、タイムスロット長を100μs、フレーム長を5msとするものである。しかしながら、本発明は、双方向リングをはじめとした任意のトポロジーのネットワークに対して適用可能であり、また、波長多重を行うネットワークにも適用可能である。波長多重を行った場合には、各ファイバの各波長上でリンクスケジュールテーブルが作成される。
図10は、本実施形態におけるリンクスケジュールテーブルの部分的な書き換えの一例を示している。
ある時点でのリンクスケジュールテーブル25の内容が、図10の(a)に示したものであったとする。ここで、次のスケジュール契機までにトラヒック変動が生じ、そのとき、対地C→Aについて要求タイムスロット(TS)数が1減少し、B→Eについて2減少し、A→Dについて1減少し、C→Dについて1増加し、E→Aについて1増加し、C→Eについて1増加し、A→Eについて1増加したものとする。まず、図10の(b)に示すように剥ぎ取り処理を行い、その結果、図示破線で示されるタイムスロットが減少することになる。次に、図10の(c)に示すように、減少させた分の帯域を増加分に割り当てる貼り付け処理を行う。貼り付け処理によって増加した(貼り付けられた)タイムスロットは、図においてハッチングが付されている。ここでは、貼り付け処理に先行して剥ぎ取り処理を行うものとしたが、後述するように、剥ぎ取り処理と貼り付け処理の順番を逆にすることも可能である。
次に、剥ぎ取り処理について説明する。剥ぎ取り処理では、トラヒック変動により所要タイムスロットが減少したパスについてタイムスロットを削除するが、このとき、リンクスケジュールテーブル上で連続した空き領域をできるだけ大きく作り出すことを目的とする。連続した空き領域を大きく作り出すことによって、以後の貼り付け処理において、長いパス(より多くのリンクを経由するパス)、太いパス(複数のタイムスロットを束ねて帯域を大きくしたパス)を設定しやすくなる。
連続した空き領域をできるだけ大きく作り出すためには、どのパスから優先して剥ぎ取るかの剥ぎ取りの順序や、あるパスについてどのタイムスロット位置から優先して剥ぎ取るかの剥ぎ取り位置の決定が重要である。図11は、剥ぎ取りを行う順序の決定について説明している。図においてハッチングが付されたタイムスロットは、トラヒック量に変化がないパスに割り当てられているタイムスロットであり、剥ぎ取り処理の対象とはならないものである。図示上側に示すように、パスB→Dに5タイムスロットが割り当てられている状態で3タイムスロット(TS)を減少させることが可能であり、A→Eに2タイムスロットが割り当てられている状態で1タイムスロットが減少可能であり、パスD→Eに2タイムスロットが割り当てられている状態で1タイムスロットが減少可能であるとする。このとき、リンクスケジュールテーブル上で大きく面積を占有しているパスは邪魔であるので、長いパス及び変動タイムスロット数が大きいパスから優先して剥ぎ取ることとする。その結果、図11の下側で[1]〜[3]の数字で示すように、A→D、B→D、D→Eの順でパスに割り当てられているスロットを減少させればよいことになる。
図12は、複数のタイムスロットが同一パスに割り当てられているときに、そのパスに割り当てられているタイムスロットのうちどの位置から優先して剥ぎ取るかを決定することについて説明している。ここでは、4タイムスロットが割り当てられたパスB→Dからどの順序でタイムスロットを剥ぎ取るのか、2タイムスロットが割り当てられたパスC→Eからとの順序でタイムスロットを剥ぎ取るのかを示している。リンクスケジュールテーブル上で大きな空き領域を作り出したいので、周囲(リンクスケジュールテーブル上で隣接したタイムスロット、すなわち、隣接するリンクにおける同じタイムスロット位置および同一リンクにおける前後のタイムスロット位置)に空きタイムスロットが多いタイムスロットから優先して剥ぎ取ることとする。その結果、図12の下側において[1]〜[4]の数字で示されるように、例えばパスB→Dについては、タイムスロット位置S3、S2、S4、S1の順でタイムスロットを削除すればよいことになる。
次に、貼り付け処理について説明する。貼り付け処理では、トラヒック変動により所要タイムスロットが増加したパスについてタイムスロットを追加するが、このとき、リンクスケジュールテーブル上での連続した空き領域をできるだけ小さくせず、隙間を埋めることを目的とする。連続した空き領域をできるだけ小さくしないようにすることによって、次回以降の貼り付け処理において、長いパス、太いパスを設定しやすくなる。
連続した空き領域をできるだけ小さくしないようにするためには、どのパスから優先して貼り付けるかの貼り付けの順序や、あるパスについてどのタイムスロット位置から優先して貼り付けるかの貼り付け位置の決定が重要である。図13は、貼り付けを行う順序の決定について説明している。図においてハッチングが付されたタイムスロットは、既に割り当て済みのタイムスロットを示している。ここでパスA→Bに1タイムスロット、A→Eに1タイムスロット、B→Dに2タイムスロットを貼り付ける場合を考える。このとき、大幅なトラヒック増加はバッファあふれやロスなどを招く恐れがあり、また、長いパスは設定しにくいことを考慮すると、所要タイムスロット数の変動が大きいパスや長いパスから優先して貼り付けを行うようにする。その結果、図13の下側で[1]〜[3]の数字で示すように、B→D、A→E、A→Bの順でパスの貼り付けを行えばよいことになる。
図14は、同一パスにつき複数のタイムスロットを貼り付けるときに、どのスロット位置から優先して貼り付けを行えばよいかを説明している。ここでは既にパスB→Dに関し、分割された2タイムスロットが既に割り当て済みであり、パスB→Dにさらにタイムスロットを割り当てるものとする。リンクスケジュールテーブル上でできるだけ隙間を埋めたいので、周囲(リンクスケジュールテーブル上で隣接したタイムスロット、すなわち、隣接するリンクにおける同じタイムスロット位置および同一リンクにおける前後のタイムスロット位置)に空きタイムスロットが少ないタイムスロットから優先して貼り付けを行うこととする。その結果、図において[1]〜[4]の数字で示されるように、タイムスロット位置S4、S6、S2、S8、S1の順で優先してタイムスロットを加えればよいことになる。
本実施形態では、リンクスケジュールテーブルにおける空き情報を特に管理することによって、トラヒックが増加したパス、新規登録されたパスの収容に要する処理を簡易化している。この管理は、後述するように、スケジューラ20内のテーブル空管理部34によって行われる。図15は、空き情報を管理することによる新規パス収容の処理を示している。
図15の左側において破線の枠で示すタイムスロットは、剥ぎ取りによって減少した割り当てが解除され、空きとなったタイムスロットである。実線の枠で示すタイムスロットは、現に使用されているタイムスロットである。本実施形態では、リンクスケジュールテーブルでの空き情報を管理し、また、増加すべきパスの情報を増加パスリストの形で保持しておいて、空き情報に基づいて、リンクスケジュールテーブルにおいて未割り当てとなっている空きタイムスロットに、増加分のパスを割り当てていく。
上述した本実施形態でのスケジューリング方法は、図1あるいは図4に示すTDMネットワークシステムにおいて、いずれかのノード11に設けられたスケジューラ20によって実行される。このときスケジューラ20では、以下に説明するように、前回と今回との間でのトラヒック情報の差分を検出する機能、剥ぎ取り処理を行う機能、及び貼り付け処理を行う機能が重要である。スケジューラ20は、専用ハードウェアとして構成することもできるが、マイクロプロセッサやメモリ、通信インタフェースなどを備える汎用のコンピュータを利用し、スケジューラ20の機能を実行するコンピュータプログラムをこのコンピュータ上で実行させることによっても実現できる。コンピュータ上でプログラムを実行することによってスケジューラ20を実現する場合、リンクスケジュールテーブルは、そのコンピュータを構成するメモリ内に記憶され格納される。
ノード11に接続されるホストコンピュータ12としては公知の構成のものを使用できる。ノード11としては、公知の構成のものに、パスのトラヒック量を動的に収集してスケジューラ20に通知する機能を追加した構成のものであることが必要である。
図16は、光TDMネットワークに用いられるノードの一般的な構成例を示している。ノードは、リンクを転送されてくるデータのタイムスロット単位での方路切替を行うスイッチ91と、ホストコンピュータ12との間でデータをやり取りするためのインタフェース(I/O)92と、ホストコンピュータ12側から送信されてきたデータを一時的に貯えるバッファ93と、バッファ93から送信データを受け取ってリンクに送り出される光信号を生成しスイッチ91に送出する送信部(Tx)94と、スイッチ91から光信号を受信し受信データとしてI/O92を介してホストコンピュータ12に送る受信部(Rx)95と、ノード11全体を制御するコントローラ96とを備えている。特にコントローラ96は、スケジューラ20から送信されたノードスケジュールテーブル(処理スケジュール)に基づいて、スイッチ91と送信部94を制御する。パスのトラヒック量を動的に収集してスケジューラ20に通知する機能は、ノード11を構成する各ブロックのうち、例えば、スイッチ91、インタフェース92、バッファ93、送信部94及び受信部95のいずれかに設けることができる。
本実施形態のスケジューリング方法では、剥ぎ取り処理及び貼り付け処理を行う順序によって、種々の実施方法が存在する。それらのうちの代表的なものを方法1〜方法3とする。
方法1では、トラヒックが減少したパスについて剥ぎ取り処理を行い、その後、トラヒックが増えたパスの貼り付け処理を行う。方法1は、トラヒック流量にしたがって帯域割り当てを行うものである。
方法2では、貼り付け処理を優先して行い、必要に応じて(割り当てる空き容量がない場合に)剥ぎ取り処理を行う。この方法では、余っている帯域も有効に活用することができる。
方法3は、上記の方法1と方法2とを組み合わせたものであり、ネットワーク内でトラヒックが減少したパスが多いか、増えたパスが多いかに応じて、方法1と方法2とを使い分ける。
さらに、上記の方法1〜方法3に共通した変更の例として、剥ぎ取り処理及び貼り付け処理の実行回数の制限を行うものがある。この変更例は、タイムスロット割り当てについての最適解に速く収束するようにして途中で計算を打ち切ることで、決められた時間内で良好な解を得ようとするものである。
以下、方法1〜方法3やそれらに変更を加えたものなどを実施するための構成について説明する。
まず、方法1について説明する。図17は、方法1に基づいてスケジューリングを行うTDMネットワークシステムにおいて用いられるスケジューラ20の構成を示している。
スケジューラ20は、周期的に交流トラヒック量を集計し、各対地間のトラヒック変動差分を検出し、リンクスケジュールテーブル25の部分変更を行う処理を実行する。また、リンクスケジュールテーブル25における空き領域を管理することにより、リンクスケジュールテーブル全体に対する探索を不要として、計算コストの低減を図っている。このような方法1に基づくスケジューラ20は、交流トラヒック量集計部21、トラヒック変動差分算出部31、変動差分テーブル32、減少分剥ぎ取り計算部33、テーブル空管理部34、増加分貼り付け計算部35、割当履歴管理部36、リンクスケジュールテーブル25、テーブル変換部26、ノードスケジュールテーブル27、テーブル送信部28、及びタイマ29を備えている。このうち交流トラヒック量集計部21、リンクスケジュールテーブル25、テーブル変換部26、ノードスケジュールテーブル27、テーブル送信部28、及びタイマ29は、図3に示した従来のスケジューラ20に設けられるものと同様のものである。
交流トラヒック量集計部21は、ネットワーク内の各ノード11から定期的に報告されるトラヒック情報を得てネットワーク内の全対地間の要求タイムスロット数を算出し、これをトラヒック変動差分算出部31に渡す。トラヒック変動差分算出部31は、交流トラヒック量集計部21から得た要求タイムスロット数と、1つ前の制御タイミングで得ていた要求タイムスロット数を比較することで、該当タイミングまでのトラヒック変動の差分を算出し、変動差分情報として変動差分テーブル32に格納するものである。変動差分テーブル32に書き込まれた変動差分情報は、後述するように、変動量に基づいた分類やソーティングの対象となり、必要に応じて、減少分剥ぎ取り計算部33及び増加分貼り付け計算部35に渡される。
減少分剥ぎ取り計算部33は、変動差分テーブル32に格納された変動差分情報とテーブル空管理部34から得られたテーブルの空き情報と割当履歴管理部36から得られた過去の割当履歴とに基づいて剥ぎ取り処理を実行し、その結果に応じてテーブル空管理部34内のテーブル空き情報とリンクスケジュールテーブル25とを書き換え、また、今回の剥ぎ取り処理による割当帯域を割当履歴管理部36に通知する。同様に増加分貼り付け計算部35は、変動差分テーブル32に格納された変動差分情報とテーブル空管理部34から得られたテーブルの空き情報と割当履歴管理部36から得られた過去の割当履歴とに基づいて貼り付け処理を実行し、その結果に応じてテーブル空管理部34内のテーブル空き情報とリンクスケジュールテーブル25とを書き換え、また、今回の貼り付け処理による割当帯域を割当履歴管理部36に通知する。
テーブル空管理部34は、リンクスケジュールテーブル25における空きスロットの情報を保持し管理するものであって、減少分剥ぎ取り計算部33及び増加分貼り付け計算部35から書き換え通知を受けるとともに、リンクスケジュールテーブル25からテーブルにおける空き情報を通知され、剥ぎ取り処理や貼り付け処理の実行に先立って、空き情報を減少分剥ぎ取り計算部33及び増加分貼り付け計算部35に提供する。割当履歴管理部36は、割当履歴を保持し管理するものであって、減少分剥ぎ取り計算部33及び増加分貼り付け計算部35から割当帯域の通知を受けて割当履歴に追加し、減少分剥ぎ取り計算部33及び増加分貼り付け計算部35に対して割当履歴情報を提供する。
リンクスケジュールテーブル25は、ネットワーク内の各リンクに規定されたタイムスロットの空塞状況を表すテーブルであって、減少分剥ぎ取り計算部33及び増加分貼り付け計算部35による剥ぎ取り処理及び貼り付け処理によって書き換えられる。リンクスケジュールテーブル25は、その空き情報をテーブル空管理部34に提供するように構成されている。
テーブル変換部26はリンクスケジュールテーブル25をノード11ごとのノードスケジュールテーブル27に変換するものであり、テーブル送信部28は、ノードスケジュールテーブル27に基づいて各ノード11に対して当該ノードの処理スケジュールを定期的に送信する。処理スケジュールの代わりにノードスケジュールテーブル27をそのものを各ノード11に送信してもよい。タイマ29は、各ノード11との同期をとり、時間管理を行うためのものであるが、特に、変動差分テーブル32や割当履歴管理部36に対してトリガを出力することにより、定期的に、変動差分テーブル32や割当履歴管理部36の初期化(クリア動作)を実行することもできる。
次に、このスケジューラ20の動作について、図18及び図19に示すシーケンス図を用いて説明する。
まず図18に示すように、各ノードからトラヒック量に関する情報が交流トラヒック量集計部21に送られ(ステップ101)、ステップ102において交流トラヒック量集計部21は各ノード間すなわち各対地の所要タイムスロット(TS)数を算出し、TSマトリクスとしてトラヒック変動算出部31に送る(ステップ103)。トラヒック変動差分算出部31は、ステップ104において、交流トラヒック量集計部21から送られてきたTSマトリクスと前回取得したTSマトリクスとを比較し、要求タイムスロット数の差分(変動差分情報)を変動差分テーブル32に送り(ステップ105)、ステップ106において変動差分情報が変動差分テーブル32に書き込まれる。変動差分テーブル32から、所要タイムスロット数が減少したパスとその減少量とに関する情報が減少分剥ぎ取り計算部33に送られ(ステップ107)、所要タイムスロット数が増加したパスとその増加量とに関する情報が増加分貼り付け計算部35に送られる(ステップ108)。また、割当履歴管理部36から、各パスの帯域割当履歴が減少分剥ぎ取り計算部33及び増加分貼り付け計算部35に送られる(ステップ109,110)。
ステップ111において減少分剥ぎ取り計算部33は剥ぎ取り処理の計算を行い、その計算結果に基づき、割当履歴を割当履歴管理部36に送るとともに、テーブルの空き情報の更新のために空の更新トリガをテーブル空管理部34に送り(ステップ112)、リンクスケジュールテーブル25の更新のためにテーブルの更新トリガをリンクスケジュールテーブル25に送る(ステップ113)。これらにより、テーブル空管理部34では、ステップ114において、テーブルの空き情報の更新が行われ、ステップ115においてリンクスケジュールテーブル25の更新が行われる。
次に、変動差分テーブル32から、所要タイムスロット数が増加したパスとその増加量とに関する情報が増加分貼り付け計算部35に送られ(ステップ116)、割当履歴管理部36から各パスの帯域割当履歴が増加分貼り付け計算部35に送られる(ステップ117)。これらを受けて増加分貼り付け計算部35は、ステップ118において貼り付け処理の計算を行い、その計算結果に基づき、割当履歴を割当履歴管理部36に送るとともに、テーブルの空き情報の更新のために空の更新トリガをテーブル空管理部34に送り(ステップ119)、リンクスケジュールテーブル25の更新のためにテーブルの更新トリガをリンクスケジュールテーブル25に送る(ステップ120)。これらにより、テーブル空管理部34では、ステップ121において、テーブルの空き情報の更新が行われ、ステップ122においてリンクスケジュールテーブル25の更新が行われる。
その後、図19に示すように、リンクスケジュールテーブル25におけるテーブル更新がステップ131において完了すると、リンクスケジュールテーブル25の内容がテーブル変換部26に送られ(ステップ132)、テーブル変換部26は、ステップ133において、各ノードごとの処理スケジュールが導出されて導出結果がノードスケジュールテーブル27に送られ(ステップ134)、ステップ135において、ノードスケジュールテーブルとしてそれらの導出結果が格納される。その後、ノードスケジュールテーブル27の内容はテーブル送信部28に送られ(ステップ136)、テーブル送信部28は、ステップ137において、各ノード11に対する配信処理を実行する。これによって、ノードごとの処理スケジュールあるいはノードスケジュールテーブルが、それぞれのノードに送られる(ステップ138)。
以上によって、方法1によるスケジューリングが完了したことになる。なお、上記の処理のうち、ステップ101,102の処理と、ステップ131以降の処理(図19に示される処理)は、図3に示した従来のスケジューラにおけるものと同じである。
次に、具体例を挙げて、方法1を実行するためのスケジューラ20についてさらに詳しく説明する。
交流トラヒック量集計部21は、各ノードから定期的に全対地間のトラヒック情報を収集して必要タイムスロット数をマトリクスの形態で管理するものであるが、ノードAからノードB〜Eの各々に対するトラヒック帯域が図20の(a)に示すものであったとする。すると交流トラヒック量集計部21は、これらのトラヒック帯域を例えば10Mbps当たり1タイムスロットの割合で換算し(図20の(b)を参照)、図20の(c)に示すように、その結果を所要TSマトリクスとしてメモリに格納する。この所要TSマトリクスはトラヒック変動差分算出部31に送られる。
トラヒック変動差分算出部31は、そのメモリ内に交流トラヒック量集計部21から前回送られてきた所要TSマトリクスを保持しており、図21に示すように、今回送られてきた所要TSマトリクスから前回送られてきた所要TSマトリクスをマトリクス要素ごとに比較し減算する演算を行って、変動した差分を表す2次元配列を算出し、この2次元配列を変動差分テーブル32に格納する。変動差分テーブル32は例えばスケジューラ20のメモリ内で管理される。
次に、方法1における剥ぎ取り(Rip-up)処理及び貼り付け(Re-allocation)処理について説明する。方法1では、トラヒック量が減少した対地に関して剥ぎ取り処理を行った後に、トラヒック量が増加した対地に関して貼り付け処理を行う。それぞれの処理は、上述したように、変動差分テーブル32、テーブル空管理部34及び割当履歴管理部36からタイムスロット割当に必要な情報を取得した上で、リンクスケジュールテーブル25及びテーブル空管理部34の状態を変更する処理である。したがって、スケジューラ20を構成する各機能ブロックのうち、変動差分テーブル32、減少分剥ぎ取り計算部33、テーブル空管理部34、割当履歴管理部36及びリンクスケジュールテーブル25が剥ぎ取り処理に直接関連し、変動差分テーブル32、増加分貼り付け計算部35、テーブル空管理部34、割当履歴管理部36及びリンクスケジュールテーブル25が貼り付け処理に直接関連することになる。
まず、方法1での剥ぎ取り処理について詳しく説明する。剥ぎ取り処理において減少分剥ぎ取り計算部33は、変動差分テーブル32においてトラヒック量が減少したことが示されている対地に関して、リンクスケジュールテーブル25における空き情報をテーブル空管理部34を参照して取得し、割当履歴管理部36から過去の帯域割当情報を取得して、既に割り当てられているタイムスロットを減らすことによるリンクスケジュールテーブルを部分変更する処理を行う。この処理は、タイムスロットを減らす対地の選択順序を決定する段階と、タイムスロットの減少数を決定する段階と、タイムスロットを削減する位置を決定する段階と、によって構成される。
タイムスロットを減らす対地の選択順序を決定する段階では、減少分剥ぎ取り計算部33は、変動差分テーブル32及び割当履歴管理部36からの情報に基づいて、剥ぎ取りを行う対地の選択順序を決定する。剥ぎ取り処理を行う時には、リンクスケジュールテーブル25上でできるだけ大きく連続した空き領域が形成されるようにすることが好ましいから、長いパス、変動量が大きいパスが優先して削減されるようにする。図22に示した例では、タイムスロット数の変動差分から対地ごとのコスト値を計算し、コスト値の降順でソートを行うことにより、剥ぎ取りの実行順序を定めている。図22において変動量aは、タイムスロット数の変動差分の絶対値であり、パス長bはパスが経由するリンク数を示し、乱数cは1から99の間でランダムに発生させた整数であり、コスト値として、
コスト値=10000×a+100×b+c
を用いている。
タイムスロットの減少数を決定する段階では、減少量剥ぎ取り計算部33は、各対地から剥ぎ取るタイムスロットの数を決定する。例えば、単純に変動量分に応じたタイムスロット数を剥ぎ取ることとする。その後、タイムスロットを削減する位置を決定する段階において減少量剥ぎ取り計算部33は、テーブル空管理部34からの情報に基づいて、剥ぎ取りを行う対地ごとに、剥ぎ取りを行うタイムスロット位置を決定する。図23は、剥ぎ取りを行うタイムスロット位置の決定の仕方を示すものであり、図示左側のリンクスケジュールテーブル部分において、ハッチングが付されているタイムスロットが使用中のタイムスロットである。剥ぎ取りを行うタイムスロット位置の決定に際しては、リンクスケジュールテーブル25での空き状況からコスト値を算出し、コスト値の降順に位置を選択する。剥ぎ取り処理を行う時には、リンクスケジュールテーブル25上でできるだけ大きく連続した空き領域が形成されるようにすることが好ましいから、同一タイムスロット位置で隣接するリンクが空きとなっているものや、同一リンクで隣接するタイムスロットが空きとなっているものが優先してタイムスロット削減の対象となるようにする。図示したものでは、同一TS隣接空αは、同一タイムスロット位置で隣接するリンクのうち空きとなっているリンクの数を示し、同一リンク隣接空βは、同一リンク内で隣接するタイムスロットのうち空きとなっているタイムスロットの数を示している。タイムスロット位置γには、1から付与されたタイムスロット番号をそのまま用いている。ここでは、コスト値として、
コスト値=10000×α+100×β+γ
を用いている。
図23に示した例では、対地B→Cに割り当てられた3つのタイムスロット(S3、S4及びS5)からタイムスロットを1つ減少させる場合に、連続した空き領域ができるだけ大きくなるように、S5で示されるタイムスロットが削減される。
以上のようにして、削減すべきタイムスロットが決定されると、次に、減少分剥ぎ取り計算部33は、削減すべきものとして決定されたタイムスロットをリンクスケジュールテーブル25から削減し、テーブル空管理部34内に保持されている空き情報を更新し、割当帯域を割当履歴管理部36に通知して割当履歴管理部36を更新する。図24の上側は、リンクスケジュールテーブル25におけるタイムスロットの削除を示しており、削除されたタイムスロットは空きとしてテーブル空管理部34にも登録される。なお、タイムスロットが削減されたことにより、周囲のタイムスロットのコスト値、具体的には上記の同一TS隣接空α及び同一リンク隣接空βも変動する。図24の下側は、割当履歴管理部36に保持される割当履歴情報の例を示している。割当履歴情報は、各対地(パス)について、スケジューリングを行うたびに、どれだけのタイムスロット数が要求され実際にどれだけの数のタイムスロットを割り当てたかを記録したものであり、過去の複数回分の情報をメモリに格納したものである。
タイムスロットを減らす対地の選択順序を決定する段階で決定された順序にしたがって、タイムスロットの削除数や削除位置の決定と、リンクスケジュールテーブル25の変更と、テーブル空管理部34及び割当履歴管理部26の更新とを繰り返すことにより、剥ぎ取り処理が完了する。
次に、方法1での貼り付け処理について詳しく説明する。貼り付け処理において増加分貼り付け計算部35は、変動差分テーブル32においてトラヒック量が増加したことが示されている対地に関して、リンクスケジュールテーブル25における空き情報をテーブル空管理部34を参照して取得し、割当履歴管理部36から過去の帯域割当情報を取得して、割り当てられるタイムスロットを増やすことによるリンクスケジュールテーブルを部分変更する処理を行う。この処理は、タイムスロットを増やす対地の選択順序を決定する段階と、タイムスロットの増加数を決定する段階と、タイムスロットを貼り付ける位置を決定する段階と、によって構成される。
タイムスロットを増やす対地の選択順序を決定する段階では、増加分貼り付け計算部35は、変動差分テーブル32及び割当履歴管理部36からの情報に基づいて、貼り付けを行う対地の選択順序を決定する。貼り付け処理を行う時には、上述したように、長いパス、変動量が大きいパスに対応したタイムスロットが優先して貼り付けられるようにする。図25に示した例では、タイムスロット数の変動差分から対地ごとのコスト値を計算し、コスト値の降順でソートを行うことにより、剥ぎ取りの実行順序を定めている。変動量a、パス長b及び乱数cは図22に示した場合と同様のものである。コスト値として、
コスト値=10000×a+100×b+c
を用いている。
タイムスロットの増加数を決定する段階では、増加量貼り付け計算部35は、各対地に貼り付けるタイムスロットの数を決定する。例えば、単純に変動量分に応じたタイムスロット数を貼り付けることとする。その後、タイムスロットを貼り付ける位置を決定する段階において増加量貼り付け計算部35は、テーブル空管理部34からの情報に基づいて、貼り付けを行う対地ごとに、貼り付けを行うタイムスロット位置を決定する。図26は、貼り付けを行うタイムスロット位置の決定の仕方を示すものであり、図示左側のリンクスケジュールテーブル部分において、ハッチングが付されているタイムスロットが使用中のタイムスロットである。貼り付けを行うタイムスロット位置の決定に際しては、リンクスケジュールテーブル25での空き状況からコスト値を算出し、コスト値の昇順に位置を選択する。貼り付け処理を行う時には、リンクスケジュールテーブル25上でできるだけ隙間を埋めるようにすることが好ましいから、同一タイムスロット位置で隣接するリンクが使用中となっているものや、同一リンクで隣接するタイムスロットが使用中となっているものが優先してタイムスロット追加の対象となるようにする。図26において、同一TS隣接空α、同一リンク隣接空β及びタイムスロット位置γは、図23におけるものと同様である。ここでは、コスト値として、
コスト値=10000×(α+β)+γ
を用いている。
図26に示した例では、対地D→Eに対してさらに1このタイムスロットを追加するときに、追加する位置の候補として、S1、S2、S16、S18,S19及びS20などがあるとして、コスト値が最小であるS16が選択され、この位置にタイムスロットが割り当てられる。
以上のようにして、どごにタイムスロットを割り当てるかが決定されると、次に、増加分貼り付け計算部35は、貼り付けが決定されたタイムスロットをリンクスケジュールテーブル25において割り当て追加し、テーブル空管理部34内に保持されている空き情報を更新し、割当帯域を割当履歴管理部36に通知して割当履歴管理部36を更新する。図27の上側は、リンクスケジュールテーブル25におけるタイムスロットの割り当て追加を示しており、追加されたタイムスロットは空きでなくなったものとしてテーブル空管理部34から削除される。なお、タイムスロットが追加されたことにより、周囲のタイムスロットのコスト値、具体的には上記の同一TS隣接空α及び同一リンク隣接空βも変動する。図27の下側は、図24に示すものと同様に、割当履歴管理部36に保持される割当履歴情報の例を示している。
タイムスロットを増やす対地の選択順序を決定する段階で決定された順序にしたがって、タイムスロットの追加数や追加位置の決定と、リンクスケジュールテーブル25の変更と、テーブル空管理部34及び割当履歴管理部26の更新とを繰り返すことにより、貼り付け処理が完了する。
剥ぎ取り処理及び貼り付け処理の一例について、式によって説明する。
ノード数をNとし、1フレーム内のタイムスロット数をCapとする。タイムスロットの繰り返し周期tが5ms、タイムスロット長TSが100μsであれば、cap=50となる。送信元ノードiと宛先ノードjのペア(すなわち対地)を(i,j)で表す。もちろん、i≠jである。
(i,j)を結ぶパスにおけるホップ数をHop(i,j)と表す。ノード数がNのリング状ネットワークの場合、最小のホップ数は1であり、最大のホップ数はN−1であり、平均のホップ数はN/2である。(i,j)間を結ぶパスがhホップ目に通過するリンクをLi,j(h)で表し、(i,j)間を結ぶパスがk番目に通過するノードをni,j(k)とする、
スケジューリング契機Tにおける対地(i,j)の要求タイムスロット数をReqi,j(T)とおき、Tにおいて対地(i,j)に割り当てるタイムスロット数をAsi,j(T)とおく。半固定スケジューリングを行う場合には、スケジューラは、契機Tで得られている情報(Reqi,j(T)など)を用いて、次のスケジューリング契機(T+1)における割り当てを決定してもよい。
過去M回分にわたる割当履歴での要求タイムスロット数と割り当てタイムスロット数との差をHisti,j(T)とする。
である。以下に示すように、公平帯域Cfair(T)との差分を用いる方法もある。
契機Tにおけるリンクスケジュールテーブルの内容をτ(T,Li,j(h),w,s) (h=1,…,Hop(i,j))
タイムスロット番号をsとし、契機TにおいてリンクスケジュールテーブルでリンクL、タイムスロット位置sでタイムスロットが空いていることをV(T,L,s)=1で表すこととする。
剥ぎ取りを行うかどうかの判定条件の一例では、
[1] Reqi,j(T)<Reqi,j(T−1)を満たす(i,j)から、Reqi,j(T−1)−Reqi,j(T)だけタイムスロットを剥ぎ取る、あるいは、
[2] Reqi,j(T)≦Asi,j(T−1)<Reqi,j(T−1)を満たす(i,j)から、Asi,j(T−1)−Reqi,j(T)だけタイムスロットを剥ぎ取る。
剥ぎ取りを行う順序を決定する方法の一例では、コスト関数Rip-up-priorityを
Rip-up-priority=μ{Asi,j(T−1)−Reqi,j(T)}+ν/Hop(i,j)
で定め、Rip-up-priorityの値の降順に剥ぎ取りを行う。このときμ>νの場合には、トラヒック変動が大きなパスが優先されて選択され、μ<νの場合には、長いパスの優先度が大きくなる。
剥ぎ取りを行うタイムスロット位置の決定方法の一例では、対地(i,j)から剥ぎ取りを行うとして、周囲に空きが多いタイムスロットを優先するためのコスト関数Rip-up-gainを
と定める。これは、Rip-up-gainを
Rig-up-gain=α×[同一TS隣接空]+β×[同一スロット隣接空]
と定めていることと等価である。そして、Rip-up-gainが最大となるタイムスロット位置sを選択する。複数のタイムスロット位置が同一値を取った場合には、その中から老番のタイムスロット位置を選択する。ここで、α>βであれば、長いパスを設定しやすくする効果が強くなり、α<βであれば、太いパスを設定しやすくする効果が強くなる。
貼り付けを行うかどうかの判定条件の一例では、
[1] Reqi,j(T)>Reqi,j(T−1)を満たす(i,j)に、Reqi,j(T)−Reqi,j(T−1)だけタイムスロットを貼り付ける、あるいは、
[2] Reqi,j(T)>Asi,j(T−1)を満たす(i,j)に、Reqi,j(T)−Asi,j(T−1)だけタイムスロットを貼り付ける。
貼り付けを行う順序を決定する方法の一例では、コスト関数Alloc-priorityを
Alloc-priority=δ{Reqi,j(T)−Reqi,j(T−1)}+ε・Hop(i,j)
で定め、Alloc-priorityの値の降順に貼り付けを行う。このときδ>εの場合には、トラヒック変動が大きなパスが優先されて選択され、δ<εの場合には、長いパスの優先度が大きくなる。
貼り付けを行うタイムスロット位置の決定方法の一例では、対地(i,j)にタイムスロットを貼り付けるとして、まず、貼り付けを行うことができる帯域が存在するか否かを判定する。これはh=1,…,Hop(i,j)として、全てのhに対し、
V(T,Li,j(h),s)=1
が満たされるかどうかで判定する。次に、なるべく隙間を埋めるようにするためのコスト関数Alloc-costを
と定める。そして、Alloc-costが最小となるタイムスロット位置sを選択する。複数のタイムスロット位置が同一値を取った場合には、その中から若番のタイムスロット位置を選択する。ここで、γ>ωであれば、長いパスを設定しやすくする効果が強くなり、γ<ωであれば、太いパスを設定しやすくする効果が強くなる。
ところで、本発明に基づくスケジューリング方法では、剥ぎ取り処理を行うためのアルゴリズム、貼り付け処理を行うためのアルゴリズムとして様々なバリエーションが存在し、しかも、どのようにコスト関数を設定するかによって、異なる効果が得られる。以下、これらのバリエーションを説明する。
剥ぎ取りを行うパスの選択順序を決定するアルゴリズムのバリエーションとしては、表1に示すようなものがある。
上記のうちアルゴリズム[2]〜[4]は、これらを組み合わせて前述した例で用いている。アルゴリズム[1]〜[9]を組み合わせて使用することも可能である。また、ソーティングを行うものについては、ソーティングの代わりに閾値による分類を用いてもよい。閾値による分類では、1つの閾値を用いる場合(例としてパス長がその平均値より長いか短いかを用いる場合)には、パス長が閾値を超える場合には例えばRandam Fitアルゴリズムを使用し、そうでなければ例えばFirst Fitアルゴリズムを用いることが考えられる。複数の閾値を用い、閾値で分類された各クラスごとにそれぞれ異なるアルゴリズムを用いるようにしてもよい。閾値を用いる方法は、計算時間を短くしつつソーティングによるものと同等の効果を得ようとするものである。
剥ぎ取りを行うタイムスロット位置を決定する方法のバリエーションとしては、表2に示すようなものがある。
アルゴリズム[3](周囲の空き状況を考慮して決定する)は前述した例でも用いているものであるが、周囲の空き状況を考慮するためにコスト関数を使用する。コスト関数をどのように構築するかの考え方として、長いパスを設定しやすくするために「長い空きを作り出す」、太いパスを設定しやすくするために「太い空きを作り出す」、及び、長く太いパスを設定しやすくするために「長く太いパスを作り出す」がある。これらの考え方を組み合わせることもできる。以下に説明するものでは、カウント値(周囲の空きタイムス
ロットの数)が大きいほどタイムスロットが剥ぎ取られやすくなるように、カウント値をコスト関数に反映させる。
「長い空きを作り出す」ためには、同一タイムスロット位置での周囲の空きの数をカウントすればよい。図28に示すリンクスケジュールテーブルにおいて、対地B→Dに割り当てられている3つのタイムスロットに対して剥ぎ取りを行う場合を考えると、B→Dのパスに隣接する箇所における空きの箇所(図において同一タイムスロット位置であって◎で示す箇所)をカウントすればよい。このとき、B→Dのパスのタイムスロット位置S2〜S4のうち、S2に対するカウント値は1となり、S3に対するカウント値は2となり、S4に対するカウント値は1となる。さらに、より長い空きが生じるように、図示◎で示す箇所にさらに連続する空きの箇所(図示○で示す箇所)も含めてカウントを行ってもよい。そうすると、B→Dのパスのタイムスロットのうち、S2のカウント値が2となり、S3のカウント値が3となる。
「太い空きを作り出す」ためには、同一リンクでの周囲の空きタイムスロットの数をカウントする。図28に示す例において、対地C→Eに割り当てられている2つのタイムスロットから剥ぎ取りを行う場合を考えると、タイムスロット位置S7では同一リンク内での空き位置が存在しないのに対し、タイムスロット位置S8では、図示◎で示すように隣接するタイムスロット位置S9がCからEまでの2リンクで空きとなっており、カウント値が2となる。さらに、上述する場合と同様に、より太い空きが生じるように、タイムスロット位置S9に隣接する箇所における空きの箇所(図示〇で示すタイムスロット位置S10)を含めてカウントを行ってもよい。その場合は、タイムスロット位置S8のカウント値は4となる。
「長く太い空きを作り出す」ためには、周囲の連続した空きをカウントする。同一タイムスロット位置や同一リンクで隣接する空きの箇所(図28での図示◎の箇所)だけでなく、これらの◎の箇所の2つに隣接する箇所(図示△の箇所)もカウントする。図28で示す例では、パスC→Eに関し、タイムスロット位置S8に対するカウント値が4となる。
貼り付けを行うパスの選択順序を決定するアルゴリズムのバリエーションとしては、表3に示すようなものがある。
上記のうちアルゴリズム[2]〜[4]は、これらを組み合わせて前述した例で用いている。アルゴリズム[1]〜[9]を組み合わせて使用することも可能である。また、剥ぎ取り処理の場合と同様に、ソーティングを用いる代わりに閾値による分類を用いてもよい。
貼り付けを行うタイムスロット位置を決定する方法のバリエーションとしては、表4に示すようなものがある。
アルゴリズム[3](周囲の空き状況を考慮して決定する)は前述した例でも用いているものであるが、周囲の空き状況を考慮するためにコスト関数を使用する。コスト関数をどのように構築するかの考え方として、長いパスを設定しやすくするために「短い空きを埋める」、太いパスを設定しやすくするために「細い空きを埋める」、及び、長く太いパスを設定しやすくするために「短く細いパスを埋める」がある。これらの考え方を組み合わせることもできる。以下に説明するものでは、カウント値が大きいほどタイムスロットが貼り付けられやすくなるように、カウント値をコスト関数に反映させる。
「短い空きを埋める」ためには、同一タイムスロット位置での割り当て済みタイムスロットの数をカウントすればよい。図29に示すリンクスケジュールテーブルにおいて、ハッチングが付されている部分は既に割り当て済みのタイムスロットを示している。ここで対地B→Dのタイムスロットを新たに割り当てることを考えると、候補となるタイムスロット位置は、例えば、S2、S3及びS4である。この場合は、B→Dのパスに隣接する箇所における割り当て済みの箇所(図において同一タイムスロット位置であって◎で示す箇所)をカウントすればよい。このとき、B→Dのパスのタイムスロット位置S2〜S4のうち、S2に対するカウント値は1となり、S3に対するカウント値は0となり、S4に対するカウント値は1となる。さらに、同一タイムスロット位置で隣接するリンクに対して連続している割り当て済みの箇所(図示○で示す箇所)も含めてカウントを行ってもよい。そうすると、B→Dのパスのタイムスロットのうち、S4のカウント値が2となる。
「細い空きを埋める」ためには、同一リンクでの周囲の割り当て済みタイムスロットの数をカウントする。図29に示されるパスB→Dに貼り付け処理を行う例において、タイムスロット位置S3では同一リンク内で隣接する割り当て済みのタイムスロット位置が存在しないのに対し、タイムスロット位置S2では、図示◎で示すように隣接するタイムスロット位置S1がBからDまでの2リンクで割り当て済みとなっており、カウント値が2となる。同様に、タイムスロット位置S4のカウント値は1となる。さらに、上述した場合と同様に、同一リンク内で隣接する位置にさらに連続している割り当て済みの箇所(図示○で示すタイムスロット位置S6の箇所)を含めてカウントを行ってもよい。その場合は、タイムスロット位置S4のカウント値は2となる。
「短く細い空きを埋める」ためには、周囲の割り当て済みタイムスロットをカウントする。同一タイムスロット位置や同一リンクで隣接する割り当て済みの箇所(図29での図示◎の箇所)だけでなく、これらの◎の箇所の2つに隣接する箇所(図示△の箇所)もカウントする。図29で示す例では、パスB→Dに関し、タイムスロット位置S2に対するカウント値が4、タイムスロット位置S4に対するカウント値が3となる。
次に、方法2について説明する。方法2では、前回と今回の所要TSマトリクスを比較してトラヒック量の変動差分を求めるのではなく、前回実際に帯域割当を行った状態と今回の所要TSマトリクスからの乖離を「割当差分」と定義し、剥ぎ取り処理と貼り付け処理との計算に用いている。また、乖離(割当差分)における不足分に基づく貼り付け処理を優先して行い、必要なときにのみ、割当差分における超過分に基づいて剥ぎ取り処理を行うようにする。図30は、方法2に基づいてスケジューリングを行うTDMネットワークシステムにおいて用いられるスケジューラ20の構成を示している。
方法2で用いられ図30に示されるスケジューラ20は、図17に示した方法1用のスケジューラ20と同様のものであるが、トラヒック変動差分算出部、変動差分テーブル、減少分剥ぎ取り計算部及び増加分貼り付け計算部が設けられておらず、その代わりに割当差分算出部41、割当差分テーブル42、超過分剥ぎ取り計算部43及び不足分貼り付け計算部44が設けられている点で、図17に示したものと異なっている。以下、この相違点を中心にして方法2について説明する。
割当差分算出部41は、1つ前の制御タイミング(すなわち前回)で実際に割り当てたタイムスロット数と交流トラヒック量集計部21から得た要求タイムスロット数とを比較することで割当差分を算出し、割当差分情報として割当差分テーブル42に格納するものである。前回実際に割り当てたライムスロット数の情報は、割当履歴管理部36から供給される。割当差分テーブル42に書き込まれた割当差分情報は、前述と同様に分類やソーティングの対象となり、必要に応じて、超過分剥ぎ取り計算部43及び不足分貼り付け計算部44に渡される。
超過分剥ぎ取り計算部43は、減少分剥ぎ取り計算部と等価なものであって、割当差分テーブル42に格納された割当差分情報とテーブル空管理部34から得られたテーブルの空き情報と割当履歴管理部36から得られた過去の割当履歴とに基づいて剥ぎ取り処理を実行し、その結果に応じてテーブル空管理部34内のテーブル空き情報とリンクスケジュールテーブル25とを書き換え、また、今回の剥ぎ取り処理による割当帯域を割当履歴管理部36に通知する。同様に不足分貼り付け計算部46は、増加分貼り付け計算部と等価なものであって、割当差分テーブル42に格納された割当差分情報とテーブル空管理部34から得られたテーブルの空き情報と割当履歴管理部36から得られた過去の割当履歴とに基づいて貼り付け処理を実行し、その結果に応じてテーブル空管理部34内のテーブル空き情報とリンクスケジュールテーブル25とを書き換え、また、今回の貼り付け処理による割当帯域を割当履歴管理部36に通知する。
割当履歴管理部36は、割当履歴を保持し管理するものであって、超過分剥ぎ取り計算部43及び不足分貼り付け計算部44から割当帯域の通知を受けて割当履歴に追加し、超過分剥ぎ取り計算部43、不足分貼り付け計算部44及び割当差分算出部41に対して割当履歴情報を提供する。
次に、このスケジューラ20の動作について、図31及び図32に示すシーケンス図を用いて説明する。
まず、各ノードからトラヒック量に関する情報が交流トラヒック量集計部21に送られ(ステップ201)、ステップ202において交流トラヒック量集計部21は各ノード間すなわち各対地の所要タイムスロット(TS)数を算出し、TSマトリクスとして割当差分算出部41に送る(ステップ204)。これに先立って、割当履歴管理部36は、前回割り当てたTSマトリクスの情報を割当差分算出部41に送る(ステップ203)。
割当差分算出部41は、ステップ205において、交流トラヒック量集計部21から送られてきたTSマトリクスと前回割り当てのTSマトリクスとを比較し、それらの差分(割当差分情報)を割当差分テーブル42に送り(ステップ206)、ステップ207において割当差分情報が割当差分テーブル42に書き込まれる。割当差分テーブル42から、割り当て済みのタイムスロット数が所要タイムスロット数を超過しているパスとその超過量とに関する情報が超過分剥ぎ取り計算部43に送られ(ステップ208)、割り当て済みのタイムスロット数が所要タイムスロット数に比べて不足しているパスとその不足量とに関する情報が不足分貼り付け計算部44に送られる(ステップ209)。また、割当履歴管理部36から、各パスの帯域割当履歴が超過分剥ぎ取り計算部43及び不足分貼り付け計算部44に送られる(ステップ210,211)。
ステップ212において、不足部貼り付け計算部44は、貼り付け処理の計算を行い、次にステップ217において、ステップ212における計算において貼り付けが不可能であったかを判断し、貼り付けが不可能であった場合には剥ぎ取り命令を超過分剥ぎ取り計算部43に送る(ステップ218)。超過分剥ぎ取り計算部43は、ステップ219において、剥ぎ取り命令を受け取り済みかどうかを判断する。受け取り済みであれば、超過分剥ぎ取り計算部43は、ステップ220において剥ぎ取り処理の計算を行い、その計算結果に基づき、割当履歴を割当履歴管理部36に送るとともに、テーブルの空き情報の更新のために空の更新トリガをテーブル空管理部34に送り(ステップ221)、リンクスケジュールテーブル25の更新のためにテーブルの更新トリガをリンクスケジュールテーブル25に送る(ステップ222)。これらにより、テーブル空管理部34では、ステップ223において、テーブルの空き情報の更新が行われ、ステップ224においてリンクスケジュールテーブル25の更新が行われる。さらに超過分剥ぎ取り計算部43は、剥ぎ取り完了通知を不足分貼り付け計算部44に送る(ステップ225)。
不足分貼り付け計算部44は、ステップ226において、剥ぎ取り完了通知を受け取ったかどうかを判断し、受け取った場合には、ステップ227において、貼り付け処理の計算を行い、その計算結果に基づき、割当履歴を割当履歴管理部36に送るとともに、テーブルの空き情報の更新のために空の更新トリガをテーブル空管理部34に送り(ステップ228)、リンクスケジュールテーブル25の更新のためにテーブルの更新トリガをリンクスケジュールテーブル25に送る(ステップ229)。これらにより、テーブル空管理部34では、ステップ230において、テーブルの空き情報の更新が行われ、ステップ231においてリンクスケジュールテーブル25の更新が行われる。
これ以降は、方法1でのステップ131からの処理(図19参照)が実行される。
次に、方法3について説明する。方法3では、方法1と方法2とを組み合わせ、トラヒックが増加した対地が少ない場合には方法2を適用して貼り付け処理を優先させ、トラヒックが増加した対地が多い場合には、方法1を適用して剥ぎ取り処理を優先させるものである。図33は、方法3に基づいてスケジューリングを行うTDMネットワークシステムにおいて用いられるスケジューラ20の構成を示している。
方法3で用いられ図33に示されるスケジューラ20は、図17に示した方法1用のスケジューラ20に、さらに、方法2の実施のために割当差分算出部41及び割当差分テーブル42を設け、方法1と方法2のどちらの処理を優先させるかを判断するためのコンパレータ51を設けたものである。また、減少分剥ぎ取り計算部の代わりに、減少分剥ぎ取り計算部と方法2での超過分剥ぎ取り計算部との機能を合わせ備える剥ぎ取り計算部52が設けられ、増加分貼り付け計算部の代わりに、増加分貼り付け計算部と方法2での不足分貼り付け計算部との機能を合わせ備える貼り付け計算部53が設けられている。コンパレータ51は、変動差分テーブル31から変動差分情報を供給され、トラヒックが増加した対地数とトラヒックが減少した対地数とを比較し、いずれが多いかに応じて、剥ぎ取り計算部52及び貼り付け計算部53に対し、方法1と方法2のいずれによって剥ぎ取り処理及び貼り付け処理を行うべきかを指示する。
次に、このスケジューラ20の動作について、図34及び図35に示すシーケンス図を用いて説明する。
まず、各ノードからトラヒック量に関する情報が交流トラヒック量集計部21に送られ(ステップ301)、ステップ302において交流トラヒック量集計部21は各ノード間すなわち各対地の所要タイムスロット(TS)数を算出し、TSマトリクスとしてトラヒック変動差分算出部31及び割当差分算出部41に送る(ステップ304,305)。これらに先立って、割当履歴管理部36は、前回割り当てたTSマトリクスの情報を割当差分算出部41に送る(ステップ303)。
トラヒック変動差分算出部31は、ステップ306において、前回と今回との間での所要TSマトリクスを比較し、変動差分情報を変動差分テーブル32に送り(ステップ308)、ステップ310において変動差分情報が変動差分テーブル32に書き込まれる。これと並行して、割当差分算出部41は、ステップ307において、今回の所要TSマトリクスと前回割り当てのTSマトリクスとを比較し、それらの差分(割当差分情報)を割当差分テーブル42に送り(ステップ309)、ステップ311において割当差分情報が割当差分テーブル42に書き込まれる。割当履歴管理部36から、各パスの帯域割当履歴が剥ぎ取り計算部52及び貼り付け計算部53に送られる(ステップ312,313)。
次に、変動差分テーブル32から、所要タイムスロット数が減少したパスとその減少量とに関する情報が剥ぎ取り計算部52に送られ(ステップ314)、所要タイムスロット数が増加したパスとその増加量とに関する情報が増加分貼り付け計算部53に送られる(ステップ315)。割当差分テーブル42からは、割り当て済みのタイムスロット数が所要タイムスロット数を超過しているパスとその超過量とに関する情報が超過分剥ぎ取り計算部43に送られ(ステップ316)、割り当て済みのタイムスロット数が所要タイムスロット数に比べて不足しているパスとその不足量とに関する情報が不足分貼り付け計算部44に送られる(ステップ317)。さらに変動差分テーブル32から、トラヒックが減少した対地数とトラヒックが増加した対地数に関する情報が、コンパレータ51に送られる(ステップ318)。
コンパレータ51は、ステップ319において、トラヒックが減少した対地数とトラヒックが増加した対地数とを比較し、ステップ320において、どちらの対地数が多いかを判断する。ここで、増加した対地数≧減少した対地数であれば、コンパレータ51は、剥ぎ取り計算部52及び貼り付け計算部53に対して方法1の実行を指示し(ステップ321,322)、増加した対地数<減少した対地数であれば、剥ぎ取り計算部52及び貼り付け計算部53に対して方法2の実行を指示する(ステップ323,324)。これを受けて、剥ぎ取り計算部52及び貼り付け計算部53は、ステップ325において、指示された方法(方法1または方法2)によってスケジューリングの計算を行い、それらの計算結果に基づき、割当履歴を割当履歴管理部36に送るとともに、テーブルの空き情報の更新のために空の更新トリガをテーブル空管理部34に送り(ステップ326,327)、リンクスケジュールテーブル25の更新のためにテーブルの更新トリガをリンクスケジュールテーブル25に送る(ステップ328,329)。これらにより、テーブル空管理部34では、ステップ330において、テーブルの空き情報の更新が行われ、ステップ331においてリンクスケジュールテーブル25の更新が行われる。
これ以降は、方法1でのステップ131からの処理(図19参照)が実行される。
次に、方法1〜方法3にさらなる変更を加えた例を説明する。
上述したように、スケジューリングに際し、剥ぎ取り処理及び貼り付け処理の実行回数の制限を行うことができる。ここでは、方法1の実施の際に剥ぎ取り処理及び貼り付け処理の実行回数の制限を行う場合を説明するが、方法2、方法3においても同様に実行回数の制限を行うことができる。
図36は、方法1によるスケジューラであって、剥ぎ取り処理及び貼り付け処理の実行回数の制限を行うことができるようにしたスケジューラの構成を示している。図36に示されるスケジューラ20は、図17に示した方法1用のスケジューラに、さらに、剥ぎ取り処理及び貼り付け処理の実行回数の制限を行うために、帯域変更を行った回数を管理する帯域変更カウンタ37を設けたものである。帯域変更カウンタ36には、剥ぎ取り処理を行った回数を数えるカウンタと、貼り付け処理を行った回数を数えるカウンタとが設けられ、剥ぎ取り処理の実行回数の上限値Ruと、貼り付け処理の実行回数の上限値Raとが設定される。上限値Ru,Raは、それぞれ事前に独立して定めることができる。
図37は、図36に示すスケジューラ20を用いたスケジューリングの処理を示すシーケンス図である。ここでは、トラヒック変動差分算出部31から要求タイムスロット数の差分が変動差分テーブル32に送られる処理以降の処理について説明する。これより前の処理は、方法1に関して図18に示したものと同一である。
トラヒック変動差分算出部31が要求タイムスロット数の差分(変動差分情報)を変動差分テーブル32に送ると(ステップ105)、ステップ106において変動差分情報が変動差分テーブル32に書き込まれる。変動差分テーブル32から、所要タイムスロット数が減少したパスとその減少量とに関する情報が減少分剥ぎ取り計算部33に送られ(ステップ107)、所要タイムスロット数が増加したパスとその増加量とに関する情報が増加分貼り付け計算部35に送られる(ステップ108)。割当履歴管理部36から、各パスの帯域割当履歴が減少分剥ぎ取り計算部33及び増加分貼り付け計算部35に送られる(ステップ108,109)。
すると、ステップ151において、減少分剥ぎ取り計算部33は、1つのパス(対地)について剥ぎ取り処理の計算を行い、その計算結果に基づき、割当履歴を割当履歴管理部36に送るとともに、空の更新トリガをテーブル空管理部34に送り(ステップ152)、剥ぎ取り処理を実施したことの通知(剥ぎ取り処理通知)を帯域変更カウンタ37に送り(ステップ153)、テーブルの更新トリガをリンクスケジュールテーブル25に送る(ステップ154)。これらにより、テーブル空管理部34では、ステップ155において、テーブルの空き情報の更新が行われ、ステップ156においてリンクスケジュールテーブル25の更新が行われる。帯域変更カウンタ37では、ステップ157において、剥ぎ取り回数カウンタがインクリメントされ、ステップ158において、このカウンタ値が上限値Ruに達したかどうかが判定される。帯域変更カウンタ37は、上限値Ruに達していなければ、次の剥ぎ取り処理通知を待ち受ける状態に戻り、上限値Ruに達していれば、打切り指示を減少分剥ぎ取り計算部33に送る(ステップ159)。減少分剥ぎ取り計算部33は、ステップ160において、打切り指示があったかどうかを判断し、打切り指示がない場合にはステップ151に戻って、次の1つパスの剥ぎ取り処理のための計算を実行する。
一方、増加分貼り付け計算部35は、ステップ161において、1つのパスについて貼り付け処理の計算を行い、その計算結果に基づき、割当履歴を割当履歴管理部36に送るとともに、空の更新トリガをテーブル空管理部34に送り(ステップ162)、貼り付け処理を実施したことの通知(貼り付け処理通知)を帯域変更カウンタ37に送り(ステップ163)、テーブルの更新トリガをリンクスケジュールテーブル25に送る(ステップ164)。これらにより、テーブル空管理部34では、ステップ165において、テーブルの空き情報の更新が行われ、ステップ166においてリンクスケジュールテーブル25の更新が行われる。帯域変更カウンタ37では、ステップ167において、貼り付け回数カウンタがインクリメントされ、ステップ168において、このカウンタ値が上限値Raに達したかどうかが判定される。帯域変更カウンタ37は、上限値Raに達していなければ、次の貼り付け処理通知を待ち受ける状態に戻り、上限値Raに達していれば、打切り指示を増加分貼り付け計算部35に送る(ステップ169)。増加分貼り付け計算部35は、ステップ170において、打切り指示があったかどうかを判断し、打切り指示がない場合にはステップ161に戻り、次の1つパスの貼り付け処理のための計算を実行する。
これらの処理の後は、図19に示されるステップ131の処理が実行され、スケジューリングの処理が完了することになる。
次に、制御反映までの時間を短縮するための構成について説明する。
光TDMネットワークでは、その正常な動作のために、各ノードがデータ送信スケジュールやスイッチの方路切替スケジュールなどの処理スケジュールを認識している必要があり、そのために、ノードスケジュールテーブル(あるいは処理スケジュール)を各ノードに事前に配布する必要がある。方法1〜方法3で説明したスケジューラでは、リンクスケジュールテーブル25自体は部分的にしか変更されないものの、リンクスケジュールテーブル25の全体が完成してからテーブル全体を最初からノードスケジュールテーブル27に変換しているので、スケジュールが確定してからそれがノードスケジュールテーブル27に反映され、各ノードに反映されるまでの所要時間が長くなる、という潜在的な課題がある。そこで、ノードスケジュールテーブル27の導出を低負荷で実施し、スケジュールの確定からそれが各ノードでの実際の制御に反映するまでの時間を短縮することが考えられる。
図38に示すスケジューラは、図17に示した方法1用のスケジューラと同様の構成のものであるが、テーブル変換部の代わりにテーブル書換部38を設け、リンクスケジュールテーブル25において減少分剥ぎ取り処理部33あるいは増加分貼り付け処理部35による部分変更があるたびに、その部分変更をテーブル書換部38によって直ちにノードスケジュールテーブル27にも反映させるようにしたものである。テーブル書換部38は、減少分剥ぎ取り処理部33及び増加分貼り付け処理部35からそれぞれ剥ぎ取り処理及び貼り付け処理の結果を受け取り、それらの結果に基づいて、剥ぎ取り処理あるいは貼り付け処理によって変更されることとなる箇所についてノードスケジュールテーブル27を部分変更する。このようなテーブル書換部38を設けることにより、リンクスケジュールテーブル25の完成後に最初から変換を行ってノードスケジュールテーブル27を生成する必要がなくなって、スケジュール確定からそれが各ノードでの制御に反映するまでの時間を短縮することができる。
ここでは、方法1に用いられるスケジューラについて制御反映までの時間を短縮することを説明したが、方法2あるいは方法3に用いられるスケジューラについても、テーブル変換部の代わりに上述したテーブル書換部を設けることによって、制御反映までの時間を短縮することができる。
上述した各スケジューリング方法は、前回と今回との間でのトラヒック量の差分に基づいてスケジューリングを行う方法であるが、差分だけを考慮したスケジューリングを続けていると、スケジューリングの最適解から乖離していく事象が発生する可能性がある。特に、所要タイムスロット数の差分だけに依拠する方法1では、最適解からの乖離が起こりやすいと考えられる。そこで、最適解からの乖離に対処するために、定期的に、最適解への補正を行うことが考えられる。
図39は、スケジューリング最適解からの乖離を抑制するようにしたスケジューラの構成を示している。図示されるスケジューラ60は、2種類のスケジューラ62,63をセレクタ64で切り替えるようにしたものであり、セレクタ64によって選択されたスケジューラでの処理結果によって、リンクスケジュールテーブル25の変更がなされるようになっている。スケジューラ60には、上述した方法1〜方法3のスケジューラと同様に、交流トラヒック量集計部21、テーブル変換部26、ノードスケジュールテーブル27、テーブル送信部28、タイマ29及び割当履歴管理部36を備えており、さらに、トラヒック傾向算出部61及び補正トリガ部65も備えている。
トラヒック傾向算出部61は、交流トラヒック量集計部21から所要タイムスロット数の情報を取得し、過去の所要タイムスロット数情報と比較することにより、対地(パス)ごとのトラヒックの増減やそれらの変化量の傾向を算出する。
スケジューラ62は、トラヒック傾向算出部62からトラヒックの増減やそれらの変化量の傾向についての算出結果を受け取り、割当履歴管理部36から過去の割当履歴情報を受け取って、従来から公知の一般的なスケジューリングアルゴリズムにしたがって、スケジューリング最適解の導出を行うものである。このスケジューラ62は、最適解を導出した時点でその旨を通知するトリガ信号を補正トリガ部65に出力する。
一方、スケジューラ63は、本発明にしたがって差分に基づく剥ぎ取り処理及び貼り付け処理を行うスケジューラである。具体的にはスケジューラ63は、例えば、図17に示した方法1用のスケジューラにおけるトラヒック変動算出部31、変動差分テーブル32、減少分剥ぎ取り計算部33、テーブル空管理部34及び増加分貼り付け計算部35からなる部分、あるいは、図30に示した方法2用のスケジューラにおける割当差分算出部41、割当差分テーブル42、超過分剥ぎ取り計算部43、テーブル空管理部34及び不足分貼り付け計算部44からなる部分によって構成される。さらに、スケジューラ63は、方法3に基づいて動作するものであってもよい。
補正トリガ部65は、スケジューラ62からトリガ信号が出されたときのみ、スケジューラ62から出力されるスケジューリング最適解によってリンクスケジュールテーブル25の全体が更新され、それ以外のときはスケジューラ63で実行される剥ぎ取り処理及び貼り付け処理によってリンクスケジュールテーブル25が部分変更されるように、セレクタ54を切り替える。
スケジューリング最適解導出のための計算の所要時間は、差分に基づく剥ぎ取り処理及び貼り付け処理を行うための計算の所要時間よりもかなり長い。そこで図39に示したスケジューラ60では、スケジューリング最適解導出を行うスケジューラ62は、剥ぎ取り処理及び貼り付け処理によるスケジューリングの周期よりも長い周期でスケジューリング計算を行い、剥ぎ取り処理及び貼り付け処理によるスケジューリングに対する補正を行っている。このスケジューラ60を用いることにより、差分に基づく剥ぎ取り処理及び貼り付け処理によるスケジューリングを行うことでスケジューリングの所要時間を短縮してリソース割り当てを高速で実行できるようになるとともに、スケジューリング最適解からの乖離を最小限に抑えることができる。