JP2019525518A - ネットワーク化されたデバイス間のネットワーククラスターを確立するための方法 - Google Patents

ネットワーク化されたデバイス間のネットワーククラスターを確立するための方法 Download PDF

Info

Publication number
JP2019525518A
JP2019525518A JP2018563616A JP2018563616A JP2019525518A JP 2019525518 A JP2019525518 A JP 2019525518A JP 2018563616 A JP2018563616 A JP 2018563616A JP 2018563616 A JP2018563616 A JP 2018563616A JP 2019525518 A JP2019525518 A JP 2019525518A
Authority
JP
Japan
Prior art keywords
neighboring
network
connection
access point
listing
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
JP2018563616A
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 JP2019525518A publication Critical patent/JP2019525518A/ja
Pending legal-status Critical Current

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のデバイスがアクセスポイントモードに設定されることを引き起こすこととを伴う。第1のデバイスにおいて、クライアントモードに設定された第2のデバイスからの接続リクエストを受け取ることに応答して、当該方法は、接続を受け入れることと、第2のデバイスのユーザー識別子を判定することと、第1のデバイス上の接続リスティングにエントリーを追加することとを伴う。当該方法は、第1のデバイスにおいて、第2のデバイスのユーザー識別子に対応する行先を有するデータパケットを受け取ることに応答して、該データパケットを第2のデバイスに送信することを伴う。【選択図】図3

Description

