| 리포트 | 기술문서 | 테크-블로그 | 글로벌 블로그 | 원샷 갤러리 | 통신 방송 통계  | 한국 ICT 기업 총람 |

제품 검색

| 네트워크/통신 뉴스 | 기술자료실 | 자유게시판 |  
 
 
섹션 5G 4G LTE C-RAN/Fronthaul Gigabit Internet IPTV/UHD IoT SDN/NFV Wi-Fi Video Streaming KT SK Telecom LG U+ OTT Network Protocol CDN YouTube Data Center
 
스폰서채널 |

 

  스폰서채널 서비스란?
STUN(RFC 3489)과 STUN(RFC 5389/5780)의 차이
STUN(RFC 3489) vs. STUN(RFC 5389/5780)
October 02, 2013 | By 유창모 (cmyoo@netmanias.com)
banner
코멘트 (5)
11

 NAT 문서 모두 보기 

 

오늘은 RFC 3489와 RFC 5780에서 정의하고 있는 NAT 타입에 대해서 설명을 드리도록 하겠습니다.

지난 시간을 통해 NAT의 Mapping BehaviorFiltering Behavior에 대해 설명을 드렸는데, 그 내용을 숙지하셔야만 오늘 내용을 이해하실 수 있을 것입니다.

 

STUN이란?

STUN은 P2P 통신을 위해 두 단말 사이에 NAT의 존재 유무 및 NAT 타입을 식별(discover)하고 또한 NAT에 의해 변경되는 External IP 주소 및 External Port 값을 P2P 단말이 알 수 있도록 해 주는 프로토콜입니다.

 

본 프로토콜은 2003년도 RFC 3489(Standards)를 통해 먼저 표준화 되었고, 이후 2008년도 RFC 5389(Standard)와 2010년도 RFC 5780(Experimental)을 통해 개정되었습니다.

RFC 5389의 설명에 따르면, "Classic STUN 즉, RFC 3489에 기술된 NAT 타입 식별 알고리즘에는 오류가 있으며, 현재 시중에 나와 있는 NAT 장비를 RFC 3489에 정의된 4가지 타입으로 분류하는데 한계가 있다."라고 되어 있습니다.

이에 RFC 5389를 통해 기존 STUN 프로토콜이 수정(Binding Message의 Attribute 추가) 되었고, 또한 RFC 5780을 통해 NAT 타입 분류 재정의 및 NAT 타입 식별 알고리즘(방식)을 수정하게 되었습니다.

 

RFC 3489와 RFC 5389 표준에서는 STUN이란 동일 제목을 사용하고 있지만 아래와 같이 그 풀이를 다르게 하고 있습니다.

  • RFC 3489: STUN - Simple Traversal of User Datagram Protocol (UDP) Through Network Address Translators (NATs)
  • RFC 5389: Session Traversal Utilities for NAT (STUN)

 

RFC 3489의 NAT 타입 및 RFC 5780과의 관계

 

■ Full Cone

[Mapping Behavior] A full cone NAT is one where all requests from the same internal IP address and port are mapped to the same external IP address and port. [Filtering Behavior] Furthermore, any external host can send a packet to the internal host, by sending a packet to the mapped external address. (RFC 3489)

 

Full Cone 타입은 RFC 5780에 Endpoint-Independent Mapping(이하 EIM)과 Endpoint-Independent Filtering(이하 EIF)으로 동작하는 방식을 말합니다.

  • Mapping Behavior: Outbound 패킷의 (1) Source IP, (2) Source Port만 동일하다면 Destination IP, Destination Port에 상관없이 같은 Port Mapping 값(Translated Port = 1000)을 사용
  • Filtering Behavior: Inbound 패킷에 대해 (1) Destination IP, (2) Destination Port만 검사하여 패킷의 허용 여부를 판단하고, External Endpoint의 소스 정보 즉, Source IP와 Source Port 값은 상관하지 않음

 

 

■ Restricted Cone

[Mapping Behavior] A restricted cone NAT is one where all requests from the same internal IP address and port are mapped to the same external IP address and port. [Filtering Behavior] Unlike a full cone NAT, an external host (with IP address X) can send a packet to the internal host only if the internal host had previously sent a packet to IP address X. (RFC 3489)

 

