(57)【特許請求の範囲】
【請求項１】
クライアント側にて、再送帯域を測定し、コネクション毎に基準時間前の制御帯域から前記再送帯域を減算した帯域が基準時間後の制御帯域となるように変更する帯域制御を行いながらパケット送信を行い、フィードバック通知されるパケット廃棄箇所に基づきパケット再送を行う複数の第１ノード装置と、
サーバ側にて、複数の前記第１ノード装置と通信し、パケット廃棄箇所を検出して送信側の前記第１ノード装置に前記パケット廃棄箇所をフィードバック通知する第２ノード装置と
を備え、
インターバルとして規定する一定の時刻に達するたびに、前記第２ノード装置の複数の前記第１ノード装置との回線の利用可能通信帯域を、各第１ノード装置と前記第２ノード装置とのコネクション数に基づき各第１ノード装置の通信帯域に分割し、前記第１ノード装置毎の上限通信帯域とすることを特徴とする通信システム。
【請求項２】
クライアント側の前記第１ノード装置の少なくともひとつは、パケット送受信が行われている有効なコネクション数を測定して、前記有効なコネクション数に基づき、前記利用可能通信帯域を分割することを特徴とする請求項１に記載の通信システム。
【請求項３】
クライアント側の前記第１ノード装置の少なくともひとつは、パケット再送が発生中のコネクション数を測定して、前記再送発生中のコネクション数に基づき、前記利用可能通信帯域を分割することを特徴とする請求項１に記載の通信システム。
【請求項４】
クライアント側の前記第１ノード装置の少なくともひとつは、前記フィードバック通知されたパケット受信中のコネクション数を測定して、前記パケット受信中のコネクション数に基づき、前記利用可能通信帯域を分割することを特徴とする請求項１に記載の通信システム。
【請求項５】
前記第２ノード装置は、
パケット送信側の複数の前記第１ノード装置との間のラウンドトリップタイムをそれぞれ測定し、
各ラウンドトリップタイムの中で最大のラウンドトリップタイム以上の値を前記インターバルとして設定し、
該インターバルが経過するたびに、前記第１ノード装置へ、前記第２ノード装置が受信している総コネクション数と契約帯域とを通知することを特徴とする請求項１に記載の通信システム。
【請求項６】
パケット送信側の前記第１ノード装置は、前記第２ノード装置での総コネクション数に対する自身のコネクション数の割合に前記契約帯域を乗じて、自身の上限通信帯域を算出し、前記自身の最大通信帯域の範囲内でパケット送信することを特徴とする請求項５に記載の通信システム。
【請求項７】
パケット受信側の前記第２ノード装置は、前記インターバルの時刻が経過するたびに、パケット送信側の第１ノード装置へ、前記インターバルを通知することを特徴とする請求項１に記載の通信システム。
【請求項８】
前記第２ノード装置にて、パケット送信側にあたる新規の第３ノード装置と、複数の前記第１ノード装置が通信帯域を共有する際に、
前記第２ノード装置は、前記第３ノード装置との間のラウンドトリップタイムを計測し、現在、通信帯域を共有している複数の前記第１ノード装置と前記第３ノード装置の中で最大のラウンドトリップタイム以上の値で前記インターバルを更新することを特徴とする請求項１に記載の通信システム。
【請求項９】
前記第２ノード装置にて、現在、通信帯域を共有しているパケット送信側にあたる前記第１ノード装置の少なくともひとつが、通信帯域の共有対象から離脱する際に、
離脱する前記第１ノード装置のラウンドトリップタイムが、現在、通信帯域を共有している前記第１ノード装置の中で最大のラウンドトリップタイムであった場合、次に大きい値のラウンドトリップタイム以上の値で前記インターバルを更新することを特徴とする請求項１に記載の通信システム。
【請求項１０】
前記第１ノード装置は、前記第２ノード装置がパケットを受信するタイミングである基準時刻に対して、計測される前記第２ノード装置とのラウンドトリップタイムの１／２だけ帯域更新のタイミングをずらすことを特徴とする請求項１に記載の通信システム。
【請求項１１】
前記第２ノード装置は、現在の時刻を示すタイマの単位時間を示す時間精度と、タイマの初期値とを前記第１ノード装置に通知し、
前記第１ノード装置は、自身のタイマの時刻と時間精度を、通知されたタイマ初期値と時間粒度とに基づき設定することを特徴とする請求項１に記載の通信システム。
【請求項１２】
前記第１ノード装置は、タイマ初期値と時間粒度とを受信した時点で自身のタイマの時刻と、時間精度とを設定し、
パケット受信側の前記第２ノード装置は、パケット送信側の各第１ノード装置との間のラウンドトリップタイムをパケット送信側の前記第１ノード装置に通知し、
前記第１ノード装置にて、自身のタイマの時刻から前記ラウンドトリップタイムを減じた値を前記インターバルで割った値がゼロに達するたびに、前記第２ノード装置が受信している総コネクション数に対する自身のコネクション数の割合に前記第２ノード装置から通知される契約帯域を乗じて、自身の上限通信帯域を算出し、該自身の上限通信帯域の範囲内でパケットを送信することを特徴とする請求項１０に記載の通信システム。
【請求項１３】
クライアント側にて、再送帯域を測定し、コネクション毎に基準時間前の制御帯域から前記再送帯域を減算した帯域が基準時間後の制御帯域となるように変更する帯域制御を行いながらパケット送信を行い、フィードバック通知されるパケット廃棄箇所に基づきパケット再送を行う複数の第１ノード装置と、サーバ側にて、複数の前記第１ノード装置と通信し、パケット廃棄箇所を検出して送信側の前記第１ノード装置に前記パケット廃棄箇所をフィードバック通知する第２ノード装置とを備えた通信システムにおいて、前記第２ノード装置として用いられるノード装置であって、
インターバルとして規定する一定の時刻に達するたびに、前記第２ノード装置と複数の前記第１ノード装置との回線の利用可能通信帯域を、各第１ノード装置と前記第２ノード装置とのコネクション数に基づき各第１ノード装置の通信帯域に分割し、前記第１ノード装置毎の上限通信帯域とすることを特徴とする前記ノード装置。
【請求項１４】
前記第１ノード装置の少なくともひとつは、パケット送受信が行われている有効なコネクション数を測定して、前記有効なコネクション数に基づき、前記利用可能通信帯域を分割することを特徴とする請求項１３に記載の前記ノード装置。
【請求項１５】
クライアント側にて、再送帯域を測定し、コネクション毎に基準時間前の制御帯域から前記再送帯域を減算した帯域が基準時間後の制御帯域となるように変更する帯域制御を行いながらパケット送信を行い、フィードバック通知されるパケット廃棄箇所に基づきパケット再送を行う複数の第１ノード装置と、サーバ側にて、複数の前記第１ノード装置と通信し、パケット廃棄箇所を検出して送信側の前記第１ノード装置に前記パケット廃棄箇所をフィードバック通知する第２ノード装置とを備えた通信システムにおいて、前記第１ノード装置として用いられるノード装置であって、
インターバルとして規定する一定の時刻に達するたびに、前記第２ノード装置と複数の前記第１ノード装置との回線の利用可能通信帯域を、各第１ノード装置と前記第２ノード装置とのコネクション数に基づき分割した、自ノード装置の上限通信帯域を決定することを特徴とする前記ノード装置。
【請求項１６】
前記第１ノード装置の少なくともひとつは、パケット送受信が行われている有効なコネクション数を測定して、前記有効なコネクション数に基づき、前記利用可能通信帯域を分割することを特徴とする請求項１５に記載の前記ノード装置。
【請求項１７】
帯域分割の機能がノード装置上のプログラム可能なデバイスを搭載したサービスカードとして提供され、
帯域分割の対象となる通信は、前記ノード装置の中の前記サービスカード上で実行されることを特徴とする請求項１３から１６のいずれかに記載の通信ノード装置。
【請求項１８】
前記第２ノード装置は、
前記コネクション数および前記第１ノード装置が属するユーザ拠点の優先度による重みづけに基づいて、前記上限通信帯域を決定し、前記第１ノード装置に通知することを特徴とする請求項１に記載の通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム及びノード装置に係り、特に、帯域制御を行う複数通信ノード連携情報処理システム及び通信装置に関する。
【背景技術】
【０００２】
本技術分野の背景技術として、例えば特開２００７−１３８２３号公報（特許文献１）がある。この公報には、課題として「従来の輻輳制御方式が持つ様々な問題点、例えば、新たに通信を開始したフローが広帯域のスループットを得るまでの時間が長くなるという問題を解決する」と記載されている。また、解決手段として、「送信端末６００は、パケット送信時に現在の時刻ｎｏｗ１をパケットに書き込む現在時刻書込部６０１と、受信確認パケットを受信した時、現在の時刻ｎｏｗからｎｏｗ１を減算した値を計算し、最小往復遅延時間ＲＴＴ＿ｍｉｎ及び最大往復遅延時間ＲＴＴ＿ｍａｘを記憶する往復時間計算部６０３と、前回利用可能帯域ＡＢＥを計算した時刻から最小往復遅延時間ＲＴＴ＿ｍｉｎを経過する時間の間に受信した確認応答されたパケット数を基にして利用可能帯域ＡＢＥを計算する利用可能帯域計算部６０５と、ウィンドウサイズを増加させる時、ＲＴＴ＿ｍｉｎ＊ＡＢＥとＲＴＴ＿ｍａｘ＊ＡＢＥを基にして、ウィンドウサイズを決定するウィンドウサイズ決定部６１０と、を備える。」と記載されている。
【０００３】
一方、複数の拠点から、サーバやストレージ等の計算資源をデータセンタ（ＤＣ）に集約して情報処理を行うクラウドコンピューティングが普及しはじめている。計算資源への通信には、データの確実な転送に用いられるＴＣＰ通信が用いられるのが一般的である。
ＴＣＰ通信では、送信端末が送ったデータに対し、受信端末が応答通知として受信済みデータ量を送信端末にフィードバック通知する。送信端末は、フィードバック通知される受信済みデータ量が増加しなくなると、パケット廃棄検出と判定する。そして、ＲＴＴ（Ｒｏｕｎｄ  Ｔｒｉｐ  Ｔｉｍｅ）や廃棄検出の有無に応じて、ウィンドウサイズと呼ぶパラメータを増減させて送信帯域を調整する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１３８２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
クラウドコンピューティングでは、各拠点は、広域網（ＷＡＮ）を介してＤＣへアクセスするため、拠点とＤＣ間の通信遅延が大きくなりがちである。例えば、東京と大阪の間では２５ｍｓ程度のＲＴＴが発生する。また、日本と北米西海岸の間では１５０ｍｓ〜２００ｍｓ程度のＲＴＴが発生する。ＴＣＰ通信では、ウィンドウサイズの制限により、ＲＴＴが大きいほど実効通信帯域が低下してしまう。例えば、１００Ｍｂｐｓの回線を契約していたとしても、日本と北米西海岸の間での実効通信帯域は５Ｍｂｐｓ程度まで低下してしまう場合がある。
【０００６】
また、各拠点からＤＣへのアクセスは、ある回線（例えば、ＤＣ側の回線）を複数の拠点によって共有することになる。この際に、ＴＣＰ通信ではパケット廃棄の状況に応じて帯域を分割しあうが、ＲＴＴが大きい環境では、図４に示すように、既に通信を行っているコネクション５０と、あとから通信を開始したコネクション６０の間で公平に帯域を分け合うまでに数分以上の時間を要する課題がある。
【０００７】
このようにＴＣＰを用いた通信では、送信帯域がＲＴＴと廃棄率に大きく左右されるため、ＷＡＮのようなＲＴＴが大きく、廃棄率も高い環境では、契約帯域を大幅に下回る送信帯域しか得られないという課題がある。また、複数の拠点で帯域を分割して利用する場合に、その収束が遅く、契約帯域を最大限に活用できないという課題がある。
本発明は、以上の点に鑑み、ＲＴＴやパケット廃棄率によらず、実効帯域を拡大しつつ、複数の拠点間で迅速に送信帯域を分け合い、契約帯域を最大限に活用できる通信システム及びノード装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、例えば特許請求の範囲に記載の構成を採用する。
上記課題を解決する手段の一例を挙げるならば、
「パケット送信側にて、再送帯域を測定して再送帯域に基づく帯域制御を行いながらパケット送信を行う機能と、
パケット受信側にて、パケット廃棄箇所を検出して送信側に前記パケット廃棄箇所をフィードバック通知する機能と、
前記パケット送信側にて、前記フィードバック通知に基づくパケット再送を行う機能と、
前記パケット受信側にて、インターバルとして規定する一定の時刻に達するたびに、
前記パケット送信側の利用可能通信帯域を分割することを特徴とする通信ノード装置」であることを特徴のひとつとする。
【０００９】
本発明の第１の解決手段によると、
クライアント側にて、再送帯域を測定して再送帯域に基づく帯域制御を行いながらパケット送信を行い、フィードバック通知されるパケット廃棄箇所に基づきパケット再送を行う複数の第１ノード装置と、
サーバ側にて、複数の前記第１ノード装置と通信し、パケット廃棄箇所を検出して送信側の前記第１ノード装置に前記パケット廃棄箇所をフィードバック通知する第２ノード装置と
を備え、
インターバルとして規定する一定の時刻に達するたびに、前記第２ノード装置の複数の前記第１ノード装置との回線の利用可能通信帯域を、各第１ノード装置と前記第２ノード装置とのコネクション数に基づき各第１ノード装置の最大通信帯域に分割することを特徴とする通信システムが提供される。
【００１０】
本発明の第２の解決手段によると、
クライアント側にて、再送帯域を測定して再送帯域に基づく帯域制御を行いながらパケット送信を行い、フィードバック通知されるパケット廃棄箇所に基づきパケット再送を行う複数の第１ノード装置と、サーバ側にて、複数の前記第１ノード装置と通信し、パケット廃棄箇所を検出して送信側の前記第１ノード装置に前記パケット廃棄箇所をフィードバック通知する第２ノード装置とを備えた通信システムにおいて、前記第２ノード装置として用いられるノード装置であって、
インターバルとして規定する一定の時刻に達するたびに、前記第２ノード装置と複数の前記第１ノード装置との回線の利用可能通信帯域を、各第１ノード装置と前記第２ノード装置とのコネクション数に基づき各第１ノード装置の最大通信帯域に分割することを特徴とする前記ノード装置が提供される。
【００１１】
本発明の第３の解決手段によると、
クライアント側にて、再送帯域を測定して再送帯域に基づく帯域制御を行いながらパケット送信を行い、フィードバック通知されるパケット廃棄箇所に基づきパケット再送を行う複数の第１ノード装置と、サーバ側にて、複数の前記第１ノード装置と通信し、パケット廃棄箇所を検出して送信側の前記第１ノード装置に前記パケット廃棄箇所をフィードバック通知する第２ノード装置とを備えた通信システムにおいて、前記第１ノード装置として用いられるノード装置であって、
インターバルとして規定する一定の時刻に達するたびに、前記第２ノード装置と複数の前記第１ノード装置との回線の利用可能通信帯域を、各第１ノード装置と前記第２ノード装置とのコネクション数に基づき分割した、自ノード装置の最大通信帯域を決定することを特徴とする前記ノード装置が提供される。
【発明の効果】
【００１２】
本発明によれば、ＲＴＴやパケット廃棄率によらず、実効帯域を拡大しつつ、複数の拠点間で迅速に送信帯域を分け合い、契約帯域を最大限に活用できる通信システム及びノード装置を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】帯域分割制御シーケンスの例。
【図２】通信遅延を考慮した帯域分割制御シーケンスの例。
【図３】各種機器の配置例。
【図４】従来型ＴＣＰにおける帯域分割制御の例。
【図５】本発明における帯域分割制御の例。
【図６】通信遅延が異なる場合の帯域分割制御の例。
【図７】本発明における通信遅延を考慮した帯域分割制御の例。
【図８】マスタ側通信ノード装置の制御フローチャート例。
【図９】スレーブ側通信ノード装置の制御フローチャート例。
【図１０】通信遅延を考慮したマスタ側通信ノード装置の制御フローチャート例。
【図１１】通信遅延を考慮したスレーブ側通信ノード装置の制御フローチャート例。
【図１２】通信ノード装置１６００Ｃ追加時の通信遅延を考慮した帯域分割制御の例。
【図１３】通信相手から通知されたパケット受信中の総コネクション数に基づいて帯域制御する通信ノード装置のブロック図。
【図１４】シェーパ毎の受信側総帯域・コネクション数テーブルのフォーマット図。
【図１５】フィードバック通知先テーブルのフォーマット図。
【図１６】ＲＸ総帯域・コネクション数テーブルのフォーマット図。
【図１７】ＲＸ総帯域・コネクション数テーブル更新するフローチャート図。
【図１８】帯域制御の説明図。
【図１９】コネクション数加算判定部が、コネクション有無テーブル記載の値を用いて行う処理のフローチャート図。
【図２０】通信ノード装置の構成例。
【図２１】協調制御マスタ部の構成例。
【図２２】協調制御スレーブ部の構成例。
【図２３】通信遅延を考慮した協調制御スレーブ部の構成例。
【図２４】通信ノード装置の別の構成例。
【図２５】サービスカードの構成例。
【図２６】本発明における帯域分割制御の例。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態を添付図面に基づき説明する。各図における同一符号は同一のものあるいは相当するものを示す。説明の都合上、符号に添え字を追加して区別することがある。
【実施例１】
【００１５】
実施例１では、再送帯域に基づいて帯域制御しつつ、通信相手から通知される総コネクション数に基づいて帯域分割制御をおこなう通信ノード装置の構成、および、その制御方法等に関して説明する。
【００１６】
１−１．  システム構成
図３は、本実施の形態における各種の機器の配置例を示す図である。
各拠点でユーザが利用するＰＣやサーバなどの端末１５００が拠点内ＬＡＮ１５５０に接続され、さらに、ＬＡＮ１５５０には広域網（ＷＡＮ）１６５０経由で外部へ通信するための通信ノード装置１６００が接続される。ＬＡＮ１５５０には複数の端末１５００が接続されるが、図が煩雑になるのを避けるため、この例では、各拠点の端末１５００は一つずつのみ描いている。また、通信ノード装置１６００の管理をおこなう管理ノード１７００を備えても良い。
【００１７】
管理ノード１７００は、例えば、ユーザとサービス提供者の間の契約に基づいて適宜の設定値を設定し、その設定値を、各通信ノード装置間の通信帯域の上限値として各通信ノード装置に通知する制御を行う。もちろん、管理ノード１７００を設けずに、このような設定を直接通信ノード装置１６００のいずれかに設定し、設定された通信ノード装置１６００が関係する他の通信ノード装置１６００に通知する制御をおこなっても良い。
ここで、例えば、端末１５００Ａ、１５００Ｂ、１５００Ｃのそれぞれはユーザ拠点（企業のオフィスなど）の端末とし、端末１５００Ｄは、ユーザ拠点が共通にアクセスするデータセンタの端末とする。なお、端末１５００Ａ、１５００Ｂ、１５００Ｃをクライアント装置、端末１５００Ｄをサーバ装置と以下称することもある。
【００１８】
これらの間のデータの受け渡しには、ＴＣＰ通信を用いることができるが、広域網（ＷＡＮ）を介したアクセスは、通信遅延が大きくなりやすい。特にＴＣＰ通信では、ウィンドウサイズの制限により、ＲＴＴが大きいほど実効通信帯域が低下してしまい課題となる。
また、各拠点からＤＣへのアクセスは、ある回線を複数の拠点によって共有することになる。この際に、ＴＣＰ通信ではパケット廃棄の状況に応じて帯域を分割しあうが、ＲＴＴが大きい環境では、図４に示すように、既に通信を行っているコネクション５０と、あとから通信を開始したコネクション６０の間で公平に帯域を分け合うまでに数分以上の時間を要し課題となる。
【００１９】
１−２．  帯域分割制御
そこで、実施例１では、これらの課題を解決するために、再送帯域に基づいて帯域制御しつつ、通信相手から通知されたパケット受信中の総コネクション数に基づいて帯域分割制御をおこなう通信ノード装置１６００の構成例、制御例について説明する。
【００２０】
図２０は、通信ノード装置１６００の構成図である。
通信ノード装置１６００は、ＴＸ部（送信部）１０２と、ＲＸ部（受信部）１０３と、協調制御マスタ部２２０と、協調制御スレーブ部２３０とを備える。
まず、ＴＸ部１０２及びＲＸ部１０３の構成、処理の一例を図１３〜図１８を参照して説明する。なお、ＴＸ部１０２及びＲＸ部１０３は、以下の構成に限らず適宜の構成であってもよい。
【００２１】
図１３には、通信ノード装置１６００ＡのＴＸ部１０２、ＲＸ部１０３の詳細ブロック図をあらわす。他の通信ノード装置１６００Ｂ〜通信ノード装置１６００Ｄも同様の構成である。本通信ノード装置１６００Ａは、端末１５００Ａが送信するデータを受け取り、他の通信ノード装置１６００Ｄへむけてパケットを送信するＴＸ部１０２と、他の通信ノード装置１６００Ｄからのパケットを受信して、端末１５００Ａへデータを出力するＲＸ部１０３を有する。なお、図１３では、協調制御マスタ部２２０と協調制御スレーブ部２３０とは便宜上省略している。
【００２２】
ＴＸ部１０２は、送信パケット蓄積部１０４と、出力先判定部（シェーパ判定部）１０５と、ＴＸ経路・シェーパテーブル１０６と、ＴＸパケット再送部１０７と、振分部１０８と、シェーパ１０９と、受信・未受信箇所通知パケット向けバッファ１１０と、タイマ値格納部１１１と、インターバル値格納部１１２と、送信帯域制御部１１３と、シェーパ毎の送信・再送帯域テーブル１１４と、トークン更新部１１５と、送信パケット出力制御部１１６、とを有する。
【００２３】
ＲＸ部１０３は、ＲＸパケット再送部１１７と、受信履歴更新部１１８と、受信履歴テーブル１１９と、他の通信ノード装置１６００Ｄから受信したデータパケットを受信履歴更新部１１８へ、受信・未受信箇所通知パケットをＲＸ側パケット再送部１０７に振り分けるＲＸ側振分部１２０と、受信パケット蓄積部１２１と、受信パケット出力制御部１２２、とを有する。
【００２４】
端末１５００Ａが送信するデータパケットは、送信パケット蓄積部１０４に蓄積され、出力先判定部１０５と振分部１０８へ入力される。
送信データ蓄積部１０４に蓄積されたデータパケットは、通信ノード装置１６００Ｄから受信した受信箇所通知パケットを、ＲＸ側振分部１２０経由でＴＸパケット再送部１０７が受信したときに消去され、未受信箇所通知パケットをＴＸパケット再送部１０７が受信したときに読み出され、再送される。
【００２５】
シェーパ判定部１０５は、ＴＸ経路・シェーパテーブル１０６から、パケットヘッダと一致する経路を持つエントリを読み出し、エントリ記載のシェーパを振分部１０８に通知する。
振分部１０８は、通知に基づいて、入力パケットを、シェーパＡ（１０９Ａ）、シェーパＢ（１０９Ｂ）、シェーパＣ（１０９Ｃ）、のいずれかに振り分ける。更に、パケットヘッダ記載のパケット長をビット値に変換し、シェーパと送信／再送ビットを対応付けて、送信帯域制御部１１３に通知する。
【００２６】
送信帯域制御部１１３は、振分部１０８から通知されたシェーパと送信／再送ビットに基づき、シェーパ毎の送信・再送帯域テーブル１１４を更新し、更新結果に基づいてシェーパ毎の制御帯域を決定する。更に、トークン更新部１１５に、制御帯域に応じたトークン加算値を通知する。
【００２７】
シェーパ毎の送信・再送帯域テーブル１１４は、例えば、シェーパ毎に、基準時間と、制御帯域（基準時間前）と、制御帯域（基準時間後）と、基準時間以前の統計データ（送信帯域、再送帯域）と、基準時間以降の統計データ（送信ビット積算値、再送ビット積算値）と、を格納するエントリ複数個から構成される。
【００２８】
送信帯域制御部１１３は、振分部１０８から通知されたシェーパと一致するエントリの基準時間以降の統計データ（送信ビット積算値、再送ビット積算値）に、通知された送信・再送ビットを加算し、シェーパ毎の送信・再送帯域テーブル１１４を更新する。
送信帯域制御部１１３は、シェーパ毎の送信・再送帯域テーブル１１４の各エントリを読み出し、タイマ値１１１と基準時間の差がインターバル値１１２よりも大きいか、または、再送ビット積算値が０よりも大きいか、の判定を行い、判定条件を満たすまで繰り返す。
【００２９】
ここでは、タイマは各通信ノード装置１６００における現在時刻を示す。インターバルは通信ノード装置１６００Ａと通信ノード装置１６００Ｄの間のＲＴＴに基づく時間を示す。基準時間は、タイマの値がインターバルで設定した時間に達したときに記録するタイマの値である。なお、図１３ではタイマ、インターバルを複数するが、これらはそれぞれ、ひとつのタイマ及びひとつのインターバル値格納部で管理され、各ブロックが適宜タイマ値、インターバル値を参照するようにしてもよい。
【００３０】
判定条件を満たしたら、送信帯域＝送信ビット積算値／インターバル＋送信帯域×（インターバル−タイマ値＋基準時間）／インターバル、再送帯域＝再送ビット積算値／インターバル＋再送帯域×（インターバル−タイマ値＋基準時間）／インターバル、基準時間＝タイマ値、送信ビット積算値＝０、再送ビット積算値＝０となるようにエントリを更新する。
【００３１】
更に、更新済み再送帯域が０よりも大きいか否かを判定する。大きいと判定した場合は、制御帯域（基準時間後）が制御帯域（基準時間前）よりも小さくなるように（例えば、制御帯域（基準時間後）＝制御帯域（基準時間前）―再送帯域）、再送帯域に基づいて制御帯域（基準時間後）を変更する。小さいと判定した場合は、制御帯域（基準時間後）が制御帯域（基準時間後）よりも大きくなるように制御帯域を変更する。
【００３２】
送信帯域制御部１１３は、上記の変更済み制御帯域（基準時間後）に基づいて計算した加算トークンをトークン制御部１１５に通知する。
トークン制御部１１５は、トークンバケツアルゴリズムに基づいて、送信帯域制御部１１３から通知された加算トークンを、周期的にトークンバケツに加算する。更に、トークン積算値が一定量を上回る場合に、出力可能として、送信パケット出力制御部１１６に通知する。
【００３３】
送信パケット出力制御部１１６は、パケットが蓄積されていて、出力可能なバッファからパケットを読み出して出力する。シェーパＡ（１０９Ａ）、シェーパＢ（１０９Ｂ）、シェーパＣ（１０９Ｃ）、のいずれかから出力した場合は、シェーパと出力パケット長をトークン制御部１１５に通知する。トークン制御部１１５は、通知されたシェーパのトークンバケツから、通知パケット長に相当するトークンを減算する。
【００３４】
更に、本通信ノード装置１６００Ａは、コネクション数加算判定部１２０１と、コネクション有無テーブル１２０２と、ＲＸ情報通知部１６０５と、受信帯域とパケット受信中のコネクション数を記録するＲＸ総帯域・コネクション数テーブル１６０６と、をＲＸ部１０３に追加する。
【００３５】
また、通信相手の受信帯域とデータ受信中のコネクション数を記録するシェーパ毎の受信側総帯域・コネクション数テーブル１６０１と、受信側総帯域・コネクション数通知部１６０２と、フィードバック通知パケット生成部１６０３と、フィードバック通知先テーブル１６０４と、ＲＸ経路・シェーパテーブル９０３をＴＸ部１０２に追加する。
【００３６】
図１９のフローチャートを利用し、コネクション数加算判定部が、コネクション有無テーブル記載の値を用いて行う処理を説明する。コネクション数加算判定部１２０１は、パケットヘッダ記載値と一致するエントリを、コネクション有無テーブル１２０２から読み出し（図１９のステップ１４０１）、パケットヘッダ記載値と一致するエントリが有るか、無いかを判定する（図１９のステップ１４０２）。
【００３７】
なお、コネクション有無テーブル１２０２は、例えば、送信元ＩＰ、宛先ＩＰ、送信元ポート、宛先ポート、再送中（Ｙｅｓ＝１、Ｎｏ＝０）、基準時間、を格納するエントリ複数個から構成される。
エントリが無い場合は、新規エントリを、送信元ＩＰ＝パケットの送信元ＩＰ、宛先ＩＰ＝パケットの宛先ＩＰ、送信元ポート＝パケットの宛先ポート、宛先ポート＝パケットの宛先ポート、基準時間＝タイマ値、として作成する。
【００３８】
更に、シェーパ判定部の指定シェーパのコネクション数に１を加算するように送信帯域制御部１１３に通知する（図１９のステップ１４０５）。ステップ１４０２において、一致するエントリが有る場合は、タイマ値１１１と基準時間の差がインターバル値１１２よりも大きいか、または、エントリ記載の再送＝０かつ入力されたパケットが再送パケットであるか否かを判定し、いずれも満たさない場合は、ループする（図１９のステップ１４０３）。
【００３９】
いずれかを満たした場合は、タイマ値１１１と基準時間の差がインターバル値１１２よりも大きい場合に、基準時間＝タイマ値、へとエントリを更新し、再送パケットの場合に、再送中＝１、通常パケットの場合に、再送中＝０、へとエントリを更新する。更に、通常パケットの場合は、シェーパ判定部の指定シェーパの送信中コネクション数に１を加算するように、再送パケットの場合は、シェーパ判定部の指定シェーパの再送中コネクション数に１を加算するように、送信帯域制御部１１３に通知する（図１９のステップ１４０４）。
【００４０】
図１４には、シェーパ毎の受信側総帯域・コネクション数テーブル１６０１のフォーマットを表す。シェーパ毎の受信側総帯域・コネクション数テーブル１６０１は、シェーパ毎に、通信相手側で計測された総受信帯域とパケット受信中の総コネクション数を格納するエントリ複数個から構成される。
【００４１】
図１５には、フィードバック通知先テーブル１６０４のフォーマットを表す。フィードバック通知先テーブル１６０４は、フィードバック通知の対象が端末である場合は宛先ＩＰアドレスを格納し、フィードバック通知の対象が拠点である場合は宛先ＩＰアドレスと共にサブネットも格納するエントリ複数個から構成される。
【００４２】
図１６には、ＲＸ総帯域・コネクション数テーブル１６０６のフォーマットを表す。  ＲＸ総帯域・コネクション数テーブル１６０６は、基準時間と、基準時間以前の統計データ（ＲＸ総帯域、ＲＸ総コネクション数）と、基準時間以降の統計データ（ＲＸ総ビット積算値、ＲＸ総コネクション数積算値）と、を格納する。
【００４３】
ＲＸ情報通知部１６０５は、コネクション数加算判定部１２０１からのコネクション数加算通知と、ＲＸ側振分部１２０から入力されるデータパケットのヘッダ記載のパケット長を用いて、ＲＸ総帯域・コネクション数テーブル１６０６の、基準時間以降の統計データ（ＲＸ総ビット積算値、ＲＸ総コネクション数積算値）を加算する。コネクション数加算通知がくると、ＲＸ総コネクション数積算値を１加算し、パケット長はビット長に変換して、ＲＸ総ビット積算値に加算する。
【００４４】
更に、ＲＸ情報通知部１６０５は、図１７に示すフローチャートを用いて、ＲＸ総帯域・コネクション数テーブル１６０６の更新を行う。
ＲＸ情報通知部１６０５は、タイマ値１１１と基準時間の差が、インターバル値１１２よりも大きくなるか否かの判定を、満たすまで繰り返し実行する（ステップ２００１）。満たしたら、基準時間以前のＲＸ総帯域＝基準時間以降のＲＸ総ビット積算値／（タイマ値−基準時間）、基準時間以前のＲＸ総コネクション数＝基準時間以降のＲＸ総コネクション数積算値、基準時間＝タイマ値、基準時間以降のＲＸ総ビット積算値帯域＝０、基準時間以降のＲＸ総コネクション数積算値＝０、となるように、テーブルを更新する（ステップ２００２）。
【００４５】
更新した基準時間以前のＲＸ総帯域・総コネクション数は、フィードバック通知パケット生成部１６０３へと出力される。フィードバック通知パケット生成部１６０３は、通知されたＲＸ総帯域・総コネクション数を含む通知パケットを、フィードバック通知先テーブル１６０４に記載された全ての宛先に対して生成し、出力する。
【００４６】
逆に、通信ノード装置１６００Ａが、ＲＸ総帯域・総コネクション数を含む通知パケットを、通信相手から受け取ると、ＲＸ側振分部１２０を経由して、受信側総帯域・コネクション数通知部１６０２へと出力する。
受信側総帯域・コネクション数通知部１６０２は、パケットヘッダ記載値と一致するエントリを、ＲＸ経路・シェーパテーブル９０３から読み出し、エントリ記載のシェーパと対応づけて、通知パケット記載の受信側総帯域・総コネクション数を、送信帯域制御部１１３へと通知する。
【００４７】
送信帯域制御部１１３は、通知されたシェーパの受信側総帯域・総コネクション数を、シェーパ毎の受信側総帯域・総コネクション数テーブル１６０１へと記載する。
送信帯域制御部１１３は、シェーパ毎の受信側総帯域・総コネクション数テーブル１６０１に記載の受信側総帯域・総コネクション数と、シェーパ毎の送信・再送中コネクション数テーブル１２０３に記載の送信中コネクション数と、を用いて、例えば、図１８に示すように帯域を制御する。
【００４８】
図１８において、送信端末１５００Ａから受信端末１５００Ｄへ向かってデータ送信中の通信コネクション数が２、送信端末１５００Ｂから受信端末１５００Ｄへ向かってデータ送信中の通信コネクション数が１、だったとする。
受信端末１５００Ｄに接続されている通信ノード装置１６００Ｄにおいて計測されたＲＸ総帯域が１２、ＲＸ総コネクション数が３だったとすると、通信ノード装置１６００Ｄから、送信端末１５００Ａ／１５００Ｂに接続されている通信ノード装置１６００Ａ／Ｂに向けて、ＲＸ総帯域：１２・ＲＸ総コネクション数：３の情報がフィードバック通知される。
【００４９】
通信ノード装置１６００Ａは、フィードバック通知されたＲＸ総帯域：１２・ＲＸ総コネクション数：３の情報から、１コネクションあたりの帯域を４と求め、通信ノード装置１６００Ａのシェーパ毎の送信・再送中コネクション数テーブル１２０３Ａに記載の送信中コネクション数：２に基づき、送信帯域を４×２＝８へと調整する。
【００５０】
通信ノード装置１６００Ｂは、フィードバック通知されたＲＸ総帯域：１２・ＲＸ総コネクション数：３の情報から、１コネクションあたりの帯域を４と求め、通信ノード装置１６００Ｂのシェーパ毎の送信・再送中コネクション数テーブル１２０３Ａに記載の送信中コネクション数：１に基づき、送信帯域を４×１＝４へと調整する。
実際には、前記の通信コネクション数は、時々刻々と変化していく。図１８では、タイマ値がインターバル、すなわち、ＲＴＴに達するたびに、通信ノード装置１６００Ｄが通信ノード装置１６００Ａ、１６００Ｂへフィードバック通知を行う。
【００５１】
１−３．  インターバル毎の帯域分割制御
なおインターバルは、ＴＣＰ通信の観点からは、ＲＴＴを超える値であれば良い。この観点から、図１、図５、図８、図９、図２０、図２１、図２２を用いて、帯域分割制御に関して詳細な説明を行う。
【００５２】
図２０は、実施例１における通信ノード装置１６００の帯域分割制御に関する追加機能部である協調制御マスタ部２２０と協調制御スレーブ部２３０の関係図である。
【００５３】
図２１は協調制御マスタ部２２０の内部構造の例を示す図である。協調制御マスタ部２２０は、協調制御マスタ処理部２２１、タイマ２２２、ＲＴＴ計測部２２３、インターバルＴＣ決定部２２４、結果生成部２２５を有する。
協調制御マスタ処理部２２１は、図８に示すマスタ側通信ノード装置の全体制御を行う。ＲＴＴ計測部２２３は、後述の図１、図８の制御シーケンスの中で、ＲＴＴ計測パケットの生成、計測パケットの受信を行い、インターバルＴＣ決定部２２４へＲＴＴ情報を通知する。そして、インターバルＴＣ決定部２２４がインターバルＴＣを決定する。タイマ２２２のタイマ値、インターバルＴＣ決定部２２４が決定したインターバルは、図１３中のタイマ１１１、インターバル１１２に反映する。結果生成部２２５は、対象となるコネクションに対する制御情報（結果情報）を生成する。
【００５４】
例えば、結果生成部２２５は、有効な総コネクション数を計測し、その値を結果情報とする。ここで、有効なコネクションとは、パケット送受信が行われているコネクションである。一定時間以上パケット送受信が行われていなかったり、コネクション切断の手続きを行っていたりするコネクションは、有効なコネクションではない。有効コネクション数として、例えばクライアント側のノード装置１６００の少なくともひとつが、パケット再送が発生中のコネクション数を測定してもよい。この場合、再送発生中のコネクション数に基づく帯域制御を行う。また、有効コネクション数として、例えば、クライアント側のノード装置１６００の少なくともひとつが、サーバ側からフィードバック通知されたパケット受信中のコネクション数を測定してもよい。この場合、パケット受信中のコネクション数に基づく帯域制御を行う。また、契約帯域の値、インターバルの値を結果情報の一部としても良い。
【００５５】
他の例１では、結果生成部２２５は、上記の総コネクション数を通知する際に、計測値が前回の計測値と大差ない値であると判断する場合、前回と同じ値を結果情報とすることもできる。これは、各ユーザ拠点での上限通信帯域のブレを小さくでき、通信を安定させられることができるケースで有効である。尚、上限通信帯域は、各拠点が出力して構わない総帯域である。
【００５６】
他の例２では、結果生成部２２５は、有効な総コネクション数とそれぞれのユーザ拠点からのコネクション数を全て認識することも可能であるため、それぞれのユーザ拠点の上限通信帯域を計算し、それぞれの計算結果を結果情報としてそれぞれのユーザ拠点の通信ノード装置１６００へ通知しても良い。
【００５７】
他の例３では、対象となるユーザ拠点を、通信ノード装置１６００Ａが属するユーザ拠点Ａと通信ノード装置１６００Ｂが属するユーザ拠点Ｂとし、ユーザ拠点Ａの優先度がＨＩＧＨ、ユーザ拠点Ｂの優先度がＬＯＷとする。結果生成部２２５は、他の例２同様に、それぞれのユーザ拠点の上限通信帯域を計算するが、この際に前記の優先度の重みづけを行う。
【００５８】
例えば、与えた優先度のＨＩＧＨ側に高い傾斜（割当量）、ＬＯＷ側に低い傾斜（割当量）、例えば、２対１の割合の傾斜を与えるような利用を行う。ユーザ拠点Ａから４本、ユーザ拠点Ｂから４本ずつ合計８本の通信があった場合、本来１：１で上限通信帯域を分け合えばよいが、前記の優先度の傾斜を考慮した場合、ユーザ拠点Ａ：ユーザ拠点Ｂを２：１で分け合うことになる。この結果となる上限通信帯域、この例では、ユーザ拠点Ａへは（２／３×（契約帯域））、ユーザ拠点Ｂへは（１／３×（契約帯域））を上限通信帯域としてそれぞれ通知する。
【００５９】
優先度はＨＩＧＨ、ＬＯＷの２ケースだけでなく、複数段階の優先度を用いても良いし、また、ユーザ拠点数も２個だけではなく、複数個あっても良い。いずれの場合も、ユーザ拠点数と優先度の状況から計算を行うことで、傾斜をかけた上限通信帯域を結果情報として通知できる。もちろん、上限通信帯域の計算はユーザ拠点側の通信ノード装置１６００に任せる形にするために、総コネクション数と各拠点からのコネクション数、各拠点の優先度情報を全て結果情報として通知する方法としても良い。
【００６０】
図２２は協調制御スレーブ部２３０の内部構造の例を示す図である。協調制御スレーブ部２３０は、協調制御スレーブ処理部２３１と、上限通信帯域計算部２３５により構成される。協調制御スレーブ処理部２３１は、図９に示すスレーブ側通信ノード装置の全体制御を行う。上限通信帯域計算部２３５は、マスタ側通信ノード装置から通知される結果情報と、自通信ノード装置の有効なコネクション数等の情報から、自通信ノード装置の有効なコネクション群が利用できる最大の上限通信帯域を計算する。
【００６１】
例えば、ユーザ拠点の通信ノード装置１６００が、契約帯域と総コネクション数を結果情報として通知された場合、最大の上限通信帯域は、「（自身のコネクション数）／（総コネクション数）×契約帯域」として計算できる。
または、ユーザ拠点の通信ノード装置１６００は、前述のように、結果情報として上限通信帯域自体を結果情報として通知されても良い。その場合、結果情報そのものを上限通信帯域の値として利用できる。
【００６２】
図１は、実施例１における複数通信ノード連携情報処理システムの帯域分割制御シーケンスの例である。端末１５００Ａ、１５００Ｂが端末１５００Ｄとの間でデータ送受信を行い、その通信における帯域分割制御を通信ノード装置１６００Ａ、１６００Ｂ、１６００Ｄが連携して実施する。
【００６３】
通信ノード装置１６００Ａ、１６００Ｂからの通信ノード装置１６００Ｄへの通信が通信帯域を共有するため、通信ノード装置１６００Ｄが帯域分割制御のマスタ、通信ノード装置１６００Ａ、１６００Ｂが帯域分割制御のスレーブとして動作する。すなわち、通信ノード装置１６００Ｄでは、図２０の中で図２１に示す協調制御マスタ部２２０が動作する。また、通信ノード装置１６００Ａ、１６００Ｂでは、図２０の中で図２２に示す協調制御スレーブ部２３０が動作する。それぞれの制御シーケンスのフローチャートの例を図８、図９に示す。図８のフローチャートは、例えば、協調制御マスタ処理部２２１により、他の各ブロック２２２〜２２５と連携して実行される。同様に、図９のフローチャートは、例えば、協調制御スレーブ処理部２３１により、他のブロック２３５と連携して実行される。
【００６４】
図１において、帯域分割制御のマスタである通信ノード装置１６００Ｄは、対象となる通信ノード装置１６００Ａ、１６００Ｂに対して、それぞれ、通信１Ａ、１Ｂにより、ＲＴＴの計測を開始する（図８のＳ４０１、Ｓ４０２）。例えば、ＲＴＴ計測部２２３が、ＰＩＮＧコマンドを、通信ノード装置１６００Ａ、１６００Ｂに送信する。ＲＴＴの計測は、例えば新規拠点ノードが追加されることや削除されることを契機としてもよく（Ｓ４０１）、適宜の間隔で行っても良い。
【００６５】
次に、通信１Ａ、１Ｂを受け取った通信ノード装置１６００Ａ、１６００Ｂは、帯域分割制御のスレーブとして動作する。ＲＴＴ計測のために通信ノード１６００Ｄから送信されたパケットに対して、通信ノード装置１６００Ａ、１６００Ｂはそれぞれ、通信２Ａ、２Ｂによって返信を行う（図９のＳ５０１、Ｓ５０２）。例えば、ＰＩＮＧ応答を返信する。
【００６６】
通信２Ａ、２Ｂを受信した帯域分割制御のマスタである通信ノード装置１６００Ｄは、通信ノード装置１６００Ａ、１６００Ｂ、それぞれのＲＴＴの計測を完了する。さらに、このときの通信ノード装置１６００Ａ、１６００Ｂの状態情報の計測を完了する（図８のＳ４０３）。ここで、状態情報とは、例えば、有効な通信コネクションの数である。なお、有効コネクション数はマスタの通信ノード装置１６００Ｄで管理されている。また、通信ノード装置１６００Ｄは、ＲＴＴを計測しない場合は状態情報を計測する（Ｓ４１０）。
【００６７】
次に、帯域分割制御のマスタである通信ノード装置１６００Ｄは、先のＲＴＴ計測結果を利用してインターバルＴＣを決定する。ここでは、通信ノード装置１６００Ａと１６００Ｄの間のＲＴＴをＲＴＴａｄ、通信ノード装置１６００Ｂと１６００Ｄの間のＲＴＴをＲＴＴｂｄと表現する。インターバルＴＣは、計測したＲＴＴのうち、最大のもの（ｍａｘ（ＲＴＴａｄ，ＲＴＴｂｄ））を超える（＋α）任意の値に設定する。決定されたインターバルは例えばインターバル値格納部に設定されることができる。また、結果生成部２２５は、必要であれば状態情報の計算を行い、結果情報を生成する。今回の例では、有効な通信コネクションの数の測定をもって結果情報とする（図８のＳ４１１）。例えば、合計して１０本の有効なコネクションがあった場合、１０本という数字を結果情報とする。結果情報は、契約帯域、インターバルをさらに含んでも良い。
【００６８】
上述のαの値を小さくすると、結果情報の精度が向上する。一方、仮にαの値を極端に大きくすると従来のＴＣＰ制御による帯域分割による結果に近づいていく。一つの望ましい実施例では、αの値を数秒程度とする。こうすることで、比較的、直近の状況に応じた結果情報の反映と、従来ＴＣＰ制御に比較して二桁程度高速な帯域分割を実現できる。
【００６９】
そして、帯域分割制御のマスタである通信ノード装置１６００Ｄは、自身のタイマ値がインターバルＴＣに達すると（図８のＳ４１２）、通信３Ａ、３Ｂによって、該当する全拠点ノード（ここでは通信ノード装置１６００Ａ、１６００Ｂ）へ結果情報を送信する（図８のＳ４１３）。この操作は、帯域分割制御のマスタである通信ノード装置１６００Ｄのタイマ値がインターバルＴＣに達するたびに行い、結果として図１の通信４Ａ、４Ｂや通信５Ａ、５Ｂが定期的に送信される。なお、通信３Ｂと５Ｂの間に、適宜ＲＴＴ計測の処理が実行されてもよい。
【００７０】
通信３Ａ、３Ｂを受信した通信ノード装置１６００Ａ、１６００Ｂは、自身の上限通信帯域変更の計算に受信した結果情報を利用し、自身の送信帯域制御に反映する（図９のＳ５０３、Ｓ５０４）。例えば、受信した状態情報が通信ノード装置１６００Ａ、１６００Ｂが、それぞれ３本、７本の有効なコネクションを利用していることを示す場合、通信ノード装置１６００Ａは、受信側の利用可能回線帯域に対し、３本／１０本＝３０％、通信ノード装置１６００Ｂは、受信側の利用可能回線帯域に対し、７本／１０本＝７０％、をそれぞれの上限通信帯域として帯域制御をおこなう。その後の通信４Ａ、４Ｂ、５Ａ、５Ｂの受信時も、通信３Ａ、３Ｂ受信時と同様の操作を行う。通知された結果情報が上限通信帯域そのものであれば、その上限通信帯域を利用すればよい。
【００７１】
なお、図１の例では、通信ノード装置１６００Ｄから有効コネクション数を通知し、上限帯域を通信ノード装置１６００Ａ、通信ノード装置１６００Ｂで求めているが、通信ノード装置１６００Ｄが各通信ノード装置の上限帯域を求めて通信ノード装置１６００Ａ、通信ノード装置１６００Ｂに通知するようにしてもよい。
【００７２】
図５に、実施例１における帯域分割制御を実行したことにより、通信ノード装置１６００Ａと通信ノード装置１６００Ｂとの間で、共通の宛先である通信ノード装置１６００Ｄへのデータ送信帯域が分割される例を示す。ここでは、通信ノード装置１６００Ａと通信ノード装置１６００Ｄの間、および、通信ノード装置Ｂと通信ノード装置１６００Ｄの間の通信遅延は等しいものとする。所定のインターバルＴＣ間隔で上限帯域を計算し、その結果を通信ノード装置１６００Ａ、１６００Ｂそれぞれのパケット送信量に反映することで、通信ノード装置１６００Ａ、１６００ＢのインターバルＴＣ毎のそれぞれの上限帯域の和が、通信ノード装置１６００Ｄで共有する回線帯域となる。
【００７３】
図２６に、図５のより詳細なイメージを示す。ここでは、インターバルＴＣが通信ノード装置１６００Ａと通信ノード装置１６００Ｄ間のＲＴＴの１０倍程度（＋αが９ＲＴＴ程度）と想定した場合のイメージを示す。図中の左側の四角で示す９１、９２の上辺が、それぞれ通信ノード装置１６００Ａ、１６００Ｂの上限帯域であり、破線９３、実線９４が通信ノード装置１６００Ａ、１６００Ｂの送信帯域の推移である。いずれもインターバルＴＣ内で本実施の形態におけるＴＣＰを改善した通信制御をおこなう。図中の右側図の破線９３’、実線９４’は、通信ノード装置１６００Ｄにおける通信ノード装置１６００Ａ、１６００Ｂからの受信帯域の推移であり、点線８８は、その合計受信帯域の推移である。このように、インターバルＴＣ間隔で上限帯域を指定し、インターバル間では本実施の形態におけるＴＣＰを改善した通信制御をおこなう。従来のＴＣＰ制御では、複数のコネクションの間の収束に数分から数十分のオーダで時間がかかる課題があるが、本実施の形態における通信制御では、本図で示すように、所定のインターバルＴＣおきに目標となる上限帯域を指定し、そこに向けて数回のＲＴＴ時間で収束できる。
【００７４】
１−４．  新規ノード追加時の処理
図１２に、通信ノード装置１６００Ｃ追加時の通信遅延を考慮した帯域分割制御の例を示す。この場合も、これまでに説明した内容をそのまま適用することができる。具体的には、通信ノード装置１６００Ｃの追加を図３の管理ノード１７００経由、または、直接、通信ノード装置１６００Ｄによって検出、設定する。
【００７５】
通信ノード装置１６００Ｃが追加された時点で、通信ノード装置１６００Ｃと通信ノード装置１６００Ｄの間で通信１Ｃ、２Ｃが取り交わされる。これは、通信ノード装置１６００Ａ、１６００Ｂが通信ノード装置１６００Ｄと取り交わした１Ａ、１Ｂ、２Ａ、２Ｂと同等である。
帯域分割制御のマスタである通信ノード装置１６００Ｄは、図８のフローチャートのＳ４０１、Ｓ４０２、Ｓ４０３、Ｓ４１１の処理にて、通信ノード装置１６００Ｃとの間のＲＴＴを計測し、計測結果に基づいてインターバルＴＣを計算し直す。
【００７６】
具体的には、通信ノード装置１６００Ｃとの間のＲＴＴであるＲＴＴｃｄがこれまで計測した通信ノード装置１６００Ａ、１６００ＢのＲＴＴであるＲＴＴａｄ、ＲＴＴｂｄより大きい場合には、インターバルＴＣをＲＴＴｃｄより大きい値にして、関係する全通信ノード装置１６００Ａ、１６００Ｂ、１６００Ｃへ通知し、以後、その値を利用する。そうでない場合には、これまでのインターバルＴＣをそのまま利用する。なお、図１２の黒丸は、実施例２で説明する通信遅延を考慮する場合に関連し、詳細は実施例２で説明する。
【００７７】
一方、これまで通信に参加していたいずれかの通信ノード装置１６００からの通信がなくなり、該当する通信ノード装置１６００が帯域分割制御の対象から離脱（削除）される場合も、インターバルＴＣの再計算を行う。例えば、離脱する通信ノード装置１６００との間のＲＴＴが、対象となる通信ノード装置１６００との中で最大のＲＴＴであったならば、次に大きいＲＴＴ以上の値となるようにインターバルＴＣの値を修正する。この場合、インターバルＴＣの値は修正前より小さな値になる。
【００７８】
以上記載の、通信相手から通知されたパケット受信中の総コネクション数に基づいて帯域制御する通信ノード装置により、端末間で公平な帯域割り当てが所定のインターバルで迅速に実現され、端末によらず、一定の通信品質が実現される。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよい。また、上記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラムの情報は、メモリやハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、等をはじめとする各種記録媒体に置くことが可能である。
【実施例２】
【００７９】
実施例２では、通信相手から通知される総コネクション数と通信遅延に基づいて、総通信帯域を有効活用できるように帯域分割制御をおこなう通信ノード装置の構成、および、その制御方法等に関して説明する。
【００８０】
実施例１では、帯域分割制御のマスタである通信ノード装置１６００Ｄと、帯域分割制御のスレーブとなる通信ノード装置１６００Ａ、１６００Ｂの間の通信遅延（ＲＴＴａｄとＲＴＴｂｄ）がほぼ同等という前提で説明を行った。しかしながら、実際には、通信遅延が完全に同一という環境は稀有であり、厳密にはＲＴＴａｄとＲＴＴｂｄが異なる。
【００８１】
この状況で実施例１の制御を行った場合、通信ノード装置１６００Ｄで観測する通信ノード装置１６００Ａ、１６００Ｂからの通信の帯域利用状況の最大値は図６に示すようになる。図６の左下側は通信ノード装置１６００Ａにおける送信帯域最大値のイメージ９１、図６の左上側は通信ノード装置１６００Ｂにおける送信帯域最大値のイメージ９２、図６の右側は通信ノード装置１６００Ｄにおける受信最大帯域のイメージとなる。
【００８２】
通信ノード装置１６００Ａ、１６００Ｂは、通信ノード装置１６００Ｄから図１のシーケンスで示したように、帯域分割制御のマスタである通信ノード１６００ＤがインターバルＴＣに達し、その結果情報が通信ノード装置１６００Ａ、１６００Ｂに到着するたびに自身の上限通信帯域の変更を行う。ここでの到着タイミングにも遅延がある。このため、通信ノード装置１６００Ａ、１６００Ｂの上限通信帯域の変更のタイミングは矢印９７で示す分の時間のズレが発生する。この例では、「（ＲＴＴａｄ―ＲＴＴｂｄ）／２」が矢印９７の時間のズレに相当する。
【００８３】
そして、この矢印９７の時間のズレは、該当する通信データが通信ノード１６００Ｄに到着する時には、さらにずれて矢印９８の時間のズレとなる。すなわち、この例では、「（ＲＴＴａｄ―ＲＴＴｂｄ）」が矢印９８の時間のズレとなる。
この場合、図６の右図中の破線９５で示すように、通信ノード装置１６００Ａ、１６００Ｂからの最大帯域の合計が想定する最大帯域まで達しないケースや、破線９６で示すように、最大帯域の合計が想定する最大帯域を超過するケースが発生する。実際には、最大帯域を超過する場合は、その合計値が契約帯域を超えることができないため、超過分相当のパケットロスが発生し、結果として総通信帯域が減少してしまう。
【００８４】
実施例２では、上記のような最大帯域の合計値の未達や、最大帯域の合計値の超過による総通信帯域の減少を回避し、総通信帯域を有効活用できるように帯域分割制御をするために、図２に例示する帯域分割制御シーケンスを用いる。
通信ノード装置１６００の基本構成は実施例１を踏襲するが、図２１の協調制御マスタ部２２０の協調制御マスタ処理部の内容を図１０で示すフローチャートを実行する形態にする。また、図２２の協調制御スレーブ部２３０の代わりに図２３の協調制御スレーブ部２３０を利用する。
【００８５】
図２３の協調制御スレーブ部２３０は、図２２の協調制御スレーブ部２３０に対してタイマ２３２とＲＴＴ記録部２３３とインターバルＴＣ記録部２３４を追加し、さらに、協調制御スレーブ処理部２３１を図１１で示すフローチャートを実行する形態にしたものである。
ここでは、実施例１との差異を図２、図１０、図１１を用いて説明する。実施例１と同様の処理は同じ符号を付し、詳細な説明を省略する。
【００８６】
図２において、帯域分割制御のマスタである通信ノード装置１６００Ｄは、対象となる通信ノード装置１６００Ａ、１６００Ｂに対して、それぞれ、通信１Ａ、１Ｂにより、タイマ精度情報とタイマ初期値Ｔｄの配布を行い、さらに、ＲＴＴの計測を開始する（図１０のＳ４０１、Ｓ４２２）。
ここで、タイマ精度情報とは、タイマをどのような時間粒度で動作させるかを示す値であり、対象となる通信ノード装置間でタイマの進み方を同一にするためのものである。例えば、全てのタイマを１マイクロ秒単位、１０マイクロ秒単位、１ミリ秒単位など所定の同一単位動作させることができる。タイマ精度情報、タイマ初期値は、予め定められることができる。
【００８７】
次に、通信１Ａ、１Ｂを受け取った通信ノード装置１６００Ａ、１６００Ｂは、帯域分割制御のスレーブとして動作する。具体的には、配布されたタイマ精度を自身のタイマに反映し、タイマの初期値を受信した値Ｔｄにセットし、タイマをスタートさせる。また、ＲＴＴ計測要求に対する返信を通信２Ａ、２Ｂで行う（図１１のＳ５１１、Ｓ５１２）。
【００８８】
通信２Ａ、２Ｂを受信した帯域分割制御のマスタである通信ノード装置１６００Ｄは、通信ノード装置１６００Ａ、１６００Ｂ、それぞれのＲＴＴの計測を完了する。さらに、このときの通信ノード装置１６００Ａ、１６００Ｂの状態情報の計測を完了する。ここで、状態情報とは、例えば、有効な通信コネクションの数である（図１０のＳ４０３）。
【００８９】
次に、帯域分割制御のマスタである通信ノード装置１６００Ｄは、先のＲＴＴ計測結果を利用してインターバルＴＣを決定する。ここでは、実施例１同様に、通信ノード装置１６００Ａ、１６００Ｄの間のＲＴＴをＲＴＴａｄ、通信ノード装置１６００Ｂ、１６００Ｄの間のＲＴＴをＲＴＴｂｄと表現する。インターバルＴＣは、計測したＲＴＴのうち、最大のもの（ｍａｘ（ＲＴＴａｄ，ＲＴＴｂｄ））を超える（＋α）任意の値に設定する。また、必要であれば状態情報の計算を行い、結果情報を生成する。例えば、有効な通信コネクションの数の測定をもって結果情報とする（図１０のＳ４１１）。例えば、合計して１０本の有効なコネクションがあった場合、１０本という数字を結果情報とする。
【００９０】
そして、帯域分割制御のマスタである通信ノード装置１６００Ｄは、自身のタイマ値がインターバルＴＣに達すると（図１０のＳ４１２）、通信３Ａ、３Ｂによって、該当する全拠点ノード（ここでは通信ノード装置１６００Ａ、１６００Ｂ）へ結果情報と、それぞれの通信ノード装置１６００間におけるＲＴＴと、インターバルＴＣとを送信する（図１０のＳ４２３）。この操作は、帯域分割制御のマスタである通信ノード装置１６００Ｄのタイマ値がインターバルＴＣに達するたびに行い、結果として図２の通信４Ａ、４Ｂや通信５Ａ、５Ｂが定期的に送信される。
【００９１】
さらに、通信ノード装置１６００Ｂ、１６００Ｃは、通信３Ａ、３Ｂにより、ＲＴＴ、インターバルＴＣ、結果情報を受信すると（図１１のＳ５１３）、自身の「（タイマ値）―（ＲＴＴ）」がインターバルＴＣに達するたびに、実施例１と同様に自身の上限通信帯域変更の計算に受信した結果情報を利用し、自身の送信帯域制御に反映する（図１１のＳ５１５）。なお、インターバルＴＣに達する条件は、図１１のＳ５１４に示すように、（（タイマ値）―（ＲＴＴ））ｍｏｄ  ＴＣ＝＝０として表現できる。ここで、ｍｏｄはモジュロ演算、すなわち剰余を意味する。
【００９２】
図２の６Ａ、６Ｂ、７Ａ、７Ｂ、８Ａ、８Ｂの黒丸は、この変更タイミングを示す。送信側の各ノード装置で、自身のＲＴＴは異なるので、図２のように各ノード装置の送信タイミングがずれる。６Ａと７Ａの間、７Ａと８Ａの間、６Ｂと７Ｂの間、７Ｂと８Ｂの間、はインターバルＴＣとなる。通信４Ａ、４Ｂ、５Ａ、５Ｂを受信した時も、通信３Ａ、３Ｂを受信したときと同様の処理を行う。
【００９３】
本操作を行うことにより、図７の右側に示すように、帯域分割制御のスレーブである通信ノード装置１６００Ａ、１６００Ｂから、帯域分割制御のマスタである通信ノード装置１６００Ｄへのデータ送信の最大帯域が有効に活用される。尚、図７の左側の通信ノード装置１６００Ａ、１６００Ｂの時刻のズレを示す矢印９９は、「（ＲＴＴａｄ―ＲＴＴｂｄ）／２」に相当する時間である。なお、上述の手法以外にも、適宜の手法で、送信側の通信ノード装置１６００Ａ、Ｂは、受信側の通信ノード装置１６００Ｄがパケットを受信するタイミングである基準時刻に対して、計測される通信ノード装置１６００Ｄとのラウンドトリップタイムの１／２だけ帯域更新のタイミングをずらしてもよい。
【００９４】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよい。また、上記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラムの情報は、メモリやハードディスク、ＳＳＤ、等をはじめとする各種記録媒体に置くことが可能である。
【実施例３】
【００９５】
実施例３では、実施例１や実施例２で示した通信ノード装置１６００の機能を、通常のルータ装置またはスイッチ装置にサービスカード形式で提供する構成について説明する。
図２４に実施例３における通信ノード装置１６００の構成例を示す。通信ノード装置１６００は、ネットワークインタフェースを収容する複数（Ｎ枚）のラインカード１６１０と、機能拡張を行うための複数（Ｍ枚）のサービスカード１６３０と、それらの間で適切なカードへパケットを転送するスイッチファブリック１６２０を備える。そして、サービスカード１６３０のうちの１枚、または複数枚に、実施例１、実施例２で説明した本発明のＴＸ部１０２、ＲＸ部１０３、協調制御マスタ部２２０、協調制御スレーブ部２３０の機能を搭載する。
【００９６】
図２５にサービスカード１６３０の構成例を示す。サービスカード１６３０は、スイッチファブリック１６２０へ接続するためのスイッチファブリックインタフェース１６３１、サービスを提供するプログラムを実行するためのプロセッシング部１６３２、及び、各種の情報を格納するためのメモリ１６３３、追加のデバイスやＩ／Ｏを接続するための拡張インタフェース１６３４を備える。プロセッシング部１６３２は、ＣＰＵやネットワークプロセッサ、メニーコアＣＰＵ、ＦＰＧＡ等の各種のプロセッシングデバイスが利用可能である。
【００９７】
パケットの宛先検索機能はラインカード１６１０上に実装されていても良いし、スイッチファブリック１６２０上に実装されていても良い。いずれにしても、通信ノード装置１６００へラインカード経由で入力されたパケットは、宛先検索を行い、実施例１や実施例２で説明した通信ノード装置１６００の機能を提供する場合には、サービスカード１６３０へ転送する。例えば、高機能なルータ装置やＬ３スイッチ装置に実装されているポリシーベースルーティングの機能を用いて、該当する通信をパケットの５タプル情報（送信元ＩＰアドレス、宛先ＩＰアドレス、プロトコル番号、送信元ポート番号、宛先ポート番号）にて該当する通信を識別することができる。
【００９８】
サービスカード１６３０上では、プロセッシング部１６３２に、本発明のＴＸ部１０２、ＲＸ部１０３、協調制御マスタ部２２０、協調制御スレーブ部２３０の処理機能を搭載する。そして、メモリ１６３３には、本発明のＴＸ部１０２、ＲＸ部１０３、協調制御マスタ部２２０、協調制御スレーブ部２３０の各種テーブルやタイマの値を保持する。
【００９９】
そして、プロセッシング部１６３２とメモリ１６３３を利用して、スイッチファブリックインタフェース１６３１から入力されてくるパケットに対して、実施例１、実施例２で説明した内容をプログラムとして実行する。実行後、実行結果となるパケットを、再び、スイッチファブリックインタフェース１６３１からスイッチファブリック１６２０経由で、宛先のネットワークに接続されるラインカード１６１０へ出力する。この操作を繰り返すことで、通常のルータ装置またはスイッチ装置にサービスカード形式で提供する構成の通信ノード装置１６００を実現できる。
【０１００】
尚、本発明は上記実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明をわかり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１０１】
（構成例）
本実施の形態の通信ノード装置は、例えば、
パケット送信側にて、再送帯域を測定して再送帯域に基づく帯域制御を行いながらパケット送信を行う機能と、
パケット受信側にて、パケット廃棄箇所を検出して送信側に前記パケット廃棄箇所をフィードバック通知する機能と、
前記パケット送信側にて、前記フィードバック通知に基づくパケット再送を行う機能と、
前記パケット受信側にて、インターバルとして規定する一定の時刻に達するたびに、前記パケット送信側の利用可能通信帯域を分割することを特徴のひとつとする。
【０１０２】
上述の通信ノード装置において、パケット送信側にて、パケット再送が発生中のコネクション数を測定して、前記再送発生中のコネクション数に基づく帯域制御をおこなうことを特徴のひとつとする。
上述の通信ノード装置において、パケット送信側にて、前記フィードバック通知されたパケット受信中のコネクション数を測定して、前記パケット受信中のコネクション数に基づく帯域制御をおこなうことを特徴のひとつとする。
【０１０３】
上述の通信ノード装置において、
前記パケット受信側にて、複数のパケット送信側の通信ノード装置との間のラウンドトリップタイムを測定し、
前記ラウンドトリップタイムの中で最大のラウンドトリップタイム以上の値をインターバルとし、
前記インターバルの時刻が経過するたびに前記パケット送信側へ、パケット送信中の総コネクション数と契約帯域を通知することを特徴のひとつとする。
【０１０４】
上述の通信ノード装置において、前記パケット送信側にて、前記パケット送信中の総コネクション数に対する自身のコネクション数の割合に前記契約帯域を乗じて、自身の最大通信帯域を算出し、前記自身の最大通信帯域の範囲内でパケット送信することを特徴のひとつとする。
上述の通信ノード装置において、前記パケット受信側にて、前記インターバルの時刻が経過するたびに、前記パケット送信側へ、前記インターバルを通知することを特徴のひとつとする。
上述の通信ノード装置において、前記パケット受信側にて、新規のパケット送信側にあたる通信ノード装置が通信帯域を共有する際に、該当する前記通信ノード装置との間のラウンドトリップタイムを計測し、現在、通信帯域を共有している複数の前記通信ノード装置の中で最大のラウンドトリップタイム以上の値で前記インターバルを更新することを特徴のひとつとする。
【０１０５】
上述の通信ノード装置において、
前記パケット受信側にて、現在、通信帯域を共有しているパケット送信側にあたる通信ノード装置のいずれか一つ以上が、通信帯域の共有対象から離脱する際に、前記離脱する通信ノード装置のラウンドトリップタイムが、現在、通信帯域を共有している通信ノード装置の中で最大のラウンドトリップタイムであった場合、次に大きい値のラウンドトリップタイム以上の値で前記インターバルを更新することを特徴のひとつとする。
【０１０６】
上述の通信ノード装置において、
前記パケット受信側にて、現在の時刻を示すタイマの時間粒度と、タイマの初期値として現在の時刻と、を前記パケット送信側に通知し、
前記パケット送信側にて、自身のタイマの時刻と時刻の進み方を前記パケット送信側に一致させることを特徴のひとつとする。
【０１０７】
上述の通信ノード装置において、
前記パケット受信側にて、それぞれのパケット送信側の通信ノード装置との間のラウンドトリップタイムと、を前記パケット送信側に通知し、
前記パケット送信側にて、自身のタイマの時刻から前記ラウンドトリップタイムを減じた値を前記インターバルで割った値がゼロに達するたびに、
前記パケット送信中の総コネクション数に対する自身のコネクション数の割合に前記契約帯域を乗じて、自身の最大通信帯域を算出し、
前記自身の最大通信帯域の範囲内でパケット送信することを特徴のひとつとする。
上述の通信ノード装置において、前記の全ての機能が、通信ノード装置上のプログラム可能なデバイスを搭載したサービスカードとして提供され、帯域分割の対象となる通信は、前記通信ノード装置の中の前記サービスカード上で実行されることを特徴のひとつとする。
【産業上の利用可能性】
【０１０８】
本発明は、例えば、帯域制御を行う通信ネットワークに利用可能である。
【符号の説明】
【０１０９】
１０２  ＴＸ部
１０３  ＲＸ部
２２０  協調制御マスタ部
２３０  協調制御スレーブ部
１５００  端末
１５５０  ＬＡＮ
１６００  通信ノード装置
１６１０  ラインカード
１６２０  スイッチファブリック
１６３０  サービスカード
１６５０  ＷＡＮ
１７００  管理ノード
【図１】
0005662779.tif 000002
【図２】
0005662779.tif 000003
【図３】
0005662779.tif 000004
【図４】
0005662779.tif 000005
【図５】
0005662779.tif 000006
【図６】
0005662779.tif 000007
【図７】
0005662779.tif 000008
【図８】
0005662779.tif 000009
【図９】
0005662779.tif 000010
【図１０】
0005662779.tif 000011
【図１１】
0005662779.tif 000012
【図１２】
0005662779.tif 000013
【図１３】
0005662779.tif 000014
【図１４】
0005662779.tif 000015
【図１５】
0005662779.tif 000016
【図１６】
0005662779.tif 000017
【図１７】
0005662779.tif 000018
【図１８】
0005662779.tif 000019
【図１９】
0005662779.tif 000020
【図２０】
0005662779.tif 000021
【図２１】
0005662779.tif 000022
【図２２】
0005662779.tif 000023
【図２３】
0005662779.tif 000024
【図２４】
0005662779.tif 000025
【図２５】
0005662779.tif 000026
【図２６】
0005662779.tif 000027