JP2009015392A - 通信装置および通信方法 - Google Patents

通信装置および通信方法 Download PDF

Info

Publication number
JP2009015392A
JP2009015392A JP2007173377A JP2007173377A JP2009015392A JP 2009015392 A JP2009015392 A JP 2009015392A JP 2007173377 A JP2007173377 A JP 2007173377A JP 2007173377 A JP2007173377 A JP 2007173377A JP 2009015392 A JP2009015392 A JP 2009015392A
Authority
JP
Japan
Prior art keywords
packet
tcp
sequence number
processing unit
alg
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.)
Pending
Application number
JP2007173377A
Other languages
English (en)
Inventor
Masahide Nishikawa
雅英 西川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2007173377A priority Critical patent/JP2009015392A/ja
Publication of JP2009015392A publication Critical patent/JP2009015392A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

【課題】TCPのスループットの低下を防止する通信装置を得ること。
【解決手段】ALG処理機能を備えた通信装置であって、受信したパケットのTCPシーケンス番号に基づいて、欠落パケットの後に続いて送信されるパケットである後続パケットか否かを判定するTCPシーケンス番号変更処理部24と、後続パケットと判定された場合に、TCPデータ部分が無くTCPデータ長を0とした欠落パケットの宛先を宛先とする代理ACKパケットを生成する後続パケット受信処理部18と、を備える。
【選択図】 図1

Description

