zoukankan      html  css  js  c++  java
  • 二层交换机之QoS特性

    QoS(Quality of Service)是为了解决网络拥塞、时延、抖动、丢包等问题的一种技术。

    传统的QoS基于端口进行流量调度,HQoS(Hierarchical QoS)指层次化QoS,是一种既能控制某端口下更细粒度的用户流量,又能同时根据用户内业务的优先级进行调度的QoS技术。

    队列调度算法

    队列调度算法的公平性、分组排队时延等性能是影响QoS特性的中央因素。

    1、RR(Round-Robin)轮询

    RR轮询调度通过给每个业务流队列分配时间片,通过时间片轮转使所有业务流队列轮流进行报文转发。

    RR调度给每条队列分配相同的时间片,这样的调度方式对等长队列(指报文个数)是公平的,但是通常业务流队列是由不定长分组流(指报文大小)构成的,因此不同队列就可能具有不同的分组长度,分组长度大的队列会接收更多的服务需求,这是队列之间不公平性的缘起。此外,RR调度无法满足高时延业务的要求。

    为了改善RR算法的时延特性和其在变长分组环境下的不公平性,出现了一些改进算法:

    1.1、WRR(Weight RR)加权轮询

    WRR算法为每个队列分配一个权值,当轮询到某个队列时,根据权值大小决定其可转发的分组报文个数。

    WRR算法的缺点是,当分组报文大小不等时,不能公平的分配带宽。

    1.2、DRR(Defict RR)差额轮询

    DRR算法规定,每个调度轮询中各队列可接收的服务量(指总报文字节数)定额为Q。每一轮循环中,业务流中超过Q的分组将不再处理,累积到下一轮。

    DRR算法提高了变长分组环境中算法的公平性,但是在时延特性上有明显地缺陷,即每一轮询中中,队列的服务顺序是静态指定的,不能根据业务的属性进行动态调整。

    1.3、URR(Urgency-based RR)紧急轮询

    URR算法是为了改善RR算法的时延特性而产生的,在每一轮循环前,URR算法为每个队列分配U值,然后按照U值大小顺序为各队列提供服务。

    URR算法在公平性上仍然存在问题。

    2、PQ(Strict-Priority Queue)调度

    PQ调度即严格优先级调度,共有4个优先级队列——High、Medium、Normal、Low。根据协议类型、报文大小、协议端口号等,划分不同优先级队列。

    PQ调度按照优先级入不同的队列,如果队列满,则报文丢弃。严格按照队列优先级调度,当高优先级队列中有报文时,低优先级队列得不到调度。

    PQ调度特别适合于对延迟、延迟抖动敏感的业务,采用PQ调度,可以让关键业务如ERP、视频业务的报文进入最高优先级队列,保证在拥塞时总是有限获得转发服务。

    应用场景分析

    实际使用中,单纯采用PQ调度时,低优先级队列长期得不到调度;而单纯采用DRR调度,高时延要求业务(如语音)得不到优先调度。因此通常要使用PQ+DRR结合调度模式。用户可以指定其中几组队列进行PQ调度,其他队列进行DRR调度。

    如图所示,设备首先按照PQ调度Queue 5~7队列中的业务流,只有当这些队列中的报文转发完毕之后,才开始以DRR方式调度Queue 0~4队列中的业务流。

  • 相关阅读:
    C语言的指针
    C语言的编译过程和GCC编译参数
    GCC编译器的安装
    全字段多条件搜索(api接口)
    C# Replace字符替换函数
    NetCore MemoryCache使用
    vs2017 C# ActiveX浏览器插件 创建 发布 C# windows窗体控件库(.NET Framework)注意事项
    [Asp.net core 3.1] 通过一个小组件熟悉Blazor服务端组件开发
    [AspNetCore 3.0 ] Blazor 服务端组件 Render, RenderFragment ,RenderTreeBuilder, CascadingValue/CascadingParameter 等等
    [AspNetCore 3.0] 在RazorPages/MVC 中使用 Blazor (Razor组件)
  • 原文地址:https://www.cnblogs.com/justin-y-lin/p/12204623.html
Copyright © 2011-2022 走看看