Configuration Guide

Example Configuration Scenarios

# Highest Throughput <-

The following configuration option tunes UM for the highest possible throughput.

    #
    # LBM can be configured to make efficient use of CPU time, leading
    # to the highest-possible throughput (bytes per second or messages
    # per second). This may come at the expense of latency at low
    # message rates. The following line configures LBM to accumulate
    # 8KB of messages (or for wait implicit_batching_interval) before sending.
    #
    source implicit_batching_minimum_length 8192

# Lowest Latency <-

This is an example configuration that favors low latency at the expense of higher CPU utilization and potentially lower throughput.

    #
    # Latency can be reduced at the expense of network efficiency and
    # system CPU time by adjusting implicit batching parameters. The
    # default parameters hold messages for up to 200 milliseconds or until
    # 2048 bytes are waiting to go. The lowest possible latency is
    # obtained by setting the minimum batching length to 1 byte, which
    # effectively disables the implicit batching feature. For example:
    #
    context mim_implicit_batching_minimum_length 1
    source implicit_batching_minimum_length 1
    #
    # Latency can be kept to a minimum with UM by writing receiving
    # applications that can accept messages in the order they arrive.
    # See https://communities.informatica.com/infakb/faq/5/Pages/80043.aspx
    # for more information. Here's how to use arrival-order delivery:
    #
    receiver ordered_delivery 0
    #
    # Disable Nagel's algorithm (batching) for TCP responses to eliminate
    # queuing latency when sending only single responses.
    #
    context response_tcp_nodelay 1
    #
    # If you are running a LAN environment with under 100 machines, you can
    # drastically improve your recovery related latencies without significant
    # additional network overhead by using the following UM loss recovery parameter.
    # See https://communities.informatica.com/infakb/faq/5/Pages/80070.aspx
    # for additional information about this and other recovery parameters.
    #
    receiver transport_lbtrm_nak_backoff_interval 10

# Creating Multicast Sources <-

This is an example configuration file that changes the default transport to reliable multicast so all sources created send messages over LBT-RM.

    #
    # UM can be configured to create sources using the LBT-RM reliable
    # multicast protocol instead of the default TCP.
    #
    source transport LBT-RM
    #
    # Stable and reliable operation with multicast requires careful
    # setting of rate control limits.
    #
    # It's generally best to start with small limits and gradually
    # increase them after testing indicates that they can be safely
    # sustained on your network.
    #
    # The following example limits (new) data to 10 Mbps and retransmissions
    # to 1 Mbps (10%).
    #
    context transport_lbtrm_data_rate_limit 10000000
    context transport_lbtrm_retransmit_rate_limit 1000000

# Disabling Aspects of Topic Resolution <-

If you need to reduce the amount of UDP-based Topic Resolution traffic on your network, the best way to do it is to switch to TCP-based Topic Resolution and turn off UDP-based TR.

However, many users cannot switch fully to TCP TR (at least not quickly). Especially for users running multiple versions of UM in their network, they may need to run UDP TR for a significant period while components are upgraded.

This section discusses methods for disabling various aspects of UDP-based TR, but this should be done only as part of a larger TR strategy; see UDP-Based Topic Resolution Strategies.

Note
  This section applies to UDP-based topic resolution. TCP-based Topic Resolution is not affected by the configuration options described here.

Attention
  Ultra Messaging does not recommend disabling both advertisements and queries because topics may not resolve at all. Additionally, queries should not be fully disabled in a DRO environment (see Interest and Topic Resolution) or if the resolution_no_source_notification_threshold (receiver) feature is used.

## Disabling Topic Advertisements <-

You can disable topic advertisements in the Initial Phase, Sustaining Phase or both phases of topic resolution.

Disabling Initial Phase Advertisements

Use the following options to disable topic advertisements in only the Initial Phase.

    source resolver_advertisement_minimum_initial_interval 0
    source resolver_advertisement_maximum_initial_interval 0

Disabling Sustaining Phase Advertisements

Use the following option to disable topic advertisements in only the Sustaining Phase.

    source resolver_advertisement_sustain_interval 0

## Disabling Receiver Topic Queries <-

You can disable the querying of topics by receivers in the Initial Phase, Sustaining Phase or both phases of topic resolution.

Disabling Initial Phase Queries

Use the following options to disable topic queries in only the Initial Phase.

    receiver resolver_query_minimum_initial_interval 0
    receiver resolver_query_maximum_initial_interval 0

Disabling Sustaining Phase Queries

Use the following options to disable topic queries in only the Sustaining Phase.

    receiver resolver_query_sustain_interval 0

## Disabling Wildcard Topic Queries <-

