[Standards] Proposed XMPP Extension: Internet of Things - Discovery

Lance Stout lancestout at gmail.com
Wed Apr 2 07:22:25 UTC 2014

> 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Message signed with OpenPGP using GPGMail
URL: <http://mail.jabber.org/pipermail/standards/attachments/20140402/b664f56f/attachment.sig>

More information about the Standards mailing list