{中継通信システムの全体構成}
以下、図面を参照しつつ、本発明の実施の形態について説明する。図1は、中継通信システムの全体構成を示す図である。中継通信システムは、LAN1、2、WAN3から構成される。LAN1、2は、遠隔に構築される小規模なネットワークである。WAN3は、インターネットなどの大規模なネットワークである。
LAN1は、クライアント端末11、中継サーバ12から構成される。LAN2は、クライアント端末21、中継サーバ22から構成される。WAN3は、SIP(Session Initiation Protocol)サーバ31から構成される。
クライアント端末11、21は、パーソナルコンピュータなどである。中継サーバ12、22は、クライアント端末11、21の相互間の通信を中継する。SIPサーバ31は、中継サーバ12、22の相互間の通信を中継する。
本実施の形態においては、中継サーバ12、22の相互間の通信プロトコルとして、SIPを利用するが、SIP以外のプロトコルを利用してもよい。SIP以外のプロトコルを利用するときには、中継サーバ12、22の相互間の通信が直接に実行されればよい。
クライアント端末11および中継サーバ12の相互間、中継サーバ12および中継サーバ22の相互間、中継サーバ22およびクライアント端末21の相互間、の各区間において、複数の呼制御が実行されることがあり、複数のメディアセッションが確立されることがある。しかし、各区間において、各呼制御および各メディアセッションは、各呼制御の識別情報に基づいて対応付けられる。そこで、各区間において、複数の呼制御が交錯することはなく、複数のメディアセッションが交錯することはない。
{中継サーバの構成要素}
図2は、中継サーバ12(22)の構成要素を示す図である。中継サーバ12(22)は、インターフェース部121(221)、制御部122(222)、データベース格納部123(223)から構成される。括弧が付されていない符号は、中継サーバ12における符号を示す。括弧が付されている符号は、中継サーバ22における符号を示す。
インターフェース部121(221)は、プライベートIPアドレスを利用して、LAN1(2)に接続されるクライアント端末11(21)に対して通信を実行する。インターフェース部121(221)は、グローバルIPアドレスを利用して、WAN3に接続されるSIPサーバ31に対して通信を実行する。
制御部122(222)は、クライアント端末11、クライアント端末21の相互間の通信を中継するための制御を実行する。制御部122(222)は、データベース格納部123(223)に格納される以下の情報を作成または更新する。
データベース格納部123(223)は、中継グループ情報格納部124(224)、中継サーバ情報格納部125(225)、クライアント端末情報格納部126(226)から構成される。以上の情報の具体例について以下に説明する。
{中継グループ情報の具体例}
図3は、中継グループ情報の具体例として、中継グループ情報40を示す図である。中継グループ情報は、中継通信システムを構成する中継サーバの概要を示す情報である。
中継グループ情報40は、上位情報401、下位情報402から構成される。
上位情報401は、上位にある中継グループについての情報である。「id」は、中継グループの識別情報を示す。「lastmod」は、中継グループ情報の最新更新時刻を示す。「name」は、中継グループの名称を示す。
下位情報402は、下位にある中継サーバについての情報である。「id」は、中継サーバの識別情報を示す。
中継グループ情報40は、中継グループ情報格納部124、224において格納される。すなわち、中継グループ情報40は、中継サーバ12、22により共有される。さらに、中継グループ情報40は、中継サーバ12、22およびクライアント端末11、21により共有される。
{中継サーバ情報の具体例}
図4は、中継サーバ情報の具体例として、中継サーバ情報50を示す図である。中継サーバ情報は、中継通信システムを構成する中継サーバの詳細を示す情報であり、中継通信システムを構成するクライアント端末の概要を示す情報である。
中継サーバ情報50は、上位情報501−1、501−2、下位情報502−1、502−2から構成される。上位情報501−1、501−2は、各々、中継サーバ起動情報503−1、503−2を含む。下位情報502−1、502−2は、各々、クライアント端末が中継サーバにログインしているかどうかを示すクライアント端末サイト情報504−1、504−2を含む。
上位情報501−1、501−2は、上位にある中継サーバについての情報である。「id」は、中継サーバの識別情報を示す。「name」は、中継サーバの名称を示す。中継サーバ起動情報503−1、503−2は、中継サーバが起動しているかどうかについての情報である。
下位情報502−1、502−2は、下位にあるクライアント端末についての情報である。「div」は、クライアント端末の部署名を示す。「group」は、クライアント端末が所属する中継グループの識別情報を示す。「id」は、クライアント端末の識別情報を示す。「name」は、クライアント端末の名称を示す。クライアント端末サイト情報504−1、504−2は、クライアント端末がログオンしている中継サーバの識別情報を示す。
中継サーバ情報50は、中継サーバ情報格納部125、225において格納される。すなわち、中継サーバ情報50は、中継サーバ12、22により共有される。さらに、中継サーバ情報50は、中継サーバ12、22およびクライアント端末11、21により共有される。
中継サーバが起動しているときには、中継サーバ起動情報503−1、503−2が「active」になっている。中継サーバが起動していないときには、中継サーバ起動情報503−1、503−2が空欄になっている。これにより、中継サーバが起動しているかどうかについての情報が、中継通信システム全体として共有される。
クライアント端末が中継サーバにログオンしているときには、クライアント端末サイト情報504−1、504−2が記載されている。クライアント端末が中継サーバにログオンしていないときには、クライアント端末サイト情報504−1、504−2が記載されていない。これにより、クライアント端末が中継サーバにログオンしているかどうかについての情報が、中継通信システム全体として共有される。
{クライアント端末情報の具体例}
図5は、クライアント端末情報の具体例として、クライアント端末情報60、70を示す図である。クライアント端末情報は、中継通信システムを構成するクライアント端末の詳細を示す情報である。
クライアント端末情報60、70は、各々、クライアント端末アドレス情報601、701、クライアント端末有効期限情報602、702、クライアント端末ポート情報603、703を含む。
「div」は、クライアント端末の部署名を示す。「group」は、クライアント端末が所属する中継グループの識別情報を示す。クライアント端末アドレス情報601、701は、クライアント端末のIPアドレスを示す。クライアント端末有効期限情報602、702は、クライアント端末のレジスト有効期限を示す。「id」は、クライアント端末の識別情報を示す。「name」は、クライアント端末の名称を示す。「pass」は、クライアント端末のパスワードを示す。クライアント端末ポート情報603、703は、クライアント端末のポート番号を示す。
クライアント端末情報60は、クライアント端末情報格納部126のみにおいて格納されて、クライアント端末情報70は、クライアント端末情報格納部226のみにおいて格納される。すなわち、クライアント端末情報60は、中継サーバ12のみにより保有されて、クライアント端末情報70は、中継サーバ22のみにより保有される。
{情報共有の流れ}
図6は、中継グループ情報、中継サーバ情報が共有される処理の流れを示す図である。中継サーバ12、22が、中継通信システムに参加する。クライアント端末11のユーザが、中継サーバ12にログオンして、クライアント端末21のユーザが、中継サーバ22にログオンする。
[ステップS1からステップS2までの処理の流れ]
中継サーバ12の管理者および中継サーバ22の管理者は、LAN1、2の相互間において中継通信システムのグループを構築する契約を結ぶ。
中継サーバ12の管理者は、クライアント端末11のユーザに対して、アカウントを作成する(ステップS1:CreateAccount())。制御部122は、中継サーバ情報51−1を作成して、中継サーバ情報格納部125に格納する。
中継サーバ22の管理者は、クライアント端末21のユーザに対して、アカウントを作成する(ステップS2:CreateAccount())。制御部222は、中継サーバ情報51−2を作成して、中継サーバ情報格納部225に格納する。
以上の処理の流れにより、中継サーバ12は、中継サーバ情報51−1を保有する。中継サーバ22は、中継サーバ情報51−2を保有する。
図7の1番目の枠内は、中継サーバ情報51−1を示す。上位情報511−1は、上位にある中継サーバ12についての情報である。「id」として、「relay−server−1@abc.net」が設定されている。「name」として、「RELAY SERVER 1」が設定されている。中継サーバ起動情報513−1として、「active」が設定されている。すなわち、中継サーバ12は、起動している。
下位情報512−1は、下位にあるクライアント端末11についての情報である。「div」として、「software」が設定されている。「group」として、「20070402133100@relay−server−1.abc.net」が設定されている。「id」として、「client−1@relay−server−1.abc.net」が設定されている。「name」として、「CLIENT 1」が設定されている。クライアント端末サイト情報514−1は、空欄になっている。すなわち、クライアント端末11のユーザは、中継サーバ12にログオンしていない。
図7の2番目の枠内は、中継サーバ情報51−2を示す。上位情報511−2は、上位にある中継サーバ22についての情報である。「id」として、「relay−server−2@abc.net」が設定されている。「name」として、「RELAY SERVER 2」が設定されている。中継サーバ起動情報513−2として、「active」が設定されている。すなわち、中継サーバ22は、起動している。
下位情報512−2は、下位にあるクライアント端末21についての情報である。「div」として、「software」が設定されている。「group」として、「20070402133100@relay−server−1.abc.net」が設定されている。「id」として、「client−2@relay−server−2.abc.net」が設定されている。「name」として、「CLIENT 2」が設定されている。クライアント端末サイト情報514−2は、空欄になっている。すなわち、クライアント端末21のユーザは、中継サーバ22にログオンしていない。
[ステップS3からステップS4までの処理の流れ]
以下の説明においては、中継サーバ12、22の相互間の通信は、SIPサーバ31により中継される。中継サーバ12(22)が中継サーバ22(12)に対してSIPサーバ31を介して通信を実行する方法について説明する。
中継サーバ12(22)は、SIPサーバ31に対して、中継サーバ22(12)のアカウントが通信先として指定されたデータなどを送信する。SIPサーバ31は、中継サーバ12、22のアカウントを、各々、中継サーバ12、22のグローバルIPアドレスに対応付けている。SIPサーバ31は、中継サーバ22(12)のアカウントに基づいて、中継サーバ22(12)のグローバルIPアドレスを取得する。SIPサーバ31は、中継サーバ22(12)に対して、中継サーバ22(12)のグローバルIPアドレスが通信先として指定されたデータなどを送信する。
中継サーバ12は、中継サーバ22に対して、中継通信システムのグループ構築を要求する(ステップS3:SetGroup())。制御部122は、中継グループ情報42を作成して、中継グループ情報格納部124に格納する。制御部222は、中継グループ情報42を作成して、中継グループ情報格納部224に格納する。
中継サーバ12は、中継サーバ22に対して、中継サーバ情報の交換を要求する(ステップS4:exchange(db))。中継サーバ12は、中継サーバ22に対して、中継サーバ情報51−1の複製を送信する。中継サーバ22は、中継サーバ12に対して、中継サーバ情報51−2の複製を送信する。
制御部122は、中継サーバ情報51−2の複製、中継サーバ情報51−1を合成することにより、中継サーバ情報52を作成して、中継サーバ情報格納部125に格納する。制御部222は、中継サーバ情報51−1の複製、中継サーバ情報51−2を合成することにより、中継サーバ情報52を作成して、中継サーバ情報格納部225に格納する。
制御部122は、クライアント端末情報62を作成して、クライアント端末情報格納部126に格納する。制御部222は、クライアント端末情報72を作成して、クライアント端末情報格納部226に格納する。クライアント端末情報62の作成処理および格納処理は、ステップS1において実行され、クライアント端末情報72の作成処理および格納処理は、ステップS2において実行される。
以上の処理の流れにより、中継サーバ12は、中継グループ情報42、中継サーバ情報52、クライアント端末情報62を保有する。中継サーバ22は、中継グループ情報42、中継サーバ情報52、クライアント端末情報72を保有する。中継グループ情報42、中継サーバ情報52は、中継サーバ12、22により共有されている。
図8の1番目の枠内は、中継グループ情報42を示す。上位情報421は、上位にある中継グループについての情報である。「id」として、「20070402133100@relay−server−1.abc.net」が設定されている。「lastmod」として、「20070402133100」が設定されている。「name」として、「GROUP 1」が設定されている。
下位情報422は、下位にある中継サーバ12、22についての情報である。「id」として、「relay−server−1@abc.net」、「relay−server−2@abc.net」が設定されている。
図8の2番目の枠内は、中継サーバ情報52を示す。上位情報521−1、521−2は、各々、図7の上位情報511−1、511−2と同様である。下位情報522−1、522−2は、各々、図7の下位情報512−1、512−2と同様である。
図8の3番目の枠内は、クライアント端末情報62を示す。「div」として、「software」が設定されている。「group」として、「20070402133100@relay−server−1.abc.net」が設定されている。「id」として、「client−1@relay−server−1.abc.net」が設定されている。「name」として、「CLIENT 1」が設定されている。「pass」として、「client−1」が設定されている。
クライアント端末アドレス情報621は、空欄になっている。クライアント端末有効期限情報622として、「0」が設定されている。クライアント端末ポート情報623は、空欄になっている。すなわち、クライアント端末11のユーザは、中継サーバ12にログオンしていない。
図8の4番目の枠内は、クライアント端末情報72を示す。「div」として、「software」が設定されている。「group」として、「20070402133100@relay−server−1.abc.net」が設定されている。「id」として、「client−2@relay−server−2.abc.net」が設定されている。「name」として、「CLIENT 2」が設定されている。「pass」として、「client−2」が設定されている。
クライアント端末アドレス情報721は、空欄になっている。クライアント端末有効期限情報722として、「0」が設定されている。クライアント端末ポート情報723は、空欄になっている。すなわち、クライアント端末21のユーザは、中継サーバ22にログオンしていない。
[ステップS5からステップS7までの処理の流れ]
クライアント端末11のユーザは、クライアント端末11の識別情報として、「client−1@relay−server−1.abc.net」を入力して、クライアント端末11のパスワードとして、「client−1」を入力する。クライアント端末11のユーザは、中継サーバ12にログオンする(ステップS5:REGISTER(ID,PASS))。制御部122は、クライアント端末情報62を参照することにより、クライアント端末11のユーザの認証を実行する。
制御部122は、クライアント端末11のユーザのログオンを受け付ける。制御部122は、中継サーバ情報52を更新することにより、中継サーバ情報53を作成して、中継サーバ情報格納部125に格納する。制御部122は、クライアント端末情報62を更新することにより、クライアント端末情報63を作成して、クライアント端末情報格納部126に格納する。制御部122は、中継グループ情報42を更新することはない。
クライアント端末11は、中継サーバ12に対して、中継グループ情報および中継サーバ情報の提供を要求する(ステップS6:get())。中継サーバ12は、クライアント端末11に対して、中継グループ情報42および中継サーバ情報53の複製を送信する。クライアント端末11は、中継グループ情報42、中継サーバ情報53を格納する。
制御部122は、中継グループ情報42、中継サーバ情報53を参照することにより、中継サーバ情報52が中継サーバ情報53に更新されたことを通知すべき中継サーバを決定する。制御部122は、中継サーバ情報53の中継サーバ起動情報533−2が「active」である中継サーバ22を、通知すべき中継サーバとして決定する。
中継サーバ12は、中継サーバ22に対して、中継サーバ情報52が中継サーバ情報53に更新されたことを通知する(ステップ7:NOTIFY())。制御部222は、中継サーバ情報52を更新することにより、中継サーバ情報53を作成して、中継サーバ情報格納部225に格納する。
制御部222は、クライアント端末情報72を参照することにより、中継サーバ情報52が中継サーバ情報53に更新されたことを通知すべきクライアント端末を決定する。制御部222は、クライアント端末情報72のクライアント端末アドレス情報721が空欄であり、クライアント端末情報72のクライアント端末ポート情報723が空欄であるクライアント端末21を、通知すべきクライアント端末として決定することはない。
以上の処理の流れにより、中継サーバ12は、中継グループ情報42、中継サーバ情報53、クライアント端末情報63を保有する。中継サーバ22は、中継グループ情報42、中継サーバ情報53、クライアント端末情報72を保有する。クライアント端末11は、中継グループ情報42、中継サーバ情報53を保有する。中継グループ情報42、中継サーバ情報53は、中継サーバ12、22、クライアント端末11により共有されている。
図9の1番目の枠内は、中継グループ情報42を示す。ステップS5からステップS7までの処理の流れにおいては、新たな中継サーバが中継通信システムに参加していないため、中継グループ情報42が更新されることはない。
図9の2番目の枠内は、中継サーバ情報53を示す。更新部分を下線部により示す。クライアント端末11のユーザは、中継サーバ12にログオンしている。そのため、下位情報532−1のクライアント端末サイト情報534−1は、「relay−server−1@abc.net」に確定されている。
図9の3番目の枠内は、クライアント端末情報63を示す。更新部分を下線部により示す。クライアント端末11のユーザは、中継サーバ12にログオンしている。そのため、クライアント端末アドレス情報631は、「192.168.10.2」に確定されている。また、クライアント端末有効期限情報632は、「1213935960484」に確定されている。さらに、クライアント端末ポート情報633は、「5070」に確定されている。
図9の4番目の枠内は、クライアント端末情報72を示す。ステップS5からステップS7までの処理の流れにおいては、クライアント端末21のユーザが中継サーバ22にログオンしていないため、クライアント端末情報72が更新されることはない。
[ステップS8からステップS11までの処理の流れ]
クライアント端末21のユーザは、クライアント端末21の識別情報として、「client−2@relay−server−2.abc.net」を入力して、クライアント端末21のパスワードとして、「client−2」を入力する。クライアント端末21のユーザは、中継サーバ22にログオンする(ステップS8:REGISTER(ID,PASS))。制御部222は、クライアント端末情報72を参照することにより、クライアント端末21のユーザの認証を実行する。
制御部222は、クライアント端末21のユーザのログオンを受け付ける。制御部222は、中継サーバ情報53を更新することにより、中継サーバ情報54を作成して、中継サーバ情報格納部225に格納する。制御部222は、クライアント端末情報72を更新することにより、クライアント端末情報74を作成して、クライアント端末情報格納部226に格納する。制御部222は、中継グループ情報42を更新することはない。
クライアント端末21は、中継サーバ22に対して、中継グループ情報および中継サーバ情報の提供を要求する(ステップS9:get())。中継サーバ22は、クライアント端末21に対して、中継グループ情報42および中継サーバ情報54の複製を送信する。クライアント端末21は、中継グループ情報42、中継サーバ情報54を格納する。
制御部222は、中継グループ情報42、中継サーバ情報54を参照することにより、中継サーバ情報53が中継サーバ情報54に更新されたことを通知すべき中継サーバを決定する。制御部222は、中継サーバ情報54の中継サーバ起動情報543−1が「active」である中継サーバ12を、通知すべき中継サーバとして決定する。
中継サーバ22は、中継サーバ12に対して、中継サーバ情報53が中継サーバ情報54に更新されたことを通知する(ステップ10:NOTIFY())。制御部122は、中継サーバ情報53を更新することにより、中継サーバ情報54を作成して、中継サーバ情報格納部125に格納する。
制御部122は、クライアント端末情報63を参照することにより、中継サーバ情報53が中継サーバ情報54に更新されたことを通知すべきクライアント端末を決定する。制御部122は、クライアント端末情報63のクライアント端末アドレス情報631が確定されていて、クライアント端末情報63のクライアント端末ポート情報633が確定されているクライアント端末11を、通知すべきクライアント端末として決定する。
中継サーバ12は、クライアント端末11に対して、中継サーバ情報53が中継サーバ情報54に更新されたことを通知する(ステップ11:NOTIFY())。クライアント端末11は、中継サーバ情報53を更新することにより、中継サーバ情報54を作成して、中継サーバ情報54を格納する。
以上の処理の流れにより、中継サーバ12は、中継グループ情報42、中継サーバ情報54、クライアント端末情報63を保有する。中継サーバ22は、中継グループ情報42、中継サーバ情報54、クライアント端末情報74を保有する。クライアント端末11は、中継グループ情報42、中継サーバ情報54を保有する。クライアント端末21は、中継グループ情報42、中継サーバ情報54を保有する。中継グループ情報42、中継サーバ情報54は、中継サーバ12、22、クライアント端末11、21により共有されている。
図10の1番目の枠内は、中継グループ情報42を示す。ステップS8からステップS11までの処理の流れにおいては、新たな中継サーバが中継通信システムに参加していないため、中継グループ情報42が更新されることはない。
図10の2番目の枠内は、中継サーバ情報54を示す。更新部分を下線部により示す。クライアント端末21のユーザは、中継サーバ22にログオンしている。そのため、下位情報542−2のクライアント端末サイト情報544−2は、「relay−server−2@abc.net」に確定されている。
図10の3番目の枠内は、クライアント端末情報63を示す。ステップS8からステップS11までの処理の流れにおいては、クライアント端末11のユーザが中継サーバ12からログオフしていないため、クライアント端末情報63が更新されることはない。
図10の4番目の枠内は、クライアント端末情報74を示す。更新部分を下線部により示す。クライアント端末21のユーザは、中継サーバ22にログオンしている。そのため、クライアント端末アドレス情報741は、「192.168.1.10」に確定されている。また、クライアント端末有効期限情報742は、「1213935978484」に確定されている。さらに、クライアント端末ポート情報743は、「5070」に確定されている。
{情報共有のまとめ}
中継通信システムにおいて、LANおよびクライアント端末の増減状態および接続状態が変化することがある。そこで、一の中継サーバは、状態変化を認識したときには、中継グループ情報、中継サーバ情報、クライアント端末情報を直ちに更新する。
そして、一の中継サーバは、中継グループ情報および中継サーバ情報に記載されている他の中継サーバに、中継グループ情報および中継サーバ情報が更新されたことを直ちに通知する。さらに、一の中継サーバは、クライアント端末情報に記載されているクライアント端末に、中継グループ情報および中継サーバ情報が更新されたことを直ちに通知する。
しかし、一の中継サーバは、他の中継サーバが中継グループ情報および中継サーバ情報に記載されているとしても、他の中継サーバが未接続状態にあると判断したときには、他の中継サーバに直ちに通知することはない。さらに、一の中継サーバは、クライアント端末がクライアント端末情報に記載されているとしても、クライアント端末が未接続状態にあると判断したときには、クライアント端末に直ちに通知することはない。
これにより、LANおよびクライアント端末の増減状態および接続状態についての情報は、中継通信システム全体としてリアルタイムに共有される。
{データ送受信の流れ}
図11から図13までは、クライアント端末11および中継サーバ22の相互間におけるデータ送受信の流れを示す図である。図14から図16までは、クライアント端末11およびクライアント端末21の相互間におけるデータ送受信の流れを示す図である。
図11から図13までおよび図14から図16までにおいては、図10に示した中継グループ情報42、中継サーバ情報54、クライアント端末情報63、74が格納されている。クライアント端末11のユーザは、中継サーバ12にログオンしている。クライアント端末21のユーザは、中継サーバ22にログオンしている。
クライアント端末11および中継サーバ22の相互間におけるデータ送受信、および、クライアント端末11およびクライアント端末21の相互間におけるデータ送受信は、並列して実行される。最初に、クライアント端末11および中継サーバ22の相互間におけるデータ送受信について説明する。次に、クライアント端末11およびクライアント端末21の相互間におけるデータ送受信について説明する。最後に、並列して実行されるデータ送受信について説明する。
{クライアント端末11および中継サーバ22の相互間におけるデータ送受信}
[メディアセッション確立前の呼制御]
図11は、クライアント端末11および中継サーバ22の相互間におけるデータ送受信において、メディアセッション確立前の呼制御の流れを示す図である。クライアント端末11のユーザは、クライアント端末11が所属する中継グループを確認する。具体的には、クライアント端末11のユーザは、中継グループ情報42をクライアント端末11の表示画面に表示させる(getGroup())。中継グループ情報42には、中継サーバ12、22の識別情報「relay−server−1@abc.net」、「relay−server−2@abc.net」が設定されている。クライアント端末11のユーザは、クライアント端末11が中継サーバ12、22により構成される中継グループに所属していることを確認する。
クライアント端末11のユーザは、中継グループ情報42に対応する中継サーバ情報54を、クライアント端末11の表示画面に表示させる(getServer())。クライアント端末11のユーザは、中継サーバ情報54を参照して、中継グループを構成する中継サーバ、中継サーバの下位に位置するクライアント端末を確認する。
クライアント端末11のユーザは、中継サーバ情報54を参照して、中継サーバ22とのデータの送受信が可能であることを確認する。
クライアント端末11のユーザは、中継サーバ12について、中継サーバ情報54の中継サーバ起動情報543−1が「active」に設定されていることを確認する。すなわち、中継サーバ12が起動していることを確認する。
クライアント端末11のユーザは、中継サーバ22について、中継サーバ情報54の中継サーバ起動情報543−2が「active」に設定されていることを確認する。すなわち、中継サーバ22が起動していることを確認する。
クライアント端末11のユーザは、中継サーバ12を介して、中継サーバ22に対して、データを送信できることを確認する。クライアント端末11のユーザは、中継サーバ22に対して、データを送信することを決定する。
クライアント端末11は、クライアント端末11および中継サーバ12の相互間の通信(dialog(1))において、中継サーバ12に対して、呼制御を行なう(ステップS12:INVITE)。ここで、クライアント端末11は、dialog(1)における呼制御の識別情報として、「1234」を送信する。さらに、クライアント端末11は、メディアセッションのポート番号として、「5678」を送信する。
クライアント端末11および中継サーバ12の相互間において、後述するように複数の呼制御が実行されることがある。そこで、複数の呼制御が識別されるように、相互に異なる識別情報が複数の呼制御に対して設定される。
図11〜図13において、各端末、サーバで利用されるChannelの情報を示す。Channel情報のうち、“TS”はTransactionを、“S”はSource(送信元)を、“D”はDestination(送信先)を、MSはMediaSessionを示している。また、Destinationにおいて、relay−server−2を単にServer2と記載している。
クライアント端末11が利用するChannelには、dialog(1)のIDとして「1234」が設定されている。メディアセッションは確立されていないので、MSの欄はブランクになっている。
中継サーバ12は、dialog(1)において、クライアント端末11から、呼制御を受ける。中継サーバ12は、クライアント端末11にOKレスポンスを送信する。OKレスポンスを受信したクライアント端末11は、中継サーバ12にACKを送信する(ステップS13)。
制御部122は、中継グループ情報42の下位情報422、または、中継サーバ情報54の上位情報541−2を参照することにより、呼制御の実行先である中継サーバ22が、LAN1側になくWAN3側にあることを確認する。
中継サーバ12は、中継サーバ12および中継サーバ22の相互間の通信(dialog(2))において、中継サーバ22に対して、呼制御を行なう(ステップS14:INVITE)。ここで、中継サーバ12は、dialog(2)における呼制御の識別情報として、「4321」を送信する。さらに、中継サーバ12は、メディアセッションのポート番号として、「5678」を送信する。
中継サーバ12および中継サーバ22の相互間において、後述するように複数の呼制御が実行されることがある。そこで、複数の呼制御が識別されるように、相互に異なる識別情報が複数の呼制御に対して設定される。
しかし、クライアント端末11および中継サーバ12の相互間、および、中継サーバ12および中継サーバ22の相互間において、各々独立に呼制御が実行される。そこで、クライアント端末11および中継サーバ12の相互間、および、中継サーバ12および中継サーバ22の相互間において、相互に同一の識別情報が各々独立の呼制御に対して設定されるとしても、各々独立の呼制御は識別される。
中継サーバ12が利用するChannelには、dialog(1)のID「1234」とdialog(2)のID「4321」が設定されている。メディアセッションは確立されていないので、MSの欄はいずれもブランクになっている。
中継サーバ22は、dialog(2)において、中継サーバ12から、呼制御を受ける。中継サーバ22は、中継サーバ12にOKレスポンスを送信する。OKレスポンスを受信した中継サーバ12は、中継サーバ22にACKを送信する(ステップS15)。
dialog(1)は、クライアント端末11および中継サーバ12の相互間の通信である。dialog(2)は、中継サーバ12および中継サーバ22の相互間の通信である。中継サーバ12は、dialog(1)およびdialog(2)を関連付ける。
中継サーバ12は、dialog(1)において受信したときには、dialog(1)およびdialog(2)を関連付けたことを示す情報を作成したうえで、dialog(2)において送信する。この送受信において、dialog(1)およびdialog(2)が関連付けられたことが、「dialog(1):recv()==dialog(2):send()」により示されている。
中継サーバ12は、dialog(2)において受信したときには、dialog(1)およびdialog(2)を関連付けたことを示す情報を参照したうえで、dialog(1)において送信する。この送受信において、dialog(1)およびdialog(2)が関連付けられたことが、「dialog(1):send()==dialog(2):recv()」により示されている。
中継サーバ22が利用するChannelには、dialog(2)のID「4321」が設定されている。メディアセッションは確立されていないので、MSの欄はブランクになっている。
[メディアセッション確立]
図12は、クライアント端末11および中継サーバ22の相互間におけるデータ送受信において、メディアセッション確立の流れを示す図である。呼制御を受けた側がメディアセッション確立を行なう。呼制御を行なった側がメディアセッション確立を受ける。
呼制御を行なう側は、呼制御を受ける側に対して、呼制御の識別情報を送信する。呼制御を受けた側は、呼制御を行なった側に対して、受信した呼制御の識別情報を送信する。呼制御を行なった側は、受信した呼制御の識別情報を、送信した呼制御の識別情報と照合する。呼制御を行なった側は、呼制御を受けた側およびメディアセッション確立を行なった側が一致することを認証できる。
中継サーバ22は、中継サーバ12に対して、メディアセッション確立を要求する(ステップS16:SYN)。中継サーバ12は、中継サーバ22にSYN,ACKを返信する。中継サーバ22は中継サーバ12にACKを送信する(ステップS17)。
次に、中継サーバ22は、メディアセッションを利用して中継サーバ12に対して、呼制御の識別情報として、「4321」を送信する(ステップS18:send)。中継サーバ12は、ステップS18において受信した呼制御の識別情報を、ステップS14において送信した呼制御の識別情報と照合する。
中継サーバ12は、ステップS16においてメディアセッション確立要求を行なった側が、ステップS14において呼制御を受けた側と、中継サーバ22として一致することを認証する。すなわち、中継サーバ12は、中継サーバ22から、ステップS16において、不正なメディアセッション確立要求を受けたわけではない。中継サーバ12は、中継サーバ22に対して、OKレスポンスを送信する。
中継サーバ22が利用するChannelの情報には、dialog(2)と関連付けられたメディアセッションとしてClientSocket(1)が設定されている。中継サーバ12が利用するChannelの情報には、dialog(2)と関連付けられたメディアセッションとしてServerSocket(1)が設定されている。
続いて、中継サーバ12は、クライアント端末11に対して、メディアセッション確立を要求する(ステップS19:SYN)。クライアント端末11は、中継サーバ12にSYN,ACKを返信する。中継サーバ12はクライアント端末11にACKを送信する(ステップS20)。
次に、中継サーバ12は、メディアセッションを利用して、クライアント端末11に対して、呼制御の識別情報として、「1234」を送信する(ステップS21:send)。クライアント端末11は、ステップS21において受信した呼制御の識別情報を、ステップS12において送信した呼制御の識別情報と照合する。
クライアント端末11は、ステップS19においてメディアセッション確立要求を行なった側が、ステップS12において呼制御を受けた側と、中継サーバ12として一致することを認証する。すなわち、クライアント端末11は、中継サーバ12から、ステップS19において、不正なメディアセッション確立要求を受けたわけではない。クライアント端末11は、中継サーバ12に対して、OKレスポンスを送信する。
中継サーバ12が利用するChannelの情報には、さらに、dialog(1)と関連付けられたメディアセッションとしてClientSocket(2)が設定されている。クライアント端末11が利用するChannelの情報には、dialog(1)と関連付けられたメディアセッションとしてServerSocket(2)が設定されている。
以上の処理の流れにより、中継サーバ22と中継サーバ12との間、および中継サーバ12とクライアント端末11との間でメディアセッションが確立される。
[メディアセッション切断]
図13は、クライアント端末11および中継サーバ22の相互間におけるデータ送受信において、メディアセッション切断の流れを示す図である。
クライアント端末11は、dialog(1)において、中継サーバ12に対して、セッションの切断を要求する(ステップS22:BYE)。中継サーバ12はクライアント端末11にOKレスポンスを返す。
クライアント端末11および中継サーバ12が利用するChannelの情報からは、dialog(1)の情報が削除される。
中継サーバ12は、dialog(2)において、中継サーバ22に対して、セッションの切断を要求する(ステップS23:BYE)。中継サーバ22は中継サーバ12にOKレスポンスを返す。
中継サーバ12および中継サーバ22が利用するChannelの情報からは、dialog(2)の情報が削除される。
クライアント端末11は、中継サーバ12に対して、メディアセッション切断を要求する(ステップS24:FIN,ACK)。中継サーバ12はクライアント端末11にACKを返信し、続いてクライアント端末11に対して、メディアセッション切断を要求する(ステップS25:FIN,ACK)。
クライアント端末11および中継サーバ12が利用するChannelの情報からは、dialog(1)と関連付けられていたメディアセッションの情報が削除される。
中継サーバ12は、中継サーバ22に対して、メディアセッション切断を要求する(ステップS26:FIN,ACK)。中継サーバ22は中継サーバ12にACKを返信し、続いて中継サーバ12に対して、メディアセッション切断を要求する(ステップS27:FIN,ACK)。中継サーバ12は中継サーバ22にACKを返信する。以上の手順によりメディアセッションが切断される。
中継サーバ12および中継サーバ22が利用するChannelの情報からは、dialog(2)と関連付けられていたメディアセッションの情報が削除される。
{クライアント端末11およびクライアント端末21の相互間におけるデータ送受信}
[メディアセッション確立前の呼制御]
図14は、クライアント端末11およびクライアント端末21の相互間におけるデータ送受信において、メディアセッション確立前の呼制御の流れを示す図である。クライアント端末11のユーザは、クライアント端末11が所属する中継グループを確認する。具体的には、クライアント端末11のユーザは、中継グループ情報42をクライアント端末11の表示画面に表示させる(getGroup())。中継グループ情報42には、中継サーバ12、22の識別情報「relay−server−1@abc.net」、「relay−server−2@abc.net」が設定されている。クライアント端末11のユーザは、クライアント端末11が中継サーバ12、22により構成される中継グループに所属していることを確認する。
クライアント端末11のユーザは、中継グループ情報42に対応する中継サーバ情報54を、クライアント端末11の表示画面に表示させる(getServer())。クライアント端末11のユーザは、中継サーバ情報54を参照して、中継グループを構成する中継サーバ、中継サーバの下位に位置するクライアント端末を確認する。
クライアント端末11のユーザは、中継サーバ情報54を参照して、クライアント端末21とのデータの送受信が可能であることを確認する。
クライアント端末11のユーザは、ステップS12の準備段階と同様にして、中継サーバ12、22が起動していることを確認する。
クライアント端末11のユーザは、クライアント端末21について、中継サーバ情報54のクライアント端末サイト情報544−2が「relay−server−2@abc.net」に設定されていることを確認する。すなわち、クライアント端末21が中継サーバ22にログオンしていることを確認する。
クライアント端末11のユーザは、中継サーバ12、22を介して、クライアント端末21に対して、データを送信できることを確認する。クライアント端末11のユーザは、クライアント端末21に対して、データを送信することを決定する。
クライアント端末11は、クライアント端末11および中継サーバ12の相互間の通信(dialog(3))において、中継サーバ12に対して、呼制御を行なう(ステップS28:INVITE)。ここで、クライアント端末11は、dialog(3)における呼制御の識別情報として、「4321」を送信する。さらに、クライアント端末11は、メディアセッションのポート番号として、「5678」を送信する。
図14〜図16においても、各端末、サーバで利用されるChannelの情報を示す。クライアント端末11が利用するChannelには、dialog(3)のIDとして「4321」が設定されている。メディアセッションは確立されていないので、MSの欄はブランクになっている。
中継サーバ12は、dialog(3)において、クライアント端末11から、呼制御を受ける。中継サーバ12は、クライアント端末11にOKレスポンスを送信する。OKレスポンスを受信したクライアント端末11は、中継サーバ12にACKを送信する(ステップS29)。
クライアント端末11および中継サーバ12の相互間において、dialog(1)およびdialog(3)が実行される。しかし、dialog(1)における呼制御の識別情報は「1234」であり、dialog(3)における呼制御の識別情報は「4321」であり、各々の呼制御の識別情報は相互に異なる。そのため、dialog(1)における呼制御およびdialog(3)における呼制御は識別される。
中継サーバ12は、中継サーバ12および中継サーバ22の相互間の通信(dialog(4))において、中継サーバ22に対して、呼制御を行なう(ステップS30:INVITE)。ここで、中継サーバ12は、dialog(4)における呼制御の識別情報として、「1234」を送信する。さらに、中継サーバ12は、メディアセッションのポート番号として、「5678」を送信する。
中継サーバ12が利用するChannelには、dialog(3)のID「4321」とdialog(4)のID「1234」が設定されている。メディアセッションは確立されていないので、MSの欄はいずれもブランクになっている。
中継サーバ22は、dialog(4)において、中継サーバ12から、呼制御を受ける。中継サーバ22は、中継サーバ12にOKレスポンスを送信する。OKレスポンスを受信した中継サーバ12は、中継サーバ22にACKを送信する(ステップS31)。
中継サーバ12および中継サーバ22の相互間において、dialog(2)およびdialog(4)が実行される。しかし、dialog(2)における呼制御の識別情報は「4321」であり、dialog(4)における呼制御の識別情報は「1234」であり、各々の呼制御の識別情報は相互に異なる。そのため、dialog(2)における呼制御およびdialog(4)における呼制御は識別される。
dialog(1)およびdialog(4)における呼制御の識別情報は、相互に同一である「1234」である。しかし、dialog(1)およびdialog(4)における呼制御は、異なる区間における呼制御であるため識別される。
dialog(2)およびdialog(3)における呼制御の識別情報は、相互に同一である「4321」である。しかし、dialog(2)およびdialog(3)における呼制御は、異なる区間における呼制御であるため識別される。
中継サーバ12は、dialog(3)において受信したときには、dialog(3)およびdialog(4)を関連付けたことを示す情報を作成したうえで、dialog(4)において送信する。この送受信において、dialog(3)およびdialog(4)が関連付けられたことが、「dialog(3):recv()==dialog(4):send()」により示されている。
中継サーバ12は、dialog(4)において受信したときには、dialog(3)およびdialog(4)を関連付けたことを示す情報を参照したうえで、dialog(3)において送信する。この送受信において、dialog(3)およびdialog(4)が関連付けられたことが、「dialog(3):send()==dialog(4):recv()」により示されている。
中継サーバ22は、中継サーバ22およびクライアント端末21の相互間の通信(dialog(5))において、クライアント端末21に対して、呼制御を行なう(ステップS32:INVITE)。ここで、中継サーバ22は、dialog(5)における呼制御の識別情報として、「8765」を送信する。さらに、中継サーバ22は、メディアセッションのポート番号として、「5678」を送信する。
中継サーバ22が利用するChannelには、dialog(4)のID「1234」とdialog(5)のID「8765」が設定されている。メディアセッションは確立されていないので、MSの欄はいずれもブランクになっている。
クライアント端末21は、dialog(5)において、中継サーバ22から、呼制御を受ける。クライアント端末21は、中継サーバ22にOKレスポンスを送信する。OKレスポンスを受信した中継サーバ22は、クライアント端末21にACKを送信する(ステップS33)。
クライアント端末21が利用するChannelには、dialog(5)のID「8765」が設定されている。メディアセッションは確立されていないので、MSの欄はブランクになっている。
[メディアセッション確立]
図15は、クライアント端末11およびクライアント端末21の相互間におけるデータ送受信において、メディアセッション確立の流れを示す図である。
クライアント端末21は、中継サーバ22に対して、メディアセッション確立を要求する(ステップS34:SYN)。中継サーバ22は、クライアント端末21にSYN,ACKを返信する。クライアント端末21は中継サーバ22にACKを送信する(ステップS35)。
次に、クライアント端末21は、メディアセッションを利用して、中継サーバ22に対して、呼制御の識別情報として、「8765」を送信する(ステップS36:send)。中継サーバ22は、ステップS36において受信した呼制御の識別情報を、ステップS32において送信した呼制御の識別情報と照合する。
中継サーバ22は、ステップS34においてメディアセッション確立要求を行なった側が、ステップS32において呼制御を受けた側と、クライアント端末21として一致することを認証する。すなわち、中継サーバ22は、クライアント端末21から、ステップS34において、不正なメディアセッション確立要求を受けたわけではない。中継サーバ22は、中継サーバ22に対して、OKレスポンスを送信する。
クライアント端末21が利用するChannelの情報には、dialog(5)と関連付けられたメディアセッションとしてClientSocket(3)が設定されている。中継サーバ22が利用するChannelの情報には、dialog(5)と関連付けられたメディアセッションとしてServerSocket(3)が設定されている。
続いて、中継サーバ22は、中継サーバ12に対して、メディアセッション確立を要求する(ステップS37:SYN)。中継サーバ12は、中継サーバ22にSYN,ACKを返信する。中継サーバ22は中継サーバ12にACKを送信する(ステップS38)。
次に、中継サーバ22は、メディアセッションを利用して、中継サーバ12に対して、呼制御の識別情報として、「1234」を送信する(ステップS39:send)。中継サーバ12は、ステップS39において受信した呼制御の識別情報を、ステップS30において送信した呼制御の識別情報と照合する。
中継サーバ12は、ステップS37においてメディアセッション確立要求を行なった側が、ステップS30において呼制御を受けた側と、中継サーバ22として一致することを認証する。すなわち、中継サーバ12は、中継サーバ22から、ステップS37において、不正なメディアセッション確立要求を受けたわけではない。中継サーバ12は、中継サーバ22に対して、OKレスポンスを送信する。
中継サーバ22が利用するChannelの情報には、さらに、dialog(4)と関連付けられたメディアセッションとしてClientSocket(4)が設定されている。中継サーバ12が利用するChannelの情報には、dialog(4)と関連付けられたメディアセッションとしてServerSocket(4)が設定されている。
続いて、中継サーバ12は、クライアント端末11に対して、メディアセッション確立を要求する(ステップS40:SYN)。クライアント端末11は、中継サーバ12にSYN,ACKを返信する。中継サーバ12はクライアント端末11にACKを送信する(ステップS41)。
次に、中継サーバ12は、メディアセッションを利用して、クライアント端末11に対して、呼制御の識別情報として、「4321」を送信する(ステップS42:send)。クライアント端末11は、ステップS42において受信した呼制御の識別情報を、ステップS28において送信した呼制御の識別情報と照合する。
クライアント端末11は、ステップS40においてメディアセッション確立要求を行なった側が、ステップS28において呼制御を受けた側と、中継サーバ12として一致することを認証する。すなわち、クライアント端末11は、中継サーバ12から、ステップS40において、不正なメディアセッション確立要求を受けたわけではない。クライアント端末11は、中継サーバ12に対して、OKレスポンスを送信する。
中継サーバ12が利用するChannelの情報には、さらに、dialog(3)と関連付けられたメディアセッションとしてClientSocket(5)が設定されている。クライアント端末11が利用するChannelの情報には、dialog(3)と関連付けられたメディアセッションとしてServerSocket(5)が設定されている。
以上の処理の流れにより、クライアント端末21と中継サーバ22との間、中継サーバ22と中継サーバ12との間、および中継サーバ12とクライアント端末11との間でメディアセッションが確立される。
[メディアセッション切断]
図16は、クライアント端末11およびクライアント端末21の相互間におけるデータ送受信において、メディアセッション切断の流れを示す図である。
クライアント端末11は、dialog(3)において、中継サーバ12に対して、セッションの切断を要求する(ステップS43:BYE)。中継サーバ12はクライアント端末11にOKレスポンスを返す。
クライアント端末11および中継サーバ12が利用するChannelの情報からは、dialog(3)の情報が削除される。
中継サーバ12は、dialog(4)において、中継サーバ22に対して、セッションの切断を要求する(ステップS44:BYE)。中継サーバ22は中継サーバ12にOKレスポンスを返す。
中継サーバ12および中継サーバ22が利用するChannelの情報からは、dialog(4)の情報が削除される。
中継サーバ22は、dialog(5)において、クライアント端末21に対して、セッションの切断を要求する(ステップS45:BYE)。クライアント端末21は中継サーバ22にOKレスポンスを返す。
中継サーバ22およびクライアント端末21が利用するChannelの情報からは、dialog(5)の情報が削除される。
クライアント端末11は、中継サーバ12に対して、メディアセッション切断を要求する(ステップS46:FIN,ACK)。中継サーバ12はクライアント端末11にACKを返信し、続いてクライアント端末11に対して、メディアセッション切断を要求する(ステップS47:FIN,ACK)。クライアント端末11は中継サーバ12にACKを返信する。以上の手順によりメディアセッションが切断される。
クライアント端末11および中継サーバ12が利用するChannelの情報からは、dialog(3)と関連付けられていたメディアセッションの情報が削除される。
同様に、中継サーバ12と中継サーバ22との間においてもメディアセッションが切断される(ステップS48、S49)。
中継サーバ12および中継サーバ22が利用するChannelの情報からは、dialog(4)と関連付けられていたメディアセッションの情報が削除される。
さらに、中継サーバ22とクライアント端末21との間においてもメディアセッションが切断される(ステップS50、S51)。
中継サーバ22およびクライアント端末21が利用するChannelの情報からは、dialog(5)と関連付けられていたメディアセッションの情報が削除される。
{並列して実行されるデータ送受信}
クライアント端末11および中継サーバ22の相互間におけるデータ送受信、および、クライアント端末11およびクライアント端末21の相互間におけるデータ送受信は、並列して実行される。ステップS12からステップS27までのみに注目すれば、この順序により処理が実行される。ステップS28からステップS51までのみに注目すれば、この順序により処理が実行される。
クライアント端末11および中継サーバ12の相互間において、dialog(1)およびdialog(3)が実行される。しかし、dialog(1)における呼制御の識別情報は「1234」であり、dialog(3)における呼制御の識別情報は「4321」であり、各々の呼制御の識別情報は異なる。
クライアント端末11は、ステップS19において、メディアセッション確立要求を受信するとともに、ステップS21において、呼制御の識別情報を受信する。クライアント端末11は、ステップS19におけるメディアセッション確立要求は、ステップS12における呼制御実行に対応するものであり、ステップS28における呼制御実行に対応するものでないことを認証できる。
クライアント端末11は、ステップS40において、メディアセッション確立要求を受信するとともに、ステップS42において、呼制御の識別情報を受信する。クライアント端末11は、ステップS40におけるメディアセッション確立要求は、ステップS28における呼制御実行に対応するものであり、ステップS12における呼制御実行に対応するものでないことを認証できる。
中継サーバ12および中継サーバ22の相互間において、dialog(2)およびdialog(4)が実行される。しかし、dialog(2)における呼制御の識別情報は「4321」であり、dialog(4)における呼制御の識別情報は「1234」であり、各々の呼制御の識別情報は異なる。
中継サーバ12は、ステップS16において、メディアセッション確立要求を受信するとともに、ステップS18において、呼制御の識別情報を受信する。中継サーバ12は、ステップS16におけるメディアセッション確立要求は、ステップS14における呼制御実行に対応するものであり、ステップS30における呼制御実行に対応するものでないことを認証できる。
中継サーバ12は、ステップS37において、メディアセッション確立要求を受信するとともに、ステップS39において、呼制御の識別情報を受信する。中継サーバ12は、ステップS37におけるメディアセッション確立要求は、ステップS30における呼制御実行に対応するものであり、ステップS14における呼制御実行に対応するものでないことを認証できる。
以上の処理の流れを応用すれば、クライアント端末11、中継サーバ12、22は、不正なメディアセッション確立要求を受けることを防止できる。
クライアント端末11は、ステップS19、S40と同様にしてメディアセッション確立要求を受信したとしても、ステップS21、S42と同様にして正当な呼制御の識別情報を受信しなければ、OKレスポンスを送信しなければよい。
中継サーバ12は、ステップS16、S37と同様にしてメディアセッション確立要求を受信したとしても、ステップS18、S39と同様にして正当な呼制御の識別情報を受信しなければ、OKレスポンスを送信しなければよい。
中継サーバ22は、ステップS34と同様にしてメディアセッション確立要求を受信したとしても、ステップS36と同様にして正当な呼制御の識別情報を受信しなければ、OKレスポンスを送信しなければよい。
呼制御を行なう側は、複数の呼制御を行なうにあたり、各呼制御および各メディアセッションを、各呼制御の識別情報に基づいて対応付けることにより、複数の呼制御を交錯させないようにできて、複数のメディアセッションを交錯させないようにできる。呼制御を行なう側は、呼制御を行なうにあたり、不正なメディアセッション確立要求を受けることを防止できる。