| Next revision | Previous revision Next revisionBoth sides next revision |
| docs:guide-user:network:traffic-shaping:sqm_configuration [2019/03/22 15:41] – moved from sqm-tomerge vgaetera | docs:guide-user:network:traffic-shaping:sqm_configuration [2023/06/20 06:52] – update defaults tatami |
|---|
| ====== SQM configuration /etc/config/sqm ====== | ====== SQM configuration /etc/config/sqm ====== |
| |
| The //sqm-scripts// package in OpenWrt controls Bufferbloat - the undesirable latency that comes from the router buffering too much data. | The //sqm-scripts// package in OpenWrt controls Bufferbloat - the undesirable latency that comes from the router buffering too much data. |
| Smart Queue Management (SQM) is our name for an intelligent combination of better packet scheduling (flow queueing) techniques along with with active queue length management (AQM). | Smart Queue Management (SQM) is our name for an intelligent combination of better packet scheduling (flow queueing) techniques along with with active queue length management (AQM). |
| ^ Name ^ Type ^ Required ^ Default ^ Description ^ | ^ Name ^ Type ^ Required ^ Default ^ Description ^ |
| | ''enabled'' | boolean | | //no// | enable or disable the queue section | | | ''enabled'' | boolean | | //no// | enable or disable the queue section | |
| | ''interface'' | string | yes | //eth0// | interface name | | | ''interface'' | string | yes | //eth1// | interface name | |
| | ''upload'' | integer | | //2032// | Upload speed (kbit/s) (egress) set to 0 to selectively disable egress shaping | | | ''upload'' | integer | | //10000// | Upload speed (kbit/s) (egress) set to 0 to selectively disable egress shaping | |
| | ''download'' | integer | | //14698// | Download speed (kbit/s) (ingress) set to 0 to selectively disable ingress shaping | | | ''download'' | integer | | //85000// | Download speed (kbit/s) (ingress) set to 0 to selectively disable ingress shaping | |
| | ''linklayer'' | string | | //none// | "none", "ethernet", or "atm". Link-layer adaptation. See [[docs:guide-user:network:traffic-shaping:sqm#sqmlink_layer_adaptation_tab]] | | | ''linklayer'' | string | | //none// | "none", "ethernet", or "atm". Link-layer adaptation. See [[docs:guide-user:network:traffic-shaping:sqm#sqmlink_layer_adaptation_tab]] | |
| | ''overhead'' | integer | | //0// | Per Packet Overhead, bytes | | | ''overhead'' | integer | | //0// | Per Packet Overhead, bytes | |
| | ''squash_dscp'' | integer | | //1// | Squash DSCP on inbound packets (ingress). 1 = squash, 0 = do not squash | | | ''squash_dscp'' | integer | | //1// | Squash DSCP on inbound packets (ingress). 1 = squash, 0 = do not squash | |
| | ''squash_ingress'' | integer | | //1// | Ignore DSCP on ingress. 1 = ignore, 0 = allow | | | ''squash_ingress'' | integer | | //1// | Ignore DSCP on ingress. 1 = ignore, 0 = allow | |
| | ''qdisc'' | string | | //fq_codel// | fq_codel efq_codel nfq_codel sfq codel ns2_codel pie sfq cake //(availability varies, check /var/run/sqm/available_qdiscs)// | | | ''qdisc'' | string | | //cake// | fq_codel efq_codel nfq_codel sfq codel ns2_codel pie sfq cake //(availability varies, check /var/run/sqm/available_qdiscs)// | |
| | ''script'' | string | | //simple.qos// | Queue setup script (see table below) | | | ''script'' | string | | //piece_of_cake.qos// | Queue setup script (see table below) | |
| | ''iqdisc_opts'' | string | | //(none)// | Advanced option string to pass to the ingress queueing disciplines; no error checking, use very carefully. | | | ''iqdisc_opts'' | string | | //(none)// | Advanced option string to pass to the ingress queueing disciplines; no error checking, use very carefully. | |
| | ''eqdisc_opts'' | string | | //(none)// | Advanced option string to pass to the egress queueing disciplines; no error checking, use very carefully. | | | ''eqdisc_opts'' | string | | //(none)// | Advanced option string to pass to the egress queueing disciplines; no error checking, use very carefully. | |
| | ''qdisc_advanced'' | boolean | | //false// | [only used by the luci-app-sqm package] | | | ''qdisc_advanced'' | boolean | | //0// | [only used by the luci-app-sqm package] | |
| | ''qdisc_really_really_advanced'' | boolean | | //false// | [only used by the luci-app-sqm package] | | | ''qdisc_really_really_advanced'' | boolean | | //0// | [only used by the luci-app-sqm package] | |
| |
| ==== Queue Setup Scripts ==== | ==== Queue Setup Scripts ==== |
| ^ Name ^ Default ^ Description ^ | ^ Name ^ Default ^ Description ^ |
| | ''simple.qos'' | yes | BW-limited three-tier prioritisation scheme with fq_codel on each queue. | | | ''simple.qos'' | no | BW-limited three-tier prioritisation scheme with fq_codel on each queue. | |
| | ''simplest.qos'' | no | Simplest possible configuration: HTB rate limiter with your qdisc attached. | | | ''simplest.qos'' | no | Simplest possible configuration: HTB rate limiter with your qdisc attached. | |
| | ''layer_cake.qos'' | no | This uses the cake qdisc as a replacement for htb as shaper and fq_codel as leaf qdisc. This exercises cake's diffserv profile(s) as different "layers" of priority. This script requires that cake is selected as qdisc. See: http://www.bufferbloat.net/projects/codel/wiki/Cake for more information | | | ''layer_cake.qos'' | no | This uses the cake qdisc as a replacement for htb as shaper and fq_codel as leaf qdisc. This exercises cake's diffserv profile(s) as different "layers" of priority. This script requires that cake is selected as qdisc. See: http://www.bufferbloat.net/projects/codel/wiki/Cake for more information | |
| | ''nxt_routed_hfsc.qos'' | no | Uses a combination of HFSC and FLOW classifier to prioritize typical interactive protocols. This script is specially designed for clients behind NAT. | | | ''nxt_routed_hfsc.qos'' | no | Uses a combination of HFSC and FLOW classifier to prioritize typical interactive protocols. This script is specially designed for clients behind NAT. | |
| | ''piece_of_cake.qos'' | no | This just uses the cake qdisc as a replacement for htb as shaper and fq_codel as leaf qdisc. It just does not come any simpler than this, in other words it truely is a "piece of cake". This script requires that cake is selected as qdisc. See: http://www.bufferbloat.net/projects/codel/wiki/Cake for more information | | | ''piece_of_cake.qos'' | yes | This just uses the cake qdisc as a replacement for htb as shaper and fq_codel as leaf qdisc. It just does not come any simpler than this, in other words it truly is a "piece of cake". This script requires that cake is selected as qdisc. See: http://www.bufferbloat.net/projects/codel/wiki/Cake for more information | |
| |
| === Only Available in DD Trunk === | === Only Available in DD Trunk === |
| |
| //[ The following refers to the 2017 OpenWrt DD effort that has been superseded by the LEDE-based release. | //[ The following refers to the 2017 OpenWrt DD effort that has been superseded by the LEDE-based release. |
| The DD version never was released, so this information needs to be updated/removed. ]// | The DD version never was released, so this information needs to be updated/removed. ]// |
| | ''hfsc_lite.qos'' | no | This three band HFSC configuration is intended for a common residential router. It uses extremely simplistic protocol/port filtering for bands and prioritises bandwidth over low delay in case of insufficient CPU power. | | | ''hfsc_lite.qos'' | no | This three band HFSC configuration is intended for a common residential router. It uses extremely simplistic protocol/port filtering for bands and prioritises bandwidth over low delay in case of insufficient CPU power. | |
| | ''hfsc_litest.qos'' | no | This single band HFSC configuration is the bare minimum. Prioritises bandwidth over low delay in case of insufficient CPU power. The lack of filter before the QDISC may help reduce CPU load. | | | ''hfsc_litest.qos'' | no | This single band HFSC configuration is the bare minimum. Prioritises bandwidth over low delay in case of insufficient CPU power. The lack of filter before the QDISC may help reduce CPU load. | |
| |
| {{tag>QoS UCI}} | |
| |