一、PFC產生的背景:
傳統的在企業資料中心內,通常會部署一個乙太網路來支援IP流量,部署一或兩個儲存網域網路(SAN)來支援光纖通道儲存流量,並部署一個InfiniBand網路來支援高效能叢集計算,這樣會導致企業需要針對不同的應用部署多個不同的網路。部署和管理三類截然不同的網路會給企業帶來高昂的投資和運營成本,因此企業迫切希望實現整合。
基於優先順序的流量控制(PFC:Priority-based Flow Control)在IEEE:802.1Qbb標準文檔中定義,對傳統流控的暫停機制一種增強。與傳統的流控機制相比,當出現擁塞時傳統流控但會阻止一條鏈路上的所有流量。而PFC允許在一條乙太網路鏈路上建立8個虛擬通道,並為每條虛擬通道指定一個IEEE 802.1P優先等級(cos),允許單獨暫停和重啟其中任意一條虛擬通道,同時允許其它虛擬通道的流量無中斷通過。這一方法使網路能夠為單個虛擬連結建立無丟包類別的服務,使其能夠與同一介面上的其它流量類型共存。其實PFC就是普通流控功能的一種增強。
報文的格式:
IEEE802.1qbb中定義了,PFC幀的格式如下:
+----------------+----------------+----------------+-----------------+
| Destination Mac Address(6 octets) |
+----------------+----------------+----------------+-----------------+
| Source Mac Address(6 octets) |
+----------------+----------------+----------------+-----------------+
| type/len(2 octets) |
+----------------+----------------+----------------+-----------------+
| Control opcode(2 octets) |
+----------------+----------------+----------------+-----------------+
| priority_enable_vector(2 octets) |
+----------------+----------------+----------------+-----------------+
| time(2 octets * 8) |
+----------------+----------------+----------------+-----------------+
PFC幀各個欄位的定義:
欄位名 |
含義 |
| Destination Mac Address |
目的MAC地址域,6位元組,要求為01-80- C2-00-00-01。 |
| Source Mac Address |
源MAC地址域,6位元組,為本裝置MAC地址。 |
| type/len |
乙太網路幀長度或類型域,要求為88-08,用於標明本幀的類型為MAC控制幀。 |
| Control opcode |
MAC控制作業碼,2位元組。PFC PAUSE幀僅是MAC控制幀的一種,對於PFC PAUSE幀,其在MAC控制幀中的作業碼為01-01; |
| priority_enable_vector |
2位元組,高位元組置0,低位元組的每個位代表相應的time[n]是否有效。e[n]代表優先順序n,當e[n]為1時,表示time[n]有效;當e[n]為0,表示time[n]無效。 |
| time |
包含time[0] 至time[7]的8個數組單元,每個數組單元為2位元組。當e[n]為0時,time[n]沒有意義。當e[n]為1時,time[n]代表接收網站抑制優先順序為n的報文發送的時間,時間的單位為物理層晶片發送512位元據所需要的時間。所以發送一次PFC PAUSE幀,要求對端裝置暫停發送的時間長度最長為:65535 ×物理層晶片發送512位元據所需要的時間。 |
二、技術原理:
按分析整網中FCoE cos3的流量所映射的虛擬通道開啟PFC功能,其他虛擬通道保持預設。當出口CISCO裝置SW3的port7出現擁塞時達到一定閥值時,資料進入的方向(即上遊裝置)發送反壓資訊(XOFF:流量停止訊息),上遊裝置接收到XOFF,會根據反壓資訊XOFF指示停止發送或延遲發送資料,並將資料存放區在本地連接埠緩衝中,如果本地連接埠緩衝消耗超過閾值,則繼續向上遊反壓,如此一級級反壓,直到網路終端裝置CLIENT1和CLIENT2(這兩裝置是安裝了支援PFC的CNA卡),CLIENT1和CLIENT2會在XOFF報文中指定pause
time內暫停發送報文流,從而消除網路節點因擁塞造成的丟包。當擁塞解除後,SW3會發送XON的報文,告訴上遊裝置SW1和SW2可以把緩衝中的報文轉寄出來,SW1和SW2將緩衝中的報轉寄出去後,也解除了擁塞,這樣SW1和SW2也會分別往他們的上遊CLIENT1和CLIENT2發送XON報文,CLIENT1和CLIENT2收到XON報文後,又重新發送資料流。這樣處理流程就可以使得FCOE儲存業務不丟包。
CISCO裝置實際PFC報文如下:
<a href="http://www.datacentersky.com/wp-content/uploads/2012/06/pfc-pack.jpg" class="cboxElement" rel="example4" 677"="" style="text-decoration: none; color: rgb(1, 150, 227);">