Logical Domains 1.3 Administration Guide

Discovering Systems Running Logical Domains Manager

Multicast Communication

This discovery mechanism uses the same multicast network that is used by the ldmd daemon to detect collisions when automatically assigning MAC addresses. To configure the multicast socket, you must supply the following information:


#define	MAC_MULTI_PORT		64535
#define	MAC_MULTI_GROUP		"239.129.9.27"

By default, only multicast packets can be sent on the subnet to which the machine is attached. You can change the behavior by setting the ldmd/hops SMF property for the ldmd daemon.

Message Format

The discovery messages must be clearly marked so as not to be confused with other messages. The following multicast message format ensures that discovery messages can be distinguished by the discovery listening process:


#include <netdb.h> /* Used for MAXHOSTNAMELEN definition */
#define	MAC_MULTI_MAGIC_NO	92792004
#define	MAC_MULTI_VERSION	1

enum {
	SEND_MSG = 0,
	RESPONSE_MSG,
	LDMD_DISC_SEND,
	LDMD_DISC_RESP,
};

typedef struct {
	uint32_t	version_no;
	uint32_t	magic_no;
	uint32_t	msg_type;
	uint32_t	resv;
	union {
		mac_lookup_t		Mac_lookup;
		ldmd_discovery_t	Ldmd_discovery;
	} payload;
#define	lookup		payload.Mac_lookup
#define	discovery	payload.Ldmd_discovery
} multicast_msg_t;

#define	LDMD_VERSION_LEN	32

typedef struct {
	uint64_t mac_addr;
	char		source_ip[INET_ADDRSTRLEN];
} mac_lookup_t;

typedef struct {
	char		ldmd_version[LDMD_VERSION_LEN];
	char		hostname[MAXHOSTNAMELEN];
	struct in_addr	ip_address;
	int		port_no;
} ldmd_discovery_t;

ProcedureDiscover Logical Domains Managers Running on Your Subnet

  1. Open a multicast socket.

    Ensure that you use the port and group information specified in Multicast Communication.

  2. Send a multicast_msg_t message over the socket.

    The message should include the following:

    • Valid value for version_no, which is 1 as defined by MAC_MULTI_VERSION

    • Valid value for magic_no, which is 92792004 as defined by MAC_MULTI_MAGIC_NO

    • msg_type of LDMD_DISC_SEND

  3. Listen on the multicast socket for responses from Logical Domains Managers.

    The responses must be a multicast_msg_t message with the following:

    • Valid value for version_no

    • Valid value for magic_no

    • msg_type set to LDMD_DISC_RESP

    • Payload consisting of a ldmd_discovery_t structure, which contains the following information:

      • ldmd_version Version of the Logical Domains Manager running on the system

      • hostname Host name of the system

      • ip_address IP address of the system

      • port_no Port number being used by the Logical Domains Manager for communications, which should be XMPP port 6482

    When listening for a response from Logical Domains Managers, ensure that any auto-allocation MAC collision-detection packets are discarded.