OpenvswitchQos rate-limiting原理

OVS的qosrate-limiting功能是采用令牌桶(Token-Bucket)机制进行的。这里的“令牌桶”是指网络设备的内部存储池,而“令牌”则是指以给定速率填充令牌桶的虚拟信息包。

一 令牌桶算法原理

在令牌桶处理包的行为方面,RFC中定义了两种令牌桶算法——单速率三色标记算法和双速率三色标记算法,其评估结果都是为包打上红、黄、绿三色标记。QoS会根据包的颜色,设置包的丢弃优先级,其中单速率三色标记比较关心包尺寸的突发,而双速率三色标记则关注速率上的突发,两种算法都可工作于色盲模式和非色盲模式。下面分别介绍这两种算法原理。

1.单速率三色标记算法原理

这里首先要理解“单速率”是什么意思,那就是算法中的两个令牌桶有同样的承诺信息速率(CIR),也就是具有相同平均访问速率。这两个令牌桶分别是正常使用的令牌桶(C桶)和超出令牌桶容量的突发令牌桶(E桶),可以理解为两个水桶,一个是正常使用的水桶,另一个是用来当正常使用的水桶满后装多余的水的水桶。

单速率三色标记算法关注的是数据包的突发尺寸,数据包的色标记评估依据以下3个参数:承诺信息速率(CommittedInformationRate,CIR)、承诺突发尺寸(CommittedBurstSize,CBS)和超额突发尺寸(ExcessBurstSize,EBS)。CIR是指向令牌桶中填充令牌的平均速率,即允许的通信流平均速度;CBS是指每次突发所允许的最大的流量尺寸,也相当于允许的最大取令牌的速率,等于桶的容量(最大时就是一个包就可以全部领取桶中的全部令牌)。EBS是指每次突发允许超出CBS的最大流量尺寸。CBS和EBS的单位都是bit(位)。

单速率三色机制采用双桶结构:C桶和E桶(之所以用这两个字母来表示,为的就是与前面说的CBS和EBS两种速率的头个字母一致,便于描述),且两个令牌桶的CIR一样。C令牌桶中任何未用的令牌都被放入E令牌桶中,用做以后临时超过CIR的突发流量的令牌;另外,当C令牌桶满时,超出的令牌也都会放在E令牌桶中。

Tc和Te分别表示C令牌桶和E令牌桶中的令牌数,也就是桶中当前的容量(单位也为bit),两桶的总容量分别为CBS和EBS,也就是对应前面介绍的承诺突发尺寸和超额突发尺寸,最初它们都是满的,即Tc和Te初始值分别等于CBS和EBS。正常情况下,不会使用第二个令牌桶(也就是E桶),而是把任何CBS(也就是C桶)中未使用的令牌都放入E桶中,只有当C令牌桶满后,后面来的令牌才放到E令牌桶中,为可能出现的突发数据提供信用令牌(也就是经过允许的令牌)。

在这种单速率三色标记算法中,两个令牌桶中令牌的添加是按照相同的CIR速率进行的。即每隔1/CIR时间添加一个令牌。添加的顺序是先添加C桶再添加E桶,当两个令牌桶中的令牌都满时,再产生的令牌就会被丢弃。至于在发送数据包时,令牌的使用IEEE又定义了三种颜色(分别为红色、黄色和绿色)以及两种模式:色盲模式和感色模式,默认为色盲模式。三种颜色的功能与我们日常生活中的交通指示灯中的三种颜色类似,红色表示违规数据,直接丢弃,黄色表示数据包虽然违法,但不直接丢弃,而是延迟发送,绿色为合法数据包,直接发送。

