説明

通信装置、通信システム、パケット欠落検出方法、およびパケット欠落検出プログラム

【課題】送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、前記受信機において、1段のみのシーケンス番号の管理を用いて、パケットロスを高速に検出する。
【解決手段】本発明の通信装置は、順序確認を行うまでパケットを蓄積する、網ごとに複数設置された順序バッファと、前記順序バッファのすべてに1つ以上のパケットが蓄積された場合に欠落が発生したと判定する欠落検出部を備える。このような構成を採用し、前記欠落検出部において、パケットロスが発生した場合はすべての網の順序バッファにパケットが格納される特性に着目し、網毎に設置した順序保証バッファへのパケット滞留状態を監視する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数経路にデータを分散させて帯域拡大を図る通信技術に関し、特に、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1系統のみのシーケンス番号を用いて、パケットロス(欠落)を高速に検出するための通信装置、通信システム、パケット欠落検出方法、およびパケット欠落検出プログラムに関する。
【背景技術】
【0002】
従来、送信端末と受信端末の間の通信で用いられる1つの通信フローのデータを複数のフローに分岐させ、元のフローを復元する通信方法がある。このような通信方法として、例えば送信端末が属する第1のLAN(Local Area Network)と受信端末が属する第2のLANに、それぞれゲートウェイを設置し、送信端末から送出されたTCP(Transmission Control Protocol)コネクションのデータを、第1のLANのゲートウェイにおいてパケット単位でそれぞれの通信経路に振り分け、第2のLANのゲートウェイでは複数の通信経路から受信したパケットの順序逆転をTCPのシーケンス番号に従って補正してデータを復元する方法が提案されている(たとえば、特許文献1参照。)。
【0003】
また、従来、複数の通信回線を効率的に利用し、回線利用率を向上させる方法として、端末のTCPに機能を追加して、従来では1本のTCPコネクションを用いていた通信を複数のTCPコネクションを利用するように変更する方法がある(例えば、特許文献2参照)。この方法では、送信端末と受信端末間の通信で1つの通信フローで行われていた通信を、複数の通信フローに分割して並列的に送る。送信端末から受信端末へとデータを送信する場合、送信端末の通信プロトコルは、1つの通信フローのデータを分割して複数の通信フローに振り分け、分割した複数の通信フローを元の1つの通信フローに復元するための復元情報として新たなヘッダをTCP/IPパケットに付加して(つまり2系統のシーケンス番号を用いて)、複数の通信フローでデータを送信する。受信端末の通信プロトコルは、複数の通信フローから受信したデータの復元情報を参照し、1つの通信フローを復元する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2000−261478号公報
【特許文献2】特開2003−110604号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
第1の課題として、パケットロスの検出が遅いという問題があった。
【0006】
従来技術1の通信方法では、端末のTCPが1つの通信経路で使用されることを前提として、シーケンス(順序)異常により欠落判定を行うように設計されているため、複数の通信経路を用いて通信を行うと、通信経路の遅延時間の差により順序逆転が発生した場合に、パケット欠落(パケットロス、パケット廃棄も同義)が発生したと誤検出してしまう。つまり、パケット廃棄か順序逆転かを見極められない。この問題に対処するために、シーケンス(順序)異常による欠落判定を行わないようにすると、再送タイムアウトを用いた欠落判定しかできなくなるため、パケットロスの検出が遅くなるという問題があった。
【0007】
TCPはパケットロスの検出を再送の契機としているため、パケットロスの検出が遅くなると、再送の開始も遅くなり、結果としてスループットが低下し、通信経路の性能を充分に発揮することができない。
【0008】
第2の課題として、コスト増を招くという問題があった。
【0009】
従来技術2の通信方法では、2段のヘッダを設け、2系統のシーケンス番号を用いる必要があり、2系統のシーケンス番号を用いると、転送処理ならびに管理機構などが複雑化し、コスト増を招くという問題があった。
【0010】
本発明の目的は、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1系統のみのシーケンス番号を用いて、パケットロスを高速に検出する(つまり、1系統のみのシーケンス番号を用いて、パケット廃棄か順序逆転かを高速に見極められるようにする)ための通信装置、通信システム、パケット欠落検出方法、およびパケット欠落検出プログラムを提供することにある。
【課題を解決するための手段】
【0011】
本発明の第1の観点によれば、送信機と受信機が、網内でのパケット順序逆転が発生しない複数の網で接続されている場合において、順序確認を行うまでパケットを蓄積する、網ごとに複数設置された順序バッファと、パケットに付加されたシーケンス番号を確認し、フローの順序を復元しながら前記順序バッファよりパケットを取り出す取出制御部と、前記順序バッファがあふれた場合に欠落が発生したと判定する、網ごとに複数設置された格納制御部を備えることを特徴とする通信装置が提供される。
【0012】
本発明の第2の観点によれば、送信機と受信機が、網内でのパケット順序逆転が発生しない複数の網で接続されている場合において、順序確認を行うまでパケットを蓄積する、網ごとに複数設置された順序バッファと、パケットに付加されたシーケンス番号を確認し、フローの順序を復元しながら前記順序バッファよりパケットを取り出す取出制御部と、前記順序バッファがあふれた場合に欠落が発生したと判定する、網ごとに複数設置された格納制御部と、網毎の帯域と遅延時間より前記順序バッファの容量を決定する容量決定部と、前記遅延時間を計算するために時刻情報を提供する内蔵時計を備えることを特徴とする通信装置が提供される。
【0013】
本発明の第3の観点によれば、送信機と受信機が、網内でのパケット順序逆転が発生しない複数の網で接続されている場合において、前記受信機が順序確認を行うまでパケットを蓄積する、網ごとに複数設置された順序バッファと、パケットに付加されたシーケンス番号を確認し、フローの順序を復元しながら前記順序バッファよりパケットを取り出す取出制御部と、前記順序バッファがあふれた場合に欠落が発生したと判定する、網ごとに複数設置された格納制御部を備えることを特徴とする通信システムが提供される。
【0014】
本発明の第4の観点によれば、送信機と受信機が、網内でのパケット順序逆転が発生しない複数の網で接続されている場合において、前記受信機が、順序確認を行うまでパケットを蓄積する、網ごとに複数設置された順序バッファと、パケットに付加されたシーケンス番号を確認し、フローの順序を復元しながら前記順序バッファよりパケットを取り出す取出制御部と、前記順序バッファがあふれた場合に欠落が発生したと判定する、網ごとに複数設置された格納制御部と、網毎の帯域と遅延時間より前記順序バッファの容量を決定する容量決定部と、前記遅延時間を計算するために時刻情報を提供する内蔵時計を備え、前記送信機が、前記容量決定部が遅延時間を計算するためにパケットヘッダ内に送信時刻を書き込む振り分け部と、前記遅延時間を計算するための時刻情報を提供する内蔵時計を備えることを特徴とする通信システムが提供される。
【0015】
本発明の第5の観点によれば、送信機と受信機が、網内でのパケット順序逆転が発生しない複数の網で接続されている場合において、前記受信機が、順序確認を行うまで網ごとの順序バッファにパケットを蓄積し、前記順序バッファがあふれた場合に欠落が発生したと、網ごとに複数設置された格納制御部を用いて判定することを特徴とするパケット欠落検出方法が提供される。
【0016】
本発明の第6の観点によれば、送信機と受信機が、網内でのパケット順序逆転が発生しない複数の網で接続されている場合において、前記受信機が、順序確認を行うまで網ごとの順序バッファにパケットを蓄積し、前記順序バッファがあふれた場合に欠落が発生したと、網ごとに複数設置された格納制御部を用いて判定し、網毎の帯域と遅延時間より前記順序バッファの容量を決定することを特徴とするパケット欠落検出方法が提供される。
【0017】
本発明の第7の観点によれば、送信機と受信機が、網内でのパケット順序逆転が発生しない複数の網で接続されている場合において、前記受信機が、順序確認を行うまで網ごとの順序バッファにパケットを蓄積し、前記順序バッファがあふれた場合に欠落が発生したと、網ごとに複数設置された格納制御部を用いて判定することを特徴とするパケット欠落検出方法をコンピュータに行わせるためのプログラムが提供される。
【0018】
本発明の第8の観点によれば、送信機と受信機が、網内でのパケット順序逆転が発生しない複数の網で接続されている場合において、前記受信機が、順序確認を行うまで網ごとの順序バッファにパケットを蓄積し、前記順序バッファがあふれた場合に欠落が発生したと、網ごとに複数設置された格納制御部を用いて判定し、網毎の帯域と遅延時間より前記順序バッファの容量を決定することを特徴とするパケット欠落検出方法をコンピュータに行わせるためのプログラムが提供される。
【発明の効果】
【0019】
次に、本発明の効果について説明する。
【0020】
第1の効果は、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1段のみのシーケンス番号の管理を用いて、パケットロスを高速に検出することができる。
【0021】
これは、前記受信機内の欠落検出部において、パケットロスが発生した場合はすべての網の順序バッファにパケットが格納される特性に着目し、網毎に設置した順序保証バッファへのパケット滞留状態を監視するからである。
【0022】
また、これは、前記受信機内の格納制御部において、異常発生時は順序バッファからのパケット取出が行えず、バッファあふれが発生する特性に着目し、網毎に設置した順序バッファのあふれを監視するからである。
【0023】
また、これは、前記受信機内の格納制御部において、異常発生時は順序バッファからのパケット取出が行えず、バッファあふれが発生する特性に着目し、網毎に設置した順序バッファのあふれを監視して障害検出する際に、前記受信機内の容量決定部において、順序バッファの大きさを網間の遅延差と帯域から必要最小限になるように設定するからである。
【0024】
第2の効果は、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1段のみのシーケンス番号の管理を用いて、パケットロス時の再送を高速に開始することができる。
【0025】
これは、前記受信機内の欠落検出部において、パケットロスが発生した場合はすべての網の順序バッファにパケットが格納される特性に着目し、網毎に設置した順序保証バッファへのパケット滞留状態を監視することで、再送タイマによらない高速な欠落検出を行えるからである。
【0026】
また、これは、前記受信機内の格納制御部において、異常発生時は順序バッファからのパケット取出が行えず、バッファあふれが発生する特性に着目し、網毎に設置した順序バッファのあふれを監視し、バッファあふれを再送開始の契機とするからである。
【0027】
また、これは、前記受信機内の格納制御部において、異常発生時は順序バッファからのパケット取出が行えず、バッファあふれが発生する特性に着目し、網毎に設置した順序バッファのあふれを監視してバッファあふれを再送開始の契機とする際に、前記受信機内の容量決定部において、順序バッファの大きさを網間の遅延差と帯域から必要最小限になるように設定するからである。
【図面の簡単な説明】
【0028】
【図1】本発明の第1の実施の形態の構成を示すブロック図である。
【図2】取出制御部22における順序確認動作221を示す流れ図である。
【図3】取出制御部22における欠落検出動作222を示す流れ図である。
【図4】欠落検出動作222の正常時の動作例を示すブロック図である。
【図5】欠落検出動作222の異常時の動作例を示すブロック図である。
【図6】本発明の第2の実施の形態の構成を示すブロック図である。
【図7】取出制御部22Aにおける順序確認動作221Aを示す流れ図である。
【図8】取出制御部22Aにおける欠落検出動作222Aを示す流れ図である。
【図9】取出制御部22Aにおけるパケット取出動作223を示す流れ図である。
【図10】欠落検出動作222Aの正常時の動作例を示すブロック図である。
【図11】欠落検出動作222Aの異常時の動作例を示すブロック図である。
【図12】本発明の第3の実施の形態の構成を示すブロック図である。
【図13】格納制御部271の動作を示す流れ図である。
【図14】本発明の第4の実施の形態の構成を示すブロック図である。
【図15】本発明の第5の実施の形態の構成を示すブロック図である。
【図16】格納制御部271Aの動作を示す流れ図である。
【発明を実施するための形態】
【0029】
以下、図面を参照して本発明を実施するための形態について詳細に説明する。
【0030】
以下の説明においては、1対の送信機と受信機との間の通信を、1フローと定義する。また、あるフローが流れる経路をパスと定義する。例えば、1フローを4つの網(ネットワーク)に分散させて通信する場合は、4パスを用いて通信すると言い、2つのフローを4つの網(ネットワーク)に分散させて通信する場合は、8つのパスを用いて通信するという。ただし以下の説明では、1つのフローに着目して説明を行うため、結果的に網とパスが同義になっている。
【0031】
(第1の実施の形態)
(構成の説明)
図1を参照して、本実施の形態における構成について説明する。
【0032】
送信機1は、データ送信部11、SEQ付与部12、再送バッファ13、振り分け部14、再送タイマ15を備える。
【0033】
データ送信部11は、受信機2に対して送信するデータを生成し、SEQ付与部12に渡す。一般的にはサーバアプリケーションなどが、データ送信部にあたる。
【0034】
SEQ付与部12は、データ送信部12から受信機2に対して送信するデータを受け取り、前記データを網31〜網34で転送可能な大きさに分割し、分割した個々のデータ(以下パケットと呼ぶ)に対して転送に必要なヘッダや整序番号(シーケンスナンバーともいう、以下SEQと表記する)を設定し、再送バッファ13に渡す。
【0035】
再送バッファ13は、FIFOバッファであり、以下の動作をおこなう。
【0036】
(1)SEQ付与部12からSEQつきのパケットを受け取り格納する。
【0037】
(2)あらかじめ決められた速度や個数にしたがい、前記パケットの複製を振り分け部14に送る。このとき、再送タイマ15をセットする。
【0038】
(3)ACK送信部23より送達確認(ACK)を受け取り、ACKに記載された受信済シーケンスナンバー以下の値の格納パケットを消去する。このとき、再送タイマ15を再セットする。
【0039】
(4)(3)において、もしACKに記載されたシーケンスナンバーが、前回受信したACKに記載されたシーケンスナンバーと同一である場合は、再送要求(重複ACK)であるとみなし、ACKに記載されたシーケンスナンバー以降のパケットを、(2)と同様あらかじめ決められた速度や個数にしたがい、前記パケットの複製を振り分け部14に再送信する。
【0040】
(5)再送タイマ15の満了時に、前回受信したACKに記載されたシーケンスナンバー以降のパケットを、(2)と同様あらかじめ決められた速度や個数にしたがい、前記パケットの複製を振り分け部14に再送信する。
【0041】
振り分け部14は、再送バッファ13から到着したパケットを、ラウンドロビンにより網31〜34に順次振り分ける。
【0042】
再送タイマ15は、再送バッファ13からセット要求を受信すると、あらかじめ設定された時間が経過した際に、再送バッファ13に対してタイマ満了通知を行う。
【0043】
受信機2は、順序バッファ211〜214、欠落検出部20、取出制御部22、ACK送信部23、出力バッファ24、SEQ削除部25、データ受信部26を備える。
【0044】
順序バッファ211は、FIFOバッファであり、網31からパケットを受信して一旦格納し、取出制御部22に格納完了通知を行う。また取出制御部22からの指示に従い、出力バッファ24に格納したパケットを転送する。
【0045】
順序バッファ211は、網31より到着したパケットのシーケンスナンバーと、前回に網31より到着したパケットのシーケンスナンバーを比較して、今回到着したパケットのSEQが、前回到着したパケットのSEQより小さいか、もしくは同じである場合は、再送が発生したとみなして、格納済パケットをすべて廃棄する。
【0046】
順序バッファ212は、FIFOバッファであり、網32からパケットを受信して一旦格納し、取出制御部22に格納完了通知を行う。また取出制御部22からの指示に従い、出力バッファ24に格納したパケットを転送する。
【0047】
順序バッファ212は、網32より到着したパケットのシーケンスナンバーと、前回に網32より到着したパケットのシーケンスナンバーを比較して、今回到着したパケットのSEQが、前回到着したパケットのSEQより小さいか、もしくは同じである場合は、再送が発生したとみなして、格納済パケットをすべて廃棄する。
【0048】
順序バッファ213は、FIFOバッファであり、網33からパケットを受信して一旦格納し、取出制御部22に格納完了通知を行う。また取出制御部22からの指示に従い、出力バッファ24に格納したパケットを転送する。
【0049】
順序バッファ213は、網33より到着したパケットのシーケンスナンバーと、前回に網33より到着したパケットのシーケンスナンバーを比較して、今回到着したパケットのSEQが、前回到着したパケットのSEQより小さいか、もしくは同じである場合は、再送が発生したとみなして、格納済パケットをすべて廃棄する。
【0050】
順序バッファ214は、FIFOバッファであり、網34からパケットを受信して一旦格納し、取出制御部22に格納完了通知を行う。また取出制御部22からの指示に従い、出力バッファ24に格納したパケットを転送する。
【0051】
順序バッファ214は、網34より到着したパケットのシーケンスナンバーと、前回に網34より到着したパケットのシーケンスナンバーを比較して、今回到着したパケットのSEQが、前回到着したパケットのSEQより小さいか、もしくは同じである場合は、再送が発生したとみなして、格納済パケットをすべて廃棄する。
【0052】
欠落検出部20は、取出制御部22からパケット取出完了の通知を受けると、パケットロスの有無を確認する。もしパケットロスを発見した場合は、ACK送信部23に対して再送要求を行う。
【0053】
取出制御部22は、順序バッファ211〜214からの格納完了通知を受け、順序確認動作221を行い、SEQの順番に従い、出力バッファ24へパケットを転送する。このとき、ACK送信部23に対して、出力バッファ24に転送したパケットのSEQを通知する。
【0054】
ACK送信部23は、以下の動作を行う。なお本願では出力バッファ24へ1パケット転送が完了する毎に1パケットのACKを送信する1ACK方式で説明を行うが、N(Nは1以上)個のパケット到着報告を1つのACKでまとめて行うN_ACK方式を用いても良い。
【0055】
(1)取り出し制御部22から出力バッファ24に転送したパケットのSEQ通知を受け、前記SEQを含む送達確認パケット(以下ACKと示す)を生成し、再送バッファ13に通知する。このときACKは、網31〜34のいずれかを用いて通知する。また、通知を受けたSEQを記憶しておく。
【0056】
(2)欠落検出部20から再送要求を受け、(1)で記憶したSEQを含むACKを再度生成し、再送バッファ13に通知する。このときACKは、網31〜34のいずれかを用いて通知する。(2)におけるACKは、再送バッファ13において重複ACK(再送要求)として扱われる。(2)のACKは複製の上、網31〜34の全部を用いて転送しても良いが、この場合は、再送バッファ13において再送が頻発しないよう、再送バッファ13において、ロック機構を設ける必要がある。
【0057】
出力バッファ24は、FIFOバッファであり、順序バッファ211〜214よりパケットを受け取り格納する。そしてSEQ削除部25から要求があった際に、格納された順にSEQ削除部25に出力する。
【0058】
SEQ削除部25は、出力バッファ24よりパケットを受け取り、SEQやヘッダを削除して、SEQ削除後のデータをデータ受信部26に転送する。
【0059】
データ受信部26は、SEQ削除部26よりデータを受信する。一般的にはクライアントアプリケーションとも呼ばれる。
【0060】
網31は、送信機1と受信機2の間を結ぶネットワークである。網31はイーサネット(登録商標)など、網内でのパケットの順序逆転が発生しない網であるとする。図1において網31は1本の線で表現されているが、実際には網内でのパケット順序逆転が発生しない限り、リンクの他に、スイッチ等が存在しても良い。また、網31、32、33、34はそれぞれ物理的、もしくはVLAN等で論理的に遮断されており、互いに交わることがない。
【0061】
網32〜網34は、網31と同様のネットワークである。
【0062】
(動作の説明)
図2の流れ図を参照して、取出制御部22における順序確認動作221を説明する。
【0063】
順序バッファ211〜214の何れかに1つのパケットが格納されると、取出制御部22に格納完了通知が行われ、順序確認動作221が起動する(ステップ22101)。
【0064】
順序バッファ211の先頭(出力バッファ24側)に格納されているパケットのSEQを確認する(ステップ22102)。
【0065】
ステップ22102において確認した順序バッファ211の先頭パケットのSEQ(先頭SEQ)と、順序制御部22が次に出力バッファ24に送信しようとしているSEQ(受信期待SEQ、以下期待SEQと記す)を比較する(ステップ22103)。
【0066】
ステップ22103において先頭SEQと期待SEQが一致した場合には、順序バッファ211より前記パケットを取り出して、出力バッファ24に送付する(ステップ22104)。
【0067】
ACK送信部23に対して、送達確認パケット(ACK)の送信を要求する。このACKには期待SEQのSEQが格納され、期待SEQまでの受信と整序が完了したことを送信機1に通知する(ステップ22105)。
【0068】
期待SEQをインクリメントする。つまり、期待SEQ=期待SEQ+1とする(ステップ22106)。
【0069】
ステップ22107〜22111は、順序バッファ212に関して、ステップ22102〜22106と同様の動作を行う。
【0070】
ステップ22112〜22116は、順序バッファ213に関して、ステップ22102〜22106と同様の動作を行う。
【0071】
ステップ22117〜22121は、順序バッファ214に関して、ステップ22102〜22106と同様の動作を行う。
【0072】
ステップ22102〜ステップ22121の実行中に、順序バッファから取り出して出力バッファへ送付したパケットの数をカウントし、もし1以上である場合には(ステップ22122でYES)、再度ステップ22102以降を実行する。もし順序バッファから取り出して出力バッファへ送付したパケットの数が0である場合、つまり出力バッファ23に転送可能な(つまり整序可能な)パケットが、順序バッファ211〜214のいずれにも存在しない場合(ステップ22122でNO)、ステップ22123を実行する。
【0073】
欠落検出部20にパケット取出完了を通知し、欠落検出動作を起動する(ステップ22123)。
【0074】
図3の流れ図を参照して、欠落検出部20の動作を説明する。
【0075】
順序確認動作221の完了により、欠落検出動作が起動する(ステップ2001)。
【0076】
順序バッファ211に格納されているパケットの個数を確認する(ステップ2002)。
【0077】
もし順序バッファ211に格納されているパケットの数が0である場合は、動作を終了する。格納パケット数が1以上である場合は、ステップ2004に移る(ステップ2003)。
【0078】
ステップ2004およびステップ2005は、順序バッファ212に関して、ステップ2002およびステップ2003と同様の動作を行う。
【0079】
ステップ2006およびステップ2007は、順序バッファ213に関して、ステップ2002およびステップ2003と同様の動作を行う。
【0080】
ステップ2008およびステップ2009は、順序バッファ214に関して、ステップ2002およびステップ2003と同様の動作を行う。
【0081】
ステップ2002〜2009を実行した結果、順序バッファ211〜214の全てにおいて、1つ以上のパケットの格納が確認された場合(ステップ2009でYES)、ACK送信部に対して再送要求を行う。ACK送信部は、前回送信したACKと同じSEQが含まれるACK(重複ACK)を生成し、送信機1に対して再送要求を行う(ステップ2010)。
【0082】
(動作例)
(動作概要)
以下、図1を参照して、本実施の形態における送信機1および送信機2の動作概要を説明する。
【0083】
送信機1において、データ送信部11が、データ受信部26に対するデータを生成し、SEQ付与部12に送付する。
【0084】
SEQ付与部12は、データ送信部12からのデータを、網31〜34で転送可能な大きさに分割してヘッダを取り付けてパケットを生成する。さらに受信機2がデータを復元できるよう、パケットに対して整序のためにシーケンスナンバー(SEQ)を割り振り、再送バッファ13に転送する。
【0085】
再送バッファ13は、SEQ付与部12よりパケットを受け取り一旦格納する。そしてあらかじめ設定された送信レートやウインドウサイズ等に従って、格納したパケットの複製を振り分け部14に送出する。
【0086】
振り分け部14は、再送バッファ13から受け取ったパケットを、ラウンドロビン等により網31〜34の各網に分散させて送出する。例えばSEQ15のパケットは網31、SEQ16のパケットは網32、SEQ17のパケットは網33、SEQ18のパケットは網34というように、一連のSEQが付加されたパケットを、網31〜34に振り分ける。
【0087】
網31〜34は送信機1から送出されたパケットを、受信機2に送る。
【0088】
順序バッファ211は、網31から到着したパケットを格納し、取出制御部22に格納完了を通知する。取出制御部22は、順序バッファ211からの格納完了通知を受け、順序確認動作221を起動する。
【0089】
順序バッファ212〜214も同様に、網32〜34より到着したパケットを格納し、取出制御部22に格納完了を通知する。そして取出制御部22は、順序バッファ212〜214からの格納完了通知を受け、順序確認動作221を起動する。
【0090】
順序確認動作221は、順序バッファ211〜214の先頭に格納されているパケットのSEQを調べ、次に出力バッファ24に送るべきSEQと一致した場合は、このパケットを取り出して出力バッファ24に送り、ACK送信部に対してACKの送信を要求する。例えば以前にSEQ=5まで出力バッファ24に転送完了していた場合、順序バッファ211〜214の何れかの先頭に、SEQ=6のパケットが格納されていた場合は、これを取り出して出力バッファ24に転送し、SEQ=6のACK送信を要求する。
【0091】
順序確認動作221は、もし出力バッファに転送すべきパケットを順序バッファ211〜214のいずれにおいても発見出来なかった場合は、欠落検出部20に取出完了を通知する。
【0092】
欠落検出部20は、順序バッファ211〜214に格納されているパケットの個数を調べ、もし全ての順序バッファにおいてパケットの格納が確認された場合は、ACK送信部に対して再送要求を行う。
【0093】
出力バッファ24は、順序バッファ211〜214よりパケットを受信し、SEQ削除部25からの要求により、FIFO方式でパケットを取り出して転送する。
【0094】
SEQ削除部25は、出力バッファ24からパケットを取り出し、ヘッダ(SEQを含む)を削除して、データをデータ受信部26に転送する。
【0095】
データ受信部26は、SEQ削除部25からのデータを受け取り、各種処理を行う。
【0096】
再送バッファ13は、網31〜34のいずれかを経由して、ACK送信部23よりACKを受信した場合、ACKに含まれるSEQを確認する。
【0097】
再送バッファ13は、もし前回受信したACKのSEQよりも大きなSEQが含まれる場合は、当該SEQまでのパケットを再送バッファ13から消去する。もし前回受信したACKのSEQと同じSEQが含まれていた場合は、重複ACK(再送要求)であるとみなし、ただちに再送バッファに格納されているパケットを、SEQの若いものから順に再送信する。
【0098】
(正常時の欠落検出動作例)
以下、図4を参照して、パケットロス無し(正常時)における欠落検出部20の動作例を説明する。
【0099】
図4では、網33において、網31〜34よりも大きな遅延が発生し、SEQ=6のパケットの到着が遅れている場合の例を示している。
【0100】
網31、32、34は、網33よりも遅延が少ないため、順序バッファ211、212、214に対して、網33を経由する場合よりもパケットが速く到達する。
【0101】
図4においては、順序確認動作221により、SEQ1〜SEQ5までのパケットが、出力バッファ24に転送され、これらパケットに対して、ACK送信部23より、ACK1〜ACK5が送出されている。
【0102】
図4の状態においては、パケット6は網33上にあり、順序バッファ213には格納されていないため、SEQ=5のパケットが出力バッファ24に転送された時点で、順序確認動作221が完了し、欠落検出部20に取出完了が通知される。
【0103】
欠落検出部20は、順序バッファ211〜214に格納されているパケットの個数を調べる。ここで順序バッファ213に格納されているパケットの個数が0であることから、欠落は発生していないとみなして、動作を完了する。
【0104】
以上に示したように、網31〜網34の各網内での順序逆転が発生しない場合において、パケットロスが発生していない場合は、順序バッファ211〜214のいずれか1つ以上のバッファは必ず空になる。
【0105】
順序バッファ211〜214は、パケットロスが発生していない状況では、網31〜34の遅延時間の差に相当するパケットが蓄積されるので、最も遅延している網(図4では網33)のパケットを格納する順序バッファ(図4では順序バッファ213)の格納パケットは0になる。
【0106】
(異常時の欠落検出動作例)
以下、図5を参照して、パケットロス発生時(異常時)における欠落検出部20の動作例を説明する。
【0107】
図5では、網33において、SEQ=6のパケットが欠落(ロス)した場合の例を示している。
【0108】
また、網33は他の網よりも遅延が大きく、網31、32、34は、網33よりも遅延が少ないため、順序バッファ211、212、214に対して、網33を経由する場合よりもパケットが速く到達するとする。
【0109】
図5において、SEQ1〜SEQ5までのパケットの順序確認が完了して出力バッファ24に転送され、これらパケットに対して、ACK送信部23より、ACK1〜ACK5が送出されているとする。
【0110】
ここで順序バッファ213に、欠落したSEQ=6のパケットの次に網33に送出されたSEQ=12のパケットが格納されると、順序確認動作221が起動する。しかしながら出力バッファ24に送出できるパケットがないので、ただちに欠落検出部20に取出完了通知が行われる。
【0111】
欠落検出部20は、順序バッファ211〜214に格納されているパケットの個数を調べる。ここで順序バッファ213を含む全ての順序バッファ内にパケットの格納を確認し、欠落が発生しているとみなして、ACK送信部23に対して再送要求を行う。
【0112】
ACK送信部23は、欠落検出部20からの再送要求を受け、前回送出したACK(ACK=5)と同じSEQ=5を含むACKを送信する。送信機1は、同じ番号のACKが連続して届くため、再送要求があったと判断して、再送バッファ内のパケットの再送を行う。
【0113】
以上に示したように、網31〜網34の各網内での順序逆転が発生しない場合において、パケットロスが発生した場合は、順序バッファ211〜214のすべての順序バッファにパケットが格納される。この特性により、パケットロスを判定することで、高速な再送要求を行う事ができる。
【0114】
マルチパス環境において、本実施形態に記載のパケットロス判定がない場合は、受信機2が送信機1に対して再送要求を行う事ができないため、送信機1は再送タイマ15を用いて再送を行うしかない。しかしながら、一般的に再送タイマ15は、誤動作を防止するために最低でも1RTT以上の大きな値を設定する必要があるため、再送開始までに時間がかかる。このため、本実施形態に記載のパケットロス判定機構を用いると、再送タイマよりも高速な欠落検出および再送を行なえる。
【0115】
(本実施形態の効果)
次に、本実施の形態の効果について説明する。
【0116】
本実施の形態に挙げた発明を利用すると、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1段のみのシーケンス番号の管理を用いて、パケットロスを高速に検出することができる。
【0117】
これは、前記受信機内の欠落検出部において、パケットロスが発生した場合はすべての網の順序バッファにパケットが格納される特性に着目し、網毎に設置した順序保証バッファへのパケット滞留状態を監視するからである。
【0118】
また、本実施の形態に挙げた発明を利用すると、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1段のみのシーケンス番号の管理を用いて、パケットロス時の再送を高速に開始することができる。
【0119】
これは、前記受信機内の欠落検出部において、パケットロスが発生した場合はすべての網の順序バッファにパケットが格納される特性に着目し、網毎に設置した順序保証バッファへのパケット滞留状態を監視することで、再送タイマによらない高速な欠落検出を行えるからである。
【0120】
(第2の実施の形態)
本発明の第2の実施の形態は、第1の実施の形態における出力バッファ24が存在せず、順序バッファ211〜214が出力バッファ24を兼ねる場合、もしくは順序バッファ211〜214からの取出速度が遅い場合の形態である。
【0121】
(構成の説明)
図6を参照して、本実施の形態における構成について説明する。
【0122】
送信機1は、第1の実施の形態と同様の構成を有し、同様の動作を行う。
【0123】
受信機2は、第1の実施の形態における出力バッファ24が存在せず、欠落検出部20が欠落検出部20Aとなり、取出制御部22が取出制御部22Aとなる点において実施形態1の受信機2と異なる。
【0124】
欠落検出部20Aは、取出制御部22Aからの取出完了通知を受けると、パケットロスの有無を確認する。もしパケットロスを発見した場合は、ACK送信部23に対して再送要求を行う。
【0125】
取出制御部22Aは、以下の動作を行う。
【0126】
(1)順序バッファ211〜214からの格納完了通知を受け、順序確認動作221Aを行い、SEQの順番が正しい場合は、取出待数をインクリメントする。このとき、ACK送信部23に対して、取出待ちとしたパケットのSEQを通知する。
【0127】
(2)パケット取出動作223を行い、SEQ削除部25からの要求により、パケットを取り出してSEQ削除部25に転送する。
【0128】
(動作の説明)
図7の流れ図を参照して、取出制御部22Aにおける順序確認動作221Aを説明する。
【0129】
順序バッファ211〜214の何れかに1つのパケットが格納されると、取出制御部22に格納完了通知が行われ、順序確認動作221が起動する(ステップ22101)。
【0130】
順序バッファ211の先頭(出力バッファ24側)に格納されているパケットのSEQを確認する(ステップ22102)。
【0131】
ステップ22102において確認した順序バッファ211の先頭パケットのSEQ(先頭SEQ)と、順序制御部22が次に順序確認しようとしているSEQ(受信期待SEQ、以下期待SEQと記す)を比較する(ステップ22103)。
【0132】
ステップ22103において先頭SEQと期待SEQが一致した場合には、順序バッファ211の取出待数をインクリメントする(ステップ22104A)。
【0133】
ACK送信部23に対して、送達確認パケット(ACK)の送信を要求する。このACKには期待SEQのSEQが格納され、期待SEQまでの受信と整序が完了したことを送信機1に通知する(ステップ22105)。
【0134】
期待SEQをインクリメントする。つまり、期待SEQ=期待SEQ+1とする(ステップ22106)。
【0135】
ステップ22107〜22111は、順序バッファ212に関して、ステップ22102〜22106と同様の動作を行う。
【0136】
ステップ22112〜22116は、順序バッファ213に関して、ステップ22102〜22106と同様の動作を行う。
【0137】
ステップ22117〜22121は、順序バッファ214に関して、ステップ22102〜22106と同様の動作を行う。
【0138】
ステップ22102〜ステップ22121の実行中に、取出待数をインクリメントした回数をカウントし、もし1以上である場合には(ステップ22122AでYES)、再度ステップ22102以降を実行する。もし順序バッファから取り出して出力バッファへ送付したパケットの数が0である場合(ステップ22122AでNO)、つまり出力バッファ23に転送可能な(つまり整序可能な)パケットが、順序バッファ211〜214のいずれにも存在しない場合、ステップ22123Aを実行する。
【0139】
欠落検出部20Aに取出完了を通知する(ステップ22123A)。
【0140】
図8の流れ図を参照して、取出制御部22Aにおけるパケット取出動作222を説明する。
【0141】
SEQ削除部25からのパケット取出要求により、パケット取出動作222が起動する(ステップ22201)。
【0142】
順序バッファ211の先頭(SEQ削除部25側)に格納されているパケットのSEQを確認する(ステップ22202)。
【0143】
ステップ22202において確認した順序バッファ211の先頭パケットのSEQ(先頭SEQ)と、順序制御部22が次に取り出してSEQ削除部25に送信しようとしているSEQ(取出待SEQ)を比較する(ステップ22203)。
【0144】
ステップ22203において先頭SEQと取出待SEQが一致した場合には、順序バッファ211より前記パケットを取り出して、SEQ削除部25送付する(ステップ22204)。
【0145】
順序バッファ211の取出待数をデクリメントする(ステップ22205)。
【0146】
取出待SEQをインクリメントする。なお、取出待数と取出待SEQは異なるパラメーターである(ステップ22206)。
【0147】
ステップ22207〜22211は、順序バッファ212に関して、ステップ22202〜22206と同様の動作を行う。
【0148】
ステップ22212〜22216は、順序バッファ213に関して、ステップ22202〜22206と同様の動作を行う。
【0149】
ステップ22217〜22221は、順序バッファ214に関して、ステップ22202〜22206と同様の動作を行う。
【0150】
図9の流れ図を参照して、欠落検出部20Aの動作を説明する。
【0151】
順序確認動作221Aの完了により、欠落検出動作が起動する(ステップ2001A)。
【0152】
順序バッファ211に格納されているパケットの個数を確認する(ステップ2002)。
【0153】
もし順序バッファ211に格納されているパケットの数−順序バッファ211の取出待数が0である場合は、動作を終了する。格納パケット数−取出待数が1以上である場合は、ステップ2004に移る(ステップ2003A)。
【0154】
ステップ2004およびステップ2005Aは、順序バッファ212に関して、ステップ2002およびステップ2003Aと同様の動作を行う。
【0155】
ステップ2006およびステップ2007Aは、順序バッファ213に関して、ステップ2002およびステップ2003Aと同様の動作を行う。
【0156】
ステップ2008およびステップ2009Aは、順序バッファ214に関して、ステップ2002およびステップ2003Aと同様の動作を行う。
【0157】
ステップ2002〜2009Aを実行した結果、順序バッファ211〜214の全てにおいて、格納数−取出待数の合計が1以上の場合、ACK送信部に対して再送要求を行う。ACK送信部は、前回送信したACKと同じSEQが含まれるACK(重複ACK)を生成し、送信機1に対して再送要求を行う(ステップ2010)。
【0158】
(動作例)
(正常時の欠落検出動作例)
以下、図10を参照して、パケットロス無し(正常時)における欠落検出部20Aの動作例を説明する。
【0159】
図10では、網33において、網31〜34よりも大きな遅延が発生し、SEQ=12のパケットの到着が遅れている場合の例を示している。
【0160】
網31、32、34は、網33よりも遅延が少ないため、順序バッファ211、212、214に対して、網33を経由する場合よりもパケットが速く到達する。
【0161】
図10においては、順序確認動作221Aにより、SEQ1〜SEQ11までのパケットの順序確認が完了し、これらパケットに対して、ACK送信部23より、ACK1〜ACK11が送出されている。さらに、パケット取出動作222により、SEQ1〜SEQ3までのパケットが、SEQ削除部25に転送されている。SEQ4〜SEQ11のパケットは、既に順序確認が完了しているが、順序バッファ211〜214において、SEQ削除部25からの取出要求を待っている。
【0162】
図10の状態においては、パケット12は網33上にあり、順序バッファ213には格納されていないため、SEQ=11のパケットの順序確認が完了した時点で、順序確認動作221Aが完了し、欠落検出部20Aに取出完了が通知される。
【0163】
欠落検出部20Aは、順序バッファ211〜214に格納されているパケットの個数と、取出待となっているパケットの個数を調べる。順序バッファ211、212、214においては、格納パケット数が3、取出待数が2であるが、順序バッファ213においては、格納パケット数が2、取出待数が2であるため、格納パケット数−取出待数が0であることから、欠落は発生していないとみなして、動作を完了する。
【0164】
以上に示したように、網31〜網34の各網内での順序逆転が発生しない場合において、パケットロスが発生していない場合は、順序バッファ211〜214のいずれか1つ以上のバッファにおいて、格納パケット数−取出待数は必ず0になる。
【0165】
順序バッファ211〜214は、パケットロスが発生していない状況では、網31〜34の遅延時間の差に相当するパケットが蓄積されるので、最も遅延している網(図10では網33)のパケットを格納する順序バッファ(図10では順序バッファ213)の格納パケットは0になる。
【0166】
(異常時の欠落検出動作例)
以下、図11を参照して、パケットロス発生時(異常時)における欠落検出動作222Aの動作例を説明する。
【0167】
図5では、網33において、SEQ=12のパケットが欠落(ロス)した場合の例を示している。
【0168】
また、網33は他の網よりも遅延が大きく、網31、32、34は、網33よりも遅延が少ないため、順序バッファ211、212、214に対して、網33を経由する場合よりもパケットが速く到達するとする。
【0169】
図11においては、順序確認動作221Aにより、SEQ1〜SEQ11までのパケットの順序確認が完了し、これらパケットに対して、ACK送信部23より、ACK1〜ACK11が送出されている。さらに、パケット取出動作223により、SEQ1〜SEQ3までのパケットが、SEQ削除部25に転送されている。SEQ4〜SEQ11のパケットは、既に順序確認が完了しているが、順序バッファ211〜214において、SEQ削除部25からの取出要求を待っている。
【0170】
ここで順序バッファ213に、欠落したSEQ=12のパケットの次に網33に送出されたSEQ=20のパケットが格納されると、順序確認動作221Aが起動する。しかしながら順序確認できるパケットがないので、ただちに欠落検出動作222Aが起動する。
【0171】
欠落検出動作222Aは、順序バッファ211〜214に格納されているパケットの個数を調べる。ここで順序バッファ213を含む全ての順序バッファにおいて、格納パケット数が3、取出待数が2であるため、格納パケット数−取出待数が1であることから、欠落が発生しているとみなして、ACK送信部23に対して再送要求を行う。
【0172】
ACK送信部23は、取出制御部22内の欠落検出動作222Aからの再送要求を受け、前回送出したACK(ACK=11)と同じSEQ=11を含むACKを送信する。送信機1は、同じ番号のACKが連続して届くため、再送要求があったと判断して、再送バッファ内のパケットの再送を行う。
【0173】
以上に示したように、網31〜網34の各網内での順序逆転が発生しない場合において、パケットロスが発生した場合は、順序バッファ211〜214のすべての順序バッファにおいて、格納パケット数−取出待数>0となる。この特性により、パケットロスを判定することで、高速な再送要求を行う事ができる。
【0174】
(本実施形態の効果)
次に、本実施の形態の効果について説明する。
【0175】
本実施の形態に挙げた発明を利用すると、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1段のみのシーケンス番号の管理を用いて、パケットロスを高速に検出することができる。
【0176】
これは、前記受信機内の欠落検出部において、パケットロスが発生した場合はすべての網の順序バッファにパケットが格納される特性に着目し、網毎に設置した順序保証バッファへのパケット滞留状態を監視するからである。
【0177】
また、本実施の形態に挙げた発明を利用すると、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1段のみのシーケンス番号の管理を用いて、パケットロス時の再送を高速に開始することができる。
【0178】
これは、前記受信機内の欠落検出部において、パケットロスが発生した場合はすべての網の順序バッファにパケットが格納される特性に着目し、網毎に設置した順序保証バッファへのパケット滞留状態を監視することで、再送タイマによらない高速な欠落検出を行えるからである。
【0179】
(第3の実施の形態)
本発明の第3の実施の形態は、第1の実施の形態における網31〜34と順序バッファ211〜214の間に、格納制御部271〜274を設け、順序バッファがあふれによるパケット欠落検出を行う形態である。
【0180】
なお、本実施の形態における欠落検出と、第1の実施の形態における欠落検出(欠落検出動作222)は、どちらか一方のみ用いることも、両方を併用することもできる。以降の説明では、順序確認動作221が完了しても、欠落検出動作222を行わない(第1の実施の形態における欠落検出を併用しない)ものとして説明する。
【0181】
(構成の説明)
図12を参照して、本実施の形態における構成について説明する。
【0182】
送信機1は、第1の実施の形態と同様の構成を有し、同様の動作を行う。
【0183】
受信機2は、第1の実施の形態における網31〜34と順序バッファ211〜214の間に、格納制御部271〜274が存在する点において異なる。
【0184】
格納制御部271は、以下に示す動作を行う。
【0185】
(1)網31より到着したパケットのシーケンスナンバーと、前回に網31より到着したパケットのシーケンスナンバーを比較して、今回到着したパケットのSEQが、前回到着したパケットのSEQより小さいか、もしくは同じである場合は、再送が発生したとみなして、格納済パケットをすべて廃棄する。
【0186】
(2)網31からのパケット到着時に、順序バッファ211の格納済パケット数を確認し、もしも到着パケットを格納すると、最大格納可能数を超える場合は、格納済パケットを全て廃棄し、再送要求を行う。
【0187】
(動作の説明)
図13の流れ図を参照して、格納制御部271における動作を説明する。
【0188】
網31からパケットが到着すると、格納制御動作が起動する(ステップ27101)。
【0189】
今回到着したパケットのシーケンスナンバーと、前回到着したパケットのシーケンスナンバーを比較する(ステップ27101)。
【0190】
今回到着したパケットのSEQが、前回到着したパケットのSEQより小さいか、同じである場合は、再送が発生したと判断し、順序バッファ211に格納中のパケットを全て廃棄する。このとき、第2の実施の形態に記した取出待パケットがある場合は、取出待パケットは廃棄せず、取出待パケット以外の残りを全て廃棄する(ステップ27103)。
【0191】
次回にパケットが到着した際、ステップ27102の判断を行うために、今回到着したパケットのSEQを記録しておく(ステップ27104)。
【0192】
順序バッファ211に格納されているパケット数を確認する(ステップ27105)。
【0193】
順序バッファ211に格納されているパケット数(格納済パケット数)と、順序バッファ211の最大格納可能数を比較する(ステップ27106)。
【0194】
もし格納済パケット数と最大格納可能数が等しい場合は、今回到着したパケットを格納すると、順序バッファがあふれてしまうため、順序バッファ211に格納中のパケットを全て廃棄する。このとき、第2の実施の形態に記した取出待パケットがある場合は、取出待パケットは廃棄せず、取出待パケット以外の残りを全て廃棄する(ステップ27107)。
【0195】
ステップ27107における廃棄により、パケットが欠落したため、ACK送信部23に対して再送要求を行う。この時点で格納制御部の動作を終了(END)しても良いし、ステップ27109で今回到着したパケットを格納しても良い。なお今回到着したパケットを格納した場合は、当ステップで送信した再送要求に呼応した再送が行われると、ステップ27103の再送検出動作により、このパケットは廃棄される(ステップ27108)。
【0196】
順序バッファ211に、今回到着したパケットを格納する(ステップ27109)。
【0197】
順序確認動作221を起動する(ステップ27110)。
【0198】
(動作例)
(順序バッファあふれ時の動作例)
図12を用いて、順序バッファ211があふれる場合の動作について説明する。
【0199】
図12において、順序バッファ211に最大格納可能数と等しい数のパケットが既に蓄積されている状態であるとする。また、格納制御部271に前回(最後に)到着したパケットのSEQは、26であるとする。また、順序バッファ211の最大格納可能数は40であるとする。また、SEQ=55までの順序確認が完了し、ACK=55が送信されているとする。
【0200】
上記の状態において、網31から受信機2にパケット(SEQ=133)が到着すると、そのパケットは格納制御部271に引き渡される。
【0201】
格納制御部271は、まず到着したパケットのSEQ(133)と前回到着したパケットのSEQ(126)を比較し、SEQが前回より大きくなっていることから、再送は発生していないと判断する。
【0202】
格納制御部271は、つぎに順序バッファ211の格納済パケット数を確認する。すると、現在40個のパケットが格納されており、これは最大格納可能数と等しいことから、すでに格納済のパケット40個を全て廃棄し、ACK送信部23に再送要求を行う。
【0203】
ACK送信部23は、格納制御部271からの再送要求を受け、ACK送信部23内に保存されている前回送信したACKのSEQ(55)と同じSEQを含むACK(ACK=55)を送信する。
【0204】
送信機1内の再送バッファ13は、受信機2からのACK=55を受信する。そして、このACKのSEQは、前回到着したACKのSEQと同じであることから、再送バッファ内の全てのパケットを、SEQ=56のパケットから順に、振り分け部14に対して再送する。
【0205】
振り分け部14は、再送バッファから再送されたパケットを、網31〜34に振り分ける。ここで、SEQ=56のパケットが、網31に振り分けられたとする。
【0206】
上記の状態において、網31から受信機2にパケット(SEQ=56)が到着すると、格納制御部271に引き渡される。
【0207】
格納制御部271は、まず到着したパケットのSEQ(56)と前回到着したパケットのSEQ(126)を比較し、SEQが前回より小さくなっていることから、再送が発生したと判断し、すでに順序バッファ211に格納されているパケットを全て廃棄し、今回到着したパケットを順序バッファ211に格納する。
【0208】
以上に示したように、順序バッファ211があふれた場合は、バッファフラッシュ(全廃棄)によりパケットロスが発生したと判断して再送要求を行う。
【0209】
順序保証バッファがあふれる場合は、パケットロスなどの障害により、取出制御部22が順序バッファからパケットを取り出せない場合である。このような状態では、多くの場合において再送を行わない限り、正常な状態に戻すことは難しい。また、バッファあふれになった場合に、既に順序バッファに滞留しているパケットは、再送が行われれば不要となる。
【0210】
マルチパス環境において、本実施形態に記載のパケットロス判定がない場合は、受信機2が送信機1に対して再送要求を行う事ができないため、送信機1は再送タイマ15を用いて再送を行うしかない。しかしながら、一般的に再送タイマ15は、誤動作を防止するために最低でも1RTT以上の大きな値を設定する必要があるため、再送開始までに時間がかかる。
【0211】
このため、本実施形態に記載のパケットロス判定機構を用いると、順序バッファ211があふれることにより、パケットロスを判定することで、再送タイマによるロス判定よりも高速なロス判定(再送要求)を行う事ができる。
【0212】
なお、再送によるパケットが到着した場合、シーケンスナンバーの大小により再送を判断し、再送があったと判断した場合はバッファフラッシュ(全廃棄)を行う。これにより、再送により不要となるオンザフライパケットも適切に廃棄できる。
【0213】
(本実施形態の効果)
次に、本実施の形態の効果について説明する。
【0214】
本実施の形態に挙げた発明を利用すると、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1段のみのシーケンス番号の管理を用いて、パケットロス等の異常を高速に検出することができる。
【0215】
これは、前記受信機内の格納制御部において、異常発生時は順序バッファからのパケット取出が行えず、バッファあふれが発生する特性に着目し、網毎に設置した順序バッファのあふれを監視するからである。
【0216】
また、本実施の形態に挙げた発明を利用すると、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1段のみのシーケンス番号の管理を用いて、再送を高速に開始することができる。
【0217】
これは、前記受信機内の格納制御部において、異常発生時は順序バッファからのパケット取出が行えず、バッファあふれが発生する特性に着目し、網毎に設置した順序バッファのあふれを監視し、バッファあふれを再送開始の契機とするからである。
【0218】
(第4の実施の形態)
本発明の第4の実施の形態は、第3の実施の形態に対して、順序バッファ211〜214の最大格納可能数(容量)を、網31〜34の帯域および遅延差から決定し、順序バッファあふれによる異常検出(再送開始)を高速化するものである。
【0219】
順序バッファ211〜214は、網31〜34の遅延の差分を吸収する為のものである。したがって順序バッファは、「網31〜34の往復遅延のうち最大の往復遅延と最小の往復遅延の差」と「網31〜34の帯域」の積の大きさがあればよい。もし、この大きさを超えて順序バッファ211〜214にパケットが蓄積された場合は、パケットロス等の異常が発生していると見なせる。本実施の形態は、この特性を利用して、第3の実施の形態に記した異常検出と再送開始を高速化するものである。
【0220】
(構成の説明)
図14を参照して、本実施の形態における構成について説明する。
【0221】
送信機1は、図12に記した第3の実施の形態における構成に対して、振り分け部14が振り分け部14Aになり、内蔵時計19が追加されている点において異なる。
【0222】
振り分け部14Aは、第1の実施の形態に記した振り分け部14の動作のほかに、再送バッファ13から受け取り、網31〜34にパケットを転送する際、パケットヘッダ内に内蔵時計19から提供を受けた時刻情報を記載する機能を有する。
【0223】
内蔵時計19は、送信機1に内蔵された時計であり、振り分け部14に対して時刻情報を提供する。
【0224】
受信機2は、図12に記した第3の実施の形態における構成に対して、容量決定部28および内蔵時計29が追加されている点において異なる。
【0225】
容量決定部28は、格納制御部271〜274より、網31〜34の帯域情報と到着パケットのヘッダ内に記載されているパケットの送信時刻情報を受け取り、さらに内蔵時計29から時刻情報を受け取り、各網の往復遅延時間を計算する。そして計算した往復遅延時間および帯域から、順序バッファ211〜214の最大格納可能数(容量)を決定して設定する。
【0226】
内蔵時計29は、受信機2に内蔵された時計であり、容量決定部28に対して時刻情報を提供する。内蔵時計29と内蔵時計19は同期していても、同期していなくても良い。
【0227】
(動作例)
(内蔵時計19と内蔵時計29が同期している場合)
図14を用いて、内蔵時計19と内蔵時計29が同期しており、網31にパケットが送信された場合における、容量決定部28の動作を説明する。
【0228】
送信機1内の再送バッファ13からパケットが送出され、振り分け部14Aに到着する。
【0229】
振り分け部14Aは、内蔵時計19から時刻情報を取得し、再送バッファ13より到着したパケットのヘッダに送信時刻情報を埋め込む。そして、網31に送信する。
【0230】
受信機2内の格納制御部271は、網31からパケットを受信すると、網31からの単位時間当たりの受信バイト数(受信レート、以下帯域という)と、パケット内に記載されている送信時刻情報を、容量決定部28に通知する。
【0231】
容量決定部28は、格納制御部271から帯域と送信時刻の通知を受けると、内蔵時計29から受信時刻を取得し、以下の式より網31の往復遅延時間(RTT)を計算して記録する。
【0232】
RTT=(受信時刻−送信時刻)×2
容量決定部28は、記録している網31〜34のRTTを比較し、最大のもの(最大RTT)と最小のもの(最小RTT)を調べる。そして、以下の式により順序保証バッファ211の容量を決定する。
【0233】
順序バッファ211の容量=(最大RTT−最小RTT)×網31の帯域
順序保証バッファ211は、容量決定部28から容量の通知を受けて、最大格納可能量の設定を行う(最大格納可能量は、ビット、バイト、個数など、適宜変換して設定する)。
【0234】
以上では、網31にパケットが送信された場合における、順序バッファ211の容量決定動作を例に説明したが、網32〜34にパケットが送信された場合も同様に、順序バッファ212〜214の容量を決定できる。
【0235】
上記動作により決定した順序バッファの容量は、網31〜34の遅延差を吸収できる容量となっている。もしこれを超えてパケットが蓄積されようとする場合(順序バッファあふれが発生する場合)は、パケットロス等の異常が発生していると考えられる。よって、本実施の形態に従って順序バッファ211〜214の容量をできるだけ小さく設定し、さらに実施の形態3にしたがい順序バッファ211〜214のあふれを監視することで、異常検出を高速に行い、再送タイマよりも高速な再送開始の契機とすることができる。
【0236】
(内蔵時計19と内蔵時計29が同期していない場合)
内蔵時計19と内蔵時計29が同期しておらず、内蔵時計29の時刻が内蔵時計19の時刻よりもαだけ進んでいる場合、RTTは以下のように表すことができる。
【0237】
最大RTT=(受信時刻a+α−送信時刻a)×2
最小RTT=(受信時刻b+α−送信時刻b)×2
このとき、順序バッファの容量は、以下のようになる。
【0238】
順序バッファ容量
=(最大RTT−最小RTT)×帯域
={(受信時刻a+α−送信時刻a)−(受信時刻b+α−送信時刻b)}×2×帯域
=(受信時刻a−送信時刻a−受信時刻b+送信時刻b)×2×帯域
上記の式より、αは相殺されるため、内蔵時計19と内蔵時計29が同期しておらず、内蔵時計29の時刻が内蔵時計19の時刻よりもαだけ進んでいる場合でも、順序バッファの容量を決定できる。
【0239】
(本実施形態の効果)
次に、本実施の形態の効果について説明する。
【0240】
本実施の形態に挙げた発明を利用すると、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1段のみのシーケンス番号の管理を用いて、パケットロス等の異常を高速に検出することができる。
【0241】
これは、前記受信機内の格納制御部において、異常発生時は順序バッファからのパケット取出が行えず、バッファあふれが発生する特性に着目し、網毎に設置した順序バッファのあふれを監視して障害検出する際に、前記受信機内の容量決定部において、順序バッファの大きさを網間の遅延差と帯域から必要最小限になるように設定するからである。
【0242】
また、本実施の形態に挙げた発明を利用すると、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1段のみのシーケンス番号の管理を用いて、再送を高速に開始することができる。
【0243】
これは、前記受信機内の格納制御部において、異常発生時は順序バッファからのパケット取出が行えず、バッファあふれが発生する特性に着目し、網毎に設置した順序バッファのあふれを監視してバッファあふれを再送開始の契機とする際に、前記受信機内の容量決定部において、順序バッファの大きさを網間の遅延差と帯域から必要最小限になるように設定するからである。
【0244】
(第5の実施の形態)
本発明の第5の実施の形態は、第1の実施の形態に対して、GO−BACK−Nによる再送ではなく、Selective ACKによる、欠落パケットのみの選択的な再送を行うものである。
【0245】
(構成の説明)
図15を参照して、本実施の形態における構成について説明する。
【0246】
送信機1は、図1に記した第1の実施の形態における構成に対して、再送バッファ13が再送バッファ13Aに、順序バッファ211〜214が、順序バッファ211A〜214Aに、ACK送信部23がACK送信部23Aにそれぞれ変更され、さらに追越バッファ215、格納制御部271A〜274Aがそれぞれ追加されている点において異なる。
【0247】
再送バッファ13Aは、第1の実施の形態における再送バッファ13の動作(1)〜(5)のほかに、以下の動作をおこなう。
【0248】
(6)ACK送信部23より否定送達確認(NACK)を受け取り、NACKに記載されたシーケンスナンバーの値のパケットの複製を振り分け部14に再送信する。
【0249】
順序バッファ211Aは、順序バッファ211と同様のFIFOバッファであり、網31からパケットを受信して一旦格納し、取出制御部22に格納完了通知を行う。また取出制御部22からの指示に従い、出力バッファ24に格納したパケットを転送する。しかしながら、順序バッファ211とは異なり、網31より到着したパケットのシーケンスナンバーと、前回に網31より到着したパケットのシーケンスナンバーを比較して、今回到着したパケットのSEQが、前回到着したパケットのSEQより小さいか、もしくは同じである場合は、再送が発生したとみなして、格納済パケットをすべて廃棄することは行わない。
【0250】
順序バッファ212A〜214Aは、順序バッファ211Aと同様の動作を行う。
【0251】
追越バッファ215は、格納制御部271A〜274Aより、NACKにより再送されたパケットを受け取り、取出制御部22に格納を通知する。そして取出制御部22からの指示により、格納中のパケットを出力バッファ24に転送する。なお、格納制御部22は、追越バッファ215を、順序バッファ211A〜214Aと同様のバッファとして取り扱う。
【0252】
ACK送信部23Aは、以下の動作を行う。なお本願では出力バッファ24へ1パケット転送が完了する毎に1パケットのACKを送信する1ACK方式で説明を行うが、N(Nは1以上)個のパケット到着報告を1つのACKでまとめて行うN_ACK方式を用いても良い。
【0253】
(1)取り出し制御部23から出力バッファ24に転送したパケットのSEQ通知を受け、前記SEQを含む送達確認パケット(以下ACKと示す)を生成し、再送バッファ13に通知する。このときACKは、網31〜34のいずれかを用いて通知する。また、通知を受けたSEQを記憶しておく。
【0254】
(2)欠落検出部20、および格納制御部271A〜274Aから再送要求を受け、(1)で記憶したSEQ+1の値のNACKパケット(否定確認応答パケット)を生成し、再送バッファ13Aに通知する。このときNACKは、網31〜34のいずれかを用いて通知する。(2)のNACKは複製の上、網31〜34の全部を用いて転送しても良いが、この場合は、再送バッファ13Aにおいて再送が頻発しないよう、再送バッファ13Aにロック機構などを設ける必要がある。
【0255】
格納制御部271A〜274Aは、以下に示す動作を行う。
【0256】
(1)網31より到着したパケットのシーケンスナンバーと、前回に網31より到着したパケットのシーケンスナンバーを比較して、今回到着したパケットのSEQが、前回到着したパケットのSEQより小さいか、もしくは同じである場合は、再送が発生したとみなして、当該パケットを追越バッファ215に転送する。
【0257】
(2)(1)において再送が発生していない場合は、網31から到着したパケットを、順序バッファ211Aに転送する。このとき、順序バッファ211Aの格納済パケット数を確認し、もしも到着パケットを格納すると、最大格納可能数を超える場合は、順序バッファ211Aの格納済パケットを全て廃棄し、ACK送信部23Aに対して再送要求を行う。
【0258】
(動作の説明)
図15の流れ図を参照して、格納制御部271Aにおける動作を説明する。
【0259】
格納制御部271Aの動作は、図13に示す格納制御部271の動作と比較して、ステップ27103がステップ27103Aになっている点においてことなる。
【0260】
今回到着したパケットのSEQが、前回到着したパケットのSEQより小さいか、同じである場合は、再送が発生したと判断し、到着したパケットを追越バッファ215に転送して終了する(ステップ27103A)。
【0261】
(動作例)
(異常時の欠落検出動作例)
以下、図5を参照して、パケットロス発生時(異常時)における欠落検出部20およびACK送信部23Aの動作例を説明する。図5においてはACK送信部23が記載されているが、ここではACK送信部23Aと読み替えるものとする。
【0262】
図5では、網33において、SEQ=6のパケットが欠落(ロス)した場合の例を示している。
【0263】
また、網33は他の網よりも遅延が大きく、網31、32、34は、網33よりも遅延が少ないため、順序バッファ211、212、214に対して、網33を経由する場合よりもパケットが速く到達するとする。
【0264】
図5において、SEQ1〜SEQ5までのパケットの順序確認が完了して出力バッファ24に転送され、これらパケットに対して、ACK送信部23より、ACK1〜ACK5が送出されているとする。
【0265】
ここで順序バッファ213に、欠落したSEQ=6のパケットの次に網33に送出されたSEQ=12のパケットが格納されると、順序確認動作221が起動する。しかしながら出力バッファ24に送出できるパケットがないので、ただちに欠落検出部20に取出完了通知が行われる。
【0266】
欠落検出部20は、順序バッファ211〜214に格納されているパケットの個数を調べる。ここで順序バッファ213を含む全ての順序バッファ内にパケットの格納を確認し、欠落が発生しているとみなして、ACK送信部23Aに対して再送要求を行う。
【0267】
ACK送信部23Aは、欠落検出部20からの再送要求を受け、前回送出したACK(ACK=5)に1を足したSEQ=6を含むNACK(否定送達確認)を送信する。送信機1は、NACKが届いたため、再送要求があったと判断して、SEQ=6のパケットを再送する。
【0268】
前記再送により送信されたSEQ=6のパケットは、受信機2内の格納制御部271A〜274Aにより、追越バッファ215に転送され、追越バッファ215より出力バッファ214に転送される。
【0269】
以上に示したように、欠落検出部20による欠落検出と、Selective ACKによる、欠落パケットのみの選択的な再送を組み合わせることにより、高速に障害を検知し、さらに再送時の帯域圧迫を最小限に抑えることができる。このような方式を用いることで、従来技術2よりも簡略な機構(SEQを1段のみ用いる)で、従来技術2と同等の障害検知性能、ならびに再送時に従来技術2と同等の帯域圧迫率を実現できる。
【0270】
(本実施形態の効果)
次に、本実施の形態の効果について説明する。
【0271】
本実施の形態に挙げた発明を利用すると、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1段のみのシーケンス番号の管理を用いて、パケットロスを高速に検出することができる。
【0272】
これは、前記受信機内の欠落検出部において、パケットロスが発生した場合はすべての網の順序バッファにパケットが格納される特性に着目し、網毎に設置した順序保証バッファへのパケット滞留状態を監視するからである。
【0273】
また、本実施の形態に挙げた発明を利用すると、送信機と受信機が複数の網によって接続されているマルチパス環境において、前記各網内でのパケットの順序逆転が発生しない場合に、1段のみのシーケンス番号の管理を用いて、パケットロス時の再送を高速に開始することができる。
【0274】
これは、前記受信機内の欠落検出部において、パケットロスが発生した場合はすべての網の順序バッファにパケットが格納される特性に着目し、網毎に設置した順序保証バッファへのパケット滞留状態を監視することで、再送タイマによらない高速な欠落検出を行えるからである。
【0275】
以上の実施の形態及び実施形態では、パケットという用語を用いて説明を行ったが、フレーム(イーサネット(登録商標)フレーム等)でも同様に実施できる。
【0276】
以上好ましい実施の形態及び実施形態をあげて本発明を説明したが、本発明は必ずしも上記実施の形態及び実施形態に限定されるものではなく、その技術的思想の範囲内において様々に変形して実施することができる。当然ながら、以上に述べた実施の形態及び実施形態を、相互に組み合わせて実施することもできる。
【産業上の利用可能性】
【0277】
本発明によれば、複数の網を利用して大容量のデータを高速転送するイーサネット(登録商標)スイッチやルータ等に適用できる。また、サーバ間を高速に結ぶネットワークインターフェースカード(NIC)等にも適用できる。
【符号の説明】
【0278】
1 送信機
2 受信機
11 データ送信部
12 SEQ付与部
13 再送バッファ
14 振り分け部
14A 振り分け部
15 再送タイマ
19 内蔵時計
20A 欠落検出部
22 取出制御部
22A 取出制御部
23 ACK送信部
24 出力バッファ
25 SEQ削除部
26 データ受信部
28 容量決定部
29 内蔵時計
211 順序バッファ
212 順序バッファ
213 順序バッファ
214 順序バッファ
221 順序確認動作
221A 順序確認動作
222 パケット取出部
271 格納制御部
272 格納制御部
273 格納制御部
274 格納制御部

【特許請求の範囲】
【請求項1】
送信機と受信機が、網内でのパケット順序逆転が発生しない複数の網で接続されている場合において、
順序確認を行うまでパケットを蓄積する、網ごとに複数設置された順序バッファと、
パケットに付加されたシーケンス番号を確認し、フローの順序を復元しながら前記順序バッファよりパケットを取り出す取出制御部と、
前記順序バッファがあふれた場合に欠落が発生したと判定する、網ごとに複数設置された格納制御部
を備えることを特徴とする通信装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2012−170155(P2012−170155A)
【公開日】平成24年9月6日(2012.9.6)
【国際特許分類】
【出願番号】特願2012−132057(P2012−132057)
【出願日】平成24年6月11日(2012.6.11)
【分割の表示】特願2009−270386(P2009−270386)の分割
【原出願日】平成19年8月28日(2007.8.28)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】