본문 바로가기
Protocol/VoIP

10 SIP CANCEL / SIP OPTION (23.04.07)

by Orangetasteboy 2023. 4. 22.

■  SIP CANCLE

●  정상적인 세션이 진행 중이면 BYE 사용

●  INVITE 요청에 대한 200 OK를 수신하기 전에 수화기를 내려놓을 때 CANCEL Method 이용 (기존의 요청 취소)

Simple Cancel request and response

● 반드시 Reason Header를 포함 (Reason Header는 취소의 이유를 명기)

● CSeq Header로 200 OK 응답이 INVITE에 대한 것인지 CANCEL에 대한 것인지 확인 가능

 

● 응답을 받지 못한 요청에 대한 처리

  • CANCEL의 트랜잭션은 요청과 응답으로 정상 처리가 되었지만, INVITE의 트랜잭션은 아무런 응답을 받지 못함.
  • INVITE 요청에 대한 200 OK 가 아닌 다른 응답이 전송
  • 밥의 전화기는 CANCEL 요청에 의해 취소된 INVITE 요청에 대한 응답으로 '487 Request Terminated'를 발행

 

Cancel request and response

 

● 200 OK 발행 후 CANCLE 을 수신하는 문제

  • 절차적 당위성 획득을 목적으로 기존의 호설립과 종료 절차 사용

200 OK 발행 순간 CANCEL 요청 받는 경우

● Call Forking

  • 사용자는 하나의 전화번호나 URI주소를 공유하는 다수의 전화기나 단말을 보유
  • 하나의 AoR에 다수의 Contact Address 존재
  • 하나의 전화번호로 여러 개의 전화기로 전파하여 Ringing

Call Forking에서 CANCEL Method 활용

  • 그림에서의 동작
    1. 밥에게 통화를 요청하는 INVITE를 수신한 biliox.com의 SIP Proxy는 AoR과 바인딩된 모든 단말에 INVITE를 송신
    2. 밥은 3 개의 전화기 중에 한 대로 200 OK 응답을 회신
    3. SIP Proxy 서버는 나머지 두 대의 전화기에 INVITE 요청을 CANCEL 요청으로 취소하여 벨이 울리는 것을 중단

 

■  SIP OPTION

●  SIP Component(다른 UA, SIP Proxy server)의 Capability 확인

●  Capability

  • 지원 가능한 Method의 종료
  • 지원 가능한 콘텐츠의 타입
  • 지원 가능한 확장 헤더의 종류
  • 지원 가능한 코덱 등

 

Simple SIP OPTIONS request and response

Capability를 확인하기 위해 OPTIONS을 발행

OPTIONS 요청에 대한 응답으로 200 OK를 전송

PTIONS 요청은 긴급하거나 중요한 요청이 아니므로 UA나 SIP Proxy 서버가 바쁘다면 '486 Busy Here'로 응답해도 무방

 

SIP OPTIONS 메시지의 Header

  • Contact Header
    - 연결 가능한 단말들의 Contact address 리스트

 

  • Allow Header
    - 지원 가능한 Method 리스트  

 

  • Accept-language Header
    - 지원 가능한 언어 리스트

 

  • Accept Header
    - 지원 가능한 메시지 바디의 타입 리스트 
    - Accept Header가 없을 경우 “application/sdp”로 가정
    - 실제로 SIP 메시지 바디 타입은 Content-Type Header로 표시

 

OPTION PING

  • OPTIONS Method를 이용하여 SIP Trunk 구간에서 상대방의 상태를 확인할 수 있는 Keep Alive 메커니즘
  • SIP 프로토콜은 REGISTER Method를 이용하여 UA와 SIP Proxy 서버 간의 Keep Alive 확인 가능
  • SIP Proxy 서버의 Voice Gateway를 연결하는 SIP Trunk 구간은 등록하는 과정이 없기 때문에 SIP INVITE 메시지를 전송해서 응답을 받기 전에는 상대방의 상태 확인 불가
  • SIP Trunk 사이에서 주기적으로 OPTIONS 메시지를 주고받다가 상대방이 응답이 없거나 200 OK 응답이 아닌 경우에는 INVITE 요청 전달 X
  • OPTIONS PING을 사용하지 않으면, SIP Trunk 구간에서 INVITE에 대한 응답이 수신되거나 무응답으로 인한 Timeout 이 발생할 때까지 SIP 컴포넌트가 대기
  • 상대 SIP 컴포넌트를 URI 주소가 아닌 IP주소 사용 권장
  • 도메인 이름인 FQDN을 이용할 경우 DNS에 의한 이중화 기능으로 인해 정확한 확인이 어려움.

댓글