(57)【要約】  ピアツーピアネットワークによって実装されるサービス指向アーキテクチャ（ＳＯＡ）バスを介したインターネットプロトコル（ＩＰ）接続性を実装するための方法、システムおよびデバイスを開示する。第１のデバイスにおいて、第１のＩＰサービスがＳＯＡバスを介して公示され、ＳＯＡバスを介して第２のデバイスによって公示された第２のＩＰサービスが発見される。第１のデバイスは、ＳＯＡバスを介して第２のデバイスの第２のＩＰサービスをリモートで呼び出すことによって第２のデバイスに少なくとも第１のＩＰパケットを送信し得る。第１のデバイスは、第２のデバイスによる第１のＩＰサービスの呼出しを通してＳＯＡバスを介して第２のデバイスから少なくとも第２のＩＰパケットを受信し得る。
2015517232.tif 000002
【特許請求の範囲】
【請求項１】
インターネットプロトコル（ＩＰ）接続性を実装する方法であって、
サービス指向アーキテクチャ（ＳＯＡ）バスを介して第１のデバイスにおいて第１のＩＰサービスを公示することと、
前記ＳＯＡバスを介して第２のデバイスによって公示された第２のＩＰサービスを発見することと、
前記ＳＯＡバスを介して前記第２のデバイスの前記第２のＩＰサービスをリモートで呼び出すことによって、前記第２のデバイスに少なくとも第１のＩＰパケットを送信することと、および
前記第１の公示されたサービスを通して前記ＳＯＡバスを介して、前記第２のデバイスから少なくとも第２のＩＰパケットを受信することと、
を備える、方法。
【請求項２】
前記ＳＯＡバスを介して前記第１のＩＰサービスを前記公示することが、
前記第１のＩＰサービスに関連するサービス名を使用して前記ＳＯＡバスを介して前記第１のＩＰサービスを公示し、前記第１のＩＰサービスに関連する前記サービス名が、前記ＳＯＡバスにおけるＩＰサービスに一様に関連するサービス記述子を備える、こと
を備える、請求項１に記載の方法。
【請求項３】
前記第１のＩＰサービスに関連する前記サービス名が、前記第１のデバイスに割り当てられた一意のＩＰアドレスをさらに備える、請求項２に記載の方法。
【請求項４】
前記第１のデバイスのためのＩＰアドレスを動的に生成することと、
前記ＳＯＡバス上の任意の他のデバイスが前記動的に生成されたＩＰアドレスに関連付けられているかどうかを判断することと、
前記ＳＯＡバス上の他のいかなるデバイスも前記動的に生成されたＩＰアドレスに関連付けられていないという判断に応答して、前記一意のＩＰアドレスとして前記第１のデバイスに前記動的に生成されたＩＰアドレスを割り当てることと、
をさらに備える、請求項３に記載の方法。
【請求項５】
前記ＳＯＡバス上の別のデバイスが前記動的に生成されたＩＰアドレスに関連付けられているという判断に応答して、前記動的に生成されたＩＰアドレスを放棄することと、
前記第１のデバイスのための新しいＩＰアドレスを動的に生成することと、
をさらに備える、請求項４に記載の方法。
【請求項６】
前記ＳＯＡバス上の任意の他のデバイスが前記動的に生成されたＩＰアドレスに関連付けられているかどうかを前記判断することが、
前記ＳＯＡバス上の異なるサービスが前記動的に生成されたＩＰアドレスに関連付けられていると判断することと、
前記異なるサービスが前記第１のデバイスに割り当てられた一意の識別子を備えると判断することと、
前記一意の識別子に基づいて前記異なるサービスが前記第１のデバイスに属すると判断することと、
を備える、請求項４に記載の方法。
【請求項７】
前記ＳＯＡバスを介して前記第２のデバイスによって公示された前記第２のＩＰサービスを前記発見することが、
前記ＳＯＡバスを介して前記第２のＩＰサービスに関連するサービス名を発見し、前記第２のＩＰサービスに関連する前記サービス名が、前記ＳＯＡバスにおけるＩＰサービスに一様に関連する前記サービス記述子を備える、こと
を備える、請求項３に記載の方法。
【請求項８】
前記第１のＩＰサービスに関連する前記サービス名と前記第２のＩＰサービスに関連する前記サービス名とが、前記ＳＯＡバスによって実装される連続した名前空間中で公示される、請求項７に記載の方法。
【請求項９】
前記第２のＩＰサービスに関連する前記サービス名が、前記第２のデバイスに割り当てられた一意のＩＰアドレスをさらに備える、請求項３に記載の方法。
【請求項１０】
前記第１のＩＰパケットが、前記第２のデバイスに割り当てられた前記一意のＩＰアドレスにアドレス指定される、請求項９に記載の方法。
【請求項１１】
前記第２のＩＰパケットが、前記第１のデバイスに関連する前記一意のＩＰアドレスにアドレス指定される、請求項３に記載の方法。
【請求項１２】
前記第１のＩＰサービスに関連する前記サービス名が、前記第１のデバイスに関連するホスト名をさらに備える、請求項２に記載の方法。
【請求項１３】
前記第１のＩＰサービスに関連する前記サービス名が、前記ホスト名に関連するサブドメインをさらに備える、請求項１２に記載の方法。
【請求項１４】
前記第１のＩＰサービスに関連する前記サービス名が、前記第１のＩＰサービスに関連するサブネットの指示をさらに備える、請求項２に記載の方法。
【請求項１５】
前記第２のデバイスに前記第１のＩＰパケットを前記送信することが、
前記ＳＯＡバスを介して前記第２のＩＰサービスを呼び出すことと、
前記第２のＩＰサービスをリモートで呼び出すことに関連するパラメータとして、前記第２のＩＰサービスに前記第１のＩＰパケットを送信することと、
をさらに備える、請求項１に記載の方法。
【請求項１６】
前記第２のデバイスに前記第１のＩＰパケットを前記送信することが仮想ネットワークインターフェースにおいて行われる、請求項１に記載の方法。
【請求項１７】
前記第２のデバイスから前記第２のＩＰパケットを前記受信することが、
前記第２のデバイスが前記ＳＯＡバスを介して前記第１のＩＰサービスを呼び出したと判断することと、
前記第１のＩＰサービスをリモートで呼び出すことに関連するパラメータとして、前記第２のＩＰパケットを受信することと、
をさらに備える、請求項１に記載の方法。
【請求項１８】
前記第２のデバイスから前記第２のＩＰパケットを前記受信することが仮想ネットワークインターフェースにおいて行われる、請求項１に記載の方法。
【請求項１９】
前記第１のデバイスと前記第２のデバイスとが、異なるアクセスプロトコルを使用して前記ＳＯＡバスに接続する、請求項１に記載の方法。
【請求項２０】
前記ＳＯＡバスが、異種無線技術によって相互接続された複数のデバイスによって実装される、請求項１９に記載の方法。
【請求項２１】
前記ＳＯＡバスがピアツーピアネットワークによって実装される、請求項１に記載の方法。
【請求項２２】
インターネットプロトコル（ＩＰ）接続性を実装するためのデバイスであって、
サービス指向アーキテクチャ（ＳＯＡ）バスを介して第１のＩＰサービスを公示するように構成された公示モジュールと、
前記ＳＯＡバスを介して第２のデバイスによって公示された第２のＩＰサービスを発見するように構成された発見モジュールと、
前記ＳＯＡバスを介して前記第２のデバイスの前記第２のＩＰサービスをリモートで呼び出すことによって前記第２のデバイスに少なくとも第１のＩＰパケットを送信するように構成された送信機と、および、
前記第１の公示されたサービスを通して前記ＳＯＡバスを介して、前記第２のデバイスから少なくとも第２のＩＰパケットを受信するように構成された受信機と、
を備える、デバイス。
【請求項２３】
前記公示モジュールが、
前記第１のＩＰサービスに関連するサービス名を使用して前記ＳＯＡバスを介して前記第１のＩＰサービスを公示し、前記第１のＩＰサービスに関連する前記サービス名が、前記ＳＯＡバスにおけるＩＰサービスに一様に関連するサービス記述子を備える、こと
を行うようにさらに構成された、請求項２２に記載のデバイス。
【請求項２４】
前記第１のＩＰサービスに関連する前記サービス名が、前記第１のＩＰサービスに割り当てられた一意のＩＰアドレスをさらに備える、請求項２３に記載のデバイス。
【請求項２５】
前記発見モジュールが、
前記ＳＯＡバスを介して前記第２のＩＰサービスに関連するサービス名を発見し、前記第２のＩＰサービスに関連する前記サービス名が、前記ＳＯＡバスにおけるＩＰサービスに一様に関連する前記サービス記述子を備える、こと
を行うことによって、前記ＳＯＡバスを介して前記第２のデバイスによって公示された前記第２のＩＰサービスを発見するように構成された、請求項２３に記載のデバイス。
【請求項２６】
前記第１のＩＰサービスに関連する前記サービス名と前記第２のＩＰサービスに関連する前記サービス名とが、前記ＳＯＡバスによって実装される連続した名前空間中で公示される、請求項２５に記載のデバイス。
【請求項２７】
前記第２のＩＰサービスに関連する前記サービス名が、前記第２のデバイスに割り当てられた一意のＩＰアドレスをさらに備える、請求項２３に記載のデバイス。
【請求項２８】
前記送信機が、
前記ＳＯＡバスを介して前記第２のＩＰサービスを呼び出すことと、
前記第２のＩＰサービスをリモートで呼び出すことに関連するパラメータとして、前記第２のＩＰサービスに前記第１のＩＰパケットを送信することと
を行うことによって、前記第２のデバイスに前記第１のＩＰパケットを送信するように構成された、請求項２２に記載のデバイス。
【請求項２９】
前記受信機が、
前記第２のデバイスが前記ＳＯＡバスを介して前記第１のＩＰサービスを呼び出したと判断することと、
前記第１のＩＰサービスをリモートで呼び出すことに関連するパラメータとして前記第２のＩＰパケットを受信することと
を行うことによって、前記第２のデバイスから前記第２のＩＰパケットを受信するように構成された、請求項２２に記載のデバイス。
【請求項３０】
前記送信機が、
前記第１のデバイスによって実装されるＩＰアプリケーションから前記第１のＩＰパケットを受信することと、
前記第１のＩＰサービスに前記第１のＩＰパケットを転送することと、
前記第１のＩＰサービスから前記第２のＩＰパケットを受信することと、
前記第１のデバイスによって実装される前記ＩＰアプリケーションに前記第２のＩＰパケットを転送することと、
を行うように構成された仮想ネットワークインターフェース
を備える、請求項２２に記載のデバイス。
【請求項３１】
インターネットプロトコル（ＩＰ）接続性を実装するための装置であって、
サービス指向アーキテクチャ（ＳＯＡ）バスを介して第１のデバイスにおいて第１のＩＰサービスを公示するための手段と、
前記ＳＯＡバスを介して第２のデバイスによって公示された第２のＩＰサービスを発見するための手段と、
前記ＳＯＡバスを介して前記第２のデバイスの前記第２のＩＰサービスをリモートで呼び出すことによって、前記第２のデバイスに少なくとも第１のＩＰパケットを送信するための手段と、
前記第１の公示されたサービスを通して前記第２のデバイスから少なくとも第２のＩＰパケットを受信するための手段と、
を備える、装置。
【請求項３２】
前記ＳＯＡバスを介して前記第１のＩＰサービスを公示するための前記手段が、
前記第１のＩＰサービスに関連するサービス名を使用して前記ＳＯＡバスを介して前記第１のＩＰサービスを公示し、前記第１のＩＰサービスに関連する前記サービス名が、前記ＳＯＡバスにおけるＩＰサービスに一様に関連するサービス記述子を備える、手段
を備える、請求項３１に記載の装置。
【請求項３３】
前記第１のＩＰサービスに関連する前記サービス名が、前記第１のデバイスに割り当てられた一意のＩＰアドレスをさらに備える、請求項３２に記載の装置。
【請求項３４】
前記第１のデバイスのためのＩＰアドレスを動的に生成するための手段と、
前記ＳＯＡバス上の任意の他のデバイスが前記動的に生成されたＩＰアドレスに関連付けられているかどうかを判断するための手段と、
前記ＳＯＡバス上の他のいかなるデバイスも前記動的に生成されたＩＰアドレスに関連付けられていないという判断に応答して、前記一意のＩＰアドレスとして前記第１のデバイスに前記動的に生成されたＩＰアドレスを割り当てるための手段と、
をさらに備える、請求項３３に記載の装置。
【請求項３５】
前記ＳＯＡバス上の別のデバイスが前記動的に生成されたＩＰアドレスに関連付けられているという判断に応答して、前記動的に生成されたＩＰアドレスを放棄するための手段と、
前記第１のデバイスのための新しいＩＰアドレスを動的に生成するための手段と、
をさらに備える、請求項３４に記載の装置。
【請求項３６】
前記ＳＯＡバスを介して前記第２のデバイスによって公示された前記第２のＩＰサービスを発見するための前記手段が、
前記ＳＯＡバスを介して前記第２のＩＰサービスに関連するサービス名を発見し、前記第２のＩＰサービスに関連する前記サービス名が、前記ＳＯＡバスにおけるＩＰサービスに一様に関連する前記サービス記述子を備える、ための手段
を備える、請求項３３に記載の装置。
【請求項３７】
前記第１のＩＰサービスに関連する前記サービス名と前記第２のＩＰサービスに関連する前記サービス名とが、前記ＳＯＡバスによって実装される連続した名前空間中で公示される、請求項３６に記載の装置。
【請求項３８】
前記第２のＩＰサービスに関連する前記サービス名が、前記第２のデバイスに割り当てられた一意のＩＰアドレスをさらに備える、請求項３３に記載の装置。
【請求項３９】
前記第１のＩＰパケットが、前記第２のデバイスに割り当てられた前記一意のＩＰアドレスにアドレス指定される、請求項３８に記載の装置。
【請求項４０】
前記第２のＩＰパケットが、前記第１のデバイスに関連する前記一意のＩＰアドレスにアドレス指定される、請求項３３に記載の装置。
【請求項４１】
前記第２のデバイスに前記第１のＩＰパケットを送信するための前記手段が、
前記ＳＯＡバスを介して前記第２のＩＰサービスを呼び出すための手段と、
前記第２のＩＰサービスをリモートで呼び出すことに関連するパラメータとして、前記第２のＩＰサービスに前記第１のＩＰパケットを送信するための手段と、
をさらに備える、請求項３１に記載の装置。
【請求項４２】
前記第２のデバイスに前記第１のＩＰパケットを送信するための前記手段が仮想ネットワークインターフェースを備える、請求項３１に記載の装置。
【請求項４３】
前記第２のデバイスから前記第２のＩＰパケットを受信するための前記手段が、
前記第２のデバイスが前記ＳＯＡバスを介して前記第１のＩＰサービスを呼び出したと判断するための手段と、
前記第１のＩＰサービスをリモートで呼び出すことに関連するパラメータとして、前記第２のＩＰパケットを受信するための手段と、
をさらに備える、請求項３１に記載の装置。
【請求項４４】
前記第２のデバイスから前記第２のＩＰパケットを受信するための前記手段が仮想ネットワークインターフェースを備える、請求項３１に記載の装置。
【請求項４５】
前記第１のデバイスと前記第２のデバイスとが、異なるアクセスプロトコルを使用して前記ＳＯＡバスに接続する、請求項３１に記載の装置。
【請求項４６】
インターネットプロトコル（ＩＰ）接続性を実装するように構成されたコンピュータプログラム製品であって、前記製品が非一時的コンピュータ可読媒体を備え、前記媒体が、
サービス指向アーキテクチャ（ＳＯＡ）バスを介して第１のデバイスにおいて第１のＩＰサービスを公示するためのコードと、
前記ＳＯＡバスを介して第２のデバイスによって公示された第２のＩＰサービスを発見するためのコードと、
前記ＳＯＡバスを介して前記第２のデバイスの前記第２のＩＰサービスをリモートで呼び出すことによって前記第２のデバイスに少なくとも第１のＩＰパケットを送信するためのコードと、
前記第１の公示されたサービスを通して前記第２のデバイスから少なくとも第２のＩＰパケットを受信するためのコードと
を備える、コンピュータプログラム製品。
【請求項４７】
インターネットプロトコル（ＩＰ）接続性を実装するためのシステムであって、
複数の異なるアクセス技術を使用して複数の異なるデバイスに通信可能に結合するように構成されたサービス指向アーキテクチャ（ＳＯＡ）バスと、
前記ＳＯＡバスを介して第１のＩＰサービスを公示するように構成された第１のデバイスと、
前記ＳＯＡバスを介して第２のＩＰサービスを公示するように構成された第２のデバイスと
を備え、
前記ＳＯＡバスにより、前記第１のデバイスと前記第２のデバイスとが、前記第２のデバイスによる前記第１のＩＰサービスのリモート呼出しと前記第１のデバイスによる前記第２のＩＰサービスのリモート呼出しとを通してＩＰパケットを交換することが可能になる、システム。
【請求項４８】
前記第１のデバイスが、前記第１のＩＰサービスに関連する第１のサービス名を使用して前記ＳＯＡバスを介して前記第１のＩＰサービスを公示するように構成され、
前記第２のデバイスが、前記第２のＩＰサービスに関連する第２のサービス名を使用して前記ＳＯＡバスを介して前記第２のＩＰサービスを公示するように構成され、
前記第１のサービス名と前記第２のサービス名との各々の少なくとも一部分が、前記ＳＯＡバスにおけるＩＰサービスに一様に関連するサービス記述子を備える、請求項４７に記載のシステム。
【請求項４９】
前記ＳＯＡバスが連続した名前空間を実装するように構成され、
前記第１のサービス名と前記第２のサービス名とがそれぞれ、前記連続した名前空間内で公示される、請求項４８に記載のシステム。
【請求項５０】
前記第１のデバイスによって公示された前記第１のサービス名が前記第１のデバイスに関連するＩＰアドレスを備え、
前記第２のデバイスによって公示された前記第２のサービス名が前記第２のデバイスに関連するＩＰアドレスを備える、請求項４８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]以下は、一般に、サービス指向アーキテクチャ（ＳＯＡ：service-oriented architecture）に関し、詳細には、ＳＯＡバスを介したネットワーク通信の実装形態に関する。
【背景技術】
【０００２】
[0002]サービス指向アーキテクチャでは、１つまたは複数のノードは、互いに相互運用可能なサービスを提供するために互いに通信し得る。このコンテキストでは、サービスは、独立型ソフトウェアによって実装される機能の自律単位と考えることができる。サービス指向アーキテクチャ機能の典型的な実装形態は、コンピュータネットワークによって相互接続されたいくつかのコンピュータノードを含み得る。各ノードは、他のノードによって提供されるサービスを識別するために他のノードと通信し得る。各ノードはまた、他のノードに１つまたは複数のサービスを公示（advertise）し得る。
【０００３】
[0003]サービス指向アーキテクチャにおいて第２のノードによって提供されるサービスを呼び出す第１のノードに関して、第１のノードは、第２のノードにリモートプロシージャ呼出しを送信し得、リモートプロシージャ呼出しは、選択されたサービスによってサポートされる。リモートプロシージャ呼出しは、第１のノードによって与えられた１つまたは複数の引数または他のパラメータを含み得る。第２のノードは、呼のタイプおよび／または与えられたパラメータに基づいて１つまたは複数のソフトウェア機能を実行することによってリモートプロシージャ呼出しに応答し得る。いくつかの例では、第２のノードは、第１のノードにリモートプロシージャ呼出しの結果を与え得る。
【０００４】
[0004]最近、（サービスバスとしても知られる）サービス指向アーキテクチャバスの使用が増加した。サービス指向アーキテクチャバスは、アプリケーションが互いのサービスを呼び出すことを可能にするために、相互に対話するソフトウェアアプリケーション間での通信を可能にする。サービス指向アーキテクチャバスの使用が増大するにつれて、これらのバスの新しい使用は発達し続ける。
【発明の概要】
【０００５】
[0005]実施形態は、サービス指向アーキテクチャ（ＳＯＡ）バスを介したインターネットプロトコル（ＩＰ）接続性および通信を実装するための方法、システム、およびデバイスを含む。概して、第１のデバイスと第２のデバイスとは、ＳＯＡバスに通信可能に結合され得る。第１のデバイスは、ＳＯＡバスを介して第１のＩＰサービスを公示し得、第２のデバイスは、ＳＯＡバスを介して第２のＩＰサービスを公示し得る。デバイスは、互いのサービスを発見し、ＳＯＡバスを介して互いの公示されたＩＰサービスをリモートで呼び出すことによってＩＰパケットを交換し得る。
【０００６】
[0006]いくつかの実施形態は、ＩＰ接続性を実装する方法を含み得る。本方法は、ＳＯＡバスを介して第１のデバイスにおいて第１のＩＰサービスを公示することと、ＳＯＡバスを介して第２のデバイスによって公示された第２のＩＰサービスが発見することとを含み得る。ＳＯＡバスを介して第２のデバイスの第２のＩＰサービスをリモートで呼び出すことによって第１のＩＰパケットが第２のデバイスに送信され得る。第１の公示されたサービスを通してＳＯＡバスを介して第２のデバイスから少なくとも第２のＩＰパケットが受信され得る。
【０００７】
[0007]いくつかの実施形態では、ＳＯＡバスを介して第１のＩＰサービスを公示することが、第１のＩＰサービスに関連するサービス名を使用してＳＯＡバスを介して第１のＩＰサービスを公示することであって、第１のＩＰサービスに関連するサービス名が、ＳＯＡバスにおけるＩＰサービスに一様に関連するサービス記述子を備える、公示することを含み得る。第１のＩＰサービスに関連するサービス名は、第１のデバイスに割り当てられた一意のＩＰアドレスを含み得る。
【０００８】
[0008]いくつかの実施形態では、第１のＩＰアドレスが第１のデバイスのために動的に生成され得、ＳＯＡバス上の任意の他のデバイスが動的に生成されたＩＰアドレスに関連付けられているかどうかの判断が行われ得る。ＳＯＡバス上の他のいかなるデバイスも動的に生成されたＩＰアドレスに関連付けられていないと判断された場合、動的に生成されたＩＰアドレスは、第１のデバイスの一意のＩＰアドレスとして割り当てられ得る。いくつかの例では、ＳＯＡバス上の他のいかなるデバイスも動的に生成されたＩＰアドレスに関連付けられていないという判断は、ＳＯＡバス上の異なるサービスが動的に生成されたＩＰアドレスに関連付けられていないと判断することと、異なるサービスが第１のデバイスに割り当てられた一意の識別子を有すると判断することと、一意の識別子に基づいて異なるサービスが第１のデバイスに属すると判断することとを含み得る。いくつかの例では、動的に生成されたＩＰアドレスは、ＳＯＡバス上の別のデバイスが動的に生成されたＩＰアドレスに関連付けられているという判断に応答して放棄され得、新しいＩＰアドレスが第１のデバイスのために動的に生成され得る。
【０００９】
[0009]いくつかの実施形態では、ＳＯＡバスを介して第２のデバイスによって公示された第２のＩＰサービスを発見することは、ＳＯＡバスを介して第２のＩＰサービスに関連するサービス名を発見することであって、第２のＩＰサービスに関連するサービス名が、ＳＯＡバスにおけるＩＰサービスに一様に関連するサービス記述子をもつ、発見することを含み得る。第１のＩＰサービスに関連するサービス名と第２のＩＰサービスに関連するサービス名とは、ＳＯＡバスによって実装される連続した名前空間中で公示され得る。
【００１０】
[0010]いくつかの実施形態では、第２のＩＰサービスに関連するサービス名は、第２のデバイスに割り当てられた一意のＩＰアドレスをさらに備える。第１のＩＰパケットは、第２のデバイスに割り当てられた一意のＩＰアドレスにアドレス指定され得る。第２のＩＰパケットは、第１のデバイスに関連する一意のＩＰアドレスにアドレス指定され得る。
【００１１】
[0011]いくつかの実施形態では、第１のＩＰサービスに関連するサービス名は、第１のデバイスに関連するホスト名をさらに含む。第１のＩＰサービスに関連するサービス名は、ホスト名に関連するサブドメインをさらに含み得る。第１のＩＰサービスに関連するサービス名は、第１のＩＰサービスに関連するサブネットをさらに含み得る。
【００１２】
[0012]いくつかの実施形態では、第２のデバイスにＩＰパケットを送信することは、ＳＯＡバスを介して第２のＩＰサービスを呼び出すことと、第２のＩＰサービスをリモートで呼び出すことに関連するパラメータとして第２のＩＰサービスに第１のＩＰパケットを送信することとを含む。第２のデバイスから第２のＩＰパケットを受信することは、第２のデバイスがＳＯＡバスを介して第１のＩＰサービスを呼び出したと判断することと、第１のＩＰサービスをリモートで呼び出すことに関連するパラメータとして第２のＩＰパケットを受信することとを含み得る。第２のデバイスへの第１のＩＰパケットの送信および／または第２のデバイスからの第２のＩＰパケットの受信は仮想ネットワークインターフェースにおいて行われ得る。
【００１３】
[0013]いくつかの実施形態では、第１のデバイスと第２のデバイスとは、異なるアクセスプロトコルを使用してＳＯＡバスに接続し得る。ＳＯＡバスは、異種無線技術によって相互接続された複数のデバイスによって実装され得る。ＳＯＡバスは、ピアツーピアネットワークによって実装され得る。
【００１４】
[0014]いくつかの実施形態は、ＩＰ接続性を実装するためのデバイスを含み、本デバイスは、公示モジュールと、発見モジュールと、送信機と、受信機とを含み得る。公示モジュールは、ＳＯＡバスを介して第１のＩＰサービスを公示するように構成され得る。発見モジュールは、ＳＯＡバスを介して第２のデバイスによって公示された第２のＩＰサービスを発見するように構成され得る。送信機は、ＳＯＡバスを介して第２のデバイスの第２のＩＰサービスをリモートで呼び出すことによって第２のデバイスに少なくとも第１のＩＰパケットを送信するように構成され得る。受信機は、第１の公示されたサービスを通してＳＯＡバスを介して第２のデバイスから少なくとも第２のＩＰパケットを受信するように構成され得る。
【００１５】
[0015]いくつかの実施形態は、ＩＰ接続性を実装するための装置を含み得る。本装置は、サービス指向アーキテクチャ（ＳＯＡ）バスを介して第１のデバイスにおいて第１のＩＰサービスを公示するための手段と、ＳＯＡバスを介して第２のデバイスによって公示された第２のＩＰサービスを発見するための手段と、ＳＯＡバスを介して第２のデバイスの第２のＩＰサービスをリモートで呼び出すことによって第２のデバイスに少なくとも第１のＩＰパケットを送信するための手段と、第１の公示されたサービスを通して第２のデバイスから少なくとも第２のＩＰパケットを受信するための手段とを含み得る。
【００１６】
[0016]いくつかの実施形態は、インターネットプロトコル（ＩＰ）接続性を実装するように構成されたコンピュータプログラム製品を含み、製品は、非一時的コンピュータ可読媒体を含み得る。媒体は、サービス指向アーキテクチャ（ＳＯＡ）バスを介して第１のデバイスにおいて第１のＩＰサービスを公示するためのコードと、ＳＯＡバスを介して第２のデバイスによって公示された第２のＩＰサービスを発見するためのコードと、ＳＯＡバスを介して第２のデバイスの第２のＩＰサービスをリモートで呼び出すことによって第２のデバイスに少なくとも第１のＩＰパケットを送信するためコードと、第１の公示されたサービスを通して第２のデバイスから少なくとも第２のＩＰパケットを受信するためのコードとを含み得る。
【００１７】
[0017]いくつかの実施形態は、ＩＰ接続性を実装するためのシステムを含み得る。本システムは、複数の異なるアクセス技術を使用して複数の異なるデバイスに通信可能に結合するように構成されたＳＯＡバスと、ＳＯＡバスを介して第１のＩＰサービスを公示するように構成された第１のデバイスと、ＳＯＡバスを介して第２のＩＰサービスを公示するように構成された第２のデバイスとを含み得る。ＳＯＡバスにより、第１のデバイスと第２のデバイスとが、第２のデバイスによる第１のＩＰサービスのリモート呼出しと第１のデバイスによる第２のＩＰサービスのリモート呼出しとを通してＩＰパケットを交換することが可能になり得る。
【００１８】
[0018]以下の図面を参照すれば、本発明の性質および利点のさらなる理解が得られ得る。添付の図において、同様の構成要素または特徴は同じ参照ラベルを有し得る。さらに、同じタイプの様々な構成要素は、参照ラベルの後に、ダッシュと、それらの同様の構成要素同士を区別する第２のラベルとを続けることによって区別され得る。第１の参照ラベルのみが明細書において使用される場合、その説明は、第２の参照ラベルにかかわらず、同じ第１の参照ラベルを有する同様の構成要素のうちのいずれか１つに適用可能である。
【図面の簡単な説明】
【００１９】
【図１】[0019]サービス指向アーキテクチャ（ＳＯＡ）バスを介したインターネットプロトコル（ＩＰ）接続性を実装するための例示的なシステムのブロック図。
【図２】[0020]ワイヤレス通信システムのブロック図。
【図３】[0021]ＳＯＡバスを介したＩＰ接続性を実装するための例示的なシステムのブロック図。
【図４】[0022]ＳＯＡバスを介した第１のデバイスの第１のＩＰサービスと第２のデバイスの第２のＩＰサービスとの間の例示的な通信信号のブロック図。
【図５】[0023]ＳＯＡバスを介してＩＰパケットを送信および受信するように構成された例示的なデバイスのブロック図。
【図６】[0024]ＳＯＡバスを介してＩＰパケットを送信および受信するように構成された例示的なデバイスのブロック図。
【図７】[0025]ＳＯＡバスを介したＩＰ接続性を実装するための例示的なメソッドのフローチャート。
【図８】[0026]ＳＯＡバスを介したＩＰ接続性を実装するための例示的なメソッドのフローチャート。
【図９】[0027]ＳＯＡバスを介したＩＰ接続性を実装するための例示的なメソッドのフローチャート。
【図１０】[0028]ＳＯＡバスを介したＩＰ接続性を実装するための例示的なメソッドのフローチャート。
【図１１】[0029]ＳＯＡバスを介したＩＰ通信において使用するためのＩＰアドレスを生成するための例示的なメソッドのフローチャート。
【図１２】[0030]ＳＯＡバスを介したＩＰ接続性を実装するためのＩＰサービスを発見するための例示的なメソッドのフローチャート。
【発明を実施するための形態】
【００２０】
[0031]ＳＯＡバスを介したＩＰ通信の実装形態について説明する。ＳＯＡバスに結合されたデバイスは、ＩＰサービスの別個のインスタンスを公示し、実装し得る。各ＩＰサービスは、ＳＯＡバスに関連するＩＰサブネット中のＩＰアドレスを有し得る。公示された各ＩＰサービスは、ＩＰ接続性に一様に関連するサービス記述子を含む名前を有し得る。さらに、各ＩＰサービスの名前は、その特定のサービスのためのＩＰアドレスを含み得る。第１のデバイスは、第２のデバイスによって公示されたＩＰサービスをリモートで呼び出すことと、呼出しのパラメータとして第２のデバイスのＩＰサービスにＩＰパケットを渡すこととによってＳＯＡバスを介して第２のデバイスにＩＰパケットを送信し得る。
【００２１】
[0032]したがって、以下の説明は、例を与えるものであり、特許請求の範囲において記載される範囲、適用性、または構成を限定するものではない。本開示の趣旨および範囲から逸脱することなく、説明する要素の機能および構成において変更が行われ得る。様々な実施形態は、適宜に様々な手順または構成要素を省略、置換、または追加し得る。たとえば、説明する方法は、説明する順序とは異なる順序で実行され得、様々なステップが追加、省略、または組み合わせられ得る。また、いくつかの実施形態に関して説明する特徴は、他の実施形態において組み合わせられ得る。
【００２２】
[0033]図１に、様々なデバイス１１５（たとえば、パーソナルコンピュータ１１５−ａ、スマートフォン１１５−ｂ、タブレットコンピュータ１１５−ｃ、およびプリンタ１１５−ｄ）がピアツーピアレベルにおいて互いに通信する例示的なシステム１００を示す。
【００２３】
[0034]図１に示すように、デバイス１１５は、異なるアクセス技術を介して互いに通信し得る。本例では、パーソナルコンピュータ１１５−ａは、ワイヤレスローカルエリアネットワーク（ＷＬＡＮ）接続を介して（たとえば、アドホックＷＬＡＮ接続としておよび／またはＷＬＡＮスイッチ、アクセスポイント、またはルータを通して）スマートフォン１１５−ｂと通信する。パーソナルコンピュータ１１５−ａはまた、ユニバーサルシリアルバス（ＵＳＢ）接続を介してプリンタ１１５−ｄと通信する。スマートフォン１１５−ｂはまた、Ｂｌｕｅｔｏｏｔｈ（登録商標）ワイヤレス接続を介してテーブルコンピュータ１１５−ｃと通信する。
【００２４】
[0035]本例の１つのデバイス１１５もシステム中のデバイス１１５の各々と直接通信していないが、デバイス１１５は、ピアツーピアネットワークを介してＳＯＡバス１０５を実装するために互いに協働し得る。本明細書および添付の特許請求の範囲で使用する「ＳＯＡバス」という用語は、概して、互いにサービスを公示し、互いの公示されたサービスをリモートで呼び出すために、分散ノードに論理インフラストラクチャを与える任意の通信アーキテクチャを指す。さらに、「サービス」という用語は、概して、サービスを実装するデバイスまたはアプリケーションとは別個のデバイスまたはアプリケーションによってリモートで呼び出されるか、または呼ばれることがあり得るソフトウェア機能の自律単位を指す。
【００２５】
[0036]説明における明快のために、図２のＳＯＡバス１０５の説明および明細書全体にわたる説明は、オープンソースのＡｌｌＪｏｙｎバス機能を実装するＡｌｌＪｏｙｎバスのコンテキスト内で与えられる。ただし、本明細書の原理は、限定はしないが、エンタープライズサービスバス（ＥＳＢ：Enterprise Service Bus）、Ｗｉｎｄｏｗｓ（登録商標）サービスバス、シンプルサービスバス（ＳＳＢ：Simple Service Bus）、Ｄ−バス、および／または他のサービスバスを含む他のタイプのＳＯＡバスに広く適用され得る。
【００２６】
[0037]図１のシステムでは、ＳＯＡバス１０５を実装するために、デバイス１１５の各々は、ＳＯＡバスデーモンの別個のインスタンスを実行し得る。システム３００の各デバイス１１５上で実行されるＳＯＡバスデーモンは、ピアツーピアネットワークを介して論理ＳＯＡバス１０５を確立するためにシステム３００の他のデバイス１１５上で実行されるＳＯＡバスデーモンと通信し得、したがって、デバイス１１５の各々は、それらのピアと通信するためにデバイス１１５によって使用されるアクセス技術にかかわらず、論理ＳＯＡバス１０５を介してシステム１００中の他のデバイス１１５のいずれかと通信し得る。
【００２７】
[0038]デバイス１１５の各々は、ＳＯＡバス１０５を介していくつかのサービスを提供するように構成され得る。たとえば、パーソナルコンピュータ１１５−ａは、チャットサービス、ストリーミングメディアサービス、およびインターネットプロトコル（ＩＰ）サービスを提供し得る。スマートフォン１１５−ｂは、チャットサービス、全地球測位システム（ＧＰＳ）サービス、およびＩＰサービスを提供し得る。タブレットコンピュータ１１５−ｃは、辞書サービスおよびＩＰサービスを提供し得る。プリンタ１１５−ｄは、チャットサービス、ストリーミングメディアサービス、およびＩＰサービスを提供し得る。各デバイス１１５において提供される各サービスには、ＳＯＡバス１０５上での論理ロケーションまたはアドレスが割り当てられ得る。たとえば、パーソナルコンピュータ１１５−ａのチャットサービスは、ＳＯＡバス１０５上で：１．１のアドレスが与えられ、パーソナルコンピュータ１１５−ａのストリーミングメディアサービスは、ＳＯＡバス１０５上で：１．２のアドレスが与えられ、パーソナルコンピュータ１１５−ａのＩＰサービスは、ＳＯＡバス１０５上で：１．３のアドレスが与えられる。本明細書および添付の特許請求の範囲では、「インターネットプロトコル」または「ＩＰ」という用語は、ＩＰｖ４、ＩＰｖ６、および／または任意の他の過去または将来のバージョンを含むインターネットプロトコルの任意のバージョンを指す。
【００２８】
[0039]ＳＯＡバス１０５上のデバイス１１５の各々は、他のデバイス１１５によって公示されたサービスのリストへのアクセスを有し得る。デバイス１１５のうちの１つの上のクライアントプロセスは、ＳＯＡバス上の公示されたサービスのアドレスを用いてＳＯＡバス１０５上でセッションを確立することによって別のデバイス１１５によって提供された公示されたサービスをリモートで呼び出し得る。たとえば、スマートフォン１１５−ｂのクライアントプロセスがプリンタ１１５−ｄのストリーミングメディアサービスにアクセスすることを望んだ場合、クライアントプロセスは、ＳＯＡバス１０５上で：１．９のアドレスを用いてセッションを確立し、セッションを通してストリーミングメディアサービスに関連するメソッド（method）またはプロシージャをリモートで呼び出し得る。いくつかの例では、クライアントプロセスは、ＳＯＡバス上で公示された別のサービスであり得る。追加または代替として、クライアントプロセスは、ＳＯＡバス１０５を介して公に公示されたサービスを提供しない、ＳＯＡバス１０５上で別個のアドレスをもつアプリケーションまたはソフトウェア機能の他の単位であり得る。
【００２９】
[0040]図１に示すように、システム１００中のデバイス１１５の各々は、ＳＯＡバス１０５を介してＩＰサービスを提供し得る。代替例では、システム１００中のデバイス１１５のサブセットのみが、ＳＯＡバスを介してＩＰサービスを提供し得る。ＩＰサービスは、ＳＯＡバス１０５を介して１つまたは複数のＩＰサブネットを実装するために互いに協働し得る。このＩＰサブネットは、ＳＯＡバスの外部の任意の他のＩＰサブネットとは別個で独立していることがあり得る。したがって、パーソナルコンピュータ１１５−ａおよびスマートフォン１１５−ｂがそれらのＷＬＡＮ接続による第１のＩＰサブネットの一部であり得るとしても、第１のＩＰサブネットは、ＳＯＡバス１０５を介して実装される第２のＩＰサブネットとは別個の異なるものであり得る。
【００３０】
[0041]図１にさらに示すように、ＩＰサービスの各々は、ＳＯＡバス１０５を介して公示される一意の名前を有し得る。各一意の名前は、ＩＰサービスに一様に関連するサービス記述子（たとえば、「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ」）と、ＳＯＡバス１０５によって実装されるＩＰサブネット内でそのデバイスに割り当てられるＩＰアドレスの付加インジケータ（たとえば、１９２．１６８．０．４のＩＰアドレスを示す「ｓ１９２＿１６８＿０＿４」）とを含み得る。一様なサービス記述子を用いて、各ＩＰサービスは、ＳＯＡバス１０５上の他のデバイスによってそのようなものとして迅速に識別され得る。さらに、ＳＯＡバス１０５を介して公示されるＩＰサービスの名前中でＩＰアドレスを示すことによって、ＳＯＡバス１０５を介して実装されるＩＰサブネットにおけるデバイス１１５のＩＰアドレスを判断するのに追加の発見ステップが必要ない。
【００３１】
[0042]ＳＯＡバス１０５のピアツーピアアーキテクチャにより、ＳＯＡバス１０５に接続されたデバイス１１５間でＩＰパケットをルーティングするために別個のルータまたはスイッチが利用可能でない（または必要とされない）。代わりに、ＳＯＡバス１０５上でＩＰサービスを提供する各デバイス１１５は、ＳＯＡバス１０５上でＩＰサービスを提供するそれぞれの他の知られたデバイス１１５のＩＰアドレスの記録を維持し得る。ＩＰパケットは、公示されたＩＰサービスのリモート呼出しを通してＳＯＡバス１０５上のデバイス１１５間で交換され得る。たとえば、パーソナルコンピュータ１１５−ａ（ＩＰアドレス１９２．１６８．０．４）は、ＳＯＡバス１０５上のアドレスの：１．３と：１．６との間でセッションを確立し、スマートフォン１１５−ｂに関連するＩＰサービス（すなわち「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ．ｓ１９２＿１６８＿０＿２１」）に関連するメソッドまたは機能をリモートで呼び出し、ＳＯＡバス１０５を介してスマートフォン１１５−ｂに関連するＩＰサービスにＩＰパケットを渡す（pass）ことによって、１９２．１６８．０．２１（スマートフォン１１５−ｂに関連するＩＰアドレス）にアドレス指定されたＩＰパケットを送信し得る。ＩＰパケットは、リモートで呼び出されたメソッドまたは機能のシンタックス中の引数または他のパラメータとしてスマートフォン１１５−ｂに関連するＩＰサービスに渡され得る。いくつかの例では、ＩＰパケットは、ＩＰサービスによってパケットではなくオブジェクトとして扱われ得る。
【００３２】
[0043]いくつかの例では、複数のＩＰサブネットは、ＳＯＡバス１０５を介して実装され得る。そのような例では、ＩＰサービスは、同じＩＰサブネットに関連するＩＰアドレス間のみでのパケットの転送を可能にするルールを強制し得る。ＩＰサービスのＩＰサブネットは、いくつかの例では、そのＩＰサービスの名前の中に含まれ得る。たとえば、「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ．ｗｅａｔｈｅｒ．ｓ１９２＿１６８＿０＿２１」というＩＰサービス名は、第１のサブネット上のＩＰアドレス１９２．１６８．０．２１に関連するＩＰサービスを指し得るが、「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ．ｓｐｏｒｔｓ．ｓ１９２＿１６８＿０＿２１」というＩＰサービス名は、完全に別個の独立したサブネット上の同じＩＰアドレスを指し得る。デバイス１１５は、ＳＯＡバス１０５によって実装された複数のＩＰサブネットのための複数のＩＰアドレスを有し得る。この場合、デバイス１１５は、複数のＩＰサービスを実行し、各ＩＰサービスは、別個のサブネットに関連付けられていて、および／または単一のＩＰサービスが複数のサブネットを処理することを可能にし得る。単一のＩＰサービスが複数のサブネットを処理する場合、ＩＰサービスの名前は、デバイス１１５に関連する各ＩＰアドレスとサブネットを反映し得る。いくつかの例では、複数のサブネットが発見され得る。たとえば、ユーザは、天気予報に関係するアドホックサブネットを発見することを望むことがある。この例では、ユーザは、「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ．ｗｅａｔｈｅｒ」から始まる名前をもつサービスを求めてＳＯＡバス１０５を探索し得る。ユーザは、一意のＩＰアドレスと同じプリアンブルを使用するサブネットのうちの１つまたは複数上で自分のデバイス１１５のためのＩＰアドレスを公示し得る。
【００３３】
[0044]さらに、いくつかの例では、ＩＰサービスのうちの１つまたは複数は、ドメインネームサービス（ＤＮＳ：Domain Name Service）機能を含み得る。たとえば、パーソナルコンピュータ１１５−ａ上で実行されるアプリケーションは、ドメインホスト名「ｍａｇｅｌｌａｎ．ｉｏｎ．ｌｏｃａｌ」からのファイルにアクセスしようと試み得る。パーソナルコンピュータ１１５−ａ上で実行されるＩＰサービスは、ＳＯＡバス１０５に接続された他のデバイス１１５のうちの１つ上で実行されるＩＰサービスに与えられたドメインを変換するように構成され得る。
【００３４】
[0045]いくつかの例では、１つまたは複数のＩＰサービスの名前は、そのＩＰサービスに関連する任意のドメインホスト名のインジケータを含み得る。たとえば、デバイス１１５によって公示されたＩＰサービスの名前は、「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ．ｓ１９２＿１６８＿０＿２１＿２３５６＿ｍａｇｅｌｌａｎ」であり得る。この例では、サービス名の「Ｍａｇｅｌｌａｎ」構成要素は、ＩＰアドレス「１９２．１６８．０．２１」に関連するドメインホスト名を指す。（たとえば、「ｍａｇｅｌｌａｎ．ｉｏｎ．ｌｏｃａｌ」というホスト名に到達するために）サービス名のホスト名構成要素に「．ｉｏｎ．ｌｏｃａｌ」または別のサフィックスなどの所定のドメインネームが付加され得る。追加または代替として、全ドメインネームが、公示されたサービス名の一部として含まれ得る。解決されたホスト名の名前に関連するサービスがホスト名の下のサブドメインとして使用され得ることがさらに企図される。たとえば、ＳＯＡバス上の「ｗｅａｔｈｅｒ」という名前のサービスがＳＯＡバス上の「ｖｏｙａｇｅｒ」ホスト名に関連付けられている場合、デバイス１１５のうちの１つ上のＤＮＳ機能は、「ｗｅａｔｈｅｒ」サービスの「ｗｅａｔｈｅｒ．ｖｏｙａｇｅｒ．ｉｏｎ．ｌｏｃａｌ．」としてのＤＮＳルックアップを可能にし得る。
【００３５】
[0046]このようにして、他のＩＰサービスは、ＳＯＡバス１０５上の他のＩＰサービスに与えられた名前を発見することによって、ＳＯＡバス１０５上のそれぞれの他のＩＰサービスに関連するドメインホスト名の名前を発見し、追跡し得る。このＤＮＳ機能は、パーソナルコンピュータ１１５−ａまたは別のデバイス１１５が、ＤＮＳサーバと交信することなしにそれのアプリケーションおよびユーザに有効なＤＮＳ解決を与えることを可能にし得る。ＳＯＡバス上の隣接サービスのホスト名がデバイス１１５においてＩＰアドレスに解決されると、ホスト名と解決されたＩＰアドレスとは、（たとえば、ＵＮＩＸ（登録商標）またはＵＮＩＸ（登録商標）様システムにおける「／ｅｔｃ／ｈｏｓｔｓ」にある）デバイス１１５のオペレーティングシステムのホストファイルに追加され得る。このようにして、アプリケーションから知られているホスト名への任意のＤＮＳクエリは、オペレーティングシステムによってＳＯＡバスに関連するＩＰサブネット上での正しいアドレスに自動的に解決され得る。デバイス１１５のオペレーティングシステムレゾルバは、ＳＯＡバス上の公示されたサービスに関連するホスト名に適応するために変更される必要はない。
【００３６】
[0047]いくつかの例では、ＩＰサービス間の効率的で効果的なＩＰパケットルーティングを達成するために、ＩＰサービスのうちの１つまたは複数が様々な追加のルーティングプロトコル（たとえば、マルチパスルーティング）およびサービス品質（ＱｏＳ）機能を実装するように構成され得ることがさらに企図される。
【００３７】
[0048]再び「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ．ｓ１９２＿１６８＿０＿２１＿２３５６＿ｍａｇｅｌｌａｎ」という名前のサービスの例を参照すると、公示されたサービス名中の「２３５６」は、同じサービスを公示する異なるデバイス１１５を区別するためにデバイス１１５によって生成された一意のＩＤに対応する。したがって、公示されたサービス間のＩＰアドレス競合は、同じＩＰアドレスをもつ別のサービスまたはデバイスが同じ一意のＩＤを有するか、または異なる一意のＩＤを有するかを判断することによって検出され得る。ＩＰアドレスが同じ一意のＩＤを有する場合、競合は存在しない。そうでない場合、解決されるべきＩＰアドレス競合が検出され得る。
【００３８】
[0049]次に図２を参照すると、ブロック図に、図１において上記で説明したように、ＩＰサービスがＳＯＡバスを介して実装され得るワイヤレス通信システム２００の一例を示す。システム２００は、基地局２０５（またはセル）と、デバイス１１５と、基地局コントローラ２２０と、コアネットワーク２２５とを含む（コントローラ２２０はコアネットワーク２２５に組み込まれ得る）。システム２００は、複数のキャリア（異なる周波数の波形信号）上での動作をサポートし得る。
【００３９】
[0050]図２の例では、様々なデバイス１１５は、１つまたは複数の基地局２０５を通してコアネットワーク２２５と通信し得る。さらに、いくつかのデバイス１１５は、互いにピアツーピア通信を確立し得る。そのようなデバイス１１５のグループは、ピアツーピアネットワークを確立するために互いに協働し得る。たとえば、デバイス１１５−ｅ、デバイス１１５−ｆ、およびデバイス１１５−ｇは、３つのデバイス１１５間のピアツーピアネットワークを確立するために、デバイス１１５−ｅとデバイス１１５−ｆとの間のピアツーピア接続と、デバイス１１５−ｆとデバイス１１５−ｇとの間のピアツーピア接続とを活用し得る。
【００４０】
[0051]デバイス１１５は、さらに、図１に関して上記で説明したように、ピアツーピアネットワークを介してＳＯＡバス（たとえば、図１のＳＯＡバス１０５）を実装し、ＳＯＡバスを介したＩＰ通信を実装するために協働し得る。このようにして、独立したＩＰサブネットは、基地局２０５またはコアネットワーク２２５に対する依拠なしにデバイス１１５−ｅおよび１１５−ｆの間で確立され得る。ただし、いくつかの例では、デバイス１１５のうちの１つまたは複数は、基地局２０５を通したコアネットワーク２２５への接続を利用するＳＯＡバスを介してサービスを公示し得る。たとえば、デバイス１１５−ｅは、コアネットワーク２２５からファイルをダウンロードし、デバイス１１５−ｅとデバイス１１５−ｆとデバイス１１５−ｇとの間でＳＯＡバスを介して実装されるＩＰサブネットを介してファイルをデバイス１１５−ｇにストリームし得る。
【００４１】
[0052]デバイスは、ＳＯＡバスを介してＩＰサービスを提供するピアツーピアネットワークに加わるために基地局２０５と通信している必要はない。図２に示すように、デバイス１１５−ｉとデバイス１１５−ｊとはそれぞれ、基地局２０５と通信することなしに他のデバイス１１５とのピアツーピア接続を実装し得る。これらのピアツーピア接続を使用して、ＳＯＡバスは、デバイス１１５−ｈと、デバイス１１５−ｉと、デバイス１１５−ｊと、デバイス１１５−ｋとの間で実装され得る。上記で説明したように、ＳＯＡバスは、ＳＯＡバスに接続された４つのデバイス１１５間にプライベートＩＰサブネットを実装するために使用され得る。
【００４２】
[0053]基地局２０５は、基地局アンテナ（図示せず）を介してデバイス１１５とワイヤレス通信し得る。基地局２０５は、複数のキャリアを介して基地局コントローラ２２０の制御下でデバイス１１５と通信し得る。基地局２０５サイトの各々は、それぞれの地理的エリアに通信カバレージを与え得る。各基地局２０５のカバレージエリアは、ここで、２１０−ａ、２１０−ｂ、または２１０−ｃとして識別される。基地局のカバレージエリアは（図示しないが、カバレージエリアの一部分のみを構成する）セクタに分割され得る。システム２００は、異なるタイプの基地局２０５（たとえば、マクロ基地局、マイクロ基地局、および／またはピコ基地局）を含み得る。異なる技術のための重複するカバレージエリアがあり得る。
【００４３】
[0054]デバイス１１５はカバレージエリア２１０全体にわたって分散され得る。デバイス１１５は、固定デバイスに加えて、移動局、モバイルデバイス、アクセス端末（ＡＴ）、ユーザ機器（ＵＥ）、加入者局（ＳＳ）、加入者ユニットと呼ばれることがある。デバイス１１５は、限定はしないが、セルラー電話とワイヤレス通信デバイスとを含み得るが、デスクトップコンピュータ、プリンタ、サーバ、セットトップボックス、テレビジョンおよび他のメディアプレーヤ、携帯情報端末（ＰＤＡ）、他のハンドヘルドデバイス、ネットブック、ノートブックコンピュータなどをも含み得る。いくつかの例では、デバイスのいくつかは、であり得る。
【００４４】
[0055]図１に示すように、いくつかのデバイス１１５は、基地局と直接通信できない。たとえば、セル２１０−ｃ中に、基地局２０５への確立されたワイヤレス接続を有しない様々なデバイス１１５が示されている。図１にさらに示すように、いくつかのデバイス１１５は、基地局２０５を通してメッセージをルーティングすることなしに互いに直接通信し得る。直接または間接的に互いに通信することによって、デバイスは、サービス指向アーキテクチャ（ＳＯＡ）バスを確立するために協働し得、ＳＯＡバスにおいて、デバイス１１５は、バス上の他のデバイスにソフトウェアサービスを公示し、バスを介して互いのサービスを発見し、呼び出すことが可能である。いくつかの例では、実装されたＳＯＡバスを介したデバイス１１５間の通信は、基地局２０５またはそれらの関連するコアネットワーク２２５とは無関係に行われ得る。代替的に、ＳＯＡバスを介した１つまたは複数の通信は基地局２０５を通して行われ得る。
【００４５】
[0056]図３は、ＳＯＡバスを介したＩＰ接続性を実装するための例示的なシステム３００のブロック図である。システム３００は、第１のデバイス１１５−ｌと第２のデバイス１１５−ｍとを含む。第１のデバイス１１５−ｌと第２のデバイス１１５−ｍとは、論理ＳＯＡバス１０５−ａを介して互いに通信する。第１のデバイス１１５−ｌと第２のデバイス１１５−ｍとは、図１または図２を参照しながら上記で説明したデバイス１１５の例であり得る。ＳＯＡバス１０５−ａは、図１を参照しながら上記で説明したＳＯＡバス１０５の一例であり得る。
【００４６】
[0057]本例の各デバイス１１５は、１つまたは複数のプロセッサ３０５と、メインメモリ３１０と、ローカルストレージ３１５と、１つまたは複数の入出力（Ｉ／Ｏ）デバイス３２０とのハードウェアプラットフォームを含む。各デバイス１１５の（１つまたは複数の）プロセッサ３０５は、オペレーティングシステムのカーネル空間およびユーザ空間中で機能の様々なユニットを実行するためにローカルストレージ３１５からメインメモリ３１０にロードされるコードを実行し得る。
【００４７】
[0058]カーネル空間において、図３の例に示されている各デバイス１１５は、Ｂｌｕｅｔｏｏｔｈ通信を送信および受信するためのＢｌｕｅｔｏｏｔｈインターフェース３２５と、ＷＬＡＮ通信を送信および受信するためのＷＬＡＮインターフェース３３０と、仮想ネットワークインターフェース３３５とを含む。仮想ネットワークインターフェースは、ＳＯＡバス１０５−ａを介したＩＰ通信を実装するために、ネットワークスタック中のＩＰレイヤ処理３４０とユーザ空間で実行するＩＰサービス３５５との間でパケットをルーティングし得る。いくつかの例では、仮想ネットワークインターフェース３３５は、知られている仕様に従ってＴＵＮ／ＴＡＰプログラムまたはモジュールを実装し得る。仮想ネットワークインターフェース３３５は、ネットワークレイヤデバイスをシミュレートし得る。ＩＰレイヤ処理３４０とＵＤＰ／ＴＣＰレイヤ処理３４５とは、ネットワークスタックのレイヤ３およびレイヤ４におけるパケット処理に関連する従来の機能を実行し得る。
【００４８】
[0059]ユーザ空間において、図３の例に示されている各デバイス１１５は、ＩＰネットワークを介してデータを送信および受信するように構成されたＩＰアプリケーション３５０と、ＳＯＡバス１０５−ａを介したＩＰ接続性を実装するように構成されたＩＰサービス３５５と、ＳＯＡバス１０５−ａを実装するように構成されたＳＯＡバスデーモン３６０とを含む。ＩＰサービス３５５とＳＯＡバスデーモン３６０とは、図１のＳＯＡバス１０５に関して上記で説明したＩＰサービスとＳＯＡバスデーモンとの例であり得る。
【００４９】
[0060]ＳＯＡバス１０５−ａを介したデバイス１１５間のＩＰ通信を示すために、第２のデバイス１１５−ｍにＩＰパケットを送信する第１のデバイス１１５−ｌのＩＰアプリケーション３５０−ａの例について考えてみる。この例では、ＩＰアプリケーション３５０−ａは、ＵＤＰ／ＴＣＰレイヤ処理３４５−ａとＩＰレイヤ処理３４０−ａとによってＩＰアプリケーションにアセンブルされるデータを生成する。アセンブルされたＩＰパケットは、宛先アドレスとして、第２のデバイス１５５−ｆのＩＰサービス３５５−ｂに関連するＩＰアドレスを有し得る。図２を参照しながら上記で説明したように、第２のデバイス１５５−ｆのＩＰサービス３５５−ｂに関連するＩＰアドレスは、第２のデバイス１５５−ｆのＩＰサービス３５５−ｂの公示された名前に基づいて第１のデバイス１１５−ｌのＩＰサービス３５５−ａによって判断され得る。
【００５０】
[0061]仮想ネットワークインターフェース３３５−ａは、構成されたＩＰパケットを受信するか、またはインターセプトし、第１のデバイスのＩＰサービス３３５−ａにＩＰパケットを転送し得る。第１のデバイスのＩＰサービス３５５−ａは、次いで、ＳＯＡバス１０５−ａを介して第２のデバイス１１５−ｍのＩＰサービス３５５−ｂにＩＰパケットを渡すために、第２のデバイス１１５−ｍのＩＰサービス３５５−ｂに関連するメソッドまたはプロシージャをリモートで呼び出し得る。たとえば、ＩＰパケットは、呼び出されたメソッドまたはプロシージャのシンタックスに関連する引数または他のパラメータとして第２のデバイス１１５−ｍのＩＰサービス３５５−ｂに渡され得る。ＩＰパケットは、ＩＰサービス３５５によって、パケットではなくソフトウェアオブジェクトとして扱われ得る。
【００５１】
[0062]第２のデバイス１１５−ｍのＩＰサービス３５５−ｂにおいて受信されたＩＰパケットは、次いで、第２のデバイスの仮想ネットワークインターフェース３３５−ｂに転送され、仮想ネットワークインターフェース３３５−ｂは、ネットワークスタックのＩＰレイヤ処理３４０−ｂとＵＤＰ／ＴＣＰレイヤ処理３４５−ｂとにＩＰパケットを配置する。ＵＤＰ／ＴＣＰレイヤ処理３４５がＩＰパケットに対して完了すると、ＩＰパケットからのデータは、第２のデバイス１１５−ｍのＩＰアプリケーション３５０−ｂに与えられ得る。
【００５２】
[0063]図４は、第１のデバイスによって実装される第１のＩＰサービス３５５−ｃと第２のデバイスによって実装される第２のＩＰサービス３５５−ｄとの間のＳＯＡバス１０５−ｂを介した例示的な通信信号のブロック図である。ＩＰサービス３５５は、図３を参照しながら上記で説明したＩＰサービス３５５の一例であり得る。第１のデバイスと第２のデバイスとは、図１、図２、または図３を参照しながら上記で説明したデバイス１１５の例であり得る。ＳＯＡバス１０５−ｂは、図１または図３を参照しながら上記で説明したＳＯＡバス１０５の一例であり得る。
【００５３】
[0064]ＩＰサービス３５５の各々は、ＳＯＡバス１０５−ｂ上に一意のアドレスを有し得る。本例では、第１のＩＰサービス３５５−ｃは、ＳＯＡバス１０５−ｂ上に：１．３のアドレスを有し、第２のＩＰサービス３５５−ｄは、ＳＯＡバス１０５−ｂ上に：１．６のアドレスを有する。さらに、各ＩＰサービス３５５は、ＳＯＡバス上で公示され、他のサービスに発見可能である名前を有する。本例の各ＩＰサービス３５５の名前は、ＳＯＡバス１０５−ｂの連続した名前空間中でＩＰサービス３５５に一様に関連したサービス記述子（すなわち、「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ」）を含む。各名前は、さらに、ＳＯＡバス１０５−ｂを介して実装されるＩＰサブネットに関連するＩＰアドレスのインジケータを有する。したがって、第１のＩＰサービス３５５−ｃは、１９２．１６８．０．４のＩＰアドレスをもつＩＰサービス３５５を示す「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ．ｓ１９２＿１６８＿０＿４」の名前を有し、第２のＩＰサービス３５５−ｄは、１９２．１６８．０．２１のＩＰアドレスをもつＩＰサービス３５５を示す「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ．ｓ１９２＿１６８＿０＿２１」の名前を有する。
【００５４】
[0065]第１のＩＰサービス３５５と第２のＩＰサービス３５５とがＩＰパケットを交換する場合、第１のＩＰサービス３５５−ｃは、最初に、ＳＯＡバス１０５−ｂ上の：１．３と：１．６との間のセッション４０５を開始する。第２のＩＰサービス３５５−ｄは、：１．３と：１．６との間のセッション４１０を確認する。第１のＩＰサービス３５５−ｃは、次いで、ＳＯＡバス１０５−ｂを介して第２のＩＰサービス３５５−ｄにおいて「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ．ｓ１９２＿１６８＿０＿２１．ｔｒａｎｓｍｉｔ」という名前のメソッド４１５をリモートで呼び出すことによって、第２のＩＰサービス３５５−ｄのＩＰアドレスにアドレス指定された第１のＩＰパケットを送信し得る。第１のＩＰサービスは、機能に関する引数または他のパラメータとして、呼び出されたメソッドに第１のＩＰパケットを渡す。機能は、ＩＰ通信を実装するためのすべてのＩＰサービスによって実装される機能の知られているセットのうちの１つであり得る。ＩＰパケットは、２つのＩＰサービス３５５間のオブジェクトパラメータとして扱われ得る。第２のＩＰサービス３５５−ｄは、ＳＯＡバス１０５−ｂを介して第１のＩＰサービス３５５−ｃにおいて「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ．ｓ１９２＿１６８＿０＿４．ｔｒａｎｓｍｉｔ」という名前のメソッド４２０をリモートで呼び出し、呼び出されたメソッドに関する引数または他のパラメータとして、メソッドに第２のＩＰパケットを渡すことによって、第１のＩＰサービス３５５−ｃに第２のパケットを送り得る。
【００５５】
[0066]図５に、例示的なデバイス１１５−ｎのブロック図を示す。デバイス１１５−ｎは、図１、図２、または図３を参照しながら上記で説明したデバイス１１５の一例であり得る。デバイス１１５−ｎは、たとえば、完全にハードウェアで実装されるか、またはハードウェアとソフトウェアとの組合せで実装され得る。デバイス１１５−ｎは、ＩＰサービスモジュール５０５と、ＩＰサービス公示モジュール５１０と、ＩＰサービス発見モジュール５１５と、送信機モジュール５２０と、受信機モジュール５２５とを含む。
【００５６】
[0067]ＩＰサービスモジュール５０５は、ピアツーピアネットワークによって実装されるＳＯＡバス（たとえば、図１、図３、または図４のＳＯＡバス１０５）を介してＩＰサービス（たとえば、図３または図４のＩＰサービス３５５）を実装するように構成され得る。ＩＰサービスモジュール５０５によって実装されるＩＰサービスは、ＳＯＡバスを介して実装されるＩＰサブネット内のＩＰアドレスに関連付けられ得る。ＩＰサービスは、ＳＯＡバスを介してサブネット中の異なるＩＰアドレスに関連する他のＩＰサービスと通信するように構成され得る。
【００５７】
[0068]ＩＰサービス公示モジュール５１０は、他のデバイスおよびサービスにＳＯＡバスを介して、ＩＰサービスモジュール５０５によって実装されるＩＰサービスを公示し得る。ＩＰサービス公示モジュール５１０は、ＩＰサービスの名前、ＩＰサービスに関連するＩＰアドレス、メディアアクセス制御（ＭＡＣ）アドレス、グローバル一意識別子（ＧＵＩＤ）、汎用一意識別子（ＵＵＩＤ）、および／またはこれらの原理の特定の実装形態に適し得るＩＰサービスに関する任意の他の情報を公示し得る。いくつかの例では、ＩＰサービス公示モジュール５１０はまた、第１のＩＰサービスに関連するサブネットおよび／またはＤＮＳ解決データを公示し得る。
【００５８】
[0069]ＩＰサービス発見モジュール５１５は、ＳＯＡバスを介して第２のデバイスによって公示された第２のＩＰサービスを発見し得る。本明細書の他の場所でより詳細に説明するように、第２のＩＰサービスは、第２のＩＰサービスの公示された名前中に含まれている一様なＩＰサービス記述子に基づいて発見され得る。ＩＰサービス発見モジュール５１５はまた、公示された名前から、または何らかの他のメソッドによって第２のＩＰサービスに関連するＩＰアドレスを発見し得る。いくつかの例では、ＩＰサービス発見モジュール５１５はまた、ＭＡＣアドレス、ＧＵＩＤ、ＵＵＩＤ、および／またはこれらの原理の特定の実装形態に適し得る第２のＩＰサービスに関する任意の他の情報を発見し得る。追加または代替の例では、ＩＰサービス発見モジュールはまた、第２のＩＰサービスに関連するサブネットおよび／またはＤＮＳ解決データを発見し得る。
【００５９】
[0070]送信機モジュール５２０は、ＩＰサービスモジュール５０５に、ＳＯＡバスを介して第２のＩＰサービスをリモートで呼び出すことと、第２のＩＰサービスを呼び出すことに関連する引数または他のパラメータとして、第２のＩＰサービスに第１のＩＰパケットを渡すこととを行わせることによって、第２のデバイスに少なくとも第１のＩＰパケットを送信するように構成され得る。
【００６０】
[0071]受信機モジュール５２５は、デバイス１１５−ｎのＩＰサービスモジュール５０５によって実装されるＩＰサービスを通してＳＯＡバスを介して第２のデバイスから少なくとも第２のＩＰパケットを受信するように構成され得る。第２のデバイスは、ＳＯＡバスを介してＩＰサービスをリモートで呼び出すことと、ＩＰサービスを呼び出すことに関連する引数またはパラメータとして、ＩＰサービスに第２のＩＰパケットを渡すこととによって、ＩＰサービスに第２のＩＰパケットを送信し得る。
【００６１】
[0072]図６に、例示的なデバイス１１５−ｏのブロック図を示す。デバイス１１５−ｏは、図１、図２、図３、または図５を参照しながら上記で説明したデバイス１１５の一例であり得る。デバイス１１５−ｏは、たとえば、完全にハードウェアで実装されるか、またはハードウェアとソフトウェアとの組合せで実装され得る。図５のデバイス１１５−ｎと同様に、図６のデバイス１１５−ｏは、ＩＰサービスモジュール５０５−ａと、ＩＰサービス公示モジュール５１０−ａと、ＩＰサービス発見モジュール５１５−ａと、送信機モジュール５２０−ａと、受信機モジュール５２５−ａとを含む。さらに、図６のデバイス１１５−ｏは、ＳＯＡバスデーモンモジュール６０５と、ＩＰアプリケーション６１５と、ＩＰアドレス割当てモジュール６２０とを含む。
【００６２】
[0073]ＳＯＡバスデーモンモジュール６０５は、隣接デバイスとのピアツーピア接続を確立するＳＯＡバスデーモンを実装し得る。このようにして、複数のデバイスは、上記で説明したように、ＳＯＡバスを実装するピアツーピアネットワークを確立し得る。ＳＯＡバスデーモンモジュール６０５がデバイス１１５−ｏ上にＳＯＡバス機能を論理的に実装するので、ＩＰサービスモジュール５０５−ａは、ＳＯＡバスデーモンモジュール６０５を通してＳＯＡバスと通信し得る。ＳＯＡバスデーモンモジュール６０５は、ＳＯＡバス上で提供されるサービスとのセッションを確立し、維持し、終了するように構成されたセッション管理サブモジュール６１０を含み得る。
【００６３】
[0074]ＩＰアプリケーション６１５は、ＳＯＡバスを介して実装されるＩＰサブネットを介して送られるデータを生成し、受信する、ユーザ空間において実行されるアプリケーションを含み得る。したがって、送信機モジュール５２０−ａによって送られるＩＰパケット中のデータはＩＰアプリケーション６１５を起源とし得、受信機モジュール５２５−ａによって受信されるＩＰパケット中のデータはＩＰアプリケーション６１５に最終的に転送され得る。
【００６４】
[0075]ＩＰアドレス割当てモジュール６２０は、ＩＰサービスモジュール５０５−ａに関連するＩＰアドレスを生成するように構成され得る。前の図に関して上記で説明したように、ＩＰアドレス割当てモジュール６２０は、ＳＯＡバスのＩＰサブネットに関連する許容範囲内でＩＰアドレスをランダムに生成し、競合についてＳＯＡバスを確認し、競合が発見されない場合、ＩＰサービスモジュール５０５−ａにＩＰアドレスに割り当て得る。
【００６５】
[0076]図７に、本開示の原理による、ピアツーピアネットワークによって実装されるＳＯＡバスを介したＩＰ接続性を可能にするメソッド７００の一例を示す。図７のメソッド７００は、図１〜図６を参照しながら上記で説明した、たとえば、デバイス１１５のうちの１つまたは複数によって実行され得る。
【００６６】
[0077]ブロック７０５において、第１のデバイスにおける第１のＩＰサービスが、ピアツーピアネットワークによって実装されるＳＯＡバスを介して公示される。上記で説明したように、ＳＯＡバスは、ＡＬＬＪＯＹＮサービスバス、エンタープライズサービスバス（ＥＳＢ）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）サービスバスと、シンプルサービスバス（ＳＳＢ）、および／または任意の他の適用可能なタイプのサービスバスを含み得る。第１のＩＰサービスは、第１のＩＰサービスに関連するサービス名を使用して公示され、第１のサービスに関連するサービス名は、ＳＯＡバスにおけるＩＰサービスに一様に関連するサービス記述子（たとえば、「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ」）を含み得る。
【００６７】
[0078]ブロック７１０において、ＳＯＡバスを介して第２のデバイスによって公示された第２のＩＰサービスが発見される。第２のＩＰサービスは、第２のＩＰサービスに関連するサービス名に基づいて発見され得る。第２のＩＰサービスに関連するサービス名は、第１のＩＰサービスに関連するサービス名と同じ、ＩＰサービスのためのサービス記述子を含み得る。ＩＰサービス名の各々はまた、ＳＯＡバスによって実装されるＩＰサブネット内にＩＰサービスを実装するそれぞれのデバイスに関連する一意のＩＰアドレスの指示を含み得る。第１のＩＰサービスと第２のＩＰサービスとのためのサービス名はまた、ＳＯＡバスによって実装される連続した名前空間内に実装され得る。
【００６８】
[0079]ブロック７１５において、第１のデバイスは、ＳＯＡバスを介して第２のＩＰサービスをリモートで呼び出すことによって第２のデバイスに少なくとも第１のＩＰパケットを送信する。たとえば、第１のデバイスは、ＳＯＡバスを介して第２のＩＰサービスに関連する機能をリモートで呼び出し、機能の引数またはパラメータとして第２のＩＰサービスに第１のＩＰパケットを渡し得る。第１のＩＰパケットは、ＳＯＡバスによって実装されるＩＰサブネット内で第２のデバイスに関連する一意のＩＰアドレスにアドレス指定され得る。
【００６９】
[0080]ブロック７２０において、第１のデバイスは、第１の公示されたサービスを通してＳＯＡバスを介して第２のデバイスから少なくとも第２のＩＰパケットを受信する。たとえば、第２のデバイスは、ＳＯＡバスを介して第１のＩＰサービスに関連する機能をリモートで呼び出し、機能の引数またはパラメータとして、第１のＩＰサービスに第２のＩＰパケットを渡し得る。第２のＩＰパケットは、ＳＯＡバスによって実装されるＩＰサブネット内で第１のデバイスに関連する一意のＩＰアドレスにアドレス指定され得る。
【００７０】
[0081]図８は、本開示の原理による、ピアツーピアネットワークによって実装されるＳＯＡバスを介したＩＰ接続性を可能にするメソッド８００の別の例を示すフローチャートである。図８のメソッド８００は、図１〜図６を参照しながら上記で説明した、たとえば、デバイス１１５のうちの１つまたは複数によって実行され得る。
【００７１】
[0082]ブロック８０５において、第１のデバイスの仮想ネットワークインターフェースにおいてＩＰアプリケーションからＩＰパケットが受信される。ＩＰパケットは、第２のデバイスにアドレス指定される。仮想ネットワークインターフェースは、ＳＯＡバスによって実装されるＩＰサブネットに関連するＩＰアドレスにアドレス指定されたＩＰパケットを受信し得る。いくつかの例では、ＳＯＡバス上のＩＰアドレスにアドレス指定されたＩＰパケットは、ＩＰアプリケーションから仮想ネットワークインターフェースに直接転送され得る。追加または代替として、仮想ネットワークインターフェースは、ＳＯＡバス上のＩＰアドレスにアドレス指定されたＩＰパケットをインターセプトし得る。
【００７２】
[0083]ブロック８１０において、仮想ネットワークインターフェースにおいて受信されたＩＰパケットが、第１のデバイスにおいて実行される第１のＩＰサービスに転送される。第１のＩＰサービスは、他のデバイスにＳＯＡバス上で公示されるサービスであり得る。第１のＩＰサービスは、ＳＯＡバスを介して行われたリモート機能またはプロシージャ呼出しのオブジェクトとしてＩＰパケットを送信および受信するように構成され得る。
【００７３】
[0084]ブロック８１５において、第２のデバイスにおいて実行される第２のＩＰサービスが、ＩＰパケットの宛先アドレスから識別される。たとえば、第２のＩＰサービスは、ＳＯＡバス上で公示される、第２のＩＰサービスに関連するＩＰアドレスを含む名前を有し得る。したがって、第２のＩＰサービスは、ＩＰパケットの宛先ＩＰアドレスを含むＩＰサービスを求めてＳＯＡバスを介して公示されるサービスの名前のリストを探索することによって識別され得る。
【００７４】
[0085]ブロック８２０において、ＳＯＡバスを介した第１のＩＰサービスと第２のＩＰサービスとの間に、現在、セッションが存在するかどうかについての判断が行われる。この判断は、ＳＯＡバスを介した第１のデバイスのサービスまたはアプリケーションと外部デバイスのサービスまたはアプリケーションとの間のセッションの進行を追跡する１つまたは複数のテーブルまたは他のデータ構造を使用して行われ得る。
【００７５】
[0086]ＳＯＡバスを介した第１のＩＰサービスと第２のＩＰサービスとの間に、現在、サービスが存在しない場合（ブロック８２０、いいえ）、ブロック８２５において、ＳＯＡバスを介した第１のＩＰサービスと第２のＩＰサービスとの間に新しいセッションが生成される。ＳＯＡバスを介した第１のＩＰサービスと第２のＩＰサービスとの間にセッションが存在するとき、第１のＩＰサービスは、ブロック８３０において、ＳＯＡバスを介して第２のＩＰサービスをリモートで呼び出し、第２のＩＰサービスの機能またはプロシージャのパラメータまたは引数として、第２のＩＰサービスにＩＰパケットを渡す。いくつかの例では、第１のＩＰサービスと第２のＩＰサービスとは、ルーティング可能なパケットではなくオブジェクトとしてＩＰパケットを扱い得る。
【００７６】
[0087]図９に、本開示の原理による、ピアツーピアネットワークによって実装されるＳＯＡバスを介したＩＰ接続性を可能にするメソッド９００の別の例を示す。図９のメソッド９００は、図１〜図６を参照しながら上記で説明した、たとえば、デバイス１１５のうちの１つまたは複数によって実行され得る。
【００７７】
[0088]ブロック９０５において、ＳＯＡバスを介して第２のデバイスにおける第２のＩＰサービスによって第１のデバイスにおける第１のＩＰサービスがリモートで呼び出されたという判断が行われる。たとえば、第２のＩＰサービスがＳＯＡバスを介して第１のＩＰサービスに関連する機能をリモートで呼び出したと第１のデバイスにおいて判断され得る。
【００７８】
[0089]ブロック９１０において、第１のＩＰサービスに関連するＩＰアドレスにアドレス指定されたＩＰパケットが、第１のＩＰサービスを呼び出すことに関連するパラメータとして受信される。たとえば、第１のＩＰサービスは、第２のＩＰサービスによってリモートで呼び出される機能のシンタックス内のオブジェクトパラメータまたは引数としてＩＰパケットを受信し得る。
【００７９】
[0090]ブロック９１５において、第１のＩＰサービスから第１のデバイスにおいて実装される仮想ネットワークインターフェースに受信したＩＰパケットが転送される。仮想ネットワークインターフェースは、ＩＰパケットが従来のネットワーク接続を介した従来のパケットとして受信されたかのようにＩＰパケットを扱い得る。ブロック９２０において、仮想ネットワークインターフェースは、ＩＰレイヤにおいて受信したＩＰパケットの処理を開始する。いくつかの例では、ＴＣＰまたはＵＤＰデータグラムは、ＩＰレイヤ処理中にＩＰパケットから抽出され得る。ＴＣＰまたはＵＤＰデータグラムからのデータは、ＴＣＰまたはＵＤＰ処理の結果に基づいてアプリケーションレイヤに転送され得る。追加または代替として、ＴＣＰまたはＵＤＰデータグラムからのデータは、ＴＣＰまたはＵＤＰソケットのステータスを更新するために使用され得る。
【００８０】
[0091]図１０は、本開示の原理による、ピアツーピアネットワークによって実装されるＳＯＡバスを介したＩＰ接続性を可能にするメソッド１０００の別の例を示すフローチャートである。図１０のメソッド１０００は、図１〜図６を参照しながら上記で説明した、たとえば、デバイス１１５のうちの１つまたは複数によって実行され得る。
【００８１】
[0092]ブロック１００５において、第１のデバイスがＳＯＡバスに接続する。ＳＯＡバスは、たとえば、ＡＬＬＪＯＹＮサービスバス、ＥＳＢ、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）サービスバス、ＳＳＢ、および／または任意の他の好適なＳＯＡバスを含み得る。
【００８２】
[0093]ブロック１０１０において、第１のデバイスにＩＰ通信のためのＩＰアドレスが割り当てられる。ＩＰアドレスは、ＳＯＡバスによって実装されるサブネット内にＩＰアドレスをランダムに生成し、ＳＯＡバスにおけるＩＰアドレス競合について検査することによって、第１のデバイスに割り当てられ得る。
【００８３】
[0094]ブロック１０１５において、第１のデバイスに関連する第１のＩＰサービスの名前が生成される。名前は、ＳＯＡバスにおけるＩＰサービスに一様に関連するサービス記述子と割り当てられたＩＰアドレスとを含み得る。たとえば、ＩＰサービスに一様に関連するサービス記述子が「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ」であり、ＳＯＡを介したＩＰ通信のための第１のデバイスに割り当てられるＩＰアドレスが１９２．１６８．０．４である場合、第１のＩＰサービスの名前は、割り当てられたＩＰアドレスをサービス記述子に付加することによって生成されて、第１のＩＰサービスについて「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ．ｓ１９２＿１６８＿０＿４」の名前を作成し得る。
【００８４】
[0095]ブロック１０２０において、第１のデバイスは、ＳＯＡバスによって実装される連続した名前空間を使用して第１のＩＰサービスの名前を公示する。たとえば、第１のデバイス上で実行されるＳＯＡバスデーモンは、ＳＯＡバスに接続された他のデバイス上で実行される他のＳＯＡバスデーモンに第１のＩＰサービスの名前をブロードキャストし得る。
【００８５】
[0096]ブロック１０２５において、ＳＯＡバスに接続された第２のデバイスに関連する第２のＩＰサービスが発見され得る。たとえば、第１のデバイス上で実行されるＳＯＡバスデーモンは、第２のＩＰサービスの名前を含む第２のデバイス上で実行されるＳＯＡバスデーモンからのブロードキャストを受信し得る。第１のデバイス上で実行されるＳＯＡバスデーモンは、第２のＩＰサービスがＩＰ通信のためのものであると第２のＩＰサービスの名前から判断され、第１のＩＰサービスに第２のＩＰサービスの名前を転送し得る。
【００８６】
[0097]ブロック１０３０において、第２のＩＰサービスに関連するＩＰアドレスが第２のＩＰサービスの名前に基づいて判断される。たとえば、第２のＩＰサービスの名前が「ｏｒｇ．ａｌｌｊｏｙｎ．ｉｐｓｅｒｖｉｃｅ．ｓ１９２＿１６８＿０＿２２」である場合、第１のＩＰサービスは、第２のＩＰサービスに関連するＩＰアドレスが１９２．１６８．０．２２であると判断し得る。
【００８７】
[0098]ブロック１０３５において、第２のＩＰサービスに関連するＩＰアドレスにアドレス指定されたＩＰパケットが、第１のデバイスにおいて生成される。ＩＰパケットは、第１のデバイスにおいてＩＰアプリケーションによって生成され得る。
【００８８】
[0099]ブロック１０４０において、ＳＯＡバスを介して第２のＩＰサービスをリモートで呼び出し、第２のＩＰサービスを呼び出すパラメータとして第２のＩＰサービスにＩＰパケットを渡すことによって、第２のデバイスにＩＰパケットが送信される。いくつかの例では、ＩＰパケットは、第２のＩＰサービスに関連する、第１のＩＰサービスによってリモートで呼び出されるプロシージャまたは他の機能のシンタックスに関連するオブジェクトであり得る。
【００８９】
[0100]図１１は、本開示の原理による、ＳＯＡバスを介したＩＰ通信において使用するためのＩＰアドレスを生成するメソッド１１００の一例を示すフローチャートである。図１１のメソッド１１００は、図１〜図６を参照しながら上記で説明した、たとえば、デバイス１１５のうちの１つまたは複数によって実行され得る。
【００９０】
[0101]ブロック１１０５において、ＳＯＡバスによって実装される現在のＩＰサブネット中で許容範囲のＩＰアドレスが判断される。いくつかの例では、ＳＯＡバスに接続された１つまたは複数のアプリケーションは、許容範囲のＩＰアドレスを公示し得る。追加または代替として、許容範囲のＩＰアドレスは、ＳＯＡバスの特性に基づいて決定論的に識別され得る。
【００９１】
[0102]ブロック１１１０において、サブネットのための許容範囲のＩＰアドレス内のＩＰアドレスが、第１のデバイスにおいて生成される。いくつかの例では、ＩＰアドレスは、ランダムジェネレータと、サブネットのための許容範囲内に生成されたＩＰアドレスを保つマスクを使用して生成され得る。
【００９２】
[0103]ブロック１１１５において、ＳＯＡバスで使用するための、第１のデバイスのＩＰサービス名が生成される。ＩＰサービス名は、ＳＯＡバス上のＩＰサービスに関連する知られているサービス記述子に、生成されたＩＰアドレスを付加することによって生成される。生成されたＩＰサービス名は、ＳＯＡバスによって実装される連続した名前空間のシンタックスに準拠し得る。
【００９３】
[0104]ブロック１１２０において、ＩＰサービス名競合についてＳＯＡバスは問い合わせを受ける。たとえば、生成されたＩＰサービス名は、第１のデバイス上で実行されるＳＯＡバスデーモンからＳＯＡバスに接続された他のデバイス上で実行されるＳＯＡバスデーモンに送信され得る。ＳＯＡバスに接続された別のデバイスが第１のデバイスのために生成されたＩＰサービス名をすでに使用している場合（ブロック１１２５、はい）、フローはブロック１１１０に戻り、第１のデバイスにおいて新しいＩＰアドレスを生成する。そうでない場合（ブロック１１２５、いいえ）、ブロック１１３０において、第１のデバイスに第１のデバイスにおいて生成されたＩＰサービス名とＩＰアドレスとを割り当てる。
【００９４】
[0105]図１２は、本開示の原理による、ＳＯＡバス上でＩＰサービスを発見するメソッド１２００の一例を示すフローチャートである。図１２のメソッド１２００は、図１〜図６を参照しながら上記で説明した、たとえば、デバイス１１５のうちの１つまたは複数によって実行され得る。
【００９５】
[0106]ブロック１２０５において、ＳＯＡバスに接続されたデバイス上で実行されるＳＯＡバスデーモンは、ＳＯＡバスに接続された新しいＩＰサービスをデバイス上で実行される第１のＩＰサービスに通知するための命令を受信する。いくつかの例では、第１のＩＰサービスからの明示的な命令はＳＯＡバスデーモンにおいて受信され得る。追加または代替として、命令は、ＳＯＡバスデーモンの基礎をなすコードの一部としてＳＯＡバスデーモンに本質的に与えられ得る。
【００９６】
[0107]ブロック１２１０において、第１のＩＰサービスは、ＳＯＡバス上の新しい第２のＩＰサービスの通知を受信する。第１のＩＰサービスは、第２のＩＰサービスの名前とＳＯＡバス上での第２のＩＰサービスのロケーションまたはアドレスとを受信する。
【００９７】
[0108]ブロック１２１５において、第２のＩＰサービスのＩＰアドレスが、第２のＩＰサービスに関連する名前に基づいて識別される。第２のＩＰサービスのＩＰアドレスは、ＳＯＡバス上の第２のＩＰサービスのロケーションまたはアドレスとは異なり得る。たとえば、第２のＩＰサービスのＩＰアドレスは「１９２．１６８．０．１２」であり得、ＳＯＡバス上の第２のＩＰサービスのロケーションは「：１．３」であり得る。
【００９８】
[0109]ブロック１２２０において、第２のＩＰサービスのＩＰアドレスが、第１のＩＰサービスによって維持されるマッピングテーブルまたは他のデータ構造におけるＳＯＡバス上の第２のＩＰサービスのロケーションに関連付けられ。
【００９９】
[0110]添付の図面に関して上記に記載した詳細な説明は、例示的な実施形態について説明しており、実装され得るまたは特許請求の範囲内に入る実施形態のみを表すものではない。この説明全体にわたって使用する「例示的」という用語は、「例、事例、または例示の働きをすること」を意味し、「好ましい」または「他の実施形態よりも有利な」を意味しない。詳細な説明は、説明される技法の理解を与えるために、具体的な詳細を含む。しかしながら、これらの技法は、これらの具体的な詳細なしに実施され得る。場合によっては、説明した実施形態の概念を不明瞭にしないように、よく知られている構造およびデバイスがブロック図の形態で示される。
【０１００】
[0111]本明細書で説明する技法は、ＣＤＭＡ、ＴＤＭＡ、ＦＤＭＡ、ＯＦＤＭＡ、ＳＣ−ＦＤＭＡ、および他のシステムなど、様々なワイヤレス通信システムに使用され得る。「システム」および「ネットワーク」という用語は、しばしば互換的に使用される。ＣＤＭＡシステムは、ＣＤＭＡ２０００、ユニバーサル地上波無線アクセス（ＵＴＲＡ：Universal Terrestrial Radio Access）などの無線技術を実装し得る。ＣＤＭＡ２０００は、ＩＳ−２０００、ＩＳ−９５およびＩＳ−８５６規格をカバーする。ＩＳ−２０００リリース０およびＡは、一般に、ＣＤＭＡ２０００  １Ｘ、１Ｘなどと呼ばれる。ＩＳ−８５６（ＴＩＡ−８５６）は、一般に、ＣＤＭＡ２０００  １ｘＥＶ−ＤＯ、高速パケットデータ（ＨＲＰＤ：High Rate Packet Data）などと呼ばれる。ＵＴＲＡは、広帯域ＣＤＭＡ（ＷＣＤＭＡ（登録商標））およびＣＤＭＡの他の変形形態を含む。ＴＤＭＡシステムは、Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ（ＧＳＭ（登録商標））などの無線技術を実装し得る。ＯＦＤＭＡシステムは、ウルトラモバイルブロードバンド（ＵＭＢ：Ultra Mobile Broadband）、発展型ＵＴＲＡ（Ｅ−ＵＴＲＡ：Evolved UTRA）、ＩＥＥＥ８０２．１１（Ｗｉ−Ｆｉ（登録商標））、ＩＥＥＥ８０２．１６（ＷｉＭＡＸ（登録商標））、ＩＥＥＥ８０２．２０、Ｆｌａｓｈ−ＯＦＤＭＡ（登録商標）などの無線技術を実装し得る。ＵＴＲＡおよびＥ−ＵＴＲＡは、ユニバーサルモバイルテレコミュニケーションシステム（ＵＭＴＳ：Universal Mobile Telecommunication System）の一部である。３ＧＰＰロングタームエボリューション（ＬＴＥ）およびＬＴＥアドバンスト（ＬＴＥ−Ａ：LTE-Advanced）は、Ｅ−ＵＴＲＡを使用するＵＭＴＳの新しいリリースである。ＵＴＲＡ、Ｅ−ＵＴＲＡ、ＵＭＴＳ、ＬＴＥ、ＬＴＥ−ＡおよびＧＳＭは、「第３世代パートナーシッププロジェクト」（３ＧＰＰ：3rd Generation Partnership Project）と称する団体からの文書に記載されている。ＣＤＭＡ２０００およびＵＭＢは、「第３世代パートナーシッププロジェクト２」（３ＧＰＰ２：3rd Generation Partnership Project 2）と称する団体からの文書に記載されている。本明細書で説明する技法は、上記のシステムおよび無線技術、ならびに他のシステムおよび無線技術に使用され得る。
【０１０１】
[0112]情報および信号は、多種多様な技術および技法のいずれかを使用して表され得る。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【０１０２】
[0113]本明細書の開示に関連して説明した様々な例示的なブロックおよびモジュールは、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他のプログラマブル論理デバイス、個別ゲートまたはトランジスタ論理、個別ハードウェア構成要素、あるいは本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサは、コンピューティングデバイスの組合せ、たとえばＤＳＰとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、ＤＳＰコアと連携する１つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成としても実装され得る。
【０１０３】
[0114]本明細書で説明した機能は、ハードウェア、プロセッサによって実行されるソフトウェア、ファームウェア、またはそれらの組合せで実装され得る。プロセッサによって実行されるソフトウェアで実装される場合、機能は、１つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され得る。他の例および実装形態は、本開示および添付の特許請求の範囲および趣旨内に入る。たとえば、ソフトウェアの性質により、上記で説明した機能は、プロセッサ、ハードウェア、ファームウェア、ハードワイヤリング、またはこれらのいずれかの組合せによって実行されるソフトウェアを使用して実装され得る。機能を実装する特徴はまた、機能の部分が、異なる物理的ロケーションにおいて実装されるように分散されることを含めて、様々な位置に物理的に配置され得る。また、特許請求の範囲を含めて、本明細書で使用される場合、「のうちの少なくとも１つ」で終わる項目の列挙中で使用される「または」は、たとえば、「Ａ、Ｂ、またはＣのうちの少なくとも１つ」の列挙は、ＡまたはＢまたはＣまたはＡＢまたはＡＣまたはＢＣまたはＡＢＣ（すなわち、ＡおよびＢおよびＣ）を意味するような選言的列挙を示す。
【０１０４】
[0115]コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータ記憶媒体と通信媒体の両方を含む。記憶媒体は、汎用または専用コンピュータによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、コンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態の所望のプログラムコード手段を搬送または記憶するために使用され得、汎用もしくは専用コンピュータまたは汎用もしくは専用プロセッサによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、ソフトウェアが、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびブルーレイ（登録商標）ディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれる。
【０１０５】
[0116]本開示についての以上の説明は、当業者が本開示を作成または使用することができるように与えたものである。本開示への様々な修正は当業者には容易に明らかとなり、本明細書で定義した一般原理は、本開示の趣旨または範囲から逸脱することなく他の変形形態に適用され得る。本開示全体にわたって、「例」または「例示的」という用語は、一例または一事例を示すものであり、言及した例についての選好を暗示せず、または必要としない。したがって、本開示は、本明細書で説明した例および設計に限定されるべきでなく、本明細書で開示する原理および新規の特徴に合致する最も広い範囲を与えられるべきである。
【図１】
2015517232.tif 000003
【図２】
2015517232.tif 000004
【図３】
2015517232.tif 000005
【図４】
2015517232.tif 000006
【図５】
2015517232.tif 000007
【図６】
2015517232.tif 000008
【図７】
2015517232.tif 000009
【図８】
2015517232.tif 000010
【図９】
2015517232.tif 000011
【図１０】
2015517232.tif 000012
【図１１】
2015517232.tif 000013
【図１２】
2015517232.tif 000014
【国際調査報告】
2015517232.tif 000015
2015517232.tif 000016
2015517232.tif 000017