在網(wǎng)絡(luò)通信中,擁塞是一個(gè)常見(jiàn)的問(wèn)題,尤其是在高負(fù)載時(shí)期或網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)不完善的情況下。傳統(tǒng)的擁塞控制方法主要通過(guò)丟包來(lái)指示網(wǎng)絡(luò)擁塞,當(dāng)路由器的緩沖區(qū)滿時(shí),會(huì)丟棄數(shù)據(jù)包,發(fā)送方通過(guò)檢測(cè)丟失的數(shù)據(jù)包來(lái)進(jìn)行擁塞控制。然而,丟包會(huì)導(dǎo)致重傳,增加網(wǎng)絡(luò)負(fù)擔(dān),降低網(wǎng)絡(luò)性能。
ECN(Explicit Congestion Notification)是一種改進(jìn)后的擁塞控制方法,它不依賴(lài)于丟包來(lái)指示擁塞,而是在數(shù)據(jù)包的頭部標(biāo)記擁塞發(fā)生的信號(hào)。ECN通過(guò)向數(shù)據(jù)包的 IP 頭部添加一個(gè)特殊的標(biāo)記位告知發(fā)送方網(wǎng)絡(luò)發(fā)生了擁塞。
ECN的工作原理
ECN 的工作原理可以分為三個(gè)主要階段:標(biāo)記、回傳、響應(yīng)。
標(biāo)記(第一階段):當(dāng)路由器的緩沖區(qū)開(kāi)始出現(xiàn)擁塞時(shí),它會(huì)檢查傳入的數(shù)據(jù)包。如果緩沖區(qū)超過(guò)了某個(gè)閾值,路由器會(huì)修改數(shù)據(jù)包的 IP 頭部,在其中設(shè)置 ECN 位,表示網(wǎng)絡(luò)出現(xiàn)了擁塞。
回傳(第二階段):標(biāo)記了 ECN 位的數(shù)據(jù)包繼續(xù)在網(wǎng)絡(luò)中傳輸,它們不會(huì)被丟棄。這使得接收方能夠收到所有數(shù)據(jù)包,無(wú)需等待重傳。
響應(yīng)(第三階段):接收方收到帶有 ECN 標(biāo)記的數(shù)據(jù)包后,會(huì)向發(fā)送方發(fā)送一條特殊的通知(CNP),告知發(fā)送方網(wǎng)絡(luò)發(fā)生了擁塞。發(fā)送方收到通知后,會(huì)根據(jù)接收方的指示適當(dāng)調(diào)整發(fā)送速率,以降低網(wǎng)絡(luò)擁塞的程度。
通過(guò)這種方式,ECN 可以更及時(shí)地指示網(wǎng)絡(luò)擁塞,并且避免了丟包帶來(lái)的額外開(kāi)銷(xiāo),從而提高了網(wǎng)絡(luò)的性能和效率。
ECN在網(wǎng)絡(luò)層的實(shí)現(xiàn)
ECN在IP頭部中需要2個(gè)比特位來(lái)承載信息,它在IPv4位于IP頭部TOS字段中,示意圖如下:

