KR101394579B1 - Ip 네트워크에서의 직접 통신 제공 방법 - Google Patents

Ip 네트워크에서의 직접 통신 제공 방법 Download PDF

Info

Publication number
KR101394579B1
KR101394579B1 KR1020100081568A KR20100081568A KR101394579B1 KR 101394579 B1 KR101394579 B1 KR 101394579B1 KR 1020100081568 A KR1020100081568 A KR 1020100081568A KR 20100081568 A KR20100081568 A KR 20100081568A KR 101394579 B1 KR101394579 B1 KR 101394579B1
Authority
KR
South Korea
Prior art keywords
tunnel
peer node
peer
address
network
Prior art date
Application number
KR1020100081568A
Other languages
English (en)
Other versions
KR20110037833A (ko
Inventor
김선철
문성
류호용
이경호
이순석
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to US12/898,929 priority Critical patent/US20110082941A1/en
Publication of KR20110037833A publication Critical patent/KR20110037833A/ko
Application granted granted Critical
Publication of KR101394579B1 publication Critical patent/KR101394579B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2575NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

IP(Internet Protocol) 네트워크에서 피어 노드가 상대 피어 노드와의 직접 통신을 제공하기 위해, 피어 노드는 서버로부터 상대 피어 노드의 가상 주소를 수신한 후, 상대 피어 노드와 직접 터널을 설정할 수 있는 경우 상대 피어 노드와 터널을 설정하고, 상대 피어 노드와 직접 터널을 설정할 수 없는 경우 터널 중계 장치와 터널을 설정한다. 그런 후에, 피어 노드는 상대 피어 노드의 가상 주소를 루트 정보로서 터널에 연결한다. 이렇게 하면, 상대 피어 노드의 가상 주소를 목적지로 하는 패킷은 설정한 터널을 통해 상대 피어 노드로 전송된다.

Description

IP 네트워크에서의 직접 통신 제공 방법{METHOD FOR PROVIDING DIRECT COMMUNICATION IN INTERNET PROTOCOL NETWORK}
본 발명은 IP 네트워크에서의 직접 통신 제공 방법에 관한 것이다.
IP(Internet Protocol) 네트워크는 외부로부터의 접근을 차단하거나 IP의 부족으로 인해 방화벽(Firewall)이나 네트워크 주소 변환 장치(Network Address Translation, NAT)를 사용하고 있다. 이러한 환경에서 통신 시장은 게임이나 메신저 등과 같은 서비스에서 피어 투 피어(Peer-to-Peer, P2P) 기술을 적용하기 위한 많은 노력을 하고 있다.
NAT나 방화벽이 포함되어 있는 IP 네트워크에서는 서버의 도움을 통하여 P2P L4(Layer 4) 수준의 직접 통신을 제공하고 있다.
P2P 직접 통신을 위해서 각 단말은 자신의 네트워크 접속 유형을 확인해야 자 단말은 한다. 단말이 공용 네트워크(Public network)에 접속한 경우, 단말은 방화벽의 유무를 확인해야 하며, 단말이 NAT를 사용하는 네트워크에 접속한 경우, NAT의 유형을 확인해야 한다. 방화벽이 없는 경우를 개방(open)이라 한다. NAT의 유형으로 풀콘(Full Cone), 제한적인 콘(Restricted Cone), 포트 제한적인 콘(Port Restricted Cone) 및 시메트릭(Symmetric)이 있을 수 있다.
표 1은 기존의 IP 네트워크에서 서버의 도움 없이 수신 단말(Receiver)과 송신 단말(Sender)간 직접 통신 가능성을 나타낸다. 표 1에서, "open"은 개방을 의미하고, "Firewall"은 방화벽을 의미한다.
Figure 112010054257334-pat00001
표 1에 도시한 바와 같이, 수신 단말이 개방형 공용 네트워크(Public-Open)인 경우, 송신 단말과 수신 단말간 직접 통신이 가능하다.
그러나, NAT나 방화벽이 개입될 때, 송신 단말과 수신 단말은 서버의 도움을 통하여 상대 단말의 변경된 IP 및 포트 정보를 획득하여야 통신을 수행할 수 있다.
표 2는 서버로부터 상대 단말의 변경된 IP 및 포트 정보를 획득한 경우의 수신 단말과 송신 단말간 직접 통신 가능성을 나타낸다.
Figure 112010054257334-pat00002
표 2를 보면, 수신 단말과 송신 단말이 서버의 도움으로 상대 단말의 변경된 IP 및 포트 정보를 획득한 경우에도 수신 단말이 개방형 공용 네트워크(Public-Open)와 풀콘 NAT(NAT-Full Cone)인 경우에만 송신 단말과 수신 단말간 직접 통신이 가능하다.
또한, 송신 단말과 수신 단말간 직접 통신을 위해 TCP 또는 UDP 홀 펀칭(Hole Punching)이 수행되기도 한다. 표 3은 서버로부터 상대 단말의 변경된 IP 및 포트 정보를 이용하여 홀 펀칭을 수행한 후 수신 단말과 송신 단말간 직접 통신 가능성을 나타낸다. 표 3에서, ▲은 송신 단말과 수신 단말 중 하나가 시메트릭 NAT(NAT-Symmetric)를 사용할 때 IP는 변경하지 않고 포트(port)만 변경하는 경우에만 직접 통신이 가능하고, IP를 변경한 경우에도 상대 노드가 제한적인 콘 NAT(NAT-Restricted Cone)인 경우에는 직접 통신이 불가능한 것을 나타낸다.
Figure 112010054257334-pat00003
표 3을 보면, 홀 펀칭이 수행되더라도 송신 단말과 수신 단말의 모든 접속 유형에 대하여 송신 단말과 수신 단말간 직접 통신이 가능한 것은 아니다. 즉, 시메트릭 NAT(NAT-Symmetric)와 시메트릭 NAT(NAT-Symmetric), 시메트릭 NAT(NAT-Symmetric)와 방화벽이 있는 공용 네트워크(Public-Firewall), 시메트릭 NAT(NAT-Symmetric)와 포트 제한적인 콘 NAT(NAT-Port Restricted Cone)간은 직접 통신이 가능하지 않음을 알 수 있다.
그러나, 이러한 경우에도 TURN(Traversal Using Relay NAT)을 사용하여 직접 통신을 가능하게 할 수 있다. TURN은 개방형 공용 네트워크(Public-Open)에 접속되어 있는 장치를 통해 직접 통신을 가능하게 한다. 즉, 송신 단말과 수신 단말은 각각 상대 단말과 통신을 위하여 개방형 공용 네트워크(Public-Open)에 접속되어 있는 장치로 데이터를 전송하고, 이 장치는 패킷을 변형하여 데이터를 상대 단말로 전송함으로써 직접 통신을 가능하게 한다.
이와 같이, 송신 단말과 수신 단말간 직접 통신을 가능하게 하는 방법은 서비스별 즉, L4(Layer 4) 세션 각각에 대해 수행되어야 하기 때문에 하나의 단말에서 직접 통신을 위해 다수의 세션이 동작하는 경우에 빈번한 처리 절차가 발생하게 된다. 또한, 이러한 직접 통신 방법은 P2P에만 적용되고 있는 기술이기 때문에 피어 투 네트워크(Peer-to-Network, P2N) 또는 네트워크 투 네트워크(Network-to-Network, N2N)간에도 직접 통신을 제공할 수 있는 기술이 필요하다.
본 발명이 해결하고자 하는 기술적 과제는 방화벽 또는 NAT가 존재하는 IP 네트워크에서 피어 투 피어(Peer-to-Peer, P2P), 피어 투 네트워크(Peer-to-Network, P2N) 또는 네트워크 투 네트워크(Network-to-Network, N2N)간 직접 통신을 가능하게 하는 IP 네트워크에서의 직접 통신 제공 방법을 제공하는 것이다.
또한, 본 발명은 처리 절차를 간소화시킬 수 있는 IP 네트워크에서의 직접 통신 제공 방법을 제공하는 것이다.
본 발명의 실시 예에 따르면, IP(Internet Protocol) 네트워크에서 피어 노드가 상대 피어 노드와의 직접 통신을 제공하는 방법이 제공된다. 직접 통신 제공 방법은, 서버로부터 자신의 가상 주소를 할당받는 단계, 상기 상대 피어 노드의 식별자를 포함하여 터널 요청 메시지를 서버로 전송하는 단계, 상기 상대 피어 노드의 식별자에 대응하는 상기 상대 피어 노드의 가상 주소를 포함한 터널 응답 메시지를 상기 서버로부터 수신하는 단계, 상기 상대 피어 노드와 터널을 설정하는 단계, 그리고 상기 상대 피어 노드의 가상 주소를 루트 정보로서 상기 터널에 연결하는 단계를 포함한다.
본 발명의 다른 실시 예에 따르면, IP(Internet Protocol) 네트워크에서 서버가 두 피어 노드간 직접 통신을 제공하는 방법이 제공된다. 직접 통신 제공 방법은, 상기 두 피어 노드의 네트워크 접속 유형을 확인하는 단계, 상기 두 피어 노드의 네트워크 접속 유형으로부터 상기 두 피어 노드간 직접 통신이 가능한지를 판단하는 단계, 상기 두 피어 노드간 직접 통신이 가능한 경우에, 상기 두 피어 노드간 터널을 설정할 수 있도록 상기 두 피어 노드로 각각 상기 터널의 목적지에 해당하는 터널 정보를 전송하는 단계, 그리고 상기 터널에 연결할 루트 정보로서 통신할 상대 피어 노드의 가상 주소를 두 피어 노드로 각각 전송하는 단계를 포함한다.
본 발명이 또 다른 실시 예에 따르면, IP(Internet Protocol) 네트워크에서 터널 중계 장치가 두 피어 노드의 직접 통신을 제공하는 방법이 제공된다. 직접 통신 제공 방법은, 상기 두 피어 노드 중 제1 피어 노드로부터 자신의 가상 주소를 포함한 제1 터널 설정 요청 메시지를 수신하는 단계, 상기 두 피어 노드 중 제2 피어 노드로부터 자신의 가상 주소를 포함한 제2 터널 설정 요청 메시지를 수신하는 단계, 상기 제1 및 제2 터널 설정 요청 메시지의 소스 주소를 추출하는 단계, 상기 제1 터널 설정 요청 메시지의 소스 주소를 목적지로 하는 제1 터널을 설정하는 단계, 상기 제2 터널 설정 요청 메시지의 소스 주소를 목적지로 하는 제2 터널을 설정하는 단계, 상기 제1 터널에 상기 제1 피어 노드의 가상 주소를 루트 정보로서 연결하는 단계, 그리고 상기 제2 터널에 상기 제2 피어 노드의 가상 주소를 루트 정보로서 연결하는 단계를 포함한다.
본 발명의 실시 예에 의하면, 방화벽(Firewall)이나 네트워크 주소 변환 장치(Network Address Translation, NAT)가 존재하는 IP 네트워크에서, 피어 노드간 직접 통신이 가능한 터널링 방법을 사용하여 피어 노드간 직접 터널을 통하여 피어 노드간 직접 통신 환경을 제공하고, 네트워크 접속 유형에 따라 피어 노드간 직접 터널을 설정할 수 없는 경우 터널 중계 장치를 통한 터널을 통하여 피어 노드간 직접 통신 환경을 제공함으로써, 피어 노드간 직접 통신을 가능하게 한다.
또한, 설정한 터널에 루트 정보로서 가상 주소를 연결함으로써, 방화벽이나 NAT로 인해 직접 통신이 불가능했던 피어 노드간 L3(Layer 3) 레벨 즉, IP 수준에서 직접 통신을 제공할 수가 있다.
또한, 방화벽이나 NAT가 존재하는 IP 네트워크에서 IP 통신을 하기 위하여, 기존에는 각 서비스별로 SIP(Session Initiation Protocol)와 같이 직접 통신이 가능한 세션을 만들어 주는 매개체가 필요하지만, 본 발명의 실시 예에 의하면, IP 수준의 직접 통신 환경이 구성되는 경우, 각 응용 서비스들은 특별히 세션을 구성해줄 필요가 없기 때문에 각 서비스들의 동작에 있어 유연성을 제공할 수 있다.
본 발명의 실시 예에 의하면, 가상 네트워크를 갖는 피어 노드와의 연동을 통하여, 피어 투 피어(Peer-to-Peer, P2P), 피어 투 네트워크(Peer-to-Network, P2N) 또는 네트워크 투 네트워크(Network-to-Network, N2N)간 직접 통신을 가능하게 한다. 이는 게임이나 P2P와 같은 서비스 환경을 구축하는 데 큰 효과가 있다. 특히 기존의 어플리케이션을 그대로 사용할 수 있기 때문에 원격 데스크탑, 화상 카메라, 센서 디바이스 또는 기타 원격 제어 등의 서비스 등을 위한 직접 통신 환경 구축에 사용할 수 있다.
또한, 가상 네트워크를 구성하고 가상 IP를 사용하는 특정 사용자 그룹, 또는 화상 카메라나 센서와 같은 디바이스 그룹을 위한 네트워크에 적용되어 직접 통신을 가능하게 할 수도 있다.
도 1은 본 발명의 실시 예에 따른 직접 통신을 제공하기 위한 IP 네트워크를 나타낸 도면이고,
도 2는 본 발명의 실시 예에 따른 서버에서 피어 노드의 가상 주소를 할당하는 방법을 나타낸 도면이고,
도 3은 본 발명의 실시 예에 따른 피어 노드가 서버에 접속하는 방법을 나타낸 도면이고,
도 4는 도 1에 도시된 서버를 나타낸 도면이고,
도 5는 도 4에 도시된 저장부의 일 예를 나타낸 도면이고,
도 6은 본 발명의 실시 예에 따른 서버를 통해 피어 노드간 직접 터널을 설정하는 방법을 나타낸 도면이고,
도 7은 두 피어 노드의 가상 주소, 네트워크 주소 및 NAT 주소의 일 예를 나타낸 도면이고,
도 8은 본 발명의 실시 예에 따른 두 피어 노드가 서버를 통해 터널 중계 장치와 터널을 설정하는 방법을 나타낸 도면이고,
도 9는 두 피어 노드의 가상 주소, 네트워크 주소 및 NAT 주소와 터널 중계 장치의 주소의 일 예를 나타낸 도면이고,
도 10 본 발명의 실시 예에 따른 가상 호스트간 직접 통신 방법을 나타낸 도면이며,
도 11은 두 피어 노드가 갖는 가상 네트워크의 주소를 나타낸 도면이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 및 청구범위 전체에서, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
이제 본 발명의 실시 예에 따른 IP 네트워크에서의 직접 통신 제공 방법에 대하여 도면을 참고로 하여 상세하게 설명한다.
도 1은 본 발명의 실시 예에 따른 직접 통신을 제공하기 위한 IP 네트워크를 나타낸 도면이다.
도 1을 참고하면, 직접 통신을 제공하기 위한 IP 네트워크는 피어 노드(P1, P2), 서버(100) 및 터널 중계 장치(200)를 포함한다.
피어 노드(P1, P2)는 방화벽이나 네트워크 주소 변환 장치(Network Address Translation, NAT)(20, 30)에 접속될 수 있다. 도 1에서는 피어 노드(P1, P2)가 NAT(20, 30)에 접속되어 있는 것으로 도시하였다.
서버(100) 및 터널 중계 장치(200)는 공용 네트워크(10)에 접속되어 있다.
서버(100)는 피어 노드(P1, P2)가 사용할 가상 주소를 관리하고, 가상 주소를 피어 노드(P1, P2)로 할당한다. 이때, 서버(100)는 피어 노드(P1, P2)가 엔드 호스트(End-Host)인지 네트워크를 갖는 장치인지를 판단하고, 엔드 호스트인 경우는 가상 주소로 가상 IP를 할당하고, 네트워크를 갖는 장치인 경우, 가상 주소로 가상 IP뿐만 아니라 네트워크 프리픽스와 프리픽스 길이를 할당할 수 있다. 가상 IP로는 IPv4 주소나 IPv6 주소를 사용할 수 있다.
서버(100)는 피어 노드(P1, P2)의 네트워크 주소와 피어 노드(P1, P2)의 네트워크 주소가 NAT(20, 30)에 의해 변경된 피어 노드(P1, P2)의 주소를 관리한다. 이하, NAT(20, 30)에 의해 변경된 피어 노드(P1, P2)의 주소를 NAT 주소라 하며, NAT 주소는 NAT(20, 30)에 의해 변경된 IP 및 포트를 포함한다.
피어 노드(P1, P2)의 네트워크 주소는 피어 노드(P1, P2)가 네트워크에 접속할 때 DHCP(Dynamic Host Configuration Protocol) 서버(도시하지 않음)로부터 할당받는 IP 또는 사용자로부터 입력받는 고정 IP를 포함할 수 있다.
이러한 네트워크 주소는 피어 노드(P1, P2)가 NAT(20, 30)에 접속하여 IP를 할당 받을 경우에는 사설 IP일 수 있고, 피어 노드(P1, P2)가 공용 네트워크(10)에 접속하여 IP를 할당 받을 경우에는 공용 IP일 수 있다. 또한, 피어 노드(P1, P2)가 NAT(20, 30)에 접속한 경우, NAT 주소는 NAT(20, 30)에 의해 변경된 IP 및 포트일 수 있다.
또한, 서버(100)는 피어 노드(P1, P2)간 직접 통신을 위해, 피어 노드(P1, P2)간 터널(T1) 또는 피어 노드(P1, P2)와 터널 중계 장치(200)간 터널(T2, T3)을 설정할 수 있도록, 피어 노드(P1, P2)로부터 수신되는 시그널링 메시지를 처리하고 중계하는 기능을 수행한다.
터널 중계 장치(200)는 피어 노드(P1, P2)간 직접 터널을 설정할 수 없는 경우, 피어 노드(P1, P2)와 터널(T2, T3)을 설정하기 위한 시그널링 메시지를 처리한다.
피어 노드(P1, P2)는 엔드 호스트로서, NAT(20, 30)를 통해 공용 네트워크(10)에 접속할 수 있다.
피어 노드(P1, P2)는 공용 네트워크(10)로부터 네트워크 주소를 할당받고, 서버(100)로부터 가상 주소를 할당받으며, 네트워크 주소와 가상 주소를 사용하여 통신을 수행할 수 있다. 특히, 피어 노드(P1, P2)에서 동작하는 어플리케이션들은 가상 주소로 통신할 수 있다.
또한, 피어 노드(P1, P2)가 NAT(20, 30)를 통해 서버(100)에 접속하는 경우, 피어 노드(P1, P2)는 서버(100)로부터 자신의 NAT 주소를 수신한다.
이러한 피어 노드(P1, P2)는 네트워크 주소 또는 NAT 주소를 사용하여 피어 노드(P1, P2)간 터널(T1) 또는 터널 중계 장치(200)와의 터널(T2, T3)을 설정하고, 설정한 터널을 통해 통신하고자 하는 상대 피어 노드(P2, P1)와 직접 통신을 수행할 수 있다.
예를 들어, 피어 노드(P1, P2)가 NAT(20, 30)에 접속되는 경우, 피어 노드(P1, P2)는 각각 상대 피어 노드(P2, P1)로부터 상대 피어 노드(P2, P1)의 NAT 주소를 수신하여, 상대 피어 노드(P2, P1)의 NAT 주소를 터널 정보로 사용하여 상대 피어 노드(P2, P1)와의 터널을 설정한다.
한편, 피어 노드(P1, P2)간 직접 터널을 설정할 수 없는 경우, 피어 노드(P1, P2)는 서버(100)로부터 터널을 설정할 터널 중계 장치(200)의 주소를 수신하고, 터널 중계 장치(200)의 주소로 자신의 NAT 주소를 전달함으로써, 피어 노드(P1, P2)는 터널 중계 장치(200)의 주소를 터널 정보로 사용하여 터널 중계 장치(200)와의 터널을 설정하고, 터널 중계 장치(200)는 피어 노드(P1, P2)의 NAT 주소를 터널 정보로 사용하여 피어 노드(P1, P2)와 각각 터널을 설정할 수 있다.
피어 노드(P1, P2)는 서버(100)로부터 할당받는 가상 주소에 네트워크 프리픽스와 프리픽스 길이가 포함되어 있는 경우, 네트워크 프리픽스와 프리픽스 길이를 기반으로 가상 네트워크(40, 50)를 설정할 수 있으며, 가상 네트워크(40, 50)에는 가상 호스트(VH1, VH2)가 각각 접속될 수 있다. 이와 같이, 피어 노드(P1, P2)가 엔드 호스트가 아닌 가상 네트워크(40, 50)를 갖는 장치인 경우, 가상 네트워크(40, 50)에 위치한 가상 호스트(VH1, VH2)간 통신도 피어 노드(P1, P2)간 설정된 터널(T1) 또는 피어 노드(P1, P2)와 터널 중계 장치(200)와 설정된 터널(T2, T3)을 이용하여 수행될 수 있다.
피어 노드(P1, P2)와 가상 호스트(VH1, VH2)는 IP 기반의 통신을 하는, 각종 PC(Personal Computer) 장치, 각종 센서 장치, 스마트폰 장치, 화상 카메라 등이 될 수 있다. 특히, 피어 노드(P1, P2)가 가상 네트워크(40, 50)를 구성하는 경우, 피어 노드(P1, P2)는 인터넷 공유 기능, NAT 기능을 갖는 장치일 수 있다. 인터넷 공유 기능을 갖는 장치로는 NAT 장치, AP(Access Point), 각종 OS(Operating system) 및 PC 기반의 NAT 장치 등이 있을 수 있다.
또한, 피어 노드(P1, P2)는 WAN(Wide Area Network) 접속으로 이더넷(Ethernet), 와이파이(Wi-Fi), 와이브로(Mibro), 고속 하향 패킷 접속(High-Speed Downlink Packet Access, HSDPA) 및 3G 등의 신호를 사용하고, LAN(Local Area Network) 접속으로 이더넷, 와이파이, 블루투스 등의 신호를 사용하는 모든 장치일 수 있다. 예를 들어, 인터넷 공유 기능이 포함된 스마트폰이 3G, 와이브로 및 와이파이 중 하나로 인터넷에 접속하고 스마트폰 자체적으로 와이파이 또는 블루투스 통신으로 각종 장치들의 접속을 제공할 때, 스마트폰은 가상 네트워크를 갖는 피어 노드이고, 스마트폰에 접속하는 각종 장치들은 가상 호스트가 될 수 있다.
도 2는 본 발명의 실시 예에 따른 서버에서 피어 노드의 가상 주소를 할당하는 방법을 나타낸 도면이다. 도 2에서는 하나의 피어 노드(P1)만을 도시하였다.
도 2를 참고하면, 피어 노드(P1)는 아이디(ID) 및 패스워드 등의 정보를 서버(100)에 등록하기 위해, 아이디(ID) 및 패스워드를 포함하는 등록 요청 메시지를 서버(100)로 전달한다(S210).
서버(100)는 피어 노드(P1)의 아이디(ID) 및 패스워드 등의 정보를 등록한다(S220). 여기서, 아이디(ID)는 서버(100)에서 피어 노드(P1)를 구분할 수 있는 식별자로서, 문자열로 이루어질 수 있다.
또한, 서버(100)는 피어 노드(P1)로 가상 주소를 할당하기 위해, 피어 노드(P1)가 엔드 호스트인지 네트워크를 갖는 장치인지를 판단한다(S230). 이때, 피어 노드(P1)가 엔드 호스트인 경우, 서버(100)는 가상 주소로서 가상 IP를 할당하고(S240), 피어 노드(P1)가 네트워크를 갖는 장치인 경우, 가상 주소로서 가상 IP뿐만 아니라, 네트워크 프리픽스(network prefix)와 프리픽스 길이(Virtual Prefix Length)를 할당한다(S250).
이후, 서버(100)는 등록 요청 메시지에 대한 등록 응답 메시지를 피어 노드(P1)로 전송한다(S260). 서버(100)는 등록 응답 메시지에 가상 주소를 포함시킬 수 있다.
이와 같이, 서버(100)는 피어 노드(P1)의 등록 요청 메시지에 의해 피어 노드(P1)의 가상 주소를 할당할 수 있으며, 피어 노드의 아이디에 할당한 가상 주소르 매핑하여 관리할 수 있다.
피어 노드(P1)는 등록 응답 메시지를 통해 서버(100)로부터 가상 주소를 제공받을 수 있으며, 서버(100)에 매번 접속하여 가상 주소를 요청함으로써, 서버(100)로부터 가상 주소를 제공받을 수도 있다.
도 3은 본 발명의 실시 예에 따른 피어 노드가 서버에 접속하는 방법을 나타낸 도면이다. 도 3에서도 하나의 피어 노드(P1)만을 도시하였다.
도 3을 참고하면, 피어 노드(P1)는 공용 네트워크(10)에 연결되는 순간 공용 네트워크(10)로부터 네트워크 주소를 획득할 수 있다(S302). 예를 들어, 피어 노드(P1)는 공용 네트워크(10)에 연결되는 순간 DHCP 서버로부터 네트워크 주소에 해당하는 IP를 할당받거나 사용자로부터 네트워크 주소에 해당하는 IP를 입력받을 수 있다.
다음, 피어 노드(P1)는 자신의 아이디(ID)를 포함하여 가상 주소 요청 메시지를 서버(100)로 전달함으로써, 서버(100)로 자신의 가상 주소를 요청할 수 있다(S304).
가상 주소 요청 메시지를 수신한 서버(100)는 피어 노드(P1)의 아이디(ID)에 해당하는 가상 주소를 검색하고(S306), 가상 주소 요청 메시지에 대한 가상 주소 응답 메시지에 검색한 가상 주소를 포함하여 피어 노드(P1)로 전송한다(S308).
피어 노드(P1)는 가상 주소 응답 메시지에 포함된 가상 주소를 터널 인터페이스에 설정한다(S310). 즉, 피어 노드(P1)는 상대 피어 노드(예를 들면, 도 1의 P2)와 가상 주소를 설정된 터널에 연결한다. 그러면, 피어 노드(P1)는 설정된 터널을 통해 가상 IP 기반의 통신을 수행할 수 있다.
다음, 피어 노드(P1)는 향후 상대 피어 노드(예를 들면, 도 1의 P2)와 직접 터널 설정 시 UDP 또는 TCP 홀 펀칭에 사용할 NAT 주소 즉, 변경된 IP 및 포트를 학습하고(S312), 자신의 네트워크 접속 유형을 판단하기 위해 서버(100)와 STUN[Simple Traversal of User Datagram Protocol(UDP) Through Network Address Translators(NATs)] 절차를 수행한다(S314).
피어 노드(P1)는 서버(100)와의 STUN 절차로부터 네트워크 접속 유형을 확인하고(S316), 네트워크 접속 유형을 서버(100)로 등록하기 위해, 가상 주소, 네트워크 주소와 함께 네트워크 접속 유형을 포함한 등록 요청 메시지를 서버(100)로 전송한다(S318).
등록 요청 메시지를 수신한 서버(100)는 피어 노드(P1)의 네트워크 접속 유형과 네트워크 주소를 가상 주소에 매핑하여 등록하고(S320), 등록 완료에 따른 등록 응답 메시지를 피어 노드(P1)로 전송한다(S322).
한편, STUN 절차에서는 포트를 사용한다. STUN 절차에서 사용하는 포트는 피어 노드(P1, P2)와 서버(100)간 송수신되는 가상 주소 요청에 대한 응답 메시지, 네트워크 접속 유형 정보의 등록 요청에 대한 등록 응답 메시지, 피어 노드(예를 들면, 도 1의 P1)가 상대 피어 노드(예를 들면, 도 1의 P2)와 직접 터널을 설정하기 위해 사용하는 홀 펀칭 메시지와 상대 피어 노드(예를 들면, 도 1의 P2)로부터 전송되는 터널 요청 응답 메시지에 사용될 수 있다.
또한, 피어 노드(P1)가 NAT(도 1의 20)에 접속되어 있는 경우, NAT(도 1의 20)의 세션 종료(Session Timeout)를 회피하기 위하여 네트워크 주소에 해당하는 포트를 사용하는 메시지를 주기적으로 서버(100)에 전송할 수 있다.
도 4는 도 1에 도시된 서버를 나타낸 도면이고, 도 5는 도 4에 도시된 저장부의 일 예를 나타낸 도면이다.
도 4를 참고하면, 서버(100)는 제어부(110) 및 저장부(120)를 포함한다.
제어부(110)는 피어 노드(P1)로 가상 주소를 할당하고, 피어 노드(P1)로 할당한 가상 주소를 저장부(120)에 저장한다.
또한, 제어부(110)는 피어 노드(P1)로부터 네트워크 주소, NAT 주소, 그리고 네트워크 접속 유형의 등록 요청을 처리하여 피어 노드(P1)의 네트워크 주소, NAT 주소, 그리고 네트워크 접속 유형을 저장부(120)에 저장한다.
저장부(120)에는 피어 노드(P1)의 아이디별 가상 주소, 네트워크 주소, NAT 주소, 그리고 네트워크 접속 유형이 저장되어 있다. 예를 들면, 도 5에 도시한 바와 같이, 피어 노드의 아이디(abc@xyz.com, …, def@zyx.com)에 매핑하여 가상 주소, 네트워크 주소, NAT 주소, 그리고 네트워크 접속 유형이 저장될 수 있다.
이와 달리, 피어 노드(P1)의 가상 주소를 키로 하여 가상 주소에 매핑하여 네트워크 주소, NAT 주소, 그리고 네트워크 접속 유형이 저장될 수도 있다.
다음으로, 두 피어 노드(P1, P2)간 직접 통신을 위한 터널을 설정하는 방법에 대해 도 6 내지 도 도 11을 참고로 하여 자세하게 설명한다. 아래에서는 설명의 편의상 두 피어 노드(P1, P2)가 각각 NAT(20, 30)에 접속되는 것으로 가정하고 설명하기로 한다.
도 6은 본 발명의 실시 예에 따른 서버를 통해 피어 노드간 직접 터널을 설정하는 방법을 나타낸 도면이고, 도 7은 두 피어 노드의 가상 주소, 네트워크 주소 및 NAT 주소의 일 예를 나타낸 도면이다.
도 6을 참고하면, 피어 노드(P1, P2)는 도 3에 도시한 바와 같은 접속 절차를 수행한다(S602~S504). 그러면, 서버(100)는 피어 노드(P1, P2)의 네트워크 주소, NAT 주소, 그리고 네트워크 접속 유형을 획득할 수 있다.
이후, 피어 노드(P1)는 피어 노드(P2)와의 직접 통신을 위해, 피어 노드(P2)와 터널을 설정하는 과정을 수행한다.
피어 노드(P1)는 피어 노드(P2)와의 직접 통신을 위한 터널을 설정하기 위해, 서버(100)로 터널 요청(Tunnel Query Request) 메시지를 전송한다(S606). 이때, 서버(100)에서 피어 노드들의 아이디(ID)를 기반으로 저장부(120)를 구성하고 있는 경우, 터널 요청(Tunnel Query Request) 메시지에는 통신하고자 하는 피어 노드(P2)의 아이디(ID)가 포함될 수 있다. 반면, 서버(100)에서 피어 노드들의 가상 주소를 기반으로 저장부(120)를 구성하고 있는 경우, 터널 요청(Tunnel Query Request) 메시지에는 피어 노드(P2)의 가상 주소가 포함될 수 있다.
터널 요청(Tunnel Query Request) 메시지를 수신한 서버(100)는 두 피어 노드(P1, P2)의 네트워크 접속 유형으로부터 피어 노드(P1, P2)간 직접 터널을 설정할 수 있는지 판단한다(S608). 예를 들어, 서버(100)는 두 피어 노드(P1, P2)의 네트워크 접속 유형이 시메트릭 NAT(NAT-Symmetric)와 시메트릭 NAT(NAT-Symmetric), 시메트릭 NAT(NAT-Symmetric)와 방화벽이 있는 공용 네트워크(Public-Firewall), 시메트릭 NAT(NAT-Symmetric)와 포트 제한적인 콘 NAT(NAT-Port Restricted Cone)인 경우에 는 두 피어 노드(P1, P2)간 직접 터널을 설정할 수 없는 것으로 판단할 수 있다.
두 피어 노드(P1, P2)간 직접 터널을 설정할 수 있는 경우, 서버(100)는 두 피어 노드(P1, P2)간 직접 터널을 설정할 수 있다는 정보와 터널 정보를 터널 알림(Tunnel Query Notification) 메시지에 포함하여 피어 노드(P2)로 전달한다(S610). 또한, 서버(100)는 두 피어 노드(P1, P2)간 직접 터널을 설정할 수 있다는 정보와 터널 정보를 터널 응답(Tunnel Query Response) 메시지에 포함하여 피어 노드(P1)로 전송한다(S612). 여기서, 두 피어 노드(P1, P2)간 직접 터널을 설정할 수 있다는 정보는 홀 펀칭 플래그(HP flag)를 설정함으로써 나타낼 수 있다. 예를 들어, 홀 펀칭 플래그를 "TRUE"로 설정하여 두 피어 노드(P1, P2)간 직접 터널을 설정할 수 있다는 정보를 표시할 수 있다. 또한, 피어 노드(P1)로 전송되는 터널 정보로는 통신하고자 하는 피어 노드(P2)의 가상 주소, 네트워크 주소 및 NAT 주소가 포함될 수 있으며, 마찬가지로, 피어 노드(P2)로 전송되는 터널 정보로는 통신하고자 하는 피어 노드(P1)의 가상 주소, 네트워크 주소 및 NAT 주소가 포함될 수 있다.
터널 응답(Tunnel Query Request) 메시지와 터널 요청(Tunnel Query Request) 메시지를 각각 수신한 피어 노드(P1, P2)는 TCP 또는 UDP 홀 펀칭을 위한 메시지 교환을 수행한다(S614). 이 과정에서, 상대 피어 노드의 메시지를 수신한 피어 노드(P1/P2)는 각각 수신한 메시지의 IP 헤더에서 소스 주소를 추출하고, 추출한 소스 주소를 피어 노드(P2/P1)의 실제 NAT 주소로 판단한다(S616~S618).
이후, 피어 노드(P1)는 피어 노드(P2)의 실제 NAT 주소를 목적지로 하여 터널 설정 요청(Tunnel Create Request) 메시지를 전송한다(S620).
피어 노드(P2)는 피어 노드(P1)로부터 터널 설정 요청(Tunnel Create Request) 메시지를 수신하면, 터널 설정 요청(Tunnel Create Request) 메시지의 IP 헤더에서 소스 주소를 추출하여 터널의 목적지 주소로 하고 자신의 네트워크 주소를 소스 주소로 하여 터널을 설정하고(S622), 추출한 IP 헤더의 소스 주소를 사용하여 자신의 가상 주소를 포함한 터널 설정 응답(Tunnel Create Response) 메시지를 피어 노드(P1)로 전송한다(S624).
또한, 피어 노드(P2)는 피어 노드(P1)의 가상 IP를 루트 정보로서 설정한 터널에 연결한다(S626). 이와 같이 하면, 피어 노드(P1)의 가상 IP를 목적지로 하는 모든 패킷은 피어 노드(P2)가 설정한 터널을 통해 피어 노드(P1)로 전달될 수 있다.
피어 노드(P2)로부터 터널 설정 응답(Tunnel Create Response) 메시지를 수신한 피어 노드(P1)는 터널 설정 응답(Tunnel Create Response) 메시지의 소스 주소를 추출하여 터널의 목적지 주소로 하고, 자신의 네트워크 주소를 터널의 소스 주소로 하여 터널을 설정한다(S628).
그런 후에, 피어 노드(P1)는 피어 노드(P2)의 가상 IP를 루트 정보로서 설정한 터널로 연결한다(S630). 이와 같이 하면, 피어 노드(P2)의 가상 IP를 목적지로 하는 모든 패킷은 피어 노드(P1)가 설정한 터널을 통해 피어 노드(P2)로 전달될 수 있다.
한편, 피어 노드(P1)가 수신한 터널 설정 응답(Tunnel Create Response) 메시지의 소스 주소는 TCP 또는 UDP 홀 펀칭에서 판단한 피어 노드(P2)의 실제 NAT 주소와 동일할 수 있으며, 피어 노드(P2)가 수신한 터널 설정 요청(Tunnel Create Request) 메시지의 소스 주소는 TCP 또는 UDP 홀 펀칭에서 판단한 피어 노드(P1)의 실제 NAT 주소와 동일할 수 있다. 따라서, TCP 또는 UDP 홀 펀칭에서 판단한 피어 노드(P1, P2)의 실제 NAT 주소를 터널 정보로서 사용할 수도 있다.이러한 과정이 완료되고 나면, 피어 노드(P1, P2)의 어플리케이션들은 가상 IP를 기반으로 직접 통신을 수행할 수 있다(S632). 또한, 이러한 직접 통신 제공 방법은 응용 서비스별로 만들어지는 것이 아니라, 피어 노드별 L3 수준의 통신 환경을 만들기 때문에 각 피어 노드(P1, P2)에서 동작하는 모든 어플리케이션들은 직접 통신이 가능한 멀티 서비스를 가능하게 한다.
예를 들어, 도 7에 도시한 바와 같이, 네트워크 주소(IP/포트)가 192.168.1.101/1000이며, NAT 주소(IP/포트)가 90.90.90.90/1024이며, 가상 IP가 1.1.1.1인 피어 노드(P1)와 네트워크 주소(IP/포트)가 192.168.2.202/1000이며, NAT 주소(IP/포트)가 80.80.80.80/2048이며, 가상 IP가 2.2.2.2인 피어 노드(P2)가 있다고 가정하면, 피어 노드(P1)의 터널 정보 및 루트 정보는 표 4와 같이 설정될 수 있다.
Figure 112010054257334-pat00004
표 4에 도시한 바와 같이, 피어 노드(P1)의 터널 정보는 터널의 소스 주소에 해당하는 IP/포트와 터널의 목적지 주소에 해당하는 IP/포트로서, {192.168.1.101/1000, 80.80.80.80/2048}이고, 이 터널에 연결되는 루트 정보는 피어 노드(P2)의 가상 주소인 2.2.2.2/32가 된다. 이때, 터널의 목적지 주소는 피어 노드(P2)가 서버(100)에 접속할 때 NAT(30)에 의한 변경되는 NAT 주소에 해당한다. 이러한 터널 정보와 루트 정보가 설정되어 있으면, 피어 노드(P1)가 2.2.2.2를 목적지로 하여 패킷을 전송하면, 이 패킷은 80.80.80.80을 목적지로 하고 있는 터널을 통과하게 된다.
또한, 피어 노드(P2)의 터널 정보 및 루트 정보는 표 5와 같이 설정될 수 있다.
Figure 112010054257334-pat00005
표 5에 도시한 바와 같이, 피어 노드(P2)의 터널 정보는 터널의 소스 주소에 해당하는 IP/포트와 터널의 목적지 주소에 해당하는 IP/포트로서, {192.168.2.202/1000, 90.90.90.90/1024}이고, 이 터널에 연결되는 루트 정보는 피어 노드(P1)의 가상 주소인 1.1.1.1/32가 된다. 이때, 터널 정보의 목적지 주소는 피어 노드(P1)가 서버(100)에 접속할 때 NAT(20)에 의한 변경되는 NAT 주소에 해당한다. 이러한 터널 정보와 루트 정보가 설정되어 있으면, 피어 노드(P2)가 1.1.1.1을 목적지로 하여 패킷을 전송하면, 이 패킷은 90.90.90.90/1024를 목적지로 하고 있는 터널을 통과하게 된다.
도 8은 본 발명의 실시 예에 따른 두 피어 노드가 서버를 통해 터널 중계 장치와 터널을 설정하는 방법을 나타낸 도면이고, 도 9는 두 피어 노드의 가상 주소, 네트워크 주소 및 NAT 주소와 터널 중계 장치의 주소의 일 예를 나타낸 도면이다.
도 8을 참고하면, 피어 노드(P1, P2)는 도 3에 도시한 바와 같은 접속 절차를 수행한다(S802~S804). 그러면, 서버(100)는 피어 노드(P1, P2)의 네트워크 주소, NAT 주소, 그리고 네트워크 접속 유형을 획득할 수 있다.
이후, 피어 노드(P1)는 피어 노드(P2)와의 직접 통신을 위해, 피어 노드(P2)와 터널을 설정하는 과정을 수행한다.
피어 노드(P1)는 피어 노드(P2)와의 직접 통신을 위한 터널을 설정하기 위해, 서버(100)로 터널 요청(Tunnel Query Request) 메시지를 전송한다(S806).
터널 요청(Tunnel Query Request) 메시지를 수신한 서버(100)는 두 피어 노드(P1, P2)의 네트워크 접속 유형으로부터 피어 노드(P1, P2)간 직접 터널을 설정할 수 있는지 판단한다(S808).
두 피어 노드(P1, P2)간 직접 터널을 설정할 수 없는 경우, 서버(100)는 서버(100)는 두 피어 노드(P1, P2)간 직접 터널을 설정할 수 없다는 정보와 터널 중계 장치(200)와 터널을 설정할 수 있도록 터널 정보로서 터널 중계 장치(200)의 주소를 터널 알림(Tunnel Query Notification) 메시지에 포함하여 피어 노드(P2)로 전달한다(S810). 또한, 서버(100)는 두 피어 노드(P1, P2)간 직접 터널을 설정할 수 없다는 정보와 터널 중계 장치(200)와 터널을 설정할 수 있도록 터널 정보로서 터널 중계 장치(200)의 주소를 터널 응답(Tunnel Query Response) 메시지에 포함하여 피어 노드(P1)로 전송한다(S812). 여기서, 두 피어 노드(P1, P2)간 직접 터널을 설정할 수 없다는 정보는 홀 펀칭 플래그를 설정함으로써 나타낼 수 있다. 예를 들어, 홀 펀칭 플래그를 "FALSE"로 설정하여 두 피어 노드(P1, P2)간 직접 터널을 설정할 수 없다는 정보를 표시할 수 있다. 또한, 피어 노드(P1)로 전송되는 터널 정보로는 터널 중계 장치(200)의 주소뿐만 아니라 통신하고자 하는 피어 노드(P2)의 가상 주소가 더 포함될 수 있으며, 피어 노드(P2)로 전송되는 터널 정보로는 터널 중계 장치(200)의 주소뿐만 아니라 통신하고자 하는 피어 노드(P1)의 가상 주소가 더 포함될 수 있다.
터널 응답(Tunnel Query Request) 메시지를 수신한 피어 노드(P1)는 자신의 가상 주소를 포함하여 터널 설정 요청(Tunnel Create Request) 메시지를 터널 중계 장치(200)의 주소를 목적지로 전송한다(S814).
또한, 터널 설정 요청(Tunnel Create Request) 메시지를 수신한 피어 노드(P2)도 자신의 가상 주소를 포함하여 터널 설정 요청(Tunnel Create Request) 메시지를 터널 중계 장치(200)의 주소를 목적지로 전송한다(S816).
피어 노드(P1, P2)로부터 터널 설정 요청(Tunnel Create Request) 메시지를 수신한 터널 중계 장치(200)는 수신한 터널 설정 요청(Tunnel Create Request) 메시지의 소스 주소와 자신의 주소를 터널 정보로 하여 피어 노드(P1, P2)와의 터널을 설정한다(S818). 이때, 피어 노드(P1)로부터 전송된 터널 설정 요청(Tunnel Create Request) 메시지의 소스 주소는 피어 노드(P1)의 NAT 주소일 수 있으며, 피어 노드(P2)로부터 전송된 터널 설정 요청(Tunnel Create Request) 메시지의 소스 주소는 피어 노드(P2)의 NAT 주소일 수 있다.
구체적으로, 피어 노드(P1)로부터 터널 설정 요청(Tunnel Create Request) 메시지를 수신한 터널 중계 장치(200)는 터널 설정 요청(Tunnel Create Request) 메시지의 소스 주소 즉, 피어 노드(P1)의 NAT 주소를 목적지 주소로 하고 자신의 주소를 소스 주소로 하는 터널을 설정할 수 있다.
또한, 피어 노드(P2)로부터 터널 설정 요청(Tunnel Create Request) 메시지를 수신한 터널 중계 장치(200)는 터널 설정 요청(Tunnel Create Request) 메시지의 소스 주소 즉, 피어 노드(P2)의 NAT 주소를 목적지 주소로 하고 자신의 주소를 소스 주소로 하는 터널을 설정할 수 있다.
터널 중계 장치(200)는 피어 노드(P1, P2)와 각각 터널 설정을 완료하고 나면, 터널 설정 요청(Tunnel Create Request) 메시지에 대한 터널 설정 응답(Tunnel Create Response) 메시지를 피어 노드(P1, P2)로 각각 전송한다(S820~S822).
이와 같이, 피어 노드(P1, P2)와 터널 중계 장치(200)간 터널이 설정되고 나면, 피어 노드(P1, P2)의 어플리케이션들은 터널 중계 장치(200)와 설정된 터널을 통해 가상 IP를 기반으로 직접 통신을 수행할 수 있다(S824~S826).
한편, 본 발명의 실시 예와 달리, 복수의 터널 중계 장치가 존재하는 경우, 서버(100)는 복수의 터널 중계 장치 중 피어 노드(P1, P2)와 터널을 설정할 하나의 터널 중계 장치를 선정하는 기능을 포함할 수 있다.
예를 들어, 도 9에 도시한 바와 같이, 네트워크 주소(IP/포트)가 192.168.1.101/1000이며, NAT 주소(IP/포트)가 90.90.90.90/1024이며, 가상 IP가 1.1.1.1인 피어 노드(P1)와 네트워크 주소(IP/포트)가 192.168.2.202/1000이며, NAT 주소(IP/포트)가 80.80.80.80/2048이며, 가상 IP가 2.2.2.2인 피어 노드(P2)가 있고, 터널 중계 장치(200)의 주소(IP/포트)가 101.101.101.101/1000이라고 가정한다. 그러면, 피어 노드(P1)의 터널 정보 및 루트 정보는 표 6과 같이 설정될 수 있다.
Figure 112010054257334-pat00006
또한, 피어 노드(P2)의 터널 정보 및 루트 정보는 표 7과 같이 설정될 수 있다.
Figure 112010054257334-pat00007
표 6 및 표 7에 나타낸 바와 같이, 피어 노드(P1)의 터널 정보에서 목적지 주소가 터널 중계 장치(200)의 주소가 되고, 피어 노드(P2)의 터널 정보에서 목적지 주소가 터널 중계 장치(200)의 주소가 된다.
또한, 터널 중계 장치(200)의 터널 정보 및 루트 정보는 표 8과 같이 설정될 수 있다.
Figure 112010054257334-pat00008
표 8에 도시한 바와 같이, 터널 중계 장치(200)는 피어 노드(P1, P2)와 각각 터널을 설정하므로, 피어 노드(P1)와 설정되는 터널에 대한 터널 정보 및 루트 정보와 피어 노드(P2)와 설정되는 터널에 대한 터널 정보 및 루트 정보를 가질 수 있다.
표 6 내지 표 8과 같이, 터널 정보와 루트 정보가 설정되어 있으면, 피어 노드(P1)에서 피어 노드(P2)의 가상 IP인 2.2.2.2로 패킷을 전송하면, 이 패킷은 피어 노드(P1)와 터널 중계 장치(200)간 설정된 터널을 통과하여 터널 중계 장치(200)로 전달된다. 피어 노드(P1)와 터널 중계 장치(200)간 설정된 터널을 통해 패킷을 수신한 터널 중계 장치(200)는 수신한 패킷의 목적지 주소를 확인한다. 이때, 수신한 패킷의 목적지 주소가 피어 노드(P2)의 가상 IP인 2.2.2.2이므로, 터널 중계 장치(200)는 피어 노드(P2)와 터널 중계 장치(200)간 설정된 터널을 통해 전송한다. 그러면, 이 패킷은 피어 노드(P2)와 터널 중계 장치(200)간 설정된 터널을 통과하여 피어 노드(P2)로 전달될 수 있다.
도 10 본 발명의 실시 예에 따른 가상 호스트간 직접 통신 방법을 나타낸 도면이고, 도 11은 두 피어 노드가 갖는 가상 네트워크의 주소를 나타낸 도면이다. 도 10에서는 설명의 편의를 위해 피어 노드(P1, P2)는 개방형 공용 네트워크(Public-Open)에 접속되어 있는 것으로 가정하였다.
도 10을 참고하면, 피어 노드(P1, P2)가 자신의 가상 네트워크를 갖는 경우, 가상 네트워크에는 가상 호스트(VH1, VH2)가 존재할 수 있다. 앞서 설명한 피어 노드(P1, P2)간 직접 통신을 제공하는 방법과 유사한 방법을 통해 가상 호스트(VH1, VH2)간 직접 통신이 가능할 수 있다.
피어 노드(P1, P2)가 갖는 가상 네트워크에 접속하고 있는 가상 호스트(VH1, VH2)간 직접 통신을 위해, 피어 노드(P1, P2)는 각각 가상 호스트(VH1, VH2)로 가상 IP를 할당한다(S1010~S1020). 이때, 피어 노드(P1, P2)는 서버(100)로부터 할당 받은 네트워크 프리픽스 및 프리픽스 길이를 기반으로 가상 호스트(VH1, VH2)로 가상 IP를 할당할 수 있다. 예를 들어, 네트워크 프리픽스 및 길이가 1.1.1.0/24인 경우, 피어 노드(P1, P2)는 1.1.1.1부터 1.1.1.255 내에서 가상 호스트(VH1, VH2)로 가상 IP를 할당할 수 있다.
또한, 피어 노드(P1, P2)는 도 6 또는 도 8에 도시한 방법들을 통해 터널 정보 및 루트 정보를 설정한다(S1030~S1040). 이때, 피어 노드(P1/P2)는 루트 정보로 설정한 터널에 상대 피어 노드(P2/P1)의 네트워크 프리픽스와 프리픽스 길이를 추가한다. 이렇게 하면, 피어 노드(P1)의 가상 호스트(VH1)와 피어 노드(P2)의 가상 호스트(VH2)가 피어 노드(P1, P2)간 설정된 터널 또는 피어 노드(P1, P2)와 터널 중계 장치(200)와 설정된 터널을 통해 직접 통신을 수행할 수 있다(S1050). 도 10에서는 피어 노드(P1, P2)간 직접 터널이 설정되는 것으로 도시하였다.
예를 들어, 도 11에 도시한 바와 같이, 피어 노드(P1)는 네트워크 프리픽스와 프리픽스 길이가 각각 1.1.1.0과 24로 구성되는 가상 네트워크를 가지고, 피어 노드(P2)는 네트워크 프리픽스와 프리픽스 길이가 각각 2.2.2.0과 24로 구성되는 가상 네트워크를 가지며, 피어 노드(P1)가 가지는 가상 네트워크의 가상 호스트(VH)의 가상 IP가 1.1.1.10이고, 피어 노드(P2)가 가지는 가상 네트워크의 가상 호스트(VH2)의 가상 IP가 2.2.2.20이라고 가정한다. 이때, 두 피어 노드(P1, P2)가 직접 통신이 가능한 경우, 피어 노드(P1)의 터널 정보 및 루트 정보는 표 9와 같이 설정될 수 있으며, 피어 노드(P2)의 터널 정보 및 루트 정보는 표 10과 같이 설정될 수 있다.
Figure 112010054257334-pat00009
Figure 112010054257334-pat00010
표 9 및 표 10을 보면, 피어 노드(P1)의 루트 정보로 상대 피어 노드(P2)의 네트워크 프리픽스와 프리픽스 길이가 추가되고, 피어 노드(P2)의 루트 정보로 상대 피어 노드(P1)의 네트워크 프리픽스와 프리픽스 길이가 추가된다.
상술한 두 피어 노드(P1, P2)간 직접 통신 제공 방법은 사용자가 필요한 순간에 원하는 피어 노드로 시그널링하여 구현될 수도 있으며, 동작하고자 하는 목적에 따라 피어 노드의 부트 업(boot up) 시 자동으로 시그널링하여 구현될 수도 있다.
본 발명의 실시 예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현되는 것은 아니며, 본 발명의 실시 예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시 예의 기재로부터 본 발명이 속하는 기술 분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리 범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리 범위에 속하는 것이다.

Claims (20)

  1. IP(Internet Protocol) 네트워크에서 피어 노드가 상대 피어 노드와의 직접 통신을 제공하는 방법에 있어서,
    서버로부터 자신의 가상 주소를 할당받는 단계,
    상기 상대 피어 노드의 식별자를 포함하여 터널 요청 메시지를 서버로 전송하는 단계,
    상기 상대 피어 노드의 식별자에 대응하는 상기 상대 피어 노드의 가상 주소를 포함한 터널 응답 메시지를 상기 서버로부터 수신하는 단계,
    상기 상대 피어 노드와 터널을 설정하는 단계, 그리고
    상기 상대 피어 노드의 가상 주소를 루트 정보로서 상기 터널에 연결하는 단계를 포함하며,
    상기 터널 응답 메시지는 상기 상대 피어 노드와의 직접 통신 가능 여부를 나타내는 홀 펀칭 플래그를 더 포함하며,
    상기 설정하는 단계는
    상기 홀 펀칭 플래그에 의해 상기 상대 피어 노드와 직접 통신이 가능한 것으로 판단되면, 상기 상대 피어 노드와 직접 터널을 설정하는 단계, 그리고
    상기 홀 펀칭 플래그에 의해 상기 상대 피어 노드와 직접 통신이 불가능한 것으로 판단되면, 터널 중계 장치와 터널을 설정하는 단계를 포함하는 직접 통신 제공 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 터널 응답 메시지는 상기 직접 터널을 설정하기 위한 터널 정보를 더 포함하며,
    상기 직접 터널을 설정하는 단계는,
    상기 터널 정보가 유용한지를 확인하는 단계, 그리고
    유용한 터널 정보를 이용하여 상기 상대 피어 노드와 직접 터널을 설정하는 단계를 포함하는 직접 통신 제공 방법.
  4. 제3항에 있어서,
    상기 확인하는 단계는,
    상기 상대 피어 노드의 터널 정보를 이용하여 상기 상대 피어 노드와 TCP 또는 UDP 홀 펀칭을 위한 메시지 교환을 수행하는 단계,
    상기 메시지 교환으로부터 상기 상대 피어 노드로부터 메시지를 수신하면, 상기 메시지의 IP 헤더에서 소스 주소를 추출하는 단계, 그리고
    상기 터널 정보가 상기 소스 주소와 일치하는 경우, 유용한 터널 정보로 확인하는 단계를 포함하는 직접 통신 제공 방법.
  5. 제3항에 있어서,
    상기 피어 노드 및 상기 상대 피어 노드는 네트워크 주소 변환 장치(Network Address Translation, NAT)에 접속되며,
    상기 터널 정보는 상기 NAT에 의해 변경된 상기 상대 피어 노드의 주소를 포함하는 직접 통신 제공 방법.
  6. 삭제
  7. 제1항에 있어서,
    상기 터널 응답 메시지는 상기 터널 중계 장치의 주소를 더 포함하며,
    상기 터널 중계 장치와 터널을 설정하는 단계는 상기 터널 중계 장치의 주소를 목적지로 하여 상기 터널을 설정하는 단계를 포함하는 직접 통신 제공 방법.
  8. 제7항에 있어서,
    상기 터널 중계 장치와 상기 터널을 설정하는 단계는,
    상기 터널 중계 장치의 주소를 목적지로 하여 상기 피어 노드의 가상 주소를 포함한 터널 설정 요청 메시지를 상기 중계 터널 장치로 전송하는 단계를 더 포함하며,
    상기 터널 중계 장치는 상기 터널 설정 요청 메시지의 소스 주소를 목적지로 하여 상기 터널을 설정하며, 상기 피어 노드의 가상 주소를 루트 정보로서 제2 터널에 연결하는 직접 통신 제공 방법.
  9. 제1항에 있어서,
    상기 가상 주소는 가상 IP를 포함하는 직접 통신 제공 방법.
  10. 제9항에 있어서,
    상기 가상 주소는 상기 상대 피어 노드가 가상 네트워크를 갖는 경우, 네트워크 프리픽스와 프리픽스 길이를 더 포함하며,
    상기 연결하는 단계는,
    상기 루트 정보로서 상기 네트워크 프리픽스 및 프리픽스 길이를 추가로 연결하는 단계를 포함하는 직접 통신 제공 방법.
  11. 제10항에 있어서,
    자신의 가상 네트워크를 갖는 경우, 상기 서버로부터 할당받은 상기 네트워크 프리픽스 및 프리픽스 길이를 기반으로 상기 가상 네트워크에 접속되는 가상 호스트로 가상 IP를 할당하는 단계
    를 더 포함하는 직접 통신 제공 방법.
  12. IP(Internet Protocol) 네트워크에서 서버가 두 피어 노드간 직접 통신을 제공하는 방법에 있어서,
    상기 두 피어 노드의 네트워크 접속 유형을 확인하는 단계,
    상기 두 피어 노드의 네트워크 접속 유형으로부터 상기 두 피어 노드간 직접 통신이 가능한지를 판단하는 단계,
    상기 두 피어 노드간 직접 통신이 가능한 경우에, 상기 두 피어 노드간 터널을 설정할 수 있도록 상기 두 피어 노드로 각각 상기 터널의 목적지에 해당하는 터널 정보를 전송하는 단계, 그리고
    상기 터널에 연결할 루트 정보로서 통신할 상대 피어 노드의 가상 주소를 두 피어 노드로 각각 전송하는 단계
    를 포함하는 직접 통신 제공 방법.
  13. 제12항에 있어서,
    상기 두 피어 노드간 직접 통신이 불가능한 경우에, 상기 두 피어 노드가 터널 중계 장치를 통해 터널을 설정할 수 있도록 상기 두 피어 노드로 각각 상기 터널 중계 장치의 주소를 전송하는 단계
    를 더 포함하는 직접 통신 제공 방법.
  14. 제12항에 있어서,
    상기 두 피어 노드가 네트워크 주소 변환 장치(Network Address Translation, NAT)에 접속되는 경우,
    상기 터널 정보는 상기 NAT에 의해 변경된 상기 두 피어 노드의 주소를 포함하는 직접 통신 제공 방법.
  15. 제12항에 있어서,
    상기 두 피어 노드로부터 각각 자신의 식별자를 포함한 등록 요청을 수신하는 단계,
    상기 등록 요청을 수신한 두 피어 노드가 엔드 호스트인지 네트워크를 갖는 장치인지를 판단하는 단계, 그리고
    상기 두 피어 노드 중 상기 엔드 호스트에 해당하는 피어 노드로 상기 가상 주소로서 가상 IP를 할당하는 단계
    를 더 포함하는 직접 통신 제공 방법.
  16. 제15항에 있어서,
    상기 두 피어 노드 중 상기 네트워크를 갖는 장치에 해당하는 피어 노드로 상기 가상 주소로서 가상 IP뿐만 아니라 네트워크 프리픽스 및 프리픽스 길이를 할당하는 단계
    를 더 포함하는 직접 통신 제공 방법.
  17. 제12항에 있어서,
    상기 판단하는 단계는,
    상기 두 피어 노드의 네트워크 접속 유형이,
    시메트릭 NAT(NAT-Symmetric)와 시메트릭 NAT(NAT-Symmetric),
    시메트릭 NAT(NAT-Symmetric)와 방화벽이 있는 공용 네트워크,
    시메트릭 NAT(NAT-Symmetric)와 포트 제한적인 콘 NAT(NAT-Port Restricted Cone)인 경우에, 상기 두 피어 노드간 직접 터널이 불가능한 것으로 판단하는 단계를 포함하는 직접 통신 제공 방법.
  18. IP(Internet Protocol) 네트워크에서 터널 중계 장치가 두 피어 노드의 직접 통신을 제공하는 방법에 있어서,
    상기 두 피어 노드 중 제1 피어 노드로부터 자신의 가상 주소를 포함한 제1 터널 설정 요청 메시지를 수신하는 단계,
    상기 두 피어 노드 중 제2 피어 노드로부터 자신의 가상 주소를 포함한 제2 터널 설정 요청 메시지를 수신하는 단계,
    상기 제1 및 제2 터널 설정 요청 메시지의 소스 주소를 추출하는 단계,
    상기 제1 터널 설정 요청 메시지의 소스 주소를 목적지로 하는 제1 터널을 설정하는 단계,
    상기 제2 터널 설정 요청 메시지의 소스 주소를 목적지로 하는 제2 터널을 설정하는 단계,
    상기 제1 터널에 상기 제1 피어 노드의 가상 주소를 루트 정보로서 연결하는 단계, 그리고
    상기 제2 터널에 상기 제2 피어 노드의 가상 주소를 루트 정보로서 연결하는 단계
    를 포함하는 직접 통신 제공 방법.
  19. 제18항에 있어서,
    상기 제1 및 제2 피어 노드가 네트워크 주소 변환 장치(Network Address Translation, NAT)에 접속되는 경우,
    상기 제1 및 제2 터널 설정 요청 메시지의 소스 주소는 상기 NAT에 의해 변경된 상기 두 피어 노드의 주소인 직접 통신 제공 방법.
  20. 제18항에 있어서,
    상기 두 피어 노드 중 엔드 호스트에 해당하는 피어 노드의 상기 가상 주소는 가상 IP를 포함하고,
    상기 두 피어 노드 중 네트워크를 갖는 장치에 해당하는 피어 노드의 상기 가상 주소는 가상 IP뿐만 아니라 네트워크 프리픽스와 프리픽스 길이를 포함하는 직접 통신 제공 방법.
KR1020100081568A 2009-10-06 2010-08-23 Ip 네트워크에서의 직접 통신 제공 방법 KR101394579B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/898,929 US20110082941A1 (en) 2009-10-06 2010-10-06 Method of providing direct communication in internet protocol network

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020090094783 2009-10-06
KR20090094783 2009-10-06

Publications (2)

Publication Number Publication Date
KR20110037833A KR20110037833A (ko) 2011-04-13
KR101394579B1 true KR101394579B1 (ko) 2014-05-27

Family

ID=44045250

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100081568A KR101394579B1 (ko) 2009-10-06 2010-08-23 Ip 네트워크에서의 직접 통신 제공 방법

Country Status (1)

Country Link
KR (1) KR101394579B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101907933B1 (ko) * 2011-12-23 2018-10-17 한국전자통신연구원 사용자 맞춤형 가상 네트워크 및 그것의 구축 방법
KR102013862B1 (ko) 2014-01-13 2019-08-23 한국전자통신연구원 네트워크 연속성 보장 방법 및 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070157303A1 (en) * 2005-12-29 2007-07-05 Logmein, Inc. Server-mediated setup and maintenance of peer-to-peer client computer communications
US20080267096A1 (en) * 2004-09-30 2008-10-30 Adin Research, Inc. Tunnel Device, Relay Device, Terminal Device, Call Control System, Ip Telephone System, Conference Device, and Their Control Method and Program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080267096A1 (en) * 2004-09-30 2008-10-30 Adin Research, Inc. Tunnel Device, Relay Device, Terminal Device, Call Control System, Ip Telephone System, Conference Device, and Their Control Method and Program
US20070157303A1 (en) * 2005-12-29 2007-07-05 Logmein, Inc. Server-mediated setup and maintenance of peer-to-peer client computer communications

Also Published As

Publication number Publication date
KR20110037833A (ko) 2011-04-13

Similar Documents

Publication Publication Date Title
US20110082941A1 (en) Method of providing direct communication in internet protocol network
US8224985B2 (en) Peer-to-peer communication traversing symmetric network address translators
KR100901790B1 (ko) IPv4 네트워크 기반 IPv6 서비스 제공시스템에서의 제어 터널 및 다이렉트 터널 설정 방법
JP4331154B2 (ja) 情報処理システム、トンネル通信装置、及びトンネル通信方法
US7908651B2 (en) Method of network communication
US7729366B2 (en) Method, apparatus and system for network mobility of a mobile communication device
EP2449749B1 (en) Method and apparatus for relaying packets
JP6321792B2 (ja) 対称型natのためのピアツーピア通信
US20070195800A1 (en) Communication using private IP addresses of local networks
US20080112417A1 (en) Communication Terminal, And Communication Method
US20150271135A1 (en) Session-aware network address translation traversal method
KR101907933B1 (ko) 사용자 맞춤형 가상 네트워크 및 그것의 구축 방법
JP6386166B2 (ja) IPv4とIPv6との間の翻訳方法及び装置
US20150032898A1 (en) Method for establishing a virtual community network connection and a system for implementing said method
KR101394579B1 (ko) Ip 네트워크에서의 직접 통신 제공 방법
US7693091B2 (en) Teredo connectivity between clients behind symmetric NATs
US8825883B2 (en) Connectivity platform
Komu et al. Basic host identity protocol (HIP) extensions for traversal of network address translators
WO2008069504A1 (en) Method for configuring control tunnel and direct tunnel in ipv4 network-based ipv6 service providing system
WO2012119472A1 (zh) 一种兼容IPv4地址的通信方法、系统及路由器
JP5084716B2 (ja) Vpn接続装置、dnsパケット制御方法、及びプログラム
KR20080050199A (ko) 인터넷 프로토콜 버전 4 네트워크의 서버에서터널네트워크인터페이스 구축 및 터널네트워크인터페이스를이용한 패킷 송/수신 방법
Kang et al. IPv6 anycast routing aware of a service flow
Komu et al. RFC 5770: Basic Host Identity Protocol (HIP) Extensions for Traversal of Network Address Translators
Hasan et al. IPv6 Networks

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170427

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180426

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190425

Year of fee payment: 6