Linux课程设计Linux下的网关服务 第7页
[root@localhost root]# tc qdisc add dev eth0 root handle 1:0 cbq bandwidth 10Mbit cell 8 avpkt 1000 mpu 64
5.3.2 建立分类
对内部不同网络流量的局域网建立不同的分类,分类建立在队列之上。针对一个队列需建立一个根分类,然后在其上建立子分类。对于分类,按其分类的编号顺序起作用,编号小的优先。一旦符合某个分类匹配规则,通过该分类发送数据包,则其后的分类不再起作用。
(1)创建根分类1:1,分配带宽为10Mb。
[root@localhost root]# tc class add dev eth0 parent 1:0 classid 1:1 cbq bandwidth 10Mbit rate 10Mbit allot 1514 cell 8 weight 1Mbit prio 8 maxburst 20 avpkt 1000
该队列的最大可用带宽为10Mb,实际分配的带宽为10Mb,可接收冲突的发送最长包数目为20字节,最大传输单元(加MAC头)大小为1514字节,优先级别为8,包的平均大小为1000字节,包间隔发送单元的大小为8字节,相应于实际带宽的加权速率为10Mb。
(2)创建分类1:10,其父分类为1:1,分配带宽为8Mb。
[root@localhost root]# tc class add dev eth0 parent 1:1 classid 1:10 cbq bandwidth 10Mbit rate 8Mbit allot 1514 cell 8 weight 800Kbit prio 5 maxburst 20 avpkt 1000 bounded isolated
该队列的最大可用带宽为10Mb,实际分配的带宽为 8Mb,可接收冲突的发送最长包数目为20字节,最大传输单元(加MAC头)大小为1514字节,优先级别为5,包的平均大小为1000字节,包间隔发送单元的大小为8字节,相应于实际带宽的加权速率为800Kb,独占带宽且不可借用未使用带宽。
(3)创建分类1:20,其父分类为1:1,分配带宽为2Mb。
[root@localhost root]# tc class add dev eth1 parent 1:1 classid 1:20 cbq bandwidth 10Mbit rate 2Mbit allot 1514 cell 8 weight 200Kbit prio 5 maxburst 20 avpkt 1000 bounded isolated
该队列的最大可用带宽为10Mb,实际分配的带宽为 2Mb,可接收冲突的发送最长包数目为20字节,最大传输单元(加MAC头)大小为1514字节,优先级别为5,包的平均大小为1000字节,包间隔发送单元的大小为8字节,相应于实际带宽的加权速率为200Kb,独占带宽且不可借用未使用带宽。
5.3.3 管理队列
创建队列,告诉内核使用SFQ随机公平队列来管理队列。
SFQ针对一个TCP或UDP流,流量被分成相当多数量的FIFO(先进先出)队列,使用散列算法将所有的对话映射到这些FIFO队列,数据按照简单轮转的方式发送,每个会话都按顺序得到发送机会。
[root@localhost root]# tc qdisc add dev eth0 parent 1:10 sfq quantum 1514b perturb 15 #tc qdisc add dev eth0 parent 1:20 sfq quantum 1514b perturb 15
上面就是创建SFQ管理队列,每个FIFO队列传输1514bit后切换到下一FIFO个队列,每15秒后重新配置一次散列算法。
5.3.4建立过滤器
过滤器主要服务于分类。一般只需针对根分类提供一个过滤器,然后为每个子分类提 供路由映射。
(1)应用u32分类器到分类1:10,父分类编号为1:0,优先级为100,过滤协议为IP,目标地址为192.168.1.0/24。
[root@localhost root]# tc filter add dev eth0 protocol ip parent 1:0 prio 100 u32 match ip dst 192.168.1.0/24 flowid 1:10
(2)应用u32分类器到分类1:20,父分类编号为1:0,优先级为25,过滤协议为IP,目标地址为192.168.2.0/24。
[root@localhost root]# tc filter add dev eth0 protocol ip parent 1:0 prio 25 u32 match ip dst 192.168.2.0/24 flowid 1:20
显示过滤器的状况
[root@localhost root]# tc -s filter ls dev eth0
filter parent 1: protocol ip pref 100 route
filter parent 1: protocol ip pref 100 route fh 0xffff0002 flowid 1:2 to 2
filter parent 1: protocol ip pref 100 route fh 0xffff0003 flowid 1:3 to 3
filter parent 1: protocol ip pref 100 route fh 0xffff0004 flowid 1:4 to 4
总结:在Linux系统中,流量控制的方法和功能也很多,设计中的只是很简单的流量控制方法。通过其他设置方法,还可以对流量做更细致的控制[4]。
结束语
通过本次课程设计,使我对Linux操作系统和网关服务的知识有了进一步的了解,使我在本软件的设计水平上有了进一步的提高。在本次课程设计中,也碰到一些问题,主要是每个软件的配置文件较长,逻辑设计很为复杂,对于第一个问题,在修改配置文件时候认真小心就足以克服,而对于第二个问题,则是通过认真研究教材,明确设计思想,看懂配置文件理清思路的方法克服的。通过本实验,我进一步提高了自己分析问题,解决问题的能力。尤其是在理论联系实际的方面,都为今后的学习和工作打下了坚实的基础。本次课程设计,是在王艳华老师的指导下完成,在整个课程设计的过程中,老师认真负责的治学态度,严谨务实的共做作风都给我留下了深刻的印象,在此对王老师表示感谢。
参考文献
[1]宇骏信息技术有限公司. Linux应用与管理培训. 红旗出版社,2003
[2] http://www.751com.cn
[3] 马晰伟. Linux服务器配置手册. 北京:科学出版社,2005
[5] 岑岗.《Linux Shell编程》.中国铁道出版社. 2000
[6] 高阳.《网络操作系统Linux》.电子工业出版社. 2005
[7] 樊庆红.《Linux宝典》. 电子工业出版社. 2003
上一页 [1] [2] [3] [4] [5] [6] [7]