手机流量共享 linux,linux – 通过HTB共享带宽和优先处理实时流量,哪种方案更好?...

我想在我们的互联网线路上添加一些流量管理.在阅读了大量文档之后,我认为HFSC对我来说太复杂了(我不了解所有曲线的东西,我担心我永远不会把它弄好),CBQ不推荐,基本上HTB就是通往适合大多数人.

我们的内部网络有三个“段”,我想在这些段之间或多或少地分享带宽(至少在开始时).此外,我必须根据至少三种流量(实时流量,标准流量和批量流量)确定流量的优先级.带宽共享并不像实际流量应尽可能始终被视为高级流量那样重要,但当然也没有其他流量类别可能会饿死.

问题是,什么更有意义,也保证更好的实时吞吐量:

>每个段创建一个类,每个具有相同的速率(根据HTB开发人员,优先级对于没有叶子的类没有关系),并且这些类中的每一个都有3个子类(叶子)用于3个优先级(具有不同的优先事项和不同的费率).

>每个优先级有一个类,每个具有不同的速率(再次优先级无关紧要),每个具有3个子类,每个段一个,而实时类中的所有3个具有最高的prio,最低的prio批量类,等等.

我将尝试使用以下ASCII艺术图像使其更清晰:

Case 1:

root --+--> Segment A

| +--> High Prio

| +--> Normal Prio

| +--> Low Prio

|

+--> Segment B

| +--> High Prio

| +--> Normal Prio

| +--> Low Prio

|

+--> Segment C

+--> High Prio

+--> Normal Prio

+--> Low Prio

Case 2:

root --+--> High Prio

| +--> Segment A

| +--> Segment B

| +--> Segment C

|

+--> Normal Prio

| +--> Segment A

| +--> Segment B

| +--> Segment C

|

+--> Low Prio

+--> Segment A

+--> Segment B

+--> Segment C

案例1似乎大多数人都会这样做,但除非我没有正确阅读HTB实施细节,否则案例2可能会提供更好的优先级.

HTB手册说,如果一个类已经达到它的速率,它可以从其父级借用,并且在借用时,具有更高优先级的类总是首先获得带宽.但是,它还说,无论优先级如何,在较低树级别上具有可用带宽的类总是优先于较高树级别的类.

让我们假设以下情况:段C不发送任何流量.段A只能尽可能快地发送实时流量(足以使链路单独饱和),而段B只发送大量流量,速度尽可能快(再次,足以使单独的完整链路饱和).会发生什么?

情况1:

段A->高Prio和段B-> Low Prio都有要发送的数据包,因为A-> High Prio具有更高的优先级,它将始终首先被调度,直到它达到其速率.现在它试图从A段借款,但由于A段处于较高水平而且B段> Low Prio尚未达到其速率,因此该类现在首先服务,直到它也达到该速率并且想要借入从B段开始.一旦两者都达到了他们的费率,两者都再次处于同一水平,现在A – >&High Prio将再次获胜,直到它达到A段的速度.现在它试图从根借(由于段C没有使用任何保证的流量,因此它有足够的流量备用,但同样,它必须等待段B->低Prio也达到根级别.一旦发生这种情况,将再次考虑优先级,此时段A-> High Prio将获得段C留下的所有带宽.

案例2:

高Prio->段A和低Prio->段B都有要发送的数据包,再次高Prio->段A将获胜,因为它具有更高的优先级.一旦它达到它的速率,它试图借用具有带宽备用的High Prio,但是在更高的水平上,它必须再次等待低Prio-> B段B也达到它的速率.一旦两者都达到了他们的速度并且都必须借用,高Prio-> A段将再次获胜,直到它达到High Prio级别的速度.一旦发生这种情况,它会尝试从root中借用,这又剩下足够的带宽(此时Normal PRo的所有带宽都没有使用),但它必须再次等待,直到低Prio-> B段达到速率限制为止Low Prio类,也试图从root借用.最后,两个类都试图从root中借用,优先级被考虑在内,而High Prio-> Segment A获得所有带宽已经剩下的.

这两种情况看起来都是次优的,因为实时流量有时必须等待大量流量,即使有足够的带宽可以借用.但是,在情况2中,实时流量似乎必须等于情况1,因为它只需要等到达到批量流量速率,这很可能小于整个流量的速率(以防万一) 1这是它必须等待的速度).或者我在这里完全错了?

