> Example: Consider 100'000 devices connecting to an XMPP server they've found 
> somehow, and then need to find a Thing Registry to register themselves. One 
> might be preconfigured, but I want to include the case when one is not. 
> 100'000 devices cannot start looping through all possible JIDs and ask 
> service discovery to find out who can what. So it needs, as a last attempt, 
> to try to find it somehow. How do you suggest this done, if you do not accept 
> the methods proposed (as the last resource)?

The approach we would suggest is that the Thing Registry be implemented as a 
server component (and thanks to XEP-0114 can be used with any XMPP server that 
supports XEP-0114, which is to say all of them). A Thing would then iterate 
over the items in a disco#items result for the XMPP server, looking for one 
that provides the registry feature. The disco#items result for a server is on 
the order of tens, not hundreds of thousands. For example, that process is how 
a user discovers SOCKS5 proxies for file transfers.

Implementing a service like the IoT Thing Registry using a client connection 
is, from our collective experience as XMPP devs, ill advised even though it is 
technically possible. Note that several sections of the proposed XEP exist 
solely to work around issues from using a client connection (presence 
subscriptions and limitations with roster sizes) that a server component does 
not need to deal with.

> XEP-0055 has several shortcomings when it comes to the search function we've 
> proposed. This is why we did not used it.

Agreed that XEP-0055 does not meet the needs for this case.


However, in terms of re-using existing protocol building blocks, you should 
look into XEP-0077 some more. People seem to overlook that XEP-0077 is not just 
IBR for new XMPP account provisioning, but also a protocol letting an existing 
JID register with an arbitrary service, and then later update or remove that 
registration. Even the cases where you need additional information (such as 
when Concentrators are used) can be handled using XEP-0077 if that extra data 
can be expressed via data forms.

Implementing some new service as a component, and letting users (which in this 
case would be Things) opt-in for that service using XEP-0077 is a common 
historical pattern.


— Lance

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to