Overview Getting Started Specification Latest News


Inter Domain Messaging

“IDM is a virtual-network protocol that supports peer-to-peer communication between devices connected to any type of network. IDM integrates addressing for node, process and resource in a single identifier. The transport and native network protocols can be avoided in many situations”

Over many protocols

Despite some attempts to use IP everywhere, many vendors and technologies will still create and use other domain-dependent protocols. IDM can use these underlying protocols to reach the destination service. Over SSL, WebSockets, ZigBee, nRF24, RS485, RS232, BlueTooth... or any other protocol that can carry a message between two remote or neighbor peers. Of course, also over TCP and UDP protocols.

Drop complexity

Using the correct endpoints, you don't need to care about conections, sockets, resources, handlers... Just focus on writing your application, and let IDM handle the communications part! Also, using ZeroC Ice's intuitive IDL (called Slice), it's easy to define the contract between clients and servers.

Flexible addressing

The variable-length address scheme, from 8 to 128 bits suits your needs. You can create networks of any scale, from a few tens to trillions, but when you have a small deployment you may save valuable bytes in headers and parameters.

Talk to everything

IDM is a true IoT. The messages may travel from any to any, doesn't matter the place, network or device (like Internet does). Without a cloud-centric data repository, without complex stateful bridges... Just messages through the inter-network.

Made to connect your world

IDM is built upon ZeroC Ice. With implementations for C++, C#, Java, JS, Objective-C, PHP, Python and Ruby, its easy to fit in almost every platform.

Ready for constrained devices

IDM requires a very low footprint. Both services and clients may be implemented in highly resource-constrained devices, as low as Class 0 hardware (like Arduino UNO, 32 KiB code, 2 KiB RAM, see RFC 7228).

You can use our IceC (Ice for Constrained devices), available for Arduino, ESP8266 and other platforms.

Just domains

Each incompatible technology or isolated network is a domain. Domains are interconnected by means of stateless virtual routers (sometimes called edge routers). For example, the whole public Internet may be seen as a single domain.

Virtual infrastructure

The IDM routers are services able to forward IDM messages between domains, despite of their encapsulation. The router behavior depends on flow specs, that are managed by a Controller. This takes some ideas from OpenFlow and SDN.

Everything is an object

We see the IoT as an OO infrastructure. Any sensor, actuator or filter is an object, that is, it has a well known interface. IDM is a protocol that directly encapsulates invocations to these objects.