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

TC是Traffic Control的缩写。在Linux系统中,流量控制是通过建立数据包队列(Queue),并控制各个队列中数据包的发送方式来实现的。Linux流量控制的基本原理如图2-12所示,该图描述了Linux系统中网络数据的处理流程。

 

由图2-12可知:

接收包从输入接口(Input Interface)进来后,将经过输入流量限制(Ingress Policing)以丢弃不符合规定的数据包。而符合规定的数据包则交给输入多路选择器(Input De-Multiplexing)进行判断选择。

输入多路选择器的选择结果是,如果数据包的目的是本机,将该包送给上层处理,否则需要将数据包交到转发块(Forwarding Block)去处理。转发块同时也接收来自本机上层(TCP、UDP等)产生的包。

转发块通过查看路由表,决定处理包的下一跳目的地。然后,转发块对数据包进行排列整合以便将它们送到对应的输出接口(Output Interface)。

一般而言,我们只能限制本机网卡往外发送的数据包,而不能限制网卡接收的数据包。Linux中的流量控制就是在数据包通过输出接口时,通过改变发送次序等方式来实现控制传输速率的。

提示 也可通过IFB设备在输入接口进行流量控制。相关内容见2.3.3节。

在具体实现中,系统会建立许多队列及对应的队列规则(queuing discipline,简称qdisc)。目前系统包括的qdisc分为两类。

无分类的队列规则(Classless qdisc):该规则对进入网卡的数据包不加区分,统一对待。使用这种规定的处理能够对数据包重新编排、延迟或丢弃。简而言之,这种类型是针对整个网卡的流量进行调整。常用的qdisc如下。

fifo(First In First Out,先进先出队列):最简单的控制。

SFQ(Stochastic Fairness Queuing,随机公平队列):对发送会话进行重排,这样每个发送会话都可以公平地发送数据)。

RED(Random Early Detection,前向随机丢包):用于模拟流量接近带宽限制时丢包的情况。
TBF(Token Bucket Filter,令牌桶过滤器):可较好地使得流量减低到预设值。适合高带宽的环境。这类qdisc使用的流量控制手段主要是排序、限速和丢包。

分类的队列规定(Classfull qdisc):它对进入网络设备的数据包根据不同的需求以分类的方式区分对待。数据包进入一个分类的队列后,它就需要被送到某一个类中进行分类处理。对数据包进行分类的工具是过滤器(filter)。过滤器会返回一个决定,qdisc根据该决定把数据包送入相应的类进行排队。一个类可以包含多个子类,每个子类可再次使用它们的过滤器进行进一步的分类。当所有分类都处理完后,数据包才进入该类对应的队列排队。

简单言之,如果要利用tc进行流量控制,其主要工作将包含建立队列、建立分类和建立过滤器三个方面,一般的步骤如下。

1)针对网络物理设备(如以太网卡eth0)绑定一个队列QDisc;

2)在该队列上建立分类class;

3)为每一分类建立一个基于路由的过滤器filter;

4)最后与过滤器相配合,建立特定的路由表。

提示 tc命令所涉及的流量控制方面的知识相当复杂,感兴趣的读者可根据章末列出的参考资料做进一步的深入研究。

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

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