以太网流量控制——PAUSE帧

2023-11-12

http://www.tuicool.com/articles/Bzu2uuf

今天在测试DPDK性能的时候,发现发包工具的发包速率无法提升上去,千兆网卡设置速率70W qps,只能发出1W的速率。

抓包发现有大量的PAUSE流控帧。

一、PAUSE帧介绍

PAUSE帧是以太网在全双工模式下,MAC控制子层发出的流量控制帧。IEEE802.3协议为MAC控制子层提供了一个全双工流量控制结构框架,MAC控制子层是介于逻辑链路控制子层和介质访问控制子层间的可选功能。

交换控制电路要防止缓冲区溢出,可以利用MAC控制子层来控制以太网介质访问控制子层的操作。当已用缓冲区容量达到一个预先设定的阈值时,端口向全双工链路对方发出停止发送数据的请求,这个请求通过MAC控制子层产生的控制帧实现。

同样,端口可以接收由其他站点MAC控制子层产生的控制帧,控制帧夹在客户数据帧流中发送,接收方会根据帧的内容将控制帧分离出来,提交到MAC控制子层中的流量控制模块,流量控制模块解析控制帧的内容,提取帧中的控制参数,根据控制参数决定暂停发送的时间。

PAUSE帧中携带了时间参数。收到PAUSE帧的设备通过简单的解析,就可以确定停止发送的时长。对端设备出现拥塞的通常情况下,本端端口通常会连续收到多个PAUSE帧。只要对端设备的拥塞状态没有解除,相关的端口就会一直发送PAUSE.

二、PAUSE帧格式

PAUSE帧的帧长为64字节,结构非常简单。如下所示:

PAUSE帧的目的MAC地址是保留的MAC地址0180-C200-0001,源MAC则是发送PAUSE帧的设备的MAC地址。

Length/Type域是十六进制数0x8808.

MAC Control Opcode域的值是0x0001.其实,PAUSE帧是MAC控制帧的一种,其他类型的MAC控制帧使用不同的opcode值,此处不做详细说明。后面会谈到和PAUSE类似的PFC帧,PFC帧中该域的取值是0x0101.

MAC Control Parameters域需要根据MAC Control Opcode的类型来解析。对于PAUSE帧而言,该域是个2字节的无符号数,取值范围是0~65535.该域的时间单位是pause_quanta,每个pause_quanta相当于512比特时间。

PAUSE操作参数:为2字节的暂停时间参数。它是PAUSE发送方请求对方停止发送数据帧的时间长度,通常为0xFFFF,时间度量单位是以当前传输速率传输512位数据所用的时间,接收方实际暂停的时间为操作参数字段内容与以当前传输速率传输512位数据所用时间的乘积。

三、其他流控技术

在半双工模式下,主要采用Back-Pressure技术,也叫背压技术。端口向外发送一些信号来占用链路,对端也就没有机会发送报文。这样,可以间接达到和流控类似的效果。

四、以太网卡流控的开启/关闭

大多数的网卡,都有流控的开关命令。Linux系统中,可通过ethtool工具控制。

ethtool -A ethx autoneg off //自协商关闭

ethtool -A ethx tx off //发送模块关闭

