Ouroboros Build Parameters

From Ouroboros
Jump to navigation Jump to search
Ouroboros build parameters in ccmake

These parameters can be enabled by specifying them to cmake:

$ cmake -D<parameter>=<value> [-D<parameter>=<value> ...] ..

As an example, to build and install a debug build of Ouroboros, execute the following in your (empty) build directory:

$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make
$ sudo make install

Alternatively, you can also use the ccmake tool in your build directory to change build options:

$ ccmake .

after altering some of the values pressing c (configure) then g (generate) will set the configuration changes. Subsequent builds will then use this configuration.

Ouroboros build configuration
Parameter Description Values Default
ACK_WHEEL_RESOLUTION Minimum acknowledgment delay (ns), as a power to 2 18
ACK_WHEEL_SLOTS Number of slots in the acknowledgment wheel, must be a power of 2 256
BOOTSTRAP_TIMEOUT Timeout for an IPCP to bootstrap (ms) 5000
CMAKE_BUILD_TYPE Build type
  • Release: A release build, less debug logs, compiled with performance flags
  • Debug: A debug build with extra logging and debug symbols (gdb)
  • DebugASan: Enables Address Sanitizer
  • DebugTSan: Enables Thread Sanitizer
  • DebugLSan: Enables Leak Sanitizer
  • DebugUSan: Enables Undefined behaviour Sanitizer
  • DebugAnalyzer: Enables static analysis during compilation
Release
CMAKE_INSTALL_PREFIX Prefix to install Ouroboros

/usr (Linux, *BSD) /usr/local (OS X)