在色盲(color-blind)模式下是假设包都是没有经过“着色”处理的(不辨别包中原来标记的颜色),是根据包长度来确定包被标记的颜色。现假设到达的包长度为B(单位为bit)。若包长度B小于C桶中的令牌数Tc(也就是C桶中的令牌数足够该包发送所需),则包被标记为绿色,表示包符合要求,包发送后C桶中的令牌数Tc减少B。如果Tc<B<Te(也就是包长度大于C桶中的令牌数,而小于E桶中的令牌数),则标记为黄色,则从E桶中取出所需令牌,E桶中的令牌数Te减少B;若B>Te,标记为红色,表示是违反规定的包,直接丢弃,两令牌桶中的总令牌数都不减少。

在感色(color-aware)模式下是假设包在此之前已经过“着色”处理(会辨别包中原来标记的颜色),如果包已被标记为绿色,或包长度B<Tc(注意只要满足其中一个条件即可,下同),则包被标记为绿色,C桶中的令牌数Tc值随之也相应减少B;如果包已被标记为黄色,或Tc<B<Te,则包被标记为黄色,同时E桶中的令牌数Te也随之相应减少B;如果包已被标记为红色,或B>Te,则包被标记为红色,Tc和Te都不减少。

2.双速率三色算法

这里同样首先要稿清楚“双速率”是什么意思,它是指该算法中两个令牌桶中的CIR速率不同,存在两个令牌填充速率。

IETF的双速率三色标记(trTCM)算法主要是根据四种流量参数来评估:CIR、CBS、峰值信息速率(PeakInformationRate,PIR),峰值突发尺寸(PeakBurstSize,PBS)。CIR和CBS参数与单速率三色算法中的含义相同,PIR就是允许的最大突发信息传输速率,当然它的值肯定不会小于CIR的;PBS是允许的最大突发信息尺寸,它的值也不会小于CBS。

与单速率三色标记算法不同,双速率三色标记算法中的两个令牌桶是C桶和P桶(不是C桶和E桶),但它们的令牌填充速率是不同的,C桶填充速率为CIR,P桶为PIR;两桶的容量分别为CBS和PBS(之所以用C桶和P桶表示也是基于方便描述,因为表示不同速率的参数与对应桶的容量参数相同,第一个字母对应为C,或者P)。用Tc和Tp表示两桶中的令牌数目,初始状态时两桶是满的,即Tc和Tp初始值分别等于CBS和PBS。

双速率三色标记算法关注的是速率的突发,但它不像单速率三色标记算法那样把第一个桶中未使用的令牌放到第二个桶中,而是使用两个独立的令牌桶。第一个令牌桶为PIR,大小为PBS,第二个令牌桶为CIR,大小为CBS。数据的测量是先比较PIR,然后再比较CIR。也就是在双速率三色标记中,首先判断的是数据发送速率是否符合规定的突发要求,而不是正常情况下的色标方法。

双速率三色标记算法也有色盲模式和感色模式两种。

在色盲模式下,当包速率大于PIR,此时未超过Tp+Tc部分的包会分别从P桶和C桶中获取令牌,而且从P桶中获取令牌的部分包被标记为黄色,从C桶中获取令牌的部分包被标记为绿色,超过Tp+Tc部分无法得到令牌的包被标记为红色;当包速率小于PIR,而大于CIR时,包可以得到令牌,但超过Tc部分的包将从P桶中获取令牌,此时这部分包都被标记为黄色,而从C桶中获取令牌的包被标记为绿色;当包速率小于CIR时,包所需令牌数不会超过Tc,只需从C桶中获取令牌,包被标记为绿色。

在感色模式下,如果包已被标记为红色,或者超过Tp+Tc部分无法得到令牌的包,被标记为红色;如果标记为黄色,或者超过Tc但未超过Tp部分包记为黄色;如果包被标记为绿,或者未超过Tc部分包,被标记为绿色。

二  令牌桶算法的应用

1在流量监管中的应用

约定访问速率(CAR)是流量监管常用技术之一,可以应用在端口进和出方向,一般应用在入方向,它的监管原理如图1所示。

a.按特定的速率向令牌桶投放令牌

b. 根据预设的匹配规则先对报文进行分类,不符合匹配规则的报文不需要经过令牌桶的处理,直接发送;

