Device Discovery¶
Introduction¶
Sedona Framework (starting with version 1.2) provides a mechanism for performing Sedona device discovery using a special DASP message directed to a multicast address. Any Sedona device on the network that has joined the multicast group then responds to the message with its platform ID and IP address.
Basic Operation¶
- Join: Each Sedona device that supports DASP device discovery joins a specific IP multicast group at startup.
- Discover: The Sox client kicks off a device discovery process by
sending a DASP
DISCOVER
request to the multicast group address. - Respond: When a device receives the
DISCOVER
message, it sends a response containing its address and platform ID. - Process: The client processes any
DISCOVER
responses it receives, and maintains a cached list of devices that responded.
Porting Tips¶
- When porting Sedona to a new platform, the native method
inet::UdpSocket.join()
must be implemented with the target OS function calls to join the socket to a specified multicast group address.UdpSocket.join()
will be called by the Sox service when it opens the socket. The multicast address to use is defined in theinet::UdpSocket
native code. - Do not change the multicast group address definition in the
inet
natives unless you also change the corresponding definition inDaspConst.java
Whatever address you select, it must be the same in both locations. - On the client side, the discover functionality is in
sedona.dasp.DaspSocket
. InvokingDaspSocket.discover()
begins a DASP discovery operation. This clears the current cached list of discovered devices and sends the DASPDISCOVER
message to the multicast group address. - Call
DaspSocket.getDiscovered()
to access the list of discovered devices; it returns an array ofDiscoveredNode
objects.
Limitations¶
- DASP device discovery cannot be implemented on platforms that do not support multicast addressing on either IPv4 or IPv6.
- By default the open source code uses IPv4 multicast addressing. (IPv6 addressing is not officially supported for Sedona 1.2.)
- The specific multicast group address used by this feature is
currently not configurable at runtime. It is hardcoded for the
Sedona VM within the
inet
natives, and for the Java side as a DASP constant. To use a different address, it must be changed in both source locations and both the SVM and thesedona.jar
module must be rebuilt and deployed. - Caution: For DASP Discovery to work, the IP settings for the host's network interface(s) must be correct, including netmask and gateway address. Also, some networks may filter multicast messages, or prohibit them altogether.
Last update: April 28, 2020