I have seen some unexpected behaviour when using the RTI Routing Service, and was wondering what might cause this behaviour.
My test setup is as in the picture below:
Publisher 1 and 2 publishes data continously and Subscriber subscribes to the data. All nodes are connectec to each other using the RTI Routing Service.
The test simulates a fall out of Publisher 1 (we disconnect the network cable from the PC), while Publisher 2 and Subscriber is unaffected. We would imagine seeing a steady recieval of samples from Publisher 2 on Subscriber, bu instead we see this (Publisher 1 = Patient 1, Publisher 2 = Patient 2):
We see that after 3 seconds from disconnecting the network cable from Publisher1, Samples from Publisher 2 start dropping of to. After 10 seconds samples from publisher 2 starts getting registered at the Subscriber again, and at 11:07:49 we turn on the network for Publisher 2 again.
Doing the same test with Publisher 2 and Subscriber on the same LAN did not cause the falloff!
QoS parameters are set to default on all participants (Routing Service, Publisher 1 and 2 and Subscriber) DataWriters, DataReaders and Topics except for the following parameters:
DEADLINE = 20 sec
RELIABILITY = BEST_EFFORT
HISTORY = KEEP_LAST, 1
Can anybody explain why the dropoff of samples received from Publisher 2 in the setup above?
Best regards
John Rauhe
Hi John,
Nothing seems obvious. I do not understand how disconnecting Publisher1 could affect the traffic from Publisher2 to the Subcriber...
Can you provide a few more details on your configuration?
Gerardo
Hi Gerardo,
Thanks for replying! I will try to answer your questions below.
Are you using 3 separate routers/NATs?
Yes, the Publisher 1 and 2 and Subscriber is placed at different physical locations and each sits behind a seperate Router/NAT connected to the internet.
Do you have one separate RoutingService behind each of the routers/NATs?
Yes, each of the 3 computers (windows 7) hosting the Publisher 1 and 2 and Subscriber applications, run an instance of the RoutingService application.
What RTI DDS transport are you using to communicate accross the routers/NATs? Is it the default UDP transport or are you configuring TCP?
We have configured the RoutingService based on the tutorial "RTI Routing Service - Getting Started Guide" - "Example 8 - Using the TCP Transport with Routing Service", so I guess we are using TCP transport. I have supplied the QoS file for the applications (Publisher 1 and 2 and Subscriber) and the tcp_transport.xml for the RoutingServices.
We start the RoutingServices by setting the discovery peers to the IP address of the other computers (Publisher 1, 2 and Subscriber) :
set NDDS_DISCOVERY_PEERS=tcpv4_wan://80.62.116.36:7400,tcpv4_wan://IP_OF_OTHER_MACHINE
scripts\rtiroutingservice -cfgFile example/shapes/tcp_transport.xml -cfgName TCP_1
Are these NATs doing address translation? If so how are you configuring the mapping so that the DDS traffic goes through?
In the NAT we have opened for one port for TCP and UDP. This port number is written to the local tcp_transport.xml file and used in the remote peer-computers NDDS_DISCOVERY_PEERS discovery table.
The opened port is forwarded to the DDS computer in the NAT table.
I hope this makes sense. If you need more information, please let me know.
Best regards
John