UDP 홀 펀칭

UDP hole punching

UDP 펀칭은 NAT을 통과하는 UDP(User Datagram Protocol) 패킷 스트림을 유지하기 위해 NAT(Network Address Translation) 애플리케이션에서 일반적으로 사용되는 기술로, 프라이빗 네트워크에 연결된 호스트관련된 인터넷상의 클라이언트 간 네트워킹 애플리케이션(espec)에 NAT 통과 기술이 필요하다.peer-to-peer, DCC(Direct Client-to-Client) 및 VoIP(Voice over Internet Protocol) 배포에 주로 사용된다.[1]

UDP 홀 펀칭은 하나 이상의 네트워크 주소 변환기를 통해 통신하는 두 호스트 간의 연결을 설정한다.일반적으로, 대중 교통 네트워크의 타사 호스트는 통신 호스트들 사이의 직접 통신에 사용될 수 있는 UDP 포트 상태를 설정하기 위해 사용된다.포트 상태가 성공적으로 설정되고 호스트가 통신하는 경우, 포트 상태는 보통 빈 UDP 패킷 또는 최소의 비침해 콘텐츠가 있는 패킷으로 구성된 keep-alive 패킷에 의해 또는 통신 트래픽에 의해 유지될 수 있다.

개요

UDP 홀 펀칭은 네트워크 주소 변환기를 사용하여 사설망에서 인터넷 호스트 간에 양방향 UDP 연결을 설정하는 방법이다.NAT 운영 특성이 표준화되지 않았기 때문에 이 기술은 모든 시나리오 또는 모든 유형의 NAT에 적용되지 않는다.

NAT을 통해 인터넷에 연결된 사설 네트워크 내에 네트워크 연결이 있는 호스트는 일반적으로 NAT(Session Traversal Utilities for NAT) 방법 또는 ICE(Interactive Connectivity Institute)를 사용하여 통신 동료가 필요로 하는 NAT의 공용 주소를 결정한다.이 프로세스에서 공용 네트워크의 다른 호스트는 애플리케이션 호스트들 간의 직접 통신에 유효하다고 가정되는 포트 매핑 및 기타 UDP 포트 상태를 설정하기 위해 사용된다.UDP 상태는 대개 수십 초에서 몇 분 사이의 짧은 시간 후에 만료되며,[2] 이 과정에서 UDP 포트가 닫히기 때문에 UDP 홀 펀칭은 주기적인 keep-alive 패킷의 전송을 사용하며, 각각 NAT의 UDP 상태 시스템에서 수명 카운터를 갱신한다.

UDP 홀 펀칭은 대규모 기업 네트워크에서 발견되는 경향이 있는 대칭 NAT 장치(일명 양방향 NAT이라고도 함)에서는 작동하지 않는다.대칭 NAT에서 잘 알려진 STOUN 서버와의 연결과 관련된 NAT의 매핑은 잘 알려진 서버로부터 데이터를 수신하는 것으로 제한되므로 잘 알려진 서버가 보는 NAT 매핑은 엔드포인트에 유용한 정보가 아니다.

좀 더 정교한 접근 방식으로, 두 호스트는 여러 번의 시도를 통해 서로 전송하기 시작할 것이다.제한된 ConNAT에서는 다른 호스트의 첫 번째 패킷이 차단된다.그 후 NAT 장치는 다른 시스템으로 패킷을 전송한 기록이 있으며 이 IP 주소와 포트 번호에서 오는 패킷이 통과하도록 허용한다.이 기법은 피어 투 피어 소프트웨어와 인터넷 프로토콜 음성 전화에서 널리 사용된다.또한 UDP를 통해 운용되는 가상 사설망의 구축을 돕는 데도 사용할 수 있다. TCP 연결 스트림은 애플리케이션이 아닌 호스트 OS에 의해 제어되고 시퀀스 번호가 무작위로 선택되기 때문에 성공은 적지만, 동일한 기법이 TCP(Transmission Control Protocol) 연결로 확장되기도 한다. 따라서,시퀀스 번호 검사를 수행하는 NAT 장치는 패킷이 기존 연결과 연결된 것으로 간주하지 않고 패킷을 삭제한다.

흐름

A와 B를 각각 전용 네트워크에 있는 두 개의 호스트로 두십시오. N과A N은B 각각 전세계에 도달할 수 있는 IP 주소 EIP와A EIP를B 가진 NAT 장치 두 개, S는 세계적으로 도달할 수 있는 잘 알려진 IP 주소를 가진 공용 서버입니다.

  1. A와 B는 각각 S와 UDP 대화를 시작하고, NAT 장치 N과A N은B UDP 변환 상태를 생성하고 임시 외부 포트 번호 EP와A EP를B 할당한다.
  2. S는 N과 N(외부 NATAB 포트 EPA 및 EP)에서 사용하는 소스 포트를 가져오기B 위해 UDP 패킷을 검사한다.
  3. S 통과 EIPA:EPA to B 및 EIPB:EPB to A.
  4. A가 패킷을 EIP로B 전송:EPB.
  5. N은A A의 패킷을 조사하여 번역표에 다음과 같은 튜플을 만든다. (Source-IP-A, EPA, EIPB, EPB).
  6. B는 EIP로A 패킷을 보낸다:EPA.
  7. N은B B의 패킷을 조사하여 번역표에 다음과 같은 튜플을 만든다. (Source-IP-BB, EP, EIPA, EPA).
  8. B의 첫 번째 패킷이 도착할 때의 N의A 변환표 상태(즉, B의 첫 패킷이 도착할 때까지 튜플(소스-IP-A, EPA, EIPB, EPB)가 생성되었는지 여부에 따라 B의 첫 번째 패킷이 삭제(번역표에 입력되지 않음)되거나 통과(번역표에 입력됨)된다.
  9. A의 첫 번째 패킷이 도착할 때의 N의B 변환표 상태(즉, A의 첫 패킷이 도착할 때까지 튜플(소스-IP-B, EPB, EIPA, EPA)가 생성되었는지 여부에 따라 A의 첫 번째 패킷이 삭제(번역표에 입력되지 않음)되거나 통과(번역표에 입력됨)된다.
  10. 최악의 경우, A에서 두 번째 패킷은 B에 도달하고, 최악의 경우 B에서 두 번째 패킷은 A에 도달한다.NAT에 "출발"된 구멍이 있으며 두 호스트 모두 직접 통신할 수 있다.
  • 두 호스트 모두에 제한된 콘 NAT 또는 Symmetric NAT이 있는 경우 외부 NAT 포트는 S와 함께 사용되는 포트와 다를 수 있다.일부 라우터에서는 외부 포트가 순차적으로 선택되기 때문에 주변 포트 추측을 통해 대화를 설정할 수 있다.

참고 항목

참조

  1. ^ "UDP Hole Punching, State of Peer-to-Peer (P2P) Communication across Network Address Translators (NATs)". ietf.org. 2008-03-01. Retrieved 2016-06-22.
  2. ^ "Simple Security in IPv6 Gateway CPE". ietf.org. 2011-01-01. Retrieved 2016-06-22.

외부 링크