図1はネットワークのブロック図である。図1において、クライアント100−A、セッション管理サーバ200、クライアント100−Bは、SIP通信ネットワーク300で接続されている。また、クライアント100−Aとクライアント100−Bは、データ通信ネットワーク310で接続されている。クライアント100は、SIP通信に使用するIPアドレス(192.168.0.1または192.168.0.3)とAOR形式の識別子であるSIP−URI(sip:clientA@abc.comまたはsip:clientB@abc.com)、データ通信に使用するIPアドレス(192.168.1.1または192.168.1.3)を備える。セッション管理サーバ200は、SIP通信に使用するIPアドレス(192.168.0.2)と識別子(abc.com)を備える。
図2ないし図4を参照して、クライアントとセッション管理サーバの機能ブロックを説明する。ここで、図2はクライアントの機能ブロック図である。図3はセッション管理装置の機能ブロック図である。図4はクライアントのSIPメッセージ処理部の機能ブロック図である。
図2において、クライアント100は、ネットワークインターフェースカード(NIC)110と、NIC110のドライバ120と、仮想NIC130と、仮想NIC130の仮想ドライバ140と、TCP/IP処理部150と、SIPクライアント処理部160と、アプリケーション処理部170とから構成される。また、SIPクライアント処理部160は、送受信処理部161と、暗号化/復号化処理部162と、ポリシー管理部163と、セッション管理部164と、認証/証明書管理部165と、SIPメッセージ処理部166とから構成される。仮想NIC130は、1枚のNIC110に複数のIPアドレスを定義する。仮想ドライバ140は、複数のプログラムが同時にリソースを使用できるよう、ドライバ120をサポートし、仮想NIC130がNIC110を使用するプログラムのために、NIC110の状態を監視する。
図3において、セッション管理サーバ200は、ネットワークインターフェースカード(NIC)210と、ドライバ220と、TCP/IP処理部250と、SIPクライアント処理部260とから構成される。また、SIPクライアント処理部260は、認証/証明書管理部265と、SIPメッセージ処理部266とから構成される。
図4において、クライアント100のSIPメッセージ処理部166は、セッション制御処理部1661と、ロケーション管理部1662と、AOR解決処理部1663と、AOR登録処理部1664とから構成される。
図5を参照して、クライアントとセッション管理サーバのハードウェアブロックを説明する。ここで、図5は、クライアントとセッション管理サーバのハードウェアブロック図である。
図5において、クライアント100は、バス320に接続された中央演算装置(CPU)330と、メモリ340と、ハードディスクドライブ(HDD)350と、NIC110と、入出力部360とから構成される。同様に、セッション管理サーバ200は、バス320に接続された中央演算装置(CPU)330と、メモリ340と、ハードディスクドライブ(HDD)350と、NIC210と、入出力部360とから構成される。
図2または図3と図5との対比から明らかなように、図2のNIC110または図3のNIC210以外の機能ブロックは、図5のCPU330が実行するプログラムにより、実現される。
図6を参照して、2台のクライアントとセッション管理サーバとの間の認証処理から、パケット送信までのシーケンスを説明する。ここで、図6は、2台のクライアントとセッション管理サーバとの間の認証処理から、パケット送信までを説明するシーケンス図である。
図6において、セッション管理サーバ200に接続されたクライアント100−A、100−Bの電源が投入されると、クライアント100−Aとセッション管理サーバ200間およびクライアント100−Bとセッション管理サーバ200間で認証処理が実行される(T101、T111)。クライアント100−A、100−Bは、セッション管理サーバ200に対してログイン処理を行う。具体的には、クライアント100−A、100−Bは、ログインメッセージであるREGISTERを送信する(T102、T112)。REGISTERを受信したセッション管理サーバ200は、REGISTORに含まれるロケーション情報をSIPメッセージ処理部266に保持するAOR管理テーブル登録する。ここで、ロケーション情報とはクライアント100のSIP−URI(sip:clientA@abc.comまたはsip:clientB@abc.com)と、SIP通信ネットワーク300に接続されたポートのIPアドレス(192.168.0.1または192.168.0.3)である。セッション管理サーバ200は、200 OKをクライアント100−A、100−Bにそれぞれ送信し(T103、T113)、ログイン処理は完結する。
クライアント100−A、100−Bは、セッション管理サーバ200に、拡張SIPメッセージであるSETAORを送信する(T104、T114)。ここで、SETAORには、クライアント100のSIP−URI(sip:clientA@abc.comまたはsip:clientB@abc.com)と、データ通信ネットワーク310に接続されたポートのIPアドレス(192.168.1.1または192.168.1.3)が記載されている。セッション管理サーバ200は、SIPメッセージ処理部266に保持するAOR管理テーブルに、クライアント100−A、100−BのIPアドレス(192.168.1.1および192.168.1.3)とSIP−URI(sip:clientA@abc.comおよびsip:clientB@abc.com)を関連づけて登録する。セッション管理サーバ200は、200 OKをクライアント100−A、100−Bにそれぞれ送信する(T105、T115)。以上により、クライアント100のセッション管理サーバ200へのログインを終了する。なお、クライアント100−Aのログイン(T101〜T105)と、クライアント100−Bのログイン(T111〜T115)とは、互いに独立である。
クライアント100−Aのユーザが、アプリケーション処理部170のアプリケーションプログラムを立ち上げ、クライアント100−Bへのデータ送信が必要な処理を行ったことを契機として、クライアント100−Aは、セッション管理サーバ200にAOR取得要求メッセージ(GETAOR)を送信する(T121)。GETAORには、クライアント100−AのSIP−URI(sip:clientA@abc.com)と、通信相手(クライアント100−B)のIPアドレス(192.168.1.3)とが記載されている。
セッション管理サーバ200は、GETAORを受信すると通信相手のIPアドレスをキーにAOR管理テーブルを検索して、クライアント100−BのSIP−URI(sip:clientB@abc.com)を含む200 OKをクライアント100−Aに送信する(T122)。
クライアント100−Aは、受信した200 OKに含まれた通信相手のSIP−URI(sip:clientB@abc.com)を送信先とするINVITEをセッション管理サーバ200に送信する(T123)。セッション管理サーバ200は、クライアント100−Aに100Tryingを送信し(T124)、クライアント100−BにINVITEを送信する(T125)。INVITEを受信したクライアント100−Bは、セッション管理サーバ200に、一旦100Tryingを送信し(T126)、さらに200 OKを送信する(T127)。
セッション管理サーバ200は、クライアント100−Bからの200 OK受信により、200 OKをクライアント100−Aに送信する(T128)。クライアント100−Aは、セッション管理サーバ200からの200 OK受信により、クライアント100−BのSIP−URI(sip:clientB@abc.com)を送信先とするACKをセッション管理サーバ200に送信する(T129)。セッション管理サーバ200は、クライアント100−BにACKを送信する(T130)。
クライアント100−BがACKを受信することによって、クライアント100−Aとクライアント100−Bとの間のデータ通信ネットワーク310を介するデータ通信路が確立される。クライアント100−Aは、確立されたデータ通信路を介するパケットを送信する(T131)。
図7ないし図12を参照して、クライアントの内部の動作を説明する。ここで、図7は起動時の認証ネゴシエーションを説明するシーケンス図である。図8は起動時のロケーション登録を説明するシーケンス図である。図9はSETAORの送信と応答受信を説明するシーケンス図である。図10はGETAORの送信と応答受信を説明するシーケンス図である。図11はINVITEの送信と応答受信とACKの送信を説明するシーケンス図である。図12は終了時の認証ネゴシエーションと終了時のSETAORの送信と応答受信を説明するシーケンス図である。
図7において、クライアント100の電源が供給されるとブートプログラムが起動され、SIPクライアント処理部160の各部が起動し、ポリシー管理部163がポリシー管理データを読み込む。SIPメッセージ処理部166は認証要求を認証/証明書管理部165に送信する(T151)。認証要求を受信した認証/証明書管理部165は、認証要求メッセージを組み立て、メッセージをTCP/IP処理部150に送信する(T152)。メッセージを受信したTCP/IP処理部150はTCP/IPフレーム、Etherフレームを組み立て、パケットを仮想ドライバ140に送信する(T153)。パケットを受信した仮想ドライバ140は、フレームを送受信処理部161に送信する(T154)。フレームを受信した送受信処理部161は、ポリシー管理部163にポリシーチェック(暗号化要否)を問い合わせる(T155)。この場合、送受信処理部161は、ポリシー管理部163から、「暗号化せず」を受信し(T156)、フレームをドライバ120に送信する(T157)。フレームを受信したドライバ120は、NIC110から、セッション管理サーバ200にパケットを送信する(T158)。
セッション管理サーバ200からのパケットは、NIC110を介してドライバ120で受信する(T161)。パケットを受信したドライバ120は、フレームを送受信処理部161に送信する(T162)。フレームを受信した送受信処理部161は、ポリシー管理部163にポリシーチェック(受信パケットの問題有無)を問い合わせる(T163)。この場合、送受信処理部161は、ポリシー管理部163から、OKを受信し(T164)、フレームを仮想ドライバ120に送信する(T165)。仮想ドライバ120はドライバ110が受信したパケットをTCP/IP処理部150に送信する(T166)。パケットを受信したTCP/IP処理部150は、メッセージを取り出して、メッセージを認証/証明管理部165に送信する(T167)。メッセージを受信した認証/証明管理部165は、認証/証明書チェックを実施し、この場合問題ないこと認証処理終了として、SIPメッセージ処理部166に送信する(T168)。以上にて、クライアント100とセッション管理サーバ200との間の認証ネゴシエーションが終了する。
図8において、認証処理終了を受け取ったSIPメッセージ処理部166は、REGISTERメソッドを生成し、メッセージをTCP/IP処理部150に送信する(T171)。メッセージを受信したTCP/IP処理部150はTCP/IPフレーム、Etherフレームを組み立て、パケットを仮想ドライバ140に送信する(T172)。パケットを受信した仮想ドライバ140は、フレームを送受信処理部161に送信する(T173)。フレームを受信した送受信処理部161は、ポリシー管理部163にポリシーチェックを問い合わせる(T174)。この場合、送受信処理部161は、ポリシー管理部163から、「暗号化せず」を受信し(T175)、フレームをドライバ120に送信する(T176)。フレームを受信したドライバ120は、NIC110から、セッション管理サーバ200にREGISTERパケットを送信する(T177)。
セッション管理サーバ200からの200 OKをNIC110を介してドライバ120で受信する(T181)。パケットを受信したドライバ120は、フレームを送受信処理部161に送信する(T182)。フレームを受信した送受信処理部161は、ポリシー管理部163にポリシーチェックを問い合わせる(T183)。この場合、送受信処理部161は、ポリシー管理部163から、OKを受信し(T184)、フレームを仮想ドライバ120に送信する(T185)。仮想ドライバ120はドライバ110が受信したパケットをTCP/IP処理部150に送信する(T186)。パケットを受信したTCP/IP処理部150は、メッセージを取り出して、メッセージをSIPメッセージ処理部166に送信する(T187)。以上にて、クライアント100とセッション管理サーバ200との間のシグナリングチャンネルの確立が終了する。
図9において、シグナリングチャネル確立のメッセージを受け取ったSIPメッセージ処理部166は、SETAORメソッドを生成し、メッセージをTCP/IP処理部150に送信する(T191)。メッセージを受信したTCP/IP処理部150はTCP/IPフレーム、Etherフレームを組み立て、パケットを仮想ドライバ140に送信する(T192)。パケットを受信した仮想ドライバ140は、フレームを送受信処理部161に送信する(T193)。フレームを受信した送受信処理部161は、ポリシー管理部163にポリシーチェックを問い合わせる(T194)。この場合、送受信処理部161は、ポリシー管理部163から、「暗号化せず」を受信し(T195)、フレームをドライバ120に送信する(T196)。フレームを受信したドライバ120は、NIC110から、セッション管理サーバ200にSETAORパケットを送信する(T197)。なお、セッション管理サーバの200 OKの送信以降は図8と同様なので、説明を省く。
図10において、アプリケーション処理部170は、ユーザ操作に対応するメッセージをTCP/IP処理部150に送信する。メッセージを受信したTCP/IP処理部150はTCP/IPフレーム、Etherフレームを組み立て、パケットを仮想ドライバ140に送信する(T202)。パケットを受信した仮想ドライバ140は、フレームを送受信処理部161に送信する(T203)。フレームを受信した送受信処理部161は、ポリシー管理部163にポリシーチェックと問い合わせる(T204)。この場合、送受信処理部161は、ポリシー管理部163から、暗号化必要を受信し(T206)、SIPメッセージ処理部106に、AOR解決要求を送信する(T206)。
AOR解決要求を受け取ったSIPメッセージ処理部166は、GETAORメソッドを生成し、メッセージをTCP/IP処理部150に送信する(T207)。メッセージを受信したTCP/IP処理部150はTCP/IPフレーム、Etherフレームを組み立て、パケットを仮想ドライバ140に送信する(T208)。パケットを受信した仮想ドライバ140は、フレームを送受信処理部161に送信する(T209)。フレームを受信した送受信処理部161は、ポリシー管理部163にポリシーチェックと問い合わせる(T210)。この場合、送受信処理部161は、ポリシー管理部163から、暗号化せずを受信し(T211)、フレームをドライバ120に送信する(T212)。フレームを受信したドライバ120は、NIC110から、セッション管理サーバ200にGETAORパケットを送信する(T213)。なお、セッション管理サーバの200 OKの送信以降は図8と同様なので、説明を省く。
図11において、GETAORに対する200 OKを受け取ったSIPメッセージ処理部166は、INVITEメソッドを生成し、メッセージをTCP/IP処理部150に送信する(T211)。メッセージを受信したTCP/IP処理部150はTCP/IPフレーム、Etherフレームを組み立て、パケットを仮想ドライバ140に送信する(T212)。パケットを受信した仮想ドライバ140は、フレームを送受信処理部161に送信する(T213)。フレームを受信した送受信処理部161は、ポリシー管理部163にポリシーチェックと問い合わせる(T214)。この場合、送受信処理部161は、ポリシー管理部163から、「暗号化せず」を受信し(T215)、フレームをドライバ120に送信する(T216)。フレームを受信したドライバ120は、NIC110から、セッション管理サーバ200にINVITEパケットを送信する(T217)。セッション管理サーバの200 OKの送信からSIPメッセージ処理部166による受信までは、図8と同様なので、説明を省く。
200 OKを受信したSIPメッセージ処理部166は、ACKメソッドを生成し、メッセージをTCP/IP処理部150に送信する(T221)。メッセージを受信したTCP/IP処理部150はTCP/IPフレーム、Etherフレームを組み立て、パケットを仮想ドライバ140に送信する(T222)。パケットを受信した仮想ドライバ140は、フレームを送受信処理部161に送信する(T223)。フレームを受信した送受信処理部161は、ポリシー管理部163にポリシーチェックと問い合わせる(T224)。この場合、送受信処理部161は、ポリシー管理部163から、「暗号化せず」を受信し(T225)、フレームをドライバ120に送信する(T226)。フレームを受信したドライバ120は、NIC110から、セッション管理サーバ200にACKパケットを送信する(T227)。セッション管理サーバ200は、相手のクライアントにACKパケットを送信することにより、クライアント間のデータ通信路によるセッションが確立された状態となる。
図12において、アプリケーション処理部170は、アプリケーション終了をSIPメッセージ処理部160に通知する(T230)。アプリケーション終了を受け取ったSIPメッセージ処理部166は、expire=0のREGISTERメソッドを生成し、メッセージをTCP/IP処理部150に送信する(T231)。メッセージを受信したTCP/IP処理部150はTCP/IPフレーム、Etherフレームを組み立て、パケットを仮想ドライバ140に送信する(T232)。パケットを受信した仮想ドライバ140は、フレームを送受信処理部161に送信する(T233)。フレームを受信した送受信処理部161は、ポリシー管理部163にポリシーチェックと問い合わせる(T234)。この場合、送受信処理部161は、ポリシー管理部163から、「暗号化せず」を受信し(T235)、フレームをドライバ120に送信する(T236)。フレームを受信したドライバ120は、NIC110から、セッション管理サーバ200にexpire=0のREGISTERパケットを送信する(T237)。セッション管理サーバ200は、AOR管理テーブルから、REGISTERリクエストに記載されたIPアドレスと、SIP−URIを削除する。また、レジストラからも削除する。セッション管理サーバの200 OKの送信からSIPメッセージ処理部166による受信までは、図8と同様なので、説明を省く。
200 OKを受信したSIPメッセージ処理部166は、contact行のIPアドレスの次にmode=delを記載したSETAORメソッドを生成し、メッセージをTCP/IP処理部150に送信する(T241)。メッセージを受信したTCP/IP処理部150はTCP/IPフレーム、Etherフレームを組み立て、パケットを仮想ドライバ140に送信する(T242)。パケットを受信した仮想ドライバ140は、フレームを送受信処理部161に送信する(T243)。フレームを受信した送受信処理部161は、ポリシー管理部163にポリシーチェックと問い合わせる(T244)。この場合、送受信処理部161は、ポリシー管理部163から、「暗号化せず」を受信し(T245)、フレームをドライバ120に送信する(T246)。フレームを受信したドライバ120は、NIC110から、セッション管理サーバ200にSETAORパケットを送信する(T247)。SETAORリクエストを受信したセッション管理サーバ200は、AOR管理テーブルから、SETAORリクエストに記載されたIPアドレスと、SIP−URIを削除する。セッション管理サーバの200 OKの送信からSIPメッセージ処理部166による受信までは、図8と同様なので、説明を省く。200 OKを受信したSIPメッセージ処理部166は、アプリケーション処理部170に、アプリケーション終了完了通知を送信する(T250)。
図13ないし図16を用いて、クライアントの動作を説明する。ここで、図13と図14はクライアントのSIPクライアント処理部の動作フロー図である。図15はクライアントのTCP/IP処理部の受信時の動作フロー図である。図16はクライアントのSIPメッセージ処理部のメッセージ受信部の動作フロー図である。
図13において、仮想ドライバ140からのフレームを送受処理部161が受信したとき、フレームを送受処理部161は、まずポリシー管理部163に対して、暗号化が必要か問い合わせる(S301)。ポリシー管理部163からの回答が、「必要でない」ならば、そのままドライバ120へフレームを送信して(S302)、終了する。一方、ステップ301の回答が「必要」ならば、セッション管理部164に対して、セッション確立済みか確認する(S303)。確立済みならば、暗号化/復号化処理部162で暗号化処理(S304)のあと、ステップ302に遷移する。ステップ303で、確立していないならば、セッション管理部164に対して、シグナリング確立済みか確認する(S305)。確立していないならば、パケットを廃棄する(S306)。ステップ305で、確立済みならば、AOR解決処理部1663に対して、あて先AORが判明しているか確認する(S307)。判明しているならば、ステップ302に遷移する。一方、ステップ307で、判明していないならば、SIPメッセージ処理部166にAOR解決要求を送信して(S308)、終了する。
図14において、ドライバ120からのフレームを送受処理部161が受信したとき、ポリシー管理部163に対して、ポリシーチェックの確認をする(S321)。ポリシー管理部163からの回答が、「NG」ならば、そのままパケットを廃棄して(S322)、終了する。一方、ステップ321の回答が「OK」ならば、暗号化/復号化処理部162に対して、暗号化されているかの確認をする(S323)。暗号化/復号化処理部162からの回答が、「暗号化されていない」ならば、そのままパケットを仮想ドライバ140に送信して(S324)、終了する。一方、ステップ323の回答が「暗号化されている」ならば、暗号化/復号化処理部162で復号化処理し(S325)、ステップ324に遷移する。
図15において、仮想ドライバ140からのパケットを受信したTCP/IP処理部150は、TCP/IP、Etherフレームを分解する(S331)。TCP/IP処理部150は、送信ポートによる処理の振り分けを実施し(S332)、メッセージを受信する(S333〜S335)。
図16Aにおいて、TCP/IP処理部150より、メッセージを受信したSIPメッセージ処理部166は、SIPメッセージヘッダ解析を実施する(S341)。INVITEリクエストのとき、SIPメッセージ処理部166はパラメータチェックし実施する(S342)。NGのとき、エラー応答を生成し(S343)、送受信処理部161からTCP/IP処理部へメッセージを送信して(S344)、終了する。ステップ342において、OKのとき、セッション管理部164はセッション情報を登録する(S345)。SIPメッセージ処理部166は200 OKを生成し(S346)、ステップ344に遷移する。
ステップ341において、BYEリクエストのとき、セッション管理部164はセッション管理チェックを実施する(S348)。該当セッションがないとき、エラー応答を生成し(S349)、ステップ344に遷移する。ステップ348でセッションがあったとき、セッション管理部164はセッション情報を削除する(S350)。SIPメッセージ処理部166は200 OKを生成し(S351)、ステップ344に遷移する。
ステップ341において、200 OKのとき、セッション管理部164は成功応答解析実施する(S353)。ここで、成功応答解析とは200 OKに対応するリクエストの解析である。ステップ353でリクエストがREGISTERのとき、REGISTERのexpireが、「0」か判定する(S354)。「expire=0」なら、アプリケーション処理部170にアプリケーション終了完了通知を送信し(S355)、終了する。ステップ354で「expire≠0」なら、レジストラ情報を登録し(S356)、SETAORメソッドを生成し(S357)、ステップ344に遷移する。ステップ353でリクエストがINVITEのとき、SIPメッセージ処理部166は、ACKを生成し(S359)、ステップ344に遷移する。ステップ353でリクエストがREGISTERまたはINVITE以外のとき、A11(図16B)に遷移する。
ステップ341において、ACKのとき、処理を終了する。
ステップ341において、上述以外のリクエストまたは応答のとき、エラー応答を生成し(S360)、ステップ344に遷移する。
図16Bにおいて、SIPメッセージ処理部は166は、再び成功応答解析を行う(S361)。リクエストがGETAORのとき、AOR解決処理部1663、AOR登録処理を行う(S362)。SIPメッセージ処理部166は、INVITEメソッドを生成し(S363)、送受信処理部161からTCP/IP処理部へメッセージを送信する(S364)。ステップ361で、リクエストがSETAORまたはBYEならそのまま終了する。ステップ361で、リクエストが上述以外なら、リクエストを廃棄する。
図17を用いて、セッション管理サーバの動作を説明する。ここで、図17はセッション管理サーバのSIPクライアント処理部の動作フロー図である。なお、図17において、SETAORはコンタクト行が1行のみを前提としている。複数のコンタクト行を含む場合、「mode=new」(図34Bで説明)を含む場合は、若干複雑になる。
図17において、TCP/IP処理部250からSIPメッセージを受信したSIPクライアント処理部260は、SIPメッセージ処理部266にてSIPメッセージヘッダ解析を実施する(S401)。
SIPメッセージがSETAORのとき、ロケーション管理部1662はレジストラをチェックする(S402)。レジストラに登録が無いとき、SIPメッセージ処理部266は、エラー応答を生成し(S403)、TCP/IP処理部250へSIPメッセージを送信して(S404)、終了する。ステップ402で、レジストラに登録があるとき、SIPメッセージ処理部266は、パラメータチェックを実施する(S405)。NGのとき、エラー応答を生成し(S406)、ステップ404に遷移する。ステップ405でOKのとき、SIPメッセージ処理部266は、SETAORが登録か削除か判定する(S407)。登録のとき、AOR登録処理部1664はAORを登録する(S408)。SIPメッセージ処理部266は、200 OKを生成し(S409)、ステップ404に遷移する。一方、ステップ406で削除のとき、AOR登録処理部1664はAORを削除する(S410)。SIPメッセージ処理部266は、200 OKを生成し(S411)、ステップ404に遷移する。
ステップ401でSIPメッセージがREGISTERのとき、REGISTERメソッドの、expireが「0」か判定する(S421)。「0」でなければ、レジストラ登録し(S422)、AOR登録する(S423)。SIPメッセージ処理部266は、200 OKを生成し(S424)、ステップ404に遷移する。ステップ421で「0」のとき、AOR解決処理部1663は、AOR管理テーブルを検索し(S425)、検索がヒットしたとき、当該レコードを削除し(S426)、レジストラを削除する(S427)。SIPメッセージ処理部266は、200 OKを生成し(S428)、ステップ404に遷移する。なお、ステップ425でヒットしなかったとき、ステップ426をジャンプする。
ステップ401でSIPメッセージがGETAORのとき、図17BのA12に遷移する。
図17Bにおいて、図17Aのステップ401でSIPメッセージがGETAORのとき、SIPメッセージ処理部266はパラメータチェックを実施し(S431)、NGならエラー応答を生成し(S432)、TCP/IP処理部250へ送信して(S433)、終了する。ステップ431でOKのとき、AOR登録処理部1664はAOR管理テーブルを検索する(S434)。検索にヒットしないとき、SIPメッセージ処理部266は、エラー応答を生成し(S435)、ステップ433に遷移する。ステップ434で検索ヒットするとき、SIPメッセージ処理部266は、200 OKを生成し(S435)、ステップ433に遷移する。
図18を参照して、AOR管理テーブルを説明する。ここで、図18はAOR管理テーブルを説明する図である。
図18において、セッション管理サーバ200が保持するAOR管理テーブル270Aはクライアント100のIPアドレス271AとSIP−URI 272Aとを対応付けて管理している。図18に記載されたIPアドレス271AとSIP−URI 272はA、REGISTERリクエストまたはSETSORリクエストに基づいて登録される。
図19を参照して、ポリシー管理テーブルを説明する。ここで、図19はポリシー管理テーブルを説明する図である。
図19において、クライアント100のポリシー管理部163が保持するポリシー管理テーブル180は、始点IPアドレス181、そのサブネットマスク182、始点ポート番号183、終点IPアドレス184、そのサブネットマスク185、終点ポート番号186、プロトコルタイプ187、ポリシー188とからなる。ポリシー管理テーブル180は、セッションを確立してもよいかの判定を行うテーブルである。また、ポリシー188の「apply」は暗号を適用することを、「discard」は廃棄を、「bypass」は平文を適用することを意味する。
図20および図21を参照して、SIPメッセージを説明する。ここで、図20はSETAORメッセージを説明する図である。図21はINVITEメッセージを説明する図である。
図20Aにおいて、セッション管理サーバのAOR管理テーブルにSIP−URIとIPアドレスの対を書き込むSETAORメッセージは、リクエストラインにSIPメッセージ種類を示す「SETAOR」を含み、FromヘッダおよびToヘッダには、クライアント100−AのSIP−URIであるclientA@abc.comを含み、Contact行にはクライアント100−AのIPアドレス192.168.0.1および192.168.1.1を含んでいる。なお、クライアント100−AのIPアドレス192.168.0.1は、REGISTERリクエストでもAOR管理テーブルに登録されるが、SETAORに含んでいても良い。
図20Bにおいて、セッション管理サーバのAOR管理テーブルにSIP−URIとIPアドレスの対を書き込むSETAORメッセージは、セッション管理サーバのAOR管理テーブルからSIP−URIとIPアドレスの対を削除することも可能である。すなわち、Contact行にはクライアント100−AのIPアドレス192.168.0.1および192.168.1.1に続けて「mode=del」を含んでいる。この記載により、セッション管理サーバのAOR管理テーブルからSIP−URIとIPアドレスの対を削除する。なお、追加と削除は同じ、SETAORリクエストで可能である。
図21において、通信相手にセッションへの参加を招待する要求メッセージであるINVITEメッセージは、リクエストラインにSIPメッセージ種類を示す「INVITE」を含み、Fromヘッダにクライアント100−AのSIP−URIであるclientA@abc.comを含み、Toヘッダにクライアント100−BのSIP−URIであるclientB@abc.comを含む。ここで、Fromヘッダには送信元クライアントのURI、Toヘッダには受信元クライアントのURIが記載されている。また、INVITEメッセージボディのc行には、送信元であるクライアント100−Aのデータ通信ネット310に接続されたポートのIPアドレス 192.168.1.1を含んでいる。
本実施例に拠れば、クライアントにSIPを実装し、セッション管理管理サーバにSETAORメソッドを使用して、クライアントがデータ通信で使用するIPアドレスとSIP−URIを登録する事により、当該セッション管理サーバにREGISTER登録されていないポートでも、セキュアな通信が可能となる。
なお、上述した実施例ではREGISTERリクエストを拡張して、REGISTERリクエストでもAOR管理テーブルを更新するとした。これは、GETAORリクエストが常にAOR管理テーブルのみを参照すればよいからである。しかし、REGISTERリクエストでは、レジストラのみの更新として、レジストラを参照するGETAORとAOR管理テーブルを参照するGETAORを別に定義しても良い。また、上述したSETAORリクエストによれば、AOR管理テーブルのみを参照するGETAORリクエストであっても良い。
図22はネットワークのブロック図である。図22において、制御装置500−A、セッション管理サーバ200、制御装置500−Bは、SIP通信ネットワーク300で接続されている。また、制御装置500−Aと、クライアント100−Cとクライアント100−Dとは、データ通信ネットワーク310−1で接続されている。同様に、制御装置500−Bと、クライアント100−Eとクライアント100−Fとは、データ通信ネットワーク310−1で接続されている。制御装置(Gateway)500は、SIP通信に使用するIPアドレス(192.168.0.1または192.168.0.2)とAOR形式の識別子であるSIP−URI(sip:gwA@abc.comまたはsip:gwB@abc.com)、データ通信に使用するIPアドレス(192.168.1.1または192.168.1.2)を備える。セッション管理サーバ200は、SIP通信に使用するIPアドレス(192.168.0.2)と識別子(abc.com)を備える。クライアント400はデータ通信に使用するIPアドレス(192.168.1.2、192.168.1.3、192.168.2.2または192.168.2.3)を備える。
図23および図4を参照して制御装置の機能ブロックを説明する。ここで、図23は制御装置の機能ブロック図である。
図23において、制御装置500は、ネットワークインターフェースカード(NIC)510−A、510−Bと、NI5110のドライバ520と、TCP/IP処理部550と、SIPクライアント処理部560と、アプリケーション処理部570とから構成される。また、SIPクライアント処理部560は、送受信処理部561と、暗号化/復号化処理部562と、ポリシー管理部563と、セッション管理部564と、認証/証明書管理部565と、SIPメッセージ処理部566とから構成される。
制御装置500のSIPメッセージ処理部566は、実施例1の図4で説明したSIPメッセージ処理部166と同様な構成である。
図24を参照して、クライアントの機能ブロックを説明する。ここで、図24は実施例2のクライアントの機能ブロック図である。図24において、クライアント400は、NIC410、ドライバ420、TCPIP処理部450、アプリケーション部470から構成される。
図25を参照して、制御装置のハードウェアブロックを説明する。ここで、図25は制御装置のハードウェアブロック図である。図25において、制御装置500は、バス320に接続された中央演算装置(CPU)330と、メモリ340と、ハードディスクドライブ(HDD)350と、NIC510−A、510−Bと、入出力部360とから構成される。なお、クライアント装置400のハードウェアブロック図は、図5と同様である。
図23と図25、図24と図5との対比から明らかなように、図23のNIC510または図24のNIC410以外の機能ブロックは、図25または図5のCPU330が実行するプログラムにより、実現される。
図26を参照して、2台のクライアントと2台の制御装置とセッション管理サーバとの間の認証処理から、パケット送信までのシーケンスを説明する。ここで、図26は、2台のクライアントと2台の制御装置とセッション管理サーバとの間の認証処理から、パケット送信までを説明するシーケンス図である。
図26において、セッション管理サーバ200に接続された制御装置500−A、500−Bの電源が投入されると、制御装置500−Aとセッション管理サーバ200間および制御装置500−Bとセッション管理サーバ200間で認証処理が実行される(T501、T511)。制御装置500−A、500−Bは、セッション管理サーバ200に対してログイン処理を行う。具体的には、制御装置500−A、500−Bは、ログインメッセージであるREGISTERを送信する(T502、T512)。REGISTERを受信したセッション管理サーバ200は、REGISTORに含まれるロケーション情報をレジストラに登録し、200 OKを制御装置500−A、500−Bにそれぞれ送信し(T503、T513)、ログイン処理は完結する。
制御装置500−A、500−Bは、セッション管理サーバ200に、拡張SIPメッセージであるSETAORを送信する(T504、T514)。ここで、SETAORには、制御装置500のSIP−URI(sip:gwA@abc.comまたはsip:gwB@abc.com)と各ポートのIPアドレス(192.168.0.1、192.168.1.1または192.168.0.3、192.168.2.1)、配下のクライアントのIPアドレス(192.168.1.2、192.168.1.3または192.168.2.2、192.168.2.3)が記載されている。セッション管理サーバ200は、SIPメッセージ処理部566に保持するAOR管理テーブルに、制御装置500−A、500−Bの各ポートのIPアドレスおよび制御装置500配下のクライアントのIPアドレスと、SIP−URI(sip:gwA@abc.comおよびsip:gwB@abc.com)とを関連づけて登録する。セッション管理サーバ200は、200 OKを制御装置500−A、500−Bにそれぞれ送信する(T505、T515)。以上により、制御装置500のセッション管理サーバ200へのログインを終了する。
なお、制御装置500−Aのログイン(T501〜T505)と、制御装置500−Bのログイン(T511〜T515)とは、互いに独立である。
クライアント400−Cのユーザが、アプリケーション処理部470のアプリケーションプログラムを立ち上げ、クライアント400−Fへのデータ送信が必要な処理を行ったことを契機として、クライアント400−Cは、パケットを制御装置500−Aに送信する(T520)。制御装置500−Aは、セッション管理サーバ200にAOR取得要求メッセージ(GETAOR)を送信する(T521)。GETAORには、制御装置500−AのSIP−URI(sip:gwA@abc.com)と、通信相手(クライアント400−F)のIPアドレス(192.168.2.3)とが記載されている。
セッション管理サーバ200は、GETAORを受信すると通信相手のIPアドレスをキーにAOR管理テーブルを検索して、制御装置500−BのSIP−URI(sip:gwB@abc.com)を含む200 OKを制御装置500−Aに送信する(T522)。
制御装置500−Aは、受信した200 OKに含まれた通信相手のSIP−URI(sip:gwB@abc.com)を送信先とするINVITEをセッション管理サーバ200に送信する(T523)。セッション管理サーバ200は、制御装置500−Aに暫定応答である100Tryingを送信し(T524)、制御装置500−BにINVITEを送信する(T525)。INVITEを受信した制御装置500−Bは、セッション管理サーバ200に、暫定応答である100 Tryingを送信し(T526)、さらに200 OKを送信する(T527)。
セッション管理サーバ200は、制御装置500−Bからの200 OK受信により、200 OKを制御装置500−Aに送信する(T528)。制御装置500−Aは、セッション管理サーバ200からの200 OK受信により、制御装置500−BのSIP−URI(sip:gwB@abc.com)を送信先とするACKをセッション管理サーバ200に送信する(T529)。セッション管理サーバ200は、制御装置500−BにACKを送信する(T530)。制御装置500−BがACKを受信することによって、制御装置500−Aと制御装置500−Bとの間のSIP通信ネットワーク300を介するデータ通信路が確立される。
制御装置500−Aは、確立されたデータ通信路を介するパケットを制御装置500−Bに送信する(T531)。パケットを受信した制御装置500−Bは、クライアント400−4にパケットを送信する(T532)。
図27と図28を参照して、制御装置の内部の動作を説明する。ここで、図27は起動時の認証ネゴシエーションを説明するブロック図である。図28はGETAORないしINVITEとそれらの応答を説明するシーケンス図である。
図27において、制御装置500の電源が供給されるとブートプログラムが起動され、SIPクライアント処理部560の各部が起動し、ポリシー管理部563がポリシー管理データを読み込む。SIPメッセージ処理5166は認証要求を認証/証明書管理部565に送信する(T601)。認証要求を受信した認証/証明書管理部565は、認証要求メッセージを組み立て、メッセージをTCP/IP処理部550に送信する(T602)。メッセージを受信したTCP/IP処理部550はTCP/IPフレーム、Etherフレームを組み立て、パケットをドライバ510−Bに送信する(T603)。パケットを受信したドライバ510−Bはセッション管理サーバ200にパケットを送信する(T604)。
セッション管理サーバ200は、この場合認証OKのパケットを、ドライバ510−Bに送信する(T605)。ドライバ510−BはこのパケットをTCP/IP処理部550に転送する(T606)。TCP/IP処理部550はメッセージを取り出し、取り出したメッセージを認証/証明書管理部565に送信する。認証/証明書管理部565は、この場合認証OKなので、認証処理終了を送信し(T608)、認証ネゴシエーションを終了する。
図28において、クライアント400−Cがクライアント400−F宛てのパケットを送信する(T611)。パケットを受信したドライバ520−Aは、フレームを取り出して、ポリシー管理部563に送信する(T612)。ポリシー管理部563は、ポリシー管理テーブルを参照して、この場合暗号化要と判断し、暗号化/復号化処理部562にパケットを送信する(T613)。暗号化/復号化処理部562は、セッション確立済みか、またシグナリング確立済みか判定する。この場合、セッション未確立済、かつシグナリング確立済みなので、暗号化/復号化処理部562は、SIPメッセージ処理部566にパケットを送信する(T614)。SIPメッセージ処理部566は、GETAORリクエストを生成して、TCP/IP処理部550に送信する(T615)。TCP/IP処理部550は、パケットを生成して、ドライバ520−Bに送信する(T616)。ドライバ520−Bは、フレームを組み立て、GETAORメッセージをセッション管理サーバ200に送信する(T617)。
なお、GETAORメッセージの送信の詳細およびSETAORメッセージの送信の詳細は、図9および図10において、アプリケーション処理部170をクライアント400−Cと、SIPメッセージ処理部166をSIPメッセージ処理部566と、認証/証明書管理部165を認証/証明書管理部565と、TCP/IP処理部150をTCP/IP処理部550と、仮想ドライバ140をドライバ520−Aと、ポリシー管理部163をポリシー管理部563と、ドライバ200をドライバ520−Bと読み替えたものと同一である。
図28に戻って、GETAORメッセージを受信したセッション管理サーバ200は、200 OKをドライバ520−Bに送信する(T621)。ドライバ520−Bは、受信した200 OKが自IPアドレス宛か判定する(T622)。この場合、自IPアドレス宛なので、ドライバ520−Bは、メッセージをSIPメッセージ処理部566に送信する(T623)。SIPメッセージ処理部566は、受信した200 OKが、GETAORに対応することを判定し、200 OKに含まれるSIP−URIを保存する。SIPメッセージ処理部566は、INVITEリクエストを生成して、TCP/IP処理部550に送信する(T626)。TCP/IP処理部550は、パケットを生成して、ドライバ520−Bに送信する(T627)。ドライバ520−Bは、フレームを組み立て、INVITEメッセージをセッション管理サーバ200に送信する(T628)。
INVITEメッセージを受信したセッション管理サーバ200は、クライアント400−Fからの200 OKを受信して、200 OKをドライバ520−Bに送信する(T631)。ドライバ520−Bは、受信した200 OKが自IPアドレス宛か判定する(T632)。この場合、自IPアドレス宛なので、ドライバ520−Bは、メッセージをSIPメッセージ処理部566に送信する(T633)。SIPメッセージ処理部566は、受信した200 OKが、INVITEに対応することを判定し、セッション確立完了を、暗号化/復号化処理部562に送信する(T634)。SIPメッセージ処理部566は、ACK応答を生成して、TCP/IP処理部550に送信する(T635)。TCP/IP処理部550は、パケットを生成して、ドライバ520−Bに送信する(T636)。ドライバ520−Bは、フレームを組み立て、ACK応答をセッション管理サーバ200に送信する(T637)。
以上の手順で、クライアント400−Cとクライアント400−Fの間のセッション(データチャネル)が確立された。なお、INVITEリクエストに対する200 OKおよびACKの詳細は、T622とT632を除いて、図11と同様である。ここで、T622とT632は、制御装置500がクライアント400を接続しているために必要な判断である。
以下、図29ないし図32を参照して、制御装置の各機能ブロックの動作を説明する。ここで、図29はドライバの動作を説明するフロー図である。図30はポリシー管理部の動作を説明するフロー図である。図31は暗号化/復号化処理部の動作を説明するフロー図である。図32はSIPメッセージ処理部の動作を説明するフロー図である。なお、ここでは実施例1と異なる点についてのみ、説明する。
図29において、ドライバ520−Bが、NIC510−Bからパケットを受信すると、TCP/IP処理部でTCP/IPフレームおよびEtherフレームを分解する(S701)。ドライバ520−Bは、自装置のIPアドレス宛か判定する(S702)。ドライバ520−Bは、自IPアドレス宛ならばSIPメッセージ処理部へフレームを送信する(S703)。一方、ステップ702で自IPアドレス宛でないならば、ドライバ520−Bは、ポリシー管理部へフレームを送信する(S704)。
図30において、ポリシー管理部563はドライバ520−Aからフレームを受信すると、ポリシー管理テーブルを参照し、ポリシーを選択する(S711)。選択されたポリシーが「Aapply」ならば、ポリシー管理部563は、パケットを暗号化/復号化処理部562に送信する(S712)。「bypass」ならば、ポリシー管理部563は、パケットをドライバ520−Bに送信する(S713)。「discard」ならば、ポリシー管理部563は、パケットを廃棄する(S714)。
図31において、ドライバ520−Aからのパケットを受信したとき、暗号化/復号化処理部562は、セッション管理部564にセッション確立済みか問合せる(S721)。確立済みなら、暗号化/復号化処理部562は、暗号化処理を実施し(S722)、TCP/IP処理部550にメッセージを送信する(S723)。ステップ721で確立していないなら、ドライバ520−Aは、セッション管理部564にシグナリング確立済みか問い合せる(S724)。確立済みなら、暗号化/復号化処理部562は、SIPメッセージ処理部566にメッセージを送信する(S725)。ステップ724で確立していないなら、ドライバ520−Aは、パケットを廃棄する(S726)。
図32において、暗号化/復号化処理部562からパケットを受信したとき、SIPメッセージ処理部566は、宛先AORが判明しているか確認する(S731)。判明していないとき、GETAORメッソッドを生成し(S732)、TCP/IP処理部550にメッセージを送信する(S734)。一方、ステップ731で判明しているとき、SIPメッセージ処理部566は、INVITEメッソッドを生成し(S733)、ステップ734に遷移する。
図33を参照して、AOR管理テーブルを説明する。ここで、図33はAOR管理テーブルを説明する図である。
図33において、セッション管理サーバ200が保持するAOR管理テーブル270Bは、制御装置500とクライアント400のIPアドレス271Bと、制御装置500のSIP−URI 272Bとを対応付けて管理している。図18に記載されたIPアドレス271BとSIP−URI 272Bは、SETAORリクエストに基づいて登録される。
なお、ポリシー管理テーブルは図19を用いて説明した通りである。
図34および図35を参照して、SIPメッセージを説明する。ここで、図34はSETAORメッセージを説明する図である。図35はINVITEメッセージを説明する図である。
図34Aにおいて、セッション管理サーバのAOR管理テーブルにSIP−URIとIPアドレスの対を書き込むSETAORメッセージは、リクエストラインにSIPメッセージ種類を示す「SETAOR」を含み、FromヘッダおよびToヘッダには、制御装置500−AのSIP−URIであるgwA@abc.comを含み、Contact行には制御装置500−AのIPアドレス192.168.0.1および192.168.1.1ならびにクライアント400−C、400−DのIPアドレス192.168.1.2および192.168.1.3を含んでいる。
図34Bにおいて、セッション管理サーバのAOR管理テーブルにSIP−URIとIPアドレスの対を書き込むSETAORメッセージは、セッション管理サーバのAOR管理テーブルからSIP−URIとIPアドレスの対を一括削除することも可能である。すなわち、Contact行には制御装置500−AのIPアドレス192.168.1.1に続けて「mode=new」を含んでいる。この記載により、セッション管理サーバのAOR管理テーブルから当該SIP−URIに対応する全てのIPアドレスの対を削除したあと、Contact行に記載されたIPアドレスを追加する。制御装置500は、配下のクライアントの数か頻繁に増減するので、「mode=new」により、セッション管理サーバのAOR管理テーブルの内容を自装置と合わせることができる。なお、「mode=new」はどのContact行に記載されても、同じ結果となる。
図35において、通信相手にセッションへの参加を招待する要求メッセージであるINVITEメッセージは、リクエストラインにSIPメッセージ種類を示す「INVITE」を含み、Fromヘッダに制御装置500−AのSIP−URIであるgwA@abc.comを含み、Toヘッダに制御装置500−BのSIP−URIであるgwB@abc.comを含む。ここで、Fromヘッダには送信元クライアントのURI、Toヘッダには受信元クライアントのURIが記載されている。また、INVITEメッセージボディのc行には、送信元である制御装置500−Aに接続されたクライアント400−CのIPアドレス 192.168.1.2を含んでいる。
本実施例に拠れば、セッション管理管理サーバにSETAORメソッドにより、クライアントのIPアドレスとクライアントを接続する制御装置のSIP−URIを登録する事により、クライアントにSIPを実装しなくとも、セキュアな通信が可能となる。
100…クライアント、110…ネットワークインターフェースカード(NIC)、120…ドライバ、130…仮想NIC、140…仮想ドライバ、150…TCP/IP処理部、160…SIPクライアント処理部、170…アプリケーション処理部、180…ポリシー管理テーブル、200…セッション管理サーバ、210…ネットワークインターフェースカード(NIC)、220…ドライバ、250…TCP/IP処理部、260…SIPクライアント処理部、270…AOR管理テーブル、300…SIP通信ネットワーク、310…データ通信ネットワーク、320…バス、330…中央演算装置(CPU)、340…メモリ、350…ハードディスクドライブ(HDD)、360…入出力部、400…クライアント、410…ネットワークインターフェースカード(NIC)、420…ドライバ、450…TCP/IP処理部、470…アプリケーション処理部、500…制御装置、510…ネットワークインターフェースカード(NIC)、520…ドライバ、550…TCP/IP処理部、560…SIPクライアント処理部、570…アプリケーション処理部、580…ポリシー管理テーブル。