ethtool -A ethx rx off //接收模块关闭

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以太网流量控制——PAUSE帧 的相关文章

  • vue props传Array/Object类型值,子组件报错解决办法(已解决)

    问题 Props with type Object Array must use a factory function to return the default value 1 在vue中如果当在父组件通过props传Array Obje
  • IPv6地址格式简介以及常见的IP地址

    toc 文章目录 1 IPv6地址格式 1 1首选格式 1 2 压缩格式 1 3 内嵌IPv4地址的IPv6 2 常见的IP地址 2 1 128 2 2 1 128 2 3 A B C D 2 4 FFFF A B C D 2 5 fe80
  • ElasticSearch入门学习笔记(2)--------Kibana语法学习

    ElasticSearch的ResultFul风格 基于Rest命令说明 原文链接 基础测试 创建一个索引 put 索引名 类型名 文档id 请求体 可以再head里面看到里面多了一个test1 从下面的图中可以看到本质上就是往里面put了
  • 如何在两个相关泛型类之间创建类似子类型的关系

    本文正在参加 金石计划 瓜分6万现金大奖 哈喽大家好 我是阿Q 事情是这个样子的 对话中的截图如下 看了阿Q的解释 你是否也和 马小跳 一样存在疑问呢 请往 看 我们都知道在java中 只要是类型兼容 就可以将一种类型的对象分配给另一种类型
  • vmware启动报错0xc000007b 解决方式

    1 官网下载vmwre 最新版后安装 2 运行vmwre报错结果如下 解决方法 安装最新版本C 运行库 VisualC2022 64 86 64位操作系统安装VisualC2022 64 86 32未操作系统安装VisualC2022 86
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • c++中的vector的用法

    参考博客 https blog csdn net msdnwolaile article details 52708144 基本用法 如下代码 include
  • Flutter Image图片显示

    目录 参数详解 代码示例 效果图 完整代码 使用资源图片前必做两个步骤 1 在根目录下创建子目录 子目录中创建2 0x和3 0x 也可以创建4 0x 5 0x 但是2 0和3 0是必须的 目录 在对应目录中添加对应分辨率图片 图1 2 打开
  • 2020笔记本性价比之王_2020十大笔记本电脑性价比排行(最新笔记本电脑推荐)...

    2020十大笔记本电脑性价比排行 最新笔记本电脑推荐 1 HP 惠普 战99 15 6英寸笔记本电脑 2 Acer 宏碁 墨舞P50 15 6英寸笔记本电脑 3 HONOR 荣耀 MagicBook Pro 16 1英寸笔记本电脑 4 AS
  • C++中的Unicode编码:wchar, UTF-8,UTF-16,UTF-32

    C 在C11标准中加入了对Unicode编码的支持 新增了wchar t char16 t char32 t内置数据类型 cout lt lt sizeof char lt lt endl cout lt lt sizeof wchar t
  • 上传新文件项目到svn上

    一 在之前有svn项目的文件夹中检出 这一步主要是为了获得svn的仓库地址 二 在一个之前有的svn项目里面右键tortoiseSvn gt 版本库浏览器 就会出现这样的界面 然后在这个界面里右键里选择加入文件夹 选择本地的文件夹就可以了
  • Python剪刀石头布

    这是以前刚刚开始学习python时自己编的第一个小游戏 很简单 分享给大家 import random 胜 0 负 0 平 0 while True 对方 str random randint 1 3 我方 input 请选择你的出拳 剪刀
  • [C]编译器对char数组声明的一个行为

    1 概述 如果使用char 来声明char数组 那么编译器会自动计算后面的字面量字符数 再加上一个空字符 作为它的长度 实际上这个数组最后一位被编译器强行加上了 0 include
  • VS里面关于.cpp文件与.cu文件混合编译问题---不要在.cpp文件声明核函数(__device__()和global__())

    原文出处 点击打开链接 不要在 cpp文件声明核函数 否则会报错 具体可以参考下面两个链接 http blog csdn net lingerlanlan article details 25063331 utm source tuicoo
  • 如何自己手动搭建一个RSS订阅机器人(rssbot),自己做一个RSS阅读器

    当你想RSS订阅一些自己感兴趣的博客 却又苦于免费的RSS阅读器广告很多时 可以自己借助Telegram机器人搭建一个RSS订阅机器人 本文老王介绍下如何搭建一个Telegram RSS订阅机器人 以及如何把RSS订阅机器人拖到Telegr
  • JAVA - 可变对象与不可变对象

    不可变对象在并发程序中比较有用 由于其状态无法改变 因此无法被线程的干扰损坏或者被视为不一致状态 基本概念 不可变对象 Immutable Objects 即对象一旦被创建它的状态 对象的数据 也即对象属性值 就不能改变 任何对它的改变都应
  • U3D Transform基本移动函数: 移动、旋转、缩放

    1 指定方向移动 移动速度 float TranslateSpeed 10f Vector3 forward 表示 向前 transform Translate Vector3 forward TranslateSpeed 2 全方向移动
  • Java 8新特性探究(十一)Base64详解

    2019独角兽企业重金招聘Python工程师标准 gt gt gt BASE64 编码是一种常用的字符编码 在很多地方都会用到 但base64不是安全领域下的加密解密算法 能起到安全作用的效果很差 而且很容易破解 他核心作用应该是传输数据的
  • 数字IC时钟

    目录 前言 1 时钟的概念与性质 2 时钟源 3 时钟管理模块 3 1 时钟门控 3 2 时钟分频 3 3 时钟切换 前言 时钟信号对于整个芯片的功能有着至关重要的作用 一旦芯片级的时钟信号质量不高 会导致许多不受控的异常bug 本人目前还
  • 数据库(第五版)课后习题答案

    仅供参考 有任何问题概不负责 请同学们谨慎参考 数据库系统概论第五版 答案 第1章 绪论 1 试述数据 数据库 数据库系统 数据库管理系统的概念 答 l 数据 Data 描述事物的符号记录称为数据 数据的种类有数字 文字 图形 图像 声音

