NAT enable시 udp streaming service 여부에 관한 의문점.
Reg. Date: January 14, 2005 By 송기호
안녕하세요. 네트워크 업체에 근무하고 있습니다.
라우터 장비 설정 중 발견하게 된 것인데요.
NAT 기능을 enable하였을 때 사설 ip를 가진 단말에서 외부 망에 존재하는 vod서버에 접속하여 서비스를 받을때 tcp프로토콜을 사용하면 문제가 없는데 udp프로토콜로 서비스를 제공받으려 하니 않되더군요.
제가 알기로 NAT를 사용할 때 사설 아이피와 포트 번호가 기록되는 것으로 알고 있습니다.
VOD서버와 negotiation하여 connection을 만드는 과정은 tcp 프로토콜을 사용하는 것으로 알고 있습니다. 그래서 tcp vod 서비스를 받을 때에도 동일한 포트가 사용되는 것이죠.
하지만 udp 프로토콜로 서비스를 받으려 할 때 처음에 tcp로 nego 한 뒤 udp로 서비스를 제공하는 방식이라 처음에 nego했던 tcp 포트랑 실제 서비스를 받는 udp 포트가 달라 통신이 되지 않더군요.
이를 해결할 수 있는 방안이 있다고 들었는데 어떤 방법이 있습니까?
아래 링크에 설명이 잘 되어 있으니까 참고하세요.
http://www.newport-networks.com/whitepapers/nat-traversal.html
간단한 방법은 사설ip를 가지는 단말이 항상 고정된 사설ip를 가진다고 가정(설정)하고,
라우터에서 사용할 UDP포트에 대해서 port forwarding설정을 해 두면 됩니다.
하지만, 이렇게 되면 동일 랜 구간의 2대 이상의 사설ip를 가진 단말기를 운용할 경우에는 UDP포트범위를 별도로 관리/설정하는 등의 번거러움이 있습니다.
라우터에서 설정을 통하지 않고 자동으로 처리하기 위해서는 VOD서비스를 받는 클라이언트 프로그램에서 외부망의 서버를 통해서 자신의 NAT환경을 탐색하여 NAT바깥쪽 IP주소를 nego할때 알려주고, 특정포트로 스트리밍을 받기 위해서는 NAT안쪽 단말이 UDP패킷을 하나 이상 우선 보내어서 NAT connection을 만들고, 바깥쪽 VOD서버에서는 받은 UDP패킷의 소스주소를 확인하여 동일 주소로 스트리밍 데이터를 줘야 합니다.
복잡하죠?.... ㅎㅎ 위의 자료를 좀 보시고 이해를 하셔야 무슨 얘긴지 이해를 하실 겁니다.