以下、この発明によるIP電話システムの実施形態について、図を参照しながら説明する。
図1は、この発明の実施形態が適用されるIP電話システムのシステム構成例を示す図である。この図1の例のIP電話システムは、IPネットワーク1に、複数台のIP電話端末2,2,・・・が接続されて構成される。この図1に示されるように、この実施形態のIP電話システムは、SIPサーバは備えない。
[IP電話端末2の構成例]
図2は、この実施形態におけるIP電話端末2の構成例を示すブロック図である。
この実施形態のIP電話端末2は、システムバス100に対して、CPU(Central Processing Unit)101、プログラム記憶用ROM(Read Only Memory)102、ワークエリア用RAM(Random Access Memory)103、電話通信用インターフェース104、パケット処理部105、通話音声入出力インターフェース106、操作入力インターフェース107、ディスプレイコントローラ108、のそれぞれが接続されている。
また、この実施形態では、システムバス100には、さらに、端末一覧情報記憶部109、登録時相手先記憶部110、電話帳メモリ111、更新・削除監視タイマー112、自端末更新タイマー113、が接続されている。
CPU101は、ROM102に記憶されているプログラムに従って、以下に説明するような種々の処理を、RAM103をワークエリアとして用いてソフトウエア処理として実行する。
電話通信用インターフェース104は、IPネットワーク1に接続される。
パケット処理部105は、電話通信用インターフェース104を通じて受信した呼制御用パケットや受話音声のパケットを分解して呼制御情報や受話音声信号を得、システムバス100に送出する。CPU101は、システムバス100に送出された呼制御情報を解析して、対応する呼制御処理を行う。また、システムバス100に送出された受話音声信号は、通話音声入出力インターフェース106を通じてハンドセットHSに送られる。
パケット処理部105は、また、CPU101の制御に従って送信用の呼制御用パケットを生成し、あるいは通話音声入出力インターフェース106を通じて取り込まれた送話音声信号から送話音声パケットを生成して、システムバス100に送出する。これら送信用の呼制御用パケットおよび送話音声パケットは、CPU101の制御に従って電話通信用インターフェース104を通じて送信される。
通話音声入出力インターフェース106は、ハンドセットHSに接続されている。相手からの受話音声の音声信号は、CPU101の制御に従い、通話音声入出力インターフェース106を通じてハンドセットHSの受話器に供給される。また、ハンドセットHSの送話器のマイクロホンで収音された送話音声の音声信号は、CPU101の制御に従い、通話音声入出力インターフェース106を通じてシステムバス100に送出され、電話通信用インターフェース104を通じて相手方に送信される。
操作入力インターフェース107には、テンキーやその他のファンクションキーなどを有する操作入力部114が接続されている。操作入力部114を通じてユーザによりキー入力操作が行われると、そのキー操作信号が操作入力インターフェース104を通じてシステムバス100に送られる。CPU101は、操作入力インターフェース107を通じてシステムバス100に送出されたキー操作信号から、いずれの操作キーが操作されたかを判別し、その判別結果に応じた処理を行うようにする。
ディスプレイコントローラ108には、例えばLCD(Liquid Crystal Display)からなるディスプレイ115が接続されており、CPU101による表示制御にしたがって、ディスプレイ115の表示画面に種々の表示がなされる。
端末一覧情報記憶部109は、IPネットワーク1に接続される、この実施形態のIP電話システムを構成する全てのIP電話端末2の端末識別情報とそのIPアドレスとを記憶する。この明細書では、IP電話端末2の端末識別情報とIPアドレスとの対の情報を含むものをIP電話端末2の端末情報と呼ぶ。つまり、端末一覧情報記憶部109には、この実施形態のIP電話システムを構成する全てのIP電話端末2の端末情報が記憶される。どのようにして、この端末一覧情報記憶部109に、全てのIP電話端末の端末情報が記憶されるかは、後で詳細に説明する。
IP電話端末2の端末識別情報は、IP電話端末2のそれぞれを識別するための情報であり、例えば、MAC(Media Access Control)アドレス、電話番号(内線番号)、ユーザ名、端末製造番号、など当該IP電話端末2を識別することができるものであれば良い。以下に説明する例では、このIP電話端末2の端末識別情報は、電話番号(内線番号)を用いている。
登録時相手先記憶部110は、それぞれのIP電話端末2が、IPネットワーク1に、登録要求のための「Register」メッセージ(パケット)を送出する際の相手先のIP電話端末2の宛先情報を記憶する。この例では、登録時相手先記憶部110には、相手先のIP電話端末2の端末情報が、宛先情報として記憶される。
電話帳メモリ111は、電話通信の相手先の名称と、相手宛先情報とからなる電話帳情報を記憶する。この実施形態では、端末一覧情報記憶部109には、IPネットワーク1に接続される全てのIP電話端末2の端末情報が記憶されるので、この端末一覧情報記憶部109に記憶されているIP電話端末の端末情報が用いられて、電話帳メモリ111の電話帳情報は、簡単に作成される。例えば、端末一覧情報記憶部109に記憶されている端末情報の一覧から、ユーザが必要とする内線番号の端末情報を選択し、その選択した端末情報に対して、相手名称を登録入力することで、電話帳情報が作成可能である。
更新・削除監視タイマー112は、後述するように、IPネットワーク1に接続されている、この実施形態のIP電話システムを構成するIP電話端末2が、IPネットワーク1に、正常に動作することができる状態で接続される状態を維持しているか否かを監視するためのタイマーである。この更新・削除監視タイマー112は、この実施形態では、端末一覧情報記憶部109に記憶されている自端末以外のIP電話端末のそれぞれについて、別々に設けられるものである。この更新・削除監視タイマー112の動作については後述する。
自端末更新タイマー113は、IPネットワーク1に自端末が接続された後、自動更新するタイミングをタイマー管理するためのタイマーである。
[IP電話システムにおけるIP電話端末2の動作]
<IP電話端末2のIPネットワーク1への接続時の動作>
IP電話端末2は、IPネットワーク1に接続されると、当該接続されたことを周知の接続検知手法により検知し、IPネットワーク1に対して、相手先を指定した「Register」メッセージを自動送出する。この「Register」メッセージのパケットのヘッダフィールドの「Contact」ヘッダには、送信元のIP電話端末2の端末情報が含められる。
そして、この実施形態では、この「Register」メッセージの自動送出を契機とした、以下に説明するようなシーケンスが実行されて、IPネットワーク1に既に接続されているIP電話端末2は、新規に接続されたIP電話端末2の端末情報を端末一覧情報記憶部109に追加記憶し、また、新規に接続されたIP電話端末2は、既に接続されている全てのIP電話端末2の端末情報を、端末一覧情報記憶部109に追加記憶する。
ただし、IPネットワーク1に最初に接続される1台目のIP電話端末2(これを以下IP電話端末2Aとする)では、相手のIP電話端末2が存在しないので、以下の接続時のシーケンス動作は行われない。
〔2台目のIP電話端末2のIPネットワーク1への接続時〕
図3は、IPネットワーク1に対して、2台目のIP電話端末2(これを以下IP電話端末2Bとする)が接続されたときのシーケンス図である。
図3の例では、右側のIP電話端末2Aは、内線番号が「1001」で、IPアドレスが「192.168.0.1」であり、IPネットワーク1に対して既に接続されているものとしている。左側のIP電話端末2Bは、内線番号が「1002」で、IPアドレスが「192.168.0.2」であり、新規にIPネットワーク1に接続されたものである。
なお、図3における吹き出し状部分109Fは、IP電話端末2のそれぞれが備える端末一覧情報記憶部109の記憶内容を示すものである。後述する他のシーケンス図においても同様である。なお、端末一覧情報記憶部109のそれぞれには、初期状態においては、自端末の端末情報のみが記憶されている。
新規にIPネットワーク1に接続される内線番号「1002」のIP電話端末2Bにおいては、IPネットワーク1への接続前に、あるいは、IPネットワーク1に接続された後に、操作入力部114を通じて、接続登録用の「Register」メッセージの送り先として、内線番号「1001」のIP電話端末2Aの宛先情報(IPアドレスを含む)が入力され、登録時相手先記憶部110に記憶される。
そして、IPネットワーク1に、内線番号「1002」のIP電話端末2Bが接続されると、当該IP電話端末2Bは、前述したように、当該接続を自動検出し、登録時相手先記憶部110に記憶されている宛先情報を読み出して、当該宛先情報で示される内線番号「1001」のIP電話端末2Aに、IPネットワーク1を通じて、接続登録用の「Register」メッセージを送る。
このとき、図3に示すように、この接続登録用の「Register」メッセージのパケットのヘッダフィールドの「Contact」ヘッダには、自IP電話端末2Bの端末情報「1002@192.168.0.2」が記述されている。なお、この「1002@192.168.0.2」なる記述は、SIPアドレスに対応しており、@の前の情報は、SIPアドレスではユーザ名と呼ばれる。
また、「Register」メッセージのヘッダフィールドの「TTL(Time-to-live)」の値は、1回の転送を行わせるために「2」とされる。その他は、通常用いられる「Register」メッセージのパケットと同様とされる。
IP電話端末2Aは、この「Register」メッセージを受け取ると、そのヘッダフィールドのTTLの値から1を減算した結果が、TTL=1であることから、端末一覧情報記憶部109に記憶されている他のIP電話端末2に、受信した「Register」メッセージを転送しようとするが、ここでは、端末一覧情報記憶部109には、他のIP電話端末が記憶されていないため、転送はしない。
次に、IP電話端末2Aは、自端末の端末一覧情報記憶部109に記憶されている端末情報の全てを、ヘッダフィールドの「Contact」ヘッダに記述した「200OK」の応答パケットを、「Register」メッセージの送信元のIP電話端末2Bに送る。
次に、IP電話端末2Aは、受信した「Register」メッセージのパケットのヘッダフィールドの「Contact」ヘッダに記述されているIP電話端末2Bの端末情報を、自端末の端末一覧情報記憶部109に追加記憶する。
一方、IP電話端末2Aからの「200OK」の応答パケットを受信した送信元のIP電話端末2Bは、当該「200OK」の応答パケットのヘッダフィールドの「Contact」ヘッダに記述されている端末情報を、自端末の端末一覧情報記憶部109に追加記憶する。
以上のようにして、2個のIP電話端末2A,2Bのそれぞれの端末一覧情報記憶部109の内容は、それぞれのIP電話端末の端末情報が追加されることで、全く同一となる。
〔3台目のIP電話端末2のIPネットワーク1への接続時の動作〕
図4およびその続きである図5は、IPネットワーク1に対して、3台目のIP電話端末2(これを以下IP電話端末2Cとする)が接続されたときのシーケンス図である。この例では、3台目のIP電話端末2Cは、内線番号が「1003」で、IPアドレスが「192.168.0.3」である。
新規にIPネットワーク1に接続される内線番号「1003」のIP電話端末2Cにおいては、前記のIP電話端末2Bの場合と同様に、IPネットワーク1への接続前に、あるいは、IPネットワーク1に接続された後に、操作入力部114を通じて、接続登録用の「Register」メッセージの送り先が入力され、登録時相手先記憶部110に記憶される。この例においては、内線番号「1002」のIP電話端末2Bの宛先情報が、IP電話端末2Cの登録時相手先情報として入力され、IP電話端末2Cの登録時相手先記憶部110に記憶される。
そして、IPネットワーク1に、このIP電話端末2Cが接続されると、当該IP電話端末2Cは、前述したように、当該接続を自動検出し、登録時相手先記憶部110に記憶されている宛先情報を読み出して、当該宛先情報で示される内線番号「1002」のIP電話端末2Bに、IPネットワーク1を通じて、接続登録用の「Register」メッセージを送る。
このとき、図4に示すように、この接続登録用の「Register」メッセージのパケットのヘッダフィールドの「Contact」ヘッダには、自IP電話端末2Cの端末情報「1003@192.168.0.3」が、記述されている。また、ヘッダフィールドの「TTL(Time-to-live)」の値は、「2」とされる。その他は、通常用いられる「Register」メッセージのパケットと同様である。
IP電話端末2Bは、この「Register」メッセージを受け取ると、そのヘッダフィールドのTTLの値から1を減算した結果が、TTL=1であることから、端末一覧情報記憶部109に記憶されている他のIP電話端末を探す。ここでは、他のIP電話端末とは、端末一覧情報記憶部109に記憶されている端末情報一覧のうちの、自端末以外のIP電話端末である。
当該他のIP電話端末の探索の結果、この例では、IP電話端末2Aが他の端末として見つかるので、IP電話端末2Bは、当該IP電話端末2Aに、受信した「Register」メッセージを転送する。この際に、転送する「Register」メッセージのヘッダフィールドのTTLは、元の「Register」のTTLの値から1を減算した値とし、ここでは、TTL=1とする。
次に、IP電話端末2Bは、自端末の端末一覧情報記憶部109に記憶されている端末情報の全てを、ヘッダフィールドの「Contact」ヘッダに記述した「200OK」の応答パケットを、「Register」メッセージの送信元のIP電話端末2Cに送る。
次に、IP電話端末2Bは、受信した「Register」メッセージのパケットのヘッダフィールドの「Contact」ヘッダに記述されているIP電話端末2Cの端末情報を、自端末の端末一覧情報記憶部109に追加記憶する。
一方、IP電話端末2Bからの「200OK」の応答パケットを受信した送信元のIP電話端末2Cは、当該「200OK」の応答パケットのヘッダフィールドの「Contact」ヘッダに記述されている全ての端末情報を、自端末の端末一覧情報記憶部109に追加記憶する(図5参照)。
また、IP電話端末2Bからの「Register」メッセージの転送を受けたIP電話端末2Aは、そのヘッダフィールドのTTLの値から1を減算した結果が、TTL=0であることから、さらなる転送は不要と判断する。
そして、IP電話端末2Aは、自端末の端末一覧情報記憶部109に記憶されている端末情報の全てを、ヘッダフィールドの「Contact」ヘッダに記述した「200OK」の応答パケットを、その送信元、つまり転送元のIP電話端末2Bに送る。
次に、IP電話端末2Aは、受信した「Register」メッセージのパケットのヘッダフィールドの「Contact」ヘッダに記述されているIP電話端末2Cの端末情報を、自端末の端末一覧情報記憶部109に追加記憶する(図5参照)。
そして、IP電話端末2Aからの「200OK」の応答パケットを受信した転送元のIP電話端末2Bは、当該「200OK」の応答パケットのヘッダフィールドの「Contact」ヘッダに記述されている端末情報を、自端末の端末一覧情報記憶部109の記憶内容に追加記憶させる。ここで、転送元のIP電話端末2Bは、転送先からの「200OK」の応答パケットのヘッダフィールドの「Contact」ヘッダに記述されている端末情報と、自端末の端末一覧情報記憶部109の記憶内容とが一致しているときは、当該端末情報を上書きする(図5参照)。
以上のようにして、3台目のIP電話端末2CがIPネットワーク1に接続されたときにも、3個のIP電話端末2A,2B,2Cのそれぞれの端末一覧情報記憶部109の内容は、全く同一となる。
〔4台目のIP電話端末2のIPネットワーク1への接続時の動作〕
図6およびその続きである図7は、IPネットワーク1に対して、4台目のIP電話端末2(これを以下IP電話端末2Dとする)が接続されたときのシーケンス図である。この例では、4台目のIP電話端末2Dは、内線番号が「1004」で、IPアドレスが「192.168.0.4」である。
新規にIPネットワーク1に接続される内線番号「1004」のIP電話端末2Dにおいては、前記の場合と同様に、IPネットワーク1への接続前に、あるいは、IPネットワーク1に接続された後に、操作入力部114を通じて、接続登録用の「Register」メッセージの送り先が入力され、登録時相手先記憶部110に記憶される。この例においては、内線番号「1003」のIP電話端末2Cの宛先情報が、IP電話端末2Dの登録時相手先情報として入力され、IP電話端末2Dの登録時相手先記憶部110に記憶される。
そして、IPネットワーク1に、このIP電話端末2Dが接続されると、当該IP電話端末2Dは、前述したように、当該接続を自動検出し、登録時相手先記憶部110に記憶されている宛先情報を読み出して、当該宛先情報で示される内線番号「1003」のIP電話端末2Cに、IPネットワーク1を通じて、接続登録用の「Register」メッセージを送る。
このとき、図6に示すように、この接続登録用の「Register」メッセージのパケットのヘッダフィールドの「Contact」ヘッダには、自IP電話端末2Dの端末情報「1004@192.168.0.4」が、記述されている。また、ヘッダフィールドの「TTL」の値は、「2」とされる。その他は、通常用いられる「Register」メッセージのパケットと同様である。
IP電話端末2Cは、この「Register」メッセージを受け取ると、そのヘッダフィールドのTTLの値から1を減算した結果が、TTL=1であることから、端末一覧情報記憶部109に記憶されている他のIP電話端末を探す。すると、IP電話端末2AおよびIP電話端末2Bが他の端末として見つかるので、IP電話端末2Cは、当該IP電話端末2AおよびIP電話端末2Bに、受信した「Register」メッセージを転送する。この際に、転送する「Register」メッセージのヘッダフィールドのTTLは、元の「Register」のTTLの値から1を減算した値とし、ここでは、TTL=1とする。
次に、IP電話端末2Cは、自端末の端末一覧情報記憶部109に記憶されている端末情報の全てを、ヘッダフィールドの「Contact」ヘッダに記述した「200OK」の応答パケットを、「Register」メッセージの送信元のIP電話端末2Dに送る。
次に、IP電話端末2Cは、受信した「Register」メッセージのパケットのヘッダフィールドの「Contact」ヘッダに記述されているIP電話端末2Dの端末情報を、自端末の端末一覧情報記憶部109に追加記憶する。
一方、IP電話端末2Cからの「200OK」の応答パケットを受信した送信元のIP電話端末2Dは、当該「200OK」の応答パケットのヘッダフィールドの「Contact」ヘッダに記述されている全ての端末情報を、自端末の端末一覧情報記憶部109に追加記憶する(図7参照)。
また、IP電話端末2Cからの「Register」メッセージの転送を受けたIP電話端末2AおよびIP電話端末2Bは、そのヘッダフィールドのTTLの値から1を減算した結果が、TTL=0であることから、転送は不要と判断する。
そして、IP電話端末2AおよびIP電話端末2Bのそれぞれは、自端末の端末一覧情報記憶部109に記憶されている端末情報の全てを、ヘッダフィールドの「Contact」ヘッダに記述した「200OK」の応答パケットを、その送信元、つまり転送元のIP電話端末2Cに送る。
次に、IP電話端末2AおよびIP電話端末2Bのそれぞれは、受信した「Register」メッセージのパケットのヘッダフィールドの「Contact」ヘッダに記述されているIP電話端末2Dの端末情報を、自端末の端末一覧情報記憶部109に追加記憶する(図7参照)。
そして、IP電話端末2AおよびIP電話端末2Bのそれぞれからの「200OK」の応答パケットを受信した転送元のIP電話端末2Bは、当該「200OK」の応答パケットのヘッダフィールドの「Contact」ヘッダに記述されている端末情報を、自端末の端末一覧情報記憶部109の記憶内容に追加記憶させる。ここで、転送元のIP電話端末2Cは、転送先からの「200OK」の応答パケットのヘッダフィールドの「Contact」ヘッダに記述されている端末情報と、自端末の端末一覧情報記憶部109の記憶内容とが一致しているときは、当該端末情報を上書きする(図7参照)。
なお、転送元のIP電話端末2Cは、転送先からの「200OK」の応答パケットを受信する毎に、自端末の端末一覧情報記憶部109の記憶内容の追加記憶処理を実行する。
以上のようにして、4台目のIP電話端末2CがIPネットワーク1に接続されたときにも、4個のIP電話端末2A,2B,2C,2Dのそれぞれの端末一覧情報記憶部109の内容は、全く同一となる。
すなわち、この実施形態では、新規に接続されたIP電話端末の端末情報は、「Register」メッセージの直接送信または転送により、IPネットワークに接続済みの他のIP電話端末に送られて、それぞれの端末一覧情報記憶部109に追加記憶される。そして、IPネットワークに接続済みの他のIP電話端末の端末情報の全ては、「200OK」の応答パケットに含められて、新規に接続されたIP電話端末に送られる。新規に接続されたIP電話端末は、「200OK」の応答パケットに含められたIPネットワークに接続済みの他のIP電話端末の端末情報の全てを、自端末の端末一覧情報記憶部109に追加記憶するようにする。
これにより、この実施形態のIP電話システムを構成する複数のIP電話端末2の全ての端末情報を、それぞれのIP電話端末2は、端末一覧情報として、それぞれの端末一覧情報記憶部109に、共通に、保持するようになる。したがって、後述もするように、この端末一覧情報記憶部109の端末情報を用いることにより、この実施形態のIP電話システムを構成する複数のIP電話端末2は、相互に電話通信することが可能になる。したがって、この実施形態のIP電話システムでは、SIPサーバは不要となる。
<IP電話端末2のIPネットワーク1からの離脱時の動作>
図8は、IPネットワーク1に対して接続されて、この実施形態のIP電話システムを構成しているIP電話端末2の1つが、IPネットワーク1から外されて、離脱するときのシーケンス図である。この実施形態では、ユーザは、IP電話端末2をIPネットワーク1から外すのに先立ち、予め、定められた離脱要求の操作を、操作入力部114を通じて行うようにする。この実施形態では、例えば、通常入力としては存在しないであろうと推測されるキー操作(複数のキー操作を含む)が、この離脱要求の操作として、予め定義されている。
この図8の例は、図4、図5を用いて説明したようにして3台のIP電話端末2A,2B,2Cが、IPネットワーク1に接続されている状態において、IP電話端末2Cが、IPネットワーク1から外される前に、前述した離脱要求操作入力があった場合の例である。
IP電話端末2は、IP電話システムからの離脱時には、この実施形態では、ヘッダフィールドの端末の生存時間を示す「Expire」ヘッダの値を0(ゼロ)とした「Register」メッセージのパケットを、ユーザの操作に応じて送出するようにする。この明細書では、説明の都合上、「Expire」ヘッダの値を0(ゼロ)とした「Register」メッセージを、離脱要求を意味する「Un−Register」メッセージと称することとする。
図8の例では、実際のIPネットワーク1からの接続離脱に先立ち、ユーザの離脱要求操作に応じて、IP電話端末2Cは、登録時相手先記憶部110に記憶されている宛先情報を読み出して、当該宛先情報で示される内線番号「1002」のIP電話端末2Bに、IPネットワーク1を通じて、離脱要求の「Un−Register」メッセージを送る。
このとき、図8に示すように、この離脱要求の「Un−Register」メッセージのパケットのヘッダフィールドの「Contact」ヘッダには、自IP電話端末2Cの端末情報「1003@192.168.0.3」が、離脱する端末を示すものとして記述されている。また、ヘッダフィールドの「TTL」の値は、「2」とされる。なお、前述したように、ヘッダフィールドの「Expire」ヘッダの値は0とされるが、図8では省略する。その他は、通常用いられる「Register」メッセージのパケットと同様である。
IP電話端末2Bは、この「Un−Register」メッセージを受け取ると、そのヘッダフィールドのTTLの値から1を減算した結果が、TTL=1であることから、端末一覧情報記憶部109に記憶されている他のIP電話端末を探す。ここでは、他のIP電話端末とは、端末一覧情報記憶部109に記憶されている端末情報一覧のうちの、自端末と送信元以外のIP電話端末である。
当該他のIP電話端末の探索の結果、この例では、IP電話端末2Aが他の端末として見つかるので、IP電話端末2Bは、当該IP電話端末2Aに、受信した「Un−Register」メッセージを転送する。この際に、転送する「Un−Register」メッセージのヘッダフィールドのTTLは、元の「Un−Register」のTTLの値から1を減算した値とし、ここでは、TTL=1となる。
次に、「Un−Register」メッセージを直接に受信したIP電話端末2Bは、受信OKを示す「200OK」の応答パケットを、「Un−Register」メッセージの送信元のIP電話端末2Cに送る。
そして、次に、IP電話端末2Bは、受信した「Un−Register」メッセージの「Contact」ヘッダに記述されている端末情報を、自端末の端末一覧情報記憶部109に記憶されている端末情報一覧から削除する。
また、IP電話端末2Bからの「Un−Register」メッセージの転送を受けたIP電話端末2Aは、そのヘッダフィールドのTTLの値から1を減算した結果が、TTL=0であることから、さらなる転送は不要と判断する。
そして、IP電話端末2Aは、「200OK」の応答パケットを、その送信元、つまり転送元のIP電話端末2Bに送る。次に、IP電話端末2Aは、受信した「Un−Register」メッセージの「Contact」ヘッダに記述されている端末情報を、自端末の端末一覧情報記憶部109に記憶されている端末情報一覧から削除する。
一方、「Un−Register」メッセージの送信元のIP電話端末2Cは、IP電話端末2Bからの「200OK」の応答パケットを受信したことにより、IPネットワーク1からの離脱完了と判断する。これにより、IP電話端末2Cを、IP電話システム上の支障なく、IPネットワーク1から外すことができる。
図9およびその続きである図10は、図6、図7を用いて説明したようにして、4台目のIP電話端末2Dが接続された状態において、当該4台目のIP電話端末2DがIPネットワーク1から外された場合の例である。
図8の例と同様に、この例では、図9に示すように、実際のIPネットワーク1からの接続離脱に先立ち、ユーザの離脱要求操作に応じて、IP電話端末2Dは、登録時相手先記憶部110に記憶されている宛先情報を読み出して、当該宛先情報で示される内線番号「1003」のIP電話端末2Cに、IPネットワーク1を通じて、離脱要求の「Un−Register」メッセージを送る。
このとき、図9に示すように、この離脱要求の「Un−Register」メッセージのパケットのヘッダフィールドの「Contact」ヘッダには、自IP電話端末2Dの端末情報「1004@192.168.0.4」が、離脱する端末を示すものとして記述されている。また、ヘッダフィールドの「TTL」の値は、「2」とされる。なお、前述したように、ヘッダフィールドの「Expire」ヘッダの値は0とされるが、図9では省略する。
IP電話端末2Cは、この「Un−Register」メッセージを受け取ると、そのヘッダフィールドのTTLの値から1を減算した結果が、TTL=1であることから、端末一覧情報記憶部109に記憶されている他のIP電話端末を探す。
当該他のIP電話端末の探索の結果、この例では、IP電話端末2AおよびIP電話端末2Bが他の端末として見つかるので、IP電話端末2Cは、当該IP電話端末2AおよびIP電話端末2Bに、受信した「Un−Register」メッセージを転送する。この際に、転送する「Un−Register」メッセージのヘッダフィールドのTTLは、元の「Un−Register」のTTLの値から1を減算した値とし、ここでは、TTL=1となる。
次に、「Un−Register」メッセージを直接に受信したIP電話端末2Cは、受信OKを示す「200OK」の応答パケットを、「Un−Register」メッセージの送信元のIP電話端末2Dに送る。
そして、次に、IP電話端末2Bは、受信した「Un−Register」メッセージの「Contact」ヘッダに記述されている端末情報を、自端末の端末一覧情報記憶部109に記憶されている端末情報一覧から削除する。
また、IP電話端末2Cからの「Un−Register」メッセージの転送を受けたIP電話端末2AおよびIP電話端末2Bは、そのヘッダフィールドのTTLの値から1を減算した結果が、TTL=0であることから、さらなる転送は不要と判断する。
そして、IP電話端末2AおよびIP電話端末2Bは、「200OK」の応答パケットを、その送信元、つまり転送元のIP電話端末2Cに送る。次に、IP電話端末2AおよびIP電話端末2Bのそれぞれは、受信した「Un−Register」メッセージの「Contact」ヘッダに記述されている端末情報を、自端末の端末一覧情報記憶部109に記憶されている端末情報一覧から削除する(図10参照)。
一方、「Un−Register」メッセージの送信元のIP電話端末2Dは、IP電話端末2Cからの「200OK」の応答パケットを受信したことにより、IPネットワーク1からの離脱完了と判断する。これにより、IP電話端末2Dを、IP電話システム上の支障なく、IPネットワーク1から外すことができる。
以上のようにして、IP電話端末2をIP電話システムから離脱させるときには、上述のようにして、「Un−Register」メッセージをIPネットワーク1に送出することにより、IP電話システムを構成する他の全てのIP電話端末2に、当該離脱するIP電話端末の端末情報が伝達されて、それぞれの端末一覧情報記憶部109から、当該離脱するIP電話端末の端末情報が削除される。
<IP電話端末2の端末情報の自動更新・自動削除>
上述したIP電話端末2のIPネットワーク1への接続時の動作シーケンス例においては、説明を省略したが、当該接続時にIP電話端末2から送出される「Register」メッセージのヘッダフィールドには、当該IP電話端末2のIPネットワーク1上での生存時間を示す「Expire」ヘッダが含まれている。そして、この実施形態では、この「Expire」ヘッダの生存時間の情報を用いられて、この実施形態のIP電話システムにおける各IP電話端末2の自動更新・自動削除の制御処理が、以下に説明するようにしてなされる。
図11は、この実施形態のIP電話システムにおけるIP電話端末2の自動更新を説明するためのシーケンス図である。図11の例は、図3に示した最初の2台のIP電話端末2A,2BがIPネットワーク1に接続された状態におけるIP電話端末2Bについての自動更新を説明するためのシーケンス例である。
すなわち、この実施形態では、IP電話端末2BがIPネットワーク1に接続されると、IP電話端末2Bからは、ヘッダフィールドの「Contact」ヘッダに、当該IP電話端末2Bの端末情報が記述されると共に、「Expire」ヘッダに生存時間の時間値が記述されている「Register」メッセージが、前述したように、IP電話端末1Aに宛てて送られる。この例では、生存時間の時間値は「3600秒(=1時間)」とされている。
前述したように、IP電話端末2Aは、この「Register」メッセージを受けて、その「Contact」ヘッダに記述されているIP電話端末2Bの端末情報を、自端末の端末一覧情報記憶部109に追加記憶する。
さらに、この実施形態では、IP電話端末2Aは、「Register」メッセージの「Expire」ヘッダに生存時間の時間値を、当該IP電話端末2B用の更新・削除監視タイマー112(このIP電話端末2B用の更新・削除監視タイマーを112Bとする)にセットし、当該「Register」メッセージを受けた時刻を起点として、この自動更新・削除タイマー112Bをスタートさせるようにする。
なお、この図11の例は、2台のIP電話端末2A,2BのみがIPネットワーク1に接続されている場合のシーケンス例であったが、IPネットワーク1に3台以上のIP電話端末2が接続されている場合には、前述したように、IP電話端末2Bからの「Register」メッセージを直接に受信したIP電話端末2Aは、自端末の端末一覧情報記憶部109を参照して、IPネットワーク1に接続されている他の端末を探索し、探索の結果存在していると認識された他のIP電話端末2の全てに、「Register」メッセージを、転送するようにする。
転送された「Register」メッセージを受信したIP電話端末2は、IP電話端末2Aと同様にして、「Register」メッセージの「Contact」ヘッダに記述されているIP電話端末2Bの端末情報を、自端末の端末一覧情報記憶部109に追加記憶すると共に、「Register」メッセージの「Expire」ヘッダに生存時間の時間値を、当該IP電話端末2B用の更新・削除監視タイマー112Bにセットし、当該「Register」メッセージを受けた時刻を起点として、この自動更新・削除タイマー112Bをスタートさせるようにする。
一方、IP電話端末2Bは、IPネットワーク1に接続した後、相手先のIP電話端末2Aからの「200OK」の応答パケットを受信したときには、自端末更新タイマー113に、接続時に送出した「Register」メッセージのヘッダフィールドの「Expire」ヘッダの生存時間の時間値よりも短い時間間隔、例えば生存時間の1/2の時間、この例では、1800秒(=30分)をセットする。
そして、この自端末更新タイマー113が満了する毎に、この例では、1800秒(=30分)間隔で、IPネットワーク1への接続時と同じ「Register」メッセージを、登録時相手先記憶部110に記憶しているIP電話端末2Aに対して、繰り返し送出するようにする。
IP電話端末2Aは、「Register」メッセージを受信し、当該メッセージの「Contact」ヘッダに記述されている端末情報が、既に端末一覧情報記憶部109に記憶済みであると判別すると、当該端末情報のIP電話端末、ここではIP電話端末2B用の更新・削除監視タイマー112Bをリセットする。
なお、図示は省略するが、IPネットワーク1に3台以上のIP電話端末2が接続されている場合には、この自動更新のための「Register」メッセージを直接に受信したIP電話端末2Aは、自端末の端末一覧情報記憶部109を参照して、IPネットワーク1に接続されている他のIP電話端末2の全てに、当該自動更新のための「Register」メッセージを、転送するようにする。
この自動更新のための「Register」メッセージの転送を受けた他の端末は、上述のIP電話端末2Aと同様の処理をして、自動更新のための「Register」メッセージを送出してきたIP電話端末2Bについての更新・削除タイマー112Bをリセットする。
そして、図11に示すように、「Register」メッセージを受信したIP電話端末2Aは、自端末の端末一覧情報記憶部109に記憶されている端末情報のうち、送信元のIP電話端末2Bの端末情報を除くものを「Contact」ヘッダに含めた「200OK」の応答メッセージをIP電話端末2Bに送信する。これは、「Register」メッセージを受信したIP電話端末の送信元への応答処理として前述したものと全く同様である。
こうして、IP電話端末2がIPネットワーク1に接続されている間は、「Register」メッセージのヘッダフィールドの「Expire」ヘッダの生存時間の値よりも短い時間間隔で、IP電話端末2は、登録時相手先記憶部110に記憶されている相手端末に対して、「Register」メッセージの送出を繰り返す。
これにより、当該「Register」メッセージの送出を繰り返すIP電話端末に対応する更新・削除監視タイマー112は、常にリセットされて更新される。したがって、更新・削除監視タイマー112のタイマー時間が満了にならない限り、当該IP電話端末2がIPネットワーク1に接続されていることを、各IP電話端末2は確認することができる。
次に、図12は、この実施形態のIP電話システムにおけるIP電話端末2の自動削除を説明するためのシーケンス図である。図12の例は、3台以上のIP電話端末2がIPネットワーク1に接続されている状態において、上述のようにして、IP電話端末2Bが、自動更新のための「Register」メッセージを、IP電話端末2Aに対して繰り返し送出していたが、あるタイミングで、IP電話端末2BでのIPネットワーク1に対する接続が途切れる(リンクダウン)等により、自動更新のための「Register」メッセージを、送出しなくなった状態を示している。
すなわち、リンクダウンが生じる前の更新タイミングでは、図12に示すように、IP電話端末2Bからの「Register」メッセージを受け取ることで、IP電話端末2Aは、IP電話端末2Bについての更新・削除監視タイマー112Bをリセットすると共に、「200OK」の応答パケットをIP電話端末2Bに返す。
したがって、IP電話端末2Bについての更新・削除監視タイマー112Bは、リセット時点からのタイマー時間の計測を開始する。そして、ここでは、IP電話端末2Bはリンクダウンしているため、IP電話端末2Aは、リセット時点から1800秒(=30分)経過した時点でのIP電話端末2Bからの「Register」メッセージは受信しない。このため、IP電話端末2Bについての更新・削除監視タイマー112Bタイマー時間は3600秒(60分)にまで至り、タイマー時間が満了する。
IP電話端末2Aは、当該IP電話端末2Bについての更新・削除監視タイマー112Bのタイマー時間の満了を検知し、この検知に基づき、自端末の端末一覧情報記憶部109の端末情報一覧からIP電話端末2Bの端末情報を削除する。
また、IP電話端末2Aは、IP電話端末2Bについての離脱要求の「Un−Register」メッセージを生成する。すなわち、「Contact」ヘッダにIP電話端末2Bの端末情報を記述した「Un−Register」メッセージを生成する。
そして、IP電話端末2Aは、自端末の端末一覧情報記憶部109の端末情報一覧を参照し、自端末およびIP電話端末2Bとを除く他のIP電話端末2の全てに対して、生成したIP電話端末2Bについての離脱要求の「Un−Register」メッセージを送出する。ここでは、転送の必要はないので、送出される「Un−Register」メッセージのTTLは、TTL=1とされる。
この「Un−Register」メッセージを受け取った他のIP電話端末2の全ては、図8〜図10に示したように、それぞれの自端末の端末一覧情報記憶部109からIP電話端末2Bの端末情報を削除する。
以上のようにして、この実施形態では、IPネットワーク1に接続されたIP電話端末2のそれぞれについては、常に自動更新処理が行われると共に、自動更新処理がなされなかったときには、自動削除が行われる。したがって、図8〜図10に示したようなユーザの操作指示に基づく離脱要求操作がなされない場合でも、IPネットワーク1から離脱したIP電話端末2については、その離脱時から、この例では、最大3600秒(=1時間)経過後には、各IP電話端末2の端末一覧情報記憶部109から自動削除されることにより、IP電話システムから離脱するものとなる。
<IP電話端末2のIPネットワーク1への再接続時(図示は省略)>
IP電話端末2が離脱された後、当該IP電話端末2がIPネットワーク1に再接続されたときには、図3〜図7を用いて説明した、IPネットワーク1へのIP電話端末2の接続時のシーケンスが実行されて、IP電話端末2の各端末一覧情報記憶部109のそれぞれに再記憶(再登録)されるものである。
ただし、再接続時をしようとするIP電話端末2の登録時相手先記憶部110には、前回のIPネットワーク1への接続時の相手先が記憶されているので、当該再接続時をしようとするIP電話端末2は、その登録済みの相手先に対して、「Contact」ヘッダに自端末の端末情報を記述して、「Register」メッセージを送出する。
しかし、登録時相手先記憶部110に記憶されている相手先のIP電話端末も、IP電話システムから離脱している場合もある。その場合には、再接続時をしようとするIP電話端末2は、この実施形態では、端末一覧情報記憶部109に記憶されている、離脱時における端末情報一覧を参照して他の相手先を登録時相手先として記憶すると共に、その新規登録した登録時相手先に対して、「Register」メッセージを送出する。
さらに、登録時相手先記憶部110に記憶されている相手先のIP電話端末がIP電話システムから離脱していて、かつ、端末一覧情報記憶部109には、他のIP電話端末の端末情報が記憶されていないと判別したときには、再接続時をしようとするIP電話端末2は、ユーザに登録時相手先の入力を促し、それに対応するユーザの相手先入力を受け付けて、それを登録時相手先として記憶すると共に、その新規登録した登録時相手先に対して、「Register」メッセージを送出する。
また、再接続したIP電話端末2は、端末一覧情報記憶部109には、離脱時における端末情報一覧が記憶されているが、相手先から送られてくる「200OK」の応答パケットの「Contact」ヘッダに記述されている端末情報に、端末一覧情報記憶部109の内容を更新する。
<IP電話端末2の端末情報変更時>
この実施形態では、IP電話端末2の端末情報が変更されたとき、すなわち、内線番号またはIPアドレスが変更されたことを検知したときには、その変更時に、自動的に、前述した再接続時と同様にして、変更後の端末情報を「Contact」ヘッダに記述した「Register」メッセージを、登録時相手先記憶部110に記憶されている相手先に対して送出するようにする。
図13および図14は、IP電話端末2A,2B,2CがIPネットワーク1に接続されている状態において、IP電話端末2Cの端末情報のうち、IPアドレスが「192.168.0.3」から、「192.168.0.103」に変更された場合のシーケンス例を示すものである。
この例の場合に、IP電話端末2Cは、自端末の端末情報の変更がなされたことを検知すると、変更後の端末情報「1003:192.168.0.103」を「Contact」ヘッダに記述した「Register」メッセージを、登録時相手先記憶部110に記憶されている相手先であるIP電話端末2Bに対して送出する。
IP電話端末2Bは、この「Register」メッセージを受け取ると、そのヘッダフィールドのTTLの値から1を減算した結果が、TTL=1であることから、端末一覧情報記憶部109に記憶されている他のIP電話端末を探す。すると、IP電話端末2Aが他の端末として見つかるので、IP電話端末2Bは、当該IP電話端末2Aに、受信した「Register」メッセージを転送する。この際に、転送する「Register」メッセージのヘッダフィールドのTTLは、元の「Register」のTTLの値から1を減算した値とし、ここでは、TTL=1とする。
次に、IP電話端末2Bは、受信した「Register」メッセージの「Contact」ヘッダの送信元の端末情報を認識し、自端末の端末一覧情報記憶部109に記憶されている端末情報のうち、送信元の端末情報を除く、全てを、ヘッダフィールドの「Contact」ヘッダに記述した「200OK」の応答パケットを、送信元のIP電話端末2Cに送る。
なお、この例では、「Register」メッセージの「Contact」ヘッダの送信元の端末情報と、自端末の端末一覧情報記憶部109に記憶されている端末情報とを比較し、自端末の端末一覧情報記憶部109に記憶されている端末情報の中で、一部(内線番号またはIPアドレスのいずれか)が一致しているものがあれば、その端末情報は、送信元の端末情報として、「200OK」の応答パケットの「Contact」ヘッダに記述する端末情報から除外する。以下、同様である。
そして、IP電話端末2Bは、「Register」メッセージの「Contact」ヘッダの送信元の端末情報(IP電話端末2Cの端末情報)と、自端末の端末一覧情報記憶部109に記憶されているIP電話端末2Cの端末情報とが一部異なっているので、IP電話端末2Cの端末情報を、新たに受け取った「Register」メッセージの「Contact」ヘッダの送信元の端末情報に変更して、端末一覧情報を更新する(図14参照)。
一方、IP電話端末2Bからの「200OK」の応答パケットを受信した送信元のIP電話端末2Cは、当該「200OK」の応答パケットのヘッダフィールドの「Contact」ヘッダに記述されている全ての端末情報を、自端末の端末一覧情報記憶部109に追加記憶する(図14参照)。
また、IP電話端末2Bからの「Register」メッセージの転送を受けたIP電話端末2Aは、そのヘッダフィールドのTTLの値から1を減算した結果が、TTL=0であることから、さらなる転送は不要と判断する。
そして、IP電話端末2Aは、自端末の端末一覧情報記憶部109に記憶されている端末情報のうちの送信元の端末情報を除く全てを、ヘッダフィールドの「Contact」ヘッダに記述した「200OK」の応答パケットを、その送信元、つまり転送元のIP電話端末2Bに送る。
次に、IP電話端末2Aは、「Register」メッセージの「Contact」ヘッダの送信元の端末情報(IP電話端末2Cの端末情報)と、自端末の端末一覧情報記憶部109に記憶されているIP電話端末2Cの端末情報とが一部異なっているので、IP電話端末2Cの端末情報を、新たに受け取った「Register」メッセージの「Contact」ヘッダの送信元の端末情報に変更して、端末一覧情報を更新する(図14参照)。
そして、IP電話端末2Aからの「200OK」の応答パケットを受信した転送元のIP電話端末2Bは、当該「200OK」の応答パケットのヘッダフィールドの「Contact」ヘッダに記述されている端末情報を、自端末の端末一覧情報記憶部109の記憶内容に追加記憶させる。ここで、転送元のIP電話端末2Bは、転送先からの「200OK」の応答パケットのヘッダフィールドの「Contact」ヘッダに記述されている端末情報と、自端末の端末一覧情報記憶部109の記憶内容とが一致しているときは、当該端末情報を上書きする(図14参照)。
以上は、端末情報のうち、IPアドレスが変更された場合であるが、内線番号が変更された場合も同様のシーケンスにより、そのIP電話端末2の端末情報の変更がなされる。すなわち、SIPアドレスのIPアドレスまたはユーザ名のいずれかが変更されたときには、上述した変更時のシーケンスがなされる。
また、内線番号とIPアドレスの両方が変更された場合は、IP電話端末2が再接続された場合と同様のシーケンスとなる。この場合、各IP電話端末2の端末一覧情報には、変更前の端末情報が残るが、前述した自動更新・削除シーケンスにより、端末情報の変更後、1時間後には、当該端末情報は自動削除されることになる。
<IP電話端末2の処理動作>
以上説明した処理シーケンスを行う場合のIP電話端末2での処理動作について、以下に説明する。
〔IPネットワーク1への接続時の処理動作〕
図15に、IPネットワーク1に接続されたときの、IP電話端末2における処理動作の一例を示すフローチャートである。この図15のフローチャートの各ステップの処理動作は、CPU101が、ROM102に格納されているプログラムにしたがって、RAM103をワークエリアとして用いて実行するものである。後述するIP電話端末2の他の処理動作についても同様である。
IP電話端末2のCPU101は、IP電話端末2の電話通信用インターフェース104がIPネットワーク1に接続されたか否か判別する(ステップS101)。この接続には、IP電話端末2の全く新規の接続のみではなく、再接続を含むことは勿論である。
ステップS101で、IP電話端末2がIPネットワーク1に接続されたと判別したときには、CPU101は、登録時相手先記憶部110に相手先が登録されているか否か判別する(ステップS102)。
登録時相手先記憶部110に相手先が登録されていないと判別したときには、CPU101は、IPネットワーク1上に存在する(IPネットワーク1に既に接続されている)相手先となるIP電話端末2の宛先情報の入力を促すメッセージをディスプレイ115の画面に表示する(ステップS103)。
次に、CPU101は、このメッセージに応じてユーザにより入力される相手先のIP電話端末2の宛先情報を受け付けて、登録時相手先記憶部110に記憶する(ステップS104)。
ステップS102で、登録時相手先記憶部110に相手先が登録されていると判別したとき、また、ステップS104の次には、CPU101は、自端末の端末情報を記述した「Contact」と、生存時間を例えば3600秒と記述した「Expire」ヘッドとを含む「Register」メッセージを、登録時相手先記憶部110に記憶されている相手先のIP電話端末2に対して送信する(ステップS105)。
次に、CPU101は、相手先から「200OK」の応答パケットを受信したか否か判別し(ステップS106)、「200OK」の応答パケットを受信していないと判別したときには、予め定めた所定時間経過したか否か判別し(ステップS107)、経過していないと判別したときには、ステップS106に戻る。
また、ステップS107で、予め定めた所定時間経過したと判別したときには、CPU101は、自端末の端末一覧情報記憶部109に、他のIP電話端末2の端末情報が記憶されているか否か判別する(ステップS108)。
そして、ステップS108で、端末一覧情報記憶部109に、他のIP電話端末2の端末情報が記憶されていると判別したときには、CPU101は、端末一覧情報記憶部109の他のIP電話端末2の端末情報の1つを相手先として、登録時相手先記憶部110に記憶する(ステップS109)。そして、ステップS105に戻り、登録時相手先記憶部110の新たに記憶した相手先に、「Register」メッセージの送出を行い、このステップS105以降の処理を繰り返す。
また、ステップS108で、端末一覧情報記憶部109に、他のIP電話端末2の端末情報が記憶されていないと判別したときには、CPU101は、ステップS103に戻り、このステップS103以降の処理を繰り返す。
そして、ステップS106で、相手先から「200OK」の応答パケットを受信したと判別したときには、CPU101は、受信した「200OK」の応答のパケットの「Contact」ヘッダに記述されている端末情報により、自端末の端末一覧情報記憶部109の記憶内容を更新する(ステップS110)。
この場合、このステップS110では、前述したように、IP電話端末2を新規に接続した場合には、CPU101は、「Contact」ヘッダに記述されている端末情報を、自端末の端末一覧情報記憶部109に追加する。また、再接続の場合には、自端末の端末一覧情報記憶部109の記憶内容を、自端末の端末情報と「Contact」ヘッダに記述されている端末情報とからなる端末一覧情報に更新する。さらに、自動更新時の「200OK」の応答のパケットの受信時には、自端末の端末一覧情報記憶部109の記憶内容を、受信した「200OK」の応答のパケットの「Contact」ヘッダに記述されている端末情報に上書き更新する。
次に、CPU101は、自端末更新タイマー113をセットした後、この自端末更新タイマー113が満了して、自動更新タイミングになったか否か判別し(ステップS111)、自動更新タイミングになったと判別したときには、ステップS105に戻り、このステップS105以降の処理を繰り返す。
〔「Register」メッセージの受信時の処理動作〕
図16および図17は、IP電話端末2が、他のIP電話端末2から「Register」メッセージのパケットを受信したときの処理動作の一例を示すフローチャートである。
CPU101は、IPネットワーク1を通じた「Register」メッセージの受信を待ち(ステップS201)、「Register」メッセージを受信したと判別したときには、受信した「Register」メッセージの「Contact」ヘッダに記述されている端末情報が、自端末の端末一覧情報記憶部109に記憶されているか否かを判別する(ステップS202)。
受信した「Register」メッセージの「Contact」ヘッダに記述されている端末情報が、自端末の端末一覧情報記憶部109に記憶されていないと判別したときには、CPU101は、更新・削除監視タイマー112に、当該端末情報に対応付けた更新・削除監視タイマーを設ける。そして、CPU101は、受信した「Register」メッセージの「Expire」ヘッダに記述されている生存時間を、当該設けた更新・削除監視タイマーにセットして、タイマーをスタートする(ステップS203)。
受信した「Register」メッセージの「Contact」ヘッダに記述されている端末情報が、自端末の端末一覧情報記憶部109に記憶されていると判別したときには、CPU101は、当該「Contact」ヘッダに記述されている端末情報に対応付けられている更新・削除監視タイマーをリセットする(ステップS204)。これにより、「Register」メッセージの送信元端末のIP電話システムにおける自動更新がなされる。
そして、ステップS203およびステップS204の次には、CPU101は、「Register」メッセージのヘッダフィールドの「TTL」の値を抽出し、TTL−1>0であるか否か判別する(ステップS205)。
そして、ステップS205で、TTL−1>0であると判別したときには、CPU101は、自端末の端末一覧情報記憶部109の端末一覧に、自端末および送信元端末以外の他の端末が記憶されているか否か判別する(ステップS206)。
ステップS205で、TTL−1>0ではないと判別したとき、また、ステップS206で、自端末の端末一覧情報記憶部109の端末一覧に、自端末および送信元端末以外の他の端末が記憶されていないと判別したときには、CPU101は、自端末の端末一覧情報記憶部109の端末一覧情報から、送信元の端末情報を除いた端末情報の全てを「Contact」ヘッダに記述した「200OK」の応答パケットを送信元のIP電話端末2に送信する(ステップS207)。
次に、CPU101は、受信した「Register」メッセージの「Contact」ヘッダに記述されている端末情報により、自端末の端末一覧情報記憶部109の記憶内容を更新する(ステップS208)。すなわち、ステップS208では、「Contact」ヘッダに記述されている端末情報が、自端末の端末一覧情報記憶部109に存在しない場合には、追加記憶し、既に記憶されている場合には上書きする。また、端末情報の内線番号またはIPアドレスのいずれかが変更されていて不一致の場合には、新たに受信した端末情報に更新するようにする。そして、この処理ルーチンを終了する。
また、ステップS206で、自端末の端末一覧情報記憶部109の端末一覧に、自端末および送信元端末以外の他の端末が記憶されていると判別したときには、CPU101は、当該記憶されている他の端末の全てに対して、受信した「Register」メッセージを転送する。ただし、TTLを−1だけ減算して、この例では、TTL=1に変更する(図17のステップS211)。
次に、CPU101は、自端末の端末一覧情報記憶部109の端末一覧情報から、「Register」メッセージの送信元の端末情報を除いた端末情報の全てを「Contact」ヘッダに記述した「200OK」の応答パケットを送信元のIP電話端末2に送信する(ステップS212)。
次に、CPU101は、転送先からの「200OK」の応答パケットを待ち(ステップS213)、「200OK」の応答パケットを受信したと判別したときには、受信した「200OK」の応答のパケットの「Contact」ヘッダに記述されている端末情報により、自端末の端末一覧情報記憶部109の記憶内容を更新する(ステップS214)。
〔IP電話端末のシステムからの離脱時の処理動作〕
図18は、IP電話端末のIP電話システムからの離脱時の処理動作の一例を説明するためのフローチャートである。
CPU101は、IP電話端末2の操作入力部114を通じて、ユーザによるIP電話システムからの離脱要求操作があったかどうかを監視する(ステップS301)。
ステップS301で、離脱要求操作があったと判別したときには、CPU101は、「Contact」ヘッダに、自端末の端末情報を含め、「Expire」ヘッダの生存時間の値として「0」を記述した「Register」メッセージ、すなわち、「Un−Register」メッセージを、登録時相手先記憶部110に記憶されている登録時相手先に対して送信する(ステップS302)。なお、このとき、TTL=2としておく。
次に、CPU101は、相手先から「200OK」の応答パケットを受信したか否か判別し(ステップS303)、「200OK」の応答パケットを受信していないと判別したときには、予め定めた所定時間経過したか否か判別し(ステップS304)、経過していないと判別したときには、ステップS303に戻る。
また、ステップS304で、予め定めた所定時間経過したと判別したときには、CPU101は、自端末の端末一覧情報記憶部109に、他のIP電話端末2の端末情報が記憶されているか否か判別する(ステップS305)。
そして、ステップS305で、端末一覧情報記憶部109に、他のIP電話端末2の端末情報が記憶されていないと判別したときには、CPU101は、IPネットワーク1上に存在する(IPネットワーク1に既に接続されている)相手先となるIP電話端末2の宛先情報の入力を促すメッセージをディスプレイ115の画面に表示し、このメッセージに対応したユーザの入力を受け付ける(ステップS306)。
そして、ステップS306の次には、CPU101は、受け付けた相手先の宛先情報を、登録時相手先記憶部110に記憶し(ステップS307)、ステップS302に戻り、登録時相手先記憶部110の新たに記憶した相手先に、「Un−Register」メッセージの送出を行い、このステップS302以降の処理を繰り返す。
また、ステップS305で、端末一覧情報記憶部109に、他のIP電話端末2の端末情報が記憶されていると判別したときには、CPU101は、端末一覧情報記憶部109の他のIP電話端末2の端末情報の一つを相手先として、登録時相手先記憶部110に記憶する(ステップS307)。そして、ステップS302に戻り、登録時相手先記憶部110の新たに記憶した相手先に、「Un−Register」メッセージの送出を行い、このステップS302以降の処理を繰り返す。
そして、ステップS303で、「200OK」の応答パケットを受信したと判別したときには、CPU101は、IPネットワーク1からの離脱OKを、ディスプレイ115の表示画面に表示するなどして、ユーザに通知する(ステップS308)。以上で、この処理ルーチンを終了する。
次に、図19は、IP電話端末2の、「Un−Register」メッセージの受信時の処理動作の例を説明するためのフローチャートである。
すなわち、IP電話端末2のCPU101は、「Un−Register」メッセージの受信を監視し(ステップS311)、「Un−Register」メッセージを受信したと判別したときには、そのヘッダフィールドのTTLの値を抽出し、TTL−1>0であるか否か判別する(ステップS312)。
ステップS312で、TTL−1>0であると判別したときには、CPU101は、自端末の端末一覧情報記憶部109に、自端末および送信元のIP電話端末2以外の他のIP電話端末2が記憶されているか否か判別する(ステップS313)。このステップS313で、他のIP電話端末2が記憶されていると判別したときには、CPU101は、当該他のIP電話端末2の全てに対して、「Un−Register」メッセージを転送する(ステップS314)。ただし、TTLを−1だけ減算して、この例では、TTLの値は1に変更する。
そして、CPU101は、送信元のIP電話端末2に対して、「200OK」の応答パケットを送信する(ステップS315)。次に、CPU101は、送信元から受信した「Un−Register」メッセージの「Contact」ヘッダに記述されている端末情報を、自端末の端末一覧情報記憶部109から削除する(ステップS316)。そして、この処理ルーチンを終了する。
また、ステップS312で、TTL−1=1であると判別したときには、転送が必要ないと判断し、CPU101は、ステップS315にジャンプし、このステップS315以降の処理を実行する。同様に、ステップS313で、自端末の端末一覧情報記憶部109に、自端末および送信元のIP電話端末2以外の他のIP電話端末2が記憶されていないと判別したときにも、CPU101は、ステップS315にジャンプし、このステップS315以降の処理を実行する。
〔IP電話システムからのIP電話端末2の自動削除の処理動作〕
図20は、IP電話システムを構成し、IPネットワーク1に接続されているIP電話端末2のそれぞれにおいて実行されるIP電話端末2の自動削除についての処理動作の例を説明するためのフローチャートである。この図20の処理は、例えば、一定時間間隔で割り込み処理として繰り返す。
CPU101は、自端末の端末一覧情報記憶部109に記憶されている自端末以外のIP電話端末2についての更新・削除監視タイマーをチェックする(ステップS401)。そして、CPU101は、このチェックの結果、更新・削除監視タイマーのタイマー時間が満了となっているIP電話端末2があるか否か判別し(ステップS402)、タイマー時間が満了となっているIP電話端末2は存在しないと判別したときには、この処理ルーチンをそのまま抜ける。
ステップS402で、更新・削除監視タイマーのタイマー時間が満了となっているIP電話端末2があると判別したときには、CPU101は、端末一覧情報記憶部109からそのIP電話端末2の端末情報を削除する(ステップS403)。そして、削除後の端末一覧情報記憶部109に記憶されている自端末以外の全ての他のIP電話端末2に対して、削除したIP電話端末の端末情報を「Contact」ヘッダに記述した「Un−Register」メッセージを送信する(ステップS404)。この場合、転送の必要がないので、「Un−Register」メッセージのヘッダフィールドのTTLは、TTL=1とする。
そして、CPU101は、転送先からの「200OK」の応答パケットの受信を確認し(ステップS405)、その後、この処理ルーチンを終了する。
〔端末情報の変更時の処理動作〕
図21は、端末情報の変更時の処理動作の例を説明するためのフローチャートであり、この例は、端末情報のうちのIPアドレスが変更されたときの処理動作例である。
CPU101は、ユーザの操作入力部114を通じたキー入力操作により、端末情報、この例では、IPアドレスが変更されたか否かを監視し(ステップS501)、IPアドレスの変更操作があったと判別したときには、端末一覧情報記憶部109の自端末の端末情報を、変更されたIPアドレスを含むものに修正する(ステップS502)。
そして、CPU101は、変更後のIPアドレスを含む自端末の端末情報を記述した「Contact」ヘッダと、この例では3600秒と生存時間を記述した「Expire」ヘッダとをヘッダフィールドに含む「Register」メッセージを、登録時相手先記憶部110に記憶されている相手先に送信する(ステップS503)。この「Register」メッセージのヘッダフィールドのTTLは、TTL=2とする。
次に、CPU101は、相手先から「200OK」の応答パケットを受信したか否か判別し(ステップS504)、「200OK」の応答パケットを受信していないと判別したときには、予め定めた所定時間経過したか否か判別し(ステップS505)、経過していないと判別したときには、ステップS504に戻る。
また、ステップS505で、予め定めた所定時間経過したと判別したときには、CPU101は、自端末の端末一覧情報記憶部109に、他のIP電話端末2の端末情報が記憶されているか否か判別する(ステップS506)。
そして、ステップS506で、端末一覧情報記憶部109に、他のIP電話端末2の端末情報が記憶されていないと判別したときには、CPU101は、IPネットワーク1上に存在する(IPネットワーク1に既に接続されている)相手先となるIP電話端末2の宛先情報の入力を促すメッセージをディスプレイ115の画面に表示し、このメッセージに対応したユーザの入力を受け付ける(ステップS507)。
そして、ステップS507の次には、CPU101は、受け付けた相手先の宛先情報を、登録時相手先記憶部110に記憶し(ステップS508)、ステップS503に戻り、登録時相手先記憶部110の新たに記憶した相手先に、前記「Register」メッセージの送出を行い、このステップS503以降の処理を繰り返す。
また、ステップS506で、端末一覧情報記憶部109に、他のIP電話端末2の端末情報が記憶されていると判別したときには、CPU101は、端末一覧情報記憶部109の他のIP電話端末2の端末情報の一つを相手先として、登録時相手先記憶部110に記憶する(ステップS508)。そして、ステップS503に戻り、登録時相手先記憶部110の新たに記憶した相手先に、「Un−Register」メッセージの送出を行い、このステップS503以降の処理を繰り返す。
そして、ステップS504で、「200OK」の応答パケットを受信したと判別したときには、CPU101は、「200OK」の応答パケットの「Contact」ヘッダに記述されている端末情報により、自端末の端末一覧情報記憶部109の記憶内容を更新する(ステップS509)。
次に、CPU101は、自端末更新タイマー113が満了して、自動更新タイミングになったか否か判別し(ステップS510)、自動更新タイミングになったと判別したときには、ステップS503に戻り、このステップS503以降の処理を繰り返す。
<IP電話システムにおけるIP電話端末の電話発着信処理動作>
以上のようにして、実施形態のIP電話システムを構成する複数個のIP電話端末2の端末一覧情報記憶部109のそれぞれには、当該実施形態のIP電話システムを構成する複数個のIP電話端末2の端末情報が全て記憶される。そして、この実施形態では、IP電話端末2は、自端末の端末一覧情報記憶部109の記憶内容を用いることで、電話発着信動作を、SIPサーバを介さずに実行する。
図22は、この実施形態におけるIP電話端末2間での発着信シーケンスを示す図である。
この実施形態のIP電話端末2では、電話帳メモリ111を備えるが、この電話帳メモリ111には、端末一覧情報記憶部109に端末情報が記憶されている相手先の、電話番号や名前などが登録されるものである。
ユーザは、この電話帳メモリ111から選択することにより、あるいは、操作入力部114を通じて電話番号を直接に入力することにより、端末一覧情報記憶部109に端末情報が記憶されている相手先を指定して、発呼を行うことができる。
図22の例では、IP電話端末2Bのユーザが、端末一覧情報記憶部109の記憶内容109Fの「1001番」の相手先(この例では、IP電話端末2A)を選択して、発呼を行った状態を示している。
ユーザにより、上記の発呼操作がなされたIP電話端末2Bは、ヘッダフィールドの相手先情報として、前記「1001番」のIP電話端末2Aの端末情報(SIPアドレス)が記述されている「INVITE」メッセージを、IPネットワーク1を通じて送出する。なお、「INVITE」メッセージのヘッダフィールドの送信元情報としては、自端末の端末情報(SIPアドレス)が記述されている。
この「INVITE」メッセージを受信したIP電話端末2Aは、自端末の端末一覧情報記憶部109の記憶内容を参照し、自端末宛の「INVITE」メッセージであり、「1002番」のIP電話端末2Bからの着信であることを判別する。そして、自端末宛の「INVITE」メッセージであることから、当該着信に対して正常に応答して、IP電話端末2Aは、「100Trying」メッセージを、送信元のIP電話端末2Bに返す。
そして、IP電話端末2Aは、着信鳴動を行って着信を自端末のユーザに報知すると共に、送信元のIP電話端末2Bに、呼び出し中を示す「180Ringing」メッセージを送信する。
そして、IP電話端末2Aのユーザが、着信鳴動に対応して、着信応答操作をすると、IP電話端末2Aは、「200OK」の応答パケットを送信元のIP電話端末2Bに送信する。これにより、IP電話端末2BとIP電話端末2Aとの間に通話路が生成され、両端末間で、通話が可能となる。
図22の例は、相手先の端末情報(SIPアドレス)が正しいので、正常に、発着信動作がなされた場合である。これに対して、例えば端末情報の変更の通知の受け取りに失敗したなどの何らかの原因で、IP電話端末2Bの端末一覧情報記憶部109の記憶内容が誤った古い内容になっていて、相手先情報が正しくない場合の発着信シーケンス例を図23に示す。
図23の例は、IP電話端末2Bのユーザが、「1001番」の相手先を選択して、発呼を行ったが、正しい相手先情報ではなかったので、通話路が形成されなかった状態を示している。
すなわち、この図23の例では、IP電話端末2Bは、ヘッダフィールドの相手先情報として、前記「1001番」についての端末情報(SIPアドレス)である「1001@192.168.0.3」が記述されている「INVITE」メッセージを、IPネットワーク1を通じて送出する。
この例の端末情報のIPアドレスは、「192.168.0.3」であって、これは、この例では、IP電話端末2CのIPアドレスである。しかし、IP電話端末2Cは、「1003番」であって、「1001番」ではなく、このため、受信した「INVITE」メッセージは、SIPアドレスが自分宛でない(SIPアドレスは端末情報のそれと一致しているが、ユーザ名(この例では電話番号)が異なっている)として、着信を拒否し、送信元のIP電話端末2Bの不存在を示す「481 CALL//TRANSACTION Does Not Exist」メッセージ(相手先不存在メッセージと、以下称する)を送信する。
この相手先不存在メッセージを受信したIP電話端末2Bは、自端末のディスプレイ115に、送信先は、目的の宛先ではない、つまり、宛先が誤っていることを示すメッセージ表示をし、ユーザに報知する。
なお、図23のシーケンス例では、IP電話端末2Cは、着信拒否とすることで終了するようにしたが、IP電話端末2Cは、着信を拒否した後、自端末の端末情報を「Contact」ヘッダに含めた「Register」メッセージを、自分以外の他の全てのIP電話端末に送信するようにする処理を行うようにしても良い。
このようにすれば、IP電話端末2Cの正しい端末情報が全てのIP電話端末に伝達され、その後は、IP電話端末2Cは、正しく着信を受けることができるようになる。なお、誤っている端末情報は、自動更新されることはないので、その後、自動削除されることになる。
次に、図24のシーケンス例は、端末一覧情報記憶部109の記憶されている端末情報の相手先のIP電話端末に発呼を行ったが、IPネットワーク1には、当該対応するIP電話端末が存在しなかった場合のシーケンス例である。これは、例えば、発信先のIP電話端末が、離脱要求を行うことなく、IPネットワーク1から離脱してしまっていて、しかも、自動削除されるタイミングに未だ至っていない状態の際に生じる。
図24の例では、IP電話端末2Bのユーザが、端末一覧情報記憶部109の記憶内容109Fの「1001番」の相手先(この例では、IP電話端末2A)を選択して、発呼を行ったが、IP電話端末2Aが離脱していて応答がない状態を示している。
すなわち、図24に示すように、この例では、IP電話端末2Bは、ユーザの「1001番」を相手先として指定した発呼操作を受けて、前記「1001番」のIP電話端末2Aの端末情報(SIPアドレス)が記述されている「INVITE」メッセージを、IPネットワーク1を通じて送出する。
しかし、応答がないため、IP電話端末2Bは、所定回数、「INVITE」メッセージを再送出する。当該所定回数の再送出に対しても、応答がないと判別すると、IP電話端末2Bは、発呼動作を停止すると共に、自端末の端末一覧情報記憶部109から、そのときの相手先の端末情報を削除する。
そして、IP電話端末2Bは、端末一覧情報記憶部109に記憶されている他のIP電話端末に対して、当該削除した端末情報を「Contact」ヘッダに含めた「Un−Register」メッセージを送出し、その端末情報を削除させるようにする。
〔IP電話端末2での発信処理動作〕
以上のシーケンス例に示したIP電話端末2の発信時の、IP電話端末2の処理動作の例を説明するためのフローチャートを図25および図26に示す。
すなわち、CPU101は、ユーザにより操作入力部114を通じて発信相手先の指定および発信操作がなされたか否か監視し(ステップS601)、発信相手先の指定および発信操作がなされたと判別したときには、端末一覧情報記憶部109のうちの指定された相手先の端末情報を、相手先SIPアドレスとして含む「INVITE」メッセージを生成して、IPネットワーク1に送出する(ステップS602)。
次に、CPU101は、「200OK」の応答パケットを受信したか否かにより、相手先が着信応答したか否か判別し(ステップS603)、相手先応答を判別したときには、通話路を生成する(ステップS604)。そして、CPU101は、通話路の切断操作、または、切断要求メッセージを待って(ステップS605)、通話路を切断し(ステップS606)、この処理ルーチンを終了する。
また、ステップS603で、相手先の応答がないと判別したときには、CPU101は、相手先不存在メッセージを受信したか否か判別し(ステップS607)、相手先不存在メッセージを受信したと判別したときには、相手先は目的の宛先ではないことをディスプレイ115の画面にメッセージ表示してユーザに報知する(ステップS608)。そして、この処理ルーチンを終了する。
また、ステップS607で、相手先不存在メッセージを受信してはいないと判別したときには、CPU101は、発信時から予め定められた所定時間経過したか否か判別し(図26のステップS611)、所定時間経過してはいないと判別したときには、ユーザにより切断操作がなされたか否か判別する(ステップS612)。
そして、ステップS612で、ユーザにより切断操作されたと判別したときには、CPU101は、ステップS606にジャンプして、このステップS606以降の処理を実行する。また、ステップS612で、ユーザにより切断操作されてはいないと判別したときには、CPU101は、ステップS603に戻り、相手応答を監視する。
ステップS611で、所定時間経過したと判別したときには、CPU101は、発信先として指定した相手先の端末情報を、端末一覧情報記憶部109から削除する(ステップS613)。そして、CPU101は、削除した端末情報を「Contact」ヘッダに記述した「Un−Register」メッセージを、端末一覧情報記憶部109の自端末以外の他のIP電話端末2の全てに対して送信する(ステップS614)。
そして、CPU101は、「Register」メッセージの送信先からの「200OK」の応答パケットの受信を確認して、この処理ルーチンを終了する。
〔IP電話端末2での着信処理動作〕
以上のシーケンス例に示したIP電話端末2の着信時の、IP電話端末2の処理動作の例を説明するためのフローチャートを図27に示す。
CPU101は、着信(自端末のIPアドレスを宛先情報に含む「INVITE」メッセージの受信)を監視し(ステップS701)、着信があったと判別したときには、自端末の端末情報(SIPアドレス)と、「INVITE」メッセージの相手先情報のSIPアドレスとを照合する(ステップS702)。そして、CPU101は、その照合の結果、自端末のSIPアドレスと、「INVITE」メッセージの相手先情報のSIPアドレスとが一致しているか否か、つまり、IPアドレスとユーザ名(ここでは電話番号)の両方が一致しているか否かを判別する(ステップS703)。
ステップS703で、自端末宛の着信であると判別したときには、CPU101は、着信鳴動を行って着信をユーザに報知し(ステップS704)、ユーザによる着信応答操作があったか否か判別する(ステップS705)。
ステップS705で、着信応答操作がなされていないと判別したときには、CPU101は、発信元により切断されたか否か判別し(ステップS706)、切断されていないと判別したときには、ステップS704に戻り、このステップS704以降の処理を繰り返す。また、ステップS706で、切断されたと判別したときには、そのままこの処理ルーチンを終了する。
また、ステップS705で、着信応答操作がなされたと判別したときには、CPU101は、発信元との間に通話路を生成する(ステップS707)。そして、CPU101は、通話路の切断操作、または、切断要求メッセージを待って(ステップS708)、通話路を切断し(ステップS709)、この処理ルーチンを終了する。
さらに、ステップS703で、自端末の端末情報(SIPアドレス)と、「INVITE」メッセージの相手先情報のSIPアドレスとが一致してはいない、つまり、自端末の端末情報(SIPアドレス)と、「INVITE」メッセージの相手先情報のIPアドレスは一致するが、ユーザ名(この例では電話番号)が異なると判別したときには、CPU101は、CPU101は、相手先不存在メッセージを生成して、送信元に送信する(ステップS710)。そして、この処理ルーチンを終了する。
[実施形態の効果]
以上説明したように、この実施形態のIP電話システムにおいては、SIPサーバを用いることなく、IPネットワーク1に接続されたIP電話端末2間での通話が可能となる。
この場合に、この実施形態では、IP電話端末2は、IPネットワーク1に対して接続する際に、端末情報の登録をする必要があるが、そのためのSIPメッセージとしては、既存の「Register」メッセージを用いるので、構成が簡単になる。
また、上述の実施形態においては、IP電話システムに対するIP電話端末2の自動更新・削除がなされるので、IP電話端末2が故障して使用できなくなったときであっても、それに自動的に対応することができる。
[他の実施形態および変形例]
上述の実施形態では、IPネットワーク1への接続時に、登録された相手先に対して「Register」メッセージを送出するようにしたので、最初の接続時には、記憶部に相手先を登録するようにした。これは、この実施形態が、SIPにおいて規格上、既定されている「Register」を用いて接続登録することができるようにしたためである。
しかし、最初の接続登録時には、特別の接続登録用のメッセージパケットを定義し、そのメッセージパケットに、接続登録するIP電話端末の端末情報を含めてIPネットワークに送出し、他のIP電話端末は、当該メッセージパケットを受信して、新規に接続されたIP電話端末の端末情報を検知し、それをそれぞれの端末一覧情報記憶部に追加記憶するようにすることができる。
このようにすれば、IP電話端末2は、常に接続時に、その特別の接続登録用のメッセージパケットを自動的にIPネットワークに送出することができるので、上述の実施形態のようなユーザによる相手先の事前登録入力は不要となる。
また、上述の実施形態では、自動更新・自動削除用の監視タイマーは、端末一覧情報記憶部109に記憶される端末情報のすべてについて、各IP電話端末がそれぞれ備えるようにした。
しかし、上述の実施形態では、各IP電話端末2は、登録時相手先記憶部に記憶される相手先に対して、自動更新用の「Register」メッセージを送信するようにする。そこで、各IP電話端末2は、自分を相手先として「Register」メッセージを送信してくるIP電話端末の端末情報を、自動更新監視端末として、記憶するようにし、その監視端末についてのみ、それぞれ監視するようにし、その監視結果を他のIP電話端末に伝えるように構成してもよい。
その場合には、IP電話端末は、自端末に転送ではなく、直接に「Register」メッセージを送信してくるIP電話端末を、自動更新監視端末として記憶し、その記憶したIP電話端末について、自動更新・削除を監視し、その監視結果を他のIP電話端末に送るようにすればよい。
また、上述の実施形態では、IPネットワーク1への接続時などに送出する「Register」メッセージのTTLは、TTL=2として、「Register」メッセージを直接に受信したIP電話端末が、他の全てのIP電話端末に転送するようにした。しかし、前記「Register」メッセージに含めるTTLは、3以上とするようにしても良い。
その場合には、受信した「Register」メッセージのTTLがTTL>1であるIP電話端末は、自分と、送信元のIP電話端末の他の全てのIP電話端末に、TTLを−1した「Register」メッセージを転送するようにしても良い。この場合には、端末一覧情報は、複数回、繰り返し同じ情報が記憶更新されることになるが、IP電話システムを構成する複数のIP電話端末の全てが、同一の端末一覧情報を記憶することが、より保証されるものである。
また、受信した「Register」メッセージのTTLがTTL>3であるIP電話端末は、自分および送信元のIP電話端末以外の他の任意の1個のIP電話端末に、TTLを−1した「Register」メッセージを転送し、転送により受信した「Register」メッセージのTTLがTTL=1であるIP電話端末が、自分と送信元以外の他の全てに、TTLを−1した「Register」メッセージを転送するようにしても良い。