|
From: Matthew T. <mat...@ad...> - 2016-08-30 08:50:36
|
Hello,
I have two hosts (VM & Pi) that are on different networks that I need to communicate with each other 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
With DCPSDebugLevel & DCPSTransportDebugLevel both set to 0 I get no output at all on the command line (no FQDN warning from Pi as I believe I've successfully dealt with that).
With DCPSDebugLevel & DCPSTransportDebugLevel both set to 1 I get the following output:
VM (as a subscriber):
[matt@VM ~]$ ./sub
(6708|140626970539776) NOTICE: "DCPSPersistentDataDir" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "DCPSPendingTimeout" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "DCPSPublisherContentFilter" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "ORBLogFile" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "ORBVerboseLogging" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "DCPSDefaultAddress" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "FederationRecoveryDuration" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "FederationInitialBackoffSeconds" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "FederationBackoffMultiplier" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "FederationLivelinessDuration" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "scheduler" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "scheduler_slice" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "queue_messages_per_pool" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "queue_initial_pools" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "max_packet_size" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "max_samples_per_packet" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "optimum_packet_size" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "thread_per_connection" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "datalink_release_delay" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "datalink_control_chunks" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "use_multicast" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "multicast_interface" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "nak_depth" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "nak_response_delay" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "heartbeat_period" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "heartbeat_response_delay" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: "handshake_timeout" is not defined in config file - using code default.
(6708|140626970539776) NOTICE: Service_Participant::load_domain_configuration failed to open [domain] section - using code default.
(6708|140626970539776) NOTICE: StaticDiscovery::parse_topics no [topic] sections.
(6708|140626970539776) NOTICE: StaticDiscovery::parse_datawriterqos no [datawriterqos] sections.
(6708|140626970539776) NOTICE: StaticDiscovery::parse_datareaderqos no [datareaderqos] sections.
(6708|140626970539776) NOTICE: StaticDiscovery::parse_publisherqos no [publisherqos] sections.
(6708|140626970539776) NOTICE: StaticDiscovery::parse_subscriberqos no [subscriberqos] sections.
(6708|140626970539776) NOTICE: StaticDiscovery::parse_endpoints no [endpoint] sections.
(6708|140626970539776) NOTICE: Service_Participant::intializeScheduling() - no scheduling policy specified, not setting policy.
(6708|140626970539776) TransportImpl::configure()
transport_type: rtps_udp
name: _OPENDDS__SEDPTransportInst_0103005056a9a52e1a3400005
queue_messages_per_pool: 10
queue_initial_pools: 5
max_packet_size: 2147481599
max_samples_per_packet: 10
optimum_packet_size: 4096
thread_per_connection: false
datalink_release_delay: 10000
datalink_control_chunks: 32
local_address: 0.0.0.0:51002
use_multicast: true
multicast_group_address: 239.192.3.1:8652
multicast_interface: eno16777984
nak_depth: 32
nak_response_delay: 200
heartbeat_period: 1000
heartbeat_response_delay: 500
handshake_timeout: 150000
(6708|140626970539776) TransportImpl::configure()
transport_type: rtps_udp
name: rtps_transport
queue_messages_per_pool: 10
queue_initial_pools: 5
max_packet_size: 2147481599
max_samples_per_packet: 10
optimum_packet_size: 4096
thread_per_connection: false
datalink_release_delay: 10000
datalink_control_chunks: 32
local_address: 10.33.230.1:35837
use_multicast: true
multicast_group_address: 239.192.3.1:7401
multicast_interface:
nak_depth: 32
nak_response_delay: 200
heartbeat_period: 1000
heartbeat_response_delay: 500
handshake_timeout: 30000
Pi (as a publisher):
user@PI:~$ ./pub
(1426|1928328272) NOTICE: "DCPSPersistentDataDir" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "DCPSPendingTimeout" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "DCPSPublisherContentFilter" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "ORBLogFile" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "ORBVerboseLogging" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "DCPSDefaultAddress" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "FederationRecoveryDuration" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "FederationInitialBackoffSeconds" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "FederationBackoffMultiplier" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "FederationLivelinessDuration" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "scheduler" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "scheduler_slice" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "queue_messages_per_pool" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "queue_initial_pools" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "max_packet_size" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "max_samples_per_packet" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "optimum_packet_size" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "thread_per_connection" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "datalink_release_delay" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "datalink_control_chunks" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "use_multicast" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "multicast_interface" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "nak_depth" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "nak_response_delay" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "heartbeat_period" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "heartbeat_response_delay" is not defined in config file - using code default.
(1426|1928328272) NOTICE: "handshake_timeout" is not defined in config file - using code default.
(1426|1928328272) NOTICE: Service_Participant::load_domain_configuration failed to open [domain] section - using code default.
(1426|1928328272) NOTICE: StaticDiscovery::parse_topics no [topic] sections.
(1426|1928328272) NOTICE: StaticDiscovery::parse_datawriterqos no [datawriterqos] sections.
(1426|1928328272) NOTICE: StaticDiscovery::parse_datareaderqos no [datareaderqos] sections.
(1426|1928328272) NOTICE: StaticDiscovery::parse_publisherqos no [publisherqos] sections.
(1426|1928328272) NOTICE: StaticDiscovery::parse_subscriberqos no [subscriberqos] sections.
(1426|1928328272) NOTICE: StaticDiscovery::parse_endpoints no [endpoint] sections.
(1426|1928328272) NOTICE: Service_Participant::intializeScheduling() - no scheduling policy specified, not setting policy.
(1426|1928328272) TransportImpl::configure()
transport_type: rtps_udp
name: _OPENDDS__SEDPTransportInst_0103b827eb63fb61059200005
queue_messages_per_pool: 10
queue_initial_pools: 5
max_packet_size: 2147481599
max_samples_per_packet: 10
optimum_packet_size: 4096
thread_per_connection: false
datalink_release_delay: 10000
datalink_control_chunks: 32
local_address: 0.0.0.0:47755
use_multicast: true
multicast_group_address: 239.192.3.1:8652
multicast_interface: enxb827eb63fb61
nak_depth: 32
nak_response_delay: 200
heartbeat_period: 1000
heartbeat_response_delay: 500
handshake_timeout: 150000
(1426|1928328272) TransportImpl::configure()
transport_type: rtps_udp
name: rtps_transport
queue_messages_per_pool: 10
queue_initial_pools: 5
max_packet_size: 2147481599
max_samples_per_packet: 10
optimum_packet_size: 4096
thread_per_connection: false
datalink_release_delay: 10000
datalink_control_chunks: 32
local_address: 10.198.6.10:60272
use_multicast: true
multicast_group_address: 239.192.3.1:7401
multicast_interface:
nak_depth: 32
nak_response_delay: 200
heartbeat_period: 1000
heartbeat_response_delay: 500
handshake_timeout: 30000
---
Matthew Thyer
(08) 8313 9283
4.38 Ingkarni Wardli
Adelaide University
|