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.
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
12 It can be configured via ubus call qosify config.
14 This call supports the following parameters:
16 Reset the config to defaults instead of only updating supplied values
18 - "files": ARRAY of STRING
19 List of files with port/IP/host mappings
22 Default timeout for dynamically added entries
24 - "dscp_default_udp": STRING
25 Default DSCP value for UDP packets
27 - "dscp_default_tcp": STRING
28 Default DSCP value for TCP packets
31 DSCP value for priority-marked packets
34 DSCP value for bulk-marked packets
37 DSCP value for ICMP packets
39 - "bulk_trigger_pps": INT32
40 Number of packets per second to trigger bulk flow detection
42 - "bulk_trigger_timeout": INT32
43 Time below bulk_trigger_pps threshold until a bulk flow mark is removed
45 - "prio_max_avg_pkt_len": INT32
46 Maximum average packet length for marking a flow as priority
48 - "interfaces": TABLE of TABLE
49 netifd interfaces to enable QoS on
51 - "devices": TABLE of TABLE
52 netdevs to enable QoS on
55 interface/device properties:
56 - "bandwidth_up": STRING
57 Uplink bandwidth (same format as tc)
59 - "bandwidth_down": STRING
60 Downlink bandwidth (same format as tc)
63 Enable ingress shaping
72 Enable CAKE NAT host detection via conntrack
74 - "host_isolate": BOOL
75 Enable CAKE host isolation
77 - "autorate_ingress": BOOL
78 Enable CAKE automatic rate estimation for ingress
80 - "ingress_options": STRING
83 - "egress_options": STRING
87 CAKE options for ingress + egress
92 Each line has two whitespace separated fields, match and dscp
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>
99 IPv4 address, e.g. 1.1.1.1
101 IPv6 address, e.g. ff01::1
103 fnmatch() pattern supporting * and ? as wildcard characters
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.
108 Like dns:... but only matches cname entries
110 dscp can be a raw value, or a codepoint like CS0
111 Adding a + in front of the value tells qosify to only override the DSCP value if it is zero
112 DNS entries are compared in the order in which they are specified in the config, using the
113 first matching entry.
117 - Support for LAN host based priority