2. Background
• UDP 기반의 P2P 애플리케이션과 NAT는 상극
• P2P=피해자 / NAT=가해자
• “NAT 내부의 단말은 외부의 연결요청 수신이 불가능 하다.”
• ex) 대표적 이슈
• 서로 다른 NAT에 속한 2대의 단말이 상호간 직접 통신 불가
• NAT는 내부 네트워크를 추상화
• A→B 커넥션 시도는 B의 NAT-B가 차단
• B→A 커넥션 시도는 A의 NAT-A가 차단
2
NAT-A NAT-B
A B
X
X
?
?
3. What is NAT
• NAT = Network Address Translation
• Private Network에 위치하는 단말이 Public Network(인터넷)와 통
신이 가능하도록 상호 간에 연결 시켜 주는 기능.
• “Binding Table” & “Filtering Table”
• NAT 종류
• Basic NAT
• IP 변환 (Layer3)
• 1:1 translation (1 = Public IP, 1 = Private IP)
• NAPT (Network Address Port Translation)
• IP/Port 변환 (Layer4)
• 1:N translation (1 = Public IP, N = Private IP)
• 현재 사용되는 대부분의 NAT장비/공유기
3
5. Mapping Behavior
• Address and Port Mapping
• IP Address Pooling
• Arbitrary (pre Session)
• Paired (pre Host)
• Port Assignment
• Port Preservation
• Port Overloading
• No Port Overloading
• No Port Preservation
• Port Assignment Rule (Port Range)
• Mapping Timer (Binding Refresh Timer)
• Mapping Refresh Behavior
• NAT Outbound refresh behavior of "True“
• NAT Inbound refresh behavior of "True"
5
6. Address and Port Mapping
EIM (Endpoint-Independent Mapping)
• S-IP, S-Port 정보로 External Port 결정
• 출발지 정보만 동일하면 동일한 Port 할당
6
http://www.netmanias.com/ko/?m=view&id=blog&no=5833
7. Address and Port Mapping
ADM (Address-Dependent Mapping)
• S-IP, S-Port, D-IP 정보로 External Port 결정
7
http://www.netmanias.com/ko/?m=view&id=blog&no=5833
8. Address and Port Mapping
APDM (Address and Port-Dependent Mapping)
• S-IP, S-Port, D-IP, D-Port 정보로 External Port 결정
8
http://www.netmanias.com/ko/?m=view&id=blog&no=5833
12. Filtering Behavior
APDF (Address and Port-Dependent Filtering)
• D-IP, D-Port, S-IP, S-Port 전체 검사 후 ACCEPT 판단
12
http://www.netmanias.com/ko/?m=view&id=blog&no=5839
17. ITEF Standard for NAT Traversal
ITEF Standard
• STUN (Session Traversal Utilities for NAT)
• 단말 스스로가 NAT의 존재 유무, NAT 타입식별, External IP/Port 정보를
찾아내도록 도와주는 프로토콜이다.
• STUN 서버, STUN 클라이언트(단말)로 구성
• NAT 이슈를 단말이 능동적으로 해결 (NAT Type에 제한적)
• TURN (Traversal Using Relay NAT)
• 단말들은 공중망에 위치한 TURN 서버와 세션을 설정
• TRUN 서버가 단말간 통신을 중계
• Symmetric NAT(APDM+APDF) 환경에서 통신 가능한 유일한 방법
• ICE (Interactive Connectivity Establishment)
• STUN/TURN을 사용할 때 P2P 방식을 통해 최적의 라우팅 제공 기법
• 세션 설정 과정에서 가능한 모든 S-IP를 동원하여 시그널링 시도
• 주소들의 우선순위는 직접 통신 가능한 주소가 우선
• Local Address(Device) > NAT Address(STUN) > Relay Address(TURN)
17
19. Relaying (TURN)
• 개념
• 사설 IP 주소를 가지는 두 단말 간에 직접 통신이 불가능하여, 공인 IP
주소를 가지는 외부 서버를 통해 P2P 데이터 패킷을 Relay하는 개념
• 최종 목적지(상대 단말) 정보는 Replay로 보내는 패킷의 Payload로 전
달
• 장점
• NAT Behavior(Mapping/Filtering)와 관계 없이 모두(9-Types) 지원
• 단점
• 모든 P2P 데이터 패킷이 Relay 서버를 경유
• Relay 서버의 부하 증가
• Relay 서버의 네트워크 대역폭 이슈 발생
• Relay 서버가 분산 배치되지 않은 환경에서는 P2P 통신의 지연 발생
19
21. Connection Reversal
• 개념
• P2P통신을 하려는 두 단말 중 하나는 공인 IP를 가지는 경우 적용 가
능
• Private단말→Public단말로의 연결은 문제 없음 (like
Client→WebServer)
• Public단말 →Private단말로의 연결은 NAT에 의해 차단됨
• 외부 Messaging 서버를 통해 Public단말이 Private단말로 하여금 자
신에게 연결을 하도록 유도(Reverse Connection Request in Payload)
하여 NAT에 “Binding/Filtering Table” 테이블 생성
• 장점
• P2P 데이터 패킷이 Messaging 서버를 통하지 않는다
• NAT Behavior(Mapping/Filtering)와 관계 없이 모두(9-Types) 지원
• 단점
• P2P 단말 중 하나는 반드시 공인 IP 주소 필요
21
24. UDP Hole Punching
• 개념
• 공중망의 Messaging서버를 통해 P2P 단말간 연결 지원
• 특징
• EIM-NAT타입만 지원
• Filtering Behavior은 모두 지원
• EIF과 EDF에 따라 미세한 차이
• 가장 효율적인 NAT Traversal 기법
24
EIF EDF (ADF/APDF)
1. 모든 단말은 Payload를 이용해 자신의 Private/Public 정보를 Messaging 서버에 전송/등록
2. Messaging 서버는 모든 단말의 Private/Public 정보를 보관
3. 각 단말들은 P2P통신을 위해 Messaging 에서 상대방 단말 정보 조회
4. Messaging서버는 Payload를 통해 각 단말에게 통신하고자 하는 상대방의 정보를 리턴
(조회 요청 단말과 조회 당한 단말 모두에게 동시 응답)
5. 각 단말은 리턴 된 Payload의 정보를 이용해 상대 단말로 상호 P2P 연결 시도
6. 연결 성공
6. 먼저 연결 시도된 단말은 1회 실패
7. 늦게 시도된 단말은 정상 연결
8. 1회 실패한 단말은 2회부터 정상 연결