### Example Ouroboros configuration file # # This file contains a summary of current machine configuration options # for the O7s prototype. # # The list of accepted top level stanza is: # # [name.] add a new name to the system. # [local.] add a new local IPCP to the system. # [broadcast.] add a new broadcast IPCP to the system. # [unicast.] add a new unicast IPCP to the system. # # Options for names: # # A name can be created without any parameters. The following options will # allow more useful configurations: # prog: bind programs to this name. Whenever an instance of one of these # programs is started, it will accept incoming flows for this name. # args: When provided the program at the same index in the prog list will be # automatically started if there is an incoming flow for that name. # lb: Load-balancing option, if there are multiple processes accepting flows # for that name, the flow will get assigned to the process according to # the specified load-balancing algorithm. # # Options for IPCPs: # # bootstrap=: Immediately bootstrap this IPCP in this layer. # enrol=: Enrol with this neigbor (broadcast and unicast only). # conn=[]: Create mgmt and data flows with these neighbors. # reg=[]: Register these names with the IPCP. # # enrol, and each element of conn, also accept a table instead of a bare # name, to reach that peer over one specific point of attachment: # # {dst=, eth={}} Resolve dst by query over every # attached eth PoA. # {dst=, eth={dev=}} Same, pinned to one device. eth # accepts an optional # ethertype=, default # 0xA000. # {dst=, udp=[:]} Literal peer; IPv4, bracketed IPv6 # ("[::1]:3435"), bare IPv6, or a # host name the IRMd resolves. Port # defaults to 3435. # # A table names at most one of eth or udp; dst is required. # # A unicast or broadcast IPCP binds its own points of attachment. udp # and eth are each an array of strings or tables, one udp for both # address families: # # udp = [, ...] is a literal IPv4 or # IPv6 address, with an optional # port (":", # bracketed for IPv6: # "[::1]:3435"). Port defaults # to 3435. A table, # {addr=[:]}, is # also accepted. # eth = [, ...] is a bare device # name, or a table # {dev=[, ethertype= # ]}. Ethertype # defaults to 0xA000. # # Because a table element is accepted, the array-of-tables spelling # still works too, e.g. [[unicast.lan1.udp]] with addr="" as a # separate stanza; repeat the stanza, or the array, to attach more # than one PoA. # # Unlike conn/enrol above, a PoA binds locally: only literal addresses # are accepted here, not host names. # # Bootstrap options can be set as in the examples below. # For more details on the configuration options for each of the IPCP types, # please refer to the Ouroboros man page. [name.oping] prog=["@INSTALL_DIR@/oping"] # Defaults to []. args=["--listen"] # Defaults to disabled. Autostart server with these args. lb="round-robin" # Defaults to spill (load-balancing options: spill, round-robin). [name.oecho] prog=["@INSTALL_DIR@/oecho"] # Defaults to []. args=["--listen"] # Defaults to disabled. Autostart server with these args. lb="round-robin" # Defaults to spill (load-balancing options: spill, round-robin). [name.ocbr] prog=["@INSTALL_DIR@/ocbr"] # Defaults to []. [name.ovpn] prog=["@INSTALL_DIR@/ovpn"] # Defaults to []. [name."oping.secure"] prog=["@INSTALL_DIR@/oping"] # Defaults to []. args=["--listen"] # Defaults to disabled. Autostart server with these args. lb="round-robin" # Defaults to spill (load-balancing options: spill, round-robin). # server_sec_file=/path/to/sec.conf Default: @OUROBOROS_SRV_CRT_DIR@//sec.conf # server_crt_file=/path/to/crt.pem Default: @OUROBOROS_SRV_CRT_DIR@//crt.pem # server_key_file=/path/to/key.pem Default: @OUROBOROS_SRV_CRT_DIR@//key.pem # client_sec_file=/path/to/sec.conf Default: @OUROBOROS_CLI_CRT_DIR@//sec.conf # client_crt_file=/path/to/crt.pem Default: @OUROBOROS_CLI_CRT_DIR@//crt.pem # client_key_file=/path/to/key.pem Default: @OUROBOROS_CLI_CRT_DIR@//key.pem [local.local1] bootstrap="local1" # Defaults to not set. # BOOTSTRAP CONFIGURATION # hash="SHA3_224" # Defaults to SHA3_256. # NAMES KNOWN reg=["bc1", "LAN"] # Defaults to []. [broadcast.bc1] bootstrap="broadcast" # Defaults to not set. # autobind=true # Defaults to false. [broadcast.bc2] enrol="bc1" # autobind=true # Defaults to false. [unicast.lan1] bootstrap="LAN" # Defaults to not set. autobind=true # Defaults to false. # BOOTSTRAP CONFIGURATION # addr_size=4 # Defaults to 4 (32-bit addresses). # eid_size=8 # Defaults to 8 (64-bit endpoint IDs, only accepted option). # max_ttl=60 # Defaults to 60 (max 255). # max_rtt=200 # Defaults to 200 (max 65535). # addr-auth="flat" # Defaults to flat (currently only option). # routing="lfa" # Defaults to link-state (options: link-state, lfa, ecmp). # ls_t_recalc=4 # Forwarding Function update interval (s) (Default 4). # ls_t_update=15 # Link State Advertisement update interval (s) (Default 15). # ls_t_timeo=60 # Link Timeout (s) (Default 60). # congestion="none" # Defaults to mb-ecn (options: none, mb-ecn). # directory=DHT # Defaults to DHT (options: DHT) # hash="SHA3_224" # Defaults to SHA3_256. # dht_alpha=3 # DHT parallel search factor (Default 3, optimal) # dht_k=8 # DHT replication factor (Default: 8, same as Mainline DHT) # dht_t_expiry=3600 # DHT entry expiry time (s) (Default: 86400 s) # dht_t_refresh=900 # DHT contact refresh interval (s) (Default: 900 s) # dht_t_replicate=900 # DHT replication interval (s) (Default: 900 s) # NAMES KNOWN reg=["oping"] # Defaults to []. # POINTS OF ATTACHMENT udp = ["127.0.0.1", "127.0.0.1:3436"] # Two PoAs; port defaults to 3435. # udp = ["127.0.0.1:9000"] # Or pick a port explicitly. [[unicast.lan1.eth]] dev="lo" # ethertype=0xA007 # Defaults to 0xA000. [unicast.lan2] enrol="LAN" # Defaults to not set. # enrol={dst="LAN", eth={dev="eth0"}} # Or enrol over a specific PoA. conn=["lan1"] # Defaults to []. # conn=["lan1", # {dst="lan3", eth={}}, # {dst="lan4", udp="10.0.0.1:3435"}] # Or connect over specific PoAs. autobind=true # Defaults to false.