Sim IJskes - QCG wrote:
On 11/07/2010 12:31 PM, Peter Firmstone wrote:
Sim IJskes - QCG wrote:
On 11/07/2010 07:56 AM, Peter Firmstone wrote:
I've been examining the code relating to discovery, feel free to clarify
if I've missed some important detail.

River currently has two discovery protocols,

I assuming you talk about internet deployment here. Assuming the
lowest common denominator here, there is no broadcast on the internet.

Exactly, which is why DNS-SD is attractive (not to be confused with
Multicast DNS), making it possible to discover registrar's in different
domains.

Indeed. What your are talking about is a other kind of registry. The combination of DDNS & DNS-SD.

Yes that's true.


DNS-SD can assist us to discover unknown registrars. DNS-SD would be
used to first discover the host address, port, groups and Service ID of
registrars, then we can use Unicast Discovery to retrieve the lookup
service proxy.

Once you know the ip+port (because you have the queried the dns) you can construct a proxy of a registrar, can you? No need to do unicast discovery anymore. Wrong or right?

Wrong, we still need unicast discovery, we can only store a limited amount of information with DNS-SD, similar to what can be stored in a single datagram packet. Unicast is needed to retrieve the proxy.


Intranet today:

1. Multicast Discovery


The Internet Tomorrow:

1. DNS-SD

Ok. You did not specify DDNS here, but you meant to include it. Correct?

Correct.


So in order to participate in a specific djinn, you need a
pre-specified registry.

This is currently the situation.

Are you sure? You can currently discover a registry without specifing a hostname (other then localhost) can you?


Do you still need discovery in this situation?

No you don't need discovery if you already know your registrar. But it's
no longer dynamic either.

Actually this requires a qualification, you no longer require multicast discovery if you already know where your registrar is, but you still need unicast discovery to retrieve the proxy, so you still need discovery, but it lacks the dynamic multicast component. Must have been tired when I answered it last night.


I'm not fully with you here, the dynamic nature of it, is implemented in DDNS isnt it?

My general sense of your proposal is dynamic discovery by the use of DNS-SD + DDNS, and after this another step of discovery. I cannot place this second step.

The second step is Unicast Discovery (V2) as is currently utilised in River.

DNS-SD + DDNS performs dynamic discovery, to discover the following information:

  /** The lookup service host. */
  protected String host;
  /** The lookup service listen port. */
  protected int port;
  /** The lookup service member groups. */
  protected String[] groups;
  /** The lookup service ID. */
  protected ServiceID serviceID;


As currently implemented, Multicast Discovery (V2) is used to discover this information on an intranet, it is stored in a MulticastAnnouncement object and used in Unicast discovery to retrieve the registrar proxy.

LookupDiscovery contains DecodeAnnouncementTask, which takes a datagram packet, creates a MulticastAnnouncement, then uses Unicast to retrieve the registrar proxy. DecodeAnnouncmentTask's are submitted to a TaskManager.

From LookupDiscovery's documentation:

* This class is a helper utility class that encapsulates the functionality
* required of an entity that wishes to employ multicast discovery to
* find lookup services located within the entity's "multicast radius"
* (roughly, the number of hops beyond which neither the multicast requests
* from the entity, nor the multicast announcements from the lookup service,
* will propagate). This class helps make the process of acquiring references
* to lookup services - based on no information other than lookup service
* group membership - much simpler for both services and clients.

Now I'm wondering if the same thing can be done for groups using DNS-SD & DDNS?

To have several domains participating in a group, a helper utility, searches DNS-SD records for jini with that group, if clients and registrar's can authenticate each other, belonging to that group, then we have a dynamic djinn group that exists on the internet.

An interested user might initially browse groups looking for something of interest, then dynamically discover all the registrar's in that group, followed by actual service discovery, filtering by entry, then performing some more specific local filtering with entry's (with delayed unmarshalling), followed by unmarshalling a registrar proxy and using it via a Service UI.

Seems a very powerful concept.

Cheers,

Peter.


Reply via email to