2.4.2. Discovery Performance

This document describes discovery performance for certain scenarios that use RTI Security Plugins. The methodology and the tests are similar to the ones explained in the Discovery Performance section for the Core Libraries. The “No Security” values in the graphs below are equivalent to the Core Libraries (multicast) numbers, so you can compare Connext performance with and without the Security Plugins.

These numbers should only be used as a first rough approximation, since the results are highly dependent on the hardware, software configuration, and network infrastructure of the tested system. These numbers are taken with multicast enabled, since this is the default mode used by Connext for discovery.

2.4.2.1. Time to Complete Discovery

The following graph shows the time it takes to complete endpoint discovery measured for different numbers of DomainParticipants (each with a single endpoint). See the detailed information about the tests below.

Detailed test input

The input parameters chosen for these tests are designed to go through a set of descriptive scenarios, in increasing complexity. These parameters are:

  • Number of hosts: 7

  • Participants in the system: [50 to 300 in steps of 25 participants]

  • Topics in the system: 1

  • Readers per topic: 0.5 * Participants in the system

  • Writers per topic: 0.5 * Participants in the system

Therefore, in this test the number of endpoints is the same as the number of participants, half of them DataReaders and half of them DataWriters.


Detailed results

Time to complete Discovery in 6.1 (Seconds)

Participants

No Security

Authentication Only

Secure Discovery

Secure Discovery + Sign

50

2.2760

4.3590

2.8210

2.8080

75

2.3510

4.4000

4.5090

4.4040

100

2.3500

4.5380

4.4580

4.5930

125

2.3840

4.5420

4.6590

4.6930

150

4.4200

4.7710

4.9590

4.8900

175

3.3630

4.8130

5.0310

5.0800

200

4.4520

5.1000

5.3790

7.5920

225

6.5650

5.4150

5.9290

5.7130

250

6.6730

5.7440

8.1850

8.3000

275

6.8960

8.3340

8.9760

9.2530

300

7.0960

9.0950

10.3510

9.9280

325

7.2540

9.9140

11.7060

11.9550

350

7.4240

11.9780

12.7840

12.9820

375

7.5560

14.5670

15.0370

15.1950

400

9.5910

16.2720

17.4220

17.2310

425

9.9360

19.7870

19.8630

20.3970

450

10.1860

22.9100

23.1940

23.7560

475

10.4920

26.4580

26.7080

28.4460

500

10.7430

31.9670

32.1420

32.5750

525

10.9610

35.3200

35.9350

35.8810

550

11.2040

41.2640

40.9620

41.4230

575

11.4250

44.7960

47.5620

46.2960

600

11.8490

50.7430

51.6190

52.1610

625

12.1230

57.3220

57.5790

59.1990

650

12.3980

62.9020

64.8640

65.6290

675

12.8300

68.9850

72.4900

72.7830

700

13.0360

76.9080

79.8790

82.3730

725

13.5360

85.3710

88.8430

90.0690

750

13.9740

94.3260

97.9820

99.4330

775

14.3910

104.9200

108.5520

110.9630

800

15.8700

115.4030

120.2640

122.3370

825

15.3340

126.9260

132.1020

134.9140

850

15.7880

139.1550

146.1490

148.1240

875

16.3960

153.3190

160.5810

163.7480

900

16.9250

167.7830

175.1140

178.1520

925

19.3020

183.8730

191.3930

193.7220

950

18.0240

200.6570

209.6250

213.2910

975

20.5690

214.4280

226.4330

230.0820

1000

20.9180

233.5670

243.7870

248.7710

1025

19.5760

251.8600

266.6490

269.8340

1050

20.2790

274.7790

287.7060

294.5320

1075

23.9810

295.9090

1100

23.9540

1125

23.0520

1150

24.1260

1175

26.9750

1200

28.7840

1225

25.0830

1250

27.1640

1275

29.3860

1300

28.5730

1325

28.5430

1350

30.7830

1375

34.2250

1400

35.0140

1425

36.1890

1450

36.9700

1475

36.8790

1500

39.5920

1525

38.0380

1550

42.1040

1575

42.5670

1600

44.7470

1625

44.4710

1650

46.3590

1675

47.2270

1700

48.5230

1725

48.7090

1750

53.6230

1775

52.6760

1800

54.2970

1825

56.1120

1850

58.7650

1875

59.2520

1900

58.8420

1925

60.5000

1950

65.9760

1975

64.4320

2000

65.5510

2025

69.0590

2050

68.9960

2075

69.1650

2100

72.1330

2125

72.6110

2150

75.4140

2175

78.6630

2200

78.6470

2250

81.5950

2275

84.2900

2300

86.0180

2325

93.6220

2350

104.8510

2375

96.3120

2400

105.8430

2425

