- 浏览: 865670 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (280)
- java相关 (29)
- linux系统 (55)
- ipsec (0)
- ssl (3)
- 信息安全 (13)
- web相关 (35)
- windows (9)
- c,c++ (14)
- log4j (3)
- hibernate (8)
- sqlite (1)
- 程序人生 (2)
- js (2)
- 生活点滴 (3)
- 网络相关 (14)
- 问题积累 (15)
- 数据库相关 (27)
- 软件测试 (2)
- PKI相关 (2)
- 程序设计 (7)
- 犄角旮旯 (0)
- 杂七杂八 (0)
- 硬件相关 (14)
- 防火墙 (2)
- 电子商务 (2)
- 多媒体相关 (1)
- 内存管理 (4)
- 面向对象 (1)
- csp (1)
- 驱动开发 (3)
- 移动开发 (2)
- openssl多线程实例 (1)
最新评论
-
xiaoyao3857:
博主很有探索精神嘛,学习了
Linux主机名Hostname详解 -
hiskyrisa:
言简意赅,好文章。
Flex是什么 -
layznet:
犯了类似错误。使用的是derby数据库。driverClass ...
java.sql.SQLException: No suitable driver -
idision:
你好,文章有一句createSubjectKeyId(keyT ...
bouncycastle 产生证书 -
zheng12tian:
代码有全的不?只贴一部分,,,,
在LOG4J中把日志写入远程数据库
一、环境和要求:
线路:ADSL:2M/512K
eth0:10.0.0.136,外网口
eth1:192.168.1.1,内网口
业务需求:保证正常的网页浏览,FTP,SMTP,POP3,对其它的所有应用加以限制,以免影响正常业务的使用。
1、让交互数据包保持较低的延迟时间,也就是说上载或下载文件不会打扰SSH/telnet等。
2、上载或下载期间有合理的速率用于网页浏览,即使http属于一种大量数据传输,也不应受其它传输影响太大
3、对FTP-data限速,不会占用所有带宽
4、对SMTP,pop3限速
5、对未分类的进行限制,以免影响
6、保证上载不会影响下载,上载数据流会影响下载的速率,这是相当普遍的现象。
7、对每个IP的下载速率进行限制
8、取得空闲带宽的优先级别如:交互数据,FTP-data,smtp,pop3;网页浏览,其它业务优先级别最低
二、方法:
1、(eth0)使用HTB分成五类:如下图
+---------+
| root 1: |
+---------+
|
+--------------------------------+
| class 1:1 |
+--------------------------------+
| | | | | |
+----+ +----+ +----+ +----+ +----+
|1:11| |1:12| |1:13| |1:14| |1:15|
+----+ +----+ +----+ +----+ +----+
classid 1:11:
1)这个类优先权最高。拥有最低的延迟并最先取得空闲带宽,因此要设置这个类的峰值速率。
ssh、telnet、dns、quake3、irc,ftp控制,smtp命令和带有SYN标记的数据包都应属于这一类。
2)为了保证上行数据流不会伤害下行流,我们还要把ACK数据包排在队列前面。这就是当发生大批量数据流的时
候,双向传输均受到严重影响的原因。因为下行数据的ACK必须同上行流进行竞争,并在处理过程中被延迟。
3)限制上载速率:把上载速率限制在比可用带宽稍小一些的位置上,于是你的MODEM中就不会形成队列了。
4)排除了下行队列(除了偶尔的突发),保证交互数据包永远排在上行队列的最前面。
classid 1:12:大批量传输的类。主要用来处理浏览网页的数据包,目标端口80,8080,443,8443的包。
classid 1:13:此类是拥用最大吞吐TOS位的数据包。用于处理目的地址为xxxx的FTP-data。
classid
1:14:这里是邮件(SMTP、pop3)相关和TOS要求最小成本的数据流。用于处理目的地址为xxxx的smtp,pop3服务
classid 1:15:最后是经过NAT进行大批量传输的机器,以保证他们不会妨碍正常服务。
2、(eth0)限制下载速率:。丢掉那些太快到来的数据包,不让他们导致TCP/IP的速率低于我们期望的速率。因
为我们不希望轻易地丢弃数据包,所以我们要配置“burst”来容纳突发传输。
3、(eth1)限制下载速率:对每一个IP限制最高下载速率
三、
1、队列处理
#脚本:用384kbps作为峰值速率,调整CEIL为上行速率的75%。
#Set the following values to somewhat lesss than your actual download and uplink speed.
DOWNLINK=2000
UPLINK=384
#清空已有的队列,并把出错消息清空
#clean existing down and uplink qdiscs,put the errors to /dev/null
tc qdisc del dev eth0 root 2> /dev/null > /dev/null
tc qdisc del dev eth0 ingress 2> /dev/null > /dev/null
tc qdisc del dev eth1 root 2> /dev/null > /dev/null
########################################uplink###########################################
#建立HTB父类,默认数据由1:15这个类通走
#install root HTB,point default traffic to 1:15:
tc qdisc add dev eth0 root handle 1: htb default 15
#设定uplink的最大速率。
#shape everything at $UPLINK speed -this prevents huge queues in your DSL modem which destroy
latency:
# main class
tc class add dev eth0 parent 1: classid 1:1 htb rate $kbit ceil $kbit
#分类,1:11为最高优先级别,stmp,pop3,ftp-data次之,网页浏览再次之。并对每个类限制了最高速率。
#high prio class 1:11:
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 128kbit ceil 128kbit prio 0
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 128kbit ceil $kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 32kbit ceil $kbit prio 1
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 32kbit ceil $kbit prio 1
#bulk & default class 1:15 -gets slightly less traffic,and a lower priority:
tc class add dev eth0 parent 1:1 classid 1:15 htb rate 16kbit ceil $kbit prio 3
可以在类下面再附加上另一个队列规定,以保证带宽的公平使用:
#bost get Stochastic Fairness:
tc qdisc add dev eth0 parent 1:12 handle 12: sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 13: sfq perturb 10
tc qdisc add dev eth0 parent 1:14 handle 14: sfq perturb 10
tc qdisc add dev eth0 parent 1:15 handle 15: sfq perturb 10
2、分类:
上面的队列处理中等于把所有发出的数据包都送给了1:15
(tc qdisc add dev eth0 root handle 1: htb default 15)。
现在应该需要告诉机器那些数据包走哪条路。设置过滤器以便用iptables对数据包进行分类。
可以通过RETURN方法避免遍历所有的规则。
#TOS Mininum Delay (ssh,telnet) in 1:11:
tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 1 fw classid 1:11
#80,8080,443 in 1:12
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 2 fw classid 1:12
#ftp-data in 1:13
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 3 fw classid 1:13
#smtp,pop3 in 1:14
tc filter add dev eth0 parent 1:0 protocol ip prio 4 handle 4 fw classid 1:14
#
tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 5 fw classid 1:15
这样数据包会有一个特定的FWMARK标记值(hanlde x fw),表明它应该送给哪个类( classid x)。
后面要给数据包打标记。
3、丢掉那些太快到来的数据包,不让他们导致TCP/IP的速率低于我们期望的速率。因为我们不希望轻易地丢弃数据包,所以我们要配置“burst”来容纳突发传输。,
########################################DOWNLINK###########################################
# install the ingress qdisc on the ingress
tc qdisc add dev eth0 handle ffff: ingress
# DROP everything that's coming in too fast:
tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate $kbit burst 10k drop flowid :1
4、对内网的IP速率进行限制
tc qdisc add dev eth1 root handle 2: htb
tc class add dev eth1 parent 2: classid 2:1 htb rate 128kbit ceil $kbit
tc qdisc add dev eth1 parent 2:1 sfq
tc filter add dev eth1 parent 2:0 protocol ip prio 4 u32 match ip dst 192.168.1.0/24 flowid 2:1
线路:ADSL:2M/512K
eth0:10.0.0.136,外网口
eth1:192.168.1.1,内网口
业务需求:保证正常的网页浏览,FTP,SMTP,POP3,对其它的所有应用加以限制,以免影响正常业务的使用。
1、让交互数据包保持较低的延迟时间,也就是说上载或下载文件不会打扰SSH/telnet等。
2、上载或下载期间有合理的速率用于网页浏览,即使http属于一种大量数据传输,也不应受其它传输影响太大
3、对FTP-data限速,不会占用所有带宽
4、对SMTP,pop3限速
5、对未分类的进行限制,以免影响
6、保证上载不会影响下载,上载数据流会影响下载的速率,这是相当普遍的现象。
7、对每个IP的下载速率进行限制
8、取得空闲带宽的优先级别如:交互数据,FTP-data,smtp,pop3;网页浏览,其它业务优先级别最低
二、方法:
1、(eth0)使用HTB分成五类:如下图
+---------+
| root 1: |
+---------+
|
+--------------------------------+
| class 1:1 |
+--------------------------------+
| | | | | |
+----+ +----+ +----+ +----+ +----+
|1:11| |1:12| |1:13| |1:14| |1:15|
+----+ +----+ +----+ +----+ +----+
classid 1:11:
1)这个类优先权最高。拥有最低的延迟并最先取得空闲带宽,因此要设置这个类的峰值速率。
ssh、telnet、dns、quake3、irc,ftp控制,smtp命令和带有SYN标记的数据包都应属于这一类。
2)为了保证上行数据流不会伤害下行流,我们还要把ACK数据包排在队列前面。这就是当发生大批量数据流的时
候,双向传输均受到严重影响的原因。因为下行数据的ACK必须同上行流进行竞争,并在处理过程中被延迟。
3)限制上载速率:把上载速率限制在比可用带宽稍小一些的位置上,于是你的MODEM中就不会形成队列了。
4)排除了下行队列(除了偶尔的突发),保证交互数据包永远排在上行队列的最前面。
classid 1:12:大批量传输的类。主要用来处理浏览网页的数据包,目标端口80,8080,443,8443的包。
classid 1:13:此类是拥用最大吞吐TOS位的数据包。用于处理目的地址为xxxx的FTP-data。
classid
1:14:这里是邮件(SMTP、pop3)相关和TOS要求最小成本的数据流。用于处理目的地址为xxxx的smtp,pop3服务
classid 1:15:最后是经过NAT进行大批量传输的机器,以保证他们不会妨碍正常服务。
2、(eth0)限制下载速率:。丢掉那些太快到来的数据包,不让他们导致TCP/IP的速率低于我们期望的速率。因
为我们不希望轻易地丢弃数据包,所以我们要配置“burst”来容纳突发传输。
3、(eth1)限制下载速率:对每一个IP限制最高下载速率
三、
1、队列处理
#脚本:用384kbps作为峰值速率,调整CEIL为上行速率的75%。
#Set the following values to somewhat lesss than your actual download and uplink speed.
DOWNLINK=2000
UPLINK=384
#清空已有的队列,并把出错消息清空
#clean existing down and uplink qdiscs,put the errors to /dev/null
tc qdisc del dev eth0 root 2> /dev/null > /dev/null
tc qdisc del dev eth0 ingress 2> /dev/null > /dev/null
tc qdisc del dev eth1 root 2> /dev/null > /dev/null
########################################uplink###########################################
#建立HTB父类,默认数据由1:15这个类通走
#install root HTB,point default traffic to 1:15:
tc qdisc add dev eth0 root handle 1: htb default 15
#设定uplink的最大速率。
#shape everything at $UPLINK speed -this prevents huge queues in your DSL modem which destroy
latency:
# main class
tc class add dev eth0 parent 1: classid 1:1 htb rate $kbit ceil $kbit
#分类,1:11为最高优先级别,stmp,pop3,ftp-data次之,网页浏览再次之。并对每个类限制了最高速率。
#high prio class 1:11:
tc class add dev eth0 parent 1:1 classid 1:11 htb rate 128kbit ceil 128kbit prio 0
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 128kbit ceil $kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 32kbit ceil $kbit prio 1
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 32kbit ceil $kbit prio 1
#bulk & default class 1:15 -gets slightly less traffic,and a lower priority:
tc class add dev eth0 parent 1:1 classid 1:15 htb rate 16kbit ceil $kbit prio 3
可以在类下面再附加上另一个队列规定,以保证带宽的公平使用:
#bost get Stochastic Fairness:
tc qdisc add dev eth0 parent 1:12 handle 12: sfq perturb 10
tc qdisc add dev eth0 parent 1:13 handle 13: sfq perturb 10
tc qdisc add dev eth0 parent 1:14 handle 14: sfq perturb 10
tc qdisc add dev eth0 parent 1:15 handle 15: sfq perturb 10
2、分类:
上面的队列处理中等于把所有发出的数据包都送给了1:15
(tc qdisc add dev eth0 root handle 1: htb default 15)。
现在应该需要告诉机器那些数据包走哪条路。设置过滤器以便用iptables对数据包进行分类。
可以通过RETURN方法避免遍历所有的规则。
#TOS Mininum Delay (ssh,telnet) in 1:11:
tc filter add dev eth0 parent 1:0 protocol ip prio 1 handle 1 fw classid 1:11
#80,8080,443 in 1:12
tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle 2 fw classid 1:12
#ftp-data in 1:13
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 3 fw classid 1:13
#smtp,pop3 in 1:14
tc filter add dev eth0 parent 1:0 protocol ip prio 4 handle 4 fw classid 1:14
#
tc filter add dev eth0 parent 1:0 protocol ip prio 5 handle 5 fw classid 1:15
这样数据包会有一个特定的FWMARK标记值(hanlde x fw),表明它应该送给哪个类( classid x)。
后面要给数据包打标记。
3、丢掉那些太快到来的数据包,不让他们导致TCP/IP的速率低于我们期望的速率。因为我们不希望轻易地丢弃数据包,所以我们要配置“burst”来容纳突发传输。,
########################################DOWNLINK###########################################
# install the ingress qdisc on the ingress
tc qdisc add dev eth0 handle ffff: ingress
# DROP everything that's coming in too fast:
tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match ip src 0.0.0.0/0 police rate $kbit burst 10k drop flowid :1
4、对内网的IP速率进行限制
tc qdisc add dev eth1 root handle 2: htb
tc class add dev eth1 parent 2: classid 2:1 htb rate 128kbit ceil $kbit
tc qdisc add dev eth1 parent 2:1 sfq
tc filter add dev eth1 parent 2:0 protocol ip prio 4 u32 match ip dst 192.168.1.0/24 flowid 2:1
发表评论
-
Linux c的多线程编程实例
2011-07-19 17:28 1974通过创建两个线程来实现对一个数的递加。或许这个实例没有实际运用 ... -
linux下进程的最大线程数、进程最大数、进程打开的文件数
2011-06-22 17:35 1948linux 系统中单个进程的 ... -
Linux中dos2unix的批量转换命令
2011-01-05 10:31 6992在Linux中将DOS 格式转换为Unix格式的文件可以使用d ... -
linux双网关双线路网络设置
2010-08-03 19:10 2011由于电信和网通之间互联互通 的问题,很多 ... -
syslog-ng学习心得之二
2010-07-06 08:58 2443在[url]http://coolerfeng.blog.51 ... -
syslog-ng学习心得之一
2010-07-06 08:58 2746转载一篇syslog-ng的文章的,本来是想打算自己写一篇 ... -
Linux用户进程是如何释放内存
2009-12-25 17:16 2059Linux进程使用内存的基本流程: 见图1 从 ... -
Linux内存使用详解
2009-12-25 16:56 2376一提到内存管理,我们 ... -
linux下查看内存使用情况
2009-12-25 14:56 1992在Linux下查看内存我们 ... -
Linux编程C++内存管理之内存分配详解
2009-12-21 21:33 1761程序员们经常编写内存 ... -
内核模块调试方法
2009-11-17 11:23 2595对 于任何一位内核代 ... -
Linux操作系统下以太网卡的安装及配置
2009-11-11 17:18 1683Linux操作系统以其 独有的开放性、稳定性、高 ... -
跟我一起写 Makefile(3)
2009-11-03 14:38 636“-s” “--silent” “--quiet” 在命 ... -
跟我一起写 Makefile(2)
2009-11-03 14:35 960书写命令 ———— 每 ... -
跟我一起写 Makefile(1)
2009-11-03 14:32 983陈皓 (CSDN) 概述 — ... -
CC与GCC的区别概括介绍
2009-11-03 14:29 1460从名字上看,老的unix系统 的CC程序叫做C Comp ... -
linux内核模块管理命令
2009-10-30 10:54 17141. lsmod 列出已经加载的内核模块 lsmo ... -
分区修复软件Testdisk 安装使用
2009-08-26 14:23 4929linux下超帅的分区表修复软件.以前用过n多的window ... -
Linux下的分区修复软件Testdisk
2009-08-26 10:40 1861好了,这个软件叫testdisk.很帅的。。 如果你是使 ... -
Linux分区数据恢复
2009-08-26 10:18 1445公司的一台redhat机器启动不了了,是由于多次非正常关机造成 ...
相关推荐
tc+htb+imq流量控制脚本
htb+imq流量控
这个"5.X_HTB+PCQ智能流控精华版"脚本集成了HTB和PCQ的优点,为ROS 5.x用户提供了一套简洁而高效的流量控制方案。脚本包含了详细的教程说明,使得安装和配置过程变得简单,即便是没有深入技术背景的管理员也能快速...
ROS HTB+PCQ 脚本。很给力的一个脚本,本人已经试过,放心使用。
HTB(Hierarchical Token Bucket)和PCQ(Per Connection Queue)是ROS中两种重要的流量控制和调度策略,常用于优化网络带宽分配,确保不同服务的质量。 **HTB限速(游戏网页端口优先)** HTB是一种流量整形工具,...
ROS3.30 +HTB+DSCP-L7
在Linux环境下,如果配置了两个网卡,如eth1作为外网接口,eth0作为内网接口,通常会在eth0上设置HTB流量控制。HTB是一种更高级的流量整形算法,它可以创建一个分层级的令牌桶,用于限制和管理不同级别的流量速率。 ...
ROS3.x的HTB+PCQ脚本是网络流量控制技术在RouterOS系统中的应用,主要目的是优化网络带宽管理,确保在10M网线的限制下,能够同时稳定支持100台设备的使用,并且不论是游戏还是网页浏览都能保持流畅。RouterOS是由...
网上有大把的HTB+PCB脚本,但基本上都是针对大型网吧的脚本。这里就给个4M实例。单线ADSL带宽4M,线路损耗后实际速度3.5M左右,上传350k左右,由于ADSL满速下载、上传速度会变慢,配置ROS最高上传、下载最好不要超过...
HTB是Linux内核中的一个流量控制机制,用于在不同优先级的数据流之间分配带宽。它基于令牌桶算法,将数据流分到不同的层次(类),每个类有自己的令牌桶。每个类在允许发送数据前需要获取令牌,令牌数量决定了其可...
在给定的"ROS 6M单线 HTB+L7+DSCP+PCQ 全分离策略"中,涉及了网络流量控制和分类的多个核心概念,主要包括HTB(Hierarchical Token Bucket)、L7(Layer 7 Filter)、DSCP(Differentiated Services Code Point)和...
HTB允许更精细的带宽控制,确保高优先级的流量得到优先处理,同时避免低优先级流量对网络造成过度拥堵。 2. L7过滤(Layer 7 Filtering):在IP层(即第3层)和TCP/UDP层(即第4层)的基础上,L7过滤进一步深入到...
ROS3x-5.x软路由多ADSL+光纤+HTB+七层协议脚本
3. 高度灵敏性:HTB 可以实时地监控和控制流量,确保网络的稳定性和安全性。 HTB 的应用场景包括: 1. 网络流量控制:HTB 可以用于控制网络流量,确保网络的稳定性和安全性。 2. 带宽管理:HTB 可以用于管理带宽,...
这里我们介绍下双线的 HTB的操作方法,这里以电信和联通线路为例,双线的 HTB里我们可以加入对游戏端口的优先控制,即但个用户在下载时,玩游戏同样不会卡,我们这里重点讲解 HTB流控做法,双线的路由规则被忽略。...
除夕夜200个人大部分在那看春晚直播,本来是用的那个元旦加强版的。 各种在线视频,风行,PPS,QQ直播,我滴个神啊, 那个卡的我啊,蛋都绿了。 随便开个网站,没有30秒别想出来字,网上看个电影,90分钟的一部...
**Linux HTB流量控制手册——用户指导** 在Linux操作系统中,网络流量管理是至关重要的,尤其是在高带宽和多用户环境中。HTB(Hierarchical Token Bucket)是一种高级的队列调度算法,它允许系统对不同优先级的网络...
1、可生成单线htb+pcq(即游戏网页下载优先级别+自动限速流控模式) 2、可生成多线htb+pcq(即游戏网页下载优先级别+自动限速流控模式) 3、生成电信联通策略(实现南北互通) 4、光纤一号多拔功能(可以拔N个号) 5...
Linux中的流量控制机制包括`iptables`、`tc`(Traffic Control)和`netem`(Network Emulation)。 10. **iptables**:iptables是Linux内核防火墙的用户空间工具,可以实现包过滤、NAT(网络地址转换)和报文速率...
1. 流量控制方式:TC 提供了多种流量控制方式,包括 Token Bucket Filter(TBF)、Hierarchical Token Bucket(HTB)等。 2. 流量控制处理对象:TC 可以对网络流量进行分类、过滤和修改,以达到流量控制的目的。 3. ...