Try TT Now

TTM Network Administration

Accumulation

Overview

Both Accumulation and Nagling are used to conserve bandwidth by combining multiple packets of price data into a single message before sending it over the TCP/IP connection to the various remote clients.

  • Nagling collects packets until an ACK message is received from the remote side, or until the combined packets equal a full packet. The collected packets are then sent as a single message. Nagling increases network performance, but provides slightly slower price data distribution.
  • Accumulation also collects packets, but does not rely on an ACK message to send the combined packets as a single message. Instead, both the collection interval and the message size are configurable. Accumulation also increases network performance but has less of a price distribution delay than Nagling.

Both Accumulation and Nagling are disabled by default. Accumulation and Nagling cannot be run simultaneously, and neither is required. Please contact your TAM for recommendations for your specific network.

Enabling Nagling

For TTM Daemons and remote daemons, Nagling is enabled or disabled by the TcpNoDelay parameter in the <General> section of the ttmd.cfg file. For TTM Router Daemons, Nagling is enabled or disabled by the TcpNoDelay parameter at the <Routing Entry> level or the <Neighbor> level of the ttmrd.cfg file. When set to true, the Host Daemon sends its price data without Nagling. When set to false the host daemon Nagles its price data.

For Host Daemons, TT recommends that you set the value to false (use Nagling). To disable Nagling, set this value to true.

Note

If TcpNoDelay is set to false, Nagling is used and accumulation is disabled, even if the accumulation parameters are configured.

Enabling Nagling from a Remote Proxy Client

The Remote Client (Remote Host Proxy) can override the Remote Host Daemon’s (remote daemon’s) TcpNoDelay setting by adding the RemoteTcpNoDelay parameter to the Remote Client’s ttmd.cfg file. This allows one client have Nagling enabled, while another has Nagling disabled. RemoteTcpNoDelay is set per service so that one service can have Nagling enabled (e.g., prices), while another can have Nagling disabled (e.g., orders).

Proxy Nagling Parameters
ParameterDescription
RemoteTcpNoDelay

Overrides the Remote Host Daemon TcpNoDelay setting. Valid values are: None, True, and False.

To enable Nagling for a specific service, on the Remote Client, add RemoteTcpNoDelay=false to the proxy service section that requires nagling. To disable Nagling for a specific service, add RemoteTcpNoDelay=true to the proxy service section that will not use Nagling.

The Remote Host Daemon logs a message similar to the following if the flag that gets sent by the Remote Client differs from the Remote Host Daemon’s TcpNoDelay flag:

01/08/2009 13:19:26.597 INFO: Client connection overriding daemon TcpNoDelay flag. Setting to TRUE.

If the RemoteTcpNoDelay parameter is omitted or set incorrectly, the setting defaults to none.

After making changes to the ttmd.cfg<Proxy> section, stop Guardian and then run ttmd –k from the command prompt to kill the service. You can then re-launch Guardian.

The following example shows Nagling enabled for prices (service 8900) and disabled for order confirmations and heartbeats (service 8901).

Example Setting Nagling from the Proxy

<Proxy>

<Service1>

Service = 8900

compression_level = false

TcpNoDelay = true

RemoteTcpNoDelay = true

</Service1>

<Service2>

Service = 8901

compression_level = false

TcpNoDelay = true

RemoteTcpNoDelay = false

</Service2>

<Daemon1>

Port = 10200

Host = 192.168.80.103

</Daemon1>

</Proxy>

Enabling and Configuring Accumulation

Accumulation is configured using the accumulator_timeout and accumulator_mtu parameters. For help determining the optimal settings for your network, please contact your TAM.

Accumulation Parameters
ParameterDescription
accumulator_timeout

The number of microseconds that TTM collects packets into a single message (0 to 5000000 microseconds). The message is sent when either the accumulator_timeout or accumulator_mtu is reached. To disable accumulation, set accumulator_timeout or accumulator_mtu to 0. accumulator_timeout is disabled by default.

If accumulator_timeout is set to a value greater than 5000000 microseconds (5 seconds), accumulation is disabled and the system generates the following message:

WARNING - Disabling accumulation. AccumulatorTimeout out of range (X). Valid range 0 - 5000000 µs.

accumulator_mtu

The number of bytes of data the system will collect into a single message before sending the message out (0 to 32000 bytes). The message is sent when either the accumulator_timeout or accumulator_mtu is reached. To disable accumulation, set accumulator_timeout or accumulator_mtu to 0. accumulator_timeout is set to 1460 bytes by default.

Note

TcpNoDelay must be set to True if Accumulation should be enabled. If TcpNoDelay is set to False, Nagling is used and accumulation is disabled, even if the accumulation parameters are configured.

For TTM Daemons and remote daemons, Accumulation is configured in the ttmd.cfg file, per service. TTM Router Daemons configure accumulation in the ttmrd.cfg file, per neighbor. The following examples show an example ttmd.cfg file and an example ttmrd.cfg file.

Example ttmd.cfg - Accumulation

<TTMConfiguration>

<General>

. . .

TcpNoDelay = true

</General>

<MulticastGroups>

. . .

</MulticastGroups>

<LocalServices>

<Service1>

Service = 8900

# accumulator_timeout is in microseconds, must be less than

# 5000001 usec (5 seconds) or we'll default to 0 (off)

accumulator_timeout = 50000

# accumulator_mtu is in bytes accumulator_mtu = 800

</Service1>

<Service2>

. . .

</Service2> </LocalServices>

</TTMConfiguration>

Example ttmrd.cfg - Accumulation

<Neighbor>

name = LANB_10.244.68.100_8900

location = 10.244.68.100

port = 10300

compression_level = true

passive = false

cost = 1

TcpNoDelay = true

accumulator_timeout = 50000

accumulator_mtu = 1460

</Neighbor>