Skip to content

Configuration

Renato Figueiredo edited this page Feb 5, 2016 · 18 revisions

Configuration

In the page, we explain the flags of the configuration file in details. The default values are specified the fxlib.py file of the controller.

Required Flags

These flags are required and must be defined in the configuration file.

Flag Description
ip4 Virtual IPv4 address of the IPOP local
xmpp_username XMPP credential user ID
xmpp_password XMPP credential password
xmpp_host XMPP server domain or IP address

Optional Flags

SocialVPN and GroupVPN flags

Flag Description
stun List of usable STUN servers (defaults to the Google public STUN server)
turn List of usable TURN servers with transport address, username, and password (i.e. {"server": "host", "user": "username", "pass": "password"})
vpn_type Type of VPN ("SocialVPN" or "GroupVPN")
ip6_prefix Prefix of IPv6 address
ip4_mask IPv4 address netmask (i.e. 16 for 172.31.0.0/16)
ip6_mask IPv6 address netmask
svpn_port Port number of the Tincan UDP local server
contr_port Port number of the controller UDP local server
tincan_logging Level of logging verbosity (0 = error, 1 = info, or 2 = debug)
controller_logging Level of logging verbosity ("ERROR", "INFO", "DEBUG" or "PKTDUMP")
stat_report Report statistics to a central server (true or false)
switchmode Operate in switchmode (0 = disabled or 1 = enabled)
router_mode Operate in router mode (only works with OpenWRT) (true or `false)
sec DTLS security (0 = disabled or 1 = enabled)
multihop Operate with multihop (true or false)
buf_size Size of the controller socket buffer
socket_read_wait_time Wait time (in seconds) to receive a packet from the controller socket
trim_enabled Relay connections are trimmed when a STUN connection candidate is available (true or false)
timer_interval Interval (in seconds) to invoke a module's timer handler
dependencies List of dependent modules (i.e. TincanListener depends on TincanDispatcher)
network_ignore_list Ignore the interfaces specified for the purpose of tunneling.

GroupVPN only flags

Flag Description
num_successors Number of successor links
num_chords Number of chord links
num_on_demand Number of on-demand links
num_inbound Number of inbound links (unrestricted for predecessor links)
ttl_link_initial Time-to-live (in seconds) for a new link to establish
ttl_link_pulse Time-to-live (in seconds) for an establish link to pulse
ttl_chord Time-to-live (in seconds) for an established chord link to potentially be replaced
ttl_on_demand Time-to-live (in seconds) for an established on-demand link to potentially be removed, depending on the transmission rate
threshold_on_demand Transmission rate (bytes sent per second) threshold for an established on-demand link to be kept alive or removed
use_central_visualizer Enable sending peer link information to the central visualizer module
num_pings Number of nodes to ping for availability
interval_ping Interval (in seconds) to ping other nodes for availability

Examples

Example 1 Configuration for GroupVPN

{
    "CFx": {
        "xmpp_username": "ipopuser@dukgo.com",
        "xmpp_password": "password",
        "xmpp_host": "dukgo.com",
        "tincan_logging": 0,
        "vpn_type": "GroupVPN",
        "ip4_mask": 16,
        "stat_report": false
    },
        "Logger": {
        "controller_logging": "ERROR"
    },
        "TincanSender": {
        "switchmode": 0,
        "dependencies": ["Logger"]
    },
        "BaseTopologyManager": {
        "ip4": "172.31.0.100",
        "sec": true,
        "multihop": false,
        "num_successors": 8,
        "num_chords": 8,
        "num_on_demand": 20,
        "num_inbound": 40,
        "ttl_link_initial": 60,
        "ttl_link_pulse": 30,
        "ttl_chord": 180,
        "ttl_on_demand": 6000,
        "threshold_on_demand": 128,
        "timer_interval": 1,
        "interval_management": 15,
        "use_central_visualizer": false,
        "interval_central_visualizer": 5,
        "num_pings": 5,
        "interval_ping": 300,
        "dependencies": ["Logger"]
    },
        "LinkManager": {
        "dependencies": ["Logger"]
    },
        "TincanDispatcher": {
        "dependencies": ["Logger"]
    },
        "TincanListener" : {
        "socket_read_wait_time": 15,
        "dependencies": ["Logger", "TincanDispatcher"]
    },
        "StatReport": {
        "stat_report": false,
        "stat_server": "metrics.ipop-project.org",
        "stat_server_port": 8080,
        "timer_interval": 200
    },
        "CentralVisualizer": {
        "central_visualizer": false,
        "central_visualizer_addr": "",
        "central_visualizer_port": 51234,
        "dependencies": ["Logger"]
    }
}

A network of users with this configuration creates a structured peer-to-peer topology with the following properties:

  • about 2 successors (can temporarily be up to two times more)
  • up to 3 chords
  • up to 2 on-demand links
  • about 8 in-bound links (can temporarily be up to
  • initializing links have a time-to-live of 60 seconds before they are trimmed
  • established links have a time-to-live of 30 seconds before they are trimmed
  • chords have a time-to-live of 180 seconds before they may be replaced
  • on-demand links have a time-to-live of 60 seconds before they undergoes a threshold test
  • on-demand links have a threshold of 128 transmitted bytes per second before they are trimmed

Example 2 Configuration for GroupVPN

{
    "CFx": {
        "xmpp_username": "ipopuser@dukgo.com",
        "xmpp_password": "password",
        "xmpp_host": "dukgo.com",
        "tincan_logging": 0,
        "vpn_type": "GroupVPN",
        "ip4_mask": 16,
        "stat_report": false
    },
        "Logger": {
        "controller_logging": "ERROR"
    },
        "TincanSender": {
        "stun": ["stun.l.google.com:19302"],
        "turn": [{"server": "129.114.33.157:19302", "user": "svpnjingle", "pass": "password"}],
        "switchmode": 1,
        "dependencies": ["Logger"]
    },
        "BaseTopologyManager": {
        "ip4": "172.31.0.100",
        "sec": true,
        "multihop": false,
        "num_successors": 20,
        "num_chords": 0,
        "num_on_demand": 0,
        "num_inbound": 20,
        "ttl_link_initial": 60,
        "ttl_link_pulse": 30,
        "ttl_chord": 180,
        "ttl_on_demand": 60,
        "threshold_on_demand": 128,
        "timer_interval": 1,
        "interval_management": 15,
        "use_central_visualizer": false,
        "interval_central_visualizer": 5,
        "num_pings": 5,
        "interval_ping": 300,
        "dependencies": ["Logger"]
    },
        "LinkManager": {
        "dependencies": ["Logger"]
    },
        "TincanDispatcher": {
        "dependencies": ["Logger"]
    },
        "TincanListener" : {
        "socket_read_wait_time": 15,
        "dependencies": ["Logger", "TincanDispatcher"]
    },
        "StatReport": {
        "stat_report": false,
        "stat_server": "metrics.ipop-project.org",
        "stat_server_port": 8080,
        "timer_interval": 200
    },
        "CentralVisualizer": {
        "central_visualizer": false,
        "central_visualizer_addr": "",
        "central_visualizer_port": 51234,
        "dependencies": ["Logger"]
    }
}

A network of (up to 20) users with this configuration creates an all-to-all topology. The stun and turn flags are explicitly provided. IPOP is operating in switchmode.

Example 3 Configuration for SocialVPN

{
    "CFx": {
        "xmpp_username": "ipopuser@dukgo.com",
        "xmpp_password": "password",
        "xmpp_host": "dukgo.com",
        "ip4_mask": 24,
        "stat_report": true,
        "tincan_logging": 0,
        "vpn_type": "SocialVPN"
    },
    "TincanListener" : {
        "socket_read_wait_time": 15,
        "dependencies": ["Logger", "TincanDispatcher"]
    },
    "Logger": {
        "controller_logging": "ERROR"
    },
    "TincanDispatcher": {
        "dependencies": ["Logger"]
    },
    "TincanSender": {
        "dependencies": ["Logger"]
    },
    "Monitor": {
        "trigger_con_wait_time": 120,
        "dependencies": ["Logger"]
    },
    "BaseTopologyManager": {
        "link_trimmer_wait_time": 30,
        "on-demand_connection": false,
        "on-demand_inactive_timeout": 600,
        "multihop": false,
        "sec": true,
        "timer_interval": 15,
        "dependencies": ["Logger"]
    },
    "LinkManager": {
        "dependencies": ["Logger"]
    },
    "AddressMapper": {
        "ip4": "172.31.0.100",
        "dependencies": ["Logger"]
    },
    "Watchdog": {
        "timer_interval": 10,
        "dependencies": ["Logger"]
    },
    "StatReport": {
        "stat_report": true,
        "stat_server": "metrics.ipop-project.org",
        "stat_server_port": 8080,
        "timer_interval": 200
    }
}

A network of users with this configuration creates a social network. Stat reporting is enabled to send statistical information to metrics.ipop-project.org.

Clone this wiki locally