This article describes how to troubleshoot Vortex Cloud not using an incoming connection from Vortex Fog when it is behind a Network Address Translation (NAT).
The case occurs when is Vortex Cloud and Vortex Fog are trying to communicate. Vortex Fog is behind a NAT and running with an OpenSplice product in the same Local Area Network (LAN). Let’s also take in account the existing OpenSplice running in the same LAN as Vortex Fog which is using User Datagram Protocol (UDP) to communicate. Globally, we have this picture and also those configuration files:
Cloud configuration file:
cloud.tcp.interface=eth0 cloud.udp.interface=eth0 cloud.serviceLevel=1 cloud.domainid=0 cloud.participantsAdvertisment=always cloud.externalNetworkAddresses=18.104.22.168:7400
Fog configuration file:
fog.tcp.interface=mesh fog.udp.interface=mesh fog.domainid=0 fog.serviceLevel=0 fog.participantsAdvertisment=always fog.tcp.peers=22.214.171.124:7400
For many reasons, it’s possible to have a communication problems between Vortex Fog(behind a NAT) and Vortex Cloud. E.g: Firewalls, bad configuration, etc… But our study case is that Fog is able to communicate to Cloud by opening a new connection, but Cloud is later not using this incoming connection. For example, Vortex Cloud is trying to open a new connection to Fog by using its private IP address but will obviously fail.
Product updates that could help to debug
To solve the problem between Cloud and Fog, you would have to configure Fog to use this line in your configuration file: fog.externalNetworkAddresses=none. That should be sufficient to prevent Cloud from trying to connect to Fog. However, that won’t work with the OpenSplice inside the same subnet because OpenSplice (using UDP) will no longer connect with Fog. Another fix could be to use TCP only instead of UDP for communication, but it’s not exactly what we want. We effectively want to use UDP Multicast with the existing OpenSplice which is in the same subnet as Vortex Fog.
New configuration options to workaround the issue
For these reasons, we added two new options about externalNetworkAddresses by allowing users to easily configure different external network addresses for UDP and TCP. The new options will be available in Vortex Cafe 2.4.0, Vortex Cloud 2.1.4 and Vortex Fog 2.1.4:
For Vortex Cafe:
For Cloud and Fog:
Those new options take the same values as ddsi.discovery.externalNetworkAddresses and override this one if set in configuration file.