(Differentiated Services Field (區(qū)分服務(wù)領(lǐng)域):DS Field的兩個(gè)部分DSCP和CU組合成一個(gè)可擴(kuò)展性相對(duì)較強(qiáng)的方法以此來(lái)保證IP的服務(wù)質(zhì)量。)
ECN在 IPv4 和 IPv6 頭部中的位置和功能是類(lèi)似的,但由于兩者頭部結(jié)構(gòu)不同,其具體位置也存在差異。如下表:
特性維度 | IPv4 | IPv6 |
?頭部結(jié)構(gòu)? | 可變長(zhǎng)度頭部(通常20字節(jié),可帶選項(xiàng)) | 固定40字節(jié)基本頭部,擴(kuò)展功能通過(guò)擴(kuò)展頭部實(shí)現(xiàn) |
?ECN字段位置? | 重新定義的 ?ToS(服務(wù)類(lèi)型)字節(jié)的后2位(第7-8位) | ?Traffic Class(流量類(lèi)別)字節(jié)的后2位(第7-8位) |
?ECN字段大小? | 2比特 | 2比特 |
?ECN碼點(diǎn)含義? | 00: Non-ECT (不支持ECN) 01: ECT(1) (支持ECN) 10: ECT(0) (支持ECN) 11: CE (經(jīng)歷擁塞) | 00: Non-ECT (不支持ECN) 01: ECT(1) (支持ECN) 10: ECT(0) (支持ECN) 11: CE (經(jīng)歷擁塞) |
?所屬字段? | 該8位字段前6位為DS(差分服務(wù))字段,后2位為ECN字段?(如圖) | 該8位字段前6位為T(mén)raffic Class字段,后2位為ECN字段? |
支持ECN的標(biāo)識(shí)
支持ECN的發(fā)送端(如服務(wù)器)在發(fā)出IP數(shù)據(jù)包時(shí),會(huì)將其IP頭部的ECN字段設(shè)置為 ECT(0)或 ECT(1)。這相當(dāng)于向網(wǎng)絡(luò)宣告:“我這個(gè)數(shù)據(jù)包是可以被ECN標(biāo)記的,如果遇到擁塞,請(qǐng)標(biāo)記我,不要丟棄我。”
擁塞標(biāo)記
當(dāng)支持ECN的網(wǎng)絡(luò)設(shè)備(如路由器、交換機(jī))檢測(cè)到其緩沖區(qū)隊(duì)列開(kāi)始出現(xiàn)擁塞(但尚未滿到需要丟包的程度)時(shí),它會(huì)檢查正在通過(guò)的數(shù)據(jù)包的ECN字段。如果該字段是 ECT(0)或 ECT(1),設(shè)備就會(huì)將其修改成 CE (11)。這個(gè)動(dòng)作是ECN的核心—顯式擁塞通知。
信息回傳
接收端收到帶有 CE 標(biāo)記的數(shù)據(jù)包后,會(huì)通過(guò)其傳輸層協(xié)議(如 TCP ACK 包中的 ECN-Echo 標(biāo)志位)通知發(fā)送端。發(fā)送端接到通知后,便會(huì)像檢測(cè)到丟包一樣降低發(fā)送速率,從而緩解擁塞。
ECN在傳輸層的實(shí)現(xiàn)
TCP
ECN在傳輸層的實(shí)現(xiàn),是其發(fā)揮“端到端”擁塞控制作用的關(guān)鍵一環(huán)。在數(shù)據(jù)傳輸前,發(fā)送方和接收方必須通過(guò)三次握手 (Three-Way Handshake) 建立一個(gè)穩(wěn)定的連接。TCP協(xié)議負(fù)責(zé)接收來(lái)自網(wǎng)絡(luò)層(IP)的擁塞信號(hào),并將其反饋給發(fā)送方,最終觸發(fā)發(fā)送方的速率調(diào)整。
TCP 通過(guò)其首部中的兩個(gè)標(biāo)志位來(lái)實(shí)現(xiàn) ECN 功能。

