ECN-Echo (ECE)

在Cisco QoS 2.3課程中的ECN(Explicit Congestion Notification)的章節中第一次談到了ECN-Echo(ECE),透過ECE(注意,這個欄位不在ToS中,而是在TCP header中的flag之一)可以通知對方放慢傳送的速度。當另一方收到ECE時,會減少它的congestion windows來放慢傳輸速率。然後在第一個封包中設置TCP header flag(CWR, Congestion Window Reduced),用來通知原先發送ECE的那一方已經減少windows size並且放慢了傳輸速率.


TCP 中的 ECN 支援

當路由器將 IP 封包的 ECN 欄位設定為 11 時,接收端 (而不是傳送端) 就會接到路徑中擁塞的通知。ECN 使用 TCP 標頭向傳送端指出網路正遇到擁塞狀況,同時向接收端指出傳送端已經從接收端接到擁塞指標,並且降低傳輸速率。
TCP 中的 ECN 支援使用 TCP 標頭中的兩個未使用位元 (先前定義為保留)。為 ECN 支援定義的兩個新旗標如下所示:
ECE ECN-Echo (ECE) 旗標是用來指出,在 TCP 三方信號交換程序期間,TCP 對等體具備 ECN 功能,並指出 ECN 欄位在 IP 標頭中設定為 11 的連線上接到 TCP 區段。如需有關 TCP 三方信號交換程序的資訊,請參閱 RFC 793。
CWR Congestion Window Reduced (CWR) 旗標是由傳送主機設定,指出已接到設定 ECE 旗標的 TCP 區段。擁塞視窗是由 TCP 維護的內部變數,可管理傳送視窗的大小。
[圖 2] 顯示 TCP 標頭中 ECE 和 CWR 旗標相對於其它旗標的位置。如需有關 TCP 標頭中其它旗標的資訊,請參閱 RFC 793。
[圖 2]:TCP 標頭中的 ECE 和 CWR 旗標
圖 2:TCP 標頭中的 ECE 和 CWR 旗標觀看完整大小的影像
當兩個具備 ECN 功能的 TCP 對等體建立 TCP 連線時,它們交換 Synchronize (SYN)、SYN-Acknowledgement (SYN-ACK) 和 ACK 區段。SYN 區段已經針對具備 ECN 功能的 TCP 對等體同時設定 ECE 和 CWR 旗標;但是 SYN-ACK 區段則是設定 ECE 旗標,同時清除 CWR 旗標。
具備 ECN 功能的主機為具備 ECN 功能的 TCP 連線傳送 TCP 區段,其 IP 標頭中的 ECN 欄位設定為 10 或 01;具備 ECN 功能而且遇到擁塞的路由器會將 IP 標頭中的 ECN 欄位設定為 11。當接收端 TCP 對等體傳送 ACK (其中包含 ECN 欄位設定為 11 的已接收 TCP 區段) 時,會設定 TCP 標頭中的 ECE 旗標,並繼續在後續 ACK 中設定 ECE 旗標。
當傳送主機接到設定了 ECE 旗標的 ACK 時,所表現的行為就好像已經捨棄了封包,開始縮減其傳送視窗,並執行慢速啟動演算法及擁塞避免演算法。在下一個區段,傳送端會設定 CWR 旗標。在接到設定了 CWR 旗標的新區段時,接收端會停止在後續 ACK 中設定 ECE 旗標。

ECN 範例

[圖 3] 顯示具備 ECN 功能的 TCP 對等體之間的 TCP 連線範例,其具備 ECN 功能的路由器正遇到擁塞狀況。
[圖 3]:TCP 連線的 ECN 範例
圖 3:TCP 連線的 ECN 範例 觀看完整大小的影像
在此範例中,TCP 對等體 A 正傳送資料給 TCP 對等體 B。TCP 對等體 A 傳送區段 1 到 5,區段 2 由遇到擁塞而具備 ECN 功能的路由器轉送,路由器將 IP 標頭中的 ECN 欄位設定為 11;當 TCP 對等體 B 接到此區段時,會傳送已設定 ECE 旗標的 ACK。當 TCP 對等體 A 接到第一個已設定 ECE 旗標的 ACK 時,便開始降低其傳輸速率,並傳送下一個已設定 CWR 旗標的區段 (區段 6)。在接到設定了 CWR 旗標的區段 6 時, TCP 對等體 B 便開始傳送已清除 ECE 旗標的後續 ACK。
如需各種不同 TCP 資料流程之行為的詳細資訊,請參閱 RFC 3168。
Post a Comment

Popular posts from this blog

Pairwise Master Key (PMK) vs Parewise Transient Key(PTK) vs PseudoRandom Function(PRF) vs GTK (Groupwise Transient Key)

DSSS(直接序列展頻技術) vs OFDM(正交頻率多重分割)

DTMF Relay : RTP-NTE vs SIP INFO vs SIP NOTIFY