CONNECT_TIMEOUT Timeout to connect an IPCP to another IPCP (ms) 60000
DELTA_T_ACK Maximum time to acknowledge a packet (s) 10
DELTA_T_MPL Maximum packet lifetime (s) 60
DELTA_T_RTX Maximum time to retransmit a packet (s) 120
DHT_ENROLL_SLACK DHT enrollment waiting time (ms) 0-999 50
DISABLE_CORE_LOCK Disable locking performance threads to a core Bool ON
DISABLE_DDNS Disable DDNS support for ipcpd-udp Bool OFF
DISABLE_FUSE Disable FUSE support for exporting metrics (observability) Bool OFF
DISABLE_LIBGCRYPT Disable libgcrypt support OFF
DISABLE_OPENSSL Disable OpenSSL support OFF
DISABLE_RAW_SOCKETS Disable raw socket support for Ethernet IPCPs OFF
DISABLE_ROBUST_MUTEXES Disable robust mutex support OFF
DU_BUFF_HEADSPACE Bytes of headspace to reserve for future headers 256
DU_BUFF_TAILSPACE Bytes of tailspace to reserve for future tails 32
ENROLL_TIMEOUT Timeout the IRMd waits for an IPCP to complete enrollment (ms) 60000
FRCT_LINUX_RTT_ESTIMATOR Use Linux RTT estimator formula instead of the TCP RFC formula ON
FRCT_REORDER_QUEUE_SIZE Size of the reordering queue Must be a power of 2 256
FRCT_RTO_INC_FACTOR Divisor for RTO increase after ACK timeout: RTO += RTX >> X 0: Karn/Partridge
FRCT_RTO_MDEV_MULTIPLIER Multiplier for deviation term in the RTO: RTO = sRTT + (mdev << X) 2
FRCT_RTO_MIN Minimum Retransmission Timeout (RTO) for FRCT (us) 250
FRCT_START_WINDOW Start window Must be a power of 2 64
FRCT_TICK_TIME Tick time for FRCT activity (retransmission, acknowledgments) (us) 5000
FUSE_PREFIX Mountpoint for FUSE filesystem (observability) /tmp/ouroboros
IPCP_ADD_THREADS Number of extra threads to start when an IPCP faces thread starvation 4
IPCP_BROADCAST_MPL Default maximum packet lifetime for the broadcast IPCP, in seconds 60
IPCP_CONN_WAIT_DIR Check the running state of the directory (DHT) when adding a data transfer connection ON
IPCP_ETH_LO_MTU Restrict Ethernet MTU over loopback interface 1500
IPCP_ETH_MPL Default maximum packet lifetime for the Ethernet IPCPs, in seconds 5
IPCP_ETH_QDISC_BYPASS Bypass the Qdisc in the kernel when using raw sockets OFF
IPCP_ETH_RD_THR Number of reader threads in Ethernet IPCP 1
IPCP_ETH_WR_THR Number of writer threads in Ethernet IPCP 1
IPCP_FLOW_STATS Enable flow statistics tracking in IPCP (observability) Bool ON
IPCP_LINUX_TIMERSLACK_NS Slack value for high resolution timers on Linux systems 1000
IPCP_LOCAL_MPL Default maximum packet lifetime for the Ethernet IPCPs, in seconds 2
IPCP_MIN_THREADS Minimum number of worker threads in the IPCP 4
IPCP_QOS_CUBE_BE_PRIO Priority for best effort QoS cube (0-99) 50
IPCP_QOS_CUBE_VIDEO_PRIO Priority for video QoS cube (0-99) 90
IPCP_QOS_CUBE_VOICE_PRIO Priority for voice QoS cube (0-99) 99
IPCP_SCHED_THR_MUL Number of scheduler threads per QoS cube 2
IPCP_UDP_MPL Default maximum packet lifetime for the UDP IPCP, in seconds 60
IPCP_UDP_RD_THR Number of reader threads in UDP IPCP 3
IPCP_UDP_WR_THR Number of writer threads in UDP IPCP 3
IPCP_UNICAST_MPL Default maximum packet lifetime for the unicast IPCP, in seconds 60
IRMD_ADD_THREADS Number of extra threads to start when the IRMD faces thread starvation 8
IRMD_FLOW_TIMEOUT Timeout for a flow allocation response (ms) 5000
IRMD_MIN_THREADS Minimum number of worker threads in the IRMd 8
IRMD_REQ_ARR_TIMEOUT Timeout for an application to respond to arrival of a new flow (ms) 500
PFT_SIZE Size of the PDU forwarding (hash) table 4096
PROC_FLOW_STATS Enable flow statistics tracking for application flows Bool ON
PROG_MAX_FLOWS Maximum number of flows in an application 4096
PROG_MAX_FQUEUES Maximum number of flow sets per application 32
PROG_RES_FDS Number of reserved flow descriptors per application 64
PTHREAD_COND_CLOCK Clock to use for condition variable timing CLOCK_MONOTONIC
QOS_DISABLE_CRC Ignores bit-error rate (BER) setting on all QoS cubes to avoid calculating CRCs ON
QUERY_TIMEOUT Timeout to query a name with an IPCP (ms) 3000
REG_TIMEOUT Timeout for registering a name (ms) 10000
RXM_BLOCKING Use blocking writes for retransmission ON
RXM_BUFFER_ON_HEAP Store packets for retransmission on the heap instead of in packet buffer OFF
RXM_MIN_RESOLUTION Minimum retransmission delay (ns), as a power to 2 20
RXM_WHEEL_LEVELS Number of levels in the retransmission wheel 3
RXM_WHEEL_MULTIPLIER Factor for retransmission wheel levels as a power to 2 4
RXM_WHEEL_SLOTS_PER_LEVEL Number of slots per level in the retransmission wheel Must be a power of 2 256
SHM_BUFFER_SIZE Number of blocks in packet buffer, Must be a power of 2 4096
SHM_PREFIX String to prepend to POSIX shared memory filenames ouroboros
SHM_RBUFF_LOCKLESS Enable shared memory lockless rbuff support (experimental, unstable) OFF
SHM_RBUFF_SIZE Number of blocks in rbuff buffer Must be a power of 2 1024
SHM_RDRB_BLOCK_SIZE Packet buffer block size Defaults to pagesize for performance sysconf(_SC_PAGESIZE)
SHM_RDRB_MULTI_BLOCK Packet buffer multiblock packet support (allows packets larger than block size) ON
SOCKET_TIMEOUT Default timeout for internal responses from IPCPs (ms) 1000
SOCK_BUF_SIZE Size of the buffer used by the UNIX sockets for local IPC 10240
SYS_MAX_FLOWS Maximum number of total flows for this system 10240