本発明は、ALG(Application Level Gateway)機能を備えた通信装置および通信方法に関する。
従来のALG(Application Level Gateway)は、通信装置がパケットのアドレスを変換するNAT(Network Address Translation)またはアドレスとポートの両方を変換するNAPT(Network Address Port Translation)を実行する時に、TCP(Transmission Control Protocol)データ部を読み取り、TCPデータ部分に書き込まれている情報の必要な部分(たとえばNAPTで仕様するアドレス,ポート番号など)を更新する補助的な処理を実行する。
これによって、中継する通信装置がNAT/NAPTを用いて通信する環境でも、通信端末と相手端末は、中継する通信装置のNAT/NAPTの存在を意識することなく通信セッションを確立することができる(たとえば、非特許文献1参照)。
また、ALGは、TCPデータ部分に書き込まれているポート番号などの情報を更新するとき、メッセージ内容と共にメッセージ長も変化する場合があるため、TCPの送信シーケンス番号,ACKシーケンス番号,IP(Internet Protocol)チェックサム,TCPチェックサムも変更する必要がある。
このようなALGの実行の際の情報の変更を効率よく行うために、TCP/IPのチェックサムを全て再計算する代わりに、特定の変更部分だけを対象としてチェックサムを更新する手法が提案されている(たとえば、下記非特許文献2)。また、中継する通信装置のALG処理部が、NAT/NAPT前後のTCPシーケンス番号の差分リストを持ち、自動的にTCPシーケンス番号を増減する手法が提案されている(たとえば、下記非特許文献3)。
一方、音声や映像信号などのストリーミング配信を制御するプロトコルとして、RTSP(Real Time Streaming Protocol)が近年用いられている(下記非特許文献4参照)。RTSPの制御メッセージは一般的にTCP上で配信され、ストリーミングデータについては、次の2種類の配信方式が規定されている。
1つめの配信方式は、RTSP制御メッセージ用のTCPセッションとは別に、RTP(Real-time Transport Protocol)/RTCP(RTP Control Protocol)データ用のUDP(User Datagram Protocol)セッションを使用する通常の配信方式(以下、UDP配信という)である。UDP配信で使用するポート番号は、TCP上で配信されるRTSPの“SETUP”/“200 OK”メッセージに含まれるclient_port,server_portにRTP/RTCP用ポート番号が記述される。このためRTSPをNAT/NAPT環境下で使用するためには、上記ALGの一種であるRTSP−ALGが必要となる。RTSP−ALGは、制御用TCPセッションから“SETUP”/“200 OK”メッセージに含まれるclient_port、server_port情報を読み取り、静的UDP−NAPTを開閉する。
もうひとつの配信方式は、RTSP制御メッセージ用のTCPセッション上に、さらにRTP/RTCPデータを重畳して配信するオプションの配信方式(以下、IL(Interleave)配信という)である。RTSP制御メッセージと重畳されたRTP/RTCPデータは、RTSPメッセージの先頭が“$”であるか否かで判定されて分離することができる。また、RTP/RTCPデータの直後にはデータ長が記述される。RTSP−ALGは、多重化されたデータから、制御メッセージのみを解釈するために、RTP/RTCPデータを読み飛ばす制御を行う。
上記2つのどちらの配信方式になるかは、RTSPクライアントが送信する“SETUP”メッセージで決定される。このため、RTSP−ALGは、両方の配信方式に対応しておく必要がある。
IETF(Internet Engineering Task Force) RFC2663,"IP Network Address Translator (NAT) Terminology and Considerations",1999 IETF RFC1631,"The IP Network Address Translator (NAT)",1994 IETF RFC2766,"Network Address Translation - Protocol Translation (NAT-PT)",2000 IETF RFC2326,"Real Time Streaming Protocol (RTSP)",1998
しかしながら、上記従来の技術によればTCPレイヤで欠落パケットが1つでも発生すると、中継する通信装置のALG処理部が、その欠落TCPパケットの再送パケットを受信するまで、欠落TCPパケット以降の後続TCPパケットを一切相手側に送信しない。このため、TCPレベルでのスループットが極端に低下する可能性がある、という問題があった。
欠落TCPパケット以降の後続TCPパケットを送信しない理由は、欠落TCPパケットのTCPデータ部にALGにより更新されるべき部分が含まれていた場合、ALG処理前と処理後で全体のTCPデータ長が変化する可能性があるためである。ALGによりTCPデータ部が更新され、結果としてTCPデータ長が変化した場合、TCPデータ長の変化が後続のTCPパケットのシーケンス番号に波及することになる。すなわち、後から欠落TCPパケットの再送パケットを受信すると、その再送パケットのTCPデータ部にTCPデータ長変化を伴うTCPデータ編集処理が必要となる可能性があり、先に送信した後続TCPパケットと後で受信した再送パケットとの間でTCPシーケンス番号の一貫性が保てなくなり、TCPセッションが破綻する可能性がある。
一方、欠落TCPパケットを送信した通信端末は、TCPパケットが欠落しても、TCPレイヤのウィンドウ送信制御に基づいて、相手端末からの“ACK(ACKnowledgement)”を待たずに一定量の後続TCPパケットを送信する。このため、中継する通信装置のALG処理部は、欠落TCPパケットが発生した後も欠落TCPパケット以降の後続TCPパケットを受信することになる。
したがって、一般的に、前述のとおり、中継する通信装置のALG処理では、欠落TCPパケットを検出した場合、欠落TCPパケットが再送されるまで後続TCPパケットを廃棄する。この後続TCPパケットを廃棄する処理は、中継する通信装置のALG処理部が通信端末から送信される欠落TCPパケットの再送パケットを受信するまでの間実行するため、その間ALG処理部は、欠落TCPパケット以降の後続TCPパケットを相手端末に送信できなくなる。
言い換えると、中継する通信装置のALGが実行する後続TCPパケットの廃棄処理は、欠落TCPパケット以降の後続TCPパケットの廃棄を相手端末が検出し、選択的“ACK”または重複“ACK”により欠落パケット送信元の通信端末に通知し、その通信端末から欠落TCPパケットが再送されるまでの間、すなわち、1パケット往復時間(RTT:Round-Trip Time)以上続く。
1RTTが長くなると、中継する通信装置のALG処理部で複数の後続TCPパケットが連続して送信できなくなる状態となるが、前述のとおり送信元の通信端末のTCPは、中継する通信装置のALG処理部で後続TCPパケットが廃棄されていることを検出できない。したがって、送信元の通信端末は相手端末から選択的“ACK”または重複“ACK”を受信することにより、欠落パケットおよび複数の後続TCPパケットの廃棄が網内で発生したと検出し、廃棄が発生した理由は網内で重輻輳が発生したためと判断することになる。その結果、通信端末間のTCPレベルの輻輳制御が動作し、前述のとおりTCPレベルでのスループットが極端に低下するという問題が生じる。
ここで、たとえばUDP配信の場合のRTSP−ALGでは、ストリーミング配信用RTP/RTCPパケットがUDP上で送受信されるため、RTSP制御メッセージ用TCPのスループットが低下しても、制御のレスポンスが若干悪化する程度で、大きな問題は発生しない。
しかし、IL配信の場合のRTSP−ALGでは、RTSP制御メッセージ用TCP上にRTP/RTCPデータを重畳して配信されるので、TCPの送信レートが低下すると、ストリーミング用データ配信の送信レート低下につながり、高ビットレートのストリーミング配信ができなくなる、という大きな問題があった。
本発明は、上記に鑑みてなされたものであって、TCPのスループットの低下を防止する通信装置および通信方法を得ることを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、TCPデータの更新を行うALG処理機能を備えた通信装置であって、受信したパケットのTCPシーケンス番号に基づいて、欠落パケットの後に続いて送信されるパケットである後続パケットか否かを判定するTCPシーケンス番号判定処理手段と、前記TCPシーケンス番号判定処理手段で後続パケットと判定された場合に、TCPデータ部分が無くTCPデータ長を0とした欠落パケットの宛先を宛先とする代理ACKパケットを生成する後続パケット生成処理手段と、を備えることを特徴とする。
この発明によれば、パケットを中継する通信装置のALG処理が欠落パケットの後に続いて送信される後続パケットを受信した場合に、後続パケットを廃棄せず、TCPデータ長を0とした代理ACKパケットを欠落パケットの送信先端末に送信するようにしたので、TCPのスループットの低下を防止することができるという効果を奏する。
以下に、本発明にかかる通信装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、本発明にかかる通信装置の実施の形態1の機能構成例を示す図である。図1に示すように本実施の形態の通信装置は、プロトコルごとの個別のALG処理を行う個別ALG処理部1と、プロトコルに依存しない共通的なALG処理を行うALG共通処理部2と、NAT/NAPT処理を行うNAT/NAPT共通処理部3と、で構成される。
個別ALG処理部1は、TCPメッセージの解析を行うメッセージ解析処理部11と、メッセージの解析結果に基づいて状態遷移の処理を行うALG状態遷移処理部12と、TCPデータを編集するためのTCPデータ編集情報を生成するTCPデータ編集情報生成処理部14と、で構成される。また、ALG状態遷移処理部は、状態遷移を管理する情報を格納するための記憶部である状態管理部13を備えている。
ALG共通処理部2は、TCPシーケンス番号に基づいてパケットを分類するTCPシーケンス番号判定処理部15と、新規パケットの受信処理を行う新規パケット受信処理部17と、欠落パケットに続いて送信されるパケットである後続パケットの受信処理を行う後続パケット受信処理部18と、再送パケットの受信処理を行う再送パケット受信処理部20と、後述の代理ACKパケットを生成する代理ACK生成処理部21と、TCPデータ編集情報に基づいてTCPデータを編集するTCPデータ編集処理部22と、TCPシーケンス番号の変更処理を行うTCPシーケンス番号変更処理部24と、で構成される。
TCPシーケンス番号判定処理部15は、TCP受信シーケンス番号を格納するためのTCP受信シーケンス番号管理部16を備えている。後続パケット受信処理部18は、後続パケットを格納するための後続パケット管理部19を備えている。TCPデータ編集処理部22は、TCPデータ編集情報を格納するためのTCPデータ編集情報管理部23を備えている。また、TCPシーケンス番号変更処理部24は、ACKシーケンス番号を変更するACKシーケンス番号変更処理部25と、TCPシーケンス番号の差分情報を格納するためのTCPシーケンス番号差分管理部26と、送信データのシーケンス番号を変更する送信シーケンス番号変更処理部27と、で構成される。
NAT/NAPT共通処理部3は、受信パケットのNAT/NAPT変換処理を行う受信側NAPT変換処理部28と、NAT/NAPTの変換情報を格納するためのNAT/NAPT変換情報管理部29と、送信パケットのNAT/NAPT変換処理を行う送信側NAPT変換処理部30と、で構成される。
本実施の形態の通信装置は、通信端末に対してNAT/NAPT変換処理とALG処理を行い、通信端末の通信相手の端末との中継を行う。以下の説明では、本実施の形態の通信装置がNAT/NAPT変換処理によりアドレスやポートの番号を変更する通信端末を単に通信端末とよび、通信端末の通信先の通信端末を相手端末とよぶこととする。また、通信端末から相手端末に向かう通信方向を順方向とよび、相手端末から通信端末に向かう通信方向を逆方向とよぶこととする。
本実施の形態では、NAT/NAPT変換情報が、NAT/NAPT変換情報管理部29に格納されている。図2は、本実施の形態のNAT/NAPT変換情報の一例を示す図である。図2に示すように、本実施の形態のNAT/NAPT変換情報は、発アドレス,発ポート番号,着アドレス,着ポート番号,プロトコル(プロトコルの種類),ALG(ALGの種類、ALG対象でない場合には“なし”と記載),変換アドレス,変換ポート番号を含んでいる。なお、このNAT/NAPT変換情報は、順方向の通信の際にそれぞれのエントリ101〜105が生成されるため、発アドレス,発ポート番号は、順方向の場合の送信元の通信端末の値となる。変換アドレス,変換ポート番号は、NAT/NAPT変換後のそれぞれアドレスとポート番号であり、順方向の通信の際には、発アドレス,発ポート番号が、それぞれ変換アドレス,変換ポート番号に変換されることになる。なお、ここではNAPTを仮定してポート番号についても変換することとしたが、NATの場合は、変換ポート番号は用いずに変換アドレスのみを用いるようにすればよい。
相手端末は、逆方向の通信の際には、順方向のパケットの送信元アドレスと送信元ポート番号、すなわち、変換アドレスと変換ポート番号宛にパケットを送信するので、本実施の形態の通信装置は、通信端末に送信するために、変換アドレスと変換ポート番号を通信端末のアドレスとポート番号、すなわち、NAT/NAPT変換情報の発アドレスと発ポート番号に変換して送信する。このように、逆方向の通信では、順方向のNAPT変換情報を用いて、逆変換を行うことになる。
つづいて、本実施の形態の動作について説明する。まず、通常のパケット受信処理について説明する。受信側NAPT変換処理部28は、本実施の形態の通信装置の図示しないパケット受信I/F処理部経由で、受信I/F(Interface)情報(どの種類のI/Fで受信したかの情報)とともに、受信TCPパケットを受け取る。パケット受信I/F処理部は、I/Fの種類ごとに処理を行うものとし、I/Fの種類には、NAPT実行I/F(NAPTを用いるI/F処理)を含むこととする。受信側NAPT変換処理部28は、受信I/F情報がNAPT実行I/Fでない場合には、変換処理は実施しない。
受信側NAT/NAPT変換処理部28は、受信I/F情報がNAPT実行I/Fである場合には、NAT/NAPT変換情報に基づいてNAPT変換処理を行う。ただし、受信TCPパケットが逆方向パケットである場合、前述のとおり逆変換を行うことになるため、受け取った受信TCPパケットの発アドレス,発ポート番号,着アドレス,着ポート番号,プロトコルと、それぞれ、着アドレス,着ポート,変換アドレス,変換ポート番号,プロトコルが同一となるNAPT変換情報のエントリを検索する。
検索の結果、対応するNAPT変換情報のエントリがある場合には、受信側NAT/NAPT変換処理部28は、その情報に基づき受信TCPパケットの着アドレス,着ポート番号を、それぞれそのエントリの発アドレス,発ポート番号に変換し、また、アドレスとポート番号の変更を反映して、IPヘッダ・TCPヘッダのチェックサムを修正する。また、検索の結果、対応するNAPT変換情報が存在しなければ、受信側NAT/NAPT変換処理部28は、受け取った受信TCPパケットを廃棄する。
つぎに、受信側NAT/NAPT変換処理部28は、対応するNAPT変換情報のエントリがある場合、そのエントリのALGの項目を参照し、ALG対象パケットであるか否かを判定する。ALG対象パケットでない場合には、受信TCPパケットはシーケンス番号およびTCPデータを編集する必要が無いので、受信側NAT/NAPT変換処理部28は、そのパケットを非ALG対象TCPパケットとしてそのまま送信側NAPT変換処理部30に送信する。そして、送信側NAPT変換処理は、図示しない送信I/F処理部に、非ALG対象TCPパケットを送出するとともにそのパケットの送信を要求する。
また、パケット送信の際には、送信側NAPT変換処理部30は、パケットの着アドレスに基づいてそのパケットの送信I/Fの種類(NAPT実行I/Fであるかなど)を判定する。送信側NAPT変換処理部30は、非ALG対象TCPパケットについて判定したI/FがNAPT実行I/Fであれば、非ALG対象TCPパケットの発アドレス,発ポート番号を変換アドレス,変換ポート番号にそれぞれ変更する。また、アドレスとポート番号の変更を反映して、非ALG対象パケットのIPヘッダ・TCPヘッダのチェックサムを更新する。そして、送信側NAPT変換処理は、送信I/F処理部に、非ALG対象TCPパケットを送出するとともにそのパケットの送信を要求する。
以上、非ALGパケットの処理について説明したが、つぎに、ALG対象パケットの処理について説明する。受信側NAPT変換処理部28は、前述のALG対象パケットであるか否かの判定の際に、ALG対象パケットであると判定した場合には、受信TCPパケットをALG対象パケットとしてACKシーケンス番号変更処理部25に送信する。
ACKシーケンス番号変更処理部25は、TCPシーケンス番号差分情報に基づいて、ALG対象TCPパケットのACKシーケンス番号の変換を以下の手順で実行する。図3は、TCPシーケンス番号差分管理部に格納されるTCPシーケンス番号差分リストと変換前後のパケットの一例を示す図である。変換前パケット201〜207は通信端末から送信され通信装置で受信されたパケットを示し、変換後パケット211〜217は、TCPシーケンス番号変更処理部24が変換前パケット201〜207のシーケンス番号(ACKシーケンス番号および送信シーケンス番号)を変更したパケットを示している。また、変換後パケット231〜237は相手端末から送信されたパケットを示しており、変換前パケット221〜227はパケット231〜237を通信装置に送信するためにTCPシーケンス番号変更処理部24がシーケンス番号の逆変換を行った後のパケットを示している。
図3の変換前パケット201〜207,221〜227と変換後パケット211〜217,231〜237を示す図形のなかには、各々のパケットの送信シーケンス番号(Seq),TCPデータ長(len),ACKシーケンス番号(Ack)が示されている。
図3に示すように、TCPシーケンス番号差分情報は、順方向と逆方向について、それぞれ変換前シーケンス番号と変換後シーケンス番号を含む。これらの情報が、TCPのセッションごとにTCPシーケンス番号差分管理部29に格納されている。
TCPシーケンス番号差分情報は、シーケンス番号の変更を管理するために保持されているものであり、後述のようにTCPデータ編集処理部22によって格納される。図2の例で、変換前パケット205は、TCPデータ編集処理部22によりTCPデータ長が1000バイトから1002バイトに変更され、変換後パケット215のようになったとする。すると、そのつぎの変換前パケット204に対応する変換後パケット214についても、変換後パケット215のTCP長が変更になった分だけ送信シーケンス番号をずらし、送信シーケンス番号を13000から13002に変更する必要がある。
ここで、ACKシーケンス番号変更処理部25の動作の説明に戻る。ACKシーケンス番号変更処理部25は、受信したALG対象パケットの発着アドレス,発着ポート,プロトコルから一意に決定されるセッションに対応するTCPシーケンス番号差分情報を、TCPシーケンス番号差分管理部を検索して取得する。
ACKシーケンス番号変更処理部25は、受信TCPパケットのACKシーケンス番号と一致するシーケンス番号を、取得したTCPシーケンス差分情報の順方向および逆方向の変換後シーケンス番号のなかから検索する。そして、ACKシーケンス番号変更処理部25は、受信TCPパケットのACKシーケンス番号を、検索結果(ACKシーケンス番号を一致する変換後シーケンス番号)に対応する変換前シーケンス番号に変更する。たとえば、たとえば、変換前パケット201〜207の送信シーケンス番号を変換後パケット211〜217のように変換する。また、シーケンス番号変換と同時にTCPパケットのチェックサムも更新する。
たとえば、順方向の変換前パケット205では“Ack=42005”であり、TCPシーケンス番号差分情報の逆方向の変換後シーケンス番号に一致する番号“42005”がある。図3のTCPシーケンス番号差分情報で変換後シーケンス番号“42005”に対応する変換前シーケンス番号は“42000”であるため、変換前パケット205については“Ack=42000”に変換する。また逆方向の変換後パケット234では“Ack=13002”であり、TCPシーケンス番号差分リストの順方向の変換後シーケンス番号に一致する番号“13002”がある。図3のTCPシーケンス番号差分情報で“13002”に対応する変換前シーケンス番号は“13000”であるため、変換後パケット234については“Ack=13000”に変換する。
ACKシーケンス番号変更処理部25は、このように受信TCPパケットのACKシーケンス番号を変更し、変更した受信TCPパケットをACKシーケンス番号修正済みパケットとしてTCPシーケンス番号判定処理部15に送信する。
つぎに、TCPシーケンス番号判定処理部15は、ACKシーケンス番号修正済みパケットが再送パケット(すでに受信した送信シーケンス番号の最大値よりも小さい送信シーケンス番号を持ったパケット),新規パケット(次に受信を期待する送信シーケンス番号を持ったパケット),後続パケット(新規パケットが欠落の後に送られるパケットで、次に受信を期待する送信シーケンス番号より大きい送信シーケンス番号を持ったパケット),以上パケットのいずれかであるかを判定する。図4は、TCPシーケンス番号判定処理部15の判定処理手順の一例を示すフローチャートである。
この判定は、ACKシーケンス番号修正済みパケットの送信シーケンス番号を次に受信を期待するパケットの送信シーケンス番号と比較することにより行う。このために、TCP受信シーケンス番号管理部16は、TCP受信シーケンス番号管理部16にTCP受信シーケンス番号情報を格納している。図5にTCP受信シーケンス番号情報の一例を示す。TCP受信シーケンス番号情報には、TCPセッション識別し(発アドレス,発ポート番号,着アドレス,着ポート番号)ごとに、順方向と逆方向について、それぞれ受信済み最大シーケンス番号と次に受信を期待するシーケンス番号(次受信期待シーケンス番号)が含まれている。TCP受信シーケンス番号情報は、4種類のパケットの判定後に、新規パケットであった場合に後述のように更新される。
TCPシーケンス番号判定処理部15は、ACKシーケンス番号修正済みパケットを受信する(ステップS11)と、ACKシーケンス番号修正済みパケットのTCPセッション識別子に対応するTCP受信シーケンス情報を取得し、ACKシーケンス番号修正済みパケットの送信シーケンス番号が、取得したTCP受信シーケンス情報の順方向または逆方向の受信済み最大送信シーケンス番号以下であるかを判定する(ステップS12)。なお、ここで、ACKシーケンス番号修正済みパケットが順方向であるときには、TCP受信シーケンス情報の順方向の受信済み最大送信シーケンス番号と比較し、逆方向であるときにはTCP受信シーケンス情報の逆方向の受信済み最大送信シーケンス番号と比較する。そして、ACKシーケンス番号修正済みパケットの方が小さい場合(ステップS12 YES)には、そのパケットは再送パケットであると判定する(ステップS18)。
一方、ACKシーケンス番号修正済みパケットの送信シーケンス番号が取得したTCP受信シーケンス情報の順方向または逆方向の送信シーケンス番号より大きい場合(ステップS12 NO)には、TCPシーケンス番号判定処理部15は、さらに、ACKシーケンス番号修正済みパケットの送信シーケンス番号を、取得したTCP受信シーケンス情報の順方向または逆方向の次受信期待シーケンス番号より大きいか否かを判定する(ステップS13)。
ACKシーケンス番号修正済みパケットの送信シーケンス番号が取得したTCP受信シーケンス情報の順方向または逆方向の次受信期待シーケンス番号より大きいと判定した場合(ステップS13 YES)には、そのパケットを後続パケットと判定する(ステップS19)。
ACKシーケンス番号修正済みパケットの送信シーケンス番号が取得したTCP受信シーケンス情報の順方向または逆方向の次受信期待シーケンス番号以下であると判定した場合(ステップS13 NO)には、TCPシーケンス番号判定処理部15は、さらに、ACKシーケンス番号修正済みパケットの送信シーケンス番号が次受信期待シーケンス番号より小さいか否かを判定する(ステップS14)。ACKシーケンス番号修正済みパケットの送信シーケンス番号が次受信期待シーケンス番号より小さいと判定した場合(ステップS14 Yes)は、そのパケットを異常パケットと判定する。
ACKシーケンス番号修正済みパケットの送信シーケンス番号が次受信期待シーケンス番号より小さくない(ACKシーケンス番号修正済みパケットの送信シーケンス番号が次受信期待シーケンス番号と等しい)と判定した場合(ステップS14 NO)は、TCPシーケンス番号判定処理部15はTCPシーケンス番号情報を更新する。具体的には、TCPシーケンス番号情報の順方向または逆方向の受信済み最大送信シーケンス番号を、そのACKシーケンス番号修正済みパケットの送信シーケンス番号に更新し(ステップS15)、次受信期待シーケンス番号を、「ACKシーケンス番号修正済みパケットの送信シーケンス番号+ACKシーケンス番号修正済みパケットのTCPデータ長」に更新する。そして、TCPシーケンス番号判定処理部16は、そのパケットを新規パケットと判定する(ステップS17)。
そして、TCPシーケンス番号判定処理部16は、以上のパケット種類の判定処理の後に、新規パケットと判定した場合には新規パケット受信処理部17へACKシーケンス番号修正済みパケットを送信する。また、TCPシーケンス番号判定処理部16は、後続パケットと判定した場合には後続パケット受信処理部18へ、再送パケットと判定した場合には再送パケット受信処理部20へ、それぞれACKシーケンス番号修正済みパケットを送信する。異常パケットと判定した場合には、そのパケットを破棄する、あるいはALGでは処理不能としてTCPセッションを切断するなどの異常処理を行う。
つぎに、新規パケットと判定されたACKシーケンス番号修正済みパケット(以下、新規パケットという)の処理について説明する。新規パケット受信処理部18は、新規パケットの送信シーケンス番号,TCPデータ部,TCPデータ長を、プロトコル固有の個別ALG処理部1に新規TCPデータとして送信する。また、新規パケットをTCPデータ編集処理部22に送信する。
個別ALG処理部1の構成は、実装に依存するが、一般的には、図1で説明したような構成となる。まず、個別ALG処理部1のメッセージ解析処理部11は、連続したバイト列のストリームとして送信されたTCPデータを、そのデータに対応するALG対象プロトコルの固有のメッセージ単位に区切り、また区切ったメッセージの内容を解析する。個別ALG処理部1は、この解析結果をALG状態遷移処理部12とTCPデータ編集情報生成処理部14に出力する。
ALG対象プロトコルは、発着端末間で管理される複数の状態を持つことがある。ALG状態遷移処理部12は、ALG情報管理部13に現在の状態を示すALG状態情報を格納しており、メッセージ解析処理部11の解析結果に基づいて状態遷移を行う必要が生じた場合に、ALG状態情報を書き換えるとともにALG状態情報をTCPデータ編集情報生成処理部14に通知する。
TCPデータ編集情報生成処理部14は、メッセージ解析処理部11の解析結果とALG状態情報に基づいて新規パケットのTCPデータをどのように変更するかを決定し、TCPデータ編集処理部22にTCPデータ編集情報として通知する。図6は、TCPデータ編集情報の一例を示す図である。図6に示すように、TCPデータ編集情報は、TCPセッション識別子,方向(順方向または逆方向),送信シーケンス番号,TCPデータ長,変更位置オフセット,変更データ長(変更対象部分のデータ長),更新データ,更新データ長を含み、ALGの種類に依存しない形式で表現されている。変更位置オフセットは、対応する送信シーケンス番号のデータの先頭位置から、変更するデータの先頭位置までのオフセット量を示している。
また、TCPデータ編集情報は、変更箇所ごとに1組生成される。たとえば、ある新規パケットのTCPデータの”address=192.168.0.1,port=8000”を”address=133.9.3.1,port=10000”に変更する場合を仮定する。addressの位置のオフセットを8,portの位置のオフセットを25とすると、TCPデータ編集情報は「変更位置オフセット=8,変更データ長=11,更新データ=”133.9.3.1”,更新データ長=9」と「変更位置オフセット=25,変更データ長=4,更新データ=”10000”,更新データ長=5」の2組となる。
TCPデータ編集処理部22は、通知されたTCPデータ編集情報を図6に示すような形式でTCPデータ編集情報管理部23に格納する。TCPデータ編集処理部22は、セッション識別子をキーとして、新規パケット受信処理部17から受け取った新規パケットに対応する情報をTCPデータ編集情報のなかから検索する。セッション識別子の一致する情報が得られた場合には、TCPデータ編集処理部22は、その情報に基づいて新規パケットを編集する。
このときの編集の方法について図7を用いて説明する。図7は、編集方法を説明するための図である。その新規パケットに対応する1組目のTCPデータ編集情報に対応する変更オフセット,変更データ長,変更箇所をそれぞれ変更オフセット#1,変更データ長#1,変更箇所#1とする。また、同様に2組目、3組目のTCPデータ編集情報に対応する変更オフセット,変更データ長,変更箇所にそれぞれ#2,#3の番号を付すこととする。ここで、これらのTCPデータ編集情報は変更位置オフセットが小さい順に#1,#2,…としている。TCPデータ編集情報を格納する時点でこのように変更位置オフセットの小さい順に並べるようにしておいてもよいし、検索後に読み出したTCPデータ編集情報を変更位置オフセットの小さい順に並び替えるようにしてもよい。また、図7の矢印の上の段に編集前の新規パケットを示し、矢印の下の段に編集後のパケットを示している。
まず、編集前の新規パケットのうち、1組目の変更位置オフセットまでのデータは変更の必要がない。TCPデータ編集処理部22は、先頭位置から変更オフセット#1までの変更の無い部分のデータを保持する。つぎの変更のない部分は、“変更オフセット#1+変更データ長#1”の位置からつぎの変更の先頭(“変更オフセット#2”)までであり、この部分を保持する。このように、TCPデータ編集処理部22は、先頭または“変更オフセット+変更データ長#N(Nは自然数)”から“変更オフセット#(N+1)”まで切り出し箇所#Nとして保持する。そして、TCPデータ編集処理部22は、保持した切り出し箇所#1のつぎに更新箇所#1として1組目の更新データをコピーする。同様に、切り出し箇所と更新データを交互にコピーすることにより、図7の矢印の下の段のような編集後パケットを生成する。TCPデータ編集処理部22は、生成した編集後パケットを送信シーケンス番号変更処理部27に送信する。
また、編集の結果、編集前の新規パケットと編集後パケットでTCPデータ長が異なる場合、編集したパケット以降のTCPパケットの送信シーケンス番号,ACKシーケンス番号を変更する必要がある。このため、TCPデータ編集処理部22は、TCPシーケンス番号変更処理部24のTCPシーケンス番号差分管理部26にシーケンス番号差分情報を登録する。登録するシーケンス番号差分情報は、変換前シーケンス番号については“受信TCPパケットのシーケンス番号+TCPデータ長”として算出し、変換後シーケンス番号については“受信TCPパケットのシーケンス番号+TCPデータ長+変更前後のTCPデータ長の差分”として算出する。このとき、すでに、同じ変換前シーケンス番号についてシーケンス番号差分情報が登録されている場合には、“それらの変換前シーケンス番号に対応する変換後シーケンス番号+変更前後のTCPデータ長の差分”として変換後シーケンス番号を更新する。
つぎに、送信シーケンス番号変更処理部27は、TCPシーケンス番号差分情報に基づいて、編集後パケットの送信シーケンス番号を変更する。具体的には、新規パケットの送信シーケンス番号と一致するTCPシーケンス番号差分情報の変換前シーケンス番号を検索し、一致するものがあった場合には、対応する変換後シーケンス番号に変更する。それ以前にTCPデータの編集が行われていない場合には、編集後パケットより後に到着するパケットについてはシーケンス番号を変更する必要があるが、編集後パケット自体については送信シーケンス番号を変更する必要はない。しかし、それ以前にTCPデータ長の変更が発生していた場合には、TCPシーケンス番号差分情報に基づいて変更することになる。
たとえば図3の変換前パケット205は、送信シーケンス番号変更処理部27による処理の後に変換パケット215になるが、送信シーケンス番号は12000のままで変更されていない。その次の変換前パケット204と対応する変換後パケット214では、送信シーケンス番号が13000から13002に変更されている。このように新規パケット編集の処理を行った場合には、それ以降パケットに対して送信シーケンス番号を変更する必要がある。
送信シーケンス番号変更処理部27は、送信シーケンス番号の変更を行った後に、チェックサムについてもその変更を反映して更新する。そして、送信シーケンス番号変更処理部27は、送信シーケンス番号が変更された新規パケットを送信側NAPT変換処理部30に送信する。送信側NAPT変換処理部30は、NAT/NAPT変換情報のなかから、そのパケットの発アドレス,発ポート番号、着アドレス,着ポート番号,プロトコルの一致するエントリを取得し、発アドレス,発ポート番号を該当するエントリの変換アドレス,変換ポート番号に変更する。また、発アドレス,発ポート番号の変更に対応してそのパケットのチェックサムも更新する。
このように、発着アドレス・ポート番号変更と,送信・ACKシーケンス番号変更,TCPデータ編集を実行することで、たとえば図3の順方向の変換前パケット201〜207は変換後パケット211〜217に変換され、逆方向では変換後パケット231〜237が変換前パケット221〜227に逆変換される。
つづいて、後続パケットの処理について説明する。TCPシーケンス番号判定処理部15は、後続パケットと判定したパケット(以下後続パケットという)を後続パケット受信処理部18に送信する。後続パケット受信処理部18は、後続パケット管理部19に受信した後続パケットをシーケンス番号順に格納している。送信された後続パケットも、後続パケット管理部にシーケンス番号順に格納する。また、後続パケット受信処理部18は、後続パケットを、本発明の特徴である代理ACK生成処理部21に送信する。
代理ACK生成処理部21は、後続パケットからIPヘッダとTCPヘッダをコピーし、そのIPヘッダとTCPヘッダを有しTCPデータ長を“0”とした代理ACKパケットを生成する。ただし代理ACKパケットの送信シーケンス番号は、TCP受信シーケンス番号管理部16に格納されているTCP受信シーケンス番号情報の次受信期待シーケンス番号とする。そして、代理ACK生成処理部21は、代理ACKパケットのチェックサムを計算しチェックサムを設定し、代理ACKパケットを送信シーケンス番号変更処理部27に送信する。なお、ここでは、代理ACKパケットの送信シーケンス番号を次受信期待シーケンス番号としたが、これに限らず、たとえば、次受信期待シーケンス番号以上の値など他の数値に設定するようにしてもよい。
送信シーケンス番号変更処理部27は、新規パケットの場合と同様に代理ACKパケット以前に受信したTCPパケットでTCPデータ長に変更が発生した場合は、代理ACKパケットについても送信シーケンス番号を変更する必要がある。したがって、送信シーケンス番号変更処理部27は、代理ACKパケットの送信シーケンス番号をキーに、一致する変換前シーケンス差分番号を持つシーケンス番号差分情報を取得し、取得した情報に基づき代理ACKパケットの送信シーケンス番号を対応する変換後シーケンス差分番号に変更する。また送信シーケンス番号変更に合わせてチェックサムも更新する。
そして、送信シーケンス番号変更処理部27は、代理ACKパケットを送信側NAPT変換処理部30に送信する。送信側NAPT変換処理部30は、新規パケットに対する処理と同様にアドレス,ポート番号の変換処理を行い、代理ACKパケットのチェックサムも更新する。
このような代理ACKパケットが送信されると、相手端末では、この代理ACKパケットを受信する。相手端末では、シーケンス番号に矛盾のない代理ACKパケットを受信することにより、輻輳制御などを行わずにすみ、TCPスループットの低下を防ぐことができる。
つぎに、後続パケットの後に、欠落パケットの再送が行われると、その再送された欠落パケットは再送パケットして処理され、それ以降、再び新規パケットの処理が開始される。このとき、本実施の形態では、再送された欠落パケットの後に送信される新規パケットの前に後続パケットの内容を持つパケットを再開パケットとして送信する。この再開パケットの処理について、つぎに説明する。
新規パケット受信処理部17は、再送された欠落パケットを新規パケットとして受信すると、後続パケット管理部19に格納されている後続パケットを再開パケットとして取得する。再開パケットの処理手順は通常の新規パケットと同様であるが、ACKシーケンス番号だけは、通常と異なり再送された欠落パケットのACKシーケンス番号とする。それ以降の処理は、新規パケットと同様に、個別ALG処理部1の処理、TCPデータ編集処理部22の処理、送信シーケンス番号変更処理部27の処理、送信側NAPT変換処理部30の処理が行われる。
図8は、後続パケットを含む場合のパケットの変換を説明するための図である。変換前パケット301〜307は通信端末から送信され通信装置で受信されたパケットを示し、変換後パケット311〜319は、変換前パケット301〜307が本実施の形態の通信装置により変換されたパケットを示している。また、変換後パケット331〜337は相手端末から送信されたパケットを示しており、変換前パケット321〜327は変換後パケット331〜337を通信装置に送信するためにTCPシーケンス番号変更処理部24がシーケンス番号の逆変換を行った後のパケットを示している。図8では、変換前パケット305が欠落し、その後に後続パケットとして変換前パケット304,303が送信され、変換前パケット302が欠落パケット305の再送パケットとして送信された例である。
図8に示すように、後続パケットである変換前パケット303,304は、代理ACKパケットに変換され変換後パケット315,316として送信される。そして、再送パケットである変換前パケット302は新規パケットとして処理され、変換後パケット314として送信される。変換後パケット314の後に、図8では変換前の後続パケット304,305に対応する、変換後の再開パケット312,313が送信されている。
つづいて、再送パケットの処理について説明する。TCPシーケンス番号判定処理部15は、再送パケットと判定したパケット(以下再送パケットという)を再送パケット受信処理部20に送信する。再送パケット受信処理部20は、再送パケットをTCPデータ編集処理部22に送信する。
TCPデータ編集処理部22は、TCPデータ編集情報管理部23に格納されているTCPデータ編集情報を再送パケットの送信シーケンス番号をキーとして検索し、一致した検索TCP編集情報に従って、新規TCPパケットと同様にTCPデータ部を編集する。なお、再送パケットに対しては、編集の結果全体としてTCPデータ長に変更が発生しても、シーケンス番号差分情報は登録しない。そして、TCPデータ編集処理部22は、編集後の再送パケットを送信シーケンス番号変更処理部27に送信する。
その再送パケットの受信以前のTCPパケットでTCPデータ長に変更が発生していた場合は、再送パケットの送信シーケンス番号も変更する必要がある。このため、送信シーケンス番号変更処理部27は、再送パケットの送信シーケンス番号をキーに、TCPシーケンス番号差分情報のなかかから一致する変換前シーケンス番号を検索し、再送パケットの送信シーケンス番号を検索した変換前シーケンス番号に対応する変換後シーケンス番号に変更する。また同時にチェックサムも更新する。
そして、送信シーケンス番号変更処理部27は、再送パケットを送信側NAPT変換処理部に送信し、送信側NAPT変換処理部で他のパケットと同様にアドレス,ポート番号の変換処理が行われる。また、変更に合わせて再送パケットのIPヘッダ、TCPヘッダのチェックサムも更新する。
図9は、再送パケットの変換前後の様子を示す図である。パケット401〜407は通信端末から送信され通信装置で受信されたパケットを示し、変換後パケット411〜417は、変換前パケット401〜407が本実施の形態の通信装置により変換されたパケットを示している。また、変換後パケット431〜437は相手端末から送信されたパケットを示しており、変換前パケット421〜427はパケット431〜437を通信装置に送信するためにTCPシーケンス番号変更処理部24がシーケンス番号の逆変換を行った後のパケットを示している。なお、ここでは再送パケットについて説明をするための図であるため、再開パケットについては省略している。変換前パケット405の再送パケットが変換前パケット402であるとき、変換前パケット402は変換後パケット412に変換されて送信される。
なお、本実施の形態では、ALG処理とNAPTの処理を組み合わせるようにしたが、NATの処理と組み合わせるようにしてもよく、さらに、Ipv4−Ipv6トランスレータ処理と組み合わせるようにしてもよい。
また本実施の形態では、チェックサム再計算の負荷を軽減するためチェックサムの再計算を行わず、ALGによるTCPパケットの編集が発生する毎に、編集差分に合わせてIPヘッダ、TCPヘッダのチェックサムを調整するようにしたが、チェックサムの調整を行わず最後にまとめてチェックサムを再計算して付与するようにしても良い。
このように、本実施の形態では、欠落パケットが生じた後、後続パケットを受信した場合に欠落パケットが再送されるまで相手端末に全くパケットを送信しないのではなく、欠落パケットの送信シーケンス番号を有しTCPデータ長=“0”の代理ACKパケットを相手端末に送信するようにしていた。このため、相手端末が再送タイムアウトを検出してTCP送信可能レートを低下させるのを防止することができる。
また、代理ACKパケットの送信シーケンス番号は、それ以前に受信した最大の送信シーケンス番号を持つ新規パケットの送信シーケンス番号とTCPデータ長から欠落パケットの送信シーケンス番号を算出して代理ACKパケットに付与するようにした。このため、欠落パケット自体が再送されるのを待たずに相手端末に欠落パケットの送信シーケンス番号を通知することができる。
また、再送された欠落パケットを受信する前に、さらに後続パケットを受信した場合、後続パケットの受信に応じてさらに代理ACKパケットを送信するようにした。このため、再送される欠落パケットを長時間受信できない場合でも、相手端末が再送タイムアウトを検出しない。したがって、再送タイムアウトを検出することによって生じるTCP送信可能レートの低下を防止することができる。
また、再送された欠落パケットを受信する前に、後続パケットをさらに受信した場合、送信する代理ACKパケットのACKシーケンス番号は受信する後続パケットのACKシーケンス番号に応じて増加させるようにし、同一ACKシーケンス番号を持つ代理ACKパケットを送信しないようにした。このため、相手端末で複製ACK(同一ACKシーケンス番号のパケット)受信することがなく、複製ACKを検出することにより相手端末がTCP送信可能レートを低下させるのを防止することができる。
また、後続パケットを受信した時は、後続パケットを内部に保持し、端末から再送された欠落パケットを受信後、内部に保持していた後続パケットを再開パケットとして送信するようにした。このため、通信端末が後続パケットを再送するのを待たずにALG処理を再開することができる。
実施の形態2.
図10は、本発明にかかる通信装置の実施の形態2の機能構成例を示す図である。図10に示すように、本実施の形態の通信装置は、実施の形態1の通信装置の個別ALG処理部1をRTSP−ALG処理部34に替え、後続パケット受信処理部18を後続パケット受信処理部18aに替え、ALG共通処理部2をALG共通処理部2aに替える以外は、実施の形態1の通信装置と同様である。実施の形態1と同様の機能を有する構成要素は同一の符号を付して説明を省略する。
本実施の形態のRTSP−ALG処理部34は、個別ALG処理部1の一種と考えることができる。本実施の形態のRTSP−ALG処理部は、RTSPメッセージ解析処理部35と、RTSP状態遷移処理部36と、TCPデータ編集情報生成処理部38で構成される。RTSP状態遷移処理部23は、状態管理部37を備えている。RTSPメッセージ解析処理部35,RTSP−ALG処理部,TCPデータ編集情報生成処理部38は、それぞれ実施の形態1のメッセージ解析処理部11,ALG状態遷移処理部12,TCPデータ編集情報生成処理部14と同様の機能を有する。
実施の形態1では、欠落パケットを編集することができる一般的なALG処理を想定したものであるが、本実施の形態ではALG処理で欠落パケットを編集する可能性が無い場合(ALG処理によって変更される項目は決まっているため、たとえば、変更される項目を含まないパケットとわかる場合には編集する可能性が無い)に後続パケットをそのまま送信するようにしている。
ALG対象のプロトコルまたはALGの状態によっては、一定の条件で欠落したTCPパケットのシーケンス番号から、そのTCPパケットのデータが編集される可能性が無い(データの編集可能性が無い)か否かが判定可能な場合がある。たとえば、ALGで使用されるプロトコルでは、可変長のALGメッセージをALG種別,ALGメッセージ長,ALG値で示すTLV(Type Length Value)フォーマットで記載することにより、各ALGメッセージの境界を示すプロトコルが多く存在する。このようなTLVフォーマットを使用するプロトコルでは、ALGメッセージ種別によりALG処理で編集を行う必要があるかを区別できるため、編集可能性を判定することができる。
さらに、ALGメッセージ境界まで中身を解釈せずに読み飛ばすことができる場合がある。またRTSP−ALGでは、メッセージ境界を“\r\n\r\n”で示すので一般にはあてはまらないが、例えばRTSPヘッダ部にContent-Length長が示され、欠落したTCPパケットのシーケンス番号から、欠落したTCPパケットのデータがRTSP−ALGで編集を行う必要がないContent-Data部のみを含むと確実に判定できる場合、編集可能性なしと判定することができる。
また同様にRTSP−ALGでも、IL配信データ(LLデータ)を含む場合、通常のALG処理で、IL配信データについては中身を解釈せずに読み飛ばすことができる。すなわちALG処理が読み飛ばすことができる部分については編集を行うことはないので、欠落パケットがIL配信データである場合には、TCPデータ編集の可能性は無いと判定できる。
図11は、ILデータを含むTCPパケットの一例を示す図である。図11で、TCPパケット501〜506は、IL配信データを含むTCPパケットを示し、データ511〜516は、TCPパケットのデータ部分を示している。たとえば、TCPパケット502が欠落した場合、TCPパケット502はILデータのパケットであるため、TCPデータ編集の可能性は無いと判定することができる。
このように一般的に先頭部分に次のALGメッセージ境界へのメッセージ長が示される場合、ALG処理部は欠落したTCPパケットについて編集可能性を比較的容易に判定することができる場合がある。
つづいて、本実施の形態の動作について説明する。受信TCPパケットがTCPシーケンス番号判定処理部15に送信されるまでの処理は実施の形態1と同様である。TCPシーケンス番号判定処理部15が後続パケットと判定したパケットを後続パケット受信処理部18aに送信する。後続パケット受信処理部18aは、次受信期待送信シーケンス番号と、後続パケットの送信シーケンス番号と一緒に、RTSP状態遷移処理部36に欠落パケットのTCPデータの編集可能性の問い合わせを行う。
RTSP−ALGでは、ALG処理で編集する必要がある部分は、SETUPメッセージ中のアドレスまたはポート番号記述部分と、SETUPメッセージに対する“200 OK”応答メッセージ中のアドレスまたはポート番号記述部分だけである。このため、RTSP状態遷移処理部36はALG処理の状態を追跡し、クライアントからサーバ方向にSETUPメッセージが送信されサーバからの応答待ちの状態でなければ、サーバからクライアント方向については、TCPデータの編集可能性は無いと判定できる。
つぎに、後続パケット受信処理部18aは、RTSP状態遷移処理部36からTCPデータの編集可能性は無いという応答を受けた場合、TCPシーケンス番号差分管理部26にシーケンス番号差分情報を登録する。このとき登録する差分情報は、変換前シーケンスについては、受信したTCPシーケンス番号とし、変換後シーケンス番号については、受信した“TCPシーケンス番号+一つ前のシーケンス番号との差分値”、とする。
つぎに、後続パケット受信処理部18aは、送信シーケンス番号変更処理部27に後続パケットを送信する。送信シーケンス番号変更処理部27,送信側NAPT変換処理部30の処理は、実施の形態1の新規パケットに関する処理と同様である。
図12は、編集可能性の無いパケットが欠落した場合のパケットの変換前後の様子を示す図である。図12では、変換前パケット601〜607は通信端末から送信され通信装置で受信されたパケットを示し、変換後パケット611〜617は、変換前パケット601〜607が本実施の形態の通信装置により変換されたパケットを示している。また、変換後パケット631〜637は相手端末から送信されたパケットを示しており、変換前パケット621〜627は変換後パケット631〜637を通信装置に送信するためにTCPシーケンス番号変更処理部24がシーケンス番号の逆変換を行った後のパケットを示している。
図12の例では、変換後パケット634が欠落した場合を示しており、欠落パケットの後の後続パケットである変換後パケット635が、変換前パケット624としてシーケンス番号の逆変換の後に送信されている。
なお、本実施の形態では、個別ALG処理部としてATSP−ALG処理部を備える場合について説明したが、パケットの編集可能性を判定できる個別ALG処理部であればこれに限らず、他のALG処理部を用いてもよい。
このように、本実施の形態では、後続パケット受信処理部18aが、欠落パケットの後に後続パケットを受信した場合、RTSP状態遷移処理部に欠落パケットのTCPデータ長の変更可能性を問い合わせ、RTSP状態遷移処理部からTCPデータ長の変更可能性が無いという応答があった場合には、後続パケット受信処理部18aは、後続パケットを待機させずに送信するようにした。このため、実施の形態1に比べ、速やかに後続パケットを送信することができる。
以上のように、本発明にかかる通信装置および通信方法は、ALG(Application Level Gateway)処理を行う通信システムに有用であり、特に、ALGを適用しつつ高TCPスループットを維持する必要のある通信システムに適している。
本発明にかかる通信装置の実施の形態1の機能構成例を示す図である。 NAT/NAPT変換情報の一例を示す図である。 TCPシーケンス番号差分管理部に格納されるTCPシーケンス番号差分リストと変換前後のパケットの一例を示す図である。 TCPシーケンス番号判定処理部の判定処理手順の一例を示すフローチャートである。 TCP受信シーケンス番号情報の一例を示す図である。 TCPデータ編集情報の一例を示す図である。 編集方法を説明するための図である。 後続パケットを含む場合のパケットの変換を説明するための図である。 再送パケットの変換前後の様子を示す図である。 本発明にかかる通信装置の実施の形態2の機能構成例を示す図である。 ILデータを含むTCPパケットの一例を示す図である。 編集可能性の無いパケットが欠落した場合のパケットの変換前後の様子を示す図である。
符号の説明
1 個別ALG処理部
2,2a ALG共通処理部
3 NAT/NAPT共通処理部
11 メッセージ解析処理部
12 ALG状態遷移処理部
13 状態管理部
14 TCPデータ編集情報生成処理部
15 TCPシーケンス番号判定処理部
16 TCP受信シーケンス番号管理部
17 新規パケット受信処理部
18,18a 後続パケット受信処理部
19 後続パケット管理部
20 再送パケット受信処理部
21 代理ACK生成処理部
22 TCPデータ編集処理部
23 TCPデータ編集情報管理部
24 TCPシーケンス番号変更処理部
25 ACKシーケンス番号変更処理部
26 TCPシーケンス番号差分管理部
27 送信シーケンス番号変更処理部
28 受信側NAPT変換処理部
29 NAT/NAPT変換情報管理部
30 送信側NAPT変換処理部
34 RTSP−ALG処理部
35 RTSPメッセージ解析処理部
36 RTSP状態遷移処理部
37 状態管理部
38 TCPデータ編集情報生成処理部
101〜105 エントリ
201〜207,221〜227,301〜307,321〜327,401〜407,421〜427,601〜607,621〜627 変換前パケット
211〜217,231〜237,311〜319,331〜337,411〜417,431〜437,611〜617,631〜637 変換後パケット
501〜506 TCPパケット
511〜516 データ

