解决无线动态带宽分配问题的技巧——工程师原创应用笔记

发布时间:2020-09-11 阅读量:2798 来源: 我爱方案网 作者: 我爱方案网

【编者按】Wsqos (wireless smart QoS) 是在解决无线路由器带宽分配问题时,编写的一个用户空间实现QoS的Daemon程序。它伴随WiFi客户端的连接与断开动作,动态的调整TC规则,以达到对WiFi客户端下行速率限制功能。wsqos运行过程中生成的tc规则可以通过tc命令查看。本文将描述性的内容分享给大家,旨在提供一个解决无线带宽分配的思路。


原理:


Wsqos 启动一个基于HTB算法的qdisc队列,一个最大限速为300Mpbs的根类(这个值可以通过命令选项配置)。之后,每有一个wifi客户连接进来,就会为其分配一个子类(class)和一个过滤器(filter)。过滤器以wifi客户的mac地址与数据包目标mac地址匹配,并将匹配的数据包送到属于该客户的htb限速队列中(由class子类定义)。


每个客户的htb子类都在最大限速的根类下面,所以,每个客户之间可以借用带宽。如果不允许借用带宽,可以使用-s 0选项。


编译:


1. 把wsqos包放到package下;make menuconfig选取上;

2. make kernel_menuconfig 确保

 Networking support ==> Networking options  ==> QoS and/or fair queueing ==> <*> Hierarchical Token Bucket (HTB)  以及  <*>   Universal 32bit comparisons w/ hashing (U32) 两项选中。


运行:


暂时没有提供自动启动脚本。系统启动后,在命令行下运行

# wsqos &

缺省无线最大速率是300Mbps,可以通过 -r 选项设定,-r 选项的单位是Mbps。比如 wsqos -r 200 &假定最大无线速率为200Mbps,之后每有一个客户链接进来,都会以这个值为基数,平分带宽。

使用 # tc class show dev ra0 命令来查看为每个客户设地的htb子类速率配置。


测试要点:


1. 设置两个以上wifi客户进行下载操作。看速率是不是理论要求的值,这几个客户应该是平分带宽。

2. 在有客户在下载的情况下,用手机等设备连接,断开操作,观察下载客户的速率变化。

3. 测试是否存在客户连接进来,但没有影响速率的情况;以及客户断开,但没有影响速率的情况。

4. 如果有条件,看系统能承受多少个连接。主要关注很多用户连接进来时,能否为每个用户正确分配htb class和filter.

使用tc class show dev ra0 来查看分配的子类数;htb子类数量应该与连接进来的客户数量一致;

使用tc filter show dev ra0 来查看分配的过滤器;过滤器的数量应该与连接进来的客户数量一致。

 

 

tc qdisc add dev ra0 root handle 1: htb

tc class add dev ra0 parent 1: classid 1:1 htb rate 37Mbps ceil 37Mbps

tc class add dev ra0 parent 1:1 classid 1:10 htb rate 30kbps ceil 100kbps

 

tc filter add dev ra0 protocol ip parent 1:0 prio 5 u32 match u16 0x0800 0xffff at -2 match u32 0x4E983FE7 0xffffffff at -12 match u16 0x9000 0xffff at -14 flowid 1:10

tc filter add dev ra0 protocol ip parent 1:0 prio 5 u32 match u16 0x0800 0xffff at -2 match u32 0x4E983FE7 0xffffffff at -12 match u16 0x9001 0xffff at -14 flowid 1:10

tc filter del dev ra0 protocol ip parent 1:0 prio 5 u32 match u16 0x0800 0xffff at -2 match u32 0x4E983FE7 0xffffffff at -12 match u16 0x9001 0xffff at -14 flowid 1:10

 

 

filter parent 1: protocol ip pref 49152 u32

filter parent 1: protocol ip pref 49152 u32 fh 800: ht divisor 1

filter parent 1: protocol ip pref 49152 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:a

  match 00000800/0000ffff at -4

  match 4e983fe7/ffffffff at -12

  match 00009000/0000ffff at -16

 

filter parent 1: protocol ip pref 5 u32

filter parent 1: protocol ip pref 5 u32 fh 800: ht divisor 1

filter parent 1: protocol ip pref 5 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:10

  match 00000800/0000ffff at -4

  match 4e983fe7/ffffffff at -12

  match 00009000/0000ffff at -16

 


作者:CloudWSN,具有多年嵌入式Linux开发经验,早前是从写Unix驱动开始的。先后做过的典型项目包括PCI加密卡驱动和银行对接系统、大屏拼接墙控制器开发、嵌入式处理器BSP板级支持包开发、POS机开发、DVR/DVS,IP Camera开发、酒店智能化房控系统开发、SNAP(安全网关)开发、无线路由器开发(包括硬件)、工业级数据网关开发(包括硬件)、智能PDU固件开发。我在方案网的店铺名是“OpenWRT开发”,有项目开发需求的雇主欢迎联系我!


相关资讯
无源晶振YSX321SL应用于高精度HUD平视显示系统YXC3225

在现代汽车行业中,HUD平视显示系统正日益成为驾驶员的得力助手,为驾驶员提供实时导航、车辆信息和警示等功能,使驾驶更加安全和便捷。在HUD平视显示系统中,高精度的晶振是确保系统稳定运行的关键要素。YSX321SL是一款优质的3225无源晶振,拥有多项卓越特性,使其成为HUD平视显示系统的首选。

拥有卓越性能的高精度超薄低功耗心电贴—YSX211SL

随着医疗技术的进步,心电监护设备在日常生活和医疗领域中起到了至关重要的作用。而无源晶振 YSX211SL 作为一种先进的心电贴产品,以其独特的优势在市场上备受瞩目。

可编程晶振选型应该注意事项

对于可编程晶振选型的话,需要根据企业的需求选择。在选择可编程晶振的时候注重晶振外观、晶振的频率、晶振的输出模式、晶振的型号等等,这些都是要注意的,尤其是晶振的频率和晶振输出模式以及晶振的型号都是需要注意的。

性能高的服务器—宽电压有源晶振YSO110TR 25MHZ,多种精度选择支持±10PPM—±30PPM

在现代科技发展中,服务器扮演着越来越重要的角色,为各种应用提供强大的计算和数据存储能力。而高品质的服务器组件是确保服务器稳定运行的关键。YSO110TR宽电压有源晶振,作为服务器的重要组成部分,具备多项优势,成为业界必备的可靠之选。

差分晶振怎么测量

其实对于差分晶振怎么测量方式有很多种,主要还是要看自己选择什么样的方式了,因为选择不同的测量方式步骤和操作方式是不同的。关于差分晶振怎么测量的方式,小扬给大家详细的分享一些吧!