説明

中継装置、パケット中継方法、及び通信システム

【課題】ゲートウェイ装置自身が切断したセッションを再確立する場合に、TCP通信も再開できるゲートウェイ装置を得る。
【解決手段】ゲートウェイ装置1は、パケットの受信を検出するパケット検出部14A、14Bと、受信したパケットを一時保留するパケット保留部15と、あるセッションを使用するパケットが所定期間検出されない場合にこのセッションを切断するセッション制御部16と、セッション制御部16によりセッションが切断されたか否かを示す切断情報を記憶した記憶部17と、を有し、セッションの切断後にIP端末3からこのセッションを使用するTCPパケットを受信した場合に、このTCPパケットを一時保留してセッションを再確立し、セッションの再確立後に記憶部17に記憶された切断情報に基づいてTCPコネクションを確立し、TCPコネクションの確立後に一時保留したTCPパケットをSIPサーバ2に向けて転送させるものである。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、IP(インターネットプロトコル)ネットワークと呼制御ネットワークを接続するゲートウェイ装置に関するものである。
【背景技術】
【0002】
IP端末を収容する複数のユーザネットワークと、複数のユーザネットワーク間にあって呼制御・呼管理を行う呼制御ネットワークとを備えた通信システムにおいて、ユーザネットワークと呼制御ネットワークの間に設けられ、ユーザネットワーク内で発行される通信要求または最初のデータを解析することにより呼制御ネットワーク内に所要の呼を確立し、通信要求またはデータをIP(Internet Protocol)パケットとして呼制御ネットワーク内に中継するゲートウェイ装置がある。(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】WO2006/051594
【発明の概要】
【発明が解決しようとする課題】
【0004】
このような通信システムで呼制御ネットワークの帯域を有効活用するには、通信需要に応じて呼を切断したり再確立したりするのが望ましい。しかしながら、呼すなわちセッションの切断要求や確立要求を発するのはゲートウェイ装置であるのに対し、TCP(Transmission Control Protocol)コネクションの切断要求や確立要求をするのはIP端末であるため、ゲートウェイ装置がセッションを再確立してもTCP通信を再開できないという問題があった。すなわち、セッションが切断されるとTCPコネクションも切断されてしまうが、ゲートウェイ装置がセッションを切断した場合はIP端末にセッションの切断を知らせる手段が無いため、IP端末がTCPコネクションの再確立を要求することは無く、TCP通信を再開できないという問題があった。
【0005】
本発明はこのような問題を解決するためになされたもので、IP端末からの要求とは別にセッションを切断した場合であってセッションを再確立する際に、TCP通信も再開できる中継装置、パケットの中継方法、及び通信システムを得ることを目的とする。
【課題を解決するための手段】
【0006】
本発明に係る中継装置は、IP端末と呼制御・呼管理を行うサーバとの間に接続され、サーバとの間にセッションが確立されている場合にIP端末から送信されたパケットをサーバに中継する中継装置であって、IP端末から送信されたパケットの受信を検出するパケット検出部と、IP端末から受信したパケットを一時保留するパケット保留部と、パケット検出部によりセッションを使用するパケットが所定期間検出されない場合にこのセッションを切断するセッション制御部と、セッションがセッション制御部により切断されたか否かを示す切断情報を記憶した記憶部と、を有し、セッションの切断後に、このセッションを使用するTCPパケットをIP端末から受信した場合に、パケット保留部がTCPパケットを一時保留し、セッション制御部が、セッションを再確立し、セッションの再確立後に記憶部に記憶された切断情報に基づいてサーバを介して接続された他の中継装置との間にTCPコネクションを確立し、TCPコネクションの確立後にパケット保留部に保留されたTCPパケットをサーバに向けて転送させることを特徴とするものである。
【0007】
また、本発明に係るパケット中継方法は、IP端末と呼制御・呼管理を行うサーバとの間に接続され、サーバとの間にセッションが確立されている場合にIP端末から送信されたパケットをサーバに中継する中継装置において実行される中継方法であって、セッションを使用するパケットを所定期間受信しない場合にセッションを切断する第1のステップと、第1のステップによるセッション切断後に、このセッションを使用するTCPパケットをIP端末から受信する第2のステップと、第2のステップにより受信したTCPパケットを一時保留する第3のステップと、第2のステップによりTCPパケットを受信した場合にセッションを再確立する第4のステップと、第4のステップによるセッションの再確立後にTCPコネクションを確立する第5のステップと、第5のステップによるTCPコネクションの確立後に、第3のステップにより一時保留されたTCPパケットをサーバに向けて転送する第6のステップと、を備えたことを特徴とするものである。
【0008】
また、本発明に係る通信システムは、IP端末と、呼制御・呼管理を行うサーバと、IP端末及びサーバ間に接続され、サーバとの間にセッションが確立されている場合にIP端末から送信されたパケットを中継する中継装置と、を備えた通信システムであって、この中継装置は、IP端末から送信されたパケットの受信を検出するパケット検出部と、IP端末から受信したパケットを一時保留するパケット保留部と、パケット検出部によりセッションを使用するパケットが所定期間検出されない場合にこのセッションを切断するセッション制御部と、セッションがセッション制御部により切断されたか否かを示す切断情報を記憶した記憶部と、を備え、セッションの切断後に、このセッションを使用するTCPパケットをIP端末から受信した場合に、セッション制御部が、セッションを再確立し、セッションの再確立後に記憶部に記憶された切断情報に基づいてサーバを介して接続された他の中継装置との間にTCPコネクションを確立し、TCPコネクションの確立後にパケット保留部に保留されたTCPパケットをサーバに向けて転送させることを特徴とするものである。
【発明の効果】
【0009】
本発明によれば、中継装置、パケット中継方法、通信システムは、セッションを使用するパケットが所定期間検出されない場合に中継装置がこのセッションを切断し、セッション切断後に中継装置がIP端末からこのセッションを使用するTCPパケットを受信するとTCPパケットを一時保留してセッションを再確立し、セッション再確立後、サーバを介して接続された他の中継装置との間にTCPコネクションを確立し、TCPコネクションの確立後に一時保留したTCPパケットをサーバに向けて転送させることにより、中継装置がIP端末からの要求とは別にセッションを切断した場合であっても、セッション切断後にTCP通信を再開できる。
【図面の簡単な説明】
【0010】
【図1】本発明の実施の形態1に係る通信システムの構成を示す図である。
【図2】図1に示すゲートウェイ装置のハードウェア構成を示す図である。
【図3】図1に示すゲートウェイ装置の機能ブロックを示す図である。
【図4】図3の記憶部に記憶されたセッション情報テーブルの一例を示すである。
【図5】図3の記憶部に記憶されたセッション状態テーブルの一例を示すである。
【図6】図3に示すセッション制御部の詳細を示すである。
【図7】本発明の実施の形態1に係る通信システムのシーケンスを示す図である。
【図8】本発明の実施の形態1に係るゲートウェイ装置のフローチャートである。
【図9】本発明の実施の形態2に係るゲートウェイ装置のセッション制御部の詳細を示す図である。
【図10】本発明の実施の形態2に係る通信システムのシーケンスを示す図である。
【図11】本発明の実施の形態3に係るゲートウェイ装置のセッション制御部の詳細を示す図である。
【図12】本発明の実施の形態3に係る通信システムのシーケンスを示す図である。
【図13】本発明の実施の形態3に係るゲートウェイ装置が送信するINVITEメッセージの一例を示すである。
【図14】本発明の実施の形態4に係るゲートウェイ装置のセッション制御部の詳細を示す図である。
【図15】本発明の実施の形態4に係るセッション情報テーブルの一例を示すである。
【図16】本発明の実施の形態4に係る通信システムのシーケンスを示す図である。
【図17】本発明の実施の形態4に係るゲートウェイ装置が送信するINVITEメッセージの一例を示すである。
【図18】本発明の実施の形態4に係るセッション状態テーブルの一例を示すである。
【図19】本発明の実施の形態5に係るゲートウェイ装置のセッション制御部の詳細を示す図である。
【図20】本発明の実施の形態5に係る通信システムのシーケンスを示す図である。
【図21】本発明の実施の形態5に係るゲートウェイ装置が送信するINVITEメッセージの一例を示すである。
【発明を実施するための形態】
【0011】
実施の形態1.
本発明を実施するための実施の形態1におけるゲートウェイ装置1を図1ないし図8を用いて説明する。
図1はゲートウェイ装置1すなわち中継装置が使用される通信システム100の構成を示す図である。通信システム100は、呼制御・呼管理の機能を持たないユーザネットワーク4A、4Bと、2つ以上のユーザネットワーク4A、4B間に設けられた呼制御・呼管理の機能を備えた呼制御ネットワーク5と、を備えたものである。
【0012】
ユーザネットワーク4AはIP端末3Aとゲートウェイ装置1A、ユーザネットワーク4BはIP端末3Bとゲートウェイ装置1B、呼制御ネットワーク5はSIP(Session Initiation Protocol)サーバ2を収容しており、ユーザネットワーク4Aと呼制御ネットワーク5はゲートウェイ装置1Aにより、ユーザネットワーク4Bと呼制御ネットワーク5はゲートウェイ装置1Bによりそれぞれ接続されている。
なお、ここではユーザネットワーク4A、4BにIP端末3とゲートウェイ装置1がそれぞれ1台ずつ設けられた例を示しているが、各ユーザネットワークに収容されるIP端末は複数台であっても良い。また、説明を簡潔にするため、図1ではゲートウェイ装置1とIP端末3を直接接続しているが、ルーター(図示しない)を介しマルチホップ接続としても良い。
【0013】
図2はゲートウェイ装置1のハードウェア構成を示す図である。
ゲートウェイ装置1は、データを処理するためのCPU12と、データ処理に必要なプログラムや情報を記憶するメモリ13と、ユーザネットワーク4および呼制御ネットワーク5とのEthernet(登録商標)インタフェース11とを備えている。
【0014】
また、図3はゲートウェイ装置の機能ブロックを示している。
ユーザネットワーク4とのインタフェース部11A、呼制御ネットワーク5とのインタフェース部11B、インタフェース部11Aから入力されたIPパケットを検出するパケット検出部14A、インタフェース部11Bから入力されたIPパケットを検出するパケット検出部14B、パケット検出部14A、14Bで検出したデータを一時的に保留するパケット保留部15、IPパケットデータの通信路に対応した呼接続すなわちセッションの制御をするセッション制御部16、フロー条件とセッション制御用のパラメータとを対応付けたセッション情報テーブル170やセッションの使用状態を示すセッション状態テーブル171を記憶した記憶部17、セッションごとに通信路の使用有無を監視する無通信監視部18を備えている。無通信監視部18にはセッションごとにタイマ180が設けられ、未使用状態の時間を計測している。
【0015】
セッション情報テーブル170は、図4に示すように、セッションを接続するためのフロー条件とセッションを接続する際に使用するセッション制御パラメータとから構成されている。フロー条件には、中継するIPパケットのDAやSAといったIPアドレス、使用されるプロトコル、送信元及び宛先のポート番号があり、セッション制御パラメータには、例えば、宛先SIP−URI(Uniform Resource Identifier)、使用帯域、等がある。なお、図中の米印の領域は任意の値とすることができる。
【0016】
一方、セッション状態テーブル171は、図5に示すように、セッション識別子であるCall-ID、対向するゲートウェイ装置1のSIP−URI、このフローをどのように使用したかを示す発信/着信の状態、通信時間、フロー情報により構成され、セッション情報テーブル170の条件に従って確定したセッションの情報が時系列的に順に記載されている。
【0017】
フロー情報の領域には、セッション情報テーブル170のフロー条件に基づいて実際に使用したフロー情報が格納されている。すなわち、セッション情報テーブル170のフロー条件として任意領域とされているものであっても、実際に使用された値がセッションごとに格納される。図5において、「自側」とは自装置、「対向」とは対向するゲートウェイ装置1又はその先に接続されたIP端末3を示している。フロー情報には、中継するIPパケットのDAやSAといったIPアドレス、使用するプロトコル、送信元及び宛先のポート番号、セッション及びTCPコネクションの状態の欄、及びタイマ満了により切断したセッションか否かを示す欄すなわち切断情報の欄があり、セッションやTCPコネクションの確立途中の状態も把握できる。なお、TCPコネクション状態の欄の括弧書きはゲートウェイ装置2自身が生成したメッセージではなく、IP端末3により生成されたメッセージを中継したことを示すものである。また、タイマの欄はTCPコネクションが確立されるとリセットされるものとする。
【0018】
図6はセッション制御部16の詳細を示す図である。IPパケットからIPアドレスを抽出するDA/SA抽出部160、IPパケットの種類を識別するパケット識別部161、呼すなわちセッションの確立や切断に必要なメッセージを管理するセッション管理部163、TCPコネクションの確立に必要なメッセージを管理するTCP管理部164、セッション管理部163やTCP管理部164等と連携して記憶部17に記憶されたセッション情報テーブル170やセッション状態テーブル171の情報を取得したり更新したりするセッション情報取得部162を備えている。
【0019】
セッション管理部16にはセッションの確立や切断に必要なメッセージをパケットとして生成するメッセージ生成部1630と呼の確立や切断に必要なメッセージをパケットとして受付けるメッセージ受付部1631が設けられ、TCP管理部164にはTCPコネクションに必要なメッセージをTCPパケットとして生成するTCP生成部1640とTCPコネクションに必要なメッセージをTCPパケットとして受付けるTCP受付部1641が設けられている。図6では、セッション管理に必要なメッセージとして、本実施の形態と特に関係の深いINVITE、200 OK、BYEの生成部と受付部をそれぞれ明記しているが、メッセージ生成部1630はその他セッション管理に必要なメッセージも生成し、メッセージ受付部1631はこれらのメッセージを受付けることはいうまでもない。なお、TCPパケットとは、TCPプロトコルを用いて通信に使用されるパケットであって、上記TCPコネクションに必要なTCPコネクション確立用のパケット以外にデータ用パケットも含まれる。以下、TCPパケットに限定する必要の無いものはIPパケットと称する。
【0020】
ここで、動作について説明する。
まず、通信システム全体の動作を、図7を用いて説明する。ユーザネットワーク4Aに設けられたIP端末3Aとユーザネットワーク4Bに設けられたIP端末3B間でTCP通信を行う場合、IP端末3Aはまず、TCPコネクションの確立要求メッセージであるTCP-SYNパケットをIP端末3B宛に送信する(S101)。TCP-SYNパケットがゲートウェイ装置1Aに到着すると、ゲートウェイ装置1Aは呼制御ネットワーク5にセッションがあるか否かを確認し、セッションが無い場合はSDP(Session Description Protocol)のオファーを含むセッション確立要求メッセージであるINVITEメッセージを生成しSIPサーバ2に向けて送信する(S102)。このとき、INVITEメッセージはセッション情報テーブル170に基づいて所望の宛先SIP−URI宛にセッション制御パラメータに従って送信される。
ここで、INVITEメッセージにSDPを使用するのは、セッション制御のデータ送受信ホスト・ポートの制御にSDPを使用するのが一般的だからである。
【0021】
SIPサーバ2はINVITEメッセージを受信するとゲートウェイ装置1Aに応答メッセージである100 Tryingパケットで応答し(S103)、ゲートウェイ装置1BにINVITEメッセージを転送する(S104)。ゲートウェイ装置1BはINVITEメッセージを受信すると100 Tryingパケットで応答し(S105)、セッション確立の準備が整うとSDPのアンサーを含むセッション確立応答メッセージである200 OKレスポンスを送信する(S106)。200 OKレスポンスを受信したSIPサーバ2はゲートウェイ装置1Aに200 OKレスポンスを転送し、ゲートウェイ装置1Aがこの200 OKレスポンスを受取ると2つのゲートウェイ装置1A、1B間のセッションが確立する。そして、ゲートウェイ装置1AがACKメッセージを送信し、SIPサーバ2がこれをゲートウェイ装置1Bに転送し、SIPシグナリングが完了する(S107)。
【0022】
S102〜S107によりセッションが確立すると、ゲートウェイ装置1AはS101にてIP端末3Aから受信して保留していたTCP-SYNパケットをゲートウェイ装置1B宛に転送し、ゲートウェイ装置1BはTCP-SYNパケットを受信すると、これを中継してIP端末3Bに転送する(S108)。
TCP-SYNパケットを受信したIP端末3Bは、TCP-SYNへの応答メッセージであるTCP-ACKと共に、逆方向のTCP-SYNを1つのパケットとしてIP端末3A宛に送信する。このTCP-SYN/ACKパケットは、先ほどと逆の順序でゲートウェイ装置1B、SIPサーバ2、ゲートウェイ装置1Aと中継され、IP端末3Aに届けられる(S109)。
なお、TCPで送信されるユーザデータは必ずしもSIPシグナリングと同じ経路を通るとは限らないため、TCP-SYN/ACKパケットはSIPサーバ2を経由しなくてもよい。
また、TCPパケットの種類はヘッダの制御ビットによって規定され、TCP-SYNパケットはSYNフラグ、TCP-ACKパケットはACKフラグ、TCP-SYN/ACKパケットはSYNフラグとACKフラグの両方が1に設定される。
【0023】
IP端末3AがTCP-SYN/ACKパケットを受取ると、TCP-SYNに対する応答としてTCP-ACKパケットをIP端末3B宛に送信する。このTCP-ACKパケットもゲートウェイ装置1A、SIPサーバ2、ゲートウェイ装置1Bの順に中継され、IP端末3Bに届けられる(S110)。なお、上記と同様に、TCP-SYN/ACKパケットはSIPサーバ2を経由しなくてもよい。
このようにTCP-SYNとTCP-ACKを双方向にやり取りしてTCPコネクションを張ることを3way handshakeといい、3way handshakeが完了するとIP端末3AとIP端末3Bの間にTCPコネクションが確立される。
【0024】
一旦TCPコネクションが確立すると、TCPコネクションの切断またはセッションの切断がなされるまで2つのIP端末3A、3B間では双方向にデータのTCP通信が可能となる(S111)。なお、ここではIP端末3Aが最初にTCP-SYNパケットを送信する場合を示したが、IP端末3BがTCP通信の開始を要求する場合はIP端末3BからTCP-SYNが送信される。
【0025】
TCPコネクションが確立された状態において、このTCPコネクションで使用されるセッションが一定期間使用されない状態が続くと、ゲートウェイ装置1Aはセッションの切断要求メッセージであるBYEパケットを生成してSIPサーバ2に送信し、SIPサーバ2がゲートウェイ装置1Bに転送する(S112)。ゲートウェイ装置1BがBYEパケットへの応答メッセージである200 OKレスポンスを送信しゲートウェイ装置1Aに到達すると、2つのゲートウェイ装置1A、1B間のセッションは切断される(S113)。
ここではゲートウェイ装置1AがBYEパケットを送信する例を示したが、ゲートウェイ装置1BからBYEパケットを送信してセッションを切断しても良い。セッションが切断されると、このセッションを利用するTCPコネクション用に確保されたリソースが解放される。
【0026】
セッションが切断された状態において、IP端末3Aが再びIP端末3B宛のユーザデータData#2をTCPにて送信すると(S114)、ゲートウェイ装置1AはこのTCPパケットを自装置内に一時的に保留し、先ほどと同様の手順でゲートウェイ装置1Bとの間にセッションを確立する(S115〜S120)。
セッションが確立されると、今度はゲートウェイ装置1A自身がTCP-SYNパケットを生成し(S119)、セッション確立時に取得した宛先IPアドレスと宛先ポート番号、及びIP端末3Aより受信したIPパケットのTCPヘッダの情報、すなわち送信元IPアドレスと送信元ポート番号に基づいてゲートウェイ装置1Bとの間で3way handshakeを行い2つのゲートウェイ装置1A、1B間のTCPコネクションを確立する(S121〜S123)。
【0027】
TCPコネクションが確立されると、ゲートウェイ装置1AはS114により受信し保留していたTCPパケットを転送し(S124)、このTCPパケットはゲートウェイ装置1Bを介してIP端末3Bに届けられる。
なお、ここではゲートウェイ装置1Aがセッション及びTCPコネクションの確立要求を発する場合について説明したが、確立要求を発するゲートウェイ装置はセッションを切断したゲートウェイ装置と同じである必要はない。望ましくは、セッション切断後に最初にTCP通信を再開するゲートウェイ装置1がセッションの再確立要求及びTCPコネクションの確立要求を発すると良い。
【0028】
次に、ゲートウェイ装置1内の動作について図3及び図6を用いて説明する。
まず、ユーザネットワーク4から呼制御ネットワーク5へIPパケットを中継する場合について説明する。
ユーザネットワーク4AからのIPパケットがインタフェース部11Aに入力されると、このIPパケットはパケット検出部14Aで検出され、パケット保留部15とセッション制御部16に転送される。パケット保留部15はこのIPパケットをセッション制御部16から転送指示がくるまで保留し、転送指示がくるとインタフェース部11Bを介して呼制御ネットワーク5に向けて送出する。
【0029】
セッション制御部16はパケット検出部14AからIPパケットを受取ると、DA/SA抽出部160にてIPアドレス情報を抽出し、セッション情報取得部162に抽出した情報を伝達すると共にIPパケットをパケット識別部161に転送する。パケット識別部161は受取ったIPパケットがユーザデータなのかセッション制御用のパケットなのかTCPコネクションに関するパケットなのかを識別し、ユーザデータであればセッション情報取得部162に、セッション制御用のパケットであればセッション管理部163に、TCPコネクションに関するパケットであればTCP管理部164にその旨を伝える。
なお、ユーザネットワーク4Aは通常セッション制御に非対応であることを前提としているため、パケット識別部161で受取るデータはユーザデータ、あるいはTCPコネクションに関するパケットのいずれかである。
【0030】
検出されたIPパケットがTCPコネクションに関するパケットの場合、すなわちTCPパケットの場合、TCP管理部164はTCP受付部1641にてTCP-SYNパケットなのか、TCP-ACKパケットなのか、TCP-SYN/ACKパケットなのかを識別し、セッション情報取得部162に伝達する。セッション情報取得部162は、TCP管理部164からの情報とDA/SA抽出部160から受取ったIPアドレス等の情報に基づいて、セッション状態テーブル171のデータを更新する。
【0031】
TCP受付部1641からTCP-SYNパケットであるとの情報を受取った場合、セッション情報取得部162はセッション管理部163にセッションを確立するよう指示する。指示を受けたセッション管理部163はセッション情報取得部162が取得したセッション情報テーブル170のセッション制御パラメータに基づいてINVITEメッセージを生成し、対向するゲートウェイ装置1宛に送出する。その後、対向するゲートウェイ装置1から200 OKレスポンスを受取ってセッションが確立すると、セッション情報取得部162はパケット保留部15に転送指示を送り、一時保留していたTCP-SYNパケットを呼制御ネットワーク5に送出させ、無通信監視部18にはこのセッションに対応するタイマ180のスタート指示を送る。
【0032】
セッション情報取得部162がTCP受付部1641からTCP-SYN/ACKパケットまたはTCP-ACKパケットであるとの情報を受取った場合、セッション情報取得部162は記憶部17に記憶されたセッション状態テーブル171を更新し、パケット保留部15に転送指示を送り一時保留していたTCP-SYN/ACKパケットまたはTCP-ACKパケットを呼制御ネットワーク5に送出させる。
【0033】
ところで、検出されたIPパケットがTCPパケットのユーザデータの場合、セッション情報取得部162はDA/SA抽出部160から受取ったIPアドレスの情報に基づいて、記憶部17に記憶されたセッション状態テーブル171からIPパケットの通信路に対応するセッション及びTCPコネクションの情報を取得する。セッション情報取得部162は、セッション及びTCPコネクションが確立されている場合、すなわち図5においてセッション状態の欄が「200 OK」でTCPコネクション状態の欄が「TCP-ACK」または「(TCP-ACK)」の場合にはパケット保留部15に転送指示を送り、無通信監視部18にこのセッションに対応するタイマをリセットさせるリセット信号を送る。
【0034】
検出されたIPパケットがTCPパケットのユーザデータであって対応するセッションが未確立の場合、すなわち図5においてセッション状態の欄が「BYE」の場合は、セッション情報取得部162はセッション状態テーブル171を参照してゲートウェイ装置1により切断されたセッションか否か、すなわち図5においてタイマの欄が「満了」であるか否かを判断する。ゲートウェイ装置1(対向するゲートウェイ装置1も含む)により切断されたセッションの場合、セッション状態テーブル171のセッション状態の欄は「BYE」、TCPコネクション状態の欄は「TCP-ACK」または「(TCP-ACK)」、タイマの欄は「満了」が記入されている。このとき、セッション情報取得部162はセッション管理部163に指示を出し、上記と同様の手順により対向するゲートウェイ装置1との間にセッションを再確立させ、無通信監視部18にこのセッションに対応するタイマのスタート指示を送る。
【0035】
セッション再確立後、TCP管理部164はTCP-SYNパケットを生成して対向するゲートウェイ装置1に送信し、TCP-SYN/ACKを受取るとTCP-ACKを返してTCPコネクションを確立する。TCPコネクションの確立後、セッション情報取得部162はパケット保留部15に転送指示を送り、一時保留していたユーザデータのTCPパケットを呼制御ネットワーク5に送出させる。
なお、このセッションを使用するパケットを送出する際には、ユーザデータか制御用データかの種別によらず、このセッションに対応するタイマのリセット信号を無通信監視部18に送信するものとする。
【0036】
ゲートウェイ装置1がセッションを切断した場合以外であって、セッション未確立の状態でユーザデータを検出することは通常ありえない。TCP通信を行うには、まずIP端末3がTCP-SYNパケットを送信し、3way handshakeによりTCPコネクションを確立するからである。したがって、セッション状態テーブル171に過去のセッション情報が記憶されていない場合、検出されたユーザデータのIPパケットは異常パケットと判断し、セッション情報取得部162はパケット保留部15にパケット廃棄を指示する。
なお、この機能はオプショナルとして設けるものであって、ゲートウェイ装置1Aでそのまま転送するようにしても良い。異常パケットはIP端末でも廃棄できるからである。
【0037】
ここまでが、ユーザネットワーク4Aから呼制御ネットワーク5へTCPパケットを中継する場合の動作である。次に、呼制御ネットワーク5からユーザネットワーク4へIPパケットを中継する場合について説明する。
IPパケットが呼制御ネットワーク5からインタフェース部11Bに入力されるとパケット検出部14Bで検出され、パケット保留部15とセッション制御部16に転送される。パケット保留部15はこのIPパケットをセッション制御部16から転送指示がくるまで保留し、転送指示がくるとインタフェース部11Aを介してユーザネットワーク4に向けて送出する。
【0038】
セッション制御部16は、パケット検出部14BからIPパケットを受取ると、先ほどと同様にDA/SA抽出部160にてIPアドレス情報を抽出してセッション情報取得部162に伝達し、IPパケットをパケット識別部161に転送する。IPパケット識別部161は受取ったIPパケットがユーザデータなのかセッション制御用のパケットなのかTCPコネクションに関するパケットなのかを識別し、ユーザデータであればセッション情報取得部162に、セッション制御用のパケットであればセッション管理部163に、TCPコネクションに関するTCPパケットであればTCP管理部164にその旨を伝える。
【0039】
検出されたIPパケットがセッション制御用のパケットの場合、セッション管理部163はINVITE、100 Trying、200 OK、BYEのいずれなのかをセッション情報取得部162に通知し、セッション情報取得部162はこの情報とDA/SA抽出部160からの情報に基づいて情報セッション状態テーブル171のデータを更新する。また、セッション制御用のパケットはゲートウェイ装置1宛てなのでIP端末3に転送する必要が無いことから、パケット保留部15にパケット廃棄の指示を出力する。
【0040】
セッション管理部163がINVITEメッセージを受付けた場合、セッション情報取得部162はセッション管理部163にセッション情報テーブル170の情報に基づいて100 Tryingを送信するよう指示し、セッション確立の準備が整った時点で同じくセッション情報テーブル170の情報に基づいて200 OKを送信するよう指示する。
なお、メッセージの送信指示をするごとにセッション状態テーブル171の更新も行うものとする。
【0041】
セッション管理部163が200 OKレスポンスを受付けた時は無通信監視部18に対応するセッションのタイマスタート指示を出力し、BYEパケットを受付けた時は無通信監視部18にこのセッションのタイマ180をリセットして停止するよう指示を出力する。
また、セッション情報取得部162がセッション管理部163から100 Tryingパケットを受付けたとの情報を得た場合はセッション状態テーブル171のデータを更新し、タイマ180のスタート指示やリセットは行わない。
【0042】
ところで、検出されたIPパケットがユーザデータの場合、セッション情報取得部162はDA/SA抽出部160から受取ったIPアドレスの情報に基づいてセッション状態テーブル171を更新し、無通信監視部18に対応するセッションのタイマリセット信号を送りパケット保留部15には転送指示を送信する。このとき、TCPパケットであるかその他のIPパケットであるかを区別する必要は無い。
【0043】
一方、検出されたIPパケットがTCPコネクションに関するTCPパケットの場合、TCP管理部164はTCP受付部1641にてTCP-SYNパケットなのか、TCP-ACKパケットなのか、TCP-SYN/ACKパケットなのかを識別し、セッション情報取得部162に伝達する。セッション情報取得部162は、TCP管理部164からの情報とDA/SA抽出部160から受取ったIPアドレス等の情報に基づいて、セッション状態テーブル171のデータを更新すると共に、図5におけるTCPコネクション状態を参照し、IP端末3から正規の切断シーケンス(例えば、TCPのコネクション解放メッセージであるFINパケットやコネクションリセット要求メッセージであるRSTパケットの送信による切断シーケンス)が行われたTCPコネクションであるか否かによって、対向するゲートウェイ装置1が生成したTCPパケットなのか、IP端末3が生成したTCPパケットなのかを判別する。
【0044】
対向するゲートウェイ装置1が生成したTCPパケットであると判断した場合、TCP管理部164は受付けたTCPパケットがTCP-SYNまたはTCP-SYN/ACKであればセッション状態テーブル171に基づいてTCP-ACKを生成し、対向するゲートウェイ装置1に送信する。また、対向するゲートウェイ装置1が生成したTCPパケットであると判断した場合であって、TCP管理部164が受付けたパケットがTCP-ACKの時はセッション状態テーブル171を更新する。なお、これらのTCPパケットはゲートウェイ装置1宛てに送信されたものであるから、パケット保留部15にはパケット廃棄の指示を出力する。
【0045】
一方、セッション情報取得部162がIP端末3の生成したTCPパケットであると判断した場合、ユーザデータを受信した場合と同様に、セッション状態テーブル171を更新して無通信監視部18に対応するセッションのタイマリセット信号を送信し、パケット保留部15には転送指示を出力する。
なお、図3では呼制御ネットワーク5から入力されたパケットもパケット保留部15で一時保留する構成としているが、パケット検出部14Bにパケットの種類を分別し、ユーザデータもしくはIP端末3A宛のIPパケットであれば転送し、それ以外であれば廃棄する機能を設け、パケット保留部15を迂回するようにしても良い。
【0046】
ここで、ゲートウェイ装置1がセッション確立後に一定期間、このセッションを使用するIPパケットを検出しない場合の動作について説明する。
上記のとおり、無通信監視部18はセッションごとにタイマ180を備えている。各タイマはセッション確立時にスタートし、このセッションを使用するIPパケットを検出するとリセットされ、BYEパケットを受信するとリセットされて停止する。また、タイマ180は満了によっても停止する。
【0047】
タイマ180には満了時間が予め設定されており、タイマ180がスタートしてから一定時間内にこのタイマと対応付けられたセッションを使用するIPパケットが検出されなければ満了する。タイマ180が満了すると、無通信監視部18はセッション情報取得部162にセッション切断要求を送信する。セッション情報取得部162は無通信監視部18からのセッション切断要求に基づいてセッション状態テーブル171を更新し、セッション管理部163にBYEパケットの生成及び送信を指示する。対向するゲートウェイ装置1からこのBYEパケットへの応答である200 OKレスポンスを受信すると、セッション情報管理部163はこのセッションを切断し、セッション情報取得部162はセッション状態テーブル171を更新する。
なお、タイマの満了時間はシステムの運用方針等によって決まる値であり、ゲートウェイ装置1に外部インタフェースを備えることで、保守の際に変更することもできる。
【0048】
セッションを切断する際、セッション情報取得部162はタイマ満了によりセッションを切断する場合であってもBYEパケットを受信してセッションを切断する場合であっても、セッション状態テーブル171のフロー情報のひとつとしてセッション状態を「BYE」に更新する。これにより、ゲートウェイ装置1はセッションを確立する際に以前に対応するセッションがあったか否かを判断することができる。すなわち、IP端末3からTCPコネクションを確立するためのメッセージが送信されるのか、ゲートウェイ装置1自らTCP-SYNやTCP-ACKを生成しなければならないのかを判断できる。
【0049】
図5の例では、セッション状態テーブル171にセッション状態の欄とTCPコネクション状態の欄を設け、以前にセッションがあったか否かを判別できるようにしている。別の方法として、フロー情報に「現在のフロー情報」と「過去のフロー情報」の欄を設け、セッションが切断されると「現在のフロー情報」を「過去のフロー情報」に変換し、現在のフロー情報をリセットするようにしても良い。このようなセッション状態テーブルを設けることにより、セッション切断後にこのセッションを再確立する場合、セッション制御部16は以前にセッションがあったか否かを判断するために「過去のフロー情報」の欄を確認すればよいことになる。
【0050】
ところで、ゲートウェイ装置1はパケット処理やセッション管理をソフトウェアで行うこともある。ソフトウェアで処理する場合も上記と同様の動作をするが、プログラムの処理を図8のフローチャートを用いて説明する。
ゲートウェイ装置1はIPパケットが到着したことを検出すると(S1)、メモリ13に一時保留する(S2)。次に、IPパケットのIPアドレスに基づいてメモリ13に記憶されたセッション制御パラメータを呼び出し(S3)、対応するセッションが有るか無いかを判断する(S4)。対応するセッションがある場合、セッションに対応して設けられたタイマ180を停止してリセットし(S5)、メモリ13に一時保留されたIPパケットを転送する(S10)。また、IPパケットの転送をトリガーとしてタイマ180をスタートする(S11)。なお、タイマ180が満了すると、ゲートウェイ装置1は対応するセッションを切断する。
【0051】
S4において対応するセッションが無いと判断した場合はセッションを確立し(S6)、呼び出したセッション制御パラメータに基づいてIP端末3の要求によるセッションの確立なのか、自発的なセッションの確立なのかを判断する(S7)。
なお、「自発的」とはIP端末3のセッション確立要求ではなく、ユーザデータを転送するためにゲートウェイ装置1が一旦切断したセッションを自ら再確立することをいう。
【0052】
IP端末3の要求によるセッション確立の場合、すなわち、セッション状態テーブル171のセッション状態の欄に「200 OK」が記入され、TCPコネクション状態の欄に「(TCP-SYN)」、「(TCP-SYN/ACK)」、「(TCP-ACK)」のいずれも記入されず、タイマの欄が空欄の場合、IP端末3からの要求によりセッションを再確立したもののTCPコネクションは確立されていない場合、ゲートウェイ装置1はTCPの3way handshakeに必要なTCPパケットがIP端末3から送信されるのを待ってこれを中継する(S8)。一方、自発的なセッション再確立の場合、すなわち、セッション状態テーブル171のセッション状態の欄に「200 OK」が記入され、かつ、タイマの欄に「満了」が記入されている場合、このセッションはゲートウェイ装置1により以前に切断されたセッションを再確立するものであり、IP端末3はTCPの3way handshakeに必要なTCPパケットを送信しないので、ゲートウェイ装置1自身がパケットを生成し、TCPコネクションを確立する(S9)。
S8又はS9によりTCPコネクションが確立すると、メモリ13に保留しているTCPパケットのユーザデータがあればこれを呼制御ネットワークに転送し(S10)、対応するセッションのタイマ180をスタートさせる(S11)。
【0053】
なお、ここではセッション制御プロトコルとしてSIPを用いる場合について説明したが、H.323、MEGACO(Media Gateway Control Protocol)のようにIPネットワーク上でセッション制御やセッション管理ができるプロトコルであれば他のプロトコルを用いても良い。
【0054】
本実施の形態によれば、ゲートウェイ装置1は中継するIPパケットを検出するIPパケット検出部14A、14Bと、IPパケットを一時的に保留するパケット保留部15と、IPパケットのセッション制御を行うセッション制御部16と、セッション制御に必要なセッション制御パラメータやセッションの状態を記憶する記憶部17と、セッションごとのタイマ180と、を備えたことにより、一定期間セッションを使用するIPパケットが検出されない場合にこのセッションを切断することができるため、呼制御ネットワークの通信路を有効に活用できる。
【0055】
また、ゲートウェイ装置1は、中継するIPパケットのIPアドレスやポート番号、プロトコルといったフロー条件と、呼接続情報である宛先SIP−URI、帯域といったセッション制御パラメータとを関連付けたセッション情報テーブル170、及び実際に行われた通信の情報とセッションの状態を示すフロー情報とから構成されたセッション状態テーブル171とを備え、さらにTCPコネクションの確立に必要なメッセージの生成や受付といった管理を行うTCP管理機能を備えたことにより、ゲートウェイ装置1が自らセッションを切断した場合であっても、セッション切断後に受信したこのセッションを使用するTCPパケットの宛先SIP−URIに基づいて再度セッションを確立し、セッション再確立時に取得した宛先アドレス・宛先ポート番号、及びTCPパケットのTCPヘッダに格納された送信元IPアドレス・送信元ポート番号に基づいてTCPコネクションも自ら確立することができる。
【0056】
また、通信システムにおいて、このような機能を有するゲートウェイ装置1を設けることにより、データの伝送需要に応じてゲートウェイ装置1がセッションを切断したり再確立したりできるため、セッションの接続時間ではなく伝送路の使用時間に応じた柔軟な課金管理も可能となる。
【0057】
実施の形態2.
実施の形態1では、セッション切断後に再度セッションを確立してTCPパケットを中継する場合について説明した。実施の形態2では、セッション切断前後においてTCPの連続性が要求される場合について説明する。
【0058】
本実施の形態に係るゲートウェイ装置1が使用される通信システム100の構成、及びゲートウェイ装置1のハードウェア構成は実施の形態1と同じであるため説明を省略する。ゲートウェイ装置1の機能及び動作について図9及び図10を用いて説明する。
図9は実施の形態1に記載の図6の構成に順序情報管理部165を追加したもので、その他の構成は図6と同じである。順序情報管理部165は、TCPコネクションを使用する呼制御ネットワーク5において、シーケンス番号やACK番号に連続性が要求される場合に、自身で生成するTCPパケットに順序情報を付与したり、受信したTCPパケットから順序情報を抽出したりする。
【0059】
順序情報管理部165で抽出されたシーケンス番号等の順序情報はセッション情報取得部162に伝達され、セッション状態テーブル171に保存される。また、順序情報を付与する場合には、セッション情報取得部162がセッション状態テーブル171から順序情報を取り出して順序情報管理部165に伝達する。順序情報管理部165は、セッション情報取得部162から受取った順序情報に基づいて新たな順序情報を生成し、TCP生成部164に通知する。TCP生成部164は、生成するTCPコネクション制御用のTCPパケットのTCPヘッダに、生成した順序情報であるシーケンス番号やACK番号を付けて出力する。
【0060】
ここで、通信システム全体のシーケンスを図10に示す。なお、同一動作は同一番号を付して説明する。
セッションが切断されるまでの動作(S101〜S113)は実施の形態1と同じであるため説明を省略する。
セッションが切断された状態のS214にて、IP端末3Aからシーケンス番号が「X」、ACK番号が「Y」のユーザデータData#2のTCPパケットが送信されると、ゲートウェイ装置1AはこのTCPパケットをパケット保留部15に一時的に保留し、受信したTCPパケットの情報をセッション制御部16Aに通知する。
【0061】
セッション制御部16Aは受信したIPパケットからIPアドレス、プロトコルの種類、ポート番号、等の情報を抽出し、この情報に基づいてセッション情報テーブル170から対応するセッション制御パラメータを、セッション状態テーブル171からこのIPパケットに対応するセッションは一定期間使用されていないためゲートウェイ装置1Aまたはゲートウェイ装置1Bにより切断されたものか否かの情報を読み取る。
【0062】
ところで、ゲートウェイ装置1Aが保留したTCPパケットのデータを転送するには、呼制御ネットワーク5のセッション及びTCPコネクションを再確立する必要がある。セッション制御部16Aが記憶部17のセッション状態テーブル171を参照し、中継するIPパケットの通信路に対応するセッションが切断されていると判断した場合、ゲートウェイ装置1Aはセッション管理部163に指示を出し、INVITEメッセージを生成してSIPサーバ2に向けて送信させる(S115)。SIPサーバ2はINVITEメッセージを受取るとこのゲートウェイ装置1Aに100 Tryingパケットを返信する(S116)と共に、対向するゲートウェイ装置1BにINVITEメッセージを転送する(S117)。対向するゲートウェイ装置1BはINVITEメッセージを受取るとSIPサーバ2に100 Tryingパケットの応答を返し(S118)、セッション確立の準備が整うとSIPサーバ2に200 OKレスポンスを送信する(S119)。SIPサーバ2は200 OKレスポンスを受信するとINVITEメッセージを送信したゲートウェイ装置1Aに転送し、このゲートウェイ装置1Aがこの200 OKレスポンスを受信し、ACKを返信する(S120)とセッションの確立が完了する。
【0063】
一旦切断されたセッションが再確立された場合、ゲートウェイ装置1AはTCP-SYNパケットを生成して対向するゲートウェイ装置1Bとの間で3way handshakeを行う(S221〜S223)。このとき、TCPヘッダのシーケンスフィールドにはIP端末3Aから受信したIPパケットのシーケンス番号「X」すなわち第1の順序情報より1つ小さい「X−1」すなわち第2の順序情報をゲートウェイ装置1Aのシーケンス番号初期値として記入する。また、TCP-SYNパケットではTCPヘッダのACKフィールドは通常使用しないため、この領域を利用してゲートウェイ装置1Bに応答の際にシーケンス番号として使用して欲しい値「Y−1」を記入する。
【0064】
なお、TCP-SYNパケットのACKフィールドは3way handshakeをする装置であっても通常は参照しない領域である。TCP-SYNパケットのACKフィールドに拡張機能を持たせる場合は、上記のようにゲートウェイ装置1A、1Bに対応する機能を予め備えておくものとする。
【0065】
ゲートウェイ装置1Aがシーケンスフィールドに「X−1」、ACKフィールドに「Y−1」を記入したTCP-SYNパケットを生成してゲートウェイ装置1Bに送信すると(S221)、ゲートウェイ装置1Bは自身のシーケンス番号初期値を「Y−1」に設定し、TCP-SYN/ACKパケットのシーケンスフィールドに「Y−1」を記入する。また、ゲートウェイ装置1BはTCP-SYNパケットの順序情報を正常に受信したことを伝えるため、ACKフィールドにTCP-SYNパケットのシーケンス番号に「+1」の計算を行った「X」を記入し、ゲートウェイ装置1Aに返信する(S222)。
【0066】
ゲートウェイ装置1Bからシーケンスフィールドが「Y−1」、ACKフィールドが「X」のTCP-SYN/ACKパケットを受取ったゲートウェイ装置1Aは、ACKフィールドに記載されたACK番号により自身が送信したTCP-SYNパケットが正常に受信されたことを確認できる。TCP-SYN/ACKパケットを正常に受信したゲートウェイ装置1AはTCP-ACKパケットを返信する(S223)。このとき、シーケンスフィールドには先ほど送信したTCP-SYNパケットの次に送信するパケットであることを示すため、TCP-SYNのシーケンス番号である「X−1」に「+1」した「X」を記入し、ACKフィールドには「Y−1」に「+1」の計算をした「Y」を記入して送信する。
【0067】
このようにTCPパケットに順序情報を付与することにより、3way handshakeが完了した時点でゲートウェイ装置1Aには所望のシーケンス番号である「X」と所望のACK番号である「Y」を設定することができる。これらの値はゲートウェイ装置1Aに保留しているユーザデータとそれぞれ同じ値であることから(S224)、セッション切断前後においてTCPの順序情報の連続性を保つことができる。
【0068】
本実施の形態によれば、実施の形態1に記載の効果に加えて、ユーザデータの順序情報を抽出し、この値に基づいてTCPの3way handshakeの際にゲートウェイ装置の順序情報初期値を設定することにより、セッション切断前後においてTCPの順序情報に連続性が要求される場合であってもTCP通信を再開できる。
【0069】
実施の形態3.
実施の形態2では、セッション切断前後でTCPの順序情報の連続性を保つために、2つのゲートウェイ装置間で行うTCPの3way handshakeを用いてゲートウェイ装置のシーケンス番号初期値及びACK番号初期値を設定した。実施の形態3では、セッション再確立時の制御プロトコル及びTCPの3way handshakeを利用して順序情報の連続性を保つ場合について説明する。
【0070】
本実施の形態に係るゲートウェイ装置1が使用される通信システム100の構成、及びゲートウェイ装置1のハードウェア構成は実施の形態1と同じであるため説明を省略する。ゲートウェイ装置1の機能及び動作について図11ないし図13を用いて説明する。
【0071】
図11は実施の形態2に記載の図9の構成とほぼ同じで、順序情報管理部165Bの機能が一部異なる。TCPの連続性が要求される呼制御ネットワーク5において、順序情報として0以上の整数しか許容されない場合がある。順序情報管理部165Bは中継するIPパケットから順序情報を抽出し、新たな順序情報を生成してセッション制御用のパケットやTCPコネクション用のパケットに付与する。また、ユーザデータの順序情報は新たに生成した順序情報に変換する。
【0072】
順序情報管理部165Bはセッション情報取得部162と双方向に信号のやり取りができるように接続されており、順序情報管理部165BがIPパケットから抽出したシーケンス番号やACK番号といった順序情報はセッション情報取得部162に伝えられ、セッション状態テーブル171に記憶される。また、順序情報管理部165Bが新たな順序情報を生成する際には、セッション情報取得部162がセッション状態テーブル171から順序情報を取り出して順序情報管理部165Bに伝える。
順序情報管理部165Bは生成した新たな順序情報をTCP管理部164のTCP生成部1640に伝え、TCP生成部1640はこの順序情報をTCP-SYNパケットやTCP-ACKパケットのTCPヘッダにシーケンス番号やACK番号として記入して出力する。
【0073】
ここで、通信システム全体のシーケンスを図12に示す。
セッションが切断されるまでの動作(S101〜S113)は実施の形態1と同じであるため説明を省略する。
セッションが切断された状態のS214にて、IP端末3Aからシーケンス番号が「X」、ACK番号が「Y」のユーザデータData#2のTCPパケットが送信されると、ゲートウェイ装置1AはこのTCPパケットをパケット保留部15に一時的に保留し、受信したTCPパケットの情報をセッション制御部16Bに通知する。
なお、IP端末3Aから送信されたData#2のシーケンス番号「X」はTCPの順序情報の連続性を示すものであり、第1の順序情報に相当する。
【0074】
セッション制御部16Bは受信したIPパケットからIPアドレス、プロトコルの種類、ポート番号、等の情報を抽出し、この情報に基づいてセッション情報テーブル170から対応するセッション制御パラメータを、セッション状態テーブル171からこのIPパケットに対応するセッションは一定期間使用されていないためゲートウェイ装置1Aまたはゲートウェイ装置1Bにより切断されたものか否かの情報を読み取る。
【0075】
ゲートウェイ装置1Aが保留したデータを転送するには、呼制御ネットワーク5のセッション及びTCPコネクションを再確立する必要がある。セッション制御部16Bが記憶部17のセッション状態テーブル171を参照し、対応するセッションは切断されていると判断した場合、ゲートウェイ装置1Aはセッション管理部163に指示を出し、順序情報管理部165Bにて抽出したユーザデータData#2のシーケンス番号及びACK番号を含むINVITEメッセージを生成して送信させる(S315)。
【0076】
ここで、図12のS315にてゲートウェイ装置1Aが送信するINVITEメッセージのメッセージフォーマットの例を図13に示す。このメッセージはテキスト形式で記載され、リクエストの種類等が格納されたリクエスト行と、パケット概要を示す情報が格納されたヘッダ領域と、空白行と、セッション確立後の通話に関する情報が格納されたボディ領域とで構成されている。リクエスト行の内容、必須のヘッダ、及びボディ領域の具体的なパラメータについて説明する。
【0077】
(リクエスト行)
リクエスト行は3つの情報、すなわちリクエストの種類、リクエストの宛先を示すためのURI、SIPのバージョンにより構成されている。図13の例では、リクエストの種類が「INVITE」、宛先のURIが「sip:85011bf9a84ecf6f@121.0.50.50」、SIPのバージョンが「SIP/2.0」となっている。
【0078】
(ヘッダ領域のパラメータ)
ヘッダにはリクエストの概要を示すための情報が「ヘッダ名:値」という形式で複数格納されている。
Via:SIPのバージョン、データ伝送に使用するプロトコル、このリクエストに対するレスポンスを送る相手を示す。図13の例ではSIPのバージョンをSIP/2.0、データ伝送プロトコルをUDP、レスポンスを送る相手は1.1.1.1のbranch=z9hG4bK29ffa9907d949bd9に設定されている。
Max-Forwards:リクエストの最大中継回数を示す。この値は1回中継されるごとに1ずつ減らされ、0になるとエラーを示すレスポンスが返される。「70」という値はSIPで推奨されている一般的な値である。
From:リクエストの送信者を示す。なお、tagは送信者を識別するための値である。図13の例では送信者をsip:foo@example.com、tagをaaaaaとしている。
To:リクエストの受信者を示す。図13の例ではsip:bar@example.com、tagをbbbbbとしている。
Call-ID:一連の通話(セッション)で発生するSIPリクエストやSIPレスポンスを他の通話(セッション)のものと識別するための識別子を示す。この識別子はINVITEによるセッションの確立要求からBYEによるセッション切断要求まで同じものが使用される。また、他のセッションとは異なるユニークな識別子を設定する必要がある。ここではccccc@1.1.1.1が設定されている。
CSeq:リクエストの順序を示す。図13の例では1が設定されている。
Contact:これ以降のリクエストの送信先をURIで示す。図13の例ではsip:foo@1.1.1.1が設定されている。
Content-Type:この後に続くボディ領域の種類を示す。図13の例ではボディがSDPなのでapplication/sdpが設定されている。
Content-Lencgth:ボディ領域のサイズを示す。図13の例ではボディが182バイトに設定されていることを示している。
【0079】
(ボディ領域のパラメータ)
v:プロトコルのバージョンを示す。SDPのバージョン0を使用するため、図13の例ではv=0が設定されている。
o:セッションを識別するための情報を示す。ユーザ名、セッションID、セッションバージョン、ネットワークタイプ、アドレスタイプ、セッションを開始した装置のアドレスが左から順に記入されている。図13の例ではユーザ名が省略されている。また、ネットワークタイプのINはインターネットを使うことを示している。
s:セッション名を示す。図13では省略されている。
c:コネクション情報を示す。ネットワークタイプ、アドレスタイプ、送信元のホスト名又はIPアドレスが左から順に記入されている。
t:セッションの開始時刻、終了時刻を示す。セッションの開始や終了はSIPが制御するため、SDPでは指定することができず、ここではt=0 0がセットされている。
m:メディアについての情報を示す。メディアタイプ、ポート番号、プロトコル、フォーマットが左から順に記入されている。
a:様々な属性を示す。ひとつのaフィールドは属性と値からなり、複数のaフィールドを規定することもできる。図12のS213に記載されているTCPのシーケンス番号「X」とAck番号「Y」は、図13では、図中破線で囲んだように、シーケンス番号が属性「X-TCP-seq」、値「10000」として設定され、ACK番号が属性「X-TCP-ack」、値「20000」として設定されている。
【0080】
SIPサーバ2はシーケンス番号及びACK番号を含むINVITEメッセージを受取るとゲートウェイ装置1Aに100 Tryingパケットを送信して応答し(S316)、このINVITEメッセージをゲートウェイ装置1Bに転送する(S317)。ゲートウェイ装置1BはINVITEメッセージを受取ると、このセッションで次にTCPを使用して伝送されてくるユーザデータのシーケンス番号が「X」、ACK番号が「Y」であるとの情報をセッション情報テーブル170に記憶する。
【0081】
ゲートウェイ装置1BはINVITEメッセージへの応答としてSIPサーバ2に100 Tryingパケットを送信し(S318)、セッション確立の準備が整うとゲートウェイ装置1Aに向けて200 OKレスポンスを送信する(S319)。ゲートウェイ装置1Aがこの200 OKレスポンスを受信し、ACKを返信する(S320)とセッションの確立が完了する。
【0082】
一旦切断されたセッションが再確立された場合、ゲートウェイ装置1Aは実施の形態2と同様に、TCP-SYNパケットを生成して対向するゲートウェイ装置1Bとの間で3way handshakeを行う(S321〜S323)。このとき、順序情報付与・変換部165Bはゲートウェイ装置1Aで初期値として使用したいシーケンス番号すなわち第2の順序情報を決定し、TCPヘッダのシーケンスフィールドに記入する。図12の例ではシーケンス番号は「A」となっている(S321)。なお、ACK番号の初期値は通常0が用いられる。
【0083】
ゲートウェイ装置1BにTCP-SYNパケットが到達すると、ゲートウェイ装置1Bも自身の順序情報付与・変換部165Bにて初期値として使用したいシーケンス番号を決定する。例えば図12の例では、ゲートウェイ装置1Bのシーケンス初期値を「B」としており、TCP-SYN/ACKパケットのシーケンスフィールドに「B」を記入し、ACKフィールドにはTCP-SYNパケットのシーケンス番号「A」を正常に受信したことを示すためにTCP-SYNのシーケンス番号に「+1」を演算した「A+1」を記入してゲートウェイ装置1Aに返信する(S322)。
【0084】
ゲートウェイ装置1Bからシーケンスフィールドが「B」、ACKフィールドが「A+1」のTCP-SYN/ACKパケットを受取ったゲートウェイ装置1Aは、ACKフィールドに記載されたACK番号により自身が送信したTCP-SYNパケットが正常に受信されたことを確認できる。TCP-SYN/ACKパケットを正常に受信したゲートウェイ装置1Aは、TCP-ACKパケットを返信する(S323)。このとき、シーケンスフィールドには先ほど送信したTCP-SYNパケットの次に送信するTCPパケットであることを示すため、TCP-SYNのシーケンス番号である「A」に「+1」を演算した「A+1」を記入し、ACKフィールドにはTCP-SYN/ACKパケットのシーケンス番号を正常に受信したことを示すために「B」に「+1」を演算した「B+1」を記入してゲートウェイ装置1Bに返信する。
【0085】
このようにTCPパケットに順序情報を付与することにより、2つのゲートウェイ装置1A、1B間での3way handshakeが完了してTCPコネクションが確立すると、ゲートウェイ装置1Aにはシーケンス番号「A+1」とACK番号「B+1」は設定され、ゲートウェイ装置1Bにはシーケンス番号「B」とACK番号「A+1」が設定される。
【0086】
S214においてゲートウェイ装置1Aのパケット保留部15に一時保留されたTCPパケットは、TCPコネクションが確立するとセッション情報取得部162からの指令によりIPパケットを呼制御ネットワーク5に転送する(S324)。このとき、ゲートウェイ装置1Aのシーケンス番号は「A+1」、ACK番号は「B+1」に設定されているため、順序情報管理部165Bは転送するユーザデータ#2のシーケンスフィールドの値を「A+1」、ACKフィールドの値を「B+1」に変換する。
【0087】
このユーザデータData#2のTCPパケットがゲートウェイ装置1Bに到達すると、セッション制御部16BはこのTCPパケットからIPアドレスを抽出し、このIPアドレスに基づいてセッションを再確立する際にセッション情報テーブル170に記憶したシーケンス番号「X」及びACK番号「Y」を呼び出す。その後、順序情報管理部165Bにより、ユーザデータData#2のシーケンスフィールドの値を「A+1」から「X」に、ACKフィールドの値を「B+1」から「Y」に変換してIP端末3Bに転送する(S325)。
【0088】
これ以降、IP端末3AからIP端末3BへTCPにて送信されるIPパケット、すなわちTCPパケットのシーケンス番号は1ずつインクリメントされる。例えばIP端末3AがTCPヘッダにシーケンス番号「X+n」、ACK番号「Y+m」を格納したデータData#nをTCPにてゲートウェイ装置1Aに送信した場合(S326)、ゲートウェイ装置1Aはシーケンス番号を「A+n+1」、ACK番号を「B+m+1」に変換し(S327)、ゲートウェイ装置1Bが再びシーケンス番号を「X+n」、ACK番号を「Y+m」に変換してIP端末3Bに転送する(S328)。
【0089】
このように、ゲートウェイ装置1Aがセッションを再確立する際に対向するゲートウェイ装置1BにTCPのシーケンス番号初期値及びACK番号初期値を通知しておくことで、呼制御ネットワーク5においてゲートウェイ装置1A、1BがTCPのシーケンス番号やACK番号として任意の値を用いる場合であっても、対向するゲートウェイ装置1Bが中継するユーザデータData#2のシーケンス番号及びACK番号をゲートウェイ装置1Aで変換される前の値に再変換することができる。
【0090】
本実施の形態によれば、セッションを再確立する際の制御プロトコルとTCPの3way handshakeを利用して、TCPで通信されるユーザデータのシーケンス番号及びACK番号、ゲートウェイ装置1Aが呼制御ネットワーク5上で使用するシーケンス番号及びACK番号をゲートウェイ装置1Bに通知できるようにしたため、ACK番号は32bitの符号なし整数で表される値であるが、ゲートウェイ装置1A、1Bに設定されるACK番号が0より小さな値とならず、ユーザデータに含まれるTCPの順序情報の連続性を維持した状態でデータを中継することができる。
【0091】
実施の形態4.
実施の形態3では、セッション切断前後でTCPの連続性を保つために、セッション再確立時の制御プロトコル及びTCPの3way handshakeを利用してゲートウェイ装置にシーケンス番号及びACK番号を設定した。実施の形態4では、セッション切断前後のセッション確立用の制御プロトコルを利用してTCPの連続性を維持する場合について説明する。
【0092】
本実施の形態に係るゲートウェイ装置1が使用される通信システム100の構成、及びゲートウェイ装置1のハードウェア構成は実施の形態1と同じであるため説明を省略する。ゲートウェイ装置1の機能及び動作について図14ないし図18を用いて説明する。
図14に示すように、セッション制御部16Cの構成は実施の形態1とほぼ同じで、セッション情報取得部162Cの機能が一部異なる。セッション情報取得部162Cには通信フローごとにフロー識別子を生成し管理する識別子管理部1620が設けられ、このフロー識別子は、図15に示すように、セッション情報テーブル170Cにセッション制御パラメータとあわせて記憶されている。
【0093】
ここで、図16のシーケンス図を用いて通信システム全体の動作について説明する。
IP端末3AからTCPコネクションの接続要求であるTCP-SYNパケットが送信され(S101)、ゲートウェイ装置1Aがこれを検出すると、ゲートウェイ装置1Aはセッション制御部16Cにて送信元IPアドレス、宛先IPアドレス、プロトコル、送信元ポート番号、宛先ポート番号等を抽出し、記憶部17のセッション情報テーブル170Cからセッション制御パラメータを取得する。
【0094】
ゲートウェイ装置1Aは取得したセッション制御パラメータに基づいて、セッション制御部16Cの識別子管理部1620にて通信フローに対応するセッションごとに固有のフロー識別子を生成し、セッション管理部163にてこのフロー識別子を含むINVITEメッセージを生成する。なお、生成されたフロー識別子は、セッション制御パラメータとあわせてセッション情報テーブル170Cに記憶される。
【0095】
ここで、ゲートウェイ装置1AがS402にて送信するINVITEメッセージの一例を図17に示す。INVITEメッセージのメッセージフォーマットは実施の形態3とほぼ同じで、属性を規定するaフィールドが異なる。図17の例では、図中破線で囲んだように、フロー識別子Zとして属性「X-peer-flowID」、値「30000」が設定されている。
【0096】
ゲートウェイ装置1Aからを呼制御ネットワーク5にメッセージを送信する際、アドレス情報を秘匿するためにIPアドレスとポート番号を書き換えるNAPT(Network Address Port Transfer)変換という技術を用いることがある。NAPT変換前後の送信元IPアドレス及び送信元ポート番号は、NAPT変換テーブルとして、例えば図15に示すように、セッション情報テーブル170Cの一部として記憶されている。
【0097】
図16のシーケンスにおいて、ゲートウェイ装置1A、1BがNAPT変換を行う場合を黒丸で示す。ゲートウェイ装置1Aはフロー識別子Zを含むINVITEメッセージを生成して送信し(S402)、SIPサーバ2はこのINVITEメッセージに対し100 Tryingで応答し(S403)、ゲートウェイ装置1Bに転送する(S404)。対向するゲートウェイ装置1BはこのINVITEメッセージを受信すると、ゲートウェイ装置1Aが設定したIPアドレス、ポート番号、フロー識別子Zを自身のセッション情報テーブル170Cに記憶し、100 Tryingパケット及び200 OKレスポンスの応答を送信し(S405、S406)、ゲートウェイ装置1AはACKを返信する(S407)。
【0098】
ゲートウェイ装置1Aは200 OKレスポンスを受信すると、先ほどフロー識別子Zと対応付けて記憶したセッション情報テーブル170Cと、200 OKレスポンスに記載されたゲートウェイ装置1BのIPアドレス及びポート番号に基づいて、図18に示すようなセッション状態テーブル171Cを生成する。
【0099】
呼制御ネットワーク5上にセッションが確立されると、ゲートウェイ装置1Aは保留していたS101にて受信したTCP-SYNパケットをゲートウェイ装置1Bに向けて送出する(S408)。このとき、TCP-SYNパケットの宛先IPアドレス及び宛先ポート番号はNAPT変換により200 OKレスポンスのSDPで通知された値に書き換えられ、送信元IPアドレス及び送信元ポート番号は自身のセッション情報テーブル170Cで規定された値にNAPT変換により書き換えられる。
【0100】
ゲートウェイ装置1BはこのTCP-SYNパケットを受信すると、セッション状態テーブル171Cに記憶したNAPT変換の情報に基づいてIPアドレスとポート番号を変換し、IP端末3Bに転送する。TCP-SYNパケットを受信したIP端末3BはTCP-SYN/ACKパケットを生成し、S409にて対向するIP端末3Aに向けて送信する。ゲートウェイ装置1BはTCP-SYN/ACKパケットを受信すると、セッション状態テーブル171Cに基づいて、送信元IPアドレスと送信元ポート番号を先ほど200 OKレスポンスを送信した際のIPアドレスとポート番号に変換し、宛先IPアドレスと宛先ポート番号をゲートウェイ装置1AからTCP-SYNを受信した際の送信元アドレス及び送信元ポート番号に変換し、ゲートウェイ装置1Aに向けて転送する。
【0101】
TCP-SYN/ACKパケットを受信したゲートウェイ装置1Aはセッション状態テーブル171Cに記憶したNAPT変換の情報に基づいて、IPアドレスとポート番号をTCP-SYNパケットを送信した際の送信元IPアドレスと送信元ポート番号、すなわちIP端末3AのIPアドレスとポート番号に変換してIP端末3Aに転送する。
TCP-SYN/ACKパケットを受信したIP端末3AはTCP-ACKパケットを生成し、S410にて対向するIP端末3Bに向けて送信する。このTCP-ACKパケットも、TCP-SYNパケットと同様にゲートウェイ装置1A、1BにてNAPT変換されてIP端末3Bに到達する。
このようにしてTCPの3way handshakeが完了すると、IP端末3A、3B間にTCPコネクションが確立し、双方向のTCP通信が可能となる(S411)。
【0102】
ゲートウェイ装置1Aは、実施の形態1と同様に、このセッションを使用するIPパケットを一定期間検出しない状態が続くと、BYEパケットを生成して対向するゲートウェイ装置1Bに送信する(S112)。
【0103】
ゲートウェイ装置1Bから200 OKレスポンスの応答を受信すると、ゲートウェイ装置1Aはこのセッションを切断し、このセッションに対応するタイマ180を停止してリセットすると共に、セッション状態テーブル171Cを更新する(S113)。
ここではゲートウェイ装置1Aがセッション切断を要求するBYEパケットを生成する場合を示したが、ゲートウェイ装置1BがBYEパケットを生成してもよい。どちらがトリガーとなるかは、先にタイマ180が満了したものとしても良いし、予め二者間で決めておいても良い。
【0104】
セッションが切断された後、再びIP端末3AがS113にてIP端末3B宛てにユーザデータData#2のTCPパケットを送信すると(S114)、ゲートウェイ装置1AはこのユーザデータData#2を自装置内のパケット保留部15に一時保留し、セッションを再確立するために再びINVITEメッセージを生成してSIPサーバ2に送信する(S415)。このとき、INVITEメッセージのaフィールドには先ほどと同様にフロー識別子Zが設定される。
【0105】
対向するゲートウェイ装置1BはS417によりINVITEメッセージを受信すると100 TryingをSIPサーバ2に返信し(S418)、セッション確立の準備が整ったところでゲートウェイ装置1Aに向けて200 OKレスポンスを送信する(S419)。このとき、200 OKレスポンスの宛先IPアドレスには、INVITEメッセージの送信元IPアドレスがセットされ、200 OKレスポンスの宛先ポート番号には、INVITEメッセージの送信元ポート番号がセットされる。
ゲートウェイ装置1Aがこの200 OKレスポンスを受信しACKを返信すると(S420)、呼制御ネットワーク5にセッションが再確立される。
【0106】
ゲートウェイ装置1Aは、INVITEメッセージを生成する際にセッション状態テーブル171Cを参照し、このセッション確立要求は一旦切断されたセッションを再確立するものなのか、IP端末3AからのTCP-SYNパケット送信の要求に応じてセッションを確立するものなのかを判断する。
【0107】
一旦切断されたセッションを再確立するものであると判断した場合、ゲートウェイ装置1Aはセッションを再確立した後、TCP管理部164にてTCP-SYNパケットを生成し、対向するゲートウェイ装置1B宛に送信する(S421)。ゲートウェイ装置1BはTCP-SYN/ACKパケットを生成してこれに応答し(S422)、ゲートウェイ装置1AがTCP-ACKパケットで応答する(S423)ことにより3way handshakeが成立し、2つのゲートウェイ装置1A、1B間にTCPコネクションが確立される。
【0108】
TCPコネクションが確立すると、ゲートウェイ装置1AはS114にて受信し保留していたユーザデータData#2のTCPパケットを、セッション状態テーブル171Cに基づいてNAPT変換し、対向するゲートウェイ装置1BにTCPにて転送する(S424)。ゲートウェイ装置1BはこのユーザデータData#2のTCPパケットを受信すると、自装置のセッション状態テーブル171Cの情報に基づいてNAPT変換し、IP端末3Bに転送する(S425)。
以後、IP端末3A、3B間を伝送するTCPパケットはゲートウェイ装置1A、1Bで中継される際にNAPT変換され(S426〜S428)、呼制御ネットワークとユーザネットワークとでは異なるIPアドレス及びポート番号を持つことになる。
【0109】
本実施の形態によれば、セッションごとに固有のフロー識別子を設け、セッション確立の際に2つのゲートウェイ装置間でフロー識別子を共有することにより、ゲートウェイ装置1A、1BがNAPT変換する場合であっても、セッション切断前のフローを特定することができ、同じセッションでTCPコネクションを確立することができる。
【0110】
実施の形態5.
実施の形態3では、セッション切断前後でTCPの順序情報の連続性を保つために、制御プロトコルや3way handshakeを利用してゲートウェイ装置にシーケンス番号及びACK番号を設定した。また、実施の形態4では、セッションごとに固有のフロー識別子を設けることにより、セッション切断前のフローを特定してTCPコネクションを確立できるようにした。実施の形態5では、実施の形態3と実施の形態4を組合せた場合について説明する。
【0111】
本実施の形態に係るゲートウェイ装置1が使用される通信システム100の構成、及びゲートウェイ装置1のハードウェア構成は実施の形態1と同じであるため説明を省略する。ゲートウェイ装置1の機能及び動作について図19ないし図21を用いて説明する。
図19はセッション制御部16Dの機能ブロック図で、セッション情報取得部162Dにフロー識別子を生成したり管理したりする識別子管理部1620Dを備えると共に、実施の形態3に記載したのと同じ機能を有する順序情報管理部165Dを備えたものである。
【0112】
ここで、図20のシーケンス図を用いて通信システム全体の動作について説明する。
IP端末3AからTCPコネクションの接続要求であるTCP-SYNパケットが送信され(S101)、ゲートウェイ装置1Aがこれを検出すると、ゲートウェイ装置1Aはセッション制御部16Dにて送信元IPアドレス、宛先IPアドレス、プロトコル、送信元ポート番号、宛先ポート番号等を抽出し、記憶部17のセッション情報テーブル170Dからセッション制御パラメータを取得する。
【0113】
ゲートウェイ装置1Aは取得したセッション制御パラメータに基づいて、セッション制御部16Dの識別子管理部1620Dにて通信フローに対応するフロー識別子Zを生成し、セッション管理部163にてこのフロー識別子を含むINVITEメッセージを生成する。なお、生成されたフロー識別子Zは、セッション制御パラメータとあわせてセッション情報テーブル170Dに記憶される。
【0114】
ゲートウェイ装置1Aは、呼制御ネットワーク5にIPパケットを転送する際にIPアドレスやポート番号を秘匿するためにNAPT変換を行う。図20のシーケンスにおいて、ゲートウェイ装置1A、1BがNAPT変換を行う場合を黒丸で示す。
【0115】
ゲートウェイ装置1Aはフロー識別子Zを含むINVITEメッセージを生成すると、セッション情報テーブル170Dに基づいて送信する(S402)。対向するゲートウェイ装置1BはこのINVITEメッセージを受信すると、ゲートウェイ装置1Aが設定したIPアドレス、ポート番号、フロー識別子Zを自身のセッション情報テーブル170Dに記憶し、100 Tryingパケット及び200 OKレスポンスを返信する(S405、S406)。
【0116】
ゲートウェイ装置1Aは200 OKレスポンスを受信すると(S406)、先ほどフロー識別子Zと対応付けて記憶したセッション情報テーブル170Dと、200 OKレスポンスに記載されたゲートウェイ装置1BのIPアドレス及びポート番号に基づいて、セッション状態テーブル171Dを生成し、ACKを返信する(S407)。
【0117】
呼制御ネットワーク5上にセッションが確立されると、ゲートウェイ装置1AはS101にて受信し保留していたTCP-SYNパケットをゲートウェイ装置1Bに向けて送出する(S408)。このとき、TCP-SYNパケットの宛先IPアドレス及び宛先ポート番号はNAPT変換により200 OKレスポンスのSDPで通知された値に書き換えられ、送信元IPアドレス及び送信元ポート番号は自身のセッション情報テーブル170DのNAPT変換情報に基づいて書き換えられる。
【0118】
ゲートウェイ装置1BはこのTCP-SYNパケットを受信すると、セッション状態テーブル171Dに記憶したNAPT変換の情報に基づいてIPアドレスとポート番号を変換し、IP端末3Bに転送する。TCP-SYNパケットを受信したIP端末3BはTCP-SYN/ACKパケットを生成し、対向するIP端末3Aに向けて送信する(S409)。ゲートウェイ装置1BはTCP-SYN/ACKパケットを受信すると、セッション状態テーブル171Dに基づいて、送信元IPアドレスと送信元ポート番号を先ほど200 OKレスポンスを送信した際のIPアドレスとポート番号に変換し、宛先IPアドレスと宛先ポート番号をゲートウェイ装置1AからTCP-SYNを受信した際の送信元アドレス及び送信元ポート番号に変換し、ゲートウェイ装置1Aに向けて転送する。
【0119】
TCP-SYN/ACKパケットを受信したゲートウェイ装置1Aはセッション状態テーブル171Dに記憶したNAPT変換の情報に基づいて、IPアドレスとポート番号をTCP-SYNパケットを送信した際の送信元IPアドレスと送信元ポート番号に変換してIP端末3Aに転送する(S409)。
TCP-SYN/ACKパケットを受信したIP端末3AはTCP-ACKパケットを生成し、対向するIP端末3Bに向けて送信する。このTCP-ACKパケットも、TCP-SYNパケットと同様にゲートウェイ装置1A、1BにてNAPT変換されてIP端末3Bまで送られる(S410)。
このようにしてTCPの3way handshakeが完了すると、IP端末3A、3B間にTCPコネクションが確立し、双方向のTCP通信が可能となる(S411)。
【0120】
ゲートウェイ装置1Aは、このセッションを使用するIPパケットを一定期間検出しない状態が続くと、BYEパケットを生成して対向するゲートウェイ装置1Bに送信する(S112)。対向するゲートウェイ装置1Bから200 OKレスポンスの応答を受信すると、ゲートウェイ装置1Aはこのセッションを切断し、対応するタイマ180を停止してリセットし、セッション状態テーブル171Dを更新する(S113)。
ここで、セッション切断前に最後にIP端末3AからIP端末3BにTCPで送信されたデータのシーケンス番号は「X−1」、ACK番号は「Y−1」であるとする。
【0121】
セッションが切断された状態のS214において、IP端末3Aからシーケンス番号が「X」、ACK番号が「Y」のユーザデータData#2のTCPパケットが送信されると、ゲートウェイ装置1AはこのTCPパケットをパケット保留部15に一時的に保留し、受信したTCPパケットの情報をセッション制御部16Dに通知する。
【0122】
セッション制御部16Dは受信したTCPパケットからIPアドレス、プロトコルの種類、ポート番号、等の情報を抽出し、この情報に基づいてセッション情報テーブル170Dから対応する帯域等のセッション制御パラメータを読み取り、セッション状態テーブル171Dからこのセッションはゲートウェイ装置1A、1Bにより切断されたものかIP端末3A、3Bからの要求により切断されたものかの情報を読み取る。
【0123】
ゲートウェイ装置1Aが保留したデータを転送するには、呼制御ネットワーク5のセッション及びTCPコネクションを再確立しなければならないので、セッション制御部16Dはセッション管理部163にINVITEメッセージを生成させ、セッション情報テーブル170Dのセッション制御パラメータに基づいて呼制御ネットワーク5に送出する(S415)。
【0124】
ここで、ゲートウェイ装置1AがS415にて送信するINVITEメッセージの一例を図21に示す。INVITEメッセージのメッセージフォーマットは実施の形態3とほぼ同じで、属性を規定するaフィールドが異なる。図21の例では、図中破線で囲んだように、フロー識別子Zが属性「X-peer-flowID」、値「30000」として、TCPのシーケンス番号Aが属性「A-TCP-seq」、値「10000」として、ACK番号0が属性「A-TCP-ack」、値「0」として、それぞれ設定されている。
【0125】
SIPサーバ2はS415にてINVITEメッセージを受取るとこのゲートウェイ装置1Aに100 Tryingパケットを返信し(S416)、対向するゲートウェイ装置1BにこのINVITEメッセージを転送する(S417)。ゲートウェイ装置1BはINVITEメッセージを受信すると、ゲートウェイ装置1Aが設定したIPアドレス、ポート番号、フロー識別子Zを自身のセッション情報テーブル170Dに記憶し、100 Tryingパケット及び200 OKレスポンスを返信する(S418、S419)。
【0126】
ゲートウェイ装置1Aが200 OKレスポンスを受信しACKを返信するとセッションの再確立が完了する(S420)。ゲートウェイ装置1Aは200 OKレスポンスに格納されたフロー情報及びセッション情報テーブル170Dの情報に基づいてセッション状態テーブル171Dを更新し、無通信監視部18にこのセッションと対応するタイマ180のスタート指示を送る。
【0127】
また、ゲートウェイ装置1Aは、INVITEメッセージを生成する際にセッション状態テーブル171Dを参照し、このセッション確立要求は一旦切断されたセッションを再確立するものなのか、IP端末3AからのTCP-SYNパケット送信の要求に応じてセッションを確立するものなのかを判断している。一旦切断されたセッションを再確立するものであると判断した場合、ゲートウェイ装置1AはTCP管理部164にてTCP-SYNパケットを生成し、対向するゲートウェイ装置1B宛に送信する(S521)。このとき、TCPヘッダのシーケンスフィールドには先ほどシーケンス番号初期値として設定した「A」を記入し、ACKフィールドには先ほどACK番号初期値として設定した「0」を記入する。
【0128】
対向するゲートウェイ装置1BにTCP-SYNパケットが到達すると、ゲートウェイ装置1Bも自身の順序情報付与・変換部165Bにて初期値として使用したいシーケンス番号を決定する。図20では、ゲートウェイ装置1Bはシーケンス初期値を「B」とし、TCP-SYNパケットへの応答としてシーケンスフィールドに「B」、ACKフィールドにTCP-SYNパケットのシーケンス番号に「+1」の演算をした「A+1」を記入し、ゲートウェイ装置1Aに返信する(S522)。
【0129】
ゲートウェイ装置1Bからシーケンスフィールドが「B」、ACKフィールドが「A+1」のTCP-SYN/ACKパケットを受取ったゲートウェイ装置1Aは、ACKフィールドに記載されたACK番号により自身が送信したTCP-SYNパケットが正常に受信されたことを確認できる。TCP-SYN/ACKパケットを正常に受信したゲートウェイ装置1Aは、TCP-ACKパケットを生成し、シーケンスフィールドに先ほど送信したTCP-SYNパケットの次に送信するパケットであることを示すため、TCP-SYNのシーケンス番号である「A」に「+1」を演算した「A+1」を記入し、ACKフィールドにはTCP-SYN/ACKパケットのシーケンス番号を正常に受信したことを示すために「B」に「+1」を演算した「B+1」を記入してゲートウェイ装置1Bに応答する(S523)。
【0130】
このようにTCPパケットに順序情報を付与することにより、2つのゲートウェイ装置1A、1B間にTCPコネクションが確立した時点で、ゲートウェイ装置1Aにはシーケンス番号「A+1」、ACK番号「B+1」が設定され、ゲートウェイ装置1Bにはシーケンス番号「B」、ACK番号「A+1」が設定される。
【0131】
ゲートウェイ装置1Aは、TCPコネクションが確立するとS214にて受信しパケット保留部15に一時保留したTCPパケットを、セッション情報取得部162Dからの指令に従ってTCPにて呼制御ネットワーク5に転送する(S524)。このとき、ゲートウェイ装置1Aのシーケンス番号は「A+1」、ACK番号は「B+1」に設定されているため、順序情報管理部165Dは転送するユーザデータ#2のシーケンスフィールドの値を「A+1」、ACKフィールドの値を「B+1」に変換する。
【0132】
このユーザデータData#2のTCPパケットがゲートウェイ装置1Bに到達すると、セッション制御部16DはこのTCPパケットからIPアドレスを抽出し、抽出したIPアドレスに基づいてセッション情報テーブル170Dに記憶されたシーケンス番号「X」及びACK番号「Y」を呼び出す。その後、順序情報管理部165Dにより、ユーザデータData#2のシーケンスフィールドの値を「A+1」から「X」に、ACKフィールドの値を「B+1」から「Y」に変換してIP端末3Bに転送する(S525)。
【0133】
これ以降、IP端末3AからIP端末3BへTCPにて送信されるTCPパケットのシーケンス番号は1ずつインクリメントされる。例えばIP端末3AがTCPヘッダにシーケンス番号「X+n」、ACK番号「Y+m」を格納したユーザデータData#nをTCPにて送信する場合(S526)、ゲートウェイ装置1Aはシーケンス番号を「A+n+1」、ACK番号を「B+m+1」に変換し、ゲートウェイ装置1Bが再びシーケンス番号を「X+n」、ACK番号を「Y+m」に変換してIP端末3Bに転送する(S527)。
【0134】
このように、ゲートウェイ装置1Aがセッションを再確立する際に対向するゲートウェイ装置1Bにフロー識別子とTCPのシーケンス番号初期値及びACK番号初期値を通知することで、ゲートウェイ装置1A、1BがNAPT変換する場合や呼制御ネットワーク5上で任意のシーケンス番号及びACK番号を用いる場合であっても、対向するゲートウェイ装置1Bが中継するユーザデータの宛先や順序情報をゲートウェイ装置1Aで変換される前の値に再変換することができる(S528)。
【0135】
本実施の形態によれば、実施の形態1の構成にフロー識別子を管理する識別子管理部1620Dとシーケンス番号やACK番号といった順序情報を管理する順序情報管理部165Dとを備えたことにより、ゲートウェイ装置1がNAPT変換する場合やTCPの順序情報に連続性が要求される場合であっても、ゲートウェイ装置1が切断したセッションを再確立した後にTCPコネクションを確立することができる。これにより、IP端末3が再度TCPの3way handshakeを実行せずともゲートウェイ装置1A、1B間においてTCP通信を再開できる。
【0136】
なお、ここでは実施の形態3と実施の形態4を組合せた場合について説明したが、実施の形態2と実施の形態4を組合せることもできる。この場合は実施の形態2に記載の効果と実施の形態4に記載の効果を得ることができる。
また、実施の形態2ないし実施の形態5においても実施の形態1と同様に、SIPの代わりにセッション制御プロトコルとしてH.323、MEGACO等を用いることができる。
【符号の説明】
【0137】
1、1A、1B ゲートウェイ装置
2 SIPサーバ
3、3A、3B IP端末
4、4A、4B ユーザネットワーク
5 呼制御ネットワーク
14A、14B パケット検出部
15 パケット保留部
16、16A〜16D セッション制御部
160 DA/SA抽出部
161 パケット識別部
162、162C、162D セッション情報取得部
163 セッション管理部
164 TCP管理部
165、165B、165D 順序情報管理部
17 記憶部
170、170D セッション情報テーブル
171、171D セッション状態テーブル
18 無通信監視部
180 タイマ

【特許請求の範囲】
【請求項1】
IP端末と呼制御・呼管理を行うサーバとの間に接続され、前記サーバとの間にセッションが確立されている場合に前記IP端末から送信されたパケットを前記サーバに中継する中継装置において、
前記IP端末から送信されたパケットの受信を検出するパケット検出部と、
前記IP端末から受信したパケットを一時保留するパケット保留部と、
前記パケット検出部により前記セッションを使用するパケットが所定期間検出されない場合に該セッションを切断するセッション制御部と、
前記セッションが前記セッション制御部により切断されたか否かを示す切断情報を記憶した記憶部と、を有し、
前記セッションの切断後に、該セッションを使用するTCPパケットを前記IP端末から受信した場合に、
前記パケット保留部が前記TCPパケットを一時保留し、
前記セッション制御部が、前記セッションを再確立し、該セッションの再確立後に前記記憶部に記憶された前記切断情報に基づいて前記サーバを介して接続された他の中継装置との間にTCPコネクションを確立し、該TCPコネクションの確立後に前記パケット保留部に保留された前記TCPパケットを前記サーバに向けて転送させることを特徴とする中継装置。
【請求項2】
前記セッション制御部は、前記サーバを介して接続された前記他の中継装置に対してTCPコネクションの確立要求メッセージを送信するTCP管理部を備えたことを特徴とする請求項1に記載の中継装置。
【請求項3】
前記セッション制御部は、前記検出されたTCPパケットに連続性を有する第1の順序情報が含まれる場合に該第1の順序情報に基づいて連続性を有する第2の順序情報を生成し、前記TCPコネクションの確立要求メッセージに前記第2の順序情報を含めることを特徴とする請求項2に記載の中継装置。
【請求項4】
前記第2の順序情報は、前記第1の順序情報から1減算した値であることを特徴とする請求項3に記載の中継装置。
【請求項5】
前記第2の順序情報は、ゼロ以上の整数であることを特徴とする請求項3に記載の中継装置。
【請求項6】
前記セッション制御部は、前記セッションに固有のフロー識別子を生成し、前記セッションを確立するためのセッション確立用メッセージに前記フロー識別子を含めることを特徴とする請求項1ないし請求項3のいずれか一項に記載の中継装置。
【請求項7】
IP端末と呼制御・呼管理を行うサーバとの間に接続され、前記サーバとの間にセッションが確立されている場合に前記IP端末から送信されたパケットを前記サーバに中継する中継装置において実行されるパケット中継方法であって、
前記セッションを使用するパケットを所定期間受信しない場合に前記セッションを切断する第1のステップと、
前記第1のステップによる前記セッション切断後に、該セッションを使用するTCPパケットを前記IP端末から受信する第2のステップと、
前記第2のステップにより受信した前記TCPパケットを一時保留する第3のステップと、
前記第2のステップにより前記TCPパケットを受信した場合に前記セッションを再確立する第4のステップと、
前記第4のステップによる前記セッションの再確立後に、前記中継装置と前記サーバを介して接続された他の中継装置との間にTCPコネクションを確立する第5のステップと、
前記第5のステップによるTCPコネクションの確立後に、前記第3のステップにより一時保留された前記TCPパケットを前記サーバに向けて転送する第6のステップと、
を備えたことを特徴とするパケット中継方法。
【請求項8】
IP端末と、呼制御・呼管理を行うサーバと、前記IP端末及び前記サーバ間に接続され、前記サーバとの間にセッションが確立されている場合に前記IP端末から送信されたパケットを中継する中継装置と、を備えた通信システムにおいて、
前記中継装置は、
前記IP端末から送信されたパケットの受信を検出するパケット検出部と、
前記IP端末から受信したパケットを一時保留するパケット保留部と、
前記パケット検出部により前記セッションを使用するパケットが所定期間検出されない場合に該セッションを切断するセッション制御部と、
前記セッションが前記セッション制御部により切断されたか否かを示す切断情報を記憶した記憶部と、を備え、
前記セッションの切断後に、該セッションを使用するTCPパケットを前記IP端末から受信した場合に、
前記セッション制御部が、前記セッションを再確立し、該セッションの再確立後に前記記憶部に記憶された前記切断情報に基づいて前記サーバを介して接続された他の中継装置との間にTCPコネクションを確立し、該TCPコネクションの確立後に前記パケット保留部に保留された前記TCPパケットを前記サーバに向けて転送させることを特徴とする通信システム。

【図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

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate


【公開番号】特開2012−175249(P2012−175249A)
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願番号】特願2011−33202(P2011−33202)
【出願日】平成23年2月18日(2011.2.18)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】