4.11. Hardware Specific Configurations

Depending on the hardware used for the ABC SBC deployment, there may be some fine-tuning needed to get maximum performance.

4.11.1. Mariadb Server Settings

ABC SBC is using internally a local Mariadb database for configuration and monitoring data. It is recommended to optimise the performance of the Mariadb server. This is specifically useful in cases when frequent and many event records are expected to be stored.

The Mariadb server settings are normally applied automatically during the ABC SBC installation. In case the System administrator would like to tune the Mariadb server settings manually, options like the following should be added the into ”[mysqld]” section of Mariadb server configuration file located in “/etc/my.cnf”, before installing ABC SBC:

innodb_flush_log_at_trx_commit = 2

The options can be tuned depending on the available host memory. If for example a low-memory (<16GB RAM) machine is used for trials without specific performance requirements, the last two lines should be commented or removed.

Note: In an active/standby deployment with two servers this step has to be done on each server.

Note about Mariadb users: the ABC SBC uses mariadb “root” user for it’s own databases creation and then “abcsbc-rw” and “abcsbc-ro” users for regular access to the ABC SBC databases. During the installation process, random passwords are generated and set for mariadb users root, abcsbc-rw and abcsbc-ro for security reasons, and stored for later usage by ABC SBC application and upgrade scripts. In case system administrator changes manually the mariadb root user password, he has to update also the stored password by editing file “/etc/frafos/sbc/db_pwd_power”, as it may be used by ABC SBC upgrade scripts.

4.11.2. Network adapters

If the SBC is configured to work as an RTP media relay and a high number of concurrent calls is expected, a good choice of hardware is critical, specifically in terms of the used network adapter. RTP media traffic means high packet rate, with many small packets passing through. Some network adapters have suboptimal throughput under such conditions. Important things to consider when choosing a network adapter are:

  • More receive and transmit packet queues are better. Each queue should be using separate interrupts.
  • The adapter method of distributing packets to individual queues should include not only IP addresses into the “hash” calculation algorithm, but should include also IP packet port numbers. (Otherwise the traffic may end up in just one or two queues in case the SBC is communicating with only a small number of other devices on even just one IP address.)
  • The adapter should be able to buffer packets received and issue interrupts only after some amount of the packets were received or some timeout. This can be usually configured using “coalesce” adapter options.

There is a global config section “Lowlevel” prepared to allow fine-tuning of settings related to network adapters. The settings are applied after the server is rebooted. The reference of the low-level configuration parameters can be found in Section Low-level Parameters.

System administrator can edit the settings depending on the particular hardware used. The settings are:

  • Network interfaces on which a “receive packet steering” kernel feature should be enabled. Recommended setting is to enable it on network interfaces used as media interface.
  • Ethernet adapter coalescing options and rx/tx ring parameters. These affect how many packets the adapter may buffer before issuing an interrupt. There is no recommended setting, as the values highly depend on the ethernet adapter used.
  • Network interfaces on which the individual interrupts for receive and transmit queues should be statically bound to individual CPUs. If running on multi-CPU or multi-core platform, the recommended setting is to enable this option for all network interfaces used as media interface.
  • Options to unload kernel modules for connection tracking or to disable connection tracking completely. Recommended setting is to stop connection tracking. However firewall rules used on the SBC have to be considered as those may need connection tracking active. Note: the default firewall rules that come with the SBC do not use connection tracking.
  • Option to enable or disable automatic run of “mysqlcheck” command at end of server boot process. This command checks and repairs (if needed) mariadb ABC SBC database tables. Default and recommended setting is to enable it.
  • Options to specify system writeback setting. These allow to tune Linux kernel disk caching performance. On a system with big ammount of RAM memory, it it recommeded to limit maximum number of data system can cache before writing back to disk, to prevent high i/o peakes when writing large ammounts of data back.

4.11.3. Configuration of SBC Number of Threads

The major processes of the ABC SBC are running under the name of sems. The number of SBC “sems” process threads affects the overall performance in terms of the maximum number of concurrent calls or maximum rate of calls per second supported by the ABC SBC. The optimal settings depend quite a lot on the number of CPU cores of the server used and also on the type of traffic being processed. As a general rule, for high number of concurrent calls including RTP media with relatively low calls per second rate lower numbers of threads performs better, while for high rates of calls per second with SIP only and no RTP media higher number of threads performs better.

The default value for the number of threads is 16. The recommended settings are:

  • for SIP+RTP traffic use a number of threads equal to the number of CPU cores multiplied by 4
  • for SIP only traffic (no media) use a number of threads equal to the number of CPU cores multiplied by 16

The number of threads can be configured under “Config ‣ Global Config ‣ SEMS”. The setting takes effect using the “Apply button”. It is not propagated to the peer machine if HA configuration is enabled until “Activate sbc configuration” link is used.


Figure 1: Configuration of thread number