** 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 |
---|