Configuration Guide

Transport LBT-IPC Operation Options

The image below illustrates the timing of an LBT-IPC transport session.

The Source Session Message mechanism enables the receiver to detect when a source goes away and works similarly to LBT-RU. It operates independently of message writes/reads in the Shared Memory Area.

# LBT-IPC Transport Session Management <-

When a source is created, the application can explicitly map it to a transport session by setting the transport_lbtipc_id (source) option. If a previous source was created on the same context with the same ID number, this new source will be mapped to the same transport session. Note that ID numbers can be re-used by different contexts on the same host. The resulting transport sessions will be separate, independent, and non-interfering.

Alternatively, if the application does not explicitly specify a source ID, UM will implicitly assign the new source to a pool of transport sessions defined when the context was created. The pool is defined as a range of ID numbers specified by the options transport_lbtipc_id_low (context) and transport_lbtipc_id_high (context). The numeric range defines the number of transport sessions in the pool.

When a new source is created and the source port is not explicitly defined, UM will check to see how many transport sessions are currently active from the pool within the context. If it is less than the configured range of IDs then UM will use the next ID in the range transport_lbtipc_id_low (context) to transport_lbtipc_id_high (context). However, if the context already has activated all transport sessions in the pool, then the new topic is mapped to one of the existing transport sessions, in round-robin fashion.

# Reference <-

## transport_lbtipc_activity_timeout (receiver) <-

  The maximum period of inactivity (lack of session messages) from an IPC source before the UM delivers an EOS event for all topics using the transport session.

  Refer to Receiver Object and Interrelated Configuration Options for additional information.

  Scope: | receiver
  Type: | lbm_ulong_t
  Units: | milliseconds
  Default value: | 60,000 (60 seconds)
  When to Set: | Can only be set during object initialization.
  Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1

## transport_lbtipc_behavior (source) <-

  Desired flow control behavior when multiple receivers have joined the same LBT-IPC transport session.

  See also Transport LBT-IPC. This option affects the transport session underlying the source rather than the source itself. The transport session uses the value from the first source created on the session and ignores subsequent sources' configuration.

  Refer to Source Object for additional information.

  Scope: | source
  Type: | lbm_ushort_t
  When to Set: | Can only be set during object initialization.
  Version: | This option was implemented in LBM 4.0

  String value | Integer value | Description
  --- | --- | ---
  "source_paced" | LBM_SRC_TOPIC_ATTR_LBTIPC_BEHAVIOR_SOURCE_PACED | Your application writes as fast as it can to the LBT-IPC shared memory area. Slower receivers can experience loss. A source does not consider if any receivers have successfully read a message before it reclaims it. Default for all.
  "receiver_paced" | LBM_SRC_TOPIC_ATTR_LBTIPC_BEHAVIOR_RECEIVER_PACED | Your application writes to the LBT-IPC shared memory area only as fast as the slowest receiver consumes data. A source will not reclaim a message until all receivers have successfully read the message. This slows down all receiver on the LBT-IPC transport session.

## transport_lbtipc_datagram_max_size (context) <-

  The maximum datagram size that can be generated for a LBT-IPC transport session. While IPC does not use UDP datagrams, this option limits the size of the UM message which is given to the underlying transport type, including all UM headers and overhead. The default value is 65535, the minimum is 500 bytes, and the maximum is 65535.

  See Message Fragmentation and Reassembly for more information.

  Informatica does not recommend setting datagram max size options to the network MTU. See Datagram Max Size and Network MTU.

Warning
  When the DRO is in use, it is recommended that all UM applications and components (including the DRO and Persistent Store) share the same maximum datagram size setting. See Protocol Conversion.

  Users of kernel-bypass drivers should also see Dynamic Fragmentation Reduction.

  Scope: | context
  Type: | lbm_uint_t
  Units: | bytes
  Default value: | 65535
  When to Set: | Can only be set during object initialization.
  Version: | This option was implemented in LBM 4.1/UME 3.1/UMQ 1.1

## transport_lbtipc_dro_loss_recovery_timeout (receiver) <-

  For IPC transport sessions originating from a DRO endpoint portal, delay declaring as unrecoverable a lost message.

  Message streams traversing a DRO can have the message order changed. If the DRO's outgoing transport session uses the IPC protocol, these out-of-order messages will normally trigger immediate unrecoverable loss. This timeout allows an opportunity for the messages to be re-ordered properly.

  The value 0 disables this delay (i.e. receivers immediately declare unrecoverable loss).

  See DRO Reliable Loss for more information.

  Scope: | receiver
  Type: | lbm_ulong_t
  Units: | milliseconds
  Default value: | 0
  When to Set: | Can only be set during object initialization.
  Version: | This option was implemented in LBM 6.12

## transport_lbtipc_id (source) <-

  The preferred Transport ID for a specific source's LBT-IPC session.

  If 0, the UM context attempts to find one in the given Transport ID range of transport_lbtipc_id_low (context) and transport_lbtipc_id_high (context).

  See LBT-IPC Transport Session Management and Sources and LBT-IPC for more information.

  Scope: | source
  Type: | lbm_uint16_t
  Default value: | 0 (use open ID)
  When to Set: | Can only be set during object initialization.
  Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1