c. 符合匹配规则的报文,则需要令牌桶进行处理。当桶中有足够的令牌则报文可以被继续发送下去,同时令牌桶中的令牌 量按报文的长度做相应的减少;

d. 当令牌桶中的令牌不足时,报文将不能被发送,只有等到桶中生成了新的令牌,报文才可以发送。这就可以限制报文的流量只能是小于等于令牌生成的速度,达到限制流量的目的。

2在通用流量整形中的应用

a.按特定的速率向令牌桶投放令牌

b. 根据预设的匹配规则先对报文进行分类,不符合匹配规则的报文不需要经过令牌桶的处理,直接发送;

c. 符合匹配规则的报文,则需要令牌桶进行处理。当桶中有足够的令牌则报文可以被继续发送下去,同时令牌桶中的令牌 量按报文的长度做相应的减少;

d. 对超过速率限制的报文进行缓冲即当令牌桶的令牌少到报文不能再发送时,报文将被缓存入队列,等有了足够的令牌之后再发送,

e. 当令牌桶中的令牌不足时,报文将不能被发送,只有等到桶中生成了新的令牌,报文才可以发送。

通用流量整形中(GTS)与CAR的原理稍有差别:

第一,GTS只用于出方向流量限速,CAR出入方向均可以,但一般多用于入方向;

第二,利用CAR进行报文流量控制时,对超过速率限制的报文直接丢弃,而GTS是对超过速率限制的报文进行缓冲即当令牌桶的令牌少到报文不能再发送时,报文将被缓存入队列,等有了足够的令牌之后再发送,这样就减少了报文的丢弃,但是要注意的是,如果缓存队列已满,这时到达的报文仍旧会被丢弃。

3在端口限速 中的应用

端口限速(LR)(如图3所示)也用于出方向,但不同于GTS 的是:第一,GTS与CAR是在IP层实现的,所以对于不经过IP层处理的报文不起作用,而LR能够限制在物理接口上通过的所有报文;第二,LR不但能够对超过流量限制的报文进行缓存,并且可以利用QoS丰富的队列如优先级队列(PQ)、自定 义 队列(CQ)、加权公平对列(WFQ)等来缓存报文。

a.按特定的速率向令牌桶投放令牌

b. 根据预设的匹配规则先对报文进行分类,利用QoS丰富的队列如优先级队列(PQ)、自定 义 队列(CQ)、加权公平对列(WFQ)等来缓存报文

c. 符合匹配规则的报文,则需要令牌桶进行处理。当桶中有足够的令牌则报文可以被继续发送下去,同时令牌桶中的令牌 量按报文的长度做相应的减少;

d. 对超过速率限制的报文进行缓冲即当令牌桶的令牌少到报文不能再发送时,报文将被缓存入队列,等有了足够的令牌之后再发送,

e. 当令牌桶中的令牌不足时,报文将不能被发送,只有等到桶中生成了新的令牌,报文才可以发送。

