[RFC 4028]Session Timers in the Session Initiation Protocol (SIP)

=================================== Keyword ======================================

Header : Session-Expires, Min-SE
Option-Tag : timer

=================================== Overview ======================================
Message처리중 오류나 중간의 Proxy이상등올 자원해제가 안되는 경우를 위한 Session-Timer에 대한 설명

=================================== Table of Contents ==============================
    1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  Overview of Operation  . . . . . . . . . . . . . . . . . . .   4
   4.  Session-Expires Header Field Definition  . . . . . . . . . .   6
   5.  Min-SE Header Field Definition . . . . . . . . . . . . . . .   8
   6.  422 Response Code Definition . . . . . . . . . . . . . . . .   8
   7.  UAC Behavior . . . . . . . . . . . . . . . . . . . . . . . .   9
       7.1.  Generating an Initial Session Refresh Request  . . . .   9
       7.2.  Processing a 2xx Response  . . . . . . . . . . . . . .   9
       7.3.  Processing a 422 Response  . . . . . . . . . . . . . .  11
       7.4.  Generating Subsequent Session Refresh Requests . . . .  11
   8.  Proxy Behavior . . . . . . . . . . . . . . . . . . . . . . .  12
       8.1.  Processing of Requests . . . . . . . . . . . . . . . .  13
       8.2.  Processing of Responses  . . . . . . . . . . . . . . .  14
       8.3.  Session Expiration . . . . . . . . . . . . . . . . . .  15
   9.  UAS Behavior . . . . . . . . . . . . . . . . . . . . . . . .  15
   10. Performing Refreshes . . . . . . . . . . . . . . . . . . . .  17
   11. Security Considerations  . . . . . . . . . . . . . . . . . .  18
       11.1. Inside Attacks . . . . . . . . . . . . . . . . . . . .  18
       11.2. Outside Attacks  . . . . . . . . . . . . . . . . . . .  19
   12. IANA Considerations  . . . . . . . . . . . . . . . . . . . .  19
       12.1. IANA Registration of Min-SE and Session-Expires
             Header Fields  . . . . . . . . . . . . . . . . . . . .  19
       12.2. IANA Registration of the 422 (Session Interval Too
             Small) Response Code . . . . . . . . . . . . . . . . .  20
       12.3. IANA Registration of the 'timer' Option Tag  . . . . .  20
   13. Example Call Flow  . . . . . . . . . . . . . . . . . . . . .  20
   14. Acknowledgements . . . . . . . . . . . . . . . . . . . . . .  25
   15. References . . . . . . . . . . . . . . . . . . . . . . . . .  25
       15.1. Normative References . . . . . . . . . . . . . . . . .  25
       15.2. Informative References . . . . . . . . . . . . . . . .  26
   Authors' Addresses. . . . . . . . . . . . . . . . . . . . . . . . 26
   Full Copyright Statement. . . . . . . . . . . . . . . . . . . . . 27

=================================== 내용 정리 ===================================
RFC 4028에서는 자원이 남아 해지 안되는것을 해결하기 위한 Sessoin-Timer를 설명하고 있다.
Session-Timer란 발/착신자 어느 쪽에서도 Session에 관련 Timer를 두어 주기적으로 Session이 유효한지 체크하고,
Session의 Timer Expire시 Dialog 해지를 위한 것이다.
이때, Session-Timer를 지원하는지 확인하는 방법은 Supported에 추가된 "timer" Option-tag다.
만약 존재한다면 이것은 Session-Timer를 지원한다고 볼 수 있다.
Session-Timer를 지원하면 Session-Expires, Min-SE Header 또한 지원해야 하는데, 이는
Session-Timer를 시작및 관리 하기 위한 추가된 Header이다.

== Session-Expires Header ==

Session-Expires Header는 Session-Timer의 값과 Refresh할 측(UAC/UAS)의 정보를 함께 포함한다.
이 헤더는 INVITE와 UPDATE Message와 이에 응하는 Response에 사용할 수 있다.
이 해더의 delta-time이라는 값이 있는데, 이 값이 Refrash와 자원 해지 정보로 사용된다.
이 값은 초로 표현되는데 90보다 크고 1800 (30분) 보다 작은 값을 선택하기를 권고하고 있다.
90보다 커야 한다는 이유는, 너무 자주 Session-Refrash 메시지를 주고 받을 경우 네트워크에 부하를 주기 때문이다.
refresher의 값에서 UAC와 UAS는 발 착신자를 의미한다.

--------------- Session-Expires Header ABNF -----------------
Session-Expires = ("Session-Expires" / "x") HCOLON delta-seconds *(SEMI se-params)
se-params = refresher-param / generic-param
refresher-param = "refresher" EQUAL  ("uas" / "uac")
ex = "Session-Expires:900;refresher=uac"
----------------------------------------------------------------



== Min-SE Header ==

Min-SE Header는 자신의 Session-Timer의 최소값을 상대측에게 알려주기 위해 사용된다.
만약 수신측에서 자신의 Session-TImer값보다 상대측값이 작을 경우 422 Response와 함께 전달하여, 호를 거부 할 수 있다.
수신측이 만약 422 Response를 전달 하고자 하면, 반드시 Min-Se Header를 메시지에 포함 해야 한다.

---------------- Min-SEI Header ABNF -----------------
Min-SE  =  "Min-SE" HCOLON delta-seconds *(SEMI generic-param)
-------------------------------------------------------



== 주의점 ==

Session-Timer를 사용할 때에는 다음과 같은 주의사항이 필요하다.
1. Session-Timer를 사용하는 Session이 성립되었다면 Refrasher는 성립된 Session-Time값의 1/2에 Refresh 동작을 수행해야 한다.
2. 422 Response에는 반드시 Min-SE가 들어가야 한다.
3. 422 Response를 받은 발신측이 호를 재시도 할 때는, 이전에 실패한 INVITE의 Call-ID, To, From Header의 값과 같은 값을 사용하여 INVITE를 재시도 해야 한며, 422 Response의 Min-SE보다 큰값을 Session-Expires값에 사용해야 한다. (다르게 사용해본적은 없다..)
4. Session-Timer가 Expire되었다면, BYE를 상대측에 보내야 한다. 하지만, UA가 아니라면, 할당된 자원만 해지 해야 한다.
5. Session-Refrash는 Re-INVITE와 UPDATE 메시지를 통해 사용할 수 있는데, UPDATE를 지원한다면, 되도록 UPDATE를 쓰는것을 권장한다. (권고안 내용)
6. Refrasher는 일반적으로 발신측에서 결정한 값을 사용하는데, 만약 refresher parameter가 없다면, 수신측에서 결정할 수 있다. (단 UAC/UAS 모두  Session-TImer를 지원하는 경우에 한해서이다.)
7. Refresher동작을 하는 측은 Response Message를 받았을 때, 반대 측은 Request Message를 받았을 때 Session-Timer를 Update한다.



 

by 소걸음 | 2009/09/10 13:39 | [SIP] | 트랙백 | 덧글(0)

트랙백 주소 : http://lukiji.egloos.com/tb/3203961
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지                    다음 페이지 ▶