Server

From Bondix Wiki
Revision as of 13:46, 6 February 2023 by Red (talk | contribs)

The Bondix SANE Server is a universal Linux service for x86_64 architectures (other architectures available on request). Thanks to static compilation, there are no special host operating system requirements such as specific LibC versions - the only requirement is kernel support for virtual tun/tap network interfaces.

Requirements

Resources

The resource requirement is based on the peak total throughput of the installation and the number of simultaneous tunnel connections. This formula can be used as a rule of thumb for the required memory: Memory requirement (megabytes) = Bandwidth(Mbit) / 2 + TunnelCount * 5

Example: An installation of 100 tunnels should guarantee 50 Mbit/sec for each instance at full load. The peak bandwidth would thus be 100 * 50 Mbit = 5000 Mbit/sec. Using the above formula, this results in a memory requirement of approx. 3 gigabytes. In addition to memory, the number of CPU cores is also critical. Bondix SANE Server distributes incoming tunnels to different CPU cores for load balancing. While the maximum throughput per CPU core depends on the hardware used, 500 - 1000 Mbit can be taken as a conservative estimate.

Note: These assumptions for storage do not take into account requirements for the host operating system, other services, and the like. Requirements for storage space are negligible.

Public Ports

Bondix SANE Server requires a publicly accessible TCP port (default 443, but freely selectable) and at least one UDP port - the number of UDP ports depends on the environments configured.

Installation

...

Configuration

The default installation script comes with a default configuration that enables the webinterface, where environment and tunnel configuration can be done. However, configuration is very versatile and can be customized.

JSON Configuration

Configuration is done using JSON commands. These can either be sent via a raw TCP socket (localhost:5112), or written to a configuration file (in a json-array) that is parsed on start-up.

By default, S.A.NE server checks for the existence of a configuration file in its installation directory (e.g. /opt/bondix/server/saneserver.json) and at /etc/saneserver.json. If you want SANE server to load a configuration from a different location, you can specify it using a command line parameter.

Configuration Commands

For a complete reference list of available commands, see Server Configuration.

Environments

Environments are a collection of tunnels that share certain resources, like packet buffers, thread, UDP port and virtual network interfaces.

Server Environment Settings.png

Running

The software can be run in the shell using /opt/bondix/server/saneserver, where it will run in the foreground. However, it is recommended to start the service automatically on startup, which can be different depending on the platform.

Parameters

--daemon Runs the software as a daemon.
--nopid Does not attempt to create a pid-file at /var/run/saneserver.pid
--listflags Lists available feature flags
--flags <FLAG1> <FLAG2>... Enables the specified flag(s). Multiple flags are separated using space.
</path/to/filename.json> JSON configuration file that should be used

Feature Flags

Feature flags are switches that enable certain features that are otherwise unavailable. These features are usually experimental and should be used with caution.

useMMSG uses useMMSG linux socket API to send & receive multiple UDP packets at once. This improves performance under load, while stable there are some corner cases which can trigger error messages in the log.
bondingProxy Enables the TCP Bonding Proxy.

SNMP

The server comes with a net-snmp extension that implements the provided MIB. In order to use it with netsnmp, add this to your /etc/snmp/snmpd.conf:

pass_persist .1.3.6.1.3.45265 /opt/bondix/server/bxsnmp