1.分野
本開示は、概してコンピューターデバイスのネットワーク化に関し、より具体的には複数のデバイス間のクラスターネットワークを確立することに関する。
2.関連技術の説明
複数のコンピューターデバイス間のピアベース(peer−based)の通信基盤を提供するために、無線メッシュネットワークが確立されてもよい。メッシュネットワークを実装することの利益の1つは、単一の無線アクセスポイントを用いて利用可能となるよりも、より広範囲のネットワークカバレージが提供されるかも知れないことである。しかしながら、スマートフォンのような携帯デバイスにおいては、アクセスポイントモードとクライアントモードとの間の切り替えの際に売主によって課される制限に起因して、メッシュネットワークは普及していない。
複数の無線デバイス間のピアベースのネットワークを確立する方法の必要性が残ったままである。
概要
1つの開示される態様によれば、複数のデバイス間のネットワーククラスターを確立するための方法が提供され、各デバイスはアクセスポイントモードとクライアントモードとに少なくとも設定可能である無線ラジオを有し、該ネットワーククラスターは関連付けられたネットワーク名を有する。当該方法は、複数のデバイスのうちの第1のデバイスがクライアントモードに設定されることを引き起こすことを伴う。当該方法はさらに、ネットワーク名と関連付けられたネットワーク化サービスが、複数のデバイスのうちの別のものによって現在提供されていないという第1のデバイスによる判定に応答して、第1のデバイスがアクセスポイントモードに設定されることを引き起こすことと、ネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供することとを伴う。当該方法はまた、第1のデバイスにおいて、クライアントモードに設定された第2のデバイスからの接続リクエストを受け取ることに応答して、接続を受け入れることと、第2のデバイスと関連付けられたユーザー識別子を判定することと、第1のデバイス上のメモリーに保存されている接続リスティングに第2のデバイスについてのエントリーを追加することとを伴う。当該方法はさらに、第1のデバイスにおいて、第2のデバイスのユーザー識別子に対応する行先を有する1つ以上のデータパケットを受け取ることに応答して、該1つ以上のデータパケットを第2のデバイスに送信することを伴う。
アクセスポイントモードに設定されている間に第1のデバイスにおいて接続リクエストが受け取られなければ、当該方法は、第1のデバイスが、第1のデバイスがアクセスポイントモードにある間に接続リクエストのうちの1つが受け取られるまで、または、クライアントモードにある間にネットワーク名と関連付けられたネットワーク化サービスを提供する別のデバイスが発見されるまで、クライアントモードに設定されることとアクセスポイントモードに設定されることとを周期的に交互に繰り返すことを引き起こすことを伴っていてもよい。
第1のデバイスがクライアントモードに設定されることとアクセスポイントモードに設定されることとを交互に繰り返すことを引き起こすことは、第1のデバイスが、第1のデバイスが第1の期間の間はクライアントモードに設定されることと、第2の期間の間はアクセスポイントモードに設定されることとを交互に繰り返すことを引き起こすことを伴っていてもよく、第1および第2の期間のうちの少なくとも1つはランダムな時間成分を含んでいる。
当該方法は、第1のデバイスにおいて、クライアントモードに設定された少なくとも1つの追加デバイスからの接続リクエストを受け取ることに応答して、追加デバイスと関連付けられたユーザー識別子を判定することと、該ユーザー識別子を第1のデバイス上の接続リスティングに追加することとを伴っていてもよい。
当該方法は、第1のデバイスにおいて、クライアントモードに設定され、かつ、第1のデバイスに接続された発信デバイスからのファインド(find)リクエストを受け取ることを伴っていてもよく、該ファインドリクエストは、意図した受信デバイスと関連付けられたユーザー識別子を含んでおり、当該方法は、第1のデバイスが、第1のデバイス上の接続リスティングが受信デバイスと関連付けられたユーザー識別子を含んでいるか否かを判定することを引き起こすことを伴っていてもよく、該接続リスティングは、ネットワーククラスター上で第1のデバイスが先に遭遇したデバイスについてのエントリーを含んでおり、かつ、当該方法は、接続リスティングが受信デバイスと関連付けられたユーザー識別子を含んでいれば、第1のデバイスが発信デバイスにファインドリクエスト応答を送信することを引き起こすことを伴っていてもよく、該ファインドリクエスト応答は、第1のデバイスのネットワークアドレスを、発信デバイスと受信デバイスとの間のデータの送信用のnexthopアドレスとして含んでいる。
第1のデバイス上の接続リスティングは少なくとも1つのエントリーを含んでいてもよく、該少なくとも1つのエントリーは第1の隣接デバイスを識別し、該第1の隣接デバイスは1つ以上のデバイスを介して第1のデバイスに接続されており、該1つ以上のデバイスは、クライアントモードに設定されており、かつ、第1のデバイスおよび第1の隣接デバイスの両方の接続範囲にあり、かつ、当該方法はさらに、接続リスティングが受信デバイスと関連付けられたユーザー識別子を含んでいなければ、第1のデバイスが第1の隣接デバイスにディスカバー(discover)リクエストを送信することを引き起こすことを伴っていてもよく、該ディスカバーリクエストは、受信デバイスのユーザー識別子を含んでおり、かつ、第1の隣接デバイスが、受信デバイスが第2の隣接デバイスに接続されているか否かを判定することを引き起こすように作動可能であり、該第2の隣接デバイスは、アクセスポイントモードに設定され、かつ、1つ以上のデバイスを介して第1の隣接デバイスに接続され、該1つ以上のデバイスは、クライアントモードに設定され、かつ、第1および第2の隣接デバイスの両方の接続範囲にあり、かつ、当該方法はさらに、第1のデバイスにおいて、受信デバイスについてのエントリーを含むように第1のデバイス上の接続リスティングを更新する第1の隣接デバイスからのディスカバーリクエスト応答を受け取ることに応答して、第1のデバイスが発信デバイスにファインドリクエスト応答を送信することを引き起こすことを伴っていてもよく、該ファインドリクエスト応答は、第1のデバイスのネットワークアドレスを、第1の隣接デバイスおよび第2の隣接デバイスを介した発信デバイスと受信デバイスとの間のデータの送信用のnexthopアドレスとして含んでいる。
ディスカバーリクエストは生存時間(TTL)データフィールドを含んでいてもよく、該生存時間(TTL)データフィールドは、TTLが満了する時にディスカバーリクエストの廃棄を容易にするために、ディスカバーリクエストが有効である期間を定義する。
ディスカバーリクエスト応答は、ディスカバーリクエスト応答に追加されるタイムスタンプを含んでいてもよく、該追加は各隣接デバイス(それを通ってリクエスト応答がトラバースする)によって行われるものであり、該タイムスタンプは、所定の時間枠内のディスカバーリクエストの繰り返しを防止するように作動可能である。
第1の隣接デバイスが、受信デバイスが第2の隣接デバイスに接続されているか否かを判定することを引き起こすことは、第2の隣接デバイスにディスカバーリクエストを転送することを伴っていてもよく、該ディスカバーリクエストは、第2の隣接デバイスが、第2の隣接デバイス上の接続リスティングが受信デバイスと関連付けられたユーザー識別子を含んでいるか否かを判定することを引き起こすように作動可能であり、かつ、第1の隣接デバイスが、受信デバイスが第2の隣接デバイスに接続されているか否かを判定することを引き起こすことは、接続リスティングが受信デバイスと関連付けられたユーザー識別子を含んでいれば、第2の隣接デバイスのネットワークアドレスをnexthopアドレスとして含んでいるディスカバリー(discovery)リクエスト応答を、第1の隣接デバイスを介して第1のデバイスに戻るように送信することを伴っていてもよい。
第1の隣接デバイスにおいてディスカバリーリクエスト応答を受け取ることに応答して、当該方法は、第2の隣接デバイスのネットワークアドレスを第2のデバイスに戻るような送信用のnexthopアドレスとして含んでいる受信デバイスについてのエントリーを含むように第1の隣接デバイス上の接続リスティングを更新することと、第1の隣接デバイスのネットワークアドレスを第1のデバイスに戻るような送信用のnexthopアドレスとしてディスカバリーリクエスト応答に追加することとを伴っていてもよい。
当該方法は、第2のデバイスが、任意の隣接デバイスがアクセスポイントモードに設定されているか否か、および、ネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供しているか否かを周期的に判定することを引き起こすことと、ネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供している第1の隣接デバイスを検出する第2のデバイスに応答して、第2のデバイスが、第1の隣接デバイスをネットワーククラスターに連結させて統合ネットワーククラスターを形成することを伴っていてもよく、該形成は、第1のデバイスから更新された接続リスティングを要求することによるものであり、第1のデバイスからの接続を断ち、かつ、第1の隣接デバイスに接続することによるものであり、第1の隣接デバイスから接続リスティング(該接続リスティングは、第1の隣接デバイス上のメモリーに格納されており、かつ、第1の隣接デバイスに接続されたデバイスのユーザー識別子を含んでいる)を要求することによるものであり、第1の隣接デバイスに第1のデバイスについての接続リスティングを提供して第1の隣接デバイス上の接続リスティングの更新を容易にすることによるものであり、第1のデバイスに再接続することによるものであり、かつ、第1のデバイスに第1の隣接デバイスについての接続リスティングを提供して第1のデバイス上の接続リスティングの更新を容易にすることによるものであり、かつ、第1のデバイスが受け取られたデータパケットを送信することを引き起こすことは、受け取られたデータパケットが第1の隣接デバイスに接続された第1のデバイス上の接続リスティング中のクライアントデバイスと関連付けられたデバイス識別子に対応する行先を有するという第1のデバイスによる判定に応答して、データパケットが第2のデバイスを介して第1の隣接デバイスへとルーティングされることを引き起こすことを伴っていてもよい。
第2のデバイスが、その他のデバイスがネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供しているか否かを周期的に判定することを引き起こすことは、第1のデバイスと関連付けられた基本サービスセット識別(BSSID)を判定することと、第2のデバイスが利用可能であるネットワークのスキャンを実行することを引き起こすことと、ネットワーク名と関連付けられたネットワーク化サービスを提供している検出されたデバイスのそれぞれについて、デバイスと関連付けられたBSSID(デバイスがアクセスポイントモードに設定されており、かつ、ネットワーク名についてのネットワーク化サービスを提供していることを示す第1のデバイスのBSSIDとは異なるBSSID)を判定することとを伴っていてもよい。
データパケットが第2のデバイスを介して第1の隣接デバイスへとルーティングされることを引き起こすことは、第2のデバイスが第1のデバイスに現在接続されていないという第1のデバイスによる判定に応答して、データパケットを、第1のデバイスに接続された時に第2のデバイスに送信されるべきデータパケットのキュー(queue;待ち行列)に書き込むことを伴っていてもよい。
第2のデバイスは、第2のデバイス上のメモリーに格納された、接続されたアクセスポイントリスティングを含んでいてもよく、該接続されたアクセスポイントリスティングは、接続されたアクセスポイントとして第1のデバイスを識別する少なくとも1つのエントリーを含んでおり、かつ、第1の隣接デバイスを検出する第2のデバイスに応答して、第2のデバイスが第1の隣接デバイスを接続されたアクセスポイントリスティングに追加することを引き起こし、かつ、第2のデバイスが接続されたアクセスポイントリスティング中の各アクセスポイントに周期的に接続して、統合ネットワーククラスター中のアクセスポイントと行先クライアントとの間でデータパケットをルーティングすることを引き起こす。
データパケットをルーティングすることは、第1のデバイスおよび第1の隣接デバイスのうちの現在接続されている一方から受け取られ、かつ、第1のデバイスおよび第1の隣接デバイスのうちの他方に向けられたデータパケットを格納するための第2のデバイス上のメモリー中のキューを維持することと、第1のデバイスおよび第1の隣接デバイスのうちの現在接続されている一方から周期的に接続を断ち、かつ、第1のデバイスおよび第1の隣接デバイスのうちの他方に接続することと、接続された時に第1のデバイスおよび第1の隣接デバイスのうちの他方にキュー中のデータを送信することとを伴っていてもよい。
第1のデバイス上の接続リスティング中に格納された第2のデバイスについてのエントリーは、ユーザー識別子と、クラスターネットワーク内の第2のデバイスのネットワークアドレスの1つ以上とを少なくとも含んでおり、かつ、第2のデバイスと関連付けられたハードウェア識別子を含んでいる。
複数のデバイス間で確立されたネットワーククラスター(各デバイスはアクセスポイントモードとクライアントモードとに少なくとも設定可能である無線ラジオを有し、該複数のデバイスは、アクセスポイントモードに設定された第1のデバイスと、クライアントモードに設定されており、かつ、第1のデバイスに接続された第2のデバイスとを少なくとも含んでいる)においては、第2のデバイスと意図した受信デバイスとの間で通信するための方法が開示される。当該方法は、第2のデバイスが、受信デバイスと関連付けられたユーザー識別子が第2のデバイス上のメモリー中に格納された接続リスティング中に現れるか否かを判定することを引き起こすことを伴っており、該接続リスティングは、ネットワーククラスター上で先に遭遇されたデバイスについてのエントリーを含んでいる。受信デバイスが接続リスティング中に現れれば、当該方法はさらに、第1のデバイスに1つ以上のデータパケットを送信することを伴い、該データパケットは、受信デバイスと関連付けられたユーザー識別子を含んでいる。受信デバイスが接続リスティング中に現れなければ、当該方法は、第1のデバイスにファインドリクエストを送信して受信デバイスの探索を開始することを伴う。
当該方法は、第2のデバイスにおいて、第1のデバイスからのファインドリクエスト応答を受け取ることを伴っていてもよく、該ファインドリクエスト応答は、受信デバイスがネットワーククラスター全体に到達可能であってもよいことを確認し、かつ、第1のデバイスのアドレスを、第2のデバイスと受信デバイスとの間のデータの送信用のnexthopアドレスとして含んでいる。
別の開示される態様によれば、第1のネットワーククラスターと第2のネットワーククラスターとを統合するための方法が提供され、該ネットワーククラスターはそれぞれ複数のデバイスを含んでおり、各デバイスはアクセスポイントモードとクライアントモードとに少なくとも設定可能である無線ラジオを有し、第1のネットワーククラスターは第1のデバイスを含んでおり、かつ、第2のネットワーククラスターは第1の隣接デバイスを含んでおり、第1のデバイスと第1の隣接デバイスとは、アクセスポイントモードに設定されており、かつ、共通のネットワーク名と関連付けられたネットワーク化サービスを提供する。当該方法は、第2のデバイス(クライアントモードに設定されており、かつ、第1のデバイスおよび第1の隣接デバイスの両方の接続範囲にある)が、任意の隣接デバイスがアクセスポイントモードに設定されているか否かを周期的に判定すること引き起こすことを伴う。当該方法はさらに、ネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供することと、第1の隣接デバイスがネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供していることを検出する第2のデバイスに応答して、第2のデバイスが第1の隣接デバイスをネットワーククラスターに連結させて統合ネットワーククラスターを形成することを引き起こすこととを伴い、該形成は、第1のデバイスから更新された接続リスティングを要求することと、第1のデバイスからの接続を断ち、かつ、第1の隣接デバイスに接続することと、第1の隣接デバイスから接続リスティングを要求することとによるものである。接続リスティングは、第1の隣接デバイス上のメモリー中に格納されており、かつ、第1の隣接デバイスに接続されたデバイスのユーザー識別子を含んでいる。当該方法はさらに、第1の隣接デバイスに第1のデバイスについての接続リスティングを提供して第1の隣接デバイス上の接続リスティングの更新を容易にすることと、第1のデバイスに再接続し、かつ、第1のデバイスに第1の隣接デバイスについての接続リスティングを提供して第1のデバイス上の接続リスティングの更新を容易にすることとを伴う。
第2のデバイスは、第2のデバイス上のメモリー中に格納された、接続されたアクセスポイントリスティングを含んでいてもよく、該接続されたアクセスポイントリスティングは、接続されたアクセスポイントとして第1のデバイスを識別する少なくとも1つのエントリーを含んでおり、かつ、第1の隣接デバイスを検出する第2のデバイスに応答して、第2のデバイスが接続されたアクセスポイントリスティングに第1の隣接デバイスを追加することを引き起こし、かつ、第2のデバイスが接続されたアクセスポイントリスティング中の各アクセスポイントに周期的に接続して統合ネットワーククラスター中のアクセスポイントと行先クライアントとの間のデータパケットをルーティングすることを引き起こす。
ネットワーク名は、ネットワークタイプを識別する共通の識別子部分と、ネットワークの特定のインスタンスを識別するランダムな数字とを含んでいてもよい。
ネットワーク名と関連付けられたネットワーク化サービスが複数のデバイスのうちの別のものによって現在提供されていないという第1のデバイスによる判定に応答して、当該方法はさらに、第1のデバイスが、BluetoothおよびWiFiダイレクト通信のうちの1つのために設定されることを引き起こすことと、ネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供することとを伴っていてもよい。
その他の態様および特徴は、添付の図面と併せて特定の開示される実施形態の次の説明を検討した当業者に明らかとなるであろう。
開示される実施形態を示す図面において、
図1は、複数のデバイス間に確立されたネットワーククラスターの概略図である。 図2は、図1に示されたデバイスのうちのいずれかを実装するためのプロセッサー回路のブロック図である。 図3は、図1に示されたネットワーククラスターのさらなる概略図である。 図4は、図3に示されたクラスターネットワークの確立に関連する機能を実行するように図2のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。 図5は、図2のプロセッサー回路のメモリー中に格納された、接続リスティングおよび接続されたアクセスポイントリスティングの例である。 図6は、クライアントプロセス機能を実行するように図2のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。 図7は、図3に示されたネットワーククラスターを確立するのに用いられる汎用リクエスト/応答メッセージプロトコルの例である。 図8A〜図8Cは、クライアントルータープロセス機能を実行するように図2のプロセッサー回路に指示するためのコードのブロックを描いた一連のプロセスフローチャートである。 図8A〜図8Cは、クライアントルータープロセス機能を実行するように図2のプロセッサー回路に指示するためのコードのブロックを描いた一連のプロセスフローチャートである。 図8A〜図8Cは、クライアントルータープロセス機能を実行するように図2のプロセッサー回路に指示するためのコードのブロックを描いた一連のプロセスフローチャートである。 図9は、ファインドプロセスを実行するように図2のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。 図10は、ルートディスカバリープロセスを実行するように図2のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。 図11は、ディスカバリー応答プロセスを実行するように図2のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。 図12は、ゲートウェイプロセスの第1の部分を実行するように図2のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。 図13は、ゲートウェイプロセスの第2の部分を実行するように図2のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。 図14は、クラスターネットワークを確立するための代替的な実施形態に関連する機能を実行するように図2のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。 図15は、図14に示されたプロセスによって確立されたネットワーククラスターの概略図である。 図16は、Bluetooth通信プロトコルを用いてクラスターネットワークを確立することに関連する機能を実行するように図2のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。 図17は、図14および図16に示されたプロセスによって確立されたネットワーククラスターの概略図である。
詳細な説明
図1を参照すると、概して100において、複数のデバイス間に確立されたネットワーククラスターが示されている。図1に示されている実施形態では、ネットワーククラスター100は、第1のデバイス102と、第2のデバイス104と、デバイス106との間に確立されており、該デバイスはそれぞれ、無線ラジオ(図示せず)を有する。この実施形態では、第1のデバイス102はユーザー108によって操作されているスマートフォンであり、第2のデバイス104はユーザー110によって操作されているタブレットコンピューターであり、かつ、デバイス106はラップトップコンピューターである。その他の実施形態では、デバイス102〜デバイス106は、例えば、スマートフォン、タブレットもしくはラップトップコンピューター、デスクトップコンピューター、ルーターもしくはアクセスポイントのような独立型のネットワーク化デバイス、プリンターのようなコンピューター周辺機器、および/または、ネットワーク化された機器のような物理的実体のような、複数のネットワーク化されたデバイスのいずれかであってもよい。一般的に、ネットワーククラスター100への完全な参加のために、デバイスはそれぞれ、アクセスポイントモードとクライアントモードとに少なくとも設定可能である無線ラジオを有するべきである。しかしながら、いくつかのデバイスは、アクセスポイントとしてのみ、または、クライアントモードのみで作動することのみが可能であり、かつ、未だにネットワーククラスター100の一部であってもよいが、いくつかのネットワーク確立機能を実行することができないかも知れない。確立されたネットワーククラスター100は、関連付けられたネットワーク名を有し、該関連付けられたネットワーク名は、1つの実施形態ではサービスセット識別子(SSID)であってもよい。1つの実施形態では、ネットワーク名は「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のようなその他のデバイスからの接続リクエストを待つ。IEEE802.11無線ネットワークでは、接続リクエストは「プローブリクエスト」と呼ばれる。クライアントモードに設定された第2のデバイス(第2のデバイス104のような)から接続リクエストを受け取ることに応答して、第1のデバイス102は、接続リクエストを受け入れ、かつ、第2のデバイス104と関連付けられたユーザー識別子を判定し、かつ、第1のデバイス102上のメモリー中に格納された接続リスティングにデバイスについてのエントリーを追加する。1つの実施形態では、接続リスティング中の第2のデバイス104についてのエントリーは、デバイスのユーザー識別子と、クラスターネットワーク内のデバイスのネットワークアドレスとを含んでいる。IEEE802.11プロトコルの下での接続リクエストの受け入れは、接続が完了する前に第2のデバイスによる認証および関連付けを要求するプロセスを伴っていてもよい。本明細書で開示される実施形態がIEEE802.11ネットワーク化プロトコルを参照して説明される一方で、無線ネットワークは、Bluetooth(登録商標)、Apple iOSオペレーティングシステム上のMultipeer Connectivity framework、Wi−FiダイレクトまたはAndroidオペレーティングシステム上のWi−Fi P2Pのようなその他の無線ネットワーク化プロトコルを用いて実施されていてもよい。
同様に、第1のデバイス102はまた、デバイス106から接続またはプローブリクエストを受け取ってもよく、かつ、第1のデバイス102上の接続リスティングにデバイスについてのエントリーを追加してもよい。接続リスティングは、第1のデバイス102によって、第1のデバイスによって提供されたアクセスポイントに接続されたデバイス(デバイス104およびデバイス106のような)を追跡するのに用いられる。続いて、第1のデバイス102が第2のデバイス104のユーザー識別子を含むデータパケットをデバイス106から受け取れば、第1のデバイス102は、ユーザー識別子が接続リスティング中に現れるか否かを判定し、現れれば、第2のデバイスのネットワークアドレスを探索し、かつ、第2のデバイスのネットワークアドレスにデータパケットを送信する。
上記のプロセスが上記の説明において第1のデバイス102によって開始されるものとして説明されている一方で、実際は、各デバイス102〜106が、アクセスポイントモードにある間に接続リクエストが受け取られるか、または、アクセスポイントモードにある間にネットワーク名と関連付けられたネットワーク化サービスを提供している別のデバイスが発見されるかのいずれかまで、クライアントモードに設定されることとアクセスポイントモードに設定されることとを周期的に交互に繰り返すことによって、同一のネットワーククラスター確立プロセスを実行してもよい。
上記で開示されたクラスターネットワーク確立プロセスは、デバイスの無線ラジオがクライアントモードとホットスポットモードとで同時に作動することを製造業者によって制限されるかも知れない(いくつかの場合、無線ラジオがかかる作動を可能であったとしても)という、多くのスマートフォンおよびタブレットデバイスと関連付けられる制限を克服する。ネットワーククラスター100は、第1のデバイス102のようないくつかのデバイスが、デバイス104およびデバイス106のようなその他のデバイスがクライアントモードに設定される一方でアクセスポイントモードに設定されることを引き起こすことによって確立されている。ネットワーククラスター100を確立する際、デバイスはまた、ネットワーククラスター100においてその他のデバイスによって何のサービスが提供されているかに基づいて、クライアントモードとアクセスポイントモードとの間で設定を変えてもよい。
第1のデバイス102によって提供されるアクセスポイントには、追加デバイスが接続され、ネットワーククラスター100が図1に描かれるより多数のデバイスを含むように拡張することを引き起こしてもよい。実際には、スマートフォンデバイスが、同時接続の数を制限するかも知れない。例えば、いくつかのスマートフォンオペレーティングシステムは、3つのデバイスへの接続を制限し、一方で、その他のものは、10まで、またはそれ以上の同時接続を可能にするかも知れない。
図2には、デバイスのいずれかを実装するためのプロセッサー回路のブロック図が示されている。図2を参照すると、プロセッサー回路200はマイクロプロセッサー202を含んでおり、該マイクロプロセッサー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はまた、無線ラジオ216と、IEEE802.11WLANローカルネットワークのようなローカルネットワークに接続するためのアンテナ218とを含んでいる。無線ラジオ216はまた、Bluetooth、WiFiダイレクトまたは近距離無線通信のようなその他の無線プロトコルを介して接続を提供してもよい。
プロセッサー回路200はさらに、位置受信機230を含んでいる。位置受信機230は、グローバルポジショニングシステム(GPS)信号を受け取るためのアンテナ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はコードを格納しており、該コードは、スマートフォンデバイスについてはAndroid商標ベースのオペレーティングシステム、iOSベースのオペレーティングシステムまたは無線通信を支持するその他の任意のオペレーティングシステムであってもよいオペレーティングシステムを実装するようにマイクロプロセッサー202に指示するためのものである。残りの開示は、概して、Androidベースのオペレーティングシステムの下での種々の開示される実施形態の実装に関連するが、同一の原則はまた、数個の実装の相違点を有するその他のオペレーティングシステムにも適用される
第1のデバイス102と第2のデバイス104とはそれぞれ、図2に示されているものと同様のプロセッサー回路200を用いて実装されていてもよい。ラップトップコンピューターデバイス106は、図2に示されている部品の多くを含んでいてもよいが、位置受信機230およびRFベースバンドラジオ212のようないくつかの部品は省略される。実施形態が図2におけるプロセッサー回路200の構造を参照して本明細書で説明される一方で、説明されるシステムの実施形態および/またはプロセスの実施形態はまた、その他のタイプのデバイス間の通信にも適用可能である。一般的に、デバイス102〜デバイス106はそれぞれ、フラッシュメモリー210のアプリケーション位置242の中にローディングされた、コンピューターで読み取り可能なコードを有しており、該コードは、各デバイスがネットワーククラスター100を確立するために必要な機能を提供することを引き起こす。
ネットワーククラスター100は、図3に概略的に示されている。図3を参照すると、第1のデバイス102は長方形として描かれており、デバイスがアクセスポイントモードに設定されていることを示している。第2のデバイス104とデバイス106とは円を用いて描かれており、これらデバイスがクライアントモードに設定されていることを示している。第1のデバイス102と第2のデバイス104と第3のデバイスとは、ネットワーククラスター100を形成している。第1のデバイス102はユーザー識別子(uuid)194を有し、第2のデバイス104はユーザー識別子605を有し、かつ、第3のデバイスはユーザー識別子348を有する。ユーザー識別子は概して、デバイスに固有であるべきであり、かつ、デバイスについての電話番号、媒体アクセス制御アドレス(MAC)および/または国際携帯機器識別(IMEI)番号のようなデバイスに固有に割り当てられた識別子を用いて生成されてもよい。したがって、図3に示されているユーザー識別子は、説明のために簡略化されているが、実際は有意に長い文字列であり、固有性を支持する。
図4を参照すると、400において、クラスターネットワーク100を確立することに関連する機能を実行するためのコードのブロックを描いたプロセスフローチャートが示されている。ブロックは概してコードを表しており、該コードは、不揮発性フラッシュメモリー210のアプリケーション格納位置242から読み取られてもよく、種々のネットワーク化機能を実行するようにマイクロプロセッサー202に指示するためのものである。各ブロックを実装するための実際のコードは、例えば、Java、C、Objective−C、C++、C#および/またはアセンブリーコードのような任意の適切なプログラム言語で書かれていてもよい。
クラスター形成プロセス400は、第1のデバイス102を設定するアプリケーションが起動されて、ネットワーククラスター100を確立するための機能を提供する時に、ブロック402において開始される。その後、ブロック404がデバイスをクライアントモードに設定し、かつ、無線ラジオ216が消されていれば無線ラジオを作動させるようにマイクロプロセッサー202に指示する。ブロック404はまた、第1のデバイス102の無線設定セッティングにおいてエントリーを追加または更新するようにマイクロプロセッサー202に指示する。無線設定セッティングは、概して、不揮発性フラッシュメモリー210のシステム設定メモリー位置248中のファイル中に格納されるであろう。使用中の安全プロトコルならびにユーザー名および/もしくはパスワードのような任意のユーザー認証情報(使用中であれば)のような種々の設定セッティングを含んでいてもよいSSID「WAVE−」についてのエントリーが、追加または更新される。更新された設定は、第1のデバイス102のユーザーのさらなる介入を伴うことなく、「WAVE−」SSIDを有するアクセスポイントへの無線接続を可能にする。
ブロック404に続いて、マイクロプロセッサー202は、必要に応じて、ゲートウェイプロセス1200を実行するように指示されてもよく、該ゲートウェイプロセス1200は、第1のデバイス102がRFベースバンドラジオ212を介してセルラーデータ通信ネットワークに接続されているか否か、または、無線ラジオ216を介して無線ネットワークに接続されているか否かを判定するためのものである。ゲートウェイプロセス1200は、本明細書において後に説明される。
プロセス400はブロック406において継続し、該ブロック406は無線ネットワークについてのスキャンを実行するようにマイクロプロセッサー202に指示する。ブロック408は、SSID「WAVE−」の下でのネットワークサービスが任意のデバイスによって提供されているか否かを判定するようにマイクロプロセッサー202に指示する。ブロック408においてSSID「WAVE−」の下でのネットワークサービスが第1のデバイス102の範囲内にある任意のデバイスによって提供されていれば、その時は、デバイスは、その他のデバイスに接続可能であり、かつ、第1のデバイスは、本明細書で後に説明されるクライアントプロセス600を実行する。
SSID「WAVE−」についてのネットワークサービスを提供しているデバイスが第1のデバイス102の範囲内になければ、その時は、プロセスはブロック410において継続し、該ブロック410は、第1のデバイス102をアクセスポイントモードに設定し、かつ、接続リクエストを待つようにマイクロプロセッサー202に指示する。その後、第1のデバイス102はSSID「WAVE−」についての無線ネットワーク化サービスを提供し、かつ、ブロック412が、例えばデバイス104およびデバイス106のようなその他のデバイスから接続リクエストが受け取られるか否かを判定するようにマイクロプロセッサー202に指示する。ブロック412においてタイムアウト期間内に接続リクエストが受け取られなければ、その時は、マイクロプロセッサー202は、ブロック406に戻るように指示され、かつ、第1のデバイス102は、クライアントモードに戻るように設定され、かつ、SSID「WAVE−」についてのネットワークサービスを提供しているその他のデバイスをスキャンする。
したがって、第1のデバイス102は、第1のデバイスがアクセスポイントモードにある間に接続リクエストが受け取られるか、または、クライアントモードにある間にネットワーク名と関連付けられたネットワーク化サービスを提供している別のデバイスが発見されるかのいずれかまで、クライアントモードに設定されることとアクセスポイントモードに設定されることとを周期的に交互に繰り返す。1つの実施形態では、クライアントモードおよびアクセスポイントモードにおいて消費される各期間は、ランダムな時間成分を含んでいてもよく、複数のデバイスがクライアントモードとアクセスポイントモードを交互に繰り返している時に、突然、1つのデバイスが、別のものがクライアントモードにある間にアクセスモードにあり、したがって、クラスターネットワーク100の確立を可能にするようになっている。
ブロック412において接続リクエストが受け取られれば、その時は、マイクロプロセッサー202は、受け取られたリクエストの内容に基づいてブロック414、ブロック416またはブロック418のうちの1つに向かうように指示される。1つの実施形態では、接続リクエストが、新規接続についての「HELLO」タイプリクエストの形式をとってもよく、既存の接続の終了についての「GOODBYE」タイプリクエストの形式をとってもよく、かつ、第1のデバイス102に接続されたデバイスのステータスの変化を知らせる「NOTIFY」タイプリクエストの形式をとってもよい。ブロック412において、例えば第2のデバイス104から「HELLO」タイプリクエストが受け取られれば、第1のデバイス102は第2のデバイスに戻るように確認(ACK)メッセージを送信し、メッセージの受け取りを確認する。
その後、ブロック420が、第1のデバイス102上に格納された接続リスティングを更新するようにマイクロプロセッサー202に指示する。第1のデバイス102上に格納された接続リスティングの例が、図5中の500において表形式で示されている。第2のデバイス104上に格納されていてもよい接続リスティングの同様の例が、520において示されている。図5を参照すると、接続リスティング500は複数のフィールド502を含んでおり、該複数のフィールド502は、エントリーと関連付けられたユーザー識別子を格納するためのuuidフィールドと、インターネットプロトコル(IP)アドレスを関連付けられたデバイスについてのdotted octetとして格納するためのaddrフィールドと、データをルーティングするためのnext hopのIPアドレスを格納するためのnexthopアドレスと、デバイスがアクセスポイントモードにあるか否か(isMaster)またはデバイスがクライアントルーティングモードにあるか否か(isRouter)に関連する2つのBooleanフィールドと、関連付けられたデバイスが最後に通信した時間を格納するための「lastheard」フィールドと、デバイスと関連付けられたハードウェア識別子を格納するためのハードウェアアドレス(hwAddress)フィールドとを含んでいる。接続リスティング500は、この実施形態ではuuid194を割り当てられた第1のデバイス102自体についての第1のエントリー504と第2のエントリー506とを含んでいる。第1のデバイス102は、エントリー504およびエントリー506において反映されるように、2つの異なるIPアドレスを割り当てられている。isMasterフィールドは、第1のデバイス102が現在アクセスポイントモードに設定されていることを示すTRUEに設定されている。この実施形態では、クライアントモードに設定されたデバイスのみがルーターであると考えられるので、isRouterフィールドはFALSEに設定されている。エントリー504およびエントリー506についてのhwAddressは、第1のデバイス102のハードウェア識別子を反映している。
接続リスティング500はまた、第2のデバイス104についてのエントリー508を含んでおり、該エントリー508は、第2のデバイスのユーザー識別子605、IPアドレスおよびハードウェアアドレスを含む第2のデバイスからのHELLOリクエストを受け取ることに応答して、第1のデバイス102によってブロック420において追加される。したがって、第2のデバイス104についてのエントリー508は、エントリー508において反映されるようなipaddrを有し、かつ、isMasterフィールドは、第2のデバイス104が現在クライアントモードに設定されていることを示すFALSEに設定されている。この実施形態では、第2のデバイス104は、本明細書で後に説明されるようにルーターモードにないので、isRouterフィールドはFALSEに設定されている。エントリー508についてのhwAddressは、第2のデバイス104のハードウェア識別子を格納している。一旦接続リスティング500が更新されると、ブロック420は、ブロック412に戻ってさらなるリクエストを待つようにマイクロプロセッサー202に指示する。
ブロック412において受け取られたリクエストがGOODBYEリクエストであれば、その時は、デバイス(図3におけるデバイス104またはデバイス106のような)が、第1のデバイス102に、それが今にもネットワーククラスター100からの接続を断ちそうであることを知らせている。この場合、ブロック416は、デバイスに確認を送信するようにマイクロプロセッサー202に指示する。その後、ブロック420は、デバイスと関連付けられた接続リスティング500中の任意のエントリーを除去するようにマイクロプロセッサー202に指示する。例えば、GOODBYEリクエストが第2のデバイス104から受け取られれば、第1のデバイス102は、接続リスティング500中のエントリー508を削除する。その後、ブロック420は、ブロック412に戻ってさらなるリクエストを待つようにマイクロプロセッサー202に指示する。
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において開始され、該ブロック602は、アクセスポイントモードにある第1のデバイス102と関連付けるようにマイクロプロセッサー202に指示する。IEEE802.11プロトコルについては、関連付けは、クライアントデバイス104とアクセスポイントデバイス102との間のメッセージの交換を伴い、かつ、データリンク層において接続を確立する。次に、ネットワーククラスター100は、関連付けプロセス中に確立されたデータリンク層に依拠するネットワーク層において確立される。ネットワーククラスター100の確立がブロック604において継続し、該ブロック604は、第2のデバイス104へのIPアドレスの割り当てを要求するための動的ホスト設定プロトコル(DHCP)リクエストを第1のデバイス102に送信するようにマイクロプロセッサー202に指示する。この実施形態では、第1のデバイス102はDHCPサーバーを実装し、該DHCPサーバーはIPアドレスのプールからIPアドレスを第2のデバイス104に割り当てる。ブロック604はまた、第1のデバイス102についてのIPアドレスを判定するようにマイクロプロセッサー202に指示する。第1のデバイス102上で動いているDHCPサーバーが第2のデバイス104からIPアドレスリースリクエストを受け取る時、DHCPサーバーは、第2のデバイスについてのIPアドレスを留保し、かつ、第2のデバイスのMACアドレス、DHCPサーバーが提供しているIPアドレス、サブネットマスク、リース期間およびオファーを行っているDHCPサーバーのIPアドレスを含むメッセージをクライアントに送信することによってリースオファーを行う。したがって、第2のデバイス104へのDHCPリースオファー送信は、第2のデバイスに第1のデバイス102のIPアドレスを提供する。
その後、プロセス600はブロック606において継続し、該ブロック606は、第2のデバイス104と第1のデバイス102との間で成功したネットワーク接続が確立されたか否かを判定するようにマイクロプロセッサー202に指示する。成功したネットワーク接続は、アクセスポイントとの成功した関連付け、割り当てられたIPアドレスを受け取ること、および、第1のデバイス102のIPアドレスを受け取ることを必要とする。接続が成功裡に完了すれば、ブロック606は、ブロック608へと向かうようにマイクロプロセッサー202に指示し、該ブロック608は、第1のデバイス102にHELLOリクエストを送信するようにマイクロプロセッサーに指示する。したがって、ブロック602とブロック604とは、本明細書に記載のさらなるフローチャートにおいて参照されるような、関連付けおよび接続プロセスを有効に伴う。
図7中の700において、構造化データをシリアル化するためのグーグルの「photo2」プロトコルバッファーシンタックス(syntax)における汎用リクエストおよび/または応答メッセージの例が示されている。図7を参照すると、リクエスト/応答メッセージプロトコルは複数のフィールド702を含んでおり、該複数のフィールド702はそれぞれ、タイプと、名称と、固有の番号がふられたタグとを有する。フィールドはまた、フィールドが「必要とされている(required)」(メッセージはこのフィールドのうちの1つを正確に有していなければならない)か否か、「任意選択的である(optional)」(このフィールドのうちのゼロまたは1)か否か、および、「繰り返しである(repeated)」(フィールドはゼロから任意の回数繰り返されてもよい)か否かを示す規則で始まる。いくつかのタイプは、uint64(無署名の64ビットインテジャー)、uint32(無署名の32ビットインテジャー)およびbytes(バイトの任意のシーケンス)のように、シンタックスにおいて予め定められている。例として、typeフィールド704(すなわち、名称「type」を有する)が「必要とされ」、「RequestType」のタイプを有し、かつ、タグ「1」を割り当てられている。「RequestType」タイプは、一般用語において上記したHELLO、GOODBYEおよびNOTIFYのような種々のメッセージタイプに割り当てられた考え得る値の予め定められたリストを記載した目録722中に定義されている。
したがって、HELLOリクエストは、1であるtypeフィールド704と、送信デバイスユーザー識別子に対応するuuidフィールド706とを必要とする。HELLOリクエストはまた、送信デバイスのIPアドレスのリストを保持しているゼロ、1、またはそれ以上のaddrフィールド708を含んでいる。送信デバイスは、任意のその他のネットワークまたはアクセスポイントモードにあるデバイスに接続されていなくてもよく、かかる場合、HELLOリクエストにおいてアドレスは送信されない。しかしながら、その他の実施形態では、送信デバイスは、アクセスポイントモードにある別のデバイス、Bluetooth(登録商標)もしくはIEEE802.11WLANローカルネットワークのような別のローカルネットワーク、および/または図2に示されているRFベースバンドラジオ212を介したセルラーデータネットワークに接続されていてもよい。これらネットワークはそれぞれ、概して、送信デバイスにIPアドレスを提供するであろうし、該IPアドレスは、addrフィールド708中に含まれており、かつ、第1のデバイス102に送信される。したがって、第2のデバイス104によってブロック608において送信されるHELLOリクエストは、値[1,605,192168000010]を含んでいる。その後、ブロック610は、HELLOメッセージに応答して、第1のデバイス102から戻るように確認メッセージ(ACK)が受け取られたか否かを判定するようにマイクロプロセッサー202に指示する。ACKメッセージは、ACKのtypeフィールドと、第1のデバイス102についてのuuid194と、HELLOメッセージについてのRequestTypeを含むackフィールドとに対応する値[9,194,1]を含んでいる。上記の値を含むACKメッセージがタイムアウト内に受け取られなければ、その時は、ブロック610は、ブロック608に戻るようにマイクロプロセッサー202に指示し、かつ、HELLOメッセージが再送信される。タイムアウトが予め定められた最大の回数よりも多く発生すれば、その時は、ブロック610は、第1のデバイス102への接続を破棄するようにマイクロプロセッサー202に指示してもよく、かつ、図4におけるクラスター形成プロセス400のブロック410に戻るようにマイクロプロセッサーに指示してもよい。
上記の値を含むACKメッセージがタイムアウト内に受け取られれば、その時は、ブロック610は、ブロック612へと向かうようにマイクロプロセッサー202に指示する。ブロック612は、第2のデバイス104上に格納された接続リスティングを更新するようにマイクロプロセッサー202に指示する。図5に戻ると、第2のデバイス104についての接続リスティング520は、接続リスティング500についての複数のフィールド502に対応する複数のフィールド522を含んでいる。接続リスティング520は、この実施形態では割り当てられたuuid605を有する第2のデバイス104自体についての第1のエントリー524および第2のエントリー526を含んでいる。第2のデバイス104はまた、エントリー524およびエントリー526において反映されるような2つの異なるIPアドレスを割り当てられている。isMasterフィールドは、第2のデバイス104が現在クライアントモードに設定されていることを示すFALSEに設定されている。第2のデバイス104がまだルーターモードに配置されていないので、isRouterフィールドはFALSEに設定されている。エントリー524およびエントリー526についてのhwAddressは、第2のデバイス104のハードウェア識別子を反映している。したがって、ブロック612は、接続リスティング520にエントリー528を追加するようにマイクロプロセッサー202に指示し、該エントリー528は、第1のデバイス102についてのuuid194と、第1のデバイスについてのipaddrおよびnexthop IPアドレスと、第1のデバイスがアクセスポイントモードにあり、かつ、ルーターではないという指標と、第1のデバイスのhwAddressとを含んでいる。
その後、クライアントプロセス600はブロック614において継続し、該ブロック614は、第1のデバイス102を、不揮発性フラッシュメモリー210(図2に示されている)中に格納されている接続されたアクセスポイントリスティング250に追加するようにマイクロプロセッサー202に指示する。アクセスポイントモードにある多数のデバイスが同一のSSID「WAVE−」上でネットワークサービスを提供しているかも知れないので、各アクセスポイントデバイスを固有に識別するには、追加の情報が必要とされる。1つの実施形態では、SSID「WAVE−」上でネットワークを提供している異なるアクセスポイントを固有に識別するのに、基本サービスセット識別(BSSID)が用いられる。不揮発性フラッシュメモリー210中の接続されたアクセスポイントリスティング250は、接続されたアクセスポイントについてのuuidおよびBSSID値を格納するのに用いられる。BSSIDは、デバイスに割り当てられた固有の媒体アクセス制御(MAC)アドレスであり、かつ、すべての無線データパケットにおいて送信される。図3に戻ると、540において接続されたアクセスポイントリスティングの例が示されている。接続されたアクセスポイントリスティング540は2つのフィールド542を含んでおり、該2つのフィールド542は、エントリーと関連付けられたユーザー識別子を格納するためのuuidフィールドと、アクセスポイントデバイスについてのBSSID識別子を格納するためのhwAddressまたはBSSIDフィールドとを含んでいる。したがって、ブロック614は、第1のデバイス102についてのエントリー544を追加するように第2のデバイス104のマイクロプロセッサー202に指示する。
したがって、第2のデバイス104と第1のデバイス102とは接続され、かつ、ネットワーククラスター100を形成し、かつ、ブロック612は、ブロック616へと向かうようにマイクロプロセッサー202に指示する。ブロック616はマイクロプロセッサー202を指揮して、その他のデバイスの検索、ネットワーククラスター100中のデバイス間の文章、音声、画像ファイル、映像およびその他のコンテンツの送信のような通常のオペレーションを、ネットワーククラスター100を用いて開始する。
ブロック616はまた、SSID「WAVE−」についてのネットワークサービスを提供しているその他のデバイスのスキャンを継続するようにマイクロプロセッサー202に指示する。図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とはそれぞれ、互いに接続されたデバイスuuidを反映して、統合ネットワーククラスター306中のデバイス間のルーティングを容易にするように更新される。例えば、第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は、任意の検出された隣接デバイス(すなわち、デバイス102以外)がアクセスポイントモードに設定されており、かつ、SSID「WAVE−」と関連付けられたネットワークサービスを提供しているか否かを判定するようにマイクロプロセッサー202に指示する。ネットワーククラスター100はSSID「WAVE−」に基づいて形成されているので、第2のデバイス104は、SSID「WAVE−」についてのネットワークサービスを提供しているアクセスポイントモードにあるデバイスを区別することができず、かつ、デバイスについてのBSSIDが異なっているか否かを判定する必要がある。したがって、ブロック618はさらに、受け取られたデータパケット中のBSSIDを読み取り、かつ、BSSID値を、接続されたアクセスポイントリスティング540におけるエントリー544中の第1のデバイス102について格納されたBSSIDと比較するようにマイクロプロセッサー202に指示する。
ブロック618においてSSID「WAVE−」についてのネットワークサービスを提供している隣接デバイスが検出されなければ、その時は、ネットワーククラスター100の通常のオペレーションがブロック616において継続する。ブロック618において隣接デバイスがSSID「WAVE−」についてのネットワークサービスを提供していれば、マイクロプロセッサーは、図8に関連して以下で説明されるクライアントルータープロセスを実行するように指示される。図3に戻ると、第2のデバイス104の範囲内であるが、必ずしも第1のデバイス102の範囲内にない、第1の隣接デバイス300が示されている。図8A〜図8Cには、クライアントルータープロセスが示されている。図8Aを参照すると、プロセス800は、ブロック802において開始され、該ブロック802は、第1のデバイス102にNOTIFYリクエストを送信するようにマイクロプロセッサー202に指示する。図6に戻ると、メッセージプロトコル700にしたがうNOTIFYリクエストは、typeフィールド704、uuidフィールド706およびpeerフィールド716を含んでいる。peerフィールド716は、第2のデバイス104が遭遇したその他のデバイスについての複数のユーザー識別子と、各デバイスについての各IPアドレスとを保持するのに用いられる。ピアメッセージについてのタイプはpeerであり、かつ、ピアuuidと、IPアドレスaddr(デバイスが到達され得る)のリストとを含むものであるとして724において定義される。したがって、ブロック802において送信されたNOTIFYメッセージは、値[8,605]を含んでいてもよく、peerフィールド716は値を有さない。なぜなら、ネットワーク上にピアデバイスがまだ発見されておらず、かつ、フィールド716の「繰り返す」性質が値を必要としないからである。
その後、ブロック804が、ブロック802におけるNOTIFYリクエストの送信を通して引き出されたNOTIFY応答において、第1のデバイス102から接続リスティングが受け取られたか否かを判定するようにマイクロプロセッサー202に指示する。タイムアウト後に第1のデバイス102からNOTIFY応答が受け取られなければ、その時は、ブロック804は、ブロック802に戻るようにマイクロプロセッサー202に指示し、かつ、NOTIFYリクエストが再送信される。ブロック804において所定の最大トライ数が達成されれば、その時は、ブロック804が、ブロック616に戻り、かつ、通常のオペレーションを再開するようにマイクロプロセッサー202に指示する。ブロック804において第1のデバイス102からNOTIFY応答が受け取られれば、その時は、プロセス800はブロック806において継続する。NOTIFY応答は、NOTIFYリクエストと同一のプロトコルを有する。ブロック806は、ACK応答[9,605,8]においてNOTIFYリクエストを確認するようにマイクロプロセッサー202に指示する。この場合、第2のデバイス104はまだルーターとして設定されていないが、そうする過程にある。ブロック806はまた、接続リスティング520を更新して、NOTIFY応答中に含有され、かつ、デバイス104上の接続リスティング中にはまだ反映されていない任意のピアデバイスを追加するようにマイクロプロセッサー202に指示する。この実施形態では、第2のデバイス104が、第1の隣接デバイス300のようなアクセスポイントモードにある第2のデバイスに遭遇する時、アクセスポイントデバイスについてのBSSIDのリスティングが作成され、かつ、ブロック806が、リスティングに第1のデバイス102のBSSIDを追加するようにマイクロプロセッサー202に指示する。
その後、ブロック808が、アクセスポイントモードにある第1のデバイス102(第1のAP)からの接続を断ち、かつ、第1の隣接デバイス300に接続するようにマイクロプロセッサー202に指示する。ブロック808はまた、第1の隣接デバイス300(隣接AP)と関連付け、かつ、接続するようにマイクロプロセッサー202に指示する。ブロック602およびブロック604に関連して上記で開示されたように、関連付けはデータリンク層において無線リンクを確立することを伴い、かつ、接続はネットワーク層において接続すること(すなわち、第1の隣接デバイス300上で動いているDHCPサーバーからIPアドレスを取得すること、および、第1の隣接デバイスのIPアドレスを取得すること)を伴う。
その後、クライアントルータープロセス800はブロック810において継続し、該ブロック810は成功したネットワーク接続が確立されたか否かを判定するようにマイクロプロセッサー202に指示する。ブロック810においてネットワーク接続が成功裡に完了しなければ、その時は、マイクロプロセッサー202は、図8Cにおけるブロック834(本明細書において後で説明される)へと向かうように指示される。
ブロック810においてネットワーク接続が成功裡に完了すれば、その時は、マイクロプロセッサー202はブロック812へと向かうように指示され、該ブロック812は、第1の隣接デバイス300にNOTIFYリクエストを送信するようにマイクロプロセッサーを指揮する。この場合、通知リクエストは値[8,605,194,192168000001](すなわち、NOTIFYであるtype、第2のデバイス104のuuid60ならびに第1のデバイス102のuuid194およびaddr)を含んでいる。ブロック804において第1のデバイス102から受け取られた元々のNOTIFY応答中に追加のピアデバイスが含まれていれば、その時は、さらなるuuidおよびaddr値が、NOTIFYリクエスト中における第1のデバイスのuuidおよびaddrに続く。
図4に戻ると、第1の隣接デバイス300はクラスター形成プロセス400を実行しているであろうし、かつ、ブロック418において第2のデバイス104からNOTIFYリクエストが受け取られれば、第1の隣接デバイスはACKメッセージでリクエストを確認するであろう。その後、ブロック422が、NOTIFYメッセージ内に接続リスティングが含有されているか否かを判定するように第1の隣接デバイス300のマイクロプロセッサー202に指示する。ブロック422において接続リスティングが含まれていれば、その時は、マイクロプロセッサー202はブロック424へと向かうように指示され、該ブロック424は、マイクロプロセッサーが第1の隣接デバイス上に格納された接続リスティングを更新すること、および、第2のデバイス104にルーターとしてのフラグを立てることを引き起こす(すなわち、第2のデバイスについてのisRouterフィールドがTRUEに設定される)。さらに、ブロック424はまた、第2のデバイスがネットワーク中の別のデバイスに接続される一方で、第2のデバイスを通してルーティングされるべきデータパケットを保持するための第2のデバイス104についての不揮発性フラッシュメモリー210(図2)におけるキュー位置246内のキューを配分するようにマイクロプロセッサー202に指示する。その後、ブロック426が、第2のデバイス104に第1の隣接デバイス300の接続リスティングを送信するようにマイクロプロセッサー202に指示する。
ブロック422において接続リスティングが含まれていなければ、その時は、NOTIFYメッセージが、第2のデバイス104が今にも接続を断ち、かつ、アクセスポイントモードにある別のデバイス(この場合、第1のデバイス102)と関連付けられようとしている旨の通知であると第1の隣接デバイス300によって解釈され、かつ、プロセスはブロック428において継続する。ブロック428はマイクロプロセッサー202を指揮して、第1の隣接デバイス300上に格納された接続リスティング中のエントリーに「休止(paused)」のフラグを立てる。これら条件下、第2のデバイス104についてのデータトラフィックは、デバイスが第1の隣接デバイスに再接続するまで、デバイスについてのルーターキュー246中にキャッシュされる。ブロック428はまた、ブロック426へと向かうようにマイクロプロセッサー202に指示し、該ブロック426は、第2のデバイス104に第1の隣接デバイス300についての接続リスティングを送信するようにマイクロプロセッサー202に指示する。
プロセス800はブロック814において継続し(図8A)、該ブロック814は、第1の隣接デバイス300によって送信された接続リスティング(ブロック426、図4)が受け取られたか否かを判定するように第2のデバイス104のマイクロプロセッサー202に指示する。接続リスティングがタイムアウトの満了前に受け取られなければ、ブロック814は、ブロック812に戻るようにマイクロプロセッサー202に指示し、かつ、NOTIFYリクエストが再送信される。最大トライ数後に接続リスティングが未だに受け取られていなければ、ブロック814は、図8Cにおけるブロック834に戻るようにマイクロプロセッサー202に指示する。
ブロック814において接続リスティングが受け取られれば、その時は、マイクロプロセッサー202は、図8Bに示されているブロック816へと向かうように指示される。ブロック816は、NOTIFY応答の受け取りを確認し、かつ、第2のデバイス104上の接続リスティングを更新するようにマイクロプロセッサー202に指示する。図5に戻ると、第2のデバイス104上の接続リスティング520は、348であるユーザー識別子と、192.168.10.1であるIPアドレスとを有する第1の隣接デバイス300についての新規エントリー530を含んでいる。エントリー530はまた、そのIPアドレスとして第1の隣接デバイス300についてのnexthopを列挙し、かつ、isMasterフィールドは、デバイスがアクセスポイントモードにあることを示している。
ブロック816はまた、接続されたアクセスポイントBSSIDのリスティングに第1の隣接デバイス300を追加し、かつ、図2に示されている不揮発性フラッシュメモリー210のキュー位置246における第1の隣接デバイス300についての転送キューを配分するようにマイクロプロセッサー202に指示する。その後、プロセス800はブロック818において継続し、該ブロック818は、第1の隣接デバイス300からの接続を断ち、かつ、第1のデバイス102と関連付け、かつ、再接続するようにマイクロプロセッサー202に指示する。第1のデバイス102との再接続が成功しなければ、その時は、ブロック820は、図8Cにおけるブロック834へと向かうようにマイクロプロセッサー202に指示する。しかしながら、再接続が成功すれば、ブロック820は、ブロック822へと向かうようにマイクロプロセッサー202に指示し、ここでは第2のデバイス104が第1の隣接デバイス300に接続されたその他のデバイスと関連付けられたエントリーを第1のデバイス102に戻るように送信して、第1のデバイス上の接続リスティングを更新する。したがって、ブロック822は、NOTIFYリクエストを第1のデバイス102に送信するように第2のデバイス104のマイクロプロセッサー202に指示する。NOTIFYリクエストは、第1の隣接デバイス300に接続されたその他のデバイス(もしあれば)についてのユーザー識別子および関連付けられたIPアドレスを有するpeerフィールド716を含んでいてもよい。第1のデバイス102は、NOTIFYリクエストの受け取りの際に、第2のデバイス104についてのエントリー508中のisRouterフィールドを、デバイスが今やクライアントルーターモードに設定されていることを示す「TRUE」に設定する。ブロック822はまた、NOTIFYリクエストの確認を待つようにマイクロプロセッサー202に指示する。
クライアントルータープロセス800におけるこの段階において、第2のデバイス104は、アクセスポイントモードにある2つのデバイス(第1のデバイス102および第1の隣接デバイス300)と関連付け、かつ、デバイス間の現在の接続リスティングを交換し、各アクセスポイントデバイスが各アクセスポイントに接続されたデバイスだけでなく、その他のアクセスポイントに接続されたデバイスをも認識するようにした。したがって、第1のデバイス102上の更新された接続リスティングは、初期のネットワーククラスター100を越えて延びる統合ネットワーククラスターについての接続を定義する。
クライアントルータープロセス800はブロック824において継続し、該ブロック824は、第2のデバイス104をクライアントルーターモードに設定するようにマイクロプロセッサー202に指示し、ここでは、デバイスがデータトラフィックを受け取り、第1のデバイス102についてブロック806において配分され、かつ、第1の隣接デバイス300についてブロック816において配分された転送キューの1つ以上にデータを書き込む。受け取られるデータトラフィックは概して、行先ユーザー識別子(uuid)を有するであろう。第2のデバイス104は、ユーザー識別子が接続リスティング520中に現れるか否かを判定し、かつ、見出されれば、nexthopフィールド(すなわち、ユーザー識別子と関連付けられたデバイスに到達するのに用いられてもよい、アクセスポイントモードにあるデバイスのIPアドレス)における値に対応するキューにデータを書き込む。
不揮発性フラッシュメモリー210のキュー位置246中のキューは、制限されたメモリーサイズを配分されるかも知れず、かつ、重いデータトラフィックが受け取られれば特に、一杯になるかも知れない。この実施形態では、切替時間がまた、キューが一杯であるか否かに関わらず、アクセスポイントモードにあるデバイス間の切替のために定義される。ブロック826において、配分されたキューが一杯ではなく、かつ、切替時間が満了していなければ、マイクロプロセッサー202はブロック824に戻るように指示され、かつ、第2のデバイス104はルーティングオペレーションを継続する。ブロック826において、配分されたキューのいずれかが一杯であるか、または、切替時間が満了していれば、マイクロプロセッサー202はブロック828へと向かうように指示される。ブロック828は、第2のデバイス104が現在のアクセスポイントデバイス(すなわち、第1のデバイス102)からの接続を断ち、かつ、別のアクセスポイントデバイスに関連付け、かつ、接続することを引き起こすようにマイクロプロセッサー202に指示する。例えば、第1の隣接デバイス300についてのキューが一杯であれば、第2のデバイス104のマイクロプロセッサー202は、第1のデバイスに接続するように指示される。切替時間が満了すれば、マイクロプロセッサー202は、第2のデバイス104が接続リスティング中に現れる次のアクセスポイントデバイス(すなわち、接続リスティング520におけるisMasterフィールド中のTRUE値によって識別された)に接続されることを引き起こしてもよい。その後、ブロック830が、例えば第1の隣接デバイス300との接続が成功裡に完了したか否かを判定するようにマイクロプロセッサー202に指示する。例えば第1の隣接デバイス300が範囲外に移動したこと、または、ネットワーククラスター100からの接続を断ったことに起因して、ブロック830において接続が成功裡に完了していなければ、マイクロプロセッサー202は図8Cにおけるブロック834へと向かうように指示される。ブロック830において接続が成功裡に完了していれば、マイクロプロセッサー202はブロック832へと向かうように指示され、かつ、第1の隣接デバイス300についての待機中のデータが送信され、かつ、マイクロプロセッサーはブロック824へと向かうように指示される。その後、ルーターオペレーションはブロック824において継続するが、第2のデバイス104は今や第1の隣接デバイス300に接続されており、かつ、第1の隣接デバイスを介してデータトラフィックを受け取り、かつ、アクセスポイントモードにあるその他のデバイス(第1のデバイス102のような)についてのキューにデータを書き込む。
第1の隣接デバイス300は、クライアントルーターモードにあるか否かに関わらず、クライアントモードにある複数のデバイスに接続されていてもよい。例えば、第2の隣接デバイス302がクライアントモードに設定されてもよく、かつ、第1の隣接デバイス300に接続されてもよい。したがって、第1の隣接デバイス300と第2の隣接デバイス304とは第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は、図4におけるブロック410に戻るようにマイクロプロセッサー202に指示し、かつ、第2のデバイス104はアクセスポイントモードに設定され、かつ、SSID「WAVE−」についてのネットワークサービスを提供する。
ブロック834において、接続されたアクセスポイントリスティング中に残っている少なくとも1つのアクセスポイントが未だに存在すれば、その時は、マイクロプロセッサー202はブロック836へと向かうように指示され、該ブロック836は、第2のデバイス104が、接続されたアクセスポイントリスティング中の別のアクセスポイントデバイスと関連付け、かつ、接続することを引き起こす。その後、ブロック838は、接続が成功裡に完了したか否かを判定するようにマイクロプロセッサー202に指示し、その場合、マイクロプロセッサーは図6におけるブロック616へと向かうように指示され、かつ、クライアントモードにおける通常のネットワークオペレーションが再開する。ブロック838において接続が成功裡に完了しなければ、その時は、プロセスはブロック840において継続し、該ブロック840は、アクセスポイントデバイスについての接続されたアクセスポイントリスティング中のエントリーを除去するようにマイクロプロセッサー202に指示する。ブロック838はまた、除去されたアクセスポイントデバイスに対応するnexthopアドレスを有するアクセスポイントデバイスと関連付けられた接続リスティング520中の任意のルーティングエントリーを除去するようにマイクロプロセッサーに指示する。その後、ブロック840はブロック834に戻るようにマイクロプロセッサー202に指示し、かつ、プロセス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の隣接デバイスについてのエントリー(すなわち、uuid325)が存在するであろう。しかしながら、接続リスティング中に第2の隣接デバイス302についてのエントリーが存在しなければ、デバイス106は、第2の隣接デバイス302と関連付けられた情報を含むFINDリクエストを生成し、かつ、第1のデバイス102に送信する。図7に戻ると、メッセージプロトコル700は、peerIDフィールド710を含んでおり、該peerIDフィールド710は、それが統合ネットワーククラスター306上での位置を突き止めることが所望される意図した受信デバイスのユーザー識別子についての値を保持する。メッセージプロトコル700はまた、discovery_typeフィールド712を含んでおり、該discovery_typeフィールド712は、DiscoverType目録726とともに、それがネットワーククラスター100に接続されたデバイス上で発見することが所望されるコンテンツのタイプを必要に応じて定義する。メッセージプロトコル700はさらに、リクエストが繰り返しのループしたディスカバリープロセスを引き起こすことを防止するために、検索されるべきホップの数(例えば、8ホップ)を制限するlimitフィールド714を含んでいる。peerIDフィールド710は、規則「繰り返しである」で始まり、したがって、それが接触することが所望されるいくつかのユーザー識別子を含んでいてもよく、したがって、uuidによる複数のその他のデバイスについての同時検索を可能にする。したがって、第2の隣接デバイス302に接触するために、FINDメッセージは値[5,278,325,0,8]を含んでおり、ここで「5」はFINDリクエストのtypeであり、デバイス106についてのuuidは278であり、かつ、位置が突き止められているデバイスについてのuuidは325であり、かつ、「0」はディスカバリータイプをネットワーククラスター100上の別のユーザーについてのものとして定義し、かつ、limitは「8」に設定される。
図9を参照すると、概して900において、FINDリクエストを処理するために第1のデバイス102によって実行されるプロセスが示されている。ファインドプロセス900はブロック902において開始され、該ブロック902は、クライアントモードに設定され、かつ、第1のデバイスに接続された発信デバイス106からFINDリクエストを受け取るように第1のデバイス102のマイクロプロセッサー202に指示する。
その後、ブロック904が、FINDリクエストから意図した受信デバイスのuuidを判定するように第1のデバイス102のマイクロプロセッサー202に指示する。その後、ブロック906は、意図した受信デバイス(すなわち、この場合は第2の隣接デバイス302)のuuidが接続リスティング500中にあるか否かを判定するようにマイクロプロセッサー202に指示する。この場合、uuid325は接続リスティング520中の512において現れ、かつ、ブロック906はブロック908へと向かうようにマイクロプロセッサー202に指示する。ブロック908は、uuid325についての接続リスティングエントリー512(図5に示されている)におけるlastheard時間が満了したか否かを判定するようにマイクロプロセッサー202に指示する。1つの実施形態では、接続リスティング520中のエントリーについて、満了時間が予め定められていてもよい。さらに、アクセスポイントモードにある各デバイスは、接続リスティング中にエントリーを有するデバイスからメッセージが受け取られる時に、現在の時間へとlastheardフィールドを更新するように設定されていてもよい。ブロック908においてuuid325についてのlastheard時間が満了していれば、第1のデバイス102は、統合ネットワーククラスター306上に第2の隣接デバイス302へのルートを発見するためのプロセス1000を開始する。プロセス1000は、図10を参照して以下で説明される。1つの実施形態では、満了時間は設定可能であってもよく、かつ、約10分〜1時間の範囲内であってもよい。
ブロック908において、uuid325についてのlastheard時間がまだ満了していなければ、プロセスはブロック910において継続し、該ブロック910は、デバイス106にFIND応答メッセージを送信するようにマイクロプロセッサー202に指示する。したがって、この場合、ネットワーククラスター100上で最近遭遇されたuuid325を有するデバイスは、未だに接続されていると推定されてもよい。
図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は、それ自体のIPアドレスをデータの送信用のnexthopとして第2のデバイス302に送信する。なぜなら、デバイス106がまず、あらゆるデータをそれが第2の隣接デバイス302へとルーティングされ得る前に第1のデバイスへと送信しなければならないからである。デバイス106がFIND応答を受け取る時、その接続リスティングは、第2の隣接デバイス302についてのエントリーを含むように更新される。したがって、デバイス106は、第2の隣接デバイス302へと送信するための第1のデバイス102のnexthopIPアドレスを保存する。
ブロック906において、意図した受信デバイスのuuidが接続リスティング500中に見出されなければ、ブロック906は、統合ネットワーク306上に第2の隣接デバイス302へのルートを発見するための図10のプロセス1000を実行するようにマイクロプロセッサー202に指示する。示されている実施形態では、隣接ネットワーククラスター304とネットワーククラスター100とが統合された時、第1のデバイスは既に第2の隣接デバイス302についての情報を受け取っていた。しかしながら、クラスターが統合されており、したがって、接続リスティング500中にエントリー512が見出されなかった時に、第2の隣接デバイス302が第1の隣接デバイス300に接続されていなければ、説明の残りは続行する。
図10を参照すると、ルートディスカバリープロセスは、図10中の1000において示されている。プロセス1000はブロック1002において開始され、該ブロック1002は、統合ネットワーククラスター306上の第2の隣接デバイス302の位置を突き止めるためのDISCOVERリクエストを生成および送信するように第1のデバイス102のマイクロプロセッサー202に指示する。図7に戻ると、DISCOVERリクエストは、FINDリクエストと同一のシンタックスを有し、かつ、typeフィールド704と、uuidフィールド706と、peerIDフィールド710と、discovery_typeフィールド712と、limitフィールド714とを含んでいる。しかしながら、DISCOVERリクエストは、それがリクエストを受け取るアクセスポイントに接続されたすべてのピアのリスティングを引き出すという点で異なっている。FINDリクエストは、uuidによって特定のデバイス(単数)またはデバイス(複数)を検索することを意図する。したがって、DISCOVERリクエストは、値[3,194,325,0,8]を有していてもよく、かつ、リクエストは、trueに設定されたisRouterフラグを有する、第1のデバイス102に接続されたすべてのクライアントデバイスに送信され、該クライアントデバイスは次に、アクセスポイントモードにある接続されたデバイスへとDISCOVERリクエストを転送する。DISCOVERリクエストはまた、リクエストについての生存時間(TTL)として用いられる応答中に含まれるタイムスタンプを有する。その後、プロセス1000はブロック1004において継続し、該ブロック1004は、送信されたDISCOVERリクエストに応答してDISCOVER応答が受け取られたか否かを判定するように第1のデバイス102のマイクロプロセッサー202に指示する。DISCOVER応答がまだ受け取られていなければ、ブロック1004はタイムアウト期間の間、応答を待ち続けるようにマイクロプロセッサー202に指示し、その後、マイクロプロセッサーはブロック1002に戻るように指示され、かつ、DISCOVERリクエストが再送信される。
図11を参照すると、DISCOVERリクエストを受け取る各デバイスは、プロセス1100を実行する。ディスカバリー応答プロセス1100はブロック1102において開始され、該ブロック1102は、DISCOVERリクエストを受け取り、かつ、リクエスト中の行先uuidを判定するように受信デバイスのマイクロプロセッサー202に指示する。その後、ブロック1104が、デバイス接続リスティング中に行先uuidについてのエントリーが格納されているか否かを判定するようにマイクロプロセッサー202に指示する。行先uuidについてのエントリーが存在すれば、その時は、プロセスはブロック1106において継続し、該ブロック1106は、DISCOVER応答を生成および送信するようにマイクロプロセッサー202に指示する。図7を参照すると、DISCOVER応答はFIND応答と同一の形式を有し、かつ、行先についてのuuid値とaddr値とを伴うpeerフィールド716を有する。addr値は、デバイス自体のアドレスに設定される。なぜなら、DISCOVERリクエストに応答するデバイスが第2の隣接デバイス302についてのエントリーを有し、したがって、接続リスティング中のエントリーに基づいて行先uuidについての任意のデータをルーティングし得るだろうからである。DISCOVER応答は、発信デバイス(この場合、第1のデバイス102)に戻るように送信される。いくつかの場合、DISCOVERリクエストは、いくつかのクライアントルーターおよびアクセスポイントをトラバースしたであろうし、リクエストが陳腐になることを回避するために、受け取りデバイスはタイムスタンプフィールドを検査し、かつ、所定の生存時間(TTL)に基づいてリクエストが処理されるべきか否かを判定するであろう。同様に、DISCOVER応答は、発信デバイスに戻るように送信される時、いくつかのクライアントルーターおよびアクセスポイントをトラバースしてもよく、かつ、所定の時間枠内で行先uuidについてのディスカバリーの繰り返しを防止するために応答にタイムスタンプが追加される。
図10に戻ると、ブロック1004において、マイクロプロセッサー202が、先行して送信されたDISCOVERリクエストに対応するDISCOVER応答が受け取られたと判定すれば、その時は、マイクロプロセッサーはブロック1006へと向かうように指示される。ブロック1006は、第1のデバイス102上の接続リスティング500(図5に示されている)を、DISCOVER応答に基づいて第2の隣接デバイス302についてのエントリー512を含み、かつ、現在の時間をlastheard時間として含むように更新するようにマイクロプロセッサー202に指示する。その後、ブロック1006はプロセス900のブロック910へと向かうようにマイクロプロセッサー202に指示し、かつ、該ブロック910は、デバイス106へのFIND応答メッセージの送信を引き起こす。その後、デバイス106は、統合ネットワーククラスター306上の第2の隣接デバイス302に到達し得るであろう。
図4に戻ると、ブロック404において、第1のデバイス102によってゲートウェイプロセスが必要に応じて実行されてもよい。ゲートウェイプロセスは、SSID「WAVE−」と関連付けられていないセルラーデータネットワークまたはその他の無線アクセスポイントへの接続を可能にする。図12を参照すると、ゲートウェイプロセスは1200において概して示されている。ゲートウェイプロセス1200はブロック1202において開始され、該ブロック1202は、デバイス上でインターネットへのセルラーデータ接続が利用可能であるか否かを判定するようにマイクロプロセッサー202に指示する。セルラーデータ接続が利用可能であれば、その時は、ブロック1204が、不揮発性フラッシュメモリー210のシステム設定位置248におけるCELLフラグをTRUEに設定し、かつ、キュー位置246中のインターネットキューを配分するようにマイクロプロセッサー202に指示する。その後、プロセスはブロック1206において継続し、該ブロック1206は、デバイス上でインターネットへの無線(WiFi)データ接続が利用可能であるか否かを判定するようにマイクロプロセッサー202に指示する。WiFiデータ接続が利用可能であれば、その時は、ブロック1208が、不揮発性フラッシュメモリー210のシステム設定位置248におけるWIFIフラグをTRUEに設定し、かつ、キュー位置246中のインターネットキューを配分するようにマイクロプロセッサー202に指示する。その後、ブロック1208は、プロセス400のブロック406に戻るようにマイクロプロセッサー202に指示する。ブロック1206においてWiFi接続が利用可能でなければ、その時は、ブロック1206は、ブロック406に戻るようにマイクロプロセッサー202に指示する。
図6に戻ると、ブロック616に続いて、マイクロプロセッサー202は、図13中1300において示されるゲートウェイプロセスの別の一部を実行するように必要に応じて支持される。図13を参照すると、ゲートウェイプロセス1300はブロック1302において開始され、該ブロック1302は、不揮発性フラッシュメモリー210のシステム設定位置248におけるWIFIまたはCELLフラグのいずれかがTRUEに設定されているか否かを判定するようにマイクロプロセッサー202に指示する。いずれかのフラグがTRUEであれば、その時は、ブロック1304が、インターネット転送タイマーが満了したか否かを判定するようにマイクロプロセッサー202に指示する。インターネット転送タイマーは、インターネットキューにおける最後のデータ転送以来の時間を記録し、かつ、一旦タイマーが所定の限界に到達すれば、ブロック1304は、ブロック1306へと向かうようにマイクロプロセッサー202に指示する。ブロック1306は、現在接続されているアクセスポイントデバイスからの接続を断ち、かつ、インターネットゲートウェイを有する適用可能なセルラーまたはWiFiネットワークに接続するようにマイクロプロセッサー202に指示する。ブロック1306はまた、適用可能なネットワークにわたってインターネットキュー中のデータを送信するようにマイクロプロセッサー202に指示する。その後、ブロック1306は、ブロック616に戻り、ネットワークオペレーションを再開するようにマイクロプロセッサー202に指示する。ブロック1302においてWiFiまたはセルラーインターネット接続が存在しないか、または、ブロック1304において転送時間が満了していなければ、マイクロプロセッサー202は、ブロック616に戻るように指示される。
ゲートウェイプロセスは、インターネット接続を有するデバイスが、統合ネットワーククラスター306に接続されていないかも知れないデバイスに到達することを可能にする。
図7に戻ると、メッセージプロトコル700はまた、タイプフィールド7(DATA)と、送信デバイスユーザー識別子に対応する、必要とされるuuidと、728において定義される「Data」のタイプを有する、繰り返されるデータフィールド718とを含むデータメッセージタイプを提供する。この実施形態では、Dataタイプは、必要とされるフィールドである、送信されているデータコンテンツの長さを保持するためのlength、データバイトペイロードを保持するcontent、および、DiscoverType目録726に関連するデータを文章、画像、映像、音声などとして定義するdata_typeを含む、いくつかのフィールドを含んでいる。この実施形態では、Dataタイプはまた、必要に応じてデータを一連のメッセージに分割することによって大きいデータファイルを送信するための、seq_numberフィールドとoffsetフィールドとを含んでいる。seq_numberは、受信デバイスにおけるデータファイルの再組立のための一連のメッセージの順番を識別する。offsetフィールドは、メッセージ内のコンテンツペイロードのバイト位置を定義する。
したがって、データは、メッセージプロトコル700にしたがってメッセージのデータフィールド718内に包まれてもよく、かつ、ネットワーククラスター100中の送信デバイスからメッセージ中のuuidによって識別された受信デバイスへと送信されてもよい。その他の実施形態では、リクエスト/応答メッセージプロトコル700は、ネットワーククラスター100を構成するデバイス間の接続の確立および維持の間にメッセージを交換するのに用いられてもよく、一方で、実際のデータ送信は、インターネットプロトコルスイートの一部を形成する別のデータプロトコル(単数)またはプロトコル(複数)(UDP、TCP、RTPなどのような)を用いて起こってもよい。
図3では、統合ネットワーククラスター306は、WiFi(すなわち、IEEE802.11無線ネットワーク)を用いて確立されるものとして説明された。しかしながら、上記で注記したように、無線ネットワークは、Bluetoothおよび/またはWi−Fiダイレクトのようなその他の無線ネットワーク化プロトコルを用いて確立されてもよい。いくつかのデバイスの無線ラジオは、クライアントモードおよびホットスポットモードで同時に作動することを製造業者によって制限されているかも知れない。図2中の200において示されるようなIEEE802.11無線ネットワーク化デバイスはまた、概して、アクセスポイントモードに設定された2つの異なるデバイスに同時に接続することを制限される。例えば図3では、第1のデバイス102と第1の隣接デバイス300とが通信範囲にあったとしても、それらは、アクセスポイントモードに設定されていることに起因して、IEEE802.11ネットワーク化プロトコルを用いた接続を確立し得ないかも知れない。図3に示されている実施形態では、第1のデバイス102と第1の隣接デバイス300とは、第2のデバイス104を介して接続されており、該第2のデバイス104は、図8に示されているクライアントルータープロセス800を実行して、第1のデバイス102に接続されることと、第1の隣接デバイス300に接続されることとの間で切り替わる(両方ともアクセスポイントモードに設定されている)。
図14を参照すると、1400において、代替的な実施形態にしたがう統合ネットワーククラスター306の確立のためのプロセスが示されている。プロセスはブロック1402において開始され、該ブロック1402は、無線ラジオ216を作動させるように第2のデバイス104のマイクロプロセッサー202(図2)に指示する。多くのデバイスは、Bluetooth、WiFiおよび/またはWiFiダイレクト通信が可能である無線ラジオ(単数)または無線ラジオ(複数)を有する。その後、ブロック1404が、WiFiダイレクト接続を待つその他のデバイスをスキャンするように無線ラジオ216を設定するようにマイクロプロセッサー202に指示する。その後、プロセス1400はブロック1406において継続し、該ブロック1406は、WiFiダイレクト接続を待つ任意のデバイスが検出されたか否かを判定するようにマイクロプロセッサー202に指示する。WiFiダイレクト接続を待つデバイスが検出されれば、ブロック1406はブロック1412へと向かうようにマイクロプロセッサー202に指示し、該ブロック1412は、その他のデバイスとのWiFiダイレクト接続を完了させるようにマイクロプロセッサーに指示する。
Wi−Fiダイレクトプロトコルの使用は、デバイス104が別のデバイス(デバイス102およびデバイス300のような)と、これらデバイスによって提供される無線アクセスポイントを通してではなく、直接Wi−Fi接続を確立することを可能にする。上記のWiFi接続を作り出す場合のように、デバイスはSSIDブロードキャスト(すなわち、「Wave−」)を実行する。しかしながらこの場合、SSIDブロードキャストはまた、パスコードデータを含んでいる。統合ネットワーククラスター306を確立するための従来のWiFi接続は、例えば不揮発性フラッシュメモリー210のアプリケーション位置242における各デバイス上に格納されているかも知れない単一のパスコードに基づいて作り出されてもよい。WiFiダイレクト接続の実施形態では、ブロードキャストパスコードは、無線範囲内にあるかも知れないその他のデバイスの間のその他のWiFiおよびWiFiダイレクト接続から区別するためにランダムな数字を含むように生成されてもよい。したがって、SSIDブロードキャストにおけるパスコードの提供は、WiFiダイレクト接続がパスコードの事前知識なしで続行することを可能にし、したがって、接続を確立する際のユーザーインタラクションの必要性を除去する。
ブロック1412における接続の完了に続いて、その後、マイクロプロセッサー202は図4におけるプロセス400に戻り、統合ネットワーククラスター306を結合させるために上記したようなブロック412〜ブロック428を実行するように指示される。
図15を参照すると、この実施形態では、したがって、統合ネットワーククラスター306の確立は、WiFiダイレクト接続(図15において線1500として示されている)を介して第1のデバイスに接続する第2のデバイス104によって続行してもよい。ブロック1404、ブロック1406およびブロック1412はまた、第2のデバイス104が第1の隣接デバイス300とのWi−Fiダイレクト接続を完成させることを引き起こすように実行されてもよい。この場合、第2のデバイス104は、第1の隣接デバイス300に第2のリンク1502を提供してもよく、したがって、ネットワーククラスター100と第2の隣接ネットワーククラスター304との間のWi−Fiダイレクトリンクを提供する。デバイス104は、クライアントとして多数のデバイス(すなわち、デバイス102およびデバイス300)に接続することを可能にするWi−Fiダイレクトマスターモードに設定されるであろう。デバイス102およびデバイス300は、それぞれデバイス106および第2の隣接デバイス302への接続を提供するためのアクセスポイントモードにあるままである。デバイス102とデバイス300とがアクセスポイントモードに設定されている時、オペレーティングシステムは、デバイスがマスターモードにある第2のデバイス104のWi−Fiダイレクトクライアントであることを制限するかも知れない。いくつかのデバイスの無線ラジオ216は、アクセスポイントとして設定されることとWi−Fiダイレクトクライアントとして別のデバイスに未だに接続されることとを同時になし得るデュアル−モードWiFiモジュールを用いて実装されてもよい。このことは、従来のWiFi接続下において第2のデバイス104が図8に示されているクライアントルータープロセス800のブロック808における切断(クラスター100とクラスター300との間のデータスループットを遅くする)を実行することの必要性を有効に除去する。
図14に戻ると、ブロック1406においてWiFiダイレクト接続を待つデバイスが検出されなければ、マイクロプロセッサーはブロック1408へと向かうように指示され、ここでは、無線ラジオ216はBluetooth接続を待つその他のデバイスをスキャンするように設定される。その後、ブロック1410が、Bluetooth接続を待つ任意のデバイスが検出されたか否かを判定するようにマイクロプロセッサー202に指示する。Bluetooth接続を待つデバイスが検出されれば、ブロック1410は、ブロック1412へと向かい、その他のデバイスとのBluetooth接続を完了させるようにマイクロプロセッサー202に指示する。その後、マイクロプロセッサー202は図4におけるプロセス400に戻り、上記したようにブロック412〜ブロック428を実行するようにマイクロプロセッサー202に指示する。
ブロック1410においてBluetooth接続を待つデバイスが検出されなければ、マイクロプロセッサーは、図4におけるプロセス400に戻り、上記のようにWiFi接続のブロック406〜ブロック412を実行するように指示される。プロセス400のブロック406〜ブロック412は、上記のようにデバイスがWiFiアクセスポイントモードに設定されたその他のデバイスをスキャンすることと、アクセスポイントモードに設定されることとを交互に繰り返すことを引き起こすクラスター形成プロセス400の一部を実行するようにマイクロプロセッサー202に指示する。
再び図15を参照すると、したがって、統合ネットワーククラスター306の確立は、代替的には、第1のデバイス102および第1の隣接デバイス300の両方にBluetoothを介して(すなわち、接続1500と接続1502との組み合わせを通して)接続する第2のデバイス104によって続行してもよい。
図17を参照すると、別の実施形態では、第1のデバイス102と第1の隣接デバイス300とがWi−Fiアクセスポイントとして設定されること、および、Wi−Fiダイレクトを介して互いと同時に接続することをそれらの各オペレーティングシステムを介して禁止されているかも知れない一方で、これらデバイスは未だに、ブロック1408、ブロック1410およびブロック1412を実行することによってBluetoothを介して同時に接続して、線1504によって示されている直接Bluetooth接続を確立し得てもよい。Bluetooth接続1504は、第2のデバイス104を介して確立された接続1500および接続1502と同時に確立されてもよい(Wi−Fiダイレクト、Bluetoothを通すか、または、デバイス102およびデバイス300によって提供されるアクセスポイントへの切替Wi−Fi接続を通すかのいずれか)。したがって、Bluetooth接続1504は、デバイス102とデバイス300との間の追加同時接続(デバイスがクライアント106およびクライアント302にネットワークサービスを提供するためのアクセスポイントモードにあるままであることを可能にする)を提供する。
図16を参照すると、1600において、Bluetoothを介して接続するための図14におけるプロセス1400のブロック1408〜ブロック1412を実装するように第1のデバイス102に指示するためのコードのブロックを描いたプロセスフローチャートがより詳細に示されている。プロセスはブロック1602において開始され、該ブロック1602は、RFCOMMプロトコルを用いて、第1のデバイス102の無線ラジオ216をBluetooth通信用に設定するようにマイクロプロセッサー202に指示する。RFCOMMプロトコルの下、ペアリングのためにユーザーインタラクションが必要とされず、このことは、接続を匿名で確立して統合ネットワーククラスター306を提供するための利点である。その他のBluetooth接続プロトコルは、キーペアリングまたは類似のオペレーションのようなユーザーインタラクションを必要とするかも知れない。しかしながら、RFCOMMプロトコルは、デバイスであってそのチャンネルをその他のデバイスが接続のために待つ前記デバイスによるディスカバリーを提供しない。RFCOMMプロトコルはまた、その他のデバイスのuuidのディスカバリーを可能にしない。
示されている実施形態では、ブロック1604が、第1のデバイス102の無線ラジオ216が、最初に利用可能なBluetoothチャンネル上のその他のデバイスからのBTブロードキャストを待つように無線ラジオを設定することを引き起こすようにマイクロプロセッサー202に指示する。したがって、第1のデバイス102は、その他のデバイスからのディスカバリーブロードキャスト(それらが受け取られれば)を待つように設定される。デバイスは、複数の異なるチャンネル(Androidベースのオペレーティングシステムについては、典型的には7つのチャンネル)上で通信して、いくつかのその他のデバイスへの同時Bluetooth接続を可能にし得てもよい。例えば、デバイスはBluetoothを介して乗り物に接続されてもよく、かつ、同時にBluetoothイヤピースまたは別のデバイスに接続されてもよく、したがって利用可能なチャンネルのうちの2つ以上を用いる。1つの実施形態では、各チャンネルは、共通の文字列で始まる所定のパターンと関連付けられ(例えば、「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」)上のディスカバリーブロードキャスト用に無線ラジオ216を設定するようにマイクロプロセッサーに指示する。その後、プロセス1600はブロック1610において継続し、該ブロック1610は選択されたチャンネル上で応答を待つようにマイクロプロセッサー202に指示する。ブロック1610において第1の隣接デバイス300がチャンネル「01010101−0101−0101−0101−010101010102」上で待っていれば、応答が受け取られ、かつ、ブロック1610は、ブロック1612へと向かうようにマイクロプロセッサー202に指示する。ブロック1612は、選択されたBluetoothチャンネル(すなわち、チャンネル「01010101−0101−0101−0101−010101010102」)を介した通信のために設定されるようにマイクロプロセッサー202に指示する。ブロック1612において接続が成功裡に完了すれば、Bluetooth接続は、デバイス102とデバイス300との間でロックされ、かつ、第1のデバイス102と第1の隣接デバイス300との間の双方向データ通信を可能にする。第1のデバイス102と第1の隣接デバイス300とは、アクセスポイントモードに設定され、かつ、それぞれクライアントデバイス106およびクライアントデバイス302のようなクライアントにWiFiネットワークにわたるサービスを提供し続けてもよい。したがって、第1のデバイス102と第1の隣接デバイス300との間のBluetooth接続は、ネットワーククラスター100と第2の隣接ネットワーククラスター304とを統合して統合ネットワーククラスター306を形成するための代替案を提供する。1つの実施形態では、その後、第2のデバイス104は、第1のデバイス102または第1の隣接デバイス300のいずれか(両方とも、先行してデバイスの範囲内にあった)に接続し得る。したがって、第1のデバイス102と第1の隣接デバイス300とは、リクエストに応答することと接続リスティングを提供することなどによって、図4中のブロック412〜ブロック428において概して示されているような機能を実行し続けてもよい。
ブロック1610において第1の隣接デバイス300がチャンネル「01010101−0101−0101−0101−010101010102」上で待っていなければ、応答は受け取られないであろうし、かつ、ブロック1610は、ブロック1614へと向かうようにマイクロプロセッサー202に指示する。ブロック1614は、複数の利用可能なBluetoothチャンネルのうちの最後のものが選択されたか否かを判定するようにマイクロプロセッサー202に指示する。まだ選択されていないBluetoothチャンネルが残っていれば、ブロック1614は、ブロック1606に戻るようにマイクロプロセッサー202に指示し、かつ、次の利用可能なチャンネルが選択され、かつ、ブロック1608およびブロック1610が選択されたチャンネルについて繰り返される。
ブロック1614において選択されるべきBluetoothチャンネルが残っていなければ、マイクロプロセッサーは、プロセス1400のブロック1412へと向かうように指示され、かつ、デバイスは、上記のように再びBluetooth接続を試みる前に、WiFiおよびWiFiダイレクトプロトコルを用いてその他のデバイスとの接続を試み続けるであろう。
別の代替的な実施形態では、第1のデバイス102と第1の隣接デバイス300とがBluetooth範囲外であれば、第2のデバイス104は未だに、第1のデバイス102および第1の隣接デバイス300の両方にBluetoothを介して接続することによって、ネットワーククラスター100と第2の隣接ネットワーククラスター304とを統合するためのブリッジとして作用してもよい。デバイス102およびデバイス300のそれぞれとの接続は、概してプロセス1600にしたがって個別に続行する。したがって、第2のデバイス104は、ネットワーククラスター100およびネットワーククラスター304の統合を可能にするために利用可能な2つのBluetoothチャンネルを有することを必要とする。
上記の実施形態は、ネットワーク中のデバイスを接続するための枠組みを提供し、ここでは、個別のデバイスは、アクセスポイントモード、クライアントモードまたはクライアントルーターモードのようなオペレーションの異なるモードをとる。ネットワーククラスター100中のデバイスは概して、ネットワーククラスター100内のデバイスの利用可能性または利用可能性の欠如に基づいてオペレーションのこれらモードをとる。さらに、デバイスは、かかる利用可能性に基づいて、1つのオペレーティングモードから別のものへと変化してもよい。したがって、開示された実施形態は、デバイスを追加し、または、多数のデバイスを含むネットワーククラスターを統合し、したがって統合ネットワークの届く範囲を延ばし得る、拡張可能なネットワークを提供する。
特定の実施形態が説明され、かつ、示されてきた一方で、かかる実施形態は、本発明の説明としてのみ考慮されるべきであり、かつ、添付の請求の範囲にしたがって解釈される本発明を限定するものとして考慮されるべきではない。

