• PFC——基于优先级的流量控制


      通过以太网传输的光纤通道流量(FCoE)就是要求无丢包服务的一个典型示例。为了使以太网能够满足应用的无丢包要求,需要制定一种方法来通过以太网提供无损服务。基于优先级的流量控制正是在这种背景下出现。
         基于优先级的流量控制(PFC)是对暂停机制的一种增强(如下图)。当前以太网暂停选择(IEEE 802.3 Annex 31B)也能达到无丢包的要求,但它会阻止一条链路上的所有流量,本质上来讲,它会暂停整条链路。PFC 允许在一条以太网链路上创建 8 个虚拟通道,并为每条虚拟通道指定一个 IEEE 802.1P 优先等级,允许单独暂停和重启其中任意一条虚拟通道,同时允许其它虚拟通道的流量无中断通过。这一方法使网络能够为单个虚拟链路创建无丢包类别的服务,使其能够与同一接口上的其它流量类型共存。

      
      如图所示,在交换机端口的 8 个队列进行 buffer 的分配,形成了网络中 8 个虚拟化通道,数据流带上自身的通道标签(802.1P 进行标识),buffer 大小使得各队列有不同的数据缓存能力。 一旦出现瞬时拥塞,即某个设备的队列缓存消耗较快,超过一定阈值(可设定为端口队列的 1/2、3/4 等比例),设备即向数据进入的方向(上游设备)发送反压信息,上游设备接收到反压信息,会根据反压信息指示停止发送或延迟发送数据,并将数据存储在本地端口 buffer,如果本地端口 buffer 消耗超过阈值,则继续向上游反压,如此一级级反压,直到网络终端设备,从而消除网络节点因拥塞造成的丢包。使新一代以太网技术可以满足存储业务不丢包的要求(为光纤通道流量,也就是存储流量,分配一个 IEEE 802.1P 优先等级,并为该优先等级启用 PFC)。

      

    交互流程:
     
    使用端口的 PFC(Priority-Based Flow Control,基于优先级流量控制)功能,可以基于 802.1P  优先级对报文进行流量控制。
    当本端发生拥塞时,交换机会根据本端收到报文的 802.1P  优先级进行判别,从而确定对报文的处理方式。
    · 如果此时收到报文的 802.1P  优先级有使能 PFC,则接收该报文,并向对端发送 PFCPAUSE 帧,通知对端设备暂时停止发送该类报文。对端设备在接收到 PFC PAUSE 帧后,将暂时停止向本端发送该类报文,暂停时间长短信息由 PFC PAUSE 帧所携带。当拥塞仍然存在时,此过程将重复进行,直至拥塞解除。
    · 如果此时收到报文的 802.1P  优先级没有使能 PFC,则直接将报文丢弃。 

    当对端接收到 PFC  PAUSE 帧时,会根据本端的 802.1P  优先级的配置信息和状态信息,确定对报文的处理方式。 

    · 若对端有开启相应优先级的 PFC 功能,且尚未暂停发送相应优先级的报文,则暂停发送相应优先级的报文,并根据 PFC PAUSE 帧中对应的暂停时间启动定时器。当定时器到期后,将恢复相应优先级报文的发送。 
    · 若对端有开启相应优先级的 PFC 功能,且已经暂停发送相应优先级的报文,则根据 PFC  PAUSE 帧中对应的暂停时间更新对应定时器的到期时间。
    · 若 PFC  PAUSE 帧中对应的暂停时间为 0,则相当于使对应的暂停定时器立即到期,立即恢复相应优先级报文的发送。
    · 若 PFC  PAUSE 帧中对应的暂停时间不为 0,则相当于复位对应的暂停定时器。也就是说,只要本端一直拥塞,则对端会因不断收到 PFC PAUSE 帧而持续暂停发送相应优先级的报文。 
    · 若对端没有开启相应优先级的 PFC 功能,则不会暂停发送相应优先级的报文。 


  • 相关阅读:
    python---基础知识回顾(九)图形用户界面-------Tkinter
    python---基础知识回顾(八)数据库基础操作(sqlite和mysql)
    python---重点(设计模式)
    python---基础知识回顾(七)迭代器和生成器
    python---权限管理和菜单生成
    python---基础知识回顾(六)网络编程
    python---基础知识回顾(五)(python2.7和python3.5中的编码)
    CustomProgressBar
    android-square-progressbar-legacy
    AnimImageView
  • 原文地址:https://www.cnblogs.com/zhuyp1015/p/2633331.html
Copyright © 2020-2023  润新知