홀펀칭 화상통화...등등

Program RFC/Algorithm 2012. 1. 4. 09:40 Posted by HisPark
아이폰4와 갤럭시S와 화상 전화는 왜 안나올까?


사실은 이 동영상에서 시작되었다.

잡스는 아이폰4에서의 화상통신이 wifi를 이용해서 이루어 지며, 무료(당연히)라고 했다.
그리고 특히 강조하며, no server, no setting...zero setting required 이라고..
즉 서버없이 사용자끼리, 완전 무료로, 아무런 세팅없이 화상통신이 가능하다는 얘기다.
위 내용을 그대로 보자면..
아이폰4끼리
wifi가 되는 곳 어디서나.
가로, 세로 모드
앞뒤 카메라
그리고 놀라운 화질과 음질...
듣기만 해도 기분좋은 얘기다...그런데...왜?
아이폰4끼리만 되는가 하는 문제이다. 왜 왜 왜!!!

갤럭시S나 , 다른 화상통신 프로그램과는 왜 안될까? 또는 Nate나 MSN, 또는 Skype와 화상통신이
된다면 좋을텐데...
일반전화 와 핸드폰은 통신이 된다. 이걸 핸드폰끼리만 통신이 된다고 하면 어떻겠는가?
또는 외국과는 통신이 안된다면 어떻겠는가?

물론 안되는 여러가지 문제가 있겠지만, 여기서는 기술적인 문제하나를 말하고 싶다.
다음 사진을 보자.

우선 위에 언급된 내용은 살펴보면

H.264 : 비디오 표준이다. 흔히 말하는 Mpeg4로 보면 된다.
AAC : 오디오 표준이다. Mpeg2에서 사용되었고, 흔히 사용하는 MP3와 같은 수준의 음질이나, 압축율은 더 좋다.

그런데 동영상을 보면 위 2가지에 대해서는 비디오, 오디오 표준이라는 얘길 하다가...
밑에는 농담과 함께 넘어가 버린다. 이걸 한번 살펴보자.

SIP : Session Initiation Protocol 이다. 쉽게 말해 인터넷 전화 프로토콜이다.
그리고..문제는 밑에 있는. 3가지 기술이다.

STUN : Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)
TURN : Traversal Using Relay Network Address Translation NATs
ICE : Interactive Connectivity Establishment
그리고
RTP : Real Time Protocol (RTSP : Real Time Streaming Protocol)
SRTP : Secure Real Time Protocol
둘다 실시간 음성 및 영상 송수신을 위한 프로토콜이다. SRTP는 보안을 위한 부분이다.

여기서 STUN, TURN, ICE 는 네트워크 전공자/종사자 아니면 좀처럼 들어보기 힘든 부분이다.
쉽게 말해서 공유기 문제를 해결하기 위한 부분으로,
공유기는 1개의 IP를 여러 컴퓨터가 나뉘 쓸 수 있게 한다. 그리고 공유기에 물린 컴퓨터는 전부
내부 아이피 즉 192.168.... 로 된 아이피 주소를 사용하는게 보통이다.

그러다 보니, 전화를 걸때 수신자의 아이피 주소로는 그사람을 찾아갈 수 없다는 문제가 생긴다.
즉 192.168...로 시작되는 주소는 외부에서 접근할 수 없는 주소인 것이다.
이문제를 해결하기 위해 고안된 것이 위에서 언급된 3가지 기술 STUN, TURN, ICE 이다.
간단히 언급하자면
STUN는 흔히 말하는 UDP Hole Punching 이라는 기술로 접속을 위한 서버에서 UDP로 생성된
connection을 이용해서 접속하는 기술이다. 그러나, 이 기술로 100% 공유기를 통과할 수 없다.
이게 안되는 타입의 공유기가 있기 때문이다. symmetric 타입의 공유기는(자세한 설명은 생략. 골아플테니까.)
STUN 으로 연결되지 않는다. 이를 위해서 어쩔 수 없이 Relay .. 즉 전달하는 서버를 필요로 한다.
쉽게 말해서 송신자 A와 수신자 B가 통화를 하는 경우, 중간에 C가 들어서 A가 보내는 데이터를
전부 받아서 C에게로 전달해 주는 방식이다. 이경우 송수신자가 늘어난다면, 중간에 전달해 주는
C는 거의 죽음이다. 물론 몇가지 서버의 부하를 줄일 수 있는 방법이 있지만, 기본적으로 동영상을
실시간 전달하자면 대역폭(bandwidth)가 문제가 될 수 밖에 없다.
그리고 ICE는 위 2가지 기술을 조합하여 서로 다른 주소 영역가에 최적의 라우팅 경로를 찾아내는 기술이다.