## transport_lbtipc_id_high (context) <-

  Highest transport ID of the range of available LBT-IPC Transport IDs.

  See LBT-IPC Transport Session Management and Sources and LBT-IPC for more information.

  Scope: | context
  Type: | lbm_uint16_t
  Default value: | 20,005
  When to Set: | Can only be set during object initialization.
  Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1

## transport_lbtipc_id_low (context) <-

  Lowest transport ID of the range of available LBT-IPC Transport IDs.

  See LBT-IPC Transport Session Management and Sources and LBT-IPC for more information.

  Scope: | context
  Type: | lbm_uint16_t
  Default value: | 20,001
  When to Set: | Can only be set during object initialization.
  Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1

## transport_lbtipc_maximum_receivers_per_transport (source) <-

  The maximum number of receiving contexts that can join an IPC transport session.

  Once a receiving context joins an IPC transport session, it can receive messages on multiple topics. Increasing this value increases the amount of shared memory allocated per transport session by a negligible amount.

  Scope: | source
  Type: | lbm_ushort_t
  Default value: | 20
  When to Set: | Can only be set during object initialization.
  Version: | This option was implemented in LBM 4.0

## transport_lbtipc_pend_behavior_linger_loop_count (context) <-

  When using pend as the LBTIPC receiver thread behavior, the receiver loop can linger in a temporary busy wait behavior before pending again.

  At high sustained rates or during short bursts of data, this can result in a significant reduction in the number of kernel calls if more data arrives relatively quickly. Once the burst subsides, the CPU utilization drops again since the receiver would be pending. The default value of 1 results in legacy pend behavior. If the value is set large, significant CPU will be consumed.

  Scope: | context
  Type: | lbm_ulong_t
  Default value: | 1
  When to Set: | Can only be set during object initialization.
  Version: | This option was implemented in UM 6.10

## transport_lbtipc_receiver_operational_mode (context) <-

  The mode in which UM operates to process LBT-IPC messages.

  See Embedded Mode for additional information.

  Scope: | context
  Type: | int
  When to Set: | Can only be set during object initialization.

  String value | Integer value | Description
  --- | --- | ---
  "embedded" | LBM_CTX_ATTR_OP_EMBEDDED | UM spawns a thread to process received LBT-IPC messages. Default for all.
  "sequential" | LBM_CTX_ATTR_OP_SEQUENTIAL | Your application must call lbm_context_process_lbtipc_messages() to process received LBT-IPC messages. If you also set the context's operational_mode option to sequential, your application must donate an additional thread to service the lbm_context_process_events() calls. Note: You can use sequential mode with the C API, but not with the Java API or .NET API. The Java and .NET APIs do not provide an equivalent lbm_context_process_lbtipc_messages() API for LBT- IPC.

## transport_lbtipc_receiver_thread_behavior (context) <-

  Receiver behavior for monitoring the signaling semaphore set by the IPC source when it writes new data to the shared memory area.

  Note that the IPC thread is not the same as the Context thread.

  Scope: | context
  Type: | int
  When to Set: | Can only be set during object initialization.
  Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1

  String value | Integer value | Description
  --- | --- | ---
  "pend" | LBM_CTX_ATTR_IPC_RCV_THREAD_PEND | Receiver waits (sleep) for notification from OS that IPC source has updated the signaling semaphore. This option is best when the IPC source frequently writes new data to the shared area. Default for all.
  "busy_wait" | LBM_CTX_ATTR_IPC_RCV_THREAD_BUSY_WAIT | Provides the lowest latency as the receiver monopolizes the CPU core looking for an incremented semaphore. This option works best for infrequent or sporadic message delivery from the IPC source, but involves a CPU cost.

## transport_lbtipc_recycle_receive_buffers (context) <-

  Enables the use of buffer recycling for IPC operations.

  See Receive Buffer Recycling for more information, including restrictions on the use of this feature.

  Scope: | context
  Type: | int
  When to Set: | Can only be set during object initialization.
  Version: | This option was implemented in UM 6.12

  Value | Description
  --- | ---
  1 | Use buffer recycling.
  0 | Buffer recycling is not used. Default for all.

## transport_lbtipc_sm_interval (source) <-

  Time period between sessions message sent from source to receivers.

  Refer to Source Object and Interrelated Configuration Options for additional information.

  Scope: | source
  Type: | lbm_ulong_t
  Units: | milliseconds
  Default value: | 10,000 (10 seconds)
  When to Set: | Can only be set during object initialization.
  Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1

## transport_lbtipc_transmission_window_size (source) <-

  Size of an LBT-IPC transport's shared memory area.

  This value may vary across platforms. The actual size of the shared memory area equals the value you specify for this option plus about 64 KB for header information. The minimum value for this option is 65,536. Refer to Source Object for additional information.

  Scope: | source
  Type: | size_t
  Units: | bytes
  Default value: | 25165824 (24 MB)
  When to Set: | Can only be set during object initialization.
  Version: | This option was implemented in LBM 3.5ea2/UME 2.2ea1