自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

TCP/IP網(wǎng)絡(luò)中的顯式擁塞通告(ECN)

網(wǎng)絡(luò)
當(dāng)前的TCP實(shí)現(xiàn)將TCP端節(jié)點(diǎn)之間的中間網(wǎng)絡(luò)視為一個(gè)不透明的“黑盒”。TCP包進(jìn)入和流出這個(gè)盒子。有些時(shí)候進(jìn)入盒子的包被丟失了。因?yàn)榻裉斓臄?shù)字和光媒體上出現(xiàn)比特級(jí)錯(cuò)誤的機(jī)會(huì)非常少,TCP的設(shè)計(jì)者們就假設(shè)包的丟失很大程度上是因?yàn)槁酚善鞯膿砣?/div>

當(dāng)前的TCP實(shí)現(xiàn)將TCP端節(jié)點(diǎn)之間的中間網(wǎng)絡(luò)視為一個(gè)不透明的“黑盒”。TCP包進(jìn)入和流出這個(gè)盒子。有些時(shí)候進(jìn)入盒子的包被丟失了。因?yàn)榻裉斓臄?shù)字和光媒體上出現(xiàn)比特級(jí)錯(cuò)誤的機(jī)會(huì)非常少,TCP的設(shè)計(jì)者們就假設(shè)包的丟失很大程度上是因?yàn)槁酚善鞯膿砣布词锹酚善饔脕砣菁{進(jìn)入包的緩沖已經(jīng)被填滿了,這樣路由器會(huì)靜默地丟棄接下來進(jìn)入的包。

盡管TCP可以檢測(cè)到TCP包的丟失并且進(jìn)行重傳,但是從TCP處理過程,重傳過程和吞吐率下降這些方面看,這個(gè)重傳過程將會(huì)耗費(fèi)很大。

當(dāng)一個(gè)發(fā)送的TCP端節(jié)點(diǎn)檢測(cè)倒一個(gè)包丟失時(shí),可以進(jìn)行快速重傳或者包的重傳計(jì)時(shí)器超時(shí)而重傳。然后該TCP端節(jié)點(diǎn)減小發(fā)送窗口(在等待響應(yīng)之前可以發(fā)送的包數(shù)量),進(jìn)行慢啟動(dòng)和擁塞避免算法(RFC 2001)。這會(huì)立刻降低發(fā)送端的發(fā)送速率,以便路由器來減輕擁塞。發(fā)送端會(huì)逐漸將發(fā)送窗口恢復(fù)倒擁塞發(fā)生前的大小。

盡管因?yàn)槁酚善鲹砣a(chǎn)生的包丟失是偶然發(fā)生的事件,它們并不會(huì)負(fù)面地影響塊數(shù)據(jù)傳輸,只是會(huì)增加一些重傳數(shù)據(jù)包和恢復(fù)發(fā)送速率的時(shí)間。慢啟動(dòng)和擁塞避免算法對(duì)于時(shí)間敏感的,成塊數(shù)據(jù)流的控制效果非常好。然而,TCP處理丟包的方法對(duì)于交互式的,丟失敏感和時(shí)間敏感的流量來說效果不是很好。

另外一個(gè)關(guān)于路由器擁塞的問題是擁塞對(duì)于多個(gè)數(shù)據(jù)流的影響。當(dāng)路由器開始丟棄進(jìn)入的數(shù)據(jù)包時(shí),它一般并不區(qū)分?jǐn)?shù)據(jù)流的不同。當(dāng)多個(gè)TCP數(shù)據(jù)流都產(chǎn)生包丟失時(shí),所有的數(shù)據(jù)流都要減少自身的發(fā)送速率。根據(jù)路由器擁塞減輕的程度,多個(gè)TCP數(shù)據(jù)流將會(huì)逐漸恢復(fù)自身的發(fā)送速率。這會(huì)降低路由器及相關(guān)鏈路的使用率,直到所有的TCP數(shù)據(jù)流恢復(fù)到以擁塞之前的速率進(jìn)行發(fā)送。路由器從擁塞狀態(tài)又進(jìn)入到了低使用狀態(tài)。

