您的位置:首页 > 运维架构

对openwrt系统中QoS基本概念

2016-04-28 16:44 260 查看
什么是QoS?

QoS的全称是Quality of Service,意即服务质量。是专门用于解决拥堵网络上的信号质量一视同仁的问题。例如,我们有一根宽带,两人共用。一个人视频聊天,一个人bt下载。玩bt的那个一开软件,视频聊天那个立刻没法用了。bt和视频聊天稍微好一点的是,视频聊天消耗的带宽是恒定的。你可以逐步限速,只要给视频聊天留了足够的带宽,两个就都能一起用了。但是,如果另一个人不是视频聊天,而是网络浏览怎么办?网络浏览,视频聊天,p2p下载一起来怎么办?实际上这是很多朋友家中常常碰到的情况。更不说有合租公寓里面你很难监控对方一定限速,软件无法限速甚至恶意抢占带宽(迅雷)。另一个更加技术的问题是,由于上传带宽不足,ACK包回应过慢,导致你的下载速度也不能达到峰值。玩P2P的常常会给上传限速到真实带宽差一点的位置,下载带宽立刻上去,就是这个道理。

QoS的底层是tc,其目的就是决定先发送哪些包。openwrt自带的QoS软件包是 PACKAGE_qos-scripts,所在路径: Base system ----> qos-scripts ,还可以再配套安装个luci-app-qos方便配置。这套脚本默认的规则是hfsc,设计了四个优先级:Priority最优先,处理22,53,icmp,以及小于128字节的syn,ack包中,不属于bulk类别的。其次是Express,处理5190和小于500字节的UDP包。然后是Normal,包括20,21,25,80,110,443,993,995这些常见端口,涵盖http/https,ftp,邮件系统。最后是Bulk,包括其他包,尤其是ed和bt。这个QoS脚本安装到系统后通过修改/etc/config/qos配置文件来设置WAN口带宽。这里是官方wiki上的介绍https://wiki.openwrt.org/doc/uci/qos

注意事项:不能同时安装多个qos软件包,安装新的软件包之前要卸载旧的;至少两个其他的qos软件包在openwrt的资源库中:sqm-scripts和wshaper。

sqm-scripts是更现代并且有luci支持,配置介绍在网址:http://www.bufferbloat.net/projects/cerowrt/wiki/Setting_up_SQM_for_CeroWrt_310

qos-scripts脚本默认规则使用sch_fhsc和sch_fq_codel

wshaper默认规则使用sch_sfq sch_htb http://lartc.org/wondershaper/最后发布在2002,现在可能是未维护的
如果想要自己编写脚本实现qos,请参考如下wiki:https://wiki.openwrt.org/doc/howto/packet.scheduler/packet.scheduler

在menuconfig配置界面选择qos-scripts软件包需要依赖如下软件包 PACKAGE_iptables-mod-ipopt PACKAGE_librt PACKAGE_kmod-ifb PACKAGE_libpthread PACKAGE_libssp PACKAGE_libc PACKAGE_kmod-sched-core PACKAGE_tc PACKAGE_kmod-sched-connmark PACKAGE_iptables PACKAGE_iptables-mod-conntrack-extra
在选中qos-scripts是自动选择这些软件包

不过上面这些软件包不支持sch_htb规则,需要选择PACKAGE_kmod-sched

lsmod |grep sch

sch_hfsc 13089 2

sch_fq_codel 6017 8

sch_codel 4017 0

sch_ingress 945 1

hfsc允许按比例分配频宽并且控制及分配延迟(latency)。这能够在只有一条实体网路连线的情况下,又快又好地同时提供频宽密集的资料传输服务及互动式服务。

它要保证数据包的实时性和体现链路的共享。所以在它的总带宽下对各个叶子class(实时+链路共享)和中间class(链路共享)进行带宽分配,而单独对每个IP进行

带宽限制显得没有意义,openwrt的QoS已经实现了对服务分类进行不同优先级流控,我们倒是可以测试一下这个。

要对单个IP进行带宽限制当然也可以实现,我写了一个脚本,放上去运行就可以对单个IP限流了,也可以参考这个写出各种不同的流控脚本,参考该链接:
http://linux-ip.net/articles/hfsc.en/, hfsc是如何实现链路共享以及保证服务的实时性。

下面是一位大神的中文版hfsc原理介绍,先转起,以后有时间再仔细研究吧

转个hfsc的原理,据说比htb强
http://www.right.com.cn/forum/thread-72817-1-1.html
(出处: 恩山无线论坛)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: