move run_cmd() to main.c
[project/qosify.git] / README
1 QoSify is simple daemon for setting up and managing CAKE along with a custom
2 eBPF based classifier that sets DSCP fields of packets.
3
4 It supports the following features:
5 - simple TCP/UDP port based mapping
6 - IP address based mapping
7 - priority boosting based on average packet size
8 - bulk flow detection based on number of packets per second
9 - dynamically add IP entries with timeout
10 - dns regex entries and ubus api for providing dns lookup results
11
12 It can be configured via ubus call qosify config.
13
14 This call supports the following parameters:
15 - "reset": BOOL
16 Reset the config to defaults instead of only updating supplied values
17
18 - "files": ARRAY of STRING
19 List of files with port/IP/host mappings
20
21 - "timeout": INT32
22 Default timeout for dynamically added entries
23
24 - "dscp_default_udp": STRING
25 Default DSCP value for UDP packets
26
27 - "dscp_default_tcp": STRING
28 Default DSCP value for TCP packets
29
30 - "dscp_prio": STRING
31 DSCP value for priority-marked packets
32
33 - "dscp_bulk": STRING
34 DSCP value for bulk-marked packets
35
36 - "dscp_icmp": STRING
37 DSCP value for ICMP packets
38
39 - "bulk_trigger_pps": INT32
40 Number of packets per second to trigger bulk flow detection
41
42 - "bulk_trigger_timeout": INT32
43 Time below bulk_trigger_pps threshold until a bulk flow mark is removed
44
45 - "prio_max_avg_pkt_len": INT32
46 Maximum average packet length for marking a flow as priority
47
48 - "interfaces": TABLE of TABLE
49 netifd interfaces to enable QoS on
50
51 - "devices": TABLE of TABLE
52 netdevs to enable QoS on
53
54
55 interface/device properties:
56 - "bandwidth_up": STRING
57 Uplink bandwidth (same format as tc)
58
59 - "bandwidth_down": STRING
60 Downlink bandwidth (same format as tc)
61
62 - "ingress": BOOL
63 Enable ingress shaping
64
65 - "egress": BOOL
66 Enable egress shaping
67
68 - "mode": STRING
69 CAKE diffserv mode
70
71 - "nat": BOOL
72 Enable CAKE NAT host detection via conntrack
73
74 - "host_isolate": BOOL
75 Enable CAKE host isolation
76
77 - "autorate_ingress": BOOL
78 Enable CAKE automatic rate estimation for ingress
79
80 - "ingress_options": STRING
81 CAKE ingress options
82
83 - "egress_options": STRING
84 CAKE egress options
85
86 - "options": STRING
87 CAKE options for ingress + egress
88
89
90 Mapping file syntax:
91
92 Each line has two whitespace separated fields, match and dscp
93 match is one of:
94 - tcp:<port>[-<endport>]
95 TCP single port, or range from <port> to <endport>
96 - udp:<port>[-<endport>]
97 UDP single port, or range from <port> to <endport>
98 - <ipaddr>
99 IPv4 address, e.g. 1.1.1.1
100 - <ipv6addr>
101 IPv6 address, e.g. ff01::1
102 - dns:<pattern>
103 fnmatch() pattern supporting * and ? as wildcard characters
104 - dns:/<regex>
105 POSIX.2 extended regular expression for matching hostnames
106 Only works, if dns lookups are passed to qosify via the add_dns_host ubus call.
107
108 dscp can be a raw value, or a codepoint like CS0
109 Adding a + in front of the value tells qosify to only override the DSCP value if it is zero
110
111
112 Planned features:
113 - Support for LAN host based priority