본문 바로가기
Protocol/VoIP

14 원격 링백톤 & 미디어 클리핑 문제 / Early Media (23.05.12)

by Orangetasteboy 2023. 6. 20.

■  원격 링백톤(Remote Ring Back) 문제

●  미디어 채널 협상전

  • 로컬 링백톤 재생

 

●  착신 측 벨소리 전송을 위해서는 미디어 채널 협상이 180 Ringing 이전에 끝나야함

  • 컬러링

 

●  해결책: 180 Ringing 이전 SDP offer와 SDP Answer 협상

  • 지금 까지 방법으로는 해결 불가
  • 새로운 SIP 메소드 필요

 

■  미디어 클리핑(Media Clipping) 문제

●  선두음이 잘리는 현상

"여보세요" →"보세요"

 

●  원인: SIP 시그널링과 RTP 미디어 전송에서의 경로 차이에 의한 음성의 빠른 전달

  • ACK 수신시 미디어 채널 개방
  • SIP 시그널링은 SIP Proxy 경유하여 전송
  • RTP는 최단거리 전송

 

●  해결책: SDP Early Offer 협상

 

■  Early Media

●  RFC 3960 Early Media and Ringing Tone Generation in the SIP 에서 제시

  • 목적: 원격 링백톤 문제 해결을 위해 Early media 제시

 

●  Early Media: Early Media Session으로 전달되는 미디어(음성)

 

●  Early Media Session: 최종 응답 이전에 개방되는 세션


●  Regular Media Session: 최종 응답 이후 개방되는 세션


●  최종 응답

  • Early offer의 경우: 200 OK
  • Delayed offer의 경우: ACK

 

■  링백톤 재생 방식

●  PSTN 망

  • 발신측의 PBX가 로컬 링백톤을 재생
  • 컬러링을 이용할 경우 컬러링 서버와의 미디어 채널 개방

 

●  SIP 망의 링백 방식

  • 링백톤, 단순 메시지, 그림, 동영상 등
  • PSTN 방식 준용
  • 기본 링백톤 재생 방법
    1. UAC는 UAS로 부터 컬러링이 전달 → 로컬 링백톤 재생 중단 → 전달된 미디어 재생

 

●  early media session이 개방된 경우?

  • UAC의 링백 재생에 관한 정책
    1. 180 Ringing을 수신하지 않는 다면, 로컬 링백을 재생하지 않는다.
    2. 180 Ringing을 수신하였으나 미디어 패킷이 없다면, 로컬 링백을 재생한다.
    3. 180 Ringing을 수신하고 Media 패킷이 있다면, 미디어를 재생하고 로컬 링백을 재생하지 않는다.

 

■  링백톤 문제 해결 방법

●  애플리케이션 서버 모델

  • Early Media Session 설립을 위해 UAS가 애플리케이션 서버 역할 수행
  • 방법 1: 두개의 다이얼로그 생성
    1. 라우팅 가능한 별도의 URI가 필요
    2. UAC는 Early Media 다이얼로그를 정확한 시점에 Regular Media 다이얼로그와 연결이 필요
  • 방법 2: 하나의 다이얼로그에 두개의 미디어 채널 생성
    1. UAS와 UAC가 Regular Media Session과 Early Media Session을 위한 SDP Offer/Answer협상을 각각 진행
    2. 호처리 절차 단순
    3. 동기화 문제 없음
    4. 세션 생성이 완료될 때, Early Media 채널 종료
    5. Early Media를 위한 별도의 라우팅 URI가 필요 없음
    6. 부가서비스 호환성 높음
    7. 방화벽 투과 및 관리가 쉬움
  • 방법 2가 가장 현실적인 방법이나 현재 Call Flow로는 불가능(SDP Answer가 빨라도 200OK)  새로운 SIP Method 가 필요

 

■  Early Media Session 설립을 위한 새로운 SIP 헤더

●  Content-Disposition 헤더

  • 하나의 다이얼로그에서 early media session과 regular media session을 생성하기 위한 방법

 

●  기존 다이얼 로그를 유지하면서 Early Media Session을 만드는 방법

  • Content-Disposition 헤더 사용
  • PRACK 사용

댓글