KR20100019420A - 에지 라우팅을 갖는 피어-투-피어 협업 시스템 - Google Patents

에지 라우팅을 갖는 피어-투-피어 협업 시스템 Download PDF

Info

Publication number
KR20100019420A
KR20100019420A KR1020097022353A KR20097022353A KR20100019420A KR 20100019420 A KR20100019420 A KR 20100019420A KR 1020097022353 A KR1020097022353 A KR 1020097022353A KR 20097022353 A KR20097022353 A KR 20097022353A KR 20100019420 A KR20100019420 A KR 20100019420A
Authority
KR
South Korea
Prior art keywords
peer
peers
packet
server
message
Prior art date
Application number
KR1020097022353A
Other languages
English (en)
Other versions
KR101455434B1 (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 마이크로소프트 코포레이션
Publication of KR20100019420A publication Critical patent/KR20100019420A/ko
Application granted granted Critical
Publication of KR101455434B1 publication Critical patent/KR101455434B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/029Firewall traversal, e.g. tunnelling or, creating pinholes
    • 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/2567NAT traversal for reachability, e.g. inquiring the address of a correspondent behind a NAT server
    • 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/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • H04L61/256NAT traversal
    • H04L61/2578NAT traversal without involvement of the NAT server
    • 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
    • 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
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1068Discovery involving direct consultation or announcement among potential requesting and potential source peers
    • 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
    • H04L67/1044Group management mechanisms 
    • H04L67/1051Group master selection mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Small-Scale Networks (AREA)

Abstract

공유 공간에 대한 변경 사항들이 여러 어드레싱 기법들의 조합으로 전송되는 메시지를 사용하여 협업 세션에 있는 모든 피어들에게 브로드캐스트될 수 있는 피어-투-피어 협업 시스템. 피어-투-피어 직접 전송, 또 하나의 피어를 통한 간접 전송, 또는 서버를 통한 간접 전송을 위해 메시지가 어드레싱될 수 있다. 각각의 피어와 통신을 하는 데 사용되는 어드레싱의 유형이 라우팅 테이블을 사용하여 결정된다. 라우팅 테이블은 상호접속된 피어 그룹들을 정의하고 각 그룹에 있는 하나 이상의 피어를 메시지의 최초 수신자로서 선택하는 데 사용될 수 있다. 이 최초 수신자는, 모든 피어들이 그 메시지를 수신하도록, 그 메시지를 자신의 그룹 내의 다른 피어들에게 전달할 수 있다. NAT 배후에 있는 피어들의 경우, 하나 이상의 NAT 통과(NAT traversal) 기법들이 라우팅 테이블을 작성하기 위한 정보를 획득하는 데 사용될 수 있다.
피어-투-피어 협업 시스템, NAT, 공유 공간, 어드레싱, 라우팅 테이블

Description

에지 라우팅을 갖는 피어-투-피어 협업 시스템{PEER-TO-PEER COLLABORATION SYSTEM WITH EDGE ROUTING}
일반적으로 비지니스 환경에서 다수의 사용자들이 서로 다른 장소에 있을 수 있더라도 협업적으로 작업을 할 수 있게 해주기 위해 피어-투-피어 협업 시스템이 사용된다. 피어-투-피어 협업 시스템은 네트워크로 상호접속된 컴퓨팅 장치들로 구현된다. 각각의 피어 장치는 협업 사용자들에게 디스플레이되거나 협업 사용자들에 의해 처리되는 데이터 또는 기타 정보의 사본을 유지하고 있을 수 있다. 그 정보는 소위 "공유 공간(shared space)"을 생성한다.
각각의 피어 장치에 있는 클라이언트 소프트웨어를 사용하여, 그 장치의 사용자는 그 장치에 의해 유지되는 공유 공간의 사본을 변경할 수 있다. 각각의 변경이 행해질 때, 클라이언트는 공유 공간에 행해진 변경들을 나타내는 메시지를 브로드캐스트한다. 협업 세션에 있는 다른 피어 장치들은 그 변경 메시지를 수신하고 자신의 공유 공간 사본에 대해 대응하는 변경들을 행한다. 이와 같이, 공유 공간의 모든 사본들이 동기화되고, 협업 세션에 있는 모든 사용자가 모든 다른 사용자에 의해 행해진 변경들을 볼 수 있다.
그렇지만, 협업 시스템이 의도한 대로 기능하기 위해서는, 각각의 피어 장치가 모든 다른 피어 장치들에게 변경을 전달할 수 있어야만 한다. 인터넷 등의 네 트워크가 이론적으로는 그 네트워크에 결합된 임의의 2개의 피어 장치들 간의 통신을 가능하게 해주는 데 사용될 수 있다. 그렇지만, 어떤 사설 네트워크는, 비록 인터넷에 결합되어 있더라도, 사설 네트워크를 통해 인터넷에 결합된 피어 장치들이 사설 네트워크 외부의 장치들과 피어-투-피어 통신을 할 수 있게 해주도록 구성되어 있지 않다. 예를 들어, 많은 근거리 통신망(LAN)은 사설 네트워크와 인터넷 사이의 인터페이스에서 NAT(network address translation, 네트워크 주소 변환)를 사용한다. 주소 변환은 NAT 장치 배후에 있는 피어로 보내지는 메시지를 차단시킬 수 있으며, 그에 따라 피어-투-피어 통신을 방해할 수 있다.
몇몇 장치들이 NAT 장치 배후에 있을 때 또는 다른 방식으로 다른 피어들로부터 도달가능하지 않을 때, 협업 세션의 중단을 피하기 위해, 협업 시스템은 중계 서버(relay server)를 사용한다. 다른 피어와 직접 통신할 수 없는 피어는 메시지를 먼저 중계 서버로 전송함으로써 간접적으로 통신을 할 수 있다. 중계 서버는 그 메시지를 수신자 피어(recipient peer)로 전달할 수 있다. 어떤 경우에, 중계 서버는 그 메시지를 직접 수신자 피어로 전달한다. 그렇지만, 다른 시나리오들에서는, 그 메시지는 수신자 피어에 도달하기 전에 하나 이상의 다른 중계 서버를 통해 전달된다.
피어-투-피어 통신 세션에서 중계 서버들을 통해 변경 메시지를 라우팅하는 것에 의해 야기되는 혼잡을 감소시키기 위해, 그 변경들이 피어-투-피어 직접 메시지(direct peer-to-peer message)를 사용하여 배포될 수 있는 메시지에 넣어 전달된다. 중계 서버가 몇몇 메시지에 대해서는 사용될 수 있을지라도, 많은 수의 변경 메시지를 처리하기 위해 중계 서버에 가해지는 부하를 감소시키는 것이 피어-투-피어 협업 시스템의 비용을 줄일 수 있고 또 시스템의 확장성을 증대시킬 수 있다.
피어-투-피어 직접 통신(direct peer-to-peer communication)을 용이하게 해주기 위해, 피어들 간의 상호 접속을 정의하는 라우팅 테이블이 메시지를 어드레싱하는 데 사용될 수 있다. 라우팅 테이블은 피어-투-피어 직접 메시지를 사용하여 통신을 할 수 있는 피어 그룹들을 식별해줄 수 있다. 변경을 개시하고 그 변경을 협업 세션에 있는 다른 피어들에게 브로드캐스트하는 피어는, 개시측 피어로부터 직접 또는 간접적으로 메시지를 수신할 수 있는 각 그룹 내의 한 피어를 최초 수신자로서 선택할 수 있다. 최초 수신자는 메시지를 그룹 내의 하나 이상의 다른 피어들로 전달할 수 있다. 협업 세션에 있는 모든 피어들이 메시지를 수신할 때까지, 메시지를 수신하는 각각의 피어는 차례로 메시지를 피어-투-피어 통신을 통해 그룹 내의 다른 피어들로 더 전파시킬 수 있다.
중계 서버, 또는 협업 시스템의 다른 컴포넌트가 라우팅 테이블의 작성에 참여할 수 있다. 이러한 서버는 피어들로부터 조사 메시지(probing message)를 수신하고 다른 피어들이 그 피어와 통신하는 데 사용될 수 있는 주소에 관한 정보를 획득하기 위해 그 메시지를 분석할 수 있다. 피어가 NAT(Network Address Translation) 장치의 배후에 있는 경우, 그 서버에 의해 획득된 정보는 또한 NAT 장치를 통과하여 그 피어에 도달하는 방법을 찾아내는 데도 사용될 수 있어, 아마도 피어-투-피어 직접 통신으로 도달가능한 협업 세션에 있는 피어들의 수를 증대시킬 수 있다.
이상은 첨부된 청구항들에 의해 정의되는 본 발명의 비제한적인 요약이다.
도 1은 종래 기술의 피어-투-피어 협업 시스템을 간략히 나타낸 도면.
도 2는 본 발명의 일 실시예에 따른 피어-투-피어 협업 시스템을 간략히 나타낸 도면.
도 3a는 본 발명의 일 실시예에 따른, 피어-투-피어 협업 시스템 내의 피어의 기능 블록도.
도 3b는 본 발명의 일 실시예에 따른, 피어-투-피어 협업 시스템의 피어에서 사용될 수 있는 데이터 구조를 간략히 나타낸 도면.
도 4a 및 도 4b는, B1 및 B2로 표시된 점에서 서로 연결될 때, 피어를 배후에 두고 있는 NAT 장치의 유형을 알아내는 프로세스의 플로우차트.
도 5a, 도 5b 및 도 5c는 본 발명의 실시예들에 따른, 피어-투-피어 통신에 사용될 수 있는 여러 형태의 어드레싱을 나타낸 도면.
도 6은 본 발명의 일 실시예에 따른, 피어에 라우팅 테이블을 유지하는 프로세스의 플로우차트.
도 7은 본 발명의 일 실시예에 따른, 메시지를 전송하는 프로세스의 플로우차트.
첨부 도면은 축척대로 그려져 있지 않다. 도면들에서, 여러 도면에 나타내어져 있는 각각의 동일한 또는 거의 동일한 구성요소는 동일한 참조 번호로 표시되어 있다. 명확함을 위해, 모든 도면들에서 모든 구성요소에 다 참조 번호가 부기되어 있지는 않다.
본 발명자들은 피어-투-피어 협업 시스템의 협업 세션에서 직접 통신할 수 없는 피어들 사이의 간접 통신을 용이하게 해주기 위해 중계 서버를 사용하는 것이 중계 서버에 바람직하지 않은 정도의 부하를 야기할 수 있다는 것을 알았다. 그 결과, 피어-투-피어 협업 시스템의 효과적인 동작에 중계 서버와 연관된 바람직하지 않은 정도의 자원(네트워크 대역폭 또는 메모리 등)을 필요로 할 수 있다. 본 발명자들은 또한 더 많은 피어 장치들이 다른 피어 장치들로부터 도달될 수 없을 때 부하 및 서버 부하와 연관된 성능 저하가 증대된다는 것을 알았다. 피어 장치가 직접 통신을 위해 도달될 수 없을 수 있는 한가지 이유는 피어가 NAT 장치 배후에 있을지도 모르기 때문이다. 안타깝게도, 더 많은 사용자들이 재택 근무를 하거나, NAT 장치를 이용하는 근거리 통신망을 통해 인터넷에 접속되기 때문에, 피어 장치가 NAT 장치 배후에 있을 가능성이 증대되었다.
본 발명의 실시예들에 따르면, 에지 라우팅 기법을 사용함으로써 피어-투-피어 협업 시스템의 중계 서버에 대한 부하가 감소될 수 있다. 이러한 기법들은 피어 간에 직접 전달되거나 하나 이상의 중간 피어를 통해 다른 피어들로 간접적으로 전달될 수 있는, 피어-투-피어 협업 시스템과 연관된 변경 메시지 또는 기타 메시지의 양을 증가시킨다. 그 결과, 그 메시지들이 중계 서버를 통과하지 않기 때문 에 서버 부하가 감소된다. NAT 장치 배후에 있는 장치들과 피어-투-피어 통신을 가능하게 해주는 NAT 통과 기법을 구현함으로써 이러한 시스템의 효과가 더 향상될 수 있다.
어떤 실시예들에서, 본 발명은 공지되어 있는 피어-투-피어 협업 시스템의 컴포넌트들을 사용하여 구현될 수 있다. 공지된 컴포넌트 유형들의 예로서, 도 1은 종래 기술의 피어-투-피어 협업 시스템을 나타낸 것이다. 도 1의 예에서, 다수의 피어 장치들이 인터넷일 수 있는 네트워크(100)를 통해 통신을 한다. 그렇지만, 본 발명의 실시예들을 구성함에 있어서, 기업 네트워크 또는 임의의 다른 적당한 네트워크가 피어들 간의 통신을 전달할 수 있다.
도 1에 도시된 바와 같이, 몇몇 피어들은 LAN을 통해 네트워크(100)에 접속될 수 있다. 예를 들어, LAN(110)은 라우터(116)를 통해 네트워크(100)에 결합되어 있다. 피어(112, 114) 등의 LAN(110)에 접속된 피어 장치들은 LAN(110)을 네트워크(100)에 결합시키는 라우터(116)를 통해 네트워크(100)에 액세스할 수 있다.
예시된 실시예에서, 라우터(116)는 NAT 장치로서 기능할 수 있다. 그에 따라, 피어(112, 114)가 라우터(116)를 통해 아웃바운드 메시지를 전송할 수 있지만, 근거리 통신망(110) 외부에 있는 피어 장치가 그 메시지에 있는 주소 정보를 사용하여 피어(112, 114)에 응답하지 못할 수 있는데, 그 이유는 그러한 방식으로 어드레싱되는 메시지가 라우터(116)를 통과하여 의도된 피어 장치로 가지 않기 때문이다.
예를 들어, LAN(120)이 피어 장치(122, 124)를 포함하는 것으로 도시되어 있 다. 피어 장치(122, 124)가 라우터(126)를 통해 네트워크(100)에 액세스할 수 있지만, 라우터(116) 내의 NAT(network address translation)가 피어 장치(122 또는 124)에 의해 전송된 메시지를 피어(112, 114)에 도달하지 못하게 차단할 수 있다. 이 예에서, 라우터(126)도 역시 인바운드 메시지를 피어(122, 124)에 도달하지 못하게 차단하는 일종의 NAT를 수행하는 경우 도달불능(unreachability)이 대칭적일 수 있다.
피어들(122 또는 124) 중 어느 하나와 피어들(112 또는 114) 중 어느 하나 사이의 통신을 가능하게 해주기 위해, 중계 서버(130)가 사용될 수 있다. 중계 서버(130)는 도면에서 네트워크(100)에 접속되어 있는 것으로 도시되어 있다. 각각의 피어(112, 114, 122, 124)는 중계 서버(130)와 통신을 설정할 수 있다. 각각의 피어 장치(112, 114, 122, 124)가 자신을 배후에 두고 있는 NAT 장치를 통해 아웃바운드 메시지를 전송할 수 있기 때문에, 각각의 피어 장치는 다른 피어들로 보낼 메시지를 중계 서버(130)로 전송할 수 있다. 중계 서버(130)는 그 다음에 메시지를 수신자 피어로 전달할 수 있다. 이와 같이, 피어-투-피어 협업 세션에 있는 각각의 피어는 변경 메시지를 임의의 다른 피어로 전달할 수 있다. 그렇지만, 각각의 변경의 전달에서 하나 이상의 메시지가 중계 서버(130)를 통과해야만 할지도 모른다.
도 1은 피어-투-피어 협업 시스템과 연관된 변경 메시지 또는 기타 메시지를 처리하는 것으로 인한 서버(130)에 대한 부하의 크기를 마스킹할 수 있는 피어-투-피어 협업 시스템을 간략히 나타낸 것이다. 예를 들어, 도 1의 협업 시스템에 예 시된 4개의 피어들은 협업 세션에 있는 피어들의 수를 나타내는 것이 아닐 수 있다. 많은 경우에, 5명 이상의 사용자들이 협업 세션에 참여할 수 있다. 피어들의 수가 증가함에 따라, 중계 서버(130)를 통해 전송되는 메시지들의 수도 역시 증가할 수 있다. 게다가, 중계 서버(130)를 운영하는 기업 또는 기타 개체가 다수의 협업 세션을 지원하고자 할 수 있다. 각각의 협업 세션은 중계 서버(130)를 통해 라우팅되는 변경 메시지를 발생할 수 있다. 그에 따라, 중계 서버(130)는 다수의 세션에서 다수의 사용자들에 의해 발생되는 변경 메시지들을 처리하기에 충분한 대역폭, 메모리 및 기타 자원을 가져야만 한다.
중계 서버(130)에 대한 부하를 감소시키기 위해, 도 1에 예시된 협업 시스템의 컴포넌트들은 변경 메시지의 에지 라우팅을 지원하도록 구성되어 있을 수 있다. 에지 라우팅은 중계 서버(130)를 관여시키지 않고 피어들 간에 전달되는 변경 메시지들의 수를 증가시킨다. 도 2는 본 발명의 일 실시예에 따른 협업 시스템을 나타낸 것이다. 도 2의 예에서는, 도 1의 예에서와 같이, 4개의 피어가 협업 세션에 있는 것으로 도시되어 있다. 또한 도 1에서와 같이, 피어들이 2개의 근거리 통신망에 접속되어 있다. 도 2의 예에서, 근거리 통신망(110')은 피어(112', 114')를 포함하고 있다. 근거리 통신망(120')은 피어(122', 124')를 포함하고 있다. 근거리 통신망에 연결된 피어들이 라우터(116 또는 126) 등의 NAT 장치를 통해 네트워크(100)에 결합될 수 있다. 직접 통신이 사용되지 않는 피어들 간의 통신을 용이하게 해주기 위해, 중계 서버(130')가 피어-투-피어 협업 시스템에 포함되어 있을 수 있다. 그렇지만, 에지 라우팅을 구현하면 중계 서버(130')를 통한 간접 통신이 사용되는 경우를 감소시킬 수 있다.
피어-투-피어 협업 시스템을 구현하는 데 사용되는 특정의 컴포넌트들이 본 발명에 중요하지 않다. 그에 따라, 피어(112', 114', 122', 124')는 도 1의 대응하는 장치와 동일한 구성을 갖는 장치로 구현될 수 있지만, 본 발명의 일 실시예에 따른 에지 라우팅을 지원하도록 프로그램되어 있다. 이들 장치는 네트워크 지원(network enabled) 데스크톱 컴퓨터로 나타내어져 있다. 그렇지만, 적당한 네트워크화된 컴퓨팅 장치라면 어느 것이라도 사용될 수 있다. 마찬가지로, 서버(130')도 서버(130)(도 1)와 동일한 유형의 장치로 구현되어 있는 것으로 도시되어 있으며, 역시 에지 라우팅을 지원하도록 프로그램되어 있다. 그렇지만, 임의의 적당한 장치가 서버(130')를 구현하는 데 사용될 수 있다. 또한, 도 2에서, NAT 장치가 라우터(116, 126)로 나타내어져 있지만, 다른 피어 장치들을 상호접속시키는 네트워크와 피어 장치들 간의 적당한 접속이라면 어느 것이라도 사용될 수 있고, 이러한 접속이 NAT를 이용할 수 있거나 이용하지 않을 수 있다.
도 2는 도 1에 예시된 종래 기술의 시스템과의 추가적인 차이점을 나타낸 것이다. 이 도시된 예에서, 서버(232, 234)가 본 시스템에 포함되어 있다. 이 예에서, 서버(232, 234)는 적당한 네트워크화된 장치라면 어느 것이라도 될 수 있고, 피어(112', 114', 122', 124') 등의 협업 세션에 있는 피어들에 대한 NAT 통과(NAT traversal) 및 주소 발견(address discovery)을 지원하도록 프로그램되어 있다. 이들 기능은 각각의 피어(112', 114', 122', 124')에 대해 장치가 그 자신의 LAN 외부에 있는 장치들로부터 도달가능한지 여부에 대한 판정을 할 수 있게 해주고, 도달가능한 경우, 다른 피어 장치들이 변경 메시지를 그 장치들로 전달하는 데 사용할 수 있는 주소 정보를 제공한다. 이 정보를 사용하여, 피어는, 메시지를 중계 서버(130')로 먼저 보내지 않고, 변경 정보를 직접 전송할 수 있는 협업 세션에 있는 다른 피어들을 식별할 수 있다. 예를 들어, NAT 통과 기법이 라우터(116)를 통과하는 것으로 확인되는 경우, 피어(122', 124') 등의 LAN(110') 외부에 있는 피어들이 피어(112', 114') 중 어느 하나 또는 둘다로 직접 어드레싱되는 변경 메시지를 전송할 수 있다.
도 2의 실시예에서, 2개의 서버(232, 234)가 피어-투-피어 협업 시스템에 포함되어 있는 것으로 도시되어 있다. 이들 서버는, NAT 장치의 유형이 식별되는 경우 이러한 NAT 장치를 통과하는 데 효과적인 기법들이 사용될 수 있도록, NAT 식별 기법의 실행을 지원한다.
도시된 2개의 서버는 서로 다른 장치들 간의 메시지의 전송 및/또는 수신을 수반하는 NAT 식별 기법의 실행을 가능하게 해준다. 서버(232, 234)는 자신의 동작을 조정하여 이러한 NAT 식별 기법을 수행하기 위해 서로 통신을 할 수 있다. 그렇지만, 그 기능을 수행하기 위해 2개의 물리 서버가 사용될 필요는 없다. 예를 들어, 하나의 부가적인 서버가 이러한 NAT 식별 기법을 수행하기 위해 중계 서버(130')와 협력할 수 있다. 다른 대안으로서, 하나의 서버가 다수의 서버를 에뮬레이트하도록 프로그램될 수 있거나, 네트워크(100)에 접속된 서버들이 다른 이유로 NAT 식별 기법들의 일부 또는 그 전부를 수행할 수 있다. 그에 따라, NAT 식별에 사용되는 특정의 하드웨어가 본 발명에 대한 제한이 아니며, 적당한 하드웨어라 면 어느 것이라도 사용될 수 있다.
중계 서버를 사용하지 않고 통신을 할 수 있는 피어들의 수를 증가시키기 위해 피어들에서 NAT 통과 정보가 사용될 수 있다. 피어-투-피어 협업 시스템의 동작을 설명하면, 이들 피어 중 몇몇이 서로 간에 접속을 설정한다. 이들 피어는 그 다음에 중계 서버를 사용하지 않고 통신을 할 수 있는 피어 "이웃"으로 그룹화될 수 있다. 이웃을 식별함으로써, 메시지가 각각의 이웃 내의 하나 또는 몇개의 피어로 전송될 수 있고, 그 피어로부터 메시지가 다른 피어들로 전파될 수 있다.
이웃 내의 피어에 대한 최초의 통신이 중계 서버를 필요로 하는 경우에도, 메시지가 중계 서버에 더 이상 부담을 주지 않고 최초의 피어로부터 이웃 내의 다른 피어들로 배포될 수 있다. 예를 들어, 피어(122')가 메시지를 피어(112', 114')로 직접 전송하기 위해 라우터(116)에 의해 제공되는 NAT를 통과할 수 없는 경우에도, 피어(122')는 중계 서버(130')를 통해 피어(112')로 하나의 메시지를 전송할 수 있다. 그러면, 피어(112')는 메시지를 피어(114'), 및 피어(112')로부터 직접 도달가능한 임의의 다른 피어 장치들로 전달할 수 있다. 서버(232, 234) 등의 서버들로부터 협업 세션에 있는 피어들에 관한 정보를 획득하면 이러한 이웃들의 식별이 용이하게 된다.
도 3a를 참조하면, 본 발명의 일 실시예에 따른, 피어-투-피어 협업 시스템에서 사용될 수 있는 피어 장치(310)가 예시되어 있다. 피어(310)는 데스크톱 또는 랩톱 컴퓨터일 수 있다. 그렇지만, 적당한 컴퓨팅 장치라면 어느 것이라도 피어에 대한 플랫폼으로서 사용될 수 있다. 다른 피어들과의 통신을 용이하게 해주 기 위해, 피어(310)는 피어(310)를 네트워크(300)에 결합시키는 네트워크 인터페이스(334)를 포함하고 있다. 네트워크(300)는 하나 이상의 NAT 장치를 포함할 수 있는 적당한 네트워크라면 어느 것이라도 될 수 있다.
네트워크 인터페이스(334)는 네트워크(300)를 통해 패킷을 전송 또는 수신할 수 있게 해주는 적당한 인터페이스 하드웨어 및/또는 소프트웨어라면 어느 것이라도 될 수 있다. 도시된 실시예에서, 협업 시스템에서의 공유 공간에 관한 변경 정보를 포함하는 메시지를 전달하기 위해 하나 이상의 패킷이 사용될 수 있다. 그렇지만, 이러한 메시지를 전달하는 데 사용되는 특정의 매체 및 그 메시지들에 대한 프로토콜이 본 발명에 중요하지 않으며, 적당한 네트워크 인터페이스(334)라면 어느 것이라도 사용될 수 있다. 예를 들어, 네트워크 인터페이스(334)는 공지의 유선 또는 무선 프로토콜에 따라 동작하는 종래의 네트워크 인터페이스 카드 및 관련 드라이버 소프트웨어일 수 있다.
네트워크 인터페이스(334)의 특정 유형과 상관없이, 협업 클라이언트 컴포넌트(320)는 네트워크 인터페이스(334)를 통해 협업 세션에 있는 다른 피어들로 메시지를 전송할 수 있다. 이와 유사하게, 협업 컴포넌트(320)는 네트워크 인터페이스(334)를 통해 다른 피어들로부터 메시지를 수신할 수 있다. 협업 클라이언트(320)는 그 메시지들을 사용하여 공유 공간의 사본을 유지할 수 있다. 협업 클라이언트 컴포넌트(320)는 사용자 인터페이스(332)를 통해 사용자에게 공유 공간에 대한 설명을 제공할 수 있다. 피어(310)가 종래의 데스크톱 또는 랩톱 컴퓨터인 실시예에서, 사용자 인터페이스(332)는 협업 클라이언트 컴포넌트(320)가 공유 공 간에 대한 설명을 렌더링할 수 있는 디스플레이 화면을 포함할 수 있다. 그렇지만, 사용자 인터페이스(332)의 형태가 본 발명에 중요하지 않다.
이와 유사하게, 사용자 인터페이스(332)는 사용자가 공유 공간을 변경시키는 명령을 입력할 수 있는 하나 이상의 사용자 입력 장치를 포함할 수 있다. 협업 클라이언트 컴포넌트(320)는 공유 공간을 변경하는 명령을 나타내는 입력을 사용자 인터페이스(332)로부터 수신할 수 있다. 이들 명령은 협업 클라이언트 컴포넌트(320)를 트리거시켜, 공유 공간에 대한 변경을 협업 세션에 있는 다른 피어들에게 전달하는 하나 이상의 메시지를 발생할 수 있다.
변경 메시지를 발생하여 처리하기 위해, 협업 클라이언트 컴포넌트(320)는 "변경 엔진"(322)을 포함할 수 있다. 변경 엔진(322)은 종래의 피어-투-피어 협업 시스템에서 사용되는 것들과 유사한 하나 이상의 소프트웨어 컴포넌트일 수 있다. 그렇지만, 변경 엔진(322)의 특정의 구현이 본 발명에 중요하지 않으며, 적당한 구현이라면 어느 것이라도 사용될 수 있다.
이러한 컴포넌트들은 사용자 입력을 수신하고 그 변경들을 다른 피어들에게 배포하기 위한 변경 메시지들로 변환할 수 있다. 마찬가지로, 변경 엔진(322) 내의 컴포넌트들은 협업 세션에 있는 하나 이상의 다른 피어들로부터 변경 메시지들을 수신하고, 피어(310) 내의 공유 공간의 사본을 다른 피어들 내의 공유 공간의 사본들과 동기화시키기 위해 공유 공간의 사본에 행할 적절한 동작들을 결정할 수 있다.
다른 피어들과 변경 메시지들을 교환하기 위해, 피어(310)는 협업 세션에 있 는 다수의 피어들 간의 변경의 전달과 연관된 기능을 수행하는 통신 서브시스템(326)을 포함하고 있다. 피어 장치(310)의 사용자에 의해 행해진 변경에 대해, 통신 서브시스템(326)은 그 변경들을 설명하는 메시지를 협업 세션 내의 다른 피어들에게 브로드캐스트할 수 있다. 다른 장치들의 사용자에 의해 행해진 변경에 대해, 통신 서브시스템(326)은 메시지들을 수신하고 이들을 변경 엔진(322)으로 전달하기 전에 그 메시지들을 정렬할 수 있다. 이러한 기능들은 공지의 피어-투-피어 협업 시스템에서와 동일한 방식으로 또는 임의의 적당한 방식으로 수행될 수 있다. 그렇지만, 통신 서브시스템(326)은 에지 라우팅을 지원하도록 구성될 수 있다는 점에서 공지의 피어-투-피어 협업 시스템에서의 통신 컴포넌트와 다를 수 있다.
메시지를 협업 시스템 내의 다른 피어들에게 보내는 것을 용이하게 해주기 위해, 에지 라우팅에서와 같이, 협업 클라이언트 컴포넌트(320)는 라우팅 테이블(324)을 포함할 수 있다. 라우팅 테이블(324)은 통신 서브시스템(326)이 피어(310)의 사용자에 의해 행해진 변경을 전달하는 메시지를 어드레싱하는 적절한 메카니즘을 결정할 수 있는 바탕이 되는 정보를 포함할 수 있다. 게다가, 통신 서브시스템(326)은 협업 세션에 있는 다른 피어들로부터 수신된 메시지를 전달할 피어들을 선택하기 위해 라우팅 테이블(324)을 사용할 수 있다.
도 3b는 라우팅 테이블(324)을 간략하게 나타낸 것이다. 이러한 데이터 구조는 임의의 적당한 방식으로 구현될 수 있다. 예를 들어, 라우팅 테이블(324)은 피어 장치 내의 컴퓨터 판독가능 매체(340)에 데이터 구조로서 저장될 수 있다. 그렇지만, 라우팅 테이블(324)을 물리적으로 포함하기에 적당한 메카니즘이라면 어 느 것이라도 사용될 수 있고 라우팅 테이블(324)에 정보를 표현하기에 적당한 것이라면 어느 표현이라도 사용될 수 있다.
도 3b의 실시예에서, 라우팅 테이블(324)은 피어(310)(도 3a)를 포함하는 피어-투-피어 협업 세션에 있는 피어들에 관한 정보를 포함하고 있는 것으로 도시되어 있다. 도시된 바와 같이, 라우팅 테이블(324)은 직접 통신을 할 수 있는 피어 그룹들에 관한 정보를 전달하도록 구성되어 있다. 도 3b의 실시예에서, 2개의 피어 그룹이 이웃(350, 360)으로서 도시되어 있다. 이웃(350)은 4개의 피어(352A, 352B, 352C, 352D)를 포함하는 것으로 도시되어 있다. 이와 유사하게, 이웃(360)은 피어(362E, 362F, 362G, 362H)를 포함하는 것으로 도시되어 있다.
이 실시예에서, 각각의 이웃은 그 이웃 내의 적어도 하나의 다른 피어와 통신을 할 수 있는 일군의 피어들을 포함하는 것으로 도시되어 있다. 이웃(350) 내에서, 피어(352A)는 피어(352B)와 접속(3701)을 형성하였다. 피어(352A)는 또한 피어(352C)와 접속(3702)을 형성하였다. 피어(352C)는 차례로 피어(352D)와 접속(3704)을 형성하였다. 피어(352A, 352B)가 피어(352D)와 직접 접속을 형성하지 않았지만, 피어(352A, 352B)는 피어(352C)를 통해 메시지를 전송함으로써 피어(352D)와 통신을 할 수 있다. 그에 따라, 피어들(352A, 352B, 352C, 352D) 모두는 중계 서버를 사용하지 않고 이웃(350) 내의 모든 다른 피어들과 통신을 할 수 있다. 피어-투-피어 직접 통신이 가능하도록 이웃(350) 내의 모든 피어들이 동일한 NAT 장치 배후에 있음으로써 이러한 구성이 얻어질 수 있다. 그렇지만, 다른 동작 조건들에 의해 이웃(350)에 도시된 바와 같은 일군의 피어들이 얻어질 수 있다. 예를 들어, 이웃(350) 내의 피어들 중 하나 이상이 NAT 장치의 배후에 있지 않을 수 있다. 다른 대안으로서, 이웃(350) 내의 피어들 중 하나 이상이 NAT 장치의 배후에 있을 수 있고 이 경우 다른 피어들이 상기 하나 이상의 피어가 NAT를 통과할 수 있게 해주는 주소 정보를 수신한다.
이웃(360)도 마찬가지로 일군의 피어들을 나타내며 이 경우 각각의 피어가 중계 서버를 사용하지 않고 그룹 내의 모든 다른 피어들과 통신을 할 수 있다. 그렇지만, 이웃(360)은 이웃(350)과 다른 접속 패턴을 갖는 것으로 도시되어 있다. 예시된 실시예에서, 피어(362E)는 "수퍼 피어(super peer)"로서 역할하며, 이는 그 피어가 다수의 다른 피어 장치들과 접속을 설정하였다는 것을 의미한다. 예시된 실시예에서, 피어(362E)는 피어(362F)와 접속(3721)을 설정하였다. 수퍼 피어(362E)는 피어(362G)와 접속(3722)을 설정하였고 피어(362H)와 접속(3723)을 설정하였다.
각각의 이웃에서 피어들 간에 설정된 접속의 수 및 유형이 본 발명에 중요하지 않다. 예시된 실시예에서, 협업 세션에 있는 각각의 피어 장치 내의 통신 서브시스템(326)(도 3a)은 이웃을 형성하기 위해 다른 피어들과 접속을 설정하도록 구성될 수 있다. 각각의 피어 장치가 자신과 접속을 설정할 피어를 결정하는 방식이 본 발명에 중요하지 않다. 그렇지만, 몇몇 실시예들에서, 피어-투-피어 협업 세션에 있는 다른 피어들의 특성이 피어들 간의 접속을 결정할 수 있다. 예를 들어, 피어는 메시지를 전송, 수신 또는 전달하는 데 이용가능한 대역폭, 메모리 또는 기타 자원에 기초하여 다른 피어들과 설정하는 접속의 수를 제한할 수 있다.
이와 반대로, 많은 수의 메시지를 처리할 자원을 가진 피어는 많은 수의 접속을 형성함으로써 수퍼 피어가 되도록 프로그램될 수 있다. 이들 접속의 형성은 피어의 이용가능한 자원에 기초하여 다수의 접속을 형성하도록 피어를 프로그램함으로써 트리거될 수 있다. 그렇지만, 몇몇 실시예들에서, 피어는, 중계 서버 또는 다른 장치들이 보낸 명령 또는 요청에 의해, 수퍼 피어가 되도록 트리거될 수 있다.
또한, 몇몇 실시예들에서, 이웃 내의 피어들 간의 기존의 접속이 피어들 간의 적시의 통신을 제대로 지원하지 않는 경우에, 피어는 다른 피어들과 새로운 접속을 설정할 수 있다. 예를 들어, 피어(352A)는 피어(352C)로 전달하기 위해 메시지를 피어(352B)로 전송하고 이어서 피어(352C)가 그 메시지를 피어(352D)로 전달함으로써 피어(352D)와 통신을 할 수 있다. 이러한 통신 경로는 피어(352A)와 피어(352D) 간의 신뢰성있는 통신을 위해 너무 느리거나, 너무 손실이 많거나 또는 너무 오류가 많을 수 있다. 기존의 접속이 적절하지 않다는 것을 탐지한 것에 응답하여, 피어(352A)는 피어(352D)에게 보다 직접적인 통신을 제공하는 접속(3702)을 설정할 수 있다. 그렇지만, 네트워크 내에 형성된 특정의 접속들이 본 발명에 중요하지 않다. 이와 마찬가지로, 네트워크 내의 피어들 간의 접속의 형성을 트리거하는 데 사용되는 특정의 메카니즘들도 본 발명을 제한하지 않는다.
라우팅 테이블(324)에 의해 전달되는 피어들 간의 접속에 관한 특정의 정보에 상관없이, 라우팅 테이블(324)은 통신 서브시스템(326)(도 3a)에서 협업 세션에 있는 다른 피어들에게 변경 정보를 브로드캐스트하는 데 사용될 수 있는 주소 정보를 결정하는 데 사용될 수 있다. 예를 들어, 라우팅 테이블(324)은 변경을 보고하는 메시지를 수신할 각각의 이웃 내의 피어를 하나만 선택하는 데 사용될 수 있다. 도 3b의 예에서, 변경을 갖는 메시지는 처음에 이웃(350) 내의 피어(352A)로 어드레싱될 수 있다. 피어(352A)는 그 메시지를 피어(352B, 352C)로 배포할 수 있다. 피어(352C)는 차례로 그 메시지를 피어(352D)로 배포할 수 있다. 유사한 방식으로, 변경 메시지가 처음에 이웃(360) 내의 피어(362E)로 보내질 수 있다. 피어(362E)는 그 메시지를 피어들(362F, 362G, 362H) 각각으로 배포할 수 있다. 이 예에서, 변경 메시지는, 처음에 그 메시지를 각각의 이웃 내의 단지 하나의 피어로 전송함으로써, 협업 세션에 있는 모든 피어들로 브로드캐스트된다.
예시된 실시예에서, 각각의 피어는 유사한 라우팅 테이블을 유지하고 있다. 따라서, 각각의 피어는 자신이 발신한 각각의 변경 메시지의 최초 수신자 피어를 선택하기 위해 라우팅 테이블을 사용할 수 있다. 게다가, 각각의 피어는 메시지를 어느 피어로 전달할지를 식별하기 위해 그 자신의 라우팅 테이블 사본을 사용하거나 기존의 브로드캐스팅 세션에 의존할 수 있다. 예를 들어, 피어(362E)는 메시지를 클라이언트(362F, 362G, 362H)로 전달하기 위해 그 자신의 라우팅 테이블 사본을 사용할 수 있다. 예시된 실시예에서, 협업 세션에 있는 각각의 수신자 피어는, 각각의 피어가 동일한 메시지를 한번만 수신하도록, 변경 메시지를 자신의 이웃으 로 브로드캐스트한다. 그렇지만, 피어가 동일한 메시지의 사본을 여러번 수신할 수 있는 실시예에서, 각각의 피어 내의 통신 서브시스템(326)(도 3a)은 중복된 메시지를 무시하도록 구성될 수 있다.
각각의 피어는 라우팅 테이블을 임의의 적당한 방식으로(다른 피어들 또는 다른 장치들과 정보를 교환하는 등에 의해) 작성할 수 있다. 도 2에 도시된 실시예에서, 서버(232, 234)는 라우팅 테이블의 작성을 용이하게 해주기 위해 피어들과 정보를 교환한다. 협업 세션에 있는 서버(232), 서버(234) 그리고 피어들 간의 상호작용으로부터, 서버(232, 234)는 장치들로 된 이웃[이웃(350, 360) 등]을 식별하기 위해 사용될 수 있는 정보를 획득할 수 있다. 이 정보는 NAT 장치의 배후에 있는 피어들의 ID(identification) 및 각각의 피어들을 배후에 두고 있는 NAT 장치의 유형을 포함할 수 있다. 그에 부가하여, 이 정보는 다른 피어들과 접속을 설정하는 데 사용될 수 있는 주소 정보의 ID를 포함할 수 있다.
서버(232, 234)(도 2)는, 협업 세션의 멤버들이 변할 때 또는 피어들을 다른 피어들로부터 도달가능하게 또는 도달불가능하게 만들 수 있는 어떤 네트워크 조건들이 변할 때, 피어들이 자신의 라우팅 테이블을 갱신할 수 있게 해주기 위해 임의의 적당한 때에 각각의 피어에 관한 정보를 수집할 수 있다. 한 예로서, 서버(232, 234)는 정보를 수집하여 각각의 피어가 협업 세션에 참가할 때 배포할 수 있다.
새로운 피어에 관한 정보가 협업 세션에 있는 각각의 피어에게 배포될 수 있고, 각각의 피어는 그 다음에 이 정보를 사용하여 새로운 피어와 접속을 설정할지 여부를 결정할 수 있다. 마찬가지로, 서버(232 또는 234) 등의 서버는 피어-투-피어 협업 세션을 빠져 나간 피어들에 관한 정보의 중앙 배포점(central distribution point)으로서 역할할 수 있다. 보다 일반적으로, 협업 세션의 멤버쉽에 변경이 있을 때마다, 하나 이상의 서버가 현재 협업 세션에 있는 피어들에 관한 정보를 배포할 수 있다.
라우팅 테이블(324)을 작성하는 데 사용되는 특정의 메카니즘에 상관없이, NAT 장치가 협업 세션에 있는 피어들과의 피어-투-피어 통신을 제한하지 않는 경우 네트워크 혼잡을 감소시키는 것이 바람직할 수 있다. 그에 따라, NAT 장치들이 네트워크에 존재하는 경우, 피어-투-피어 통신을 가능하게 해주기 위해 그 NAT 장치들이 통과될 수 있는지 여부를 식별하는 것이 바람직하다. NAT 장치들의 유형이 식별된 경우, 적당한 NAT 통과 기법들이 선택될 수 있다.
이용되는 특정의 NAT 통과 기법들이 본 발명에 중요하지 않으며, 임의의 적당한 기법이 사용될 수 있다. 많은 유형의 NAT 장치들에 대해 통과 기법들이 공지되어 있고 또 사용될 수 있다. 예를 들어, 유향 IP 접속(Directed IP connection), UPnP NAT, 완전 콘 NAT(Full Cone NAT), 제한된 콘 NAT(Restricted Cone NAT) 또는 포트 제한된 콘 NAT(Port Restricted Cone NAT), ISA 서버를 갖는 대칭 NAT(Symmetrical NAT with ISA Server), 결정론적 포트 할당을 갖는 대칭 NAT(Symmetrical NAT with Deterministic Port Assignment) 그리고 제한된 발신 포트 제약을 갖는 방화벽(Firewall with restricted outgoing port constraints) 등의 NAT 유형들에 대해 NAT 통과 기법들이 공지되어 있다. 각각의 피어가 서로 다 른 NAT 장치의 배후에 있을지라도, 그 NAT 장치 쌍에 대해 적절한 통과 기법이 이용가능하다면, 한 쌍의 피어가 피어-투-피어 직접 통신을 할 수 있다는 것은 잘 알려져 있다. 그에 따라, 피어-투-피어 통신을 설정함에 있어서, 각각의 피어를 배후에 두고 있는 NAT 장치의 유형을 식별하는 기법들이 통과 기법을 선택하는 데 이용될 수 있다. NAT 식별 기법들은 이상에 열거한 유형들의 NAT 장치를 식별할 수 있다. 그에 부가하여, 본 발명자들은 "대칭 변형(symmetric variant)"이라고 하는 또 다른 유형의 NAT 장치를 분류하였다.
대칭 변형 NAT 장치는 동일한 내부 IP 주소 및 포트로부터 임의의 목적지 주소 및 포트로의 모든 요청을 동일한 외부 IP 주소 및 매번마다 서로 다른 포트로 매핑하는 것이다.
대칭 변형은 세션 의존적인 바인딩 거동을 보여주며, 주소 바인딩(address binding)은 일정하지만, 포트 바인딩(port binding)은 동일한 내부 호스트로부터의 모든 요청에 대해 변한다. 많은 NAT 장치(예를 들어, ISA 및 NetScreen)는 클라이언트가 TCP를 사용하여 아웃바운드 접속 요청에 대해 그의 로컬 소켓을 특정의 포트에 바인딩할 때 이와 같이 거동한다. 대칭 변형은 일반적인 대칭 NAT의 변형이며, 따라서 비결정론적 포트 할당을 갖는 보통의 대칭 변형 NAT와 결정론적 포트 할당을 갖는 대칭 변형 NAT로 더 분류될 수 있다. 결정론적 방식으로 포트를 할당하는 대칭 변형 NAT는 일반적으로 통과가능(traversable)한데, 그 이유는 그 다음 포트 할당이 예측될 수 있기 때문이다.
본 발명자들은 또한 대칭 방화벽(Symmetrical Firewall)이라고 하는 일종의 방화벽 장치도 분류하였다. 대칭 방화벽은 내부 호스트 주소 매핑을 제공하지 않지만 외부 호스트로부터 방화벽의 배후에 있는 내부 호스트로의 모든 원치않는 접속 요청(unsolicited connection request)을 차단하는 네트워크 장치이다. 내부 호스트가 이전에 외부 호스트에 접속된 후에 외부 호스트가 내부 호스트에 접속할 수 있는 경우 대칭 방화벽은 통과가능하다.
NAT 장치의 유형을 알아내고 그 다음에 NAT를 통과하기 위해, 서버(232 또는 234)(도 2) 등의 NAT 조사 서버(NAT probing server)가 사용될 수 있다. 이러한 서버는 공개 영역에 있을 수 있고 조사될 NAT의 배후에 있는 피어로부터 도달가능할 수 있다. 도 2는 2개의 서버를 갖는 단지 하나의 가능한 시나리오를 나타낸 것이다. 실제로, 서버가 2개의 공개적으로 어드레싱가능한(publicly addressable) 네트워크 인터페이스를 갖는 경우 단지 하나의 서버만 사용해도 된다. 또한, 서버(130') 등의 공개 중계 서버가 조사 서버(probing server)로서 역할할 수 있다.
NAT 발견(NAT discovery)의 일부로서, 피어는 NAT 장치 및 그의 특성에 관해 조사하기 위해 서버로 일련의 메시지를 전송할 수 있다. 피어 메시지를 수신한 후에, 서버는 NAT에 의해 할당된 외부 주소 및 포트를 갖는 응답을 다시 전송한다. 서버가 피어 메시지에 응답하기 때문에, 피어가 전송하는 메시지는 에코 메시지(echo message)라고도 한다. 피어는 클라이언트가 인터넷 상에 공개되어 있는지 방화벽 또는 NAT 장치 등의 주소-변환 장치의 배후에 있는지를 알아내기 위해 에코 메시지를 전송한다. NAT 장치가 발견되는 경우, 피어는 NAT의 유형도 알아내고자 한다. 에코 메시지는 또한, NAT를 성공적으로 통과할 수 있는지를 알아보기 위해, 특정의 서버에게 특정의 IP 주소 및 포트에 있는 피어에 접속하도록 지시할 수 있다. 외부 호스트가 클라이언트로의 인바운드 접속을 성공적으로 설정하였다는 것을 NAT의 배후에 있는 피어가 탐지한 경우, TCP를 사용하여 NAT를 통과할 수 있다.
피어들이 TCP를 사용하여 네트워크에 결합되어 있는 실시예에 따른 NAT 발견의 일부로서, 피어는 다음과 같은 유형의 메시지들을 서버로 전송할 수 있다.
에코 테스트(Echo Test): 피어가 서버로의 TCP 접속을 설정하고 그 다음에 요청을 전송한다. 서버는 피어의 매핑된 외부 IP 주소 및 포트를 갖는 응답을 다시 전송한다. 피어는 응답을 수신한 후에 접속을 종료한다.
에코 홉 테스트(Echo Hop Test): 피어가 서버로의 TCP 접속을 설정하고 그 다음에 요청을 전송한다. 서버는 피어의 매핑된 외부 IP 주소 및 포트를 갖는 응답을 다시 전송하고, 이와 동시에 다른 서버로 요청을 전달하며, 이 요청은 이 두번째 서버에게 피어의 매핑된 외부 IP 주소 및 포트에서 피어와 접속하도록 지시한다. 피어는 첫번째 서버로부터 응답을 수신한 후에 접속을 종료한다.
포트 변경을 갖는 에코 테스트(Echo Test with port change): 피어가 서버로의 TCP 접속을 설정하고 그 다음에 포트 번호를 갖는 요청을 전송한다. 서버는 피어의 매핑된 외부 IP 주소 및 포트를 갖는 응답을 다시 전송하고, 그 다음에 매핑된 외부 IP 주소 및 수신된 포트에서 피어와 접속을 한다. 피어는 최초의 서버로부터 응답을 수신한 후에 접속을 종료한다.
순차적 에코 테스트(Sequential Echo Test): 피어는 순차적으로 할당된 포트 번호들을 사용하여 서버와 다수의 TCP 접속을 동시에 설정하고, 서버는 각각의 접 속에 대해 피어의 매핑된 외부 IP 주소 및 포트를 갖는 응답을 다시 전송한다. 피어는 각각의 접속에 대한 응답이 수신된 후에 그 접속을 종료한다.
피어는 또한 피어와 서버 또는 서버들 사이에 NAT 통과 시도가 예정될 수 있도록 다른 특수 메시지들을 서버로 전송할 수 있다. 예를 들어, 피어가 예측가능한 포트 할당을 갖는 대칭 NAT의 배후에 있다는 것을 알아낸 후에, 피어는 포트 할당 범위를 갖는 메시지를 서버로 전송할 수 있고, 서버는 차례로 제2 서버에게 클라이언트의 외부 IP 주소 및 주어진 범위 내의 포트 번호에서 피어에 접속하도록 지시한다.
도 4a 및 도 4b는 TCP-기반 NAT 발견 프로세스를 나타낸 것이다. 이 프로세스에서, 피어는 일련의 에코 메시지를 서버로 전송한다. 이 프로세스에 의해 피어는 조사 서버와의 TCP 접속을 설정함으로써 NAT 장치가 존재하는지 및, 발견되는 경우, NAT 장치의 유형을 알아낼 수 있다. 이 프로세스는 모든 콘(cone) 유형의 NAT, 대칭 NAT는 물론 대칭 변형도 발견할 수 있다. 게다가, 이 프로세스는 또한 피어가 인터넷 상에 공개되어 있는지 대칭 방화벽의 배후에 있는지를 탐지할 수 있다. NAT가 발견될 때, 직접 또는 동시적인 TCP 열기(TCP open)를 사용하여 NAT를 통과하려는 시도가 행해질 수 있다. 도 4a 및 도 4b가 메시지가 전송되고 테스트가 수행되는 순차적 순서를 나타내고 있지만, 일부 동작들은 동시에 수행될 수 있으며, 따라서 서로 다른 실시예들에서 실제의 순서가 다를 수 있다. 따라서, 처리 순서가 본 발명을 제한하지 않는다.
이 프로세스는 피어가 인바운드 접속(inbound connection)이 있는지 알아보 기 위해 포트를 리스닝하는 것으로 시작할 수 있다. 각각의 새로운 접속 요청에 대해, 피어는 소켓을 생성하고 자신의 로컬 포트를 피어의 리스닝 포트(listening port)에 바인딩할 수 있다. 예를 들어, 피어-투-피어 협업 세션에 있는 피어가 2492, 80 또는 443 등의 특정의 포트를 통해 자신의 피어들 또는 중계 서버와 통신을 할 수 있다. 여기서, 피어는 피어-투-피어 협업 세션에서 실제로 동작하는 피어가 TCP-기반 NAT 통과를 가능하게 해주기 위해 하는 것을 시뮬레이트한다. 인바운드 접속 요청이 피어에 의해 접수되기 위해, 외부 호스트는 NAT가 내부 주소 및 피어가 리스닝하고 있는 포트에 매핑한 외부 주소 및 포트에 접속해야만 한다.
접속이 설정되면, 피어는 먼저 에코 테스트(echo test) 메시지를 서버로 전송할 수 있다(블록 410). 서버로부터 매핑된 IP 주소 및 포트를 수신할 때, 피어는 매핑된 IP 주소 및 포트를 자신의 로컬 IP 주소 및 포트와 비교할 수 있다(결정 블록 412).
주소 및 포트가 동일한 경우, 피어는 주소-변환 장치가 설치되어 있지 않다는 것을 알게 되지만, 피어가 방화벽의 배후에 있을지도 모른다. 그에 따라, 프로세스는 블록(430)으로 분기한다. 방화벽이 인바운드 접속을 허용하는지를 알아내기 위해, 피어는 에코 홉 테스트(echo hop test) 메시지를 서버로 전송하고(블록 430), 서버는 차례로 제2 서버에게 피어의 IP 주소 및 포트에 접속하도록 지시한다. 제2 서버로부터의 인바운드 접속이 성공적으로 설정될 수 있는 경우, 프로세스는 결정 블록(432)에서 종료점(450)으로 분기한다. 프로세스가 종료점(450)에 도달하면, 피어는 자신이 인터넷 상에 공개되어 있다는 것을 알게 되며, 그렇지 않 은 경우, 프로세스는 결정 블록(432)에서 종료점(452)으로 분기하여, 클라이언트는 자신이 원치않는 인바운드 접속 시도를 방해하는 대칭 방화벽의 배후에 있는 것으로 판정한다. 방화벽이 대칭인 경우, 피어는 또한, 클라이언트에의 인바운드 접속이 설정될 수 있는지를 알아보기 위해, 피어와 서버가 동시에 서로 접속할 준비를 할 수 있도록 특수 메시지를 서버로 전송할 수 있다. 인바운드 접속이 설정되었다는 것은 대칭 방화벽이 통과가능하다는 것을 나타낸다.
이와 반대로, 피어의 외부 IP 주소 및 포트가 피어의 내부 IP 주소 및 포트와 다른 경우, 피어는 자신이 주소 변환 장치의 배후에 있는 것으로 결론지을 수 있다. 그에 따라, 프로세스는 결정 블록(412)에서 블록(414)으로 분기한다. 블록(414)에서, 피어는 서버에 대해 한번 더 에코 테스트를 수행하고, 이어서 새로운 매핑된 외부 IP 주소 및 포트를 이전의 에코 테스트로부터의 IP 주소 및 포트와 비교한다.
프로세스는 결정 블록(416)에서 이 비교의 결과에 기초하여 분기를 한다. 매핑이 서로 다른 경우, NAT의 주소 바인딩이 세션 의존적이며, 이는 NAT 바인딩이 각각의 아웃바운드 접속마다 변한다는 것을 의미한다. 세션 의존적인 바인딩 거동을 갖는 NAT 장치는 보통 통과하기가 어렵다. 그에 따라, 결정 블록(416)에서 판정되는 바와 같이, 매핑이 서로 다른 경우, 프로세스는 결정 블록(440)으로 분기한다. 프로세스는 또한 결정 블록(440)에서 매핑에서의 유일한 변경이 포트에 있는지 여부에 기초하여 분기를 한다. 변경이 포트에 제한되지 않는 경우, 프로세스는 종료점(454)으로 분기한다. 프로세스가 종료점(454)에 도달하면, 피어는 자신이 통과가능하지 않은 장치의 배후에 있는 것으로 결론지을 수 있다.
그렇지만, NAT가 일관되게 동일한 외부 주소에 바인딩하고 포트만이 각각의 세션마다 변하는 경우, NAT는 대칭 변형 NAT(symmetric variant NAT)인 것으로 간주된다. 이 조건에서, 프로세스는 결정 블록(440)에서 블록(442)으로 분기한다. 블록(442)에서, 피어는 순차적 에코 테스트(sequential echo test)에 의해 NAT의 포트 할당 패턴을 탐지한다. 순차적 테스트의 결과는 NAT가 그의 포트를 결정론적으로 또는 예측가능하지 않게 할당하는지를 나타내는 데 사용될 수 있다. 포트 할당이 결정론적이지 않은 경우, 프로세스는 결정 블록(444)에서 종료점(458)으로 분기한다. 프로세스가 종료점(458)에 도달하면, 피어는 자신이 대칭 NAT의 배후에 있는 것으로 결론지을 수 있다. 이와 반대로, 포트 할당이 예측가능한 경우, 프로세스는 결정 블록(444)에서 종료점(460)으로 분기한다. 프로세스가 종료점(460)에 도달하면, 클라이언트는 자신이 예측가능한 포트 할당을 갖는 대칭 NAT 또는 대칭 NAT 변형의 배후에 있는 것으로 결론지을 수 있다.
이와 반대로, 결정 블록(416)에서 동일한 매핑이 탐지되는 경우, 프로세스는 블록(418)으로 분기를 한다. 블록(418)에서, 피어는 자신이 콘 NAT 장치(cone NAT device)의 배후에 있는지 여부를 테스트하기 위해 서브-프로세스를 시작할 수 있다. NAT 장치의 유형에 관한 더 많은 정보를 획득하기 위해, 피어는 제1 서버로 에코 홉 테스트(echo hop test)를 전송하고 제2 서버가 자신에게 접속하기를 기다릴 수 있다. 제2 서버로부터의 접속이 성공적으로 설정되는 경우, 피어는 완전 콘 NAT 장치(full cone NAT device)의 배후에 있다. 그에 따라, 프로세스는 결정 블 록(420)에서 종료점(456)으로 분기하여, 클라이언트는 자신이 완전 콘 NAT 장치의 배후에 있는 것으로 결론지을 수 있다.
그와 반대로, 타임아웃 구간 이후에 제2 서버로부터의 인바운드 접속이 접수되지 않는 경우, 프로세스는 결정 블록(420)에서 블록(422)으로 분기할 수 있다. 블록(422)에서, 피어는 에코 테스트(echo test) 메시지를 제2 서버로 전송할 수 있다. 그 다음에, 프로세스는 결정 블록(424)에서 제2 서버로부터 수신된 매핑에 기초하여 분기를 할 수 있다. 제2 서버로부터의 매핑된 주소 및 포트가 제1 서버로부터의 매핑된 주소 및 포트와 다른 경우, NAT는 대칭 NAT로 간주될 수 있다. 그에 따라, 프로세스는, 상기한 바와 같이 대칭 NAT와 일관되게 처리하기 위해, 결정 블록(424)에서 블록(442)으로 분기할 수 있다.
이와 반대로, 2개의 서버로부터의 매핑된 주소 및 포트가 동일한 경우, 프로세스는 블록(426)으로 분기를 한다. 블록(426)에서, 피어는 포트 변경을 갖는 에코 테스트 메시지를 제1 서버로 전송할 수 있다. 그 다음에, 피어는 제1 서버가 지정된 포트로부터 자신에게 접속하기를 기다릴 수 있다.
프로세스는 결정 블록(428)에서 피어가 인바운드 접속을 성공적으로 접수하는지 여부에 따라 분기를 할 수 있다. 인바운드 접속이 설정되는 경우, 프로세스는 종료점(462)으로 분기하여, 피어는 자신이 제한된 NAT 장치(restricted NAT device)의 배후에 있는 것으로 결론짓는다. 그렇지 않은 경우, 프로세스는 결정 블록(428)에서 종료점(464)으로 분기하여, 피어는 자신이 포트 제한된 NAT 장치(port restricted NAT device)의 배후에 있는 것으로 결론짓는다.
식별된 NAT 장치의 유형이 통신의 형식을 좌우할 수 있다. NAT가 포트 제한된 경우, 피어는, 피어로의 인바운드 접속이 설정될 수 있는지를 알아보기 위해, 피어와 서버가 동시에 서로 접속할 준비를 할 수 있도록 특수 메시지를 서버로 전송할 수 있다. 인바운드 접속이 설정되었다는 것은 포트 제한된 NAT가 TCP 접속을 사용하여 통과가능하다는 것을 나타낸다.
NAT가 대칭 NAT 또는 대칭 변형인 것으로 판명된 경우, 피어는 순차적인 로컬 포트들을 사용하여 서버에 대해 일련의 에코 테스트를 실행할 수 있다. NAT가 작은 범위 내에서 또는 예측가능한 방식으로 그 다음 포트를 할당하는지를 판정하기 위해 이들 에코 테스트로부터의 매핑된 외부 포트가 분석된다. 포트 번호가 예측가능하게, 즉 작은 증분을 사용하여 할당되는 경우, NAT가 결정론적 포트 할당을 갖는 대칭 NAT로서 분류되고, 그렇지 않은 경우, NAT가 비결정론적 포트 할당을 갖는 대칭 NAT이다.
NAT가 결정론적 포트 할당을 갖는 대칭 NAT 또는 대칭 변형인 경우, 피어는, 피어로의 인바운드 접속이 설정될 수 있는지를 알아보기 위해, 피어와 제2 서버가 동시에 서로 접속할 준비를 할 수 있도록 특수 메시지를 서버로 전송할 수 있다. 이 경우에, 제2 서버는 피어의 매핑된 외부 IP 주소 및 예측된 포트에 접속을 한다. 인바운드 접속이 설정되었다는 것은 대칭 NAT가 통과가능하다는 것을 나타낸다. 비결정론적 포트 할당을 갖는 대칭 NAT 또는 대칭 변형은 일반적으로 통과가능하지 않은(non-traversable) 것으로 간주된다.
결정론적 포트 할당을 갖는 대칭 NAT 또는 대칭 변형을 통과할 때, 성공적인 통과의 가능성을 높이기 위해 외부 호스트가 예측된 범위 내의 다수의 포트에 동시에 접속하는 것이 필요할 수 있다.
그에 따라, 도 4a 및 도 4b의 프로세스가 피어에서 자신의 접속 상태(connectivity status)를 판정하는 데 사용될 수 있다. 피어-투-피어 협업 시스템 내의 각각의 피어는 자신의 접속 상태를 판정하기 위해 도 4a 및 도 4b에 도시된 프로세스와 유사한 프로세스를 수행할 수 있다. 에코 테스트에 대한 응답으로서와 같이, 피어로 전송되는 정보가 그 피어와 통신하기 위한 메카니즘을 식별하는 데 NAT 장치 유형의 판정과 함께 사용될 수 있다. 각각의 피어는 이 정보를 피어-투-피어 협업 세션에 있는 다른 피어들과 공유할 수 있다. 도 2에 예시된 실시예에서, 이 정보는 중계 서버(130')를 통해 공유될 수 있다. 그렇지만, 이 정보는, 서버(232, 234)를 통하는 것을 비롯하여, 임의의 다른 적당한 방식으로 공유될 수 있다.
각각의 피어에 대한 접속 정보가 어떻게 판정되고 다른 피어들과 어떻게 공유되는지에 상관없이, 피어-투-피어 협업 시스템 내의 피어들이 이 정보를 이용할 수 있는 경우, 이 정보는 중계 서버를 사용하지 않고 다른 피어들로 메시지를 어드레싱하는 하나 이상의 어드레싱 모드를 지원하는 데 사용될 수 있다. 피어-투-피어 협업 시스템 내의 피어들로 메시지를 라우팅하기 위해 이들 어드레싱 모드가 단독으로 또는 조합하여 사용될 수 있다.
도 5a는 직접 어드레싱 모드(direct addressing mode)를 나타낸 것이다. 도 5a에 나타낸 구성에서, 피어(510)는 변경 메시지(514)를 발생하고, 이 변경 메시 지(514)는 피어(512)로 직접 어드레싱된다. 피어(510)와 피어(512) 사이에 NAT 장치가 접속되어 있지 않을 때 또는 피어(510) 및 피어(512)가 피어(510)와 피어(512) 간의 임의의 NAT 장치를 통과할 수 있는 NAT 통과 기법을 알아냈을 때 이러한 직접 어드레싱이 사용될 수 있다.
도 5b는 추가의 어드레싱 모드를 나타낸 것이다. 도 5b에 나타낸 시나리오에서, 피어(520, 522, 524)는 동일한 이웃에 있다. 피어(520)는 피어(522)와 접속을 설정하였다. 피어(522)는 차례로 피어(524)와 접속을 설정하였다. 이 시나리오에서, 피어(520)는 변경 메시지(5261)를 개시한다. 메시지(5261)는 피어(522)로 어드레싱된다.
메시지(5261)를 수신할 때, 피어(522)는 전달 메시지(5262)를 피어(524)로 어드레싱한다. 이와 같이, 피어(520) 내에서 발생된 변경이 피어(522, 524) 둘다로 배포될 수 있다.
도 5c는 변경 메시지가 서버를 통해 중계되지 않고 이웃 내의 다수의 피어들로 전달될 수 있는 추가의 시나리오를 나타낸 것이다. 도 5c에 나타낸 시나리오에서, 피어들(520, 532, 534, 536) 모두는 동일한 이웃 내에 있다. 피어(538)도 역시 그 이웃 내에 접속되어 있다.
예시된 실시예에서, 피어(520)가 변경 메시지(5421)를 발생한다. 메시지(5421)는 피어(538)로 어드레싱된다. 이러한 메시지를 수신할 때, 피어(538)는 피어(532)로 어드레싱되는 전달 메시지(5422), 피어(534)로 어드레싱되는 전달 메시지(5423), 및 피어(536)로 어드레싱되는 전달 메시지(5424)를 발생한다.
예시된 실시예에서, 피어(538)는 수신된 메시지들을 다수의 다른 피어들로 전달하는 수퍼 피어로서 기능할 수 있다. 예시된 실시예에서, 서버(540)는, 비록 변경 메시지를 전달하는 데 참여하지는 않지만, 이웃 내의 피어들의 동작을 조정할 수 있다. 이 실시예에서, 서버(540)는 종래의 피어-투-피어 협업 시스템에서와 같이 중계 서버일 수 있지만, 피어들을 수퍼 피어로 구성하도록 수정될 수 있다. 예를 들어, 중계 서버(540)는 각각의 피어가 협업 세션에 참가할 때 그 피어의 하드웨어 구성을 알기 위해 그 피어를 폴링할 수 있다. 중계 서버(540)는 따라서 피어 장치들 각각에 관한 정보를 가지고 있을 수 있으며, 이 정보에 의해 다른 피어 장치들보다 더 많은 메시지 트래픽을 처리할 수 있게 해주는 대역폭, 메모리 및 기타 자원을 갖는 피어 장치들을 식별할 수 있게 된다. 그에 따라, 중계 서버(540)는 제어 메시지(541)를 피어(538)로 전송하여, 피어(538)에게 수퍼 피어로서 기능하도록 신호할 수 있다. 수퍼 피어로 지정된 장치는 자신의 이웃 내의 다수의 장치들과 접속을 설정하려고 시도할 수 있다.
제어 메시지(541)는 피어(538)의 동작 파라미터들을 수퍼 피어로서 지정하기에 적당한 유형의 정보를 포함하고 있을 수 있다. 예를 들어, 제어 메시지(541)는 수퍼 피어(538)가 접속을 설정해야 하는 피어 장치들의 수를 알려줄 수 있다. 그렇지만, 중계 서버(540) 등의 제어 서버와 수퍼 피어로서 지정된 피어 장치 간에 교환되는 특정의 정보가 본 발명을 제한하지 않는다.
게다가, 중계 서버(540) 등의 제어 서버와 수퍼 피어(수퍼 피어(538) 등)로서 지정된 장치 간의 통신이 양방향일 수 있다. 예를 들어, 피어 장치(538)는 피어(538)에 의해 처리되는 메시지 트래픽의 양에 관한 정보를 중계 서버(540)에 제공할 수 있다. 이러한 메시지가 중계 서버(540)로 전달될 수 있으며, 따라서 피어(538)에 대한 부하를 줄이기 위해 또는 네트워크 혼잡 가능성을 감소시키기 위해 이웃 내에 추가의 수퍼 피어가 필요하다.
이러한 메시지에 응답하여, 중계 서버(540)는 이웃 내의 다른 장치를 수퍼 피어로서 지정할 수 있다. 그렇지만, 피어를 수퍼 피어로서 지정하는 것을 트리거하는 타이밍 또는 이벤트가 본 발명을 제한하지 않는다. 예를 들어, 다수의 피어들 간의 협업 세션의 시작 시에 하나 이상의 장치들이 수퍼 피어로서 지정될 수 있다. 다른 대안으로서, 중계 서버(540) 등의 제어 서버는 피어-투-피어 협업 세션에 관한 정보를 모니터링하거나 수신할 수 있고 이러한 정보에 응답하여 하나 이상의 장치를 수퍼 피어로서 지정할 수 있다.
몇몇 실시예들에서, 중계 서버는, 어느 피어가 수퍼 피어 후보로 될 수 있는지를 결정하기 위해, 피어에 관한 정보[CPU 능력, 메모리, 가동시간(uptime), 기타 등등]를 수집한다. 중계 서버는 이웃 피어들에서의 트래픽 또는 자원 사용이 어떤 임계값을 초과할 때 이웃 내의 후보를 수퍼 피어로 격상시킬 수 있다. 예를 들어, 각각의 피어가 이웃 내의 모든 다른 피어로의 접속을 생성함으로써 완전 메쉬 접속 네트워크(fully meshed connectivity network)를 형성하는 경우, 피어의 수가 증가 할 때, 피어는 자신의 자원을 초과하게 되고 따라서 이웃에 수퍼 피어를 할당하라고 중계 서버에게 요청할 수 있다.
수퍼 피어가 이웃 내에 설정되는지 여부 및 어떻게 설정되는지와 상관없이, 라우팅 테이블 내에 포함된 이웃들에 관한 정보가 중계 서버를 관여시키지 않고 변경 메시지를 전달하는 메카니즘을 식별하는 데 사용될 수 있다. 도 3a에 도시된 실시예에서, 이웃들에 관한 정보는 피어-투-피어 협업 세션에 있는 각각의 장치에 의해 작성되는 라우팅 테이블에 저장된다. 도 6은 장치가 피어-투-피어 협업 세션에 참가할 때 라우팅 테이블을 작성하는 데 이용될 수 있는 프로세스의 일례를 제공한다.
도 6의 프로세스는 피어가 피어를 배후에 두고 있는 NAT 장치가 있는 경우 그 NAT 장치의 유형을 알아내려고 시도하는 블록(610)에서 시작한다. 그에 부가하여, 블록(610)에서, 피어는 다른 피어 장치들이 메시지를 자신에게 보내는 데 사용할 수 있는 주소를 결정한다. 이 정보는 임의의 적당한 방식으로 획득될 수 있다. 예를 들어, 도 4a 및 도 4b에 도시된 프로세스가 사용될 수 있다.
이 정보가 어떻게 획득되는지에 상관없이, 이 정보는 다른 피어 장치들이 그 피어와 어떻게 통신할 수 있는지를 기술하는 주소 벡터(address vector)를 형성하는 데 사용될 수 있다. 블록(612)에서, 이 주소 벡터가 피어-투-피어 세션에 있는 다른 피어들과 공유된다. 예시된 실시예에서, 피어는 자신의 주소 벡터를 중계 서버로 전달함으로써 자신의 주소 벡터를 다른 피어들과 공유한다. 중계 서버는 주소 벡터를, 협업 세션에 있는 모든 다른 피어들로 직접 또는 협업 세션에 있는 피 어들 간의 통신을 용이하게 해주도록 구성되어 있는 하나 이상의 다른 중계 서버를 통해 간접적으로 전달할 수 있다.
그 자신의 주소 벡터를 획득하는 것에 부가하여, 각각의 피어는 협업 세션에 있는 다른 피어들에 대한 주소 벡터도 수신한다. 예시된 실시예에서, 각각의 피어는 그 자신의 중계 서버로부터 피어-투-피어 협업 세션에 있는 모든 다른 피어들에 대한 주소 벡터를 수신한다. 그렇지만, 각각의 피어가 협업 세션에 있는 다른 피어들의 주소 벡터를 수신하는 데 사용하는 특정의 메카니즘이 본 발명을 제한하지 않으며, 임의의 적당한 메카니즘이 사용될 수 있다.
주소 벡터에 관한 정보를 수신하는 것에 부가하여, 각각의 피어는 피어들 간에 이미 설정된 접속들에 관한 정보도 수신할 수 있다. 예를 들어, 도 3b에 도시된 바와 같이, 피어(352A)는 피어(352B)와 접속(3701)을 설정하였다. 그렇지만, 피어(352A)가 피어(352D)와 동일한 이웃 내에 있을지라도, 피어(352A)는 피어(352D)와 직접 접속을 설정하지 않았다. 그에 따라, 도 6의 프로세스는 피어가 직접 접속을 설정한 다른 피어들의 목록을 수신하는 프로세스 블록(616)을 포함한다.
프로세스는 블록(618)으로 계속된다. 블록(618)에서, 피어는 임의의 적당한 메카니즘을 사용하여 하나 이상의 피어들과 접속을 설정할 수 있다. 예를 들어, 블록(618)에서의 처리는 접속을 설정하는 "핸드쉐이킹(handshaking)" 프로토콜에서의 메시지의 교환을 포함할 수 있다. 교환되는 특정의 메시지는 피어들을 상호접속시키는 네트워크에 의해 사용되는 프로토콜에 좌우될 수 있다. 그에 따라, 접속 을 설정하는 특정의 메카니즘이 본 발명을 제한하지 않는다.
접속이 어떻게 설정되는지에 상관없이, 프로세스 블록(620)에서, 피어는 자신이 설정한 직접 접속(direct connection)을 다른 피어들과 공유할 수 있다. 접속에 관한 정보는 이 정보를 중계 서버에 제공함으로써 또는 피어의 직접 접속을 통해 공유될 수 있다. 그렇지만, 이러한 정보를 공유하는 데 임의의 적합한 메카니즘이 사용될 수 있다.
정보가 다른 피어들과 어떻게 공유되는지에 상관없이, 프로세스는 블록(622)으로 진행한다. 블록(622)에서, 피어는 라우팅 테이블을 작성할 수 있다. 피어는 블록(614)에서 수신된 다른 피어들의 주소 벡터에 포함된 정보, 블록(616)에서 수신된 직접 접속에 관한 정보, 그리고 피어 이웃 및 그 이웃 내에서의 상호접속을 식별해주는, 블록(618)에서 설정된 그 자신의 접속들에 관한 정보를 사용할 수 있다. 이 정보는 도 3b에 나타낸 라우팅 테이블(324) 등의 라우팅 테이블에 반영될 수 있다. 그렇지만, 이 정보를 포착하기 위해 임의의 적당한 메카니즘이 사용될 수 있다.
피어는 피어-투-피어 협업 세션에서 변경 메시지를 전달하기 위해 블록(622)에서 작성된 라우팅 테이블을 사용할 수 있다. 피어는 작업 공간 내의 멤버들의 변경이 탐지될 때까지 라우팅 테이블을 계속하여 사용할 수 있다. 작업 공간 멤버쉽의 변경이 탐지될 때, 라우팅 테이블이 더 이상 정확하지 않을지도 모른다. 그에 따라, 갱신된 라우팅 테이블을 작성하기 위해 라우팅 테이블을 작성하는 프로세스의 일부 또는 그 전부가 반복될 수 있다. 그에 따라, 작업 공간 멤버쉽 또는 네 트워크 구성의 변경이 탐지될 때, 프로세스는 결정 블록(624)에서 뒤로 블록(612)로 분기한다. 블록(612)에서 시작하여 라우팅 테이블을 작성하는 프로세스가 반복되고, 피어는 자신의 라우팅 테이블을 최신 상태로 유지하는 데 필요한 단계들을 수행한다.
어떤 경우들에, 작업 공간 멤버쉽의 변경이 탐지되지 않더라도, 라우팅 테이블이 오래된 것일 수 있다. 예를 들어, 피어가 다른 피어와의 접속을 상실할 수 있고, 따라서 피어들 간의 접속을 변경시킬 수 있다. 네트워크에서의 성능 문제, 과부하, 또는 피어-투-피어 네트워크 내의 피어에게 주어지는 사용자 명령 등의 많은 이유로 접속이 상실될 수 있다. 그에 따라, 라우팅 테이블이 때때로 갱신될 수 있다. 라우팅 테이블을 언제 갱신할지를 결정하는 데 임의의 적당한 메카니즘이 사용될 수 있다. 예를 들어, 피어-투-피어 협업 시스템 내의 모든 피어들이 주기적인 간격으로 자신의 라우팅 테이블을 갱신할 수 있다. 다른 대안으로서, 피어-투-피어 협업 시스템 내의 어느 장치라도 협업 시스템에서의 감지된 상태에 응답하여 다른 장치들에게 그들의 라우팅 테이블을 갱신하라고 신호할 수 있다. 예를 들어, 장치가 피어 간에 직접 메시지가 전송될 때 다수의 통신 장애를 경험하거나, 접속을 상실하거나, 새로운 접속을 설정하는 경우, 장치는 영향을 받은 접속들에 관한 정보를 전송함으로써 다른 장치들에게 그들의 라우팅 테이블을 새로고침하도록 신호를 할 수 있다.
피어-투-피어 협업 세션에서 사용되는 라우팅 테이블이 오래되었다는 것이 어떻게 판정되는지에 상관없이, 라우팅 테이블이 오래된 것으로 판정될 때, 프로세 스는 결정 블록(626)에서 라우팅 테이블을 작성하는 프로세스가 반복될 수 있는 블록(628)으로 분기한다. 예를 들어, 피어는 이웃 내의 다른 피어들로의 접속이 더 이상 이용가능하지 않기 때문에 자신의 라우팅 테이블이 오래된 것이라는 것을 탐지할 수 있다. 피어는 자신의 라우팅 테이블이 오래되었을 때 이를 갱신할 수 있다. 각각의 피어가 그 자신의 라우팅 테이블을 사용하여 메시지를 전송할 때, 피어는 궁극적으로 접속이 상실되었다는 것을 탐지하고 이어서 그에 따라 자신의 라우팅 테이블을 갱신한다. 서로 간에 접속을 상실한 2개의 피어는 자신들의 네트워크 구성이 변경된 경우 NAT 조사 프로세스(NAT probing process)를 거칠 수 있다. 성능 이유로, 예를 들어, 트래픽 과부하로 접속이 상실된 경우, 피어들은 나중까지 기다렸다가 부하가 보다 적당한 레벨에 있을 때 접속을 재설정할 수 있다.
각각의 피어가 에지 라우팅 기법에 따라 다른 피어들과 효과적으로 통신하는 데 유용한 라우팅 테이블을 유지할 수 있도록, 도 6에 도시된 프로세스가 피어-투-피어 협업 세션에 있는 각각의 피어들에서 반복될 수 있다.
도 7은 피어가 에지 라우팅 기법을 사용하여 다른 피어들로 변경 정보를 브로드캐스트하기 위해 라우팅 테이블을 사용할 수 있는 프로세스를 나타낸 것이다. 브로드캐스트하는 프로세스는 블록(710)에서 시작한다. 블록(710)에서, 피어가 메시지를 발생한다. 블록(710)에서 발생된 메시지는 공지의 피어-투-피어 협업 시스템에서 사용되는 형식으로 된 변경 메시지일 수 있다. 그렇지만, 메시지의 유형 및 형식이 본 발명을 제한하지 않는다.
도 7의 예에서, 메시지는 피어-투-피어 협업 시스템 내의 모든 피어들로 브 로드캐스트하기 위한 것이다. 그렇지만, 메시지의 형식 및 수신자 피어의 수가 본 발명을 제한하지 않는다. 블록(710)에서 발생된 메시지는 임의의 적당한 형식으로 되어 있을 수 있고, 피어-투-피어 협업 세션에 있는 피어들 중 하나 이상으로 보내질 수 있다.
메시지의 유형 및 메시지의 의도된 수신자와 상관없이, 프로세스는 루프 시작(712)으로 진행한다. 루프 시작(712)은 블록(710)에서 발생된 메시지를 수신하기 위해 피어를 포함하는 각각의 피어 이웃에 대해 수행되는 처리의 시작을 나타낸다. 이웃들은 도 6의 프로세스에 따라 작성된 라우팅 테이블을 사용하여 식별될 수 있다. 그렇지만, 이웃들이 임의의 적당한 방식으로 식별될 수 있다.
이웃들이 어떻게 식별되는지와 상관없이, 프로세스는 블록(714)으로 계속된다. 블록(714)에서, 선택된 이웃에 대해, 하나 이상의 스패닝 트리(spanning tree)가 작성된다. 각각의 스패닝 트리는 블록(710)에서 발생된 메시지를 받기로 되어 있는 이웃 내의 모든 피어들이 어드레싱될 수 있는 배포 경로를 정의한다. 예를 들어, 이웃(350)(도 3b)에 대해 2개의 가능한 스패닝 트리가 작성될 수 있다. 이웃(350) 내의 모든 피어들에게 도달하기 위해, 클라이언트(352B, 352C)에게 전달할 메시지가 피어(352A)로 보내질 수 있고, 클라이언트(352C)는 피어(352A)로부터 수신한 메시지를 피어(352B)로 전달한다. 이와 반대로, 피어(352A)가 메시지를 피어(352B)로 전송하고 피어(352B)가 차례로 메시지를 피어(352C)로 전달하는 것으로 스패닝 트리가 작성될 수 있다. 그 다음에, 피어(352D)는 피어(352C)에 의해 전달된 메시지를 수신할 수 있다. 따라서, 도 3b의 간략화된 예에서, 네트워크(350)에 대해 2개의 스패닝 트리가 가능하다. 더 많은 피어들을 포함하여 피어들 간의 상호접속이 더 복잡한 이웃의 경우, 3개 이상의 스패닝 트리가 식별될 수 있다. 블록(714)에서 스패닝 트리가 식별되는 메카니즘이 본 발명에 중요하지 않다. 그렇지만, 몇몇 실시예들에서, 피어들에 의해 유지되는 라우팅 테이블이 유향 그래프로 간주될 수 있으며, 이 경우에 유향 그래프에 걸쳐 스패닝 트리를 작성하는 공지의 알고리즘이 사용될 수 있다.
이들 스패닝 트리가 어떻게 작성되는지와 상관없이, 프로세스는 블록(716)으로 진행한다. 블록(716)에서는, 블록(714)에서 작성된 스패닝 트리가 선택된다. 예시된 실시예에서, 이 선택은 최저 "비용(cost)"에 기초한다. 이와 관련하여, "비용"은 피어-투-피어 협업 시스템의 성능 특성을 나타내는 데 사용되는 어떤 척도 또는 척도들이라도 될 수 있다. 예를 들어, 다른 스패닝 트리들에 비해 가장 적은 횟수로 메시지를 전달시키는 스패닝 트리가 최저 비용 스패닝 트리로 선택될 수 있다. 다른 대안으로서, 가장 적은 수의 메시지가 혼잡 노드를 통해 전달되는 스패닝 트리가 최저 비용 스패닝 트리로서 선택될 수 있다. 그렇지만, 블록(716)에서 비용의 지표로서 임의의 적당한 척도가 사용될 수 있다.
스패닝 트리가 어떻게 선택되는지와 상관없이, 프로세스는 결정 블록(718)으로 계속된다. 결정 블록(718)에서, 프로세스는 루프 시작(712)에서 선택된 이웃이 도 7의 프로세스를 실행하는 피어로부터 직접 접속에 의해 도달될 수 있는지 여부에 따라 분기를 한다. 예시된 실시예에서, 결정 블록(718)에서 검사를 수행하는 간단한 방법은 개시측 피어가 선택된 이웃에 속하는지 여부를 판정하는 것이다. 개시측 피어가 그 자신의 이웃인 경우, 피어는 그 자신을 루트로 갖는 스패닝 트리를 생성할 수 있고, 그 다음에 그 스패닝 트리를 따라 변경 메시지를 브로드캐스트할 수 있다.
선택된 이웃이 직접 도달될 수 있는 경우, 프로세스는 블록(720)으로 분기한다. 블록(720)에서, 메시지가 선택된 스패닝 트리의 루트 노드를 형성하는 피어로 직접 전송된다. 이와 반대로, 개시측 피어가 선택된 이웃에 속하지 않는 경우, 프로세스는 결정 블록(718)에서 블록(740)으로 분기한다. 블록(740)에서, 메시지가 도 7의 프로세스를 수행하는 피어의 홈 릴레이(home relay)로 전송된다. 메시지들이 종래의 피어-투-피어 협업 시스템에서 피어들의 홈 릴레이로 전송되는 것과 동일한 방식으로 메시지가 홈 릴레이로 전송될 수 있다. 그렇지만, 블록(740)에서 처리를 수행하는 데 임의의 적당한 메카니즘이 사용될 수 있다.
블록(742)에서, 홈 릴레이는 메시지를 선택된 스패닝 트리의 루트 노드로 전달한다. 메시지는 종래의 피어-투-피어 협업 시스템에서와 같이 홈 릴레이에 의해 전달될 수 있다. 메시지를 전달하는 것은 선택된 스패닝 트리의 루트 노드로서 기능하는 피어로 직접 메시지를 전송함으로써 수행될 수 있다. 다른 대안으로서, 스패닝 트리의 루트 노드인 피어와 통신을 할 수 있는 중계 서버에 도달하기 전에 하나 이상의 중계 서버를 통해 메시지가 전달될 수 있다.
메시지가 블록(720)에서 루트 노드로 직접 전송되는지 블록(742)에서 하나 이상의 중계 서버를 통해 간접적으로 전송되는지와 상관없이, 프로세스는 블록(722)으로 계속된다. 블록(722)에서, 메시지는 스패닝 트리를 통해 전파된다. 루트 노드가 메시지를 자신과 직접 접속을 갖는 노드들로 전달함으로써 전파가 개시될 수 있다. 그 피어들은 그 다음에 라우팅 테이블에 반영되어 있는 바와 같이 자기들과 직접 접속을 갖는 스패닝 트리 내의 다른 피어들로 메시지를 전달할 수 있다. 그렇지만, 메시지를 전파시키는 임의의 적당한 메카니즘이 사용될 수 있다.
결정 블록(724)에서, 프로세스는 메시지가 메시지를 수신하기로 되어 있는 이웃 내의 모든 피어들에 도달하였는지 여부에 따라 분기를 한다. 도달한 경우, 프로세스는 결정 블록(732)으로 분기하여, 프로세스는 처리될 이웃들이 더 있는지 여부에 따라 추가적으로 분기를 한다. 더 있는 경우, 프로세스는 루프 시작(712)으로 다시 분기를 하여, 그 다음 이웃에 대해 처리가 반복된다. 이와 반대로, 이웃이 없는 경우, 처리가 종료된다.
그렇지만, 전송이 성공적이지 않은 경우, 프로세스는 블록(730)으로 분기하여, 메시지를 재전송할 수 있다. 메시지는 최초의 메시지와 동일한 방식으로 재전송될 수 있거나, 메시지를 그의 목적지 피어로 전송하기 위해 다른 라우팅 경로가 선택될 수 있다. 그렇지만, 메시지를 메시지를 수신하지 않은 피어로 전송하는 데 다수의 경로가 가능한 경우, 재전송 시에 다른 경로가 시도될 수 있다. 이들 경로가 임의의 적당한 순서로 시도될 수 있다. 그렇지만, 예시된 실시예에서, 중계 서버에 대한 부하를 줄이려는 노력을 반영하여, 중계 서버를 사용하는 재전송이 최후 수단으로서 시도될 수 있다.
재전송이 행해지는 데 사용되는 메카니즘에 상관없이, 성공적인 경우, 프로세스는 결정 블록(732)으로 진행하여, 있는 경우, 그 다음 이웃에 대해 프로세스가 반복되고, 그렇지 않은 경우 종료된다.
상기한 바와 같이, 다른 피어들로 직접 어드레싱되는 피어-투-피어 협업 시스템에서의 메시지 양이 증가될 수 있고, 이는 중계 서버에 대한 부하를 감소시킬 수 있어, 보다 저비용이고 및/또는 보다 효과적인 피어-투-피어 협업 시스템을 가능하게 해준다.
본 발명의 적어도 하나의 실시예의 몇가지 측면들에 대해 이와 같이 기술하였지만, 다양한 변경, 수정 및 개량이 당업자에 의해 용이하게 안출될 것이라는 것을 잘 알 것이다.
이러한 변경, 수정 및 개량이 본 발명의 일부인 것으로 보아야 하며, 본 발명의 정신 및 범위 내에 속하는 것으로 보아야 한다. 그에 따라, 이상의 설명 및 첨부 도면은 단지 예에 불과하다.
본 발명의 상기한 실시예들은 수많은 방법 중 어떤 방법으로도 구현될 수 있다. 예를 들어, 이들 실시예는 하드웨어, 소프트웨어 또는 이들의 조합을 사용하여 구현될 수 있다. 소프트웨어로 구현될 때, 소프트웨어 코드는, 단일 컴퓨터에 제공되어 있든 다수의 컴퓨터들 간에 분산되어 있든 간에, 임의의 적당한 프로세서 또는 일군의 프로세서들에서 실행될 수 있다.
게다가, 컴퓨터가 랙 장착형(rack-mounted) 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 또는 태블릿 컴퓨터 등의 다수의 형태 중 어떤 형태로도 구현될 수 있다는 것을 잘 알 것이다. 그에 부가하여, 컴퓨터가 일반적으로 컴퓨터로 간주되지는 않 지만 적당한 처리 능력을 갖는 장치(PDA, 스마트 폰 또는 임의의 다른 적당한 휴대형 또는 고정형 전자 장치 등)에 내장될 수 있다.
또한, 컴퓨터는 하나 이상의 입력 및 출력 장치를 가질 수 있다. 이들 장치는, 그 중에서도 특히, 사용자 인터페이스를 제공하는 데 사용될 수 있다. 사용자 인터페이스를 제공하는 데 사용될 수 있는 출력 장치의 예로는 출력의 시각적 표현을 위한 프린터 또는 디스플레이 화면 및 출력의 청각적 표현을 위한 스피커 또는 기타 사운드 발생 장치가 있다. 사용자 인터페이스용으로 사용될 수 있는 입력 장치의 예로는 키보드 및 포인팅 장치(마우스, 터치 패드 및 디지타이징 태블릿 등)가 있다. 다른 예로서, 컴퓨터는 음성 인식을 통해 또는 기타 가청 형식으로 입력 정보를 수신할 수 있다.
이러한 컴퓨터들은 하나 이상의 네트워크에 의해, 근거리 통신망 또는 원거리 통신망(기업 네트워크 또는 인터넷 등)을 비롯한 임의의 적당한 형태로 상호접속될 수 있다. 이러한 네트워크는 임의의 적당한 기술에 기초할 수 있고, 임의의 적당한 프로토콜에 따라 동작할 수 있으며, 무선 네트워크, 유선 네트워크 또는 광섬유 네트워크를 포함할 수 있다.
또한, 본 명세서에 개략적으로 설명된 다양한 방법 또는 프로세스가 각종의 운영 체제 또는 플랫폼 중 임의의 것을 이용하는 하나 이상의 프로세서에서 실행가능한 소프트웨어로서 코딩될 수 있다. 그에 부가하여, 이러한 소프트웨어는 다수의 적당한 프로그래밍 언어 및/또는 종래의 프로그래밍 또는 스크립팅 도구 중 임의의 것을 사용하여 작성될 수 있고, 또한 프레임워크 또는 가상 머신에서 실행되 는 실행가능 기계어 코드 또는 중간 코드(intermediate code)로서 컴파일될 수 있다.
이 점에서, 본 발명은, 하나 이상의 컴퓨터 또는 기타 프로세서 상에서 실행될 때, 상기한 본 발명의 다양한 실시예들을 구현하는 방법들을 수행하는 하나 이상의 프로그램으로 인코딩된 컴퓨터 판독가능 매체(또는 다수의 컴퓨터 판독가능 매체)(예를 들어, 컴퓨터 메모리, 하나 이상의 플로피 디스크, 컴팩트 디스크, 광 디스크, 자기 테이프, 플래쉬 메모리, FPGA(Field Programmable Gate Array) 또는 기타 반도체 장치 내의 회로 구성, 기타)로서 구현될 수 있다. 컴퓨터 판독가능 매체 또는 매체들은 그에 저장된 프로그램 또는 프로그램들이 상기한 바와 같은 본 발명의 다양한 측면들을 구현하기 위해 하나 이상의 다른 컴퓨터 또는 다른 프로세서에 로드될 수 있도록 이동가능(transportable)할 수 있다.
용어 "프로그램" 또는 "소프트웨어"는 본 명세서에서 상기한 바와 같은 본 발명의 다양한 측면들을 구현하도록 컴퓨터 또는 기타 프로세서를 프로그램하는 데 이용될 수 있는 임의의 유형의 컴퓨터 코드 또는 일련의 컴퓨터 실행가능 명령어를 지칭하는 일반적인 의미로 사용된다. 그에 부가하여, 이 실시예의 한 측면에 따르면, 실행될 때 본 발명의 방법들을 수행하는 하나 이상의 컴퓨터 프로그램이 단일의 컴퓨터 또는 프로세서 상에 존재할 필요가 없고 본 발명의 다양한 측면들을 구현하기 위해 다수의 서로 다른 컴퓨터들 또는 프로세서들 간에 모듈 방식으로 분산되어 있을 수 있다는 것을 잘 알 것이다.
컴퓨터 실행가능 명령어는 하나 이상의 컴퓨터 또는 기타 장치에 의해 실행 되는 프로그램 모듈 등의 많은 형태로 되어 있을 수 있다. 일반적으로, 프로그램 모듈은 특정의 태스크를 수행하거나 특정의 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조, 기타 등등을 포함한다. 통상적으로, 프로그램 모듈들의 기능이 다양한 실시예들에서 원하는 바에 따라 결합되거나 분산될 수 있다.
본 발명의 다양한 측면들이 단독으로, 조합하여, 또는 이상에 기술한 실시예들에서 구체적으로 논의되지 않은 각종의 구성으로 사용될 수 있으며, 따라서 그의 응용이 이상의 설명에 기술되고 첨부 도면에 도시된 컴포넌트들의 상세 및 구성으로 제한되지 않는다. 예를 들어, 일 실시예에 기술된 측면들이 다른 실시예들에 기술된 측면들과 임의의 방식으로 결합될 수 있다.
청구 범위에서 청구항 구성요소를 수식하기 위해 "제1", "제2", "제3", 기타 등등의 서수 용어를 사용하는 것은 그 자체로 한 청구항 구성요소의 다른 구성요소에 대한 우선권, 우선순위 또는 순서, 또는 방법의 동작들이 수행되는 시간적 순서를 의미하지 않으며, 단지 어떤 이름을 갖는 한 청구항 구성요소를 동일한 이름을 갖는(그렇지만, 서수 용어를 사용함) 다른 구성요소와 구분하여 청구항 구성요소들을 구별하기 위한 표시로서 사용된다.
또한, 본 명세서에서 사용되는 어구 및 전문 용어가 설명을 위한 것이며, 제한하는 것으로 보아서는 안된다. 본 명세서에서 "포함하는", "구비하는", 또는 "갖는", "내포하는", "수반하는" 및 이들의 변형을 사용하는 것은 그 이후에 열거되는 항목들 및 그의 등가물들은 물론 부가의 항목들을 포괄하기 위한 것이다.

Claims (20)

  1. 복수의 피어들(112, 114, 122, 124) 각각이 상기 복수의 피어들 중 다른 피어들(112, 114, 122, 124)로 협업 정보를 브로드캐스트하는 피어-투-피어 협업 시스템을 운영하는 방법으로서,
    상기 복수의 피어들 중 제1 피어가 NAT(Network Address Translation) 장치를 통해 패킷들을 수신하는 데 사용할 수 있는 주소 정보를 결정하는 단계(610),
    상기 복수의 피어들 중 적어도 제2 피어와 상기 주소 정보를 공유하는 단계(614), 및
    상기 제2 피어로부터 협업 정보를 상기 복수의 피어들 중 상기 다른 피어들 각각으로 전송하는 단계(720, 742)를 포함하며,
    상기 전송하는 단계는 상기 주소 정보를 사용하여 상기 제1 피어로 어드레싱되는 상기 협업 정보를 포함하는 적어도 하나의 패킷을 전송하는 단계를 포함하는 것인, 피어-투-피어 협업 시스템을 운영하는 방법.
  2. 제1항에 있어서, 주소 정보를 결정하는 상기 단계는,
    상기 제1 피어로부터 서버로 조사 패킷(probing packet)을 전송하는 단계(410), 및
    상기 제1 피어에서 응답 패킷을 수신하는 단계(412)를 포함하는 것인, 피어-투-피어 협업 시스템을 운영하는 방법.
  3. 제2항에 있어서, 상기 제2 피어로부터 전송하는 상기 단계는,
    상기 복수의 피어들의 일부분으로 배포하기 위해 적어도 하나의 패킷을 상기 서버로 전송하는 단계(740)를 포함하는 것인, 피어-투-피어 협업 시스템을 운영하는 방법.
  4. 제1항에 있어서, 상기 주소 정보를 공유하는 상기 단계는,
    주소 벡터를 서버로 전송하는 단계(612), 및
    상기 주소 정보를 상기 복수의 피어들 중 상기 다른 피어들 각각으로 배포하는 단계(614)를 포함하는 것인, 피어-투-피어 협업 시스템을 운영하는 방법.
  5. 제1항에 있어서, 상기 방법은 상기 복수의 피어들 내의 복수의 피어 그룹(350, 360) - 그룹(350)은 피어들(352A, 352B, 352C, 352D)을 포함하고, 그룹(360)은 피어들(362E, 362F, 362G, 362H)을 포함함 - 을 식별해주는 데이터 구조(324)를 상기 제2 피어와 연관된 컴퓨터 판독가능 매체(340)에 저장하는 단계 - 각각의 그룹 내의 각각의 피어는 그 그룹 내의 적어도 하나의 다른 피어로 직접 패킷을 전송할 수 있음 - 를 더 포함하고,
    상기 제2 피어로부터 전송하는 상기 단계는 상기 복수의 그룹들 각각 내의 적어도 하나의 피어로 패킷을 전송하는 단계(712)를 포함하는 것인, 피어-투-피어 협업 시스템을 운영하는 방법.
  6. 제5항에 있어서, 상기 복수의 그룹들 중 제1 그룹 내의 복수의 피어들 중 적어도 하나의 피어를 수퍼 피어(362E)로 지정하는 단계를 더 포함하고,
    상기 제2 피어로부터 전송하는 상기 단계는,
    상기 수퍼 피어로 패킷(542)을 전송하는 단계, 및
    상기 패킷을 상기 수퍼 피어로부터 상기 제1 그룹 내의 복수의 피어들(532, 534, 536)로 전달하는 단계를 포함하는 것인, 피어-투-피어 협업 시스템을 운영하는 방법.
  7. 제5항에 있어서, 상기 제2 피어로부터 전송하는 상기 단계는,
    상기 패킷을 공개적으로 액세스가능한 서버로 전송하는 단계(740), 및
    상기 패킷을 상기 공개적으로 액세스가능한 서버로부터 상기 복수의 그룹들 중 적어도 하나의 그룹 내의 피어로 배포하는 단계(742)를 포함하는 것인, 피어-투-피어 협업 시스템을 운영하는 방법.
  8. 복수의 피어들 각각이 상기 복수의 피어들 중 다른 피어들 각각으로 협업 정보를 브로드캐스트하는 피어-투-피어 협업 시스템을 운영하는 방법으로서,
    복수의 라우팅 테이블들(324)을 유지하는 단계 - 상기 복수의 라우팅 테이블들 각각은 상기 복수의 피어들의 적어도 일부분 내의 피어와 연관되어 있고, 각각의 라우팅 테이블은 상기 복수의 피어들로 된 그룹들(350, 360)을 식별해주며, 각 각의 그룹 내의 각각의 피어는 그 그룹 내의 피어로 직접 어드레싱되는 패킷을 사용하여 그 그룹 내의 적어도 하나의 다른 피어와 통신할 수 있음 -,
    상기 그룹들 각각 내의 적어도 하나의 피어로 패킷을 전송하는 단계(720, 742), 및
    상기 그룹들의 적어도 일부분 내의 적어도 하나의 피어로부터, 상기 패킷을 그 그룹 내의 적어도 하나의 다른 피어로 전달하는 단계(722)를 포함하며,
    각각의 다른 피어로 전달되는 상기 패킷은 상기 다른 피어로 직접 어드레싱되는 것인, 피어-투-피어 협업 시스템을 운영하는 방법.
  9. 제8항에 있어서, 상기 그룹들 중 적어도 하나의 그룹 내의 적어도 하나의 다른 피어(538)로부터, 상기 패킷을 그 그룹 내의 제2의 다른 피어(532, 534, 536)로 전달하는 단계를 더 포함하며,
    상기 제2의 다른 피어로 전달되는 상기 패킷(5422, 5433, 5424)은 상기 제2의 다른 피어로 직접 어드레싱되는 것인, 피어-투-피어 협업 시스템을 운영하는 방법.
  10. 제8항에 있어서, 상기 그룹들 각각 내의 적어도 하나의 피어로 패킷을 전송하는 상기 단계는,
    패킷을 공개적으로 액세스가능한 서버(560)로 전송하는 단계, 및
    상기 패킷을 상기 공개적으로 액세스가능한 서버로부터 상기 복수의 그룹들 의 일부분 내의 적어도 하나의 피어(552, 554, 556)로 전달하는 단계를 포함하는 것인, 피어-투-피어 협업 시스템을 운영하는 방법.
  11. 제8항에 있어서, 상기 그룹들 각각 내의 적어도 하나의 피어로 패킷을 전송하는 상기 단계는,
    상기 그룹들 중 제1 그룹 내의 제1 피어(538)로 상기 패킷을 전송하는 단계, 및
    상기 패킷을 상기 제1 피어로부터 상기 제1 그룹 내의 복수의 다른 피어들(532, 534, 536) 각각으로 전달하는 단계를 포함하는 것인, 피어-투-피어 협업 시스템을 운영하는 방법.
  12. 제11항에 있어서, 상기 그룹들 각각 내의 적어도 하나의 피어로 패킷을 전송하는 상기 단계는,
    상기 패킷을 서버(560)로 전송하는 단계, 및
    상기 패킷을 상기 그룹들 중 제2 그룹 내의 적어도 하나의 피어(552, 554, 556)로 전달하는 단계를 포함하는 것인, 피어-투-피어 협업 시스템을 운영하는 방법.
  13. 제12항에 있어서, 상기 제1 피어가 그 패킷을 상기 제1 그룹 내의 복수의 다른 피어들 각각으로 전달해야만 한다는 것을 상기 서버로부터 지정하는 단계(541) 를 더 포함하는, 피어-투-피어 협업 시스템을 운영하는 방법.
  14. 제8항에 있어서, 상기 복수의 피어들이 협업 세션에서 통신을 하고,
    복수의 라우팅 테이블들을 유지하는 상기 단계는, 피어가 상기 협업 세션에 들어가거나 그로부터 빠져나올 때(624) 또는 피어들 간의 상호접속이 변할 때, 상기 복수의 라우팅 테이블들을 재작성하는 단계를 포함하는 것인, 피어-투-피어 협업 시스템을 운영하는 방법.
  15. 네트워크에 접속된 컴퓨팅 장치로서,
    상기 컴퓨팅 장치는 사용자 인터페이스를 가지며 피어-투-피어 협업 시스템에서 피어로서 동작하도록 구성되어 있고,
    상기 컴퓨팅 장치는 컴퓨터 실행가능 컴포넌트들을 저장하는 컴퓨터 판독가능 매체를 포함하며,
    상기 컴퓨터 실행가능 컴포넌트들은,
    상기 사용자 인터페이스(332)를 통해 사용자와 상호작용하는 활동 컴포넌트(322) - 상기 활동 컴포넌트는 협업 세션에 있는 복수의 다른 피어들로 전송하기 위한 데이터 변경 명령을 발생하도록 구성되어 있고, 상기 데이터 변경 명령은 사용자와의 상호작용에 기초함 -,
    상기 네트워크를 통한 상기 복수의 피어들 간의 상호접속을 정의하는 정보를 저장하는 라우팅 테이블(324), 및
    복수의 메시지들을 전송함으로써 상기 네트워크를 통해 상기 데이터 변경 명령을 전송하는 통신 컴포넌트(326) - 각각의 메시지는 상기 라우팅 테이블 내의 정보에 기초하여 선택된 주소를 가지며, 상기 메시지들 중 적어도 하나의 메시지가 상기 복수의 피어들 중 적어도 하나의 피어로 직접 어드레싱됨 - 를 포함하는, 네트워크에 접속된 컴퓨팅 장치.
  16. 제15항에 있어서, 상기 라우팅 테이블은 복수의 이웃들(350, 360)로 구성된 상기 정보를 포함하며,
    각각의 이웃은 복수의 피어(352A, 352B, 352C, 352D, 362E, 362F, 362G, 362H)를 포함하고,
    상기 이웃 내의 각각의 피어는 상기 이웃 내의 적어도 하나의 다른 피어와 메시지를 주고 받을 수 있는 것인, 네트워크에 접속된 컴퓨팅 장치.
  17. 제16항에 있어서, 각각의 이웃 내의 상기 피어들은 동일한 NAT(network address translation) 장치(116, 126)의 배후에 있거나 상기 NAT 장치의 배후에 있지 않은 상기 이웃 내의 피어로부터 통과될 수 있는 NAT 장치의 배후에 있는 것인, 네트워크에 접속된 컴퓨팅 장치.
  18. 제17항에 있어서, 상기 통신 컴포넌트는 상기 복수의 메시지들 각각을 상기 복수의 이웃들 각각 내의 피어로 전송하도록 구성되어 있는 것인, 네트워크에 접속 된 컴퓨팅 장치.
  19. 제18항에 있어서, 상기 통신 컴포넌트는 상기 복수의 메시지들의 일부분을 상기 복수의 이웃들 중 적어도 하나의 이웃 내의 피어로 직접 전송하도록 구성되어 있는 것인, 네트워크에 접속된 컴퓨팅 장치.
  20. 제19항에 있어서, 상기 통신 컴포넌트는 상기 복수의 메시지들의 일부분을 중간 장치를 통해 간접적으로 상기 복수의 이웃들 중 적어도 하나의 이웃 내의 피어로 전송하도록 구성되어 있는 것인, 네트워크에 접속된 컴퓨팅 장치.
KR1020097022353A 2007-05-16 2008-04-20 에지 라우팅을 갖는 피어-투-피어 협업 시스템 KR101455434B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/803,800 US8656017B2 (en) 2007-05-16 2007-05-16 Peer-to-peer collaboration system with edge routing
US11/803,800 2007-05-16
PCT/US2008/060957 WO2008144144A1 (en) 2007-05-16 2008-04-20 Peer-to-peer collaboration system with edge routing

Publications (2)

Publication Number Publication Date
KR20100019420A true KR20100019420A (ko) 2010-02-18
KR101455434B1 KR101455434B1 (ko) 2014-10-27

Family

ID=40028631

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097022353A KR101455434B1 (ko) 2007-05-16 2008-04-20 에지 라우팅을 갖는 피어-투-피어 협업 시스템

Country Status (7)

Country Link
US (1) US8656017B2 (ko)
EP (1) EP2153337B1 (ko)
JP (1) JP2010527561A (ko)
KR (1) KR101455434B1 (ko)
CN (1) CN101681337A (ko)
MX (1) MX2009012073A (ko)
WO (1) WO2008144144A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180023653A (ko) * 2016-08-26 2018-03-07 홍익대학교 산학협력단 P2p 네트워크 기반 피어 관리 방법 및 피어 관리 장치

Families Citing this family (190)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8065418B1 (en) 2004-02-02 2011-11-22 Apple Inc. NAT traversal for media conferencing
DE102004043969A1 (de) * 2004-09-11 2006-03-16 Deutsche Thomson-Brandt Gmbh Netzwerkverbindungsschalteinheit
JP4847403B2 (ja) * 2007-04-20 2011-12-28 パナソニック株式会社 Ip通信装置及びip通信装置によるnat種別の判定方法
US8631155B2 (en) * 2007-06-29 2014-01-14 Microsoft Corporation Network address translation traversals for peer-to-peer networks
TWI363537B (en) * 2007-07-27 2012-05-01 Qubes Inc Method for establishing network connection and mobile communication system thereof
US9178957B2 (en) * 2007-09-27 2015-11-03 Adobe Systems Incorporated Application and data agnostic collaboration services
US9420014B2 (en) 2007-11-15 2016-08-16 Adobe Systems Incorporated Saving state of a collaborative session in an editable format
KR101422213B1 (ko) * 2007-11-23 2014-07-22 삼성전자 주식회사 단말의 능력을 기초로 역할을 설정하는 장치 및 그 방법
WO2009088513A1 (en) * 2008-01-10 2009-07-16 Hewlett-Packard Development Company, L.P. Multiway peer-to-peer media streaming
JP5423401B2 (ja) * 2008-02-22 2014-02-19 日本電気株式会社 情報処理装置、情報処理システム、設定プログラム送信方法及びサーバ設定プログラム
CN101557388B (zh) * 2008-04-11 2012-05-23 中国科学院声学研究所 一种基于UPnP和STUN技术相结合的NAT穿越方法
KR101467512B1 (ko) * 2008-04-30 2014-12-02 삼성전자주식회사 피투피 네트워크 시스템 및 그의 운용 방법
KR101472936B1 (ko) * 2008-04-30 2014-12-17 삼성전자주식회사 피투피 네트워크 시스템 및 그의 지역 기반 운용 방법
US9456054B2 (en) 2008-05-16 2016-09-27 Palo Alto Research Center Incorporated Controlling the spread of interests and content in a content centric network
US20090327187A1 (en) * 2008-06-25 2009-12-31 Broadon Communications Corp. Connectivity in a peer network
US8407283B2 (en) * 2008-07-02 2013-03-26 Thomson Licensing Device and method for disseminating content data between peers in a P2P mode, by using a bipartite peer overlay
EP2216957A1 (en) * 2009-02-06 2010-08-11 Thomson Licensing Device and method for disseminating content data between peers in a P2P mode, by using a bipartite peer overlay
US8631094B1 (en) * 2008-08-08 2014-01-14 Google Inc. Distributed parallel determination of single and multiple source shortest paths in large directed graphs
US8064362B2 (en) * 2008-08-21 2011-11-22 Cisco Technology, Inc. Wide area network optimization proxy routing protocol
US9294291B2 (en) * 2008-11-12 2016-03-22 Adobe Systems Incorporated Adaptive connectivity in network-based collaboration
US7962627B2 (en) * 2008-12-04 2011-06-14 Microsoft Corporation Peer-to-peer network address translator (NAT) traversal techniques
US8924513B2 (en) * 2009-07-08 2014-12-30 International Business Machines Corporation Storage system
US8825820B2 (en) * 2009-09-18 2014-09-02 At&T Intellectual Property I, Lp Network aware application management
JP5273002B2 (ja) * 2009-09-30 2013-08-28 ブラザー工業株式会社 通信システム、通信制御装置、通信制御方法、及び通信制御プログラム
US8700780B2 (en) * 2009-10-15 2014-04-15 Qualcomm Incorporated Group owner selection with crossing requests
US8923293B2 (en) 2009-10-21 2014-12-30 Palo Alto Research Center Incorporated Adaptive multi-interface use for content networking
US8438294B2 (en) * 2010-04-07 2013-05-07 Apple Inc. Application programming interface, system, and method for collaborative online applications
US9118733B2 (en) * 2010-05-21 2015-08-25 Skype Multilevel routing
CN102299975B (zh) * 2010-06-28 2014-02-26 杭州华三通信技术有限公司 自适应多层nat环境的nat设备调整方法和系统
EP2405622B1 (en) 2010-07-08 2014-05-14 Mobile Imaging in Sweden AB Device communication
US8606884B2 (en) * 2010-09-21 2013-12-10 Taesung Kim System and method for web hosting behind NATs
US8934492B1 (en) 2010-09-28 2015-01-13 Adtran, Inc. Network systems and methods for efficiently dropping packets carried by virtual circuits
US9264459B2 (en) * 2010-12-16 2016-02-16 Palo Alto Research Center Incorporated SIP-based custodian routing in content-centric networks
US9712340B2 (en) * 2011-02-28 2017-07-18 Red Hat, Inc. Using a shared data store for peer discovery
US9503223B2 (en) * 2011-03-04 2016-11-22 Blackberry Limited Controlling network device behavior
CN103037448B (zh) 2011-09-30 2015-05-27 华为技术有限公司 内容发布方法和用户设备
CN103095664B (zh) * 2011-10-31 2015-12-16 国际商业机器公司 Ip多媒体会话建立方法和系统
TWI448129B (zh) * 2011-11-09 2014-08-01 D Link Corp According to the behavior of the network address translator to establish a transmission control protocol connection method
KR20130052240A (ko) * 2011-11-11 2013-05-22 삼성전자주식회사 네트워크 주소 변환기 통과 기법을 프로비저닝하기 위한 방법 및 장치
EP3800854B1 (en) * 2012-02-14 2024-06-12 INTEL Corporation Peer to peer networking and sharing systems and methods
JP5888405B2 (ja) * 2012-03-28 2016-03-22 ソニー株式会社 情報処理装置、情報処理方法及びプログラム
US8650309B2 (en) * 2012-06-01 2014-02-11 Cisco Technology, Inc. Cascading architecture for audio and video streams
US9280546B2 (en) 2012-10-31 2016-03-08 Palo Alto Research Center Incorporated System and method for accessing digital content using a location-independent name
US9400800B2 (en) 2012-11-19 2016-07-26 Palo Alto Research Center Incorporated Data transport by named content synchronization
US10430839B2 (en) 2012-12-12 2019-10-01 Cisco Technology, Inc. Distributed advertisement insertion in content-centric networks
US9978025B2 (en) 2013-03-20 2018-05-22 Cisco Technology, Inc. Ordered-element naming for name-based packet forwarding
TWI523456B (zh) * 2013-04-24 2016-02-21 仁寶電腦工業股份有限公司 網路通訊之連線方法與管理伺服器
US9935791B2 (en) 2013-05-20 2018-04-03 Cisco Technology, Inc. Method and system for name resolution across heterogeneous architectures
CN104184755A (zh) * 2013-05-21 2014-12-03 华为终端有限公司 一种网页实时通信方法、系统及终端
US9185120B2 (en) 2013-05-23 2015-11-10 Palo Alto Research Center Incorporated Method and system for mitigating interest flooding attacks in content-centric networks
US9852230B2 (en) 2013-06-29 2017-12-26 Google Llc Asynchronous message passing for large graph clustering
US9596295B2 (en) 2013-06-29 2017-03-14 Google Inc. Computing connected components in large graphs
US9444722B2 (en) 2013-08-01 2016-09-13 Palo Alto Research Center Incorporated Method and apparatus for configuring routing paths in a custodian-based routing architecture
US9407549B2 (en) 2013-10-29 2016-08-02 Palo Alto Research Center Incorporated System and method for hash-based forwarding of packets with hierarchically structured variable-length identifiers
US9282050B2 (en) 2013-10-30 2016-03-08 Palo Alto Research Center Incorporated System and method for minimum path MTU discovery in content centric networks
US9276840B2 (en) 2013-10-30 2016-03-01 Palo Alto Research Center Incorporated Interest messages with a payload for a named data network
US9401864B2 (en) 2013-10-31 2016-07-26 Palo Alto Research Center Incorporated Express header for packets with hierarchically structured variable-length identifiers
US9311377B2 (en) 2013-11-13 2016-04-12 Palo Alto Research Center Incorporated Method and apparatus for performing server handoff in a name-based content distribution system
US10101801B2 (en) 2013-11-13 2018-10-16 Cisco Technology, Inc. Method and apparatus for prefetching content in a data stream
US10129365B2 (en) 2013-11-13 2018-11-13 Cisco Technology, Inc. Method and apparatus for pre-fetching remote content based on static and dynamic recommendations
US10089655B2 (en) 2013-11-27 2018-10-02 Cisco Technology, Inc. Method and apparatus for scalable data broadcasting
US9503358B2 (en) 2013-12-05 2016-11-22 Palo Alto Research Center Incorporated Distance-based routing in an information-centric network
US9515995B2 (en) * 2013-12-27 2016-12-06 Futurewei Technologies, Inc. Method and apparatus for network address translation and firewall traversal
US9379979B2 (en) 2014-01-14 2016-06-28 Palo Alto Research Center Incorporated Method and apparatus for establishing a virtual interface for a set of mutual-listener devices
US10098051B2 (en) 2014-01-22 2018-10-09 Cisco Technology, Inc. Gateways and routing in software-defined manets
US10172068B2 (en) 2014-01-22 2019-01-01 Cisco Technology, Inc. Service-oriented routing in software-defined MANETs
US9374304B2 (en) 2014-01-24 2016-06-21 Palo Alto Research Center Incorporated End-to end route tracing over a named-data network
US9954678B2 (en) 2014-02-06 2018-04-24 Cisco Technology, Inc. Content-based transport security
US9531679B2 (en) 2014-02-06 2016-12-27 Palo Alto Research Center Incorporated Content-based transport security for distributed producers
US9678998B2 (en) 2014-02-28 2017-06-13 Cisco Technology, Inc. Content name resolution for information centric networking
US10089651B2 (en) 2014-03-03 2018-10-02 Cisco Technology, Inc. Method and apparatus for streaming advertisements in a scalable data broadcasting system
US9836540B2 (en) 2014-03-04 2017-12-05 Cisco Technology, Inc. System and method for direct storage access in a content-centric network
US9473405B2 (en) 2014-03-10 2016-10-18 Palo Alto Research Center Incorporated Concurrent hashes and sub-hashes on data streams
US9626413B2 (en) 2014-03-10 2017-04-18 Cisco Systems, Inc. System and method for ranking content popularity in a content-centric network
US9391896B2 (en) 2014-03-10 2016-07-12 Palo Alto Research Center Incorporated System and method for packet forwarding using a conjunctive normal form strategy in a content-centric network
US9407432B2 (en) 2014-03-19 2016-08-02 Palo Alto Research Center Incorporated System and method for efficient and secure distribution of digital content
US9916601B2 (en) 2014-03-21 2018-03-13 Cisco Technology, Inc. Marketplace for presenting advertisements in a scalable data broadcasting system
US9363179B2 (en) 2014-03-26 2016-06-07 Palo Alto Research Center Incorporated Multi-publisher routing protocol for named data networks
US9363086B2 (en) 2014-03-31 2016-06-07 Palo Alto Research Center Incorporated Aggregate signing of data in content centric networking
US9716622B2 (en) 2014-04-01 2017-07-25 Cisco Technology, Inc. System and method for dynamic name configuration in content-centric networks
US9390289B2 (en) 2014-04-07 2016-07-12 Palo Alto Research Center Incorporated Secure collection synchronization using matched network names
US9473576B2 (en) 2014-04-07 2016-10-18 Palo Alto Research Center Incorporated Service discovery using collection synchronization with exact names
US10075521B2 (en) 2014-04-07 2018-09-11 Cisco Technology, Inc. Collection synchronization using equality matched network names
US9451032B2 (en) 2014-04-10 2016-09-20 Palo Alto Research Center Incorporated System and method for simple service discovery in content-centric networks
US9203885B2 (en) 2014-04-28 2015-12-01 Palo Alto Research Center Incorporated Method and apparatus for exchanging bidirectional streams over a content centric network
US9992281B2 (en) 2014-05-01 2018-06-05 Cisco Technology, Inc. Accountable content stores for information centric networks
US9609014B2 (en) 2014-05-22 2017-03-28 Cisco Systems, Inc. Method and apparatus for preventing insertion of malicious content at a named data network router
US9455835B2 (en) 2014-05-23 2016-09-27 Palo Alto Research Center Incorporated System and method for circular link resolution with hash-based names in content-centric networks
US9276751B2 (en) 2014-05-28 2016-03-01 Palo Alto Research Center Incorporated System and method for circular link resolution with computable hash-based names in content-centric networks
US9467377B2 (en) 2014-06-19 2016-10-11 Palo Alto Research Center Incorporated Associating consumer states with interests in a content-centric network
US9537719B2 (en) 2014-06-19 2017-01-03 Palo Alto Research Center Incorporated Method and apparatus for deploying a minimal-cost CCN topology
US9516144B2 (en) 2014-06-19 2016-12-06 Palo Alto Research Center Incorporated Cut-through forwarding of CCNx message fragments with IP encapsulation
US9426113B2 (en) 2014-06-30 2016-08-23 Palo Alto Research Center Incorporated System and method for managing devices over a content centric network
US9699198B2 (en) 2014-07-07 2017-07-04 Cisco Technology, Inc. System and method for parallel secure content bootstrapping in content-centric networks
US9621354B2 (en) 2014-07-17 2017-04-11 Cisco Systems, Inc. Reconstructable content objects
US9959156B2 (en) 2014-07-17 2018-05-01 Cisco Technology, Inc. Interest return control message
US9590887B2 (en) 2014-07-18 2017-03-07 Cisco Systems, Inc. Method and system for keeping interest alive in a content centric network
US9729616B2 (en) 2014-07-18 2017-08-08 Cisco Technology, Inc. Reputation-based strategy for forwarding and responding to interests over a content centric network
US9535968B2 (en) 2014-07-21 2017-01-03 Palo Alto Research Center Incorporated System for distributing nameless objects using self-certifying names
US9882964B2 (en) 2014-08-08 2018-01-30 Cisco Technology, Inc. Explicit strategy feedback in name-based forwarding
US9729662B2 (en) 2014-08-11 2017-08-08 Cisco Technology, Inc. Probabilistic lazy-forwarding technique without validation in a content centric network
US9503365B2 (en) 2014-08-11 2016-11-22 Palo Alto Research Center Incorporated Reputation-based instruction processing over an information centric network
US9391777B2 (en) 2014-08-15 2016-07-12 Palo Alto Research Center Incorporated System and method for performing key resolution over a content centric network
US9467492B2 (en) 2014-08-19 2016-10-11 Palo Alto Research Center Incorporated System and method for reconstructable all-in-one content stream
US9800637B2 (en) 2014-08-19 2017-10-24 Cisco Technology, Inc. System and method for all-in-one content stream in content-centric networks
US9497282B2 (en) 2014-08-27 2016-11-15 Palo Alto Research Center Incorporated Network coding for content-centric network
US10204013B2 (en) 2014-09-03 2019-02-12 Cisco Technology, Inc. System and method for maintaining a distributed and fault-tolerant state over an information centric network
US9553812B2 (en) 2014-09-09 2017-01-24 Palo Alto Research Center Incorporated Interest keep alives at intermediate routers in a CCN
US10069933B2 (en) 2014-10-23 2018-09-04 Cisco Technology, Inc. System and method for creating virtual interfaces based on network characteristics
US9590948B2 (en) 2014-12-15 2017-03-07 Cisco Systems, Inc. CCN routing using hardware-assisted hash tables
US9536059B2 (en) 2014-12-15 2017-01-03 Palo Alto Research Center Incorporated Method and system for verifying renamed content using manifests in a content centric network
US10237189B2 (en) 2014-12-16 2019-03-19 Cisco Technology, Inc. System and method for distance-based interest forwarding
US9846881B2 (en) 2014-12-19 2017-12-19 Palo Alto Research Center Incorporated Frugal user engagement help systems
US9585159B2 (en) * 2014-12-19 2017-02-28 Qualcomm Incorporated Opportunistic dual-band relay
US10681145B1 (en) * 2014-12-22 2020-06-09 Chelsio Communications, Inc. Replication in a protocol offload network interface controller
US10003520B2 (en) 2014-12-22 2018-06-19 Cisco Technology, Inc. System and method for efficient name-based content routing using link-state information in information-centric networks
US9473475B2 (en) 2014-12-22 2016-10-18 Palo Alto Research Center Incorporated Low-cost authenticated signing delegation in content centric networking
US9660825B2 (en) 2014-12-24 2017-05-23 Cisco Technology, Inc. System and method for multi-source multicasting in content-centric networks
US9602596B2 (en) 2015-01-12 2017-03-21 Cisco Systems, Inc. Peer-to-peer sharing in a content centric network
US9832291B2 (en) 2015-01-12 2017-11-28 Cisco Technology, Inc. Auto-configurable transport stack
US9916457B2 (en) 2015-01-12 2018-03-13 Cisco Technology, Inc. Decoupled name security binding for CCN objects
US9954795B2 (en) 2015-01-12 2018-04-24 Cisco Technology, Inc. Resource allocation using CCN manifests
US9946743B2 (en) 2015-01-12 2018-04-17 Cisco Technology, Inc. Order encoded manifests in a content centric network
US9462006B2 (en) 2015-01-21 2016-10-04 Palo Alto Research Center Incorporated Network-layer application-specific trust model
US9800659B2 (en) * 2015-02-02 2017-10-24 International Business Machines Corporation Enterprise peer-to-peer storage and method of managing peer network storage
US9552493B2 (en) 2015-02-03 2017-01-24 Palo Alto Research Center Incorporated Access control framework for information centric networking
US10333840B2 (en) 2015-02-06 2019-06-25 Cisco Technology, Inc. System and method for on-demand content exchange with adaptive naming in information-centric networks
US10075401B2 (en) 2015-03-18 2018-09-11 Cisco Technology, Inc. Pending interest table behavior
CA2980953A1 (en) * 2015-03-30 2016-10-06 Irdeto B.V. Monitoring a peer-to-peer network
US10116605B2 (en) 2015-06-22 2018-10-30 Cisco Technology, Inc. Transport stack name scheme and identity management
US10075402B2 (en) 2015-06-24 2018-09-11 Cisco Technology, Inc. Flexible command and control in content centric networks
US10701038B2 (en) 2015-07-27 2020-06-30 Cisco Technology, Inc. Content negotiation in a content centric network
US9986034B2 (en) 2015-08-03 2018-05-29 Cisco Technology, Inc. Transferring state in content centric network stacks
US10610144B2 (en) 2015-08-19 2020-04-07 Palo Alto Research Center Incorporated Interactive remote patient monitoring and condition management intervention system
US9832123B2 (en) 2015-09-11 2017-11-28 Cisco Technology, Inc. Network named fragments in a content centric network
US10355999B2 (en) 2015-09-23 2019-07-16 Cisco Technology, Inc. Flow control with network named fragments
US10313227B2 (en) 2015-09-24 2019-06-04 Cisco Technology, Inc. System and method for eliminating undetected interest looping in information-centric networks
US9977809B2 (en) 2015-09-24 2018-05-22 Cisco Technology, Inc. Information and data framework in a content centric network
US10454820B2 (en) 2015-09-29 2019-10-22 Cisco Technology, Inc. System and method for stateless information-centric networking
US10263965B2 (en) 2015-10-16 2019-04-16 Cisco Technology, Inc. Encrypted CCNx
US9794238B2 (en) 2015-10-29 2017-10-17 Cisco Technology, Inc. System for key exchange in a content centric network
US9807205B2 (en) 2015-11-02 2017-10-31 Cisco Technology, Inc. Header compression for CCN messages using dictionary
US10009446B2 (en) 2015-11-02 2018-06-26 Cisco Technology, Inc. Header compression for CCN messages using dictionary learning
US10021222B2 (en) 2015-11-04 2018-07-10 Cisco Technology, Inc. Bit-aligned header compression for CCN messages using dictionary
US10097521B2 (en) 2015-11-20 2018-10-09 Cisco Technology, Inc. Transparent encryption in a content centric network
US9912776B2 (en) 2015-12-02 2018-03-06 Cisco Technology, Inc. Explicit content deletion commands in a content centric network
US10097346B2 (en) 2015-12-09 2018-10-09 Cisco Technology, Inc. Key catalogs in a content centric network
US10078062B2 (en) 2015-12-15 2018-09-18 Palo Alto Research Center Incorporated Device health estimation by combining contextual information with sensor data
US10257271B2 (en) 2016-01-11 2019-04-09 Cisco Technology, Inc. Chandra-Toueg consensus in a content centric network
US9949301B2 (en) 2016-01-20 2018-04-17 Palo Alto Research Center Incorporated Methods for fast, secure and privacy-friendly internet connection discovery in wireless networks
US10305864B2 (en) 2016-01-25 2019-05-28 Cisco Technology, Inc. Method and system for interest encryption in a content centric network
US10043016B2 (en) 2016-02-29 2018-08-07 Cisco Technology, Inc. Method and system for name encryption agreement in a content centric network
US10742596B2 (en) 2016-03-04 2020-08-11 Cisco Technology, Inc. Method and system for reducing a collision probability of hash-based names using a publisher identifier
US10038633B2 (en) 2016-03-04 2018-07-31 Cisco Technology, Inc. Protocol to query for historical network information in a content centric network
US10051071B2 (en) 2016-03-04 2018-08-14 Cisco Technology, Inc. Method and system for collecting historical network information in a content centric network
US10003507B2 (en) 2016-03-04 2018-06-19 Cisco Technology, Inc. Transport session state protocol
US9832116B2 (en) 2016-03-14 2017-11-28 Cisco Technology, Inc. Adjusting entries in a forwarding information base in a content centric network
US10212196B2 (en) 2016-03-16 2019-02-19 Cisco Technology, Inc. Interface discovery and authentication in a name-based network
US11436656B2 (en) 2016-03-18 2022-09-06 Palo Alto Research Center Incorporated System and method for a real-time egocentric collaborative filter on large datasets
US10067948B2 (en) 2016-03-18 2018-09-04 Cisco Technology, Inc. Data deduping in content centric networking manifests
CN105847343B (zh) * 2016-03-21 2019-01-25 福建星网锐捷通讯股份有限公司 用于点对点传输的公网信息探测方法、装置及系统
US10091330B2 (en) 2016-03-23 2018-10-02 Cisco Technology, Inc. Interest scheduling by an information and data framework in a content centric network
US10033639B2 (en) 2016-03-25 2018-07-24 Cisco Technology, Inc. System and method for routing packets in a content centric network using anonymous datagrams
CN105743739A (zh) * 2016-03-28 2016-07-06 Tcl集团股份有限公司 对称式nat的端口预测方法、探测服务器及受测端设备
US10320760B2 (en) 2016-04-01 2019-06-11 Cisco Technology, Inc. Method and system for mutating and caching content in a content centric network
US9930146B2 (en) 2016-04-04 2018-03-27 Cisco Technology, Inc. System and method for compressing content centric networking messages
US10425503B2 (en) 2016-04-07 2019-09-24 Cisco Technology, Inc. Shared pending interest table in a content centric network
US10027578B2 (en) 2016-04-11 2018-07-17 Cisco Technology, Inc. Method and system for routable prefix queries in a content centric network
US10404450B2 (en) 2016-05-02 2019-09-03 Cisco Technology, Inc. Schematized access control in a content centric network
US10320675B2 (en) 2016-05-04 2019-06-11 Cisco Technology, Inc. System and method for routing packets in a stateless content centric network
US10547589B2 (en) 2016-05-09 2020-01-28 Cisco Technology, Inc. System for implementing a small computer systems interface protocol over a content centric network
US10084764B2 (en) 2016-05-13 2018-09-25 Cisco Technology, Inc. System for a secure encryption proxy in a content centric network
US10063414B2 (en) 2016-05-13 2018-08-28 Cisco Technology, Inc. Updating a transport stack in a content centric network
US10103989B2 (en) 2016-06-13 2018-10-16 Cisco Technology, Inc. Content object return messages in a content centric network
US10305865B2 (en) 2016-06-21 2019-05-28 Cisco Technology, Inc. Permutation-based content encryption with manifests in a content centric network
US10148572B2 (en) 2016-06-27 2018-12-04 Cisco Technology, Inc. Method and system for interest groups in a content centric network
US10009266B2 (en) 2016-07-05 2018-06-26 Cisco Technology, Inc. Method and system for reference counted pending interest tables in a content centric network
US9992097B2 (en) 2016-07-11 2018-06-05 Cisco Technology, Inc. System and method for piggybacking routing information in interests in a content centric network
US10122624B2 (en) 2016-07-25 2018-11-06 Cisco Technology, Inc. System and method for ephemeral entries in a forwarding information base in a content centric network
US10069729B2 (en) 2016-08-08 2018-09-04 Cisco Technology, Inc. System and method for throttling traffic based on a forwarding information base in a content centric network
US10956412B2 (en) 2016-08-09 2021-03-23 Cisco Technology, Inc. Method and system for conjunctive normal form attribute matching in a content centric network
US10033642B2 (en) 2016-09-19 2018-07-24 Cisco Technology, Inc. System and method for making optimal routing decisions based on device-specific parameters in a content centric network
US10212248B2 (en) 2016-10-03 2019-02-19 Cisco Technology, Inc. Cache management on high availability routers in a content centric network
US10447805B2 (en) 2016-10-10 2019-10-15 Cisco Technology, Inc. Distributed consensus in a content centric network
US10135948B2 (en) 2016-10-31 2018-11-20 Cisco Technology, Inc. System and method for process migration in a content centric network
US10243851B2 (en) 2016-11-21 2019-03-26 Cisco Technology, Inc. System and method for forwarder connection information in a content centric network
WO2018144017A1 (en) * 2017-02-03 2018-08-09 Hewlett-Packard Development Company, L.P. Sub-groups of remote computing devices with relay devices
KR101962022B1 (ko) 2017-07-18 2019-03-25 주식회사 에스원 에지 서버를 활용한 피-투-피 접근 시스템 및 그 방법
WO2019232750A1 (zh) * 2018-06-07 2019-12-12 Guan Chi 一种网络通信方法、对等体及系统
CN110086884A (zh) * 2019-05-09 2019-08-02 俞力奇 一种主机连接通讯系统及连接方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807165B2 (en) * 2000-11-08 2004-10-19 Meshnetworks, Inc. Time division protocol for an ad-hoc, peer-to-peer radio network having coordinating channel access to shared parallel data channels with separate reservation channel
WO2002057917A2 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
US7151769B2 (en) * 2001-03-22 2006-12-19 Meshnetworks, Inc. Prioritized-routing for an ad-hoc, peer-to-peer, mobile radio access system based on battery-power levels and type of service
WO2003027810A2 (en) * 2001-09-28 2003-04-03 Acs State & Local Solutions, Inc. Apparatus and methods for providing a national portal for electronic services
US7028183B2 (en) * 2001-11-13 2006-04-11 Symantec Corporation Enabling secure communication in a clustered or distributed architecture
US7079520B2 (en) * 2001-12-28 2006-07-18 Cisco Technology, Inc. Methods and apparatus for implementing NAT traversal in mobile IP
US7092391B2 (en) * 2002-02-26 2006-08-15 Skyley Networks, Inc. Multi-hop peer-to-peer telecommunications method in a wireless network, radio terminal telecommunications method, and medium recording a program for causing a processor to implement the radio terminal telecommunications method
US7803052B2 (en) * 2002-06-28 2010-09-28 Microsoft Corporation Discovery and distribution of game session information
US8224985B2 (en) * 2005-10-04 2012-07-17 Sony Computer Entertainment Inc. Peer-to-peer communication traversing symmetric network address translators
US7213047B2 (en) * 2002-10-31 2007-05-01 Sun Microsystems, Inc. Peer trust evaluation using mobile agents in peer-to-peer networks
US7454520B2 (en) * 2002-11-20 2008-11-18 Hewlett-Packard Development Company, L.P. Method and apparatus for generating a routing table
FR2853187B1 (fr) * 2003-03-28 2006-01-13 At & T Corp Systeme permettant a toute application reseau de fonctionner de facon transparente a travers un dispositif de traduction d'adresse de reseau
US7949785B2 (en) * 2003-03-31 2011-05-24 Inpro Network Facility, Llc Secure virtual community network system
US20040249973A1 (en) * 2003-03-31 2004-12-09 Alkhatib Hasan S. Group agent
US7656870B2 (en) * 2004-06-29 2010-02-02 Damaka, Inc. System and method for peer-to-peer hybrid communications
US7706401B2 (en) * 2004-08-13 2010-04-27 Verizon Business Global Llc Method and system for providing interdomain traversal in support of packetized voice transmissions
EP1646205A1 (en) * 2004-10-08 2006-04-12 Deutsche Thomson-Brandt Gmbh Method for establishing communication between peer-groups
US7606187B2 (en) * 2004-10-28 2009-10-20 Meshnetworks, Inc. System and method to support multicast routing in large scale wireless mesh networks
US7639681B2 (en) * 2004-11-23 2009-12-29 Microsoft Corporation System and method for a distributed server for peer-to-peer networks
US7443849B2 (en) * 2004-12-30 2008-10-28 Cisco Technology, Inc. Mechanisms for detection of non-supporting NAT traversal boxes in the path
US7912046B2 (en) * 2005-02-11 2011-03-22 Microsoft Corporation Automated NAT traversal for peer-to-peer networks
US7646775B2 (en) * 2005-03-08 2010-01-12 Leaf Networks, Llc Protocol and system for firewall and NAT traversal for TCP connections
US7983254B2 (en) 2005-07-20 2011-07-19 Verizon Business Global Llc Method and system for securing real-time media streams in support of interdomain traversal
US8024727B2 (en) * 2006-06-15 2011-09-20 Microsoft Corporation Enhancing or replacing host operating system functionality by leveraging guest operating system functionality

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180023653A (ko) * 2016-08-26 2018-03-07 홍익대학교 산학협력단 P2p 네트워크 기반 피어 관리 방법 및 피어 관리 장치

Also Published As

Publication number Publication date
KR101455434B1 (ko) 2014-10-27
MX2009012073A (es) 2009-11-19
EP2153337A1 (en) 2010-02-17
EP2153337A4 (en) 2015-02-25
US20080288580A1 (en) 2008-11-20
CN101681337A (zh) 2010-03-24
WO2008144144A1 (en) 2008-11-27
JP2010527561A (ja) 2010-08-12
EP2153337B1 (en) 2020-07-29
US8656017B2 (en) 2014-02-18

Similar Documents

Publication Publication Date Title
KR101455434B1 (ko) 에지 라우팅을 갖는 피어-투-피어 협업 시스템
Scharf et al. Multipath TCP (MPTCP) application interface considerations
TWI491229B (zh) 基於網路位址轉譯類型之順暢的主機遷移
US8457014B2 (en) Method for configuring control tunnel and direct tunnel in IPv4 network-based IPv6 service providing system
CA2699314C (en) Failover in a host concurrently supporting multiple virtual ip addresses across multiple adapters
US9578126B1 (en) System and method for automatically discovering wide area network optimized routes and devices
US10212126B2 (en) System for mediating connection
CN104539531A (zh) 数据传输方法及装置
US20220261275A1 (en) Self-evolving microservices
Lin et al. WEBridge: west–east bridge for distributed heterogeneous SDN NOSes peering
CN104038427A (zh) 路由更新方法和路由更新装置
Subratie et al. EdgeVPN: Self-organizing layer-2 virtual edge networks
US9413653B2 (en) Communication system and server
JP4425257B2 (ja) 通信装置、通信制御方法、及び通信制御プログラム
CN112019641B (zh) 数据传输方法和装置
JP5580766B2 (ja) サーバ装置、パケット伝送システム、パケット伝送方法及びプログラム
Ganguly et al. Improving peer connectivity in wide-area overlays of virtual workstations
WO2008069504A1 (en) Method for configuring control tunnel and direct tunnel in ipv4 network-based ipv6 service providing system
US9923866B2 (en) Communication system, terminal apparatus and server
US11683225B2 (en) Relay device and non-transitory computer readable medium
Csernai et al. Incrementally upgradable data center architecture using hyperbolic tessellations
KR20190009068A (ko) 에지 서버를 활용한 피-투-피 접근 시스템 및 그 방법
Martin et al. Radar: Ring-based adaptive discovery of active neighbour routers
Goyal et al. Global data plane router on click
Lee Towards a Common System Architecture for Dynamically Deploying Network Services in Routers and End Hosts

Legal Events

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

Payment date: 20170919

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 5