以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、通信システムに本発明を適用した場合の実施形態である。
[1.通信システムの構成及び動作概要]
始めに、図1及び図2(A)を参照して、本実施形態の通信システムの構成及び動作概要について説明する。図1は、本実施形態の通信システムの概要構成例を示す図である。図1に示すように、本実施形態の通信システムSは、複数のノード装置Nn(n=1,2,3・・・)等により構成されている。ノード装置Nnを、以下、「ノード」という。また、ノードはネットワークNWに接続されている。ノードは、本発明におけるサーバ装置の一例である。ネットワークNWは、インターネット等からなる。ノードは、例えば、VOIP(Voice over Internet Protocol)、SIP(Session Initiation Protocol)等を利用したIP電話サービスに関する呼制御を行うSIPサーバである。
また、複数のノードの中に、1つ以上のUA(User Agent)n−lA(l=1,2,3・・・)が接続されているノードが存在する。この場合、ノードとUAn−lAとは、例えば、LAN(Local Area Network)を介して接続される。UAn−lAは、ユーザがIP電話を利用するために用いる端末装置である。UAn−lAは、例えば、IP電話機である。また、UAn−lAは、例えば、IP電話の機能を有するパーソナルコンピュータ、スマートフォン、携帯電話機、セットトップボックス等であってもよい。UAn−lAは、ノード及びネットワークNWを介して他のUAn−lAと電話通信を行う。
また、複数のノードの中に、UAn−lBを有するノードが存在する。UAn−lBを有するノードとして、例えば、ノードN5〜N7がある。UAn−lBは、SIPにおける論理的なエンティティである。図1においては、ノードとUAn−lBとが接続されているように示されている。その理由は、SIPサーバとしてのノードとUAn−lBとしてのノードとを分けて表したためである。例えば、図5におけるノードN5は、SIPサーバとしてのノードN5である。また、図5におけるUA5−1Bは、UAn−lBとしてのノードN5である。ノードN5〜N7は、本発明における第1サーバ装置の一例である。また、「UA」は、UAn−lAとUAn−lBの総称である。
ノードN5〜N7は、ネットワークNWと公衆交換電話網NPとを相互接続するためのゲートウェイとして機能する。公衆交換電話網NPは、複数の交換機Em(m=1,2,3・・)により構成されている。複数の交換機Emの中に、電話機Tm−i(i=1,2,3・・)と接続されている交換機Emがある。電話機Tm−iは、公衆電話網NPに接続されたアナログ電話機である。電話機Tm−iは、公衆交換電話網NPを介して他の電話機Tm−iと電話通信を行う。電話機Tm−iは、本発明における端末装置の一例である。UAn−lBは、外線に終端するUAである。UAn−lBを有するノードは、UAn−lBを介して公衆交換電話網NPと接続する。UAn−lBは、公衆交換電話網NPへの発信や公衆交換電話網NPからの着信の検出等を行う。UAn−lAと電話機Tm−iとは、ノードN5、N6またはN7を介して、互いに電話通信を行うことができる。なお、公衆電話網は、本発明における電話網の一例である。
また、図1に示すように、通信システムSには、ネットワークNWを介して互いに通信可能な複数のノードの参加によりオーバーレイネットワークONが構成されている。オーバーレイネットワークONは、仮想的なリンクを構成する論理的なネットワークである。オーバーレイネットワークONは、特定のアルゴリズム、例えば、分散ハッシュテーブルを利用したアルゴリズムにより実現される。なお、分散ハッシュテーブルを、以下、「DHT(Distributed Hash Table)」という。ここで、オーバーレイネットワークONに参加するとは、DHTを用いたルーティングテーブルに基づいてオーバーレイネットワークONを介して他のノードとの間で各種メッセージを送受信できる状態に稼動することをいう。なお、DHTを用いたルーティングテーブルについては、特開2006−197400号公報等で公知であるので、詳しい説明を省略する。複数のノードがオーバーレイネットワークONを介して互いに情報を送受信することにより、各UAn−lAは、オーバーレイネットワークONを利用した電話通信を行うことができる。オーバーレイネットワークONに参加している各ノードには、ノードIDが付与されている。このノードIDは、ノードを、オーバーレイネットワークONに参加している複数のノードの中から識別する固有の識別情報である。また、ノードIDは、例えば、ノードに割り当てられたIPアドレスや製造番号等を共通のハッシュ関数によりハッシュ化することにより得られる情報である。
図2(A)は、各UAの管理ノード、SIP_URI(SIP Uniform Resource Identifier)及びアナログ電話番号の例を示す図である。管理ノードは、UAの通信を管理する。例えば、管理ノードは、UAからのメッセージを他のノードに転送したり、UAに対するメッセージをUAに転送したりする。UAn−lAの管理ノードは、UAn−lAが接続するノードである。例えば、UA3−1Aの管理ノードは、ノードN3である。UAn−lBの管理ノードは、UAn−lBを有するノードである。例えば、UA5−1Bの管理ノードは、ノードN5である。各UAには、それぞれ固有のSIP_URIが割り当てられている。SIP_URIは、例えば、複数の数字により構成されている。SIP_URIは、オーバーレイネットワークONを利用するIP電話の電話番号に相当する。また、SIP_URIは、公衆交換電話網NPのアナログ電話番号を外線番号とした場合の内線番号に相当する。各UAn−lBには、それぞれ固有のアナログ電話番号が割り当てられている。アナログ電話番号は、公衆交換電話網NPにおいて割り当てられた電話番号である。
次に、オーバーレイネットワークONに対するSIP_URIの登録及び削除の処理概要と、通話接続の処理概要について説明する。SIP_URIの登録とは、UAのSIP_URIに対応付けて、このUAの管理ノードの情報を、オーバーレイネットワークONに記憶させることをいう。管理ノードの情報を、「管理ノード情報」という。管理ノード情報は、管理ノードのノードID、IPアドレス及びポート番号等を含む。オーバーレイネットワークONに記憶された管理ノード情報は、オーバーレイネットワークONから取得可能である。管理ノード情報が記憶されることにより、或るUAと通信するための管理ノードを特定することができる。管理ノード情報が記憶されたUAは、他のUAと通信することができる。
或るUAが、SIP_URIを登録するため、管理ノードにREGISTERメッセージを送信する。REGISTERメッセージは、SIP_URIを含む。REGISTERメッセージを受信した管理ノードは、REGISTERメッセージに、管理ノード情報を追加する。また、管理ノードは、管理ノード情報のキー情報を生成する。キー情報は、複数のノードに分散して記憶される情報を、オーバーレイネットワークONに記憶される複数の情報の中から識別する固有の識別情報である。キー情報は、オーバーレイネットワークONから情報を取得するために必要な情報である。また、キー情報の形式は、ノードIDの形式と同じである。管理ノードは、REGISTERメッセージに含まれるSIP_URIを、ノードIDを生成するときと共通のハッシュ関数によりハッシュ化する。これにより、管理ノードは、キー情報を生成する。そして、管理ノードは、REGISTERメッセージにキー情報を追加する。
管理ノードは、DHTのルーティングテーブルに従って、REGISTERメッセージを他のノードへ送信する。これにより、管理ノードは、REGISTERメッセージをルートノードへ向けて送信する。ルートノードは、オーバーレイネットワークONを構成する複数のノードのうち、キー情報に基づいて定められるノードである。例えば、ルートノードは、キー情報と最も近いノードIDを有するノードであるように定められる。キー情報と最も近いノードIDとは、具体的に、キー情報と上位桁が最も多く一致するノードIDである。管理ノードから送信されたREGISTERメッセージは、DHTのルーティングよって最終的にルートノードに到着する。なお、DHTのルーティングは、例えば特開2007−053662号公報等で公知であるので、詳しい説明を省略する。REGISTERメッセージを受信したルートノードは、REGISTERメッセージに含まれるキー情報と管理ノード情報とを対応付けて記憶する。キー情報は、SIP_URIから特定することができる情報である。従って、管理ノード情報は、SIP_URIに対応付けて記憶される。これにより、SIP_URIがオーバーレイネットワークONに登録される。ルートノードは、SIPにおけるロケーションサーバに相当する。
或るユーザが他のユーザと電話したいとき、ユーザは、UAn−lAに対して、呼出先のSIP_URIを入力する。すると、UAn−lAは、INVITEメッセージを管理ノードへ送信する。INVITEメッセージは、通信接続の要求を示すメッセージである。INVITEメッセージのToフィールドには、呼出先のSIP_URIが設定される。UAn−lAからINVITEメッセージを受信した管理ノードは、呼出先のSIP_URIをハッシュ化することにより、キー情報を生成する。そして、管理ノードは、キー情報を含む検索要求を、DHTのルーティングテーブルに従って他のノードへ送信する。検索要求は、SIP_URIの検索の要求を示すメッセージである。検索要求は、最終的にルートノードに到着する。ルートノードは、受信した検索要求に含まれるキー情報に対応する管理ノード情報を管理ノードへ送信する。管理ノードは、受信した管理ノード情報に含まれるIPアドレス及びポート番号に基づいて、呼出先のUAn−lAの管理ノードへINVITEメッセージを転送する。INVITEメッセージを受信した管理ノードは、呼出先のUAn−lAへINVITEメッセージを転送する。その後、UAn−lA間で電話通信が行われる。
ノードが或るUAのSIP_URIをオーバーレイネットワークONから削除するとき、削除対象のSIP_URIをハッシュ化することにより、キー情報を生成する。そして、ノードは、キー情報を含む削除要求を、DHTのルーティングテーブルに従って他のノードへ送信する。削除要求は、SIP_URIの削除の要求を示すメッセージである。削除要求は、最終的にルートノードに到着する。ルートノードは、受信した削除要求に含まれるキー情報に対応する管理ノード情報を削除する。
[2.公衆電話網からの着信に対する折り返し電話]
次に、電話機Tm−iからUAn−lAへの着信に対するUAn−lAから電話機Tm−iへの折り返し電話について説明する。なお、以降においては、UAn−lBを有するノードの代表として、ノードN5について主に説明する。
電話機T1−1のユーザAが、例えば、UA3−1AのユーザBに電話したいとする。この場合、ユーザAは、UA5−1B、UA6−1BまたはUA7−1Bの電話番号を入力して電話をかける。例えば、ユーザAは、UA5−1Bの電話番号である052−XXX−051を入力する。UA5−1Bを有するノードN5は、公衆電話網NPを介して電話機T1−1からの着信を検出する。そして、ノードN5は公衆電話網NPから送信されてくる発信者番号を受信する。ノードN5は、発信者番号として、電話機T1−1の電話番号である03−AAAA−XXXXを受信する。発信者番号は、本発明における発信者情報の一例である。次いで、IVR(Interactive Voice Response)機能により、電話機T1−1から、UA3−1AのSIP_URIである3001を取得する。IVR機能により取得されるSIP_URIは、本発明における呼出先情報の一例である。その後、ノードN5は、UA3−1Aの管理ノードであるノードN3へ、INVITEメッセージを送信する。ノードN3は、受信したINVITEメッセージをUA3−1Aへ転送する。INVITEメッセージを受信したUA3−1Aは、呼び出し音を出力する。また、UA3−1Aには、INVITEメッセージに含まれるFromフィールドのディスプレイネームに設定された電話番号の情報が、発信者番号として通知される。その後、ユーザBがユーザAに対して折り返し電話をするとする。この場合、UA3−1Aは、INVITEメッセージをノードN3へ送信する。このとき、UA3−1Aは、通知された発信者番号をINVITEメッセージのToフィールドに設定する。
ノードN5がINVITEメッセージをノードN3へ送信するとき、INVITEメッセージのFromフィールドのディスプレイネームに如何なる情報を設定するかが問題となる。例えば、ノードN5が、このFromフィールドのディスプレイネームに、電話機T1−1の電話番号である03−AAAA−XXXXを設定したとする。この場合、UA3−1Aからの折り返しのINVITEメッセージのToフィールドに、03−AAAA−XXXXが設定される。UA3−1AからINVITEメッセージを受信したノードN3は、Toフィールドに設定された番号がアナログ電話番号であることを認識する。呼出先の電話番号がアナログ電話番号である場合、INVITEメッセージの転送先の候補としては、外線に終端するノードN5〜N7がある。今回の場合、ノードN3はノードN5へINVITEメッセージを送信することが望ましい。その理由は、電話機T1−1からの着信を受けたUAn−lBと、折り返し電話を電話機T1−1へ発信するUAn−lBとが一致するからである。つまり、ノードN5がINVITEメッセージをノードN3から受信した場合、INVITEメッセージに含まれる03−AAAA−XXXXで公衆電話網NPへ発信する。すると、電話機T1−1へは、発信者番号として、UA5−1Bの電話番号である052−XXX−051が通知される。そのため、ユーザAはユーザBからの折り返しの電話があったことを認識することができる。しかしながら、ノードN3は、INVITEメッセージに含まれる03−AAAA−XXXXからは、ノードN5を特定することはできない。そのため、ノードN3は、INVITEメッセージを、ノードN5〜N7のうち、例えば任意のノードへ転送する。例えば、ノードN3がノードN7へ転送したとする。ノードN7は、03−AAAA−XXXXで公衆電話網NPへ発信する。すると、電話機T1−1へは、発信者番号として、UA7−1Bの電話番号である052−ZZZ−071が通知される。発信者番号がユーザAによって入力された電話番号と異なるので、ユーザAは、未知の電話番号から着信があったと認識してしまうという問題がある。
また、例えば、ノードN5が、Fromフィールドのディスプレイネームに、UA5−1BのSIP_URIである5001を設定したとする。この場合、UA3−1Aからの折り返しのINVITEメッセージのToフィールドに、5001が設定される。そのため、折り返しのINVITEメッセージは、ノードN5に到達する。しかしながら、ノードN5は、5001という番号を用いて公衆電話網NPに対して発信することはできない。SIPに準拠する場合、ディスプレイネームに発信元の電話番号の情報を複数設定することはできない。そのため、ノードN5は、INVITEメッセージに03−AAAA−XXXXと5001の両方を設定することはできない。そこで、ノードN5は、以下に説明する処理を行う。
図3は、本実施形態の通信システムSの動作例を示すシーケンス図である。電話機T1−1が、052−XXX−051で発信した場合、図3に示すように、ノードN5が接続する交換機E2は、ノードN5の回線の極性を反転させる。これにより、ノードN5は、電話機T1−1からの着信を検出する(ステップS1)。また、交換機E2は、モデム信号をノードN5へ送信する(ステップS2)。モデム信号には、発信者番号として、03−AAAA−XXXXが設定されている。ノードN5は、受信したモデム信号から発信者番号を取得する。次いで、ノードN5は、電話機T1−1と通話接続すると、IVR機能による案内音声を交換機E2へ送信する(ステップS3)。案内音声は、公衆電話網NPを介して電話機T1−1へ送信される。これにより、電話機T1−1から、例えば、「お電話ありがとうございます。内線番号を入力してください。」といった音声が出力される。ユーザAが、内線番号として3001と入力すると、交換機E2は、公衆電話網NPを介して送信された3001をノードN5へ送信する(ステップS4)。これにより、ノードN5は、3001という番号をSIP_URIとして取得する。
次いで、ノードN5は、テンポラリ番号を生成する(ステップS5)。テンポラリ番号は、オーバーレイネットワークONに一時的に登録されるSIP_URIである。また、テンポラリ番号は、発信元の電話機Tm−iを、オーバーレイネットワークONを利用するIP電話で識別するためのSIP_URIである。ノードN5は、テンポラリ番号として、例えば5−372を生成する。テンポラリ番号は、各UAに割り当てられているSIP_URIと重複しないように生成する必要がある。例えば、テンポラリ番号の形式を、UAに割り当てられるSIP_URIの形式と異ならせてもよい。また、テンポラリ番号は、オーバーレイネットワークONに現在登録されているUAと重複しないように生成する必要がある。なお、テンポラリ番号は、本発明における識別情報の一例である。
次いで、ノードN5は、テンポラリ番号情報を生成する。テンポラリ番号情報は、テンポラリ番号と発信元の電話機Tm−iの電話番号とを対応付けた管理情報である。具体的に、テンポラリ番号情報は、テンポラリ番号、外線発信番号、最終利用時刻を含まれる。外線発信番号は、発信元の電話機Tm−iの電話番号である。最終利用時刻は、テンポラリ番号が最後に利用された時刻である。最終利用時刻は、例えば、日付及び時刻の両方を含んでいてもよいし、時刻のみを含んでいてもよい。テンポラリ番号情報は、本発明における管理情報の一例である。また、最終利用時刻は、本発明における時刻情報の一例である。ノードN5は、5−372、03−AAAA−XXXX及び現在時刻を含むテンポラリ番号情報を生成する。そして、ノードN5は、生成したテンポラリ番号情報を記憶する(ステップS6)。これにより、ノードN5は、テンポラリ番号を管理する。
次いで、ノードN5は、テンポラリ番号をハッシュ化してキー情報を生成する。そして、ノードN5は、キー情報とノードN5の管理ノード情報とを含むREGISTERメッセージを送信する(ステップS7)。つまり、電話機T1−1がUAであると仮定した場合、ノードN5が、電話機T1−1の管理ノードとなる。テンポラリ番号5−372から生成されたキー情報に基づいて定められるルートノードが、ノードN4であるとする。この場合、送信されたREGISTERメッセージは、DHTのルーティングに従って、ノードN4に到達する。従って、ノードN4は、REGISTERメッセージに含まれるキー情報と管理ノード情報とを対応付けて記憶する。このときのルートノードは、本発明における第2サーバ装置の一例である。また、このときのREGISTERメッセージに含まれるキー情報及び管理ノード情報は、キー情報の生成に用いられたSIP_URIが管理ノード情報により示される管理ノードにより管理されることを登録する情報である。
次いで、ノードN5は、SIP_URI3001をハッシュ化して生成されたキー情報を含む検索要求の送信によって、UA3−1Aの管理ノードであるノードN3の管理ノード情報を取得すると、ノードN3へINVITEメッセージを送信する(ステップS8)。このとき、ノードN5は、Fromフィールドのディスプレイネームにテンポラリ番号である5−372を設定する。また、ノードN5は、Toフィールドに3001を設定する。これにより、ノードN5は、INVITEメッセージを呼出先のUA3−1Aへ送信する。INVITEメッセージを受信したノードN3は、Toフィールドの記述に従って、INVITEメッセージをUA3−1Aへ転送する(ステップS9)。これにより、INVITEメッセージ受信したUA3−1Aは着信音を出力する。また、UA3−1Aは、INVITEメッセージのFromフィールドに設定された5−372を発信者番号として、UA3−1Aのメモリに記憶させる。また、UA3−1Aは、5−372を画面に表示する。
その後、ユーザBが折り返し電話をかける。この場合、UA3−1Aは、ユーザBの操作等に基づいて、INVITEメッセージをノードN3へ送信する(ステップS10)。このとき、UA3−1Aは、メモリに記憶されている5−372をToフィールドに設定する。INVITEメッセージを受信したノードN3は、受信したINVITEメッセージのToフィールドから5−372を取得する。そして、ノードN3は、5−372を含む検索要求を送信する(ステップS11)。これにより、ノードN3は、ノードN4から、電話機T1−1の管理ノードであるノードN5の管理ノード情報を受信する(ステップS12)。次いで、ノードN3は、受信した管理ノード情報に基づいて、INVITEメッセージをノードN5へ転送する(ステップS13)。
INVITEメッセージを受信したノードN5は、受信したINVITEメッセージのToフィールドから5−372を取得する。次いで、ノードN5は、5−372をテンポラリ番号として含むテンポラリ番号情報を検索する。5−372を含むテンポラリ番号情報には、外線発信番号として、03−AAAA−XXXXが設定されている。そこで、ノードN5は、検索されたテンポラリ番号情報から03−AAAA−XXXXを取得する(ステップS14)。次いで、ノードN5は、03−AAAA−XXXXで、公衆電話網NPへ発信する(ステップS15)。従って、電話機T1−1へは、発信者番号として052−XXX−051が通知される。
このように、電話機Tm−iからの着信を受けたUAn−lBと、折り返し電話を電話機Tm−iへ発信するUAn−lBとが一致する。そのため、電話機Tm−iのユーザは、自分が発信した相手からの着信があったと認識することができる。また、電話機Tm−iの電話番号とテンポラリ番号とを事前に対応付けて記憶しておく必要がない。
ノードN5は、公衆電話網NPへの発信によって電話機T1−1とUA3−1Aとの通話接続が成立すると、ノードN5は、テンポラリ番号5−372をオーバーレイネットワークONから削除してもよい。また、このとき、ノードN5は、テンポラリ番号情報を削除してもよい。折り返し電話において一度接続が成立すれば、テンポラリ番号は必要ではなくなるからである。また、テンポラリ番号がオーバーレイネットワークONに登録されたままであると、登録されているテンポラリ番号の分、割り当て可能なSIP_URIが減少する。仮にテンポラリ番号の形式と、UAに割り当てられるSIP_URIの形式とが異なっていたとしても、割り当て可能なテンポラリ番号が減少する。そこで、不要となったテンポラリ番号をオーバーレイネットワークONから削除することで、SIP_URIを有効利用することができる。また、不要となったテンポラリ番号情報を削除することにより、ノードN5の記憶容量の空きを増やすことができる。一方、ノードN5は、通話接続が成立しなかった場合、オーバーレイネットワークONからのテンポラリ番号の削除及びテンポラリ番号情報の削除を行わない。ユーザBが再度折り返し電話をかける場合があるからである。なお、ノードN5は、テンポラリ番号をオーバーレイネットワークONから削除する一方で、テンポラリ番号情報の削除は行わなくてもよい。
電話機T1−1からの着信の後、ユーザBは、折り返し電話をかけない場合がある。また、ユーザBが折り返し電話をかけたが、ユーザAが電話に出ない場合がある。また、ユーザBが折り返し電話をかけたが、ユーザAが電話に出る前にユーザBがオンフック操作をする場合がある。これらの場合、電話機T1−1とUA3−1Aとの通話接続が成立していない。従って、オーバーレイネットワークONからテンポラリ番号は削除されず、テンポラリ番号情報も削除されない。しかしながら、長い時間削除が行われないと、割り当て可能なSIP_URIが減少する。また、ノードN5の記憶容量の空きが減少する。そこで、ノードN5は、テンポラリ番号情報を記憶してから予め設定された時間が経過した場合、オーバーレイネットワークONからテンポラリ番号を削除してもよい。また、このとき、ノードN5は、テンポラリ番号情報を削除してもよい。予め設定された時間を、「設定時間」という。テンポラリ番号情報は、最終利用時刻を含む。最終利用時刻は、テンポラリ番号情報が記憶された時刻を示す。そのため、ノードN5は、最終利用時刻に基づいて、テンポラリ番号情報を記憶してから設定時間が経過したか否かを判定することができる。
ユーザBが折り返し電話をかけたがユーザAが電話に出ない場合や、ユーザBが折り返し電話をかけたがユーザAが電話に出る前にユーザBがオンフックする場合、ユーザBは再度電話をかける可能性がある。しかしながら、テンポラリ番号情報を記憶してから設定時間が経過した後にユーザBが折り返し電話をかけようとすると、その時点ではテンポラリ番号がオーバーレイネットワークONから削除されていることがある。そのため、ノードN5は、電話機T1−1の電話番号で公衆電話網NPへ発信することができない。そこで、ノードN5は、折り返し電話において通話接続が成立しなかった場合には、テンポラリ番号情報の最終利用時刻を更新してもよい。具体的に、ノードN5は、最終利用時刻を、通話接続が成立しなかった時刻に書き換える。そして、ノードN5は、最終利用時刻から設定時間が経過した場合に、オーバーレイネットワークONからテンポラリ番号を削除してもよい。また、このとき、ノードN5は、テンポラリ番号情報を削除してもよい。最終利用時刻が更新されることで、テンポラリ番号の削除が延期される。そのため、ユーザBは、再度折り返し電話をかけることができる。なお、テンポラリ番号情報が記憶されたときの最終利用時刻は、ノードN5がテンポラリ番号をINVITEメッセージの生成に利用した時刻を示す。一方、更新された最終利用時刻は、ノードN5が最終利用時刻を外線発信番号の取得に利用した時刻を示す。
ところで、同一のUAn−lAが互いに異なる複数の電話機Tm−iからの着信を受けることがある。例えば、ユーザAが052−XXX−051で電話機T1−1から電話をかけ、内線番号として3001を入力する。この場合、ノードN5は、電話機T1−1からの着信時にテンポラリ番号を生成して、オーバーレイネットワークONに登録する。そして、生成されたテンポラリ番号がUA3−1Aに通知される。その後、UA3−1Aから電話機T1−1の折り返し電話の接続が成立すると、ノードN5は、テンポラリ番号をオーバーレイネットワークONから削除する。その後、例えば、ユーザCが052−XXX−051で電話機T5−1から電話をかけ、内線番号として3001を入力する。この場合も、ノードN5は、電話機T5−1からの着信時にテンポラリ番号を生成する。そして、生成されたテンポラリ番号がUA3−1Aに通知される。電話機T5−1からの着信時には、電話機T1−1からの着信時に生成されたテンポラリ番号は削除されている。そこで、ノードN5は、電話機T1−1からの着信時に生成したテンポラリ番号と同じテンポラリ番号を、電話機T5−1からの着信時に生成することも可能である。例えば、ノードN5は、同一のテンポラリ番号として5−372を生成したとする。しかしながら、この場合、電話機T1−1からの着信時と、電話機T5−1からの着信時とで、同一の発信者番号5−372がUA3−1Aに通知される。そのため、ユーザBは、同一の相手から2回電話があったと誤って判断することがある。
そこで、ノードN5は、テンポラリ番号を生成するとき、前回生成したテンポラリ番号と異なるテンポラリ番号を生成してもよい。これにより、電話機T1−1からの着信時と、電話機T5−1からの着信時とで、異なる発信者番号が通知される。そのため、ユーザBは、同一の相手から2回電話があったと誤って判断することを防止することができる。なお、前回の着信時と今回の着信時とで発信元の電話機Tm−iが同一である場合であっても、ノードN5は、前回の着信時とは異なるテンポラリ番号を生成してもよい。具体的な生成方法としては、例えば、前回生成したテンポラリ番号に1を加算したテンポラリ番号を生成することが挙げられる。また、ノードN5は、或るテンポラリ番号を生成してからそのテンポラリ番号と同一のテンポラリ番号が生成されるまでのテンポラリ番号の生成回数が多くなるように、テンポラリ番号を生成するとよい。
上述した例は、同一のノードが複数の電話機Tm−iから着信した場合の例である。しかしながら、互いに異なる複数のノードがそれぞれ着信する場合がある。例えば、ユーザAが052−XXX−051で電話機T1−1から電話をかけ、内線番号として3001を入力する。一方、ユーザCが052−YYY−061で電話機T5−1から電話をかけ、内線番号として3001を入力する。この場合は、ノードN6が着信を受ける。この場合、ノードN5とノードN6が互いに同一のテンポラリ番号を生成すると、同一の発信者番号がUA3−1Aに通知される。そこで、ノードN5〜N7は、それぞれ他のノードが生成するテンポラリ番号とは異なるテンポラリ番号を生成してもよい。例えば、ノードN5は、ノードN5のノードIDを用いてテンポラリ番号を生成する。例えば、ノードN5のノードIDが0005であり、ノードN6のノードIDが0006であるとする。ノードN5が生成した番号が3−572であったとする。ノードN5は、3−572に0005を付加して、テンポラリ番号3−5720005を生成する。一方、ノードN6が生成した番号も3−572であったとする。ノードN6は、3−572に0006を付加して、テンポラリ番号3−5720006を生成する。
[3.ノードの構成]
次に、図2(B)を参照して、ノードN5の構成及び機能について説明する。図2(B)は、ノードN5の概要構成例を示すブロック図である。ノードN5は、図2(B)に示すように、制御部11、記憶部12、NIC(Network Interface Card)13a、RJ−45ジャック14a、NIC13b、RJ−45ジャック14b、SLIC(Subscriber Loop Interface Circuit)15、RJ−11ジャック16等を備えて構成される。制御部11は、記憶部12、NIC13a、NIC13b及びSLIC15とバス17を介して相互に接続されている。また、NIC13aとRJ−45ジャック14a、NIC13bとRJ−45ジャック14b、及び、SLIC15とRJ−11ジャック16はそれぞれ接続されている。
記憶部12は、本発明における記憶手段の一例である。記憶部12は、例えばハードディスクドライブ等から構成される。記憶部12には、オペレーティングシステム、P2Pプログラム、SIPサーバプログラム、IVR機能プログラム、UAプログラム等が記憶されている。P2Pプログラムは、ルーティングテーブルを用いて他のノードと通信を行うためのプログラムである。なお、P2Pプログラム等は、例えば、ネットワークNWに接続された所定のサーバからダウンロードされるようにしてもよい。或いは、P2Pプログラム等は、例えば、DVD等の記録媒体に記録されて記録媒体のドライブを介して読み込まれるようにしてもよい。
また、記憶部12には、オーバーレイネットワークONで使用されるDHTを用いたルーティングテーブル等が記憶されている。また、記憶部12には、ノードN5のノードID、IPアドレス及びポート番号が記憶されている。また、記憶部12には、設定時間が記憶されている。また、記憶部12には、ノードN5がルートノードとなる管理ノード情報がキー情報に対応付けて記憶されている。また、記憶部12には、テンポラリ番号情報が一時的に記憶される。
RJ−45ジャック14a及び14bには、LANケーブルが接続される。RJ−45ジャック14aは、LANケーブルによりUA5−1Bと接続される。NIC13aは、RJ−45ジャック14aを介して、UA5−1Bとの間の通信制御を行う。なお、ノードN5は、NIC13a及びRJ−45ジャック14aを複数組備えていてもよい。
RJ−45ジャック14bは、LANケーブルによりネットワークNWと接続される。NIC13bは、RJ−45ジャック14b及びネットワークNWを介して、他のノード等との間の通信制御を行う。
SLIC15及びRJ−11ジャック16は、FXO(Foreign eXchange Office)デバイスである。RJ−11ジャック16は、アナログ回線のケーブルが接続される。RJ−11ジャック16は、アナログ回線を介して公衆電話網NPと接続される。SLIC15は、公衆電話網NPとネットワークNWと間のインタフェースを提供する。SLIC15は、FSK(Frequency-Shift Keying)による信号復号機能、公衆電話網NPへの発信機能等を有する。SLIC15及びRJ−11ジャック16は、本発明における接続手段の一例である。また、SLIC15は、本発明における第1取得手段、及び発信手段の一例である。
制御部11は、演算機能を有するCPU,作業用RAM,及びROM等から構成される。また、制御部11は、時計機能及びタイマ機能を備える。そして、制御部11は、CPUが記憶部12等に記憶されたプログラムを読み出して実行することにより、本発明における第2取得手段、生成手段、第1送信手段、第2送信手段、受信手段、第3取得手段、判定手段、第3送信手段及び更新手段として機能する。
なお、ノードN6及びN7の構成は、ノードN5の構成と基本的に同様である。また、他のノードの構成は、SLIC15及びRJ−11ジャック16を備えていないことを除いて、ノードN5の構成と基本的に同様である。
[4.通信システムの動作]
次に、図4及び図5を参照して、本実施形態の通信システムSの動作について説明する。図4及び図5は、本実施形態のノードN5の制御部11及びSLIC15の処理例を示すフローチャートである。
図4に示す処理は、ノードN5のSLIC15がRJ−11ジャック16を介して公衆電話網NPからの着信を検出したときに開始される。図4に示すように、SLIC15は、RJ−11ジャック16を介してモデム信号を受信する。そして、SLIC15は、モデム信号をFSKにより復号することにより、モデム信号から発信者番号を取得する(ステップS21)。
次いで、制御部11は、IVR機能プログラムを実行し、IVR機能によって公衆電話網NPから内線番号としてのSIP_URIを取得する(ステップS22)。ところで、例えば、電話機T1−1からの電話を必ずUA3−1Aが着信するようにしたい場合がある。この場合、電話機T1−1の電話番号とUA3−1AのSIP_URIとが予め対応付けられていてもよい。例えば、或るノードが、電話機T1−1の電話番号をハッシュ化してキー情報を生成する。そして、ノードは、キー情報とUA3−1AのSIP_URIとを含むREGISTERメッセージをルートノードへ向けて送信する。これにより、キー情報とSIP_URIとがルートノードにより対応付けて記憶される。公衆電話網NPからの着信時、ノードN5は、呼出先のSIP_URIをIVR機能によって取得するのではなく、オーバーレイネットワークONから取得する。つまり、ノードN5は、SLIC15により取得された発信者番号をハッシュ化してキー情報を生成する。そして、キー情報を含む検索要求をルートノードへ向けて送信することにより、ルートノードから呼出先のSIP_URIを取得する。
SIP_URIが取得されると、制御部11は、テンポラリ番号を生成する(ステップS23)。次いで、制御部11は、生成したテンポラリ番号がオーバーレイネットワークONに既に登録されているかを確認する(ステップS24)。具体的に、制御部11は、テンポラリ番号をハッシュ化して生成したキー情報を含む検索要求をルートノードへ向けて送信する。検索要求を受信したルートノードは、検索要求に含まれるキー情報に対応する管理ノード情報がルートノードの記憶部12に記憶されているか否かを判定する。このとき、ルートノードは、キー情報に対応する管理ノード情報が記憶されている場合にはこの管理ノード情報をノードN5へ送信する。一方、ルートノードは、キー情報に対応する管理ノード情報が記憶されていない場合には、例えば、エラー応答をノードN5へ送信する。エラー応答は、キー情報に対応する管理ノード情報がないことを示すメッセージである。制御部11は、ルートノードから管理ノード情報またはエラー応答を受信する。
次いで、制御部11は、生成したテンポラリ番号がオーバーレイネットワークONに既に登録されているか否かを判定する(ステップS25)。このとき、制御部11は、管理ノード情報を受信した場合には、テンポラリ番号は既に登録されていると判定する(ステップS25:YES)。この場合、制御部11は、ステップS23に進む。一方、制御部11は、エラー応答を受信した場合には、テンポラリ番号は登録されていないと判定する(ステップS25:NO)。この場合、制御部11は、ステップS26に進む。ステップS23〜S25の処理により、制御部11は、オーバーレイネットワークONに登録されているテンポラリ番号と異なるテンポラリ番号を生成することができる。また、制御部11は、テンポラリ番号の形式がUAに割り当てられるSIP_URIの形式と同一であっても、オーバーレイネットワークONに登録されているSIP_URIと異なるテンポラリ番号を生成することができる。
ステップS26において、制御部11は、テンポラリ番号情報を生成する。具体的に、制御部11は、時計機能から、現在時刻を取得する。制御部11は、現在時刻を最終利用時刻とする。次いで、制御部11は、ステップS23〜S25で最終的に生成されたテンポラリ番号、SLIC15により取得された発信者番号及び最終利用時刻を含むテンポラリ番号情報を生成する。そして、制御部11は、生成したテンポラリ番号情報を記憶部12に記憶させる(ステップS26)。
次いで、制御部11は、テンポラリ番号をオーバーレイネットワークONに登録する(ステップS27)。具体的に、制御部11は、生成したテンポラリ番号をハッシュ化してキー情報を生成する。次いで、制御部11は、キー情報と、ノードN5に対して発信してきた電話機Tm−iの管理ノードであるノードN5の管理ノード情報を含むREGISTERメッセージをルートノードへ向けて送信する。ステップS27において送信されるREGISTERメッセージに含まれるキー情報とノードN5の管理ノード情報が、本発明における登録情報の一例である。
次いで、制御部11は、INVITEメッセージを生成する(ステップS28)。このとき、制御部11は、INVITEメッセージのFromフィールドのディスプレイネームに、生成したテンポラリ番号を設定する。また、制御部11は、INVITEメッセージのToフィールドに、IVR機能により取得されたSIP_URIを設定する。Fromフィールドのディスプレイネームとしてテンポラリ番号が設定されたINVITEメッセージは、本発明における第1要求情報の一例である。また、このINVITEメッセージのFromフィールドのディスプレイネームに設定されたテンポラリ番号は、本発明における第1要求情報に含まれる発信者情報の一例である。INVITEメッセージを生成した制御部11は、ステップS22においてIVR機能により取得されたSIP_URIをハッシュ化して、キー情報を生成する。次いで、制御部11は、生成したキー情報を含む検索要求をルートノードへ向けて送信する。これにより、制御部11は、ルートノードから管理ノード情報を受信する。次いで、制御部11は、受信した管理ノード情報に基づいて、呼出先のUA3−1Aの管理ノードへINVITEメッセージを送信する(ステップS29)。制御部11は、この処理を終えると、図4に示す処理を終了させる。
図5に示す処理は、ノードN5の制御部11が他のノードからToフィールドにテンポラリ番号が設定されたINVITEメッセージを受信したときに開始される。Toフィールドにテンポラリ番号が設定されたINVITEメッセージは、本発明における第2要求情報の一例である。また、このINVITEメッセージのToフィールドに設定されたテンポラリ番号は、本発明における折り返し先を示す情報の一例である。図5に示すように、制御部11は、INVITEメッセージのToフィールドからテンポラリ番号を取得する(ステップS41)。次いで、制御部11は、取得したテンポラリ番号を含むテンポラリ番号情報を記憶部12から検索する。そして、制御部11は、検索されたテンポラリ番号情報から外線発信番号を取得する(ステップS42)。
次いで、制御部11は、取得した外線発信番号をSLIC15へ送信する。そして、SLIC15は、公衆電話網NPへ発信する(ステップS43)。具体的に、SLIC15は、外線発信番号をPB(Push Button)信号に変換し、PB信号をRJ−11ジャック16を介して公衆電話網NPへ送信する。次いで、制御部11は、外線呼び出し音を、発信元のUAn−lAへ送信する(ステップS44)。
次いで、制御部11は、呼出先の電話機T1−1のオフフックがSLIC15により検出されたか否かを判定する(ステップS45)。このとき、制御部11は、オフフックが検出されていないと判定した場合には(ステップS45:NO)、ステップS46に進む。ステップS46において、制御部11は、オフフックフラグにFALSEを設定する。オフフックフラグは、オフフックされたか否かを示す情報である。次いで、制御部11は、ステップS48に進む。一方、制御部11は、オフフックが検出されたと判定した場合には(ステップS45:YES)、ステップS47に進む。ステップS47において、制御部11は、オフフックフラグにTRUEを設定する。次いで、制御部11は、ステップS48に進む。
ステップS48において、制御部11は、発信元のUAn−lAからCANCELメッセージを受信したか否かを判定する。つまり、制御部11は、発信元のユーザがオンフック操作をしたか否かを判定する。このとき、制御部11は、CANCELメッセージを受信していないと判定した場合には(ステップS48:NO)、ステップS49に進む。ステップS49において、制御部11は、CANCELフラグにFALSEを設定する。CANCELフラグは、CANCELメッセージが受信されたか否かを示す情報である。次いで、制御部11は、ステップS51に進む。一方、制御部11は、CANCELメッセージを受信したと判定した場合には(ステップS48:YES)、ステップS50に進む。ステップS50において、制御部11は、CANCELフラグにTRUEを設定する。次いで、制御部11は、ステップS51に進む。
ステップS51において、制御部11は、CANCELフラグがFALSEであり且つオフフックフラグがFALSEであるか否かを判定する。このとき、制御部11は、CANCELフラグがFALSEであり且つオフフックフラグがFALSEであると判定した場合には(ステップS51:YES)、ステップS44に進む。制御部11は、呼出先のユーザがオフフック操作をするか、発信元のユーザがオンフック操作をするまで、ステップS44〜S51の処理を繰り返す。一方、制御部11は、CANCELフラグがTRUEであると判定した場合、または、オフフックフラグがTRUEであると判定した場合には(ステップS51:NO)、ステップS52に進む。
ステップS52において、制御部11は、CANCELフラグがFALSEであるか否かを判定する(ステップS52)。このとき、制御部11は、CANCELフラグがTRUEであると判定した場合には(ステップS52:NO)、ステップS53に進む。一方、制御部11は、CANCELフラグがFALSEであると判定した場合には(ステップS52:YES)、ステップS54に進む。
ステップS53において、制御部11は、ステップS42において検索されたテンポラリ番号情報に含まれる最終利用時刻を更新する。その理由は、通話接続が成立しなかったからである。具体的に、制御部11は、時計機能から現在時刻を取得する。そして、制御部11は、最終利用時刻に現在時刻を設定する。制御部11は、この処理を終えると、図5に示す処理を終了させる。
ステップS54において、制御部11は、ステップS42において検索されたテンポラリ番号情報を記憶部12から削除する。次いで、制御部11は、オーバーレイネットワークONからテンポラリ番号を削除する(ステップS55)。具体的に、制御部11は、INVITEメッセージのToフィールドから取得したテンポラリ番号をハッシュ化してキー情報を生成する。そして、制御部11は、キー情報を含む削除要求をルートノードへ向けて送信する。キー情報を含む削除要求が本発明における第3要求情報の一例である。次いで、制御部11は、通話処理を開始する(ステップS56)。制御部11は、200 OKメッセージを発信元のUAn−lAへ送信し、発信元のUAn−lAから送信されてくるACKメッセージを受信する。その後、制御部11は、発信元のUAn−lAから送信されてくる音声信号をアナログ変換して、SLIC15により公衆電話網NPへ送信させる。また、制御部11は、公衆電話網NPからSLIC15により受信された音声信号をデジタル信号に変換して、発信元のUAn−lAへ送信する。制御部11は、この処理を終えると、図5に示す処理を終了させる。
制御部11は、テンポラリ番号を削除する処理を、例えば定期的に実行する。具体的に、制御部11は、記憶部12に記憶されているテンポラリ番号情報に含まれる最終利用時刻から設定時間が経過したか否かを判定する。このとき、制御部11は、最終利用時刻から設定時間が経過していないと判定した場合には、テンポラリ番号を削除しない。一方、制御部11は、最終利用時刻から設定時間が経過したと判定した場合には、ステップS54及びS55と同様の処理を行う。
以上説明したように、本実施形態によれば、ノードN5が、公衆電話網NPに接続し、電話機Tm−iからの着信が検出された場合、電話機Tm−iの発信者番号を取得し、呼出先のUAn−lAのSIP_URIを取得し、テンポラリ番号を生成し、テンポラリ番号と発信者番号とを含むテンポラリ番号情報を記憶部12に記憶させ、テンポラリ番号から生成されたキー情報とノードN5の管理ノード情報とを含むREGISTERメッセージをルートノードへ送信し、テンポラリ番号をFromフィールドに設定したINVITEメッセージを呼出先のUAn−lAへ送信する。その後、ノードN5は、UAn−lAからの折り返しのINVITEメッセージを受信し、INVITEメッセージのToフィールドに設定されたテンポラリ番号を取得し、取得したテンポラリ番号に対応する外線発信番号を記憶部12から取得し、取得した外線発信番号に基づいて、電話機Tm−iへ発信する。従って、電話機Tm−iの電話番号とテンポラリ番号とを予め対応付けて記憶しておく必要がない。
なお、上記実施形態において、ノード5は、公衆電話網NPに接続されていた。しかしながら、ノードN5は、公衆電話網NP以外の電話網に接続されてもよい。例えば、ノードN5は、移動体通信網等に接続されてもよい。