(57)【要約】【課題】ＴＣＰのスループットの低下を防止する通信装置を得ること。【解決手段】ＡＬＧ処理機能を備えた通信装置であって、受信したパケットのＴＣＰシーケンス番号に基づいて、欠落パケットの後に続いて送信されるパケットである後続パケットか否かを判定するＴＣＰシーケンス番号変更処理部２４と、後続パケットと判定された場合に、ＴＣＰデータ部分が無くＴＣＰデータ長を０とした欠落パケットの宛先を宛先とする代理ＡＣＫパケットを生成する後続パケット受信処理部１８と、を備える。【選択図】        図１
2009015392.tif 000002
【特許請求の範囲】
【請求項１】
ＴＣＰデータの更新を行うＡＬＧ処理機能を備えた通信装置であって、
受信したパケットのＴＣＰシーケンス番号に基づいて、欠落パケットの後に続いて送信されるパケットである後続パケットか否かを判定するＴＣＰシーケンス番号判定処理手段と、
前記ＴＣＰシーケンス番号判定処理手段で後続パケットと判定された場合に、ＴＣＰデータ部分が無くＴＣＰデータ長を０とした欠落パケットの宛先を宛先とする代理ＡＣＫパケットを生成する後続パケット生成処理手段と、
を備えることを特徴とする通信装置。
【請求項２】
前記代理ＡＣＫパケットの送信シーケンス番号を、それ以前に受信した最大の送信シーケンス番号に、その最大のシーケンス番号を有するパケットのＴＣＰデータ長を加算した値とすることを特徴とする請求項１に記載の通信装置。
【請求項３】
前記後続パケット生成処理手段は、前記代理ＡＣＫパケットのＡＣＫシーケンス番号を、受信した後続パケットのＡＣＫシーケンスに基づいて付与することを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記後続パケット生成処理手段は、欠落パケットの再送パケットを受信する前にさらに後続パケットを受信した場合、さらに、別の代理ＡＣＫパケットを生成することを特徴とする請求項１、２または３に記載の通信装置。
【請求項５】
前記後続パケット生成処理手段は、
後続パケットを保持し、
前記欠落パケットの再送パケットを受信すると、保持していた後続パケットを再開パケットとして送信することを特徴とする請求項１〜４のいずれか１つに記載の通信装置。
【請求項６】
受信パケットのＡＬＧメッセージの内容に基づいてＡＬＧ状態を管理し、ＡＬＧ状態に基づいて受信パケットごとにＴＣＰデータの変更の可能性の有無を判定するＡＬＧ状態遷移処理手段、
をさらに備え、
前記後続パケット生成処理手段は、後続パケットを受信した場合、前記判定結果をＡＬＧ状態遷移処理手段から取得し、前記判定結果が変更の可能性が無いことを示す場合には、後続パケットをそのまま通過させることを特徴とする請求項１〜５のいずれか１つに記載の通信装置。
【請求項７】
ＴＣＰデータの更新を行うＡＬＧ処理機能を備えた通信装置の通信方法であって、
受信したパケットのＴＣＰシーケンス番号に基づいて、欠落パケットの後に続いて送信されるパケットである後続パケットか否かを判定するＴＣＰシーケンス番号判定ステップと、
前記ＴＣＰシーケンス番号判定ステップで後続パケットと判定された場合に、ＴＣＰデータ部分が無くＴＣＰデータ長を０とした欠落パケットの宛先を宛先とする代理ＡＣＫパケットを生成する後続パケット生成ステップと、
を含むことを特徴とする通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＡＬＧ（Application  Level  Gateway）機能を備えた通信装置および通信方法に関する。
【背景技術】
【０００２】
従来のＡＬＧ（Application  Level  Gateway）は、通信装置がパケットのアドレスを変換するＮＡＴ（Network  Address  Translation）またはアドレスとポートの両方を変換するＮＡＰＴ（Network  Address  Port  Translation）を実行する時に、ＴＣＰ（Transmission  Control  Protocol）データ部を読み取り、ＴＣＰデータ部分に書き込まれている情報の必要な部分（たとえばＮＡＰＴで仕様するアドレス，ポート番号など）を更新する補助的な処理を実行する。
【０００３】
これによって、中継する通信装置がＮＡＴ／ＮＡＰＴを用いて通信する環境でも、通信端末と相手端末は、中継する通信装置のＮＡＴ／ＮＡＰＴの存在を意識することなく通信セッションを確立することができる（たとえば、非特許文献１参照）。
【０００４】
また、ＡＬＧは、ＴＣＰデータ部分に書き込まれているポート番号などの情報を更新するとき、メッセージ内容と共にメッセージ長も変化する場合があるため、ＴＣＰの送信シーケンス番号，ＡＣＫシーケンス番号，ＩＰ（Internet  Protocol）チェックサム，ＴＣＰチェックサムも変更する必要がある。
【０００５】
このようなＡＬＧの実行の際の情報の変更を効率よく行うために、ＴＣＰ／ＩＰのチェックサムを全て再計算する代わりに、特定の変更部分だけを対象としてチェックサムを更新する手法が提案されている（たとえば、下記非特許文献２）。また、中継する通信装置のＡＬＧ処理部が、ＮＡＴ／ＮＡＰＴ前後のＴＣＰシーケンス番号の差分リストを持ち、自動的にＴＣＰシーケンス番号を増減する手法が提案されている（たとえば、下記非特許文献３）。
【０００６】
一方、音声や映像信号などのストリーミング配信を制御するプロトコルとして、ＲＴＳＰ（Real  Time  Streaming  Protocol）が近年用いられている（下記非特許文献４参照）。ＲＴＳＰの制御メッセージは一般的にＴＣＰ上で配信され、ストリーミングデータについては、次の２種類の配信方式が規定されている。
【０００７】
１つめの配信方式は、ＲＴＳＰ制御メッセージ用のＴＣＰセッションとは別に、ＲＴＰ（Real-time  Transport  Protocol）／ＲＴＣＰ（RTP  Control  Protocol）データ用のＵＤＰ（User  Datagram  Protocol）セッションを使用する通常の配信方式（以下、ＵＤＰ配信という）である。ＵＤＰ配信で使用するポート番号は、ＴＣＰ上で配信されるＲＴＳＰの“ＳＥＴＵＰ”／“２００  ＯＫ”メッセージに含まれるclient＿port，server＿portにＲＴＰ／ＲＴＣＰ用ポート番号が記述される。このためＲＴＳＰをＮＡＴ／ＮＡＰＴ環境下で使用するためには、上記ＡＬＧの一種であるＲＴＳＰ−ＡＬＧが必要となる。ＲＴＳＰ−ＡＬＧは、制御用ＴＣＰセッションから“ＳＥＴＵＰ”／“２００  ＯＫ”メッセージに含まれるclient＿port、server＿port情報を読み取り、静的ＵＤＰ−ＮＡＰＴを開閉する。
【０００８】
もうひとつの配信方式は、ＲＴＳＰ制御メッセージ用のＴＣＰセッション上に、さらにＲＴＰ／ＲＴＣＰデータを重畳して配信するオプションの配信方式（以下、ＩＬ（Interleave）配信という）である。ＲＴＳＰ制御メッセージと重畳されたＲＴＰ／ＲＴＣＰデータは、ＲＴＳＰメッセージの先頭が“$”であるか否かで判定されて分離することができる。また、ＲＴＰ／ＲＴＣＰデータの直後にはデータ長が記述される。ＲＴＳＰ−ＡＬＧは、多重化されたデータから、制御メッセージのみを解釈するために、ＲＴＰ／ＲＴＣＰデータを読み飛ばす制御を行う。
【０００９】
上記２つのどちらの配信方式になるかは、ＲＴＳＰクライアントが送信する“ＳＥＴＵＰ”メッセージで決定される。このため、ＲＴＳＰ−ＡＬＧは、両方の配信方式に対応しておく必要がある。
【００１０】
【非特許文献１】IETF（Internet  Engineering  Task  Force）  RFC2663，“IP  Network  Address  Translator  (NAT)  Terminology  and  Considerations”，１９９９
【非特許文献２】IETF  RFC1631，“The  IP  Network  Address  Translator  (NAT)”，１９９４
【非特許文献３】IETF  RFC2766，“Network  Address  Translation  -  Protocol  Translation  (NAT-PT)”，２０００
【非特許文献４】IETF  RFC2326，“Real  Time  Streaming  Protocol  (RTSP)”，１９９８
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、上記従来の技術によればＴＣＰレイヤで欠落パケットが１つでも発生すると、中継する通信装置のＡＬＧ処理部が、その欠落ＴＣＰパケットの再送パケットを受信するまで、欠落ＴＣＰパケット以降の後続ＴＣＰパケットを一切相手側に送信しない。このため、ＴＣＰレベルでのスループットが極端に低下する可能性がある、という問題があった。
【００１２】
欠落ＴＣＰパケット以降の後続ＴＣＰパケットを送信しない理由は、欠落ＴＣＰパケットのＴＣＰデータ部にＡＬＧにより更新されるべき部分が含まれていた場合、ＡＬＧ処理前と処理後で全体のＴＣＰデータ長が変化する可能性があるためである。ＡＬＧによりＴＣＰデータ部が更新され、結果としてＴＣＰデータ長が変化した場合、ＴＣＰデータ長の変化が後続のＴＣＰパケットのシーケンス番号に波及することになる。すなわち、後から欠落ＴＣＰパケットの再送パケットを受信すると、その再送パケットのＴＣＰデータ部にＴＣＰデータ長変化を伴うＴＣＰデータ編集処理が必要となる可能性があり、先に送信した後続ＴＣＰパケットと後で受信した再送パケットとの間でＴＣＰシーケンス番号の一貫性が保てなくなり、ＴＣＰセッションが破綻する可能性がある。
【００１３】
一方、欠落ＴＣＰパケットを送信した通信端末は、ＴＣＰパケットが欠落しても、ＴＣＰレイヤのウィンドウ送信制御に基づいて、相手端末からの“ＡＣＫ（ACKnowledgement）”を待たずに一定量の後続ＴＣＰパケットを送信する。このため、中継する通信装置のＡＬＧ処理部は、欠落ＴＣＰパケットが発生した後も欠落ＴＣＰパケット以降の後続ＴＣＰパケットを受信することになる。
【００１４】
したがって、一般的に、前述のとおり、中継する通信装置のＡＬＧ処理では、欠落ＴＣＰパケットを検出した場合、欠落ＴＣＰパケットが再送されるまで後続ＴＣＰパケットを廃棄する。この後続ＴＣＰパケットを廃棄する処理は、中継する通信装置のＡＬＧ処理部が通信端末から送信される欠落ＴＣＰパケットの再送パケットを受信するまでの間実行するため、その間ＡＬＧ処理部は、欠落ＴＣＰパケット以降の後続ＴＣＰパケットを相手端末に送信できなくなる。
【００１５】
言い換えると、中継する通信装置のＡＬＧが実行する後続ＴＣＰパケットの廃棄処理は、欠落ＴＣＰパケット以降の後続ＴＣＰパケットの廃棄を相手端末が検出し、選択的“ＡＣＫ”または重複“ＡＣＫ”により欠落パケット送信元の通信端末に通知し、その通信端末から欠落ＴＣＰパケットが再送されるまでの間、すなわち、１パケット往復時間（ＲＴＴ：Round-Trip  Time）以上続く。
【００１６】
１ＲＴＴが長くなると、中継する通信装置のＡＬＧ処理部で複数の後続ＴＣＰパケットが連続して送信できなくなる状態となるが、前述のとおり送信元の通信端末のＴＣＰは、中継する通信装置のＡＬＧ処理部で後続ＴＣＰパケットが廃棄されていることを検出できない。したがって、送信元の通信端末は相手端末から選択的“ＡＣＫ”または重複“ＡＣＫ”を受信することにより、欠落パケットおよび複数の後続ＴＣＰパケットの廃棄が網内で発生したと検出し、廃棄が発生した理由は網内で重輻輳が発生したためと判断することになる。その結果、通信端末間のＴＣＰレベルの輻輳制御が動作し、前述のとおりＴＣＰレベルでのスループットが極端に低下するという問題が生じる。
【００１７】
ここで、たとえばＵＤＰ配信の場合のＲＴＳＰ−ＡＬＧでは、ストリーミング配信用ＲＴＰ／ＲＴＣＰパケットがＵＤＰ上で送受信されるため、ＲＴＳＰ制御メッセージ用ＴＣＰのスループットが低下しても、制御のレスポンスが若干悪化する程度で、大きな問題は発生しない。
【００１８】
しかし、ＩＬ配信の場合のＲＴＳＰ−ＡＬＧでは、ＲＴＳＰ制御メッセージ用ＴＣＰ上にＲＴＰ／ＲＴＣＰデータを重畳して配信されるので、ＴＣＰの送信レートが低下すると、ストリーミング用データ配信の送信レート低下につながり、高ビットレートのストリーミング配信ができなくなる、という大きな問題があった。
【００１９】
本発明は、上記に鑑みてなされたものであって、ＴＣＰのスループットの低下を防止する通信装置および通信方法を得ることを目的とする。
【課題を解決するための手段】
【００２０】
上述した課題を解決し、目的を達成するために、本発明は、ＴＣＰデータの更新を行うＡＬＧ処理機能を備えた通信装置であって、受信したパケットのＴＣＰシーケンス番号に基づいて、欠落パケットの後に続いて送信されるパケットである後続パケットか否かを判定するＴＣＰシーケンス番号判定処理手段と、前記ＴＣＰシーケンス番号判定処理手段で後続パケットと判定された場合に、ＴＣＰデータ部分が無くＴＣＰデータ長を０とした欠落パケットの宛先を宛先とする代理ＡＣＫパケットを生成する後続パケット生成処理手段と、を備えることを特徴とする。
【発明の効果】
【００２１】
この発明によれば、パケットを中継する通信装置のＡＬＧ処理が欠落パケットの後に続いて送信される後続パケットを受信した場合に、後続パケットを廃棄せず、ＴＣＰデータ長を０とした代理ＡＣＫパケットを欠落パケットの送信先端末に送信するようにしたので、ＴＣＰのスループットの低下を防止することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２２】
以下に、本発明にかかる通信装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００２３】
実施の形態１．
図１は、本発明にかかる通信装置の実施の形態１の機能構成例を示す図である。図１に示すように本実施の形態の通信装置は、プロトコルごとの個別のＡＬＧ処理を行う個別ＡＬＧ処理部１と、プロトコルに依存しない共通的なＡＬＧ処理を行うＡＬＧ共通処理部２と、ＮＡＴ／ＮＡＰＴ処理を行うＮＡＴ／ＮＡＰＴ共通処理部３と、で構成される。
【００２４】
個別ＡＬＧ処理部１は、ＴＣＰメッセージの解析を行うメッセージ解析処理部１１と、メッセージの解析結果に基づいて状態遷移の処理を行うＡＬＧ状態遷移処理部１２と、ＴＣＰデータを編集するためのＴＣＰデータ編集情報を生成するＴＣＰデータ編集情報生成処理部１４と、で構成される。また、ＡＬＧ状態遷移処理部は、状態遷移を管理する情報を格納するための記憶部である状態管理部１３を備えている。
【００２５】
ＡＬＧ共通処理部２は、ＴＣＰシーケンス番号に基づいてパケットを分類するＴＣＰシーケンス番号判定処理部１５と、新規パケットの受信処理を行う新規パケット受信処理部１７と、欠落パケットに続いて送信されるパケットである後続パケットの受信処理を行う後続パケット受信処理部１８と、再送パケットの受信処理を行う再送パケット受信処理部２０と、後述の代理ＡＣＫパケットを生成する代理ＡＣＫ生成処理部２１と、ＴＣＰデータ編集情報に基づいてＴＣＰデータを編集するＴＣＰデータ編集処理部２２と、ＴＣＰシーケンス番号の変更処理を行うＴＣＰシーケンス番号変更処理部２４と、で構成される。
【００２６】
ＴＣＰシーケンス番号判定処理部１５は、ＴＣＰ受信シーケンス番号を格納するためのＴＣＰ受信シーケンス番号管理部１６を備えている。後続パケット受信処理部１８は、後続パケットを格納するための後続パケット管理部１９を備えている。ＴＣＰデータ編集処理部２２は、ＴＣＰデータ編集情報を格納するためのＴＣＰデータ編集情報管理部２３を備えている。また、ＴＣＰシーケンス番号変更処理部２４は、ＡＣＫシーケンス番号を変更するＡＣＫシーケンス番号変更処理部２５と、ＴＣＰシーケンス番号の差分情報を格納するためのＴＣＰシーケンス番号差分管理部２６と、送信データのシーケンス番号を変更する送信シーケンス番号変更処理部２７と、で構成される。
【００２７】
ＮＡＴ／ＮＡＰＴ共通処理部３は、受信パケットのＮＡＴ／ＮＡＰＴ変換処理を行う受信側ＮＡＰＴ変換処理部２８と、ＮＡＴ／ＮＡＰＴの変換情報を格納するためのＮＡＴ／ＮＡＰＴ変換情報管理部２９と、送信パケットのＮＡＴ／ＮＡＰＴ変換処理を行う送信側ＮＡＰＴ変換処理部３０と、で構成される。
【００２８】
本実施の形態の通信装置は、通信端末に対してＮＡＴ／ＮＡＰＴ変換処理とＡＬＧ処理を行い、通信端末の通信相手の端末との中継を行う。以下の説明では、本実施の形態の通信装置がＮＡＴ／ＮＡＰＴ変換処理によりアドレスやポートの番号を変更する通信端末を単に通信端末とよび、通信端末の通信先の通信端末を相手端末とよぶこととする。また、通信端末から相手端末に向かう通信方向を順方向とよび、相手端末から通信端末に向かう通信方向を逆方向とよぶこととする。
【００２９】
本実施の形態では、ＮＡＴ／ＮＡＰＴ変換情報が、ＮＡＴ／ＮＡＰＴ変換情報管理部２９に格納されている。図２は、本実施の形態のＮＡＴ／ＮＡＰＴ変換情報の一例を示す図である。図２に示すように、本実施の形態のＮＡＴ／ＮＡＰＴ変換情報は、発アドレス，発ポート番号，着アドレス，着ポート番号，プロトコル（プロトコルの種類），ＡＬＧ（ＡＬＧの種類、ＡＬＧ対象でない場合には“なし”と記載），変換アドレス，変換ポート番号を含んでいる。なお、このＮＡＴ／ＮＡＰＴ変換情報は、順方向の通信の際にそれぞれのエントリ１０１〜１０５が生成されるため、発アドレス，発ポート番号は、順方向の場合の送信元の通信端末の値となる。変換アドレス，変換ポート番号は、ＮＡＴ／ＮＡＰＴ変換後のそれぞれアドレスとポート番号であり、順方向の通信の際には、発アドレス，発ポート番号が、それぞれ変換アドレス，変換ポート番号に変換されることになる。なお、ここではＮＡＰＴを仮定してポート番号についても変換することとしたが、ＮＡＴの場合は、変換ポート番号は用いずに変換アドレスのみを用いるようにすればよい。
【００３０】
相手端末は、逆方向の通信の際には、順方向のパケットの送信元アドレスと送信元ポート番号、すなわち、変換アドレスと変換ポート番号宛にパケットを送信するので、本実施の形態の通信装置は、通信端末に送信するために、変換アドレスと変換ポート番号を通信端末のアドレスとポート番号、すなわち、ＮＡＴ／ＮＡＰＴ変換情報の発アドレスと発ポート番号に変換して送信する。このように、逆方向の通信では、順方向のＮＡＰＴ変換情報を用いて、逆変換を行うことになる。
【００３１】
つづいて、本実施の形態の動作について説明する。まず、通常のパケット受信処理について説明する。受信側ＮＡＰＴ変換処理部２８は、本実施の形態の通信装置の図示しないパケット受信Ｉ／Ｆ処理部経由で、受信Ｉ／Ｆ（Interface）情報（どの種類のＩ／Ｆで受信したかの情報）とともに、受信ＴＣＰパケットを受け取る。パケット受信Ｉ／Ｆ処理部は、Ｉ／Ｆの種類ごとに処理を行うものとし、Ｉ／Ｆの種類には、ＮＡＰＴ実行Ｉ／Ｆ（ＮＡＰＴを用いるＩ／Ｆ処理）を含むこととする。受信側ＮＡＰＴ変換処理部２８は、受信Ｉ／Ｆ情報がＮＡＰＴ実行Ｉ／Ｆでない場合には、変換処理は実施しない。
【００３２】
受信側ＮＡＴ／ＮＡＰＴ変換処理部２８は、受信Ｉ／Ｆ情報がＮＡＰＴ実行Ｉ／Ｆである場合には、ＮＡＴ／ＮＡＰＴ変換情報に基づいてＮＡＰＴ変換処理を行う。ただし、受信ＴＣＰパケットが逆方向パケットである場合、前述のとおり逆変換を行うことになるため、受け取った受信ＴＣＰパケットの発アドレス，発ポート番号，着アドレス，着ポート番号，プロトコルと、それぞれ、着アドレス，着ポート，変換アドレス，変換ポート番号，プロトコルが同一となるＮＡＰＴ変換情報のエントリを検索する。
【００３３】
検索の結果、対応するＮＡＰＴ変換情報のエントリがある場合には、受信側ＮＡＴ／ＮＡＰＴ変換処理部２８は、その情報に基づき受信ＴＣＰパケットの着アドレス，着ポート番号を、それぞれそのエントリの発アドレス，発ポート番号に変換し、また、アドレスとポート番号の変更を反映して、ＩＰヘッダ・ＴＣＰヘッダのチェックサムを修正する。また、検索の結果、対応するＮＡＰＴ変換情報が存在しなければ、受信側ＮＡＴ／ＮＡＰＴ変換処理部２８は、受け取った受信ＴＣＰパケットを廃棄する。
【００３４】
つぎに、受信側ＮＡＴ／ＮＡＰＴ変換処理部２８は、対応するＮＡＰＴ変換情報のエントリがある場合、そのエントリのＡＬＧの項目を参照し、ＡＬＧ対象パケットであるか否かを判定する。ＡＬＧ対象パケットでない場合には、受信ＴＣＰパケットはシーケンス番号およびＴＣＰデータを編集する必要が無いので、受信側ＮＡＴ／ＮＡＰＴ変換処理部２８は、そのパケットを非ＡＬＧ対象ＴＣＰパケットとしてそのまま送信側ＮＡＰＴ変換処理部３０に送信する。そして、送信側ＮＡＰＴ変換処理は、図示しない送信Ｉ／Ｆ処理部に、非ＡＬＧ対象ＴＣＰパケットを送出するとともにそのパケットの送信を要求する。
【００３５】
また、パケット送信の際には、送信側ＮＡＰＴ変換処理部３０は、パケットの着アドレスに基づいてそのパケットの送信Ｉ／Ｆの種類（ＮＡＰＴ実行Ｉ／Ｆであるかなど）を判定する。送信側ＮＡＰＴ変換処理部３０は、非ＡＬＧ対象ＴＣＰパケットについて判定したＩ／ＦがＮＡＰＴ実行Ｉ／Ｆであれば、非ＡＬＧ対象ＴＣＰパケットの発アドレス，発ポート番号を変換アドレス，変換ポート番号にそれぞれ変更する。また、アドレスとポート番号の変更を反映して、非ＡＬＧ対象パケットのＩＰヘッダ・ＴＣＰヘッダのチェックサムを更新する。そして、送信側ＮＡＰＴ変換処理は、送信Ｉ／Ｆ処理部に、非ＡＬＧ対象ＴＣＰパケットを送出するとともにそのパケットの送信を要求する。
【００３６】
以上、非ＡＬＧパケットの処理について説明したが、つぎに、ＡＬＧ対象パケットの処理について説明する。受信側ＮＡＰＴ変換処理部２８は、前述のＡＬＧ対象パケットであるか否かの判定の際に、ＡＬＧ対象パケットであると判定した場合には、受信ＴＣＰパケットをＡＬＧ対象パケットとしてＡＣＫシーケンス番号変更処理部２５に送信する。
【００３７】
ＡＣＫシーケンス番号変更処理部２５は、ＴＣＰシーケンス番号差分情報に基づいて、ＡＬＧ対象ＴＣＰパケットのＡＣＫシーケンス番号の変換を以下の手順で実行する。図３は、ＴＣＰシーケンス番号差分管理部に格納されるＴＣＰシーケンス番号差分リストと変換前後のパケットの一例を示す図である。変換前パケット２０１〜２０７は通信端末から送信され通信装置で受信されたパケットを示し、変換後パケット２１１〜２１７は、ＴＣＰシーケンス番号変更処理部２４が変換前パケット２０１〜２０７のシーケンス番号（ＡＣＫシーケンス番号および送信シーケンス番号）を変更したパケットを示している。また、変換後パケット２３１〜２３７は相手端末から送信されたパケットを示しており、変換前パケット２２１〜２２７はパケット２３１〜２３７を通信装置に送信するためにＴＣＰシーケンス番号変更処理部２４がシーケンス番号の逆変換を行った後のパケットを示している。
【００３８】
図３の変換前パケット２０１〜２０７，２２１〜２２７と変換後パケット２１１〜２１７，２３１〜２３７を示す図形のなかには、各々のパケットの送信シーケンス番号（Ｓｅｑ），ＴＣＰデータ長（ｌｅｎ），ＡＣＫシーケンス番号（Ａｃｋ）が示されている。
【００３９】
図３に示すように、ＴＣＰシーケンス番号差分情報は、順方向と逆方向について、それぞれ変換前シーケンス番号と変換後シーケンス番号を含む。これらの情報が、ＴＣＰのセッションごとにＴＣＰシーケンス番号差分管理部２９に格納されている。
【００４０】
ＴＣＰシーケンス番号差分情報は、シーケンス番号の変更を管理するために保持されているものであり、後述のようにＴＣＰデータ編集処理部２２によって格納される。図２の例で、変換前パケット２０５は、ＴＣＰデータ編集処理部２２によりＴＣＰデータ長が１０００バイトから１００２バイトに変更され、変換後パケット２１５のようになったとする。すると、そのつぎの変換前パケット２０４に対応する変換後パケット２１４についても、変換後パケット２１５のＴＣＰ長が変更になった分だけ送信シーケンス番号をずらし、送信シーケンス番号を１３０００から１３００２に変更する必要がある。
【００４１】
ここで、ＡＣＫシーケンス番号変更処理部２５の動作の説明に戻る。ＡＣＫシーケンス番号変更処理部２５は、受信したＡＬＧ対象パケットの発着アドレス，発着ポート，プロトコルから一意に決定されるセッションに対応するＴＣＰシーケンス番号差分情報を、ＴＣＰシーケンス番号差分管理部を検索して取得する。
【００４２】
ＡＣＫシーケンス番号変更処理部２５は、受信ＴＣＰパケットのＡＣＫシーケンス番号と一致するシーケンス番号を、取得したＴＣＰシーケンス差分情報の順方向および逆方向の変換後シーケンス番号のなかから検索する。そして、ＡＣＫシーケンス番号変更処理部２５は、受信ＴＣＰパケットのＡＣＫシーケンス番号を、検索結果（ＡＣＫシーケンス番号を一致する変換後シーケンス番号）に対応する変換前シーケンス番号に変更する。たとえば、たとえば、変換前パケット２０１〜２０７の送信シーケンス番号を変換後パケット２１１〜２１７のように変換する。また、シーケンス番号変換と同時にＴＣＰパケットのチェックサムも更新する。
【００４３】
たとえば、順方向の変換前パケット２０５では“Ack=42005”であり、ＴＣＰシーケンス番号差分情報の逆方向の変換後シーケンス番号に一致する番号“42005”がある。図３のＴＣＰシーケンス番号差分情報で変換後シーケンス番号“42005”に対応する変換前シーケンス番号は“42000”であるため、変換前パケット２０５については“Ack=42000”に変換する。また逆方向の変換後パケット２３４では“Ack=13002”であり、ＴＣＰシーケンス番号差分リストの順方向の変換後シーケンス番号に一致する番号“13002”がある。図３のＴＣＰシーケンス番号差分情報で“13002”に対応する変換前シーケンス番号は“13000”であるため、変換後パケット２３４については“Ack=13000”に変換する。
【００４４】
ＡＣＫシーケンス番号変更処理部２５は、このように受信ＴＣＰパケットのＡＣＫシーケンス番号を変更し、変更した受信ＴＣＰパケットをＡＣＫシーケンス番号修正済みパケットとしてＴＣＰシーケンス番号判定処理部１５に送信する。
【００４５】
つぎに、ＴＣＰシーケンス番号判定処理部１５は、ＡＣＫシーケンス番号修正済みパケットが再送パケット（すでに受信した送信シーケンス番号の最大値よりも小さい送信シーケンス番号を持ったパケット），新規パケット(次に受信を期待する送信シーケンス番号を持ったパケット)，後続パケット(新規パケットが欠落の後に送られるパケットで、次に受信を期待する送信シーケンス番号より大きい送信シーケンス番号を持ったパケット)，以上パケットのいずれかであるかを判定する。図４は、ＴＣＰシーケンス番号判定処理部１５の判定処理手順の一例を示すフローチャートである。
【００４６】
この判定は、ＡＣＫシーケンス番号修正済みパケットの送信シーケンス番号を次に受信を期待するパケットの送信シーケンス番号と比較することにより行う。このために、ＴＣＰ受信シーケンス番号管理部１６は、ＴＣＰ受信シーケンス番号管理部１６にＴＣＰ受信シーケンス番号情報を格納している。図５にＴＣＰ受信シーケンス番号情報の一例を示す。ＴＣＰ受信シーケンス番号情報には、ＴＣＰセッション識別し（発アドレス，発ポート番号，着アドレス，着ポート番号）ごとに、順方向と逆方向について、それぞれ受信済み最大シーケンス番号と次に受信を期待するシーケンス番号（次受信期待シーケンス番号）が含まれている。ＴＣＰ受信シーケンス番号情報は、４種類のパケットの判定後に、新規パケットであった場合に後述のように更新される。
【００４７】
ＴＣＰシーケンス番号判定処理部１５は、ＡＣＫシーケンス番号修正済みパケットを受信する（ステップＳ１１）と、ＡＣＫシーケンス番号修正済みパケットのＴＣＰセッション識別子に対応するＴＣＰ受信シーケンス情報を取得し、ＡＣＫシーケンス番号修正済みパケットの送信シーケンス番号が、取得したＴＣＰ受信シーケンス情報の順方向または逆方向の受信済み最大送信シーケンス番号以下であるかを判定する（ステップＳ１２）。なお、ここで、ＡＣＫシーケンス番号修正済みパケットが順方向であるときには、ＴＣＰ受信シーケンス情報の順方向の受信済み最大送信シーケンス番号と比較し、逆方向であるときにはＴＣＰ受信シーケンス情報の逆方向の受信済み最大送信シーケンス番号と比較する。そして、ＡＣＫシーケンス番号修正済みパケットの方が小さい場合（ステップＳ１２  ＹＥＳ）には、そのパケットは再送パケットであると判定する（ステップＳ１８）。
【００４８】
一方、ＡＣＫシーケンス番号修正済みパケットの送信シーケンス番号が取得したＴＣＰ受信シーケンス情報の順方向または逆方向の送信シーケンス番号より大きい場合（ステップＳ１２  ＮＯ）には、ＴＣＰシーケンス番号判定処理部１５は、さらに、ＡＣＫシーケンス番号修正済みパケットの送信シーケンス番号を、取得したＴＣＰ受信シーケンス情報の順方向または逆方向の次受信期待シーケンス番号より大きいか否かを判定する（ステップＳ１３）。
【００４９】
ＡＣＫシーケンス番号修正済みパケットの送信シーケンス番号が取得したＴＣＰ受信シーケンス情報の順方向または逆方向の次受信期待シーケンス番号より大きいと判定した場合（ステップＳ１３  ＹＥＳ）には、そのパケットを後続パケットと判定する（ステップＳ１９）。
【００５０】
ＡＣＫシーケンス番号修正済みパケットの送信シーケンス番号が取得したＴＣＰ受信シーケンス情報の順方向または逆方向の次受信期待シーケンス番号以下であると判定した場合（ステップＳ１３  ＮＯ）には、ＴＣＰシーケンス番号判定処理部１５は、さらに、ＡＣＫシーケンス番号修正済みパケットの送信シーケンス番号が次受信期待シーケンス番号より小さいか否かを判定する（ステップＳ１４）。ＡＣＫシーケンス番号修正済みパケットの送信シーケンス番号が次受信期待シーケンス番号より小さいと判定した場合（ステップＳ１４  Ｙｅｓ）は、そのパケットを異常パケットと判定する。
【００５１】
ＡＣＫシーケンス番号修正済みパケットの送信シーケンス番号が次受信期待シーケンス番号より小さくない（ＡＣＫシーケンス番号修正済みパケットの送信シーケンス番号が次受信期待シーケンス番号と等しい）と判定した場合（ステップＳ１４  ＮＯ）は、ＴＣＰシーケンス番号判定処理部１５はＴＣＰシーケンス番号情報を更新する。具体的には、ＴＣＰシーケンス番号情報の順方向または逆方向の受信済み最大送信シーケンス番号を、そのＡＣＫシーケンス番号修正済みパケットの送信シーケンス番号に更新し（ステップＳ１５）、次受信期待シーケンス番号を、「ＡＣＫシーケンス番号修正済みパケットの送信シーケンス番号＋ＡＣＫシーケンス番号修正済みパケットのＴＣＰデータ長」に更新する。そして、ＴＣＰシーケンス番号判定処理部１６は、そのパケットを新規パケットと判定する（ステップＳ１７）。
【００５２】
そして、ＴＣＰシーケンス番号判定処理部１６は、以上のパケット種類の判定処理の後に、新規パケットと判定した場合には新規パケット受信処理部１７へＡＣＫシーケンス番号修正済みパケットを送信する。また、ＴＣＰシーケンス番号判定処理部１６は、後続パケットと判定した場合には後続パケット受信処理部１８へ、再送パケットと判定した場合には再送パケット受信処理部２０へ、それぞれＡＣＫシーケンス番号修正済みパケットを送信する。異常パケットと判定した場合には、そのパケットを破棄する、あるいはＡＬＧでは処理不能としてＴＣＰセッションを切断するなどの異常処理を行う。
【００５３】
つぎに、新規パケットと判定されたＡＣＫシーケンス番号修正済みパケット（以下、新規パケットという）の処理について説明する。新規パケット受信処理部１８は、新規パケットの送信シーケンス番号，ＴＣＰデータ部，ＴＣＰデータ長を、プロトコル固有の個別ＡＬＧ処理部１に新規ＴＣＰデータとして送信する。また、新規パケットをＴＣＰデータ編集処理部２２に送信する。
【００５４】
個別ＡＬＧ処理部１の構成は、実装に依存するが、一般的には、図１で説明したような構成となる。まず、個別ＡＬＧ処理部１のメッセージ解析処理部１１は、連続したバイト列のストリームとして送信されたＴＣＰデータを、そのデータに対応するＡＬＧ対象プロトコルの固有のメッセージ単位に区切り、また区切ったメッセージの内容を解析する。個別ＡＬＧ処理部１は、この解析結果をＡＬＧ状態遷移処理部１２とＴＣＰデータ編集情報生成処理部１４に出力する。
【００５５】
ＡＬＧ対象プロトコルは、発着端末間で管理される複数の状態を持つことがある。ＡＬＧ状態遷移処理部１２は、ＡＬＧ情報管理部１３に現在の状態を示すＡＬＧ状態情報を格納しており、メッセージ解析処理部１１の解析結果に基づいて状態遷移を行う必要が生じた場合に、ＡＬＧ状態情報を書き換えるとともにＡＬＧ状態情報をＴＣＰデータ編集情報生成処理部１４に通知する。
【００５６】
ＴＣＰデータ編集情報生成処理部１４は、メッセージ解析処理部１１の解析結果とＡＬＧ状態情報に基づいて新規パケットのＴＣＰデータをどのように変更するかを決定し、ＴＣＰデータ編集処理部２２にＴＣＰデータ編集情報として通知する。図６は、ＴＣＰデータ編集情報の一例を示す図である。図６に示すように、ＴＣＰデータ編集情報は、ＴＣＰセッション識別子，方向（順方向または逆方向），送信シーケンス番号，ＴＣＰデータ長，変更位置オフセット，変更データ長（変更対象部分のデータ長），更新データ，更新データ長を含み、ＡＬＧの種類に依存しない形式で表現されている。変更位置オフセットは、対応する送信シーケンス番号のデータの先頭位置から、変更するデータの先頭位置までのオフセット量を示している。
【００５７】
また、ＴＣＰデータ編集情報は、変更箇所ごとに１組生成される。たとえば、ある新規パケットのＴＣＰデータの”address=192.168.0.1,port=8000”を”address=133.9.3.1,port=10000”に変更する場合を仮定する。addressの位置のオフセットを８，portの位置のオフセットを２５とすると、ＴＣＰデータ編集情報は「変更位置オフセット＝８，変更データ長＝１１，更新データ＝”133.9.3.1”，更新データ長＝９」と「変更位置オフセット＝２５，変更データ長＝４，更新データ＝”10000”，更新データ長＝５」の２組となる。
【００５８】
ＴＣＰデータ編集処理部２２は、通知されたＴＣＰデータ編集情報を図６に示すような形式でＴＣＰデータ編集情報管理部２３に格納する。ＴＣＰデータ編集処理部２２は、セッション識別子をキーとして、新規パケット受信処理部１７から受け取った新規パケットに対応する情報をＴＣＰデータ編集情報のなかから検索する。セッション識別子の一致する情報が得られた場合には、ＴＣＰデータ編集処理部２２は、その情報に基づいて新規パケットを編集する。
【００５９】
このときの編集の方法について図７を用いて説明する。図７は、編集方法を説明するための図である。その新規パケットに対応する１組目のＴＣＰデータ編集情報に対応する変更オフセット，変更データ長，変更箇所をそれぞれ変更オフセット＃１，変更データ長＃１，変更箇所＃１とする。また、同様に２組目、３組目のＴＣＰデータ編集情報に対応する変更オフセット，変更データ長，変更箇所にそれぞれ＃２，＃３の番号を付すこととする。ここで、これらのＴＣＰデータ編集情報は変更位置オフセットが小さい順に＃１，＃２，…としている。ＴＣＰデータ編集情報を格納する時点でこのように変更位置オフセットの小さい順に並べるようにしておいてもよいし、検索後に読み出したＴＣＰデータ編集情報を変更位置オフセットの小さい順に並び替えるようにしてもよい。また、図７の矢印の上の段に編集前の新規パケットを示し、矢印の下の段に編集後のパケットを示している。
【００６０】
まず、編集前の新規パケットのうち、１組目の変更位置オフセットまでのデータは変更の必要がない。ＴＣＰデータ編集処理部２２は、先頭位置から変更オフセット＃１までの変更の無い部分のデータを保持する。つぎの変更のない部分は、“変更オフセット＃１＋変更データ長＃１”の位置からつぎの変更の先頭（“変更オフセット＃２”）までであり、この部分を保持する。このように、ＴＣＰデータ編集処理部２２は、先頭または“変更オフセット＋変更データ長＃Ｎ（Ｎは自然数）”から“変更オフセット＃（Ｎ＋１）”まで切り出し箇所＃Ｎとして保持する。そして、ＴＣＰデータ編集処理部２２は、保持した切り出し箇所＃１のつぎに更新箇所＃１として１組目の更新データをコピーする。同様に、切り出し箇所と更新データを交互にコピーすることにより、図７の矢印の下の段のような編集後パケットを生成する。ＴＣＰデータ編集処理部２２は、生成した編集後パケットを送信シーケンス番号変更処理部２７に送信する。
【００６１】
また、編集の結果、編集前の新規パケットと編集後パケットでＴＣＰデータ長が異なる場合、編集したパケット以降のＴＣＰパケットの送信シーケンス番号，ＡＣＫシーケンス番号を変更する必要がある。このため、ＴＣＰデータ編集処理部２２は、ＴＣＰシーケンス番号変更処理部２４のＴＣＰシーケンス番号差分管理部２６にシーケンス番号差分情報を登録する。登録するシーケンス番号差分情報は、変換前シーケンス番号については“受信ＴＣＰパケットのシーケンス番号＋ＴＣＰデータ長”として算出し、変換後シーケンス番号については“受信ＴＣＰパケットのシーケンス番号＋ＴＣＰデータ長＋変更前後のＴＣＰデータ長の差分”として算出する。このとき、すでに、同じ変換前シーケンス番号についてシーケンス番号差分情報が登録されている場合には、“それらの変換前シーケンス番号に対応する変換後シーケンス番号＋変更前後のＴＣＰデータ長の差分”として変換後シーケンス番号を更新する。
【００６２】
つぎに、送信シーケンス番号変更処理部２７は、ＴＣＰシーケンス番号差分情報に基づいて、編集後パケットの送信シーケンス番号を変更する。具体的には、新規パケットの送信シーケンス番号と一致するＴＣＰシーケンス番号差分情報の変換前シーケンス番号を検索し、一致するものがあった場合には、対応する変換後シーケンス番号に変更する。それ以前にＴＣＰデータの編集が行われていない場合には、編集後パケットより後に到着するパケットについてはシーケンス番号を変更する必要があるが、編集後パケット自体については送信シーケンス番号を変更する必要はない。しかし、それ以前にＴＣＰデータ長の変更が発生していた場合には、ＴＣＰシーケンス番号差分情報に基づいて変更することになる。
【００６３】
たとえば図３の変換前パケット２０５は、送信シーケンス番号変更処理部２７による処理の後に変換パケット２１５になるが、送信シーケンス番号は１２０００のままで変更されていない。その次の変換前パケット２０４と対応する変換後パケット２１４では、送信シーケンス番号が１３０００から１３００２に変更されている。このように新規パケット編集の処理を行った場合には、それ以降パケットに対して送信シーケンス番号を変更する必要がある。
【００６４】
送信シーケンス番号変更処理部２７は、送信シーケンス番号の変更を行った後に、チェックサムについてもその変更を反映して更新する。そして、送信シーケンス番号変更処理部２７は、送信シーケンス番号が変更された新規パケットを送信側ＮＡＰＴ変換処理部３０に送信する。送信側ＮＡＰＴ変換処理部３０は、ＮＡＴ／ＮＡＰＴ変換情報のなかから、そのパケットの発アドレス，発ポート番号、着アドレス，着ポート番号，プロトコルの一致するエントリを取得し、発アドレス，発ポート番号を該当するエントリの変換アドレス，変換ポート番号に変更する。また、発アドレス，発ポート番号の変更に対応してそのパケットのチェックサムも更新する。
【００６５】
このように、発着アドレス・ポート番号変更と，送信・ＡＣＫシーケンス番号変更，ＴＣＰデータ編集を実行することで、たとえば図３の順方向の変換前パケット２０１〜２０７は変換後パケット２１１〜２１７に変換され、逆方向では変換後パケット２３１〜２３７が変換前パケット２２１〜２２７に逆変換される。
【００６６】
つづいて、後続パケットの処理について説明する。ＴＣＰシーケンス番号判定処理部１５は、後続パケットと判定したパケット（以下後続パケットという）を後続パケット受信処理部１８に送信する。後続パケット受信処理部１８は、後続パケット管理部１９に受信した後続パケットをシーケンス番号順に格納している。送信された後続パケットも、後続パケット管理部にシーケンス番号順に格納する。また、後続パケット受信処理部１８は、後続パケットを、本発明の特徴である代理ＡＣＫ生成処理部２１に送信する。
【００６７】
代理ＡＣＫ生成処理部２１は、後続パケットからＩＰヘッダとＴＣＰヘッダをコピーし、そのＩＰヘッダとＴＣＰヘッダを有しＴＣＰデータ長を“０”とした代理ＡＣＫパケットを生成する。ただし代理ＡＣＫパケットの送信シーケンス番号は、ＴＣＰ受信シーケンス番号管理部１６に格納されているＴＣＰ受信シーケンス番号情報の次受信期待シーケンス番号とする。そして、代理ＡＣＫ生成処理部２１は、代理ＡＣＫパケットのチェックサムを計算しチェックサムを設定し、代理ＡＣＫパケットを送信シーケンス番号変更処理部２７に送信する。なお、ここでは、代理ＡＣＫパケットの送信シーケンス番号を次受信期待シーケンス番号としたが、これに限らず、たとえば、次受信期待シーケンス番号以上の値など他の数値に設定するようにしてもよい。
【００６８】
送信シーケンス番号変更処理部２７は、新規パケットの場合と同様に代理ＡＣＫパケット以前に受信したＴＣＰパケットでＴＣＰデータ長に変更が発生した場合は、代理ＡＣＫパケットについても送信シーケンス番号を変更する必要がある。したがって、送信シーケンス番号変更処理部２７は、代理ＡＣＫパケットの送信シーケンス番号をキーに、一致する変換前シーケンス差分番号を持つシーケンス番号差分情報を取得し、取得した情報に基づき代理ＡＣＫパケットの送信シーケンス番号を対応する変換後シーケンス差分番号に変更する。また送信シーケンス番号変更に合わせてチェックサムも更新する。
【００６９】
そして、送信シーケンス番号変更処理部２７は、代理ＡＣＫパケットを送信側ＮＡＰＴ変換処理部３０に送信する。送信側ＮＡＰＴ変換処理部３０は、新規パケットに対する処理と同様にアドレス，ポート番号の変換処理を行い、代理ＡＣＫパケットのチェックサムも更新する。
【００７０】
このような代理ＡＣＫパケットが送信されると、相手端末では、この代理ＡＣＫパケットを受信する。相手端末では、シーケンス番号に矛盾のない代理ＡＣＫパケットを受信することにより、輻輳制御などを行わずにすみ、ＴＣＰスループットの低下を防ぐことができる。
【００７１】
つぎに、後続パケットの後に、欠落パケットの再送が行われると、その再送された欠落パケットは再送パケットして処理され、それ以降、再び新規パケットの処理が開始される。このとき、本実施の形態では、再送された欠落パケットの後に送信される新規パケットの前に後続パケットの内容を持つパケットを再開パケットとして送信する。この再開パケットの処理について、つぎに説明する。
【００７２】
新規パケット受信処理部１７は、再送された欠落パケットを新規パケットとして受信すると、後続パケット管理部１９に格納されている後続パケットを再開パケットとして取得する。再開パケットの処理手順は通常の新規パケットと同様であるが、ＡＣＫシーケンス番号だけは、通常と異なり再送された欠落パケットのＡＣＫシーケンス番号とする。それ以降の処理は、新規パケットと同様に、個別ＡＬＧ処理部１の処理、ＴＣＰデータ編集処理部２２の処理、送信シーケンス番号変更処理部２７の処理、送信側ＮＡＰＴ変換処理部３０の処理が行われる。
【００７３】
図８は、後続パケットを含む場合のパケットの変換を説明するための図である。変換前パケット３０１〜３０７は通信端末から送信され通信装置で受信されたパケットを示し、変換後パケット３１１〜３１９は、変換前パケット３０１〜３０７が本実施の形態の通信装置により変換されたパケットを示している。また、変換後パケット３３１〜３３７は相手端末から送信されたパケットを示しており、変換前パケット３２１〜３２７は変換後パケット３３１〜３３７を通信装置に送信するためにＴＣＰシーケンス番号変更処理部２４がシーケンス番号の逆変換を行った後のパケットを示している。図８では、変換前パケット３０５が欠落し、その後に後続パケットとして変換前パケット３０４，３０３が送信され、変換前パケット３０２が欠落パケット３０５の再送パケットとして送信された例である。
【００７４】
図８に示すように、後続パケットである変換前パケット３０３，３０４は、代理ＡＣＫパケットに変換され変換後パケット３１５，３１６として送信される。そして、再送パケットである変換前パケット３０２は新規パケットとして処理され、変換後パケット３１４として送信される。変換後パケット３１４の後に、図８では変換前の後続パケット３０４,３０５に対応する、変換後の再開パケット３１２，３１３が送信されている。
【００７５】
つづいて、再送パケットの処理について説明する。ＴＣＰシーケンス番号判定処理部１５は、再送パケットと判定したパケット（以下再送パケットという）を再送パケット受信処理部２０に送信する。再送パケット受信処理部２０は、再送パケットをＴＣＰデータ編集処理部２２に送信する。
【００７６】
ＴＣＰデータ編集処理部２２は、ＴＣＰデータ編集情報管理部２３に格納されているＴＣＰデータ編集情報を再送パケットの送信シーケンス番号をキーとして検索し、一致した検索ＴＣＰ編集情報に従って、新規ＴＣＰパケットと同様にＴＣＰデータ部を編集する。なお、再送パケットに対しては、編集の結果全体としてＴＣＰデータ長に変更が発生しても、シーケンス番号差分情報は登録しない。そして、ＴＣＰデータ編集処理部２２は、編集後の再送パケットを送信シーケンス番号変更処理部２７に送信する。
【００７７】
その再送パケットの受信以前のＴＣＰパケットでＴＣＰデータ長に変更が発生していた場合は、再送パケットの送信シーケンス番号も変更する必要がある。このため、送信シーケンス番号変更処理部２７は、再送パケットの送信シーケンス番号をキーに、ＴＣＰシーケンス番号差分情報のなかかから一致する変換前シーケンス番号を検索し、再送パケットの送信シーケンス番号を検索した変換前シーケンス番号に対応する変換後シーケンス番号に変更する。また同時にチェックサムも更新する。
【００７８】
そして、送信シーケンス番号変更処理部２７は、再送パケットを送信側ＮＡＰＴ変換処理部に送信し、送信側ＮＡＰＴ変換処理部で他のパケットと同様にアドレス，ポート番号の変換処理が行われる。また、変更に合わせて再送パケットのＩＰヘッダ、ＴＣＰヘッダのチェックサムも更新する。
【００７９】
図９は、再送パケットの変換前後の様子を示す図である。パケット４０１〜４０７は通信端末から送信され通信装置で受信されたパケットを示し、変換後パケット４１１〜４１７は、変換前パケット４０１〜４０７が本実施の形態の通信装置により変換されたパケットを示している。また、変換後パケット４３１〜４３７は相手端末から送信されたパケットを示しており、変換前パケット４２１〜４２７はパケット４３１〜４３７を通信装置に送信するためにＴＣＰシーケンス番号変更処理部２４がシーケンス番号の逆変換を行った後のパケットを示している。なお、ここでは再送パケットについて説明をするための図であるため、再開パケットについては省略している。変換前パケット４０５の再送パケットが変換前パケット４０２であるとき、変換前パケット４０２は変換後パケット４１２に変換されて送信される。
【００８０】
なお、本実施の形態では、ＡＬＧ処理とＮＡＰＴの処理を組み合わせるようにしたが、ＮＡＴの処理と組み合わせるようにしてもよく、さらに、Ｉｐｖ４−Ｉｐｖ６トランスレータ処理と組み合わせるようにしてもよい。
【００８１】
また本実施の形態では、チェックサム再計算の負荷を軽減するためチェックサムの再計算を行わず、ＡＬＧによるＴＣＰパケットの編集が発生する毎に、編集差分に合わせてＩＰヘッダ、ＴＣＰヘッダのチェックサムを調整するようにしたが、チェックサムの調整を行わず最後にまとめてチェックサムを再計算して付与するようにしても良い。
【００８２】
このように、本実施の形態では、欠落パケットが生じた後、後続パケットを受信した場合に欠落パケットが再送されるまで相手端末に全くパケットを送信しないのではなく、欠落パケットの送信シーケンス番号を有しＴＣＰデータ長＝“０”の代理ＡＣＫパケットを相手端末に送信するようにしていた。このため、相手端末が再送タイムアウトを検出してＴＣＰ送信可能レートを低下させるのを防止することができる。
【００８３】
また、代理ＡＣＫパケットの送信シーケンス番号は、それ以前に受信した最大の送信シーケンス番号を持つ新規パケットの送信シーケンス番号とＴＣＰデータ長から欠落パケットの送信シーケンス番号を算出して代理ＡＣＫパケットに付与するようにした。このため、欠落パケット自体が再送されるのを待たずに相手端末に欠落パケットの送信シーケンス番号を通知することができる。
【００８４】
また、再送された欠落パケットを受信する前に、さらに後続パケットを受信した場合、後続パケットの受信に応じてさらに代理ＡＣＫパケットを送信するようにした。このため、再送される欠落パケットを長時間受信できない場合でも、相手端末が再送タイムアウトを検出しない。したがって、再送タイムアウトを検出することによって生じるＴＣＰ送信可能レートの低下を防止することができる。
【００８５】
また、再送された欠落パケットを受信する前に、後続パケットをさらに受信した場合、送信する代理ＡＣＫパケットのＡＣＫシーケンス番号は受信する後続パケットのＡＣＫシーケンス番号に応じて増加させるようにし、同一ＡＣＫシーケンス番号を持つ代理ＡＣＫパケットを送信しないようにした。このため、相手端末で複製ＡＣＫ(同一ＡＣＫシーケンス番号のパケット)受信することがなく、複製ＡＣＫを検出することにより相手端末がＴＣＰ送信可能レートを低下させるのを防止することができる。
【００８６】
また、後続パケットを受信した時は、後続パケットを内部に保持し、端末から再送された欠落パケットを受信後、内部に保持していた後続パケットを再開パケットとして送信するようにした。このため、通信端末が後続パケットを再送するのを待たずにＡＬＧ処理を再開することができる。
【００８７】
実施の形態２．
図１０は、本発明にかかる通信装置の実施の形態２の機能構成例を示す図である。図１０に示すように、本実施の形態の通信装置は、実施の形態１の通信装置の個別ＡＬＧ処理部１をＲＴＳＰ−ＡＬＧ処理部３４に替え、後続パケット受信処理部１８を後続パケット受信処理部１８ａに替え、ＡＬＧ共通処理部２をＡＬＧ共通処理部２ａに替える以外は、実施の形態１の通信装置と同様である。実施の形態１と同様の機能を有する構成要素は同一の符号を付して説明を省略する。
【００８８】
本実施の形態のＲＴＳＰ−ＡＬＧ処理部３４は、個別ＡＬＧ処理部１の一種と考えることができる。本実施の形態のＲＴＳＰ−ＡＬＧ処理部は、ＲＴＳＰメッセージ解析処理部３５と、ＲＴＳＰ状態遷移処理部３６と、ＴＣＰデータ編集情報生成処理部３８で構成される。ＲＴＳＰ状態遷移処理部２３は、状態管理部３７を備えている。ＲＴＳＰメッセージ解析処理部３５，ＲＴＳＰ−ＡＬＧ処理部，ＴＣＰデータ編集情報生成処理部３８は、それぞれ実施の形態１のメッセージ解析処理部１１，ＡＬＧ状態遷移処理部１２，ＴＣＰデータ編集情報生成処理部１４と同様の機能を有する。
【００８９】
実施の形態１では、欠落パケットを編集することができる一般的なＡＬＧ処理を想定したものであるが、本実施の形態ではＡＬＧ処理で欠落パケットを編集する可能性が無い場合（ＡＬＧ処理によって変更される項目は決まっているため、たとえば、変更される項目を含まないパケットとわかる場合には編集する可能性が無い）に後続パケットをそのまま送信するようにしている。
【００９０】
ＡＬＧ対象のプロトコルまたはＡＬＧの状態によっては、一定の条件で欠落したＴＣＰパケットのシーケンス番号から、そのＴＣＰパケットのデータが編集される可能性が無い（データの編集可能性が無い）か否かが判定可能な場合がある。たとえば、ＡＬＧで使用されるプロトコルでは、可変長のＡＬＧメッセージをＡＬＧ種別，ＡＬＧメッセージ長，ＡＬＧ値で示すＴＬＶ（Type  Length  Value）フォーマットで記載することにより、各ＡＬＧメッセージの境界を示すプロトコルが多く存在する。このようなＴＬＶフォーマットを使用するプロトコルでは、ＡＬＧメッセージ種別によりＡＬＧ処理で編集を行う必要があるかを区別できるため、編集可能性を判定することができる。
【００９１】
さらに、ＡＬＧメッセージ境界まで中身を解釈せずに読み飛ばすことができる場合がある。またＲＴＳＰ−ＡＬＧでは、メッセージ境界を“\r\n\r\n”で示すので一般にはあてはまらないが、例えばＲＴＳＰヘッダ部にContent-Length長が示され、欠落したＴＣＰパケットのシーケンス番号から、欠落したＴＣＰパケットのデータがＲＴＳＰ−ＡＬＧで編集を行う必要がないContent-Data部のみを含むと確実に判定できる場合、編集可能性なしと判定することができる。
【００９２】
また同様にＲＴＳＰ−ＡＬＧでも、ＩＬ配信データ（ＬＬデータ）を含む場合、通常のＡＬＧ処理で、ＩＬ配信データについては中身を解釈せずに読み飛ばすことができる。すなわちＡＬＧ処理が読み飛ばすことができる部分については編集を行うことはないので、欠落パケットがＩＬ配信データである場合には、ＴＣＰデータ編集の可能性は無いと判定できる。
【００９３】
図１１は、ＩＬデータを含むＴＣＰパケットの一例を示す図である。図１１で、ＴＣＰパケット５０１〜５０６は、ＩＬ配信データを含むＴＣＰパケットを示し、データ５１１〜５１６は、ＴＣＰパケットのデータ部分を示している。たとえば、ＴＣＰパケット５０２が欠落した場合、ＴＣＰパケット５０２はＩＬデータのパケットであるため、ＴＣＰデータ編集の可能性は無いと判定することができる。
【００９４】
このように一般的に先頭部分に次のＡＬＧメッセージ境界へのメッセージ長が示される場合、ＡＬＧ処理部は欠落したＴＣＰパケットについて編集可能性を比較的容易に判定することができる場合がある。
【００９５】
つづいて、本実施の形態の動作について説明する。受信ＴＣＰパケットがＴＣＰシーケンス番号判定処理部１５に送信されるまでの処理は実施の形態１と同様である。ＴＣＰシーケンス番号判定処理部１５が後続パケットと判定したパケットを後続パケット受信処理部１８ａに送信する。後続パケット受信処理部１８ａは、次受信期待送信シーケンス番号と、後続パケットの送信シーケンス番号と一緒に、ＲＴＳＰ状態遷移処理部３６に欠落パケットのＴＣＰデータの編集可能性の問い合わせを行う。
【００９６】
ＲＴＳＰ−ＡＬＧでは、ＡＬＧ処理で編集する必要がある部分は、SETUPメッセージ中のアドレスまたはポート番号記述部分と、SETUPメッセージに対する“２００  ＯＫ”応答メッセージ中のアドレスまたはポート番号記述部分だけである。このため、ＲＴＳＰ状態遷移処理部３６はＡＬＧ処理の状態を追跡し、クライアントからサーバ方向にSETUPメッセージが送信されサーバからの応答待ちの状態でなければ、サーバからクライアント方向については、ＴＣＰデータの編集可能性は無いと判定できる。
【００９７】
つぎに、後続パケット受信処理部１８ａは、ＲＴＳＰ状態遷移処理部３６からＴＣＰデータの編集可能性は無いという応答を受けた場合、ＴＣＰシーケンス番号差分管理部２６にシーケンス番号差分情報を登録する。このとき登録する差分情報は、変換前シーケンスについては、受信したＴＣＰシーケンス番号とし、変換後シーケンス番号については、受信した“ＴＣＰシーケンス番号＋一つ前のシーケンス番号との差分値”、とする。
【００９８】
つぎに、後続パケット受信処理部１８ａは、送信シーケンス番号変更処理部２７に後続パケットを送信する。送信シーケンス番号変更処理部２７，送信側ＮＡＰＴ変換処理部３０の処理は、実施の形態１の新規パケットに関する処理と同様である。
【００９９】
図１２は、編集可能性の無いパケットが欠落した場合のパケットの変換前後の様子を示す図である。図１２では、変換前パケット６０１〜６０７は通信端末から送信され通信装置で受信されたパケットを示し、変換後パケット６１１〜６１７は、変換前パケット６０１〜６０７が本実施の形態の通信装置により変換されたパケットを示している。また、変換後パケット６３１〜６３７は相手端末から送信されたパケットを示しており、変換前パケット６２１〜６２７は変換後パケット６３１〜６３７を通信装置に送信するためにＴＣＰシーケンス番号変更処理部２４がシーケンス番号の逆変換を行った後のパケットを示している。
【０１００】
図１２の例では、変換後パケット６３４が欠落した場合を示しており、欠落パケットの後の後続パケットである変換後パケット６３５が、変換前パケット６２４としてシーケンス番号の逆変換の後に送信されている。
【０１０１】
なお、本実施の形態では、個別ＡＬＧ処理部としてＡＴＳＰ−ＡＬＧ処理部を備える場合について説明したが、パケットの編集可能性を判定できる個別ＡＬＧ処理部であればこれに限らず、他のＡＬＧ処理部を用いてもよい。
【０１０２】
このように、本実施の形態では、後続パケット受信処理部１８ａが、欠落パケットの後に後続パケットを受信した場合、ＲＴＳＰ状態遷移処理部に欠落パケットのＴＣＰデータ長の変更可能性を問い合わせ、ＲＴＳＰ状態遷移処理部からＴＣＰデータ長の変更可能性が無いという応答があった場合には、後続パケット受信処理部１８ａは、後続パケットを待機させずに送信するようにした。このため、実施の形態１に比べ、速やかに後続パケットを送信することができる。
【産業上の利用可能性】
【０１０３】
以上のように、本発明にかかる通信装置および通信方法は、ＡＬＧ（Application  Level  Gateway）処理を行う通信システムに有用であり、特に、ＡＬＧを適用しつつ高ＴＣＰスループットを維持する必要のある通信システムに適している。
【図面の簡単な説明】
【０１０４】
【図１】本発明にかかる通信装置の実施の形態１の機能構成例を示す図である。
【図２】ＮＡＴ／ＮＡＰＴ変換情報の一例を示す図である。
【図３】ＴＣＰシーケンス番号差分管理部に格納されるＴＣＰシーケンス番号差分リストと変換前後のパケットの一例を示す図である。
【図４】ＴＣＰシーケンス番号判定処理部の判定処理手順の一例を示すフローチャートである。
【図５】ＴＣＰ受信シーケンス番号情報の一例を示す図である。
【図６】ＴＣＰデータ編集情報の一例を示す図である。
【図７】編集方法を説明するための図である。
【図８】後続パケットを含む場合のパケットの変換を説明するための図である。
【図９】再送パケットの変換前後の様子を示す図である。
【図１０】本発明にかかる通信装置の実施の形態２の機能構成例を示す図である。
【図１１】ＩＬデータを含むＴＣＰパケットの一例を示す図である。
【図１２】編集可能性の無いパケットが欠落した場合のパケットの変換前後の様子を示す図である。
【符号の説明】
【０１０５】
１  個別ＡＬＧ処理部
２，２ａ  ＡＬＧ共通処理部
３  ＮＡＴ／ＮＡＰＴ共通処理部
１１  メッセージ解析処理部
１２  ＡＬＧ状態遷移処理部
１３  状態管理部
１４  ＴＣＰデータ編集情報生成処理部
１５  ＴＣＰシーケンス番号判定処理部
１６  ＴＣＰ受信シーケンス番号管理部
１７  新規パケット受信処理部
１８，１８ａ  後続パケット受信処理部
１９  後続パケット管理部
２０  再送パケット受信処理部
２１  代理ＡＣＫ生成処理部
２２  ＴＣＰデータ編集処理部
２３  ＴＣＰデータ編集情報管理部
２４  ＴＣＰシーケンス番号変更処理部
２５  ＡＣＫシーケンス番号変更処理部
２６  ＴＣＰシーケンス番号差分管理部
２７  送信シーケンス番号変更処理部
２８  受信側ＮＡＰＴ変換処理部
２９  ＮＡＴ／ＮＡＰＴ変換情報管理部
３０  送信側ＮＡＰＴ変換処理部
３４  ＲＴＳＰ−ＡＬＧ処理部
３５  ＲＴＳＰメッセージ解析処理部
３６  ＲＴＳＰ状態遷移処理部
３７  状態管理部
３８  ＴＣＰデータ編集情報生成処理部
１０１〜１０５  エントリ
２０１〜２０７，２２１〜２２７，３０１〜３０７，３２１〜３２７，４０１〜４０７，４２１〜４２７，６０１〜６０７，６２１〜６２７  変換前パケット
２１１〜２１７，２３１〜２３７，３１１〜３１９，３３１〜３３７，４１１〜４１７，４３１〜４３７，６１１〜６１７，６３１〜６３７  変換後パケット
５０１〜５０６  ＴＣＰパケット
５１１〜５１６  データ
【図１】
2009015392.tif 000003
【図２】
2009015392.tif 000004
【図３】
2009015392.tif 000005
【図４】
2009015392.tif 000006
【図５】
2009015392.tif 000007
【図６】
2009015392.tif 000008
【図７】
2009015392.tif 000009
【図８】
2009015392.tif 000010
【図９】
2009015392.tif 000011
【図１０】
2009015392.tif 000012
【図１１】
2009015392.tif 000013
【図１２】
2009015392.tif 000014