Claims (22)

  1. 複数のデバイス間のネットワーククラスターを確立するための方法であって、各デバイスは、アクセスポイントモードおよびクライアントモードに少なくとも設定可能である無線ラジオを有し、前記ネットワーククラスターは、関連付けられたネットワーク名を有し、当該方法は:
    前記の複数のデバイスのうちの第1のデバイスが前記クライアントモードに設定されることを引き起こすことを有し;
    前記ネットワーク名と関連付けられたネットワーク化サービスが、前記の複数のデバイスのうちの別のものによって現在提供されていないという前記の第1のデバイスによる判定に応答して:
    前記の第1のデバイスが前記アクセスポイントモードに設定されることを引き起こすことを有し;
    前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供することを有し;
    前記の第1のデバイスにおいて、前記クライアントモードに設定された第2のデバイスからの接続リクエストを受け取ることに応答して、前記接続を受け入れることと、前記の第2のデバイスと関連付けられたユーザー識別子を判定することと、前記の第1のデバイス上のメモリーに保存された接続リスティングに前記の第2のデバイスについてのエントリーを追加することとを有し;かつ、
    前記の第1のデバイスにおいて、前記の第2のデバイスの前記ユーザー識別子に対応する行先を有する1つ以上のデータパケットを受け取ることに応答して、該1つ以上のデータパケットを前記の第2のデバイスに送信することを有する、
    前記方法。
  2. 前記アクセスポイントモードに設定される一方で前記の第1のデバイスにおいて接続リクエストが受け取られなければ、前記の第1のデバイスが、以下の項目のうちの1つが達成されるまで前記クライアントモードに設定されることと前記アクセスポイントモードに設定されることとを周期的に交互に繰り返すことを引き起こすことをさらに有し、該項目が:
    前記の第1のデバイスがアクセスポイントモードにある間に接続リクエストが受け取られること;または、
    クライアントモードにある間に前記ネットワーク名と関連付けられたネットワーク化サービスを提供する別のデバイスが発見されることである、
    請求項1に記載の方法。
  3. 前記の第1のデバイスが前記クライアントモードに設定されることと前記アクセスポイントモードに設定されることとを交互に繰り返すことを引き起こすことが、前記の第1のデバイスが第1の期間の間は前記クライアントモードに設定されることと第2の期間の間は前記アクセスポイントモードに設定されることとを交互に繰り返すことを引き起こすことを有し、前記の第1および第2の期間のうちの少なくとも1つはランダムな時間成分を含んでいる、請求項2に記載の方法。
  4. 前記の第1のデバイスにおいて、前記クライアントモードに設定された少なくとも1つの追加デバイスからの接続リクエストを受け取ることに応答して、前記追加デバイスと関連付けられたユーザー識別子を判定することと、該ユーザー識別子を前記の第1のデバイス上の前記接続リスティングに追加することとをさらに有する、
    請求項1に記載の方法。
  5. 前記の第1のデバイスにおいて、クライアントモードに設定され、かつ、前記の第1のデバイスに接続された発信デバイスからのファインドリクエストを受け取ることをさらに有し、該ファインドリクエストは、意図した受信デバイスと関連付けられたユーザー識別子を含んでおり;
    前記の第1のデバイスが、前記の第1のデバイス上の前記接続リスティングが前記受信デバイスと関連付けられた前記ユーザー識別子を含んでいるか否かを判定することを引き起こすことをさらに有し、前記接続リスティングは、前記ネットワーククラスター上で前記の第1のデバイスが先行して遭遇したデバイスについてのエントリーを含んでおり;かつ、
    前記接続リスティングが前記受信デバイスと関連付けられた前記ユーザー識別子を含んでいれば、前記の第1のデバイスが前記発信デバイスにファインドリクエスト応答を送信することを引き起こすことをさらに有し、該ファインドリクエスト応答は、前記の第1のデバイスのネットワークアドレスを、前記発信デバイスと前記受信デバイスとの間のデータの送信用のnexthopアドレスとして含んでいる、
    請求項4に記載の方法。
  6. 前記の第1のデバイス上の前記接続リスティングが、前記の第1のデバイスに接続された第1の隣接デバイスを識別する少なくとも1つのエントリーを含んでおり、前記の第1のデバイスへの接続は、クライアントモードに設定され、かつ、前記の第1のデバイスおよび前記の第1の隣接デバイスの両方の接続範囲にある1つ以上のデバイスを介しており、かつ、当該方法がさらに:
    前記接続リスティングが前記受信デバイスと関連付けられた前記ユーザー識別子を含んでいなければ、前記の第1のデバイスが前記の第1の隣接デバイスにディスカバーリクエストを送信することを引き起こすことを有し、該ディスカバーリクエストは、前記受信デバイスの前記ユーザー識別子を含んでおり、かつ、前記の第1の隣接デバイスが、前記受信デバイスがアクセスポイントモードに設定され、かつ、第1の隣接デバイスに接続された第2の隣接デバイスに接続されているか否かを判定することを引き起こすように作動可能であり、前記の第1の隣接デバイスへの接続は、クライアントモードに設定され、かつ、前記の第1および第2の隣接デバイスの両方の接続範囲にある1つ以上のデバイスを介しており;
    前記の第1デバイスにおいて、前記の第1の隣接デバイスからのディスカバーリクエスト応答を受け取ることに応答して:
    前記の第1のデバイス上の前記接続リスティングを、前記受信デバイスについてのエントリーを含むように更新することを有し;かつ、
    前記第1のデバイスが前記発信デバイスにファインドリクエスト応答を送信することを引き起こすことを有し、該ファインドリクエスト応答は、前記の第1のデバイスのネットワークアドレスを、前記の第1の隣接デバイスおよび前記の第2の隣接デバイスを介した前記発信デバイスと前記受信デバイスとの間のデータの送信用のnexthopアドレスとして含んでいる、
    請求項5に記載の方法。
  7. 前記ディスカバーリクエストが、生存時間(TTL)データフィールドを含んでおり、該生存時間(TTL)データフィールドは、前記TTLが満了する時に前記ディスカバーリクエストの廃棄を容易にするために、前記ディスカバーリクエストが有効である期間を定義する、請求項6に記載の方法。
  8. 前記ディスカバーリクエスト応答が、各隣接デバイスであってそれを通って前記リクエスト応答がトラバースする前記各隣接デバイスによって前記ディスカバリー応答に追加されるタイムスタンプを含んでおり、該タイムスタンプは、所定の時間枠内の前記ディスカバーリクエストの繰り返しを防止するように作動可能である、請求項6に記載の方法。
  9. 前記の第1の隣接デバイスが、前記受信デバイスが前記の第2の隣接デバイスに接続されているか否かを判定することを引き起こすことが、前記ディスカバーリクエストを前記の第2の隣接デバイスに転送することを有し、前記ディスカバーリクエストは、前記の第2の隣接デバイスが、前記の第2の隣接デバイス上の接続リスティングが前記受信デバイスと関連付けられた前記ユーザー識別子を含んでいるか否かを判定することを引き起こすように作動可能であり、かつ、該接続リスティングが前記受信デバイスと関連付けられた前記ユーザー識別子を含んでいれば、前記の第1の隣接デバイスが、前記受信デバイスが前記の第2の隣接デバイスに接続されているか否かを判定することを引き起こすことが、前記の第2の隣接デバイスのネットワークアドレスをnexthopドレスとして含むディスカバリーリクエスト応答を、前記の第1の隣接デバイスを介して前記の第1のデバイスに戻るように送信することを有する、請求項6に記載の方法。
  10. 前記の第1の隣接デバイスにおいて前記ディスカバリーリクエスト応答を受け取ることに応答して、前記の第1の隣接デバイス上の前記接続リスティングを、前記の第2の隣接デバイスの前記ネットワークアドレスを前記の第2のデバイスに戻るような送信用のnexthopアドレスとして含む前記受信デバイスについてのエントリーを含むように更新することと、前記の第1の隣接デバイスの前記ネットワークアドレスを、前記の第1のデバイスに戻るような送信用のnexthopアドレスとして前記ディスカバリーリクエスト応答に追加することとをさらに有する、請求項9に記載の方法。
  11. 前記の第2のデバイスが、任意の隣接デバイスが前記アクセスポイントモードに設定され、かつ、前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供しているか否かを周期的に判定することを引き起こすことをさらに有し;
    前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供している第1の隣接デバイスを検出する前記の第2のデバイスに応答して、前記の第2のデバイスが前記の第1の隣接デバイスを前記ネットワーククラスターに連結させて統合ネットワークを形成することを引き起こすことをさらに有し、該形成は:
    前記の第1のデバイスから更新された接続リスティングを要求することによるものであり;
    前記の第1のデバイスからの接続を断ち、かつ、前記の第1の隣接デバイスに接続することによるものであり;
    前記の第1の隣接デバイスから接続リスティングを要求することによるものであり、該接続リスティングは、前記の第1の隣接デバイス上のメモリーに格納されており、かつ、前記の第1の隣接デバイスに接続されたデバイスのユーザー識別子を含んでおり;
    前記の第1の隣接デバイスに前記の第1のデバイスについての前記接続リスティングを提供して、前記の第1の隣接デバイス上の前記接続リスティングの更新を容易にすることによるものであり;
    前記の第1のデバイスに再接続することによるものであり、かつ、前記の第1のデバイスに前記の第1の隣接デバイスについての前記接続リスティングを提供して前記の第1のデバイス上の前記接続リスティングの更新を容易にすることによるものであり;かつ、
    前記の第1のデバイスが受け取られたデータパケットを送信することを引き起こすことは:
    前記の受け取られたデータパケットが前記の第1の隣接デバイスに接続された前記の第1のデバイス上の前記接続リスティング中のクライアントデバイスと関連付けられたデバイス識別子に対応する行先を有するという前記の第1のデバイスによる判定に応答して、前記データパケットが前記の第2のデバイスを介して前記の第1の隣接デバイスへとルーティングされること引き起こすことを有する、
    請求項1に記載の方法。
  12. 前記の第2のデバイスが、その他のデバイスが前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供しているか否かを周期的に判定することを引き起こすことが:
    前記の第1のデバイスと関連付けられた基本サービスセット識別(BSSID)を判定することを有し;
    前記の第2のデバイスが、利用可能なネットワークのスキャンを実行することを引き起こすことを有し;かつ、
    前記ネットワーク名と関連付けられたネットワーク化サービスを提供しているそれぞれの検出されたデバイスについて、該デバイスと関連付けられたBSSIDを判定することを有し、前記の第1のデバイスの前記BSSIDとは異なるBSSIDは、前記デバイスが前記アクセスポイントモードに設定されており、かつ、前記ネットワーク名についてのネットワーク化サービスを提供していることを示している、
    請求項11に記載の方法。
  13. 前記データパケットが前記の第2のデバイスを介して前記の第1の隣接デバイスへとルーティングされることを引き起こすことが:
    前記の第2のデバイスが前記の第1のデバイスに現在接続されていないという前記の第1のデバイスによる判定に応答して、前記データパケットを、前記の第1のデバイスに接続された時に前記の第2のデバイスに送信されるべきデータパケットのキューに書き込むことを有する、
    請求項11に記載の方法。
  14. 前記の第2のデバイスが、前記の第2のデバイス上のメモリーに格納された、接続されたアクセスポイントリスティングを含んでおり、該接続されたアクセスポイントリスティングは、前記の第1のデバイスを接続されたアクセスポイントとして識別する少なくとも1つのエントリーを含んでおり、かつ、前記の第1の隣接デバイスを検出する前記第2のデバイスに応答して:
    前記の第2のデバイスが、前記の第1の隣接デバイスを前記の接続されたアクセスポイントリスティングに追加することを引き起こすことを有し;かつ、
    前記の第2のデバイスが、前記の接続されたアクセスポイントリスティング中の各アクセスポイントに周期的に接続して、前記アクセスポイントと前記統合ネットワーク中の行先クライアントとの間でデータパケットをルーティングすることを引き起こすことを有する、
    請求項11に記載の方法。
  15. データパケットをルーティングすることが:
    前記の第1のデバイスおよび前記の第1の隣接デバイスのうちの現在接続されているものから受け取られ、かつ、前記の第1のデバイスおよび前記の第1の隣接デバイスのうちの他方に向けられたデータパケットを格納するための前記の第2のデバイス上のメモリー中のキューを維持することを有し;
    前記の第1のデバイスおよび前記の第1の隣接デバイスのうちの前記の現在接続されているものから周期的に接続を断ち、かつ、前記の第1のデバイスおよび前記の第1の隣接デバイスのうちの他方に接続することを有し;かつ、
    接続された時に、前記の第1のデバイスおよび前記の第1の隣接デバイスのうちの他方に前記キュー中の前記データを送信することを有する、
    請求項11に記載の方法。
  16. 前記の第1のデバイス上の前記接続リスティングに格納された前記の第2のデバイスについての前記エントリーが、ユーザー識別子と、以下の項目のうちの1つ以上とを少なくとも含んでおり、該項目は:
    前記クラスターネットワーク内の前記の第2のデバイスのネットワークアドレス;および、
    前記の第2のデバイスと関連付けられたハードウェア識別子である、
    請求項1に記載の方法。
  17. 複数のデバイス間に確立されたネットワーククラスターであって、各デバイスが、アクセスポイントモードおよびクライアントモードに少なくとも設定可能である無線ラジオを有し、前記の複数のデバイスが、アクセスモードに設定された第1のデバイスと、クライアントモードに設定され、かつ、前記の第1のデバイスに接続された第2のデバイスとを少なくとも含んでいる前記ネットワーククラスターにおいて、前記の第2のデバイスと意図した受信デバイスとの間で通信する方法であって、当該方法は:
    前記の第2のデバイスが、前記の第2のデバイス上のメモリーに格納された接続リスティング中に前記受信デバイスと関連付けられたユーザー識別子が現れるか否かを判定することを引き起こすことを有し、該接続リスティングは、前記ネットワーククラスター上で先行して遭遇したデバイスについてのエントリーを含んでおり;
    前記受信デバイスが前記接続リスティング中に現れれば、前記の第1のデバイスに1つ以上のデータパケットを送信することを有し、該データパケットは、前記受信デバイスと関連付けられたユーザー識別子を含んでおり;かつ、
    前記受信デバイスが前記接続リスティング中に現れなければ、前記の第1のデバイスにファインドリクエストを送信して、前記受信デバイスの探索を開始することを有する、
    前記方法。
  18. 前記の第2のデバイスにおいて、前記の第1のデバイスからのファインドリクエスト応答を受け取ることをさらに有し、該ファインドリクエスト応答は、前記受信デバイスが前記ネットワーククラスターにわたって到達可能であることを確認し、かつ、前記の第1のデバイスのアドレスを、前記の第2のデバイスと前記受信デバイスとの間のデータの送信用のnexthopアドレスとして含んでいる、請求項17に記載の方法。
  19. 第1のネットワーククラスターと第2のネットワーククラスターとを統合するための方法であって、各ネットワーククラスターは複数のデバイスを含んでおり、各デバイスは、アクセスポイントモードおよびクライアントモードに少なくとも設定可能である無線ラジオを有し、前記の第1のネットワーククラスターは第1のデバイスを含んでおり、かつ、前記の第2のネットワーククラスターは第1の隣接デバイスを含んでおり、前記の第1のデバイスと第1の隣接デバイスとは、アクセスポイントモードに設定され、かつ、共通のネットワーク名と関連付けられたネットワーク化サービスを提供しており、当該方法は:
    クライアントモードに設定され、かつ、前記の第1のデバイスおよび前記の第1の隣接デバイスの両方の接続範囲にある第2のデバイスが、任意の隣接デバイスが前記アクセスポイントモードに設定され、かつ、前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供しているか否かを周期的に判定することを引き起こすことを有し;
    前記の第1の隣接デバイスが前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供していることを検出する前記の第2のデバイスに応答して、前記の第2のデバイスが前記の第1の隣接デバイスを前記ネットワーククラスターに連結させて統合ネットワーククラスターを形成することを引き起こすことを有し、該形成は:
    前記の第1のデバイスから更新された接続リスティングを要求することによるものであり;
    前記の第1のデバイスからの接続を断ち、かつ、前記の第1の隣接デバイスに接続することによるものであり;
    前記の第1の隣接デバイスから接続リスティングを要求することによるものであり、該接続リスティングは、前記の第1の隣接デバイス上のメモリーに格納されており、かつ、前記の第1の隣接デバイスに接続されたデバイスのユーザー識別子を含んでおり;
    前記の第1の隣接デバイスに前記の第1のデバイスについての前記接続リスティングを提供して前記の第1の隣接デバイス上の前記接続リスティングの更新を容易にすることによるものであり;かつ、
    前記の第1のデバイスに再接続することによるものであり、かつ、前記の第1のデバイスに前記の第1の隣接デバイスについての前記接続リスティングを提供して前記の第1のデバイス上の前記接続リスティングの更新を容易にすることによるものである、
    前記方法。
  20. 前記の第2のデバイスが、前記の第2のデバイス上のメモリーに格納された、接続されたアクセスポイントリスティングを含んでおり、該接続されたアクセスポイントリスティングは、前記の第1のデバイスを接続されたアクセスポイントとして識別する少なくとも1つのエントリーを含んでおり、かつ、前記の第1の隣接デバイスを検出する前記第2のデバイスに応答して:
    前記の第2のデバイスが、前記の第1の隣接デバイスを前記の接続されたアクセスポイントリスティングに追加することを引き起こすことを有し;かつ、
    前記の第2のデバイスが、前記の接続されたアクセスポイントリスティング中の各アクセスポイントに周期的に接続して、前記アクセスポイントと前記統合ネットワーク中の行先クライアントとの間でデータパケットをルーティングすることを引き起こすことを有する、
    請求項19に記載の方法。
  21. 前記ネットワーク名が、ネットワークタイプを識別する共通の識別子部分と、前記ネットワークの特定のインスタンスを識別するランダムな数字とを含んでいる、請求項1に記載の方法。
  22. 前記ネットワーク名と関連付けられたネットワーク化サービスが前記の複数のデバイスのうちの別のものによって現在提供されていないという前記の第1のデバイスによる判定に応答して、前記の第1のデバイスが、BluetoothおよびWiFiダイレクト通信のうちの1つのために設定されることを引き起こすことと、前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供することとをさらに有する、請求項1に記載の方法。