這種擁塞后因?yàn)橹貍骱偷玩溌肥褂枚鴰淼耐掏铝繂栴},是僅僅通過發(fā)送端來管理擁塞的結(jié)果。為了避免因?yàn)槁酚善鲹砣鴰淼膩G包而產(chǎn)生的一系列問題,TCP/IP的設(shè)計(jì)者們創(chuàng)建了一些用于主機(jī)和路由器的標(biāo)準(zhǔn)。這些標(biāo)準(zhǔn)描述了在IP路由器上進(jìn)行的主動(dòng)隊(duì)列管理算法(AQM)(RFC 2309),使得路由器能夠監(jiān)控轉(zhuǎn)發(fā)隊(duì)列的狀態(tài),以提供一個(gè)路由器向發(fā)送端報(bào)告發(fā)生擁塞的機(jī)制,讓發(fā)送端在路由器開始丟包前降低發(fā)送速率。這種路由器報(bào)告和主機(jī)響應(yīng)機(jī)制被稱為顯式擁塞通告(ECN)(RFC 3168)。

當(dāng)擁塞發(fā)生時(shí),發(fā)送主機(jī)必須仍然在降低它們的發(fā)送速率。然而,通過避免包的丟失,發(fā)送主機(jī)無需進(jìn)入重傳過程,丟失敏感的數(shù)據(jù)包流也不會(huì)因?yàn)閾砣艿胶艽笥绊憽?/P>

顯式擁塞通告

IP和TCP使用包頭中的未使用字段來支持ECN。

在網(wǎng)絡(luò)層(IP),一個(gè)發(fā)送主機(jī)必須能夠表明自身可以進(jìn)行ECN,路由器在轉(zhuǎn)發(fā)時(shí)必須能夠表明它正在經(jīng)歷擁塞。

在傳輸層(TCP),TCP端必須對(duì)對(duì)方表明自身是可以進(jìn)行ECN操作的。接收端必須能夠通知發(fā)送端它收到了一個(gè)來自路由器的擁塞通告。發(fā)送端必須能夠通知接收端它受到了來自接收端的通告并且已經(jīng)降低了發(fā)送速率。

圖1

IP包頭中的8位的服務(wù)類型域(TOS)原先在RFC791中被定義為表明包的發(fā)送優(yōu)先級(jí),時(shí)延,吞吐量,可靠性和消耗等特征。在RFC2474中被重新定義為包含一個(gè)6位的區(qū)分服務(wù)碼點(diǎn)(DSCP)和兩個(gè)未用的位。DSCP值表明一個(gè)在路由器上配置的和隊(duì)列相關(guān)聯(lián)的發(fā)送優(yōu)先級(jí)。IP對(duì)ECN的支持使用到了TOS域中剩下的這兩位。如圖1所示。

在RFC2474中TOS域未使用的兩位在RFC3168中被定義為ECN域,包含如下值:

00:發(fā)送主機(jī)不支持ECN   

01或者10:發(fā)送主機(jī)支持ECN   

11:路由器正在經(jīng)歷擁塞  

一個(gè)支持ECN的主機(jī)發(fā)送數(shù)據(jù)包時(shí)將ECN設(shè)置為01或者10。對(duì)于支持ECN的主機(jī)發(fā)送的包,如果路徑上的路由器支持ECN并且經(jīng)歷擁塞,它將ECN域設(shè)置為11。如果該數(shù)值已經(jīng)被設(shè)置為11,那么下游路徑上的路由器不會(huì)修改該值。#p#

TCP對(duì)ECN的支持

當(dāng)一個(gè)IP包的ECN域被路由器設(shè)置為11時(shí),接收端而非發(fā)送端被通知路徑上發(fā)生了擁塞。ECN使用TCP頭部來告知發(fā)送端網(wǎng)絡(luò)正在經(jīng)歷擁塞,并且告知接收端發(fā)送段已經(jīng)受到了接收端發(fā)來的擁塞通告,已經(jīng)降低了發(fā)送速率。

圖2

TCP對(duì)ECN的支持使用TCP中預(yù)先定義的保留位。ECN定義兩個(gè)新的標(biāo)志,如圖2所示:

ECE:ECN響應(yīng)標(biāo)志被用來在TCP3次握手時(shí)表明一個(gè)TCP端是具備ECN功能的,并且表明接收到的TCP包的IP頭部的ECN被設(shè)置為11。更多信息請(qǐng)參考RFC793。   

CWR:擁塞窗口減少標(biāo)志被發(fā)送主機(jī)設(shè)置,用來表明它接收到了設(shè)置ECE標(biāo)志的TCP包。擁塞窗口是被TCP維護(hù)的一個(gè)內(nèi)部變量,用來管理發(fā)送窗口大小?! ?/P>

當(dāng)兩個(gè)支持ECN的TCP端進(jìn)行TCP連接時(shí),它們交換SYN,SYN-ACK和ACK包。對(duì)于支持ECN的TCP端來說,SYN包的ECE和CWR標(biāo)志都被設(shè)置了。SYN-ACK只設(shè)置ECE標(biāo)志。