결과적으로
위 3가지 기술은 전부 공유기 때문에 생기는 문제를 해결하기 위한 기술이다.
또한 그 방법이 깔끔하지 못하다.
한두번씩은 경험해 봤겠지만, NateOn(네이트온)에서 멀쩡히 채팅은 잘 되고 있었는데, 파일을 보내지
못하는 경우를 본적이 있을 것이다. 못봤다고? ...부럽다. 여튼.
Nate가 거의 비슷한 기술을 사용하고 있다.
즉 그냥 채팅을 하는 경우 데이터를 전부 Relay 시켜서, 전달한다. 그러나, 파일을 보내는 경우
STUN 기술이 들어간다. 그러다 보니, 공유기가 Hole Punching이 지원되지 않는 모델이거나,
2개 이상의 공유기가 중첩되어 있는 경우 파일이 전달되지 않는 문제가 생기곤 한다.

그럼 다시 처음으로 돌아가 보면...
아이폰4끼리 통신을 하는 경우
1. STUN 서버가 필요하다. 크게 부하는 없지만, 어느정도 서버가 확보되어야 하고, 사용자가 많아진다면,
추가 서버가 필요하다. 그리고.
2. STUN 서버로 동작하지 않는 공유기(NAT)를 사용하는 경우 TURN 서버로 Relay 해야 되는데..이건 부하가
심하다. 사용자가 늘어난다면, 그리고 재수없게도 Symmetric NAT가 많다면 더욱 더 많이 필요하다.
아마도, 네이트에서 파일전송이 안되는 경우처럼, 아이폰4 사용자들도 인터넷은 되는거 같은데, 화상통신이
안되는 경험을 하게 될 것이다. 아마도...하지만 릴레이 서버를 잘 이용한다면, 어느정도는 가능하지만...
이게 어느정도 될지는 알 수 없다.

그리고 아이폰4와 다른 스마트폰과의 통신...
이건 문제가 심각하다. 만약 갤럭시S와 통신을 할 수 있게 하려면...
STUN 서버를 같이 운영해야 된다. 서버를 둔다는 것이 그냥 IDC 같은데 처박아 두면 되는게 아니다.
릴레이 서버도 마찬가지... 두회사간, 그리고, 외국과의 화상통신을 위한 준비가 만만치 않다.
STUN 서버를 1대만 둔다면...전세계를 통합하는 1대의 STUN라면 몰라도...
릴레이 서버도 마찬가지고... 해결해야될 기술적 과제가 많다는 얘기다.
물론 이게 돈이 된다면...무슨 수를 써서라도 해결할 방법이 생길 수도 있겠지만, 화상통화만으로
돈이 되는 것은 아니다.
이게 전화처럼, 10년이상을 내다보고, 할 수 있다면 또 모를까...

아마도 쉽게 이루어 지지 않을 전망....
물론..이러한 기술적 문제는 IPv6가 전격적으로 도입된다면...또 전혀 다른 국면을 맞이 할 수도 있다.
NAT라는 것이 기본적으로 IP 부족과 관련이 있기 때문이다.

결론적으로 추론을 하자면.. 대대적인 통합 화상전화 시스템은 몇년내에 볼 수 없을 것 같다.
누군가 갤럭시S와 아이폰간 화상 전화 시스템을 만들어서 서비스 한다고 해도...쉽게 돈이 될것 같진
않아서...쉽사리 뛰어 들것 같지도 않다.
그리고 기술은 어느방향으로 뛸지 아무도 알 수 없기 땜에... 지금 크게 투자하는 것도 위험해 보이고..
 
 
 
http://zzpark.egloos.com/tb/10592868 님 블러그에서 ...
 

'Program RFC/Algorithm' 카테고리의 다른 글

RTCP-SR 에서 ntp timestamp  (0) 2011.11.14
Hole Punching  (0) 2011.08.31
Hole Puching  (0) 2011.08.31