linux网关下的TC控速

控制上传下载速度理论方面的相关记录
1、对于TC限速配置方面,最关键的要明白,TC限速实际上是在分析每个经过的IP数据包,根据我们给定的限速规则,将不同的IP数据包归入到不同的分类中,也可以理解为不同的通道。
2、在内部网,让多台主机通过一个IP地址上网的时候,需要进行NAT转发,最常用的是MASQUERADE的IP地址伪装,这解决了内部网多台主机,通过一个宽带或者专线给定的IP地址,实现同时上网的要求。要想让内部网多台主机同时上网,只要网关做给定IP的IP地址伪装,就可以完成开通上网的动作。
3、在网关内部的NAT转换时,基本的做法是将内部网上传出去的IP数据包中的源IP地址和端口,更改为网关指定的网关IP地址和临时的一个端口号,这样就形成一个IP+端口号的地址对,这个地址对被暂时记录到了网关的NAT转发表中,直到任务完成,这个地址对才被删除,这是基本的做法,还有其他的比如完全圆锥形NAT等,这部分可以参考网上的NAT原理。注意,在网关上NAT转换的时候,给的是一个临时端口,并不是特定的端口,这样才能解决多台主机或者一台主机多上网任务情况下,需要多个数据传输的问题,也就是说一台主机在上网同时打游戏的情况下,可以在网关开通多个地址对,也就是说IP地址一样,但是端口不同,这样形成的地址对不一样,才能实现上传和下载的数据不会混乱。
4、网关的架构:一般理解为 eth0--内核NAT--eth1,这样的过程,当然这是通过网关的数据,而不是进入网关的数据。也就是说,所有数据包要注意考虑经过内核后进行NAT转换后,包头的IP地址是怎么变化的。从内网到外网的数据包,是源地址IP被改为网关外网口的IP地址+临时的端口,从外网到内网的数据包,其目的地址IP是网关的外网IP+之前给的临时端口,NAT转换时,根据NAT表中的临时记录,将该数据包的目的IP地址改为内网指定主机的IP及相应的端口,并在内网口发布。
5、控制速度来说,只能控制对应网卡的数据发送速度,其实是对IP数据包发送规则进行了重新整理,而无法对接受数据包进行整理,所以需要注意,限制只能限制对应网卡的发送速度,而无法控制接受速度。
6、这样就可以知道,我们要控制下载速度,那么应该是控制网关内网口的发送速度,而控制上传速度就是控制网关外网口的发送速度。
7、对控制下载速度而言,由于数据包通过内网口的时候,已经由网关内核进行了NAT转换,所以特定的主机接收到的数据包,其目的地址IP已经是该主机的IP。
8、而对控制上传速度而言,在数据包通过外网口的时候,是数据包的特征应该是源地址IP全部变成了外网口的IP,目的IP地址不变。
9、根据通过网口的数据包特征,可以知道,在控制下载速度的时候,我们可以在TC里面,直接使用U32 选择器,因为目的IP地址是特定的,也就是我们需要控制速度的主机IP,所以使用u32 match ip dst 192.168.1.20,可以这样写。但是在控制上传速度的时候,U32的控制写法就无法控制了,因为目的IP地址很多,源地址IP已经被改成网关IP,控制不起来。所以在控制上传速度的时候,一般可以用IPTABLES PREROUTINg 的时候,用mangle给该数据包打上一个MARK标识,然后在该数据包通过外网口的时候,用FW规则来匹配MARK标识,根据FW规则而将指定的数据包归入到相应的分类中。
10、另外要注意,所有已经启用的网卡,有一个默认的qdisc队列,这队列是不用删除的,只要你另外创建队列,这个默认队列就消失了。你的脚本执行一次后,就会在网关上启用,但是网关重启后,就会消失,所以要将TC脚本放置在linux网关的开机启动中,一般来说放置在rc.local中,我的推荐是将上传限速和下载限速分开两个脚本,然后将链接放置到rc.local中,这样更为方便。
示例:


上传控制
iptables -t mangle -A PREROUTING -s 192.168.1.20 -j MARK --set-mark 1  打上标识1
iptables -t mangle -A PREROUTING -d 192.168.10.20 -j MARK --set-mark 2   这样可以给发送到特定IP的数据包打上标识2
tc filter add dev eth0  parent 1: protocol ip prio 1 handle 1 fw classid 1:1 FW过滤器,匹配标识1,归入分类1:1
tc filter add dev eth0  parent 1: protocol ip prio 1 handle 2 fw classid 1:2 FW过滤器,匹配标识2,归入分类1:2
下载控制
tc filter add dev eth1 parent 1: protocol ip prio 1 u32 match ip dst 192.168.1.20 flowid 1:1 将下载到192.168.1.20的数据包,归入分类1:1

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9606200/viewspace-1435666/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9606200/viewspace-1435666/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值