QoS分类和标记

https://zhuanlan.zhihu.com/p/160937314

1111111

分类和标记是识别每个数据包优先级的过程。

这是QoS控制的第一步,应在源主机附近完成。

分组通常通过其分组报头来分类。下图指定的规则仔细检查了数据包头

下表列出了分类标准:

普通二层帧中是不携带有优先级字段的

VLAN帧中的优先级那就是我们通常所说的802.1p优先级(由IEEE 802.1p协议定义),位于VLAN帧

中的“802.1Q Tag”字段的“PRI”子字段中,

IEEE 802.1p是IEEE 802.1Q(VLAN标签技术

)标准的扩充协议,它们协同工作。IEEE 802.1p的出现,使得第二层交换机能够提供流量优先级和动态组播过滤服务,其中流量优先级规范工作在媒体访问控制(MAC)层,组播流量过滤功能可确保该流量不超出第二层交换网络

范围。

IEEE 802.1Q标准定义了为以太网

MAC 帧添加的标签,但并没有定义和使用优先级字段,而使用IEEE 802.1p修改后的以太网MAC帧的以太网协议

头中则定义了该字段。802.1p优先级位于二层VLAN帧头部,适用于不需要分析三层报文头,而需要在二层环境下保证QoS的场合。

4个字节的802.1Q标签头包含:

  • 2个字节的TPID(Tag Protocol Identifier,标签协议标识,取值为0x8100)
  • 2个字节的TCI(Tag Control Information,标签控制信息),参见图。

CoS

以太网帧通过指定802.1Q标头的802.1p用户优先级(CoS)进行标记。第2层以太网帧仅具有八类服务(从0到7),它们是:

TOS

1.ToS字段标的IP优先级

在早期的RFC 791标准中,IP数据包

是依赖ToS(Type of Service,服务类型)字段来标识数据优先级值的。ToS是IP数据包中的IP报头中的一个字段(共1个字节),用来指定IP包的优先级,设备会优先转发ToS值高的数据包。

ToS字段共一个字节(8位),

包括三个部分:

  1. 0~2共三位用来定义数据包的IP优先级(IP Precedence)、
  2. 3-6 共四位 ToS
  3. 一个固定为0的位

IP Precedence部分

IP优先级部分共三位,取值范围为0~7(值越大,优先级越高)。用名称表示时,这8个取值分别为,分别对应于数字0~7。

CS0.routine(普通,值为000)
CS1.priority(优先,值为001)
CS2.immediate(快速,值为010)
CS3.flash(闪速,值为011)
CS4.flash-override(急速,值为100)
CS5.critical

(关键,值为101)
CS6.internetwork control (网间控制,值为110)
CS7.network control(网络控制,值为111)

在以上IP优先级值中,6和7一般保留给网络控制数据使用,比如路由;5推荐给语音数据使用;4推荐由视频会议和视频流

使用;3推荐给语音控制数据使用;1和2推荐给数据业务使用;

0为默认标记值。在IP优先级配置时,既可以使用0~7这样的数值,也可以使用上述对应的优先级名称。

ToS部分

在IP包头的ToS字段中紧接着IP优先级字段后面的四位是ToS部分,代表需要为对应报文提供的服务类型(标识报文所注重的特性要求)。一开始,在RFC 791中是只用到了第3~5位,分别代表IP包在Delay(延时),Throughput(吞吐量

),Reliability(可靠性)这三方面的特性要求(每个报文在这三位中只有一位可能置1,此时表示IP包在对应方面有特别要求)。后来在RFC1349标准中又扩展到第6位,表示IP包在路径开销

(cost)方面的特性要求。

要注意的是,虽然ToS部分共有四位,但每个IP包中这四位中只能有一位为1,所以实际只有五个取值(包括全为0的值)。

这五个值所对应的名称和数值分别为:

  • normal(一般服务,取值为0000)、
  • min-monetary-cost(最小开销,取值为0001,确保路径开销最小)、
  • max-reliability(最高可靠性,0010,确保可靠性最高)、
  • max-throughput(最大吞吐量
  • ,取值为0100,确保传输速率最高)、
  • min-delay(最小时延,取值为1000,确保传输延时最小)。

2. DS字段的DSCP优先级和PHB

RFC 2474标准 定义了DSCP 6位 64个优先级值

重新定义了原来IP包头部的ToS字段,并改称之为DS(Differentiated Services,差分服务)

第0~5位(共六位)用来表示DSCP(Differentiated Services Code Point,差分服务代码点)优先级,取值范围为0~63,共能标识出64个优先级值(值越大,优先级越高),最后两位保留,用于显示拥塞通知(Explicit Congestion Notification,ECN)

IETF RFC 2597标准 定义了PHB 5位 3(PHB Class)+2(PHB Class Selector)

定义了PHB(Per-Hop Behavior),通过PHB值可以确定在网关处对IP包的转发行为。

  1. DSCP优先级部分的第0~4位来标识的,
  2. 0~2位用来标识PHB类别(PHB Class)值,共8个值,对应表示为CS0~CS7。
  3. 3~4位用来标识PHB类别选择值(PHB Class Selector),