Claims (7)

  1. TCPデータの更新を行うALG処理機能を備えた通信装置であって、
    受信したパケットのTCPシーケンス番号に基づいて、欠落パケットの後に続いて送信されるパケットである後続パケットか否かを判定するTCPシーケンス番号判定処理手段と、
    前記TCPシーケンス番号判定処理手段で後続パケットと判定された場合に、TCPデータ部分が無くTCPデータ長を0とした欠落パケットの宛先を宛先とする代理ACKパケットを生成する後続パケット生成処理手段と、
    を備えることを特徴とする通信装置。
  2. 前記代理ACKパケットの送信シーケンス番号を、それ以前に受信した最大の送信シーケンス番号に、その最大のシーケンス番号を有するパケットのTCPデータ長を加算した値とすることを特徴とする請求項1に記載の通信装置。
  3. 前記後続パケット生成処理手段は、前記代理ACKパケットのACKシーケンス番号を、受信した後続パケットのACKシーケンスに基づいて付与することを特徴とする請求項1または2に記載の通信装置。
  4. 前記後続パケット生成処理手段は、欠落パケットの再送パケットを受信する前にさらに後続パケットを受信した場合、さらに、別の代理ACKパケットを生成することを特徴とする請求項1、2または3に記載の通信装置。
  5. 前記後続パケット生成処理手段は、
    後続パケットを保持し、
    前記欠落パケットの再送パケットを受信すると、保持していた後続パケットを再開パケットとして送信することを特徴とする請求項1〜4のいずれか1つに記載の通信装置。
  6. 受信パケットのALGメッセージの内容に基づいてALG状態を管理し、ALG状態に基づいて受信パケットごとにTCPデータの変更の可能性の有無を判定するALG状態遷移処理手段、
    をさらに備え、
    前記後続パケット生成処理手段は、後続パケットを受信した場合、前記判定結果をALG状態遷移処理手段から取得し、前記判定結果が変更の可能性が無いことを示す場合には、後続パケットをそのまま通過させることを特徴とする請求項1〜5のいずれか1つに記載の通信装置。
  7. TCPデータの更新を行うALG処理機能を備えた通信装置の通信方法であって、
    受信したパケットのTCPシーケンス番号に基づいて、欠落パケットの後に続いて送信されるパケットである後続パケットか否かを判定するTCPシーケンス番号判定ステップと、
    前記TCPシーケンス番号判定ステップで後続パケットと判定された場合に、TCPデータ部分が無くTCPデータ長を0とした欠落パケットの宛先を宛先とする代理ACKパケットを生成する後続パケット生成ステップと、
    を含むことを特徴とする通信方法。