Restricted Cone 타입은 RFC 5780에 EIM과 Address-Dependent Filtering(이하 ADF)으로 동작하는 방식을 말합니다.

  • Mapping Behavior: Full Con과 동일
  • Filtering Behavior: Inbound 패킷에 대해 (1) Destination IP, (2) Destination Port 그리고 (3) Source IP를 검사하여 패킷의 허용 여부를 판단하고, External Endpoint의 Source Port 값은 상관하지 않음

 

 

■ Port Restricted Cone

[Mapping Behavior] A port restricted cone NAT is like a restricted cone NAT, [Filtering Behavior] but the restriction includes port numbers. Specifically, an external host can send a packet, with source IP address X and source port P, to the internal host only if the internal host had previously sent a packet to IP address X and port P. (RFC 3489)

 

Port Restricted Cone 타입은 RFC 5780에 EIM과 Address and Port-Dependent Filtering(이하 APDF)으로 동작하는 방식을 말합니다.

  • Mapping Behavior: Full Con과 동일
  • Filtering Behavior: Inbound 패킷에 대해 (1) Destination IP, (2) Destination Port 그리고 (3) Source IP, (4) Source Port를 검사하여 패킷의 허용 여부를 판단함

 

 

■ Symmetric

[Mapping Behavior] A symmetric NAT is one where all requests from the same internal IP address and port, to a specific destination IP address and port, are mapped to the same external IP address and port.  If the same host sends a packet with the same source address and port, but to a different destination, a different mapping is used.  [Filtering Behavior] Furthermore, only the external host that receives a packet can send a UDP packet back to the internal host. (RFC 3489)

 

Symmetric 타입은 RFC 5780에 Address and Port-Dependent Mapping(이하 APDM)과 APDF로 동작하는 방식을 말합니다.

  • Mapping Behavior: Outbound 패킷의 (1) Source IP, (2) Source Port 그리고 (3) Destination IP, (4) Destination Port가 모두 동일해야 같은 Port Mapping 값을 사용
  • Filtering Behavior: Port Restricted Con과 동일

 

 

요약

아래 그림은 RFC 5780에서 정의하고 있는 9개의 NAT 타입과 RFC 3489에서 정의하고 있는 4개의 NAT 타입 간의 관계를 보이고 있습니다.

 

 

피터팬 2018-09-04 14:05:51

안녕하세요? 오래전 글인데.. 질문을 드려도 될런지 모르겠네요.

우선 NAT에 관한 여러가지 글을 잘 읽었습니다. 이해에 많은 도움이 되었습니다.

질문은 위 요약의 그림에 있는  여러가지 Type중에서 P2P를 위해서 우회할 수 있는 방안이 각 Type별로 어떻게 되는지 확인 할 수 있을까요?

Type 1은 아무 상관이 없을 듯하구요. 나머지는 Hole Punching으로 모두 커버가 가능한지요?

Type 9는 symmetric이라 Relay방식을 써야 한다고 표현이 되어 있는데, Hole Punching으로 가능하지 않을까요?

버너 2018-09-06 13:46:06

홀펀칭은 기본적으로 공인망에 위치한 다수의 노드들인 A, B, C등이 통신 클라이언트로써

서버 역할을 하는 사설망의 노드 S로 먼저 접속을 시도할 수 있도록 하기 위해 사용합니다.

 

본문 자료에서 Mapping 방식은 NAT에서 내부 매핑 자원 관리에 대한 방법적인 구분이므로

홀펀칭 가능 여부 판단은 “filtering” 방식을 기준으로 판단하면 될 것 같습니다.

 

 “Address & Port dependent mapping”인 경우를 기준으로

예를 들어 S가 홀펀칭을 위해 S의 s란 포트 번호를 사용 해 A의 a 포트로 패킷 (UDP, TCP등)을 먼저 보냈다면  

 

1. Address & Port Dependent 필터링 – type 9)

NAT는 “S & s & A & a & 프로토콜“를 기준으로 패킷을 필터링하므로

B, C 뿐만 아니라 a가 아닌 A의 다른 포트 번호로도 S에게 패킷을 보낼 수 없습니다.

