본문 바로가기

SIP

NAT Traversal

NAT Traversal

 

SIP에서 외부에 있는 단말과 Call 할 때 SBC 와 같은 장비가 필요하다. SBC를 쓰는 이유는 여러가지 이지만 그 중 필수적인 기능은 NAT Traversal 이다. 그렇다면 NAT Traversal 이 왜 필요한지 케이스 별로 확인 해보자

그에 앞서 SIP 의 Call Flow에 대해 알아보자.

두 단말이 호처리 서버를 통해 이뤄진다면, 시그널링은 호처리 서버를 통해서 전달되고, 미디어는 SIP단말끼리 다이렉트로 전달된다.

이 때, 미디어를 바로 전달하기 위해 SDP 안에 자신의 미디어 연결 정보를 담아 전달 한다.

아래 예시를 통해 확인하자.

70.50.166.94 와 182.192.105.241 은 SIP 단말이고, 182.192.105.242 는 호처리서버이다.

70.50.166.94의 SDP 를 보면 미디어를 주고받을 자신의 연결되어야 할 IP와 Port 정보를 담아 보낸다.

아래는182.192.105.241 의 SDP 이다.

 

본론으로 들어와, 만약 SIP단말이 내부가 아닌 외부에 있다면 어떻게 될까?

아래 두가지 케이스가 있을 수 있다.

Case 1) 아래의 경우 시그널링과 미디어(B->A)는 문제가 없다. 시그널링은 Network Routing 을 통해 전달 되는 일반 패킷이므로 문제가 없다. 미디어(B->A)의 경우, 단말A는 자신의 연결정보를 보내는데, 그 정보가 공인 IP이기 때문에 단말B입장에서 A를 찾아가는데 문제가 없다.

하지만, 미디어(A->B) 는 문제가 틀리다. 단말 A가 단말B로 부터 전달 받은 연결 정보는 단말B의 사설 IP주소 이다. 이는 단말A 입장에서 단말B를 찾아갈 수 있는 라우팅 정보가 없다는 것을 의미한다. 따라서 미디어가 한쪽만 흐르는(One-way라 부른다.) 상태가 지속된다.

Case2 ) Case2도 Case1에 비해 상황이 좀더 심각하다. 시그널링은 역시 IP라우팅을 통해 전달되기 때문에 문제 없다. 하지만 미디어의 경우는 다르다. 단말A는 미디어의 목적지로 단말B의 사설 IP를 가지고 있고, 단말B는 단말A의 사설IP를 가지고 있다. 따라서 이 경우 양단간에 통신이 불가능하다.

 

이와 같은 문제를 해결하기 위해 Application level 에서 목적지 주소를 Edge단에서 변경하는 작업이 필요하다. 이를 수행하는 것을 NAT Traversal 이라 한다.NAT Traversal 기능을 수행하는 SBC장비는 내부와 외부의 경계에 위치하여 SDP의 정보를 변경하여 목적지에 전달 할 수 있도록 한다.

아래와 같이 구성하여, 호를 생성한다면, SBC는 단말A 의 연결정보를 단말B로 전달 할 때 자신의 내부IP로 변경하여 전달 할 것이고, 단말B의 연결정보를 단말A로 전달 할 때는 자신의 외부IP로 변경하여 전달 할 것이다.(Note, SBC를 Deploy 하는 방식은 다양하다. 앞서 기술한 내용은 외부 내부 각각 1개씩 총 두 개의 인터페이스를 사용한다고 가정하였다. 이러한 Deployment는 추후에 기회가 되면 기술하도록하겠다. 지금은 NAT Traversal에만 집중하자.)

 

위 시나리오를 이해하였다면 아래 단말이 서로 다른 내부망에 있는 경우도 어렵지 않게 이해할 수 있을 것이다.

아래와 같이 SBC가 대신 인터넷망에서 세션을 받아준다면, 단말A는 변경된 연결정보를 통해 SBC의 공인에 노출된 IP와 미디어를 주고 받게 된다.

 

이와 같은 SBC는 폴리콤, ACME, Sonus, Cisco, Audiocodes 등 다양한 벤더에서 생산중이다.

'SIP' 카테고리의 다른 글

SIP Reliable Mechanism - T1, T2 Timer  (0) 2015.01.02