|
From: Matthew T. <mat...@ad...> - 2016-08-30 08:55:10
|
Hello,
I have two hosts (VM & Pi) on different networks that need to communicate via a multicast group and I haven't been able to achieve this.
I'm using OpenDDS 3.8 built with ACE+TAO 6.3.3, Oracle JDK 8u?(73+), OpenSSL 1.0.2h.
Configurations are:
OpenDDS VERSION:
3.8
TAO VERSION:
6.3.3
HOST MACHINE and OPERATING SYSTEM:
VM:
VMware ESXi 5.x, x86_64, CentOS 7.2
Pi:
Raspberry Pi v3 model B, ARMv7 32bit, Ubuntu MATE Linux 16.04.1
COMPILER NAME AND VERSION (AND PATCHLEVEL):
VM:
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
Pi:
gcc (Ubuntu/Linaro 5.3.1) 5.3.1 20160413
CONTENTS OF $ACE_ROOT/ace/config.h:
#ifndef ACE_CONFIG_H
#define ACE_CONFIG_H
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#define __ACE_INLINE__ 1 /* Always have inline on - also fixes a Solaris problem with linking templates */
#define ACE_HAS_STRICT 1
#define ACE_COMPILE_TIMEPROBES 1 /* Compile the timeprobe module */
#define ACE_ENABLE_SWAP_ON_WRITE 1
#include "ace/config-linux.h"
/* Fixes for ACE Builds and defined types */
#if !defined(ACE_RANDR_TYPE)
# define ACE_RANDR_TYPE size_t
#endif
#endif
CONTENTS OF $ACE_ROOT/include/makeinclude/platform_macros.GNU:
VM:
TAO_IDL := ${ACE_ROOT}/bin/tao_idl
TAO_IDLFLAGS += -g ${ACE_ROOT}/bin/ace_gperf
TAO_IDL_DEP := ${ACE_ROOT}/bin/tao_idl${EXEEXT}
ssl=1
java=1
include $(DAF_ROOT)/MPC/config/TAF.features
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
Pi: same as above except for last line which is:
include $(ACE_ROOT)/include/makeinclude/platform_linux_armv7.GNU
CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features:
ssl=1
java=1
use_libs_modifier=1
use_exe_modifier=1
SYNOPSIS:
A Publisher and Subscriber will communicate fine when both are on same host (either VM or Pi) but I cannot get communication working between the hosts (on different networks) via multicast.
DESCRIPTION:
Host "VM" has a FQDN which resolves to the IPv4 address on it's network interface.
Host "Pi" has an unqualified hostname which I've added to the /etc/hosts file so it resolves to the IPv4 address on it's network interface.
The hosts are on different networks and IT support say that they have configured the networks for IP Multicast and have provided me with a multicast group address of: 239.192.3.1
I understand that RTPS discovery will not work with the OpenDDS 3.8 native multicast transport so I'm attempting to use the RTPS_UDP transport and have attempted to configure the RTPS discovery accordingly.
I don't know how many hops are between the two networks so I have chosen a rather large TTL of 15.
The network configuration requires noting as:
Both machines have their network configured via DHCP but the configuration provided to Pi is such that:
Pi receives an IP address only (no DNS or default router information).
Both machines are time synchronised (NTP) with Pi achieving this through the IPv4 address of the server.
I am able to ping and SSH between the machines.
IT support advises that no protocols are blocked between the networks.
I've read chapter 7 "Run-time Configuration" of the OpenDDS 3.8 Developer's Guide and created DCPS configuration files for each host as follows:
VM:
[common]
DCPSBit=0
DCPSDebugLevel=1
DCPSTransportDebugLevel=1
DCPSGlobalTransportConfig=rtps_config
DCPSDefaultDiscovery=rtpsDiscoveryConfig
[rtps_discovery/rtpsDiscoveryConfig]
InteropMulticastOverride=239.192.3.1
TTL=15
#MulticastInterface=10.33.230.1
MulticastInterface=eno16777984
[config/rtps_config]
transports=rtps_transport
[transport/rtps_transport]
transport_type=rtps_udp
multicast_group_address=239.192.3.1
ttl=15
local_address=10.33.230.1:
Pi:
[common]
DCPSBit=0
DCPSDebugLevel=1
DCPSTransportDebugLevel=1
DCPSGlobalTransportConfig=rtps_config
DCPSDefaultDiscovery=rtpsDiscoveryConfig
[rtps_discovery/rtpsDiscoveryConfig]
InteropMulticastOverride=239.192.3.1
TTL=15
#MulticastInterface=10.198.6.10
MulticastInterface=enxb827eb63fb61
[config/rtps_config]
transports=rtps_transport
[transport/rtps_transport]
transport_type=rtps_udp
multicast_group_address=239.192.3.1
ttl=15
local_address=10.198.6.10:
DEBUG OUTPUT omitted due to message length limitations!
Regards,
Matthew Thyer
|