Skip to content
← 返回Linux列表
应用实践公司适用

公司适用 · 请结合本文的项目背景与团队约定使用。

openwrtQOS ​

本页是约 2020 年 AccessHub/OpenWrt 的 qos-scripts 历史记录,终端标识和地址已替换为虚构示例,未在当前设备验证。下面的 @classify[3]、@default[2] 依赖原机已有节,不能直接用于另一台设备;classgroup=default 与 Default 大小写也不能混同。先核对固件、qos-scripts 版本和完整 uci show qos,再决定变更。

qos ​

interface ​

shell
config interface 'wan'
        option classgroup 'Default'
        option upload '128'
        option download '1024'
        option enabled '0'

说明 ​

image-20200415105201161

image-20200415105341549

ClassifCation Roules ​

image-20200415110417949

image-20200415110404243

classgroup ​

shell
config classgroup "Default"
	option classes      "Priority Express Normal Bulk"
	option default      "Normal"

image-20200415111812488

class ​

shell
config class "Normal"
	option packetsize  1500
	option packetdelay 100
	option avgrate     10
	option priority    5

image-20200415113439083

操作 [qos] ​

uci set ​

shell
root@Accesshub:/etc/config# uci set qos.cc=interface
root@Accesshub:/etc/config# uci set qos.cc.classgroup=default
root@Accesshub:/etc/config# uci set qos.cc.enabled=1
root@Accesshub:/etc/config# uci set qos.cc.upload=134
root@Accesshub:/etc/config# uci set qos.cc.download=1000
root@Accesshub:/etc/config# uci commit qos
shell
root@Accesshub:/etc/config# grep -A 6 cc qos
config interface 'cc'
        option classgroup 'default'
        option enabled '1'
        option upload '134'
        option download '1000'
  • uci add
shell
root@Accesshub:/etc/config# uci add qos classify
cfg118143
root@Accesshub:/etc/config# uci set qos.@classify[3].target="Priority"
root@Accesshub:/etc/config# uci set qos.@classify[3].ports="22,23,80,333"
root@Accesshub:/etc/config# uci set qos.@classify[3].comment="ssh,frp,ftp,http,http(s),imap"
root@Accesshub:/etc/config# uci commit qos
shell
root@Accesshub:/etc/config# grep -A 20 cc qos
config interface 'cc'
        option classgroup 'default'
        option enabled '1'
        option upload '134'
        option download '1000'

config classify
        option target 'Priority'
        option ports '22,23,80,333'
        option comment 'ssh,frp,ftp,http,http(s),imap'
shell
uci show qos
uci set qos.@default[2].proto="tcp"
uci set qos.@default[2].portrange="1024-65535"
uci commit qos
shell
config interface 'cc'
        option classgroup 'default'
        option enabled '1'
        option upload '134'
        option download '1000'

config classify
        option target 'Priority'
        option ports '22,23,80,333'
        option comment 'ssh,frp,ftp,http,http(s),imap'

config default
        option proto 'tcp'
        option portrange '1024-65535'

设置classgroup ​

root@Accesshub:/etc/config# uci set qos.CcClassGroup=classgroup
root@Accesshub:/etc/config# uci set qos.CcClassGroup.classes="Cc Priority Express Mormal Bulk"
root@Accesshub:/etc/config# uci set qos.CcClassGroup.default="Cc"
root@Accesshub:/etc/config# uci commit qos
root@Accesshub:/etc/config# grep -A 30 cc qos
config interface 'cc'
        option classgroup 'default'
        option enabled '1'
        option upload '134'
        option download '1000'

config classify
        option target 'Priority'
        option ports '22,23,80,333'
        option comment 'ssh,frp,ftp,http,http(s),imap'

config default
        option proto 'tcp'
        option portrange '1024-65535'

config classgroup 'CcClassGroup'
        option classes 'Cc Priority Express Mormal Bulk'
        option default 'Cc'

原记录创建了 CcClassGroup,却没有把接口 cc 的 classgroup 从原组改到它,因此不能证明自定义组已生效。Mormal 是原拼写错误;使用已有 Normal 类时应写 Normal。完成下节 Cc 类定义并确认 Priority/Express/Normal/Bulk 都存在后,才可按下面的独立修正片段绑定(未执行):

sh
uci set qos.CcClassGroup.classes='Cc Priority Express Normal Bulk'
uci set qos.cc.classgroup='CcClassGroup'
uci changes qos
# 审阅变更后才保存;commit 仅保存配置,不证明运行规则已经重载。
uci commit qos
uci get qos.cc.classgroup

新增匿名节应使用本次 uci add 返回的 ID,不套用旧下标。例如下面只展示新节如何定位,不与原转录重复执行:

sh
section_id="$(uci add qos classify)"
uci set "qos.$section_id.target=Priority"
uci set "qos.$section_id.ports=22,23,80,333"
uci changes qos

是否需要以及怎样重载 QoS 服务,须按该固件的服务脚本核对;保存后还应观察实际接口和分类规则,不能把 grep 输出当成流量整形已生效。依据:UCI 节 ID、历史 qos-scripts 字段。

配置class ​

shell
root@Accesshub:/etc/config# uci set qos.Cc=class
root@Accesshub:/etc/config# uci set qos.Cc.packetsize="1600"
root@Accesshub:/etc/config# uci set qos.Cc.packetdelay="160"
root@Accesshub:/etc/config# uci set qos.Cc.avgrate="16"
root@Accesshub:/etc/config# uci set qos.Cc.priority="6"
root@Accesshub:/etc/config# uci commit qos
root@Accesshub:/etc/config# grep -A 50 cc qos
config interface 'cc'
        option classgroup 'default'
        option enabled '1'
        option upload '134'
        option download '1000'

config classify
        option target 'Priority'
        option ports '22,23,80,333'
        option comment 'ssh,frp,ftp,http,http(s),imap'

config default
        option proto 'tcp'
        option portrange '1024-65535'

config classgroup 'CcClassGroup'
        option classes 'Cc Priority Express Mormal Bulk'
        option default 'Cc'

config class 'Cc'
        option packetsize '1600'
        option packetdelay '160'
        option avgrate '16'
        option priority '6'

//common.ExecWithoutErr("uci", "add", qosReq.IfConfig[k].Name+"=interface")

补充实践:openwrtQOS

来源:jekyall_blog;原记录日期:未标注。以下保留来源案例的环境和版本范围。

qos ​

interface ​

shell
config interface 'wan'
        option classgroup 'Default'
        option upload '128'
        option download '1024'
        option enabled '0'

说明 ​

image

继续阅读