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 POSIX.2 extended regular expression for matching hostnames
104 Only works, if dns lookups are passed to qosify via the add_dns_host ubus call.
106 dscp can be a raw value, or a codepoint like CS0
107 Adding a + in front of the value tells qosify to only override the DSCP value if it is zero
111 - Integration with dnsmasq to support hostname pattern based DSCP marking
112 - Support for LAN host based priority