(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0018】
以下、図面を参照して本発明の実施の形態を説明する。
【0019】
<第1の実施の形態>
(システム構成)
図2に、第1の実施の形態におけるシステムの全体構成を示す。
図2に示すように、本実施の形態のシステムは、インターネット5と、企業内ネットワーク等のプライベートネットワーク6との境界に設置されるファイアフォール装置4、ファイアウォール装置4配下にあるトンネルクライアント機能を有するクライアント装置1、トンネルサーバ機能を有するサーバ装置2、及び、クライアント装置1と通信を行う通信相手装置3とを含む。本実施の形態では、サーバ装置2と、通信相手装置3は、インターネット5に接続されている。
【0020】
図2に示すように、クライアント装置1は、クライアント側のトンネル接続に係る処理を行うトンネル機能部11と、本発明に係るクライアント側の生存確認処理を行う生存確認機能部12と、IP電話や映像会議等の目的の通信を行うアプリケーション部13を備える。サーバ装置2は、サーバ側のトンネル接続に係る処理を行うトンネル機能部21と、本発明に係るサーバ側の生存確認処理を行う生存確認機能部22を備える。
【0021】
本実施の形態におけるクライアント装置1は、OS(オペレーティングシステム)と、上記機能部に対応するプログラム等を備えるコンピュータ(PC、携帯端末等)である。また、本実施の形態におけるサーバ装置2は、OS、上記機能部に対応するプログラム等を備えるコンピュータである。
【0022】
図3に、クライアント装置1の生存確認機能部12の機能構成を示す。
図3に示すように、生存確認機能部12は、生存確認用パケット送受信制御部121、情報格納部122、タイマー1C、タイマー2C、タイマー3C、タイマー4Cを有する。
【0023】
生存確認用パケット送受信制御部121は、生存確認のためにパケットの送受信を制御する機能部であり、タイマーを参照しながら後述するような処理動作を行う。情報格納部122は、状態(良好、応答悪化)、生存確認要求応答受領送信済みフラグを格納する。
【0024】
タイマー1Cは再接続発動タイマーであり、クライアント装置1が最終パケットを送信してから、再接続を実施するまでの時間を計測する。本実施の形態では、タイマー1Cが計測する時間として5秒程度の値を想定している。
【0025】
タイマー2Cは状態悪化判定タイマーであり、クライアント装置1が最終パケットを送信してから、その応答が返るまでの基準となる時間を計測する。本実施の形態では、タイマー2Cが計測する時間として3秒程度の値を想定している。
【0026】
タイマー3Cは生存確認要求送信兼応答受領タイマーであり、連続パケット送信時に「生存確認要求」を載せて送信する最低時間間隔を計測すると同時に、「生存確認要求応答受領」の送信までの期限を計測する。本実施の形態では、タイマー3Cが計測する時間として0.5秒程度の値を想定している。
【0027】
タイマー4Cは生存確認要求最長送信タイマーであり、長時間パケットの送信が無い場合等に単独の「生存確認要求」を送信する期限を計測する。本実施の形態では、タイマー4Cが計測する時間として10秒程度の値を想定している。
【0028】
図4に、サーバ装置2の生存確認機能部22の機能構成を示す。
図4に示すように、生存確認機能部22は、生存確認用パケット送受信制御部221、情報格納部222、タイマー2S、タイマー5Sを有する。
【0029】
生存確認用パケット送受信制御部221は、生存確認のためにパケットの送受信を制御する機能部であり、タイマーを参照しながら後述するような処理動作を行う。情報格納部222は、状態(良好、応答悪化)を格納する。
【0030】
タイマー2Sは状態悪化判定タイマーであり、サーバ装置2が「生存確認要求応答」を送信してから、「生存確認要求応答受領」をクライアント装置1から受信するまでの期限を計測する。本実施の形態では、タイマー2Sが計測する時間として3秒程度の値を想定している。
【0031】
タイマー5Sは「生存確認要求応答」タイマーであり、サーバ装置2が「生存確認要求」(単独のものを除く)を受信してから「生存確認要求応答」を送信するまでの期限を計測する。本実施の形態では、タイマー5Sが計測する時間として1秒程度の値を想定している。
【0032】
なお、「生存確認要求」と「生存確認要求応答受領」はクライアント装置1からサーバ装置2に伝達される信号であり、「生存確認要求応答」は逆にサーバ装置2からクライアント装置1に伝達される信号である。
【0033】
本実施の形態に係るクライアント装置1及びサーバ装置2のそれぞれは、CPU、記憶装置等を有するコンピュータに上記の各機能を実現するためのプログラムを実行させることにより実現できる。当該プログラムは可搬メモリ等の記録媒体からコンピュータにインストールすることとしてもよいし、ネットワーク上のサーバからダウンロードすることとしてもよい。
【0034】
また、トンネル接続を実現する方式には種々のものあるが、本発明においてトンネル接続を実現する方式は特定の方式に限定されるわけではなく、本発明は様々なトンネル接続の方式に適用可能である。
【0035】
(システムの動作)
以下では、第1の実施の形態におけるシステムの動作を説明する。以下の動作は、基本的に、クライアント装置1の生存確認機能部12と、サーバ装置2の生存確認機能部22により実行されるものである。
【0036】
図5は、システムの動作イメージを示す図である。
図5に示すように、単独の生存確認用のメッセージ(パケット)、もしくは、本来の通信データ(アプリケーションプログラムにより送受信されるデータ)であるデータパケットに付された形での生存確認用のメッセージがクライアント装置1とサーバ装置2間で送受信される。
【0037】
図6(a)〜(e)は、本実施の形態で用いられるメッセージのフォーマット例を示す図である。なお、ここで示すフォーマットは一例に過ぎず、他の種々のフォーマット、サイズ、メッセージ種別を示す値を使用可能である。
【0038】
本実施の形態では、ヘッダは1バイトのサイズとなっている。
図6(a)に示すように、「23h」が上りトンネルに流れた場合、単独の生存確認要求とみなし、下りトンネルに流れた場合、単独の生存確認要求応答とみなす。
図6(b)に示すように、ヘッダ「24h」は単独の生存確認要求応答受領とみなす。
【0039】
図6(c)〜(e)に示すように、データパケットを表すヘッダは「30h」となっており、これに生存確認要求または生存確認要求応答を重畳させた場合のヘッダは「31h」となる。また、生存確認要求応答受領を重畳させた場合のヘッダは「32h」となる。
【0040】
このように、ヘッダの一部ビットを利用することにより、オーバーヘッド無しに生存確認が可能となる。
【0041】
次に、
図7〜
図15のフローチャートを参照して、クライアント装置1、及びサーバ装置2の動作を説明する。
【0042】
図7は、クライアント装置1におけるトンネル接続時の処理、及び生存確認要求応答受信時の処理を示すフローチャートである。
図7に示すように、クライアント装置1では、トンネル接続開始直後に、状態を「良好」に設定し(ステップ1)、生存確認要求応答受領送信済みフラグを「未送信」にセットする(ステップ2)。続いて、タイマー3C(生存確認要求送信兼応答受領タイマー)、タイマー4C(生存確認要求最長送信タイマー)をスタートさせ、タイマー1C(再接続発動タイマー)、タイマー2C(状態悪化判定タイマー)を停止させる。以降、クライアント装置1における生存確認機能部12は、パケット到着やタイマー動作(タイムアウト)のイベントを契機に動作する。
【0043】
図8は、データパケット送信時の処理、及びタイマー4C(生存確認要求最長送信タイマー)のタイムアウト時の処理を示すフローチャートである。
【0044】
図8に示すように、クライアント装置1がデータパケットを送信する際に、先ずタイマー3C(生存確認要求送信兼応答受領タイマー)がタイムアウトしているか否かを判定する(ステップ11)。タイマー3Cがタイムアウトしている場合(ステップ11のYes)、生存確認要求を送付すべきと判断し、生存確認要求をデータパケットに重畳して送信し(ステップ12)、タイマー3Cを停止する(ステップ13)。
【0045】
一方、ステップ11の判定がNo、すなわちタイマー3C(生存確認要求送信兼応答受領タイマー)がタイムアウトしていなかった場合、必要に応じ、生存確認要求応答受領を送信すべきと判断し、生存確認要求応答受領送信済みフラグを検証し(ステップ14)、未送信の場合(ステップ14のNo)に限り、生存確認要求応答受領をデータパケットに重畳して送信する(ステップ15)し、生存確認要求応答受領送信済みフラグを「送信済み」にセットする。ステップ14の判定がYes、すなわち生存確認要求応答受領を送信済みであった場合、何も重畳せず、単独のデータパケットとして送信する(ステップ17)。
【0046】
ステップ13、16、17の後、タイマー4Cを停止し、タイマー1C、2Cをスタートする(ステップ19)。
【0047】
サーバ装置2から生存確認要求応答を受信した場合のクライアント装置1の処理を
図7を参照して説明する。
図7に示すとおり、サーバ装置2から生存確認要求応答を受信した場合、タイマー2C(状態悪化判定タイマー)がタイムアウトしているか否かをチェックし(ステップ4)、タイマー2Cがタイムアウトしていない場合(ステップ4のNo)に限り、状態を「良好」に設定し(ステップ1)、その後、クライアント装置1における状態をトンネル接続直後と同様に初期化する(ステップ2、3)。タイマー2Cがタイムアウトしている場合(ステップ4のYes)、状態は「状態悪化」に設定されており、その設定のまま、クライアント装置1におけるフラグ等をトンネル接続直後と同様に初期化する(ステップ2、3)。
【0048】
タイマー4C(生存確認要求最長送信タイマー)がタイムアウトした場合の処理を
図8を参照して説明する。タイマー4Cがタイムアウトした場合、これはデータパケット送信がしばらく無かったことを意味するため、生存確認要求を単独パケットとして送信する(ステップ18)。その後、タイマー4Cを停止し、タイマー1C(再接続発動タイマー)、タイマー2C(状態悪化判定タイマー)をスタートする(ステップ19)。
【0049】
図9はタイマー3C(生存確認要求送信兼応答受領タイマー)がタイムアウトした場合のクライアント装置1における処理を示すフローチャートである。タイマー3C(生存確認要求送信兼応答受領タイマー)がタイムアウトした場合、生存確認要求応答受領の送信タイミングであるから、生存確認要求応答受領送信済みフラグをチェックして送信済みか否かをチェックし(ステップ21)、送信済みでなければ(ステップ21のNo)、生存確認要求応答受領を単独パケットとして送信し(ステップ22)、生存確認要求応答受領送信済みフラグを「送信済み」にセットする(ステップ23)。
【0050】
図10はタイマー2C(状態悪化判定タイマー)がタイムアウトした場合のクライアント装置1における処理を示すフローチャートである。
図10に示すように、タイマー2C(状態悪化判定タイマー)がタイムアウトした場合、状態が悪化したと判断され、状態を「応答悪化」に設定する(ステップ31)。
【0051】
図11はタイマー1C(再接続発動タイマー)がタイムアウトした場合のクライアント装置1における処理を示すフローチャートである。
図11に示すように、タイマー1C(再接続発動タイマー)がタイムアウトした場合、新規に1本トンネル接続を行い(ステップ51)、トンネル接続時処理を行って(ステップ52)、旧トンネル接続を切断し(ステップ53)、新トンネル接続に制御を渡す。
【0052】
図12はトンネル接続時等におけるサーバ装置2の処理を示すフローチャートである。
図12に示すように、サーバ装置2では、トンネル接続時に状態を「良好」に設定し(ステップ61)、以降、以下で説明するようにイベントベースで動作する。
【0053】
図13は、生存確認要求付きデータパケットをクライアント装置1から受信した場合におけるサーバ装置2の処理を示すフローチャートである。
図13に示すように、生存確認要求付きデータパケットをクライアント装置1から受信した場合、タイマー5S(生存確認要求応答タイマー)をスタートする(ステップ71)。
図14は、生存確認要求を単独パケットとしてクライアント装置1から受信した場合等におけるサーバ装置2の処理を示すフローチャートである。
図14に示すように、生存確認要求を単独で受信した場合、サーバ装置2は、生存確認要求応答を単独でクライアント装置1に送信し(ステップ81)、タイマー2S(状態悪化判定タイマー)を(再)スタートし、タイマー5Sを停止する(ステップ84)。
【0054】
また、
図14に示すように、クライアント装置1へデータパケットを送信する時には、タイマー5S(生存確認要求応答送信タイマー)が動作中か否かを判断し(ステップ82)、動作中(ステップ82のYes)であれば、生存確認要求応答付きのデータパケットをクライアント装置1に送信し(ステップ83)、タイマー2S(状態悪化判定タイマー)を(再)スタートし、タイマー5Sを停止する(ステップ84)。タイマー5S(生存確認要求応答送信タイマー)が動作中でない場合(ステップ82のNo)、通常のデータパケット送信を行う(ステップ85)。
【0055】
図12に示すように、生存確認要求応答受領をクライアント装置1から受信した場合、タイマー2S(状態悪化判定タイマー)がタイムアウトしていない場合(ステップ62のNo)に限り、状態を「良好」に設定する(ステップ61)。
【0056】
図14に示すように、タイマー5S(生存確認要求応答送信タイマー)がタイムアウトした場合、単独の生存確認要求応答をクライアント装置1に送信し(ステップ81)、ステップ84を行う。
【0057】
また、
図15に示すように、タイマー2S(状態悪化判定タイマー)がタイムアウトした場合、状態を「応答悪化」に設定する(ステップ91)。
【0058】
次に、上述した各装置における処理手順に対応する状態の遷移について説明する。
【0059】
図16は、クライアント装置1における生存確認要求処理の状態遷移図である。
図16に示すように、「良好」の状態からタイマー2C(状態悪化判定タイマー)の経過で「応答悪化」になる(ステップ101)。タイマー1C(再接続発動タイマー)経過前でのパケット送信を契機にタイマー2Cがスタートし、タイマー2C経過前のパケット到着により「良好」の状態になる(ステップ102)。
【0060】
「応答悪化」の状態からタイマー1C(再接続発動タイマー)が経過すると、「接続不良」(※1)となり、「切断」(※2)となる(ステップ103、104)。そして、初期接続、もしくは再接続を経て「良好」の状態になる(ステップ105)。ただし、本発明の実施の形態では、接続不良と判断された場合(タイマー1Cが経過した場合)、直ちに切断するため「接続不良」状態は実効上存在しない。また、本実施の形態の構成上、「切断」状態を扱う必要がないため、フローチャート上は「切断」状態を示していない。
【0061】
図17は、サーバ装置2における生存確認要求処理の状態遷移図である。
図17に示すように、「良好」の状態からタイマー2S(状態悪化判定タイマー)の経過で「応答悪化」になる(ステップ201)。タイマー2S再スタート後、タイマー2S経過前のパケット到着により「良好」の状態になる(ステップ202)。また、「良好」もしくは「応答悪化」の状態から切断された場合に「切断」となり、その後、接続がなされる(ステップ203、204、205)。なお、前述したとおり、本実施の形態の構成上、「切断」状態を扱う必要がないため、フローチャート上は「切断」状態を示していない。
【0062】
図18は、クライアント装置1とサーバ装置2を1セットのシステムとみなし、系全体の状態遷移を表した状態遷移図である。
図18では、概ね、単独または重畳で受信する制御信号を「状態」として、タイマーのタイムアウトやパケット送信を状態遷移の条件という形で表記している。
【0063】
上記のフローチャートや状態遷移に従った処理動作を行うサーバ装置2とクライアント装置1間における生存確認動作シーケンスの一例を
図19に示す。
図19に示す例は、データパケットの通信がない場合の動作を示している。
【0064】
図19の場合、クライアント装置1においてデータパケットの送信がされないので、
図7のステップ3でスタートしたタイマー4C(生存確認要求最長送信タイマー)は、データパケットの送信を契機として停止されることはなく、タイムアウトになり、
図8のステップ18に示すとおり、単独での生存確認要求が送信される(
図19のステップ501)。生存確認要求を受信したサーバ装置2において、
図14のステップ81、84に示すとおり、単独の生存確認要求応答をクライアント装置1に送信し(
図19のステップ502)、タイマー2S(状態悪化判定タイマー)を(再)スタートする。
【0065】
生存確認要求応答を受信したクライアント装置1は、
図7に示す生存確認要求応答受信時の処理を行い、タイマー3C、4Cをスタートする。
図19の例では、データパケットに付される生存確認要求応答を受信することはないので、タイマー3Cはタイムアウトし、
図8に示すように、クライアント装置1は単独の生存確認要求応答受領をサーバ装置2に送信する(
図19のステップ503)。生存確認要求応答受領を受信したサーバ装置1では、
図12に示すように、タイマー2Sのタイムアウト確認を行うが、本例ではタイマー2Sはタイムアウトしておらず、状態は「良好」であると判断する。
【0066】
その後、クライアント装置1においてタイマー4C(生存確認要求最長送信タイマー)がタイムアウトし、生存確認要求を送信し(ステップ504)、サーバ装置2から生存確認要求応答が送信される(ステップ505)。
【0067】
このようにデータパケットの送受信がない場合、タイマー4Cにより決定される最長間隔で生存確認が繰り返される。
【0068】
生存確認動作シーケンスの他の例を
図20に示す。
図20に示す例は、データパケットの送受信がある場合の動作を示している。
【0069】
本例において、データパケットがないときには、上述した処理と同様にして、生存確認要求、生存確認要求応答、生存確認要求応答受領の送受信がなされる(ステップ601〜603)。
【0070】
クライアント装置1において送信するデータパケットがある場合、
図8に示すとおり、タイマー3C(生存確認要求送信兼応答受領タイマー)をチェックし、ここではタイムアウトしているので、生存確認要求付きデータパケットを送信する(ステップ604)。
【0071】
一方、サーバ装置2からは順次データパケットが送信されるが、
図20の例において、ステップ605に示すデータパケットは、タイマー5S(生存確認要求応答タイマー)が動作中でないため、通常のデータパケットとして送信される(
図14のステップ85)。
【0072】
ステップ604の生存確認要求付きデータパケットを受信したサーバ装置2において、
図13のステップ71に示すとおり、タイマー5S(生存確認要求応答タイマー)がスタートし、
図14のステップ83に示すとおり、データパケット送信を契機として生存確認要求応答付きデータパケットが送信され(
図20のステップ606)、タイマー5Sが停止し、タイマー2S(状態悪化判定タイマー)が再スタートされる。
【0073】
クライアント装置1からも順次データパケットが送信されるが、
図20の例において、ステップ607、612に示すデータパケットについては、タイマー3Cが停止されている(タイムアウトしていない)とともに、生存確認要求応答受領を送信済みなので、生存確認要求なしのデータパケットとして送信される(
図8のステップ17)。
【0074】
ステップ606の生存確認要求応答付きデータパケットを受信したクライアント装置1は、
図7に示すとおり、タイマー3C、4Cをスタートさせるとともに、データパケット送信時に、生存確認要求応答受領付きデータパケットを送信する(
図20のステップ608、
図8のステップ15)。
【0075】
ステップ609、610で示すデータパケットについては、タイマー5Sが動作中でないので、そのままサーバ装置2からクライアント装置1に送信される。
【0076】
ステップ608の生存確認要求応答受領付きデータパケットを送信した後、クライアント装置1では、データパケット送信時に、生存確認要求付きデータパケットを送信する(
図20のステップ611、
図8のステップ12)。
【0077】
ステップ611の生存確認要求付きデータパケットを受信したサーバ装置2において、タイマー5S(生存確認要求応答タイマー)がスタートするが、ここではタイマー5Sがタイムアウトし、単独の生存確認要求応答が送信される(ステップ613)。それを受けたクライアント装置1からはタイマー3Cのタイムアウトを契機として単独の生存確認要求応答受領が送信される(ステップ614)。
【0078】
このようにデータパケットの送受信がある場合、タイマー2S(状態悪化判定タイマー)とクライアント装置1からの上りパケット送信間隔で決まる短い時間間隔での生存確認が繰り返される。これにより状態監視が頻繁になるため、より短期間に状態悪化を検出できる。
【0079】
本実施の形態において、クライアント装置1とサーバ装置2間のトンネルの本数は特に限定されないが、これまでの説明はトンネルが1本である場合を想定している。
【0080】
後述する第2の実施の形態にように、複数本のトンネルを使用する場合は、本実施の形態で説明する生存確認処理をトンネル毎に行う。
【0081】
また、本実施の形態に係る構成は、以下のように表すこともできる。
【0082】
サーバ装置2との間に構築されたトンネルを介してデータ通信を行うクライアント装置1は、前記サーバ装置2との間で前記トンネルを構築し、当該トンネルを経由してパケットの送受信を行うクライアント側トンネル通信手段11と、前記トンネルを介して生存確認のためのパケット送受信を行うクライアント側生存確認手段12と、を備え、前記クライアント側生存確認手段12は、前記クライアント装置1が備えるアプリケーション部13からのデータパケット送信がない場合に、第1の時間(タイマー4C)間隔で生存確認要求を前記サーバ装置2に送信し、当該生存確認要求を受信した前記サーバ装置2から生存確認要求応答を受信した場合に、生存確認要求応答受領を前記サーバ装置2に送信し、前記アプリケーション部13からのデータパケット送信がある場合において、生存確認要求応答又は生存確認要求応答付きデータパケットを前記サーバ装置2から受信した後の第2の時間(タイマー3C)経過内に、生存確認要求応答受領付きデータパケットを前記サーバ装置2に送信し、生存確認要求応答又は生存確認要求応答付きデータパケットを前記サーバ装置から受信した後の当該第2の時間経過後に、生存確認要求付きデータパケットを前記サーバ装置2に送信し、前記生存確認要求応答又は前記生存確認要求応答付きデータパケットを前記サーバ装置から受信しないで第3の時間(タイマー2C)が経過した場合に、前記トンネルの状態が悪化したと判定する。
【0083】
また、前記サーバ装置2は、前記サーバ装置2との間で前記トンネルを構築し、当該トンネルを経由してパケットの送受信を行うサーバ側トンネル通信手段21と、前記トンネルを介して生存確認のためのパケット送受信を行うサーバ側生存確認手段22と、を備え、前記サーバ側生存確認手段22は、前記サーバ装置2からのデータパケット送信がない場合において、生存確認要求を前記クライアント装置1から受信した場合に、生存確認要求応答を前記クライアント装置1に送信し、前記サーバ装置2からのデータパケット送信がある場合において、生存確認要求付きデータパケットを前記クライアント装置1から受信した場合に、生存確認要求応答付きデータパケットを前記クライアント装置1に送信し、前記生存確認要求応答又は前記生存確認要求応答付きデータパケットを前記クライアント装置1に送信後、第4の時間(タイマー2S)経過内に生存確認要求応答受領又は生存確認要求応答受領付きデータパケットを前記クライアント装置1から受信しない場合に、前記トンネルの状態が悪化したと判定する。
【0084】
<第2の実施の形態>
次に、本発明の第2の実施の形態について説明する。本実施の形態でのシステム構成は
図2〜4で説明した第1の実施の形態と同様である。ただし、本実施の形態では、クライアント装置1のトンネル機能部11、及びサーバ装置2のトンネル機能部21のそれぞれが、複数本のトンネル接続を束ねてパケット送受信を行う機能を備えている。また、生存確認機能部12、22は、複数本のトンネル接続を用いる構成に対応した機能を含む。
【0085】
図21は、パケット送信側とパケット受信側におけるトンネル機能部11、21の構成を示す図である。
図21は、本実施の形態の機能を分かりやすく示すために、片方向の通信構成を示すものであるが、実際には、クライアント装置1とサーバ装置2の各々において、
図21に示すパケット送信側の機能とパケット受信側の機能を備える。つまり、
図21は、クライアント装置1からサーバ装置2への上り方向の通信構成、または、サーバ装置2からクライアント装置1への下り方向の通信構成を示している。
【0086】
図21に示すように、パケット送信側のトンネル機能部は、分配部101、カウンター102、トンネル接続リスト格納部103を含む。パケット受信側のトンネル機能部は、集約受信部201、最終送信番号格納部202、タイマー203を含む。もちろん、各トンネル機能部は、複数本のトンネル接続を行う機能も含む。
【0087】
パケット送信側では、トンネル接続リスト格納部103に接続中のトンネルのリストであるトンネル接続リストが格納される。
図21の例では、トンネル接続0〜Nが示されている。分配部101は、トンネル接続リスト及びカウンターを利用して、送信対象のパケットに対して順次番号を付与し、複数のトンネルに対して順次パケットを送信する。送信に用いるトンネルを複数リストとして順に用いて送信する構成となっている。また、各トンネルの状態が悪化した場合、リストから取り除き、良好に復帰した場合、再度リストに加える。
【0088】
パケット受信側では、最後に再送信したパケットの番号が、最終送信番号格納部202に格納される。集約受信部201はパケットを格納するキュー(バッファメモリ)を備え、以下の処理を行う。なお、以下のような制御を行う集約受信部201は、再送信順序制御手段の一例である。
【0089】
集約受信部201は、最終送信パケット番号と受信したパケットのパケット番号とを比較し、受信したパケットのパケット番号が最終送信パケット番号+1以下であれば直ちに送信し、+2以上であれば、集約受信部201におけるキューの中を確認し、既に待ち合わせのパケットがあればキューの中のパケットに引き続き受信したパケットを再送信する。キューにパケットが無ければ、受信したパケットをキューに格納してタイマー203を始動する。タイマー203がタイムアウトするまで次のパケットがこなかった場合は、キューに格納されたパケットを送信する。
【0090】
以下では、上記の処理をより詳細にフローチャートを参照して説明する。
【0091】
図22は、パケット送信側トンネル機能部における初期化処理を示すフローチャートである。
図22に示すように、カウンター値を0にし(ステップ111)、トンネル接続リストを空にし(ステップ112)、トンネル接続をN本オープンする(ステップ113)。
【0092】
図23は、パケット送信側トンネル機能部における分配部101が行う分配送信処理を示すフローチャートである。
図23に示すように、パケットにカウンター値を付加し(ステップ121)、トンネル接続リストの先頭にあるトンネルにパケットを送信する(ステップ122)。そして、カウンター値に1を加算し(ステップ123)、トンネル接続リストの先頭の要素をリストの末尾に移動する(ステップ124)。
【0093】
図24は、パケット送信側トンネル機能部における、トンネル状態「良好」化時、もしくはトンネル接続時の処理を示すフローチャートである。ここで、トンネル状態「良好」化時とは、生存確認部(12、22)において、トンネル接続が「応答悪化」の状態から、「良好」の状態になったことが検知された時のことである。
【0094】
ここでは、トンネル接続の末尾に、接続した(又は良好になった)トンネルを追加する(ステップ131)。
【0095】
図25は、パケット送信側トンネル機能部における、トンネル状態「応答悪化」時、もしくはトンネル切断時の処理を示すフローチャートである。ここで、トンネル状態「応答悪化」時とは、生存確認部(12、22)において、トンネル接続が「良好」の状態から、「応答悪化」の状態になったことが検知された時のことである。
【0096】
ここでは、トンネル接続リストから該当するトンネルを削除する(ステップ141)。
【0097】
図26は、パケット受信側トンネル機能部における初期化処理を示すフローチャートである。初期化時において、最終送信番号を−1にする(ステップ151)。
【0098】
図27は、パケット受信側トンネル機能部における集約受信部201が実行する集約受信処理を示すフローチャートである。
【0099】
パケットを受信すると、受信したパケットのパケット番号が最終送信番号+1以下かどうかをチェックする(ステップ161)。最終送信番号+1以下である場合(ステップ161のYes)、受信したパケットを再送信し、最終送信番号を当該パケットの番号とする(ステップ162)。
【0100】
ステップ161において、受信したパケットのパケット番号が最終送信番号+1以下でない場合(+2以上の場合)、キューの中に既に待ち合わせ中のパケットが存在するか否かを確認する(ステップ163)。待ち合わせ中のパケットが存在する場合(ステップ163のYes)、キューの中のパケットを全て送信し、タイマーを停止し、最終送信番号を更新する(ステップ164)。その後、受信したパケットを再送信し、最終送信番号を当該パケットの番号とする(ステップ162)。ステップ163において待ち合わせ中のパケットが存在しない場合、パケットをキューに投入し(ステップ165)、タイマーをスタートする(ステップ166)。
【0101】
図28は、パケット受信側トンネル機能部におけるタイマータイムアウト処理を示すフローチャートである。
図28に示すとおり、タイマーがタイムアウトになると、キューの中のパケットを、パケットを受信した順番で全て送信し、タイマーを停止し、最終送信番号を更新する(ステップ171)。
【0102】
本実施の形態では、送信に用いるトンネル接続について、接続状態であると同時に、トンネル状態が「良好」であることも条件としている。つまり、状態が悪化したと判定されたトンネル接続を使用しないこととしている。これにより、パケット再送等により一時的に応答の悪化したトンネル接続を回避して良好な応答を保つことができる。
【0103】
上記のように動作するトンネル機能部を備えるサーバ装置2(送信側)からクライアント装置1(受信側)への通信処理例を
図29、
図30を参照して説明する。
【0104】
図29は、サーバ装置2からクライアント装置1への伝送路におけるジッターが小さい場合の処理例を示す。
図29に示すように、パケット#0〜#15がサーバ装置2から各トンネル接続経由で順番に送信される。本例では、パケット#4がパケット#5よりも少し遅れてクライアント装置1に到達する。この場合、受信側の処理を示す
図27に示すように、クライアント装置1では、パケット#3の次に受信するパケット#5をキューに格納し、タイマータイムアウト前にパケット#4を受信することにより、パケット#4をアプリケーションプログラム(アプリケーション部13)に送信し、次に、キューの中のパケット#5をアプリケーションプログラムに送信する。パケット#8、#9についても同様である。
【0105】
このように、ジッターが小さい場合、順序が入れ替わって到着したパケットも順序通り並べ替えて送信することができる。
【0106】
図30は、サーバ装置2からクライアント装置1への伝送路におけるジッターが大きい場合の処理例を示す。
【0107】
本例では、パケット#6が大きく遅れてクライアント装置1に到達する。この場合、クライアント装置1において、パケット#5の次に受信したパケット#7はキューに格納されるが、続くパケットを受信する前にタイマーがタイムアウトになり、キューの中のパケット#7が送信される。従って、パケット#7については少し遅延する。
【0108】
パケット#6はパケット#9の次に受信され、パケット#11がその次に受信される。この場合、パケット#9の次に受信したパケット#6についての
図27のステップ161の判定はYesになるので、パケット#6はすぐにアプリケーションプログラムに送信される。次に受信するパケット#11については、キューに格納される(ステップ161のNo、ステップ163、165)。タイマータイムアウト前にパケット#10を受信することにより、パケット#10をアプリケーションプログラムに送信し、次に、キューの中のパケット#11をアプリケーションプログラムに送信する。
【0109】
ジッターが大きい場合、大きい遅延を受けたパケットについての順序入れ替わりは防止できないものの他のパケットまでが大きく遅延することなく処理される。
【0110】
ここで、従来技術による複数トンネリング通信での受信処理の一例(ジッター小の場合)を
図31に示す。
図31に示すように、ジッターが小であっても、従来技術では順序逆転が発生してしまうが、本実施の形態に係る技術では順序逆転を防止できる。これにより、リアルタイムコミュニケーション系などパケットの順序性が問題になるアプリケーションでも、順序逆転を防止することにより、品質低下を抑制できる。
【0111】
<実施の形態の効果>
第1、第2の実施の形態で説明した技術によれば、データパケットが送受信されているときに、データパケットに重畳して生存確認用の信号を送受信する構成をとるので、処理負担軽減と異常状態検出時間の短縮という相反する条件を満たした生存確認を行うことができるとともに、サーバ装置側でも通信状態の安定性判定をすることでより短い時間で状態判定が行うことができ、クライアント装置1からサーバ装置2への上り方向の状態判定と同様にサーバ装置2からクライアント装置1への下り方向の状態判定も可能となる。そのため、トンネルのコネクションが切断されてしまった等の異常事態をいち早く検出し、他の正常なトンネル接続に振り分けることでトンネル経由の通信への影響時間を短縮することができる。
【0112】
また、一定時間内のパケット順序入れ替り補正により、ほとんどのパケット順序を保ったままで、かつ遅延時間を小さく伝送できるため、VoIPや映像コミュニケーションなどリアルタイム通信でかつパケット順序が通信品質に影響を与える通信プロトコルに対しても安定的に利用可能となる。
【0113】
以下、本明細書に開示される構成を例示的に列挙する。
(第1項)
サーバ装置との間に構築されたトンネルを介してデータ通信を行うクライアント装置であって、
前記サーバ装置との間で前記トンネルを構築し、当該トンネルを経由してパケットの送受信を行うクライアント側トンネル通信手段と、
前記トンネルを介して生存確認のためのパケット送受信を行うクライアント側生存確認手段と、を備え、
前記クライアント側生存確認手段は、
前記クライアント装置が備えるアプリケーション部からのデータパケット送信がない場合に、第1の時間間隔で生存確認要求を前記サーバ装置に送信し、当該生存確認要求を受信した前記サーバ装置から生存確認要求応答を受信した場合に、生存確認要求応答受領を前記サーバ装置に送信し、
前記アプリケーション部からのデータパケット送信がある場合において、生存確認要求応答又は生存確認要求応答付きデータパケットを前記サーバ装置から受信した後の第2の時間経過内に、生存確認要求応答受領付きデータパケットを前記サーバ装置に送信し、生存確認要求応答又は生存確認要求応答付きデータパケットを前記サーバ装置から受信した後の当該第2の時間経過後に、生存確認要求付きデータパケットを前記サーバ装置に送信し、
生存確認要求応答又は生存確認要求応答付きデータパケットを前記サーバ装置から受信しないで第3の時間が経過した場合に、前記トンネルの状態が悪化したと判定する
ことを特徴とするクライアント装置。
(第2項)
前記第1の時間は前記第3の時間より長く、当該第3の時間は前記第2の時間より長いことを特徴とする第1項に記載のクライアント装置。
(第3項)
第1項又は2項に記載のクライアント装置と、前記サーバ装置とを備える通信システムであって、
前記サーバ装置は、
前記サーバ装置との間で前記トンネルを構築し、当該トンネルを経由してパケットの送受信を行うサーバ側トンネル通信手段と、
前記トンネルを介して生存確認のためのパケット送受信を行うサーバ側生存確認手段と、を備え、
前記サーバ側生存確認手段は、
前記サーバ装置からのデータパケット送信がない場合において、生存確認要求を前記クライアント装置から受信した場合に、生存確認要求応答を前記クライアント装置に送信し、前記サーバ装置からのデータパケット送信がある場合において、生存確認要求付きデータパケットを前記クライアント装置から受信した場合に、生存確認要求応答付きデータパケットを前記クライアント装置に送信し、
生存確認要求応答又は生存確認要求応答付きデータパケットを前記クライアント装置に送信後、第4の時間経過内に生存確認要求応答受領又は生存確認要求応答受領付きデータパケットを前記クライアント装置から受信しない場合に、前記トンネルの状態が悪化したと判定する
ことを特徴とする通信システム。
(第4項)
第3項に記載の通信システムにおいて、
前記サーバ側トンネル通信手段は、
前記クライアント側トンネル通信手段との間に構築された複数のトンネルに対して順次、送信順を示す送信番号を付したパケットを送信する分配送信手段を備え、
前記クライアント側トンネル通信手段は、
最後に再送信を行った第1のパケットの送信番号と、前記サーバ側トンネル通信手段から受信した第2のパケットの送信番号とを比較し、当該第2のパケットの送信番号が前記第1のパケットの送信番号+1以下である場合に、当該第2のパケットを再送信し、当該第2のパケットの送信番号が前記第1のパケットの送信番号+2以上である場合において、キューの中にパケットが既に存在しない場合に、当該第2のパケットをキューに格納し、所定の時間経過後に、当該第2のパケットを再送信する再送信順序制御手段を備える
ことを特徴とする通信システム。
(第5項)
第4項に記載の通信システムにおいて、
前記サーバ側トンネル通信手段は、前記サーバ側生存確認手段により状態が悪化したと判定されたトンネルを使用しない
ことを特徴とする通信システム。
(第6項)
第3ないし5項のうちいずれか1項に記載の通信システムにおいて、
前記クライアント側トンネル通信手段は、
前記サーバ側トンネル通信手段との間に構築された複数のトンネルに対して順次、送信順を示す送信番号を付したパケットを送信する分配送信手段を備え、
前記サーバ側トンネル通信手段は、
最後に再送信を行った第1のパケットの送信番号と、前記クライアント側トンネル通信手段から受信した第2のパケットの送信番号とを比較し、当該第2のパケットの送信番号が前記第1のパケットの送信番号+1以下である場合に、当該第2のパケットを再送信し、当該第2のパケットの送信番号が前記第1のパケットの送信番号+2以上である場合において、キューの中にパケットが既に存在しない場合に、当該第2のパケットをキューに格納し、所定の時間経過後に、当該第2のパケットを再送信する再送信順序制御手段を備える
ことを特徴とする通信システム。
(第7項)
第6項に記載の通信システムにおいて、
前記クライアント側トンネル通信手段は、前記クライアント側生存確認手段により状態が悪化したと判定されたトンネルを使用しない
ことを特徴とする通信システム。
(第8項)
サーバ装置との間に構築されたトンネルを介してデータ通信を行うクライアント装置と、前記サーバ装置とを備える通信システムにより実行される生存確認方法であって、
前記クライアント装置は、
前記クライアント装置が備えるアプリケーション部からのデータパケット送信がない場合に、第1の時間間隔で生存確認要求を前記サーバ装置に送信し、当該生存確認要求を受信した前記サーバ装置から生存確認要求応答を受信した場合に、生存確認要求応答受領を前記サーバ装置に送信し、
前記アプリケーション部からのデータパケット送信がある場合において、生存確認要求応答又は生存確認要求応答付きデータパケットを前記サーバ装置から受信した後の第2の時間経過内に、生存確認要求応答受領付きデータパケットを前記サーバ装置に送信し、生存確認要求応答又は生存確認要求応答付きデータパケットを前記サーバ装置から受信した後の当該第2の時間経過後に、生存確認要求付きデータパケットを前記サーバ装置に送信し、
生存確認要求応答又は生存確認要求応答付きデータパケットを前記サーバ装置から受信しないで第3の時間が経過した場合に、前記トンネルの状態が悪化したと判定し、
前記サーバ装置は、
前記サーバ装置からのデータパケット送信がない場合において、生存確認要求を前記クライアント装置から受信した場合に、生存確認要求応答を前記クライアント装置に送信し、前記サーバ装置からのデータパケット送信がある場合において、生存確認要求付きデータパケットを前記クライアント装置から受信した場合に、生存確認要求応答付きデータパケットを前記クライアント装置に送信し、
生存確認要求応答又は生存確認要求応答付きデータパケットを前記クライアント装置に送信後、第4の時間経過内に生存確認要求応答受領又は生存確認要求応答受領付きデータパケットを前記クライアント装置から受信しない場合に、前記トンネルの状態が悪化したと判定する
ことを特徴とする生存確認方法。
(第9項)
コンピュータを、サーバ装置との間に構築されたトンネルを介してデータ通信を行うクライアント装置として機能させるためのプログラムであって、コンピュータを、
前記サーバ装置との間で前記トンネルを構築し、当該トンネルを経由してパケットの送受信を行うクライアント側トンネル通信手段、
前記トンネルを介して生存確認のためのパケット送受信を行うクライアント側生存確認手段、として機能させ、
前記クライアント側生存確認手段は、
前記クライアント装置が備えるアプリケーション部からのデータパケット送信がない場合に、第1の時間間隔で生存確認要求を前記サーバ装置に送信し、当該生存確認要求を受信した前記サーバ装置から生存確認要求応答を受信した場合に、生存確認要求応答受領を前記サーバ装置に送信し、
前記アプリケーション部からのデータパケット送信がある場合において、生存確認要求応答又は生存確認要求応答付きデータパケットを前記サーバ装置から受信した後の第2の時間経過内に、生存確認要求応答受領付きデータパケットを前記サーバ装置に送信し、生存確認要求応答又は生存確認要求応答付きデータパケットを前記サーバ装置から受信した後の当該第2の時間経過後に、生存確認要求付きデータパケットを前記サーバ装置に送信し、
生存確認要求応答又は生存確認要求応答付きデータパケットを前記サーバ装置から受信しないで第3の時間が経過した場合に、前記トンネルの状態が悪化したと判定する
ことを特徴とするプログラム。
【0114】
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。