要想做限速,必须要知道以下几点:

首先要知道自己要限制什么的速度,谁的速度,于是需要用的标记,即Mangle。
其次要知道怎么限速,是限制上传,还是下载?
最后要知道所做的限速是否成功,即需要知道如何检查!
 
1、标记(mangle)
这是很有学问的一件事情,ros对数据包的标记不是很好,必须要通过标记连接以后再来标记数据包!
即,先通过mark connection,再通过connection来mark packet!(问:为什么非要标记成packet,不能直接用connection?)
mark的时候需注意passthrough,前面标记过的connection且勾选了passthrough,后面条件符合该连接的时候就会标记成后面的连接。
每个连接只会有一个标记!切记,切记!
 
2、Parent(父节点)
个人感觉很有意思的意见事情,因为ros的帮助文档中明确说明了,ros是管出不管入,而前面标记的都是整个连接的数据包(既有上行,又有下行!)
在设置htb的时候,父节点设置为wan口就为上行的流量,父节点为lan口就为下行的流量。(这点很重要,外网网卡和内网网关分别对应UP和DOWN!)
此外,父节点仅负责流量的整形与优先级的排队,并不存储任何数据包,即它是不存在任何队列的!(即在队列优先级里,父节点的优先级是没有意义的!!!)
 
3、firewall(防火墙)
通过ros所有的连接都是掌控在firewall的法眼中的,通过connection的标签可以很容易的观察到所有用户的连接情况。
在connection mark中很容易看到某条连接是被自己标记成了什么,最好的情况是所有的连接均被标记,这样后面的htb才比较准确!
这是至关重要的一步,如果connection都没有被打上标记,限速注定是失败的!
 
4、Queue Tree
只需要说一点,某个节点只要被其他节点认成parent,它就失去了packet mark的权利!
这也是第一点中为什么标记成packet而不直接用connection的原因!
只要叶子节点在packet mark中选中标记的packet才有效!
 
5、Limit At & Max Limit
很多人误解Max Limit是最好的限速工具,其实不然,在HTB中最重要的是limit At(个人简介)!
ros总是保证了Limit At以后才有闲心去检测Max Limit!
 
说的比较笼统,理解靠个人!

ROS HTB限速失败原因分析和需注意事项的更多相关文章

  1. HA切换失败原因分析

    1. 问题描述 redhat在进行HA切换时,需要先停止service,并释放调当前主机占有的资源,比如说IP Address和Filesystem,但今天我在验证HA切换时,发现service一直停 ...

  2. 百度编辑器(Ueditor)最新版(1.4.3.3)插入锚点失败原因分析及BUG修复

    用百度编辑器——Ueditor(版本1.4.3.3,2016-05-18日上线)插入锚点的时候,每次总是失败,百思不得其解.通过分析Ueditor的代码ueditor.all.js,可以看出Uedit ...

  3. dpdk组态 千兆网卡 驱动 失败 原因分析及 解决方案

    dpdk版本号是1.7.1稳定版,server它是ubuntu12.04LTS x86 64bit 绑定默认驱动程序千兆网卡ixgbe失败 # ./dpdk_nic_bind.py -b ixgbe ...

  4. RP4412开发板烧写Ubuntu12.04失败原因分析解决

    Ubuntu烧写失败可能是卡的问题 问:用RP4412开发板,卡烧了光盘中的fastboot失败,现在如何补救呢? 答:INAND格式化,利用usb来升级啊. 也有文档,看升级文档. 问:这个是怎么回 ...

  5. Linux suse x86_64 环境上部署Hadoop启动失败原因分析

    一.问题症状: 在安装hadoop的时候报类似如下的错误: # A fatal error has beendetected by the Java Runtime Environment: # #  ...

  6. centos7 sftp设置后 ssh 启动失败 原因分析

    大多数人 在 设置SFTP 使用时,会在 ../sshd_config中添加如下内容: ------------------------------- Subsystem sftp internal- ...

  7. virsh default启动失败原因分析及解决

    启动default时出现如下错误提示:[root@node1 ~]# virsh net-start defaulterror: Failed to start network defaulterro ...

  8. linux下使用crontab实现定时PHP计划任务失败的原因分析

    这篇文章主要介绍了linux下使用crontab实现定时PHP计划任务失败的原因分析,需要的朋友可以参考下   很多人在linux下使用crontab实现PHP执行定时任务却未能成功,不能生成缓存.本 ...

  9. ab输出信息解释以及Failed requests原因分析

    ab是apache自带的压力测试工具.ab进行的一切测试本质上是基于HTTP的.下面是对ab输出项信息的解释和出现Failed requests原因分析.测试实例:1. ab输出信息说明:   1 2 ...

随机推荐

  1. VirtualBox安装Redhat9.0

    1.准备软件 虚拟机:VirtualBox-4.3.8-92456-Win.exe RedHat:shrike-i386-disc1.iso     shrike-i386-disc2.iso     ...

  2. iOS跳转支付宝付款码和扫一扫页面

    iOS跳转支付宝付款码和扫一扫页面 // 是否支持支付宝 NSURL * myURL_APP_A = [NSURL URLWithString:@"alipay://"]; if ...

  3. jquery表单验证插件 jquery.form.js-转

    来自:http://www.cnblogs.com/luluping/archive/2009/04/15/1436177.html Form插件,支持Ajax,支持Ajax文件上传,功能强大,基本满 ...

  4. Popular HashMap and ConcurrentHashMap Interview Questions

    http://howtodoinjava.com/core-java/collections/popular-hashmap-and-concurrenthashmap-interview-quest ...

  5. JDBC的步骤

    使用jdbc步骤 a.导入数据库厂商提供的驱动程序(导入jar包) b.加载驱动程序 Class.forName("驱动程序类") c.获得连接 Connection conn=D ...

  6. 《gradle 用户指南中文版》第3章 安装 gradle

    macOS 下安装 gradle,只要可以安装sdk的系统,使用sdk来安装,那么安装方式基本是一样的. Gradle在所有主要操作系统上运行,只需要安装Java JDK或JRE版本7或更高版本.要检 ...

  7. 创建你的第一个Flutter应用程序

    前言 Flutter,Google推出的跨平台开发框架.就在前几天,Flutter的首个发布预览版(Release Preview 1)正式发布! 即将迎来Flutter 正式版(1.0).本篇将带你 ...

  8. grunt使用

    grunt例子:https://github.com/Aquarius1993/gruntDemo 1.前提是已经有npm(可以通过安装nodejs实现) 2. npm update -g npm 更 ...

  9. learn go return fuction

    package main // 参考文章: // https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/06.9.md im ...

  10. scala学习笔记(9): 语法续

    1 不定长参数 def sum(args: Int*) = { var result = 0 for ( arg <- args) result += arg result } 2 数组初始化 ...