[RFC 3262]Reliability of Provisional Responses in the Session Initiation Protocol(SIP)

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

Method : PRACK
Header : RAck, RSeq, CSeq
Option-Tag : 100rel

=================================== Overview ======================================
INVITE에 대한 1xx Response에서 Early-Media 등의 처리를 위한 PRACK Method의 규칙과 UAC, UAS에서의 처리방법
RAck, RSeq 헤더의 ABNF와 값의 의미
Supported, Require Header에서의 Option-Tag "100rel"의 의미
CSeq값의 처리

=================================== Table of Contents ==============================
   1     Introduction ........................................    2
   2     Terminology .........................................    3
   3     UAS Behavior ........................................    3
   4     UAC Behavior ........................................    6
   5     The Offer/Answer Model and PRACK ....................    9
   6     Definition of the PRACK Method ......................   10
   7     Header Field Definitions ............................   10
   7.1   RSeq ................................................   10
   7.2   RAck ................................................   11
   8     IANA Considerations .................................   11
   8.1   IANA Registration of the 100rel Option Tag ..........   11
   8.2   IANA Registration of RSeq and RAck Headers ..........   12
   9     Security Considerations .............................   12
   10    Collected BNF .......................................   12
   11    Acknowledgements ....................................   12
   12    Normative References ................................   13
   13    Informative References ..............................   13

=================================== 내용 정리 ===================================
RFC 3262는 INVITE에 대한 1xx(100 Response는 제외) Response가 Caller에게 전달이 반드시 되는것을 확인하기 위하여 사용하는 PRACK Method에 대해 사용법과 규칙등을 설명한다..
INVITE에 대한 200 OK Response를 응답하고, ACK가 수신측에 전달 되지 않았을 때는 호가 성립되지 않는 것 처럼,
1xx Response에 발신자에게 반드시 가야한다고 생각되는 정보가 있다면, 이 PRACK Method를 사용할 수 있다.
PRACK을 사용하는 경우는 주로 Early-Media를 처리 하는 경우에 사용하는데, 망의 특성상 지원하지 않는 SIP Element가 존재 하거나, 전용망으로 UDP 손실이 없다고 판단 되는 경우에는 PRACK을 사용하지 않는 경우가 많다.
아직 Server 대 Server에서 사용한 적은 없다. (만들어 놓고도 테스트 해본적은 없다..)

== PRACK Method의 사용협의==
PRACK Method은 UAC가 사용하고자 한다고 사용할 수 있는 것이 아니다. UAS에서도 지원을 해야만 사용할 수 있는데, 이를 판단할 수 있는 것이 "100rel" Option-tag 이다. (2. UAC Behavior, 3. UAS Behavior 참고)
또한, UAS에서 PRACK Method를 지원하지만 사용할 필요가 없다면, 사용하지 않을 수 도 있다.
PRACK를 사용한다는 의미의 "100rel" Option-tag의 위치(Supported, Require Header) 다음과 같은 Flow들이 발생 할 수 있다.
 

    1. UAC에서는 PRACK Method를 지원하지만, UAS에서 사용하지 않고자 할때, 또는 UAS에서 사용할 필요가 없는 경우

    2. UAC에서 PRACK Method를 지원하고, 사용하고자 원하며, UAS에서도 지원하고, 사용이 필요한 경우


    3. UAC에서 PRACK Method를 지원하고, UAS에서도 지원하고, 사용할 필요가 있는 경우

    4. UAS가 지원하지도 않는데, UAC가 사용하자고 한경우
== RSeq Header ==
RSeq Header는 UAS가 PRACK을 사용하고자 할 때, 1xx Response에 사용된다. 이 값은 Digit 이다.
이 값은 UAC에서 1xx에 대한 PRACK을 생성할 때 추가될 RAck Header의 값을 만들 때 사용된다.

---------------- RSeq Header ABNF -----------------
RSeq = "RSeq" HCOLON response-num
response-num = 1 * DIGIT
example = RSeq : 988789
-----------------------------------------------------

== RAck Header ==
RAck Header는 UAS에서 전달한 1xx Response 에 대한 PRACK을 생성 할 때 사용된다.
RAck Header는 UAC에서 전달한 1xx Response와 매칭 되기 위해서 사용된다.
이 RAck Header의 값은 1xx Response의 CSeq값과 RSeq값의 조합으로 생성된다.

---------------- RAck Header ABNF -----------------
RAck = "RAck" HCOLON response-num LWS CSeq-num LWS Method
response-num = 1*DIGIT
CSeq-num = 1*DIGIT
example = RAck : 988789 1 INVITE
-----------------------------------------------------

== 주의점 ==
1. CSeq값 관리 : 
 호가 성립되기 전에 PRACK과 UPDATE Method사용할 수 있는데, 이 때 CSeq값이 증가된다. 
 하지만, CSeq값은 호가 성립되는 시점에서 최초 INVITE에 대한 CSeq값으로 초기화하여 사용되어야 한다. 
 그렇지 않다면, 이후 호처리에 실패가 될 것이다.

2. RAck 값 관리 :
 PRACK Method에 RSeq값과 CSeqt값을 조합으로 값을 생성한다고 하였다. 이 값이 문제가 있어 UAS에서 
 매칭되는 Dialog를 찾을 수 없다면, 481 Response를 받고, 호는 종료 될 것이다.

3. RSeq 값 관리 :
1xx를 여러번 보낸다면 RSeq값이 1씩 증가 되어야 한다. (실 망에서 1xx를 여러번 사용하는 FLow는 아직 본적이 없다.)

4. PRACK Method 전달 시 주의점
 호가 성립된 이후 1xx Response를 받았다면 무시하라. PRACK Method를 전달 할 필요가 없다. UDP로 통신한다면,
 호성립이후 1xx Response를 받을 경우도 있다. 이는 무시해도 상관없다.
 또한, 1xx Response의 Require 헤더에 "100rel" Option-tag가 없다면, PRACK을 전달 할 필요도 없다. 

5. UAS의 한계대기
 1xx Response를 전달한 UAS의 PRACK 한계 대기시간은 T1*64이다. 
 이 시간동안 PRACK Method를 받지 못한다면 5xx Response로 호를 실패 처리 해야 한다.

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

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

:         :

:

비공개 덧글

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