Open vswitch 之Qos rate-limiting 原理相关推荐

  1. [转]架构必备:Rate limiting 的作用和常见方式

    转载文章,原文地址:https://blog.eood.cn/rate-limiting Rate limiting 在 Web 架构中非常重要,是互联网架构可靠性保证重要的一个方面. 从最终用户访问 ...

  2. Kong Rate Limiting 插件详解

    Rate Limiting插件 基本描述: 属性 描述 插件作用域 服务.路由.全局 适用协议 http.https 配置信息: 属性 描述 参数 描述 name 插件名称.此处为rate-limit ...

  3. kong插件之Rate Limiting

    文章来源:http://blog.csdn.net/qq_26656329/article/details/78842005 关于Response Rate Limiting插件 说明 插件实现是在每 ...

  4. kong的插件: Response Rate Limiting

    简述 这也是一种限流的插件和Rate Limiting相似,但是有一定的区别.Response Rate Limiting是由后端服务控制频率的减少,而Rate Limiting是由Kong完成的. ...

  5. API Gateway/API 网关(三) - Kong的使用 - 限流rate limiting(redis)

    一.前言 Kong的限流支持三种方式,分别是本地限流(Local).数据库限流(Cluster)和Redis限流,这三种限流方式采用的限流算法都是计数器法.支持按照秒/分/小时/日/月/年等不同时间单 ...

  6. Rate Limiting速率限制

    Rate Limiting速率限制 Rate limiting in swift isimplemented as a pluggable middleware. Rate limiting is p ...

  7. 架构必备:Rate limiting 的作用和常见方式

    原文  http://blog.eood.cn/rate-limiting Rate limiting 在 Web 架构中非常重要,是互联网架构可靠性保证重要的一个方面. 从最终用户访问安全的角度看, ...

  8. Rate Limiting Algorithms (限流算法)

    1. Leaky Bucket (漏桶) 漏桶是一种常用的限流策略.NGINX 和 QEMU 中利用漏桶来实现限流.在漏桶模型中,桶的容量是固定的,当桶被流进的水填满时,多余的水就会溢出:虽然水可以以 ...

  9. 高可用服务设计之二:Rate limiting 限流与降级

    <高可用服务设计之二:Rate limiting 限流与降级> <nginx限制请求之一:(ngx_http_limit_conn_module)模块> <nginx限制 ...

  10. .NET 7 新增速率限制 (Rate Limiting) 功能,轻松限制请求数量

    .NET 7  内置了速率限制(Rate Limiting)功能,速率限制指的是限制可访问资源的请求数.例如数据库每分钟可以安全处理 1000 个请求,再多不确定会不会崩.这时就可以在应用程序中放一个 ...

最新文章

  1. 中科院微生物所郭惠珊团队创建抗土传真菌黄萎病的陆地棉种质
  2. 65% 的钱被头部玩家拿走,人工智能要进入下半场?
  3. 关于ogrebullet中角色的控制
  4. python的垃圾处理机制_Python语法入门之垃圾回收机制
  5. Android深度探索读后感第二章
  6. GDCM:gdcm::XMLPrivateDictReader的测试程序
  7. .NET Core 3中的性能提升(译文)
  8. mysql cast numeric,mysql decimal、
  9. vue: 组件中 template 定义
  10. Hyper-V故障转移群集搭建(1)
  11. 如何C语言编程二维数组五位学生总分,C语言编程题(有关二维数组的循环的)...
  12. STM32固件库的下载
  13. 仿网易云手机版代码_网易uu加速器官网下载-网易uu加速器手机版下载
  14. 计算机应用技术专业的周志,计算机科学与技术专业实习周记
  15. tk免费顶级域名注册及使用
  16. pandas——数据透视表
  17. 计算机开机总要按f1键,详解Win7系统电脑开机需要按F1键才能启动的解决方法
  18. Ubuntu桌面版高版本无法更新软件:Unmet Dependencies
  19. PowerShell:如何用PowerShell创建WinForm窗体?-在PowerShell中使用GUI界面
  20. 中国知网(cnki)上caj格式转pdf的方法

热门文章

  1. php 获取远程大文件上传,PHP 获取远程文件大小的3种解决方法
  2. java编程编一个小系统_如何编写一个java学生信息管理系统?
  3. 关于游戏的C 语言的课设报告,猜单词游戏C课程设计报告.doc
  4. linux 重启oracle实例_Oracle实战(二)-Oracle概述
  5. mysql数据库是下面哪种类型的数据库_SQL数据库 选择哪个类型的数据库?
  6. 罗振宇2021跨年演讲2:除了规模中国还有什么优势?
  7. JavaScript学习笔记:迷宫游戏
  8. 安卓案例:线性布局嵌套
  9. wordpress主题是php开发的吗,写给想学习wordpress主题开发的朋友们
  10. c调用其他类的方法_吊打面试官-类加载器