(57)【要約】【課題】大容量のバッファを各ＳＷに備えることなく、マイクロバーストを平準化することが可能である通信制御システム及び通信制御方法を提供する。【解決手段】通信制御システムは、複数のレイヤ２スイッチと、制御装置とを備える通信制御システムであって、レイヤ２スイッチは、データの転送経路ごとに調整可能であるキュー長のキューと、転送経路ごとにキューに蓄積されたデータを、転送経路ごとに調整可能であるデータレートで、データの次の宛先に送信する送信部とを有し、制御装置は、キューにおいて廃棄されたデータのデータ量である廃棄データ量を表す情報を、データを廃棄したレイヤ２スイッチから取得し、廃棄データ量に基づいて各レイヤ２スイッチのキュー長及びデータレートを転送経路ごとに調整する調整処理部を有する。【選択図】図１
2020036075.tif 000002
【特許請求の範囲】
【請求項１】
複数のレイヤ２スイッチと、制御装置とを備える通信制御システムであって、
前記レイヤ２スイッチは、
データの転送経路ごとに調整可能であるキュー長のキューと、
前記転送経路ごとに前記キューに蓄積されたデータを、前記転送経路ごとに調整可能であるデータレートで、前記データの次の宛先に送信する送信部と
を有し、
前記制御装置は、
前記キューにおいて廃棄された前記データのデータ量である廃棄データ量を表す情報を、前記データを廃棄した前記レイヤ２スイッチから取得し、前記廃棄データ量に基づいて各前記レイヤ２スイッチの前記キュー長及び前記データレートを前記転送経路ごとに調整する調整処理部
を有する、
通信制御システム。
【請求項２】
前記調整処理部は、前記次の宛先を表す情報である前記次宛先情報を含むデータテーブルを各前記レイヤ２スイッチから取得し、前記転送経路における始点の前記レイヤ２スイッチと終点の前記レイヤ２スイッチとを各前記次宛先情報に基づいて特定し、前記始点の前記レイヤ２スイッチから取得された前記データテーブルから、前記終点の前記レイヤ２スイッチから取得された前記データテーブルまで、各前記次宛先情報を辿ることによって前記転送経路を特定する、請求項１に記載の通信制御システム。
【請求項３】
前記調整処理部は、前記データを廃棄した前記レイヤ２スイッチが存在するか否かを前記廃棄データ量に基づいて前記転送経路ごとに判定し、前記データを廃棄した前記レイヤ２スイッチが存在する場合、前記転送経路において、前記データを廃棄した前記レイヤ２スイッチを起点として後段の各前記レイヤ２スイッチと、前記データを廃棄した前記レイヤ２スイッチとに、前記廃棄データ量のデータが分散されて蓄積されるように、前記キュー長及び前記データレートを前記転送経路ごとに調整する、請求項１又は請求項２に記載の通信制御システム。
【請求項４】
前記調整処理部は、前記データを廃棄した前記レイヤ２スイッチが存在するか否かを前記廃棄データ量に基づいて前記転送経路ごとに判定し、前記データを廃棄した前記レイヤ２スイッチが存在する場合、前記転送経路において、始点の前記レイヤ２スイッチ以外の各前記レイヤ２スイッチに、前記廃棄データ量のデータが分散されて蓄積されるように、前記キュー長及び前記データレートを前記転送経路ごとに調整する、請求項１又は請求項２に記載の通信制御システム。
【請求項５】
データの転送経路ごとに調整可能であるキュー長のキューと、前記転送経路ごとに前記キューに蓄積されたデータを、前記転送経路ごとに調整可能であるデータレートで、前記データの次の宛先に送信する送信部とを有する複数のレイヤ２スイッチと、制御装置とを備える通信制御システムが実行する通信制御方法であって、
前記制御装置は、
前記キューにおいて廃棄された前記データのデータ量である廃棄データ量を表す情報を、前記データを廃棄した前記レイヤ２スイッチから取得し、前記廃棄データ量に基づいて各前記レイヤ２スイッチの前記キュー長及び前記データレートを前記転送経路ごとに調整する、
通信制御方法。
【請求項６】
前記調整処理部は、前記次の宛先を表す情報である前記次宛先情報を含むデータテーブルを各前記レイヤ２スイッチから取得し、前記転送経路における始点の前記レイヤ２スイッチと終点の前記レイヤ２スイッチとを各前記次宛先情報に基づいて特定し、前記始点の前記レイヤ２スイッチから取得された前記データテーブルから、前記終点の前記レイヤ２スイッチから取得された前記データテーブルまで、各前記次宛先情報を辿ることによって前記転送経路を特定する、請求項５に記載の通信制御方法。
【請求項７】
前記調整処理部は、前記データを廃棄した前記レイヤ２スイッチが存在するか否かを前記廃棄データ量に基づいて前記転送経路ごとに判定し、前記データを廃棄した前記レイヤ２スイッチが存在する場合、前記転送経路において、前記データを廃棄した前記レイヤ２スイッチを起点として後段の各前記レイヤ２スイッチと、前記データを廃棄した前記レイヤ２スイッチとに、前記廃棄データ量のデータが分散されて蓄積されるように、前記キュー長及び前記データレートを前記転送経路ごとに調整する、請求項５又は請求項６に記載の通信制御方法。
【請求項８】
前記調整処理部は、前記データを廃棄した前記レイヤ２スイッチが存在するか否かを前記廃棄データ量に基づいて前記転送経路ごとに判定し、前記データを廃棄した前記レイヤ２スイッチが存在する場合、前記転送経路において、始点の前記レイヤ２スイッチ以外の各前記レイヤ２スイッチに、前記廃棄データ量のデータが分散されて蓄積されるように、前記キュー長及び前記データレートを前記転送経路ごとに調整する、請求項５又は請求項６に記載の通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御システム及び通信制御方法に関する。
【背景技術】
【０００２】
ＩｏＴ（Internet of Thing）端末は、用途に応じて様々な場所に配置される。ＩｏＴ端末は、ＩｏＴサーバからＩｏＴ端末への指示に基づいて、ＩｏＴのゲートウェイ装置であるＩｏＴ−ＧＷ（例えば、無線基地局）を介してＩｏＴサーバと通信する。
【０００３】
図２０は、従来における、通信制御システムの構成例を示す図である。各ＩｏＴ端末は、無線通信又は有線通信によって、ＩｏＴ−ＧＷに接続する。ＩｏＴ−ＧＷは、レイヤ２スイッチ（以下「ＳＷ」という。）を含むネットワークであるレイヤ２ネットワーク（Ｌ２ＮＷ）を介して、ＩｏＴサーバとの双方向通信を実行する。Ｌ２ＮＷは、ＩｏＴ−ＧＷ又はＩｏＴサーバから送信されたデータを、Ｌ２ＮＷにおける転送用フレームにカプセル化する。カプセル化されたデータの通信プルトコルは、例えば、プロバイダ・バックボーン・ブリッジング（PBB: Provider Backbone Bridging）である。
【０００４】
Ｌ２ＮＷは、ＩｏＴ−ＧＷ＃１及びＩｏＴ−ＧＷ＃２とＩｏＴサーバ＃１とが排他的に通信するための接続パスを予め形成する。図２０では、その接続パスの識別子（フローＩＤ）は、一例として１００である。フローＩＤは、例えば「ＶＬＡＮ  ＩＤ」である。ＩｏＴ−ＧＷ＃１から転送されたデータを含む転送フレームには、転送用ヘッダが付与される。図２０では、この転送用ヘッダは、転送フレームの送信元であるＳＷ＃１のＭＡＣアドレス（Media Access Control address）と、ＩｏＴサーバ＃１に接続されたＳＷ＃４のＭＡＣアドレスを表すＭＡＣ宛先アドレス（MAC DA: MAC Destination Address）と、フローＩＤ「１００」とを含む。
【０００５】
ＳＷ＃１は、受信された転送フレームに付与された転送用ヘッダと、転送経路テーブルとに基づいて、転送フレームの次の宛先であるＳＷ（以下「次宛先ＳＷ」という。）を特定する。転送経路テーブルでは、フローＩＤと、ＭＡＣ宛先アドレスと、次宛先ＳＷとが対応付けられている。フローＩＤ「１００」の転送経路において、ＳＷ＃１から送信された転送フレームの次宛先ＳＷは、ＳＷ＃３である。このため、ＳＷ＃１は、転送フレームをＳＷ＃３に転送する。ＳＷ＃３は、受信された転送フレームに付与された転送用ヘッダと、転送経路テーブルとに基づいて、転送フレームの次宛先ＳＷであるＳＷ＃４を特定する。ＳＷ＃３は、転送フレームをＳＷ＃４に転送する。
【０００６】
ＳＷ＃４は、受信された転送フレームに付与された転送用ヘッダと、転送経路テーブルとに基づいて、フローＩＤ「１００」の転送経路の終端のＳＷがＳＷ＃４があるか否かを判定する。終端のＳＷがＳＷ＃４がある場合、ＳＷ＃４は、転送用ヘッダを転送フレームから除去し、転送フレームをＩｏＴサーバ＃１に転送する。
【０００７】
ＩｏＴサーバは、同一のフローＩＤの転送経路を用いて、複数のＩｏＴ−ＧＷを収容する場合がある。例えば、接続リクエスト用データやセンシングデータ等、同一のＩｏＴサーバに向けて複数のＩｏＴ端末からほぼ同時に送信されたデータは、同一のフローＩＤの転送経路において時間多重され、マイクロバーストのトラフィックになってＩｏＴサーバに到達する。この場合、ＩｏＴサーバに到達した接続リクエスト用データのデータレートがＩｏＴサーバの処理速度を瞬間的に上回ることによって接続リクエスト用データの一部が廃棄される。このため、ＩｏＴ端末は接続リクエスト用データを再送することになる。このようなデータの廃棄を防ぐためには、マイクロバーストを平準化、すなわち、転送されたデータのデータレートをＩｏＴサーバの処理速度（指定されたデータレート）以下にする必要がある（非特許文献１参照）。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】安齋賢二、外８名、「10GbE対応帯域制御装置 PureFlow GSX-XRの開発」、アンリツテクニカル、No.88 2013.3
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、Ｌ２ＮＷにおいて、どのレイヤ２スイッチを起点にしてマイクロバーストが発生するのかを事前に把握することは困難である。このため、従来の通信制御システムは、転送されたデータを蓄積する大容量のバッファを各ＳＷに備えなければ、マイクロバーストを平準化することができない場合があった。
【００１０】
上記事情に鑑み、本発明は、大容量のバッファを各ＳＷに備えることなく、マイクロバーストを平準化することが可能である通信制御システム及び通信制御方法を提供することを目的としている。
【課題を解決するための手段】
【００１１】
本発明の一態様は、複数のレイヤ２スイッチと、制御装置とを備える通信制御システムであって、前記レイヤ２スイッチは、データの転送経路ごとに調整可能であるキュー長のキューと、前記転送経路ごとに前記キューに蓄積されたデータを、前記転送経路ごとに調整可能であるデータレートで、前記データの次の宛先に送信する送信部とを有し、前記制御装置は、前記キューにおいて廃棄された前記データのデータ量である廃棄データ量を表す情報を、前記データを廃棄した前記レイヤ２スイッチから取得し、前記廃棄データ量に基づいて各前記レイヤ２スイッチの前記キュー長及び前記データレートを前記転送経路ごとに調整する調整処理部を有する、通信制御システムである。
【００１２】
本発明の一態様は、上記の通信制御システムであって、前記調整処理部は、前記次の宛先を表す情報である前記次宛先情報を含むデータテーブルを各前記レイヤ２スイッチから取得し、前記転送経路における始点の前記レイヤ２スイッチと終点の前記レイヤ２スイッチとを各前記次宛先情報に基づいて特定し、前記始点の前記レイヤ２スイッチから取得された前記データテーブルから、前記終点の前記レイヤ２スイッチから取得された前記データテーブルまで、各前記次宛先情報を辿ることによって前記転送経路を特定する。
【００１３】
本発明の一態様は、上記の通信制御システムであって、前記調整処理部は、前記データを廃棄した前記レイヤ２スイッチが存在するか否かを前記廃棄データ量に基づいて前記転送経路ごとに判定し、前記データを廃棄した前記レイヤ２スイッチが存在する場合、前記転送経路において、前記データを廃棄した前記レイヤ２スイッチを起点として後段の各前記レイヤ２スイッチと、前記データを廃棄した前記レイヤ２スイッチとに、前記廃棄データ量のデータが分散されて蓄積されるように、前記キュー長及び前記データレートを前記転送経路ごとに調整する。
【００１４】
本発明の一態様は、上記の通信制御システムであって、前記調整処理部は、前記データを廃棄した前記レイヤ２スイッチが存在するか否かを前記廃棄データ量に基づいて前記転送経路ごとに判定し、前記データを廃棄した前記レイヤ２スイッチが存在する場合、前記転送経路において、始点の前記レイヤ２スイッチ以外の各前記レイヤ２スイッチに、前記廃棄データ量のデータが分散されて蓄積されるように、前記キュー長及び前記データレートを前記転送経路ごとに調整する。
【００１５】
本発明の一態様は、データの転送経路ごとに調整可能であるキュー長のキューと、前記転送経路ごとに前記キューに蓄積されたデータを、前記転送経路ごとに調整可能であるデータレートで、前記データの次の宛先に送信する送信部とを有する複数のレイヤ２スイッチと、制御装置とを備える通信制御システムが実行する通信制御方法であって、前記制御装置は、前記キューにおいて廃棄された前記データのデータ量である廃棄データ量を表す情報を、前記データを廃棄した前記レイヤ２スイッチから取得し、前記廃棄データ量に基づいて各前記レイヤ２スイッチの前記キュー長及び前記データレートを前記転送経路ごとに調整する、通信制御方法である。
【００１６】
本発明の一態様は、上記の通信制御方法であって、前記調整処理部は、前記次の宛先を表す情報である前記次宛先情報を含むデータテーブルを各前記レイヤ２スイッチから取得し、前記転送経路における始点の前記レイヤ２スイッチと終点の前記レイヤ２スイッチとを各前記次宛先情報に基づいて特定し、前記始点の前記レイヤ２スイッチから取得された前記データテーブルから、前記終点の前記レイヤ２スイッチから取得された前記データテーブルまで、各前記次宛先情報を辿ることによって前記転送経路を特定する。
【００１７】
本発明の一態様は、上記の通信制御方法であって、前記調整処理部は、前記データを廃棄した前記レイヤ２スイッチが存在するか否かを前記廃棄データ量に基づいて前記転送経路ごとに判定し、前記データを廃棄した前記レイヤ２スイッチが存在する場合、前記転送経路において、前記データを廃棄した前記レイヤ２スイッチを起点として後段の各前記レイヤ２スイッチと、前記データを廃棄した前記レイヤ２スイッチとに、前記廃棄データ量のデータが分散されて蓄積されるように、前記キュー長及び前記データレートを前記転送経路ごとに調整する。
【００１８】
本発明の一態様は、上記の通信制御方法であって、前記調整処理部は、前記データを廃棄した前記レイヤ２スイッチが存在するか否かを前記廃棄データ量に基づいて前記転送経路ごとに判定し、前記データを廃棄した前記レイヤ２スイッチが存在する場合、前記転送経路において、始点の前記レイヤ２スイッチ以外の各前記レイヤ２スイッチに、前記廃棄データ量のデータが分散されて蓄積されるように、前記キュー長及び前記データレートを前記転送経路ごとに調整する。
【発明の効果】
【００１９】
本発明により、大容量のバッファを各ＳＷに備えることなく、マイクロバーストを平準化することが可能である。
【図面の簡単な説明】
【００２０】
【図１】第１実施形態における、通信制御システムの構成例を示す図である。
【図２】第１実施形態における、キュー長及び平準化レート調整の例の概要を示す第１図である。
【図３】第１実施形態における、キュー長及び平準化レート調整の例の概要を示す第２図である。
【図４】第１実施形態における、キュー長及び平準化レート調整の例の詳細を示す第１図である。
【図５】第１実施形態における、キュー長及び平準化レート調整の例の詳細を示す第２図である。
【図６】第１実施形態における、ＮＷコントローラの構成例を示す図である。
【図７】第１実施形態における、複数のＳＷのトポロジの識別処理の例を示す図である。
【図８】第１実施形態における、トポロジの分岐リストの例を示す図である。
【図９】第１実施形態における、分岐リストを生成する動作例を示すフローチャートである。
【図１０】第１実施形態における、終点のＳＷを特定する動作例の詳細を示すフローチャートである。
【図１１】第１実施形態における、始点のＳＷを特定する動作例の詳細を示すフローチャートである。
【図１２】第１実施形態における、特定された始点のＳＷ及び終点のＳＷに基づいて分岐リストを生成する動作例を示すフローチャートである。
【図１３】第１実施形態における、調整対象であるＳＷの例を示す図である。
【図１４】第１実施形態における、キュー長及び平準化レート調整の動作例を示すフローチャートである。
【図１５】第１実施形態における、キュー長及び平準化レート調整の動作例の詳細を示すフローチャートの第１部分である。
【図１６】第１実施形態における、キュー長及び平準化レート調整の動作例の詳細を示すフローチャートの第２部分である。
【図１７】第２実施形態における、キュー長及び平準化レート調整の動作例を示すフローチャートである。
【図１８】第２実施形態における、キュー長及び平準化レート調整の動作例の詳細を示すフローチャートの第１部分である。
【図１９】第２実施形態における、キュー長及び平準化レート調整の動作例の詳細を示すフローチャートの第２部分である。
【図２０】従来における、通信制御システムの構成例を示す図である。
【発明を実施するための形態】
【００２１】
本発明の実施形態について、図面を参照して詳細に説明する。
（第１実施形態）
図１は、通信制御システム１の構成例を示す図である。通信制御システム１は、Ｌ２ＮＷにおいて転送されるデータの帯域を制御するシステムである。通信制御システム１は、ＩｏＴ端末２−１〜２−Ｎ（Ｎは１以上の整数）と、ＩｏＴ−ＧＷ３−１〜３−Ｍ（Ｍは２以上の整数。Ｍは一例として３。）と、Ｌ２ＮＷ４と、ＩｏＴサーバ５−１〜５−Ｐ（Ｐは１以上の整数。Ｐは一例として２。）と、Ｌ２ＮＷコントローラ６とを備える。
【００２２】
ＩｏＴ端末２は、ＩｏＴの通信端末である。ＩｏＴ端末２は、特定の通信端末に限定されないが、例えば、通信機能を有する家電機器である。ＩｏＴ端末２は、無線通信又は有線通信によって、ＩｏＴ−ＧＷ３に接続する。
【００２３】
ＩｏＴ−ＧＷ３は、ＩｏＴのゲートウェイ装置であり、例えば無線基地局である。ＩｏＴ−ＧＷ３は、Ｌ２ＮＷ４を介して、ＩｏＴサーバ５と双方向通信する。
【００２４】
Ｌ２ＮＷ４は、レイヤ２スイッチを含むネットワークである。Ｌ２ＮＷ４は、ＳＷ４０−１〜４０−４を備える。ＳＷ４０は、レイヤ２スイッチである。ＳＷ４０は、制御部４００と、キュー４１０と、送信部４２０とを備える。各ＳＷ４０は、Ｌ２ＮＷ４におけるフローの本数と同じ個数のキュー４１０（バッファ）を備える。すなわち、各ＳＷ４０は、キュー４１０をフローＩＤごとに備える。
【００２５】
以下、廃棄されたデータのデータ量を「廃棄データ量」という。制御部４００は、ＳＷ４０の各機能部の動作を制御する。制御部４００は、所定周期の期間におけるキュー４１０の廃棄データ量を表す情報を、キュー４１０ごとに測定する。すなわち、制御部４００は、所定周期の期間におけるキュー４１０の廃棄データ量を表す情報を、フローＩＤごとに測定する。
【００２６】
制御部４００は、キュー４１０の廃棄データ量を通知することを要求する信号（以下「要求信号」という。）を、例えばその所定周期で、Ｌ２ＮＷコントローラ６から受信する。制御部４００は、要求信号を受信した場合、測定されたキュー４１０の廃棄データ量を表す情報を、Ｌ２ＮＷコントローラ６に送信する。制御部４００は、測定されたキュー４１０の廃棄データ量を表す情報を送信した場合、廃棄データ量を表す情報の保持値を初期化する。制御部４００は、廃棄データ量を表す情報の保持値を初期化した場合、所定周期の期間におけるキュー４１０の廃棄データ量の測定を再開する。
【００２７】
制御部４００は、キュー長を表す情報を、フローＩＤごとにＬ２ＮＷコントローラ６から受信する。制御部４００は、キュー長を表す情報に応じて、フローＩＤに対応付けられたキュー４１０のキュー長を変更する。制御部４００は、指定されたデータレート（以下「平準化レート」という。）を表す情報を、フローＩＤごとにＬ２ＮＷコントローラ６から受信する。制御部４００は、フローＩＤに対応付けられた送信部４２０から送信されるデータのデータレートが平準化レートになるように、送信部４２０の動作を制御する。
【００２８】
キュー４１０は、ＩｏＴ−ＧＷ３又は他ＳＷ４０からキュー４１０に転送されたデータを、フローＩＤごとに蓄積する。例えば、ＳＷ４０−３において、フローＩＤ「１００」のキュー４１０−３は、フローＩＤ「１００」の転送経路を用いてＩｏＴ−ＧＷ３−２からＳＷ４０−３に転送されたデータを蓄積する。ＳＷ４０−３において、フローＩＤ「１０１」のキュー４１０−３は、フローＩＤ「１０１」の転送経路を用いてＩｏＴ−ＧＷ３−３からＳＷ４０−３に転送されたデータを蓄積する。
【００２９】
キュー４１０は、マイクロバーストのトラフィックになってキュー４１０に転送されたデータのデータ量がキュー４１０のキュー長を超えた場合、キュー長を超えたデータ量のデータを廃棄する。送信部４２０は、キュー４１０に蓄積されたデータを、平準化レートで他ＳＷ４０又はＩｏＴサーバ５に送信する。
【００３０】
ＩｏＴサーバ５は、ＩｏＴ端末と通信するサーバである。ＩｏＴサーバ５は、同一のフローＩＤの転送経路を用いて、１以上のＩｏＴ−ＧＷ３を収容する。図１では、フローＩＤ「１００」の転送経路は、ＩｏＴ−ＧＷ３−１と、ＳＷ４０−１と、ＳＷ４０−３と、ＳＷ４０−４と、ＩｏＴサーバ５−１とを結ぶ経路である。ＩｏＴサーバ５−１は、フローＩＤ「１００」の転送経路を用いて、ＩｏＴ−ＧＷ３−１及び３−２を収容する。なお、フローＩＤ「１００」の転送経路は、ＳＷ４０−２と、ＳＷ４０−４と、ＩｏＴサーバ５−１とを結ぶ経路を更に含んでもよい。
【００３１】
フローＩＤ「１０１」の転送経路は、ＩｏＴ−ＧＷ３−２と、ＳＷ４０−３と、ＳＷ４０−４と、ＩｏＴサーバ５−１とを結ぶ経路である。ＩｏＴサーバ５−１は、フローＩＤ「１０１」の転送経路を用いて、ＩｏＴ−ＧＷ３−３を収容する。
【００３２】
Ｌ２ＮＷコントローラ６は、Ｌ２ＮＷのＳＷが実行する転送処理を実行する制御装置である。Ｌ２ＮＷコントローラ６は、キュー４１０のキュー長と、送信部４２０から送信されるデータの平準化レートとを、ＳＷ４０ごとに制御する。
【００３３】
Ｌ２ＮＷコントローラ６は、キュー４１０においてデータが廃棄された場合、キュー４１０の廃棄データ量に応じて、キュー４１０のキュー長と、送信部４２０から送信されるデータの平準化レートとを、ＳＷ４０ごとに再調整する。Ｌ２ＮＷコントローラ６は、ＩｏＴ−ＧＷ３から送信されるデータが複数のＳＷ４０に分散されて蓄積されるように、キュー４１０のキュー長と、送信部４２０から送信されるデータの平準化レートとを、ＳＷ４０ごとに再調整する。
【００３４】
図２は、キュー長及び平準化レート調整の例の概要を示す第１図である。ＩｏＴサーバ５−１への入力レートの要求値は、１Ｇｂｐｓである。同様に、フローＩＤ「１００」の転送経路において、各ＳＷ４０の平準化レートの初期値は、１Ｇｂｐｓである。フローＩＤ「１００」の転送経路において、各ＳＷ４０のキュー４１０のキュー長の初期値は、１Ｍｂｉｔである。
【００３５】
図２では、ＳＷ４０−１に入力されたバーストデータ１００のデータレートは、５Ｇｂｐｓである。一例として、バースト長１ｍｓの期間に５Ｇｂｐｓのデータレートが継続するマイクロバーストが発生した。したがって、ＳＷ４０−１に入力されたバーストデータ１００のデータ量は、５Ｍｂｉｔである。
【００３６】
送信部４２０−１に設定された平準化レートの初期値が１Ｇｂｐｓであるため、キュー４１０−１は、バーストデータ１００のうちの１Ｍｂｉｔのデータ量のバーストデータ１０２を、１Ｇｂｐｓで送信部４２０−１に送信する。
【００３７】
キュー４１０−１のキュー長の初期値は、１Ｍｂｉｔである。キュー４１０−１は、バーストデータ１００のうちの１Ｍｂｉｔのデータ量のバーストデータ１０１を蓄積する。キュー４１０−１は、バーストデータ１００のうちの残りの３Ｍｂｉｔのデータ量のデータを廃棄する。制御部４００−１は、キュー４１０−１において廃棄されたバーストデータ１００のデータ量（３Ｍｂｉｔ）である廃棄データ量を表す情報を、Ｌ２ＮＷコントローラ６に送信する。
【００３８】
図２では、マイクロバーストの発生時にキュー４１０−１がバーストデータを廃棄する必要がないようにするには、キュー４１０−１は、４Ｍｂｉｔ（＝（入力５Ｇｂｐｓ−出力１Ｇｂｐｓ）×バースト長１ｍｓ）のデータ量のデータを蓄積する必要がある。
【００３９】
キュー４１０−３のキュー長の初期値は、１Ｍｂｉｔである。送信部４２０−３に設定された平準化レートの初期値が１Ｇｂｐｓであるため、キュー４１０−３は、バーストデータ１０２を蓄積せずに、１Ｇｂｐｓでバーストデータ１０２を送信部４２０−３に送信する。送信部４２０−３は、１Ｍｂｉｔのデータ量のバーストデータ１０２を、バーストデータ１０３として、１ＧｂｐｓでＳＷ４０−３に送信する。
【００４０】
キュー４１０−４のキュー長の初期値は、１Ｍｂｉｔである。送信部４２０−４に設定された平準化レートの初期値が１Ｇｂｐｓであるため、キュー４１０−４は、バーストデータ１０３を蓄積せずに、１Ｇｂｐｓでバーストデータ１０３を送信部４２０−４に送信する。送信部４２０−４は、１Ｍｂｉｔのデータ量のバーストデータ１０３を、バーストデータ１０４として、要求値を満たす１ＧｂｐｓでＩｏＴサーバ５−１に送信する。
【００４１】
図３は、キュー長及び平準化レート調整の例の概要を示す第２図である。Ｌ２ＮＷコントローラ６は、フローＩＤ「１００」の転送経路の終点であるＳＷ４０−４からＩｏＴサーバ５−１に送信されるデータのデータレート（平準化レート）を、ＩｏＴサーバ５−１への入力レートの要求値を満たす１Ｇｂｐｓ以下にする。
【００４２】
Ｌ２ＮＷコントローラ６は、ＩｏＴ−ＧＷ３−１から送信されるバーストデータ１００が複数のＳＷ４０に分散されて蓄積されるように、キュー４１０のキュー長と、送信部４２０から送信されるデータの平準化レートとを、ＳＷ４０ごとに再調整する。例えば、Ｌ２ＮＷコントローラ６は、前回廃棄されたバーストデータ１００のデータ量が、フローＩＤ「１００」の転送経路における後段のＳＷ４０群に均等に分配されるように、各ＳＷ４０のキュー４１０のキー長を再調整する。
【００４３】
これによって、Ｌ２ＮＷコントローラ６は、図２において廃棄された３Ｍｂｉｔのデータ量のデータを、フローＩＤ「１００」の転送経路における各ＳＷ４０に分散して蓄積させることができる。Ｌ２ＮＷコントローラ６は、各ＳＷ４０に必要とされるキュー４１０のキュー長を低減することができる。
【００４４】
なお、Ｌ２ＮＷコントローラ６は、キュー４１０のキュー長を増加することが可能である各ＳＷ４０のうち、キュー４１０の空き容量（未割当のバッファ容量）が多いＳＷ４０を優先して、フローＩＤ「１００」の転送経路における後段の各ＳＷ４０に蓄積されるデータ量を重み付け分配してもよい。
【００４５】
図３では、制御部４００−１は、Ｌ２ＮＷコントローラ６による制御に応じて、キュー４１０−１のキュー長を２Ｍｂｉｔに設定する。これによって、キュー４１０−１は、５Ｍｂｉｔのバーストデータ１００のうち、２Ｍｂｉｔ（＝（入力５Ｇｂｐｓ−出力３Ｇｂｐｓ）×バースト長１ｍｓ）のデータ量のバーストデータ１０５を蓄積することができる。キュー４１０−１のキュー長を２Ｍｂｉｔにしたので、制御部４００−１は、Ｌ２ＮＷコントローラ６による制御に応じて、送信部４２０−１から送信されるデータの平準化レートを３Ｇｂｐｓに設定する。
【００４６】
送信部４２０−１に設定された平準化レートが３Ｇｂｐｓであるため、キュー４１０−１は、バーストデータ１００のうちの３Ｍｂｉｔのデータ量のバーストデータ１０６を、送信部４２０−１に送信する。送信部４２０−１は、３Ｍｂｉｔのデータ量のバーストデータ１０６を、３ＧｂｐｓでＳＷ４０−３に送信する。
【００４７】
図３では、制御部４００−３は、Ｌ２ＮＷコントローラ６による制御に応じて、キュー４１０−３のキュー長を１Ｍｂｉｔ（＝（入力３Ｇｂｐｓ−出力２Ｇｂｐｓ）×バースト長１ｍｓ）のままとする。これによって、キュー４１０−３は、３Ｍｂｉｔのバーストデータ１０６のうち、１Ｍｂｉｔのデータ量のバーストデータ１０７を蓄積することができる。制御部４００−３は、Ｌ２ＮＷコントローラ６による制御に応じて、送信部４２０−３から送信されるデータの平準化レートを２Ｇｂｐｓに設定する。
【００４８】
送信部４２０−３に設定された平準化レートが２Ｇｂｐｓであるため、キュー４１０−３は、バーストデータ１００のうちの２Ｍｂｉｔのデータ量のバーストデータ１０８を、送信部４２０−３に送信する。送信部４２０−３は、２Ｍｂｉｔのデータ量のバーストデータ１０８を、２ＧｂｐｓでＳＷ４０−４に送信する。
【００４９】
図３では、制御部４００−４は、Ｌ２ＮＷコントローラ６による制御に応じて、キュー４１０−４のキュー長を１Ｍｂｉｔ（＝（入力２Ｇｂｐｓ−出力１Ｇｂｐｓ）×バースト長１ｍｓ）のままとする。これによって、キュー４１０−４は、キュー４１０−１及び４１０−３に蓄積されなかった２Ｍｂｉｔのバーストデータ１０８のうち、１Ｍｂｉｔのデータ量のバーストデータ１０９を蓄積することができる。キュー４１０−４のキュー長が１Ｍｂｉｔであるため、制御部４００−４は、Ｌ２ＮＷコントローラ６による制御に応じて、送信部４２０−４から送信されるデータの平準化レートを１Ｇｂｐｓのままとする。
【００５０】
送信部４２０−４に設定された平準化レートが１Ｇｂｐｓであるため、キュー４１０−４は、バーストデータ１００のうちの１Ｍｂｉｔのデータ量のバーストデータ１０９を、送信部４２０−４に送信する。送信部４２０−４は、１Ｍｂｉｔのデータ量のバーストデータ１１０を、１ＧｂｐｓでＩｏＴサーバ５−１に送信する。
【００５１】
図３では、廃棄されたデータ量３Ｍｂｉｔのデータがデータ量１Ｍｂｉｔずつ各ＳＷ４０に均等に分散されるので、ＮＷコントローラ６は、ＩｏＴ−ＧＷ３−１から送信されたデータが廃棄されることを防ぐことができる。各ＳＷ４０のキュー４１０のキュー長の最大値が２Ｍｂｉｔに抑えられるので、キュー４１０−１のみがバーストデータ１００の一部を蓄積する場合と比較して、各キュー４１０（バッファ）の最大容量を小さくすることができる。
【００５２】
ＮＷコントローラ６は、マイクロバーストの発生によってデータの廃棄が発生するごとに、キュー長及び平準化レートを再調整する。
【００５３】
図４は、キュー長及び平準化レート調整の例の詳細を示す第１図（廃棄発生１回目）である。図４の左側の各グラフは、図２における、転送ルート及びキュー長の関係と、転送ルート及び平滑化レートの関係とを示す。図４の左側の下側のグラフにおいて、各ＳＷ４０の送信部４２０の平滑化レートは、１Ｇｂｐｓである。
【００５４】
図４の左側の上側のグラフにおいて、ＳＷ４０−１のキュー４１０−１のキュー長は、１Ｍｂｉｔである。ＳＷ４０−３のキュー４１０−３のキュー長は、１Ｍｂｉｔである。ＳＷ４０−４のキュー４１０−４のキュー長は、１Ｍｂｉｔである。図４では、ＳＷ４０−１における蓄積必要量が４Ｍｂｉｔであり、ＳＷ４０−１はデータ量３Ｍｂｉｔのデータを廃棄する。
【００５５】
図４の右側の各グラフは、図３における、転送ルート及びキュー長（調整後）の関係と、転送ルート及び平滑化レート（調整後）の関係とを示す。図４の右側の下側のグラフにおいて、ＳＷ４０−１の送信部４２０−１の平滑化レートは、３Ｇｂｐｓである。ＳＷ４０−３の送信部４２０−３の平滑化レートは、２Ｇｂｐｓである。ＳＷ４０−４の送信部４２０−４の平滑化レートは、１Ｇｂｐｓである。
【００５６】
図４の右側の上側のグラフにおいて、ＳＷ４０−１のキュー４１０−１のキュー長は、２Ｍｂｉｔである。ＳＷ４０−３のキュー４１０−３のキュー長は、１Ｍｂｉｔである。ＳＷ４０−４のキュー４１０−４のキュー長は、１Ｍｂｉｔである。ＳＷ４０−１における蓄積必要量が２Ｍｂｉｔであり、ＳＷ４０−１はデータを廃棄しない。ＳＷ４０−４は、バーストデータを１ＧｂｐｓでＩｏＴサーバ５−１に送信する。
【００５７】
図５は、キュー長及び平準化レート調整の例の詳細を示す第２図（廃棄発生２回目）である。図５の左側の各グラフは、図３における、転送ルート及びキュー長（調整後）の関係と、転送ルート及び平滑化レート（調整後）の関係とを示す。図５の左側の下側のグラフにおいて、ＳＷ４０−１の送信部４２０−１の平滑化レートは、３Ｇｂｐｓである。ＳＷ４０−３の送信部４２０−３の平滑化レートは、２Ｇｂｐｓである。ＳＷ４０−４送信部４２０−４の平滑化レートは、１Ｇｂｐｓである。図５の左側の上側のグラフにおいて、ＳＷ４０−１のキュー４１０−１のキュー長は、２Ｍｂｉｔである。ＳＷ４０−３のキュー４１０−３のキュー長は、１Ｍｂｉｔである。ＳＷ４０−４のキュー４１０−４のキュー長は、１Ｍｂｉｔである。
【００５８】
図５では、ＳＷ４０−３における蓄積必要量が４Ｍｂｉｔである。ＳＷ４０−３は、データ量１Ｍｂｉｔのデータを廃棄する。ＳＷ４０−３は、２Ｍｂｉｔのデータ量のバーストデータ１１０を、２ＧｂｐｓでＳＷ４０−４に送信する。ＳＷ４０−４は、データ量１Ｍｂｉｔのデータを廃棄する。
【００５９】
図５の右側の各グラフは、転送ルート及びキュー長（再調整後）の関係と、転送ルート及び平滑化レート（再調整後）の関係とを示す。図５の右側の下側のグラフにおいて、ＳＷ４０−１の送信部４２０−１の平滑化レートは、３Ｇｂｐｓである。ＳＷ４０−３の送信部４２０−３の平滑化レートは、３Ｇｂｐｓである。ＳＷ４０−４の送信部４２０−４の平滑化レートは、１Ｇｂｐｓである。図５の右側の上側のグラフにおいて、ＳＷ４０−１のキュー４１０−１のキュー長は、２Ｍｂｉｔである。ＳＷ４０−３のキュー４１０−３のキュー長は、２Ｍｂｉｔである。ＳＷ４０−４のキュー４１０−４のキュー長は、２Ｍｂｉｔである。
【００６０】
図５では、ＳＷ４０−３における蓄積必要量が４Ｍｂｉｔである。ＳＷ４０−３は、データを廃棄しない。ＳＷ４０−３は、２Ｍｂｉｔのデータ量のバーストデータ１１０を、３ＧｂｐｓでＳＷ４０−４に送信する。ＳＷ４０−４は、データを廃棄しない。ＳＷ４０−４は、バーストデータを１ＧｂｐｓでＩｏＴサーバ５−１に送信する。
【００６１】
次に、ＮＷコントローラ６の構成例の詳細を説明する。
図６は、ＮＷコントローラ６の構成例を示す図である。ＮＷコントローラ６は、調整処理部６０と、記憶部６１とを備える。調整処理部６０は、ＣＰＵ（Central Processing Unit）等のプロセッサが、記憶部に記憶されたプログラムを実行することにより実現される。調整処理部６０は、ＬＳＩ（Large Scale Integration）やＡＳＩＣ（Application Specific Integrated Circuit）等のハードウェアを用いて実現されてもよい。
【００６２】
記憶部６１は、例えばフラッシュメモリ、ＨＤＤ（Hard Disk Drive）などの不揮発性の記録媒体（非一時的な記録媒体）を有する。記憶部６１は、例えば、ＲＡＭ（Random Access Memory）やレジスタなどの揮発性の記録媒体を有してもよい。記憶部６１は、例えば、データデーブル、プログラムを記憶する。
【００６３】
キュー長及び平準化レートの初期値が各ＳＷ４０に設定されている場合、マイクロバーストが発生するたびに、データの廃棄が発生することがある。調整処理部６０は、各キュー４１０の廃棄データ量を表す情報を、所定周期で各制御部４００から取得する。調整処理部６０は、廃棄データ量を表す情報の代わりに、廃棄されたデータを含む転送フレームの数を表す情報を、各制御部４００から取得してもよい。この場合、廃棄データ量は、「廃棄されたデータを含む転送フレームの数×最大フレーム長」と表される。調整処理部６０は、廃棄データ量を表す情報の代わりに、キュー４１０ごとに予め定められたキュー長閾値を超えたデータ量を表す情報を、各制御部４００から取得してもよい。
【００６４】
調整処理部６０は、廃棄データ量を表す情報を、所定周期で各ＳＷ４０から取得する。調整処理部６０は、廃棄データ量を表す情報を取得した場合、Ｌ２ＮＷ４に割り当てられたフローＩＤのうちから、１個のフローＩＤを選択する。調整処理部６０は、選択されたフローＩＤについて、各ＳＷ４０の廃棄データ量が０になるように、キュー長及び平準化レートをＳＷ４０ごとに調整する。
【００６５】
選択されたフローＩＤについて調整が完了した場合、調整処理部６０は、１個の他のフローＩＤを選択する。調整処理部６０は、選択された他のフローＩＤについて、各ＳＷ４０の廃棄データ量が０になるように、キュー長及び平準化レートをＳＷ４０ごとに調整する。調整処理部６０は、Ｌ２ＮＷ４における全てのフローＩＤについて調整が完了した場合、調整されたキュー長及び平準化レートを表す情報を、各ＳＷ４０に送信する。
【００６６】
このように、調整処理部６０は、Ｌ２ＮＷ４におけるどのＳＷ４０でマイクロバーストが発生した場合でも、データの廃棄が発生しないように、キュー長及び平準化レートを段階的に繰り返し調整する。
【００６７】
調整処理部６０は、Ｌ２ＮＷ４のトポロジ（複数のＳＷ４０の接続形態）を、フローＩＤごとに識別する。調整処理部６０は、Ｌ２ＮＷ４のトポロジを識別した場合、各ＳＷ４０のキュー長及び平準化レートを、フローＩＤごとに調整する。
【００６８】
［Ｌ２ＮＷ４のトポロジの識別処理］
調整処理部６０は、ＳＷ４０に記憶されている転送経路テーブルを、所定周期で各ＳＷ４０から取得する。転送経路テーブルを調整処理部６０が取得する周期と、廃棄データ量を表す情報を調整処理部６０が取得する周期とは、異なる周期でもよい。転送経路テーブルでは、フローＩＤと、ＭＡＣ宛先アドレスと、転送フレームの次の宛先であるＳＷとが対応付けられている。調整処理部６０は、各ＳＷ４０から取得された転送経路テーブルに基づいて、Ｌ２ＮＷ４のトポロジをフローＩＤごとに識別する。
【００６９】
図７は、複数のＳＷのトポロジの識別処理の例を示す図である。図７では、転送経路テーブルにおいていずれのＳＷ４０の「次宛先ＳＷ」にも記録されていないＳＷ４０は、図７に示されたフローＩＤ「１００」の転送経路の始点のＳＷ４０である。転送経路テーブルにおいて「次宛先ＳＷ」が「ＳＷ以外」となっているＳＷ４０は、図７に示されたフローＩＤ「１００」の転送経路の終点のＳＷ４０である。ＳＷ以外とは、ＳＷ４０以外の装置であり、例えばＩｏＴサーバ５である。
【００７０】
調整処理部６０は、始点のＳＷ４０を検出する。トポロジの識別処理では、調整処理部６０は、終点のＳＷ４０に辿りつくまで、各ＳＷ４０の転送経路テーブルの項目「次宛先ＳＷ」を始点のＳＷ４０から辿ることによって、Ｌ２ＮＷ４のトポロジを識別する。調整処理部６０は、識別されたトポロジの分岐に含まれているＳＷ４０を表すリスト（以下「分岐リスト」という。）を、分岐ごと及びフローＩＤごとに生成する。
【００７１】
図８は、トポロジの分岐リストの例を示す図である。分岐リストでは、分岐における出力側から遠い順に各ＳＷ４０に割り当てられた接続番号「Ｎｏ」と、ＳＷ４０の識別番号「ＳｗＮｏ」とが対応付けられている。図７に示されたフローＩＤ「１００」の転送経路のトポロジにおいて、分岐は２本である。
【００７２】
分岐２００を表す分岐リスト［ＦｌｏｗＩｄ＝１００］［０］では、接続番号「０」とＳＷ４０−１とが対応付けられ、接続番号「１」とＳＷ４０−３とが対応付けられ、接続順「２」とＳＷ４０−４とが対応付けられている。変数「ＦｌｏｗＩｄ」は、フローＩＤを表す変数である。分岐２０１を表す分岐リスト［ＦｌｏｗＩｄ＝１００］［１］では、接続番号「０」とＳＷ４０−２とが対応付けられ、接続番号「１」とＳＷ４０−４とが対応付けられている。
【００７３】
図９は、分岐リストを生成する動作例を示すフローチャートである。調整処理部６０は、全ての分岐リストを初期化する（ステップＳ１０１）。調整処理部６０は、「ＦｌｏｗＩｄ＝０」から昇順に分岐リストを生成するため、「ＦｌｏｗＩｄ」の値を０に初期化する（ステップＳ１０２）。調整処理部６０は、Ｌ２ＮＷ４において有効なフローの本数（以下「有効フロー数」という。）よりも「ＦｌｏｗＩｄ」の値が大きいか否かを判定する（ステップＳ１０３）。有効フロー数よりも「ＦｌｏｗＩｄ」の値が大きい場合（ステップＳ１０３：ＹＥＳ）、調整処理部６０は、分岐リストを生成する処理を終了する。
【００７４】
有効フロー数が「ＦｌｏｗＩｄ」の値以下である場合（ステップＳ１０３：ＮＯ）、調整処理部６０は、終点のＳＷ４０を特定する（ステップＳ１０４）。調整処理部６０は、始点のＳＷ４０を特定する。分岐の本数（以下「分岐数」という。）は、同一のフローＩＤが割り当てられた転送経路における、始点のＳＷ４０の個数に等しい。調整処理部６０は、始点のＳＷ４０の個数を特定することによって、分岐数を特定することができる（ステップＳ１０５）。
【００７５】
調整処理部６０は、特定された始点のＳＷ４０群から、１個のＳＷ４０を選択する。調整処理部６０は、終点のＳＷ４０に辿りつくまで、各ＳＷ４０の転送経路テーブルの項目「次宛先ＳＷ」を始点のＳＷ４０から辿ることによって、分岐リストを生成する。調整処理部６０は、全ての始点のＳＷ４０について、分岐リストを生成する（ステップＳ１０６）。
【００７６】
調整処理部６０は、「ＦｌｏｗＩｄ」の値をインクリメントする（ステップＳ１０７）。調整処理部６０は、ステップＳ１０３に処理を戻す。これによって、調整処理部６０は、特定された分岐数と同数の分岐リストを生成することができる。
【００７７】
図１０は、終点のＳＷ４０を特定する動作例（図９のステップＳ１０４）の詳細を示すフローチャートである。終点のＳＷ４０の転送経路テーブルの項目「次宛先ＳＷ」（＝経路［ＦｌｏｗＩｄ］［ＳｗＮｏ］）には、Ｌ２ＮＷコントローラ６に接続されているＳＷ４０以外の装置が記録されている。例えば、図７では、ＳＷ４０−４の転送経路テーブルの項目「次宛先ＳＷ」には、「ＳＷ以外」（例えば、ＩｏＴサーバ５−１）が記録されている。以下、Ｌ２ＮＷコントローラ６に接続されているＳＷ４０の個数を「有効ＳＷ数」という。
【００７８】
調整処理部６０は、各ＳＷ４０の転送経路テーブルの項目「次宛先ＳＷ」とＳＷ４０の「ＳｗＮｏ」とが一致しているか否かを判定する照合処理を実行する。項目「次宛先ＳＷ」と自ＳＷ４０の「ＳｗＮｏ」とが一致しなかった回数（以下「ミスマッチ数」という。）が（有効ＳＷ数−１）回となったＳＷ４０は、終点のＳＷ４０（＝終点ＳｗＮｏ［ＦｌｏｗＩｄ］）である。
【００７９】
調整処理部６０は、変数「ＳｗＮｏ」を０に初期化する（ステップＳ２０１）。調整処理部６０は、有効ＳＷ数よりも「ＳｗＮｏ」の値が大きいか否かを判定する（ステップＳ２０２）。有効ＳＷ数よりも「ＳｗＮｏ」の値が大きい場合（ステップＳ２０２：ＹＥＳ）、調整処理部６０は、終点のＳＷ４０を特定する処理を終了する。
【００８０】
有効ＳＷ数が「ＳｗＮｏ」の値以下である場合（ステップＳ２０２：ＮＯ）、調整処理部６０は、変数「ミスマッチ数」を０に初期化する（ステップＳ２０３）。調整処理部６０は、変数「ＳｗｐＳｗＮｏ」を０に初期化する（ステップＳ２０４）。
【００８１】
調整処理部６０は、有効ＳＷ数よりも「ＳｗｐＳｗＮｏ」の値が大きいか否かを判定する（ステップＳ２０５）。有効ＳＷ数よりも「ＳｗｐＳｗＮｏ」の値が大きい場合（ステップＳ２０５：ＹＥＳ）、調整処理部６０は、ステップＳ２０８に処理を進める。
【００８２】
有効ＳＷ数が「ＳｗｐＳｗＮｏ」の値以下である場合（ステップＳ２０５：ＮＯ）、調整処理部６０は、変数「ＳｗｐＳｗＮｏ」と変数「ＳｗＮｏ」とが異なり、かつ、ＳＷアドレス［ＳｗｐＳｗＮｏ］と経路［ＦｌｏｗＩｄ］［ＳｗＮｏ］とが異なるか否かを判定する。ＳＷアドレス［ＳｗｐＳｗＮｏ］とは、変数「ＳｗｐＳｗＮｏ」のＳＷ４０のアドレスを表す値である。経路［ＦｌｏｗＩｄ］［ＳｗＮｏ］とは、終点のＳＷ４０の転送経路テーブルの項目「次宛先ＳＷ」である（ステップＳ２０６）。
【００８３】
変数「ＳｗｐＳｗＮｏ」と変数「ＳｗＮｏ」とが同じである、又は、ＳＷアドレス［ＳｗｐＳｗＮｏ］と経路［ＦｌｏｗＩｄ］［ＳｗＮｏ］とが同じである場合（ステップＳ２０６：ＮＯ）、調整処理部６０は、ステップＳ２０８に処理を進める。
【００８４】
変数「ＳｗｐＳｗＮｏ」と変数「ＳｗＮｏ」とが異なる、又は、ＳＷアドレス［ＳｗｐＳｗＮｏ］と経路［ＦｌｏｗＩｄ］［ＳｗＮｏ］とが異なる場合（ステップＳ２０６：ＹＥＳ）、調整処理部６０は、変数「ミスマッチ数」をインクリメントする（ステップＳ２０７）。調整処理部６０は、変数「ＳｗｐＳｗＮｏ」をインクリメントする（ステップＳ２０８）。調整処理部６０は、ステップＳ２０５に処理を戻す。
【００８５】
調整処理部６０は、変数「ミスマッチ数」と（有効ＳＷ数−１）回とが等しいか否かを判定する（ステップＳ２０９）。変数「ミスマッチ数」と（有効ＳＷ数−１）回とが異なる場合（ステップＳ２０９：ＮＯ）、調整処理部６０は、ステップＳ２１１に処理を進める。変数「ミスマッチ数」と（有効ＳＷ数−１）回とが等しい場合（ステップＳ２０９：ＹＥＳ）、調整処理部６０は、終点のＳＷ４０の識別番号を格納するＳｗＮｏ［ＦｌｏｗＩｄ］に、変数「ＳｗＮｏ」の値を代入する（ステップＳ２１０）。調整処理部６０は、変数「ＳｗＮｏ」の値をインクリメントする（ステップＳ２１１）。調整処理部６０は、ステップＳ２０２に処理を戻す。
【００８６】
図１１は、始点のＳＷ４０を特定する動作例（図９のステップＳ１０５）の詳細を示すフローチャートである。調整処理部６０は、各ＳＷ４０の転送経路テーブルの項目「次宛先ＳＷ」とＳＷ４０の「ＳｗＮｏ」とが一致しているか否かを判定する照合処理を実行する。ミスマッチ数が有効ＳＷ数と等しいＳＷ４０は、始点のＳＷ４０（＝始点ＳｗＮｏ［ＦｌｏｗＩｄ］［分岐数［ＦｌｏｗＩｄ］］）である。
【００８７】
調整処理部６０は、分岐数［ＦｌｏｗＩｄ］の値を０に初期化する（ステップＳ３０１）。調整処理部６０は、変数「ＳｗＮｏ」の値を０に初期化する（ステップＳ３０２）。調整処理部６０は、有効ＳＷ数よりも「ＳｗｐＮｏ」の値が大きいか否かを判定する（ステップＳ３０３）。有効ＳＷ数よりも「ＳｗｐＮｏ」の値が大きい場合（ステップＳ３０３：ＹＥＳ）、調整処理部６０は、始点のＳＷ４０を特定する処理を終了する。
【００８８】
有効ＳＷ数が「ＳｗｐＮｏ」の値以下である場合（ステップＳ３０３：ＮＯ）、調整処理部６０は、変数「ミスマッチ数」を０に初期化する（ステップＳ３０４）。調整処理部６０は、変数「ＳｗｐＳｗＮｏ」を０に初期化する（ステップＳ３０５）。
【００８９】
調整処理部６０は、有効ＳＷ数よりも「ＳｗｐＳｗＮｏ」の値が大きいか否かを判定する（ステップＳ３０６）。有効ＳＷ数よりも「ＳｗｐＳｗＮｏ」の値が大きい場合（ステップＳ３０６：ＹＥＳ）、調整処理部６０は、ステップＳ３１０に処理を進める。
【００９０】
有効ＳＷ数が「ＳｗｐＳｗＮｏ」の値以下である場合（ステップＳ３０６：ＮＯ）、調整処理部６０は、ＳＷアドレス［ＳｗｐＮｏ］と経路［ＦｌｏｗＩｄ］［ＳｗＮｏ］とが異なるか否かを判定する（ステップＳ３０７）。ＳＷアドレス［ＳｗｐＳｗＮｏ］と経路［ＦｌｏｗＩｄ］［ＳｗＮｏ］とが同じである場合（ステップＳ３０７：ＮＯ）、調整処理部６０は、ステップＳ３０９に処理を進める。
【００９１】
ＳＷアドレス［ＳｗｐＮｏ］と経路［ＦｌｏｗＩｄ］［ＳｗＮｏ］とが異なる場合（ステップＳ３０７：ＹＥＳ）、調整処理部６０は、変数「ミスマッチ数」をインクリメントする（ステップＳ３０８）。調整処理部６０は、変数「ＳｗｐＳｗＮｏ」をインクリメントする（ステップＳ３０９）。調整処理部６０は、ステップＳ３０６に処理を戻す。
【００９２】
調整処理部６０は、変数「ミスマッチ数」と有効ＳＷ数とが等しいか否かを判定する（ステップＳ３１０）。変数「ミスマッチ数」と有効ＳＷ数とが異なる場合（ステップＳ３１０：ＮＯ）、調整処理部６０は、ステップＳ３１３に処理を進める。変数「ミスマッチ数」と有効ＳＷ数とが等しい場合（ステップＳ３１０：ＹＥＳ）、調整処理部６０は、始点ＳｗＮｏ［ＦｌｏｗＩｄ］［分岐数［ＦｌｏｗＩｄ］］に、変数「ＳｗｐＮｏ」の値を代入する（ステップＳ３１１）。
【００９３】
調整処理部６０は、分岐数［ＦｌｏｗＩｄ］の値をインクリメントする（ステップＳ３１２）。調整処理部６０は、変数「ＳｗＮｏ」の値をインクリメントする（ステップＳ３１３）。調整処理部６０は、ステップＳ３０３に処理を戻す。
【００９４】
図１２は、特定された始点のＳＷ４０及び終点のＳＷ４０に基づいて分岐リストを生成する動作例（図９のステップＳ１０６）を示すフローチャートである。以下、分岐リストにおける有効なインデックスの数（有効範囲）を「有効インデックス数」という。調整処理部６０は、変数ｉの値を０に初期化する（ステップＳ４０１）。変数ｉの値が分岐数［ＦｌｏｗＩｄ］の値よりも大きいか否かを判定する（ステップＳ４０２）。変数ｉの値が分岐数［ＦｌｏｗＩｄ］よりも大きい場合（ステップＳ４０２：ＹＥＳ）、調整処理部６０は、分岐リストを生成する処理を終了する。
【００９５】
変数ｉの値が分岐数［ＦｌｏｗＩｄ］の値以下である場合（ステップＳ４０２：ＮＯ）、調整処理部６０は、分岐リスト［ＦｌｏｗＩｄ］［０］［ｉ］に、始点ＳｗＮｏ［ＦｌｏｗＩｄ］［ｉ］の値を代入する（ステップＳ４０３）。調整処理部６０は、書き込み位置を表す変数「ＷｒｉｔｅＰｏｓ」の値を、０に初期化する。調整処理部６０は、検索位置を表す変数「ＳｅａｒｃｈＰｏｓ」の値を、０に初期化する（ステップＳ４０４）。
【００９６】
調整処理部６０は、変数「ＳｅａｒｃｈＰｏｓ」の値と有効ＳＷ数とが等しいか否かを判定する（ステップＳ４０５）。変数「ＳｅａｒｃｈＰｏｓ」の値と有効ＳＷ数とが等しい場合（ステップＳ４０５：ＹＥＳ）、調整処理部６０は、ステップＳ４１１に処理を進める。変数「ＳｅａｒｃｈＰｏｓ」の値と有効ＳＷ数とが異なる場合（ステップＳ４０５：ＮＯ）、調整処理部６０は、分岐リスト［ＦｌｏｗＩｄ］［ＷｒｉｔｅＰｏｓ＋１］［ｉ］に、経路［ＦｌｏｗＩｄ］［分岐リスト［ＦｌｏｗＩｄ］［Ｗｒｉｔｅ］［ｉ］］の値を代入する（ステップＳ４０６）。
【００９７】
調整処理部６０は、経路［ＦｌｏｗＩｄ］［分岐リスト［ＦｌｏｗＩｄ］［ＷｒｉｔｅＰｏｓ］［ｉ］の値と、終点ＳｗＮｏ［ＦｌｏｗＩｄ］の値とが等しいか否かを判定する（ステップＳ４０７）。経路［ＦｌｏｗＩｄ］［分岐リスト［ＦｌｏｗＩｄ］［ＷｒｉｔｅＰｏｓ］［ｉ］の値と、終点ＳｗＮｏ［ＦｌｏｗＩｄ］の値とが異なる場合（ステップＳ４０７：ＮＯ）、調整処理部６０は、変数「ＳｅａｒｃｈＰｏｓ」の値をインクリメントする（ステップＳ４０８）。
【００９８】
経路［ＦｌｏｗＩｄ］［分岐リスト［ＦｌｏｗＩｄ］［ＷｒｉｔｅＰｏｓ］［ｉ］の値と、終点ＳｗＮｏ［ＦｌｏｗＩｄ］の値とが等しい場合（ステップＳ４０７：ＹＥＳ）、調整処理部６０は、変数「ＳｅａｒｃｈＰｏｓ」の値に、有効ＳＷ数を代入する（ステップＳ４０９）。調整処理部６０は、変数「ＷｒｉｔｅＰｏｓ」の値をインクリメントする（ステップＳ４１０）。調整処理部６０は、ステップＳ４０５に処理を戻す。
【００９９】
調整処理部６０は、有効インデックス数［ｆｌｏｗＩｄ］［ｉ］に、変数「ＷｒｉｔｅＰｏｓ」の値＋１を代入する（ステップＳ４１１）。調整処理部６０は、変数ｉの値をインクリメントする（ステップＳ４１２）。調整処理部６０は、ステップＳ４０２に処理を戻す。
【０１００】
［各ＳＷ４０のキュー長及び平準化レートの調整処理］
調整処理部６０は、Ｌ２ＮＷ４のトポロジの識別処理によって生成された分岐リストに基づいて、始点のＳＷ４０から終点のＳＷ４０までの順に、各ＳＷ４０のキュー長及び平準化レートを調整する。
【０１０１】
図１３は、調整対象であるＳＷの例を示す図である。調整処理部６０は、廃棄データ量を表す情報を、図８に示された分岐２００の始点（１番目）のＳＷであるＳＷ４０−１から取得する。調整処理部６０は、ＳＷ４０−１の廃棄データ量の有無を判定する。
【０１０２】
ＳＷ４０−１の廃棄データ量が有る場合、調整処理部６０は、廃棄されたデータのうち、調整対象であるＳＷ４０−１が蓄積するデータのデータ量を決定する。調整処理部６０は、ＳＷ４０−１が蓄積するデータのデータ量に基づいて、キュー４１０−１のキュー長と、送信部４２０−１から送信されるデータの平準化レートとを決定する。調整処理部６０は、ＳＷ４０−１の廃棄データ量のうち、ＳＷ４０−１によって蓄積されないデータのデータ量を、分岐２００の２番目のＳＷであるＳＷ４０−３の廃棄データ量に加算する。調整処理部６０は、分岐２００の各ＳＷ４０によって蓄積されるデータのデータ量を加算する処理を、分岐２００の分岐リストの末尾（終点のＳＷ４０−４）まで繰り返す。
【０１０３】
調整処理部６０は、キュー長及び平準化レートの調整が分岐リストの末尾まで完了した場合、次の分岐リスト（分岐２０１）についても同様に、各ＳＷ４０のキュー長及び平準化レートを調整する。調整処理部６０は、全ての分岐リストについて、各ＳＷ４０のキュー長及び平準化レートの調整処理が完了した場合、分岐２００及び分岐２０１を含む転送経路のフローＩＤに対する調整処理を終了する。調整処理部６０は、他のフローＩＤについても同様に、各ＳＷ４０のキュー長及び平準化レートを調整する。調整処理部６０は、全てのフローＩＤについて、各ＳＷ４０のキュー長及び平準化レートを調整する。
【０１０４】
図１４は、キュー長及び平準化レート調整の動作例を示すフローチャートである。以下のフローチャートの判断処理の進み先に記載された文字又は数字は、同一の文字又は数字が記載されたステップの処理に進むことを示している。例えば、図１４のステップＳ５０２の判断処理の進み先に記載された文字「Ａ」は、図１５において同一の文字である「Ａ」が記載されたステップＳ５１２の処理に進むことを示している。
【０１０５】
調整処理部６０は、変数「ＦｌｏｗＩｄ」の値を０に初期化する（ステップＳ５０１）。調整処理部６０は、有効フロー数よりも「ＦｌｏｗＩｄ」の値が大きいか否かを判定する（ステップＳ５０２）。有効フロー数よりも「ＦｌｏｗＩｄ」の値が大きい場合（ステップＳ５０２：ＹＥＳ）、調整処理部６０は、キュー長及び平準化レートを調整する処理を終了する。
【０１０６】
有効フロー数が「ＦｌｏｗＩｄ」の値以下である場合（ステップＳ５０２：ＮＯ）、調整処理部６０は、分岐の番号を表す変数ｉの値を、０に初期化する（ステップＳ５０３）。調整処理部６０は、分岐数［ＦｌｏｗＩｄ］の値よりも変数ｉの値が大きいか否かを判定する（ステップＳ５０４）。分岐数［ＦｌｏｗＩｄ］の値よりも変数ｉの値が大きい場合（ステップＳ５０４：ＹＥＳ）、調整処理部６０は、変数「ＦｌｏｗＩｄ」の値をインクリメントする（ステップＳ５０５）。
【０１０７】
変数ｉの値が分岐数［ＦｌｏｗＩｄ］の値以下である場合（ステップＳ５０４：ＮＯ）、調整処理部６０は、分岐リストにおける有効なインデックスを表す変数ｊの値を、０に初期化する（ステップＳ５０６）。調整処理部６０は、有効インデックス数［ＦｌｏｗＩｄ］［ｉ］の値よりも変数ｊの値が大きいか否かを判定する（ステップＳ５０７）。有効インデックス数［ＦｌｏｗＩｄ］［ｉ］の値よりも変数ｊの値が大きい場合（ステップＳ５０７：ＹＥＳ）、調整処理部６０は、変数ｉの値をインクリメントする（ステップＳ５０８）。
【０１０８】
変数ｊの値が有効インデックス数［ＦｌｏｗＩｄ］［ｉ］の値以下である場合（ステップＳ５０７：ＮＯ）、調整処理部６０は、調整対象のＳＷ４０の番号を表す変数「調整ＳＷ番号」に、分岐リスト［ＦｌｏｗＩｄ］［ｊ］［ｉ］の値を代入する（ステップＳ５０９）。調整処理部６０は、変数「調整ＳＷ番号」が表すＳＷ４０について、キュー長及び平準化レートを調整するか否かを判定する。すなわち、調整処理部６０は、廃棄データ量［ＦｌｏｗＩｄ］［調整ＳＷ番号］の値が０よりも大きいか否か（廃棄データ量が有るか否か）を判定する（ステップＳ５１０）。廃棄データ量［ＦｌｏｗＩｄ］［調整ＳＷ番号］の値が０である場合（ステップＳ５１０：ＮＯ）、調整処理部６０は、変数ｊの値をインクリメントする（ステップＳ５１１）。調整処理部６０は、ステップＳ５０７に処理を戻す。
【０１０９】
図１５は、キュー長及び平準化レート調整の動作例の詳細を示すフローチャートの第１部分（廃棄データ量のうち、前段のＳＷ４０群に分散して蓄積させるデータのデータ量を決定する処理）である。
【０１１０】
調整対象のＳＷ４０が終点のＳＷ４０である場合、廃棄データ量が０を超えており、前段のＳＷ４０において廃棄データ量が無い場合に、前段のＳＷ４０群にデータを分散して蓄積させる。調整対象のＳＷ４０が終点以外のＳＷ４０である場合、前段のＳＷ４０群にデータを蓄積させずに、次段以降のＳＷ４０群にデータを分散して蓄積させる。
【０１１１】
変数「蓄積分散ＳＷ数」は、調整対象のＳＷ４０（調整ＳＷ番号が示すＳＷ４０）を起点とし、廃棄データ量のデータを分散することが可能である後段のＳＷ４０の個数を表す。変数「バースト長」は、予め定められたマイクロバースト長の想定値であり、例えば１ｍｓである。変数「前ＳＷ番号」は、前段のＳＷ４０の識別番号を表す。変数「次ＳＷ番号」は、調整対象のＳＷ４０の次段のＳＷ４０の識別番号を表す。
【０１１２】
変数「自ＳＷ調整データ量」は、調整ＳＷ番号のＳＷ４０において調整対象のフローに対応付けられたキュー４１０のキュー長に追加される値を表す。変数「前ＳＷ分散データ量」は、廃棄データ量のうち、前段のＳＷ４０群に分散して蓄積させるデータのデータ量を表す。変数「次ＳＷ分散データ量」は、廃棄データ量のうち、次段以降の他ＳＷ４０群に分散して蓄積させるデータのデータ量を表す。
【０１１３】
変数「自ＳＷ調整レート」は、調整ＳＷ番号のＳＷ４０において調整対象のフローに対応付けられた送信部４２０から送信されるデータの平準化レート（出力データレート）に追加される値を表す。変数「前ＳＷ分散レート」は、前段のＳＷ４０から送信されるデータの平準化レート（出力データレート）から減算される値を表す。変数「ラインレート」は、ＳＷ４０の出力ポートの最大データレートを表す。
【０１１４】
廃棄データ量［ＦｌｏｗＩｄ］［調整ＳＷ番号］の値が０より大きい場合（ステップＳ５１０：ＹＥＳ）、調整処理部６０は、変数「蓄積分散ＳＷ数」に、（有効インデックス数−ｊ）の値を代入する（ステップＳ５１２）。調整処理部６０は、調整対象のＳＷ４０が終点のＳＷ４０であるか否かを判定する。すなわち、調整処理部６０は、（有効インデックス数−ｊ）の値が変数ｊの値と等しく、かつ、変数ｊの値が０以外であるか否かを判定する（ステップＳ５１３）。これによって、終点のＳＷ４０は、前段のＳＷ４０にデータを分散して蓄積することができる。
【０１１５】
（有効インデックス数−ｊ）の値が変数ｊの値と等しく、かつ、変数ｊの値が０以外である場合（ステップＳ５１３：ＹＥＳ）、調整処理部６０は、変数「前ＳＷ番号」に、分岐リスト［ＦｌｏｗＩｄ］［ｊ−１］［ｉ］の値を代入する（ステップＳ５１４）。調整処理部６０は、廃棄データ量［ＦｌｏｗＩｄ］［前ＳＷ番号］が０よりも大きいか否か（前ＳＷ番号のＳＷ４０の廃棄データ量が有るか否か）を判定する（ステップＳ５１５）。廃棄データ量［ＦｌｏｗＩｄ］［前ＳＷ番号］が０である（前ＳＷ番号のＳＷ４０の廃棄データ量が無い）場合（ステップＳ５１５：ＮＯ）、変数「蓄積分散ＳＷ数」の値が１よりも大きいか否かを判定する（ステップＳ５１６）。
【０１１６】
（有効インデックス数−ｊ）の値が変数ｊの値とは異なる、若しくは、変数ｊの値が０である場合（ステップＳ５１３：ＮＯ）、又は、廃棄データ量［ＦｌｏｗＩｄ］［前ＳＷ番号］が０よりも大きい場合（ステップＳ５１５：ＹＥＳ）、調整処理部６０は、変数「前ＳＷ分散データ量」に０を代入し、変数「前ＳＷ分散レート」に０を代入する（ステップＳ５１７）。
【０１１７】
変数「蓄積分散ＳＷ数」の値が１以下である場合（ステップＳ５１６：ＮＯ）、調整処理部６０は、変数「前ＳＷ分散データ量」に、キュー長［ＦｌｏｗＩｄ］［前ＳＷ番号］の値を代入する（ステップＳ５１８）。調整処理部６０は、ステップＳ５２０に処理を進める。
【０１１８】
変数「蓄積分散ＳＷ数」の値が１よりも大きい場合（ステップＳ５１６：ＹＥＳ）、調整処理部６０は、変数「前ＳＷ分散データ量」に、Ｍｉｎ（キュー長［ＦｌｏｗＩｄ］［前ＳＷ番号］、廃棄データ量［ＦｌｏｗＩｄ］［調整ＳＷ番号］／（蓄積分散ＳＷ数＋１））の値を代入する（ステップＳ５１９）。調整処理部６０は、変数「前ＳＷ分散レート」に、（前ＳＷ分散データ量／バースト長）の値を代入する（ステップＳ５２０）。
【０１１９】
調整処理部６０は、（平準化レート［ＦｌｏｗＩｄ］［前ＳＷ番号］−前ＳＷ分散レート）の値が、目標平準化レート［ＦｌｏｗＩｄ］の値よりも小さいか否かを判定する（ステップＳ５２１）。（平準化レート［ＦｌｏｗＩｄ］［前ＳＷ番号］−前ＳＷ分散レート）の値が、目標平準化レート［ＦｌｏｗＩｄ］の値よりも小さい場合（ステップＳ５２１：ＹＥＳ）、調整処理部６０は、変数「前ＳＷ分散レート」に、（平準化レート［ＦｌｏｗＩｄ］［前ＳＷ番号］−目標平準化レート［ＦｌｏｗＩｄ]）の値を代入する（ステップＳ５２２）。調整処理部６０は、変数「前ＳＷ分散データ量」に、（前ＳＷ分散レート×バースト長）の値を代入する（ステップＳ５２３）。
【０１２０】
図１６は、キュー長及び平準化レート調整の動作例の詳細を示すフローチャートの第２部分（廃棄データ量のうち、自ＳＷ４０に蓄積するデータのデータ量と、他ＳＷ４０群に分散して蓄積させるデータのデータ量とを決定する処理）である。
【０１２１】
図１５に示されたステップＳ５１７若しくはステップＳ５２３の処理を実行した場合、又は、（平準化レート［ＦｌｏｗＩｄ］［前ＳＷ番号］−前ＳＷ分散レート）の値が目標平準化レート［ＦｌｏｗＩｄ］の値以上である場合（ステップＳ５２１：ＮＯ）、調整処理部６０は、変数「自ＳＷ調整データ量」に、（廃棄データ量［ＦｌｏｗＩｄ］［調整ＳＷ番号］−前ＳＷ分散データ量）／蓄積分散ＳＷ数）の値を代入する（ステップＳ５２４）。
【０１２２】
調整処理部６０は、キュー長［ＦｌｏｗＩｄ］［調整ＳＷ番号］の値に、変数「自ＳＷ調整データ量」の値を加算する（ステップＳ５２５）。調整処理部６０は、変数「次ＳＷ分散データ量」に、（廃棄データ量［ＦｌｏｗＩｄ］［調整ＳＷ番号］−自ＳＷ調整データ量）の値を代入する（ステップＳ５２６）。調整処理部６０は、変数「自ＳＷ調整レート」に、（次ＳＷ分散データ量／バースト長）の値を代入する（ステップＳ５２７）。
【０１２３】
調整処理部６０は、変数ｊの値と（有効インデックス数−１）の値とが等しいか否かを判定する（ステップＳ５２８）。変数ｊの値と（有効インデックス数−１）の値とが等しい場合（ステップＳ５２８：ＹＥＳ）、調整処理部６０は、平準化レート［ＦｌｏｗＩｄ］［前ＳＷ番号］の値から、変数「前ＳＷ分散レート」の値を減算する（ステップＳ５２９）。変数ｊの値と（有効インデックス数−１）の値とが異なる場合（ステップＳ５２８：ＮＯ）、調整処理部６０は、変数「次ＳＷ番号」に、分岐リスト［ＦｌｏｗＩｄ］［ｊ＋１］［ｉ］の値を代入する（ステップＳ５３０）。
【０１２４】
調整処理部６０は、キュー長［ＦｌｏｗＩｄ］［次ＳＷ番号］の値が、変数「次ＳＷ分散データ量」の値よりも小さいか否かを判定する（ステップＳ５３１）。キュー長［ＦｌｏｗＩｄ］［次ＳＷ番号］の値が、変数「次ＳＷ分散データ量」の値よりも小さい場合（ステップＳ５３１：ＹＥＳ）、調整処理部６０は、ステップＳ５３３に処理を進める。
【０１２５】
キュー長［ＦｌｏｗＩｄ］［次ＳＷ番号］の値が、変数「次ＳＷ分散データ量」の値以上である場合（ステップＳ５３１：ＮＯ）、調整処理部６０は、廃棄データ量［ＦｌｏｗＩｄ］［次ＳＷ番号］の値に、（次ＳＷ分散データ量−キュー長［ＦｌｏｗＩｄ］［次ＳＷ番号]）の値を加算する（ステップＳ５３２）。調整処理部６０は、平準化レート［ＦｌｏｗＩｄ］［調整ＳＷ番号］の値に、変数「自ＳＷ分散レート」の値を加算する（ステップＳ５３３）。
【０１２６】
調整処理部６０は、平準化レート［ＦｌｏｗＩｄ］［調整ＳＷ番号］の値が変数「ラインレート」の値よりも大きいか否かを判定する（ステップＳ５３４）。平準化レート［ＦｌｏｗＩｄ］［調整ＳＷ番号］の値が変数「ラインレート」の値以下である場合（ステップＳ５３４：ＮＯ）、調整処理部６０は、図１４に示されたステップＳ５１１に処理を進める。平準化レート［ＦｌｏｗＩｄ］［調整ＳＷ番号］の値が変数「ラインレート」の値よりも大きい場合（ステップＳ５３４：ＹＥＳ）、調整処理部６０は、平準化レート［ＦｌｏｗＩｄ］［調整ＳＷ番号］に、変数「ラインレート」の値を代入する（ステップＳ５３５）。
【０１２７】
以上のように、第１実施形態の通信制御システム１は、複数のＳＷ４０と、ＮＷコントローラ６（制御装置）とを備える。ＳＷ４０は、キュー４１０と、送信部４２０とを有する。キュー４１０は、データの転送経路ごとに調整可能であるキュー長のバッファである。送信部４２０は、転送経路ごとにキューに蓄積されたデータを、転送経路ごとに調整可能であるデータレートで、データの次の宛先に送信する。ＮＷコントローラ６は、調整処理部６０を有する。調整処理部６０は、廃棄データ量を表す情報を、データを廃棄したＳＷ４０から取得する。調整処理部６０は、廃棄データ量に基づいて各ＳＷ４０のキュー長及びデータレートを転送経路ごとに調整（決定）する。
【０１２８】
これによって、第１実施形態の通信制御システム１は、大容量のバッファを各ＳＷに備えることなく、マイクロバーストを平準化することが可能である。第１実施形態の通信制御システム１は、Ｌ２ＮＷの構築コストを削減することが可能である。転送経路における終点のＳＷ４０は、前段のＳＷ４０にデータを分散して蓄積することができる。
【０１２９】
調整処理部６０は、次の宛先を表す情報である次宛先情報（次宛先ＳＷ）を含む転送経路データテーブルを各ＳＷ４０から取得する。調整処理部６０は、転送経路における始点のＳＷ４０と終点のＳＷ４０とを各次宛先情報に基づいて特定する。調整処理部６０は、始点のＳＷ４０から取得された転送経路データテーブルから、終点のＳＷ４０から取得された転送経路データテーブルまで、各次宛先情報を辿ることによって転送経路を特定する。
【０１３０】
調整処理部６０は、データを廃棄したＳＷ４０が存在するか否かを廃棄データ量に基づいて転送経路ごとに判定する。調整処理部６０は、データを廃棄したＳＷ４０が存在する場合、転送経路において、データを廃棄したＳＷ４０を起点として後段の各ＳＷ４０と、データを廃棄したＳＷ４０とに、廃棄データ量のデータが分散されて蓄積されるように、キュー長及びデータレートを転送経路ごとに調整する。
【０１３１】
（第２実施形態）
第２実施形態では、廃棄データ量のデータをＳＷ４０群に分散して蓄積させるキュー長及び平準化レート調整処理が、第１実施形態と相違する。第２実施形態では、第１実施形態との相違点を説明する。
【０１３２】
図１７は、キュー長及び平準化レート調整の動作例を示すフローチャートである。ステップＳ６０１からステップＳ６１１までの動作は、図１４に示されたステップＳ５０１からステップＳ５１１までの動作と同様である。
【０１３３】
図１８は、キュー長及び平準化レート調整の動作例の詳細を示すフローチャートの第１部分（廃棄データ量のうち、前段のＳＷ４０群に分散して蓄積させるデータのデータ量を決定する処理）である。ステップＳ６１２の動作は、図１５に示されたステップＳ５１２の動作と同様である。調整処理部６０は、調整対象のＳＷ４０が終点のＳＷ４０であるか否かを判定せずに、変数ｊの値が０以外であるか否かを判定する（ステップＳ６１３）。調整対象のＳＷ４０が終点のＳＷ４０であるか否かを調整処理部６０が判定しないことによって、転送経路における始点のＳＷ４０以外の全てのＳＷ４０は、前段のＳＷ４０にデータを分散して蓄積することができる。ステップＳ６１４からステップＳ６２３までの動作は、図１５に示されたステップＳ５１４からステップＳ５２３までの動作と同様である。
【０１３４】
図１９は、キュー長及び平準化レート調整の動作例の詳細を示すフローチャートの第２部分（廃棄データ量のうち、自ＳＷ４０に蓄積するデータのデータ量と、他ＳＷ４０群に分散して蓄積させるデータのデータ量とを決定する処理）である。ステップＳ６２４からステップＳ６３５までの動作は、図１６に示されたステップＳ５２４からステップＳ５３５までの動作と同様である。
【０１３５】
以上のように、第２実施形態の調整処理部６０は、データを廃棄したＳＷ４０が存在するか否かを、廃棄データ量に基づいて転送経路ごとに判定する。調整処理部６０は、データを廃棄したＳＷ４０が存在する場合、転送経路において、始点のＳＷ４０以外の各ＳＷ４０に、廃棄データ量のデータが分散されて蓄積されるように、キュー長及びデータレートを転送経路ごとに調整する。
【０１３６】
これによって、第２実施形態の通信制御システム１は、大容量のバッファを各ＳＷに備えることなく、マイクロバーストを平準化することが可能である。通信制御システム１は、転送経路における始点のＳＷ４０以外の全てのＳＷ４０に、前段のＳＷ４０にデータを分散して蓄積することができる。
【０１３７】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【０１３８】
上述した実施形態における、ＩｏＴ端末、ＩｏＴサーバ、ＩｏＴＧＷ、ＮＷコントローラ及びＳＷをコンピュータで実現するようにしてもよい。その場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、ＦＰＧＡ（Field Programmable Gate Array）等のプログラマブルロジックデバイスを用いて実現されるものであってもよい。
【産業上の利用可能性】
【０１３９】
本発明は、ＩｏＴの通信システムに適用可能である。
【符号の説明】
【０１４０】
１…通信制御システム、２…ＩｏＴ端末、３…ＩｏＴ−ＧＷ、４…Ｌ２ＮＷ、５…ＩｏＴサーバ、６…ＮＷコントローラ、４０…ＳＷ、６０…調整処理部、６１…記憶部、１００〜１１０…バーストデータ、４００…制御部、４１０…キュー、４２０…送信部
【図１】
2020036075.tif 000003
【図２】
2020036075.tif 000004
【図３】
2020036075.tif 000005
【図４】
2020036075.tif 000006
【図５】
2020036075.tif 000007
【図６】
2020036075.tif 000008
【図７】
2020036075.tif 000009
【図８】
2020036075.tif 000010
【図９】
2020036075.tif 000011
【図１０】
2020036075.tif 000012
【図１１】
2020036075.tif 000013
【図１２】
2020036075.tif 000014
【図１３】
2020036075.tif 000015
【図１４】
2020036075.tif 000016
【図１５】
2020036075.tif 000017
【図１６】
2020036075.tif 000018
【図１７】
2020036075.tif 000019
【図１８】
2020036075.tif 000020
【図１９】
2020036075.tif 000021
【図２０】
2020036075.tif 000022