我想到了更简单的设置,使用优先级qdisc.但优先队列有一个很大的问题,即如果它们不受某种限制,就会导致饥饿.饥饿是不可接受的.当然,可以将TBF(令牌桶过滤器)放入每个优先级以限制速率,从而避免饥饿,但是这样做时,单个优先级类不能再自行饱和链接,即使所有其他优先级类别也是如此是空的,TBF将防止这种情况发生.这也是次优的,因为如果没有其他类目前需要其中任何一个类,为什么一个类不能获得100%的线路带宽?

有关此设置的任何意见或想法?使用标准的tc qdiscs似乎很难.作为程序员,如果我可以简单地编写自己的调度程序(我不允许这样做),这是一项非常容易的任务.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335327.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

负载均衡解决方案

某网站随着知名度的提高,用户访问量日渐增多,近段时间以来,由于访问量的激增,服务不可用的情况时有发生。针对这种状况,结合实际情况,设计了一套解决方案。 技术实现 1、负载均衡。2台同样配置的linux服务…

pcf8523_PCF上的Spring Cloud合同和Spring Cloud Services

pcf8523最近,我们有一个客户,对于使用Spring Cloud Contract (SCC)来防止微服务团队之间的API“漂移”,微型开发团队会照顾个体的API(构成企业应用程序的一部分),这些客户非常感兴趣…

python二分法查找时间点_python有序查找算法:二分法

二分法是一种快速查找的方法,时间复杂度低,逻辑简单易懂,总的来说就是不断的除以2除以2... 但是需要注意:待查找的序列区间单调有序 例如需要查找有序数组arr里面的某个关键字key的位置,那么首先确认arr的中位数或者中…

linux shell ls -l,linux之ls -l|grep ^-|wc -l命令 Shell 中常見的日志統計方法

轉:http://www.cnblogs.com/senior-engineer/p/6203268.htmlShell 中常見的日志統計方法https://my.oschina.net/waterbear/blog/371845Linux Shell工具grep awk cut sort uniq sort 使用小結http://www.linuxidc.com/Linux/2012-05/61126.htm查看某文件夾下文件的個…

怎么运行aws的示例程序_使Spring Boot应用程序在AWS上无服务器运行

怎么运行aws的示例程序在之前的 几篇 文章中,我描述了如何设置Spring Boot应用程序并在AWS Elastic Beanstalk上运行它。 尽管这是从物理服务器到云服务器的重要一步,但还有更好的可能! 走向无服务器 。 这意味着无需花费任何服务器费用&…

自己写的 ORACLE 函数的解读

DECLARE MAXWRITNO INTEGER ; <!--声明了2个变量&#xff0c;变量类型是INTEGER-->LINETY INTEGER; BEGIN <!--表示进入方法体-->----------获取要循环的结果集&#xff0c;APPLINPER班线许可申请表FOR REC IN (select * from $PRDLINE.APPLINPER a where (A.APPP…

python调用linux命令输出结果,Python-运行shell命令并捕获输出

小编典典这个问题的答案取决于你使用的Python版本。最简单的方法是使用以下subprocess.check_output功能&#xff1a;>>> subprocess.check_output([ls, -l])btotal 0\n-rw-r--r-- 1 memyself staff 0 Mar 14 11:04 files\n该check_output功能适用于仍在广泛使用的几乎…

python cls_关于python中的self,ins , cls的解释

关于python中的self,ins,cls的解释参考下面两篇博文self比较好理解&#xff0c;self指的是类实例对象本身(注意&#xff1a;不是类本身) class Person: def _init_(self,name): self.namename def sayhello(self): print My name is:,self.name pPerson(Tom) print p 为什么不是…

脚本语言和工程语言_语言工程中有趣的事情

脚本语言和工程语言如果您阅读此博客&#xff0c;您将知道我坚信语言的力量。 所以&#xff0c;我当然有很大的偏见&#xff0c;但是我感觉语言工程社区正在增长&#xff0c;并且越来越有趣的东西正在涌现。 为此&#xff0c;我认为通过查看社区中正在发生的事情并列出一些我发…

linux useradd 数字,详解linux useradd用户组合权限管理等

1&#xff0c;权限相关概念Rwx任何一个文件都应该由两部分组成&#xff0c;这两部分其实基于文件系统来组织&#xff0c;磁盘分区创建完成后&#xff0c;在高级格式化的时候&#xff0c;就把整个磁盘分区分成两部分&#xff0c;其中一部分是源数据&#xff0c;一部分是来放数据…

