KR20190030653A - 네트워크 디바이스 간에 네트워크 클러스터를 구축하기 위한 방법 - Google Patents

네트워크 디바이스 간에 네트워크 클러스터를 구축하기 위한 방법 Download PDF

Info

Publication number
KR20190030653A
KR20190030653A KR1020187036962A KR20187036962A KR20190030653A KR 20190030653 A KR20190030653 A KR 20190030653A KR 1020187036962 A KR1020187036962 A KR 1020187036962A KR 20187036962 A KR20187036962 A KR 20187036962A KR 20190030653 A KR20190030653 A KR 20190030653A
Authority
KR
South Korea
Prior art keywords
network
peripheral
access point
peripheral device
list
Prior art date
Application number
KR1020187036962A
Other languages
English (en)
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 KR20190030653A publication Critical patent/KR20190030653A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W8/00Network data management
    • H04W8/005Discovery of network devices, e.g. terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/18Self-organising networks, e.g. ad-hoc networks or sensor networks
    • H04W84/20Master-slave selection or change arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/24Connectivity information management, e.g. connectivity discovery or connectivity update
    • H04W40/246Connectivity information discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W40/00Communication routing or communication path finding
    • H04W40/24Connectivity information management, e.g. connectivity discovery or connectivity update
    • H04W40/32Connectivity information management, e.g. connectivity discovery or connectivity update for defining a routing cluster membership
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W76/00Connection management
    • H04W76/10Connection setup
    • H04W76/11Allocation or use of connection identifiers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W88/00Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
    • H04W88/02Terminal devices
    • H04W88/04Terminal devices adapted for relaying to or from another terminal or user
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W48/00Access restriction; Network selection; Access point selection
    • H04W48/16Discovering, processing access restriction or access information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W84/00Network topologies
    • H04W84/02Hierarchically pre-organised networks, e.g. paging networks, cellular networks, WLAN [Wireless Local Area Network] or WLL [Wireless Local Loop]
    • H04W84/10Small scale networks; Flat hierarchical networks
    • H04W84/12WLAN [Wireless Local Area Networks]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

액세스 포인트 모드 및 클라이언트 모드로 설정될 수 있는 무선 라디오를 갖는 복수의 디바이스 간에 네트워크 클러스터를 구축하기 위한 방법은 제 1 디바이스가 클라이언트 모드로 설정될 수 있게 하는 단계 및 다른 디바이스가 네트워크명과 관련된 네트워킹 서비스를 현재 제공하지 않는다는 상기 제 1 디바이스에 의한 판단에 응답하여, 상기 제 1 디바이스가 액세스 포인트 모드로 설정될 수 있게 하는 단계를 포함한다. 클라이언트 모드로 설정된 제 2 디바이스로부터 상기 제 1 디바이스에 접속 요청을 수신한데 응답하여, 상기 방법은 접속을 수락하는 단계, 상기 제 2 디바이스와 관련된 사용자 식별자를 판단하는 단계, 및 상기 제 1 디바이스 상의 접속 리스트에 엔트리를 추가하는 단계를 포함한다. 상기 방법은 상기 제 2 디바이스의 사용자 식별자에 해당하는 목적지를 갖는 상기 제 1 디바이스에 하나 이상의 데이터 패킷을 수신한데 응답하여, 데이터 패킷을 상기 제 2 디바이스에 전송하는 단계를 포함한다.

Description

