基本的には、ここの要約。
概要
- 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のインタフェース名を使う。
- Name-based Discovery
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-AT
とWHO-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ルータの振舞は以下のようになる。
- FindAdvertisedName(WKN or WKN prefix)が、アプリから呼び出される。
-
WHO-HAS
メッセージを送信する。 - AllJoynネットワークの、IPマルチキャストグループに対して、
WHO-HAS
メッセージを送信する。 - IPマルチキャストグループに対してListenする。
- 受信した
IS-AT
メッセージを検査する。 -
WHO-HAS
に含まれるWKN/WKN prefixが、受信したIS-AT
に含まれるWKNにマッチするか確認する。- マッチする場合は次へ。
- マッチしない場合は、5へ。
- 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