{第1の実施の形態}
以下、図面を参照しつつ本発明の実施の形態について説明する。図1は、第1の実施の形態に係る通信システムの構成図である。この通信システムは、2つのLAN10,20がWAN30を介して接続されている。LAN10,20は、たとえば会社の社内LANであり、WAN30は、たとえばインターネットなどのパブリックなネットワークである。つまり、プライベートな2つの異なるLAN10,20がインターネットなどのパブリックなネットワークを介して接続されている。
図に示すように、LAN10には2つの通信装置11、12および中継装置15が接続されている。そして、LAN10はゲートウェイ16を介してWAN30に接続されている。LAN20には2つの通信装置21、22および中継装置25が接続されている。そして、LAN20はゲートウェイ26を介してWAN30に接続されている。
通信装置11,12はパーソナルコンピュータなどの端末であり、ネットワーク機能を備えている。具体的には、TCP/IPが実装されており、TCP/IPを利用してLAN10に接続された中継装置15や他のコンピュータと通信可能となっている。同様に通信装置21,22もTCP/IPが実装されており、TCP/IPを利用してLAN20に接続された中継装置25や他のコンピュータと通信可能となっている。また、中継装置15,25やゲートウェイ16,26についてもTCP/IPを利用した通信が可能となっている。
WAN30には、サーバ装置35が接続されている。WAN30は上述したようにインターネットなどのパブリックなネットワークである。したがって、LAN10,20やWAN30に接続されている端末は、サーバ装置35のグローバルIPアドレスを指定することで、TCPコネクションを確立することが可能である。
これに対して、LAN10,20に接続されている通信装置11,12,21,22および中継装置15,25は、プライベートなIPアドレスが付与されている。そして、ゲートウェイ16,26はファイアーウォールを形成しており、外部のネットワークから直接内部の端末を指定した接続が行えないようになっている。したがって、WAN30に接続さている端末などは中継装置15,25に対してTCPコネクションの接続要求を行うことが制限されている。本実施の形態においては、後述するようにサーバ装置35はSIPサーバ(SIPのプロキシサーバ、登録サーバ)として機能するため、サーバ装置35から中継装置15,25に対する特定のポートを指定した通信が可能なようにゲートウェイ16,26の設定が行われている。
表1は、サーバ装置35が管理している中継装置データベース351の登録例を示す表である。この例では、3つの中継装置A〜Cが登録されている。中継装置A〜Cは、たとえば中継装置15や中継装置25に付けられている装置名称である。それぞれの中継装置A〜Cについて、URLとIPアドレスとログイン状態のフラグが設定されている。
なお、中継装置データベース351に登録されている各中継装置のIPアドレスは、各中継装置のプライベートネットワーク内におけるIPアドレスではなく、ゲートウェイによってNAT(Network Address Translation)やIPマスカレードなどの機能により変換されたグローバルIPアドレスである。たとえば、中継装置15は、LAN10内でプライベートアドレスが割り当てられているが、サーバ装置35にアクセスする際には、そのIPアドレスがゲートウェイ16においてグローバルIPアドレスに変換されている。
各中継装置A〜Cは、サーバ装置35に接続してサーバ装置35にログインする。中継装置データベース351の「状態」フィールドには、各中継装置A〜Cがサーバ装置35に現在ログイン中であるかログアウト状態にあるかを示す情報が設定される。サーバ装置35は各中継装置がログイン状態にある場合には、他の各中継装置との間でTCPコネクションを確立する準備があると判断できるのである。言い換えると、中継装置がサーバ装置35にログインしている状態は、相手の端末から送られてきたTCPコネクションの接続要求を受け入れられる状態にあることを示しているのである。
以上の構成の通信システムにおける通信処理の流れについて図2ないし図4を参照しながら説明する。図2は、中継装置15,25およびサーバ装置35を含めた通信システムの全体の処理の流れを示す図である。なお、以下の説明において、中継装置15,25とサーバ装置35との間の通信はSIP(Session Initiation Protocol)を利用している場合を例に説明するが、その他のプロトコルを利用してもよい。
各中継装置15,25は、初期化の際あるいは定期的にSIPの「REGISTERリクエストメッセージ」をサーバ装置35に送信し、中継装置の位置情報(IPアドレス,ポート番号等)をサーバ装置35に通知している。サーバ装置35は、この位置情報を元に表1の中継装置データベース351を管理している。サーバ装置35は、この位置情報に基づいてゲートウェイを越えて各中継装置に通信可能となっている。図2において、最初の状態では、中継装置15および中継装置25はサーバ装置35にログインしている。まず、中継装置25がサーバ装置35に対してログアウトの状態情報を通知し(ステップS101)、サーバ装置35がこれに応答する(S102)。サーバ装置35は、中継装置25のログアウト処理を実行し、中継装置データベース351において中継装置25の「状態」フィールドをログアウトに更新する。
この状態で、中継装置15がサーバ装置35に対して状態情報の通知要求を行うと(S103)、サーバ装置35は応答を行い(S104)、続いて中継装置25がログアウト状態であることを通知する(S105)。中継装置15は、この通知に応答する(S106)。
次に、中継装置25がサーバ装置35に対してログインの状態情報を通知し(ステップS107)、サーバ装置35がこれに応答する(S108)。サーバ装置35は中継装置25のログイン処理を実行し、中継装置データベース351の「状態」フィールドをログインに更新する。さらに、サーバ装置35は、中継装置25がログイン状態となったことを中継装置15に通知する(S109)。中継装置15は、この通知に応答する(S110)。
中継装置15は、中継装置25がログイン状態となった通知を受けると、次に、中継装置25に対する接続要求をサーバ装置35に送信する(S111)。この接続要求は、図に例示したように、SIPの「INVITEリクエストメッセージ」であり、空白行に続くボディ部にTCP接続情報が含まれている。図に示した例では、中継装置15(送信元)のIPアドレス(200.1.1.1)、TCPのポート番号(6109)などが含まれている。サーバ装置35は、この接続要求を中継装置25に中継する(S112)。この要求に対して中継装置25は接続を許可する旨の応答をサーバ装置35に送信する(S113)。この応答は、図に例示したように、SIPの「200 OK レスポンスメッセージ」であり、空白行に続くボディ部にTCP接続情報が含まれる。図に示した例では、中継装置25(送信元)のIPアドレス(200.2.2.2)、TCPのポート番号(7109)などが含まれている。サーバ装置35は、この応答を中継装置15に中継する(S114)。このように、中継装置15と中継装置25は、SIPのINVITEリクエストとOKレスポンスを利用して、TCPの接続情報を交換し、TCPコネクションを確立するためのネゴシエーションを行うのである。この応答を受けて、中継装置15は中継装置25に対してTCPの接続要求を送信する(S115)。これにより、中継装置15と中継装置25との間にTCPコネクションが確立される。
以上のような処理が、たとえばLAN10あるいはLAN20のネットワーク管理者によって実行される。つまり、ネットワーク管理者は、他のLANとの間の接続を動的に実行できるよう準備するのであれば、ステップS107で示したように、ネットワーク内にある中継装置をサーバ装置35にログインさせるのである。これにより、他の中継装置からTCPの接続要求を受ける準備が整う。そして、ネットワーク管理者は、他のLANとの間の接続を行いたい場合には、サーバ装置35にアクセスして、相手の中継装置の状態を取得し、相手の中継装置がログイン状態となっていることを知ると、接続要求をサーバ装置35に対して送信するのである。
つまり、本発明においては、中継装置15がサーバ装置35を介してSIPのINVITEリクエストを送信することで、中継用のTCPコネクション(メディアセッション)を確立する。つまり、呼制御プロトコルを利用してメディアセッションとしての中継路を生成するため、動的に中継用の通信路を確立できるのである。
このようにして中継装置15と中継装置25との間でTCPのコネクションが確立されると、中継装置15と中継装置25はこのTCPコネクションを保持する。そして、中継装置15は、通信装置11,12等から通信装置21,22等に対して送信するデータを受信すると、このデータを中継装置25に中継する。中継装置25は中継されたデータをさらに通信装置21,22等に中継するのである(S116)。通信装置21,22等から送信されたデータも同様にして、中継装置25、中継装置15を経由して通信装置11,21等に中継される(S117)。
なお、このようなWAN30を介してLAN10とLAN20との間で通信を行うために、各中継装置15,25は、それぞれのLANに接続された通信装置の装置名のリストを管理している。そして、中継装置15と中継装置25との間でTCPコネクションが確立されたときに、このリストを交換するのである。そして、LAN10に接続された通信装置とLAN20に接続された通信装置とが通信を行う場合には、送信先のLANの中継装置と送信先の通信装置の装置名とを合わせて指定するようにすればよい。つまり、この通信システムを利用する中継装置についてはユニークな装置名が付与されているので(中継装置データベース351に登録されている。)、中継装置の装置名と通信装置の装置名を合わせて指定することで、送信先の通信装置をユニークに識別できるのである。たとえば、通信装置名@中継装置名などの名称を用いてもよい。また、各中継装置は、自装置が接続しているLANに接続されている通信装置については、通信装置名とIPアドレスの対応付けが分かっているので、通信装置名@中継装置名で指定された通信装置にデータを中継することが可能である。
通信装置間でのデータの送受信が終了し、中継装置15と中継装置25との間のコネクションが不要となった時点でネットワーク管理者はコネクションの切断を行う。まず、中継装置15が中継装置25に対する切断要求をサーバ装置35に送信する(S118)。サーバ装置35は、この要求を中継装置25に中継する(S119)。中継装置25からの応答はサーバ装置35に送信され(S120)、中継装置15に中継される(S121)。
図3は、図2で説明した処理において中継装置15の処理に着目したフローチャートである。まず、中継装置15は、中継接続の開始要求をサーバ装置35に送信する(ステップS201)。この開始要求には、中継先の中継装置25が指定される。サーバ装置35からの応答により中継先の中継装置25がログアウトしていることが判明すると(S202でNO)、ログイン通知を受信するまで待機する(S203)。ログイン通知を受信するとステップS204に以降する。
ステップS202において中継先の中継装置25がログイン中であることが判明すると、TCP接続情報を生成し(S204)、接続要求を送信する(S205)。そして、中継装置25からの応答を待ち(S206)、応答を受信すると応答中のTCP接続情報を解析する(S207)。つまり、中継装置25から送信された応答に含まれるポート番号情報などを取得する。そして、中継装置25に対してTCP接続を行う(S208)。
TCPコネクションが確立され保持している状態で、通信装置11等が中継データを送信した場合(S209でYES)、通信装置21等にデータを中継送信する(S210)。通信装置11等に対する中継データを受信した場合には(S211でYES)、中継先の通信装置11等へデータを中継送信する(S212)。中継装置25から切断要求を受信した場合には(S213でYES)、応答送信を行い(S214)、TCPコネクションを切断する(S215)。
これに対してLAN10のネットワーク管理者により切断要求が行われた場合(S216)には、中継装置25に対して切断要求を送信し(S217)、応答を受信すれば(S218でYES)、TCPコネクションを切断する(S219)。
図4は、図2で説明した処理において中継装置25の処理に着目したフローチャートである。まず、LAN20のネットワーク管理者は、他のLANとの接続を準備するかどうかを判断する。他のLANとの接続を準備する場合には、中継装置25に対して中継機能を有効にする操作を行う。中継機能が有効になると(ステップS301でYES)、サーバ装置35に対してログインコマンドを送信する(S302)。そして、サーバ装置35から応答を受信し(S303)、中継機能を有効とする処理が完了する。
このように、中継装置15は、中継先の中継装置25がログイン状態にあれば、すなわち、中継装置25が接続を受け入れる状態にあれば動的に中継装置25に対してTCPコネクションを確立し、インターネットなどのWAN30を介してデータ送受信可能とすることができる。たとえば、ある会社の本社と支社のように恒常的にトラフィックが安定して発生する場合には従来から利用されているVPNを利用し、固定的にLAN同士を接続すればよい。これに対して、任意のタイミングでWAN30を経由する異なるネットワークと接続してデータ通信を行いたい場合などにおいては、本実施の形態の通信システムを利用するとよい。
また、本実施の形態の通信システムによれば、相手の中継装置の接続環境(IPアドレスやポート番号)が変更された場合にも、中継装置は最初にネゴシエーション(S111〜S114)を行うので、確実にデータ中継用のコネクションを確立することが可能である。
また、本実施の形態の中継装置15,25は、複数の中継装置との間でTCPコネクションを確立することが可能である。たとえば、図5に示したように、中継装置15が3つの中継装置25,45,55と個別にTCPコネクションを確立することが可能である。中継装置45,55との間でTCPコネクションを確立する方法は、中継装置25に対して行った処理と同様である。そして、各中継装置15,25等は、複数の中継装置との間でTCPコネクションを確立して、複数の中継装置に対してデータを中継するのである。図5の例であれば、中継装置15は、ある通信装置から送信されるデータを中継装置45に中継するとともに、別の通信装置から送信されるデータを中継装置55に中継するのである。
そして、各中継装置45,55とのTCPコネクションを切断する方法も、中継装置25に対して行った処理と同様である。つまり、複数の中継装置25,45,55と個別にTCPコネクションを確立し、個別にTCPコネクションを切断することができるのである。
従来、VPNなどにおいては複数のLANが接続される場合、複数のLANが1つのVPNとして接続される形態であった。これに対して、本実施の形態の通信システムは、通信を行いたい中継装置とだけ個別に接続し、通信を行う必要がなくなった中継装置とは個別に切断を行うことができるので、無駄なリソースを消費することなく、効率的な通信システムを構築できる。
{第2の実施の形態}
次に、本発明の第2の実施の形態について説明する。第1の実施の形態においては、ネットワーク管理者の指示により中継装置間を動的に接続した。第2の実施の形態においては、通信装置からの指定によって中継装置間の接続が行われる。具体的には、第1の実施の形態においては、通信装置間で発生する通信の状態を想定してネットワーク管理者が中継装置同士を接続したり切断したりする操作を行った。これに対して第2の実施の形態においては、通信装置から発生する通信処理に対応して、より動的に中継装置間の接続、切断制御を行うものである。以下の説明において、第1の実施の形態と同様の説明は省略する。
図6は、第2の実施の形態における通信システムの構成図である。図1のシステム構成に加えて図6ではLAN40を追加しているが、基本的なシステム構成は第1の実施の形態と同様である。LAN40についても、通信装置41と中継装置45が接続されており、LAN40はゲートウェイ46を介してWAN30に接続されている。
中継装置15,25,45は、それぞれ中継コネクションデータベース151,251,451を備えている。表2は、中継装置15が備える中継コネクションデータベース151の登録例を示す表である。
中継コネクションデータベース151は、中継装置15が現在確立しているTCPコネクションを管理するデータベースである。「クライアント」フィールドには、中継装置との接続を要求した通信装置(以下の説明において適宜、要求元通信装置と呼ぶ。)の装置名が設定される。表におけるClientX,ClientYは、たとえば、通信装置11,21等に付与されている装置の名称である。「中継先URL」、「IPアドレス」フィールドには、中継先の中継装置のURLとIPアドレスが設定される。「コネクション番号」フィールドには、生成したTCPコネクションのポート番号が設定され、「生成時刻」フィールドには、TCPコネクションを生成したときの時刻が設定される。
本実施の形態においては、要求元通信装置からの指定により通信先の中継装置との間でTCPコネクションが確立されるが、このTCPコネクションを利用して通信を行うことができるのは、要求元通信装置のみとしている。つまり、表2でも示したように、通信装置とTCPコネクションは1対1に対応する。
中継コネクションデータベース251,451の内容についても表2で示した中継コネクションデータベース151と同様である。それぞれ中継装置25,45が現在確立しているTCPコネクションの状態が登録されている。
以上の構成の通信システムにおける通信処理の流れについて図7ないし図9を参照しながら説明する。図7は、通信装置11,12、中継装置15,25およびサーバ装置35を含めた通信システムの全体の処理の流れを示す図である。なお、以下の説明において、中継装置15,25とサーバ装置35との間の通信はSIP(Session Initiation Protocol)を利用している場合を例に説明するが、その他のプロトコルを利用してもよい。
第1の実施の形態と同様、各中継装置15,25は、初期化の際あるいは定期的にSIPの「REGISTERリクエストメッセージ」をサーバ装置35に送信し、中継装置の位置情報(IPアドレス,ポート番号等)をサーバ装置35に通知している。図7において、最初の状態では、中継装置15および中継装置25はサーバ装置35にログインしている。まず、中継装置25がサーバ装置35に対してログアウトの状態情報を通知し(ステップS401)、サーバ装置35がこれに応答する(S402)。サーバ装置35は、中継装置25のログアウト処理を実行し、中継装置データベース351において中継装置25の「状態」フィールドをログアウトに更新する。
この状態で、通信装置11が中継装置25を指定したデータの中継送信要求と状態確認要求とを中継装置15に送信する(S403)。中継装置15がサーバ装置35に対して状態情報の通知要求を行うと(S404)、サーバ装置35は応答を行い(S405)、続いて中継装置25がログアウト状態であることを通知する(S406)。中継装置15は、この通知に応答する(S407)。さらに、中継装置15は、通信装置11に対して中継装置25がログアウト状態であることを通知する(S408)。これにより、通信装置11は、中継装置25がログイン状態となるまで待機することになる。
次に、中継装置25がサーバ装置35に対してログインの状態情報を通知し(ステップS409)、サーバ装置35がこれに応答する(S410)。サーバ装置35は中継装置25のログイン処理を実行し、中継装置データベース351の「状態」フィールドをログインに更新する。さらに、サーバ装置35は、中継装置25がログイン状態となったことを中継装置15に通知する(S411)。中継装置15は、この通知に応答する(S412)。さらに、中継装置15は、通信装置11に対して中継装置25がログイン状態となったことを通知する(S413)。
待機していた通信装置11は、S413による通知を受けると、再び中継装置25を指定した中継送信要求を行う(S414)。なお、この実施の形態においては、通信装置11は中継装置25がログイン状態となったことの通知を受けるまで待機するようにしたが、このような通知を待たず、定期的に中継送信要求を中継装置15に送信する形態であってもよい。
中継装置15は、通信装置11からの中継送信要求を受けると、中継装置25に対する接続要求をサーバ装置35に送信する(S415)。この接続要求は、第1の実施の形態でも説明したように、SIPの「INVITEリクエストメッセージ」であり、TCPの接続情報が含まれている。サーバ装置35は、この接続要求を中継装置25に中継する(S416)。この要求に対して中継装置25は接続を許可する旨の応答をサーバ装置35に送信する(S417)。この応答は、第1の実施の形態でも説明したように、SIPの「200 OK レスポンスメッセージ」であり、TCPの接続情報が含まれる。サーバ装置35は、この応答を中継装置15に中継する(S418)。このようにして中継装置15と中継装置25は、TCPの接続情報を交換する。この応答を受けて、中継装置15は中継装置25に対してTCPの接続要求を送信する(S419)。これにより、中継装置15と中継装置25との間にTCPコネクションが確立される。
以上のような処理は、たとえば通信装置11から通信装置21に対する通信処理が発生したときに動的に処理される。つまり、中継装置間は固定的に接続されているのではなく、トラフィックが発生したことをトリガとして接続が行われるのである。ただし、相手の中継装置からの接続要求に準備するために、ネットワーク管理者は、ステップS409で示したように、ネットワーク内にある中継装置をサーバ装置35にログインさせて準備しておく必要はある。
本発明においては、通信装置11からの指示を受けて中継装置15がサーバ装置35を介してSIPのINVITEリクエストを送信することで、中継用のTCPコネクション(メディアセッション)を確立する。つまり、通信装置からの接続要求が発生した時点で、呼制御プロトコルを利用してメディアセッションとしての中継路を生成するため、動的に中継用の通信路を確立できるのである。
このようにして中継装置15と中継装置25との間でTCPのコネクションが確立されると、中継装置15と中継装置25はこのTCPコネクションを保持する。そして、通信装置11が、通信装置21,22等に対するデータを送信すると(S421)、中継装置15が中継装置25にデータを中継する(S422)。中継装置25は中継されたデータをさらに通信装置21,22等に中継するのである。通信装置21,22等から送信されたデータも同様にして、中継装置25を経由して中継装置15に中継され(S423)、さらに、中継装置15を経由して通信装置11に中継される(S424)。
通信装置11は、中継装置25を利用した中継送信が終了すると、切断指示を中継装置15に送信する(S425)。中継装置15は、中継装置25に対する切断要求をサーバ装置35に送信する(S426)。サーバ装置35は、この要求を中継装置25に中継する(S427)。中継装置25からの応答はサーバ装置35に送信され(S428)、中継装置15に中継される(S429)。これにより、中継装置15と中継装置25との間のTCPコネクションは切断され、中継装置15は通信装置11に切断されたこを通知する(S430)。
このような状態で、別の通信装置12が再び中継装置25を指定した中継送信要求を行うと(S431)、中継装置15からサーバ装置35に接続要求が送信される(S432)。この時点では中継装置25がログアウト状態となっていれば、サーバ装置35よりログアウト状態が通知され(S433)、通信装置12に相手の中継装置25がログアウト状態であることが通知される。通信装置12では、上記の通信装置11の処理と同様、中継装置25がログイン状態となったところで再び中継装置25への中継送信要求を行う。これにより、中継装置15と中継装置25との間でTCPコネクションが確立される。
図8は、図7で説明した処理において中継装置15の処理に着目したフローチャートである。まず、中継装置15は、通信装置11,12等から中継指示が発生しているかどうかを確認し(ステップS501)、発生している場合には、状態確認指示が発生しているかどうかを確認する(S502)。状態確認指示が発生している場合には、中継先の中継装置がログイン中であるかどうかのチェックを行う(S503)。中継先の中継装置がログアウトしていることが判明すると(S503でNO)、ログイン通知を受信するまで待機する(S504)。
中継先の中継装置がログイン状態となったことの通知をサーバ装置35から受信すると、要求元通信装置に対して中継先がログインとなったことを通知する(S505)。そして、再び、通信装置11,12等から中継指示を受けるまで待機する(S506)。中継指示を受けるとS508に移行する。また、S503において、中継先の中継装置がログイン中であることが判明すると即座にS508に移行する。また、通信装置からの要求に状態監視指示が含まれていない場合(S502でNO)には、中継先がログイン中であれば(S507でYES)、S508に移行し、中継先がログイン中でなければ、S502に戻り繰り返し処理を行う。つまり、要求元通信端末から状態監視指示を受信している場合には、中継先の中継装置がログインするまで監視して、ログイン状態の通知を受けたところで、要求元通信装置にもその情報を通知するのである。
中継装置15は、次にTCP接続情報を生成し(S508)、接続要求を送信する(S509)。そして、中継装置25からの応答を待ち(S510)、応答がなければ要求元通信装置へエラー通知を行い(S511)、S501に戻り処理を繰り返す。応答を受信すると応答中のTCP接続情報を解析する(S512)。つまり、中継装置25から送信された応答に含まれるポート番号情報などを取得する。そして、中継装置25に対してTCP接続を行う(S513)。要求元通信装置へは中継先との接続が完了したことを通知する(S514)。そして、中継コネクションデータベース151に新たに生成したTCPコネクションの情報を登録する(S515)。
図9のフローチャートに移る。TCPコネクションが確立され保持している状態で、通信装置11等から中継データが送信されると(S516でYES)、通信装置21等にデータを中継送信する(S517)。通信装置11等に対する中継データを受信した場合には(S518でYES)、中継先の通信装置11等へデータを中継送信する(S519)。中継装置25から切断要求を受信した場合には(S520でYES)、応答送信を行い(S521)、TCPコネクションを切断する(S522)。要求元通信装置により切断要求が行われた場合には(S523でYES)、中継先の中継装置25に対して切断要求を送信し(S524)、応答を受信すれば(S525でYES)、TCPコネクションを切断する(S526)。そして、要求元通信装置に対して中継先との接続が切断されたこを通知し(S527)、中継コネクションデータベース151に登録されていたTCPコネクションの情報を削除する(S528)。
このように第2の実施の形態によれば、通信装置からの中継指示が発生すると、動的に中継先の中継装置との間でTCPコネクションが確立され、プライベートなネットワーク間の通信が可能となる。従来の固定的に設定されるVPNなどとは異なり、通信の要求が発生した場合に、その通信に必要なコネクションを確立するので、リソースを効率的に利用することが可能である。
また、第2の実施の形態においては、ある通信装置からの要求に応じて生成された通信コネクションについては、要求元通信装置のみが利用できるようにしている。たとえば、通信装置11から通信装置21に対して通信の要求が発生し、この要求に応じて中継装置15と中継装置25との間にTCPコネクションが確立されると、このTCPコネクションは、通信装置11と通信装置21との間の通信にのみ利用されるのである。言い換えると、中継装置15と中継装置25は、このTCPコネクションには、通信装置11と通信装置21との間で送受信されるデータだけを中継するのである。したがって、通信装置から発生した要求によって生成されたコネクションは、その通信装置が専有することができる。
図6で示した例であれば、通信装置11の要求により中継装置15と中継装置25が接続されている状態で、さらに、通信装置12の要求により中継装置15と中継装置45が接続されたとする。この場合には、個別のデータ中継コネクションが生成されることを図5を用いて説明した。したがって、通信装置11と通信装置12は、それぞれ別のTCPコネクションを利用して中継送信を行う。これに対して、通信装置11が中継装置25を指定した中継送信を行っている状態で、通信装置12も同じ中継装置25を指定した中継指示を行った場合、この場合にも、既に生成されているTCPコネクションは通信装置11により専有されているので、別の通信コネクションを形成するのである。
{第3の実施の形態}
次に、本発明の第3の実施の形態について説明する。第3の実施の形態においても、第2の実施の形態と同様、通信装置からの要求に応じて中継装置間の接続が行われる。ただし、第3の実施の形態においては、既に中継装置間のコネクションが形成されている場合には、他の通信装置もそのコネクションを共用する点が第2の実施の形態と異なる。以下、第2の実施の形態と異なる点を主に説明する。
表3は、第3の実施の形態において、中継装置15が備える中継コネクションデータベース151の登録例を示す表である。表に示すように、1つのTCPコネクションに対して複数のクライアント(通信装置)が対応付けられている。この表の例であれば、2つの通信装置(ClientX,ClientY)から中継送信要求が発生し、いずれの通信装置も同じ中継装置(Relayserver1@sample.net)を指定しているため、コネクション番号49583のTCPコネクションを共用しているのである。
中継装置25,45が備える中継コネクションデータベース251,451の内容についても表3で示した中継コネクションデータベース151と同様である。それぞれ中継装置25,45が現在確立しているTCPコネクションの状態が登録されている。
以上の構成の通信システムにおける通信処理の流れについて図10ないし図12を参照しながら説明する。図10は、通信装置11,12、中継装置15,25およびサーバ装置35を含めた通信システムの全体の処理の流れを示す図である。なお、以下の説明において、中継装置15,25とサーバ装置35との間の通信はSIP(Session Initiation Protocol)を利用している場合を例に説明するが、その他のプロトコルを利用してもよい。
図10において、ステップS701からステップS724までの処理は、図7におけるステップS401からステップS424にそれぞれ対応しており、同様の処理であるので、説明を省略する。つまり、通信装置11から中継装置25を指定した中継送信要求が発生し、中継装置15と中継装置25との間でTCPコネクションが確立される。そして、通信装置11と通信装置21等との間でデータの送受信が行われるのである。
このような状態でさらに、別の通信装置12が再び中継装置25を指定した中継送信要求を行う(S725)。中継装置15は、現在中継装置25との間でTCPコネクションが確立されているので、通信装置12にデータの中継送信がOKであるとの通知を行う(S726)。これにより、通信装置12からデータが送信されると(S727)、中継装置15は、既に確立されていたTCPコネクションを利用して、通信装置12から送信されたデータを中継装置25に中継するのである(S728)。中継装置25も、通信装置21等から通信装置12に対して送信されたデータを、既に確立されていたTCPコネクションを利用して中継装置15に中継するのである(S729)。中継装置15は、さらに受信データを通信端末12に送信する(S730)。
このように、第3の実施の形態においては、既に中継装置間にTCPコネクションが確立されており、さらに発生した中継送信要求に、そのTCPコネクションが利用できる場合には、新たなTCPコネクションを確立しない。複数の通信端末で同じTCPコネクションを共用させるのである。これにより、TCPコネクションの確立に要する負荷を軽減し、異なるネットワーク間での通信を高速化させることが可能である。また、中継装置のリソースを節約することが可能である。たとえば、LAN10に接続された多数の通信端末とLAN20に接続された多数の通信端末がインターネットを経由して通信する場合などには、処理の高速化とリソースの節約が可能であり、有効である。また、1つの通信装置から中継送信するデータ量が少ない場合などにも有効である。
通信装置11および通信装置12が上記のようにTCPコネクションを共用してデータ通信を行っている状態で、通信装置11が、中継装置15に切断指示を送る(S731)。中継装置15は、通信装置12が同じTCPコネクションを利用しているので、このS731の指示に対しては特に処理を行わず、応答だけを行う(S732)。
その後、通信装置12は、中継装置25を利用した中継送信が終了すると、切断指示を中継装置15に送信する(S733)。中継装置15は、既に通信装置11からも切断指示を受けており、共用していたTCPコネクションが不要となったと判断できるので、中継装置25に対する切断要求をサーバ装置35に送信する(S734)。サーバ装置35は、この要求を中継装置25に中継する(S735)。中継装置25からの応答はサーバ装置35に送信され(S736)、中継装置15に中継される(S737)。これにより、中継装置15と中継装置25との間のTCPコネクションは切断され、中継装置15は通信装置11に切断されたこを通知する(S738)。
図11は、図10で説明した処理において中継装置15の処理に着目したフローチャートである。まず、中継装置15は、通信装置11,12等から中継指示が発生しているかどうかを確認する(ステップS801)。中継指示が発生している場合には、その中継先の中継装置との間で既にTCPコネクションが確立されているかどうかを確認する(S802)。つまり、既に他の通信装置によって同じ中継装置が指定され、その中継装置との間でコネクションを張って通信を行っているかどうかを確認する。
既に指示された中継先と接続されている場合(S802でYES)、要求元通信装置へデータ中継可能であることを通知する(S815)。そして、中継コネクションデータベース151の情報を更新する(S816)。つまり、当該TCPコネクションについては既にデータベースに登録されているので、クライアント(通信装置)の追加を行うのである。表3で示した例であれば、たとえば最初にClientXとコネクション番号49583のTCPコネクションが対応付けられて登録されていたとすると、このレコードのクライアントフィールドにClientYを追加する処理を行うのである。
S802において指定された中継先とは未だ接続が行われていない場合には、S803〜S814の処理を実行する。この処理は、図8におけるS502〜S513の処理に対応しており、同様の処理であるので説明を省略する。
図12のフローチャートに移る。TCPコネクションが確立され保持している状態で、通信装置11等から中継データが送信されると(S817でYES)、通信装置21等にデータを中継送信する(S818)。通信装置11等に対する中継データを受信した場合には(S819でYES)、中継先の通信装置11等へデータを中継送信する(S820)。中継先の中継装置25から切断要求を受信した場合には(S821でYES)、応答送信を行い(S822)、TCPコネクションを切断する(S823)。このように、中継先の中継装置25からTCPコネクションを切断された場合には、中継送信を行っている通信装置に中継先との接続が切断されたことを通知する(S824)。切断されたTCPコネクションが複数の通信装置に共用されていた場合には、全ての通信装置に対して切断を通知する(S824,S825)。
要求元通信装置により切断要求が行われた場合には(S826)、中継装置15は、切断指示されているTCPコネクションが他の通信装置と共用されているかどうかをチェックする(S827)。他の通信装置と共用している場合には、指示されたTCPコネクションを切断することなく、指示を出した通信装置へは、形式的な切断通知を行う(S828)。そして、中継コネクションデータベース151の情報を更新する(S829)。つまり、共用していたTCPコネクションの情報から切断指示を要求したクライアント(通信装置)の情報を削除するのである。このようにして、中継装置15は、常に現在確立しているTCPコネクションと、そのTCPコネクションを共用している通信装置を管理しているのである。
切断指示されているTCPコネクションが他の通信装置と共用されていない場合には(S827でNO)、中継装置25に対して切断要求を送信し(S830)、応答を受信すれば(S831でYES)、TCPコネクションを切断する(S832)。そして、要求元通信装置に対して中継先との接続が切断されたこを通知し(S833)、中継コネクションデータベース151に登録されていたTCPコネクションの情報を削除する(S834)。
このように第3の実施の形態によれば、通信装置からの中継指示が発生すると、動的に中継先の中継装置との間でTCPコネクションが確立され、プライベートなネットワーク間の通信が可能となる。さらに、中継指示が発生した場合に、その中継先との間で既にTCPコネクションが確立されていれば、そのコネクションを共用する。これにより、処理の高速化とリソースの有効利用が実現するのである。