一個(gè)支持ECN的TCP主機(jī)在支持ECN的TCP連接上發(fā)送設(shè)置了IP頭部為10或者01的TCP包。支持ECN的路由器在經(jīng)歷擁塞時(shí)設(shè)置IP頭部的ECN域?yàn)?1。當(dāng)一個(gè)TCP接收端發(fā)送針對(duì)收到的一個(gè)設(shè)置ECN位為11的TCP包的響應(yīng)時(shí),它設(shè)置TCP包頭中的ECE,并且在接下來的ACK中也做同樣設(shè)置。

當(dāng)發(fā)送主機(jī)接收到設(shè)置了ECE標(biāo)志的ACK時(shí),它就像感知到包丟失一樣,開始減少發(fā)送窗口,運(yùn)行慢啟動(dòng)過程和擁塞避免算法。在下一個(gè)數(shù)據(jù)包中,發(fā)送者設(shè)置CWR標(biāo)志。在接收到新的設(shè)置CWR標(biāo)志的包時(shí),接受者停止在接下來的ACK中設(shè)置ECE標(biāo)志。

ECN例子

點(diǎn)擊放大此圖片

圖3

圖3展示了一個(gè)在支持ECN的TCP端節(jié)點(diǎn)之間的一個(gè)TCP連接的例子,它們之間的一個(gè)支持ECN的路由器正在經(jīng)歷擁塞。

在這個(gè)例子中,TCP端A發(fā)送數(shù)據(jù)給TCP端B。TCP端A一次性發(fā)送5個(gè)包。包2通過一個(gè)擁塞的支持ECN的路由器轉(zhuǎn)發(fā),將IP包頭的ECN位設(shè)置為11。當(dāng)TCP端B接收到這個(gè)包,它發(fā)送設(shè)置了ECE標(biāo)志的ACK。當(dāng)TCP端A接收到***個(gè)設(shè)置了ECE的ACK以后,它降低發(fā)送速率,并且在發(fā)送下一個(gè)包(6)時(shí)設(shè)置其CWR標(biāo)志。通過接收包6,TCP端將不對(duì)接下來的ACK包設(shè)置ECE標(biāo)志。詳情請(qǐng)參考RFC 3168。

Windows對(duì)ECN的支持

Windows Vista支持ECN但是缺省是關(guān)閉的。你可以通過netsh interface tcp set global ecncapability=enabled來打開支持。因?yàn)镋CN使用到了IP和TCP包頭中以前未使用或者保留的位,中間的網(wǎng)絡(luò)設(shè)備如路由器和防火墻將會(huì)靜默地丟棄ECN域設(shè)置為非0值的包。為了防止出現(xiàn)這種情況,請(qǐng)對(duì)你的網(wǎng)絡(luò)設(shè)備進(jìn)行適當(dāng)?shù)呐渲煤蜕?jí)以支持ECN。

【編輯推薦】

  1. 單網(wǎng)卡工作站可作TCP/IP網(wǎng)絡(luò)路由器
  2. TCP/IP協(xié)議詳解卷系列筆記之IP路由
責(zé)任編輯:許鳳麗 來源: IT專家網(wǎng)
相關(guān)推薦

2011-08-23 14:10:07

TCPECN路由器

2020-02-10 20:54:48

擁塞流量控制

2019-04-16 11:02:10

TCPIPLinux

2014-06-26 09:24:04

TCP

2023-12-26 01:07:03

TCP擁塞控制

2019-04-08 08:44:10

TCPIP網(wǎng)絡(luò)協(xié)議

2009-07-27 14:03:54

網(wǎng)絡(luò)擁塞網(wǎng)速變慢

2009-04-09 10:11:00

TCPIP通訊

2010-09-09 16:28:19

2019-09-18 20:07:06

AndroidTCP協(xié)議

2014-10-13 09:22:39

TCPIPwireshark

2015-10-21 10:24:05

TCPIP網(wǎng)絡(luò)協(xié)議

2010-09-09 16:21:32

TCP IP網(wǎng)絡(luò)協(xié)議

2025-01-24 08:42:31

以太網(wǎng)無損網(wǎng)絡(luò)網(wǎng)絡(luò)

2023-06-01 07:55:56

TCP/IP網(wǎng)絡(luò)模型

2013-10-28 09:24:34

SDN軟件定義網(wǎng)絡(luò)TCP

2020-07-23 15:01:15

TCP流量擁塞

2021-10-11 14:27:06

TCP擁塞控制

2012-12-03 11:50:44

TCPIP網(wǎng)絡(luò)流量

2019-11-26 08:24:13

TCP擁塞控制網(wǎng)絡(luò)協(xié)議
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)