[ Top page ]

« DiffServ | メイン | 資源管理と SIP »

セッション制御:SIP

SIP の keep-alive 機構

SIP を使用した通信においては,SIP サーバがセッション確立を把握することができるし, SIP を使用してセッション条件が変更される際にもそれを把握できるが,接続がきれたときにそれを把握する機構がない. そこで,2003 年 10 月に発行されたインターネット・ドラフト draft-ietf-sip-session-timer-12 (S. Donovan, J. Rosenberg: Session Timers in the Session Initiation Protocol (SIP)) においては,SIP に keep-alive 機能を導入することによってその把握をはかっている.

この方法においては re-INVITE (既存のセッションに関する INVITE 要求) または UPDATE 要求によってセッションが持続しているかどうかを確認する. この要求メッセージは UAC が定期的に送信する.前記の draft-ietf-sip-session-timer-12 には,次のような 2 個の SIP プロキシを介する Alice と Bob との間の通信例があげられている (図 1).

       Alice      Proxy P1     Proxy P2        Bob
         |(1) INVITE  |            |            |
         |SE: 50      |            |            |
         |----------->|            |            |
         |(2) 422     |            |            |
         |MSE: 3600   |            |            |
         |<-----------|            |            |
         |(3) ACK     |            |            |
         |----------->|            |            |
         |(4) INVITE  |            |            |
         |SE:3600     |            |            |
         |MSE:3600    |            |            |
         |----------->|            |            |
         |            |(5) INVITE  |            |
         |            |SE:3600     |            |
         |            |MSE:3600    |            |
         |            |----------->|            |
         |            |(6) 422     |            |
         |            |MSE:4000    |            |
         |            |<-----------|            |
         |            |(7) ACK     |            |
         |            |----------->|            |
         |(8) 422     |            |            |
         |MSE:4000    |            |            |
         |<-----------|            |            |
         |(9) ACK     |            |            |
         |----------->|            |            |
         |(10) INVITE |            |            |
         |SE:4000     |            |            |
         |MSE:4000    |            |            |
         |----------->|            |            |
         |            |(11) INVITE |            |
         |            |SE:4000     |            |
         |            |MSE:4000    |            |
         |            |----------->|            |
         |            |            |(12) INVITE |
         |            |            |SE:4000     |
         |            |            |MSE:4000    |
         |            |            |----------->|
         |            |            |(13) 200 OK |
         |            |            |SE:4000     |
         |            |            |<-----------|
         |            |(14) 200 OK |            |
         |            |SE:4000     |            |
         |            |<-----------|            |
         |(15) 200 OK |            |            |
         |SE:4000     |            |            |
         |<-----------|            |            |
         |(16) ACK    |            |            |
         |----------->|            |            |
         |            |(17) ACK    |            |
         |            |------------------------>|
         |(18) UPDATE |            |            |
         |SE:4000     |            |            |
         |----------->|            |            |
         |            |(19) UPDATE |            |
         |            |SE:4000     |            |
         |            |------------------------>|
         |            |(20) 200 OK |            |
         |            |SE:4000     |            |
         |            |<------------------------|
         |(21) 200 OK |            |            |
         |SE:4000     |            |            |
         |<-----------|            |            |
         |            |(22) BYE    |            |
         |            |<------------------------|
         |(23) BYE    |            |            |
         |<-----------|            |            |
         |            |(24) 408    |            |
         |            |------------------------>|
図 1 2 個の SIP プロキシを介する Alice と Bob との間の通信例

Keep-alive 動作をおこなう re-INVITE メッセージ 1 の内容は次のとおりである (以下のメッセージの内容も前記の draft-ietf-sip-session-timer-12 から引用している).

   INVITE sip:bob@biloxi.example.com SIP/2.0
   Via: SIP/2.0/UDP pc33.atlanta.example.com;branch=z9hG4bKnashds8
   Supported: timer
   Session-Expires: 50
   Max-Forwards: 70
   To: Bob 
   From: Alice ;tag=1928301774
   Call-ID: a84b4c76e66710
   CSeq: 314159 INVITE
   Contact: 
   Content-Type: application/sdp
   Content-Length: 142

   (Alice's SDP not shown)

ここでは,keep-alive 目的に固有なヘッダを強調している. Session-Expires ヘッダにおいて re-INVITE メッセージの送信間隔を 50 秒としている. この要求に対する応答メッセージ 2 は次の通りである.

   SIP/2.0 422 Session Interval Too Small
   Via: SIP/2.0/UDP pc33.atlanta.example.com;branch=z9hG4bKnashds8
     ;received=192.0.2.1
   Min-SE: 3600
   To: Bob ;tag=9a8kz
   From: Alice ;tag=1928301774
   Call-ID: a84b4c76e66710
   CSeq: 314159 INVITE
   ...

すなわち,送信間隔がみじかすぎるためにサーバ・エラーの応答がかえされているが,Min-SE ヘッダにおいて送信間隔の最低値が 3600 秒と指定されている. そのため,クライアントは次のような re-INVITE メッセージ 4 を再送する.

   INVITE sip:bob@biloxi.example.com SIP/2.0
   Via: SIP/2.0/UDP pc33.atlanta.example.com;branch=z9hG4bKnashds9
   Supported: timer
   Session-Expires: 3600
   Min-SE: 3600
   Max-Forwards: 70
   To: Bob 
   From: Alice ;tag=1928301774
   Call-ID: a84b4c76e66710
   CSeq: 314160 INVITE
   Contact: 
   Content-Type: application/sdp
   Content-Length: 142

   (Alice's SDP not shown)

ここでは Session-Expires ヘッダにおける送信間隔が 3600 秒に改められ,Min-SE ヘッダも与えられている.

その後 SIP プロキシによってさらに送信間隔は 4000 秒に改められている (メッセージ 4, 8, 10). その後,Alice のユーザエージェントがクラッシュして re-INVITE の送信が停止し,それを検知した Bob のユーザエージェントが BYE メッセージ 22 を送信している. Alice のユーザエージェントは BYE にも応答しないため,SIP プロキシ P1 はサーバ・エラー応答 408 (Request Timeout) を送信している.

前記の draft-ietf-sip-session-timer-12 においては,上記のようなセッション持続監視の機能についてしか記述されていない. しかし,ここで使用する INVITE 要求および UPDATE 要求に次節以降で述べる資源管理のための SDP メッセージをのせたり,優先度指定のための SIP ヘッダを追加したりすることは可能だと考えられる. したがって,セッション持続だけでなく QoS をあわせて監視することも可能だと考えられる. このような QoS の持続的な監視については???において述べる.

Keywords:

コメントを投稿

Powered by
Movable Type 3.36