PHB值=类别值+PHB类别选择值。

DSCP值

=PHB的五位+第5位(固定为0),但在PHB类别中的三位不能全为0。

在RFC 2597中定义了四种确保转发(Assured Forwarding,AF)PHB组(称之为AF PHB)。

  1. DS字段中的第0~2位定义PHB类别,
  2. DS字段中的第3和4位代表报文的“丢弃优先级”,用AF(x,y)表示,其中x表示流分类,y表示对应的丢弃优先级。

【说明】所谓“确保转发”就是允许管理员在没有超过线路允许速率的情况下提供尽可能的传输质量保证,但如果超出用户线路速率则可能在出现拥塞时丢弃数据包。

  • 3位理论有8个,但只定义4个 PHB Class 1,2,3,4
  • 2位理论有4个,但只定义3个 PHB Class Selector 取非0的三个值

在确保转发PHB中,定义了四种PHB类别(也即“流分类”),它们的值分别为001、010、011和100(对应CS1~CS4),它们本身代表了流的不同优先级(值越大转发优先级越高),

然后通过第3和4位的丢弃优先级值(取非0的三个值,分别为01、10和11,值越大丢弃优先级越高)进一步区分同一类流不同IP包

的丢弃优先级。

它们共同针对四种PHB分类组成了四组AF等级,它们所对应的AF值和对应的DSCP值如表10-1所示(此时第5位的值固定为0)。

表10-1 四组AF PHB等级

丢弃优先级

Class 1

Class 2

Class 3

Class 4

低丢弃优先级

AF11 (DSCP 10):001010

AF21 (DSCP 18):010010

AF31 (DSCP 26):011010

AF41 (DSCP 34):100010

中丢弃优先级

AF12 (DSCP 12):001100

AF22 (DSCP 20):010100

AF32 (DSCP 28):011100

AF42 (DSCP 36):100100

高丢弃优先级

AF13 (DSCP 14):001110

AF23 (DSCP 22):010110

AF33 (DSCP 30):011110

AF43 (DSCP 38):100110

再后来在RFC 3246标准中,又定义一个加速转发(Expedited Forwarding,EF)PHB,对应CS5,即在DS字段中的第0~2位取值为101,第3~4位取值固定为11,第5位固定为0,这样一来对应的DSCP值就为46(101110)。EF PHB具有低延时、低开销和低抖动特性,适用于语音、视频和其他实时服务,一般具有比其他通信类型更加优先的队列。

除了前面介绍的AF和EF外,还有一个缺省的PHB,那就是BE尽力服务类型,它所对应的DSCP值为000000,即十进制的0。另外还定义了CS6和CS7,CS6用于网间控制,对应的DSCP为110000,即十进制的48;CS7用于网内控制,对应的DSCP值为111000,即十进制的56。

在配置DSCP优先级时,既可以使用对应的DSCP名称,如CS6、CS7、AF11、AF12(在CS1~CS4中每个包含了一组DSCP值,所以要指定具体的DSCP名称),又可使用对应的DSCP十进制值,如48、56等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python脚本基于Tesseract-OCR实现图文识别

一、了解Tesseract-OCR 开源地址:https://github.com/tesseract-ocr/tesseract Tesseract-OCR 是一个开源的光学字符识别(OCR)引擎,能够识别图片中的文字并将其转化为可编辑的文本。它最初由惠普公司(Hewlett-Packard…

软件集成测试内容和作用简析

在现代软件开发过程中,软件集成测试作为关键的一环,日益受到重视。特别是随着信息技术的快速发展,各类软件系统日益庞大复杂,如何确保系统不同模块的顺畅合作,成为了每个项目成功的重要基础。集成测试是指在软件开发过…

23. 合并 K 个升序链表(java)

题目描述: 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释&#xff…

Vscode搭建C语言多文件开发环境

一、文章内容简介 本文介绍了 “Vscode搭建C语言多文件开发环境”需要用到的软件,以及vscode必备插件,最后多文件编译时tasks.json文件和launch.json文件的配置。即目录顺序。由于内容较多,建议大家在阅读时使用电脑阅读,按照目录…

解决并发情况下调用 Instruct-pix2pix 模型推理错误:index out of bounds 问题

解决并发情况下调用 Instruct-pix2pix 模型推理错误:index out of bounds 问题 背景介绍 在对 golang 开发的 图像生成网站 进行并发测试时,调用基于 Instruct-pix2pix 模型和 FastAPI 的图像生成 API 遇到了以下错误: Model inference er…

ARM Linux 虚拟环境搭建

一、目标 在没有arm硬件的情况下,使用QEMU模拟器,在PC上模拟一块ARM开发板,对ARM Linux进行学习。 二、搭建步骤 首先先有一个Linux 开发环境,我目前使用的是Ubuntu20. 首先安装qemu,qemu的官网:https:…

百度2020校招Web前端工程师笔试卷(第二批)

百度2020校招Web前端工程师笔试卷(第二批) 2024/12/17 1.FIFO为先进先出的顺序来完成页面的访问,而如果在采用先进先出页面淘汰算法的系统中,一进程在内存占3块(开始为空),页面访问序列为1、2、…

