Help us understand the problem. What is going on with this article?

ADVERTISEMENT AND DICOVERY

More than 3 years have passed since last update.

基本的には、ここの要約。

概要

  • AllJoynのシステムは、以下の仕組みを提供する。
    • Providerは、自身のサービスをAllJoynのネットワーク越しに宣伝(Advertise)する。
    • Consumerは、Providerが宣伝したサービスを発見(Discovery)し利用する。
  • Wi-Fiのような、下位層のネットワークを複数サポートする。
  • AllJoynは、AdvertiseとDiscoverの仕組みを実現するために、IPマルチキャストを利用している。
  • AllJoynのアプリケーションからは、Discoveryの詳細動作が隠蔽されている。
  • AllJoynルーターは、IP送信を利用したトランスポート固有のDiscoveryをサポートする。
  • アプリケーションは、AllJoynのフレームワークを使って、以下に示すAdvertiseとDiscoveryの手段の一つを使うことができる。
    • Name-based Discovery
      • well-known nameまたは、固有名を使う。
    • Announcement-based Discovery
      • AllJoynのインタフェース名を使う。

v14.06におけるDiscoveryの拡張

  • より効率的にデバイスやアプリを発見するために、NGNSを使って機能が拡張された。
  • NGNSは、mDNSベースのDiscoveryプロトコルであり、Discoveryメッセージに含まれるAllJoynインタフェースを特定することができる。
  • mDNSベースのプロトコルは、Discoveryの応答をユニキャストで行うように設計されているので、マルチキャストに比べて、トラフィックを低減させるなど、パフォーマンスの面で優れている。
  • デバイスアプリの死活確認に、mDNSベースのpingメッセージが追加された。

(注) NGNSとは、Next Generatoin Name Serviceの略らしい。

従来(14.06以前)の名前ベースのDiscovery

  • AllJoynルーターは、name-basedのサービスDiscoveryを可能にする、Name Serviceをサポートしている。
  • Name Serviceは、IPネットワーク上で動作するUDPベースのDiscoveryプロトコル。
  • Name Serviceは、IS-ATWHO-HASメッセージを提供する。これらのメッセージは、DiscoverとAdvertiseのために、well-known nameを配送する。
  • これらのメッセージは、IPマルチキャストで配送される。
  • AllJoyn Frameworkのためのマルチキャストアドレスとポート番号は、IANAにより登録されている。
    • IPv4 Multicast group address : 224.0.0.113
    • IPv6 Multicast group address : FF0X::13A
    • Multicast port number : 9956
  • IS-ATメッセージは、Providerが送信し、WHO-HASメッセージはConsumerが送信するメッセージ。

IS-AT

  • IS-ATは、well-known nameまたは固有名を使ってAllJoynのサービスをAdvertiseするために使う。
  • 一つのIS-ATには、複数のwell-known nameまたは固有名のリストを含めることができる。
  • IS-ATメッセージは、Adv_Validity_Periodコンフィグパラメータによって指定された、well-known nameの有効期間を指定する。
  • AllJoynルーターは、IPマルチキャストで定期的にIS-ATメッセージを送信する。送信期間は、ProviderのAdv_Msg_Retransmit_Intervalコンフィグパラメータによって定められる。
  • IS-ATメッセージは、受信したWHO-HASメッセージに対する応答としても送信される。Consumerに、直ちにサービスの存在を通知することにより、Discoverの時間を最小化するためでもある。

WHO-HAS

  • WHO-HASメッセージは、well-knonw nameまたは固有名を使って、複数のAllJoynサービスを発見するためのメッセージ。
  • IS-ATと似ていて、複数のwell-known nameまたは固有名のリストを含めることができる。
  • 完全なwell-known nameの代わりに、well-known nameのプレフィックスも含めることができる。
    • 例えば、WHO-HASに含まれたプレフィックスがorg.alljyon.chatの場合、IS-ATメッセージにてAdvertiseされたorg.alljoyn.chat._123456.Joeにマッチする。
  • WHO-HASメッセージは、Wi-Fiネットワークの衝突を計算に入れ、時々繰り返し送信する。
  • 以下のパラメータは、送信に関するパラメータ。
    • Disc_Msg_Number_Of_Retries
    • Disc_Msg_Retry_Interval
  • WHO-HASメッセージは、最初の送信後、Disc_Msg_Retry_Interval毎に、Disc_Msg_Number_Of_Retries回送信される。
  • 利用者は、WHO-HASメッセージのレスポンスで、IS-ATメッセージを受信することができる。

利用者側のAllJoynルーターの振舞い

name-basedのDiscoveryの、利用者側におけるAllJoynルータの振舞は以下のようになる。

  1. FindAdvertisedName(WKN or WKN prefix)が、アプリから呼び出される。
  2. WHO-HASメッセージを送信する。
  3. AllJoynネットワークの、IPマルチキャストグループに対して、WHO-HASメッセージを送信する。
  4. IPマルチキャストグループに対してListenする。
  5. 受信したIS-ATメッセージを検査する。
  6. WHO-HASに含まれるWKN/WKN prefixが、受信したIS-ATに含まれるWKNにマッチするか確認する。
    1. マッチする場合は次へ。
    2. マッチしない場合は、5へ。
  7. FoundAdvertisedName(WNK)をアプリにコールバックする。

メッセージのシーケンス

以下は、name-based Discoveryのシナリオ。

  • IP接続がすでに確立されているときのDiscovery
  • 信頼性のないネットワーク上でのDiscovery
  • IP接続の確立が遅延する場合のDiscovery
  • IP接続の切断によるwell-known nameの喪失
  • Provider(サービス提供者)が、well-known nameをキャンセルした場合
  • Consumer(サービス利用者)が、well-known nameによるDiscoveryをキャンセルした場合

IP接続が既に確立されているときのDiscovery

  • 典型的な正常系シーケンス。
  • ProviderとConsumerは、ともにIP接続が確立している。
  • IPマルチキャストで、最初のWHO-HASメッセージが送信されると、Providerは、すぐさまIS-ATメッセージを送信する。

信頼性のないネットワーク上でのDiscovery

  • 信頼性のないネットワーク上で、WHO-HASメッセージが喪失してしまうパターン。
  • WHO-HASメッセージは、Disc_Msg_Number_Of_Retriesパラメータとと、Disc_Msg_Retry_Intervalパラメータに基づき、リトライする。

IP接続の確立が遅延する場合のDiscovery

  • Consumerデバイスの、AllJoynネットワークのAPへの接続が遅延する。WHO-HASメッセージの送信が完了した後、APへの接続が完了するパターン。
  • このパターンは、Consumerデバイスが、新しいAllJoynのネットワークにちょうど参加したときに発生し得る。
  • AllJoynルーターは、FoundAdvertiseNameを呼び出す。

IP接続の切断によるwell-known nameの喪失

WIP

Provider(サービス提供者)が、well-known nameをキャンセルした場合

WIP

Consumer(サービス利用者)が、well-known nameによるDiscoveryをキャンセルした場合

WIP

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away