[RoCE]Flow Control

[RoCE]Flow Control概览RoCE可以实现lossless无损网络环境,在二层网络上做到可靠网络传输,从而对原本在光纤网络环境下的应用在以太网环境下提供相同的服务,而不必对应用逻辑和上层协议更改。实现无损的方法有GlobalPause,PFC,DroplessReceiveQueue。1.什么是802.3xFlowControl(GlobalPause)?以太网标准(802.3)设计时是不可…

大家好,又见面了,我是你们的朋友全栈君。

概览

RoCE可以实现lossless无损网络环境,在二层网络上做到可靠网络传输,从而对原本在光纤网络环境下的应用在以太网环境下提供相同的服务,而不必对应用逻辑和上层协议更改。实现无损的方法有Global Pause, PFC, Dropless Receive Queue。

1.什么是802.3x Flow Control(Global Pause)?

以太网标准(802.3)设计时是不可靠的网络。不保证网络包会到达目的地像上层协议(如TCP)设计的将会到达目的地一样。后来,IEEE 802.3x 流控制标准为那些在上层一些不能保证可靠性的应用制定了一套标准。它能够接收从接收方发给发送方的缓存回馈(buffer feedback,例如overflow)。暂停动作(XOFF)是一个由接收方发给发送方的控制帧,告诉它接收缓存空间出现压力并且在不久可能会溢出。发送方立刻停止发送任何新的数据包予以回应,直到接收方准备再次接收它们为止。这个暂停帧包含一个timeout值。发送方会在这个超时范围内等待,或者直到收到一个XON控制消息后,再开始发送。IEEE 802.3x存在一个基本的缺点:一旦链路被暂停了,发送方就不能再产生任何新的包。结果,在一个端口上使用Global Pause流控制时,以太网链路不能负载需要不同QoS行为的多条网络流。也就是说,它会在该端口上暂停类型任何包括高优先级的网络流。不仅如此,如果这条链路出现在网络中的两个交换机上时,这个暂停动作可能会阻塞那些不需要暂停的服务器之间的流,导致大面积瘫痪。

2.什么是802.1Qbb Priority Flow Control(PFC)?

IEEE 802.1Qbb PFC将基本的IEEE 802.3x扩展成8个类别。它使得需要流控制的应用和不需要流控制的应用可以在同一条链路上共存。PFC对8种不同类型的流都做了定义,可以达到流控制效果。在2层网络的情况下,PFC使用VLAN标签(IEEE 802.1q)中的PCP位来区分八种不同类型的网络流,使得它们可以享受到独立的流控制。

[注意:PFC和Global Pause不能同时运行在同一个网络接口上,二者只能存其一]

3.什么时候使用PFC,它和QoS的关系又是什么呢?

当应用需要无损网络环境时(也就是说当应用使用的上层网络协议不保证可靠性传输时),PFC应该被启用以防止网络丢包,这通常是针对从光纤网络迁移到以太网上的应用。

当网络上存在多条网络流,而且这些网络流需要有差别的服务时(比如延迟敏感),应该启用QoS特性。可见PFC与QoS并无直接关系,但是他们可以应用到同一个网络队列上。

4.PFC具体在硬件上怎么实现的?

每个网卡硬件上有8个硬件发送队列,用于接收从各个CPU上的软件发送队列中的数据包,这些队列命名为Traffic Class,分别为TC0,TC1,…,TC7。而PFC策略可以通过mlnx_qos命令来对每个TC进行设置,因此可以细粒度的对每个TC启用PFC,使得上层应用可以同时选择有流控制和没有流控制的网络服务。

5.什么是Dropless Receive Queue?

无丢包接收队列可以在当软件接收队列过载时,让驱动通知固件。这种情况发生在当软件接收队列的处理速度比硬件接收队列的处理速度慢时。当启用这种特性后,在接收队列满载时,新接收的网络包不会被立刻丢掉。固件会累积这些包,并且假设软件会很快放置新的WQEs。如果过了一个固定的时间段后,新的接收WQE仍然没有放置,缓存溢出计数器会增长,暗示网络数据包已经被丢掉了。这种特性默认是禁用的。如果要启用该特性,要确保上述的流控制特性也得启用了一个。

启用方式:ethtool –set-priv-flags <interface> dropless_rq on, 关闭方式是off

查看信息:ethtool –show-priv-flags <interface>

转载于:https://www.cnblogs.com/burningTheStar/p/8566380.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143752.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • PHP文件锁

    PHP文件锁一、文件锁是什么?    顾名思义,对文件上锁。    可以通过“进门”的实际情况来理解:    有多个人要通过一个大门到食堂里吃饭,但食堂只有一个座位。     食堂管理员A有点偷懒,不想等那么久,于是就告诉大家,中午都可以来食堂吃饭,但是要跑快点才行,只有一个座位,第一个到的人就可以在食堂吃饭,然后就会锁门,其他人看到门锁上了就哪来的回哪去吧,这…

  • STUN协议解释[通俗易懂]

    STUN协议解释[通俗易懂]最近工作中要用到stun,故学习了一下stun协议的知识。中文的文档没找到讲的比较好的,所以只能自己翻译了,官方文档太长就找了个谷歌排名第一的文章翻译一下。机翻+人翻,原文地址如下,在学习过程中还发现了原文作者的一个错误。。。应该是他错了。https://www.3cx.com/blog/voip-howto/stun-details/https://www.ietf.org/rfc/rf…

  • laravel报错:TokenMismatchException in VerifyCsrfToken.php line 68:

    laravel报错:TokenMismatchException in VerifyCsrfToken.php line 68:laravel报错:TokenMismatchException in VerifyCsrfToken.php line 68:

  • springboot框架有哪些技术_Springboot常用注解

    springboot框架有哪些技术_Springboot常用注解✍、SpringBoot框架技术总结(一)1、SpringBoot简介我们之前的SSM还是使用起来不够爽。还需要写很多的配置才能进行正常的使用。实现一个功能需要引入很多的依赖,尤其是要自己去维护依赖的版本,特别容易出现依赖冲突等问题。SpringBoot就能很好的解决上述问题。中文文档:https://doc.springcloud.io/spring-boot/index.html1.1、SpringBoot是什么SpringBoot是基于Spring开发的全新框架,相当于对Spri

  • qtav—-ffmeg在ubuntu和win10上的编译和运行

    qtav—-ffmeg在ubuntu和win10上的编译和运行最近在windows上和ubuntu上都安装了qtav并且通过了编译测试,实测播放中英文的视频文件功能正常,有图像有声音。大致情况是,操作系统ubuntu:wkr@sea-X550JK:~$cat/etc/os-releaseNAME=”Ubuntu”VERSION=”16.04.4LTS(XenialXerus)”ID=ubuntuID_LIKE=debianPRETTY_…

  • Mybatis事务隔离级别「建议收藏」

    Mybatis事务隔离级别「建议收藏」转载:https://blog.csdn.net/qq924862077/article/details/52599961一般数据库的隔离级别有4个,由低到高依次为Readuncommitted、Readcommitted、Repeatableread、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。√:可能出现    ×:不会出现脏读不可重复读幻读说明…

    2022年10月14日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号