본문 바로가기

SIP

SIP Reliable Mechanism - T1, T2 Timer

** Reliability 제공 메커니즘

Client가 request를 재전송할 필요가 없는 Reliable Transport Protocol과 달리 Unreliable Transport Protocols은 Reliability를 위해 일정한 시간 간격으로 request를 재전송할 필요가 있다. INVITE, ACK, 그 외의 method에서 Reliability를 지원하기 위한 재전송 방법을 살펴본다.

1) Reliability for Request Other than INVITE

UDP와 같은 Unreliable Transport Protocol을 사용하는 SIP Client는 첫번째 패킷을 전송한 후에 두번째는 T1초 후에, 다음 패킷은 2*T1초 후에, interval이 T2초에 도달할 때까지 INVITE나 ACK 이외의 request를 재전송해야 하며 다음 재전송은 T2초 간격으로 이루어진다. 이 때 Client는 11개의 패킷을 모두 전송하거나 최종 response를 받으면 재전송을 중단한다. T1과 T2의 디폴트(default) 값은 각각 500ms와 4s인데 클라이언트는 디폴트보다 더 큰 값을 사용할 수 있으나 작은 값을 사용하면 안 된다.

2) Reliability for INVITE Requests

SIP Client는 T1초로 시작하여 각 패킷을 전송한 후에 2배의 간격으로 INVITE request를 재전송해야 하며, Client는 최종 response를 받거나 7개의 request 패킷을 모두 전송하고 나면 재전송을 중단한다. UAC(User Agent Client)는 7번째 패킷을 재전송한 후에 BYE나 CANCEL request를 보낸다.

3) Reliability for ACK Requests

ACK request는 response를 발생시키지 않고 INVITE에 대한 response가 도착할 때만 생성되며 transport protocol에 독립적으로 동작한다. 또한 ACK request는 original INVITE request와 다른 경로를 거칠 수 있다.

4) UDP 전송 메커니즘 비교

INVITE, ACK, 그 외의 메쏘드에서 Reliability를 지원하기 위한 재전송 메커니즘을 T1, T2의 디폴트 값인 T1 = 0.5, T2 = 4을 써서 표로 만들어 비교해 보았다.

- 메커니즘 1(M1) 패킷 전송

: first 패킷 / 0.5 / 1 / 2 / 4 / 8 / 16 = 31.5초 (7번 전송)

- 메커니즘 2(M2) 패킷 전송

: first 패킷 / 0.5 / 1 / 2 / 4 / 4 / 4 = 15.5초 (7번 전송)

- 메커니즘 3(M3) 패킷 전송

: first 패킷 / 0.5 / 1 / 2 / 4 / 4 / 4 / 4 / 4 / 4 / 4 = 31.5초 (11번 전송)

- 메커니즘 4(M4) 패킷 전송

: INVITE에 대한 response를 받을 때마다 ACK를 전송



Timer               Value                              Meaning

----------------------------------------------------------------------------------------------------------------

T1                   500ms default                  RTT Estimate

T2                   4s                                   The maximum retransmit interval for non-INVITE requests

                                                  & INVITE responses

T4                   5s                                   Maximun duration a message will remain in the network

Timer A            initially T1 (500ms)            INVITE request retransmit interval, for UDP only

Timer B            64*T1                              INVITE transaction timeout timer

Timer C            > 3min                            proxy INVITE transaction timeout

Timer D            > 32s for UDP                 Wait time for response retrnasmits

                      0s for TCP/SCTP

Timer E            initially T1                        non-INVITE request retransmit interval, for UDP only

Timer F            64*T1                              non-INVITE transaction timeout timer                         

Timer G            initially T1                        INVITE response retransmit interval

Timer H            64*T1                              Wait timer for ACK receipt

Timer I              T4 for UDP                      Wait time for ACK retransmits

                       0s for TCP/SCTP

Timer J             64*T1 for UDP                 Wait time for non-INVITE request retransmits

                       0s for TCP/SCTP

Timer K            T4 for UDP                      Wait time for response retransmits

                       0s for TCP/SCTP


출처 : http://blog.daum.net/tnseo444/36

'SIP' 카테고리의 다른 글

NAT Traversal  (0) 2015.03.18