引言:
[color=red:b4c63603ab][b:b4c63603ab]一、环境和要求:[/b:b4c63603ab][/color:b4c63603ab]
线路:ADSL:2M/512K
eth0:10.0.0.136,外网口
eth1:192.168.1.1,内网口
业务需求:保证正...
摘要:
概述:本文介绍使用darwin 流服务器实现linux下的视频点播系统的方法和步骤。
一、darwin简介
darwin 流服务器是苹果公司quicktime流服务器的opensource版本,是完全基于quicktime流服务器代码开发的,其实现了一种在网络上传播quicktime流的机制。darwin具有以下一些特点:
1. 具有web管理接口;
2. 开放源代码;
3. 支持mac os x server, linux ,solaris, f......
摘要:
为了复习一下自学的shell编程,闲余时间编了个通讯录,主要有三个主体部分,本来想加个编辑功能的,想了想,里面内容这么少,要编辑不如将原来的覆盖不就ok了嘛,简单一个功能却要加几十行,弄得这么麻烦,算了,就下面的了^_^
主函数脚本:
#!/bin/sh
source add
source show
source delete
function menu()
{
echo -e "\33[34m"
cat <<......
TC(HTB)+iptables作流量控制
[color=red:b4c63603ab][b:b4c63603ab]一、环境与要求:[/b:b4c63603ab][/color:b4c63603ab]
【相关文章:
这就是Kerberos的工作原理】 【扩展阅读:
请问:如何执行cd进入目录后同时自动执行】线路:adsl:2m/512k
【扩展信息:
fvwm的背景图片出不来,灰蒙蒙一片】 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;网页浏览,其它业务优先级别最低
[color=red:b4c63603ab]二、方法:[/color:b4c63603ab]
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限制最高下载速率
[color=red:b4c63603ab]三、
1、队列处理[/color:b4c63603ab]
#脚本:用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 ${uplink}kbit ceil ${uplink}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 ${uplink}kbit prio 2
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 32kbit ceil ${uplink}kbit prio 1
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 32kbit ceil ${uplink}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 ${uplink}kbit prio 3
可以在类下面再附加上另一个队列规定,以保证带宽的公平使用:
#bost get stochastic fairness:
tc qdisc add dev eth0 parent 1:12 handle 12: sfq
tc qdisc add dev eth0 parent 1:13 handle 13: sfq
tc qdisc add dev eth0 parent 1:14 handle 14: sfq
tc qdisc add dev eth0 parent 1:15 handle 15: sfq
[color=red:b4c63603ab]2、分类:[/color:b4c63603ab]
上面的队列处理中等于把所有发出的数据包都送给了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:x)。
后面要给数据包打标记。
[color=red:b4c63603ab]3、丢掉那些太快到来的数据包,不让他们导致tcp/ip的速率低于我们期望的速率。因为我们不希望轻易地丢弃数据包,所以我们要配置“burst”来容纳突发传输。, [/color:b4c63603ab]
########################################downlink###########################################
# install the ingress qdisc on the ingress
tc qdisc add dev eth0 handle ffff: ingress
# drop everything thats 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 ${downlink}kbit burst 10k drop flowid :1
...
下一页 摘要:
play123456的linux 学习笔记1: 背景和选择(原创)
一、背景
在unix+informix平台上玩了几年,但unix价格昂贵,决定慢慢向免费的linux转移。目标:不用大量修改原有代码平滑迁移到linux平台,可以以linux+oracle替换原有架构。
二、linux选择
简单一查资料发现有很多种linux可供选择,比较之后发现其中比较容易得到和上手要算redhat,选择它的另一个原因是国内有大量的使用者,众多的中文论坛可查资料。......