這2位有4種可能組合,每種組合被稱(chēng)為碼點(diǎn)
CWR | ECE | 碼點(diǎn) | 發(fā)送自 | 目標(biāo) | |
1 | 0 | 0 | Non-ECN set up | 任意 | 任意 |
2 | 0 | 1 | ECN Echo | 接收方 | 發(fā)送方 |
3 | 1 | 0 | Congestion window reduced | 發(fā)送方 | 接收方 |
4 | 1 | 1 | ECN Setup | 發(fā)送方 | 接收方 |
- ECE (ECN-Echo):用于接收方向發(fā)送方回顯擁塞通知。當(dāng)接收方收到一個(gè)被網(wǎng)絡(luò)設(shè)備標(biāo)記為擁塞體驗(yàn)(CE)的數(shù)據(jù)包時(shí)(接上一節(jié)內(nèi)容),它會(huì)在后續(xù)返回的 ACK 包中設(shè)置 ECE=1,以此通知發(fā)送方網(wǎng)絡(luò)發(fā)生了擁塞。
- CWR (Congestion Window Reduced):用于發(fā)送方向接收方確認(rèn)已降低發(fā)送速率。當(dāng)發(fā)送方收到一個(gè) ECE=1 的 ACK 包并做出降速響應(yīng)后,它會(huì)在下一個(gè)數(shù)據(jù)包中設(shè)置 CWR=1,以此告知接收方:“我已收到擁塞通知并已采取行動(dòng)”。
UDP
UDP也是網(wǎng)絡(luò)中傳輸層的一個(gè)核心協(xié)議,那么它和TCP的區(qū)別又是什么呢?
特性 | UDP (用戶數(shù)據(jù)報(bào)協(xié)議) | TCP (傳輸控制協(xié)議) |
?連接性? | ?無(wú)連接? 發(fā)送數(shù)據(jù)前無(wú)需建立連接,直接發(fā)送。 | ?面向連接? 通信前需通過(guò)“三次握手”建立可靠連接。 |
?可靠性? | ?不可靠? 不保證數(shù)據(jù)包順序、不重傳丟失或出錯(cuò)包。 | ?可靠? 通過(guò)確認(rèn)、重傳等機(jī)制確保數(shù)據(jù)正確有序送達(dá)。 |
?控制機(jī)制? | 無(wú)流量控制、無(wú)擁塞控制。 | 有復(fù)雜的流量控制和擁塞控制機(jī)制(如滑動(dòng)窗口)。 |
?數(shù)據(jù)單元? | ?面向報(bào)文? 應(yīng)用層交給UDP多長(zhǎng)的報(bào)文,UDP就發(fā)送多長(zhǎng)。 | ?面向字節(jié)流? 將數(shù)據(jù)視為無(wú)結(jié)構(gòu)的字節(jié)流進(jìn)行傳輸。 |
?速度開(kāi)銷(xiāo)? | ?傳輸速度快? 頭部開(kāi)銷(xiāo)?。ü潭?字節(jié)),延遲低。 | 相對(duì)較慢 頭部開(kāi)銷(xiāo)大(最小20字節(jié)),延遲較高。 |
?適用場(chǎng)景? | 實(shí)時(shí)應(yīng)用:音視頻通話、直播、在線游戲、DNS查詢(xún)等。 | 可靠性要求高的應(yīng)用:文件傳輸、網(wǎng)頁(yè)瀏覽、郵件等。 |

UDP 本身是無(wú)連接、無(wú)狀態(tài)的協(xié)議,不像 TCP 那樣有復(fù)雜的確認(rèn)和重傳機(jī)制。因此,ECN 在 UDP 中的實(shí)現(xiàn)方式與 TCP 不同,通常需要應(yīng)用程序的更多參與或依賴(lài)配套的反饋協(xié)議。
發(fā)送方(應(yīng)用程序)需要通過(guò)特定的 API(如 IP_ECNsocket 選項(xiàng))來(lái)檢測(cè)路徑是否支持 ECN,并在發(fā)出的 UDP 數(shù)據(jù)包的 IP 頭部設(shè)置 ECT 碼點(diǎn)(ECT(0) 或 ECT(1)),表明該數(shù)據(jù)包支持 ECN。
當(dāng)支持 ECN 的網(wǎng)絡(luò)設(shè)備將 UDP 數(shù)據(jù)包標(biāo)記為 CE 后,接收方需要檢測(cè)到這一標(biāo)記。由于 UDP 沒(méi)有類(lèi)似 TCP 的 ACK 機(jī)制,接收方需要生成一個(gè)專(zhuān)門(mén)的 CNP (Congestion Notification Packet, 擁塞通知報(bào)文),CNP報(bào)文內(nèi)部會(huì)攜帶引發(fā)擁塞的原始數(shù)據(jù)流的關(guān)鍵信息(源和目標(biāo)IP地址、傳輸層端口號(hào)、擁塞程度信息、QP(Queue Pair)信息),并將其發(fā)送回源發(fā)送方。發(fā)送方在收到 CNP 后,需要主動(dòng)降低數(shù)據(jù)發(fā)送速率。