JP2018563616A 2016-05-30 2017-05-04 ネットワーク化されたデバイス間のネットワーククラスターを確立するための方法 Pending JP2019525518A (ja)

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
JP2019525518A true JP2019525518A (ja) 2019-09-05

Family

ID=60479561

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018563616A Pending JP2019525518A (ja) 2016-05-30 2017-05-04 ネットワーク化されたデバイス間のネットワーククラスターを確立するための方法

Country Status (6)

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

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消除方法、装置与电子设备
WO2021095226A1 (ja) * 2019-11-15 2021-05-20 日本電信電話株式会社 エッジ切替システム、エッジ切替装置、エッジ切替方法およびプログラム
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 浙江大华技术股份有限公司 无线配网方法、装置及存储介质
CN116158100A (zh) * 2020-09-24 2023-05-23 Oppo广东移动通信有限公司 一种蓝牙设备接入认证方法、电子设备及存储介质
US11646992B1 (en) * 2022-05-24 2023-05-09 Uab 360 It Updating meshnet internet protocol maps in a mesh network

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140003286A1 (en) * 2012-06-28 2014-01-02 Texas Instruments Incorporated Connectionless Wi-Fi Mesh Communication

Family Cites Families (11)

* 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
CN110049431B (zh) * 2011-09-09 2021-07-23 交互数字专利控股公司 用于直接通信的方法和设备
US9940118B2 (en) 2012-02-23 2018-04-10 Dahrwin Llc Systems and methods utilizing highly dynamic wireless ad-hoc networks
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140003286A1 (en) * 2012-06-28 2014-01-02 Texas Instruments Incorporated Connectionless Wi-Fi Mesh Communication

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SACHA TRIFUNOVIC ET AL., WLAN-OPP: AD-HOC-LESS OPPORTUNISTIC NETWORKING ON SMARTPHONES, JPN7021001930, 7 August 2014 (2014-08-07), ISSN: 0004519780 *