windows上的python能否在unix上使用_怎么用python在Windows系统下,生成UNIX格式文件

在Windows下换行时&#xff0c;有两个字符&#xff1a;回车(/r)和换行(/n)。但在Linux下&#xff0c;只有一个换行(/n)可使用unix2dos和dos2unix命令进行格式的转换&#xff1a; 参数&#xff1a; -k 保持输出文件和输入文件的日期时间戳不变 -o file 默认模式 . 将file转换&am…

.dmp数据文件的解读

通过PL/SQL Developer导出表数据&#xff0c;生成后缀名为.dmp的文件&#xff0c;如果你以某个用户例如&#xff1a;HYT2LINEHN访问数据库&#xff0c;那么你可以将这个用户下的所有表导成dmp文件&#xff0c;那么这个dmp文件里就包含了这个用户下的所有表的数据&#xff0c;当…

junit jndi_使用Spring创建用于JUnit测试的JNDI资源

junit jndi直到最近&#xff0c;我还使用静态方法来设置内存数据库&#xff08;HSQLDB&#xff09;。 我在JUnit测试的setUp / tearDown中调用了这些方法。 当我使用Spring时&#xff0c;这对我来说总是有点不自然&#xff0c;并且所有内容都应在其应用程序上下文中运行。 创建…

c语言程序经过编译以后生成的文件名的后缀为,c语言源文件经过编译后生成文件的后缀是什么...

c语言源文件经过编译后生成文件的后缀是什么c语言源文件经过编译后生成文件的后缀是“.obj”。C语言源程序经过编译程序编译之后&#xff0c;生成一个后缀为“.obj”的文件&#xff0c;最后由称为“连接程序”的软件&#xff0c;把此“.obj”文件与各种库函数连接在一起&#x…

Java中获取系统日期时间/系统时间

int y,m,d,h,mi,s;Calendar calCalendar.getInstance();ycal.get(Calendar.YEAR);mcal.get(Calendar.MONTH) 1;dcal.get(Calendar.DATE);hcal.get(Calendar.HOUR_OF_DAY);mical.get(Calendar.MINUTE);scal.get(Calendar.SECOND);System.out.println("现在时刻是"y&q…

python如何读取csv文件列表页_每25行读取一个csv文件,并使用python传递到列表

我想读取一个文件,并将该文件的每25行转换为一个列表,也就是说,它应该有4个列表,每个列表中包含25个项目(对于一个文件的100行)。我无法获得这个问题的代码。 输入文件看起来像这样,实际上它有100行: {PutRequest: {Item: {id: {S: E1DBEAE3}, value: {M: {result: {N: u0.0015…

Infinispan版本已映射到最低Java版本

我最近一直在与Infinispan交流 &#xff0c;我注意到这种“分布式内存键/值数据存储”的特征之一是它相对积极地被采用&#xff0c;甚至要求更高版本的Java。 根据参考的Infinispan文档 &#xff0c;以下内容将Infinispan发行版映射到最低Java SE版本。 Infinispan版本及其最…

通过PL/SQL developer工具访问远程的Oracle数据库_访问数据库_连接数据库_登录数据库

文章目录工具简介电脑没有安装 Oracle 数据库电脑安装了 Oracle 数据库工具简介 PL/SQL Developer 是 Oracle 数据库开发工具&#xff0c;PL/SQL Developer 功能很强大&#xff0c;可以做为集成调试器&#xff0c;有 SQL 窗口&#xff0c;命令窗口&#xff0c;对象浏览器和性能…

dynamodb容器使用_使用DynamoDB映射器将DynamoDB项目映射到对象

dynamodb容器使用以前&#xff0c;我们使用Java创建了DynamoDB表。 对于各种数据库&#xff0c;例如sql数据库或nosql&#xff0c;有一组工具可帮助访问&#xff0c;持久化和管理对象/类与基础数据库之间的数据。 例如&#xff0c;对于SQL数据库&#xff0c;我们使用JPA&#…

xgboost简单介绍_好文干货|全面理解项目中最主流的集成算法XGBoost 和 LightGBM

点击上方“智能与算法之路”&#xff0c;选择“星标”公众号第一时间获取价值内容本文主要介绍基于 Boosting 框架的主流集成算法&#xff0c;包括 XGBoost 和 LightGBM。送上完整的思维导图&#xff1a;XGBoostXGBoost 是大规模并行 boosting tree 的工具&#xff0c;它是目前…