ECN在RDMA中的實(shí)現(xiàn)方式
在高性能計(jì)算和數(shù)據(jù)中心環(huán)境中,RoCEv2 也廣泛使用 ECN。其實(shí)現(xiàn)方式與 UDP 類(lèi)似,因?yàn)?RoCEv2 運(yùn)行在 UDP 之上。
支持 ECN 的交換機(jī)在檢測(cè)到擁塞時(shí),會(huì)標(biāo)記 RoCEv2 數(shù)據(jù)包的 IP 頭 ECN 字段為 CE。接收端網(wǎng)卡生成專(zhuān)門(mén)的 CNP(擁塞通知報(bào)文),其中包含導(dǎo)致?lián)砣牧髁吭葱畔ⅲ珻NP 被發(fā)送回引發(fā)擁塞的發(fā)送端主機(jī),發(fā)送端主機(jī)收到 CNP 后,會(huì)根據(jù)DCQCN(數(shù)據(jù)中心量化擁塞通知) 等算法調(diào)整相應(yīng)數(shù)據(jù)流的發(fā)送速率。
智算中心的硬件核心在于為 RoCEv2提供穩(wěn)定、高性能的無(wú)損網(wǎng)絡(luò)環(huán)境。這不僅需要網(wǎng)卡支持,更需要交換機(jī)的深度配合。CX-N系列數(shù)據(jù)中心交換機(jī)通過(guò)其超低時(shí)延、無(wú)損網(wǎng)絡(luò)技術(shù)、對(duì)大容量緩存的優(yōu)化、高級(jí)遙測(cè)功能以及對(duì)自動(dòng)化運(yùn)維的支持,為DCQCN協(xié)議在AI計(jì)算、高性能計(jì)算等場(chǎng)景中的高效、穩(wěn)定運(yùn)行提供了堅(jiān)實(shí)的硬件基礎(chǔ)。

-
數(shù)據(jù)中心
+關(guān)注
關(guān)注
16文章
5419瀏覽量
74320
發(fā)布評(píng)論請(qǐng)先 登錄
透視數(shù)據(jù)中心中的25G、50G和100G技術(shù)
適用于數(shù)據(jù)中心和AI時(shí)代的800G網(wǎng)絡(luò)
PCIe協(xié)議分析儀在數(shù)據(jù)中心中有何作用?
透視數(shù)據(jù)中心中的25G/50G和100G技術(shù)看完你就懂了
數(shù)據(jù)中心太耗電怎么辦
數(shù)據(jù)中心是什么
數(shù)據(jù)中心網(wǎng)絡(luò)進(jìn)行監(jiān)控和管理如何操作
數(shù)據(jù)中心中網(wǎng)絡(luò)擁塞的危害及其疏散方法的介紹
基于數(shù)據(jù)中心網(wǎng)絡(luò)拓?fù)涓兄?b class='flag-5'>擁塞控制算法
基于流調(diào)度代價(jià)的數(shù)據(jù)中心網(wǎng)絡(luò)擁塞控制路由算法
淺談數(shù)據(jù)中心網(wǎng)絡(luò)基礎(chǔ)技術(shù)
HPC和數(shù)據(jù)中心融合網(wǎng)絡(luò)面臨的技術(shù)挑戰(zhàn)

半導(dǎo)體存儲(chǔ)器在數(shù)據(jù)中心中的應(yīng)用
信而泰PFC/ECN流量測(cè)試方案:打造智能無(wú)損網(wǎng)絡(luò)的關(guān)鍵利器

解析DCQCN:RDMA在數(shù)據(jù)中心網(wǎng)絡(luò)的關(guān)鍵擁塞控制協(xié)議

評(píng)論