-
Notifications
You must be signed in to change notification settings - Fork 12
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.
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 |
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 |
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.
- Building the code
- IPOP packages
- Running SocialVPN nodes
- Running GroupVPN nodes
- Deploying OSN and NAT traversal services
- Test and monitoring
- Extending the code
- General documentation