JP2007173377A 2007-06-29 2007-06-29 通信装置および通信方法 Pending JP2009015392A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007173377A JP2009015392A (ja) 2007-06-29 2007-06-29 通信装置および通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007173377A JP2009015392A (ja) 2007-06-29 2007-06-29 通信装置および通信方法

Publications (1)

Publication Number Publication Date
JP2009015392A true JP2009015392A (ja) 2009-01-22

Family

ID=40356257

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007173377A Pending JP2009015392A (ja) 2007-06-29 2007-06-29 通信装置および通信方法

Country Status (1)

Country Link
JP (1) JP2009015392A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011103566A (ja) * 2009-11-11 2011-05-26 Hitachi Ltd ゲートウェイ装置およびポート番号割当て方法
JP2012221327A (ja) * 2011-04-11 2012-11-12 Ntt Data Corp Icカード処理システム、icカード処理方法及びプログラム
JP2012244224A (ja) * 2011-05-16 2012-12-10 Mitsubishi Electric Engineering Co Ltd 端局装置および端局装置の制御方法
JP2014216991A (ja) * 2013-04-30 2014-11-17 株式会社日立製作所 分析サーバ及び分析方法
US8976814B2 (en) 2011-12-09 2015-03-10 General Electric Company Method of transporting data from sending node to destination node

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011103566A (ja) * 2009-11-11 2011-05-26 Hitachi Ltd ゲートウェイ装置およびポート番号割当て方法
US8462800B2 (en) 2009-11-11 2013-06-11 Hitachi, Ltd. Gateway device and port number assignment method
JP2012221327A (ja) * 2011-04-11 2012-11-12 Ntt Data Corp Icカード処理システム、icカード処理方法及びプログラム
JP2012244224A (ja) * 2011-05-16 2012-12-10 Mitsubishi Electric Engineering Co Ltd 端局装置および端局装置の制御方法
US8976814B2 (en) 2011-12-09 2015-03-10 General Electric Company Method of transporting data from sending node to destination node
JP2014216991A (ja) * 2013-04-30 2014-11-17 株式会社日立製作所 分析サーバ及び分析方法

