123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- QoSify is simple daemon for setting up and managing CAKE along with a custom
- eBPF based classifier that sets DSCP fields of packets.
- It supports the following features:
- - simple TCP/UDP port based mapping
- - IP address based mapping
- - priority boosting based on average packet size
- - bulk flow detection based on number of packets per second
- - dynamically add IP entries with timeout
- - dns regex entries and ubus api for providing dns lookup results
- It can be configured via ubus call qosify config.
- This call supports the following parameters:
- - "reset": BOOL
- Reset the config to defaults instead of only updating supplied values
- - "files": ARRAY of STRING
- List of files with port/IP/host mappings
- - "timeout": INT32
- Default timeout for dynamically added entries
- - "dscp_default_udp": STRING
- Default DSCP value for UDP packets
- - "dscp_default_tcp": STRING
- Default DSCP value for TCP packets
- - "dscp_prio": STRING
- DSCP value for priority-marked packets
- - "dscp_bulk": STRING
- DSCP value for bulk-marked packets
- - "dscp_icmp": STRING
- DSCP value for ICMP packets
- - "bulk_trigger_pps": INT32
- Number of packets per second to trigger bulk flow detection
- - "bulk_trigger_timeout": INT32
- Time below bulk_trigger_pps threshold until a bulk flow mark is removed
- - "prio_max_avg_pkt_len": INT32
- Maximum average packet length for marking a flow as priority
- - "interfaces": TABLE of TABLE
- netifd interfaces to enable QoS on
- - "devices": TABLE of TABLE
- netdevs to enable QoS on
- interface/device properties:
- - "bandwidth_up": STRING
- Uplink bandwidth (same format as tc)
- - "bandwidth_down": STRING
- Downlink bandwidth (same format as tc)
- - "ingress": BOOL
- Enable ingress shaping
- - "egress": BOOL
- Enable egress shaping
- - "mode": STRING
- CAKE diffserv mode
- - "nat": BOOL
- Enable CAKE NAT host detection via conntrack
- - "host_isolate": BOOL
- Enable CAKE host isolation
- - "autorate_ingress": BOOL
- Enable CAKE automatic rate estimation for ingress
- - "ingress_options": STRING
- CAKE ingress options
- - "egress_options": STRING
- CAKE egress options
- - "options": STRING
- CAKE options for ingress + egress
- Mapping file syntax:
- Each line has two whitespace separated fields, match and dscp
- match is one of:
- - tcp:<port>[-<endport>]
- TCP single port, or range from <port> to <endport>
- - udp:<port>[-<endport>]
- UDP single port, or range from <port> to <endport>
- - <ipaddr>
- IPv4 address, e.g. 1.1.1.1
- - <ipv6addr>
- IPv6 address, e.g. ff01::1
- - dns:<pattern>
- fnmatch() pattern supporting * and ? as wildcard characters
- - dns:/<regex>
- POSIX.2 extended regular expression for matching hostnames
- Only works, if dns lookups are passed to qosify via the add_dns_host ubus call.
- - dns_c:...
- Like dns:... but only matches cname entries
- dscp can be a raw value, or a codepoint like CS0
- Adding a + in front of the value tells qosify to only override the DSCP value if it is zero
- DNS entries are compared in the order in which they are specified in the config, using the
- first matching entry.
- Planned features:
- - Support for LAN host based priority
|