110.6300

2450

112.7820

2475

116.3270

2500

121.3220

2525

130.2110

2550

134.8300

2575

144.7060

2600

151.9670

2625

158.3420

2650

165.8270

2700

185.9890

2725

190.6510

2750

199.0610

2775

213.2880

3000

245.5460


Software information

RTI developed a testing framework specifically designed for discovery benchmarking. This framework was used to perform the tests detailed in this document. This framework is capable of running simultaneously different application loads and commands in all the hosts in the experiment. It can collect all of the results and monitor the resource usage of the hosts.

The framework is composed of four main applications: the Manager, Monitor, Agent and Test Application.

The Manager is the initial process to be run. This process launches and coordinates the Agents on each of the test hosts. The Agents are in charge of launching as many Test Applications as the Manager requests. The Manager also requests the Agents to start the tests and shut down.

The Monitor tool is used to visualize the memory, CPU, and discovery data from the Agent and the Test Application. It also indicates problems in the communication (hosts not connected, missed deadlines, etc.).

RTI Connext 6.1.1 is used for compiling and linking. The architecture chosen for the libraries is x64Linux3gcc4.8.2.


Security Profiles

In this set of tests, we compared the discovery times, increasing the number of endpoints, for different levels of security. We will differentiate among four levels:

  • No Security: This test will use RTI Connext Professional without Security Plugins.

  • Secure Libraries, Authentication Only: This test uses Security Plugins and requires authentication, but doesn’t protect any messages (no encryption and no “MAC’ing”). This test uses this governance file:

    <dds>
        <domain_access_rules>
          <domain_rule>
            <domains>
              <id_range>
                <min>0</min>
              </id_range>
            </domains>
            <allow_unauthenticated_participants>TRUE</allow_unauthenticated_participants>
            <enable_join_access_control>FALSE</enable_join_access_control>
            <discovery_protection_kind>NONE</discovery_protection_kind>
            <liveliness_protection_kind>NONE</liveliness_protection_kind>
            <rtps_protection_kind>NONE</rtps_protection_kind>
            <topic_access_rules>
              <topic_rule>
                <topic_expression>*</topic_expression>
                <enable_discovery_protection>FALSE</enable_discovery_protection>
                <enable_read_access_control>FALSE</enable_read_access_control>
                <enable_write_access_control>FALSE</enable_write_access_control>
                <metadata_protection_kind>NONE</metadata_protection_kind>
                <data_protection_kind>NONE</data_protection_kind>
              </topic_rule>
            </topic_access_rules>
          </domain_rule>
        </domain_access_rules>
    </dds>
    
  • Secure Libraries, Secure Discovery In this test, we enable security restrictions for discovery. This is the governance file used:

    <dds>
        <domain_access_rules>
          <domain_rule>
            <domains>
              <id_range>
                <min>0</min>
              </id_range>
            </domains>
            <allow_unauthenticated_participants>FALSE</allow_unauthenticated_participants>
            <enable_join_access_control>TRUE</enable_join_access_control>
            <discovery_protection_kind>ENCRYPT</discovery_protection_kind>
            <liveliness_protection_kind>ENCRYPT</liveliness_protection_kind>
            <rtps_protection_kind>NONE</rtps_protection_kind>
            <topic_access_rules>
              <topic_rule>
                <topic_expression>*</topic_expression>
                <enable_discovery_protection>TRUE</enable_discovery_protection>
                <enable_read_access_control>TRUE</enable_read_access_control>
                <enable_write_access_control>TRUE</enable_write_access_control>
                <metadata_protection_kind>NONE</metadata_protection_kind>
                <data_protection_kind>NONE</data_protection_kind>
              </topic_rule>
            </topic_access_rules>
          </domain_rule>
        </domain_access_rules>
    </dds>
    
  • Secure Libraries, Secure Discovery + Sign This test is similar to Secure Discovery but also adds an rtps_protection_kind of SIGN. This is the governance file used:

    <dds>
        <domain_access_rules>
          <domain_rule>
            <domains>
              <id_range>
                <min>0</min>
              </id_range>
            </domains>
            <allow_unauthenticated_participants>FALSE</allow_unauthenticated_participants>
            <enable_join_access_control>TRUE</enable_join_access_control>
            <discovery_protection_kind>ENCRYPT</discovery_protection_kind>
            <liveliness_protection_kind>ENCRYPT</liveliness_protection_kind>
            <rtps_protection_kind>SIGN</rtps_protection_kind>
            <topic_access_rules>
              <topic_rule>
                <topic_expression>*</topic_expression>
                <enable_discovery_protection>TRUE</enable_discovery_protection>
                <enable_read_access_control>TRUE</enable_read_access_control>
                <enable_write_access_control>TRUE</enable_write_access_control>
                <metadata_protection_kind>NONE</metadata_protection_kind>
                <data_protection_kind>NONE</data_protection_kind>
              </topic_rule>
            </topic_access_rules>
          </domain_rule>
        </domain_access_rules>
    </dds>
    

