Client

From Bondix Wiki
Revision as of 15:24, 13 October 2022 by Red (talk | contribs)

The Bondix SANE client is the software that you install on your router, which establishes a connection to the server using multiple WAN links.

Packages for OpenWRT & Teltonika automate a lot of the manual configuration.

For a bare metal SANE client configuration, check Client Configuration.

Running

The software can be run in the shell using /opt/bondix/client/saneclient, 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/saneclient.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.

useBlake Switches from SHA256 to the "blake" hashing algorithm. Depending on architecture, this can slightly improve performance.
useBlake3 Switches to the "blake3" hashing algorithm. Depending on architecture, this can slightly improve performance.
disableHash Disables hashing completely, allowing potential MitM, with a vast speed improvement.
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.
channelRoutes Makes the client create specific routes for each channel. Experimental, do not use.
bondingProxy Enables the TCP Bonding Proxy.

bndutil

bndutil is a command line utility that allows to query and modify SANE during runtime.

root@Teltonika-RUTX12:/opt/bondix/client# ./bndutil
Usage:
   bndutil [--json] <command>
            --json  switch to JSON output

Available commands:
  * bndutil status
  * bndutil get
  * bndutil set <propertyName1> <propertyValue1> [propertyName2] [propertyValue2] ...
  * bndutil get-interface <index>
  * bndutil set-interface <index> <propertyName1> <propertyValue1> [propertyName2] [propertyValue2] ...
  * bndutil shutdown
  * bndutil restart 
    (tunnel reset & reconnect)

speedtest

Speedtest is a small utility that downloads (and discards) data via HTTP(s) using one or more WAN interfaces. It is useful to compare performance of each individual interface and the combined bandwidth over SANE's virtual tunnel interface.

root@Teltonika-RUTX12:/opt/bondix/client# ./speedtest
Usage: speedtest [--json] <download-url> <intf1> [intf2] ...

E.G. to test performance of each WAN interface directly:

./speedtest http://speed.hetzner.de/100MB.bin wwan0 wwan1 wwan2

Testing performance of the tunnel:

./speedtest http://speed.hetzner.de/100MB.bin tun0