读书频道 > 网站 > 网页设计 > 深入理解Android:Wi-Fi、NFC和GPS卷
2.3.6 BandwidthControlCmd和IdletimerControlCmd命令
14-05-23    奋斗的小年轻
收藏    我要投稿   
本书是经典畅销书深入理解Android系列的新作,由资深Android系统专家邓凡平先生撰写。从通信专业知识和Android系统代码实现的角度,对Netd、Wi-Fi、NFC和GPS等模块的代码进行深入的剖析,旨在深刻揭示其实现原理立即去当当网订购

本节介绍BandwidthControlCmd(简称bwcc)和IdletimerControlCmd(简称icc)。这两个命令都利用了iptables的扩展模块,所以相应功能基本上完全是靠iptables来实现的。

1.BandwidthControlCmd命令

bwcc用于Android系统中的带宽控制。目前4.2系统中的带宽控制可针对设备、某个应用。另外还可以设置预警值,当带宽使用超过该值时会收到相应的通知(见2.2.2节中的NETLINK_NFQLOG)。

和流量控制类似,带宽控制的实现也是利用iptables。它利用了iptables中扩展模块libxt_quota2的功能,属于iptables的高级用法。这些内容对于非从事网络管理专业工作的人来说难度相当大。考虑到这个因素,本节将把bwcc当做一个黑盒,仅介绍其提供的各项功能。想深入研究的读者可在此基础上结合参考资料进一步了解。

bwcc提供的选项如下。

enable和disable:开启或关闭带宽控制。

removequota、getquota、getiquota、setquota、setquotas、removequotas、removeiquota:删除、查询和添加带宽配额。选项中的'i'针对一个或多个interface。选项中的's'代表该选项可携带多个interface参数。

addnaughtyapps和removenaughtyapps:以uid为目标,开启或关闭单个进程的带宽控制。

setglobalalert、removeglobalalert、setsharedalert、removesharedalert、setinterfacealert、removeinterfacealert:预警值添加/删除有关。可以设置全局(即所有网络接口,例如Wi-Fi、3G等)带宽预警值,或者单个设备(如仅针对wlan0)的带宽预
警值。

gettetherstats:获取绑定(Tether)设备的数据统计。后文将介绍Tether的相关知识点。

图2-21所示为利用ndc命令为Galaxy Note 2 setglobalalert后的结果。图中为bwcc设置了全局配额是1000字节,当使用测试机下载数据超过1000字节时,将得到如图2-22所示的警告消息。

 

图2-22所示最后一行打印了来自Kernel的qlog UEvent消息,以通知在wlan0设备上数据流量已超过配额。

提示 bwcc应该是Netd中难度最大的模块了,其难点是如何利用iptables进行带宽控制。相比其内部实现而言,掌握bwcc的功能对绝大多数Android开发者来说也许更加实用。

2.IdletimerControlCmd命令

icc利用了iptables另一个扩展模块libxt_idletimer,其对应的iptables命令格式如下。
iptables -t raw -A idletimer -i nic -j IDLETIMER --timeout  --label lable
--send_nl_msg 1

其中,各个参数的含义如下。

timeout:超时时间,单位是秒。

label:用来标示该rule的唯一名字。

send_nl_msg:如果超时,则通过/sys/net/xt_idletimer触发UEvent消息(回顾2.2.2节中关于“xt_idletimer”UEvent消息的介绍)。

提示 奇怪的是,笔者在模拟器和Galaxy Note 2上利用ndc测试icc命令均不能添加超时规则。而同样的命令放到Ubuntu 12.04上却工作正常(但Ubuntu上的iptable却不支持--send_nl_msg选项)。看来这个新颖的功能在目前的系统中支持得还不够好。

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站