JP2006101428A - 無線ネットワークの制御装置及び制御方法、制御プログラム並びに記録媒体 - Google Patents
無線ネットワークの制御装置及び制御方法、制御プログラム並びに記録媒体 Download PDFInfo
- Publication number
- JP2006101428A JP2006101428A JP2004287783A JP2004287783A JP2006101428A JP 2006101428 A JP2006101428 A JP 2006101428A JP 2004287783 A JP2004287783 A JP 2004287783A JP 2004287783 A JP2004287783 A JP 2004287783A JP 2006101428 A JP2006101428 A JP 2006101428A
- Authority
- JP
- Japan
- Prior art keywords
- route
- data
- wireless network
- state
- transmitted
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】アドホック無線ネットワークにおいて1つのアソシエーションに属する複数のパケットを複数のルートを用いて効率的に伝送してデータ転送全体のスループットを向上できる。
【解決手段】SCTPを用いて1つのデータの複数のパケットを送信元通信端末装置から宛先通信端末装置に伝送する無線ネットワークの制御装置において、データの各パケットに対して、ルートを識別するルート識別子(RID)と、ルート毎のシーケンス番号であるルートシーケンス番号(RSN)とを付して、各パケットを複数のルートを介して伝送するように制御する。ここで、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、ルート識別子(RID)に基づいて、ルート毎のデータ転送時間(RTT)を計算するルート毎の再送タイマーを含み、再送時刻を管理する。
【選択図】図1
【解決手段】SCTPを用いて1つのデータの複数のパケットを送信元通信端末装置から宛先通信端末装置に伝送する無線ネットワークの制御装置において、データの各パケットに対して、ルートを識別するルート識別子(RID)と、ルート毎のシーケンス番号であるルートシーケンス番号(RSN)とを付して、各パケットを複数のルートを介して伝送するように制御する。ここで、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、ルート識別子(RID)に基づいて、ルート毎のデータ転送時間(RTT)を計算するルート毎の再送タイマーを含み、再送時刻を管理する。
【選択図】図1
Description
本発明は、例えばアドホック無線ネットワークなどのための無線ネットワークの制御装置及び制御方法、制御プログラム並びに、上記制御プログラムを格納したコンピュータにより読み取り可能な記録媒体に関する。
アドホック無線ネットワークはユビキタスコンピューティングの世界で重要な技術となりつつある。しかしながら、アドホック無線ネットワークのプロトコルはスケーラビリティを考慮して設計されていないために、インターネット上における全てのサービス(アプリケーション)をアドホック無線ネットワーク上で提供できるわけではない。特に、ユビキタスコンピューティングに欠かせないマルチメディアアプリケーションにおいては、アドホック無線ネットワークの特徴である高い転送エラー率や狭帯域などが大きな制約となると考えられる。以下、本願では、アドホック無線ネットワークなどのネットワークにおいて用いられる、従来技術であるトランスポート層の通信手順であるSCTP(Stream Control Transmission Protocol;以下、SCTPという。)において伝送品質の改善を行って、スケーラビリティを考慮することを考える。
次いで、非特許文献1乃至3を引用して、従来技術に係るSCTPについて以下説明する。
近年、インターネットは世界規模の通信基盤として広く普及している。このインターネット上の通信において確実にデータを送り届けるためには、経路の冗長性の確保が必要である。また、固定あるいは移動端末などを利用してインターネットに接続する端末数は年々増加し、通信トラフィック量もこれに応じて増大しているため、トラフィックの負荷分散を行うことが重要となっている。これら双方の目的のために、複数の通信経路を持つことができるマルチホーム(multihoming)環境が整いつつある。一方、移動端末環境に着目すると、携帯電話、PDA、ノートパソコン等によるモバイルアクセスの要求が年々高まっている。この要求の高まりに伴い、IEEE802.11bに準拠した無線LANシステムやIMT−2000(International Mobile Telecommunications-2000)などの多様な無線接続技術が普及している。移動端末装置において、これらの多様な無線接続技術を生かしマルチホーム環境を達成できれば、切断がなく効率の良い通信を実現できる。しかしながら、現在のインターネットにおける通信の大部分を占めるTCP(Transmission Control Protocol;以下、TCPという。)は、マルチホーム環境を前提とする通信はできない。これはTCPが通信継続中に一つのアドレスのみしか使用できないためである。このため、通信経路の変更によってIPアドレスが変更されると通信が継続できない。そこで、現在マルチホーム通信が可能な新しいトランスポートプロトコルであるSCTPに注目が集まっている。
SCTPは、2000年10月にRFC2960としてIETF(Internet Engineering Task Force)で標準化されたトランスポートプロトコルであり、電話のシグナリング制御のためにIETF SIGTRANワーキンググループにより開発されたものが基礎となっている。SCTPはTCPの機能の大部分を受け継ぎ、マルチホーム対応であることから次世代汎用トランスポートプロトコルとして期待されている。
しかしながら、標準化されてから間もないため、既存の機構のままインターネット上で通信をするのには不備な点も多い。現行のSCTPでは、同時にマルチホーム通信を行っているわけではなく、実際の通信は1組の送信元アドレス及び宛先アドレスによって行う。この送信元アドレス及び宛先アドレスをプライマリアドレス(primary address)と呼ぶ。プライマリアドレス以外に持っている送信元アドレス及び宛先アドレスをセカンダリアドレス(secondary address)と呼ぶ。そして、通常はプライマリアドレス同士で通信をおこない、セカンダリアドレスは再送のときのみ使用する。よって、現在のSCTPでは、複数の通信経路を使用した負荷分散を達成することはできない。また、SCTPでは、TCPにおけるコネクションに相当するものとして、通信開始時に複数のアドレスによって構成されるアソシエーション(association)を確立し、信頼性のある通信を実現する。しかしながら、一度アソシエーションを確立すると動的なアドレスの追加はできない。これは、端末の移動に応じて動的にアドレスを変更する必要のある移動体通信においては、極めて大きな問題となる。また、SCTPでは、プライマリアドレスはアソシエーション確立時に決定された後は変更できない。加えて、プライマリアドレスの選択手法は実装依存となっており、明確な決定方法が定義されていない。よって、他に高速に通信できるアドレスが存在するにもかかわらず通信速度が低速であるアドレスがプライマリアドレスに選択された場合、非常に効率の悪い通信となってしまう。また、無線区間の伝送誤りを考慮したフロー制御については、現在のところ規定されていない。
次いで、SCTPの基本的な機能について簡単に説明する。図21は従来技術に係るSCTP(Stream Control Transmission Protocol)を用いた通信システムを示すブロック図である。
SCTPでは、それぞれのホストの無線局をエンドポイントといい、本願では、その通信端末装置をエンドポイント装置51A,51Bと呼ぶ。エンドポイント装置51A,51Bは1つ又は複数のIPアドレスを持ち、双方のエンコード装置51A,51Bが互いに通信するときに使用可能なアドレスリストを交換することによりアソシエーションを確立する。ここで、SCTPのアソシエーションは、TCPのコネクションに相当するものである。SCTPはTCPと同様にコネクション指向型のプロトコルである。TCPでは、送信元のIPアドレス及び宛先のIPアドレスとポート番号を交換することでコネクションを確立していた。これに対しSCTPでは、送信元及び宛先のIPアドレスリストとポート番号を交換することでアソシエーションを確立する。
次いで、SCTPの機能について以下に簡単に説明する。
SCTPは、トランスポートプロトコルとして現在主に使われているTCPからスロースタート、輻輳回避、ファストリカバリを含む輻輳制御機能、パケットロスの回復、再送のために選択的肯定確認応答(selective acknowledgement;以下、SACKという。)パケットを使用する再送機能などを受け継いでいる。従って、TCPで動く全てのアプリケーションは、SCTPでその機能を失うことなく動作できる。SCTPはTCPから受け継いだ機能に加えて、新たに以下の機能も提供する。
(1)メッセージ境界の保持(message boundary preservation):チャンク(chunk)により、バイト単位ではなくメッセージ単位で通信できる。サイズの小さなメッセージは、複数まとめて1つのチャンクに格納できる。また、サイズの大きなメッセージは、複数のチャンクに渡って分割できる。
(2)複数の転送モード(multiple delivery mode):以下のような、さまざまな転送モードが存在する。(a)TCPのような厳密な順序転送。(b)ストリームに応じた部分的な順序転送。(c)UDPのような順序を保証しない転送。
(3)データの分割(user data fragment):MTU(Maximum Transmit Unit;以下、MTUという。)のサイズに従ってメッセージを分割する。この機能は、オプションで使われる。
(4)ハートビート(HEARTBEAT)による生存確認(heartbeat keep-alive mechanism):ある一定期間データ送信に使用していない宛先アドレスに対して定期的にハートビート(HEARTBEAT)パケットを送り、その使用していなアドレスがアクティブ(動作状態)であるか否かを確認する。肯定確認応答(acknowledgement;以下、ACKという。)パケットがあるしきい値の回数だけ返ってこなければ、そのアドレスをインアクティブ(非動作状態)と認識し、通信には使用しないようにする。
(5)サービス不能攻撃(Denial of Service attack;以下、Dos攻撃という。)により保護:TCPで起こるSYNフラッディングアタック(SYN flooding attacks)の影響を受けないように、アソシエーションを確立する段階でクッキー(cookie)というセキュリティ技術を使う。ここで、SYNはコネクションの確立を要求する同期フラグのパケットである。
(2)複数の転送モード(multiple delivery mode):以下のような、さまざまな転送モードが存在する。(a)TCPのような厳密な順序転送。(b)ストリームに応じた部分的な順序転送。(c)UDPのような順序を保証しない転送。
(3)データの分割(user data fragment):MTU(Maximum Transmit Unit;以下、MTUという。)のサイズに従ってメッセージを分割する。この機能は、オプションで使われる。
(4)ハートビート(HEARTBEAT)による生存確認(heartbeat keep-alive mechanism):ある一定期間データ送信に使用していない宛先アドレスに対して定期的にハートビート(HEARTBEAT)パケットを送り、その使用していなアドレスがアクティブ(動作状態)であるか否かを確認する。肯定確認応答(acknowledgement;以下、ACKという。)パケットがあるしきい値の回数だけ返ってこなければ、そのアドレスをインアクティブ(非動作状態)と認識し、通信には使用しないようにする。
(5)サービス不能攻撃(Denial of Service attack;以下、Dos攻撃という。)により保護:TCPで起こるSYNフラッディングアタック(SYN flooding attacks)の影響を受けないように、アソシエーションを確立する段階でクッキー(cookie)というセキュリティ技術を使う。ここで、SYNはコネクションの確立を要求する同期フラグのパケットである。
図22は図21のSCTPで用いるSCTPパケットの構成を示す図である。図22において、SCTPパケットは、IPヘッダ、送信元ポート番号、宛先ポート番号、照合タグ、チェックサム、チャンクタイプ、チャンクフラグ、チャンク長、TSN(トランスポートシーケンス番号)、ストリームID(ストリーム識別子)、SSN(ストリームシーケンス番号)、プロトコルID(プロトコル識別子)、ユーザデータ、少なくとも1つのチャンクを備えて構成される。
すなわち、図22に示すように、SCTPパケットは1つのSCTP共通ヘッダと複数のチャンクからなる。チャンクには制御チャンクとデータチャンクがあるが、図22ではデータチャンクの場合について示している。制御チャンクはアソシエーションの確立や解放のときなどに送信され、その際にはデータチャンクよりも必ず前に配置しなければならない。SCTP共通ヘッダについて説明する。まず、送信元及び宛先のポート番号は、SCTPパケットの受信者を見分けるために使う。照合タグ(verification tag)は、以前のアソシエーションからの古いSCTPパケットの到着を防ぐ。従って、TCPでは以前のコネクションの内容を消去するために必要としていた、タイミング調整された待機状態(timed-wait state)は、SCTPでは必要ない。最後にチェックサムは、SCTPパケットがIPネットワーク上を通る際のデータの完全性を保証する。
次いで、チャンクについて説明する。チャンクはパス最大送信単位(Path Maximum Transmit Unit;以下、PMTUという。)が許す限り、1つのSCTPパケットにまとめることができる。チャンクの先頭には、チャンクの種類や長さが記される。また、トランスポートシーケンス番号(Transport Sequence Number;以下、TSNという。)は単純に、転送の順番を表す番号である。ストリームID(Stream Identifier)は、ストリーム毎に付与される番号であり、従って、アソシエーションは複数のストリームを束ねたものとなる。さらに、ストリームシーケンス番号(Stream Sequence Number;以下、SSNという。)は、ストリーム内の転送の順番を表す番号である。プロトコルID(Protocol Identifier)には、SCTPのプロトコル番号が格納され、ユーザデータ(User Data)には送信したいメッセージが格納される。
次いで、SCTPのデータ転送に必要となる機能について説明し、まず、アソシエーションの確立と解放について説明する。
アソシエーションの確立は、4ウェイのハンドシェイク(4 way handshake)により行う。SCTPの4ウェイのハンドシェイクとTCPの3ウェイのハンドシェイクの最大の違いは、クッキーを使っている点である。クッキーの使用により、SYNフラッディングアタックを受けても影響を受けない。SYNフラッディングアタックとは、頻繁にTCPが受ける攻撃であり、攻撃者から続々と送信されるSYNに対して受信側がSYN−ACKを返信し続けることで記憶する情報が膨大となり、システムリソースが不足し通信継続が困難になる状況をいう。送信側は、送信されてきた情報をもとに相手を特定するためのクッキーを作成して通信相手に送信する。通信相手を確実に特定できるまではリソースの確保を行わないため、SYNフラッディングアタックを防ぐことができる。
アソシエーションの確立において用いられるINITチャンク、INIT−ACKチャンク、COOKIE−ECHOチャンク、COOKIE−ACKチャンクは、制御チャンクとして扱われる。さらに、アソシエーション確立の手順を説明すると、まず、エンドポイント装置51Aは、アソシエーションを確立するために必要な情報の初期値を含んだINITチャンクを送信し、クッキー待機状態に入る。エンドポイント装置51Bは、INITチャンクを受け取るとクッキーを含んだINIT−ACKチャンクを送信する。クッキーを用いることにより、メモリに保存する予定であった情報をINIT−ACKチャンクの中に詰め込む。エンドポイント装置51Aは、INIT−ACKチャンクを受け取ると、その中からクッキーを取り出し、COOKIE−ECHOチャンクとして送信し、クッキーエコーされた状態に入る。エンドポイント装置51Bは、COOKIE−ECHOチャンクを受け取るとそこからクッキーを取り出し、COOKIE−ACKチャンクを送信する。以上の動作を経てアソシエーションが確立される。なお、INITチャンク、INIT−ACKチャンクの転送に使われているアドレスは、アソシエーション確立のためのアドレスリストに含まれていなくても、アソシエーションの一部となる。
また、SCTPのアソシエーションの解放には、3ウェイハンドシェイクを用いる。TCPでは、データを受信している最中でもコネクションを解放できた。しかしながら、SCTPではTCPとは違い、丁寧な方法でアソシエーションの解放を行う。SCTPのアソシエーションの解放において、SHUTDOWNチャンク、SHUTDOWN−ACKチャンク、SHUTDOWN−COMPLETEチャンクは、制御チャンクとして扱われる。さらに、アソシエーションの解放の手順を説明すれば、まず、エンドポイント装置51Aは、アソシエーションの解放を決定したあとは、上位層装置からのデータを受け付けない。そして、シャットダウン係属中状態に入り、現在キューにたまっているデータチャンクを送信する。エンドポイント装置51Aは、キューにたまっている全てのデータチャンクを送信したあと、SHUTDOWNチャンクを送り、シャットダウン送信済み状態に入る。エンドポイント装置51Bは、SHUTDOWNチャンクを受け取ったあとは上位層装置からのデータを受け付けない。そして、シャットダウン受信済み状態に入り、現在キューにたまっているデータチャンクを送信する。エンドポイント装置51Aは、エンドポイント装置51Bからデータチャンクが届く度にSHUTDOWNチャンクを送信する。エンドポイント装置51Bは、キューにたまっている全てのデータチャンクを送信したあと、SHUTDOWN−ACKチャンクを送り、SHUTDOWN−ACKSENT状態に入る。エンドポイント装置51Aは、SHUTDOWN−ACKチャンクを受け取るとSHUTDOWN−COMPLETEチャンクを送信する。これでアソシエーションの解放が完了する。
次いで、SCTPのデータ転送について以下説明する。SCTPのデータ転送では、SCTPパケットが到着する毎にSACKチャンクを返す。SACKチャンクには、受信側(ここでは、エンドポイント装置51B)がどのデータチャンクを受け取ったかの情報が格納される。具体的には、SACKチャンク中にあるギャップ肯定確認応答ブロック(GapAckblock)というパラメータに受信したTSN(トランスポートシーケンス番号)を格納している。データチャンクの送信者は、これをもとに、どのデータチャンクを再送すべきかを特定できる。
また、SCTPはTCPと同様に、高速再送信とタイムアウトという2つの手法による再送アルゴリズムを提供する。プライマリアドレス同士で通信している際にパケット廃棄をSACKチャンクにより検出すると、セカンダリアドレスに向けて再送を行い、エラーカウンタの計数値を1ずつ増加させる。セカンダリアドレスが通信可能であるかの確認は、ハートビート(HEARTBEAT)パケットにより行う。再送後は再びプライマリアドレス同士で通信を継続する。
さらに、データの再送制御について以下説明する。送信したSCTPパケットに対するSACKチャンクを受信せずにタイムアウトが経過した場合には、同じ内容のSCTPパケットをセカンダリアドレスに対して再送する。その後、セカンダリアドレスに再送したSCTPパケットに対するSACKチャンクを受信すると、それからの通信はプライマリアドレスによって再開される。このとき、再送タイマーの値を前回の2倍に設定する。この再送タイマーの値を再送信タイムアウト値(Retransmission Time Out;以下、RTOという。)という。また、タイムアウトをむかえる毎にRTOを2倍に設定するアルゴリズムを「指数的バックオフ法」という。このように、再送タイマーのRTOは、再送を行う度に2倍に設定され、指数的に増加する。再送を行った回数はアドレス毎にエラーカウンタで保持される。エラーカウンタは再送時やハートビート(HEARTBEAT)の送信時に加算される。送信したデータに対するSACKチャンク又はハートビート(HEARTBEAT)応答チャンクを受け取ると、エラーカウンタはリセットされる。同時にRTOも初期値である1秒となる。SCTPでは、再送は所定のしきい値に達するまで連続して行われる。このしきい値であるパス最大再送信値(Path Maximum Retransmission;以下、PMRという。)を超えると、その宛先のプライマリアドレスをインアクティブ(非動作状態)とし、通信に使用しない。そして、宛先のセカンダリアドレスでの通信に切り替える。ただし、全ての宛先アドレスがインアクティブ(非動作状態)となった場合や、セカンダリアドレスを持たない場合は、アソシエーションそのものが喪失する。現行のSCTPでは、PMRの値は5が推奨されている。
さらに、SCTPの障害検知や再送制御に使用される制御チャンクであるハートビート(HEARTBEAT)について説明する。SCTPでは、送信側のエンドポイント装置51Aから宛先のエンドポイント装置51Bのアドレスが使用可能であるかを、そのアドレスから制御チャンク、データチャンク、ハートビート(HEARTBEAT)チャンクの肯定確認応答(ACK)が返信されているかどうかに基づいて判断する。これらの肯定確認応答(ACK)がある一定期間に返信されていない場合は、ハートビート(HEARTBEAT)チャンクを送信することで通信可能であるかを確認する。このハートビート(HEARTBEAT)を送出する期間をハートビート周期(heartbeat period)という。ハートビート周期Hiは通常、次式で次式で与えられる。なお、当該明細書において、数式がイメージ入力された墨付き括弧の数番号と、数式が文字入力された大括弧の数式番号とを混在して用いており、また、当該明細書での一連の数式番号として「式(1)」の形式を用いて数式番号を式の最後部に付与して用いることとする。
[数1]
Hi=RTOi+HBInterval(1+δ) (1)
Hi=RTOi+HBInterval(1+δ) (1)
ここで、iは宛先アドレスを表す。RTOiはその宛先アドレスにおける最新のRTO値が入力される。HBIntervalは30秒が推奨されているが、ハートビート(HEARTBEAT)送信のタイミングは制御係数δを用いて制御されている。これにより、ハートビート(HEARTBEAT)を送信する際のトラフィックの増加を防いでいる。制御係数δは−0.5〜+0.5の間のランダムな値であるので、式(1)の右辺第2項はHBIntervalの値を±50%した秒数となる。従って、式(1)の右辺第2項は15〜45秒の間の値をとりうる。ハートビート(HEARTBEAT)チャンクを受け取ったエンドポイント装置は、ハートビート(HEARTBEAT)チャンクの送信元アドレスへとハートビート肯定確認応答チャンク(heartbeat acknowledgement chunk)を送信する。
このハートビート(HEARTBEAT)はアイドル状態のパスにのみに送信することで、トラフィックの増大や必要以上の処理の増加を防いでいる。ここでいう、アイドル状態とは、データ転送時間(RTT)の計測を行えるチャンク(例:再送でないDATA、INIT、COOKIEECHO、HEARTBEAT)がハートビート周期内に1つも送られていない状態であり、アクティブ(動作状態)とインアクティブ(非動作状態)のどちらの場合にも適用される。宛先アドレスがアイドル状態でかつアクティブ(動作状態)であるときのハートビート周期は式(1)表される。宛先アドレスがアイドル状態でかつインアクティブ(非動作状態)であるときのハートビート周期は次式で与えられる。
[数2]
Hi=RTOInitial+HBInterval(1+δ) (2)
Hi=RTOInitial+HBInterval(1+δ) (2)
ここで、RTOInitialはRTOの初期値であり、通常3秒に設定されている。ハートビート(HEARTBEAT)の送出を決定するハートビートタイマーはエンドポイント装置毎に保持されており、このタイマーをタイムアウトする毎にハートビート(HEARTBEAT)を1つ送信する。ハートビート(HEARTBEAT)を実際にどのアイドル状態の宛先アドレスに送信するかは実装依存となっている。
例えば、アドホック無線ネットワークにおいてトランスポート層の通信手順として上述のSCTPを用いたときに、1つのアソシエーションのデータ転送全体のスループットを上げるために、単純に送信データを複数のルートに分けて送信することが考えられるが、複数のルートを同時に利用するだけで、ルートが動的に生成され削除される環境では、以下の問題点が生じる。
(A)パケットロス検出手法に関する問題点(以下、問題点Aという。)について。
転送データの消失を検出する主な手法は、実際のデータ転送時間に基づいてデータ到着時間を想定し、想定時間以内にデータが到着しなければ、データが失われたと見なし再送及びCWNDの更新を行う手法であり、いわゆる、タイムアウトに基づくパケットロスの検出手法である。例えばSCTPでは、次式を用いてRTOを計算している。
転送データの消失を検出する主な手法は、実際のデータ転送時間に基づいてデータ到着時間を想定し、想定時間以内にデータが到着しなければ、データが失われたと見なし再送及びCWNDの更新を行う手法であり、いわゆる、タイムアウトに基づくパケットロスの検出手法である。例えばSCTPでは、次式を用いてRTOを計算している。
[数3]
RTO=SRTT+4×RTTVAR (3)
RTO=SRTT+4×RTTVAR (3)
ここで、SRTTはデータ転送時間の推定値であり、次式で計算される。
[数4]
SRTTnew=RTT1st (4)
[数5]
SRTT=(1−α)×SRTTold+α×RTTnew (5)
[数6]
RTTVAR=RTT1st/2 (6)
[数7]
RTTVARnew
=(1−β)×RTTVARold+β×|SRTTold−RTTnew| (7)
SRTTnew=RTT1st (4)
[数5]
SRTT=(1−α)×SRTTold+α×RTTnew (5)
[数6]
RTTVAR=RTT1st/2 (6)
[数7]
RTTVARnew
=(1−β)×RTTVARold+β×|SRTTold−RTTnew| (7)
ここで、RTT1stは最初に計測したRTT値であり、RTTVARはデータ転送時間の分散値である。また、α、βは所定の重み係数であり、好ましくは、α=1/8,β=1/4である。
しかしながら、上記の式を用いてRTOを計算したとき、データ転送時間はルート毎に異なるために、アソシエーション全体で転送時間を計測すると、正確なデータ転送時間が得られず、実際にはデータが消失していなくても、データ消失を検出してしまう可能性が高くなる。その結果、無駄なデータの再送が発生するという問題点があった。
もう1つの転送データの消失を検出する主な手法は、データに割り振られたシーケンス番号に基づいて、式(3)を用いて計算されるタイムアウト時刻より前にデータを再送して輻輳ウィンドウ値(CWND)の更新を行う手法であり、いわゆる高速再送信(Fast Retransmission)におけるパケットロスの検出方法である。具体的にはデータ受信側からの到着確認である選択的肯定確認応答(SACK)において、特定のデータのシーケンス番号(n)の到着番号に空きが発生した状態が4回続くと、データの再送を行う。しかしながら、データの到着順序は、ルートの状態に依存するために、アソシエーション全体でシーケンス番号を管理すると、他のルートよりデータ転送に時間がかかるルートから送られてきたデータを消失データと見なして、再送が発生する可能性が高くなる。その結果、無駄なデータの再送が発生するという問題点があった。
(B)輻輳制御に関する問題点(以下、問題点Bという。)について。
輻輳制御をアソシエーション全体で行うと、特定のルート上でパケットロスが発生した場合、パケットロスが発生していないルートにおいても輻輳ウィンドウサイズを小さくしてしまい、結果的に不必要に転送レートを下げてしまう。なお、SCTPにおいては、次式を用いる。
輻輳制御をアソシエーション全体で行うと、特定のルート上でパケットロスが発生した場合、パケットロスが発生していないルートにおいても輻輳ウィンドウサイズを小さくしてしまい、結果的に不必要に転送レートを下げてしまう。なお、SCTPにおいては、次式を用いる。
(B1)再送タイマーが計時終了した場合。なお、「計時終了」とは、タイマーにセットされた時間が順次時間経過に応じてデクリメントされることにより、セットされた時間が経過してタイムオーバーすることをいう。
[数8]
Ssthresh=max(CWND/2,2×MTU) (8)
[数9]
CWND=1×MTU (9)
Ssthresh=max(CWND/2,2×MTU) (8)
[数9]
CWND=1×MTU (9)
(B2)高速再送信した場合。
[数10]
Ssthresh=max(CWND/2,2×MTU) (10)
[数11]
CWND=Ssthresh (11)
[数10]
Ssthresh=max(CWND/2,2×MTU) (10)
[数11]
CWND=Ssthresh (11)
ここで、Ssthreshは、SCTPにおけるスロースタートしきい値であって、輻輳制御のスロースタートモードと輻輳回避モードとを切り換えるための値である。なお、max(A,B)は、2つの引数A,Bのうち最大値を出力する最大値関数である。
(C)ルートの状態管理に関する問題点(以下、問題点Cという。)について。
これは、ルート切り替えに基づく無駄なデータ再送の発生に関するものである。具体的には、アドホック無線ネットワークなどのネットワークにおいて、ルートの状態が激しく変動するような環境においては、同じルートID(RID)について削除と追加を繰り返す場合が想定される。従来技術に係るSCTPでは、パスの状態を「アクティブ(動作状態)」と「インアクティブ(非動作状態)」に分けて管理している。また、パスの状態をインアクティブ(非動作状態)に遷移するためには、ハートビート(HEARTBEAT)チャンクを複数回送信し、十分な待ち時間を経過してから状態を遷移させる。しかしながら、上述のようにルートの削除、追加が激しく変動する場合、また、ルートの状態が下位層装置から通知される場合、ルート状態の変更検出は十分な待ち時間の後で行われない可能性がある。このとき、以下の問題点が発生する。
これは、ルート切り替えに基づく無駄なデータ再送の発生に関するものである。具体的には、アドホック無線ネットワークなどのネットワークにおいて、ルートの状態が激しく変動するような環境においては、同じルートID(RID)について削除と追加を繰り返す場合が想定される。従来技術に係るSCTPでは、パスの状態を「アクティブ(動作状態)」と「インアクティブ(非動作状態)」に分けて管理している。また、パスの状態をインアクティブ(非動作状態)に遷移するためには、ハートビート(HEARTBEAT)チャンクを複数回送信し、十分な待ち時間を経過してから状態を遷移させる。しかしながら、上述のようにルートの削除、追加が激しく変動する場合、また、ルートの状態が下位層装置から通知される場合、ルート状態の変更検出は十分な待ち時間の後で行われない可能性がある。このとき、以下の問題点が発生する。
データの送信ルートと、受信確認データである選択的肯定確認応答(SACK)の送信ルートが異なる場合、ルートの削除を検出しても、実際には転送データは通信相手に届く可能性がある。また、受信確認通知である肯定確認応答(ACK)も他のルートを通してデータ送信側に到着する可能性がある。ルート削除の通知をトリガーにして、管理情報を初期化した場合、結果として無駄なデータ再送が発生するという問題点があった。
(D)ルート選択に関する問題点(以下、問題点Dという。)について。
複数のルートを利用する場合通常は、利用可能なルートが静的に決まっている場合と、動的に変化する場合がある。アドホック無線ネットワークではない従来技術に係るインターネットにおいては、静的なルーティング情報に基づいてルートが決定される。しかしながら、ルートが動的に変化する場合、効率よくルートの情報を取得して利用するためには以下の問題があった。
複数のルートを利用する場合通常は、利用可能なルートが静的に決まっている場合と、動的に変化する場合がある。アドホック無線ネットワークではない従来技術に係るインターネットにおいては、静的なルーティング情報に基づいてルートが決定される。しかしながら、ルートが動的に変化する場合、効率よくルートの情報を取得して利用するためには以下の問題があった。
(D1)ルート検出パケットによるネットワーク負荷の発生(以下、問題点D1という、)について。
アドホック無線ネットワーク等の静的なルート情報が利用できない状況では、ルートの状態を監視するためにはブロードキャストパケットを定期的(時間、イベント)に送信する必要がある。特に、ブロードキャストパケットはネットワークに対して高負荷をかけるために、できるだけ送信する回数を減らす必要がある。
アドホック無線ネットワーク等の静的なルート情報が利用できない状況では、ルートの状態を監視するためにはブロードキャストパケットを定期的(時間、イベント)に送信する必要がある。特に、ブロードキャストパケットはネットワークに対して高負荷をかけるために、できるだけ送信する回数を減らす必要がある。
(D2)古いルート情報を利用することによる問題点(以下、問題点D2という。)について。
複数のルートを動的に検出して利用する場合、上記で述べたようにルートの検索要求パケット数をできるだけ減らして、ネットワーク負荷を必要以上にあげてはならない。またその場合は、ルート検索結果を内部にキャッシュしておく必要がある。しかしながら、キャッシュしたルート情報は、前回ルート検索した時点の情報であり、端末装置が移動をするような場合はルートの切り替えが発生した段階では、キャッシュしたルートが利用不可能な古い情報になっている可能性がある。しかし、ルート検索を減らす(全ルート利用不可能な場合のみ検索する)と1つずつのルートで実際にデータを転送するまで、ルートの状態を検出できない。もし利用不可能なルートが複数個キャッシュに存在すれば、各ルートのエラー検出時間の総和時間までまたないと、ルート検出処理が動作しない可能性がある。
複数のルートを動的に検出して利用する場合、上記で述べたようにルートの検索要求パケット数をできるだけ減らして、ネットワーク負荷を必要以上にあげてはならない。またその場合は、ルート検索結果を内部にキャッシュしておく必要がある。しかしながら、キャッシュしたルート情報は、前回ルート検索した時点の情報であり、端末装置が移動をするような場合はルートの切り替えが発生した段階では、キャッシュしたルートが利用不可能な古い情報になっている可能性がある。しかし、ルート検索を減らす(全ルート利用不可能な場合のみ検索する)と1つずつのルートで実際にデータを転送するまで、ルートの状態を検出できない。もし利用不可能なルートが複数個キャッシュに存在すれば、各ルートのエラー検出時間の総和時間までまたないと、ルート検出処理が動作しない可能性がある。
(D3)指数的バックオフ法(Exponential Back Off)に関連した問題点(以下、問題点D3という。)について。
従来技術に係る再送タイムアウト時間調整方式である指数的バックオフ法では、再送タイムアウトイベントが発生する度に、次式のごとく、再送タイムアウト時間RTOnewを前回の再送タイムアウト時間RTOoldの2倍の時間に設定している。
従来技術に係る再送タイムアウト時間調整方式である指数的バックオフ法では、再送タイムアウトイベントが発生する度に、次式のごとく、再送タイムアウト時間RTOnewを前回の再送タイムアウト時間RTOoldの2倍の時間に設定している。
[数12]
RTOnew=RTOold×2 (12)
RTOnew=RTOold×2 (12)
しかしながら、この方式はインターネットにおける輻輳を回避するために提案されている。マルチルートを利用する主な環境である、アドホック無線ネットワークにおいては輻輳が発生していなくても、端末装置の移動によるリンクの切断によってパケットが連続して廃棄される可能性がある。上記の場合は、再送タイムアウト時間(RTO)を必要以上に大きくしてしまい、スループット悪化の原因となるという問題点があった。
(D4)選択したルート間で品質の差が大きい場合の問題点(以下、問題点D4という。)について。
上述のように、複数のルートを同時に利用する場合、アドホック無線ネットワークのトポロジー(例えば、ルートの構成、電波環境など)によってルートの品質が異なる。例えば、データ転送時間(RTT)に関しても、ルート毎で異なる値になる可能性が大きい。また、トポロジーによっては、利用可能なルートのデータ転送時間(RTT)のばらつきが非常に大きくなる。その場合、データ転送時間(RTT)の大きなルートにおいて、輻輳ウィンドウ値(CWND)が大きくなると、データ転送時間(RTT)の大きなルートでデータを転送している間に、データ転送時間(RTT)の小さなルートが受信側のバッファを埋めつくしてしまう可能性があり、一時的にはデータ転送が停止する場合もあるという問題点があった。
上述のように、複数のルートを同時に利用する場合、アドホック無線ネットワークのトポロジー(例えば、ルートの構成、電波環境など)によってルートの品質が異なる。例えば、データ転送時間(RTT)に関しても、ルート毎で異なる値になる可能性が大きい。また、トポロジーによっては、利用可能なルートのデータ転送時間(RTT)のばらつきが非常に大きくなる。その場合、データ転送時間(RTT)の大きなルートにおいて、輻輳ウィンドウ値(CWND)が大きくなると、データ転送時間(RTT)の大きなルートでデータを転送している間に、データ転送時間(RTT)の小さなルートが受信側のバッファを埋めつくしてしまう可能性があり、一時的にはデータ転送が停止する場合もあるという問題点があった。
本発明の目的は以上の問題点を解決し、例えばアドホック無線ネットワークなどの無線ネットワークにおいて、1つのアソシエーションに属する複数のパケットを複数のルートを用いて、従来技術に比較して効率的に伝送することができ、データ転送全体のスループットを向上できる無線ネットワークの制御装置及び制御方法、制御プログラム並びに、上記制御プログラムを格納したコンピュータにより読み取り可能な記録媒体を提供することにある。
第1の発明に係る無線ネットワークの制御装置は、トランスポート層の所定のプロトコルを用いて1つのデータの複数のパケットを送信元通信端末装置から宛先通信端末装置に伝送する無線ネットワークの制御装置であって、
上記データの各パケットに対して、ルートを識別するルート識別子(RID)と、ルート毎のシーケンス番号であるルートシーケンス番号(RSN)とを付して、上記各パケットを複数のルートを介して伝送するように制御する制御手段を備えたことを特徴とする。
上記データの各パケットに対して、ルートを識別するルート識別子(RID)と、ルート毎のシーケンス番号であるルートシーケンス番号(RSN)とを付して、上記各パケットを複数のルートを介して伝送するように制御する制御手段を備えたことを特徴とする。
上記無線ネットワークの制御装置において、上記制御手段は、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、ルート識別子(RID)に基づいて、ルート毎のデータ転送時間(RTT)を計算するルート毎の再送タイマーを含み、再送時刻を管理することを特徴とする。
また、上記無線ネットワークの制御装置において、上記制御手段は、宛先通信端末装置からの、同一の送信データに対する所定の複数回の選択的肯定確認応答(SACK)メッセージに応答して、上記各選択的肯定確認応答(SACK)メッセージに含まれるルート識別子(RID)及びルートシーケンス番号(RSN)に基づいて、再送マークを付与して高速再送信で当該送信データの再送処理を実行することを特徴とする。
さらに、上記無線ネットワークの制御装置において、上記制御手段は、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、上記選択的肯定確認応答(SACK)で通知されたルート識別子(RID)で示されたルートを介して送信データを再送することを特徴とする。
またさらに、上記無線ネットワークの制御装置において、上記制御手段は、宛先通信端末装置からの、ルート削除の通知メッセージを受信したときに、上記通知されたルートにおいて再送マークが付された送信データがあるとき、当該送信データを他のルートを介して再送することを特徴とする。
また、上記無線ネットワークの制御装置において、上記制御手段は、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、ルート識別子(RID)に基づいて、ルート毎の輻輳ウィンドウ値(CWND)を計算することを特徴とする。
さらに、上記無線ネットワークの制御装置において、上記制御手段は、各ルートに送信している送信データを把握し、全てのルートにおける伝送中の送信データのデータサイズを計算し、上記計算した当該全てのルートにおける伝送中の送信データのデータサイズに基づいてフロー制御することを特徴とする。
またさらに、上記無線ネットワークの制御装置において、上記制御手段は、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージにより通知された受信バッファサイズから、上記計算した当該全てのルートにおける伝送中の送信データのデータサイズと、新規に送信するデータのサイズとを減算した値が0以上であるときに、当該新規に送信するデータを送信することを特徴とする。
また、上記無線ネットワークの制御装置において、上記制御手段は、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージにより通知された受信バッファサイズが0であるときに、上記計算した全てのルートにおける伝送中の送信データのデータサイズが0でないとき、当該ルートを介して送信データを送信することを中止するように制御することを特徴とする。
さらに、上記無線ネットワークの制御装置において、上記制御手段は、宛先通信端末装置からの、ルート削除の通知メッセージを受信したときに、通常ルート処理における削除済み状態に遷移し、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、当該ルートを介して伝送中の送信データのデータサイズが0でないとき、送信データを他のルートで当該ルートの輻輳ウィンドウ値の範囲で再送する一方、当該ルートを介して伝送中の送信データのデータサイズが0となったとき、当該ルートを削除することを特徴とする。
またさらに、上記無線ネットワークの制御装置において、上記制御手段は、通常ルート処理における削除済み状態にあるときに、宛先通信端末装置からの、ルート追加の通知メッセージを受信したときに、通常ルート処理における待機削除状態に遷移し、当該待機削除状態において、宛先通信端末装置からの、ルート削除の通知メッセージを受信したときに、通常ルート処理における削除済み状態に戻ることを特徴とする。
また、上記無線ネットワークの制御装置において、上記制御手段は、デフォルトルートの初期状態においてルート追加の通知メッセージを受信したとき待機初期状態となり、当該待機初期状態においてHEARTBEAT−ACKメッセージを受信して再送すべきデータがあり再送できれば、確立済み状態に遷移し、また、デフォルトルート処理の初期状態においてデフォルトルートのルート識別子(RID)であって当該状態が確立済みになったとき、HEARTBEATメッセージを送信して、デフォルトルート処理の停止状態に遷移し、当該停止状態においてデフォルトルートのルート識別子(RID)であって他のルートが全て確立済み以外の状態になったときHEARTBEATメッセージを送信して待機初期状態に遷移することを特徴とする。
さらに、上記無線ネットワークの制御装置において、上記制御手段は、上記確立済み状態においてデフォルトルートのルート識別子(RID)であって他のルートのいずれかの状態確立済み状態になったとき削除済みデフォルト状態に遷移し、再送タイマーが計時終了し選択的肯定確認応答(SACK)メッセージを受信しかつ当該デフォルトルートを介して伝送中の送信データのデータサイズが0となったとき停止状態に遷移することを特徴とする。
またさらに、上記無線ネットワークの制御装置において、上記プロトコルはSCTP(Stream Control Transmission Protocol)であることを特徴とする。
第2の発明に係る無線ネットワークの制御方法は、トランスポート層の所定のプロトコルを用いて1つのデータの複数のパケットを送信元通信端末装置から宛先通信端末装置に伝送する無線ネットワークの制御方法であって、
上記データの各パケットに対して、ルートを識別するルート識別子(RID)と、ルート毎のシーケンス番号であるルートシーケンス番号(RSN)とを付して、上記各パケットを複数のルートを介して伝送するように制御する制御ステップを含むことを特徴とする。
上記データの各パケットに対して、ルートを識別するルート識別子(RID)と、ルート毎のシーケンス番号であるルートシーケンス番号(RSN)とを付して、上記各パケットを複数のルートを介して伝送するように制御する制御ステップを含むことを特徴とする。
上記無線ネットワークの制御方法において、上記制御ステップは、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、ルート識別子(RID)に基づいて、ルート毎のデータ転送時間(RTT)を計算するルート毎の再送タイマーを含み、再送時刻を管理することを特徴とする。
また、上記無線ネットワークの制御方法において、上記制御ステップは、宛先通信端末装置からの、同一の送信データに対する所定の複数回の選択的肯定確認応答(SACK)メッセージに応答して、上記各選択的肯定確認応答(SACK)メッセージに含まれるルート識別子(RID)及びルートシーケンス番号(RSN)に基づいて、再送マークを付与して高速再送信で当該送信データの再送処理を実行することを特徴とする。
さらに、上記無線ネットワークの制御方法において、上記制御ステップは、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、上記選択的肯定確認応答(SACK)で通知されたルート識別子(RID)で示されたルートを介して送信データを再送することを特徴とする。
またさらに、上記無線ネットワークの制御方法において、上記制御ステップは、宛先通信端末装置からの、ルート削除の通知メッセージを受信したときに、上記通知されたルートにおいて再送マークが付された送信データがあるとき、当該送信データを他のルートを介して再送することを特徴とする。
また、上記無線ネットワークの制御方法において、上記制御ステップは、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、ルート識別子(RID)に基づいて、ルート毎の輻輳ウィンドウ値(CWND)を計算することを特徴とする。
さらに、上記無線ネットワークの制御方法において、上記制御ステップは、各ルートに送信している送信データを把握し、全てのルートにおける伝送中の送信データのデータサイズを計算し、上記計算した当該全てのルートにおける伝送中の送信データのデータサイズに基づいてフロー制御することを特徴とする。
またさらに、上記無線ネットワークの制御方法において、上記制御ステップは、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージにより通知された受信バッファサイズから、上記計算した当該全てのルートにおける伝送中の送信データのデータサイズと、新規に送信するデータのサイズとを減算した値が0以上であるときに、当該新規に送信するデータを送信することを特徴とする。
また、上記無線ネットワークの制御方法において、上記制御ステップは、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージにより通知された受信バッファサイズが0であるときに、上記計算した全てのルートにおける伝送中の送信データのデータサイズが0でないとき、当該ルートを介して送信データを送信することを中止するように制御することを特徴とする。
さらに、上記無線ネットワークの制御方法において、上記制御ステップは、宛先通信端末装置からの、ルート削除の通知メッセージを受信したときに、通常ルート処理における削除済み状態に遷移し、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、当該ルートを介して伝送中の送信データのデータサイズが0でないとき、送信データを他のルートで当該ルートの輻輳ウィンドウ値の範囲で再送する一方、当該ルートを介して伝送中の送信データのデータサイズが0となったとき、当該ルートを削除することを特徴とする。
またさらに、上記無線ネットワークの制御方法において、上記制御ステップは、通常ルート処理における削除済み状態にあるときに、宛先通信端末装置からの、ルート追加の通知メッセージを受信したときに、通常ルート処理における待機削除状態に遷移し、当該待機削除状態において、宛先通信端末装置からの、ルート削除の通知メッセージを受信したときに、通常ルート処理における削除済み状態に戻ることを特徴とする。
また、上記無線ネットワークの制御方法において、上記制御ステップは、デフォルトルートの初期状態においてルート追加の通知メッセージを受信したとき待機初期状態となり、当該待機初期状態においてHEARTBEAT−ACKメッセージを受信して再送すべきデータがあり再送できれば、確立済み状態に遷移し、また、デフォルトルート処理の初期状態においてデフォルトルートのルート識別子(RID)であって当該状態が確立済みになったとき、HEARTBEATメッセージを送信して、デフォルトルート処理の停止状態に遷移し、当該停止状態においてデフォルトルートのルート識別子(RID)であって他のルートが全て確立済み以外の状態になったときHEARTBEATメッセージを送信して待機初期状態に遷移することを特徴とする。
さらに、上記無線ネットワークの制御方法において、上記制御ステップは、上記確立済み状態においてデフォルトルートのルート識別子(RID)であって他のルートのいずれかの状態確立済み状態になったとき削除済みデフォルト状態に遷移し、再送タイマーが計時終了し選択的肯定確認応答(SACK)メッセージを受信しかつ当該デフォルトルートを介して伝送中の送信データのデータサイズが0となったとき停止状態に遷移することを特徴とする。
またさらに、上記無線ネットワークの制御方法において、上記プロトコルはSCTP(Stream Control Transmission Protocol)であることを特徴とする。
第3の発明に係る無線ネットワークのプログラムは、上記無線ネットワークの制御方法における各ステップを含むことを特徴とする。
第4の発明に係るコンピュータで読み取り可能な記録媒体は、上記プログラムを格納したことを特徴とする。
従って、本発明に係る無線ネットワークのための制御装置及び制御方法によれば、トランスポート層の所定のプロトコルを用いて1つのデータの複数のパケットを送信元通信端末装置から宛先通信端末装置に伝送する無線ネットワークの制御装置及び制御方法であって、上記データの各パケットに対して、ルートを識別するルート識別子(RID)と、ルート毎のシーケンス番号であるルートシーケンス番号(RSN)とを付して、上記各パケットを複数のルートを介して伝送するように制御する。ここで、例えば、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、ルート識別子(RID)に基づいて、ルート毎のデータ転送時間(RTT)を計算するルート毎の再送タイマーを含み、再送時刻を管理し、また、宛先通信端末装置からの、同一の送信データに対する所定の複数回の選択的肯定確認応答(SACK)メッセージに応答して、上記各選択的肯定確認応答(SACK)メッセージに含まれるルート識別子(RID)及びルートシーケンス番号(RSN)に基づいて、再送マークを付与して高速再送信で当該送信データの再送処理を実行する。それ故、例えばアドホック無線ネットワークなどの無線ネットワークにおいて、1つのアソシエーションに属する複数のパケットを複数のルートを用いて、従来技術に比較して効率的に伝送することができ、データ転送全体のスループットを向上できる。
以下、本発明に係る実施形態について図面を参照して説明する。なお、同様の構成要素については同一の符号を付している。
本発明に係る実施形態では、アドホック無線ネットワーク技術により、近い将来に地域社会における多様なサービス(無料IP電話、地域掲示板、監視カメラ画像の共有等)が提供されることを想定し、アドホック無線ネットワークにおけるスケーラビリティ向上を目的としている。本実施形態ではアドホック無線ネットワークの品質改善のアプローチとして、アドホック無線ネットワークプロトコル上でデータ送信に複数のルートを同時に利用する方式を提案する。また、複数のルートを効率良く同時に利用するためには、アドホック無線ネットワークプロトコルに対する拡張だけでなく、トランスポート層プロトコルに対する拡張が必要となる。本来、アドホック無線ネットワークプロトコルはIP層及びリンク層で実装されパケットのルーティングを行うことがプロトコルの主目的である。複数のルートを同時に利用するためには、複数のルートの中からどのルートをデータ送信に利用するか(ルート選択)またルートをいつ利用するか(送信スケジュール)を動的に決定する必要がある。TCPの通信に置き換えると、ルート選択は送信元アドレスの選択に該当し、送信スケジュールは肯定確認応答(ACK)受信をトリガーにデータ転送を行うTCPの機能である。これらの処理はアドホック無線ネットワークプロトコルの役割外の機能であり、トランスポート層のプロトコルの機能である。そこで、本実施形態では、アドホック無線ネットワークの品質改善のアプローチとして、マルチルート環境でアドホック無線ネットワークを効率良く使用するために、トランスポート層のプロトコルであるSCTPを拡張する。
すなわち、本実施形態においては、アドホック無線ネットワークにおいて、トランスポート層の通信手順であるSCTPを拡張して、複数のルートを同時にデータ転送に利用することにより以下のことを達成することを目的としている。
(1)データ転送全体での遅延を減らす。
(2)データの転送レートを上げる。
(3)転送ルート中に障害が発生した場合、データ転送を止めることなく直ぐにデータ転送を続ける。
(1)データ転送全体での遅延を減らす。
(2)データの転送レートを上げる。
(3)転送ルート中に障害が発生した場合、データ転送を止めることなく直ぐにデータ転送を続ける。
さらに、利用する複数のルートが追加と削除を繰り返す場合(アドホック無線ネットワークのように不安定なルート状態の場合)以下のことを達成することを目的としている。
(4)ルートの切り替えが発生した場合に、無駄な再送を減らす。
(5)同一のルートID(RID)のルートが削除と追加を繰り返した場合、そのルートはすぐに利用せず、不安定なルートの利用を避ける。
(4)ルートの切り替えが発生した場合に、無駄な再送を減らす。
(5)同一のルートID(RID)のルートが削除と追加を繰り返した場合、そのルートはすぐに利用せず、不安定なルートの利用を避ける。
図1は、本発明の実施形態に係るアドホック無線ネットワークのためのエンドポイント装置50の構成を示すブロック図である。図1において、本実施形態に係るエンドポイント装置50は、アンテナ1を備えた無線送受信部2と、マルチルート−ダイナミック・ソース・ルーティング(Dynamic Source Routing)処理部(以下、MR−DSR処理部という。)10と、マルチルート−SCTP処理部(以下、MR−SCTP処理部という。)20と、上位層装置30とを備えて構成される。
無線送受信部2は、アドホック無線ネットワークでの無線通信を実行するために、MAC層の無線信号を処理するための無線送受信機であって、例えば、IEEE802.11やブルートゥース(Bluetooth)などに準拠して構成される。無線送受信部2は、アンテナ1を用いて無線信号を受信し、高周波増幅、中間周波変換、中間周波増幅、復調などの処理を実行することにより、所定のデータ信号に復調してMR−DSR処理部10に出力する。一方、MR−DSR処理部10から入力されるデータ信号は、変調、高域周波変換、高周波電力増幅などの処理を実行することにより、無線信号に変換してアンテナ1を用いて放射する。
また、MR−DSR処理部10は、アドホックルーティングプロトコル処理部12と、それを制御するコントローラ11とを備えて構成される。ここで、アドホックルーティングプロトコル処理部12は、受信バッファメモリ12aと、送信バッファメモリ12bとを内蔵する。MR−DSR処理部10は、IP層においてデータ信号をルーティングするための処理部であって、マルチルートで拡張された本実施形態に係るMR−SCTPを用いてアドホック無線通信するために、マルチルートで拡張されたダイナミック・ソース・ルーティング法(以下、DSR法という。)を用いてデータ信号のルーティングを行う。DSR法は、リアクティブ型の経路制御プロトコルであって、ユニットキャスト、マルチキャストをサポートし、送信元のエンドポイント装置から宛先のエンドポイント装置までの始点経路制御方式を採用している。すなわち、MR−SCTP処理部20から入力されるデータ信号を一時的に送信バッファメモリ12bに格納した後所定のルーティング情報を付加して無線送受信部2に出力するとともに、無線送受信部2から入力される他の宛先のデータ信号を一時的に受信バッファメモリ12aに格納した後転送のための所定のルーティング情報を付加して無線送受信部2に出力し、また、無線送受信部2から入力される自装置宛のデータ信号を受信バッファメモリ12aに格納した後MR−SCTP処理部20に出力する。
さらに、MR−SCTP処理部20は、当該処理部20全体の動作を制御するコントローラ21と、プロトコルインターフェース22と、バンドル/アンバンドル処理部23と、ルート毎輻輳制御部24と、アソシエーションフロー制御部25と、アソシエーションバッファ部26と、フラグメント/リアッセンブリ処理部27とを備えて構成される。MR−SCTP処理部20は、マルチルートで拡張された本実施形態に係るMR−SCTPを用いて、トランスポート層でのデータ信号を処理する。
ここで、プロトコルインターフェース22は、MR−DSR処理部10と、MR−SCTP処理部20との間のプロトコル変換及び信号変換などのインターフェース処理を実行し、また、MR−SCTP処理部20におけるルート情報を管理する。また、バンドル/アンバンドル処理部23は、入出力されるデータ信号についてチャンクのバンドル又はアンバンドルを実行する。さらに、ルート毎輻輳制御部24は、仮想的には生成されるルート毎に制御部が生成され、データ信号を転送するルート毎に詳細後述するように輻輳制御を行う。また、アソシエーションフロー制御部25は、MR−SCTPを用いてアソシエーションを伝送するときにアソシエーション全体のフローを制御する。さらに、MR−SCTPを用いてアソシエーションを伝送するときにアソシエーション全体をまとめて一時的に格納するために提供される。またさらに、フラグメント/リアッセンブリ処理部27は、上位層装置30から入力されるアプリケーションデータをフラグメントした後、アソシエーションバッファ部26に出力する一方、アソシエーションバッファ部26からのデータ信号をリアッセンブリしてアプリケーションデータに変換して上位層装置30に出力する。
以上のように構成されたMR−SCTP処理部20において、当該エンドポイント装置50で受信された無線信号のデータ信号は、MR−DSR処理部10からプロトコルインターフェース22を介してMR−SCTP処理部20に入り、バンドル/アンバンドル処理部23、ルート毎輻輳制御部24、アソシエーションフロー制御部25、アソシエーションバッファ部26、フラグメント/リアッセンブリ処理部27の順序で処理がなされて、上位層装置30に出力される。一方、当該エンドポイント装置50から送信されるデータ信号は、上位層装置30からフラグメント/リアッセンブリ処理部27に入り、アソシエーションバッファ部26、アソシエーションフロー制御部25、ルート毎輻輳制御部24、バンドル/アンバンドル処理部23の順序で処理がなされて、プロトコルインターフェース22を介してMR−DSR処理部10に出力される。なお、上位層装置30は、アプリケーション層などでの処理を行う装置である。
図1のMR−SCTP処理部20内のコントローラ21は例えばディジタル計算機又はコンピュータで構成され、コントローラ21によって実行される詳細後述する制御フロー又は制御方法の各ステップは無線ネットワークの制御プログラムで記述され、当該プログラムは、例えばコンピュータにより読み取り可能なCD−ROM、CD−R、CD−RW、DVD−ROM、DVD−RAM、DVD±R、DVD±RWなどの光ディスク等の記録媒体に格納されてもよい。当該記録媒体に格納された無線ネットワークの制御プログラムはコンピュータにより読み取り可能な光ディスクドライブに挿入して読み出して、コントローラ21にロードした上で当該制御プログラムが実行される。
上述した問題点A,B,C,Dを解決するために、MR−SCTP処理部20ではルートの状態を表す変数である通信制御データを新規に導入する。これらの通信制御データは、複数の処理において共通して取り扱われる場合が多いため、まず、新規又は拡張を行った主な通信制御データについて述べる。そしてそれらの通信制御データが上記の問題解決に対してどのように使われるのかについて述べる。
上述のこれらの問題の原因について考えると、複数のルートを同時に利用するデータ転送処理では、関連データを分析するとルート毎に保持し更新すべき制御データと、アソシエーション全体で保持し更新すべきデータに分類できる。しかし、従来技術のSCTPの例では、それらの考慮を行わずに全ての値をアソシエーション全体で制御しており、そのために不正確な情報に基づく転送制御が行われている。また、問題点Dに示すように、データ管理対象をルートとアソシエーションに分けた場合でも、ルートの状態管理と、転送処理を適切に分割していないと、同じく転送効率の悪化の原因となる。これを解決するために、以下の表に示す主な通信制御データを用いる。
図2は図1の通信制御データメモリ21aに格納される詳細データを示すブロック図である。図2において、拡張されたSCTPにおいて用いるSCTPインスタンスデータ90は、アソシエーションリストと、秘密キーと、アドレスリストと、SCTPポートと、アソシエーション毎データ91とを含む。ここで、アソシエーション毎データ91は、ピア照合タグなどの後述するデータと、宛先アドレスリスト92と、ピア宛先リスト93と、ストリームリスト94とを含む。上記宛先アドレスリスト92は、エラー計数値などの後述するデータと、ルートリスト95とを含み、上記ピア宛先リスト93は送信元アドレスと、ピアルートリスト96とを含む。また、上記ストリームリスト94は、ストリームと、アンオーダー情報とを含む。さらに、上記ルートリスト95は、状態などの後述するデータと、ピアルートリスト96と、ルートID(RID)と、マッピングアレイ(RSN)とを含む。
さらに、これらの通信制御データについて以下に説明する。
(1)SCTPインスタンスデータ90:
>アソシエーションリスト:MR−SCTP処理部20のコントローラ21に生成されたアソシエーションのリストである。
>秘密キー:MAC層で使用するキーコードである。
>アドレスリスト:MR−SCTP処理部20が使用するIPアドレスのリストである。
>SCTPポート:MR−SCTP処理部20が使用するポート番号である。
>アソシエーションリスト:MR−SCTP処理部20のコントローラ21に生成されたアソシエーションのリストである。
>秘密キー:MAC層で使用するキーコードである。
>アドレスリスト:MR−SCTP処理部20が使用するIPアドレスのリストである。
>SCTPポート:MR−SCTP処理部20が使用するポート番号である。
(2)アソシエーション毎データ91:
>ピア照合タグ:パケットを送信するときにつけられるアソシエーションの識別子であり、INITチャンク又はINIT−ACKチャンクから受け取る。
>マイ照合タグ:全ての受信パケットに要求するアソシエーションの識別子であり、INITチャンク又はINIT−ACKチャンクで送信する。
>状態:アソシエーションがどのような状態にあるかを示す値であり、一例として以下の値を含む。
(a)閉鎖(CLOSED)。
(b)クッキー待機(COOKIE_WAIT)。
(c)クッキーエコー済み(COOKIE_ECHOED)。
(d)確立済み(ESTABLISHED)。
(e)シャットダウン送信済み(SHUTDOWN_SENT)。
(f)シャットダウン受信済み(SHUTDOWN_RECEIVED)。
(g)シャットダウン肯定確認応答送信済み(SHUTDOWN_ACK_SENT)。
(h)シャットダウン係属中(SHUTDOWN_PENDING)。
>宛先アドレスリスト92:SCTPのエンドポイント装置50が持つ宛先アドレスの一覧である。
>プライマリパス:主として使用する宛先アドレスである。
>オーバーオールエラー計数値:アソシエーションで発生したエラーを計数した計数値である。
>オーバーオールエラーしきい値:アソシエーションをシャットダウンさせるために使われるエラーカウントのしきい値である。
>ピアRWND:MR−SACKチャンクに含まれる空きバッファ容量ARWNDに基づいて計算された、相手側(受信側)のエンドポイント装置50の空きバッファ容量(RWND)の値である。
>次のASN:次に送信するMR−DATAチャンクのASN(アソシエーションシーケンス番号)の値である。
>最後に受信したASN:最後に受信したチャンクのASNの値であり、INITチャンク又はINIT−ACKチャンクに書かれた初期ASNの値で初期化される。
>マッピングアレイ:ASNの順番とは違った順番で受信したMR−DATAチャンクを示すビット、もしくはバイトの配列であり、全てのチャンクがRSNの順に届いているときは、全て0となる。
>肯定確認応答状態:次にDATAチャンクを受信したとき、SACKチャンクで応答するかどうかを示す値であり、この値が2以上になるとSACKチャンクを送信して、0にリセットする。
>インバウンドストリーム:受信したストリームを検知するための構造体の配列であり、通常は次のシーケンス番号が入る。
>アウトバンドストリーム:送信したストリームを検知するための構造体の配列。通常は次のシーケンス番号が入る。
>リアッセンブリキュー:データチャンクを作成するときに断片化されたデータを再構成するためのキューである。
>ローカルトランスポートアドレスリスト:自己のアソシエーションへ送信するときのIPアドレスのリストである。
>アソシエーションPMTU:全ての相手側宛先アドレスから知らされるパスMTUの最小値である。
>マルチルートサポートフラグ:自己のアソシエーションがマルチルート送信をサポートするかどうかを示すフラグである。
>ピア照合タグ:パケットを送信するときにつけられるアソシエーションの識別子であり、INITチャンク又はINIT−ACKチャンクから受け取る。
>マイ照合タグ:全ての受信パケットに要求するアソシエーションの識別子であり、INITチャンク又はINIT−ACKチャンクで送信する。
>状態:アソシエーションがどのような状態にあるかを示す値であり、一例として以下の値を含む。
(a)閉鎖(CLOSED)。
(b)クッキー待機(COOKIE_WAIT)。
(c)クッキーエコー済み(COOKIE_ECHOED)。
(d)確立済み(ESTABLISHED)。
(e)シャットダウン送信済み(SHUTDOWN_SENT)。
(f)シャットダウン受信済み(SHUTDOWN_RECEIVED)。
(g)シャットダウン肯定確認応答送信済み(SHUTDOWN_ACK_SENT)。
(h)シャットダウン係属中(SHUTDOWN_PENDING)。
>宛先アドレスリスト92:SCTPのエンドポイント装置50が持つ宛先アドレスの一覧である。
>プライマリパス:主として使用する宛先アドレスである。
>オーバーオールエラー計数値:アソシエーションで発生したエラーを計数した計数値である。
>オーバーオールエラーしきい値:アソシエーションをシャットダウンさせるために使われるエラーカウントのしきい値である。
>ピアRWND:MR−SACKチャンクに含まれる空きバッファ容量ARWNDに基づいて計算された、相手側(受信側)のエンドポイント装置50の空きバッファ容量(RWND)の値である。
>次のASN:次に送信するMR−DATAチャンクのASN(アソシエーションシーケンス番号)の値である。
>最後に受信したASN:最後に受信したチャンクのASNの値であり、INITチャンク又はINIT−ACKチャンクに書かれた初期ASNの値で初期化される。
>マッピングアレイ:ASNの順番とは違った順番で受信したMR−DATAチャンクを示すビット、もしくはバイトの配列であり、全てのチャンクがRSNの順に届いているときは、全て0となる。
>肯定確認応答状態:次にDATAチャンクを受信したとき、SACKチャンクで応答するかどうかを示す値であり、この値が2以上になるとSACKチャンクを送信して、0にリセットする。
>インバウンドストリーム:受信したストリームを検知するための構造体の配列であり、通常は次のシーケンス番号が入る。
>アウトバンドストリーム:送信したストリームを検知するための構造体の配列。通常は次のシーケンス番号が入る。
>リアッセンブリキュー:データチャンクを作成するときに断片化されたデータを再構成するためのキューである。
>ローカルトランスポートアドレスリスト:自己のアソシエーションへ送信するときのIPアドレスのリストである。
>アソシエーションPMTU:全ての相手側宛先アドレスから知らされるパスMTUの最小値である。
>マルチルートサポートフラグ:自己のアソシエーションがマルチルート送信をサポートするかどうかを示すフラグである。
(3)ピア宛先リスト92:相手側のエンドポイント装置50がもつ宛先アドレスのリストである。:
>送信元アドレス:相手側のエンドポイント装置50の宛先アドレスである。
>ピアルートリスト:相手側のエンドポイント装置50が持つルートのリストである。
>送信元アドレス:相手側のエンドポイント装置50の宛先アドレスである。
>ピアルートリスト:相手側のエンドポイント装置50が持つルートのリストである。
(4)ピアルートリスト96:
>ルートID(RID):ルートの識別番号である。
>マッピングアレイ:RSNの順番とは違った順番で受信したMR−DATAチャンクを示すビット、もしくはバイトの配列。全てのチャンクがRSNの順に届いているときは、全て0となる。
>ルートID(RID):ルートの識別番号である。
>マッピングアレイ:RSNの順番とは違った順番で受信したMR−DATAチャンクを示すビット、もしくはバイトの配列。全てのチャンクがRSNの順に届いているときは、全て0となる。
(5)宛先アドレスリスト92:
>エラー計数値:宛先アドレスで発生したエラーの回数を計数するカウンタの計数値である。
>エラーしきい値:宛先アドレスを無効にするために使われるエラー回数のしきい値である。
>CWND:輻輳ウィンドウの大きさを示し、マルチルートでデータを送信するときは使用されない。
>Ssthresh:輻輳制御処理においてスロースタートモードと輻輳回避モードを切り替えるためのしきい値であり、マルチルートでデータを送信するときは使用されない。
>RTO:DATAチャンクを送信してから再送が発生するまでのタイムアウト時間を示す値であり、マルチルートでデータを送信するときは使用されない。
>SRTT:チャンクを送信してから、応答チャンクが返ってくるまでのタイムアウト時間(RTT)の平均値(推定値)であり、マルチルートでデータを送信するときは使用されない。
>RTT_VAR:チャンクを送信してから、応答チャンクが返ってくるまでのタイムアウト時間(RTT)の変動値であり、マルチルートでデータを送信するときは使用されない。
>Partial_Bytes_Acked(肯定確認応答されたデータ部分のバイト数):輻輳制御処理における輻輳回避モードにおいて、CWNDを増加させるときのしきい値であり、マルチルートでデータを送信するときは使用されない。
>状態:宛先の状態を示す値であり、以下の値を有する。
(a)インアクティブ(非動作状態)。
(b)アクティブ(動作状態)。
>PMTU:宛先アドレスまでのパスMTUである。
>宛先毎タイマー:宛先アドレス毎に用いられるタイマーであり、一部のタイマーはマルチルートでデータを送信するときは使われない
>RTO係属中フラグ:過去にSACKチャンクからRTTを計算したことがあるか否かを示すフラグであり、マルチルートでデータを送信するときは使用されない。
>使用最終時刻:宛先が最後に使用された時刻であり、HEARTBEATの送信のために使われる。
>ルートリスト95:宛先アドレスまでパケットを送信することができるルート構造体の配列である。
>エラー計数値:宛先アドレスで発生したエラーの回数を計数するカウンタの計数値である。
>エラーしきい値:宛先アドレスを無効にするために使われるエラー回数のしきい値である。
>CWND:輻輳ウィンドウの大きさを示し、マルチルートでデータを送信するときは使用されない。
>Ssthresh:輻輳制御処理においてスロースタートモードと輻輳回避モードを切り替えるためのしきい値であり、マルチルートでデータを送信するときは使用されない。
>RTO:DATAチャンクを送信してから再送が発生するまでのタイムアウト時間を示す値であり、マルチルートでデータを送信するときは使用されない。
>SRTT:チャンクを送信してから、応答チャンクが返ってくるまでのタイムアウト時間(RTT)の平均値(推定値)であり、マルチルートでデータを送信するときは使用されない。
>RTT_VAR:チャンクを送信してから、応答チャンクが返ってくるまでのタイムアウト時間(RTT)の変動値であり、マルチルートでデータを送信するときは使用されない。
>Partial_Bytes_Acked(肯定確認応答されたデータ部分のバイト数):輻輳制御処理における輻輳回避モードにおいて、CWNDを増加させるときのしきい値であり、マルチルートでデータを送信するときは使用されない。
>状態:宛先の状態を示す値であり、以下の値を有する。
(a)インアクティブ(非動作状態)。
(b)アクティブ(動作状態)。
>PMTU:宛先アドレスまでのパスMTUである。
>宛先毎タイマー:宛先アドレス毎に用いられるタイマーであり、一部のタイマーはマルチルートでデータを送信するときは使われない
>RTO係属中フラグ:過去にSACKチャンクからRTTを計算したことがあるか否かを示すフラグであり、マルチルートでデータを送信するときは使用されない。
>使用最終時刻:宛先が最後に使用された時刻であり、HEARTBEATの送信のために使われる。
>ルートリスト95:宛先アドレスまでパケットを送信することができるルート構造体の配列である。
(6)ルートリスト95:
>状態:ルートの状態を示す値であり、一例として以下の値を有する。
(a)停止(CLOSED)状態。
(b)待機初期(WAIT_INIT)状態。
(c)確立済み(CHECKED)状態。
(d)削除済み(DELETED)状態。
(e)待機削除(WAIT_CLEAR_INIT)状態。
>ルートID(RID):ルートの識別番号であり、アドホックルーティングプロトコル処理部12から通知される。
>次のRSN:次にMR−DATAチャンクを送信するときにつけられるRSN(ルートシーケンス番号)の値である。
>送信元アドレス:ルート情報を使用してチャンクを送信するときの送信元アドレスである。
>最後に受信したSACKのタイムスタンプ:最後に受信したMR−SACKチャンクのタイムスタンプであり、MR−SACKチャンクの順序が不順(乱れ)となったことを検出するために使われる。
>CWND:輻輳ウィンドウの大きさを示す値である。
>Ssthresh:輻輳制御処理においてスロースタートモードと輻輳回避モードを切り替えるためのしきい値である。
>RTO:DATAチャンクを送信してから再送が発生するまでの時間を示すタイムアウト時間である。
>SRTT:チャンクを送信してから、応答チャンクが返ってくるまでのデータ転送時間(RTT)の平均値(推定値)である。
>RTT_VAR::チャンクを送信してから、応答チャンクが返ってくるまでのデータ転送時間(RTT)の変動値である。
>Partial_Bytes_Acked:輻輳制御処理の輻輳回避モードドにおいて、CWNDを増加させるための値である。
>RTO係属中フラグ:過去にSACKチャンクからRTTを計算したかどうかを示すフラグである。
>ルート毎タイマー:ルート毎に用いられるタイマーである。
>状態:ルートの状態を示す値であり、一例として以下の値を有する。
(a)停止(CLOSED)状態。
(b)待機初期(WAIT_INIT)状態。
(c)確立済み(CHECKED)状態。
(d)削除済み(DELETED)状態。
(e)待機削除(WAIT_CLEAR_INIT)状態。
>ルートID(RID):ルートの識別番号であり、アドホックルーティングプロトコル処理部12から通知される。
>次のRSN:次にMR−DATAチャンクを送信するときにつけられるRSN(ルートシーケンス番号)の値である。
>送信元アドレス:ルート情報を使用してチャンクを送信するときの送信元アドレスである。
>最後に受信したSACKのタイムスタンプ:最後に受信したMR−SACKチャンクのタイムスタンプであり、MR−SACKチャンクの順序が不順(乱れ)となったことを検出するために使われる。
>CWND:輻輳ウィンドウの大きさを示す値である。
>Ssthresh:輻輳制御処理においてスロースタートモードと輻輳回避モードを切り替えるためのしきい値である。
>RTO:DATAチャンクを送信してから再送が発生するまでの時間を示すタイムアウト時間である。
>SRTT:チャンクを送信してから、応答チャンクが返ってくるまでのデータ転送時間(RTT)の平均値(推定値)である。
>RTT_VAR::チャンクを送信してから、応答チャンクが返ってくるまでのデータ転送時間(RTT)の変動値である。
>Partial_Bytes_Acked:輻輳制御処理の輻輳回避モードドにおいて、CWNDを増加させるための値である。
>RTO係属中フラグ:過去にSACKチャンクからRTTを計算したかどうかを示すフラグである。
>ルート毎タイマー:ルート毎に用いられるタイマーである。
次いで、本実施形態に係る拡張されたSCTPパケットを用いて伝送するチャンクのフォーマットについて以下に説明する。
チャンクのフォーマットについては、非特許文献1のRFC2960の3.2章に従うが、チェックタイプに関して以下の定義を追加する。
[表1]
――――――――――――――――――――――――――――――――――――――
ID値 チャンクタイプ
――――――――――――――――――――――――――――――――――――――
15 マルチルートペイロードデータ(MR−DATA)
16 マルチルート選択的肯定確認応答(MR−SACK)
――――――――――――――――――――――――――――――――――――――
――――――――――――――――――――――――――――――――――――――
ID値 チャンクタイプ
――――――――――――――――――――――――――――――――――――――
15 マルチルートペイロードデータ(MR−DATA)
16 マルチルート選択的肯定確認応答(MR−SACK)
――――――――――――――――――――――――――――――――――――――
次いで、INITチャンクにおいて、変数パラメータについて以下の値を追加する。INITチャンクではマルチアドレスを含むことができるが、MR−SCTPを利用する場合は、アドホックアドレスパラメータにアドホックネットワークで利用する自局IPアドレスを指定する必要がある。なぜなら、マルチホーム環境においてホームの違いはIPアドレスという統一されたフォーマットで隠蔽され、異なるIDを利用していること以外は区別できないためである。なお、0xは16進数表示を示し、以下同様である。
[表2]
――――――――――――――――――――――――――――――――――――――
変数パラメータ 状態 タイプ値
――――――――――――――――――――――――――――――――――――――
アドホックアドレス オプション 0x0013
マルチルートSCTPサポート オプション 0x0014
――――――――――――――――――――――――――――――――――――――
――――――――――――――――――――――――――――――――――――――
変数パラメータ 状態 タイプ値
――――――――――――――――――――――――――――――――――――――
アドホックアドレス オプション 0x0013
マルチルートSCTPサポート オプション 0x0014
――――――――――――――――――――――――――――――――――――――
また、INIT_ACKチェックのフォーマットは、非特許文献1のRFC2960の3.3.3章に従うが、変数パラメータについて以下の値を追加する。
[表3]
――――――――――――――――――――――――――――――――――――――
変数パラメータ 状態 タイプ値
――――――――――――――――――――――――――――――――――――――
アドホックアドレス オプション 0x0013
マルチルートSCTPサポート オプション 0x0014
――――――――――――――――――――――――――――――――――――――
――――――――――――――――――――――――――――――――――――――
変数パラメータ 状態 タイプ値
――――――――――――――――――――――――――――――――――――――
アドホックアドレス オプション 0x0013
マルチルートSCTPサポート オプション 0x0014
――――――――――――――――――――――――――――――――――――――
なお、アソシエーションの初期化時にINIT−ACKの送信側のエンドポイント装置50はMR−SCTPがサポート可能なことを知らせるために上記のオプションフィールドを設定する必要がある。そのフォーマットを以下で定義する。
(a)パラメータタイプ(16ビット)
=0xC002(マルチルートがサポートされたパラメータであることを示す)
(b)パラメータ長=4
(a)パラメータタイプ(16ビット)
=0xC002(マルチルートがサポートされたパラメータであることを示す)
(b)パラメータ長=4
また、HEARTBEATチャンクのフォーマットは、非特許文献1のRFC2960の3.3.5章に従うが、さらに変数パラメータについて以下の値を追加する。RFC2960では、HEARTBEATチャンクを特定の転送アドレスに対する信頼性の確認に利用する。MR−SCTPでは、RFC2960の定義に加えて、アドホック無線ネットワークク上の特定ルートに対するパケットの信頼性の確認にHEARTBEATチャンクを利用する。
[表4]
――――――――――――――――――――――――――――――――――――――
パラメータ名称 状態 タイプ値
――――――――――――――――――――――――――――――――――――――
初期RSN オプション 0x0011
――――――――――――――――――――――――――――――――――――――
――――――――――――――――――――――――――――――――――――――
パラメータ名称 状態 タイプ値
――――――――――――――――――――――――――――――――――――――
初期RSN オプション 0x0011
――――――――――――――――――――――――――――――――――――――
上記初期RSNのフォーマットは以下のように定義される。
(a)パラメータタイプ(16ビット)=0x0010;
(b)パラメータ長(16ビット)=8;
(c)ルートID(RID)(10ビット);
(d)I−RSN(22ビット):初期ルートシーケンス番号。
(a)パラメータタイプ(16ビット)=0x0010;
(b)パラメータ長(16ビット)=8;
(c)ルートID(RID)(10ビット);
(d)I−RSN(22ビット):初期ルートシーケンス番号。
さらに、HEARTBEAT_ACKチャンクのフォーマットについても、HEARTBEATチャンクと同様のフォーマットを使用する。
また、MR−SCTPではアソシエーションにおいてデータを送信するためには以下で定義するMR−DATAチャンクを利用して送信する必要がある。
(a)タイプ(8ビット)=10;
(b)予約済み(5ビット)=すべて0(受信側において無視される);
(c)Uビット(不指示ビット):不指示されたデータチャンクを示し、このデータチャンクにはストリームシーケンス番号を付与されない。このとき、受信側は対応するストリームシーケンス番号を無視する。
(d)Bビット(開始フラグメントビット):ユーザメッセージの最初のフラグメントであることを示す。
(e)Eビット(終了フラグメントビット):ユーザメッセージの最後のフラグメントであることを示す。
(f)長さ(16ビット):データチャンクのバイト数を示す。
(g)ASN(32ビット):当該アソシエーションにおけるデータチャンクに対するシーケンス番号を示す。
(h)RID(10ビット):データチャンクが送信されてるパスを示すルートIDである。
(i)RSN(22ビット):パスでのデータチャンクのシーケンス番号である。
(j)ストリーム識別子S(16ビット):次に続くユーザデータが属するストリームを識別する。
(k)ストリームシーケンス番号n(16ビット):ストリームS内の次に続くユーザデータのストリームシーケンス番号を示す。
(l)ペイロードプロトコル識別子(32ビット):アプリケーションにより特定されるプロトコル識別子を示す。
(m)ユーザデータ(ストリームSのシーケンスn;可変長):ペイロードのユーザデータが格納される。
(a)タイプ(8ビット)=10;
(b)予約済み(5ビット)=すべて0(受信側において無視される);
(c)Uビット(不指示ビット):不指示されたデータチャンクを示し、このデータチャンクにはストリームシーケンス番号を付与されない。このとき、受信側は対応するストリームシーケンス番号を無視する。
(d)Bビット(開始フラグメントビット):ユーザメッセージの最初のフラグメントであることを示す。
(e)Eビット(終了フラグメントビット):ユーザメッセージの最後のフラグメントであることを示す。
(f)長さ(16ビット):データチャンクのバイト数を示す。
(g)ASN(32ビット):当該アソシエーションにおけるデータチャンクに対するシーケンス番号を示す。
(h)RID(10ビット):データチャンクが送信されてるパスを示すルートIDである。
(i)RSN(22ビット):パスでのデータチャンクのシーケンス番号である。
(j)ストリーム識別子S(16ビット):次に続くユーザデータが属するストリームを識別する。
(k)ストリームシーケンス番号n(16ビット):ストリームS内の次に続くユーザデータのストリームシーケンス番号を示す。
(l)ペイロードプロトコル識別子(32ビット):アプリケーションにより特定されるプロトコル識別子を示す。
(m)ユーザデータ(ストリームSのシーケンスn;可変長):ペイロードのユーザデータが格納される。
さらに、MR−SCTP処理部20では、データチャンクの受信確認(肯定確認応答)のために、データチャンクの受信側のエンドポイント装置50はデータチャンクの送信側のエンドポイント装置50に対して、受信したチャンクの情報をルート毎にMR−SACKを送信する必要がある。また、現在のアソシエーションバッファ情報も同時に設定しなければならない。チャンクの情報には、処理対象データチャンクが送信ルートされたときに利用されたルートID(MR−DATAチャンクで設定されているRID)と、そのルートに関して連続で受信した最大のシーケンス番号(累積的RSN)、不連続で受信したデータが存在すればそのチャンクに関する情報もMR−SACKに含める。このMR−SACKのフォーマットは以下の通りである。
(a)タイプ(8ビット)=13。
(b)予約済み(8ビット):送信側ではすべて0にセットされ、受信側ではこれを無視する。
(c)チャンク長(16ビット):チャンクの長さ(バイト数)。
(d)累積的ASN_ACK(32ビット):ギャップ前のシーケンスにおいて受信された最後のデータチャンクのASNを示す。
(e)通知される受信側のウィンドウクレジットである空きバッファ容量(ARWND)(32ビット):このMR−SACKの送信側における更新された受信バッファの空きバイト数を示す。
(f)タイムスタンプ(32ビット):このMR−SACKが受信側で発生されたときの時刻を示す。
(g)ルートID(RID)(10ビット):データチャンクが送信されているパスを識別する。
(h)累積的RSN_ACK(22ビット):このMR−SACKが肯定確認応答されているパス上において、ギャップ前のシーケンスにおいて受信された最後のデータチャンクのRSNを示す。
(i)ギャップ肯定確認応答ブロック(GAP_ACK_BLOCKS)の数(16ビット)=N:このMR−SACKにおいて含まれるギャップ肯定確認応答ブロックの数を示す。
(j)重複のRSNの数(16ビット)=X:エンドポイント装置50がある与えられたパス上で受信された重複のRSNの数を示す。
(k)ギャップ肯定確認応答ブロック#1の開始位置(16ビット)。
(l)ギャップ肯定確認応答ブロック#1の終了位置(16ビット)。
…………
(m)ギャップ肯定確認応答ブロック#Nの開始位置(16ビット)。
(n)ギャップ肯定確認応答ブロック#Nの終了位置(16ビット)。
(o)重複のRSN_1(32ビット)。
…………
(p)重複のRSN_N(32ビット)。
(b)予約済み(8ビット):送信側ではすべて0にセットされ、受信側ではこれを無視する。
(c)チャンク長(16ビット):チャンクの長さ(バイト数)。
(d)累積的ASN_ACK(32ビット):ギャップ前のシーケンスにおいて受信された最後のデータチャンクのASNを示す。
(e)通知される受信側のウィンドウクレジットである空きバッファ容量(ARWND)(32ビット):このMR−SACKの送信側における更新された受信バッファの空きバイト数を示す。
(f)タイムスタンプ(32ビット):このMR−SACKが受信側で発生されたときの時刻を示す。
(g)ルートID(RID)(10ビット):データチャンクが送信されているパスを識別する。
(h)累積的RSN_ACK(22ビット):このMR−SACKが肯定確認応答されているパス上において、ギャップ前のシーケンスにおいて受信された最後のデータチャンクのRSNを示す。
(i)ギャップ肯定確認応答ブロック(GAP_ACK_BLOCKS)の数(16ビット)=N:このMR−SACKにおいて含まれるギャップ肯定確認応答ブロックの数を示す。
(j)重複のRSNの数(16ビット)=X:エンドポイント装置50がある与えられたパス上で受信された重複のRSNの数を示す。
(k)ギャップ肯定確認応答ブロック#1の開始位置(16ビット)。
(l)ギャップ肯定確認応答ブロック#1の終了位置(16ビット)。
…………
(m)ギャップ肯定確認応答ブロック#Nの開始位置(16ビット)。
(n)ギャップ肯定確認応答ブロック#Nの終了位置(16ビット)。
(o)重複のRSN_1(32ビット)。
…………
(p)重複のRSN_N(32ビット)。
次いで、本発明の実施形態に係る上記問題点を解決するための具体的方法について以下に説明する。
まず、パケットロス検出方法について説明する。上述したように、単純に複数のルートを同時に利用する場合、問題点Aが発生する。特に、データ通信においてパケットロスの検出は、フロー制御、輻輳制御、再送制御の全ての制御に関係するイベントであり、より正確に行われなければならない。本実施形態に係るMR−SCTPでは、問題点Aを解決するため、パケットロスを検出するために、RTT及びシーケンス番号をルート毎に管理するように拡張を行った。以下で詳細を述べる。
(1)SCTPにおけるデータフォーマットを拡張したこと(以下、チャンク拡張という。)である。チャンク拡張では、従来技術に係るSCTPにおけるデータフォーマットの定義にルートID(RID)と、ルートシーケンス番号(RSN)を追加した。RIDは転送ルート毎の固有のIDであり、ルート識別のために利用する。RSNは転送ルートにおけるパケットを一意に識別するために利用する。
(2)再送タイマーをルート毎に設置したことである。SCTPにおけるデータフォーマットにおいて、RID及びRSNを追加したことで、送信側では、図3に示すように、送信パケットに対するSACKを受信した時点で、ルート毎のデータ転送時間(RTT)を検出することができる。図3は、図1のエンドポイント装置50A,50B間のパケット通信におけるT3−RTXタイマーの計時終了による再送の発生を示すシーケンス図である。なお、図3及びそれ以降のシーケンス図において、エンドポイント装置50Aは送信側にあり、エンドポイント装置50Bは受信側にあるものとする。図3において、送信側のエンドポイント装置50Aが複数回のMR−DATAチャンクを送信するときに、MR−DATAチャンクを送信してからRTOの時間内にMR−SACKチャンクが返ってこなかったらルートから送信した全てのチャンクに再送マークをつけて再送する。これを、上述した式(4)乃至式(7)に適用することで、ルート毎の再送タイマーを設置することができる。
(3)SCTPにおける高速再送信(Fast Retransmission)をルート毎に適用したことである。高速再送信は到着シーケンス番号に基づく処理なので、RID及びRSNを利用してルート毎の処理に適用する。図4乃至図6に示すように、データ受信側は肯定確認応答を行うときに、受信したデータについて、RID、累積的RSN、RSNに基づいて、ギャップ肯定確認応答(Gap_Ack_Block)を返却する。これらの仕組みにより上述したパケットロス検出の問題点Aを解決することができる。
図4は、図1のエンドポイント装置50A,50B間のパケット通信における高速再送信の発生を示すシーケンス図である。図4において、送信側のエンドポイント装置50Aは、MR−DATAチャンクを順次送信するが、これに対して、受信側のエンドポイント装置50BはMR−SACKチャンクを返信する。ここで、同一のチャンクに対してMR−SACKチャンクのギャップ肯定確認応答ブロック(Gap_Ack_Block)によって4回「届いていない」とされたとき、再送マークをつけて再送する。
図5及び図6は、図1のMR−SCTP処理部20によって実行されるMR−SACKチャンクのギャップ肯定確認応答ブロック(Gap_Ack_Block)による再送チャンクの設定処理を示すフローチャートである。
図5のステップS1において、MR−SACKチャンクを受信したか否かを判断し、YESとなるまでステップS1の処理を繰り返し、YESとなったとき、ステップS2においてMR−SACKチャンクは順序が不順となったチャンクであるか否かを判断し、YESのときは当該処理を終了する一方、NOのときはステップS3に進む。ステップS3においてMR−SACKチャンクの送信元アドレスと合致する宛先アドレスを検索し、ステップS4において検索した宛先アドレスから、さらにMR−SACKチャンクに書かれたルートID(RID)と一致するIDを持ったルートを検索する。次いで、ステップS5において処理対象のチャンクを再送バッファの先頭にあるチャンクに設定し、ステップS6において再送バッファ内の全てのチャンクを巡回して検索したか否かを判断する。ステップS6において、YESのときは図6のステップS21に進む一方、NOのときはステップS7に進む。
図5のステップS7からステップS15までの処理は、再送バッファ内のGapAckで肯定確認応答されたチャンクのギャップ肯定確認応答済みフラグを1にする処理である。ステップS7において、処理対象のチャンクを送信した宛先アドレスとルートID(RID)はそれぞれMR−SACKチャンクに対応する宛先アドレス及びルートID(RID)と一致するか否かを判断し、YESのときはステップS8に進む一方、NOのときはステップS15に進む。ステップS8において処理対象のチャンクはMR−SACKチャンク内のギャップ肯定確認応答ブロック(Gap_Ack_Block)に記されたRSNのチャンクであるか否かを判断し、YESのときはステップS9に進む一方、NOのときはステップS13に進む。ステップS9において処理対象のチャンクは既に肯定確認応答されたチャンクか否かを判断し、YESのときはステップS15に進む一方、NOのときはステップS10に進む。ステップS10においてチャンクのギャップ肯定確認応答済みフラグを1にセットし、ステップS11においてチャンクの再送マークをはずし、ステップS12においてルートの再送タイマーが動作中であれば停止した後、ステップS15に進む。一方、ステップS13では、処理対象のチャンクは既に肯定確認応答されたチャンクか否かを判断し、YESのときはステップS14に進む一方、NOのときはステップS15に進む。ステップS14においてチャンクのギャップ肯定確認応答済みフラグを0にリセットし、肯定確認応答ずみでない状態にセットし、ステップS15に進む。ステップS15では、処理対象のチャンクを再送バッファ内で1つ次のチャンクに移動させた後、ステップS6に戻る。
図6のステップS21では、処理対象のチャンクを再送バッファの先頭にあるチャンクに設定し、ステップS22において再送バッファ内の全てのチャンクを巡回して検索したか否かを判断し、YESのときは当該処理を終了する一方、NOのときはステップS23に進む。ステップS23において処理対象のチャンクはR−SACKチャンクでGapNackで否定応答(受信したチャンクの隙間)となっているチャンクであるか否かを判断し、YESのときはステップS24に進む一方、NOのときはステップS28に進む。ステップS24において処理対象のチャンクのエラーカウンタに1を加算し、ステップS25において処理対象のチャンクのエラーカウンタの計数値>高速再送信の制限値であるか否かを判断し、YESのときはステップS26に進む一方、NOのときはステップS28に進む。ステップS26において処理対象のチャンクに再送のマークを付し、ステップS27において高速再送信のフラグを1にセットし、ステップS28において処理対象のチャンクを1つ次に移動させた後、ステップS22に戻る。
以上説明したように、パケットロスを検出するために、RTT及びシーケンス番号をルート毎に管理するように拡張を行うことにより、無駄なデータの再送を防止することができる。
次いで、本実施形態に係る輻輳制御処理について以下に説明する。
上述した問題点Bに対して、ルート毎で輻輳制御処理を行うように拡張を行うことにより当該問題点を解決する。上述した拡張により、パケットロスの検出はルート毎に行うことができる。図7及び図8に示すように、データの送信側は併せて輻輳ウィンドウ値(CWND)をルート毎に用意し、輻輳回避アルゴリズムにルート毎のCWNDを適用する。これにより、MR−SCTP処理部20では輻輳回避のアルゴリズムがルート毎に適用可能になる。
図7は、図1のエンドポイント装置50A,50B間のパケット通信における輻輳ウィンドウ値(CWND)を再計算するタイミングを示すシーケンス図である。図7において、送信側のエンドポイント装置50Aは、MR−DATAチャンクを順次送信するが、これに対して、受信側のエンドポイント装置50BはMR−SACKチャンクを返信する。ここで、MR−SACKチャンクによって新規に肯定確認応答されたMR−DATAチャンクがあればCWNDを再計算して更新する。
図8は図1のMR−SCTP処理部20によって実行される輻輳ウィンドウ値(CWND)の更新処理を示すフローチャートである。
図8において、まず、ステップS31においてMR−SACKチャンクを受信したか否かを判断し、YESとなるまでステップS31の処理を繰り返し、YESとなったときステップS32に進む。ステップS32においてMR−SACKチャンクにより新規に肯定確認応答されたチャンクがあるか否かを判断し、YESのときはステップS33に進む一方、NOのときは当該処理を終了する。ステップS33において輻輳制御のモードはスロースタートモードであってしきい値(Ssthresh)≦輻輳ウィンドウ値(CWND)であるか、もしくは、輻輳回避モードであってしきい値(Ssthresh)>輻輳ウィンドウ値(CWND)であるかを判断し、スロースタートモードであるときはステップS34に進む一方、輻輳回避モードであるときはステップS36に進む。
ステップS34において処理対象ルートで転送中データサイズ(OutstandingBytes)≧輻輳ウィンドウ値(CWND)であるか否かを判断し、YESのときは当該処理を終了する一方、NOのときはステップS35に進む。ステップS35においてMR−SACKチャンクにより肯定確認応答されたチャンクのサイズとMTUのうち小さい方を輻輳ウィンドウ値(CWND)に加算することにより当該CWNDを更新して広げ、当該処理を終了する。一方、ステップS36において処理対象ルートで肯定確認応答されたデータ部分のバイト数(PartialBytesAcked)と転送中データサイズ(OutstandingBytes)が両方ともCWND以上であるか否かを判断し、YESのときはステップS37に進む一方、NOのときは当該処理を終了する。ステップS37において処理対象ルートの肯定確認応答されたデータ部分のバイト数(PartialBytesAcked)からCWNDを減算して当該減算結果値をPartialBytesAckedとする。ただし、その最小値は0である。さらに、ステップS38においてCWNDにMTUを加算することにより、CWNDを更新してCWNDを広げ、当該処理を終了する。
なお、上記肯定確認応答されたデータ部分のバイト数(PartialBytesAcked)の値は以下のために用いている。輻輳回避モードにおいて、その目的は、データ転送時間(RTT)毎に、パスMTUだけ輻輳ウィンドウ値(CWND)をインクリメントすることにある。この動作を近似的に実現するために、SACKが到着するたびに、上記肯定確認応答されたデータ部分のバイト数(PartialBytesAcked)の変数値は肯定確認応答されたバイト数だけインクリメントされる。当該変数値が輻輳ウィンドウ値(CWND)を超えたときはいつでも、輻輳ウィンドウ値(CWND)はPMTU(例えば1)だけインクリメントされる。
以上説明したように、本実施形態に係るMR−SCTPによれば、パケットロスの検出をルート毎に行うとともに、データの送信側のエンドポイント装置50は、輻輳ウィンドウ値(CWND)をルート毎に輻輳制御モードに応じて転送中データサイズに基づいて更新するので、輻輳回避のアルゴリズムをルート毎に適用することができ、不必要に転送レートを下げてしまうという問題点Bを解決できる。
次いで、ルート毎の再送制御について以下に説明する。
上述のように、データの送信ルートと、受信確認データである選択的肯定確認応答(SACK)の送信ルートが異なる場合、ルートの削除を検出しても、実際には転送データは通信相手に届く可能性がある。また、受信確認通知である肯定確認応答(ACK)も他のルートを通してデータ送信側に到着する可能性がある。ルート削除の通知をトリガーにして、管理情報を初期化した場合、結果として無駄なデータ再送が発生する。従って、これらの問題点を解決するためには、ルートの状態がデータ転送不可能と認識した場合でも、一定期間ルート毎の状態変数を保持し、SACKの受信を待つ必要がある。
上述したように、MR−SCTP処理部20では、「再送タイマーの計時終了」時点をトリガーとして用いてパケットロスの検出を行うことと、図4の高速再送信の判断時をトリガーとして用いてパケットロスの検出を行うことを、ルート毎に実行している。従来技術に係るSCTPと同じくパケットロスを検出すると、MR−SCTP処理部20では、処理対象パケットに再送フラグを設定し、パケットを1つだけ再送する。この処理は輻輳回避のアルゴリズムに基づいて行われ、従来技術のSCTPと同じである。ただし、MR−SCTP処理部20では、再送マークされたデータを、通常のデータ転送処理の中でいつどれだけ転送するかについて拡張を行う必要があり、本実施形態ではこれを図10及び図11のごとく実行している。この拡張処理は、SACK受信時の拡張処理と、ルート削減時の拡張処理を含む。
SACK受信時の拡張処理では、SACK受信時は従来技術に係るSCTPにおいても、再送データが存在すれば輻輳ウィンドウサイズが許す限り、再送データを優先して送信する。MR−SCTP処理部20でSACKで通知されたルートに関する再送しかしない。すなわち、他のルートの再送データを送信しない。これは、ルート毎で管理している輻輳ウィンドウサイズを正確に管理するためである。
また、ルート削除時の拡張処理では、ルートの削除イベントが発生し、宛先のエンドポイント装置50Bからルート削除の通知を受信された場合、通知されたルートにおいて再送マークされたデータが存在していれば、処理対象データは他のルートの再送データとして引き継がれる。削除通知を受信後に高速再送信のイベントが発生した場合も同様である。再送タイマーが計時終了した場合は、処理対象ルートが管理している送信バッファのデータは全て他のルートに引き継がれる。
なお、引き継ぎの処理は、データのコピーを行うのではなく、下記の2つの変数を更新する。それ以外のデータは全て変更せずに引き継がれる。引き継がれたルートでは、従来と同じくデータ転送時に再送マークされたデータとして処理される(図9参照。)。本実施形態では、データに割り当てられているルートID(RID)の情報を引継先のルートID(RID)に変更する。また、シーケンス番号は割り当て先のルートで割り当てているシーケンス番号を新規に割り当てする。また、データの引き継ぎが発生した時点で、データを引き継ぐ前の転送中データサイズ(OutstandingBytes)が0で無い限りパケットの転送は行わない。すなわち、引き継がれたルート上のパケット送信イベント発生時に行う。これは、パケットロス検出時のデータ送信処理は、本来ロスを検出したルートで行うべき処理だからである。
図9は、図1のMR−SCTP処理部20によって実行されるルート間でのMR−DATAチャンクの引き継ぎ処理を示すフローチャートである。この処理は、ステップS41の判断条件がYESとなったとき、もしくは、ステップS45の判断条件がYESとなったときに実行される。
図9のステップS41においてMR−SACKチャンクを受信し、又はT3−Rtxタイマーが計時終了したか否かを判断し、YESとなるまでステップS41の処理を繰り返し、YESとなったとき、ステップS42においてMR−SACKチャンク、又はT3−Rtxはタイマーの処理対象ルート以外で、状態が確立済み状態である再送ルートを検索し、ステップS43において再送ルートが発見されたか否かを判断し、YESのときはステップS47に進む一方、NOのときはステップS44に進む。ステップS44においてRID=0のルートを再送ルートとし、ステップS47に進む。一方、ステップS45においてHEARTBEAT−ACKチャンクを受信したか否かを判断し、YESとなるまでステップS45の処理を繰り返し、YESとなったとき、ステップS46に進む。ステップS46において確立済み状態に変化したルートがあったか否かを判断し、YESのときはステップS47に進む一方、NOのときは当該処理を終了する。
次いで、ステップS47において処理対象のチャンクを再送バッファの先頭のチャンクに設定し、ステップS48において再送バッファ内のチャンクを全て巡回して検索したか否かを判断し、YESのときは当該処理を終了する一方、NOのときはステップS49に進む。ステップS49では、処理対象のチャンクは以下の条件を全て満たすか否かを判断し、
(1)宛先アドレスが再送ルートを持つ宛先アドレスと一致する;
(2)ルートID(RID)が対象ルートのルートID(RID)と一致する;
(3)再送マークがついている;
YESのときはステップS50に進む一方、NOのときはステップS52に進む。ステップS50では、処理対象のチャンクのルートID(RID)を再送ルートのルートID(RID)に書き換え、ステップS51において処理対象のチャンクのRSNを再送ルートが新規に発行したRSNに書き換え、ステップS52において処理対象のチャンクを1つ次のチャンクに設定した後、ステップS48に戻る。
(1)宛先アドレスが再送ルートを持つ宛先アドレスと一致する;
(2)ルートID(RID)が対象ルートのルートID(RID)と一致する;
(3)再送マークがついている;
YESのときはステップS50に進む一方、NOのときはステップS52に進む。ステップS50では、処理対象のチャンクのルートID(RID)を再送ルートのルートID(RID)に書き換え、ステップS51において処理対象のチャンクのRSNを再送ルートが新規に発行したRSNに書き換え、ステップS52において処理対象のチャンクを1つ次のチャンクに設定した後、ステップS48に戻る。
図10及び図11は、図1のMR−SCTP処理部20によって実行される再送チャンクの送信処理を示すフローチャートである。
図10のステップS61において、まず、MR−SACKチャンクを受信し、もしくはHEARTBEAT−ACKチャンクを受信し、もしくはT3−Rtxタイマーが計時終了したか否かを判断し、YESとなるまでステップS61の処理を繰り返し、YESとなったとき、ステップS62において再送ルート上の再送対象になっているチャンクの合計サイズを転送中データサイズ(OutstandingBytes)から減算し、減算値を転送中データサイズ(OutstandingBytes)にセットする。次いで、ステップS63において処理対象のチャンクを再送バッファの先頭のチャンクに設定し、ステップS64において再送バッファの全てのチャンクを巡回して検索したか否かを判断し、YESのときは図11のステップS81に進む一方、NOのときはステップS65に進む。
ステップS65において再送サイズの制限はCWNDであるか、1パケットであるかを判断し、前者であるときはステップS66に進む一方、後者であるときはステップS67に進む。ステップS66において再送対象ルートの転送中データサイズ(OutstandingBytes)<再送ルートのCWNDであるか否かを判断し、YESのときは図11のステップS71に進む一方、NOのときは図11のステップS81に進む。一方、ステップS67において再送チャンクを1パケット以上送信したか否かを判断し、YESのときは図11のステップS81に進む一方、NOのときは図11のステップS71に進む。
図11のステップS71では、再送バッファの全てのチャンクを巡回して検索したか否かを判断し、YESのときはステップS79に進む一方、NOのときはステップS72に進む。ステップS72において処理対象のチャンクを送信したルートは再送対象のルートと同一であるか否かを判断し、YESのときはステップS73に進む一方、NOのときはステップS78に進む。次いで、ステップS73において処理対象のチャンクに再送フラグがついているか否かを判断し、YESのときはステップS74に進む一方、NOのときはステップS79に進む。そして、ステップS74においてこれまで書き込んだ再送チャンクの容量の合計がMTUを超えるか否かを判断し、YESのときはステップS75に進む一方、NOのときはステップS79に進む。さらに、ステップS75において1回目の再送のときは再送タイマーをリスタートさせ、ステップS76において再送チャンクをパケットのデータ領域に書き込み、ステップS77において処理対象のチャンクの再送フラグをはずす。さらに、ステップS78において処理対象のチャンクを次のチャンクに設定し、ステップS71に戻る。
さらに、ステップS79において再送パケットにデータチャンクが書き込まれたか否かを判断し、YESのときはステップS80に進む一方、NOのときはステップS81に進む。ステップS80において再送パケットを再送し、図10のステップS64に戻る。そして、ステップS81において転送中データサイズ(OutstandingBytes)に再送ルート上の再送対象になっているチャンクで送信されていないチャンクのサイズを加算して、加算値を転送中データサイズ(OutstandingBytes)にセットし、当該処理を終了する。
次いで、ルートに関する通信制御データの取り扱い方法について以下に説明する。まず、ルート情報の交換方法について説明する。
まず、アソシエーション開始時にINITチャンク及びINIT−ACKチャンクにおいて、送信側及び受信側のエンドポイント装置50では、マルチルートをサポートする旨(マルチルートSCTPサポート)と、マルチルートを利用できるアドレス(アドホックアドレス)を通知する。さらに、送信側及び受信側のエンドポイント装置50で利用するルート情報を交換し合う必要がある。本実施形態では、以下のシーケンスによって、利用するルート情報を交換する。
図12は、図1のエンドポイント装置50A,50B間のパケット通信におけるアソシエーションの確立時のルートイベントシーケンスを示すシーケンス図であり、図13は、図1のエンドポイント装置50A,50B間のパケット通信におけるアソシエーションの確立後のルートイベントシーケンスを示すシーケンス図である。
図12において、送信側のエンドポイント装置50AのMR−DSR処理部10は、INITチャンク又はINIT−ACKチャンクの転送時に、宛先アドレスに対してルートの検索を行い、MR−SCTP処理部20の状態に関わらず、検出したルート情報をMR−SCTP処理部20に通知する。しかしながら、MR−SCTP処理部20では、アソシエーションが確立するまで、MR−DSR処理部10から通知されたルート情報を破棄する。アソシエーションの初期化時に利用されるルートはデフォルトの値(RID=0)を指定し、MR−DSR処理部10に対してルート検出及び選択を処理させる。
図13において、アソシエーションが確立すると、送信側のエンドポイント装置50AのMR−SCTP処理部20は、MR−DSR処理部10に対して、その時点で獲得していたルート情報を要求する。MR−DSR処理部10からルート情報を含む応答を受け取ると、MR−SCTP処理部20は獲得したルート情報をHEARTBEATチャンクに設定して、エンドポイント装置50BのMR−SCTP処理部20に対して通知する。このHEARTBEATチャンクではルートID(RID)とルート初期シーケンス番号(INITIAL−RSN)を通知する。受信側のMR−SCTP処理部20はルートID(RID)に対応しルート毎輻輳制御部24で用いる仮想バッファモジュールを、通信制御データメモリ21aに作成し、HEARTBEAT−ACKチャンクを送信する。ここで、ルートID(RID)とINITAIL−RSNをペアにして送信する理由は、データ受信側が受信するシーケンス番号に対して抜けがあるか判定するためである。初期シーケンス番号を通知しない場合は、いずれにせよデフォルトの初期シーケンス番号を暗黙で想定する。次いで、データ送信側のMR−SCTP処理部20は、送信したHEARTBEATチャンクに対する肯定確認応答(HEARTBEAT−ACK)を受信した時点で、送信ルートを指定してデータを送信することが可能となる。また、アソシエーション確立後もルートID(RID)を指定しなければ、データ送信が可能であるので、HEARTBEAT−ACKチャンクを受信するまでデータ送信が止めずに通信を続けることができる。
また、MR−SCTP処理部20において動的なルート情報の変更に対応するために、MR−DSR処理部10では獲得したルート情報をいつでもMR−SCTP処理部20に伝達することができる。獲得したルート情報の中からどのルートに関する情報を伝達するのかは、MR−DSR処理部10で決定できる。さらに、伝達されたルート情報がMR−SCTP処理部20のアソシエーションに関連しない情報(IPアドレスやルート)であれば、MR−SCTPにおいても情報を廃棄することが可能である。以上の通信手順を用いることにより、将来の拡張においてMR−DSR処理部10が通知する情報をMR−SCTP処理部20で目的を持ってどの情報を利用するか選択できるようになる。例えば、通知されるルート情報を全て利用するのではなく、一定のしきい値を持ってパフォーマンスをより向上させることができる。
次いで、ルートの追加通知について説明すると、ルート情報はアソシエーション確立後に通知された場合でも、セットアップ時と同じくHEARTBEATチャンクを利用して、ルートID(RID)とINITAIL−RSNを通知する。データ受信側のMR−SCTP処理部20では新たにHEARTBEATチャンクによって伝えられたルートID(RID)に関して、セットアップ時と同じく仮想バッファを作成し、受信側のデータ管理オブジェクトを作成する。
さらに、ルート削除通知について説明すると、ルート削除イベントをMR−DSR処理部10から通知された場合、生成時と異なり、データ送信側のMR−SCTP処理部20がデータ受信側のMR−SCTP処理部20にルート削除を通知しない。受信側のMR−SCTP処理部20ではルートID(RID)毎に受信バッファメモリを持つが、データが送信されない限り、特別な処理は不要である。また、ルートID(RID)の割り当て方法はMR−DSR処理部10の機能であるためここでは詳細な説明を行わない。すなわち、MR−SCTP処理部20はMR−DSR処理部10から通知されたルートID(RID)を利用するだけである。
またさらに、ルートID(RID)の再利用について説明すると、送信側のMR−SCTP処理部20で再利用されたルートID(RID)は、受信側では削除通知を受け取らないために以前のルート情報と共に保存されている。送信側のMR−SCTP処理部20では再利用したルートID(RID)についてもHEARTBEATチャンクで通知するので、受信側のMR−SCTP処理部20では既に管理しているルートID(RID)についてHEARTBEATチャンクを受信すると、管理しているルート情報を初期化することで対応できる。
次いで、マルチルート処理に付随して発生する問題について以下に説明する。まず、フロー制御の問題と対策について述べる。
データ転送において、重要な制御の一つにフロー制御がある。データ送信側は、受信側が受信可能なデータ量を常に把握して、送信量を制御しなければ、データ受信側が処理しきれない程のデータ送信を行ってしまう。その結果、さらに再送が発生しネットワークに無駄なデータが転送されてしまう。そのために、従来技術に係るSCTPでは、受信側が、現在のデータ受信可能な量をデータ送信側にデータを受信する毎に通知し送信側でそのデータに基づいてデータ転送量を制御する方式が利用される。
本実施形態に係るマルチルートの拡張によって、上述のように、輻輳制御をルート毎で行われ新しく導入したルートの転送中データサイズ(OutstandingBytes)に基づいて輻輳ウィンドウ値(CWND)の更新が行われる。しかしながら、ルートの転送中データサイズ(OutstandingBytes)に基づいてフロー制御をルート毎で行うと、以下の「オーバーフローの発生の問題」と「ゼロウィンドウの問題」が発生する。
まず、オーバーフローの発生について説明する。各ルートで現在のアソシエーション全体の転送中データサイズ(OutstandingBytes)を把握していなければ、データ受信側のMR−SCTP処理部20が受信しきれないサイズのデータを送信してしまう可能性がある。図14では、ルートR1に対する選択的肯定確認応答(SACK)では空きバッファ容量(ARWND)が900(単位は例えば、バイト)と伝えられたためにサイズ400のデータを送信している。次に、ルートR2に対する選択的肯定確認応答(SACK)では、ルートR1で送信中のデータはまだ到着していないため、データ受信側の空きバッファ容量(ARWND)=600となっている。図14では、選択的肯定確認応答(SACK)の受信に応答して、ルートR2上でサイズ300のデータを送信しているが、もしなんらかの原因で(例えば、ギャップの発生や受信側処理遅延等)、データ受信側のMR−SCTP処理部20でバッファできない状態が続けば、実際にルートR2上で転送したデータが受信側のMR−SCTP処理部20に届いた時点で、空きバッファ容量(ARWND)は次式のようになり、サイズ100のデータがオーバーフローとなる。
[数13]
ARWND
=600−400(R1に係る)−300(R2に係る)
=−100 (13)
ARWND
=600−400(R1に係る)−300(R2に係る)
=−100 (13)
次いで、ゼロウィンドウの問題について以下に説明する。従来技術に係るSCTPでは、受信した選択的肯定確認応答(SACK)において、空きバッファ容量(ARWND)=0でなおかつ転送中データサイズ(OutstandingBytes)=0である場合の1パケットのみ送信する処理を提供している。本来この処理は受信側で、処理の遅延等が発生したまたま受信側のバッファがフルの状態になったとき、送信側がデータを転送しなければ、受信側のバッファがいつ利用可能な状態に戻るか検知できないため特別処理として導入されている。
しかしながら、本実施形態に係るMR−SCTP処理部20においては、選択的肯定確認応答(SACK)に含まれる空きバッファ容量(ARWND)=0で転送ルートでの転送中データサイズ(OutstandingBytes)=0の場合、1パケットを転送したとしても、致命的な問題を引き起こす可能性がある。なぜなら、転送ルート以外のルートでは、転送中のデータが存在する可能性があり、もし上記のゼロウィンドウ処理で新規データを送信すると、受信バッファメモリ内のギャップ部分(再送待ち)を埋めてしまう可能性があるためである。受信バッファメモリがこの状態になってしまうと、受信データにはギャップが存在するために上位に移動できないが、たとえ再送パケットを受信しても、受信バッファメモリには空きが無いためギャップを埋めるデータを廃棄してしまい、MR−SCTP処理部20の処理は完全に進まなくなる。
次いで、上述のオーバーフロー問題に対する解決方法について以下に説明する。上記で述べたオーバーフロー問題に対してMR−SCTP処理部20では、ルート毎で転送中のデータを把握し、全ルートにおける転送中データサイズ(OutstandingBytes)を計算してフロー制御を行うことで問題を解決する。具体的には、MR−SCTP処理部20では、新たに転送中データサイズ(OutstandingBytes)の合計値である転送中データサイズ合計値(Total−OutstandingBytes)を導入し、各ルートからデータを送信する直前に、転送中データサイズ合計値(Total−OutstandingBytes)を計算し、個別の転送ルートにおいて、転送中のデータが存在していなくても、次式のように、転送中データサイズ合計値(Total−OutstandingBytes)と受信側の空きバッファサイズに基づいて、データが転送可能か判断するように拡張を行った。
[数14]
もし(SACKで通知された受信バッファサイズ)
−転送中データサイズ合計値(Total−OutstandingBytes)
−新規送信データサイズ>0であれば、
(a)データ送信を実行し、
(b)転送中データサイズ合計値(Total−OutstandingBytes)
=転送中データサイズ(OutstandingBytes)の合計値
の計算を実行する。 (14)
もし(SACKで通知された受信バッファサイズ)
−転送中データサイズ合計値(Total−OutstandingBytes)
−新規送信データサイズ>0であれば、
(a)データ送信を実行し、
(b)転送中データサイズ合計値(Total−OutstandingBytes)
=転送中データサイズ(OutstandingBytes)の合計値
の計算を実行する。 (14)
次いで、ゼロウィンドウ問題の解決方法について以下に説明する。上記で述べたゼロウィンドウ問題に対してMR−SCTP処理部20では、選択的肯定確認応答(SACK)の受信時に、SACKに含まれる空きバッファ容量(ARWND)=0の場合に、転送中データサイズ(OutstandingBytes)=0であっても転送中データサイズ合計値(Total−OutstandingBytes)が0でなければ、データを送信しない。ただし、データを送信しなければ、SACKを受信できない可能性があるために、空きバッファ容量(ARWND)=0でかつ転送中データサイズ(OutstandingBytes)=0かつ転送中データサイズ合計値(Total−OutstandingBytes)が0でなければ、HEARTBEATチャンクを送信し、ルートの状態をデータが送信できない状態に遷移させる。新規データの送信はHRARTBEAT−ACKチャンクを受信した時点で再度、新規データを送信できるかチェックを行って送信する。再度チェックを行っても上記の条件を満たす場合は、この状態遷移を繰り返す。
これらの処理によりゼロウィンドウの問題を解決した(図15及び図16参照。)。
これらの処理によりゼロウィンドウの問題を解決した(図15及び図16参照。)。
図15及び図16は、図1のMR−SCTP処理部20によって実行される1ルート当たりの新規MR−DATAチャンクの送信処理を示すフローチャートである。当該送信処理は、ステップS91又はS92の判断処理でYESとなったときに実行される。
図15のステップS91においてMR−SACKチャンクを受信し、又はHEARTBEATチャンクを受信したか否かを判断し、YESとなるまでステップS91の処理を繰り返し、YESとなったときステップS94に進む。また、ステップS92において上位層装置30からデータ送信の命令を受信したか否かを判断し、YESとなるまでステップS92の処理を繰り返し、YESとなったとき、ステップS93において再送バッファメモリにチャンクが存在するか否かを判断し、YESのときは当該処理を終了する一方、NOのときはステップS94に進む。
ステップS94において処理対象のルートが以下の条件をすべて満たしているか否かを判断し、
(1)再送マークされたチャンクが無い;
(2)新規データの送信フラグが1である;
(3)ルートの状態が確立済み状態である;
YESのときはステップS95に進む一方、NOのときは当該処理を終了する。ステップS95において処理対象のルートで転送中データサイズ(OutstandingBytes)<輻輳ウィンドウ値(CWND)であるか否かを判断し、YESのときはステップS96に進む一方、NOのときは当該処理を終了する。次いで、ステップS96において次に生成されるMR−DATAチャンクのサイズがピアRWND(相手側エンドポイント装置50Bの空きバッファ容量(RWND))より小さいか否かを判断し、YESのときはステップS97に進む一方、NOのときはステップS98に進む。ステップS97において1個以上のMR−DATAチャンクからなるSCTPパケットを作成してステップS100に進む。一方、ステップS98において再送バッファメモリに肯定確認応答されていないチャンクが存在するか否かを判断し、YESのときは図16のステップS101に進む一方、NOのときはステップS99に進む。ステップS99において1個のMR−DATAチャンクからなるSCTPパケットを作成し、ステップS100において作成したパケットを送信した後、ステップS95に戻る。
(1)再送マークされたチャンクが無い;
(2)新規データの送信フラグが1である;
(3)ルートの状態が確立済み状態である;
YESのときはステップS95に進む一方、NOのときは当該処理を終了する。ステップS95において処理対象のルートで転送中データサイズ(OutstandingBytes)<輻輳ウィンドウ値(CWND)であるか否かを判断し、YESのときはステップS96に進む一方、NOのときは当該処理を終了する。次いで、ステップS96において次に生成されるMR−DATAチャンクのサイズがピアRWND(相手側エンドポイント装置50Bの空きバッファ容量(RWND))より小さいか否かを判断し、YESのときはステップS97に進む一方、NOのときはステップS98に進む。ステップS97において1個以上のMR−DATAチャンクからなるSCTPパケットを作成してステップS100に進む。一方、ステップS98において再送バッファメモリに肯定確認応答されていないチャンクが存在するか否かを判断し、YESのときは図16のステップS101に進む一方、NOのときはステップS99に進む。ステップS99において1個のMR−DATAチャンクからなるSCTPパケットを作成し、ステップS100において作成したパケットを送信した後、ステップS95に戻る。
次いで、図16のステップS101では、処理対象のルートに肯定確認応答されていないチャンクがあるか否かを判断し、YESのときは当該処理を終了する一方、NOのときはステップS102に進む。ステップS102においてルートID(RID)、RSNを除くルートの制御データを初期化し、ステップS103において処理対象のルートのHEARTBEATチャンクを送信し、ステップS104において処理対象のルートの状態を待機初期状態にセットする。そして、ステップS105において処理対象の宛先アドレスの中に確立済み状態のルートがあるか否かを判断し、YESのときは当該処理を終了する一方、NOのときはステップS106に進み、RID=0のルートの状態を確立済み状態にし、当該処理を終了する。
次いで、ルート状態の管理問題とその対策について以下に説明する。上述したルート情報の交換だけでなく、データ転送中においてもルートの状態を管理し、ルートの状態に応じてデータ転送処理を適切に行う必要がある。この状態管理は、マルチルート以外のデータ転送においては、必須の技術ではないが、マルチルート通信においては必須の技術である。従来技術に係るSCTPにおけるパスの管理手法では、パスの状態は「アクティブ(動作状態)」「インアクティブ(非動作状態)」だが、マルチルートを利用する場合は以下の問題が発生する。
従来技術に係るSCTPでは、「ロスを検出したパケット」は、送信バッファメモリ内において再送フラグを設定し、再送データとして区別される。しかしながら、マルチルート通信においてはルートの削除と検出を頻繁に繰り返す可能性が高い。ここで、従来技術に係るSCTPの定義を適用すると、同じルートID(RID)を持つルートが複数回追加と削除を繰り返す場合、転送中データサイズ(OutstandingBytes)が0にならない間に追加通知を受けても利用することができない。なぜなら、MR−SCTP処理部20において一度割り振られたルートID(RID)と、削除通知を受けた後で割り振られたルートID(RID)は必ずしも同じルートとは限らないためである。なお、従来技術に係るSCTPにおけるパスの定義は、送信側と受信側でアソシエーションを確立した時点で一意に決定するものであり、たとえパスが利用不可能になった場合でも、利用可能な状態に戻った時点では、同じパスとしてのみ利用できる。変数も引き継ぐことが可能であった。マルチルート拡張の観点はルートの状態を把握して、転送制御を行うことによって複数のルートを効率良くデータ転送に使うことである。従って、ルートID(RID)の再割り当てが発生した場合は、基本的にルート上の転送中データサイズ(OutstandingBytes)が0になるまで、状態を初期化できないという問題点があった。
この問題点を解決するために、MR−SCTP処理部20において、図17に示すように、ルートを管理する状態遷移において特別な状態を新たに定義した。図17は、図1のMR−SCTP処理部20によって実行される、実施形態に係る通常ルート処理を示す状態遷移図である。この状態遷移の処理について以下に説明する。
図17において、初期状態においてルートの追加が通知されたとき(すなわち、ルート追加の通知メッセージを受信したときであり、以下同様である。)、ルートオブジェクトを作成し、以前に使用したRSNを復元し、HEARTBEATチャンクを送信し、待機初期(WAIT_INIT)状態に遷移する。一方、待機初期(WAIT_INIT)状態においてルートの削除が通知されたとき(すなわち、ルート削除の通知メッセージを受信したときであり、以下同様である。)、ルートオブジェクトを削除し、初期状態となる。また、待機初期(WAIT_INIT)状態においてHEARTBEAT−ACKチャンクを受信したとき、再送チャンクがあれば、CWNDの範囲で再送し、その後で送信できれば新規にMR−DATAチャンクを送信し、確立済み(ESTABLISHED)状態に遷移する。一方、確立済み(ESTABLISHED)状態においてデータを新規に送信しようとしたときに、次に送信するMR−DATAチャンクのサイズよりもピアRWNDが小さく、かつ、自己のルートの転送中データサイズ(OutstandingBytes)が0でかつパス全体の転送中データサイズ合計値(Total−OutstandingBytes)が0よりも大きいとき、ルートID(RID)及びRSN以外の内部変数を初期化し、HEARTBEATチャンクを送信し、待機初期(WAIT_INIT)状態に戻る。なお、確立済み(ESTABLISHED)状態において、以下の場合において以下の処理を実行した後、確立済み(ESTABLISHED)状態に戻る。
(a)送信メッセージにより上位層装置30からデータを受信し、かつMR−SCTP処理部20の状態が確立済みで、かつ送信メッセージの受信前のアプリケーション層のバッファメモリが空であるとき、新規にMR−DATAチャンクを送信する。
(b)MR−SACKチャンクを受信したとき、新規にMR−DATAチャンクを送信する。
(c)T3−Rtxタイマーが計時終了したとき、未確認チャンクを同じルートで再送する。
(a)送信メッセージにより上位層装置30からデータを受信し、かつMR−SCTP処理部20の状態が確立済みで、かつ送信メッセージの受信前のアプリケーション層のバッファメモリが空であるとき、新規にMR−DATAチャンクを送信する。
(b)MR−SACKチャンクを受信したとき、新規にMR−DATAチャンクを送信する。
(c)T3−Rtxタイマーが計時終了したとき、未確認チャンクを同じルートで再送する。
さらに、確立済み(ESTABLISHED)状態においてルートの削除が通知されたとき、削除済み(DELETED)状態に遷移する。当該削除済み(DELETED)状態において、MR−SACKチャンクを受信したとき(転送中データサイズ(OutstandingBytes)≠0)再送チャンクを別ルートのCWNDの範囲で再送し、削除済み(DELETED)状態に戻る。また、削除済み(DELETED)状態において、ルートの追加が通知されたとき、待機削除(WAIT_CLEAR_INIT)状態に遷移する。待機削除(WAIT_CLEAR_INIT)状態において、MR−SACKチャンクを受信したとき(転送中データサイズ(OutstandingBytes)≠0)再送チャンクを別ルートのCWNDの範囲で再送し、待機削除(WAIT_CLEAR_INIT)状態に戻る。さらに、待機削除(WAIT_CLEAR_INIT)状態において、T3−Rtxタイマーが計時終了しかつMR−SACKチャンクを受信したとき(転送中データサイズ(OutstandingBytes)=0)、再送チャンクを別ルートのCWNDの範囲で再送し、ルートデータを初期化し、HEARTBEATチャンクを送信し、待機初期(WAIT_INIT)状態に遷移する。また、待機削除(WAIT_CLEAR_INIT)状態において、ルートの削除が通知されたとき、削除済み(DELETED)状態に戻る。またさらに、削除済み(DELETED)状態において、以下の場合において以下の処理を実行した後、初期状態に戻る。
(a)T3−Rtxタイマーが計時終了したとき、再送チャンクを別ルートのCWNDの範囲で再送し、ルートオブジェクトを削除する。
(b)MR−SACKチャンクを受信したとき(転送中データサイズ(OutstandingBytes)=0)ルートオブジェクトを削除する。
(a)T3−Rtxタイマーが計時終了したとき、再送チャンクを別ルートのCWNDの範囲で再送し、ルートオブジェクトを削除する。
(b)MR−SACKチャンクを受信したとき(転送中データサイズ(OutstandingBytes)=0)ルートオブジェクトを削除する。
図17において、待機初期(WAIT_INIT)状態が従来技術に係るSCTPにおけるインアクティブ(非動作状態)に対応し、確立済み(ESTABLISHED)状態が従来技術に係るSCTPにおけるアクティブ(動作状態)に対応する。また、MR−SCTP処理部20では、さらに、削除済み(DELETED)状態及び待機削除(WAIT_CLEAR_INIT)状態を追加した。
図17から明らかなように、ルートの削除通知を受けると、状態を確立済み(ESTABLISHED)状態から削除済み(DELETED)状態に遷移させ、処理対象ルートの転送中データサイズ(OutstandingBytes)が0になるまで、状態を遷移させない。転送中データサイズ(OutstandingBytes)が0になった時点で、管理データを削除し及び初期化する。もし転送中データサイズ(OutstandingBytes)が0になる前にルートの追加通知を受信すると、待機削除(WAIT_CLEAR_INIT)状態に遷移させ、転送中データサイズ(OutstandingBytes)が0になった時点で、待機初期(WAIT_INIT)状態に遷移させ通常の状態遷移に戻る。このように、転送中データサイズ(OutstandingBytes)が0になっていない場合の状態遷移に対して、新たな状態を設けたことにより同じルートID(RID)を再利用する場合の問題を回避できる。なお、この2つの状態の追加のデメリットとして、ルートID(RID)の再利用時に一定の期間(最長タイムアウト時間まで)待ち時間が発生することが考えられるが、基本的に同じルートID(RID)が短い周期で、利用可能な状態と、利用不可能な状態を繰り返している場合は、ルートが不安定な場合が多く、転送中データサイズ(OutstandingBytes)が無くなるまで待つことで不安定なルートを直ぐに利用することを防ぐことができる。
図18は、図1のMR−SCTP処理部20によって実行される、変形例に係る通常ルート処理を示す状態遷移図である。変形例に係る通常ルート処理では、図17の実施形態に比較して、待機削除(WAIT_CLEAR_INIT)状態を削除したことを特徴としている。
以上のように構成することにより、転送中データサイズ(OutstandingBytes)が0になっていない場合の状態遷移に対して、同じルートID(RID)を再利用する場合の問題を回避できる。
次いで、ルート管理の問題を解決するための「デフォルトルート」の利用方法について以下に説明する。上述のように、パケットロスの検出方法においてアソシエーション開始時にMR−SCTPがINITチャンク等を交換するためにデフォルトルートを指定すると述べた。また通常のルートの状態遷移についても説明した。ここではデフォルトルートの説明を行う。
デフォルトルートが必要な理由は、アソシエーション開始時や、データ転送中において全てのルートが削除された場合はMR−SCTPがデータ転送のために指定するルートが無くなってしまうことを防止するためである。これは、ルート指定通信を行うためには必須の技術であり、以下のようにデフォルトルートを利用する。
MR−DSR処理部10では、デフォルトのルート番号(RID=0)を指定されると、獲得したルート情報の中から指定されたIPアドレスに対して最もホップ数が少ないルートを選択して(DSRの従来技術)して、データを転送する。また、ルートを保持していない場合は、新たにルート検索パケット(ルート要求)を送出してルートを検索する(DSRの従来技術)。これに対して、MR−SCTP処理部20では、MR−DSR処理10によるルート情報検索結果の取得をきっかけに、MR−DSR処理部10から新たに利用可能なルートの情報が通知される。利用可能なルート情報を取得すると、MR−SCTP処理部20は、デフォルトルートの指定送信から通常のルート指定送信に切り換える。
これに関連する問題点について以下に説明する。デフォルトルートを導入すると、ネットワーク状態が不安定な場合にデフォルトルートとその他ルート利用の切り換えが多発する可能性がある。もしデフォルトルートでデータを送信中にルートの切り換えが複数回発生した場合、デフォルトルート内の転送中データサイズ(OutstandingBytes)を0に初期化してしまうと、デフォルトルートに対して返却されたSACKが廃棄されて、データの再送が非常に遅れてしまう可能性がある。上記の問題点を回避するために、図19に示すように、デフォルトルート処理において特別な状態遷移を適用する。
図19は、図1のMR−SCTP処理部20によって実行される、実施形態に係るデフォルトルート処理を示す状態遷移図である。
図19において、初期状態において、ルートの追加が通知されたとき、ルートオブジェクトを作成し、以前に使用したRSNを復元し、HEARTBEATチャンクを送信し、待機初期(WAIT_INIT)状態に遷移する。一方、待機初期(WAIT_INIT)状態において、ルートの削除が通知されたとき、ルートオブジェクトを削除し、初期状態に戻る。また、待機初期(WAIT_INIT)状態において、HEARTBEAT−ACKチャンクを受信したとき、再送チャンクがあれば、CWNDの範囲で再送し、その後で送信できれば新規にMR−DATAチャンクを送信し、確立済み(ESTABLISHED)状態に遷移する。一方、確立済み(ESTABLISHED)状態においてデータを新規に送信しようとしたときに、次に送信するMR−DATAチャンクのサイズよりもピアRWNDが小さく、かつ、自己のルートの転送中データサイズ(OutstandingBytes)が0でかつパス全体の転送中データサイズ合計値(Total−OutstandingBytes)が0よりも大きいとき、ルートID(RID)及びRSN以外の内部変数を初期化し、HEARTBEATチャンクを送信し、待機初期(WAIT_INIT)状態に戻る。なお、確立済み(ESTABLISHED)状態において、以下の場合において以下の処理を実行した後、確立済み(ESTABLISHED)状態に戻る。
(a)送信メッセージにより上位層装置30からデータを受信し、かつMR−SCTP処理部20の状態が確立済みで、かつ送信メッセージの受信前のアプリケーション層のバッファメモリが空であるとき、新規にMR−DATAチャンクを送信する。
(b)MR−SACKチャンクを受信したとき、新規にMR−DATAチャンクを送信する。
(c)T3−Rtxタイマーが計時終了したとき、未確認チャンクを同じルートで再送する。
(a)送信メッセージにより上位層装置30からデータを受信し、かつMR−SCTP処理部20の状態が確立済みで、かつ送信メッセージの受信前のアプリケーション層のバッファメモリが空であるとき、新規にMR−DATAチャンクを送信する。
(b)MR−SACKチャンクを受信したとき、新規にMR−DATAチャンクを送信する。
(c)T3−Rtxタイマーが計時終了したとき、未確認チャンクを同じルートで再送する。
さらに、確立済み(ESTABLISHED)状態において、RID=0でかつ他のルートのいずれかの状態が確立済みになったとき、削除済みデフォルト(DELETED_DEFAULT)状態に遷移する。一方、削除済みデフォルト(DELETED_DEFAULT)状態において、RID=0でかつ他のルートが全て確立済み以外の状態になったとき、未確認チャンクを同じルートで再送し、確立済み(ESTABLISHED)状態に戻る。また、削除済みデフォルト(DELETED_DEFAULT)状態において、MR−SACKチャンクを受信(転送中データサイズ(OutstandingBytes)≠0)したとき、再送チャンクを別ルートのCWNDの範囲で再送し、削除済みデフォルト(DELETED_DEFAULT)状態に戻る。なお、削除済みデフォルト(DELETED_DEFAULT)状態において、T3−Rtxタイマーが計時終了しかつMR−SACKチャンクを受信したとき(転送中データサイズ(OutstandingBytes)=0)ルートデータを初期化し、停止(CLOSED)状態に遷移する。
初期状態において、RID=0でかつMR−SCTP処理部20の状態が確立済み状態に変化したときHEARTBEATチャンクを送信し、停止(CLOSED)状態に遷移する。停止(CLOSED)状態において、RID=0でかつ他のルートが全て確立済み以外の状態になったとき、HEARTBEATチャンクを送信し、待機初期(WAIT_INIT)状態に遷移する。一方、待機初期(WAIT_INIT)状態において、RID=0でかつ他のルートのいずれかの状態が確立済みになり、もし転送中データサイズ(OutstandingBytes)=0なら他のルートに再送データを移し、停止(CLOSED)状態に遷移する。
図19から明らかなように、デフォルトルート処理において、待機初期(WAIT_INIT)状態及び確立済み(ESTABLISHED)状態に加えて、削除済みデフォルト(DELETED_DEFAULT)状態及び停止(CLOSED)状態を追加した。具体的には、ルートの切り換えが発生した場合でも、転送中データサイズ(OutstandingBytes)が存在していれば、転送中データサイズ(OutstandingBytes)が0になるまでは、MR−SACKチャンクを受信しかつ再送タイマーが計時終了するまで、状態を削除済みデフォルト(DELETED_DEFAULT)状態に保持しておく。状態が削除済みデフォルト(DELETED_DEFAULT)状態のままで、ルートの切り換えが発生した場合は、変数を初期化することなくデータの転送を続け、その状態を保持する。
なぜなら、上述のマルチルートのための輻輳制御において、デフォルトルート以外のルートでは、転送中データサイズ(OutstandingBytes)が0になるまで、待機初期(WAIT_INIT)状態で待つ理由を説明したが、デフォルトルートでは、上記のように待たないで直ぐに確立済み(ESTABLISHED)状態に遷移させなければならない。しかしながら、転送中データサイズ(OutstandingBytes)はあくまで転送ルート上のイベント(MR−SACKチャンクを受信したときの処理や、T3−Rtxタイマーが計時終了したとき)に従って管理すべきだからである。なお、デフォルトルート以外のルートでは、同じルートID(RID)の再利用が待機初期(WAIT_INIT)状態に遷移する条件になっているが、デフォルトルートでは、遷移の条件を全てのルートが削除された場合と、1つのルートでも利用可能になることを遷移の条件にしている。
図20は、図1のMR−SCTP処理部20によって実行される、変形例に係るデフォルトルート処理を示す状態遷移図である。図20の変形例では、停止(CLOSED)状態を削除したことを特徴としている。以下、相違点について説明する。
図20において、初期状態で次の場合において以下の処理を実行して待機初期(WAIT_INIT)状態に遷移する。
(a)RID=0でかつMR−SCTP処理部20の状態が確立済みに変化したとき、HEARTBEATチャンクを送信する。
(b)RID=0でかつ他のルートが全て確立済み以外の状態になるとき、HEARTBEATチャンクを送信する。
一方、待機初期(WAIT_INIT)状態において、RID=0でかつ他のルートのいずれかの状態が確立済みになり、もし転送中データサイズ(OutstandingBytes)=0であるとき、他のルートに再送データを移し、初期状態に戻る。
(a)RID=0でかつMR−SCTP処理部20の状態が確立済みに変化したとき、HEARTBEATチャンクを送信する。
(b)RID=0でかつ他のルートが全て確立済み以外の状態になるとき、HEARTBEATチャンクを送信する。
一方、待機初期(WAIT_INIT)状態において、RID=0でかつ他のルートのいずれかの状態が確立済みになり、もし転送中データサイズ(OutstandingBytes)=0であるとき、他のルートに再送データを移し、初期状態に戻る。
なお、図20の待機初期(WAIT_INIT)状態と確立済み(ESTABLISHED)状態との間の状態遷移は、図19と同様である。また、図20の確立済み(ESTABLISHED)状態から確立済み(ESTABLISHED)状態に戻る状態遷移は、図19の確立済み(CHECKED)状態におけるそれと同様であり、図20の確立済み(ESTABLISHED)状態と削除済みデフォルト(DELETED_DEFAULT)状態との間の状態遷移は、図19と同様である。さらに、図20の削除済みデフォルト(DELETED_DEFAULT)状態から削除済みデフォルト(DELETED_DEFAULT)状態に戻る状態遷移も図19と同様である。またさらに、削除済みデフォルト(DELETED_DEFAULT)状態において、T3−Rtxタイマーが計時終了しかつMR−SACKチャンクを受信したとき(転送中データサイズ(OutstandingBytes)=0)ルートデータを初期化し、初期状態に遷移する。
以上のように構成することにより、図19の実施形態と同様に、ルートの切り換えが発生した場合でも、転送中データサイズ(OutstandingBytes)が存在していれば、転送中データサイズ(OutstandingBytes)が0になるまでは、MR−SACKチャンクを受信しかつ再送タイマーが計時終了するまで、状態を削除済みデフォルト(DELETED_DEFAULT)状態に保持しておく。状態が削除済みデフォルト(DELETED_DEFAULT)状態のままで、ルートの切り換えが発生した場合は、変数を初期化することなくデータの転送を続け、その状態を保持する。
さらに、ルート選択方法の問題点とその解決方法について以下に説明する。
まず、ルート検出パケットによるネットワーク負荷について説明する。MR−SCTP処理部20及びMR−DSR処理部10におけるルート検出パケットは、全ての利用可能なルートが利用不可能な状態になっていることを検出したらルート検索を行う。所定の時間周期での定期的なルート検出は行わない。従って、周期的に検索するよりもネットワークに対する負荷は低くなる。これは従来技術であるDSRにおけるルート検出方法と同じである。
次いで、古いルート情報を利用することによる問題点とその対処方法について以下に説明する。問題点Dの第2項目で述べたように、検出したルート情報を内部でメモリ上に保存し、利用しているルートが使えなくなってから他のルートに切り換えた場合、切り換え先のルートが既に存在しない等の理由で利用できない可能性がある。また、切り換えたルートは利用可能であっても既にもっと品質の良いルートが存在している可能性がある。しかしながら、この状態を検出するためには新規にルート検出用のパケットを送信しなければならない。しかし、上述のようにルート検索のパケットはネットワークに多大な負荷をかけるために、単純にルート検索パケットの送信回数(周期)を増やしてはならない。安定してルートを利用できる環境では、ルート検索パケットの送信自体が、ネットワークを不安定にさせる可能性があるためである。
この対処方法は以下の通りである。まず、ルート切り替え時の問題については、MR−SCTP処理部20では検出した複数のルートを同時に利用するために、キャッシュしたルートが利用されないまま利用不可能な状態になることはない。従って、従来の単一ルートを利用する場合のように、ルートの切り換え発生時に切り替え先のルートが利用できないという問題は発生しない。なお、通常ルート切り換え先のルートは既にデータ転送を行っている実績のあるルートであるからである。
次に、利用不可能なルートを早期に発見する方法は以下の通りである。また複数のルートを同時に利用することは、品質が悪いあるいは時間を経過すると悪くなるルートを、利用できる間に利用して、利用不可能な状態を早期に検出することにも繋がる。その結果、検出した全てのルートの品質が悪化し、既に品質の良いルートが存在していた場合でも、単一ルートを利用するよりも素早くルートエラーを検出し、新規にルート検索パケットを送信することが可能である。特に、アドホック無線ネットワークにおいては通信端末装置の移動度が高い環境では、古いルート情報をキャッシュして利用すると、上記の問題点はさらにネットワークのパフォーマンスに深刻な影響を与える。以下で事前に検出した全てのルートがホップ数や距離の要因でルートエラーを検出し、新規にルート検索パケットを送信するまでにかかる時間を示す。一般的に存在しているルートが、トラフィックの輻輳や無線通信におけるビットエラーやリンクの切断等により利用不可能な状態だと判断するためには、実際にデータパケットを転送する必要がある。又はルートが存在しない場合は最悪の場合タイムアウトが発生するまで、ルートエラーを検出できない可能性もある。
ここで、転送ルートn上でルートエラーを検出するまでにかかる時間をTrnとすると、単一ルートを利用するプロトコルで、ルートの切り換えが発生した時点から全てのルートが利用不可能な状態になることを検出するまでの時間Trallは、次式で表される。
[数15]
Trall=Σi(Tri) (15)
Trall=Σi(Tri) (15)
ここで、式(15)の右辺における総和は全ての転送ルートiに関する総和である。移動度の高い環境ではこの時間は高いオーバーヘッドになる可能性がある。一方、MR−SCTP処理部20及びMR−DSR処理部10においては、全てのルートが利用不可能な状態になることを検出するまでの時間は、同様に次式で表される。
[数16]
Trall=max(Tri) (16)
Trall=max(Tri) (16)
ここで、式(16)の右辺のmaxは、引数Triのうちの最大値を示す関数である。この式(16)は単純に複数のルートを同時に利用した場合、エラーを検出するまでに最も時間がかかるルートの検出時間が、全てのルートについてエラーを検出するまでにかかる時間であることを意味している。また、複数のルートを同時に利用した場合、理想的な環境(ルート間の干渉が発生しない)では最も安定している(ビットエラーやリンク切断が少ない)ルートがエラーになるまでの時間が、ルート検出パケットを送信する時刻となることを示している。最も安定しているルート(max(Tri)の検出時間を有する)がmax(Tri)秒後に利用不可能な状態になると、同時期に検出していた他のルートでは既に利用不可能な状態になっており、それを契機に新規にルート検索のパケットを送信することになる。これは無駄にルート検索パケットの転送周期を短くしたわけではなく、実際に利用しているネットワークの状態を反映して、従来技術に比較してより適切なタイミングでルート検索パケットを送信可能にした。従って、MR−SCTP処理部20では、通常の単一ルートを利用した通信より{max(Tri)−Σi(Tri)}秒早く全てのルートが利用不可能な状態であることを検出できデータ転送のパフォーマンスも向上させることができる。
さらに、指数的バックオフ法の問題点に対する対処方法について以下説明する。上述の問題点Dの第3項目で述べた問題点は、通信端末装置の移動や上位層装置においてルート毎の状態を管理していないことが原因である。なぜなら、指数的バックオフ法は同一のパスで複数回エラーが発生した場合の制御方式だが、従来技術の方式では転送ルートの区別ができないために、別のルート上でエラーが発生していても転送エラーと認識され、指数的バックオフ法の制御対象になってしまうためである。この問題点に対して提案する手法は、ビットエラー・リンク切断等が原因でルートエラーを検出した場合、制御データの状態更新を停止(タイマーを停止させることで実現する)させて状態復帰後にタイマーを再開させる手法である。しかしこの手法を利用する場合は、途中のノードにおけるエラー検出方法・通知方法や通知を受けた側での対処等、複数箇所の設計を変更する必要がある。MR−SCTP処理部20では上記の方式を行わないが、マルチルート通信では、上述したように利用できる限り同時に複数のルートを利用して通信を行いRTOの管理もルート毎で行う。ルート毎にRTOの管理を行うことにより、特定ルート上で発生するビットエラーやリンク切断が原因でタイムアウトが発生しても、指数的バックオフ法の処理の原因となる連続したタイムアウトが発生する可能性は低くなる。なぜなら、特定ルート上で発生したリンク切断はルートの削除処理を引き起し、ルートに関連するRTOの発生回数もルート削除と供に初期化されるためである。従って、特別な処理を追加しなくても、指数的バックオフ法の発生を抑えることが可能である。
またさらに、検出したルート間で品質の差が大きい場合の対処方法について以下に説明する。上述の問題点Dの第4項目で述べたように、検出したルート間でデータ転送時間(RTT)の差が大きい場合、一時的にデータ転送がストップする可能性がある。通常トポロジーに基づくルートの品質を表す値としては、データ転送時間(RTT)、パケットロス率、/遅延等が挙げられる。さらに、MR−SCTP処理部20では、無線アドホック無線ネットワーク上での通信を前提にしており、無線アドホック無線ネットワークでは上記以外の重要な値として、ホップ数が用いられる。MR−SCTP処理部20では検出したルートの評価を行うために以下のルートのホップ数に基づいた制限を追加した。
MR−DSR処理部20から通知されたルート情報にはルートに対応するホップ数が含まれているため、MR−SCTP処理部20は所定のしきい値(設定により変更可能)の制限以上のルートは利用せずルート情報を廃棄する。ただし、MR−DSR処理部20ではしきい値以上のルート(MR−SCTP処理部20で廃棄したルート)に関しても保持しているために、MR−SCTP処理部20が保持しているルートが全て利用不可の状態になりデフォルトルート(RID=0;MR−DSR処理部10で管理する)に転送を任せた時点で、それらのルートが使用される。ただし、その際には、MR−SCTP処理部20は新規にルート情報を通知されない限り、デフォルトルートのみを利用し続ける。複数のルートを同時に利用することは無い。従って、ルート上記の問題によりデータ転送が止まることは無い。また、この仕組みはしきい値(ホップ数)の値により式(15)及び式(16)に影響を与える可能性があり、次式のごとく修正する必要がある。
[数17]
Trall=max(Tri)+Σj(Trj) (17)
Trall=max(Tri)+Σj(Trj) (17)
ここで、jはしきい値以上のルートである。もし、しきい値以上のホップ数のルートが多く存在していた場合(max(Tri)≪Σj(Trj))は、通常の単一ルートの場合に比べてルートエラー検出時間に差が無くなる可能性がある。
以上詳述したように、本発明に係る無線ネットワークのための制御装置及び制御方法によれば、トランスポート層の所定のプロトコルを用いて1つのデータの複数のパケットを送信元通信端末装置から宛先通信端末装置に伝送する無線ネットワークの制御装置及び制御方法であって、上記データの各パケットに対して、ルートを識別するルート識別子(RID)と、ルート毎のシーケンス番号であるルートシーケンス番号(RSN)とを付して、上記各パケットを複数のルートを介して伝送するように制御する。ここで、例えば、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、ルート識別子(RID)に基づいて、ルート毎のデータ転送時間(RTT)を計算するルート毎の再送タイマーを含み、再送時刻を管理し、また、宛先通信端末装置からの、同一の送信データに対する所定の複数回の選択的肯定確認応答(SACK)メッセージに応答して、上記各選択的肯定確認応答(SACK)メッセージに含まれるルート識別子(RID)及びルートシーケンス番号(RSN)に基づいて、再送マークを付与して高速再送信で当該送信データの再送処理を実行する。それ故、例えばアドホック無線ネットワークなどの無線ネットワークにおいて、1つのアソシエーションに属する複数のパケットを複数のルートを用いて、従来技術に比較して効率的に伝送することができ、データ転送全体のスループットを向上できる。
1…アンテナ、
2…無線送信部、
10…MR−DSR処理部、
11…コントローラ、
12…アドホックルーティングプロトコル処理部、
12a…受信バッファメモリ、
12b…送信バッファメモリ、
20…MR−SCTP処理部、
21…コントローラ、
21a…通信制御データメモリ、
22…プロトコルインターフェース、
23…バンドル/アンバンドル処理部、
24…ルート毎輻輳制御部、
25…アソシエーションフロー制御部、
26…アソシエーションバッファ部、
27…フラグメント/リアッセンブリ処理部、
30…上位層装置、
50,50A,50B…エンドポイント装置。
2…無線送信部、
10…MR−DSR処理部、
11…コントローラ、
12…アドホックルーティングプロトコル処理部、
12a…受信バッファメモリ、
12b…送信バッファメモリ、
20…MR−SCTP処理部、
21…コントローラ、
21a…通信制御データメモリ、
22…プロトコルインターフェース、
23…バンドル/アンバンドル処理部、
24…ルート毎輻輳制御部、
25…アソシエーションフロー制御部、
26…アソシエーションバッファ部、
27…フラグメント/リアッセンブリ処理部、
30…上位層装置、
50,50A,50B…エンドポイント装置。
Claims (30)
- トランスポート層の所定のプロトコルを用いて1つのデータの複数のパケットを送信元通信端末装置から宛先通信端末装置に伝送する無線ネットワークの制御装置であって、
上記データの各パケットに対して、ルートを識別するルート識別子(RID)と、ルート毎のシーケンス番号であるルートシーケンス番号(RSN)とを付して、上記各パケットを複数のルートを介して伝送するように制御する制御手段を備えたことを特徴とする無線ネットワークの制御装置。 - 上記制御手段は、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、ルート識別子(RID)に基づいて、ルート毎のデータ転送時間(RTT)を計算するルート毎の再送タイマーを含み、再送時刻を管理することを特徴とする請求項1記載の無線ネットワークの制御装置。
- 上記制御手段は、宛先通信端末装置からの、同一の送信データに対する所定の複数回の選択的肯定確認応答(SACK)メッセージに応答して、上記各選択的肯定確認応答(SACK)メッセージに含まれるルート識別子(RID)及びルートシーケンス番号(RSN)に基づいて、再送マークを付与して高速再送信で当該送信データの再送処理を実行することを特徴とする請求項1又は2記載の無線ネットワークの制御装置。
- 上記制御手段は、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、上記選択的肯定確認応答(SACK)で通知されたルート識別子(RID)で示されたルートを介して送信データを再送することを特徴とする請求項1乃至3のうちのいずれか1つに記載の無線ネットワークの制御装置。
- 上記制御手段は、宛先通信端末装置からの、ルート削除の通知メッセージを受信したときに、上記通知されたルートにおいて再送マークが付された送信データがあるとき、当該送信データを他のルートを介して再送することを特徴とする請求項3又は4記載の無線ネットワークの制御装置。
- 上記制御手段は、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、ルート識別子(RID)に基づいて、ルート毎の輻輳ウィンドウ値(CWND)を計算することを特徴とする請求項1乃至5のうちのいずれか1つに記載の無線ネットワークの制御装置。
- 上記制御手段は、各ルートに送信している送信データを把握し、全てのルートにおける伝送中の送信データのデータサイズを計算し、上記計算した当該全てのルートにおける伝送中の送信データのデータサイズに基づいてフロー制御することを特徴とする請求項1乃至6のうちのいずれか1つに記載の無線ネットワークの制御装置。
- 上記制御手段は、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージにより通知された受信バッファサイズから、上記計算した当該全てのルートにおける伝送中の送信データのデータサイズと、新規に送信するデータのサイズとを減算した値が0以上であるときに、当該新規に送信するデータを送信することを特徴とする請求項7記載の無線ネットワークの制御装置。
- 上記制御手段は、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージにより通知された受信バッファサイズが0であるときに、上記計算した全てのルートにおける伝送中の送信データのデータサイズが0でないとき、当該ルートを介して送信データを送信することを中止するように制御することを特徴とする請求項7又は8記載の無線ネットワークの制御装置。
- 上記制御手段は、宛先通信端末装置からの、ルート削除の通知メッセージを受信したときに、通常ルート処理における削除済み状態に遷移し、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、当該ルートを介して伝送中の送信データのデータサイズが0でないとき、送信データを他のルートで当該ルートの輻輳ウィンドウ値の範囲で再送する一方、当該ルートを介して伝送中の送信データのデータサイズが0となったとき、当該ルートを削除することを特徴とする請求項1乃至9のうちのいずれか1つに記載の無線ネットワークの制御装置。
- 上記制御手段は、通常ルート処理における削除済み状態にあるときに、宛先通信端末装置からの、ルート追加の通知メッセージを受信したときに、通常ルート処理における待機削除状態に遷移し、当該待機削除状態において、宛先通信端末装置からの、ルート削除の通知メッセージを受信したときに、通常ルート処理における削除済み状態に戻ることを特徴とする請求項10記載の無線ネットワークの制御装置。
- 上記制御手段は、デフォルトルートの初期状態においてルート追加の通知メッセージを受信したとき待機初期状態となり、当該待機初期状態においてHEARTBEAT−ACKメッセージを受信して再送すべきデータがあり再送できれば、確立済み状態に遷移し、また、デフォルトルート処理の初期状態においてデフォルトルートのルート識別子(RID)であって当該状態が確立済みになったとき、HEARTBEATメッセージを送信して、デフォルトルート処理の停止状態に遷移し、当該停止状態においてデフォルトルートのルート識別子(RID)であって他のルートが全て確立済み以外の状態になったときHEARTBEATメッセージを送信して待機初期状態に遷移することを特徴とする請求項1乃至11のうちのいずれか1つに記載の無線ネットワークの制御装置。
- 上記制御手段は、上記確立済み状態においてデフォルトルートのルート識別子(RID)であって他のルートのいずれかの状態確立済み状態になったとき削除済みデフォルト状態に遷移し、再送タイマーが計時終了し選択的肯定確認応答(SACK)メッセージを受信しかつ当該デフォルトルートを介して伝送中の送信データのデータサイズが0となったとき停止状態に遷移することを特徴とする請求項12記載の無線ネットワークの制御装置。
- 上記プロトコルはSCTP(Stream Control Transmission Protocol)であることを特徴とする請求項1乃至13のうちのいずれか1つに記載の無線ネットワークの制御装置。
- トランスポート層の所定のプロトコルを用いて1つのデータの複数のパケットを送信元通信端末装置から宛先通信端末装置に伝送する無線ネットワークの制御方法であって、
上記データの各パケットに対して、ルートを識別するルート識別子(RID)と、ルート毎のシーケンス番号であるルートシーケンス番号(RSN)とを付して、上記各パケットを複数のルートを介して伝送するように制御する制御ステップを含むことを特徴とする無線ネットワークの制御方法。 - 上記制御ステップは、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、ルート識別子(RID)に基づいて、ルート毎のデータ転送時間(RTT)を計算するルート毎の再送タイマーを含み、再送時刻を管理することを特徴とする請求項15記載の無線ネットワークの制御方法。
- 上記制御ステップは、宛先通信端末装置からの、同一の送信データに対する所定の複数回の選択的肯定確認応答(SACK)メッセージに応答して、上記各選択的肯定確認応答(SACK)メッセージに含まれるルート識別子(RID)及びルートシーケンス番号(RSN)に基づいて、再送マークを付与して高速再送信で当該送信データの再送処理を実行することを特徴とする請求項15又は16記載の無線ネットワークの制御方法。
- 上記制御ステップは、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、上記選択的肯定確認応答(SACK)で通知されたルート識別子(RID)で示されたルートを介して送信データを再送することを特徴とする請求項15乃至17のうちのいずれか1つに記載の無線ネットワークの制御方法。
- 上記制御ステップは、宛先通信端末装置からの、ルート削除の通知メッセージを受信したときに、上記通知されたルートにおいて再送マークが付された送信データがあるとき、当該送信データを他のルートを介して再送することを特徴とする請求項17又は18記載の無線ネットワークの制御方法。
- 上記制御ステップは、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、ルート識別子(RID)に基づいて、ルート毎の輻輳ウィンドウ値(CWND)を計算することを特徴とする請求項15乃至19のうちのいずれか1つに記載の無線ネットワークの制御方法。
- 上記制御ステップは、各ルートに送信している送信データを把握し、全てのルートにおける伝送中の送信データのデータサイズを計算し、上記計算した当該全てのルートにおける伝送中の送信データのデータサイズに基づいてフロー制御することを特徴とする請求項15乃至20のうちのいずれか1つに記載の無線ネットワークの制御方法。
- 上記制御ステップは、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージにより通知された受信バッファサイズから、上記計算した当該全てのルートにおける伝送中の送信データのデータサイズと、新規に送信するデータのサイズとを減算した値が0以上であるときに、当該新規に送信するデータを送信することを特徴とする請求項21記載の無線ネットワークの制御方法。
- 上記制御ステップは、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージにより通知された受信バッファサイズが0であるときに、上記計算した全てのルートにおける伝送中の送信データのデータサイズが0でないとき、当該ルートを介して送信データを送信することを中止するように制御することを特徴とする請求項21又は22記載の無線ネットワークの制御方法。
- 上記制御ステップは、宛先通信端末装置からの、ルート削除の通知メッセージを受信したときに、通常ルート処理における削除済み状態に遷移し、宛先通信端末装置からの、送信パケットに対する選択的肯定確認応答(SACK)メッセージに応答して、当該ルートを介して伝送中の送信データのデータサイズが0でないとき、送信データを他のルートで当該ルートの輻輳ウィンドウ値の範囲で再送する一方、当該ルートを介して伝送中の送信データのデータサイズが0となったとき、当該ルートを削除することを特徴とする請求項15乃至23のうちのいずれか1つに記載の無線ネットワークの制御方法。
- 上記制御ステップは、通常ルート処理における削除済み状態にあるときに、宛先通信端末装置からの、ルート追加の通知メッセージを受信したときに、通常ルート処理における待機削除状態に遷移し、当該待機削除状態において、宛先通信端末装置からの、ルート削除の通知メッセージを受信したときに、通常ルート処理における削除済み状態に戻ることを特徴とする請求項24記載の無線ネットワークの制御方法。
- 上記制御ステップは、デフォルトルートの初期状態においてルート追加の通知メッセージを受信したとき待機初期状態となり、当該待機初期状態においてHEARTBEAT−ACKメッセージを受信して再送すべきデータがあり再送できれば、確立済み状態に遷移し、また、デフォルトルート処理の初期状態においてデフォルトルートのルート識別子(RID)であって当該状態が確立済みになったとき、HEARTBEATメッセージを送信して、デフォルトルート処理の停止状態に遷移し、当該停止状態においてデフォルトルートのルート識別子(RID)であって他のルートが全て確立済み以外の状態になったときHEARTBEATメッセージを送信して待機初期状態に遷移することを特徴とする請求項15乃至25のうちのいずれか1つに記載の無線ネットワークの制御方法。
- 上記制御ステップは、上記確立済み状態においてデフォルトルートのルート識別子(RID)であって他のルートのいずれかの状態確立済み状態になったとき削除済みデフォルト状態に遷移し、再送タイマーが計時終了し選択的肯定確認応答(SACK)メッセージを受信しかつ当該デフォルトルートを介して伝送中の送信データのデータサイズが0となったとき停止状態に遷移することを特徴とする請求項26記載の無線ネットワークの制御方法。
- 上記プロトコルはSCTP(Stream Control Transmission Protocol)であることを特徴とする請求項15乃至28のうちのいずれか1つに記載の無線ネットワークの制御方法。
- 請求項1乃至28のうちのいずれか1つに記載の無線ネットワークの制御方法における各ステップを含むことを特徴とする制御プログラム。
- 請求項29記載の制御プログラムを格納したことを特徴とするコンピュータで読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004287783A JP2006101428A (ja) | 2004-09-30 | 2004-09-30 | 無線ネットワークの制御装置及び制御方法、制御プログラム並びに記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004287783A JP2006101428A (ja) | 2004-09-30 | 2004-09-30 | 無線ネットワークの制御装置及び制御方法、制御プログラム並びに記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006101428A true JP2006101428A (ja) | 2006-04-13 |
Family
ID=36240780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004287783A Withdrawn JP2006101428A (ja) | 2004-09-30 | 2004-09-30 | 無線ネットワークの制御装置及び制御方法、制御プログラム並びに記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006101428A (ja) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008072763A1 (ja) * | 2006-12-15 | 2008-06-19 | Panasonic Corporation | 無線通信装置 |
WO2010131419A1 (ja) | 2009-05-11 | 2010-11-18 | 日本電気株式会社 | 通信装置および通信制御方法 |
JP2010539800A (ja) | 2007-09-11 | 2010-12-16 | クゥアルコム・インコーポレイテッド | 無線ネットワークのためのキープアライブ |
JP2011523525A (ja) * | 2008-05-02 | 2011-08-11 | パイン ヴァレー インヴェストメンツ,インコーポレイテッド | ハートビート信号生成システム及び方法 |
JP2012516664A (ja) * | 2009-01-29 | 2012-07-19 | クゥアルコム・インコーポレイテッド | データ・オーバフローを回避するように受信機バッファを適応させるための方法および装置 |
US8340052B2 (en) | 2007-12-05 | 2012-12-25 | Innovative Sonic Limited | Method for improving discontinuous reception for a wireless communication system and related communication device |
US8509088B2 (en) | 2009-09-16 | 2013-08-13 | Fujitsu Limited | Communication apparatus and communication method |
JP2014239482A (ja) * | 2007-01-22 | 2014-12-18 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | ネットワークベースモビリティ管理システムのためのマルチリンクサポート |
JPWO2014083739A1 (ja) * | 2012-11-28 | 2017-01-05 | パナソニックIpマネジメント株式会社 | 受信端末および受信方法 |
JP2018137680A (ja) * | 2017-02-23 | 2018-08-30 | 株式会社デンソー | 通信システム及び中継装置 |
JP7335966B2 (ja) | 2019-02-05 | 2023-08-30 | カーサシステムズ インコーポレイテッド | ネットワーク関連付け情報を回復するための方法及び装置 |
-
2004
- 2004-09-30 JP JP2004287783A patent/JP2006101428A/ja not_active Withdrawn
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8266658B2 (en) | 2006-12-15 | 2012-09-11 | Panasonic Corporation | Wireless communication device automatically connecting for HDMI devices |
JP2008252929A (ja) * | 2006-12-15 | 2008-10-16 | Matsushita Electric Ind Co Ltd | 無線通信装置 |
WO2008072763A1 (ja) * | 2006-12-15 | 2008-06-19 | Panasonic Corporation | 無線通信装置 |
JP2014239482A (ja) * | 2007-01-22 | 2014-12-18 | クゥアルコム・インコーポレイテッドQualcomm Incorporated | ネットワークベースモビリティ管理システムのためのマルチリンクサポート |
JP2010539800A (ja) | 2007-09-11 | 2010-12-16 | クゥアルコム・インコーポレイテッド | 無線ネットワークのためのキープアライブ |
US8340052B2 (en) | 2007-12-05 | 2012-12-25 | Innovative Sonic Limited | Method for improving discontinuous reception for a wireless communication system and related communication device |
US8427989B2 (en) | 2007-12-05 | 2013-04-23 | Innovative Sonic Limited | Method for improving discontinuous reception for a wireless communication system and related communication device |
KR101268993B1 (ko) * | 2007-12-05 | 2013-05-29 | 이노베이티브 소닉 리미티드 | 무선 통신 시스템을 위한 불연속 수신의 개선 방법 및 관련된 통신 기기 |
JP2011523525A (ja) * | 2008-05-02 | 2011-08-11 | パイン ヴァレー インヴェストメンツ,インコーポレイテッド | ハートビート信号生成システム及び方法 |
US8724486B2 (en) | 2008-05-02 | 2014-05-13 | Pine Valley Investments, Inc. | System and method for heartbeat signal generation |
JP2012516664A (ja) * | 2009-01-29 | 2012-07-19 | クゥアルコム・インコーポレイテッド | データ・オーバフローを回避するように受信機バッファを適応させるための方法および装置 |
US9137160B2 (en) | 2009-01-29 | 2015-09-15 | Qualcomm Incorporated | Method and apparatus for accomodating a receiver buffer to prevent data overflow |
WO2010131419A1 (ja) | 2009-05-11 | 2010-11-18 | 日本電気株式会社 | 通信装置および通信制御方法 |
US8923119B2 (en) | 2009-05-11 | 2014-12-30 | Nec Corporation | Communication apparatus and communication control method |
US8509088B2 (en) | 2009-09-16 | 2013-08-13 | Fujitsu Limited | Communication apparatus and communication method |
JPWO2014083739A1 (ja) * | 2012-11-28 | 2017-01-05 | パナソニックIpマネジメント株式会社 | 受信端末および受信方法 |
JP2018137680A (ja) * | 2017-02-23 | 2018-08-30 | 株式会社デンソー | 通信システム及び中継装置 |
US11019097B2 (en) | 2017-02-23 | 2021-05-25 | Denso Corporation | Communication system and repeater |
JP7335966B2 (ja) | 2019-02-05 | 2023-08-30 | カーサシステムズ インコーポレイテッド | ネットワーク関連付け情報を回復するための方法及び装置 |
US11750725B2 (en) | 2019-02-05 | 2023-09-05 | Casa Systems, Inc. | Methods and apparatus for recovering network association information |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lindgren et al. | Probabilistic routing protocol for intermittently connected networks | |
JP4248550B2 (ja) | マルチtcp確認応答を用いたtcp輻輳制御システム及びその方法 | |
Perkins et al. | Ad hoc on-demand distance vector (AODV) routing | |
Johnson | Routing in ad hoc networks of mobile hosts | |
Perkins et al. | RFC3561: Ad hoc on-demand distance vector (AODV) routing | |
KR100592412B1 (ko) | 실시간 트래픽 특성을 고려하여 큐를 관리하는 액세스네트워크 장치 및 그 큐 관리 방법 | |
Mast et al. | A survey of performance enhancement of transmission control protocol (TCP) in wireless ad hoc networks | |
JP2006101428A (ja) | 無線ネットワークの制御装置及び制御方法、制御プログラム並びに記録媒体 | |
US7203162B2 (en) | Link state retransmission mechanism | |
Ye et al. | SCTP congestion control performance in wireless multi-hop networks | |
Thubert | IPv6 over low-power wireless personal area network (6LoWPAN) selective fragment recovery | |
US20030137948A1 (en) | Retransmission control in wireless packet data networks | |
Ayadi et al. | Improving distributed TCP caching for wireless sensor networks | |
Natani et al. | TCP For wireless networks | |
Subramani et al. | Improving congestion control performance and fairness in multihop ad hoc network | |
Heimlicher et al. | The transport layer revisited | |
JP2005086525A (ja) | アドホックネットワークにおける通信方式 | |
Anastasi et al. | Towards a novel transport protocol for ad hoc networks | |
Heimlicher et al. | Saft: Reliable transport in mobile networks | |
Li et al. | Analysis and improvement of TCP performance in opportunistic networks | |
Sridhara et al. | Evaluating Different Techniques to Improve TCP Performance over Wireless Ad Hoc Networks | |
JP4853862B2 (ja) | 通信装置 | |
EP1601152A1 (en) | Method and apparatus for transmitting data packets in a communication network | |
Donckers et al. | Enhancing energy efficient tcp by partial reliability | |
Thubert | RFC 8931: IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) Selective Fragment Recovery |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20071204 |