java--抽象类(abstract)和接口(interface)

一.抽象类(abstract) 1.概念: 当父类中的一些方法不能确定实现的具体功能时,可以用abstract关键字来修饰该方法,此时,该方法就是抽象方法,该方法不需要实现方法体.可由其子类实现父类的抽象方法, abstruct不能用来修饰属性, 用abstract修饰的类叫做抽象类 // 抽象类&#x…

Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:教室信息管理系统(前后端源码 + 数据库 sql 脚本)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 1.0 项目介绍 开发工具:IDEA、VScode 服务器:Tomcat, JDK 17 项目构建:maven 数据库:mysql 8.0 系统用户前台和管理…

Qt之修改窗口标题、图标以及自定义标题栏(九)

Qt开发 系列文章 - titles-icons-titlebars(九) 目录 前言 一、修改标题 二、添加图标 三、更换标题栏 1.效果演示 2.创建标题栏类 3.定义相关函数 4.使用标题栏类 总结 前言 在我们利用Qt设计软件时,经常需要修改窗口标题、更改软…

JumpServer开源堡垒机搭建及使用

目录 一,产品介绍 二,功能介绍 三,系统架构 3.1 应用架构 3.2 组件说明 3.3 逻辑架构 3.3 逻辑架构 四,linux单机部署及方式选择 4.1 操作系统要求(JumpServer-v3系列版本) 4.1.1 数据库 4.1.3创建数据库参考 4.2 在线安装 4.2.1 环境访问 4.3 基于docker容…

Pytorch | 从零构建GoogleNet对CIFAR10进行分类

Pytorch | 从零构建Vgg对CIFAR10进行分类 CIFAR10数据集GoogleNet网络结构特点网络整体架构特征图尺寸变化应用与影响 GoogleNet结构代码详解结构代码代码详解Inception 类初始化方法前向传播 forward GoogleNet 类初始化方法前向传播 forward 训练和测试训练代码train.py测试代…

简单了解一下 Go 语言的构建约束?

​构建约束是一种在 Go 语言中控制源文件编译条件的方法,它可以让您指定某些文件只在特定的操作系统、架构、编译器或 Go 版本下编译,而在其他环境中自动忽略。这样可以方便您针对不同的平台或场景编写不同的代码,实现条件编译的功能。 构建…

12.17双向链表,循环链表

循环单向链表 1.头文件test.h #ifndef __TEST_H_ #define __TEST_H_#include<stdio.h> #include<stdlib.h>typedef struct node {union{int len;int data;};struct node *next; }looplink,*looplinkPtr;//创建 looplinkPtr create();//判空 int empty(); //申请…

图的最小生成树(C++实现图【3】)

目录 1.最小生成树 1.1 Kruskal算法 代码部分 1.2 Prim算法 代码部分 1.最小生成树 连通图中的每一棵生成树&#xff0c;都是原图的一个极大无环子图&#xff0c;即&#xff1a;从其中删去任何一条边&#xff0c;生成树就不在连通&#xff1b;反之&#xff0c;在其中引入任何一…

解决电脑网速慢问题:硬件检查与软件设置指南

电脑网速慢是许多用户在使用过程中常见的问题&#xff0c;它不仅会降低工作效率&#xff0c;还可能影响娱乐体验。导致电脑网速慢的原因多种多样&#xff0c;包括硬件问题、软件设置和网络环境等。本文将从不同角度分析这些原因&#xff0c;并提供提高电脑网速的方法。 一、检查…

Python-基于Pygame的小游戏(贪吃蛇)(一)

前言:贪吃蛇是一款经典的电子游戏&#xff0c;最早可以追溯到1976年的街机游戏Blockade。随着诺基亚手机的普及&#xff0c;贪吃蛇游戏在1990年代变得广为人知。它是一款休闲益智类游戏&#xff0c;适合所有年龄段的玩家&#xff0c;其最初为单机模式&#xff0c;后来随着技术发…

MySQL表的增删改查(2)

1.数据库约束 1)约束类型 not null指定某列不能存储null值unique保证某列的每一行必须有唯一值default规定没有给列赋值时的默认值primary keynot null和unique的结合,一张表里只能有一个,作为身份标识的数据foreign key保证一个表的数据匹配另一个表中的值的参照完整性check…

职场人如何提升职业技能?

职场人如何提升职业技能&#xff1f; 在职场中&#xff0c;每个人都像是一名航行在广阔大海上的水手&#xff0c;面对着不断变化的风浪和挑战。要想在这片职场海洋中稳步前行&#xff0c;甚至脱颖而出&#xff0c;提升职业技能是必不可少的。那么&#xff0c;职场人究竟该如何…

IVE Model 2.0.2运行报错:Error launching application × could not locate Java runtime

在windows电脑上运行IVE Model 2.0.2程序的时候弹窗报错: could not locate Java runtime 一、原因分析 第一次安装的时候,很确定自己的JDK环境安装是没有问题,但是运行仍然会报错,由于软件没有说明使用什么版本的JDK只能挨个尝试,换了几个版本仍然不行,忽然想到,这个软…