네트워크 디바이스 간에 네트워크 클러스터를 구축하기 위한 방법
본 발명은 컴퓨터 디바이스들의 네트워킹에 관한 것으로, 보다 상세하게는 복수의 디바이스들 간에 네트워크 클러스터를 구축하는 것에 관한 것이다.
무선 메쉬 네트워크가 복수의 컴퓨터 디바이스들 사이의 피어-기반 통신 인프라를 제공하기 위해 구축될 수 있다. 메쉬 네트워크를 구현하는 한 가지 이점은 하나의 무선 액세스 포인트를 사용하는 것보다 더 광범위한 네트워크 범위가 제공될 수 있다는 것이다. 그러나, 메시 네트워크는 액세스 포인트 모드와 클라이언트 모드에서 동작 간의 전환시 공급자가 부여한 제한으로 인해 스마트폰과 같은 모바일 디바이스들에서 널리 채택되지 못했다.
복수의 무선 디바이스들 간의 피어-기반 네트워크를 구축하는 방법에 대한 필요성이 여전히 있다.
하나의 개시된 태양에 따르면, 각각이 적어도 액세스 포인트 모드 및 클라이언트 모드로 설정될 수 있는 무선 라디오를 갖는 복수의 디바이스 간에, 관련된 네트워크명을 갖는 네트워크 클러스터를 구축하기 위한 방법이 제공된다. 상기 방법은 상기 복수의 디바이스 중 제 1 디바이스가 클라이언트 모드로 설정되게 하는 단계를 포함한다. 상기 방법은, 상기 네트워크명과 관련된 네트워킹 서비스가 복수의 디바이스 중 다른 디바이스에 의해 제공되지 않는다는 상기 제 1 디바이스에 의한 판단에 응답하여, 제 1 디바이스가 액세스 포인트 모드로 설정되게 하는 단계와, 네트워크 클러스터와 관련된 네트워크명을 네트워킹 서비스에 제공하는 단계를 더 포함한다. 상기 방법은 또한 클라이언트 모드로 설정된 제 2 디바이스로부터 제 1 디바이스에 접속 요청을 수신한 데 응답하여, 접속을 수락하는 단계, 제 2 디바이스와 관련된 사용자 식별자를 판단하는 단계, 및 제 1 디바이스 상의 메모리에 저장된 접속 리스트에 제 2 디바이스용의 엔트리를 추가하는 단계를 또한 포함한다. 상기 방법은, 제 2 디바이스의 사용자 식별자에 해당하는 목적지를 갖는 제 1 디바이스의 하나 이상의 데이터 패킷을 수신한 데 응답하여, 하나 이상의 데이터 패킷을 제 2 디바이스로 전송하는 단계를 더 포함한다.
액세스 포인트 모드로 설정된 동안 제 1 디바이스에 접속 요청이 전혀 수신되지 않으면, 상기 방법은 제 1 디바이스가 액세스 포인트 모드로 있는 동안 접속 요청이 수신되거나, 클라이언트 모드로 있는 동안 네트워크명과 관련된 네트워킹 서비스를 제공하는 다른 디바이스가 발견되는 것 중 하나일 때까지, 제 1 디바이스가 클라이언트 모드로 설정되는 것과 액세스 포인트 모드로 설정되는 것 사이에 주기적으로 교번하게 하는 단계를 포함할 수 있다.
제 1 디바이스가 클라이언트 모드로 설정되는 것과 액세스 포인트 모드로 설정되는 것 사이에서 교번하게 하는 단계는 제 1 디바이스가 제 1 시간 주기 동안 클라이언트 모드로 설정되는 것과 제 2 시간 주기 동안 액세스 포인트 모드로 설정되는 것 사이에 교번하게 하는 단계를 포함할 수 있고, 상기 제 1 및 제 2 시간 주기 중 적어도 하나는 랜덤 시간 성분을 포함한다.
상기 방법은 클라이언트 모드로 설정된 적어도 하나의 추가 디바이스로부터 제 1 디바이스에 접속 요청을 수신한데 응답하여, 상기 추가 디바이스와 관련된 사용자 식별자를 결정하는 단계와 상기 제 1 디바이스의 접속 리스트에 상기 사용자 식별자를 추가하는 단계를 포함할 수 있다.
상기 방법은 클라이언트 모드로 설정되고 상기 제 1 디바이스에 접속된 발신 디바이스로부터 의도된 수신자 디바이스와 관련된 사용자 식별자를 포함하는 find 요청을 상기 제 1 디바이스에 수신하는 단계; 상기 네트워크 클러스터상의 상기 제 1 디바이스가 이전에 마주친 디바이스들에 대한 엔트리들을 포함하는 상기 제 1 디바이스에 있는 접속 리스트가 상기 수신자 디바이스에 관련된 사용자 식별자를 포함하는지 여부를 상기 제 1 디바이스가 판단하게 하는 단계; 및 상기 접속 리스트가 상기 수신자 디바이스와 관련된 사용자 식별자를 포함하는 경우, 상기 제 1 디바이스가 find 요청 응답을 발신 디바이스로 전송하게 하는 단계를 포함할 수 있고, 상기 find 요청 응답은 상기 발신 디바이스 및 상기 수신자 디바이스 간에 데이터의 전송을 위해 nexthop 주소로서 상기 제 1 디바이스의 네트워크 주소를 포함한다.
제 1 디바이스 상의 접속 리스트는 클라이언트 모드로 설정되고 상기 제 1 디바이스와 제 1 주변 디바이스 모두의 접속 범위 내에 있는 하나 이상의 디바이스를 통해 상기 제 1 디바이스에 접속되어 있는 상기 제 1 주변 디바이스를 식별하는 적어도 하나의 엔트리를 포함할 수 있고, 상기 방법은 상기 접속 리스트가 상기 수신자 디바이스와 관련된 사용자 식별자를 포함하지 않으면, 상기 제 1 디바이스가 상기 제 1 주변 디바이스에 discover 요청을 전송하게 하는 단계; 및 상기 제 1 디바이스에서 상기 제 1 주변 디바이스로부터 discover 요청 응답을 수신하는 것에 응답하여: 상기 수신자 디바이스에 대한 엔트리를 포함하도록 상기 제 1 디바이스 상의 상기 접속 리스트를 업데이트하는 단계; 및 상기 제 1 디바이스가 find 요청 응답을 상기 발신 디바이스로 전송하게 하는 단계를 더 포함할 수 있고, 상기 discover 요청은 상기 수신자 디바이스의 사용자 식별자를 포함하며, 상기 수신자 디바이스가 액세스 포인트 모드로 설정된 제 2 주변 디바이스에 접속되고, 클라이언트 모드로 설정되며 상기 제 1 및 제 2 주변 디바이스 모두의 접속 범위 내에 있는 하나 이상의 디바이스를 통해 제 1 주변 전송디바이스에 접속되어 있는지 상기 제 1 주변 디바이스가 판단하게 하도록 동작될 수 있으며, 상기 find 요청 응답은 상기 제 1 주변 디바이스 및 상기 제 2 주변 디바이스를 통해 상기 발신 디바이스와 상기 수신자 디바이스 사이에서 데이터를 전송하기 위한 nexthop 주소로서 상기 제 1 디바이스의 네트워크 주소를 포함한다.
discover 요청은 TTL(time-to-live) 만료시 discover 요청의 폐기를 용이하도록 유효하게 될 시간 주기를 정의하는 TTL 데이터 필드를 포함할 수 있다.
discover 요청 응답은 상기 요청 응답이 통과하는 각각의 주변 디바이스에 의해 상기 discover 요청 응답에 추가된 타임스탬프를 포함할 수 있고, 상기 타임스탬프는 사전결정된 시간 프레임 내에서 discover 요청의 반복을 방지하도록 동작될 수 있다.
수신자 디바이스가 제 2 주변 디바이스에 접속되어 있는지 제 1 주변 디바이스가 판단하도록 하는 단계는 discover 요청을 제 2 주변 디바이스로 포워딩하는 단계를 포함하고, 상기 discover 요청은 상기 제 2 주변 디바이스 상의 접속 리스트가 수신자 디바이스와 관련된 사용자 식별자를 포함하는지 상기 제 2 주변 디바이스가 판단하게 동작될 수 있으며, 접속 리스트가 수신자 디바이스와 관련된 사용자 식별자를 포함하는 경우, nexthop 주소로서 제 2 주변 디바이스의 네트워크 주소를 포함하는 discover 요청 응답을 상기 제 1 주변 디바이스를 통해 제 1 디바이스로 다시 송신하는 단계를 포함할 수 있다.
discover 요청 응답을 제 1 주변 디바이스에 수신한 데 응답하여, 상기 방법은 제 2 디바이스로 다시 송신하기 위한 nexthop 주소로서 제 2 주변 디바이스의 네트워크 주소를 포함한 수신자 디바이스에 대한 엔트리를 포함하도록 제 1 주변 디바이스 상의 접속 리스트를 업데이트하는 단계 및 상기 제 1 주변 디바이스 상의 네트워크 주소를 상기 제 1 디바이스로 다시 송신하기 위한 nexthop 주소로서 discover 요청 응답에 추가하는 단계를 포함할 수 있다.
상기 방법은 임의의 주변 디바이스들이 액세스 포인트 모드로 설정되는지 여부를 제 2 디바이스가 주기적으로 판단하게 하는 단계 및 네트워크 클러스터와 관련된 네트워크명을 네트워크 서비스에 제공하는 단계; 및 상기 제 2 디바이스가 상기 네트워크 클러스터와 관련된 네트워크명을 네트워크 서비스에 제공하는 제 1 주변 디바이스를 감지한 데 응답하여, 제 1 디바이스로부터 업데이트된 접속 리스트를 요청하고, 제 1 디바이스로부터 접속해제하고 제 1 주변 디바이스에 접속하며, 제 1 주변 디바이스 상의 메모리에 저장되고 제 1 주변 디바이스에 접속된 디바이스의 사용자 식별자를 포함한 접속 리스트를 상기 제 1 주변 디바이스로부터 요청하고, 제 1 주변 디바이스 상의 접속 리스트의 업데이트를 용이하게 하기 위해 제 1 디바이스에 대한 접속 리스트를 제 1 주변 디바이스에 제공하며, 제 1 디바이스에 재접속하고 제 1 디바이스 상의 접속 리스트의 업데이트를 용이하게 하기 위해 제 1 주변 디바이스에 대한 접속 리스트를 제 1 디바이스에 제공함으로써, 상기 제 2 디바이스가 제 1 주변 디바이스를 네트워크 클러스터에 링크시켜 병합된 네트워크 클러스터를 형성하게 하는 단계를 포함할 수 있고; 제 1 디바이스가 수신된 데이터 패킷을 전송하게 하는 단계는: 수신된 데이터 패킷이 제 1 주변 디바이스에 접속된 제 1 디바이스 상의 접속 리스트에 있는 클라이언트 디바이스와 관련된 디바이스 식별자에 해당하는 목적지를 갖는다는 제 1 디바이스에 의한 판단에 응답하여, 데이터 패킷이 제 2 디바이스를 통해 제 1 주변 디바이스로 보내지게 하는 단계를 포함할 수 있다.
다른 디바이스들이 네트워크 클러스터와 관련된 네트워크명을 네트워크 서비스에 제공하는지 여부를 제 2 디바이스가 주기적으로 판단하게 하는 단계는: 제 1 디바이스와 관련된 BSSID(Basic Service Set IDentification)를 결정하는 단계; 제 2 디바이스가 이용가능한 네트워크들의 스캔을 수행하게 하는 단계; 및 네트워크명과 관련된 네트워킹 서비스를 제공하는 각각의 감지된 디바이스에 대해, 상기 디바이스와 관련된 BSSID를 결정하는 단계를 포함하고, 제 1 디바이스의 BSSID와 다른 BSSID는 디바이스가 액세스 포인트 모드로 설정되고 네트워크명을 네트워크 서비스에 제공하는 것을 나타낸다.
데이터 패킷이 제 2 디바이스를 통해 제 1 주변 디바이스로 보내지게 하는 단계는: 제 2 디바이스가 제 1 디바이스에 현재 접속되어 있지 않다는 제 1 디바이스에 의한 판단에 응답하여, 제 1 디바이스에 접속시 제 2 디바이스로 전송될 데이터 패킷의 큐에 상기 데이터 패킷을 기록하는 단계를 포함할 수 있다.
제 2 디바이스는 상기 제 2 디바이스 상의 메모리에 저장된 접속된 액세스 포인트 리스트를 포함하고, 상기 접속된 액세스 포인트 리스트는 접속된 액세스 포인트로서 제 1 디바이스를 식별하는 적어도 하나의 엔트리를 포함하고, 상기 제 2 디바이스가 제 1 주변 디바이스를 감지한 데 응답하여: 상기 제 2 디바이스가 제 1 주변 디바이스를 접속된 액세스 포인트 리스트에 추가하게 하는 단계; 및 액세스 포인트와 병합된 네트워크 클러스터의 목적지 클라이언트 사이에 데이터 패킷을 보내기 위해 상기 제 2 디바이스가 접속된 액세스 포인트 리스트의 각 액세스 포인트에 주기적으로 연결되게 하는 단계를 포함할 수 있다.
데이터 패킷을 보내는 단계는: 현재 접속된 제 1 디바이스 및 제 1 주변 디바이스 중 하나로부터 수신되고 제 1 디바이스와 제 1 주변 디바이스 중 다른 하나에 대해 예정된 데이터 패킷을 저장하기 위해 메모리에 있는 큐를 제 2 디바이스에 유지하는 단계; 주기적으로 현재 접속된 제 1 디바이스 및 제 1 주변 디바이스 중 하나로부터 접속해제하고 제 1 디바이스와 제 1 주변 디바이스 중 다른 하나에 접속하는 단계; 및 접속시 제 1 디바이스와 제 1 주변 디바이스 중 다른 하나에 큐에 있는 데이터를 전송하는 단계를 포함할 수 있다.
제 1 디바이스 상의 접속 리스트에 저장된 제 2 디바이스에 대한 엔트리는 적어도 하나의 사용자 식별자 및: 네트워크 클러스터 내의 제 2 디바이스의 네트워크 주소와, 제 2 디바이스와 관련된 하드웨어 식별자 중 하나 이상을 포함할 수 있다.
각 디바이스는 적어도 액세스 포인트 모드 및 클라이언트 모드로 설정될 수 있는 무선 라디오를 가지며, 적어도 액세스 포인트 모드로 설정된 제 1 디바이스 및 클라이언트 모드로 설정되고 상기 제 1 디바이스에 접속된 제 2 디바이스를 포함하는, 복수의 디바이스들 간에 구축된 네트워크 클러스터에서, 제 2 디바이스와 의도된 수신자 디바이스 간의 통신 방법이 개시되어 있다. 상기 방법은 상기 수신자 디바이스와 관련된 사용자 식별자가 상기 제 2 디바이스 상의 메모리에 저장된 접속 리스트에 나타나는지 여부를 상기 제 2 디바이스가 결정하게 하는 단계를 포함할 수 있고, 상기 접속 리스트는 상기 네트워크 클러스터 상에서 이전에 마주친 디바이스들에 대한 엔트리들을 포함한다. 상기 접속 리스트에 상기 수신자 디바이스가 나타나면, 상기 방법은 상기 수신자 디바이스와 관련된 사용자 식별자를 포함하는 하나 이상의 데이터 패킷을 상기 제 1 디바이스에 전송하는 단계를 더 포함한다. 상기 수신자 디바이스가 상기 접속 리스트에 나타나지 않으면, 상기 방법은 상기 수신자 디바이스의 검색을 개시하기 위해 상기 제 1 디바이스에 find 요청을 전송하는 단계를 포함한다.
상기 방법은 상기 제 1 디바이스로부터 find 요청 응답을 상기 제 2 디바이스에 수신하는 단계를 포함할 수 있고, 상기 find 요청 응답은 상기 수신자 디바이스가 상기 네트워크 클러스터를 통해 도달 가능하다는 것을 확인응답하고, 제 2 디바이스와 의도된 수신자 디바이스 간의 데이터 전송을 위한 nexthop 주소로서 상기 제 1 디바이스의 주소를 포함한다.
또 다른 개시된 태양에 따르면, 각각이 적어도 액세스 포인트 모드 및 클라이언트 모드로 설정 가능한 무선 디바이스를 갖는 복수의 디바이스들을 각각 포함하는 제 1 네트워크 클러스터 및 제 2 네트워크 클러스터를 병합하는 방법으로서, 상기 제 1 네트워크 클러스터는 제 1 디바이스를 포함하고, 상기 제 2 네트워크 클러스터 제 1 주변 디바이스를 포함하며, 상기 제 1 디바이스와 상기 제 1 주변 디바이스는 액세스 포인트 모드로 설정되고 공통 네트워크명과 관련된 네크워크 서비스를 제공한다. 상기 방법은: 클라이언트 모드 및 상기 제 1 디바이스 및 상기 제 1 주변 디바이스 모두의 접속 범위로 구성된 제 2 디바이스로 하여금 임의의 주변 디바이스가 상기 액세스 포인트 모드로 설정되어 있는지 여부를 주기적으로 결정하게 하는 단계를 포함한다. 상기 방법은 상기 네트워크 클러스터와 관련된 상기 네트워크명을 네트워킹 서비스에 제공하는 단계; 및 상기 제 2 디바이스가 상기 네트워크 클러스터와 관련된 상기 네트워크명을 네트워킹 서비스를 제공하고 있다고 감지한 것에 응답하여, 상기 제 1 디바이스로부터 업데이트된 접속 리스트를 요청하고, 상기 제 1 디바이스로부터 접속해제되고 상기 제 1 주변 디바이스에 접속하며, 접속 리스트를 상기 제 1 주변 디바이스로부터 요청함으로써 상기 제 2 디바이스가 상기 제 1 주변 디바이스를 상기 네트워크 클러스터에 링크시켜 병합된 네트워크 클러스터를 형성하게 하는 단계를 더 포함한다. 상기 접속 리스트는 상기 제 1 주변 디바이스의 메모리에 저장되고 상기 제 1 주변 디바이스에 접속된 디바이스들의 사용자 식별자들을 포함한다. 상기 방법은 상기 제 1 주변 디바이스 상의 상기 접속 리스트의 업데이트를 용이하게 하기 위해 상기 제 1 주변 디바이스에 상기 제 1 디바이스에 대한 접속 리스트를 제공하는 단계와, 상기 제 1 디바이스에 재접속하고 상기 제 1 디바이스 상의 접속 리스트의 업데이트를 용이하게 하기 위해 상기 제 1 디바이스에 상기 제 1 주변 디바이스에 대한 접속 리스트를 제공하는 단계를 더 포함한다.
상기 제 2 디바이스는 상기 제 2 디바이스 상의 메모리에 저장된 접속된 액세스 포인트 리스트를 포함하고, 상기 접속된 액세스 포인트 리스트는 상기 접속된 액세스 포인트로서 상기 제 1 디바이스를 식별하는 적어도 하나의 엔트리를 포함하며, 상기 제 2 디바이스가 상기 제 1 주변 디바이스를 감지한 데 응답하여: 상기 제 2 디바이스가 상기 제 1 주변 디바이스를 상기 접속된 액세스 포인트 리스트에 추가하게 하는 단계; 및 상기 병합된 네트워크 클러스터 내의 액세스 포인트와 목적지 클라이언트 사이에 데이터 패킷을 보내기 위해 상기 제 2 디바이스가 상기 접속된 액세스 포인트 리스트의 각 액세스 포인트에 주기적으로 접속하게 하는 단계를 포함할 수 있다.
상기 네트워크명은 네트워크 타입을 식별하는 공통 식별자 부분 및 상기 네트워크의 특정 인스턴스를 식별하는 난수를 포함할 수 있다.
상기 네트워크명과 관련된 네트워킹 서비스가 상기 복수의 디바이스들 중 다른 디바이스에 의해 현재 제공되고 있지 않다는 상기 제 1 디바이스에 의한 판단에 응답하여, 상기 제 1 디바이스가 Bluetooth 및 WiFi Direct 통신 중 하나로 구성되게 하는 단계와 네트워크 클러스터와 관련된 네트워크명을 네트워킹 서비스에 제공하는 단계를 더 포함할 수 있다.
다른 태양 및 특징은 첨부도면과 결부하여 개시된 특정 실시예들의 하기의 설명을 검토할 때 당업자에게 명백해질 것이다.
본 발명의 내용에 포함됨.
개시된 실시예를 도시한 도면에서,
도 1은 복수의 디바이스간에 구축된 네트워크 클러스터의 개략도이다.
도 2에 도 1에 도시된 디바이스 중 어느 하나를 실행하기 위한 프로세서 회로의 블록도이다.
도 3은 도 1에 도시된 네트워크 클러스터의 또 다른 개략도이다.
도 4는 도 3에 도시된 클러스터 네트워크 구축과 관련된 기능을 수행하도록 도 2의 프로세서 회로에 명령하기 위한 코드 블록을 도시하는 프로세서 흐름도이다.
도 5는 도 2의 프로세서 회로의 메모리에 저장된 접속 리스트 및 접속 액세스 포인트 리스트의 예이다.
도 6은 클라이언트 프로세스 기능을 수행하도록 도 2의 프로세서 회로에 명령하기 위한 코드 블록을 도시한 프로세서 흐름도이다.
도 7은 도 3에 도시된 네트워크 클러스터 구축에 사용되는 일반적인 요청/응답 메시지 프로토콜의 예이다.
도 8a-8c는 클라이언트 라우터 프로세스 기능을 수행하도록 도 2의 프로세서 회로에 명령하기 위한 코드 블록을 나타내는 일련의 프로세서 흐름도이다.
도 9는 find 프로세스를 수행하기 위해 도 2의 프로세서 회로에 명령하기 위한 코드 블록을 도시한 프로세서 흐름도이다.
도 10은 라우터 discover 프로세스를 수행하기 위해 도 2의 프로세서 회로에 명령하기 위한 코드 블록을 도시하는 프로세서 흐름도이다.
도 11은 discover 응답 프로세스를 수행하기 위해 도 2의 프로세서 회로에 명령하기 위한 코드 블록을 도시하는 프로세서 흐름도이다.
도 12는 게이트웨이 프로세스의 제 1 부분을 수행하기 위해 도 2의 프로세서 회로에 명령하기 위한 코드 블록을 도시하는 프로세서 흐름도이다.
도 13은 게이트웨이 프로세스의 제 2 부분을 수행하기 위해 도 2의 프로세서 회로에 명령하기 위한 코드 블록을 도시하는 프로세서 흐름도이다.
도 14는 클러스터 네트워크를 구축하기 위한 다른 실시예와 관련된 기능을 수행하기 위해 도 2의 프로세서 회로에 명령하기 위한 코드 블록을 도시하는 프로세서 흐름도이다.
도 15는 도 14에 도시된 프로세스에 의해 구축된 네트워크 클러스터의 개략도이다.
도 16은 블루투스 통신 프로토콜을 사용하여 클러스터의 네트워크 구축과 관련된 기능을 수행하기 위해 도 2의 프로세서 회로에 명령하기 위한 코드 블록을 도시하는 프로세서 흐름도이다.
도 17은 도 14 및 도 16에 도시된 프로세스에 의해 구축된 네트워크 클러스터의 개략도이다.
도 1을 참조하면, 복수의 디바이스 간에 설정된 네트워크 클러스터가 전체적으로 100으로 도시되어 있다. 도 1에 도시된 실시예에서, 제 1 디바이스(102), 제 2 디바이스(104), 및 디바이스(106) 사이에 네트워크 클러스터(100)가 구축되고 각 디바이스는 무선 라디오(미도시)를 갖는다. 이 실시예에서, 제 1 디바이스(102)는 사용자(108)가 조작하고 있는 스마트폰이고, 제 2 디바이스(104)는 사용자(110)가 조작하고 있는 태블릿 컴퓨터이며, 디바이스(106)는 랩탑 컴퓨터이다. 다른 실시예에서 디바이스(102-106)는, 예컨대, 스마트폰, 태블릿 또는 랩탑 컴퓨터, 데스크탑 컴퓨터, 라우터 또는 액세스 포인트와 같은 독립형 네트워킹 디바이스, 프린터와 같은 컴퓨터 주변 기기 및/또는 네트워크 장비와 같은 물리적 개체와 같은 복수의 네트워크 디바이스 중 어느 하나일 수 있다. 일반적으로 네트워크 클러스터(100)에 전체적으로 참여하기 위해, 디바이스는 적어도 하나의 액세스 포인트 모드 및 클라이언트 모드로 설정될 수 있는 무선 라디오를 가져야 한다. 그러나, 일부 디바이스는 단지 액세스 포인트로서 또는 단지 클라이언트 모드로만 동작할 수 있고 여전히 네트워크 클러스터(100)의 일부가 될 수 있지만 일부 네트워크 구축 기능을 수행하지 못할 수 있다. 구축된 네트워크 클러스터(100)는 연결된 네트워크명을 가지며, 상기 네트워크명은 일 실시예에서 서비스 세트 식별자(service set identifier, SSID)일 수 있다. 일 실시예에서, 네트워크명은 "WAVE-*" 폼을 가지며, "*"는 랜덤 번호를 나타낸다. "WAVE-*" 부분은 새로운 사용자가 "WAVE-*"로 시작하는 임의의 네트워크에 연결하게 허용하도록 본 명세서에 기재된 바와 같이 구축된 모든 네트워크들에 공통일 수 있다. 이러한 네트워크명은 "WAVE" 네트워크 및 네트워크의 특정 인스턴스를 식별하는 랜덤 번호로 네트워크 타입을 식별하는 공통 식별자 부분을 포함한다. 하기의 설명에서, 클러스터 네트워크와 관련된 SSID는 "WAVE-*"라고 추정되며, 여기서 "*"는 랜덤 번호를 나타내는 것으로 이해해야 한다.
일반적으로, 각각의 디바이스(102-106)는 상기 각각의 디바이스가 네트워크를 구축하기 위한 기능을 제공하게 하는 컴퓨터 판독가능 명령어의 형태로 로딩된 애플리케이션을 갖는다. 예를 들어, 제 1 디바이스(102)의 경우, 스마트폰 애플리케이션을로딩하고 필요한 기능을 구현하도록 실행될 수 있다. 본 실시예에서, 고유 사용자 식별자가 애플리케이션에 정의된 할당 프로토콜에 따라 복수의 디바이스(102, 104, 및 106) 각각에 할당된다.
이 실시예에서, 네트워크 클러스터(100)는 초기에 클라이언트 모드로 설정된 제 1 디바이스(102)와 디바이스의 무선 라디오 스캐닝 또는 액세스 포인트 모드로 설정되고 클러스터 네트워크명 "WAVE-*"과 관련된 네트워킹 서비스를 제공하는 다른 디바이스들로 구축된다. 다른 디바이스들이 현재 SSID "WAVE-*" 명의 네트워크 서비스를 제공하지 않으면, 제 1 디바이스(102)는 네트워크 클러스터의 범위에 있지 않고 상기 애플리케이션은 디바이스가 SSID "WAVE-*" 명의 네트워크 클러스터에 대한 네트워크 서비스를 제공하기 위해 상기 액세스 포인트 모드로 설정되게 한다. SSID "WAVE- *" 명의 네트워크 클러스터에 대한 서비스를 제공하는 액세스 포인트 모드의 다른 디바이스가 발견되면, 네트워크 클러스터가 이미 구축되었고 제 1 디바이스는 구축된 클러스터에 참가할 수 있다.
액세스 포인트 모드로 설정되면, 제 1 디바이스(102)는 제 2 디바이스(104))와 같이 다른 디바이스들로부터 접속 요청을 듣는다. IEEE 802.11 무선 네트워크에서, 접속 요청을 "프로브 요청"이라 한다. (제 2 디바이스(104)와 같은) 클라이언트 모드로 설정된 제 2 디바이스로부터 접속 요청을 수신한 데 응답하여, 제 1 디바이스(102)는 접속 요청을 수락하고 제 2 디바이스(104)와 관련된 사용자 식별자를 판단하여 상기 디바이스의 엔트리를 제 1 디바이스(102) 상의 메모리에 저장된 접속 리스트에 추가한다. 일 실시예에서, 접속 리스트에 있는 제 2 디바이스(104)에 대한 엔트리는 디바이스의 사용자 식별자와 클러스트 네트워크 내에 있는 디바이스의 네트워크 주소를 포함한다. IEEE 802.11 프로토콜 하의 접속 요청 수락은 접속이 완료되기 전에 제 2 디바이스에 의한 인증 및 결합을 요청하는 프로세스를 포함할 수 있다. 본 명세서에서 실시예들은 IEEE 802.11 네트워킹 프로토콜을 참조로 설명되어 있으나, 상기 무선 네트워크는 Bluetooth®, 애플의 iOS 운영 시스템 상의 Multipeer Connectivity 프레임워크, 안드로이드 운영 시스템 상의 Wi-Fi Direct 또는 Wi-Fi P2P와 같은 다른 무선 네트워킹 프로토콜을 사용하여 구현될 수 있다.
마찬가지로, 제 1 디바이스(102)는 또한 디바이스(106)로부터 접속 또는 프로브 요청을 수신할 수 있고, 제 1 디바이스(102) 상의 접속 리스트에 디바이스의 엔트리를 추가할 수 있다. 접속 리스트는 디바이스(104 및 106)와 같은 제 1 디바이스에 의해 제공된 액세스 포인트에 디바이스의 트랙을 계속 연결되게 하기 위해 제 1 디바이스(102)에 의해 사용된다. 연이어, 제 1 디바이스(102)가 제 2 디바이스(104)의 사용자 식별자를 포함한 디바이스(106)로부터 데이터 패킷을 수신하면, 제 1 디바이스(102)는 사용자 식별자가 접속 리스트에 나타나는지 판단하고, 그렇다면, 제 2 디바이스의 네트워크 주소를 찾아, 상기 데이터 패킷을 제 2 디바이스의 네트워크 주소로 전송한다.
상기 프로세스는 상기 설명에서 제 1 디바이스(102)에 의해 개시되는 것으로 설명되어 있으나, 실제로 각각의 디바이스(102-106)는 클라이언트 모드로 설정되는 것과, 액세스 포인트 모드에 있는 동안 접속 요청이 수신되거나 액세스 포인트 모드에 있는 동안 또 다른 디바이스가 네트워크명과 관련된 네트워킹 서비스를 제공하고 있다는 것을 발견될 때까지 액세스 포인트 모드로 설정되는 것 사이에 주기적으로 번갈아가며 동일한 네트워크 클러스터 구축 프로세스를 수행할 수 있다.
상기 개시된 클러스터 네트워크 구축 프로세스는, 심지어 어떤 경우에는 무선 라디오가 클라이언트 모드와 핫스팟 모드로 동시에 동작할 수 있더라도, 상기 디바이스의 무선 라디오가 클라이언트 모드와 핫스팟 모드로 동시에 동작하는 것이 제조업자에 의해 제한될 수 있다는 점에서 많은 스마트폰 및 태블릿 디바이스와 관련된 한계를 극복한다. 네트워크 클러스터(100)는 디바이스(104, 106)와 같은 다른 디바이스가 클라이언트 모드로 설정되어 있는 동안 제 1 디바이스(102)와 같은 일부 디바이스가 액세스 포인트 모드로 설정되게 함으로써 구축된다. 네트워크 클러스터(100)의 구축시, 디바이스는 또한 서비스가 네트워크 클러스터(100) 내의 다른 디바이스에 의해 제공되고 있는지에 따라 클라이언트 모드와 액세스 포인트 모드 사이의 구성을 변경할 수 있다.
추가 디바이스는 네트워크 클러스터(100)가 도 1에 도시된 디바이스보다 매우 많은 디바이스들을 포함하도록 확장하게 하는 제 1 디바이스(102)에 의해 제공된 액세스 포인트에 접속될 수 있다. 실제로, 스마트폰 디바이스는 동시 접속 수를 제한할 수 있다. 가령, 몇몇 스마트폰 운영 시스템은 접속을 3개 디바이스로 제한하는 반면, 다른 시스템은 10개 이상까지 동시 접속을 허용할 수 있다.
디바이스 중 어느 하나를 실행하기 위한 프로세서 회로의 블록도가 도 2에 도시되어 있다. 도 2를 참조하면, 프로세서 회로(200)는 다수의 프로세싱 코어를 포함할 수 있는 마이크로프로세서(202)를 포함한다. 프로세서 회로(200)는 또한 디스플레이(204) 및 사용자 입력을 수신하기 위한 입력 디바이스(206)를 포함한다. 일부 실시예에서, 입력 디바이스(206)는 디스플레이(204)상에 터치스크린으로서 제공될 수 있다. 프로세스 회로(200)는 또한 디바이스에서 실행되는 애플리케이션과 관련된 데이터를 저장하는 랜덤 액세스 메모리(208)를 포함한다. 프로세서 회로(200)는 또한 데이터를 저장하기 위한 비휘발성 플래시 메모리(210)를 포함한다. 도시된 본 실시예에서, 비휘발성 플래시 메모리(210)는 운영 시스템 저장소(240), 애플리케이션 저장소(242), 접속 리스트 저장소(244), 큐 저장소(246), 시스템 설정 저장소(248)를 포함한다. 비휘발성 플래시 메모리(210)는 오디오, 비디오, 이미지, 텍스트 및 기타 데이터 파일 및/또는 문서를 저장하기 위한 사용자 데이터 저장소(252)를 포함할 수 있다.
프로세스 회로(200)는 이동 통신망에 접속하기 위한 RF 기저대역 라디오(212)와 안테나(214)를 더 포함한다. 상기 RF 기저대역 라디오(212)는 2G, 3G, 4G, 또는 기타 통신 표준을 포함한 다양한 통신 표준들 중 어느 하나를 사용하여 데이터 통신을 제공하도록 구성될 수 있다.
프로세서 회로(200)는 예컨대 IEEE 802.11 WLAN 로컬 네트워크와 같은 로컬 네트워크에 접속하기 위한 무선 라디오(216) 및 안테나(218)를 포함한다. 무선 라디오(216)는 또한 Bluetooth, WiFi Diract, 또는 근거리 통신과 같은 다른 무선 프로토콜을 통해 접속을 제공할 수 있다.
프로세서 회로(200)는 위치 수신기를 더 포함한다. 위치 수신기(230)는 GPS(Global Positioning System) 신호를 수신하기 위한 안테나(232)를 포함하고, 위치 수신기(230)는 네트워크 디바이스의 위치를 결정하기 위해 특정 로컬 네트워크의 액세스 포인트의 공지된 위치와 같은 다른 위치 정보 또는 셀룰러 서비스 제공자에 의해 제공되는 셀룰러 신호 삼각측량 정보와 조합하여 GPS 정보를 사용할 수 있다.
프로세서 회로(200)는 오디오 프로세서(220), 마이크로폰(222), 및 스피커(224)를 포함한다, 오디오 프로세서(220)는 마이크로폰(222)으로부터 오디오 입력 신호를 수신하고 처리하여 스피커(224)에서 오디오 출력을 생성한다. 프로세서 회로(200)는 또한 비디오/이미지 프로세서(226)와 카메라(228)를 포함한다. 비디오/이미지 프로세서(226)는 카메라(228)로부터 이미지 및/또는 비디오 신호를 수신하고 처리한다.
디스플레이(204), 입력 디바이스(206), 랜덤 액세스 메모리(208), 비휘발성 플래시 메모리(210), RF 기저대역 라디오(212), 무선 라디오(216), 오디오 프로세서(220), 및 비디오/이미지 프로세서(226)는 모두 마이크로프로세서(202)와 통신한다.
운영 시스템 저장소(240)는 운영 시스템을 실행하기 위해 마이크로프로세서(202)에 명령하기 위한 코드를 저장하고, 스마트폰 디바이스의 경우, 운영 시스템은 AndroidTM 기반 운영 시스템, iOS 기반 운영 시스템 또는 무선 통신을 지원하는 임의의 다른 운영 시스템일 수 있다. 나머지 개시는 일반적으로 안드로이드 기반 운영 시스템 하에서 다양한 개시된 실시예의 구현에 관한 것이나, 동일한 원리가 또한 몇몇 구현에 차이가 있는 다른 운영 시스템에도 적용된다.
제 1 디바이스(102) 및 제 2 디바이스(104)는 각각 도 2에 도시된 바와 유사한 프로세서 회로(200)를 이용하여 구현될 수 있다. 랩탑 컴퓨터 디바이스(106)는 위치 수신기(230) 및 RF 기저대역 라디오(212)와 같은 일부 구성요소들이 생략된 도 2에 도시된 많은 구성요소들을 포함할 수 있다. 도 2의 프로세서 회로(200) 아키텍처를 참조로 실시예들이 본 명세서에 기술되었으나, 기술된 시스템의 실시예들 및/또는 프로세스의 실시예도 또한 다른 타입의 디바이스들 간의 통신에도 적용될 수 있다. 일반적으로, 각각의 디바이스(102-106)는 각각의 디바이스가 네트워크 클러스터(100)를 구축하기 위해 필요한 기능을 제공하게 하는 플래시 메모리(210)의 애플리케이션 저장소(242)에 로딩된 컴퓨터 판독가능 코드를 갖는다.
도 3을 참조로 네트워크 클러스터(100)가 개략적으로 도시되어 있다. 도 3을 참조하면, 제 1 디바이스(102)는 사각형으로 도시되어 있고, 이는 상기 디바이스가 액세스 포인트 모드로 설정되어 있는 것을 나타낸다. 제 2 디바이스(104) 및 디바이스(106)는 원을 사용하여 도시되어 있고, 이는 이들 디바이스가 클라이언트 모드로 설정되어 있음을 나타낸다. 제 1 디바이스와 제 2 디바이스(102, 104) 및 제 3 디바이스가 네트워크 클러스터(100)를 형성한다. 제 1 디바이스(102)는 사용자 식별자(uuid)(194)를 갖고, 제 2 디바이스(104)는 사용자 식별자(605)를 가지며, 제 3 디바이스는 사용자 식별자(348)를 갖는다. 사용자 식별자는 일반적으로 디바이스에 고유해야 하며, 디바이스에 대한 전화번호, 미디어 접근 제어 주소(MAC) 및/국제 단말기 고유식별번호(IMEI)와 같이 디바이스에 고유하게 할당된 식별자를 사용하여 생성될 수 있다.
도 4를 참조하면, 클러스터 네트워크(100)를 구축하는 것과 관련된 기능을 수행하기 위한 코드 블록을 도시한 프로세서 흐름도가 400으로 도시되어 있다. 블록은 일반적으로 다양한 네트워크 기능을 수행하기 위해 마이크로프로세서(202)에 명령하기 위한 비휘발성 플래시 메모리(210)의 애플리케이션 저장소(242)로부터 판독될 수 있는 코드를 나타낸다. 각 블록을 구현하기 위한 실제 코드는, 예를 들면, Java, C, Objective-C, C ++, C # 및/또는 어셈블리 코드와 같은 임의의 적절한 프로그램 언어로 작성될 수 있다.
클러스터 형성 프로세서(400)는 네트워크 클러스터(100)를 구축하기 위한 기능을 제공하도록 제 1 디바이스(102)를 구성한 애플리케이션이 시작될 때 블록(402)에서 시작한다. 그런 후, 블록(404)은 클라이언트 모드로 디바이스를 구성하도록 마이크로프로세서(202)에 명령하고, 무선 라디오(216)가 턴 오프인 경우, 무선 라디오를 활성화시킨다. 블록(404)은 또한 제 1 디바이스(102)의 무선 구성 설정에 엔트리를 추가 또는 업데이트하도록 마이크로프로세서(202)에 명령한다. 상기 무선 구성 설정은 일반적으로 비휘발성 플래시 메모리(210)의 시스템 구성 메모리 저장소(248)에 있는 파일에 저장될 것이다. SSID "WAVE-*"에 대한 엔트리가 추가되거나 업데이트되며, 이는 사용 중인 보안 프로토콜과 같은 다양한 구성 설정 및 사용중에 있다면 사용자명 및/또는 패스워드와 같은 임의의 사용자 인증 정보를 포함할 수 있다. 업데이트된 구성은 제 1 디바이스(102)의 사용자의 다른 개입없이 상기 "WAVE-*"SSID를 갖는 액세스 포인트에 무선 접속을 허용한다.
블록(404)에 뒤이어, 마이크로프로세서(202)는 선택적으로 제 1 디바이스(102)가 RF 기저대역 라디오(212)를 통한 셀룰러 데이터 통신 네트워크 또는 무선 라디오(216)를 통한 무선 네트워크에 연결되어 있는지 여부를 판정하는 게이트웨이 프로세스(1200)를 실행하도록 명령될 수 있다. 게이트웨이 프로세스((1200)는 본 명세서에서 후술되어 있다.
프로세스(400)는 블록(406)에서 계속되고, 상기 블록은 마이크로프로세서(202)에 명령해 무선 네트워크에 대한 스캔을 수행하게 한다. 블록(408)은 마이크로프로세서(202)에 명령해 SSID "WAVE-*" 명의 네트워크 서비스가 어떤 디바이스에 의해 제공되고 있는지 여부를 판단하게 한다. 블록(408)에서 SSID "WAVE-*" 명의 네트워크 서비스가 제 1 디바이스(102)의 범위 내에 있는 다른 디바이스에 의해 제공되는 경우, 상기 디바이스는 다른 디바이스에 연결될 수 있으며, 제 1 디바이스는 본 명세서에 후술되어 있는 클라이언트 프로세스(600)를 실행한다.
제 1 디바이스(102)의 범위 내에 어떤 디바이스도 SSID "WAVE-*"의 네트워크 서비스를 제공하지 않는다면, 프로세서는 블록(410)에서 계속되며, 상기 블록은 마이크로프로세서(202)에 명령해 액세스 포인트 모드로 제 1 디바이스(102)를 구성하고 접속 요청을 듣게 한다. 그런 후, 제 1 디바이스(102)가 SSID "WAVE-*"의 무선 네트워크 서비스를 제공하며, 블록(412)은 마이크로프로세서(202)에 명령해 접속 요청이 예를 들어 디바이스(104 및 106)와 같은 다른 디바이스로부터 수신되었는지 여부를 판단하게 한다. 블록(412)에 접속 요청이 타임아웃 기간 내에 전혀 수신되지 않으면, 마이크로프로세서(202)는 블록(406)으로 다시 지향되며, 상기 제 1 디바이스(102)는 클라이언트 모드로 다시 구성되고 SSID "WAVE-*"의 네트워크 서비스를 제공하는 다른 디바이스를 스캔한다.
따라서, 제 1 디바이스(102)는 이와 같이 클라이언트 모드로 설정되는 것과 제 1 디바이스가 액세스 포인트 모드로 있는 동안 접속 요청이 수신되거나 클라이언트 모드로 있는 동안 네트워크명과 관련된 네트워킹 서비스를 제공하는 다른 디바이스가 발견될 때까지 액세스 포인트 모드로 설정되는 것 사이에서, 주기적으로 교번한다. 일 실시예에서, 클라이언트 모드와 액세스 포인트 모드로 보낸 각각의 시간의 주기는 복수의 디바이스가 클라이언트 모드와 액세스 포인트 모드 사이를 교번할 때, 최종적으로 하나의 디바이스가 액세스 포인트 모드로 있는 반면 다른 디바이스는 클라이언트 모드로 있게 되어 따라서 클러스터 네트워크(100)의 구축을 허용하도록 랜덤 시간 성분을 포함할 수 있다.
블록(412)에서 접속 요청을 수신하면, 마이크로프로세서(202)는 수신된 요청의 콘텐트에 따라 블록(414, 416, 또는 418) 중 하나에 명령한다. 일 실시예에서, 접속 요청은 새로운 접속을 위해 "HELLO" 타입 요청 형태를 취하고, 기존의 접속 종료를 위해 "GOODBYE" 타입 요청 형태를 취하며, 접속된 디바이스에 대한 상태 변경을 제 1 디바이스(102)에 통지하는 "NOTIFY" 타입 요청을 취할 수 있다. 블록(412)에서, "HELLO" 타입 요청을 예를 들어 제 2 디바이스(104)로부터 수신한 경우, 상기 제 1 디바이스(102)는 상기 메시지의 수신을 확인응답하기 위해 다시 제 2 디바이스에 확인응답(ACK) 메시지를 전송한다.
그런 후, 블록(420)은 마이크로프로세서(202)가 제 1 디바이스(102)에 저장된 접속 리스트를 업데이트하도록 명령한다. 제 1 디바이스(102)에 저장된 접속 리스트의 일예가 도 5에 500으로 표 형식으로 도시되어 있다. 제 2 디바이스(104)에 저장될 수 있는 접속 리스트의 유사한 예는 520으로 도시되어 있다. 도 5를 참조하면, 접속 리스트(500)는 엔트리와 관련된 사용자 식별자를 저장하기 위한 uuid 필드, 관련 디바이스에 대한 닷으로 된 옥테트로서 IP(Internet Protocol) 주소를 저장하기 위한 addr 필드, 데이터를 라우팅하기 위해 다음 홉(hop)의 IP 주소를 저장하기 위한 nexthop 주소, 디바이스가 액세스 포인트 모드(isMaster)인지 디바이스가 클라이언트 라우팅 모드(isRouter)인지와 관련된 2개의 불리언 필드, 관련된 디바이스가 마지막으로 통신한 시간을 저장하는 "lastheard" 필드, 및 디바이스와 관련된 하드웨어 식별자를 저장하기 위한 하드웨어 주소(hwAddress) 필드를 포함한 복수의 필드(502)를 포함한다. 접속 리스트(500)는 제 1 디바이스(102) 그자체에 대한 제 1 및 제 2 엔트리(504 및 506)를 포함하고, 본 실시예에서는 할당된 uuid(194)를 갖는다. 제 1 디바이스(102)는 엔트리(504 및 506)에 반영되는 것으로 2개의 다른 IP 주소가 할당되었다. isMaster 필드는 제 1 디바이스(102)가 현재 액세스 포인트 모드로 설정되어 있는 것을 나타내는 TRUE로 설정되어 있다. 본 실시예에서, 단지 클라이언트 모드 구성된 디바이스는 라우터로 간주되기 때문에 isRouter 필드는 FALSE로 설정되어 있다. 엔트리(504 및506)에 대한 hwAddress는 제 1 디바이스(102)의 하드웨어 식별자를 반영한다.
접속 리스트(500)는 또한 제 2 디바이스(104)에 대한 엔트리(508)를 포함하며, 상기 엔트리는 사용자 식별자(605), IP 주소 및 제 2 디바이스의 하드웨어 주소를 포함한 제 2 디바이스로부터 HELLO 요청을 수신한 데 응답하여 제 1 디바이스(102)에 의해 블록(420)에 추가된다. 따라서, 제 2 디바이스(104)에 대한 엔트리(508)는 엔트리(508)에 반영된 바와 같이 ipaddr을 가지며, isMaster 필드는 제 2 디바이스(104)가 현재 클라이언트 모드로 설정되어 있음을 나타내는 FALSE로 설정되어 있다. 이 실시예에서 제 2 디바이스(104)는 본 명세서에서 후술되는 바와 같이 라우트 모드로 되어 있지 않기 때문에 isRouter 필드는 FALSE로 설정되어 있다. 엔트리(508)에 대한 hwAddress 필드는 제 2 디바이스(104)의 하드웨어 식별자를 저장한다. 일단 접속 리스트(500)가 업데이트되었다면, 블록(420)은 마이크로프로세서(202)가 다시 블록(412)으로 복귀해 다른 요청을 기다리게 명령한다.
블록(412)에서, 수신된 요청이 GOODBYE 요청이면, (예를 들어, 도 3의 디바이스(104 또는 106)와 같은) 디바이스는 네트워크 클러스터(100)로부터 막 연결을 끊고 있음을 제 1 디바이스(102)에 알린다. 이 경우, 블록(416)은 마이크로프로세서(202)로 하여금 디바이스에 확인응답을 전송하도록 명령한다. 그 다음, 블록(420)은 마이크로프로세서(202)가 디바이스와 관련된 접속 리스트(500) 내의 임의의 엔트리를 제거하도록 명령한다. 가령, GOODBYE 요청이 제 2 디바이스(104)로부터 수신되면, 제 1 디바이스(102)는 접속 리스트(500)에서 엔트리(508)를 삭제할 것이다. 그 다음, 블록(420)은 마이크로프로세서(202)가 다시 블록(412)으로 복귀해 다른 요청을 기다리게 명령한다.
NOTIFY 요청 처리 프로세스(블록 418 및 422-428)는 본 명세서에서 나중에 설명될 것이다. 일반적으로, 범위 내에 있는 디바이스들(102, 104 및 106) 각각은 적어도 클러스터 형성 프로세스(400)의 블록들(402 내지 408)을 실행하고, 이후 디바이스들은 클라이언트 모드 또는 액세스 포인트 모드 중 어느 하나를 선택적으로 구성한다. 예컨대, 제 2 디바이스(104)의 경우, 블록(408)에서 네트워크는 이미 존재할 수 있다(즉, 제 1 디바이스(102)에 의해 제공된다). 이 경우, 블록(408)이 임의의 디바이스가 SSID "WAVE- *"의 네트워크 서비스를 제공하는지 제 2 디바이스의 마이크로프로세서(202)가 판단하게 하면, 액세스 포인트 모드로 제 1 디바이스(102)에 의해 호스팅되는 네트워크가 감지될 것이고, 블록(408)은 마이크로프로세서에 명령해 클라이언트 프로세스를 실행하게 할 것이다.
도 6을 참조하면, 클라이언트 프로세스의 실시예가 전체적으로 600으로 도시도어 있다. 프로세스는 블록(602)에서 시작하고, 상기 블록은 마이크로프로세서(202)가 액세스 포인트 모드로 제 1 디바이스(102)와 결합하도록 명령한다. IEEE 802.11 프로토콜의 경우, 결합은 클라이언트 디바이스(104)와 액세스 포인트 디바이스(102) 사이의 메시지 교환을 포함하고 데이터 링크 계층에서의 접속을 설정한다. 네트워크 클러스터(100)는 이어서 결합 프로세스 동안 구축된 데이터 링크 계층에 의존하는 네트워크 계층에 구축된다. 네트워크 클러스터(100)의 구축은 블록(604)에서 계속되고, 상기 블록은 마이크로프로세서(202)에 명령해 제 2 디바이스(104)에 IP 주소의 할당을 요청하기 위해 제 1 디바이스(102)에 DHCP(Dynamic Host Configuration Protocol) 요청을 전송하도록 한다. 이 실시예에서, 제 1 디바이스(102)는 DHCP 서버를 구현하며, 상기 서버는 IP 주소 풀에서 한 IP 주소를 제 2 디바이스(104)에 할당한다. 블록(604)은 또한 마이크로프로세서(202)가 제 1 디바이스(102)에 대한 IP 주소를 결정하도록 명령한다. 제 1 디바이스(102)에서 실행중인 DHCP 서버가 제 2 디바이스(104)로부터 IP 주소 임대 요청을 수신하면, DHCP 서버는 제 2 디바이스에 대한 IP 주소를 예약하고 제 2 디바이스의 MAC 주소, DHCP 서버가 제공하는 IP 주소, 서브넷 마스크, 임대 기간 및 제공하는 DHCP 서버의 IP 주소를 포함하는 메시지를 클라이언트에 전송함으로써 임대를 제안한다. 따라서, 제 2 디바이스(104)로의 DHCP 임대 제안은 제 1 디바이스(102)의 IP 주소를 제 2 디바이스에 제공한다.
그런 후 프로세스(600)는 블록(606)에서 계속되며, 상기 블록은 마이크로프로세서(202)가 제 2 디바이스(104)와 제 1 디바이스(102) 간에 성공적인 네트워크 접속이 구축되었는지 판단하게 한다. 성공적인 네트워크 접속은 액세스 포인트와 성공적인 결합, 할당된 IP 주소 수신, 및 제 1 디바이스(102)의 IP 주소 수신을 필요로 한다. 접속이 성공적으로 완료되면, 블록(606)은 마이크로프로세서(202)가 블록(608)으로 가게 명령하고, 상기 블록(608)은 마이크로프로세서(202)가 HELLO 요청을 제 1 디바이스(102)에 보내게 명령한다. 따라서, 블록(602 및 604)은 효과적으로 결합 및 접속 프로세스를 포함하며, 이는 본 명에서에 나타낸 다른 흐름도에서와 같이 인용될 것이다.
구조화된 데이터를 직렬화하기 위한 Google의 "proto2" 프로토콜 버퍼 구문의 일반 요청 및/또는 응답 메시지의 예가 도 7에서 700으로 도시되어 있다. 도 7을 참조하면, 요청/응답 메시지 프로토콜(700)은 복수의 필드(702)를 포함하고, 각 필드는 타입, 이름 및 고유번호가 매겨진 태그가 있다. 필드는 또한 상기 필드가 "필요"(메시지는 이 필드 중 정확히 하나만 있어야 함), "선택"(이 필드의 0 또는 1), 및 "반복"(필드는 0에서 임의의 횟수로 반복될 수 있음)인지 여부를 나타내는 규칙으로 시작된다. 여러 타입이 uint64(부호없는 64 비트 정수), uint 32(부호없는 32 비트 정수), 및 바이트(임의의 바이트 시퀀스)와 같이 구문에 미리 정의되어 있다. 예로서, type 필드(704)(즉, "type"이라는 이름을 갖는 필드)는 "필요"이고, "RequestType" 타입이며, 태그 "1"이 할당된다. "RequestType" 타입은 일반적인 용어로 설명한 HELLO, GOODBYE 및 NOTIFY와 같은 다양한 메시지 타입에 할당된 가능한 값들의 사전정의된 리스트를 설정하는 목록(722)에 정의되어 있다.
따라서, HELLO 요청은 1의 type 필드(704) 및 송신 디바이스 사용자 식별자에 대응하는 uuid 필드(706)를 필요로 한다. HELLO 요청은 송신 디바이스의 IP 주소의 리스트를 보유한 0개, 1개 또는 그 이상의 addr 필드(708)를 포함할 수 있다. 송신 디바이스는 액세스 포인트 모드로 임의의 다른 네트워크 또는 디바이스에 접속되지 않을 수 있고, 이 경우 어떤 주소도 HELLO 요청에 전송되지 않을 것이다. 그러나, 다른 실시예에서, 송신 디바이스는 액세스 포인트 모드로 다른 디바이스, Bluetooth® 또는 IEEE 802.11 WLAN 로컬 네트워크와 같은 다른 로컬 네트워크, 및/또는 도 2에 도시된 RF 기저대역 라디오(212)를 통해 셀룰러 데이터 네트워크에 접속될 수 있다. 이들 네트워크 각각은 일반적으로 addr 필드(708)에 포함되어 제 1 디바이스(102)로 전송되는 IP 주소를 송신 디바이스에 제공할 것이다. 따라서, 제 2 디바이스(104)에 의해 블록(608)에서 송신된 HELLO 요청은 값[1,605,192168000010]을 포함할 것이다. 그런 후, 블록(610)은 마이크로프로세서(202)에 명령해 확인응답 메시지(ACK)가 HELLO 메시지에 응답하여 다시 제 1 디바이스(102)로부터 수신되었는지 여부를 결정하게 한다. 상기 ACK 메세지는 ACK의 type 필드, 제 1 디바이스(102)에 대한 uuid(194) 및 HELLO 메시지의 RequestType 포함하는 ack 필드에 대응하는 값[9,194,1]을 포함할 것이다. 상기 값을 포함한 ACK 메시지가 타임아웃 내에 수신되지 않으면, 블록(610)은 마이크로프로세서(202)에 명령해 블록(608)으로 복귀시키고 HELLO 메시지가 재전송된다. 미리 정의된 시간 최대값 이상에서 타임아웃이 발생하는 경우, 블록(610)은 마이크로프로세서(202)에 명령해 제 1 디바이스(102)로의 접속을 포기하고 마이크로프로세서(202)에 명령해 도 4의 클러스터 형성 프로세서(400)의 블록(410)으로 다시 복귀시킨다.
상기 값들을 포함하는 ACK 메시지가 타임아웃 내에 수신되면, 블록(610)은 마이크로프로세서(202)가 블록(612)으로 향하게 명령한다. 블록(612)은 마이크로프로세서(202)가 제 2 디바이스(104)에 저장된 접속 리스트를 업데이트하도록 지시한다. 다시 도 5를 참조하면, 제 2 디바이스(104)에 대한 접속 리스트(520)는 접속 리스트(500)에 대한 복수의 필드(502)에 대응하는 복수의 필드(522)를 포함한다. 접속 리스트(520)는 제 2 디바이스(104) 자체에 대한 제 1 및 제 2 엔트리(524, 526)를 포함하는데, 이 실시예에서는 할당된 uuid(605)를 갖는다. 제 2 디바이스(104)는 또한 엔트리(524, 526)에 반영된 바와 같이 2개의 상이한 IP 주소를 할당되었다. isMaster 필드는 제 2 디바이스(104)가 현재 클라이언트 모드로 설정되었음을 나타내는 FALSE로 설정된다. 제 2 디바이스(104)가 라우터 모드에 있지 않기 때문에 isRouter 필드는 FALSE로 설정된다. 엔트리(524, 526)에 대한 hwAddress는 제 2 디바이스(104)의 하드웨어 식별자를 반영한다. 따라서, 블록(612)은 마이크로프로세서(202)에 명령해 접속 리스트(520)에 엔트리(528)를 추가하고, 상기 엔트리는 제 1 디바이스(102)에 대한 uuid(194), 제 1 디바이스에 대한 ipaddr 및 nexthop IP 주소, 제 1 디바이스가 액세스 포인트 모드로 있고 라우터가 아니며 제 1 디바이스의 hwAddress라는 표시를 포함한다.
그런 후, 클라이언트 프로세스(600)는 블록(614)에서 계속되고, 상기 블록은 마이크로프로세서(202)에 명령해 (도 2에 도시된) 비휘발성 플래시 메모리(210)에 저장된 접속 액세스 포인트 리스트(250)에 제 1 디바이스(102)를 추가한다. 액세스 포인트 모드에서 여러 디바이스가 동일한 SSID "WAVE-*"에 네트워크 서비스를 제공할 수 있기 때문에, 각 액세스 포인트 디바이스를 고유하게 식별하기 위해 추가 정보가 필요하다. 일 실시예에서, 기본 서비스 세트 식별자(BSSID)가 SSID "WAVE-*"에 네트워크 서비스를 제공하는 다른 액세스 포인트를 고유하게 식별하기 위해 사용된다. 비휘발성 플래시 메모리(210)에 접속된 액세스 포인트 리스트(250)는 접속된 액세스 포인트에 대한 uuid 및 BSSID 값을 저장하는데 사용된다. BSSID는 디바이스에 할당된 고유 미디어 액세스 컨트롤(MAC) 주소이고 모두 무선 데이터 패킷으로 전송된다. 도 3을 다시 참조하면, 연결된 액세스 포인트 리스트(540)의 예가 540으로 도시되어 있다. 연결된 액세스 포인트(540)는 엔트리와 관련된 사용자 식별자를 저장하기 위한 uuid 필드 및 액세스 포인트 디바이스의 BSSID 식별자를 저장하기 위한 hwAddress 또는 BSSID 필드를 포함해 2개의 필드를 포함한다. 따라서, 블록(614)은 제 2 디바이스(104)의 마이크로프로세서(202)에 명령해 제 1 디바이스(102)에 대해 엔트리(544)를 추가하게 한다.
따라서, 제 1 디바이스(102)와 제 2 디바이스(104)가 접속되어 네트워크 클러스터(100)를 형성하고, 블록(612)은 마이크로프로세서(202)에 명령해 블록(616)을 향하게 한다. 블록(616)은 마이크로프로세서(202)에 명령해 다른 디바이스들을 검색하는 것, 네트워크 클러스터(100)에 있는 디바이스들 간에 텍스트, 오디오, 이미지 파일, 비디오 및 기타 콘텐트를 전송하는 것과 같이 네트워크 클러스터(100)를 이용해 통상적인 동작을 개시하게 한다.
블록(616)은 또한 마이크로프로세서(202)에 명령해 SSID "WAVE-*"에 네트워크 서비스를 제공하는 다른 디바이스을 계속 스캔하게 한다. 도 3을 참조하면, 제 2 디바이스(104)는 제 1 디바이스(102) 및 또한 액세스 포인트 모드로 설정된 제 1 주변 디바이스(300) 모두의 접속 범위에 있을 수 있다. 제 1 주변 디바이스(300)는 제 1 디바이스(102)의 범위 밖에 있을 수 있어 제 1 디바이스(102)에 의해 스캔으로 감지되지 않을 것이다. 제 2 디바이스(104)가 제 1 주변 디바이스(300)를 감지하면, 제 2 디바이스는 상기 제 1 주변 디바이스를 네트워크 클러스터(100)에 링크시켜 병합된 네트워크 클러스터(306)를 형성하도록 시도한다. 제 2 디바이스(104)는 먼저 제 1 디바이스(102)로부터 업데이트된 접속 리스트를 요청한다. 그런 후 제 2 디바이스(104)는 제 1 디바이스(102)로부터 접속해제되고, 제 1 주변 디바이스(300)에 접속되어, 상기 제 1 주변 디바이스에 접속되어 있는 디바이스의 사용자 식별자를 포함하는 접속 리스트를 요청한다. 제 2 디바이스(104)는 제 1 디바이스에 대한 접속 리스트를 제 3 디바이스에 제공하여 제 3 디바이스 상에 접속 리스트의 업데이트를 용이하게 한다. 마지막으로, 제 2 디바이스(104)는 제 1 디바이스(102)에 재접속되고 상기 제 1 주변 디바이스(300)에 대한 접속 리스트를 상기 제 1 디바이스에 제공하여 상기 제 1 디바이스 상에 접속 리스트의 업데이트를 용이하게 한다. 따라서, 제 1 디바이스(102) 및 제 1 주변 디바이스(300) 각각은 병합된 네트워크 클러스터(306)에서 디바이스들 간에 라우팅을 용이하게 하기 위해 서로 접속된 디바이스 uuids를 반영하도록 업데이트된다. 예컨대, 제 2 주변 디바이스(302)가 제 1 주변 디바이스(300)와 네트워크 클러스터(304)를 이미 형성했다면, 주변 네트워크 클러스터와 네트워크 클러스터(100)는 병합되어 병합된 네트워크 클러스터(306)를 형성할 것이다. 네트워크 클러스터(100) 내의 디바이스(106)가 제 2 주변 디바이스(302)에 데이터를 전송하기를 원하면, 제 1 디바이스(102)는 제 2 주변 디바이스를 인식하고 제 1 디바이스(102), 제 2 디바이스(104) 및 제 1 주변 디바이스(300)를 통해 데이터를 제 2 주변 디바이스에 보낼 수 있을 것이다.
도 6의 클라이언트 프로세스(600)를 더 참조하여 상기 프로세스를 보다 상세하게 설명한다. 도 6을 다시 참조하면, 블록(618)은 마이크로프로세서(202)에 명령해 임의의 감지된 주변 디바이스(즉, 디바이스(102) 이외의 디바이스)가 액세스 포인트 모드로 설정되어 SSID "WAVE-*"와 관련된 네트워크 서비스를 제공하는지 여부를 결정하게 한다. 네트워크 클러스터(100)는 SSID "WAVE-*"에 기초하여 형성되기 때문에, 제 2 디바이스(104)는 액세스 포인트 모드로 SSID "WAVE-*"에 대한 서비스를 제공하는 디바이스를 구별할 수 없을 것이며 디바이스에 대한 BSSID는 다른지 여부를 결정할 필요가 있을 수 있다. 따라서, 블록(618)은 마이크로프로세서(202)에 명령해 수신된 데이터 패킷에서 BSSID를 판독하고 상기 BBSID 값을 접속된 액세스 포인트 리스트(540)에서 엔트리(544)에 있는 제 1 디바이스(102)에 저장된 BBSID와 비교한다.
블록(618)에서 SSID "WAVE-*"에 네트워크 서비스를 제공하는 주변 디바이스들이 전혀 감지되지 않으면, 네트워크 클러스터(100)의 정상 동작이 블록(616)에서 계속된다. 블록(618)에서 주변 디바이스가 SSID "WAVE-*"에 네트워크 서비스를 제공하면, 마이크로프로세서는 도 8과 연계하여 후술된 클라이언트 라우터 프로세스(800)를 실행하도록 지시받는다. 도 3을 다시 참조하면, 제 1 주변 디바이스(300)는 제 2 디바이스(104)의 범위에 도시되어 있으나 반드시 제 1 디바이스(102)의 범위내에 도시될 필요는 없다. 클라이언트 라우터 프로세서가 도 8a-도 8c에 도시되어 있다. 도 8a를 참조하면, 프로세스(800)는 블록(802)에서 시작하고, 상기 블록은 마이크로프로세서(202)에 명령해 제 1 디바이스(102)에 NOTIFY 요청을 전송하게 한다. 도 6을 다시 참조하면, 메시지 프로토콜(700)에 따라 NOTIFY 요청은 type 필드(704), uuid 필드(706) 및 peer 필드(716)를 포함한다. peer 필드(716)는 제 2 디바이스(104)에 의해 조우된 다른 디바이스들에 대한 복수의 사용자 식별자와 각 디바이스에 대한 각각의 IP 주소를 보유하기 위해 사용된다. peer 메시지 타입은 peer이고, peer uuid 및 상기 디바이스에 도달할 수 있는 IP 주소 리스트 addr를 포함한 것으로 724로 정의된다. 따라서, 블록(802)에서 송신된 NOTIFY 메시지는 값을 [8,605]를 포함할 수 있으며, 피어 디바이스가 아직 네트워크 상에 전혀 발견되지 않았고 필드(716)의 "반복" 성향은 값을 필요로 하지 않기 때문에 peer 필드(716)는 값을 갖지 않는다.
그 후, 블록(804)은 마이크로프로세서(202)에 명령해 접속 리스트가 블록(802)에서 NOTIFY 요청의 전송을 통해 끌어낸 NOTIFY 응답에서 제 1 디바이스(102)로부터 수신되었는지 여부를 판단한다. NOTIFY 응답이 타임아웃 후에 제 1 디바이스(102)로부터 수신되지 않았다면, 블록(804)은 마이크로프로세서(202)가 다시 블록(802)으로 향하도록 명령하고 NOTIFY 요청이 재전송된다. 블록(804)에서 시도의 사전정의된 최대값에 도달한 경우, 블록(804)은 마이크로프로세서(202)가 다시 블록(616)으로 향하도록 명령하고 정상 동작이 재개된다. 블록(804)에서 NOTIFY 응답이 제 1 디바이스(102)로부터 수신되는 경우, 프로세스(800)는 블록(806)에서 계속된다. NOTIFY 응답은 NOTIFY 요청과 동일한 프로토콜을 갖는다. 블록(806)은 마이크로프로세서(202)에 명령해 ACK 응답[9,605,8]에서 NOTIFY 요청을 확인응답한다. 이 경우, 제 2 디바이스(104)는 아직 라우터로 구성되지 않으나, 그렇게 하는 것도 방법이다. 블록(806)은 또한 마이크로프로세서(202)에 명령해 접속 리스트를 업데이트하여 NOTIFY 응답에 포함되고 디바이스(104) 상의 접속 리스트에 벌써 반영되지 않은 임의의 peer 디바이스들을 추가한다. 이 실시예에서, 제 2 디바이스(104)가 제 1 주변 디바이스(300)와 같이 액세스 포인트 모드의 제 2 디바이스를 조우하면, 액세스 포인트 디바이스의 BSSID의 리스트가 생성되고, 블록(806)은 마이크로프로세서(202)에 명령해 제 1 디바이스(102)를 BSSID 리스트에 추가한다.
블록(808)은 마이크로프로세서(202)에 명령해 액세스 포인트 모드(제 1 AP)의 제 1 디바이스(102)로부터 분리시키고, 제 1 주변 디바이스(300)에 접속시키게 한다. 블록(808)은 또한 마이크로프로세서(202)에 명령해 제 1 주변 디바이스(300)(주변 AP)와 결합 및 접속시킨다. 블록(602 및 604)과 연계해 상술한 바와 같이, 결합은 데이터 링크 계층에서의 무선 링크를 구축하는 것을 포함하고 접속은 네트워크 계층에 연결하는 것, 즉 제 1 주변 디바이스(300)에서 실행되는 DHCP 서버로부터 IP 주소를 획득하고, 제 1 주변 디바이스의 IP 주소를 획득하는 것을 포함한다.
그런 다음, 클라이언트 라우터 프로세스(800)는 블록(810)에서 계속되고, 상기 블록은 마이크로프로세서(202)에 명령해 성공적인 네트워크 접속이 구축되었는지 여부를 결정하게 한다. 블록(810)에서 네트워크 접속이 성공적으로 완료되지 못하면, 마이크로프로세서(202)는 본 명세서에 후술된 도 8c의 블록(834)으로 향한다.
블록(810)에서 네트워크 접속이 성공적으로 완료되면, 마이크로프로세서(202)는 블록(802)으로 지향되고, 상기 블록은 상기 마이크로프로세서가 NOTIFY 요청을 제 1 주변 디바이스(300)에 전송하게 한다. 이 경우, NOTIFY 요청은 값[8,605,194,192168000001], 즉, type NOTIFY, 제 2 디바이스(104)의 uuid(605), 및 제 1 디바이스의 uuid(194)와 addr을 포함할 것이다. 블록(804)에서 추가 피어 디바이스가 제 1 디바이스(102)로부터 수신된 원래 NOTIFY 응답에 포함되었다면, 다른 uuid 및 addr 값들이 NOTIFY 요청에서 제 1 디바이스의 uuid와 addr에 잇따를 것이다.
도 4를 다시 참조하면, 제 1 주변 디바이스(300)는 클러스터 형성 프로세서(400)를 실행할 것이며, 블록(418)에서 ANOTIFY 요청이 제 2 디바이스(104)로부터 수신되는 경우, 제 1 주변 디바이스는 ACK 메시지로 상기 요청에 확인응답할 것이다. 그런 후, 블록(422)은 제 1 주변 디바이스(300)의 마이크로프로세서(202)에 명령해 접속 리스트가 상기 NOTIFY 메시지에 포함되는지 여부를 결정하게 한다. 블록(422)에 접속 리스트가 포함되어 있는 경우, 마이크로프로세서(202)는 블록(44)으로 보내지고, 상기 블록은 마이크로프로세서가 제 1 주변 디바이스에 저장된 접속 리스트를 업데이트하게 하고 제 2 디바이스(104)를 라우터로 플래그하게 한다(즉, 제 2 디바이스에 대한 isRouter 필드가 TRUE로 설정된다). 추가로, 블록(424)도 또한 마이크로프로세서(202)에 명령해 제 2 디바이스가 네트워크에 있는 다른 디바이스에 접속되는 동안 제 2 디바이스를 통해 라우팅되는 데이터 패킷을 보유하기 위해 비휘발성 플래시 메모리(210)(도 2)에 있는 큐 저장소(246) 내의 큐를 상기 제 2 디바이스(104)에 할당하게 한다. 그런 후, 블록(424)은 마이크로프로세서(202)에 명령해 제 1 주변 디바이스(300)의 접속 리스트를 제 2 디바이스(104)로 전송하게 한다.
블록(422)에서 접속 리스트가 포함되지 않은 경우, 제 2 디바이스(104)가 막 분리되고 액세스 포인트 모드로 다른 장치(이 경우 제 1 디바이스(102))와 연결되며 프로세스가 블록(428)에서 계속될 것임이 통보되도록 제 1 주변 디바이스(300)에 의해 NOTIFY 메시지가 해석된다. 블록(428)은 마이크로프로세서(202)에 명령해 제 제 1 주변 디바이스(300)에 저장된 접속 리스트에 있는 엔트리를 "일시 정지(paused)"로 플래그한다. 이런 조건 하에서, 디바이스가 제 1 주변 디바이스에 재접속될 때까지 제 2 디바이스(104)에 대한 데이터 트래픽이 상기 디바이스에 대한 라우터 큐(246)에 캐시된다. 블록(428)은 또한 마이크로프로세서(202)가 블록(426)으로 향하게 하고, 상기 블록은 마이크로프로세서(202)에 명령해 제 1 주변 디바이스(300)에 대한 접속 리스트를 제 2 디바이스(104)에 전송하게 한다.
프로세스(800)는 블록(814)(도 8a)에서 계속되고, 상기 블록은 마이크로프로세서(202)에 명령해 제 1 주변 디바이스(300)에 의해 전송된 접속 리스트(도 4의 블록(426))가 수신되었는지를 판단하게 한다. 접속 리스트가 타임아웃의 만료 전에 수신되지 않으면, 블록(814)은 마이크로프로세서(202)가 블록(812)으로 다시 향하게 하고 NOTIFY 요청이 재전송된다. 최대 시도 후에, 접속 리스트가 여전히 블록(814)에 수신되지 않았다면, 블록(814)은 마이크로프로세서(202)가 도 8c의 블록(834)으로 향하게 한다.
블록(814)에서 접속 리스트가 수신된 경우, 마이크로프로세서(202)는 도 8b에 도시된 블록(816)으로 지향된다. 블록(816)은 마이크로프로세서(202)가 NOTIFY 응답의 수신을 확인하게 하고 제 2 디바이스(104)에 접속 리스트를 업데이트하게 한다. 도 5를 다시 참조하면, 제 2 디바이스(104) 상의 접속 리스트(520)는 348의 사용자 식별자와 192.168.10.1의 IP 주소를 갖는 제 1 주변 디바이스(300)에 대한 새로운 엔트리(530)를 포함한다. 엔트리(530)는 또한 IP 주소이고 isMaster 필드는 상기 디바이스가 액세스 포인트 모드임을 나타내기 때문에 제 1 주변 디바이스(300)에 대한 nexthop을 열거한다.
블록(816)은 또한 마이크로프로세서(202)에 명령해 제 1 주변 디바이스(300)를 접속된 액세스 포인트 BSSID의 리스트에 추가하게 하고, 도 2에 도시된 비휘발성 플래시 메모리(210)의 큐 저장소(246)에서 제 1 주변 디바이스(300)에 대한 포워딩 큐를 할당하게 한다. 그런 후, 프로세서(202)는 블록(818)에서 계속되고, 상기 블록은 마이크로프로세서(202)에 명령해 제 1 주변 디바이스(300)로부터 분리하고 제 1 디바이스(102)와 결합 및 재접속하게 한다. 제 1 디바이스(102)와 재접속이 성공적이지 않으면, 블록(820)은 마이크로프로세서(202)가 도 8c의 블록(834)을 향하게 한다. 그러나, 재접속이 성공적이면, 블록(820)은 마이크로프로세서(202)가 블록(822)으로 향하게 명령하고, 제 2 디바이스(104)는 제 1 디바이스에 접속된 다른 디바이스들과 관련된 엔트리를 제 1 디바이스(102)로 다시 보내 제 1 디바이스 상에 접속 리스트를 업데이트시킨다. 따라서, 블록(822)은 제 2 디바이스(104)의 마이크로프로세서(202)에 명령해 NOTIFY 요청을 제 1 디바이스(102)로 전송한다. NOTIFY 요청은 제 1 주변 디바이스(300)에 접속된 (있다면) 다른 디바이스들에 대한 사용자 식별자와 관련된 IP 주소를 갖는 peer 필드(716)를 포함할 수 있다. NOTIFY 요청 수신시 제 1 디바이스(102)는 상기 디바이스가 현재 클라이언트 라우터 모드로 설정된 것을 나타내며 제 2 디바이스(104)에 대한 엔트리(508)에 isRouter 필드를 "TRUE"로 설정할 것이다. 블록(822)은 또한 마이크로프로세서(202)에 명령해 NOTIFY 요청의 승인을 대기하게 한다.
클라이언트 라우터 프로세스(800)의 이 단계에서, 제 2 디바이스(104)는 액세스 포인트 모드로 2개의 디바이스(제 1 디바이스(102) 및 제 1 주변 디바이스(300))와 관련되고 각 액세스 포인트 디바이스는 각각의 액세스 포인트에 접속된 디바이스뿐만 아니라 다른 액세스 포인트에 접속된 디바이스를 인식하도록 디바이스들 간에 현재 접속 리스트를 교환한다. 따라서, 제 1 디바이스(102)에 업데이트 된 접속 리스트가 초기 네트워크 클러스터(100)를 넘어 확장되는 병합 네트워크 클러스터 접속을 정의한다.
클라이언트 라우터 프로세스(800)는 블록(824)에서 계속되고, 상기 블록은 마이크로프로세서(202)에 명령해 클라이언트 라우터 모드로 제 2 디바이스(104)를 설정하게 하며, 상기 디바이스는 데이터 트래픽을 수신하고 제 1 디바이스(102)에 대해 블록(806)에서 그리고 제 1 주변 디바이스(300)에 대해 블록(816)에서 할당된 하나 이상의 포워딩 큐에 데이터를 기록한다. 수신된 데이터 트래픽은 일반적으로 목적지 사용자 식별자(uuid)를 가질 것이다. 제 2 디바이스(104)는 사용자 식별자가 접속 리스트(520)에 나타나는지 여부를 판별하여, 발견된 경우, nexthop 필드의 값, 즉, 사용자 식별자와 관련된 디바이스에 도달하는데 사용될 수 있는 액세스 포인트 모드로 있는 디바이스의 IP 주소에 해당하는 큐에 데이터를 기록한다.
비휘발성 플래시 메모리(210)의 큐 저장소(246)에서의 큐는 제한된 메모리 용량이 할당될 수 있고, 특히 큰 데이터 트래픽이 수신되는 경우 가득 찰 수 있다. 이 실시예에서, 큐가 가득 차 있는지 여부에 무관하게 액세스 포인트 모드의 디바이스들 간에 스위칭에 대한 스위치 타임이 또한 정의된다. 블록(826)에 할당된 큐가 가득 차 있지 않고 스위치 타임이 만료되지 않은 경우, 마이크로프로세서(202)는 블록(824)으로 다시 지향되며, 상기 제 2 디바이스(104)는 라우팅 동작을 계속한다. 블록(826)에할당된 큐 중 어느 하나가 가득 차거나 스위치 타임이 만료된 경우, 마이크로프로세서(202)는 블록(828)으로 지향된다. 블록(828)은 마이크로프로세서(202)에 명령해 제 2 디바이스(104)를 현재의 액세스 포인트 디바이스(즉, 제 1 디바이스(102))로부터 분리시키게 하고 다른 액세스 포인트 디바이스에 결합 및 접속하게 한다. 예를 들어, 제 1 주변 디바이스(300)에 대한 큐가 가득 차면, 제 2 디바이스(104)의 마이크로프로세서(202)가 제 1 주변 디바이스에 접속하게 지시된다. 스위치 타임이 만료되면, 마이크로프로세서(202)는 제 2 디바이스(104)를 접속 리스트에 나타난 (즉, 접속 리스트(520)에서 isMaster 필드에 있는 TRUE 값에 의해 식별된) 다음 액세스 포인트 디바이스에 접속하게 할 수 있다. 그런 후, 블록(830)은 마이크로프로세서(202)에 명령해 접속이 가령 제 1 주변 디바이스(300)와 성공적으로 완료되었는지 판단하게 한다. 블록(830)에서 접속이 가령 네트워크 클러스터(100) 범위 밖으로 이동했거나 네트워크 클러스터로부터 접속이 끊어진 제 1 주변 디바이스(300)로 인해 성공적으로 완료되지 못했다면, 마이크로프로세서(202)는 도 8c에서 블록(834)으로 지향된다. 블록(830)에서 접속이 성공적으로 완료되면, 마이크로프로세서(202)는 블록(832)로 지향되고 제 1 주변 디바이스(300)에 대한 큐 데이터가 전송되고 마이크로프로세서는 블록(824)으로 지향된다. 그런 후, 라우터 동작은 제 2 디바이스(104)가 지금 제 1 디바이스(102)에 접속되고 제 1 주변 디바이스(300)를 통해 데이터 트래픽을 수신하며 제 1 디바이스(102)와 같은 액세스 포인트 모드의 다른 디바이스들의 큐에 데이터를 기록하는 것을 제외하고 블록(824)에서 계속된다.
제 1 주변 디바이스(300)는 클라이언트 라우터 모드이든 아니든 클라이언트 모드로 복수의 디바이스에 연결될 수 있다. 예를 들어 제 2 주변 디바이스(302)는 클라이언트 모드로 설정될 수 있으며, 상기 제 1 주변 디바이스(300)에 접속될 수 있다. 따라서, 제 1 주변 디바이스(300) 및 제 2 주변 디바이스(302)가 제 2 주변 네트워크 클러스터(304)를 형성하고 네트워크 클러스터(100) 및 인접 네트워크 클러스터는 병합된 클러스터 네트워크(306)를 형성한다. 액세스 포인트 모드의 다른 디바이스가 제 3 주변 디바이스(308)와 같이 제 1 디바이스(102)의 범위 내에 있는 경우, 제 1 디바이스는 또한 병합 네트워크 클러스터(306)를 더 확장한 이들 디바이스들에 대한 라우터로서 작용할 수 있다.
도 8c를 참조하면, 도 8a의 블록(810 및 814) 및 도 8b의 블록(820 및 830에서 발생할 수 있는 액세스 포인트 모드의 디바이스들에 성공적이지 못한 접속 및/또는 NOTIFY 요청에 대한 응답 결여(즉, 액세스 포인트 디바이스로부터 수신된 접속 리스트가 전혀 없음)를 다루는 클라이언트 라우터 프로세스(800)의 일부가 도시되어 있다. 무선 범위 밖으로 이동한 액세스 포인트 디바이스에 의해 액세스 포인트 모드의 디바이스로부터 접속 또는 응답을 수신하는 데 실패가 야기될 수 있고, 상기 액세스 포인트 디바이스는 (도 4의 블록(402)에서 개시된) 애플리케이션을 종료하거나, 액세스 포인트 디바이스는 클라이언트 모드로 전환되거나, 몇몇 다른 통신이 실패한다. 블록(834)은 제 2 디바이스(104)의 마이크로프로세서(202)에 명령해 액세스 포인트 모드의 임의의 다른 디바이스가 접속된 액세스 포인트 리스트에 유지된 채 있는지 여부를 판단하게 한다. 접속된 액세스 포인트 리스트가 비어 있으면, 블록(834)은 마이크로프로세서(202)에 명령해 도 4의 블록(410)으로 다시 지향시키고, 제 2 디바이스(104)는 액세스 포인트 모드로 설정되며, SSID "WAVE-*"의 네트워크 서비스를 제공한다.
블록(834)에서 적어도 하나의 액세스 포인트가 접속된 액세스 포인트 리스트에 여전히 남아 있는 경우, 마이크로프로세서(202)는 블록(836)으로 지향되고, 상기 블록은 제 2 디바이스(104)가 접속된 액세스 포인트 리스트에 있는 다른 액세스 포인트 디바이스와 결합 및 접속하게 한다. 그런 후, 블록(838)은 마이크로프로세서(202)에 명령해 접속이 성공적으로 완료되었는지를 판단하게 하고, 이 경우 마이크로프로세서는 도 6의 블록(616)으로 지향되고 정상적인 네트워크 동작이 클라이언트 모드로 재개된다. 블록(838)에서 접속이 성공적으로 완료되지 않았다면, 프로세스는 블록(840)에서 계속되며, 상기 블록은 마이크로프로세서(202)가 액세스 포인트 디바이스에 대한 접속된 액세스 포인트 리스트 내의 엔트리를 제거하도록 명령한다. 블록(838)은 또한 마이크로프로세서가 액세스 포인트 디바이스와 결합된 접속 리스트(520) 내의 임의의 라우팅 엔트리를 제거하도록 명령하며, 제거된 액세스 포인트 디바이스에 대응하는 nexthop 주소를 가질 것이다. 그런 다음, 블록(840)은 마이크로프로세서(202)를 블록(834)으로 복귀시키고 프로세스(800)의 블록들(834-840)이 반복된다. 따라서, 제 2 디바이스(104)는 액세스 포인트 디바이스가 여전히 도달가능하거나 접속된 액세스 포인트 리스트가 비어있는 것으로 발견될 때까지 접속된 액세스 포인트 리스트에 있는 액세스 포인트 디바이스와의 연결 및 접속을 시도한다. 접속된 액세스 포인트 리스트가 비어있는 경우, 제 2 디바이스(104)는 더 이상 네트워크 클러스터(100)에 접속을 하지 않으며, 따라서 디바이스는 액세스 포인트 모드로 네트워크 클러스터를 재설정하도록 구성된다.
도 3을 다시 참조하면, 상술한 실시예들은 네트워크 클러스터(100), 주변 네트워크 클러스터(304)를 구축하고 상기 클러스터를 병합해 병합된 네트워크 클러스터(306)를 형성하는 데 있어 다양한 디바이스들에 대한 기능을 상세히 설명한다. 병합된 네트워크 클러스터(306)를 확장시켜 광범위한 영역에 걸쳐 접속된 복수의 디바이스들을 포함하도록 다른 네트워크 클러스터들이 병합될 수 있고, 적어도 일부 디바이스는 다른 디바이스의 무선 범위를 벗어나지만 여전히 병합된 네트워크 클러스터(306)를 통해 도달될 수 있다. 도 9를 참조로, 병합된 네트워크 클러스터(306) 상의 특정 디바이스의 위치를 알아내는 것과 관련된 부가 기능을 설명한다. 예를 들어, 디바이스(106)는 제 2 주변 디바이스(302)와 접촉하기를 원할 수 있다. 디바이스(106)가 병합된 네트워크 클러스터(306) 상의 제 2 주변 디바이스(302)와 이전에 마주쳤다면, 디바이스(106)에 저장된 접속 리스트는 제 2 주변 디바이스(즉, uuid(325))의 엔트리가 될 것이다. 그러나, 제 2 주변 디바이스(302)에 대한 접속 리스트에 엔트리가 없다면, 디바이스(106)는 제 2 주변 디바이스(302)와 관련된 정보를 포함하는 FIND 요청을 생성하여 제 1 디바이스102)로 전송한다. 다시 도 7을 참조하면, 메시지 프로토콜(700)은 peerID 필드(710)를 포함하며, 상기 필드는 병합된 네트워크 클러스터(306)에 위치하도록 요망되는 의도된 수신자 디바이스의 사용자 식별자에 대한 값을 보유한다. 메시지 프로토콜(700)은 또한 네트워크 클러스터(100)에 접속된 디바이스들 상에 발견하도록 요망되는 DiscoverType 목록(726)과 함께 선택적으로 컨텐트의 타입을 정의하는 discovery_type 필드(712)를 포함한다. 메시지 프로토콜(700)은 요청이 반복적 루핑 발견 과정을 야기하는 것을 막기 위해 검색되어야 하는 호프의 개수(가령 8개 호프)를 제한하는 limit 필드(714)를 더 포함한다. peerID 필드(710)는 "반복된" 규칙에 의해 시작되고, 따라서 접촉하고자 하는 다수의 사용자 식별자를 포함할 수 있으며, 따라서 uuid에 의해 복수의 다른 디바이스를 동시에 검색할 수 있게 한다. 따라서, 제 2 주변 디바이스(302)에 접촉하기 위해, FIND 메시지는 값 [5,278,325,0,8]을 포함할 것이고, 여기서 "5"는 FIND 요청 타입이고, uuid는 디바이스(106)에 대해 278이고, 위치되어 있는 디바이스에 대한 uuid는 325이며, "0"은 네트워크 클러스터(100)상의 다른 사용자를 위해 있는 것으로 discovery 타입을 정의하고, limit는 "8"로 설정된다.
도 9를 참조하면, FIND 요청을 처리하기 위해 제 1 디바이스(102)에 의해 실행되는 프로세스가 전반적으로 900으로 도시되어 있다. find 프로세스(900)는 블록(902)에서 시작되고, 상기 블록은 제 1 디바이스(102)의 마이크로프로세서(202)를 명령해 클라이언트 모드로 설정되고 제 1 디바이스에 접속되는 발신 디바이스(106)로부터의 FIND 요청을 수신하게 한다.
블록(904)은 제 1 디바이스(102)의 마이크로프로세서(202)에 명령해 FIND 요청으로부터 의도된 수신자 디바이스의 uuid를 판단하게 한다. 그런 다음, 블록(906)은 마이크로프로세서(202)에 명령해 의도된 수신자 디바이스(즉, 이 경우 제 2 주변 디바이스(302))의 uuid가 접속 리스트(500)에 있는지를 판단하게 한다. 이 경우, uuid(325)는 접속 리스트(520)에서 512에 나타나고 블록(906)은 마이크로프로세서(202)를 블록(908)으로 향하게 한다. 블록(908)은 마이크로프로세서(202)에 명령해 uuid(325)에 대한 접속 리스트 엔트리(512)(도 5에 도시됨)의 lastheard 시간이 만료되었는지 판단하게 한다. 일 실시예에서, 만료 시간은 접속 리스트(520)의 엔트리들에 대해 미리 정의될 수 있다. 또한, 액세스 포인트 모드의 각 디바이스는 접속 리스트에 있는 엔트리를 갖는 디바이스로부터 메시지가 수신될 때의 당시 시간으로 lastheard 필드를 업데이트하도록 구성될 수 있다. 블록(908)에서 lastheard 시간이 uuid(325)에 대해 만료되면, 제 1 디바이스(102)는 제 2 주변 디바이스(302)로의 병합된 네트워크 클러스터(306) 상의 경로를 발견하기 위한 프로세스(1000)를 개시한다. 프로세스(1000)는 도 10을 참조로 아래에 기술되어 있다. 일 실시예에서, 만료 시간이 설정될 수 있고 약 10 분 내지 1 시간의 범위 내에 있을 수 있다.
블록(908)에서, uuid(325)에 대한 lastheard 시간이 아직 만료되지 않았다면, 프로세스는 블록(910)에서 계속되고, 마이크로프로세서(202)에 명령해 FIND 응답 메시지를 디바이스(106)에 전송하게 한다. 따라서, 이 경우, uuid가 네트워크 클러스터(100) 상에서 최근에 마주친 디바이스는 여전히 접속되어 있는 것으로 추정될 수 있다.
도 7을 참조하면, 메시지 프로토콜(700)의 FIND 응답 메시지는 type 필드(704), uuid 필드(706) 및 peer 필드(716)를 포함한다. peer 필드(716)는 "반복 된" 규칙에 의해 시작되고 724에서 정의된 타입을 갖는다. 각각의 peer 필드 값은 의도된 수신자 디바이스로 데이터를 라우팅하기 위한 uuid 및 IP 주소 addr를 포함한다. 따라서, 제 2 주변 디바이스(302)에 대해, FIND 응답은 값 [6,194,325,192168000001]을 가지며, 여기서 마지막 값은 제 2 주변 디바이스(302)로 데이터를 라우팅하기 위한 nexthop 주소를 나타내는 제 1 디바이스(102)의 IP 주소이다. 도 5로 돌아가면, 제 1 디바이스(102)에 대한 접속 리스트(500)에 있는 엔트리(512)는 클라이언트 라우터로서 동작하는 제 2 디바이스(104)의 IP 주소인 192.168.0.10으로 열거된 nexthop을 갖는다. 그러나, 블록(910)에서, 제 1 디바이스(102)는 제 2 주변 디바이스(302)로의 데이터 전송을 위한 nexthop으로서 자신의 IP 주소를 전송하는데, 이는 디바이스(106)가 먼저 임의의 데이터를 제 1 디바이스로 전송해야만 한 다음에 제 2 주변 디바이스 디바이스(106)로 보내질 수 있기 때문이다. 디바이스(106)가 FIND 응답을 수신하면, 제 2 주변 디바이스(302)에 대한 엔트리를 포함하도록 접속 리스트가 업데이트될 것이다. 따라서, 디바이스(106)는 제 2 주변 디바이스(302)로 전송하기 위해 제 1 디바이스(102)의 nexthop IP 주소를 저장한다.
블록(906)에서, 의도된 수신자 디바이스의 uuid 가 접속 리스트(500)에서 발견되지 않았다면, 블록(906)은 마이크로프로세서(202)에 명령해 제 2 주변 디바이스로의 병합된 네트워크 클러스터(306)상의 경로를 발견하기 위해 도 10의 프로세스(1000)를 실행하게 한다. 도시된 실시예에서, 제 1 디바이스(102)는 주변 네트워크 클러스터(304) 및 네트워크 클러스터(100)가 병합되었을 때 이미 제 2 주변 디바이스(302)에 대한 정보를 수신했다. 그러나, 클러스터가 병합되었을 때 제 2 주변 디바이스(302)가 제 1 주변 디바이스(300)에 접속되지 않았고 따라서 접속 리스트(500)에 엔트리(512)가 발견되지 않았다면 논의의 나머지 부분이 진행된다.
도 10을 참조하면, 경로 발견 프로세스가 도 10에서 1000으로 도시되어 있다. 프로세스(1000)는 블록(1002)에서 시작하고, 상기 블록은 제 1 디바이스(102)의 마이크로프로세서(202)에 명령해 병합된 네트워크 클러스터(306)상의 제 2 주변 디바이스(302)를 위치시키기 위한 DISCOVER 요청을 생성해 송신하게 한다. 다시 도 7을 참조하면, DISCOVER 요청은 FIND 요청과 동일한 구문을 가지며, type 필드(704), uuid 필드(706), peerID 필드(710), discovery_type 필드(712) 및 limit 필드(714)를 포함한다. 그러나, DISCOVER 요청은 상기 요청을 수신한 액세스 포인트에 접속된 모든 피어의 리스트를 끌어낸다는 점에서 다르다. FIND 요청은 uuid에 의해 특정 디바이스 또는 디바이스들을 검색하기 위한 것이다. 따라서, DISCOVER 요청은 [3,194,325,0,8] 값을 가질 수 있고, 상기 요청은 isRouter 플래그가 TRUE로 설정된 제 1 디바이스(102)에 접속된 모든 클라이언트 디바이스로 전송되고, 이는 차례로 DISCOVER 요청을 액세스 포인트 모드의 접속된 디바이스들로 보낸다. DISCOVER 요청은 또한 상기 요청에 대한 TTL(Time-To-Live)로 사용되는 응답에 포함된 타임스탬프를 갖는다. 그런 다음, 프로세스(1000)는 블록(1004)에서 계속되고, 상기 블록은 제 1 디바이스(102)의 마이크로프로세서(202)에 명령해 DISCOVER 응답이 송신된 DISCOVER 요청에 응답하여 수신되었는지 여부를 판단하게 한다. DISCOVER 응답이 아직 수신되지 않은 경우, 블록(1004)은 마이크로프로세서(202)가 블록(1002)으로 다시 지향되고 DISCOVER 요청이 재전송된 후에 타임아웃 기간 동안 응답을 계속 대기하게 한다.
도 11을 참조하면, DISCOVER 요청을 수신하는 각각의 디바이스는 프로세스(1100)를 실행한다. DISCOVER 응답 프로세스(1100)는 블록(1102)에서 시작되고, 상기 블록은 수신자 디바이스의 마이크로프로세서(202)가 DISCOVER 요청을 수신하고 요청에서 목적지 uuid를 결정하도록 명령한다. 그런 다음, 블록(1104)은 마이크로프로세서(202)가 목적지 uuid에 대한 엔트리가 디바이스 접속 리스트에 저장되어 있는지 여부를 판단하도록 한다. 목적지 uuid에 대한 엔트리가 있으면, 프로세스는 블록(1106)에서 계속되고, 상기 블록은 마이크로프로세서(202)가 DISCOVER 응답을 생성 및 송신하도록 명령한다. 도 7을 참조하면, DISCOVER 응답은 FIND 응답과 동일한 형태를 가지며, 목적지에 대한 uuid 값 및 addr 값을 갖는 peer 필드(716)를 갖는다. DISCOVER 요청에 응답하는 디바이스는 제 2 주변 디바이스(302)에 대한 엔트리를 갖고 따라서 접속 리스트에 있는 엔트리를 기반으로 목적지 uuid에 대한 임의의 데이터를 보낼 수 있기 때문에, addr 값이 디바이스 자신의 주소로 설정된다. DISCOVER 응답이 다시 발신 디바이스, 즉, 이 경우 제 1 디바이스(102)로 전송된다. 몇몇 경우, DISCOVER 요청은 다수의 클라이언트 라우터와 액세스 포인터를 가로지를 것이며, 요청이 오래되는 것을 방지하기 위해, 수신자 디바이스는 timestamp 필드를 조사하여 사전 결정된 TTL(Time-To-Live)을 기반으로 요청을 처리해야 하는지 여부를 결정한다. 마찬가지로, 발신 디바이스로 다시 전송될 때 DISCOVER 응답은 여러 클라이언트 라우터와 액세스 포인트를 통과할 수 있으며 사전정의된 타임프레임 내에 목적지 uuid에 대한 발견의 반복을 방지하기 위해 응답에 timestamp가 추가된다.
도 10을 다시 참조하면, 블록(1004)에서, 마이크로프로세서(202)가 이전에 전송된 DISCOVER 요청에 대응하는 DISCOVER 응답이 수신되었다고 판단하면, 상기 마이크로프로세서는 블록(1006)으로 지향된다. 블록(1006)은 마이크로프로세서(202)에 명령해 (도 5에 도시된) 제 1 디바이스(102) 상의 접속 리스트(500)를 업데이트시켜 DISCOVER 응답을 기반으로 하고 lastheard 타임으로서 당시 시간을 포함한 제 2 주변 디바이스(302)에 대한 엔트리(512)를 포함하게 한다. 그런 후, 블록(1006)은 마이크로프로세서(202)를 프로세스(900)의 블록(910)으로 지향하게 하여, 디바이스(106)에 FIND 응답 메시지를 전송하게 한다. 디바이스(106)는 이후 병합된 네트워크 클러스터(306)상의 제 2 주변 디바이스(302)에 도달할 수 있다.
도 4를 다시 참조하면, 블록(404)에서, 게이트웨이 프로세스는 제 1 디바이스(102)에 의해 선택적으로 실행될 수 있다. 게이트웨이 프로세스는 셀룰러 데이터 네트워크 또는 SSID "WAVE- *"와 관련되지 않은 다른 무선 액세스 포인트에 접속을 가능하게 한다. 도 12를 참조하면, 게이트웨이 프로세스는 전체적으로 1200으로 도시되어 있다. 게이트웨이 프로세스(1200)는 블록(1202)에서 시작하고, 상기 블록은 마이크로프로세서(202)에 명령해 인터넷으로의 셀룰러 데이터 접속이 디바이스상에서 이용 가능한지 여부를 판단하게 한다. 셀룰러 데이터 접속이 이용 가능한 경우, 블록(1204)은 마이크로프로세서(202)에 명령해 비휘발성 플래시 메모리(210)의 시스템 구성 저장소(248)에 CELL 플래그를 TRUE로 설정하고 큐 저장소(246)에 인터넷 큐를 할당하도록 한다. 그런 후, 프로세스는 블록(1206)에서 계속되고, 상기 블록은 마이크로프로세서(202)에 명령해 인터넷으로의 무선(WiFi) 데이터 접속이 디바이스상에서 이용 가능한지 여부를 판단하도록 한다. WiFi 데이터 접속이 이용 가능한 경우, 블록(1208)은 마이크로프로세서(202)에 명령해 비휘발성 플래시 메모리(210)의 시스템 구성 저장소(248) 내의 WIFI 플래그를 TRUE로 설정하고 큐 저장소(246)에 인터넷 큐를 할당하도록 한다. 그런 다음, 블록(1208)은 마이크로프로세서(202)가 프로세스(400)의 블록(406)으로 복귀하게 명령한다. 블록(1206)에서, 이용 가능한 WiFi 접속이 없다면, 블록(1206)은 마이크로프로세서(202)가 다시 블록(406)으로 복귀하게 한다.
다시 도 6을 참조하면, 블록(616) 다음에, 마이크로프로세서(202)는 도 13에서 1300으로 도시된 게이트웨이 프로세스의 다른 부분을 실행하도록 선택적으로 지향된다. 도 13을 참조하면, 게이트웨이 프로세스(1300)는 블록(1302)에서 시작하고, 상기 블록은 마이크로프로세서(202)에 명령해 비휘발성 플래시 메모리(210)의 시스템 구성 저장소(248) 내의 WIFI 또는 CELL 플래그가 TRUE로 설정되었는지를 판단하게 한다. 어느 하나의 플래그가 TRUE이면, 블록(1304)은 마이크로프로세서(202)에 명령해 인터넷 포워딩 타이머가 만료되었는지 여부를 판단하도록 한다. 인터넷 포워딩 타이머는 인터넷 큐에 데이터의 마지막 포워딩 이후의 시간을 기록하고, 일단 타이머가 사전결정된 한계에 도달하면, 블록(1304)은 마이크로프로세서(202)가 블록(1306)으로 지향하게 한다. 블록(1306)은 마이크로프로세서(202)에 명령해 현재 접속된 액세스 포인트 디바이스로부터 접속을 해제하고 인터넷 게이트웨이가 있는 적용가능한 셀룰러 또는 WiFi 네트워크에 접속하게 한다. 또한, 블록(1306)은 마이크로프로세서(202)에 명령해 적용가능한 네트워크를 통해 인터넷 큐(들)에 데이터를 전송하도록 한다. 이어서, 블록(1306)은 마이크로프로세서(202)를 블록(616)으로 복귀시켜 네트워크 동작을 재개한다. 블록(1302)에서 WiFi 또는 셀룰러 인터넷 접속이 없거나 블록(1304)에서 포워딩 시간이 아직 만료되지 않았다면, 마이크로프로세서(202)는 블록(616)으로 복귀한다.
게이트웨이 프로세스는 인터넷 연결이 있는 디바이스가 병합된 네트워크 클러스터(306)에 접속되지 않을 수 있는 디바이스에 도달할 수 있게 한다.
도 7을 다시 참조하면, 메시지 프로토콜(700)은 또한 type 필드(7)(DATA), 전송 디바이스 사용자 식별자에 해당하는 요구된 uuid 및 728에서 정의된 "Data" 타입을 갖는 반복 데이터 필드(718)를 포함하는 데이터 메시지 타입을 제공한다. 이 실시예에서, Data 타입은 송신되는 데이터 콘텐트의 길이를 유지하기 위한 필요한 필드 길이 및 데이터 바이트 페이로드를 유지하기 위한 콘텐트를 포함하는 몇몇 필드, 및 DiscoverType 목록(726)의 관점에서 텍스트, 이미지, 비디오, 오디오 등으로서 데이터를 정의하는 data_type을 포함한다. 이 실시예에서, Data 타입은 또한 데이터를 일련의 메시지들로 분할함으로써 큰 데이터 파일을 선택적으로 전송하기 위한 seq_number 필드 및 offset 필드를 포함한다. seq_number는 수신자 디바이스에서 데이터 파일을 다시 어셈블하기 위한 일련의 메시지 순서를 식별한다. offset 필드는 메시지 내의 콘텐트 페이로드의 바이트 위치를 정의한다.
따라서, 데이터는 메시지 프로토콜(700)에 따라 메시지의 데이터 필드(718) 내에 캡슐화될 수 있고 네트워크 클러스터(100) 내의 송신 디바이스로부터 메시지 내의 uuid에 의해 식별되는 수신자 디바이스로 송신될 수 있다. 다른 실시예에서, 요청/응답 메시지 프로토콜(700)이 네트워크 클러스터(100)를 구성하는 디바이스들 간의 접속 구축 및 유지 중에 메시지를 교환하기 위해 사용될 수 있지만, 실제 데이터 전송은 (UDP, TCP, RTP 등과 같은) 인터넷 프로토콜 슈트의 일부를 이루는 다른 데이터 프로토콜 또는 프로토콜들을 이용해 발생할 수 있다.
도 3에서, 병합된 네트워크 클러스터(306)는 WiFi(즉, IEEE 802.11 무선 네트워크)를 사용하여 구축되는 것으로 기술되었지만, 상술한 바와 같이, 무선 네트워크는 Bluetooth 및/또는 Wi-Fi Direct와 같은 다른 무선 네트워킹 프로토콜을 이용해 구축될 수 있다. 몇몇 디바이스의 무선 라디오는 클라이언트 모드와 핫스폿 모드에서 동시에 작동하지 못하도록 제조업체에 의해 제한될 수 있다. 도 2에서 200으로 도시된 바와 같은 IEEE 802.11 무선 네트워크 디바이스는 또한 일반적으로 액세스 포인트 모드로 설정된 2개의 상이한 디바이스들에 동시 접속이 제한된다. 도 3에서, 예를 들어, 제 1 디바이스(102) 및 제 1 주변 디바이스(300)가 통신 범위 내에 있다하더라도, 이들은 액세스 포인트 모드로 설정되기 때문에 IEEE 802.11 네트워킹 프로토콜을 사용하여 접속을 구축하지 못할 수 있다. 도 3에 도시된 실시예에서, 제 1 디바이스(102) 및 제 1 주변 디바이스(300)는 제 2 디바이스(104)를 통해 접속되고, 상기 제 2 디바이스는 도 8에 도시된 클라이언트 라우터 프로세스(800)를 실행해 모두 액세스 포인트 모드로 설정된 제 1 디바이스(102) 및 제 1 주변 디바이스(300)에 연결되게 스위치시킨다.
도 14를 참조하면, 다른 실시예에 따른 병합된 네트워크 클러스터(306)의 구축 프로세스가 1400으로 도시되어 있다. 프로세스는 블록(1402)에서 시작하고, 상기 블록은 제 2 디바이스(104)의 마이크로프로세서(202)(도 2)에 명령해 무선 라디오(216)를 활성화시키게 한다. 많은 디바이스들은 Bluetooth, WiFi 및/또는 WiFi Direct 통신이 가능한 무선 라디오 또는 무선 라디오들을 갖는다. 그런 후, 블록(1404)은 마이크로프로세서(202)에 명령해 WiFi Direct 접속을 청취하는 다른 디바이스를 스캔하도록 무선 라디오(216)를 구성하게 한다. 그 다음, 프로세스(1400)는 블록(1406)에서 계속되고, 상기 블록은 마이크로프로세서(202)에 명령해 WiFi Direct 접속을 청취하는 임의의 디바이스가 감지되었는지 판단하도록 한다. WiFi Direct 접속을 청취하는 디바이스가 감지되면, 블록(1406)은 마이크로프로세서(202)가 블록(1412)으로 향하게 하고, 상기 블록은 마이크로프로세서가 다른 디바이스와의 WiFi Direct 접속을 완료하도록 한다.
Wi-Fi Direct 프로토콜의 사용으로 디바이스(104)가 다른 디바이스가 제공한 무선 액세스 포인트를 통해서라기 보다 (디바이스(102 및 300)와 같은) 상기 다른 디바이스와 직접 Wi-Fi 접속이 구축된다. 상술한 WiFi 접속을 한 경우에서처럼, 디바이스는 SSID 브로드캐스트(즉, "Wave- *")를 수행한다. 그러나, 이 경우 SSID 브로드캐스트에는 패스코드 데이터도 또한 포함된다. 병합된 네트워크 클러스터(306)를 구축하기 위한 종래의 WiFi 접속은, 예를 들어, 비휘발성 플래시 메모리(210)의 애플리케이션 저장소(242) 내의 각각의 디바이스 상에 저장될 수 있는 단일 패스코드에 기초하여 이루어질 수 있다. WiFi Direct 접속 실시예에서, 브로드캐스트 패스코드는 또한 무선 범위에 있을 수 있는 다른 디바이스들 간에 다른 WiFi 및 WiFi Direct 접속과 구별하기 위해 난수를 포함하도록 생성될 수 있다. 따라서, SSID 브로드캐스트에 패스코드의 제공으로 패스코드에 대한 사전 지식없이 WiFi Direct 접속이 진행될 수 있어 접속을 구축할 때 사용자 상호작용이 필요하지 않다.
블록(1412)에서 접속이 완료된 다음, 마이크로프로세서(202)는 도 4의 프로세스(400)로 복귀해, 병합된 네트워크 클러스터(306)에 합류하기 위해 상술한 바와 같이 블록(412 내지 428)을 실행한다.
도 15를 참조하면, 이 실시예에서 병합된 네트워크 클러스터(306)의 구축은 (도 15의 라인(1500)으로 도시된) WiFi Direct 접속을 통해 제 1 디바이스(102)에 접속하는 제 2 디바이스(104)에 의해 진행될 수 있다. 블록들(1404, 1406, 및 1412)도 또한 제 2 디바이스(104)가 제 1 주변 디바이스(30)와의 WiFi Direct 접속을 완료하게 하도록 실행될 수 있다. 이 경우, 제 2 디바이스(104)는 제 1 주변 디바이스(300)에 제 2 링크(1502)를 제공하여 따라서 네트워크 클러스터(100)와 제 2 주변 네트워크 클러스터(304) 사이의 WiFi Direct 링크를 제공할 수 있다. 디바이스(104)는 클라이언트(즉, 디바이스들(102 및 300))로서 다수의 디바이스들에 접속을 허용하는 Wi-Fi Direct 마스터 모드로 설정될 것이다. 디바이스(102 및 300)는 디바이스(106) 및 제 2 주변 디바이스(302)에 각각 접속을 제공하기 위해 액세스 포인트 모드로 유지된다. 디바이스(102 및 300)가 액세스 포인트 모드로 설정된 경우, 운영 시스템은 상기 디바이스가 마스터 모드에 있는 제 2 디바이스(104)의 Wi-Fi Direct 클라이언트이도록 제한할 수 있다. 일부 디바이스의 무선 라디오(216)는 동시에 액세스 포인트로서 구성될 수 있고 여전히 Wi-Fi Direct 클라이언트로서 다른 디바이스에 접속할 수 있는 이중모드 WiFi 모듈을 사용하여 구현될 수 있다. 이것은 제 2 디바이스(104)가 클러스터들(100 및 300) 간의 데이터 처리량을 느리게 하는 도 8에 도시된 클라이언트 라우터 프로세스(800)의 블록(808)에서 접속해제를 수행하게 하는 종래의 WiFi 접속 하에 있을 필요를 효과적으로 제거한다.
도 14를 다시 참조하면, 블록(1406)에서, WiFi Direct 접속을 청취하는 디바이스가 전혀 감지되지 않으면, 마이크로프로세서는 블록(1408)으로 지향하며 무선 무선 디바이스(216)는 Bluetooth 접속을 청취하는 다른 디바이스를 스캔하도록 구성된다. 그런 후, 블록(1410)은 마이크로프로세서(202)에 명령해 Bluetooth 접속을 청취하는 임의의 디바이스가 감지되었는지 여부를 판단하도록 한다. Bluetooth 접속을 청취하는 디바이스가 감지되면, 블록(1410)은 마이크로프로세서(202)가 블록(1412)으로 지향하게 하여 다른 디바이스와의 Bluetooth 접속을 완료한다. 그 다음, 마이크로프로세서(202)는 상술한 바와 같이 블록(412 내지 428)을 실행하기 위해 도 4의 프로세스(400)로 복귀한다.
블록(1410)에서, Bluetooth 접속을 청취하는 디바이스가 감지되지 않으면, 마이크로프로세서는 도 4의 프로세스(400)로 되돌아가서 상술한 바와 같이 WiFi 접속 프로세스의 블록(406 내지 412)을 실행한다. 프로세스(400)의 블록들(406 내지 412)은 마이크로프로세서(202)에 명령해 상기 디바이스가 WiFi 액세스 포인트 모드로 설정하는 것과 상술한 바와 같이 액세스 포인트 모드로 설정하는 것을 교번하도록 하는 클러스터 형성 프로세스(400)의 일부분을 실행하게 한다.
다시 도 15를 참조하면, 병합된 네트워크 클러스터(306)의 구축은 Bluetooth를 통해 제 1 디바이스(102) 및 제 1 주변 디바이스(300) 모두에 (즉, 접속(1500 및 1502)의 조합을 통해) 접속하는 제 2 디바이스(104)에 의해 번갈아 진행될 수 있다.
도 17을 참조하면, 다른 실시예에서, 제 1 디바이스(102) 및 제 1 주변 디바이스(300)는 이들의 각각의 운영 시스템을 통해 Wi-Fi 액세스 포인트로서 구성되는 동시에 Wi-Fi Direct를 통해 서로 동시에 접속되는 것이 금지될 수 있지만, 이들 디바이스는 여전히 라인(1504)로 도시된 직접 Bluetooth 접속을 구축하도록 블록들(1408, 1410 및 1412)을 실행함으로써 Bluetooth를 통해 동시에 접속할 수 있다. Bluetooth 접속(1504)은 (Wi-Fi Direct, Bluetooth를 통해 또는 디바이스(102 및 300)에 의해 제공되는 액세스 포인트로의 Wi-Fi 접속 전환을 통해) 제 2 디바이스(104)를 통해 구축된 접속들(1500 및 1502)과 동시에 구축될 수 있다. 따라서, Bluetooth 접속(1504)은 클라이언트(106 및 302)에 네트워크 서비스를 제공하기 위해 액세스 포인트 모드로 디바이스가 유지되도록 허용하는 추가적인 동시 접속을 디바이스(102 및 300) 간에 제공한다.
도 16을 참조하면, Bluetooth를 통해 접속하기 위해 도 14의 프로세스(1400)의 블록들(1408 내지 1412)을 구현하도록 제 1 디바이스(102)에 명령하기 위한 코드 블록을 도시한 프로세스 흐름도가 1600으로 보다 상세히 도시되어 있다. 프로세스는 블록(1602)에서 시작되고, 상기 블록은 마이크로프로세서(202)에 명령해 RFCOMM 프로토콜을 이용한 Bluetooth 통신을 위해 제 1 디바이스(102)의 무선 라디오(216)를 구성하도록 한다. RFCOMM 프로토콜 하에서는, 페어링을 위해 사용자 상호작용이 전혀 필요하지 않으며, 이는 병합된 네트워크 클러스터(306)를 제공하기 위해 자율적으로 접속을 구축하는 데 이점적이다. 다른 Bluetooth 접속 프로토콜은 키 쌍 또는 유사한 동작과 같은 사용자 상호작용을 필요로 할 수 있다. 그러나 RFCOMM 프로토콜은 다른 디바이스가 접속을 청취하고 있는 채널의 디바이스에 의한 발견을 제공하지 않는다. RFCOMM 프로토콜은 또한 다른 디바이스의 uuid 발견을 허용하지 않는다.
도시된 실시예에서, 블록(1604)은 마이크로프로세서(202)에 명령해 제 1 디바이스(102)의 무선 디바이스(216)로 하여금 제 1 이용 가능한 Bluetooth 채널 상의 다른 디바이스들로부터 BT 브로드캐스트들을 청취하도록 무선 라디오를 구성하게 한다. 따라서, 제 1 디바이스(102)는, 브로드캐스트들이 수신되어야 한다면, 다른 디바이스들로부터의 Discovery 브로드캐스트들을 청취하도록 구성된다. 디바이스는 다른 다수의 디바이스에 동시에 Bluetooth 접속을 허용하기 위해 복수의 다른 채널들(일반적으로 Android 기반 운영 시스템의 경우 7개의 채널들)에서 통신 할 수 있다. 예를 들어, 디바이스는 Bluetooth를 통해 차량에 연결될 수 있으며, Bluetooth 이어폰 또는 다른 디바이스에 동시에 연결될 수 있으므로, 2개 이상의 사용 가능한 채널을 이용한다. 일 실시예에서, 각각의 채널은 공통 스트링(예를 들어, "01010101-0101-0101-0101-01010101010")으로 시작하는 사전결정된 패턴과 연관되고, 각각의 연속적인 채널은 1씩 증가된다. 따라서, 제 1 채널은 uuid "01010101-0101-0101-0101-010101010101"과 결합될 것이며, 제 2 채널은 uuid "01010101-0101-0101-0101-010101010102"와 결합될 것이다. 이하 등등.
그런 다음, 블록(1606)은 제 1 디바이스(102)의 마이크로프로세서(202)에 명령해 다음 이용 가능한 채널을 선택하고, 블록(1608)은 마이크로프로세서에 명령해 다음 이용 가능한 Bluetooth 채널(예를 들면, "01010101-0101-0101-0101-010101010102")상에서 Discovery 브로드캐스트를 위해 무선 라디오(216)를 구성하도록 한다. 그 다음, 프로세스(1600)는 블록(1610)에서 계속되어, 상기 블록은 마이크로프로세서(202)가 선택된 채널상의 응답을 청취하도록 명령한다. 블록(1610)에서, 제 1 주변 디바이스(300)가 채널 "01010101-0101-0101-0101-010101010102"에 청취하고 있으면, 응답이 수신되고 블록(1610)은 마이크로프로세서(202)를 블록(1612)으로 향하게 한다. 블록(1612)은 마이크로프로세서(202)에 명령해 선택된 Bluetooth 채널(즉, 채널 "01010101-0101-0101-0101-010101010102")을 통한 통신을 구성하도록 한다. 블록(1612)에서, 접속이 성공적으로 완료되면, Bluetooth 접속은 디바이스들(102 및 300) 사이에 로킹되어 제 1 디바이스(102)와 제 1 주변 디바이스(300) 사이의 양방향 데이터 통신을 허용한다. 제 1 디바이스(102) 및 제 1 주변 디바이스(300)는 액세스 포인트 모드로 계속 구성될 수 있고 클라이언트 디바이스(106 및 302)와 같은 클라이언트들에 WiFi 네트워크를 통해 서비스를 각각 제공할 수 있다. 따라서, 제 1 디바이스(102)와 제 1 주변 디바이스(300) 간의 Bluetooth 접속은 네트워크 클러스터(100)와 제 2 주변 네트워크 클러스터(304)를 병합하여 병합된 네트워크 클러스터(306)를 형성하는 대안을 제공한다. 일 실시예에서, 제 2 디바이스(104)는 모두가 이전에 디바이스의 범위 내에 있었던 제 1 디바이스(102) 또는 제 1 주변 디바이스(300) 중 어느 하나에 접속할 수 있다. 따라서, 제 1 디바이스(102) 및 제 1 주변 디바이스(300)는 요청에 응답하고 접속 리스트 등을 제공함으로써 도 4의 블록(412 내지 428)에 도시된 바와 같은 기능을 전반적으로 계속 수행할 수 있다.
블록(1610)에서, 제 1 주변 디바이스(300)가 채널 "01010101-0101-0101-0101-010101010102"에서 청취하고 있지 않으면, 응답은 수신되지 않을 것이고 블록(1610)은 마이크로프로세서(202)를 블록(1614)으로 향하게 한다. 블록(1614)은 마이크로프로세서(202)에 명령해 복수의 이용 가능한 Bluetooth 채널들 중 마지막 Bluetooth 채널이 선택되었는지 여부를 판단하게 한다. 아직 선택되지 않은 나머지 Bluetooth 채널이 있는 경우, 블록(1614)은 마이크로프로세서(202)를 블록(1606)으로 다시 지향시키고, 다음 이용 가능한 채널이 선택되며 블록(1608 및 1610)이 선택된 채널에 대해 반복된다.
블록(1614)에서 선택될 Bluetooth 채널이 남아 있지 않으면, 마이크로프로세서는 프로세스(1400)의 블록(1412)으로 향하게 되고, 디바이스는 상술한 바와 같이 Bluetooth 접속을 다시 시도하기 전에 WiFi 및 WiFi Direct 프로토콜을 사용하여 다른 디바이스들과의 접속을 계속 시도할 것이다.
또 다른 대안적인 실시예에서, 제 1 디바이스(102) 및 제 1 주변 디바이스(300)가 Bluetooth 범위를 벗어난다면, 제 2 디바이스(104)는 여전히 Bluetooth를 통해 제 1 디바이스(102)와 제 1 주변 디바이스(300)에 모두에 접속함으로써 네트워크 클러스터(100) 및 제 2 주변 네트워크 클러스터(304)를 병합하기 위한 브릿지로서 동작할 수 있다. 접속은 일반적으로 프로세스(1600)에 따라 디바이스들(102 및 300) 각각과 개별적 기반으로 진행한다. 제 2 디바이스(104)는 네트워크 클러스터(100 및 304)의 병합을 허용할 수 있는 2개의 Bluetooth 채널을 가질 필요가 있다.
상기 실시예들은 개별 디바이스들이 액세스 포인트 모드, 클라이언트 모드 또는 클라이언트 라우터 모드와 같은 상이한 동작 모드를 취하는 네트워크에서 디바이스들을 연결하기 위한 프레임 워크를 제공한다. 네트워크 클러스터(100) 내의 디바이스는 일반적으로 네트워크 클러스터(100) 내의 디바이스의 가용성 또는 가용성 결여에 기초하여 이러한 동작 모드를 취한다. 또한, 디바이스는 이러한 가용성에 기초하여 하나의 동작 모드에서 다른 동작 모드로 변경될 수 있다. 따라서, 개시된 실시예는 디바이스를 추가하거나 다수의 디바이스들을 포함하는 네트워크 클러스터를 병합하여 병합된 네트워크의 도달 범위를 확장할 수 있는 확장가능한 네트워크를 제공한다.
특정 실시예가 설명되고 도시되었지만, 그러한 실시예는 첨부된 청구범위에 따라 해석되어야 하듯이 단지 본 발명의 예시이며 본 발명을 제한하는 것으로 간주되지 않아야 한다.

Claims (22)

  1. 각각이 적어도 액세스 포인트 모드 및 클라이언트 모드로 설정될 수 있는 무선 라디오를 갖는 복수의 디바이스 간에, 관련된 네트워크명을 갖는 네트워크 클러스터를 구축하기 위한 방법으로서,
    상기 복수의 디바이스 중 제 1 디바이스가 클라이언트 모드로 설정될 수 있게 하는 단계;
    상기 복수의 디바이스 중 다른 디바이스가 네트워크명과 관련된 네트워킹 서비스를 현재 제공하지 않는다는 상기 제 1 디바이스에 의한 판단에 응답하여:
    상기 제 1 디바이스가 액세스 포인트 모드로 설정되게 하는 단계;
    네트워크 클러스터와 관련된 네트워크명을 네트워킹 서비스에 제공하는 단계; 및
    클라이언트 모드로 설정된 제 2 디바이스로부터 상기 제 1 디바이스에 접속 요청을 수신한데 응답하여: 접속을 수락하고, 상기 제 2 디바이스와 관련된 사용자 식별자를 판단하며, 상기 제 2 디바이스에 대한 엔트리를 상기 제 1 디바이스 상의 메모리에 저장된 접속 리스트에 추가하는 단계; 및
    상기 제 2 디바이스의 사용자 식별자에 해당하는 목적지를 갖는 상기 제 1 디바이스에 하나 이상의 데이터 패킷을 수신한데 응답하여, 상기 하나 이상의 데이터 패킷을 상기 제 2 디바이스에 전송하는 단계를 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  2. 제 1 항에 있어서,
    액세스 포인트 모드로 설정된 동안 제 1 디바이스에 접속 요청을 전혀 수신하지 않으면,
    제 1 디바이스가 액세스 포인트 모드로 있는 동안 접속 요청이 수신되거나;
    네트워크명과 관련된 네트워킹 서비스를 제공하는 다른 디바이스가 클라이언트 모드로 있는 동안 발견되는 것 중 하나일 때까지,
    제 1 디바이스가 클라이언트 모드로 설정되는 것과 액세스 포인트 모드로 설정되는 것 사이에 주기적으로 교번하게 하는 단계를 더 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  3. 제 2 항에 있어서,
    제 1 디바이스가 클라이언트 모드로 설정되는 것과 액세스 포인트 모드로 설정되는 것 사이에 교번하게 하는 단계는 제 1 디바이스가 제 1 시간 주기 동안 클라이언트 모드로 설정되는 것과 제 2 시간 주기 동안 액세스 포인트 모드로 설정되는 것 사이에 교번하게 하는 단계를 포함하고, 상기 제 1 및 제 2 시간 주기 중 적어도 하나는 랜덤한 시간 성분을 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  4. 제 1 항에 있어서,
    클라이언트 모드로 설정된 적어도 하나의 추가 디바이스로부터 제 1 디바이스에 접속 요청을 수신한데 응답하여, 상기 추가 디바이스와 관련된 사용자 식별자를 결정하는 단계와 상기 제 1 디바이스의 접속 리스트에 상기 사용자 식별자를 추가하는 단계를 더 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  5. 제 4 항에 있어서,
    클라이언트 모드로 설정되고 상기 제 1 디바이스에 접속된 발신 디바이스로부터 수신자 디바이스와 관련된 사용자 식별자를 포함하는 find 요청을 상기 제 1 디바이스에 수신하는 단계;
    상기 네트워크 클러스터상의 상기 제 1 디바이스가 이전에 마주친 디바이스들에 대한 엔트리들을 포함하는 상기 제 1 디바이스 상의 접속 리스트가 상기 수신자 디바이스에 관련된 사용자 식별자를 포함하는지 여부를 상기 제 1 디바이스가 판단하게 하는 단계; 및
    상기 접속 리스트가 상기 수신자 디바이스와 관련된 사용자 식별자를 포함하는 경우, 상기 제 1 디바이스가 find 요청 응답을 발신 디바이스로 전송하게 하는 단계를 포함하고, 상기 find 요청 응답은 상기 발신 디바이스 및 상기 수신자 디바이스 간에 데이터의 전송을 위해 nexthop 주소로서 상기 제 1 디바이스의 네트워크 주소를 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  6. 제 5 항에 있어서,
    제 1 디바이스 상의 접속 리스트는 클라이언트 모드로 설정되고 상기 제 1 디바이스와 제 1 주변 디바이스 모두의 접속 범위 내에 있는 하나 이상의 디바이스를 통해 상기 제 1 디바이스에 접속되어 있는 상기 제 1 주변 디바이스를 식별하는 적어도 하나의 엔트리를 포함하고,
    상기 접속 리스트가 상기 수신자 디바이스와 관련된 사용자 식별자를 포함하지 않으면, 상기 제 1 디바이스가 상기 제 1 주변 디바이스에 discover 요청을 보내게 하는 단계; 및
    상기 제 1 디바이스에서 상기 제 1 주변 디바이스로부터 discover 요청 응답을 수신하는 것에 응답하여: 상기 수신자 디바이스에 대한 엔트리를 포함하도록 상기 제 1 디바이스 상의 상기 접속 리스트를 업데이트하는 단계; 및 상기 제 1 디바이스가 find 요청 응답을 상기 발신 디바이스로 전송하게 하는 단계를 포함하고,
    상기 discover 요청은 상기 수신자 디바이스의 사용자 식별자를 포함하고, 상기 수신자 디바이스가 액세스 포인트 모드로 설정된 제 2 주변 디바이스에 접속되고, 클라이언트 모드로 설정되며 상기 제 1 및 제 2 주변 디바이스 모두의 접속 범위 내에 있는 하나 이상의 디바이스를 통해 제 1 주변 디바이스에 접속되어 있는지 상기 제 1 주변 디바이스가 판단하도록 동작될 수 있으며,
    상기 find 요청 응답은 상기 제 1 주변 디바이스 및 상기 제 2 주변 디바이스를 통해 상기 발신 디바이스와 상기 수신자 디바이스 사이에서 데이터를 전송하기 위한 nexthop 주소로서 상기 제 1 디바이스의 네트워크 주소를 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  7. 제 6 항에 있어서,
    discover 요청은 TTL(time-to-live) 만료시 discover 요청의 폐기를 용이하도록 유효하게 될 시간 주기를 정의하는 TTL 데이터 필드를 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  8. 제 6 항에 있어서,
    discover 요청 응답은 상기 요청 응답이 통과하는 각각의 주변 디바이스에 의해 상기 discover 요청 응답에 추가된 타임스탬프를 포함하고, 상기 타임스탬프는 사전결정된 시간 프레임 내에서 discover 요청의 반복을 방지하도록 동작될 수 있는 네트워크 클러스터를 구축하기 위한 방법.
  9. 제 6 항에 있어서,
    수신자 디바이스가 제 2 주변 디바이스에 접속되어 있는지 제 1 주변 디바이스가 판단하도록 하는 단계는 discover 요청을 제 2 주변 디바이스로 포워딩하는 단계를 포함하고, 상기 discover 요청은 상기 제 2 주변 디바이스 상의 접속 리스트가 수신자 디바이스와 관련된 사용자 식별자를 포함하는지 상기 제 2 주변 디바이스가 판단하게 동작될 수 있으며, 접속 리스트가 수신자 디바이스와 관련된 사용자 식별자를 포함하는 경우, nexthop 주소로서 제 2 주변 디바이스의 네트워크 주소를 포함하는 discover 요청 응답을 상기 제 1 주변 디바이스를 통해 제 1 디바이스로 다시 송신하는 단계를 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  10. 제 9 항에 있어서,
    discover 요청 응답을 제 1 주변 디바이스에 수신한 데 응답하여, 제 2 디바이스로 다시 송신하기 위한 nexthop 주소로서 제 2 주변 디바이스의 네트워크 주소를 포함한 수신자 디바이스에 대한 엔트리를 포함하도록 제 1 주변 디바이스 상의 접속 리스트를 업데이트하는 단계 및 상기 제 1 주변 디바이스 상의 네트워크 주소를 상기 제 1 디바이스로 다시 송신하기 위한 nexthop 주소로서 discover 요청 응답에 추가하는 단계를 더 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  11. 제 1 항에 있어서,
    임의의 주변 디바이스들이 액세스 포인트 모드로 설정되는지 여부를 제 2 디바이스가 주기적으로 판단하게 하는 단계 및 네트워크 클러스터와 관련된 네트워크명을 네트워크 서비스에 제공하는 단계; 및
    상기 제 2 디바이스가 상기 네트워크 클러스터와 관련된 네트워크명을 네트워크 서비스에 제공하는 제 1 주변 디바이스를 감지한 데 응답하여, 제 1 디바이스로부터 업데이트된 접속 리스트를 요청하고; 제 1 디바이스로부터 접속해제하고 제 1 주변 디바이스에 접속하며; 제 1 주변 디바이스 상의 메모리에 저장되고 제 1 주변 디바이스에 접속된 디바이스의 사용자 식별자를 포함한 접속 리스트를 상기 제 1 주변 디바이스로부터 요청하고; 제 1 주변 디바이스 상의 접속 리스트의 업데이트를 용이하게 하기 위해 제 1 디바이스에 대한 접속 리스트를 제 1 주변 디바이스에 제공하며; 제 1 디바이스에 재접속하고 제 1 디바이스 상의 접속 리스트의 업데이트를 용이하게 하기 위해 제 1 주변 디바이스에 대한 접속 리스트를 제 1 디바이스에 제공함으로써, 상기 제 2 디바이스가 제 1 주변 디바이스를 네트워크 클러스터에 링크시켜 병합된 네트워크 클러스터를 형성하게 하는 단계를 더 포함하고,
    제 1 디바이스가 수신된 데이터 패킷을 전송하게 하는 단계는:
    수신된 데이터 패킷이 제 1 주변 디바이스에 접속된 제 1 디바이스 상의 접속 리스트에 있는 클라이언트 디바이스와 관련된 디바이스 식별자에 해당하는 목적지를 갖는다는 제 1 디바이스에 의한 판단에 응답하여, 데이터 패킷이 제 2 디바이스를 통해 제 1 주변 디바이스로 보내지게 하는 단계를 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  12. 제 11 항에 있어서,
    다른 디바이스들이 네트워크 클러스터와 관련된 네트워크명을 네트워크 서비스에 제공하는지 여부를 제 2 디바이스가 주기적으로 판단하게 하는 단계는:
    제 1 디바이스와 관련된 BSSID(Basic Service Set IDentification)를 결정하는 단계;
    제 2 디바이스가 이용가능한 네트워크들의 스캔을 수행하게 하는 단계; 및
    네트워크명과 관련된 네트워킹 서비스를 제공하는 각각의 감지된 디바이스에 대해, 상기 디바이스와 관련된 BSSID를 결정하는 단계를 포함하고,
    제 1 디바이스의 BSSID와 다른 BSSID는 상기 디바이스가 액세스 포인트 모드로 설정되고 네트워크명을 네트워크 서비스에 제공하는 것을 나타내는 네트워크 클러스터를 구축하기 위한 방법.
  13. 제 11 항에 있어서,
    데이터 패킷이 제 2 디바이스를 통해 제 1 주변 디바이스로 보내지게 하는 단계는:
    제 2 디바이스가 제 1 디바이스에 현재 접속되어 있지 않다는 제 1 디바이스에 의한 판단에 응답하여, 제 1 디바이스에 접속시 제 2 디바이스로 전송될 데이터 패킷의 큐에 상기 데이터 패킷을 기록하는 단계를 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  14. 제 11 항에 있어서,
    제 2 디바이스는 상기 제 2 디바이스 상의 메모리에 저장된 접속된 액세스 포인트 리스트를 포함하고, 상기 접속된 액세스 포인트 리스트는 접속된 액세스 포인트로서 제 1 디바이스를 식별하는 적어도 하나의 엔트리를 포함하고, 상기 제 2 디바이스가 제 1 주변 디바이스를 감지한 데 응답하여:
    상기 제 2 디바이스가 제 1 주변 디바이스를 접속된 액세스 포인트 리스트에 추가하게 하는 단계; 및
    액세스 포인트와 병합된 네트워크 클러스터의 목적지 클라이언트 사이에 데이터 패킷을 보내기 위해 상기 제 2 디바이스가 접속된 액세스 포인트 리스트의 각 액세스 포인트에 주기적으로 접속되게 하는 단계를 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  15. 제 11 항에 있어서,
    데이터 패킷을 보내는 단계는:
    현재 접속된 제 1 디바이스 및 제 1 주변 디바이스 중 하나로부터 수신되고 제 1 디바이스와 제 1 주변 디바이스 중 다른 하나에 대해 예정된 데이터 패킷을 저장하기 위해 메모리에 있는 큐를 제 2 디바이스에 유지하는 단계;
    주기적으로 현재 접속된 제 1 디바이스 및 제 1 주변 디바이스 중 하나로부터 접속해제하고 제 1 디바이스와 제 1 주변 디바이스 중 다른 하나에 접속하는 단계; 및
    접속시 제 1 디바이스와 제 1 주변 디바이스 중 다른 하나에 큐에 있는 데이터를 전송하는 단계를 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  16. 제 1 항에 있어서,
    제 1 디바이스 상의 접속 리스트에 저장된 제 2 디바이스에 대한 엔트리는 적어도 하나의 사용자 식별자; 및
    네트워크 클러스터 내의 제 2 디바이스의 네트워크 주소와 제 2 디바이스와 관련된 하드웨어 식별자 중 하나 이상을 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  17. 각 디바이스는 적어도 액세스 포인트 모드 및 클라이언트 모드로 설정될 수 있는 무선 라디오를 가지며, 적어도 액세스 포인트 모드로 설정된 제 1 디바이스 및 클라이언트 모드로 설정되고 상기 제 1 디바이스에 접속된 제 2 디바이스를 포함하는, 복수의 디바이스들 간에 구축된 네트워크 클러스터에서, 제 2 디바이스와 의도된 수신자 디바이스 간의 통신 방법으로서,
    상기 수신자 디바이스와 관련된 사용자 식별자가 상기 제 2 디바이스 상의 메모리에 저장된 접속 리스트에 나타나는지 여부를 상기 제 2 디바이스가 결정하게하는 단계;
    상기 접속 리스트에 상기 수신자 디바이스가 나타나면, 상기 수신자 디바이스와 관련된 사용자 식별자를 포함하는 하나 이상의 데이터 패킷을 상기 제 1 디바이스에 전송하는 단계; 및
    상기 수신자 디바이스가 상기 접속 리스트에 나타나지 않으면, 상기 수신자 디바이스의 검색을 개시하기 위해 상기 제 1 디바이스에 find 요청을 전송하는 단계를 포함하고,
    상기 접속 리스트는 상기 네트워크 클러스터 상에서 이전에 마주친 디바이스들에 대한 엔트리들을 포함하는 제 2 디바이스와 의도된 수신자 디바이스 간의 통신 방법.
  18. 제 17 항에 있어서,
    상기 제 1 디바이스로부터 find 요청 응답을 상기 제 2 디바이스에 수신하는 단계를 더 포함하고, 상기 find 요청 응답은 상기 수신자 디바이스가 상기 네트워크 클러스터를 통해 도달 가능하다는 것을 확인응답하고, 제 2 디바이스와 의도된 수신자 디바이스 간의 데이터 전송을 위한 nexthop 주소로서 상기 제 1 디바이스의 주소를 포함하는, 제 2 디바이스와 의도된 수신자 디바이스 간의 통신 방법.
  19. 각각이 적어도 액세스 포인트 모드 및 클라이언트 모드로 설정 가능한 무선 디바이스를 갖는 복수의 디바이스들을 각각 포함하는 제 1 네트워크 클러스터 및 제 2 네트워크 클러스터를 병합하는 방법으로서,
    상기 제 1 네트워크 클러스터는 제 1 디바이스를 포함하고, 상기 제 2 네트워크 클러스터 제 1 주변 디바이스를 포함하며, 상기 제 1 디바이스와 상기 제 1 주변 디바이스는 액세스 포인트 모드로 설정되고 공통 네트워크명과 관련된 네크워크 서비스를 제공하고,
    상기 방법은:
    클라이언트 모드 및 상기 제 1 디바이스와 상기 제 1 주변 디바이스 모두의 접속 범위로 구성된 제 2 디바이스로 하여금 임의의 주변 디바이스가 상기 액세스 포인트 모드로 설정되어 있는지 여부를 주기적으로 판단하게 하는 단계와, 상기 네트워크 클러스터와 관련된 상기 네트워크명을 네트워킹 서비스에 제공하는 단계; 및
    상기 제 2 디바이스가 상기 네트워크 클러스터와 관련된 상기 네트워크명을 네트워킹 서비스를 제공하고 있다고 감지한 것에 응답하여, 상기 제 1 디바이스로부터 업데이트된 접속 리스트를 요청하고; 상기 제 1 디바이스로부터 접속해제되고 상기 제 1 주변 디바이스에 접속하며; 상기 제 1 주변 디바이스의 메모리에 저장되고 상기 제 1 주변 디바이스에 접속된 디바이스들의 사용자 식별자들을 포함하는 접속 리스트를 상기 제 1 주변 디바이스로부터 요청하고; 상기 제 1 주변 디바이스 상의 상기 접속 리스트의 업데이트를 용이하게 하기 위해 상기 제 1 주변 디바이스에 상기 제 1 디바이스에 대한 접속 리스트를 제공하며; 상기 제 1 디바이스에 재접속하고 상기 제 1 디바이스 상의 접속 리스트의 업데이트를 용이하게 하기 위해 상기 제 1 디바이스에 상기 제 1 주변 디바이스에 대한 접속 리스트를 제공함으로써, 상기 제 2 디바이스가 상기 제 1 주변 디바이스를 상기 네트워크 클러스터에 링크시켜 병합된 네트워크 클러스터를 형성하게 하는 단계를 포함하는 제 1 네트워크 클러스터 및 제 2 네트워크 클러스터를 병합하는 방법.
  20. 제 19 항에 있어서,
    상기 제 2 디바이스는 상기 제 2 디바이스 상의 메모리에 저장된 접속된 액세스 포인트 리스트를 포함하고, 상기 접속된 액세스 포인트 리스트는 상기 접속된 액세스 포인트로서 상기 제 1 디바이스를 식별하는 적어도 하나의 엔트리를 포함하며, 상기 제 2 디바이스가 상기 제 1 주변 디바이스를 감지한 데 응답하여:
    상기 제 2 디바이스가 상기 제 1 주변 디바이스를 상기 접속된 액세스 포인트 리스트에 추가하게 하는 단계; 및
    상기 병합된 네트워크 클러스터 내의 상기 액세스 포인트와 상기 목적지 클라이언트 사이에 데이터 패킷을 보내기 위해 상기 제 2 디바이스가 상기 접속된 액세스 포인트 리스트의 각 액세스 포인트에 주기적으로 접속하게 하는 단계를 포함하는 제 1 네트워크 클러스터 및 제 2 네트워크 클러스터를 병합하는 방법.
  21. 제 1 항에 있어서,
    상기 네트워크명은 네트워크 타입을 식별하는 공통 식별자 부분 및 상기 네트워크의 특정 인스턴스를 식별하는 난수를 포함하는 네트워크 클러스터를 구축하기 위한 방법.
  22. 제 1 항에 있어서,
    상기 네트워크명과 관련된 네트워킹 서비스가 상기 복수의 디바이스들 중 다른 디바이스에 의해 현재 제공되고 있지 않다는 상기 제 1 디바이스에 의한 판단에 응답하여, 상기 제 1 디바이스가 Bluetooth 및 WiFi Direct 통신 중 하나로 구성되게 하는 단계와 네트워크 클러스터와 관련된 네트워크명을 네트워킹 서비스에 제공하는 단계를 더 포함하는 네트워크 클러스터를 구축하기 위한 방법.
KR1020187036962A 2016-05-30 2017-05-04 네트워크 디바이스 간에 네트워크 클러스터를 구축하기 위한 방법 KR20190030653A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662343056P 2016-05-30 2016-05-30
US62/343,056 2016-05-30
PCT/CA2017/000116 WO2017205959A1 (en) 2016-05-30 2017-05-04 Method for establishing network clusters between networked devices

Publications (1)

Publication Number Publication Date
KR20190030653A true KR20190030653A (ko) 2019-03-22

Family

ID=60479561

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187036962A KR20190030653A (ko) 2016-05-30 2017-05-04 네트워크 디바이스 간에 네트워크 클러스터를 구축하기 위한 방법

Country Status (6)

Country Link
US (1) US11102702B2 (ko)
EP (1) EP3466193A4 (ko)
JP (1) JP2019525518A (ko)
KR (1) KR20190030653A (ko)
CA (1) CA3025481A1 (ko)
WO (1) WO2017205959A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108616850B (zh) * 2016-12-16 2021-11-26 美的智慧家居科技有限公司 一种电器的路由信息的获取方法及装置
CN107231606B (zh) * 2017-07-19 2021-06-29 北京京东尚科信息技术有限公司 WiFi入网方法、智能硬件设备及电子终端
KR102527868B1 (ko) * 2018-06-28 2023-05-02 삼성전자주식회사 Nan 프로토콜에 기반한 네트워크 환경에서 데이터 통신을 위한 장치 및 방법
CN111083746A (zh) * 2018-10-18 2020-04-28 北京轩辕联科技有限公司 模式可切换的蓝牙设备、蓝牙连接***和蓝牙连接方法
CN112312367A (zh) * 2019-08-01 2021-02-02 联发科技(新加坡)私人有限公司 蓝牙通信方法及通信设备
CN110798254A (zh) * 2019-09-27 2020-02-14 上海特金信息科技有限公司 无人机信号探测中的wifi消除方法、装置与电子设备
US11750559B2 (en) * 2019-11-15 2023-09-05 Nippon Telegraph And Telephone Corporation Edge switching system, edge switching device, edge switching method, and program
US20230010098A1 (en) * 2020-01-07 2023-01-12 Hewlett-Packard Development Company, L.P. Network access via device identifier
CN111698693B (zh) * 2020-06-08 2023-08-01 浙江大华技术股份有限公司 无线配网方法、装置及存储介质
WO2022061668A1 (zh) * 2020-09-24 2022-03-31 Oppo广东移动通信有限公司 一种蓝牙设备接入认证方法、电子设备及存储介质
US11646992B1 (en) * 2022-05-24 2023-05-09 Uab 360 It Updating meshnet internet protocol maps in a mesh network

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170070563A1 (en) * 2008-08-11 2017-03-09 Ken Sundermeyer Data model for home automation
US8532074B2 (en) * 2010-07-29 2013-09-10 Microsoft Corporation Energy-efficient on-the-fly Wi-Fi hotspot using mobile devices
US20120246740A1 (en) 2011-03-22 2012-09-27 Brooker Marc J Strong rights management for computing application functionality
WO2013036580A2 (en) * 2011-09-09 2013-03-14 Interdigital Patent Holdings, Inc. Methods and apparatus for accessing localized applications
US9940118B2 (en) 2012-02-23 2018-04-10 Dahrwin Llc Systems and methods utilizing highly dynamic wireless ad-hoc networks
US9706600B2 (en) * 2012-06-28 2017-07-11 Texas Instruments Incorporated Connectionless Wi-Fi mesh communication
TWI513351B (zh) 2014-02-14 2015-12-11 Vivotek Inc 無線網路裝置及自動無線區域網路連線設定方法
US9973987B2 (en) * 2014-04-24 2018-05-15 Aruba Networks, Inc Selection of anchor controllers for access points within a network environment
US9456314B2 (en) * 2014-05-09 2016-09-27 Aruba Networks, Inc. Multicast transmissions in a network environment with user anchor controllers
US10070470B2 (en) 2015-09-04 2018-09-04 Distech Controls Inc. Environment control device providing a Wi-Fi hotspot for accessing the Internet
US20180206202A1 (en) * 2017-01-17 2018-07-19 Qualcomm Incorporated Methods and systems for synchronizing access for distributed mimo communications
US11290953B2 (en) * 2019-02-13 2022-03-29 Arris Enterprises Llc Utilizing BSS transition management (BTM) steering primer messages to determine whether wireless devices support BTM steering

Also Published As

Publication number Publication date
EP3466193A4 (en) 2019-11-06
CA3025481A1 (en) 2017-12-07
WO2017205959A1 (en) 2017-12-07
US20200322871A1 (en) 2020-10-08
EP3466193A1 (en) 2019-04-10
JP2019525518A (ja) 2019-09-05
US11102702B2 (en) 2021-08-24

Similar Documents

Publication Publication Date Title
US11102702B2 (en) Method for establishing network clusters between networked devices
US10057342B2 (en) Infrastructure access via neighbor awareness networking data path
US8442549B2 (en) Automatic discovery and connectivity protocol for bluetooth scatternet formation
KR101239450B1 (ko) 확장형 wlan 게이트웨이
JP4882555B2 (ja) 無線ブリッジ通信機
KR101373877B1 (ko) 확장형 wlan 게이트웨이
US8300578B2 (en) System, apparatus and method for seamless roaming through the use of routing update messages
US7376097B2 (en) Method of associating an IP address with a plurality of link layer addresses in a wireless communication network
US20060291448A1 (en) Fixed access point for a terminal device
JP4603505B2 (ja) パケットルーティング制御プログラム、パケットルーティング制御方法及びコンピュータシステム
US20200344648A1 (en) User equipment
US20170346891A1 (en) Communication method
US8233454B2 (en) Communication system and method for switching between wireless connections
US8305968B2 (en) Solicitation triggers for opening a network link
US10674565B2 (en) Communication method
JP7143071B2 (ja) 通信装置、通信システム、通信方法、及び、プログラム
JPWO2006027874A1 (ja) 無線通信システム、移動局、ハンドオーバ制御方法
CN112040492B (zh) 由多个WiFi节点自主建立WiFi网络的方法
JP4520432B2 (ja) マルチキャストでパケット通信するVoIPネットワークシステムおよびその構築方法
WO2021132498A1 (ja) 端末装置、通信方法および通信システム
WO2013129669A1 (ja) 通信機器探索方法、通信機器、通信機器探索プログラムおよびアドホックネットワークシステム
CN117676771A (zh) 多模融合5g入网方法
JP2005253024A (ja) ローミングシステム、ローミング方法及び移動端末
JP2017147582A (ja) 無線通信端末

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application