Similar Documents

Publication Publication Date Title
JP5969689B2 (ja) リアルタイム通信のための冗長性
US7936750B2 (en) Packet transfer device and communication system
US7907525B2 (en) Method of communicating packet multimedia to restricted endpoints
US7788408B2 (en) Address translator, message processing method and equipment
US7127496B2 (en) Communications relay device, communications relay method, communications terminal apparatus and program storage medium
US20040246991A1 (en) IP address translator and packet transfer apparatus
US8462800B2 (en) Gateway device and port number assignment method
US20090161680A1 (en) Gateway apparatus, packet forwarding method, and program
US20040153858A1 (en) Direct peer-to-peer transmission protocol between two virtual networks
US20060015647A1 (en) System and method for communication between heterogeneous networks
WO2008067738A1 (fr) Procédé de transfert de message de fragmentation, système de communication et dispositif de tunnel
JP2005530367A (ja) 異なる優先レベルで複数のデータ型からなるデータ・ストリームを配信するシステムおよび方法
US9106444B2 (en) Method for transmitting of a multi-channel data stream on a multi-transport tunnel, corresponding computer-readable storage means and tunnel end-points
JP2009015392A (ja) 通信装置および通信方法
WO2009124477A1 (zh) 一种报文传输的方法、***和装置
JP3999785B2 (ja) 通信方法
EP2211507A1 (en) Method, device and system for processing real time streaming protocol
JP5311460B2 (ja) 接続制御装置
US10594500B2 (en) Method and device for managing packets in a multi-stream and multi-protocol connection
JP3928664B2 (ja) アドレス変換装置、メッセージ処理方法および装置
JP2006013911A (ja) ストリームデータ転送方法、装置、プログラム、および記録媒体
WO2013056999A1 (en) Method and system for enabling nat traversal for multi-homing protocols
JP3928663B2 (ja) アドレス変換装置、メッセージ処理方法および装置
JP3928662B2 (ja) アドレス変換装置、メッセージ処理方法および装置
Fu et al. General Internet Signaling Transport (GIST) over Stream Control Transmission Protocol (SCTP) and Datagram Transport Layer Security (DTLS)