通過以太網傳輸的光纖通道流量(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,則直接將報文丟棄。
當本端發生擁塞時,交換機會根據本端收到報文的 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 功能,則不會暫停發送相應優先級的報文。