Also Published As

Publication number Publication date
EP3466193A4 (en) 2019-11-06
CA3025481A1 (en) 2017-12-07
KR20190030653A (ko) 2019-03-22
WO2017205959A1 (en) 2017-12-07
EP3466193A1 (en) 2019-04-10
US11102702B2 (en) 2021-08-24
US20200322871A1 (en) 2020-10-08

Similar Documents

Publication Publication Date Title
US11102702B2 (en) Method for establishing network clusters between networked devices
US11457358B2 (en) Scalable WLAN gateway
KR101373877B1 (ko) 확장형 wlan 게이트웨이
US10057342B2 (en) Infrastructure access via neighbor awareness networking data path
US7733824B2 (en) Fixed access point for a terminal device
KR101023380B1 (ko) 통신 장치, 디바이스, 시스템, 액세스 인터페이스 선택 방법 및 컴퓨터 프로그램 판독가능 매체
US9930560B2 (en) Methods for managing a broadband connection using a narrowband connection
US8300578B2 (en) System, apparatus and method for seamless roaming through the use of routing update messages
US20210204202A1 (en) Network access technology indication
KR20150098633A (ko) 와이파이 다이렉트 서비스 시스템에서 통신 설정 방법 및 이를 위한 장치
US10271245B2 (en) Methods and systems for transferring hotspot session
EP4185009A1 (en) Packet forwarding method, apparatus and system
US20170346891A1 (en) Communication method
WO2007045134A1 (fr) Systeme de communication et procede de communication
US8233454B2 (en) Communication system and method for switching between wireless connections
CN111050368A (zh) 网络传输控制方法、装置、终端设备以及存储介质
JP7143071B2 (ja) 通信装置、通信システム、通信方法、及び、プログラム
US11622263B2 (en) Wireless repeater device and configuration method for the same
JP2012090245A (ja) 無線通信装置
US10674565B2 (en) Communication method
CN116420393A (zh) 标识发送方法和通信装置
JP2020088712A (ja) 通信装置およびその制御方法
KR102015413B1 (ko) 로컬 네트워크에서의 인터페이스 설정장치 및 방법
JP2017147582A (ja) 無線通信端末

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200427

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210601

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220104