4.10. Transport LBT-RM Operation Options

Scenario Timeline: LBT-RM Source Stops Sending

Reliable multicast protocols like LBT-RM rely on sequence numbers and the arrival of data after a loss as evidence that the loss happened. What would happen if the last packet sent by a source was lost? How would receivers learn of the loss if no further messages were sent?

LBT-RM generates session messages when the sources on a transport session stop sending. These messages contain the expected last sequence number for the session so that receivers can detect loss even when sources aren't sending. Session messages also help to maintain state in multicast routers and switches that require regular traffic to prevent the reclamation of unused forwarding entries.

The following timeline illustrates the case where an LBT-RM source stops sending.

Figure 4-8. An LBT-RM source stops sending

No session messages are generated as long as the interval between lbm_src_send() calls that generate writes to LBT-RM is less than transport_lbtrm_sm_minimum_interval. The interval between session messages starts at transport_lbtrm_sm_minimum_interval and doubles till it reaches transport_lbtrm_sm_maximum_interval.

Scenario Timeline: Receiver Detects End of LBT-RM Session

The absence of activity on a transport session is the only indication receivers get that a source is gone or no longer available through any network path. LBT-RM receivers reset a session activity timer for each data message or session message that arrives. If the activity timer ever expires, all receivers on the transport session receive an LBM_MSG_EOS event. This is illustrated in the following timeline:

Figure 4-9. A receiver detects the end of an LBT-RM session

The activity timer is controlled with the transport_lbtrm_activity_timeout option.

4.10.1. transport_lbtrm_activity_timeout (receiver)

For LBT-RM sessions only. The maximum time that an LBT-RM session may be quiescent before it is deleted and an EOS event is delivered for all topics using this transport session. This option affects the transport session underlying the receiver rather than the receiver itself. The transport session uses the value from the first receiver created on the session and ignores subsequent receivers. Refer to Receiver Configuration and Transport Sessions for additional information.

Scope: receiver
Type: lbm_ulong_t
Units: milliseconds
Default value: 60000 (60 seconds)
When to Set: Can only be set during object initialization.

4.10.2. transport_lbtrm_coalesce_threshold (source)

The threshold of the maximum number of individual messages that are copied into a single buffer before being sent to the LBT-RM source internals. When used with small messages, this allows LBT-RM to use less memory at the expense of an additional copy operation of the data before being sent. The default value is also the maximum allowable value for Solaris and AIX. For Linux and Microsoft® Windows®, the maximum allowable value is 1023. 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. Refer to Source Configuration and Transport Sessions for additional information.

Scope: source
Type: int
Units: number of individual messages
Default value: 15
When to Set: Can only be set during object initialization.

4.10.3. transport_lbtrm_data_rate_limit (context)

Maximum aggregate transmission rate of all LBT-RM sessions' original data plus retransmissions for this particular context.

Scope: context
Type: unsigned long int
Units: bits per second
Default value: 10000000 (10 Mbps)
When to Set: Can only be set during object initialization.

4.10.4. transport_lbtrm_datagram_max_size (context)

The maximum datagram size that can be generated for a LBT-RM transport session. The default value is 8192, the minimum is 500 bytes, and the maximum is 65535.

Scope: context
Type: lbm_uint_t
Units: bytes
Default value: 8192
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

4.10.5. transport_lbtrm_preactivity_timeout (receiver)

Use this option only if the receiver subscribes to a pre-LBM 3.3 source or if you have turned off TSNI messages in your post-LBM 3.3 implementation. Set it high enough so the source starts sending data messages before the timeout expires. This timeout begins when the receiver receives a topic advertisement. Pre-LBM 3.3 sources do not send TSNI messages which in effect inform receivers that the source is alive even though it has not started sending data. Session messages provide the same information but do not begin until after the source has started sending data. This option provides an additional activity timeout for the receiver that does not rely on TSNI or sessions messages. The default value of 0 (zero) essentially disables this option, giving precedence to the receiver's standard activity timeout. This option affects the transport session underlying the receiver rather than the receiver itself. The transport session uses the value from the first receiver created on the session and ignores subsequent receivers. Refer to Receiver Configuration and Transport Sessions for additional information.

Scope: receiver
Type: lbm_ulong_t
Units: milliseconds
Default value: 0 (zero)
When to Set: Can only be set during object initialization.
Version: This option was implemented in LBM 3.4.1/UME 2.1.1.

4.10.6. transport_lbtrm_rate_interval (context)

Period that LBT-RM rate limiter runs. Reducing period reduces burst intensity, but also increases CPU load.

Scope: context
Type: lbm_ulong_t
Units: milliseconds
Default value: 100
When to Set: Can only be set during object initialization.
String value Integer value Description
"10" (Integer value as a string.) 10 LBT-RM rate limiter runs every 10 milliseconds.
"20" (Integer value as a string.) 20 LBT-RM rate limiter runs every 20 milliseconds.
"50" (Integer value as a string.) 50 LBT-RM rate limiter runs every 50 milliseconds.
"100" (Integer value as a string.) 100 LBT-RM rate limiter runs every 100 milliseconds. Default for all.

4.10.7. transport_lbtrm_retransmit_rate_limit (context)

Maximum aggregate transmission rate of all LBT-RM sessions' retransmissions for this particular context. This should always be less than the value used for original data.

Scope: context
Type: unsigned long int
Units: bits per second
Default value: 5000000 (5 Mbps)
When to Set: Can only be set during object initialization.

4.10.8. transport_lbtrm_sm_maximum_interval (source)

The maximum interval between LBT-RM session messages. In lieu of data being sent, LBT-RM sends session messages to inform receivers of sequence numbers and to let receivers know that the sender is still transmitting. 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. Refer to Source Configuration and Transport Sessions for additional information.

Scope: source
Type: lbm_ulong_t
Units: milliseconds
Default value: 10000 (10 seconds)
When to Set: Can only be set during object initialization.

4.10.9. transport_lbtrm_sm_minimum_interval (source)

The minimum interval between LBT-RM session messages. In lieu of data being sent, LBT-RM sends session messages to inform receivers of sequence numbers and to let receivers know that the sender is still transmitting. 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. Refer to Source Configuration and Transport Sessions for additional information.

Scope: source
Type: lbm_ulong_t
Units: milliseconds
Default value: 200 (0.2 seconds)
When to Set: Can only be set during object initialization.

4.10.10. transport_lbtrm_tgsz (source)

The transmission group size used for this Topic when LBT-RM is used. This value must be greater than 0 and must be a power of 2 no greater than 32K. 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. Refer to Source Configuration and Transport Sessions for additional information.

Scope: source
Type: lbm_uint16_t
Units: packets
Default value: 8
When to Set: Can only be set during object initialization.

Copyright (c) 2004 - 2014 Informatica Corporation. All rights reserved.