Hardware information

Eight hosts were used to run the tests: seven to run the discovery applications and one to monitor and log the output information.

All these hosts have the following characteristics:

Dell R340 Servers (13 Units)
Processor: Intel Xeon E-2278G (3.4-5GHz, 8c/16t, 16MB cache, 2 memory channels @2666MHz)
RAM: 4x 16GB 2666MHz DIMM (64GB RAM)
HD: 480GB SATA SSD
NIC 1: Intel 710 dual port 10Gbps SFP

All the hosts were connected to the same 10 Gigabit Ethernet switch.

Some extra tuning was done to improve the network and memory capabilities of the hosts:

net.core.rmem_default=65536
net.core.rmem_max=10485760
net.core.wmem_default=65536
net.core.wmem_max=10485760
net.ipv4.ipfrag_high_thresh=8388608
net.core.netdev_max_backlog=30000

You can find more information about this tuning for a better Connext response on RTI Community here.


QOS used

These are the QoS settings used for the Test Applications and Agents. In these QoS settings, we avoid sending the type code and TypeObject during discovery, relax the lease duration settings for participant discovery, and increase the buffer size of the UDPv4 receive sockets.

<dds>
    <qos_library name="DiscoveryLibrary">
        <qos_profile name="BaseDiscoveryProfile">
            <participant_qos name="BaseParticipantQos">
                <transport_builtin>
                    <mask>UDPv4</mask>
                </transport_builtin>
                <resource_limits>
                    <type_code_max_serialized_length>0</type_code_max_serialized_length>
                    <type_object_max_serialized_length>0</type_object_max_serialized_length>
                </resource_limits>
                <discovery_config>
                    <participant_liveliness_lease_duration>
                        <sec>200</sec>
                        <nanosec>0</nanosec>
                    </participant_liveliness_lease_duration>
                    <participant_liveliness_assert_period>
                        <sec>10</sec>
                        <nanosec>0</nanosec>
                    </participant_liveliness_assert_period>
                    <remote_participant_purge_kind>LIVELINESS_BASED_REMOTE_PARTICIPANT_PURGE
                    </remote_participant_purge_kind>
                    <max_liveliness_loss_detection_period>
                        <sec>10</sec>
                        <nanosec>0</nanosec>
                    </max_liveliness_loss_detection_period>
                </discovery_config>
                <property>
                    <value>
                        <element>
                            <name>dds.transport.UDPv4.builtin.recv_socket_buffer_size</name>
                            <value>1048576</value>
                        </element>
                    </value>
                </property>
            </participant_qos>
        </qos_profile>
    </qos_library>
</dds>

2.4.2.2. Comparison between 6.1 and 6.0.1

Due to several improvements added in Connext and Security Plugins in 6.1.0, you will see big improvements in discovery time in 6.1. The following graph and tables show the results of the tests above done for both 6.0.1 and 6.1.1.

Note

Note that the numbers used to compare these two releases were taken independently, in a different laboratory, hence the mismatch between these numbers and the ones above. See the hardware information for more details.

Time to complete Discovery (Seconds)

Participants

No Security

Authentication Only

Secure Discovery

Secure Discovery + Sign

50

2.7320

3.0650

3.1160

3.3220

75

3.0160

3.5920

3.6760

3.8000

100

3.4170

4.2510

6.4510

6.1540

125

4.2110

8.1120

8.2910

8.7180

150

5.1460

11.2380

10.3900

10.5340

175

6.0260

14.2170

13.2850

13.2770

200

6.8690

15.0870

17.2230

17.1860

225

8.2230

18.6980

20.9340

21.5640

250

9.8220

24.4040

26.5830

26.7730

275

12.1190

28.1240

32.0280

32.5500

300

13.6740

32.6540

37.4390

38.4670

For more information about the improvements that account for these gains, see:

Hardware information

Eight hosts were used to run the tests: seven to run the discovery applications and one to monitor and log the output information.

All these hosts have the following characteristics:

CPU Intel Core Xeon (12 Cores) 3.6GHz
Memory (RAM): 12 GB
OS: CentOS 7

All the hosts were connected to the same Gigabit Ethernet switch.

Some extra tuning was done to improve the network and memory capabilities of the hosts:

net.core.rmem_default=65536
net.core.rmem_max=10485760
net.core.wmem_default=65536
net.core.wmem_max=10485760
net.ipv4.ipfrag_high_thresh=8388608
net.core.netdev_max_backlog=30000

You can find more information about this tuning for a better Connext response on RTI Community here.