Use the following options to disable topic queries by wildcard receivers. This can reduce CPU load and latency outliers under some circumstances, but can also slow down the process of a wildcard receiver discovering all matching sources. Be aware that wildcard receivers will only discover sources when those sources advertise.

Additionally, queries should not be disabled in a DRO environment (see Interest and Topic Resolution).

    wildcard_receiver resolver_query_minimum_interval 0
    wildcard_receiver resolver_query_maximum_interval 0

## Disabling Store (Context) Name Queries <-

When using Persistence, use the following options to disable context name queries by sources. This should only be done if numeric IP addresses are used to identify Stores.

    resolver_context_name_query_maximum_interval 0
    resolver_context_name_query_minimum_interval 0

## All But the Minimum Topic Resolution Traffic <-

TCP-based Topic Resolution minimizes topic resolution traffic.

# Unicast Resolver <-

To use the unicast resolver, use a configuration file like the following example:

    #
    # Topic resolution can be configured to use unicast traffic with an
    # LBM resolver daemon (lbmrd) instead of the default which uses multicast.
    # Be sure to insert the IP address of your lbmrd below.
    #
    context resolver_unicast_daemon 127.0.0.1:15380

# Re-establish Pre-4.0 Topic Resolution <-

Ultra Messaging topic resolution prior to LBM Version 4.0 did not have resolution phases. To implement pre-4.0 topic resolution, include the following configuration option changes in your Ultra Messaging configuration file. This is not recommended unless you have a mix of pre-4.0 and post-4.0 versions of UM that need to interoperate.

    # ----- Disable Advertisements in 4.0 Initial Phase
    source resolver_advertisement_minimum_initial_interval 0

    # ----- Re-establish pre-4.0 Advertisement Behavior
    source resolver_advertisement_minimum_sustain_duration 0
    context resolver_sustain_advertisement_bps 0

    # ----- Disable Queries in 4.0 Initial Phase
    receiver resolver_query_minimum_initial_interval 0

    # ----- Re-establish pre-4.0 Query Behavior
    receiver resolver_query_sustain_interval 100
    receiver resolver_query_minimum_sustain_duration 0
    context resolver_sustain_query_bps 0
    receiver resolution_number_of_sources_query_threshold 1

    # ----- Re-establish pre-4.0 Wildcard Query Behavior
    wildcard_receiver resolver_query_minimum_interval 0

# Re-establish Pre-LBM 3.3 (Pre-UME 2.0) Port Defaults <-

To use the early default ports (prior to LBM 3.3 and UME 2.0), the following configuration file may be used.

    context mim_destination_port 4401
    context mim_incoming_destination_port 4401
    context mim_outgoing_destination_port 4401
    context resolver_multicast_port 2965
    context resolver_multicast_incoming_port 2965
    context resolver_multicast_outgoing_port 2965
    context resolver_unicast_destination_port 5380
    context resolver_unicast_port_high 4406
    context resolver_unicast_port_low  4402
    source  transport_lbtrm_destination_port 4400
    context transport_lbtrm_source_port_high 4399
    context transport_lbtrm_source_port_low  4390
    context transport_lbtru_port_high 4389
    context transport_lbtru_port_high 4380
    receiver transport_lbtru_port_high 4379
    receiver transport_lbtru_port_low  4360
    context request_tcp_port_high 4395
    context request_tcp_port_low 4391
    context transport_tcp_port_high 4390
    context transport_tcp_port_low  4371

Note
  Alternatively, UM will use the early port settings when the environment variable LBM_USE_ORIG_DEFAULT_PORTS is set to 1.

# Configure New Port Defaults <-

In the unusual case that you must run older versions of Ultra Messaging (less than LBM 3.3 / UME 2.0) on certain machine(s) and need these older version to work with the machines running the current versions of UMS and UMP, you can use the following configuration file for the older versions to synchronize port usage between old and current versions.

    context mim_destination_port 14401
    context mim_incoming_destination_port 14401
    context mim_outgoing_destination_port 14401
    context resolver_multicast_port 12965
    context resolver_multicast_incoming_port 12965
    context resolver_multicast_outgoing_port 12965
    context resolver_unicast_destination_port 15380
    context resolver_unicast_port_high 14406
    context resolver_unicast_port_low  14402
    source  transport_lbtrm_destination_port 14400
    context transport_lbtrm_source_port_high 14399
    context transport_lbtrm_source_port_low  14390
    context transport_lbtru_port_high 14389
    context transport_lbtru_port_low 14380
    receiver transport_lbtru_port_high 14379
    receiver transport_lbtru_port_low  14360
    context request_tcp_port_high 14395
    context request_tcp_port_low 14391
    context transport_tcp_port_high 14390
    context transport_tcp_port_low  14371