즉, 홀펀칭이 안 되는 것이고, B, C는 A의 a 포트를 경유(relay) 해서 간접적으로만 S와 통신이 가능합니다.

 

2. Address Dependent 필터링 – type 8)

NAT는 “S & s & A & 프로토콜“를 기준으로 패킷을 필터링하므로

B, C 는 S에게 패킷을 보낼 수 없지만 A는 a가 아닌 다른 포트 번호를 사용해 S의 s로 패킷을 보낼 수 있습니다.

이 역시, 일반적으로 홀펀칭이라 부르진 않고 B, C최소한 A를 경유(relay) 해서 간접적으로만 S와 통신이 가능합니다..

 

3. Endpoint Independent 필터링 – type 7)

NAT는 “S & s & 프로토콜“를 기준으로 패킷을 필터링하므로

B, C를 포함한 아무나 S의 s로 패킷을 보낼 수 있습니다. (이게 홀펀칭에서 바라는 것이죠 ^^) .

 

피터팬 2018-09-06 14:38:12

버너님. 자세한 설명 감사합니다.

설명주신 부분에 대해서 추가적인 질문이 있습니다.

보통 홀펀칭이라 함은 한번 홀펀칭을 하면 아무나 들어올 수 있다는 것을 의미하나요? 아니면 홀펀칭을 접속하고자 하는 클라이언트별로 해주는 것을 의미하나요?

접속하는 클라이언트별로 각각 홀펀칭을 해준다라고 해석을 하면, 위에서 설명주신 예를 기반으로

1. Address & Port Dependent 필터링 – type 9)

  =. S and s <-> A and a 는 홀펀칭이 된 것이고,

  =. B,C도 접속을 위해서는 추가적으로 홀펀칭을 해주어야 한다.

 

2. Address Dependent 필터링 – type 8)

   =. 1과 동일하게 포트만 제한이 없으므로 동일하게 각 클라이언트별로 홀펀칭을 해준다.

 

3. Endpoint Independent 필터링 – type 7)

   =. 이는 아무 제약이 없으므로 구지 홀펀칭을 할 필요가 없는 것이 맞죠?

 

물론 1,2에서 제가 이해한 것이 맞다면 각 클라이언트별로 홀펀칭을 해주어야 하므로, 필터링 테이블이 과도하게 많아지는 경우도 발생하겠네요.

 

제가 이해한 것이 맞을런지요?

 

 

 

버너 2018-09-06 16:36:22

첫번째 질문)

대상별로 홀펀칭을 하는 방식 또는 한번 홀펀칭으로 아무나 들어오게 하는 방식

모두를 할 수 있는 것을 홀펀칭이라 합니다.

즉, 방법이야 어찌되었든 사설망에 있는 노드를 외부에 있는 임의의 노드들이 접속할 수

있도록 하는 모든 방법을 포괄적으로 홀펀칭이라 말합니다.

 

1번 질문 ) 네, B, C 별로 홀펀칭해야 합니다.

2번 질문 ) 네, B, C 별로 홀펀칭해야 합니다.

3번 질문 ) NAT가 매핑 테이블을 만들도록 어디든 한번은 홀펀칭을 해야 합니다.

마지막 질문) 네, 많아지겠지요..

 

구글에서 “hole punch open source” 로 검색하면 오픈소스들도 있으니 참고하시면 되고,

오래전이긴 하지만 예전에는 홀펀칭 라이브러리(?) 전문 개발 업체도 있었습니다.

새로운 공유기 출시될 때마다 홀펀칭을 시험하고 라이브러리를 개량개선해서 라이선스받고 파는 것 같더군요..

대상은 주로 P2P 업체나 온라임 게임 업체 같은 데였던 걸로 기억합니다. (업체명은 기억나지 않음)

 

홀펀칭을 relay 방식의 보조 수단 (relay 서버의 일부 부하 경감)으로 사용하면 모르겠지만

주 수단으로 사용하긴 제약이 많을 겁니다. (예로 통신 상대 둘이 모두 서로 다른 NAT 장비 뒤에 있을 때.. ^^;)

피터팬 2018-09-06 18:36:59

