(57)【要約】  アクセスポイントモードとクライアントモードとに設定可能である無線ラジオを有する複数のデバイスの間にネットワークを確立するための方法は、第１のデバイスがクライアントモードに設定されることを引き起こすことと、ネットワーククラスター名と関連付けられたネットワーク化サービスが別のデバイスによって現在提供されていないという第１のデバイスによる判定に応答して、第１のデバイスがアクセスポイントモードに設定されることを引き起こすこととを伴う。第１のデバイスにおいて、クライアントモードに設定された第２のデバイスからの接続リクエストを受け取ることに応答して、当該方法は、接続を受け入れることと、第２のデバイスのユーザー識別子を判定することと、第１のデバイス上の接続リスティングにエントリーを追加することとを伴う。当該方法は、第１のデバイスにおいて、第２のデバイスのユーザー識別子に対応する行先を有するデータパケットを受け取ることに応答して、該データパケットを第２のデバイスに送信することを伴う。【選択図】図３
2019525518.tif 000002
【特許請求の範囲】
【請求項１】
複数のデバイス間のネットワーククラスターを確立するための方法であって、各デバイスは、アクセスポイントモードおよびクライアントモードに少なくとも設定可能である無線ラジオを有し、前記ネットワーククラスターは、関連付けられたネットワーク名を有し、当該方法は：
前記の複数のデバイスのうちの第１のデバイスが前記クライアントモードに設定されることを引き起こすことを有し；
前記ネットワーク名と関連付けられたネットワーク化サービスが、前記の複数のデバイスのうちの別のものによって現在提供されていないという前記の第１のデバイスによる判定に応答して：
前記の第１のデバイスが前記アクセスポイントモードに設定されることを引き起こすことを有し；
前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供することを有し；
前記の第１のデバイスにおいて、前記クライアントモードに設定された第２のデバイスからの接続リクエストを受け取ることに応答して、前記接続を受け入れることと、前記の第２のデバイスと関連付けられたユーザー識別子を判定することと、前記の第１のデバイス上のメモリーに保存された接続リスティングに前記の第２のデバイスについてのエントリーを追加することとを有し；かつ、
前記の第１のデバイスにおいて、前記の第２のデバイスの前記ユーザー識別子に対応する行先を有する１つ以上のデータパケットを受け取ることに応答して、該１つ以上のデータパケットを前記の第２のデバイスに送信することを有する、
前記方法。
【請求項２】
前記アクセスポイントモードに設定される一方で前記の第１のデバイスにおいて接続リクエストが受け取られなければ、前記の第１のデバイスが、以下の項目のうちの１つが達成されるまで前記クライアントモードに設定されることと前記アクセスポイントモードに設定されることとを周期的に交互に繰り返すことを引き起こすことをさらに有し、該項目が：
前記の第１のデバイスがアクセスポイントモードにある間に接続リクエストが受け取られること；または、
クライアントモードにある間に前記ネットワーク名と関連付けられたネットワーク化サービスを提供する別のデバイスが発見されることである、
請求項１に記載の方法。
【請求項３】
前記の第１のデバイスが前記クライアントモードに設定されることと前記アクセスポイントモードに設定されることとを交互に繰り返すことを引き起こすことが、前記の第１のデバイスが第１の期間の間は前記クライアントモードに設定されることと第２の期間の間は前記アクセスポイントモードに設定されることとを交互に繰り返すことを引き起こすことを有し、前記の第１および第２の期間のうちの少なくとも１つはランダムな時間成分を含んでいる、請求項２に記載の方法。
【請求項４】
前記の第１のデバイスにおいて、前記クライアントモードに設定された少なくとも１つの追加デバイスからの接続リクエストを受け取ることに応答して、前記追加デバイスと関連付けられたユーザー識別子を判定することと、該ユーザー識別子を前記の第１のデバイス上の前記接続リスティングに追加することとをさらに有する、
請求項１に記載の方法。
【請求項５】
前記の第１のデバイスにおいて、クライアントモードに設定され、かつ、前記の第１のデバイスに接続された発信デバイスからのファインドリクエストを受け取ることをさらに有し、該ファインドリクエストは、意図した受信デバイスと関連付けられたユーザー識別子を含んでおり；
前記の第１のデバイスが、前記の第１のデバイス上の前記接続リスティングが前記受信デバイスと関連付けられた前記ユーザー識別子を含んでいるか否かを判定することを引き起こすことをさらに有し、前記接続リスティングは、前記ネットワーククラスター上で前記の第１のデバイスが先行して遭遇したデバイスについてのエントリーを含んでおり；かつ、
前記接続リスティングが前記受信デバイスと関連付けられた前記ユーザー識別子を含んでいれば、前記の第１のデバイスが前記発信デバイスにファインドリクエスト応答を送信することを引き起こすことをさらに有し、該ファインドリクエスト応答は、前記の第１のデバイスのネットワークアドレスを、前記発信デバイスと前記受信デバイスとの間のデータの送信用のｎｅｘｔｈｏｐアドレスとして含んでいる、
請求項４に記載の方法。
【請求項６】
前記の第１のデバイス上の前記接続リスティングが、前記の第１のデバイスに接続された第１の隣接デバイスを識別する少なくとも１つのエントリーを含んでおり、前記の第１のデバイスへの接続は、クライアントモードに設定され、かつ、前記の第１のデバイスおよび前記の第１の隣接デバイスの両方の接続範囲にある１つ以上のデバイスを介しており、かつ、当該方法がさらに：
前記接続リスティングが前記受信デバイスと関連付けられた前記ユーザー識別子を含んでいなければ、前記の第１のデバイスが前記の第１の隣接デバイスにディスカバーリクエストを送信することを引き起こすことを有し、該ディスカバーリクエストは、前記受信デバイスの前記ユーザー識別子を含んでおり、かつ、前記の第１の隣接デバイスが、前記受信デバイスがアクセスポイントモードに設定され、かつ、第１の隣接デバイスに接続された第２の隣接デバイスに接続されているか否かを判定することを引き起こすように作動可能であり、前記の第１の隣接デバイスへの接続は、クライアントモードに設定され、かつ、前記の第１および第２の隣接デバイスの両方の接続範囲にある１つ以上のデバイスを介しており；
前記の第１デバイスにおいて、前記の第１の隣接デバイスからのディスカバーリクエスト応答を受け取ることに応答して：
前記の第１のデバイス上の前記接続リスティングを、前記受信デバイスについてのエントリーを含むように更新することを有し；かつ、
前記第１のデバイスが前記発信デバイスにファインドリクエスト応答を送信することを引き起こすことを有し、該ファインドリクエスト応答は、前記の第１のデバイスのネットワークアドレスを、前記の第１の隣接デバイスおよび前記の第２の隣接デバイスを介した前記発信デバイスと前記受信デバイスとの間のデータの送信用のｎｅｘｔｈｏｐアドレスとして含んでいる、
請求項５に記載の方法。
【請求項７】
前記ディスカバーリクエストが、生存時間（ＴＴＬ）データフィールドを含んでおり、該生存時間（ＴＴＬ）データフィールドは、前記ＴＴＬが満了する時に前記ディスカバーリクエストの廃棄を容易にするために、前記ディスカバーリクエストが有効である期間を定義する、請求項６に記載の方法。
【請求項８】
前記ディスカバーリクエスト応答が、各隣接デバイスであってそれを通って前記リクエスト応答がトラバースする前記各隣接デバイスによって前記ディスカバリー応答に追加されるタイムスタンプを含んでおり、該タイムスタンプは、所定の時間枠内の前記ディスカバーリクエストの繰り返しを防止するように作動可能である、請求項６に記載の方法。
【請求項９】
前記の第１の隣接デバイスが、前記受信デバイスが前記の第２の隣接デバイスに接続されているか否かを判定することを引き起こすことが、前記ディスカバーリクエストを前記の第２の隣接デバイスに転送することを有し、前記ディスカバーリクエストは、前記の第２の隣接デバイスが、前記の第２の隣接デバイス上の接続リスティングが前記受信デバイスと関連付けられた前記ユーザー識別子を含んでいるか否かを判定することを引き起こすように作動可能であり、かつ、該接続リスティングが前記受信デバイスと関連付けられた前記ユーザー識別子を含んでいれば、前記の第１の隣接デバイスが、前記受信デバイスが前記の第２の隣接デバイスに接続されているか否かを判定することを引き起こすことが、前記の第２の隣接デバイスのネットワークアドレスをｎｅｘｔｈｏｐドレスとして含むディスカバリーリクエスト応答を、前記の第１の隣接デバイスを介して前記の第１のデバイスに戻るように送信することを有する、請求項６に記載の方法。
【請求項１０】
前記の第１の隣接デバイスにおいて前記ディスカバリーリクエスト応答を受け取ることに応答して、前記の第１の隣接デバイス上の前記接続リスティングを、前記の第２の隣接デバイスの前記ネットワークアドレスを前記の第２のデバイスに戻るような送信用のｎｅｘｔｈｏｐアドレスとして含む前記受信デバイスについてのエントリーを含むように更新することと、前記の第１の隣接デバイスの前記ネットワークアドレスを、前記の第１のデバイスに戻るような送信用のｎｅｘｔｈｏｐアドレスとして前記ディスカバリーリクエスト応答に追加することとをさらに有する、請求項９に記載の方法。
【請求項１１】
前記の第２のデバイスが、任意の隣接デバイスが前記アクセスポイントモードに設定され、かつ、前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供しているか否かを周期的に判定することを引き起こすことをさらに有し；
前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供している第１の隣接デバイスを検出する前記の第２のデバイスに応答して、前記の第２のデバイスが前記の第１の隣接デバイスを前記ネットワーククラスターに連結させて統合ネットワークを形成することを引き起こすことをさらに有し、該形成は：
前記の第１のデバイスから更新された接続リスティングを要求することによるものであり；
前記の第１のデバイスからの接続を断ち、かつ、前記の第１の隣接デバイスに接続することによるものであり；
前記の第１の隣接デバイスから接続リスティングを要求することによるものであり、該接続リスティングは、前記の第１の隣接デバイス上のメモリーに格納されており、かつ、前記の第１の隣接デバイスに接続されたデバイスのユーザー識別子を含んでおり；
前記の第１の隣接デバイスに前記の第１のデバイスについての前記接続リスティングを提供して、前記の第１の隣接デバイス上の前記接続リスティングの更新を容易にすることによるものであり；
前記の第１のデバイスに再接続することによるものであり、かつ、前記の第１のデバイスに前記の第１の隣接デバイスについての前記接続リスティングを提供して前記の第１のデバイス上の前記接続リスティングの更新を容易にすることによるものであり；かつ、
前記の第１のデバイスが受け取られたデータパケットを送信することを引き起こすことは：
前記の受け取られたデータパケットが前記の第１の隣接デバイスに接続された前記の第１のデバイス上の前記接続リスティング中のクライアントデバイスと関連付けられたデバイス識別子に対応する行先を有するという前記の第１のデバイスによる判定に応答して、前記データパケットが前記の第２のデバイスを介して前記の第１の隣接デバイスへとルーティングされること引き起こすことを有する、
請求項１に記載の方法。
【請求項１２】
前記の第２のデバイスが、その他のデバイスが前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供しているか否かを周期的に判定することを引き起こすことが：
前記の第１のデバイスと関連付けられた基本サービスセット識別（ＢＳＳＩＤ）を判定することを有し；
前記の第２のデバイスが、利用可能なネットワークのスキャンを実行することを引き起こすことを有し；かつ、
前記ネットワーク名と関連付けられたネットワーク化サービスを提供しているそれぞれの検出されたデバイスについて、該デバイスと関連付けられたＢＳＳＩＤを判定することを有し、前記の第１のデバイスの前記ＢＳＳＩＤとは異なるＢＳＳＩＤは、前記デバイスが前記アクセスポイントモードに設定されており、かつ、前記ネットワーク名についてのネットワーク化サービスを提供していることを示している、
請求項１１に記載の方法。
【請求項１３】
前記データパケットが前記の第２のデバイスを介して前記の第１の隣接デバイスへとルーティングされることを引き起こすことが：
前記の第２のデバイスが前記の第１のデバイスに現在接続されていないという前記の第１のデバイスによる判定に応答して、前記データパケットを、前記の第１のデバイスに接続された時に前記の第２のデバイスに送信されるべきデータパケットのキューに書き込むことを有する、
請求項１１に記載の方法。
【請求項１４】
前記の第２のデバイスが、前記の第２のデバイス上のメモリーに格納された、接続されたアクセスポイントリスティングを含んでおり、該接続されたアクセスポイントリスティングは、前記の第１のデバイスを接続されたアクセスポイントとして識別する少なくとも１つのエントリーを含んでおり、かつ、前記の第１の隣接デバイスを検出する前記第２のデバイスに応答して：
前記の第２のデバイスが、前記の第１の隣接デバイスを前記の接続されたアクセスポイントリスティングに追加することを引き起こすことを有し；かつ、
前記の第２のデバイスが、前記の接続されたアクセスポイントリスティング中の各アクセスポイントに周期的に接続して、前記アクセスポイントと前記統合ネットワーク中の行先クライアントとの間でデータパケットをルーティングすることを引き起こすことを有する、
請求項１１に記載の方法。
【請求項１５】
データパケットをルーティングすることが：
前記の第１のデバイスおよび前記の第１の隣接デバイスのうちの現在接続されているものから受け取られ、かつ、前記の第１のデバイスおよび前記の第１の隣接デバイスのうちの他方に向けられたデータパケットを格納するための前記の第２のデバイス上のメモリー中のキューを維持することを有し；
前記の第１のデバイスおよび前記の第１の隣接デバイスのうちの前記の現在接続されているものから周期的に接続を断ち、かつ、前記の第１のデバイスおよび前記の第１の隣接デバイスのうちの他方に接続することを有し；かつ、
接続された時に、前記の第１のデバイスおよび前記の第１の隣接デバイスのうちの他方に前記キュー中の前記データを送信することを有する、
請求項１１に記載の方法。
【請求項１６】
前記の第１のデバイス上の前記接続リスティングに格納された前記の第２のデバイスについての前記エントリーが、ユーザー識別子と、以下の項目のうちの１つ以上とを少なくとも含んでおり、該項目は：
前記クラスターネットワーク内の前記の第２のデバイスのネットワークアドレス；および、
前記の第２のデバイスと関連付けられたハードウェア識別子である、
請求項１に記載の方法。
【請求項１７】
複数のデバイス間に確立されたネットワーククラスターであって、各デバイスが、アクセスポイントモードおよびクライアントモードに少なくとも設定可能である無線ラジオを有し、前記の複数のデバイスが、アクセスモードに設定された第１のデバイスと、クライアントモードに設定され、かつ、前記の第１のデバイスに接続された第２のデバイスとを少なくとも含んでいる前記ネットワーククラスターにおいて、前記の第２のデバイスと意図した受信デバイスとの間で通信する方法であって、当該方法は：
前記の第２のデバイスが、前記の第２のデバイス上のメモリーに格納された接続リスティング中に前記受信デバイスと関連付けられたユーザー識別子が現れるか否かを判定することを引き起こすことを有し、該接続リスティングは、前記ネットワーククラスター上で先行して遭遇したデバイスについてのエントリーを含んでおり；
前記受信デバイスが前記接続リスティング中に現れれば、前記の第１のデバイスに１つ以上のデータパケットを送信することを有し、該データパケットは、前記受信デバイスと関連付けられたユーザー識別子を含んでおり；かつ、
前記受信デバイスが前記接続リスティング中に現れなければ、前記の第１のデバイスにファインドリクエストを送信して、前記受信デバイスの探索を開始することを有する、
前記方法。
【請求項１８】
前記の第２のデバイスにおいて、前記の第１のデバイスからのファインドリクエスト応答を受け取ることをさらに有し、該ファインドリクエスト応答は、前記受信デバイスが前記ネットワーククラスターにわたって到達可能であることを確認し、かつ、前記の第１のデバイスのアドレスを、前記の第２のデバイスと前記受信デバイスとの間のデータの送信用のｎｅｘｔｈｏｐアドレスとして含んでいる、請求項１７に記載の方法。
【請求項１９】
第１のネットワーククラスターと第２のネットワーククラスターとを統合するための方法であって、各ネットワーククラスターは複数のデバイスを含んでおり、各デバイスは、アクセスポイントモードおよびクライアントモードに少なくとも設定可能である無線ラジオを有し、前記の第１のネットワーククラスターは第１のデバイスを含んでおり、かつ、前記の第２のネットワーククラスターは第１の隣接デバイスを含んでおり、前記の第１のデバイスと第１の隣接デバイスとは、アクセスポイントモードに設定され、かつ、共通のネットワーク名と関連付けられたネットワーク化サービスを提供しており、当該方法は：
クライアントモードに設定され、かつ、前記の第１のデバイスおよび前記の第１の隣接デバイスの両方の接続範囲にある第２のデバイスが、任意の隣接デバイスが前記アクセスポイントモードに設定され、かつ、前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供しているか否かを周期的に判定することを引き起こすことを有し；
前記の第１の隣接デバイスが前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供していることを検出する前記の第２のデバイスに応答して、前記の第２のデバイスが前記の第１の隣接デバイスを前記ネットワーククラスターに連結させて統合ネットワーククラスターを形成することを引き起こすことを有し、該形成は：
前記の第１のデバイスから更新された接続リスティングを要求することによるものであり；
前記の第１のデバイスからの接続を断ち、かつ、前記の第１の隣接デバイスに接続することによるものであり；
前記の第１の隣接デバイスから接続リスティングを要求することによるものであり、該接続リスティングは、前記の第１の隣接デバイス上のメモリーに格納されており、かつ、前記の第１の隣接デバイスに接続されたデバイスのユーザー識別子を含んでおり；
前記の第１の隣接デバイスに前記の第１のデバイスについての前記接続リスティングを提供して前記の第１の隣接デバイス上の前記接続リスティングの更新を容易にすることによるものであり；かつ、
前記の第１のデバイスに再接続することによるものであり、かつ、前記の第１のデバイスに前記の第１の隣接デバイスについての前記接続リスティングを提供して前記の第１のデバイス上の前記接続リスティングの更新を容易にすることによるものである、
前記方法。
【請求項２０】
前記の第２のデバイスが、前記の第２のデバイス上のメモリーに格納された、接続されたアクセスポイントリスティングを含んでおり、該接続されたアクセスポイントリスティングは、前記の第１のデバイスを接続されたアクセスポイントとして識別する少なくとも１つのエントリーを含んでおり、かつ、前記の第１の隣接デバイスを検出する前記第２のデバイスに応答して：
前記の第２のデバイスが、前記の第１の隣接デバイスを前記の接続されたアクセスポイントリスティングに追加することを引き起こすことを有し；かつ、
前記の第２のデバイスが、前記の接続されたアクセスポイントリスティング中の各アクセスポイントに周期的に接続して、前記アクセスポイントと前記統合ネットワーク中の行先クライアントとの間でデータパケットをルーティングすることを引き起こすことを有する、
請求項１９に記載の方法。
【請求項２１】
前記ネットワーク名が、ネットワークタイプを識別する共通の識別子部分と、前記ネットワークの特定のインスタンスを識別するランダムな数字とを含んでいる、請求項１に記載の方法。
【請求項２２】
前記ネットワーク名と関連付けられたネットワーク化サービスが前記の複数のデバイスのうちの別のものによって現在提供されていないという前記の第１のデバイスによる判定に応答して、前記の第１のデバイスが、ＢｌｕｅｔｏｏｔｈおよびＷｉＦｉダイレクト通信のうちの１つのために設定されることを引き起こすことと、前記ネットワーククラスターと関連付けられた前記ネットワーク名についてのネットワーク化サービスを提供することとをさらに有する、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
１．分野
本開示は、概してコンピューターデバイスのネットワーク化に関し、より具体的には複数のデバイス間のクラスターネットワークを確立することに関する。
【背景技術】
【０００２】
２．関連技術の説明
複数のコンピューターデバイス間のピアベース（ｐｅｅｒ−ｂａｓｅｄ）の通信基盤を提供するために、無線メッシュネットワークが確立されてもよい。メッシュネットワークを実装することの利益の１つは、単一の無線アクセスポイントを用いて利用可能となるよりも、より広範囲のネットワークカバレージが提供されるかも知れないことである。しかしながら、スマートフォンのような携帯デバイスにおいては、アクセスポイントモードとクライアントモードとの間の切り替えの際に売主によって課される制限に起因して、メッシュネットワークは普及していない。
【０００３】
複数の無線デバイス間のピアベースのネットワークを確立する方法の必要性が残ったままである。
【発明の概要】
【０００４】
概要
１つの開示される態様によれば、複数のデバイス間のネットワーククラスターを確立するための方法が提供され、各デバイスはアクセスポイントモードとクライアントモードとに少なくとも設定可能である無線ラジオを有し、該ネットワーククラスターは関連付けられたネットワーク名を有する。当該方法は、複数のデバイスのうちの第１のデバイスがクライアントモードに設定されることを引き起こすことを伴う。当該方法はさらに、ネットワーク名と関連付けられたネットワーク化サービスが、複数のデバイスのうちの別のものによって現在提供されていないという第１のデバイスによる判定に応答して、第１のデバイスがアクセスポイントモードに設定されることを引き起こすことと、ネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供することとを伴う。当該方法はまた、第１のデバイスにおいて、クライアントモードに設定された第２のデバイスからの接続リクエストを受け取ることに応答して、接続を受け入れることと、第２のデバイスと関連付けられたユーザー識別子を判定することと、第１のデバイス上のメモリーに保存されている接続リスティングに第２のデバイスについてのエントリーを追加することとを伴う。当該方法はさらに、第１のデバイスにおいて、第２のデバイスのユーザー識別子に対応する行先を有する１つ以上のデータパケットを受け取ることに応答して、該１つ以上のデータパケットを第２のデバイスに送信することを伴う。
【０００５】
アクセスポイントモードに設定されている間に第１のデバイスにおいて接続リクエストが受け取られなければ、当該方法は、第１のデバイスが、第１のデバイスがアクセスポイントモードにある間に接続リクエストのうちの１つが受け取られるまで、または、クライアントモードにある間にネットワーク名と関連付けられたネットワーク化サービスを提供する別のデバイスが発見されるまで、クライアントモードに設定されることとアクセスポイントモードに設定されることとを周期的に交互に繰り返すことを引き起こすことを伴っていてもよい。
【０００６】
第１のデバイスがクライアントモードに設定されることとアクセスポイントモードに設定されることとを交互に繰り返すことを引き起こすことは、第１のデバイスが、第１のデバイスが第１の期間の間はクライアントモードに設定されることと、第２の期間の間はアクセスポイントモードに設定されることとを交互に繰り返すことを引き起こすことを伴っていてもよく、第１および第２の期間のうちの少なくとも１つはランダムな時間成分を含んでいる。
【０００７】
当該方法は、第１のデバイスにおいて、クライアントモードに設定された少なくとも１つの追加デバイスからの接続リクエストを受け取ることに応答して、追加デバイスと関連付けられたユーザー識別子を判定することと、該ユーザー識別子を第１のデバイス上の接続リスティングに追加することとを伴っていてもよい。
【０００８】
当該方法は、第１のデバイスにおいて、クライアントモードに設定され、かつ、第１のデバイスに接続された発信デバイスからのファインド（ｆｉｎｄ）リクエストを受け取ることを伴っていてもよく、該ファインドリクエストは、意図した受信デバイスと関連付けられたユーザー識別子を含んでおり、当該方法は、第１のデバイスが、第１のデバイス上の接続リスティングが受信デバイスと関連付けられたユーザー識別子を含んでいるか否かを判定することを引き起こすことを伴っていてもよく、該接続リスティングは、ネットワーククラスター上で第１のデバイスが先に遭遇したデバイスについてのエントリーを含んでおり、かつ、当該方法は、接続リスティングが受信デバイスと関連付けられたユーザー識別子を含んでいれば、第１のデバイスが発信デバイスにファインドリクエスト応答を送信することを引き起こすことを伴っていてもよく、該ファインドリクエスト応答は、第１のデバイスのネットワークアドレスを、発信デバイスと受信デバイスとの間のデータの送信用のｎｅｘｔｈｏｐアドレスとして含んでいる。
【０００９】
第１のデバイス上の接続リスティングは少なくとも１つのエントリーを含んでいてもよく、該少なくとも１つのエントリーは第１の隣接デバイスを識別し、該第１の隣接デバイスは１つ以上のデバイスを介して第１のデバイスに接続されており、該１つ以上のデバイスは、クライアントモードに設定されており、かつ、第１のデバイスおよび第１の隣接デバイスの両方の接続範囲にあり、かつ、当該方法はさらに、接続リスティングが受信デバイスと関連付けられたユーザー識別子を含んでいなければ、第１のデバイスが第１の隣接デバイスにディスカバー（ｄｉｓｃｏｖｅｒ）リクエストを送信することを引き起こすことを伴っていてもよく、該ディスカバーリクエストは、受信デバイスのユーザー識別子を含んでおり、かつ、第１の隣接デバイスが、受信デバイスが第２の隣接デバイスに接続されているか否かを判定することを引き起こすように作動可能であり、該第２の隣接デバイスは、アクセスポイントモードに設定され、かつ、１つ以上のデバイスを介して第１の隣接デバイスに接続され、該１つ以上のデバイスは、クライアントモードに設定され、かつ、第１および第２の隣接デバイスの両方の接続範囲にあり、かつ、当該方法はさらに、第１のデバイスにおいて、受信デバイスについてのエントリーを含むように第１のデバイス上の接続リスティングを更新する第１の隣接デバイスからのディスカバーリクエスト応答を受け取ることに応答して、第１のデバイスが発信デバイスにファインドリクエスト応答を送信することを引き起こすことを伴っていてもよく、該ファインドリクエスト応答は、第１のデバイスのネットワークアドレスを、第１の隣接デバイスおよび第２の隣接デバイスを介した発信デバイスと受信デバイスとの間のデータの送信用のｎｅｘｔｈｏｐアドレスとして含んでいる。
【００１０】
ディスカバーリクエストは生存時間（ＴＴＬ）データフィールドを含んでいてもよく、該生存時間（ＴＴＬ）データフィールドは、ＴＴＬが満了する時にディスカバーリクエストの廃棄を容易にするために、ディスカバーリクエストが有効である期間を定義する。
【００１１】
ディスカバーリクエスト応答は、ディスカバーリクエスト応答に追加されるタイムスタンプを含んでいてもよく、該追加は各隣接デバイス（それを通ってリクエスト応答がトラバースする）によって行われるものであり、該タイムスタンプは、所定の時間枠内のディスカバーリクエストの繰り返しを防止するように作動可能である。
【００１２】
第１の隣接デバイスが、受信デバイスが第２の隣接デバイスに接続されているか否かを判定することを引き起こすことは、第２の隣接デバイスにディスカバーリクエストを転送することを伴っていてもよく、該ディスカバーリクエストは、第２の隣接デバイスが、第２の隣接デバイス上の接続リスティングが受信デバイスと関連付けられたユーザー識別子を含んでいるか否かを判定することを引き起こすように作動可能であり、かつ、第１の隣接デバイスが、受信デバイスが第２の隣接デバイスに接続されているか否かを判定することを引き起こすことは、接続リスティングが受信デバイスと関連付けられたユーザー識別子を含んでいれば、第２の隣接デバイスのネットワークアドレスをｎｅｘｔｈｏｐアドレスとして含んでいるディスカバリー（ｄｉｓｃｏｖｅｒｙ）リクエスト応答を、第１の隣接デバイスを介して第１のデバイスに戻るように送信することを伴っていてもよい。
【００１３】
第１の隣接デバイスにおいてディスカバリーリクエスト応答を受け取ることに応答して、当該方法は、第２の隣接デバイスのネットワークアドレスを第２のデバイスに戻るような送信用のｎｅｘｔｈｏｐアドレスとして含んでいる受信デバイスについてのエントリーを含むように第１の隣接デバイス上の接続リスティングを更新することと、第１の隣接デバイスのネットワークアドレスを第１のデバイスに戻るような送信用のｎｅｘｔｈｏｐアドレスとしてディスカバリーリクエスト応答に追加することとを伴っていてもよい。
【００１４】
当該方法は、第２のデバイスが、任意の隣接デバイスがアクセスポイントモードに設定されているか否か、および、ネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供しているか否かを周期的に判定することを引き起こすことと、ネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供している第１の隣接デバイスを検出する第２のデバイスに応答して、第２のデバイスが、第１の隣接デバイスをネットワーククラスターに連結させて統合ネットワーククラスターを形成することを伴っていてもよく、該形成は、第１のデバイスから更新された接続リスティングを要求することによるものであり、第１のデバイスからの接続を断ち、かつ、第１の隣接デバイスに接続することによるものであり、第１の隣接デバイスから接続リスティング（該接続リスティングは、第１の隣接デバイス上のメモリーに格納されており、かつ、第１の隣接デバイスに接続されたデバイスのユーザー識別子を含んでいる）を要求することによるものであり、第１の隣接デバイスに第１のデバイスについての接続リスティングを提供して第１の隣接デバイス上の接続リスティングの更新を容易にすることによるものであり、第１のデバイスに再接続することによるものであり、かつ、第１のデバイスに第１の隣接デバイスについての接続リスティングを提供して第１のデバイス上の接続リスティングの更新を容易にすることによるものであり、かつ、第１のデバイスが受け取られたデータパケットを送信することを引き起こすことは、受け取られたデータパケットが第１の隣接デバイスに接続された第１のデバイス上の接続リスティング中のクライアントデバイスと関連付けられたデバイス識別子に対応する行先を有するという第１のデバイスによる判定に応答して、データパケットが第２のデバイスを介して第１の隣接デバイスへとルーティングされることを引き起こすことを伴っていてもよい。
【００１５】
第２のデバイスが、その他のデバイスがネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供しているか否かを周期的に判定することを引き起こすことは、第１のデバイスと関連付けられた基本サービスセット識別（ＢＳＳＩＤ）を判定することと、第２のデバイスが利用可能であるネットワークのスキャンを実行することを引き起こすことと、ネットワーク名と関連付けられたネットワーク化サービスを提供している検出されたデバイスのそれぞれについて、デバイスと関連付けられたＢＳＳＩＤ（デバイスがアクセスポイントモードに設定されており、かつ、ネットワーク名についてのネットワーク化サービスを提供していることを示す第１のデバイスのＢＳＳＩＤとは異なるＢＳＳＩＤ）を判定することとを伴っていてもよい。
【００１６】
データパケットが第２のデバイスを介して第１の隣接デバイスへとルーティングされることを引き起こすことは、第２のデバイスが第１のデバイスに現在接続されていないという第１のデバイスによる判定に応答して、データパケットを、第１のデバイスに接続された時に第２のデバイスに送信されるべきデータパケットのキュー（ｑｕｅｕｅ；待ち行列）に書き込むことを伴っていてもよい。
【００１７】
第２のデバイスは、第２のデバイス上のメモリーに格納された、接続されたアクセスポイントリスティングを含んでいてもよく、該接続されたアクセスポイントリスティングは、接続されたアクセスポイントとして第１のデバイスを識別する少なくとも１つのエントリーを含んでおり、かつ、第１の隣接デバイスを検出する第２のデバイスに応答して、第２のデバイスが第１の隣接デバイスを接続されたアクセスポイントリスティングに追加することを引き起こし、かつ、第２のデバイスが接続されたアクセスポイントリスティング中の各アクセスポイントに周期的に接続して、統合ネットワーククラスター中のアクセスポイントと行先クライアントとの間でデータパケットをルーティングすることを引き起こす。
【００１８】
データパケットをルーティングすることは、第１のデバイスおよび第１の隣接デバイスのうちの現在接続されている一方から受け取られ、かつ、第１のデバイスおよび第１の隣接デバイスのうちの他方に向けられたデータパケットを格納するための第２のデバイス上のメモリー中のキューを維持することと、第１のデバイスおよび第１の隣接デバイスのうちの現在接続されている一方から周期的に接続を断ち、かつ、第１のデバイスおよび第１の隣接デバイスのうちの他方に接続することと、接続された時に第１のデバイスおよび第１の隣接デバイスのうちの他方にキュー中のデータを送信することとを伴っていてもよい。
【００１９】
第１のデバイス上の接続リスティング中に格納された第２のデバイスについてのエントリーは、ユーザー識別子と、クラスターネットワーク内の第２のデバイスのネットワークアドレスの１つ以上とを少なくとも含んでおり、かつ、第２のデバイスと関連付けられたハードウェア識別子を含んでいる。
【００２０】
複数のデバイス間で確立されたネットワーククラスター（各デバイスはアクセスポイントモードとクライアントモードとに少なくとも設定可能である無線ラジオを有し、該複数のデバイスは、アクセスポイントモードに設定された第１のデバイスと、クライアントモードに設定されており、かつ、第１のデバイスに接続された第２のデバイスとを少なくとも含んでいる）においては、第２のデバイスと意図した受信デバイスとの間で通信するための方法が開示される。当該方法は、第２のデバイスが、受信デバイスと関連付けられたユーザー識別子が第２のデバイス上のメモリー中に格納された接続リスティング中に現れるか否かを判定することを引き起こすことを伴っており、該接続リスティングは、ネットワーククラスター上で先に遭遇されたデバイスについてのエントリーを含んでいる。受信デバイスが接続リスティング中に現れれば、当該方法はさらに、第１のデバイスに１つ以上のデータパケットを送信することを伴い、該データパケットは、受信デバイスと関連付けられたユーザー識別子を含んでいる。受信デバイスが接続リスティング中に現れなければ、当該方法は、第１のデバイスにファインドリクエストを送信して受信デバイスの探索を開始することを伴う。
【００２１】
当該方法は、第２のデバイスにおいて、第１のデバイスからのファインドリクエスト応答を受け取ることを伴っていてもよく、該ファインドリクエスト応答は、受信デバイスがネットワーククラスター全体に到達可能であってもよいことを確認し、かつ、第１のデバイスのアドレスを、第２のデバイスと受信デバイスとの間のデータの送信用のｎｅｘｔｈｏｐアドレスとして含んでいる。
【００２２】
別の開示される態様によれば、第１のネットワーククラスターと第２のネットワーククラスターとを統合するための方法が提供され、該ネットワーククラスターはそれぞれ複数のデバイスを含んでおり、各デバイスはアクセスポイントモードとクライアントモードとに少なくとも設定可能である無線ラジオを有し、第１のネットワーククラスターは第１のデバイスを含んでおり、かつ、第２のネットワーククラスターは第１の隣接デバイスを含んでおり、第１のデバイスと第１の隣接デバイスとは、アクセスポイントモードに設定されており、かつ、共通のネットワーク名と関連付けられたネットワーク化サービスを提供する。当該方法は、第２のデバイス（クライアントモードに設定されており、かつ、第１のデバイスおよび第１の隣接デバイスの両方の接続範囲にある）が、任意の隣接デバイスがアクセスポイントモードに設定されているか否かを周期的に判定すること引き起こすことを伴う。当該方法はさらに、ネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供することと、第１の隣接デバイスがネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供していることを検出する第２のデバイスに応答して、第２のデバイスが第１の隣接デバイスをネットワーククラスターに連結させて統合ネットワーククラスターを形成することを引き起こすこととを伴い、該形成は、第１のデバイスから更新された接続リスティングを要求することと、第１のデバイスからの接続を断ち、かつ、第１の隣接デバイスに接続することと、第１の隣接デバイスから接続リスティングを要求することとによるものである。接続リスティングは、第１の隣接デバイス上のメモリー中に格納されており、かつ、第１の隣接デバイスに接続されたデバイスのユーザー識別子を含んでいる。当該方法はさらに、第１の隣接デバイスに第１のデバイスについての接続リスティングを提供して第１の隣接デバイス上の接続リスティングの更新を容易にすることと、第１のデバイスに再接続し、かつ、第１のデバイスに第１の隣接デバイスについての接続リスティングを提供して第１のデバイス上の接続リスティングの更新を容易にすることとを伴う。
【００２３】
第２のデバイスは、第２のデバイス上のメモリー中に格納された、接続されたアクセスポイントリスティングを含んでいてもよく、該接続されたアクセスポイントリスティングは、接続されたアクセスポイントとして第１のデバイスを識別する少なくとも１つのエントリーを含んでおり、かつ、第１の隣接デバイスを検出する第２のデバイスに応答して、第２のデバイスが接続されたアクセスポイントリスティングに第１の隣接デバイスを追加することを引き起こし、かつ、第２のデバイスが接続されたアクセスポイントリスティング中の各アクセスポイントに周期的に接続して統合ネットワーククラスター中のアクセスポイントと行先クライアントとの間のデータパケットをルーティングすることを引き起こす。
【００２４】
ネットワーク名は、ネットワークタイプを識別する共通の識別子部分と、ネットワークの特定のインスタンスを識別するランダムな数字とを含んでいてもよい。
【００２５】
ネットワーク名と関連付けられたネットワーク化サービスが複数のデバイスのうちの別のものによって現在提供されていないという第１のデバイスによる判定に応答して、当該方法はさらに、第１のデバイスが、ＢｌｕｅｔｏｏｔｈおよびＷｉＦｉダイレクト通信のうちの１つのために設定されることを引き起こすことと、ネットワーククラスターと関連付けられたネットワーク名についてのネットワーク化サービスを提供することとを伴っていてもよい。
【００２６】
その他の態様および特徴は、添付の図面と併せて特定の開示される実施形態の次の説明を検討した当業者に明らかとなるであろう。
【図面の簡単な説明】
【００２７】
開示される実施形態を示す図面において、
【００２８】
【図１】図１は、複数のデバイス間に確立されたネットワーククラスターの概略図である。
【図２】図２は、図１に示されたデバイスのうちのいずれかを実装するためのプロセッサー回路のブロック図である。
【図３】図３は、図１に示されたネットワーククラスターのさらなる概略図である。
【図４】図４は、図３に示されたクラスターネットワークの確立に関連する機能を実行するように図２のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。
【図５】図５は、図２のプロセッサー回路のメモリー中に格納された、接続リスティングおよび接続されたアクセスポイントリスティングの例である。
【図６】図６は、クライアントプロセス機能を実行するように図２のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。
【図７】図７は、図３に示されたネットワーククラスターを確立するのに用いられる汎用リクエスト／応答メッセージプロトコルの例である。
【図８Ａ】図８Ａ〜図８Ｃは、クライアントルータープロセス機能を実行するように図２のプロセッサー回路に指示するためのコードのブロックを描いた一連のプロセスフローチャートである。
【図８Ｂ】図８Ａ〜図８Ｃは、クライアントルータープロセス機能を実行するように図２のプロセッサー回路に指示するためのコードのブロックを描いた一連のプロセスフローチャートである。
【図８Ｃ】図８Ａ〜図８Ｃは、クライアントルータープロセス機能を実行するように図２のプロセッサー回路に指示するためのコードのブロックを描いた一連のプロセスフローチャートである。
【図９】図９は、ファインドプロセスを実行するように図２のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。
【図１０】図１０は、ルートディスカバリープロセスを実行するように図２のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。
【図１１】図１１は、ディスカバリー応答プロセスを実行するように図２のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。
【図１２】図１２は、ゲートウェイプロセスの第１の部分を実行するように図２のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。
【図１３】図１３は、ゲートウェイプロセスの第２の部分を実行するように図２のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。
【図１４】図１４は、クラスターネットワークを確立するための代替的な実施形態に関連する機能を実行するように図２のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。
【図１５】図１５は、図１４に示されたプロセスによって確立されたネットワーククラスターの概略図である。
【図１６】図１６は、Ｂｌｕｅｔｏｏｔｈ通信プロトコルを用いてクラスターネットワークを確立することに関連する機能を実行するように図２のプロセッサー回路に指示するためのコードのブロックを描いたプロセスフローチャートである。
【図１７】図１７は、図１４および図１６に示されたプロセスによって確立されたネットワーククラスターの概略図である。
【発明を実施するための形態】
【００２９】
詳細な説明
図１を参照すると、概して１００において、複数のデバイス間に確立されたネットワーククラスターが示されている。図１に示されている実施形態では、ネットワーククラスター１００は、第１のデバイス１０２と、第２のデバイス１０４と、デバイス１０６との間に確立されており、該デバイスはそれぞれ、無線ラジオ（図示せず）を有する。この実施形態では、第１のデバイス１０２はユーザー１０８によって操作されているスマートフォンであり、第２のデバイス１０４はユーザー１１０によって操作されているタブレットコンピューターであり、かつ、デバイス１０６はラップトップコンピューターである。その他の実施形態では、デバイス１０２〜デバイス１０６は、例えば、スマートフォン、タブレットもしくはラップトップコンピューター、デスクトップコンピューター、ルーターもしくはアクセスポイントのような独立型のネットワーク化デバイス、プリンターのようなコンピューター周辺機器、および／または、ネットワーク化された機器のような物理的実体のような、複数のネットワーク化されたデバイスのいずれかであってもよい。一般的に、ネットワーククラスター１００への完全な参加のために、デバイスはそれぞれ、アクセスポイントモードとクライアントモードとに少なくとも設定可能である無線ラジオを有するべきである。しかしながら、いくつかのデバイスは、アクセスポイントとしてのみ、または、クライアントモードのみで作動することのみが可能であり、かつ、未だにネットワーククラスター１００の一部であってもよいが、いくつかのネットワーク確立機能を実行することができないかも知れない。確立されたネットワーククラスター１００は、関連付けられたネットワーク名を有し、該関連付けられたネットワーク名は、１つの実施形態ではサービスセット識別子（ＳＳＩＤ）であってもよい。１つの実施形態では、ネットワーク名は「ＷＡＶＥ−＊」の形式を有し、ここで、「＊」はランダムな数字を表している。「ＷＡＶＥ−」部分は、本明細書で説明されるように確立されたすべてのネットワークに共通であってもよく、新規ユーザーが「ＷＡＶＥ−」で始まる任意のネットワークに接続することを可能にする。そのようであるので、ネットワーク名は、ネットワークのタイプを「ＷＡＶＥ」ネットワークとして識別する共通の識別子部分と、ネットワークの特定のインスタンスを識別するランダムな数字とを含んでいる。以下の説明では、クラスターネットワークと関連付けられたＳＳＩＤは「ＷＡＶＥ−＊」であると推定され、ここで、「＊」はランダムな数字を表していると理解されるべきである。
【００３０】
一般的に、デバイス１０２〜デバイス１０６はそれぞれ、各デバイスがネットワークを確立するための機能を提供することを引き起こすコンピューターで読み取り可能な指令の形式でローディングされたアプリケーションを有する。例えば、第１のデバイス１０２の場合、スマートフォンアプリケーションがローディングされ、かつ、動かされて、必要とされる機能を実装してもよい。この実施形態では、アプリケーションにおいて定められた割当プロトコルにしたがって、複数のデバイス１０２、１０４および１０６のそれぞれに対して、固有のユーザー識別子が割り当てられる
【００３１】
この実施形態では、ネットワーククラスター１００は、最初はクライアントモードに設定されている第１のデバイス１０２によって確立されており、かつ、デバイスの無線ラジオがスキャンを行っているか、または、アクセスポイントモードに設定されており、かつ、クラスターネットワーク名「ＷＡＶＥ−＊」と関連付けられたネットワーク化サービスを提供しているその他のデバイスによって確立されている。その他のデバイスがＳＳＩＤ「ＷＡＶＥ−＊」の下でネットワーク化サービスを現在提供していなければ、その時は、第１のデバイス１０２はネットワーククラスターの範囲内になく、かつ、アプリケーションは、デバイスがＳＳＩＤ「ＷＡＶＥ−＊」の下でネットワーククラスターについてのネットワークサービスを提供するためのアクセスポイントモードに設定されることを引き起こす。ＳＳＩＤ「ＷＡＶＥ−＊」の下でネットワーククラスターについてのサービスを提供するアクセスポイントモードにある別のデバイスが見出されれば、その時は、ネットワーククラスターが既に確立されており、かつ、第１のデバイスは確立されたクラスターに参加してもよい。 
【００３２】
アクセスポイントモードに設定されている時、第１のデバイス１０２は、第２のデバイス１０４のようなその他のデバイスからの接続リクエストを待つ。ＩＥＥＥ８０２．１１無線ネットワークでは、接続リクエストは「プローブリクエスト」と呼ばれる。クライアントモードに設定された第２のデバイス（第２のデバイス１０４のような）から接続リクエストを受け取ることに応答して、第１のデバイス１０２は、接続リクエストを受け入れ、かつ、第２のデバイス１０４と関連付けられたユーザー識別子を判定し、かつ、第１のデバイス１０２上のメモリー中に格納された接続リスティングにデバイスについてのエントリーを追加する。１つの実施形態では、接続リスティング中の第２のデバイス１０４についてのエントリーは、デバイスのユーザー識別子と、クラスターネットワーク内のデバイスのネットワークアドレスとを含んでいる。ＩＥＥＥ８０２．１１プロトコルの下での接続リクエストの受け入れは、接続が完了する前に第２のデバイスによる認証および関連付けを要求するプロセスを伴っていてもよい。本明細書で開示される実施形態がＩＥＥＥ８０２．１１ネットワーク化プロトコルを参照して説明される一方で、無線ネットワークは、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ａｐｐｌｅ  ｉＯＳオペレーティングシステム上のＭｕｌｔｉｐｅｅｒ  Ｃｏｎｎｅｃｔｉｖｉｔｙ  ｆｒａｍｅｗｏｒｋ、Ｗｉ−ＦｉダイレクトまたはＡｎｄｒｏｉｄオペレーティングシステム上のＷｉ−Ｆｉ  Ｐ２Ｐのようなその他の無線ネットワーク化プロトコルを用いて実施されていてもよい。
【００３３】
同様に、第１のデバイス１０２はまた、デバイス１０６から接続またはプローブリクエストを受け取ってもよく、かつ、第１のデバイス１０２上の接続リスティングにデバイスについてのエントリーを追加してもよい。接続リスティングは、第１のデバイス１０２によって、第１のデバイスによって提供されたアクセスポイントに接続されたデバイス（デバイス１０４およびデバイス１０６のような）を追跡するのに用いられる。続いて、第１のデバイス１０２が第２のデバイス１０４のユーザー識別子を含むデータパケットをデバイス１０６から受け取れば、第１のデバイス１０２は、ユーザー識別子が接続リスティング中に現れるか否かを判定し、現れれば、第２のデバイスのネットワークアドレスを探索し、かつ、第２のデバイスのネットワークアドレスにデータパケットを送信する。
【００３４】
上記のプロセスが上記の説明において第１のデバイス１０２によって開始されるものとして説明されている一方で、実際は、各デバイス１０２〜１０６が、アクセスポイントモードにある間に接続リクエストが受け取られるか、または、アクセスポイントモードにある間にネットワーク名と関連付けられたネットワーク化サービスを提供している別のデバイスが発見されるかのいずれかまで、クライアントモードに設定されることとアクセスポイントモードに設定されることとを周期的に交互に繰り返すことによって、同一のネットワーククラスター確立プロセスを実行してもよい。
【００３５】
上記で開示されたクラスターネットワーク確立プロセスは、デバイスの無線ラジオがクライアントモードとホットスポットモードとで同時に作動することを製造業者によって制限されるかも知れない（いくつかの場合、無線ラジオがかかる作動を可能であったとしても）という、多くのスマートフォンおよびタブレットデバイスと関連付けられる制限を克服する。ネットワーククラスター１００は、第１のデバイス１０２のようないくつかのデバイスが、デバイス１０４およびデバイス１０６のようなその他のデバイスがクライアントモードに設定される一方でアクセスポイントモードに設定されることを引き起こすことによって確立されている。ネットワーククラスター１００を確立する際、デバイスはまた、ネットワーククラスター１００においてその他のデバイスによって何のサービスが提供されているかに基づいて、クライアントモードとアクセスポイントモードとの間で設定を変えてもよい。
【００３６】
第１のデバイス１０２によって提供されるアクセスポイントには、追加デバイスが接続され、ネットワーククラスター１００が図１に描かれるより多数のデバイスを含むように拡張することを引き起こしてもよい。実際には、スマートフォンデバイスが、同時接続の数を制限するかも知れない。例えば、いくつかのスマートフォンオペレーティングシステムは、３つのデバイスへの接続を制限し、一方で、その他のものは、１０まで、またはそれ以上の同時接続を可能にするかも知れない。
【００３７】
図２には、デバイスのいずれかを実装するためのプロセッサー回路のブロック図が示されている。図２を参照すると、プロセッサー回路２００はマイクロプロセッサー２０２を含んでおり、該マイクロプロセッサー２０２は多重プロセッシングコアを含んでいてもよい。プロセッサー回路２００はまた、ディスプレイ２０４と、ユーザー入力を受け取るための入力デバイス２０６とを含んでいる。いくつかの実施形態では、入力デバイス２０６は、ディスプレイ２０４上のタッチスクリーンとして提供されてもよい。プロセッサー回路２００はまた、デバイス上で動いているアプリケーションと関連付けられたデータを格納するためのランダムアクセスメモリー２０８を含んでいる。プロセッサー回路２００はまた、データを格納するための不揮発性フラッシュメモリー２１０を含んでいる。示されている実施形態では、不揮発性フラッシュメモリー２１０は、オペレーティングシステム格納位置２４０と、アプリケーション格納位置２４２と、接続リスティング位置２４４と、キュー位置２４６と、システム設定位置２４８とを含んでいる。不揮発性フラッシュメモリー２１０は、音声、映像、画像、文章およびその他のデータファイルならびに／または書類を格納するためのユーザーデータ格納位置２５２を含んでいてもよい。 
【００３８】
プロセッサー回路２００はさらに、ＲＦベースバンドラジオ２１２と、モバイル通信ネットワークに接続するためのアンテナ２１４とを含んでいる。ＲＦベースバンドラジオ２１２は、２Ｇ、３Ｇ、４Ｇまたはその他の通信基準を含む種々の通信基準のいずれかを用いてデータ通信を提供するように構成されていてもよい。
【００３９】
プロセッサー回路２００はまた、無線ラジオ２１６と、ＩＥＥＥ８０２．１１ＷＬＡＮローカルネットワークのようなローカルネットワークに接続するためのアンテナ２１８とを含んでいる。無線ラジオ２１６はまた、Ｂｌｕｅｔｏｏｔｈ、ＷｉＦｉダイレクトまたは近距離無線通信のようなその他の無線プロトコルを介して接続を提供してもよい。
【００４０】
プロセッサー回路２００はさらに、位置受信機２３０を含んでいる。位置受信機２３０は、グローバルポジショニングシステム（ＧＰＳ）信号を受け取るためのアンテナ２３２を含んでおり、かつ、位置受信機２３０は、特定のローカルネットワークアクセスポイントの既知の位置またはセルラーサービスプロバイダーによって提供されるセルラー信号三角測量情報のようなその他の位置情報と組み合わせてＧＰＳ情報を用い、ネットワーク化されたデバイスの位置を判定してもよい。
【００４１】
プロセッサー回路２００はさらに、オーディオプロセッサー２２０と、マイクロフォン２２２と、スピーカー２２４とを含んでいる。オーディオプロセッサー２２０は、マイクロフォン２２２からの音声入力信号を受け取り、かつ、処理し、スピーカー２２４において音声出力を生成する。プロセッサー回路２００はまた、映像／画像プロセッサー２２６と、カメラ２２８とを含んでいる。映像／画像プロセッサー２２６は、カメラ２２８からの画像および／または映像信号を受け取り、かつ、処理する。
【００４２】
ディスプレイ２０４と、入力デバイス２０６と、ランダムアクセスメモリー２０８と、不揮発性フラッシュメモリー２１０と、ＲＦベースバンドラジオ２１２と、無線ラジオ２１６と、オーディオプロセッサー２２０と、映像／画像プロセッサー２２６とは、すべてマイクロプロセッサー２０２と通信している。
【００４３】
オペレーティングシステム格納位置２４０はコードを格納しており、該コードは、スマートフォンデバイスについてはＡｎｄｒｏｉｄ商標ベースのオペレーティングシステム、ｉＯＳベースのオペレーティングシステムまたは無線通信を支持するその他の任意のオペレーティングシステムであってもよいオペレーティングシステムを実装するようにマイクロプロセッサー２０２に指示するためのものである。残りの開示は、概して、Ａｎｄｒｏｉｄベースのオペレーティングシステムの下での種々の開示される実施形態の実装に関連するが、同一の原則はまた、数個の実装の相違点を有するその他のオペレーティングシステムにも適用される
【００４４】
第１のデバイス１０２と第２のデバイス１０４とはそれぞれ、図２に示されているものと同様のプロセッサー回路２００を用いて実装されていてもよい。ラップトップコンピューターデバイス１０６は、図２に示されている部品の多くを含んでいてもよいが、位置受信機２３０およびＲＦベースバンドラジオ２１２のようないくつかの部品は省略される。実施形態が図２におけるプロセッサー回路２００の構造を参照して本明細書で説明される一方で、説明されるシステムの実施形態および／またはプロセスの実施形態はまた、その他のタイプのデバイス間の通信にも適用可能である。一般的に、デバイス１０２〜デバイス１０６はそれぞれ、フラッシュメモリー２１０のアプリケーション位置２４２の中にローディングされた、コンピューターで読み取り可能なコードを有しており、該コードは、各デバイスがネットワーククラスター１００を確立するために必要な機能を提供することを引き起こす。
【００４５】
ネットワーククラスター１００は、図３に概略的に示されている。図３を参照すると、第１のデバイス１０２は長方形として描かれており、デバイスがアクセスポイントモードに設定されていることを示している。第２のデバイス１０４とデバイス１０６とは円を用いて描かれており、これらデバイスがクライアントモードに設定されていることを示している。第１のデバイス１０２と第２のデバイス１０４と第３のデバイスとは、ネットワーククラスター１００を形成している。第１のデバイス１０２はユーザー識別子（ｕｕｉｄ）１９４を有し、第２のデバイス１０４はユーザー識別子６０５を有し、かつ、第３のデバイスはユーザー識別子３４８を有する。ユーザー識別子は概して、デバイスに固有であるべきであり、かつ、デバイスについての電話番号、媒体アクセス制御アドレス（ＭＡＣ）および／または国際携帯機器識別（ＩＭＥＩ）番号のようなデバイスに固有に割り当てられた識別子を用いて生成されてもよい。したがって、図３に示されているユーザー識別子は、説明のために簡略化されているが、実際は有意に長い文字列であり、固有性を支持する。
【００４６】
図４を参照すると、４００において、クラスターネットワーク１００を確立することに関連する機能を実行するためのコードのブロックを描いたプロセスフローチャートが示されている。ブロックは概してコードを表しており、該コードは、不揮発性フラッシュメモリー２１０のアプリケーション格納位置２４２から読み取られてもよく、種々のネットワーク化機能を実行するようにマイクロプロセッサー２０２に指示するためのものである。各ブロックを実装するための実際のコードは、例えば、Ｊａｖａ、Ｃ、Ｏｂｊｅｃｔｉｖｅ−Ｃ、Ｃ＋＋、Ｃ＃および／またはアセンブリーコードのような任意の適切なプログラム言語で書かれていてもよい。
【００４７】
クラスター形成プロセス４００は、第１のデバイス１０２を設定するアプリケーションが起動されて、ネットワーククラスター１００を確立するための機能を提供する時に、ブロック４０２において開始される。その後、ブロック４０４がデバイスをクライアントモードに設定し、かつ、無線ラジオ２１６が消されていれば無線ラジオを作動させるようにマイクロプロセッサー２０２に指示する。ブロック４０４はまた、第１のデバイス１０２の無線設定セッティングにおいてエントリーを追加または更新するようにマイクロプロセッサー２０２に指示する。無線設定セッティングは、概して、不揮発性フラッシュメモリー２１０のシステム設定メモリー位置２４８中のファイル中に格納されるであろう。使用中の安全プロトコルならびにユーザー名および／もしくはパスワードのような任意のユーザー認証情報（使用中であれば）のような種々の設定セッティングを含んでいてもよいＳＳＩＤ「ＷＡＶＥ−＊」についてのエントリーが、追加または更新される。更新された設定は、第１のデバイス１０２のユーザーのさらなる介入を伴うことなく、「ＷＡＶＥ−＊」ＳＳＩＤを有するアクセスポイントへの無線接続を可能にする。
【００４８】
ブロック４０４に続いて、マイクロプロセッサー２０２は、必要に応じて、ゲートウェイプロセス１２００を実行するように指示されてもよく、該ゲートウェイプロセス１２００は、第１のデバイス１０２がＲＦベースバンドラジオ２１２を介してセルラーデータ通信ネットワークに接続されているか否か、または、無線ラジオ２１６を介して無線ネットワークに接続されているか否かを判定するためのものである。ゲートウェイプロセス１２００は、本明細書において後に説明される。
【００４９】
プロセス４００はブロック４０６において継続し、該ブロック４０６は無線ネットワークについてのスキャンを実行するようにマイクロプロセッサー２０２に指示する。ブロック４０８は、ＳＳＩＤ「ＷＡＶＥ−＊」の下でのネットワークサービスが任意のデバイスによって提供されているか否かを判定するようにマイクロプロセッサー２０２に指示する。ブロック４０８においてＳＳＩＤ「ＷＡＶＥ−＊」の下でのネットワークサービスが第１のデバイス１０２の範囲内にある任意のデバイスによって提供されていれば、その時は、デバイスは、その他のデバイスに接続可能であり、かつ、第１のデバイスは、本明細書で後に説明されるクライアントプロセス６００を実行する。
【００５０】
ＳＳＩＤ「ＷＡＶＥ−＊」についてのネットワークサービスを提供しているデバイスが第１のデバイス１０２の範囲内になければ、その時は、プロセスはブロック４１０において継続し、該ブロック４１０は、第１のデバイス１０２をアクセスポイントモードに設定し、かつ、接続リクエストを待つようにマイクロプロセッサー２０２に指示する。その後、第１のデバイス１０２はＳＳＩＤ「ＷＡＶＥ−＊」についての無線ネットワーク化サービスを提供し、かつ、ブロック４１２が、例えばデバイス１０４およびデバイス１０６のようなその他のデバイスから接続リクエストが受け取られるか否かを判定するようにマイクロプロセッサー２０２に指示する。ブロック４１２においてタイムアウト期間内に接続リクエストが受け取られなければ、その時は、マイクロプロセッサー２０２は、ブロック４０６に戻るように指示され、かつ、第１のデバイス１０２は、クライアントモードに戻るように設定され、かつ、ＳＳＩＤ「ＷＡＶＥ−＊」についてのネットワークサービスを提供しているその他のデバイスをスキャンする。
【００５１】
したがって、第１のデバイス１０２は、第１のデバイスがアクセスポイントモードにある間に接続リクエストが受け取られるか、または、クライアントモードにある間にネットワーク名と関連付けられたネットワーク化サービスを提供している別のデバイスが発見されるかのいずれかまで、クライアントモードに設定されることとアクセスポイントモードに設定されることとを周期的に交互に繰り返す。１つの実施形態では、クライアントモードおよびアクセスポイントモードにおいて消費される各期間は、ランダムな時間成分を含んでいてもよく、複数のデバイスがクライアントモードとアクセスポイントモードを交互に繰り返している時に、突然、１つのデバイスが、別のものがクライアントモードにある間にアクセスモードにあり、したがって、クラスターネットワーク１００の確立を可能にするようになっている。
【００５２】
ブロック４１２において接続リクエストが受け取られれば、その時は、マイクロプロセッサー２０２は、受け取られたリクエストの内容に基づいてブロック４１４、ブロック４１６またはブロック４１８のうちの１つに向かうように指示される。１つの実施形態では、接続リクエストが、新規接続についての「ＨＥＬＬＯ」タイプリクエストの形式をとってもよく、既存の接続の終了についての「ＧＯＯＤＢＹＥ」タイプリクエストの形式をとってもよく、かつ、第１のデバイス１０２に接続されたデバイスのステータスの変化を知らせる「ＮＯＴＩＦＹ」タイプリクエストの形式をとってもよい。ブロック４１２において、例えば第２のデバイス１０４から「ＨＥＬＬＯ」タイプリクエストが受け取られれば、第１のデバイス１０２は第２のデバイスに戻るように確認（ＡＣＫ）メッセージを送信し、メッセージの受け取りを確認する。
【００５３】
その後、ブロック４２０が、第１のデバイス１０２上に格納された接続リスティングを更新するようにマイクロプロセッサー２０２に指示する。第１のデバイス１０２上に格納された接続リスティングの例が、図５中の５００において表形式で示されている。第２のデバイス１０４上に格納されていてもよい接続リスティングの同様の例が、５２０において示されている。図５を参照すると、接続リスティング５００は複数のフィールド５０２を含んでおり、該複数のフィールド５０２は、エントリーと関連付けられたユーザー識別子を格納するためのｕｕｉｄフィールドと、インターネットプロトコル（ＩＰ）アドレスを関連付けられたデバイスについてのｄｏｔｔｅｄ  ｏｃｔｅｔとして格納するためのａｄｄｒフィールドと、データをルーティングするためのｎｅｘｔ  ｈｏｐのＩＰアドレスを格納するためのｎｅｘｔｈｏｐアドレスと、デバイスがアクセスポイントモードにあるか否か（ｉｓＭａｓｔｅｒ）またはデバイスがクライアントルーティングモードにあるか否か（ｉｓＲｏｕｔｅｒ）に関連する２つのＢｏｏｌｅａｎフィールドと、関連付けられたデバイスが最後に通信した時間を格納するための「ｌａｓｔｈｅａｒｄ」フィールドと、デバイスと関連付けられたハードウェア識別子を格納するためのハードウェアアドレス（ｈｗＡｄｄｒｅｓｓ）フィールドとを含んでいる。接続リスティング５００は、この実施形態ではｕｕｉｄ１９４を割り当てられた第１のデバイス１０２自体についての第１のエントリー５０４と第２のエントリー５０６とを含んでいる。第１のデバイス１０２は、エントリー５０４およびエントリー５０６において反映されるように、２つの異なるＩＰアドレスを割り当てられている。ｉｓＭａｓｔｅｒフィールドは、第１のデバイス１０２が現在アクセスポイントモードに設定されていることを示すＴＲＵＥに設定されている。この実施形態では、クライアントモードに設定されたデバイスのみがルーターであると考えられるので、ｉｓＲｏｕｔｅｒフィールドはＦＡＬＳＥに設定されている。エントリー５０４およびエントリー５０６についてのｈｗＡｄｄｒｅｓｓは、第１のデバイス１０２のハードウェア識別子を反映している。
【００５４】
接続リスティング５００はまた、第２のデバイス１０４についてのエントリー５０８を含んでおり、該エントリー５０８は、第２のデバイスのユーザー識別子６０５、ＩＰアドレスおよびハードウェアアドレスを含む第２のデバイスからのＨＥＬＬＯリクエストを受け取ることに応答して、第１のデバイス１０２によってブロック４２０において追加される。したがって、第２のデバイス１０４についてのエントリー５０８は、エントリー５０８において反映されるようなｉｐａｄｄｒを有し、かつ、ｉｓＭａｓｔｅｒフィールドは、第２のデバイス１０４が現在クライアントモードに設定されていることを示すＦＡＬＳＥに設定されている。この実施形態では、第２のデバイス１０４は、本明細書で後に説明されるようにルーターモードにないので、ｉｓＲｏｕｔｅｒフィールドはＦＡＬＳＥに設定されている。エントリー５０８についてのｈｗＡｄｄｒｅｓｓは、第２のデバイス１０４のハードウェア識別子を格納している。一旦接続リスティング５００が更新されると、ブロック４２０は、ブロック４１２に戻ってさらなるリクエストを待つようにマイクロプロセッサー２０２に指示する。
【００５５】
ブロック４１２において受け取られたリクエストがＧＯＯＤＢＹＥリクエストであれば、その時は、デバイス（図３におけるデバイス１０４またはデバイス１０６のような）が、第１のデバイス１０２に、それが今にもネットワーククラスター１００からの接続を断ちそうであることを知らせている。この場合、ブロック４１６は、デバイスに確認を送信するようにマイクロプロセッサー２０２に指示する。その後、ブロック４２０は、デバイスと関連付けられた接続リスティング５００中の任意のエントリーを除去するようにマイクロプロセッサー２０２に指示する。例えば、ＧＯＯＤＢＹＥリクエストが第２のデバイス１０４から受け取られれば、第１のデバイス１０２は、接続リスティング５００中のエントリー５０８を削除する。その後、ブロック４２０は、ブロック４１２に戻ってさらなるリクエストを待つようにマイクロプロセッサー２０２に指示する。
【００５６】
ＮＯＴＩＦＹリクエスト取扱いプロセス（ブロック４１８およびブロック４２２〜ブロック４２８）は、本明細書で後に説明されるであろう。一般的に、範囲内にあるデバイス１０２、デバイス１０４およびデバイス１０６はそれぞれ、クラスター形成プロセス４００のうちのブロック４０２〜ブロック４０８を少なくとも実行し、その後、デバイスは、アクセスポイントモードまたはクライアントモードのいずれかに選択的に設定される。例えば、第２のデバイス１０４については、ブロック４０８においてネットワークが既に存在していてもよい（すなわち、第１のデバイス１０２によって提供されていてもよい）。この場合、ブロック４０８が、任意のデバイスがＳＳＩＤ「ＷＡＶＥ−＊」についてのネットワークサービスを提供しているか否かを判定するように第２のデバイスのマイクロプロセッサー２０２に指示する時、アクセスポイントモードにある第１のデバイス１０２がホストを務めるネットワークが検出され、かつ、ブロック４０８は、クライアントプロセスを実行するようにマイクロプロセッサーに指示する。
【００５７】
図６を参照すると、概して６００において、クライアントプロセスの実施形態が示されている。プロセスはブロック６０２において開始され、該ブロック６０２は、アクセスポイントモードにある第１のデバイス１０２と関連付けるようにマイクロプロセッサー２０２に指示する。ＩＥＥＥ８０２．１１プロトコルについては、関連付けは、クライアントデバイス１０４とアクセスポイントデバイス１０２との間のメッセージの交換を伴い、かつ、データリンク層において接続を確立する。次に、ネットワーククラスター１００は、関連付けプロセス中に確立されたデータリンク層に依拠するネットワーク層において確立される。ネットワーククラスター１００の確立がブロック６０４において継続し、該ブロック６０４は、第２のデバイス１０４へのＩＰアドレスの割り当てを要求するための動的ホスト設定プロトコル（ＤＨＣＰ）リクエストを第１のデバイス１０２に送信するようにマイクロプロセッサー２０２に指示する。この実施形態では、第１のデバイス１０２はＤＨＣＰサーバーを実装し、該ＤＨＣＰサーバーはＩＰアドレスのプールからＩＰアドレスを第２のデバイス１０４に割り当てる。ブロック６０４はまた、第１のデバイス１０２についてのＩＰアドレスを判定するようにマイクロプロセッサー２０２に指示する。第１のデバイス１０２上で動いているＤＨＣＰサーバーが第２のデバイス１０４からＩＰアドレスリースリクエストを受け取る時、ＤＨＣＰサーバーは、第２のデバイスについてのＩＰアドレスを留保し、かつ、第２のデバイスのＭＡＣアドレス、ＤＨＣＰサーバーが提供しているＩＰアドレス、サブネットマスク、リース期間およびオファーを行っているＤＨＣＰサーバーのＩＰアドレスを含むメッセージをクライアントに送信することによってリースオファーを行う。したがって、第２のデバイス１０４へのＤＨＣＰリースオファー送信は、第２のデバイスに第１のデバイス１０２のＩＰアドレスを提供する。
【００５８】
その後、プロセス６００はブロック６０６において継続し、該ブロック６０６は、第２のデバイス１０４と第１のデバイス１０２との間で成功したネットワーク接続が確立されたか否かを判定するようにマイクロプロセッサー２０２に指示する。成功したネットワーク接続は、アクセスポイントとの成功した関連付け、割り当てられたＩＰアドレスを受け取ること、および、第１のデバイス１０２のＩＰアドレスを受け取ることを必要とする。接続が成功裡に完了すれば、ブロック６０６は、ブロック６０８へと向かうようにマイクロプロセッサー２０２に指示し、該ブロック６０８は、第１のデバイス１０２にＨＥＬＬＯリクエストを送信するようにマイクロプロセッサーに指示する。したがって、ブロック６０２とブロック６０４とは、本明細書に記載のさらなるフローチャートにおいて参照されるような、関連付けおよび接続プロセスを有効に伴う。
【００５９】
図７中の７００において、構造化データをシリアル化するためのグーグルの「ｐｈｏｔｏ２」プロトコルバッファーシンタックス（ｓｙｎｔａｘ）における汎用リクエストおよび／または応答メッセージの例が示されている。図７を参照すると、リクエスト／応答メッセージプロトコルは複数のフィールド７０２を含んでおり、該複数のフィールド７０２はそれぞれ、タイプと、名称と、固有の番号がふられたタグとを有する。フィールドはまた、フィールドが「必要とされている（ｒｅｑｕｉｒｅｄ）」（メッセージはこのフィールドのうちの１つを正確に有していなければならない）か否か、「任意選択的である（ｏｐｔｉｏｎａｌ）」（このフィールドのうちのゼロまたは１）か否か、および、「繰り返しである（ｒｅｐｅａｔｅｄ）」（フィールドはゼロから任意の回数繰り返されてもよい）か否かを示す規則で始まる。いくつかのタイプは、ｕｉｎｔ６４（無署名の６４ビットインテジャー）、ｕｉｎｔ３２（無署名の３２ビットインテジャー）およびｂｙｔｅｓ（バイトの任意のシーケンス）のように、シンタックスにおいて予め定められている。例として、ｔｙｐｅフィールド７０４（すなわち、名称「ｔｙｐｅ」を有する）が「必要とされ」、「ＲｅｑｕｅｓｔＴｙｐｅ」のタイプを有し、かつ、タグ「１」を割り当てられている。「ＲｅｑｕｅｓｔＴｙｐｅ」タイプは、一般用語において上記したＨＥＬＬＯ、ＧＯＯＤＢＹＥおよびＮＯＴＩＦＹのような種々のメッセージタイプに割り当てられた考え得る値の予め定められたリストを記載した目録７２２中に定義されている。
【００６０】
したがって、ＨＥＬＬＯリクエストは、１であるｔｙｐｅフィールド７０４と、送信デバイスユーザー識別子に対応するｕｕｉｄフィールド７０６とを必要とする。ＨＥＬＬＯリクエストはまた、送信デバイスのＩＰアドレスのリストを保持しているゼロ、１、またはそれ以上のａｄｄｒフィールド７０８を含んでいる。送信デバイスは、任意のその他のネットワークまたはアクセスポイントモードにあるデバイスに接続されていなくてもよく、かかる場合、ＨＥＬＬＯリクエストにおいてアドレスは送信されない。しかしながら、その他の実施形態では、送信デバイスは、アクセスポイントモードにある別のデバイス、Ｂｌｕｅｔｏｏｔｈ（登録商標）もしくはＩＥＥＥ８０２．１１ＷＬＡＮローカルネットワークのような別のローカルネットワーク、および／または図２に示されているＲＦベースバンドラジオ２１２を介したセルラーデータネットワークに接続されていてもよい。これらネットワークはそれぞれ、概して、送信デバイスにＩＰアドレスを提供するであろうし、該ＩＰアドレスは、ａｄｄｒフィールド７０８中に含まれており、かつ、第１のデバイス１０２に送信される。したがって、第２のデバイス１０４によってブロック６０８において送信されるＨＥＬＬＯリクエストは、値［１，６０５，１９２１６８００００１０］を含んでいる。その後、ブロック６１０は、ＨＥＬＬＯメッセージに応答して、第１のデバイス１０２から戻るように確認メッセージ（ＡＣＫ）が受け取られたか否かを判定するようにマイクロプロセッサー２０２に指示する。ＡＣＫメッセージは、ＡＣＫのｔｙｐｅフィールドと、第１のデバイス１０２についてのｕｕｉｄ１９４と、ＨＥＬＬＯメッセージについてのＲｅｑｕｅｓｔＴｙｐｅを含むａｃｋフィールドとに対応する値［９，１９４，１］を含んでいる。上記の値を含むＡＣＫメッセージがタイムアウト内に受け取られなければ、その時は、ブロック６１０は、ブロック６０８に戻るようにマイクロプロセッサー２０２に指示し、かつ、ＨＥＬＬＯメッセージが再送信される。タイムアウトが予め定められた最大の回数よりも多く発生すれば、その時は、ブロック６１０は、第１のデバイス１０２への接続を破棄するようにマイクロプロセッサー２０２に指示してもよく、かつ、図４におけるクラスター形成プロセス４００のブロック４１０に戻るようにマイクロプロセッサーに指示してもよい。
【００６１】
上記の値を含むＡＣＫメッセージがタイムアウト内に受け取られれば、その時は、ブロック６１０は、ブロック６１２へと向かうようにマイクロプロセッサー２０２に指示する。ブロック６１２は、第２のデバイス１０４上に格納された接続リスティングを更新するようにマイクロプロセッサー２０２に指示する。図５に戻ると、第２のデバイス１０４についての接続リスティング５２０は、接続リスティング５００についての複数のフィールド５０２に対応する複数のフィールド５２２を含んでいる。接続リスティング５２０は、この実施形態では割り当てられたｕｕｉｄ６０５を有する第２のデバイス１０４自体についての第１のエントリー５２４および第２のエントリー５２６を含んでいる。第２のデバイス１０４はまた、エントリー５２４およびエントリー５２６において反映されるような２つの異なるＩＰアドレスを割り当てられている。ｉｓＭａｓｔｅｒフィールドは、第２のデバイス１０４が現在クライアントモードに設定されていることを示すＦＡＬＳＥに設定されている。第２のデバイス１０４がまだルーターモードに配置されていないので、ｉｓＲｏｕｔｅｒフィールドはＦＡＬＳＥに設定されている。エントリー５２４およびエントリー５２６についてのｈｗＡｄｄｒｅｓｓは、第２のデバイス１０４のハードウェア識別子を反映している。したがって、ブロック６１２は、接続リスティング５２０にエントリー５２８を追加するようにマイクロプロセッサー２０２に指示し、該エントリー５２８は、第１のデバイス１０２についてのｕｕｉｄ１９４と、第１のデバイスについてのｉｐａｄｄｒおよびｎｅｘｔｈｏｐ  ＩＰアドレスと、第１のデバイスがアクセスポイントモードにあり、かつ、ルーターではないという指標と、第１のデバイスのｈｗＡｄｄｒｅｓｓとを含んでいる。
【００６２】
その後、クライアントプロセス６００はブロック６１４において継続し、該ブロック６１４は、第１のデバイス１０２を、不揮発性フラッシュメモリー２１０（図２に示されている）中に格納されている接続されたアクセスポイントリスティング２５０に追加するようにマイクロプロセッサー２０２に指示する。アクセスポイントモードにある多数のデバイスが同一のＳＳＩＤ「ＷＡＶＥ−＊」上でネットワークサービスを提供しているかも知れないので、各アクセスポイントデバイスを固有に識別するには、追加の情報が必要とされる。１つの実施形態では、ＳＳＩＤ「ＷＡＶＥ−＊」上でネットワークを提供している異なるアクセスポイントを固有に識別するのに、基本サービスセット識別（ＢＳＳＩＤ）が用いられる。不揮発性フラッシュメモリー２１０中の接続されたアクセスポイントリスティング２５０は、接続されたアクセスポイントについてのｕｕｉｄおよびＢＳＳＩＤ値を格納するのに用いられる。ＢＳＳＩＤは、デバイスに割り当てられた固有の媒体アクセス制御（ＭＡＣ）アドレスであり、かつ、すべての無線データパケットにおいて送信される。図３に戻ると、５４０において接続されたアクセスポイントリスティングの例が示されている。接続されたアクセスポイントリスティング５４０は２つのフィールド５４２を含んでおり、該２つのフィールド５４２は、エントリーと関連付けられたユーザー識別子を格納するためのｕｕｉｄフィールドと、アクセスポイントデバイスについてのＢＳＳＩＤ識別子を格納するためのｈｗＡｄｄｒｅｓｓまたはＢＳＳＩＤフィールドとを含んでいる。したがって、ブロック６１４は、第１のデバイス１０２についてのエントリー５４４を追加するように第２のデバイス１０４のマイクロプロセッサー２０２に指示する。
【００６３】
したがって、第２のデバイス１０４と第１のデバイス１０２とは接続され、かつ、ネットワーククラスター１００を形成し、かつ、ブロック６１２は、ブロック６１６へと向かうようにマイクロプロセッサー２０２に指示する。ブロック６１６はマイクロプロセッサー２０２を指揮して、その他のデバイスの検索、ネットワーククラスター１００中のデバイス間の文章、音声、画像ファイル、映像およびその他のコンテンツの送信のような通常のオペレーションを、ネットワーククラスター１００を用いて開始する。
【００６４】
ブロック６１６はまた、ＳＳＩＤ「ＷＡＶＥ−＊」についてのネットワークサービスを提供しているその他のデバイスのスキャンを継続するようにマイクロプロセッサー２０２に指示する。図３を参照すると、第２のデバイス１０４は、第１のデバイス１０２およびこれもまたアクセスポイントモードにある第１の隣接デバイス３００の両方の接続範囲にあってもよい。第１の隣接デバイス３００は第１のデバイス１０２の範囲外であってもよく、かつ、第１のデバイス１０２によるスキャンにおいて検出されない。第２のデバイス１０４が第１の隣接デバイス３００を検出する時、第２のデバイスは、第１の隣接デバイスをネットワーククラスター１００に連結させて、統合ネットワーククラスター３０６を形成することを試みる。第２のデバイス１０４はまず、第１のデバイス１０２から更新された接続リスティングを要求する。その後、第２のデバイス１０４は第１のデバイス１０２からの接続を断ち、第１の隣接デバイス３００に接続し、かつ、第１の隣接デバイスに接続されたデバイスのユーザー識別子を含む接続リスティングを要求する。第２のデバイス１０４はまた、第１のデバイスについての接続リスティングを第３のデバイスに提供して、第３のデバイス上の接続リスティングの更新を容易にする。最後に、第２のデバイス１０４は第１のデバイス１０２と再接続し、かつ、第１の隣接デバイス３００についての接続リスティングを第１のデバイスに提供して、第１のデバイス上の接続リスティングの更新を容易にする。したがって、第１のデバイス１０２と第１の隣接デバイス３００とはそれぞれ、互いに接続されたデバイスｕｕｉｄを反映して、統合ネットワーククラスター３０６中のデバイス間のルーティングを容易にするように更新される。例えば、第２の隣接デバイス３０２が既に第１の隣接デバイス３００とネットワーククラスター３０４を形成していれば、隣接ネットワーククラスターとネットワーククラスター１００とは統合されて、統合ネットワーククラスター３０６を形成する。ネットワーククラスター１００中のデバイス１０６が第２の隣接デバイス３０２にデータを送ることを希望すれば、第１のデバイス１０２は第２の隣接デバイスを認識し、かつ、第１のデバイス１０２、第２のデバイス１０４および第１の隣接デバイス３００を介して第２の隣接デバイスへとデータを転送することが可能である。
【００６５】
上記のプロセスは、図６におけるクライアントプロセス６００をさらに参照して詳細に説明される。図６に戻ると、ブロック６１８は、任意の検出された隣接デバイス（すなわち、デバイス１０２以外）がアクセスポイントモードに設定されており、かつ、ＳＳＩＤ「ＷＡＶＥ−＊」と関連付けられたネットワークサービスを提供しているか否かを判定するようにマイクロプロセッサー２０２に指示する。ネットワーククラスター１００はＳＳＩＤ「ＷＡＶＥ−＊」に基づいて形成されているので、第２のデバイス１０４は、ＳＳＩＤ「ＷＡＶＥ−＊」についてのネットワークサービスを提供しているアクセスポイントモードにあるデバイスを区別することができず、かつ、デバイスについてのＢＳＳＩＤが異なっているか否かを判定する必要がある。したがって、ブロック６１８はさらに、受け取られたデータパケット中のＢＳＳＩＤを読み取り、かつ、ＢＳＳＩＤ値を、接続されたアクセスポイントリスティング５４０におけるエントリー５４４中の第１のデバイス１０２について格納されたＢＳＳＩＤと比較するようにマイクロプロセッサー２０２に指示する。
【００６６】
ブロック６１８においてＳＳＩＤ「ＷＡＶＥ−＊」についてのネットワークサービスを提供している隣接デバイスが検出されなければ、その時は、ネットワーククラスター１００の通常のオペレーションがブロック６１６において継続する。ブロック６１８において隣接デバイスがＳＳＩＤ「ＷＡＶＥ−＊」についてのネットワークサービスを提供していれば、マイクロプロセッサーは、図８に関連して以下で説明されるクライアントルータープロセスを実行するように指示される。図３に戻ると、第２のデバイス１０４の範囲内であるが、必ずしも第１のデバイス１０２の範囲内にない、第１の隣接デバイス３００が示されている。図８Ａ〜図８Ｃには、クライアントルータープロセスが示されている。図８Ａを参照すると、プロセス８００は、ブロック８０２において開始され、該ブロック８０２は、第１のデバイス１０２にＮＯＴＩＦＹリクエストを送信するようにマイクロプロセッサー２０２に指示する。図６に戻ると、メッセージプロトコル７００にしたがうＮＯＴＩＦＹリクエストは、ｔｙｐｅフィールド７０４、ｕｕｉｄフィールド７０６およびｐｅｅｒフィールド７１６を含んでいる。ｐｅｅｒフィールド７１６は、第２のデバイス１０４が遭遇したその他のデバイスについての複数のユーザー識別子と、各デバイスについての各ＩＰアドレスとを保持するのに用いられる。ピアメッセージについてのタイプはｐｅｅｒであり、かつ、ピアｕｕｉｄと、ＩＰアドレスａｄｄｒ（デバイスが到達され得る）のリストとを含むものであるとして７２４において定義される。したがって、ブロック８０２において送信されたＮＯＴＩＦＹメッセージは、値［８，６０５］を含んでいてもよく、ｐｅｅｒフィールド７１６は値を有さない。なぜなら、ネットワーク上にピアデバイスがまだ発見されておらず、かつ、フィールド７１６の「繰り返す」性質が値を必要としないからである。
【００６７】
その後、ブロック８０４が、ブロック８０２におけるＮＯＴＩＦＹリクエストの送信を通して引き出されたＮＯＴＩＦＹ応答において、第１のデバイス１０２から接続リスティングが受け取られたか否かを判定するようにマイクロプロセッサー２０２に指示する。タイムアウト後に第１のデバイス１０２からＮＯＴＩＦＹ応答が受け取られなければ、その時は、ブロック８０４は、ブロック８０２に戻るようにマイクロプロセッサー２０２に指示し、かつ、ＮＯＴＩＦＹリクエストが再送信される。ブロック８０４において所定の最大トライ数が達成されれば、その時は、ブロック８０４が、ブロック６１６に戻り、かつ、通常のオペレーションを再開するようにマイクロプロセッサー２０２に指示する。ブロック８０４において第１のデバイス１０２からＮＯＴＩＦＹ応答が受け取られれば、その時は、プロセス８００はブロック８０６において継続する。ＮＯＴＩＦＹ応答は、ＮＯＴＩＦＹリクエストと同一のプロトコルを有する。ブロック８０６は、ＡＣＫ応答［９，６０５，８］においてＮＯＴＩＦＹリクエストを確認するようにマイクロプロセッサー２０２に指示する。この場合、第２のデバイス１０４はまだルーターとして設定されていないが、そうする過程にある。ブロック８０６はまた、接続リスティング５２０を更新して、ＮＯＴＩＦＹ応答中に含有され、かつ、デバイス１０４上の接続リスティング中にはまだ反映されていない任意のピアデバイスを追加するようにマイクロプロセッサー２０２に指示する。この実施形態では、第２のデバイス１０４が、第１の隣接デバイス３００のようなアクセスポイントモードにある第２のデバイスに遭遇する時、アクセスポイントデバイスについてのＢＳＳＩＤのリスティングが作成され、かつ、ブロック８０６が、リスティングに第１のデバイス１０２のＢＳＳＩＤを追加するようにマイクロプロセッサー２０２に指示する。
【００６８】
その後、ブロック８０８が、アクセスポイントモードにある第１のデバイス１０２（第１のＡＰ）からの接続を断ち、かつ、第１の隣接デバイス３００に接続するようにマイクロプロセッサー２０２に指示する。ブロック８０８はまた、第１の隣接デバイス３００（隣接ＡＰ）と関連付け、かつ、接続するようにマイクロプロセッサー２０２に指示する。ブロック６０２およびブロック６０４に関連して上記で開示されたように、関連付けはデータリンク層において無線リンクを確立することを伴い、かつ、接続はネットワーク層において接続すること（すなわち、第１の隣接デバイス３００上で動いているＤＨＣＰサーバーからＩＰアドレスを取得すること、および、第１の隣接デバイスのＩＰアドレスを取得すること）を伴う。 
【００６９】
その後、クライアントルータープロセス８００はブロック８１０において継続し、該ブロック８１０は成功したネットワーク接続が確立されたか否かを判定するようにマイクロプロセッサー２０２に指示する。ブロック８１０においてネットワーク接続が成功裡に完了しなければ、その時は、マイクロプロセッサー２０２は、図８Ｃにおけるブロック８３４（本明細書において後で説明される）へと向かうように指示される。
【００７０】
ブロック８１０においてネットワーク接続が成功裡に完了すれば、その時は、マイクロプロセッサー２０２はブロック８１２へと向かうように指示され、該ブロック８１２は、第１の隣接デバイス３００にＮＯＴＩＦＹリクエストを送信するようにマイクロプロセッサーを指揮する。この場合、通知リクエストは値［８，６０５，１９４，１９２１６８０００００１］（すなわち、ＮＯＴＩＦＹであるｔｙｐｅ、第２のデバイス１０４のｕｕｉｄ６０ならびに第１のデバイス１０２のｕｕｉｄ１９４およびａｄｄｒ）を含んでいる。ブロック８０４において第１のデバイス１０２から受け取られた元々のＮＯＴＩＦＹ応答中に追加のピアデバイスが含まれていれば、その時は、さらなるｕｕｉｄおよびａｄｄｒ値が、ＮＯＴＩＦＹリクエスト中における第１のデバイスのｕｕｉｄおよびａｄｄｒに続く。
【００７１】
図４に戻ると、第１の隣接デバイス３００はクラスター形成プロセス４００を実行しているであろうし、かつ、ブロック４１８において第２のデバイス１０４からＮＯＴＩＦＹリクエストが受け取られれば、第１の隣接デバイスはＡＣＫメッセージでリクエストを確認するであろう。その後、ブロック４２２が、ＮＯＴＩＦＹメッセージ内に接続リスティングが含有されているか否かを判定するように第１の隣接デバイス３００のマイクロプロセッサー２０２に指示する。ブロック４２２において接続リスティングが含まれていれば、その時は、マイクロプロセッサー２０２はブロック４２４へと向かうように指示され、該ブロック４２４は、マイクロプロセッサーが第１の隣接デバイス上に格納された接続リスティングを更新すること、および、第２のデバイス１０４にルーターとしてのフラグを立てることを引き起こす（すなわち、第２のデバイスについてのｉｓＲｏｕｔｅｒフィールドがＴＲＵＥに設定される）。さらに、ブロック４２４はまた、第２のデバイスがネットワーク中の別のデバイスに接続される一方で、第２のデバイスを通してルーティングされるべきデータパケットを保持するための第２のデバイス１０４についての不揮発性フラッシュメモリー２１０（図２）におけるキュー位置２４６内のキューを配分するようにマイクロプロセッサー２０２に指示する。その後、ブロック４２６が、第２のデバイス１０４に第１の隣接デバイス３００の接続リスティングを送信するようにマイクロプロセッサー２０２に指示する。
【００７２】
ブロック４２２において接続リスティングが含まれていなければ、その時は、ＮＯＴＩＦＹメッセージが、第２のデバイス１０４が今にも接続を断ち、かつ、アクセスポイントモードにある別のデバイス（この場合、第１のデバイス１０２）と関連付けられようとしている旨の通知であると第１の隣接デバイス３００によって解釈され、かつ、プロセスはブロック４２８において継続する。ブロック４２８はマイクロプロセッサー２０２を指揮して、第１の隣接デバイス３００上に格納された接続リスティング中のエントリーに「休止（ｐａｕｓｅｄ）」のフラグを立てる。これら条件下、第２のデバイス１０４についてのデータトラフィックは、デバイスが第１の隣接デバイスに再接続するまで、デバイスについてのルーターキュー２４６中にキャッシュされる。ブロック４２８はまた、ブロック４２６へと向かうようにマイクロプロセッサー２０２に指示し、該ブロック４２６は、第２のデバイス１０４に第１の隣接デバイス３００についての接続リスティングを送信するようにマイクロプロセッサー２０２に指示する。
【００７３】
プロセス８００はブロック８１４において継続し（図８Ａ）、該ブロック８１４は、第１の隣接デバイス３００によって送信された接続リスティング（ブロック４２６、図４）が受け取られたか否かを判定するように第２のデバイス１０４のマイクロプロセッサー２０２に指示する。接続リスティングがタイムアウトの満了前に受け取られなければ、ブロック８１４は、ブロック８１２に戻るようにマイクロプロセッサー２０２に指示し、かつ、ＮＯＴＩＦＹリクエストが再送信される。最大トライ数後に接続リスティングが未だに受け取られていなければ、ブロック８１４は、図８Ｃにおけるブロック８３４に戻るようにマイクロプロセッサー２０２に指示する。
【００７４】
ブロック８１４において接続リスティングが受け取られれば、その時は、マイクロプロセッサー２０２は、図８Ｂに示されているブロック８１６へと向かうように指示される。ブロック８１６は、ＮＯＴＩＦＹ応答の受け取りを確認し、かつ、第２のデバイス１０４上の接続リスティングを更新するようにマイクロプロセッサー２０２に指示する。図５に戻ると、第２のデバイス１０４上の接続リスティング５２０は、３４８であるユーザー識別子と、１９２．１６８．１０．１であるＩＰアドレスとを有する第１の隣接デバイス３００についての新規エントリー５３０を含んでいる。エントリー５３０はまた、そのＩＰアドレスとして第１の隣接デバイス３００についてのｎｅｘｔｈｏｐを列挙し、かつ、ｉｓＭａｓｔｅｒフィールドは、デバイスがアクセスポイントモードにあることを示している。
【００７５】
ブロック８１６はまた、接続されたアクセスポイントＢＳＳＩＤのリスティングに第１の隣接デバイス３００を追加し、かつ、図２に示されている不揮発性フラッシュメモリー２１０のキュー位置２４６における第１の隣接デバイス３００についての転送キューを配分するようにマイクロプロセッサー２０２に指示する。その後、プロセス８００はブロック８１８において継続し、該ブロック８１８は、第１の隣接デバイス３００からの接続を断ち、かつ、第１のデバイス１０２と関連付け、かつ、再接続するようにマイクロプロセッサー２０２に指示する。第１のデバイス１０２との再接続が成功しなければ、その時は、ブロック８２０は、図８Ｃにおけるブロック８３４へと向かうようにマイクロプロセッサー２０２に指示する。しかしながら、再接続が成功すれば、ブロック８２０は、ブロック８２２へと向かうようにマイクロプロセッサー２０２に指示し、ここでは第２のデバイス１０４が第１の隣接デバイス３００に接続されたその他のデバイスと関連付けられたエントリーを第１のデバイス１０２に戻るように送信して、第１のデバイス上の接続リスティングを更新する。したがって、ブロック８２２は、ＮＯＴＩＦＹリクエストを第１のデバイス１０２に送信するように第２のデバイス１０４のマイクロプロセッサー２０２に指示する。ＮＯＴＩＦＹリクエストは、第１の隣接デバイス３００に接続されたその他のデバイス（もしあれば）についてのユーザー識別子および関連付けられたＩＰアドレスを有するｐｅｅｒフィールド７１６を含んでいてもよい。第１のデバイス１０２は、ＮＯＴＩＦＹリクエストの受け取りの際に、第２のデバイス１０４についてのエントリー５０８中のｉｓＲｏｕｔｅｒフィールドを、デバイスが今やクライアントルーターモードに設定されていることを示す「ＴＲＵＥ」に設定する。ブロック８２２はまた、ＮＯＴＩＦＹリクエストの確認を待つようにマイクロプロセッサー２０２に指示する。
【００７６】
クライアントルータープロセス８００におけるこの段階において、第２のデバイス１０４は、アクセスポイントモードにある２つのデバイス（第１のデバイス１０２および第１の隣接デバイス３００）と関連付け、かつ、デバイス間の現在の接続リスティングを交換し、各アクセスポイントデバイスが各アクセスポイントに接続されたデバイスだけでなく、その他のアクセスポイントに接続されたデバイスをも認識するようにした。したがって、第１のデバイス１０２上の更新された接続リスティングは、初期のネットワーククラスター１００を越えて延びる統合ネットワーククラスターについての接続を定義する。
【００７７】
クライアントルータープロセス８００はブロック８２４において継続し、該ブロック８２４は、第２のデバイス１０４をクライアントルーターモードに設定するようにマイクロプロセッサー２０２に指示し、ここでは、デバイスがデータトラフィックを受け取り、第１のデバイス１０２についてブロック８０６において配分され、かつ、第１の隣接デバイス３００についてブロック８１６において配分された転送キューの１つ以上にデータを書き込む。受け取られるデータトラフィックは概して、行先ユーザー識別子（ｕｕｉｄ）を有するであろう。第２のデバイス１０４は、ユーザー識別子が接続リスティング５２０中に現れるか否かを判定し、かつ、見出されれば、ｎｅｘｔｈｏｐフィールド（すなわち、ユーザー識別子と関連付けられたデバイスに到達するのに用いられてもよい、アクセスポイントモードにあるデバイスのＩＰアドレス）における値に対応するキューにデータを書き込む。
【００７８】
不揮発性フラッシュメモリー２１０のキュー位置２４６中のキューは、制限されたメモリーサイズを配分されるかも知れず、かつ、重いデータトラフィックが受け取られれば特に、一杯になるかも知れない。この実施形態では、切替時間がまた、キューが一杯であるか否かに関わらず、アクセスポイントモードにあるデバイス間の切替のために定義される。ブロック８２６において、配分されたキューが一杯ではなく、かつ、切替時間が満了していなければ、マイクロプロセッサー２０２はブロック８２４に戻るように指示され、かつ、第２のデバイス１０４はルーティングオペレーションを継続する。ブロック８２６において、配分されたキューのいずれかが一杯であるか、または、切替時間が満了していれば、マイクロプロセッサー２０２はブロック８２８へと向かうように指示される。ブロック８２８は、第２のデバイス１０４が現在のアクセスポイントデバイス（すなわち、第１のデバイス１０２）からの接続を断ち、かつ、別のアクセスポイントデバイスに関連付け、かつ、接続することを引き起こすようにマイクロプロセッサー２０２に指示する。例えば、第１の隣接デバイス３００についてのキューが一杯であれば、第２のデバイス１０４のマイクロプロセッサー２０２は、第１のデバイスに接続するように指示される。切替時間が満了すれば、マイクロプロセッサー２０２は、第２のデバイス１０４が接続リスティング中に現れる次のアクセスポイントデバイス（すなわち、接続リスティング５２０におけるｉｓＭａｓｔｅｒフィールド中のＴＲＵＥ値によって識別された）に接続されることを引き起こしてもよい。その後、ブロック８３０が、例えば第１の隣接デバイス３００との接続が成功裡に完了したか否かを判定するようにマイクロプロセッサー２０２に指示する。例えば第１の隣接デバイス３００が範囲外に移動したこと、または、ネットワーククラスター１００からの接続を断ったことに起因して、ブロック８３０において接続が成功裡に完了していなければ、マイクロプロセッサー２０２は図８Ｃにおけるブロック８３４へと向かうように指示される。ブロック８３０において接続が成功裡に完了していれば、マイクロプロセッサー２０２はブロック８３２へと向かうように指示され、かつ、第１の隣接デバイス３００についての待機中のデータが送信され、かつ、マイクロプロセッサーはブロック８２４へと向かうように指示される。その後、ルーターオペレーションはブロック８２４において継続するが、第２のデバイス１０４は今や第１の隣接デバイス３００に接続されており、かつ、第１の隣接デバイスを介してデータトラフィックを受け取り、かつ、アクセスポイントモードにあるその他のデバイス（第１のデバイス１０２のような）についてのキューにデータを書き込む。
【００７９】
第１の隣接デバイス３００は、クライアントルーターモードにあるか否かに関わらず、クライアントモードにある複数のデバイスに接続されていてもよい。例えば、第２の隣接デバイス３０２がクライアントモードに設定されてもよく、かつ、第１の隣接デバイス３００に接続されてもよい。したがって、第１の隣接デバイス３００と第２の隣接デバイス３０４とは第２の隣接ネットワーククラスター３０４を形成し、かつ、ネットワーククラスター１００と隣接ネットワーククラスターとは、統合ネットワーククラスター３０６を形成する。第３の隣接デバイス３０８のようなアクセスポイントモードにある任意のその他のデバイスが第１のデバイス１０２の範囲内にあれば、第１のデバイスはまた、統合クラスターネットワーク３０６をさらに延ばす、これらデバイスについてのルーターとして作用してもよい。
【００８０】
図８Ｃを参照すると、図８Ａにおけるブロック８１０およびブロック８１４ならびに図８Ｂにおけるブロック８２０およびブロック８３０において発生するかも知れない、アクセスポイントモードにあるデバイスへの不成功に終わった接続ならびに／またはＮＯＴＩＦＹリクエストへの応答の欠如（すなわち、アクセスポイントデバイスから受け取られた接続リスティングがない）を取り扱う、クライアントルータープロセス８００の一部が示されている。接続の失敗またはアクセスポイントモードにあるデバイスからの応答の受け取りの失敗は、無線範囲外に移動したアクセスポイントデバイス、アプリケーション（図４におけるブロック４０２において起動された）を終了したアクセスポイントデバイス、もしくは、クライアントモードへと切り替わったアクセスポイントデバイス、または、その他の通信障害によって引き起こされるかも知れない。ブロック８３４は、アクセスポイントモードにある任意のその他のデバイスが接続されたアクセスポイントリスティング中に残っているか否かを判定するように第２のデバイス１０４のマイクロプロセッサー２０２に指示する。接続されたアクセスポイントリスティングが空であれば、その時は、ブロック８３４は、図４におけるブロック４１０に戻るようにマイクロプロセッサー２０２に指示し、かつ、第２のデバイス１０４はアクセスポイントモードに設定され、かつ、ＳＳＩＤ「ＷＡＶＥ−＊」についてのネットワークサービスを提供する。
【００８１】
ブロック８３４において、接続されたアクセスポイントリスティング中に残っている少なくとも１つのアクセスポイントが未だに存在すれば、その時は、マイクロプロセッサー２０２はブロック８３６へと向かうように指示され、該ブロック８３６は、第２のデバイス１０４が、接続されたアクセスポイントリスティング中の別のアクセスポイントデバイスと関連付け、かつ、接続することを引き起こす。その後、ブロック８３８は、接続が成功裡に完了したか否かを判定するようにマイクロプロセッサー２０２に指示し、その場合、マイクロプロセッサーは図６におけるブロック６１６へと向かうように指示され、かつ、クライアントモードにおける通常のネットワークオペレーションが再開する。ブロック８３８において接続が成功裡に完了しなければ、その時は、プロセスはブロック８４０において継続し、該ブロック８４０は、アクセスポイントデバイスについての接続されたアクセスポイントリスティング中のエントリーを除去するようにマイクロプロセッサー２０２に指示する。ブロック８３８はまた、除去されたアクセスポイントデバイスに対応するｎｅｘｔｈｏｐアドレスを有するアクセスポイントデバイスと関連付けられた接続リスティング５２０中の任意のルーティングエントリーを除去するようにマイクロプロセッサーに指示する。その後、ブロック８４０はブロック８３４に戻るようにマイクロプロセッサー２０２に指示し、かつ、プロセス８００のブロック８３４〜ブロック８４０が繰り返される。したがって、第２のデバイス１０４は、未だに到達可能であるアクセスポイントデバイスが見出されるまで、または、接続されたアクセスポイントリスティングが空になるまで、接続されたアクセスポイントリスティング中のアクセスポイントデバイスと関連付け、かつ、接続することを試みる。接続されたアクセスポイントリスティングが空である時、第２のデバイス１０４はもやはネットワーククラスター１００へのいかなる接続も有さず、したがってデバイスは、アクセスポイントモードに設定されてネットワーククラスターを再確立する。
【００８２】
図３に戻ると、上記で開示された実施形態は、ネットワーククラスター１００、隣接ネットワーククラスター３０４を確立し、かつ、クラスターを統合して統合ネットワーククラスター３０６を形成する際の種々のデバイスについての機能を詳述する。広い領域（少なくともいくつかのデバイスがその他のデバイスの無線範囲外であるが統合ネットワーククラスター３０６を介して到達可能である）にわたって接続された複数のデバイスを含むようにネットワーククラスター３０６を延ばすために、さらなるネットワーククラスターが統合されてもよい。図９を参照して、統合ネットワーククラスター３０６上の特定のデバイスの位置を突き止めることに関連する追加機能が説明される。例えば、デバイス１０６は、第２の隣接デバイス３０２に接触することを希望するかも知れない。デバイス１０６が統合ネットワーククラスター３０６上の第２の隣接デバイス３０２に先行して遭遇していれば、デバイス１０６上に格納された接続リスティング中に第２の隣接デバイスについてのエントリー（すなわち、ｕｕｉｄ３２５）が存在するであろう。しかしながら、接続リスティング中に第２の隣接デバイス３０２についてのエントリーが存在しなければ、デバイス１０６は、第２の隣接デバイス３０２と関連付けられた情報を含むＦＩＮＤリクエストを生成し、かつ、第１のデバイス１０２に送信する。図７に戻ると、メッセージプロトコル７００は、ｐｅｅｒＩＤフィールド７１０を含んでおり、該ｐｅｅｒＩＤフィールド７１０は、それが統合ネットワーククラスター３０６上での位置を突き止めることが所望される意図した受信デバイスのユーザー識別子についての値を保持する。メッセージプロトコル７００はまた、ｄｉｓｃｏｖｅｒｙ＿ｔｙｐｅフィールド７１２を含んでおり、該ｄｉｓｃｏｖｅｒｙ＿ｔｙｐｅフィールド７１２は、ＤｉｓｃｏｖｅｒＴｙｐｅ目録７２６とともに、それがネットワーククラスター１００に接続されたデバイス上で発見することが所望されるコンテンツのタイプを必要に応じて定義する。メッセージプロトコル７００はさらに、リクエストが繰り返しのループしたディスカバリープロセスを引き起こすことを防止するために、検索されるべきホップの数（例えば、８ホップ）を制限するｌｉｍｉｔフィールド７１４を含んでいる。ｐｅｅｒＩＤフィールド７１０は、規則「繰り返しである」で始まり、したがって、それが接触することが所望されるいくつかのユーザー識別子を含んでいてもよく、したがって、ｕｕｉｄによる複数のその他のデバイスについての同時検索を可能にする。したがって、第２の隣接デバイス３０２に接触するために、ＦＩＮＤメッセージは値［５，２７８，３２５，０，８］を含んでおり、ここで「５」はＦＩＮＤリクエストのｔｙｐｅであり、デバイス１０６についてのｕｕｉｄは２７８であり、かつ、位置が突き止められているデバイスについてのｕｕｉｄは３２５であり、かつ、「０」はディスカバリータイプをネットワーククラスター１００上の別のユーザーについてのものとして定義し、かつ、ｌｉｍｉｔは「８」に設定される。
【００８３】
図９を参照すると、概して９００において、ＦＩＮＤリクエストを処理するために第１のデバイス１０２によって実行されるプロセスが示されている。ファインドプロセス９００はブロック９０２において開始され、該ブロック９０２は、クライアントモードに設定され、かつ、第１のデバイスに接続された発信デバイス１０６からＦＩＮＤリクエストを受け取るように第１のデバイス１０２のマイクロプロセッサー２０２に指示する。
【００８４】
その後、ブロック９０４が、ＦＩＮＤリクエストから意図した受信デバイスのｕｕｉｄを判定するように第１のデバイス１０２のマイクロプロセッサー２０２に指示する。その後、ブロック９０６は、意図した受信デバイス（すなわち、この場合は第２の隣接デバイス３０２）のｕｕｉｄが接続リスティング５００中にあるか否かを判定するようにマイクロプロセッサー２０２に指示する。この場合、ｕｕｉｄ３２５は接続リスティング５２０中の５１２において現れ、かつ、ブロック９０６はブロック９０８へと向かうようにマイクロプロセッサー２０２に指示する。ブロック９０８は、ｕｕｉｄ３２５についての接続リスティングエントリー５１２（図５に示されている）におけるｌａｓｔｈｅａｒｄ時間が満了したか否かを判定するようにマイクロプロセッサー２０２に指示する。１つの実施形態では、接続リスティング５２０中のエントリーについて、満了時間が予め定められていてもよい。さらに、アクセスポイントモードにある各デバイスは、接続リスティング中にエントリーを有するデバイスからメッセージが受け取られる時に、現在の時間へとｌａｓｔｈｅａｒｄフィールドを更新するように設定されていてもよい。ブロック９０８においてｕｕｉｄ３２５についてのｌａｓｔｈｅａｒｄ時間が満了していれば、第１のデバイス１０２は、統合ネットワーククラスター３０６上に第２の隣接デバイス３０２へのルートを発見するためのプロセス１０００を開始する。プロセス１０００は、図１０を参照して以下で説明される。１つの実施形態では、満了時間は設定可能であってもよく、かつ、約１０分〜１時間の範囲内であってもよい。
【００８５】
ブロック９０８において、ｕｕｉｄ３２５についてのｌａｓｔｈｅａｒｄ時間がまだ満了していなければ、プロセスはブロック９１０において継続し、該ブロック９１０は、デバイス１０６にＦＩＮＤ応答メッセージを送信するようにマイクロプロセッサー２０２に指示する。したがって、この場合、ネットワーククラスター１００上で最近遭遇されたｕｕｉｄ３２５を有するデバイスは、未だに接続されていると推定されてもよい。
【００８６】
図７を参照すると、メッセージプロトコル７００におけるＦＩＮＤ応答メッセージは、ｔｙｐｅフィールド７０４と、ｕｕｉｄフィールド７０６と、ｐｅｅｒフィールド７１６とを含んでいる。ｐｅｅｒフィールド７１６は、規則「繰り返しである」で始まり、かつ、７２４において定義されたタイプを有する。したがって、各ｐｅｅｒフィールド値は、ｕｕｉｄと、意図した受信デバイスへとデータをルーティングするためのＩＰアドレスａｄｄｒとを含んでいる。したがって、第２の隣接デバイス３０２については、ＦＩＮＤ応答は値［６，１９４，３２５，１９２１６８０００００１］を含んでおり、ここで最後の値は、第２の隣接デバイス３０２へとデータをルーティングするためのｎｅｘｔｈｏｐアドレスを表す第１のデバイス１０２のＩＰアドレスである。図５に戻ると、第１のデバイス１０２についての接続リスティング５００中のエントリー５１２は、クライアントルーターとして作用する第２のデバイス１０４のＩＰアドレスである１９２．１６８．０．１０として列挙されたｎｅｘｔｈｏｐを有する。しかしながら、ブロック９１０において、第１のデバイス１０２は、それ自体のＩＰアドレスをデータの送信用のｎｅｘｔｈｏｐとして第２のデバイス３０２に送信する。なぜなら、デバイス１０６がまず、あらゆるデータをそれが第２の隣接デバイス３０２へとルーティングされ得る前に第１のデバイスへと送信しなければならないからである。デバイス１０６がＦＩＮＤ応答を受け取る時、その接続リスティングは、第２の隣接デバイス３０２についてのエントリーを含むように更新される。したがって、デバイス１０６は、第２の隣接デバイス３０２へと送信するための第１のデバイス１０２のｎｅｘｔｈｏｐＩＰアドレスを保存する。
【００８７】
ブロック９０６において、意図した受信デバイスのｕｕｉｄが接続リスティング５００中に見出されなければ、ブロック９０６は、統合ネットワーク３０６上に第２の隣接デバイス３０２へのルートを発見するための図１０のプロセス１０００を実行するようにマイクロプロセッサー２０２に指示する。示されている実施形態では、隣接ネットワーククラスター３０４とネットワーククラスター１００とが統合された時、第１のデバイスは既に第２の隣接デバイス３０２についての情報を受け取っていた。しかしながら、クラスターが統合されており、したがって、接続リスティング５００中にエントリー５１２が見出されなかった時に、第２の隣接デバイス３０２が第１の隣接デバイス３００に接続されていなければ、説明の残りは続行する。
【００８８】
図１０を参照すると、ルートディスカバリープロセスは、図１０中の１０００において示されている。プロセス１０００はブロック１００２において開始され、該ブロック１００２は、統合ネットワーククラスター３０６上の第２の隣接デバイス３０２の位置を突き止めるためのＤＩＳＣＯＶＥＲリクエストを生成および送信するように第１のデバイス１０２のマイクロプロセッサー２０２に指示する。図７に戻ると、ＤＩＳＣＯＶＥＲリクエストは、ＦＩＮＤリクエストと同一のシンタックスを有し、かつ、ｔｙｐｅフィールド７０４と、ｕｕｉｄフィールド７０６と、ｐｅｅｒＩＤフィールド７１０と、ｄｉｓｃｏｖｅｒｙ＿ｔｙｐｅフィールド７１２と、ｌｉｍｉｔフィールド７１４とを含んでいる。しかしながら、ＤＩＳＣＯＶＥＲリクエストは、それがリクエストを受け取るアクセスポイントに接続されたすべてのピアのリスティングを引き出すという点で異なっている。ＦＩＮＤリクエストは、ｕｕｉｄによって特定のデバイス（単数）またはデバイス（複数）を検索することを意図する。したがって、ＤＩＳＣＯＶＥＲリクエストは、値［３，１９４，３２５，０，８］を有していてもよく、かつ、リクエストは、ｔｒｕｅに設定されたｉｓＲｏｕｔｅｒフラグを有する、第１のデバイス１０２に接続されたすべてのクライアントデバイスに送信され、該クライアントデバイスは次に、アクセスポイントモードにある接続されたデバイスへとＤＩＳＣＯＶＥＲリクエストを転送する。ＤＩＳＣＯＶＥＲリクエストはまた、リクエストについての生存時間（ＴＴＬ）として用いられる応答中に含まれるタイムスタンプを有する。その後、プロセス１０００はブロック１００４において継続し、該ブロック１００４は、送信されたＤＩＳＣＯＶＥＲリクエストに応答してＤＩＳＣＯＶＥＲ応答が受け取られたか否かを判定するように第１のデバイス１０２のマイクロプロセッサー２０２に指示する。ＤＩＳＣＯＶＥＲ応答がまだ受け取られていなければ、ブロック１００４はタイムアウト期間の間、応答を待ち続けるようにマイクロプロセッサー２０２に指示し、その後、マイクロプロセッサーはブロック１００２に戻るように指示され、かつ、ＤＩＳＣＯＶＥＲリクエストが再送信される。
【００８９】
図１１を参照すると、ＤＩＳＣＯＶＥＲリクエストを受け取る各デバイスは、プロセス１１００を実行する。ディスカバリー応答プロセス１１００はブロック１１０２において開始され、該ブロック１１０２は、ＤＩＳＣＯＶＥＲリクエストを受け取り、かつ、リクエスト中の行先ｕｕｉｄを判定するように受信デバイスのマイクロプロセッサー２０２に指示する。その後、ブロック１１０４が、デバイス接続リスティング中に行先ｕｕｉｄについてのエントリーが格納されているか否かを判定するようにマイクロプロセッサー２０２に指示する。行先ｕｕｉｄについてのエントリーが存在すれば、その時は、プロセスはブロック１１０６において継続し、該ブロック１１０６は、ＤＩＳＣＯＶＥＲ応答を生成および送信するようにマイクロプロセッサー２０２に指示する。図７を参照すると、ＤＩＳＣＯＶＥＲ応答はＦＩＮＤ応答と同一の形式を有し、かつ、行先についてのｕｕｉｄ値とａｄｄｒ値とを伴うｐｅｅｒフィールド７１６を有する。ａｄｄｒ値は、デバイス自体のアドレスに設定される。なぜなら、ＤＩＳＣＯＶＥＲリクエストに応答するデバイスが第２の隣接デバイス３０２についてのエントリーを有し、したがって、接続リスティング中のエントリーに基づいて行先ｕｕｉｄについての任意のデータをルーティングし得るだろうからである。ＤＩＳＣＯＶＥＲ応答は、発信デバイス（この場合、第１のデバイス１０２）に戻るように送信される。いくつかの場合、ＤＩＳＣＯＶＥＲリクエストは、いくつかのクライアントルーターおよびアクセスポイントをトラバースしたであろうし、リクエストが陳腐になることを回避するために、受け取りデバイスはタイムスタンプフィールドを検査し、かつ、所定の生存時間（ＴＴＬ）に基づいてリクエストが処理されるべきか否かを判定するであろう。同様に、ＤＩＳＣＯＶＥＲ応答は、発信デバイスに戻るように送信される時、いくつかのクライアントルーターおよびアクセスポイントをトラバースしてもよく、かつ、所定の時間枠内で行先ｕｕｉｄについてのディスカバリーの繰り返しを防止するために応答にタイムスタンプが追加される。
【００９０】
図１０に戻ると、ブロック１００４において、マイクロプロセッサー２０２が、先行して送信されたＤＩＳＣＯＶＥＲリクエストに対応するＤＩＳＣＯＶＥＲ応答が受け取られたと判定すれば、その時は、マイクロプロセッサーはブロック１００６へと向かうように指示される。ブロック１００６は、第１のデバイス１０２上の接続リスティング５００（図５に示されている）を、ＤＩＳＣＯＶＥＲ応答に基づいて第２の隣接デバイス３０２についてのエントリー５１２を含み、かつ、現在の時間をｌａｓｔｈｅａｒｄ時間として含むように更新するようにマイクロプロセッサー２０２に指示する。その後、ブロック１００６はプロセス９００のブロック９１０へと向かうようにマイクロプロセッサー２０２に指示し、かつ、該ブロック９１０は、デバイス１０６へのＦＩＮＤ応答メッセージの送信を引き起こす。その後、デバイス１０６は、統合ネットワーククラスター３０６上の第２の隣接デバイス３０２に到達し得るであろう。
【００９１】
図４に戻ると、ブロック４０４において、第１のデバイス１０２によってゲートウェイプロセスが必要に応じて実行されてもよい。ゲートウェイプロセスは、ＳＳＩＤ「ＷＡＶＥ−＊」と関連付けられていないセルラーデータネットワークまたはその他の無線アクセスポイントへの接続を可能にする。図１２を参照すると、ゲートウェイプロセスは１２００において概して示されている。ゲートウェイプロセス１２００はブロック１２０２において開始され、該ブロック１２０２は、デバイス上でインターネットへのセルラーデータ接続が利用可能であるか否かを判定するようにマイクロプロセッサー２０２に指示する。セルラーデータ接続が利用可能であれば、その時は、ブロック１２０４が、不揮発性フラッシュメモリー２１０のシステム設定位置２４８におけるＣＥＬＬフラグをＴＲＵＥに設定し、かつ、キュー位置２４６中のインターネットキューを配分するようにマイクロプロセッサー２０２に指示する。その後、プロセスはブロック１２０６において継続し、該ブロック１２０６は、デバイス上でインターネットへの無線（ＷｉＦｉ）データ接続が利用可能であるか否かを判定するようにマイクロプロセッサー２０２に指示する。ＷｉＦｉデータ接続が利用可能であれば、その時は、ブロック１２０８が、不揮発性フラッシュメモリー２１０のシステム設定位置２４８におけるＷＩＦＩフラグをＴＲＵＥに設定し、かつ、キュー位置２４６中のインターネットキューを配分するようにマイクロプロセッサー２０２に指示する。その後、ブロック１２０８は、プロセス４００のブロック４０６に戻るようにマイクロプロセッサー２０２に指示する。ブロック１２０６においてＷｉＦｉ接続が利用可能でなければ、その時は、ブロック１２０６は、ブロック４０６に戻るようにマイクロプロセッサー２０２に指示する。
【００９２】
図６に戻ると、ブロック６１６に続いて、マイクロプロセッサー２０２は、図１３中１３００において示されるゲートウェイプロセスの別の一部を実行するように必要に応じて支持される。図１３を参照すると、ゲートウェイプロセス１３００はブロック１３０２において開始され、該ブロック１３０２は、不揮発性フラッシュメモリー２１０のシステム設定位置２４８におけるＷＩＦＩまたはＣＥＬＬフラグのいずれかがＴＲＵＥに設定されているか否かを判定するようにマイクロプロセッサー２０２に指示する。いずれかのフラグがＴＲＵＥであれば、その時は、ブロック１３０４が、インターネット転送タイマーが満了したか否かを判定するようにマイクロプロセッサー２０２に指示する。インターネット転送タイマーは、インターネットキューにおける最後のデータ転送以来の時間を記録し、かつ、一旦タイマーが所定の限界に到達すれば、ブロック１３０４は、ブロック１３０６へと向かうようにマイクロプロセッサー２０２に指示する。ブロック１３０６は、現在接続されているアクセスポイントデバイスからの接続を断ち、かつ、インターネットゲートウェイを有する適用可能なセルラーまたはＷｉＦｉネットワークに接続するようにマイクロプロセッサー２０２に指示する。ブロック１３０６はまた、適用可能なネットワークにわたってインターネットキュー中のデータを送信するようにマイクロプロセッサー２０２に指示する。その後、ブロック１３０６は、ブロック６１６に戻り、ネットワークオペレーションを再開するようにマイクロプロセッサー２０２に指示する。ブロック１３０２においてＷｉＦｉまたはセルラーインターネット接続が存在しないか、または、ブロック１３０４において転送時間が満了していなければ、マイクロプロセッサー２０２は、ブロック６１６に戻るように指示される。
【００９３】
ゲートウェイプロセスは、インターネット接続を有するデバイスが、統合ネットワーククラスター３０６に接続されていないかも知れないデバイスに到達することを可能にする。
【００９４】
図７に戻ると、メッセージプロトコル７００はまた、タイプフィールド７（ＤＡＴＡ）と、送信デバイスユーザー識別子に対応する、必要とされるｕｕｉｄと、７２８において定義される「Ｄａｔａ」のタイプを有する、繰り返されるデータフィールド７１８とを含むデータメッセージタイプを提供する。この実施形態では、Ｄａｔａタイプは、必要とされるフィールドである、送信されているデータコンテンツの長さを保持するためのｌｅｎｇｔｈ、データバイトペイロードを保持するｃｏｎｔｅｎｔ、および、ＤｉｓｃｏｖｅｒＴｙｐｅ目録７２６に関連するデータを文章、画像、映像、音声などとして定義するｄａｔａ＿ｔｙｐｅを含む、いくつかのフィールドを含んでいる。この実施形態では、Ｄａｔａタイプはまた、必要に応じてデータを一連のメッセージに分割することによって大きいデータファイルを送信するための、ｓｅｑ＿ｎｕｍｂｅｒフィールドとｏｆｆｓｅｔフィールドとを含んでいる。ｓｅｑ＿ｎｕｍｂｅｒは、受信デバイスにおけるデータファイルの再組立のための一連のメッセージの順番を識別する。ｏｆｆｓｅｔフィールドは、メッセージ内のコンテンツペイロードのバイト位置を定義する。
【００９５】
したがって、データは、メッセージプロトコル７００にしたがってメッセージのデータフィールド７１８内に包まれてもよく、かつ、ネットワーククラスター１００中の送信デバイスからメッセージ中のｕｕｉｄによって識別された受信デバイスへと送信されてもよい。その他の実施形態では、リクエスト／応答メッセージプロトコル７００は、ネットワーククラスター１００を構成するデバイス間の接続の確立および維持の間にメッセージを交換するのに用いられてもよく、一方で、実際のデータ送信は、インターネットプロトコルスイートの一部を形成する別のデータプロトコル（単数）またはプロトコル（複数）（ＵＤＰ、ＴＣＰ、ＲＴＰなどのような）を用いて起こってもよい。
【００９６】
図３では、統合ネットワーククラスター３０６は、ＷｉＦｉ（すなわち、ＩＥＥＥ８０２．１１無線ネットワーク）を用いて確立されるものとして説明された。しかしながら、上記で注記したように、無線ネットワークは、Ｂｌｕｅｔｏｏｔｈおよび／またはＷｉ−Ｆｉダイレクトのようなその他の無線ネットワーク化プロトコルを用いて確立されてもよい。いくつかのデバイスの無線ラジオは、クライアントモードおよびホットスポットモードで同時に作動することを製造業者によって制限されているかも知れない。図２中の２００において示されるようなＩＥＥＥ８０２．１１無線ネットワーク化デバイスはまた、概して、アクセスポイントモードに設定された２つの異なるデバイスに同時に接続することを制限される。例えば図３では、第１のデバイス１０２と第１の隣接デバイス３００とが通信範囲にあったとしても、それらは、アクセスポイントモードに設定されていることに起因して、ＩＥＥＥ８０２．１１ネットワーク化プロトコルを用いた接続を確立し得ないかも知れない。図３に示されている実施形態では、第１のデバイス１０２と第１の隣接デバイス３００とは、第２のデバイス１０４を介して接続されており、該第２のデバイス１０４は、図８に示されているクライアントルータープロセス８００を実行して、第１のデバイス１０２に接続されることと、第１の隣接デバイス３００に接続されることとの間で切り替わる（両方ともアクセスポイントモードに設定されている）。
【００９７】
図１４を参照すると、１４００において、代替的な実施形態にしたがう統合ネットワーククラスター３０６の確立のためのプロセスが示されている。プロセスはブロック１４０２において開始され、該ブロック１４０２は、無線ラジオ２１６を作動させるように第２のデバイス１０４のマイクロプロセッサー２０２（図２）に指示する。多くのデバイスは、Ｂｌｕｅｔｏｏｔｈ、ＷｉＦｉおよび／またはＷｉＦｉダイレクト通信が可能である無線ラジオ（単数）または無線ラジオ（複数）を有する。その後、ブロック１４０４が、ＷｉＦｉダイレクト接続を待つその他のデバイスをスキャンするように無線ラジオ２１６を設定するようにマイクロプロセッサー２０２に指示する。その後、プロセス１４００はブロック１４０６において継続し、該ブロック１４０６は、ＷｉＦｉダイレクト接続を待つ任意のデバイスが検出されたか否かを判定するようにマイクロプロセッサー２０２に指示する。ＷｉＦｉダイレクト接続を待つデバイスが検出されれば、ブロック１４０６はブロック１４１２へと向かうようにマイクロプロセッサー２０２に指示し、該ブロック１４１２は、その他のデバイスとのＷｉＦｉダイレクト接続を完了させるようにマイクロプロセッサーに指示する。
【００９８】
Ｗｉ−Ｆｉダイレクトプロトコルの使用は、デバイス１０４が別のデバイス（デバイス１０２およびデバイス３００のような）と、これらデバイスによって提供される無線アクセスポイントを通してではなく、直接Ｗｉ−Ｆｉ接続を確立することを可能にする。上記のＷｉＦｉ接続を作り出す場合のように、デバイスはＳＳＩＤブロードキャスト（すなわち、「Ｗａｖｅ−＊」）を実行する。しかしながらこの場合、ＳＳＩＤブロードキャストはまた、パスコードデータを含んでいる。統合ネットワーククラスター３０６を確立するための従来のＷｉＦｉ接続は、例えば不揮発性フラッシュメモリー２１０のアプリケーション位置２４２における各デバイス上に格納されているかも知れない単一のパスコードに基づいて作り出されてもよい。ＷｉＦｉダイレクト接続の実施形態では、ブロードキャストパスコードは、無線範囲内にあるかも知れないその他のデバイスの間のその他のＷｉＦｉおよびＷｉＦｉダイレクト接続から区別するためにランダムな数字を含むように生成されてもよい。したがって、ＳＳＩＤブロードキャストにおけるパスコードの提供は、ＷｉＦｉダイレクト接続がパスコードの事前知識なしで続行することを可能にし、したがって、接続を確立する際のユーザーインタラクションの必要性を除去する。
【００９９】
ブロック１４１２における接続の完了に続いて、その後、マイクロプロセッサー２０２は図４におけるプロセス４００に戻り、統合ネットワーククラスター３０６を結合させるために上記したようなブロック４１２〜ブロック４２８を実行するように指示される。
【０１００】
図１５を参照すると、この実施形態では、したがって、統合ネットワーククラスター３０６の確立は、ＷｉＦｉダイレクト接続（図１５において線１５００として示されている）を介して第１のデバイスに接続する第２のデバイス１０４によって続行してもよい。ブロック１４０４、ブロック１４０６およびブロック１４１２はまた、第２のデバイス１０４が第１の隣接デバイス３００とのＷｉ−Ｆｉダイレクト接続を完成させることを引き起こすように実行されてもよい。この場合、第２のデバイス１０４は、第１の隣接デバイス３００に第２のリンク１５０２を提供してもよく、したがって、ネットワーククラスター１００と第２の隣接ネットワーククラスター３０４との間のＷｉ−Ｆｉダイレクトリンクを提供する。デバイス１０４は、クライアントとして多数のデバイス（すなわち、デバイス１０２およびデバイス３００）に接続することを可能にするＷｉ−Ｆｉダイレクトマスターモードに設定されるであろう。デバイス１０２およびデバイス３００は、それぞれデバイス１０６および第２の隣接デバイス３０２への接続を提供するためのアクセスポイントモードにあるままである。デバイス１０２とデバイス３００とがアクセスポイントモードに設定されている時、オペレーティングシステムは、デバイスがマスターモードにある第２のデバイス１０４のＷｉ−Ｆｉダイレクトクライアントであることを制限するかも知れない。いくつかのデバイスの無線ラジオ２１６は、アクセスポイントとして設定されることとＷｉ−Ｆｉダイレクトクライアントとして別のデバイスに未だに接続されることとを同時になし得るデュアル−モードＷｉＦｉモジュールを用いて実装されてもよい。このことは、従来のＷｉＦｉ接続下において第２のデバイス１０４が図８に示されているクライアントルータープロセス８００のブロック８０８における切断（クラスター１００とクラスター３００との間のデータスループットを遅くする）を実行することの必要性を有効に除去する。
【０１０１】
図１４に戻ると、ブロック１４０６においてＷｉＦｉダイレクト接続を待つデバイスが検出されなければ、マイクロプロセッサーはブロック１４０８へと向かうように指示され、ここでは、無線ラジオ２１６はＢｌｕｅｔｏｏｔｈ接続を待つその他のデバイスをスキャンするように設定される。その後、ブロック１４１０が、Ｂｌｕｅｔｏｏｔｈ接続を待つ任意のデバイスが検出されたか否かを判定するようにマイクロプロセッサー２０２に指示する。Ｂｌｕｅｔｏｏｔｈ接続を待つデバイスが検出されれば、ブロック１４１０は、ブロック１４１２へと向かい、その他のデバイスとのＢｌｕｅｔｏｏｔｈ接続を完了させるようにマイクロプロセッサー２０２に指示する。その後、マイクロプロセッサー２０２は図４におけるプロセス４００に戻り、上記したようにブロック４１２〜ブロック４２８を実行するようにマイクロプロセッサー２０２に指示する。
【０１０２】
ブロック１４１０においてＢｌｕｅｔｏｏｔｈ接続を待つデバイスが検出されなければ、マイクロプロセッサーは、図４におけるプロセス４００に戻り、上記のようにＷｉＦｉ接続のブロック４０６〜ブロック４１２を実行するように指示される。プロセス４００のブロック４０６〜ブロック４１２は、上記のようにデバイスがＷｉＦｉアクセスポイントモードに設定されたその他のデバイスをスキャンすることと、アクセスポイントモードに設定されることとを交互に繰り返すことを引き起こすクラスター形成プロセス４００の一部を実行するようにマイクロプロセッサー２０２に指示する。
【０１０３】
再び図１５を参照すると、したがって、統合ネットワーククラスター３０６の確立は、代替的には、第１のデバイス１０２および第１の隣接デバイス３００の両方にＢｌｕｅｔｏｏｔｈを介して（すなわち、接続１５００と接続１５０２との組み合わせを通して）接続する第２のデバイス１０４によって続行してもよい。
【０１０４】
図１７を参照すると、別の実施形態では、第１のデバイス１０２と第１の隣接デバイス３００とがＷｉ−Ｆｉアクセスポイントとして設定されること、および、Ｗｉ−Ｆｉダイレクトを介して互いと同時に接続することをそれらの各オペレーティングシステムを介して禁止されているかも知れない一方で、これらデバイスは未だに、ブロック１４０８、ブロック１４１０およびブロック１４１２を実行することによってＢｌｕｅｔｏｏｔｈを介して同時に接続して、線１５０４によって示されている直接Ｂｌｕｅｔｏｏｔｈ接続を確立し得てもよい。Ｂｌｕｅｔｏｏｔｈ接続１５０４は、第２のデバイス１０４を介して確立された接続１５００および接続１５０２と同時に確立されてもよい（Ｗｉ−Ｆｉダイレクト、Ｂｌｕｅｔｏｏｔｈを通すか、または、デバイス１０２およびデバイス３００によって提供されるアクセスポイントへの切替Ｗｉ−Ｆｉ接続を通すかのいずれか）。したがって、Ｂｌｕｅｔｏｏｔｈ接続１５０４は、デバイス１０２とデバイス３００との間の追加同時接続（デバイスがクライアント１０６およびクライアント３０２にネットワークサービスを提供するためのアクセスポイントモードにあるままであることを可能にする）を提供する。
【０１０５】
図１６を参照すると、１６００において、Ｂｌｕｅｔｏｏｔｈを介して接続するための図１４におけるプロセス１４００のブロック１４０８〜ブロック１４１２を実装するように第１のデバイス１０２に指示するためのコードのブロックを描いたプロセスフローチャートがより詳細に示されている。プロセスはブロック１６０２において開始され、該ブロック１６０２は、ＲＦＣＯＭＭプロトコルを用いて、第１のデバイス１０２の無線ラジオ２１６をＢｌｕｅｔｏｏｔｈ通信用に設定するようにマイクロプロセッサー２０２に指示する。ＲＦＣＯＭＭプロトコルの下、ペアリングのためにユーザーインタラクションが必要とされず、このことは、接続を匿名で確立して統合ネットワーククラスター３０６を提供するための利点である。その他のＢｌｕｅｔｏｏｔｈ接続プロトコルは、キーペアリングまたは類似のオペレーションのようなユーザーインタラクションを必要とするかも知れない。しかしながら、ＲＦＣＯＭＭプロトコルは、デバイスであってそのチャンネルをその他のデバイスが接続のために待つ前記デバイスによるディスカバリーを提供しない。ＲＦＣＯＭＭプロトコルはまた、その他のデバイスのｕｕｉｄのディスカバリーを可能にしない。
【０１０６】
示されている実施形態では、ブロック１６０４が、第１のデバイス１０２の無線ラジオ２１６が、最初に利用可能なＢｌｕｅｔｏｏｔｈチャンネル上のその他のデバイスからのＢＴブロードキャストを待つように無線ラジオを設定することを引き起こすようにマイクロプロセッサー２０２に指示する。したがって、第１のデバイス１０２は、その他のデバイスからのディスカバリーブロードキャスト（それらが受け取られれば）を待つように設定される。デバイスは、複数の異なるチャンネル（Ａｎｄｒｏｉｄベースのオペレーティングシステムについては、典型的には７つのチャンネル）上で通信して、いくつかのその他のデバイスへの同時Ｂｌｕｅｔｏｏｔｈ接続を可能にし得てもよい。例えば、デバイスはＢｌｕｅｔｏｏｔｈを介して乗り物に接続されてもよく、かつ、同時にＢｌｕｅｔｏｏｔｈイヤピースまたは別のデバイスに接続されてもよく、したがって利用可能なチャンネルのうちの２つ以上を用いる。１つの実施形態では、各チャンネルは、共通の文字列で始まる所定のパターンと関連付けられ（例えば、「０１０１０１０１−０１０１−０１０１−０１０１−０１０１０１０１０１０」）、かつ、それぞれの後に続くチャンネルは１ずつ増える。したがって、第１のチャンネルはｕｕｉｄ「０１０１０１０１−０１０１−０１０１−０１０１−０１０１０１０１０１０１」と関連付けられ、第２のチャンネルはｕｕｉｄ「０１０１０１０１−０１０１−０１０１−０１０１−０１０１０１０１０１０２」と関連付けられ、以下同様に続く。
【０１０７】
その後、ブロック１６０６が、次の利用可能なチャンネルを選択するように第１のデバイス１０２のマイクロプロセッサー２０２に指示し、かつ、ブロック１６０８が、次の利用可能なＢｌｕｅｔｏｏｔｈチャンネル（例えば、「０１０１０１０１−０１０１−０１０１−０１０１−０１０１０１０１０１０２」）上のディスカバリーブロードキャスト用に無線ラジオ２１６を設定するようにマイクロプロセッサーに指示する。その後、プロセス１６００はブロック１６１０において継続し、該ブロック１６１０は選択されたチャンネル上で応答を待つようにマイクロプロセッサー２０２に指示する。ブロック１６１０において第１の隣接デバイス３００がチャンネル「０１０１０１０１−０１０１−０１０１−０１０１−０１０１０１０１０１０２」上で待っていれば、応答が受け取られ、かつ、ブロック１６１０は、ブロック１６１２へと向かうようにマイクロプロセッサー２０２に指示する。ブロック１６１２は、選択されたＢｌｕｅｔｏｏｔｈチャンネル（すなわち、チャンネル「０１０１０１０１−０１０１−０１０１−０１０１−０１０１０１０１０１０２」）を介した通信のために設定されるようにマイクロプロセッサー２０２に指示する。ブロック１６１２において接続が成功裡に完了すれば、Ｂｌｕｅｔｏｏｔｈ接続は、デバイス１０２とデバイス３００との間でロックされ、かつ、第１のデバイス１０２と第１の隣接デバイス３００との間の双方向データ通信を可能にする。第１のデバイス１０２と第１の隣接デバイス３００とは、アクセスポイントモードに設定され、かつ、それぞれクライアントデバイス１０６およびクライアントデバイス３０２のようなクライアントにＷｉＦｉネットワークにわたるサービスを提供し続けてもよい。したがって、第１のデバイス１０２と第１の隣接デバイス３００との間のＢｌｕｅｔｏｏｔｈ接続は、ネットワーククラスター１００と第２の隣接ネットワーククラスター３０４とを統合して統合ネットワーククラスター３０６を形成するための代替案を提供する。１つの実施形態では、その後、第２のデバイス１０４は、第１のデバイス１０２または第１の隣接デバイス３００のいずれか（両方とも、先行してデバイスの範囲内にあった）に接続し得る。したがって、第１のデバイス１０２と第１の隣接デバイス３００とは、リクエストに応答することと接続リスティングを提供することなどによって、図４中のブロック４１２〜ブロック４２８において概して示されているような機能を実行し続けてもよい。
【０１０８】
ブロック１６１０において第１の隣接デバイス３００がチャンネル「０１０１０１０１−０１０１−０１０１−０１０１−０１０１０１０１０１０２」上で待っていなければ、応答は受け取られないであろうし、かつ、ブロック１６１０は、ブロック１６１４へと向かうようにマイクロプロセッサー２０２に指示する。ブロック１６１４は、複数の利用可能なＢｌｕｅｔｏｏｔｈチャンネルのうちの最後のものが選択されたか否かを判定するようにマイクロプロセッサー２０２に指示する。まだ選択されていないＢｌｕｅｔｏｏｔｈチャンネルが残っていれば、ブロック１６１４は、ブロック１６０６に戻るようにマイクロプロセッサー２０２に指示し、かつ、次の利用可能なチャンネルが選択され、かつ、ブロック１６０８およびブロック１６１０が選択されたチャンネルについて繰り返される。
【０１０９】
ブロック１６１４において選択されるべきＢｌｕｅｔｏｏｔｈチャンネルが残っていなければ、マイクロプロセッサーは、プロセス１４００のブロック１４１２へと向かうように指示され、かつ、デバイスは、上記のように再びＢｌｕｅｔｏｏｔｈ接続を試みる前に、ＷｉＦｉおよびＷｉＦｉダイレクトプロトコルを用いてその他のデバイスとの接続を試み続けるであろう。
【０１１０】
別の代替的な実施形態では、第１のデバイス１０２と第１の隣接デバイス３００とがＢｌｕｅｔｏｏｔｈ範囲外であれば、第２のデバイス１０４は未だに、第１のデバイス１０２および第１の隣接デバイス３００の両方にＢｌｕｅｔｏｏｔｈを介して接続することによって、ネットワーククラスター１００と第２の隣接ネットワーククラスター３０４とを統合するためのブリッジとして作用してもよい。デバイス１０２およびデバイス３００のそれぞれとの接続は、概してプロセス１６００にしたがって個別に続行する。したがって、第２のデバイス１０４は、ネットワーククラスター１００およびネットワーククラスター３０４の統合を可能にするために利用可能な２つのＢｌｕｅｔｏｏｔｈチャンネルを有することを必要とする。
【０１１１】
上記の実施形態は、ネットワーク中のデバイスを接続するための枠組みを提供し、ここでは、個別のデバイスは、アクセスポイントモード、クライアントモードまたはクライアントルーターモードのようなオペレーションの異なるモードをとる。ネットワーククラスター１００中のデバイスは概して、ネットワーククラスター１００内のデバイスの利用可能性または利用可能性の欠如に基づいてオペレーションのこれらモードをとる。さらに、デバイスは、かかる利用可能性に基づいて、１つのオペレーティングモードから別のものへと変化してもよい。したがって、開示された実施形態は、デバイスを追加し、または、多数のデバイスを含むネットワーククラスターを統合し、したがって統合ネットワークの届く範囲を延ばし得る、拡張可能なネットワークを提供する。
【０１１２】
特定の実施形態が説明され、かつ、示されてきた一方で、かかる実施形態は、本発明の説明としてのみ考慮されるべきであり、かつ、添付の請求の範囲にしたがって解釈される本発明を限定するものとして考慮されるべきではない。
【図１】
2019525518.tif 000003
【図２】
2019525518.tif 000004
【図３】
2019525518.tif 000005
【図４】
2019525518.tif 000006
【図５】
2019525518.tif 000007
【図６】
2019525518.tif 000008
【図７】
2019525518.tif 000009
【図８Ａ】
2019525518.tif 000010
【図８Ｂ】
2019525518.tif 000011
【図８Ｃ】
2019525518.tif 000012
【図９】
2019525518.tif 000013
【図１０】
2019525518.tif 000014
【図１１】
2019525518.tif 000015
【図１２】
2019525518.tif 000016
【図１３】
2019525518.tif 000017
【図１４】
2019525518.tif 000018
【図１５】
2019525518.tif 000019
【図１６】
2019525518.tif 000020
【図１７】
2019525518.tif 000021
【国際調査報告】
2019525518.tif 000022
2019525518.tif 000023