On Friday 09 October 2015 15:51:37 Drasko DRASKOVIC wrote: > > We had to choose an existing and well-known protocol that allowed for bi- > > directional exchange of messages of arbitrary format. Those qualifications > > exclude MQTT and CoAP, since those aren't known to most consumer routers. > > Well... I still do not understand what could be stopping UDP (CoAP) > communicating devices to initiate the connection to the cloud, then > keep it open for bidirectional communication (WS, CoAP observer, MQTT > pub/sub). Or do you have to initiate the connection from the cloud > towards device behind the firewall and this is what makes problem? But > per my understanding, these node devices will have to initiate > connection already at least announce/register the resources they > offer.
We can stop here. This is not about devices initiating communication to the cloud. Using CoAP for that is definitely possible and this is exactly what we are calling "Cloud Native". This is about remote access back in to your local network. This is about NAT transversal and carrying enough metadata to direct the packets to the target device inside your network. In other words, a VPN solution. > > That is where our opinions differ. Where you say "easy achievable" (sic), > > we say "almost impossible". We have OIC members who have been doing this > > kind of remote access as a business for years and we've trusted their > > experience on the subject, choosing a protocol that has the least amount > > of issues. You can, if you want, argue with them, over technical merits. > > If you do, I will be glad to introduce you to them. But until the opinion > > of experts in the OIC and in IoTivity changes, we'll continue to follow > > their recommendations. > > I am for sure interested in seeing a public discussion about this, > especially that this choice comes as a bit of surprise as something > unusual in IoT world - especially for constrained devices. This discussion happened inside the Open Interconnect Consortium, so it was not public. I can introduce you to my contacts there. And there's another misunderstanding above: this is not about constrained devices. This is about one gateway device in your network that does the NAT trasversal, the VPN solution mediated by the cloud. > I am not arguing that XMPP is not suitable for this. It is well known, > robust protocol with lot of years in use. > > I see following drawbacks on choice: > > # Additional protocol rises complexity > My point is that Iotivity is already using CoAP (great choice - at > least we agree on this 100% :)) for internal communication. We agree on this and we agree that using CoAP for communicating with the cloud whenever possible is a great idea. The problem is the "whenever possible". The back-into-local-network with current consumer-grade routers requires one device to be able to open a port on the router. That usually means TCP anyway and will require UPnP functionality. A much more reliable solution is to open an outgoing connection to the cloud and use that as an intermediary. > # Edge router (or board router, or GW) has to be more powerful device, > probably Linux gateway > People building sensor networks - for example 6LoWPAN network - are > used that one of the same sensors can play the role of edge router. > Introducing different devices sometimes can harm interoperability - > for example on the radio level. And it is sure more complex for > provisioning and installation You've placed a requirement on people upgrading their routers before they can remote-access their internal IoT networks. While I do agree that in the long- run, the routers will be able to do the work for us, in the short term that is not the case. You cannot require an upgrade of the device. > # Cloud services have to support XMPP > This is the big one. For sure that Iotivity-specific handling must be > implemented in the cloud, but as I mentioned before vast majority of > existing IoT clouds are supporting one of the 4 popular IoT protocols: > HTTP, WS, MQTT or CoAP. While it is not so difficult in adding blocks > to support Iotivity in your existing cloud, it is not trivial to add > an additional XMPP server, probably in the form of a library to fit it > in your existing infrastructure, then add whole support for an > additional protocol. We disagree here. It's a lot easier to install an XMPP server in a cloud provider than it is to fix home routers/gateways. And we know of XMPP servers that will handle the load. Besides, this has nothing to do with IoT. Support of the IoT protocols will be important in the future, but we need a solution right now that works. > Now, I know that all these clouds are made for centralized model, > where nodes connect directly to the cloud. But I would prosume that it > would be much bigger effort for any of these companies to add XMPP > support to their structures than to re-use already running servers. I really don't think it is. See above: installing software in a server is a lot easier than fixing the routers. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center