추가적인 설명도 감사합니다.

 

P2P와 NAT: NAT 통과 기법 소개 (RFC 5128) - 2편: UDP Hole Punching (https://www.netmanias.com/ko/?m=view&id=blog&no=6263) 자료를 보면, 아래와 같이 EIM만 가능하다고 명시가 되어 있습니다.

----------------------------

 RFC 5128에 따르면 UDP Hole Punching은 Endpoint-Independent Mapping을 지원하는 NAT(이하 EIM-NAT)에서만 동작을 한다고 합니다. 

----------------------------

 

즉,  통신 상대 둘이 모두 서로 다른 NAT 장비 뒤에 있을 때, 

Type 1,2,3만 UDP Hole Punching으로 통신이 가능하다는 말인데.. 제 생각으로는 모든 Type이 가능할 것으로 보는게 맞겠지요?

 

"예로 통신 상대 둘이 모두 서로 다른 NAT 장비 뒤에 있을 때.." 라고 언급하셨는데.. 추가적으로 더 고민해야 할 사항으로 어떤 것이 있을까요?

관련 자료가 있다면 공유 부탁드리겠습니다. 

 

감사합니다.

 

Thank you for visiting Netmanias! Please leave your comment if you have a question or suggestion.
View All (969)
5G (67) AI (5) ALTO (1) AR (2) ARP (6) AT&T (1) Akamai (5) Authentication (5) BT (1) Backhaul (2) Big Data (2) Bridging (5) C-RAN/Fronthaul (17) CDN (20) CIoT (2) CPRI (6) Carrier Aggregation (5) Charging (2) China Mobile (2) Cisco (6) CoMP (3) Comcast (1) DHCP (6) DNS (15) Data Center (15) EDGE (10) EMM (1) EPS Bearer (7) Ethernet (3) FTTH (8) GSLB (5) Gigabit Internet (17) Google (17) Google Global Cache (8) Google TV (1) HLS (5) HTTP (5) HTTP Adaptive Streaming (7) HTTP Progressive Download (2) Handover (5) Huawei (1) IGMP (3) IP (6) IP Allocation (8) IP Routing (20) IPSec (4) IPTV (25) IoST (2) IoT (44) KT (45) Korea (8) Korea ICT Vendor (1) L3 Switch (5) LG U+ (24) LTE (99) LTE-A (10) LTE-A Pro (1) LTE-M (1) LTE-U (3) LoRa (5) MEC (10) MPLS (3) MWC 2013 (1) MWC 2015 (3) MWC 2016 (2) MWC 2017 (1) Mobile IPTV (1) Multi-Screen (1) Multicast (2) NAT (9) NB-IoT (6) NTT Docomo (1) Netflix (5) Network Protocol (49) Network Slicing (3) OSPF (3) OTT (20) Operator CDN (1) P2P (3) PS-LTE (3) Pooq (2) QoS (5) RCS (1) RRH (1) Request Routing (3) SD-WAN (8) SDN/NFV (34) SK Broadband (1) SK Telecom (38) Samsung (2) Security (8) Self-Driving (3) Shortest Path Tree (2) Small Cell (3) Spectrum Sharing (1) TAU (2) Transparent Caching (9) UHD (7) VLAN (2) VPN (3) VR (3) Video Streaming (22) VoLTE (1) VoWiFi (1) WAN Optimization (1) Wi-Fi (30) WiBro(WiMAX) (2) YouTube (16) eICIC (1) eMBMS (1) ePDG (6) u+ tv G (4) 로컬 5G (1)

 

 

     
         
     

 

     
     

넷매니아즈 회원 가입 하기

2019년 1월 현재 넷매니아즈 회원은 49,000+분입니다.

 

넷매니아즈 회원 가입을 하시면,

► 넷매니아즈 신규 컨텐츠 발행 소식 등의 정보를

   이메일 뉴스레터로 발송해드립니다.

► 넷매니아즈의 모든 컨텐츠를 pdf 파일로 다운로드

   받으실 수 있습니다. 

     
     

 

     
         
     

 

 

비밀번호 확인
코멘트 작성시 등록하신 비밀번호를 입력하여주세요.
비밀번호