README 3.0 KB

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