SIP 응답은 RFC 3261 권고안의 21 Response Codes에 설명되어 있습니다. 여기서는 응답에 따른 SIP 호 절차가 어떻게 이루어지는 지를 정리합니다. 엔지니어는 응답에 따른 호 절차를 이해해야 무엇이 잘못되었는 지를 알 수 있습니다. SIP 응답을 보고 원인을 파악하는 것은 오랜 경험이 수반되어야 합니다.
1) Redirect : 302 Moved Temporarily
엘리스가 밥의 데스크톱 전화기로 통화하기 위해 INVITE 요청을 보냅니다. 밥의 IP 전화기는 오프라인 상태이거나 착신번호 변경을 한 상태입니다. SIP Proxy 서버는 밥의 IP 전화기의 통화 가능 여부를 알고 있습니다. 밥이 모든 통화를 소프트폰으로 받기 위해 사전 설정하였다고 가정합니다.
SIP Redirect 서버도 IP PBX에 포함되어 있는 기능적인 구분입니다. 앨리스로부터 온 INVITE 요청에 대해 SIP Redirect 서버는 대한 302 Moved Temporarily 응답을 전달합니다. 302 응답의 Contact 헤더는 re-INVITE를 보낼 주소가 명기되고 re-INVITE는 contact 헤더의 주소로 발행됩니다.
Contact : bob@sw34.biloxi.com
2) Call Forward : 302 Moved Temporarily
SIP Proxy 서버는 전화기의 상태를 감시하고 전화기로부터 설정 정보를 업데이트받습니다. 사용자가 전화기에서 착신전환(Call Forward All) 기능이 설정하였으나 SIP Proxy 서버에 있는 밥의 프로파일이 업데이트되지 못하였습니다.
앨리스로부터 온 INVITE 요청에 대해 밥의 IP 전화기는 302 Moved Temporarily 응답을 전달합니다. 302 응답의 Contact 헤더는 re-INVITE를 보낼 주소가 명기되고 re-INVITE는 contact 헤더의 주소로 발행됩니다.
직원들이 많이 사용하는 전화 부가 기능은 착신전환과 호전환입니다. SIP Proxy와 IP 전화기의 제조사가 다를 경우에 부가 기능을 구현하는 방식이 다를 수 있습니다. IP PBX와 전화기를 같이 제조하는 회사는 IP PBX의 사용자 프로파일을 변경하지만, IP 전화기만을 제조하는 기업은 전화기에서 처리합니다. IP PBX 제조 기업과 공동작업을 할 경우에는 설정 변경 업데이트가 가능합니다. 그러나, 전화기에서 설정을 보유하는 방법은 보안에 매우 취약하므로 잘 사용하지 않습니다. 전화기의 착신전환 기능을 활용하여 착신 전환된 국제전화로 회사의 전화비용이 크게 나올 수도 있습니다.
3) Unsupported Codec : 488 Not Acceptable Here
엘리스는 G.711 코덱으로 음성통화를 하고자 INVITE 요청의 메시지 바디에 G.711 코덱 정보를 추가하여 전달합니다. 하지만, 밥의 전화기는 G.729만을 사용 가능한 상황입니다.
밥의 전화기는 G.711 코덱이 없으므로 '488 Not Acceptable Here'라고 응답합니다. 엔지니어는 488 응답을 보고 코덱 미스매치 (Codec Mismatch)가 발생하였으므로 밥의 전화기가 사용하는 G.729 코덱으로 재협상을 시도하도록 설정을 변경합니다. 즉, re-INVITE는 엔지니어의 설정 변경 후에 재전송하는 과정입니다. 앨리스의 전화기는 INVITE 요청에 G.729 코덱을 메시지 바디에 포함하여 보내면서 호 절차가 진행됩니다.
4) Called Party Busy : 486 Busy Here
앨리스는 밥과 통화를 하고자 INVITE 요청을 보내지만, 밥은 현재 다른 사람과 통화 중입니다. SIP Proxy가 밥의 상태를 인지하지 못해 INVITE를 밥에게 전달합니다. 밥의 전화기는 '486 Busy Here'로 응답합니다.
실제는 SIP Proxy 서버는 등록된 단말들의 상태 정보를 모니터링하고 있습니다. 따라서, '486 Busy Here' 응답은 SIP Proxy에 의해 전달됩니다.
비슷한 응답으로 600 Busy Everywhere와 488 Not Acceptable Here 가 있습니다. 밥이 가진 여러 단말 중에서 응답할 수 있는 단말이 없을 경우에는 600 응답을 발행되고, 밥이 통화 중이어서 호를 거절할 경우 488 응답을 발행합니다. 488 응답은 반드시 정확한 거절 이유를 명기해야 합니다.
5) Call Forward Busy : 181 Call Forwarded
밥의 IP 전화기가 '486 Busy Here'를 SIP Proxy 서버로 전달합니다. SIP Proxy 서버는 밥의 프로파일에 설정된 Call Forward Busy (통화 중 착신전환 번호) 전화번호로 re-INVITE를 발행하고, 앨리스에게 착신 전환된 번호로 연결을 시도하고 있음을 '181 Call Forwarded' 응답으로 통지합니다.
6) Gateway Congestion : 503 Service Unavailable
음성 게이트웨이 1번은 이용한 가능한 리소스가 없습니다. SIP Proxy 서버의 INVITE 요청에 대해 '503 Service Unavailable'로 응답합니다. SIP Proxy 서버는 이중화 설정이 된 음성 게이트웨이 2번으로 INVITE를 전달하여 호가 정상적으로 진행됩니다.
물론, SIP Proxy 서버는 두 대의 게이트웨이를 이중화 및 로드밸런싱 설정이 사전에 구성되어 있어야 합니다.
https://brunch.co.kr/@linecard/188