随机推荐

  • inc指令是什么意思_工作台自动循环运动PLC控制指令与梯形图

    点击箭头处 工业之家 选择 关注公众号 工作台自动循环运动PLC控制指令与梯形图 一 数据传送指令 数据传送指令包括MOV 传送 SMOV BCD码移位传送 CML 取反传送 BMOV 数据块传送 FMOV 多点传送 XCH 数据交换 这里
  • FeignClient注解中各种属性详解

    一 value name 这两个属性的作用是一样的 如果没有配置url 那么配置的值将作为服务的名称 用于服务的发现 反之只是一个名称 注意 这里写的是你要调用的那个服务的名称 而不是你自己的那个服务的名称 另外 如果同一个工程中出现两个接
  • C语言 IDE的介绍及安装

    目录 C语言 IDE介绍 GCC C Free Code Blocks CLang CLion XCode Dev C Turbo C Visual C 6 0 Visual Studio C语言 IDE安装 安装包 版本选择 注意事项 C
  • 使用VMware给Ubuntu增加磁盘容量

    一般只给虚拟机里面的Ubuntu很少的空间 到了空间不足就尴尬了 那么就扩充磁盘解决问题吧 一 VMware手动扩容 打开虚拟机 选择你要扩充的客户机 点击 编辑虚拟机设置 然后详细设置 选择硬盘 gt 扩展 gt 目标总磁盘大小 不是增量
  • [力扣c++实现] 152. 乘积最大子数组

    152 乘积最大子数组 给你一个整数数组 nums 请你找出数组中乘积最大的非空连续子数组 该子数组中至少包含一个数字 并返回该子数组所对应的乘积 测试用例的答案是一个 32 位 整数 子数组 是数组的连续子序列 示例 1 输入 nums
  • xshell无法连接虚拟机原因Connection failed. Type `help' to learn how to use Xshell prompt.

    问题分析 xshell无法连接的问题有多种 比如虚拟机没有安装ssh服务 虚拟机没有启动ssh服务 又或者是防火墙 禁用端口等问题 这些都比较容易解决 下面我介绍的是我遇到的一种比较难的无法连接情况 VMware无法在Windows下创建适
  • Proxy(代理)服务器

    代理服务器 代理服务器必须有DNS地址 如果开启转发需要在客户端设置DNS地址 NAT 是直接与目标服务器通信的 也就是直接访问的baidu服务器 目标地址是baidu服务器的地址 所以必须要有DNS来解析主机名 如果是通过代理客户端是没有
  • 全球及中国生物技术产业创新发展模式及十四五应用方向研究报告2021-2027年

    全球及中国生物技术产业创新发展模式及十四五应用方向研究报告2021 2027年HS HS HS HS HS HS HS HS HS HS HS HS HS HS HS HS HS HS 修订日期 2021年10月 搜索鸿晟信合研究院查看官网
  • 交叉编译器简介以及ARM交叉编译器arm-linux-gcc

    一 交叉编译器简介 在一种计算机环境中运行的编译程序 能编译出在另外一种环境下运行的代码 这个编译过程就叫交叉编译 简单地说 就是在一个平台上生成另一个平台上的可执行代码 二 体系结构与操作系统 1 常见的体系结构有ARM结构 x86结构等
  • SPSS异常值处理编程

    SPSS异常值处理编程 异常值是指在数据集中与其他观测值相比明显不同的值 在数据分析过程中 异常值可能会对结果产生不良影响 因此需要进行异常值处理 SPSS作为一种广泛使用的数据分析工具 提供了多种方法来检测和处理异常值 本文将介绍SPSS
  • 【python】UI自动化——鼠标悬浮显示二级菜单相关操作

    一 来个百度示例吧 想要点击如下图的图片 先上代码 import time from selenium import webdriver from selenium webdriver import ActionChains def sta
  • matlab 数据降维和重构_处理不平衡机器学习数据时需要了解的技术

    我们在处理真实世界机器学习数据集时遇到的主要挑战之一是数据的比例不平衡 欺诈检测是这类数据的最好例子 在本文中 我们将使用kaggle中的信用卡欺诈检测数据集 www kaggle com mlg ulb creditcardfraud 在
  • 推荐基于VUE2.0自定义分页插件

    基于vue2 0实现的自定义分页 可设置每页显示条数 带跳转框直接跳转到相应页面 文档地址 https gitee com it distant branch vue custom pages 实现效果如下 支持功能 x 自定义分页条数 x
  • -bash: ./startup.sh: Permission denied

    今天在执行tomcat的时候 用户没有权限 而导致无法执行 用命令chmod 修改一下bin目录下的 sh权限就可以了 如chmod u x sh
  • YUV420P与YUVJ420P

    1 YUV420P与YUVJ420P AV PIX FMT YUV420P lt planar YUV 4 2 0 12bpp 1 Cr Cb sample per 2x2 Y samples AV PIX FMT YUVJ420P lt
  • TOF 3DSensor SDK下载

    DCAM710 与 DCAM100 SDK下载 https picozense picovr com cn sdk html PicoZense SDK是基于PicoZense深度摄像头的软件开发包 支持Windows Linux Open
  • Mybatis Cannot convert string to java.sql.Timestamp value;

    生成默认无参构造函数
  • SpringAop使用的到底是JDK动态代理还是Cglib?

    1 从源码分析 optimize标志已设置 也就是为true 设置proxyTargetClass 目标代理类 标志 更改proxyTargetClass 目标代理类 标志的方法 没有指定代理接口 2 错误的推论 3 最终的推论 什么时候使
  • CodeGeeX中这些隐藏的设置,你知道吗?

    随着CodeGeeX整体性能的升级 越来越多的用户发现CodeGeeX的很多实用功能 能够帮助程序员更快更好的编写代码和解决技术问题 近期 我们看到许多用户在使用CodeGeeX的过程中 有一些相似的疑问 比如 很多人希望能够通过调整设置
  • 以太网流量控制——PAUSE帧

    http www tuicool com articles Bzu2uuf 今天在测试DPDK性能的时候 发现发包工具的发包速率无法提升上去 千兆网卡设置速率70W qps 只能发出1W的速率 抓包发现有大量的PAUSE流控帧 一 PAUS