專利名稱:一種基于隨機早期檢測的逐節(jié)擁塞控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于隨機早期檢測(Random Early Detection)的逐節(jié)擁塞控制方法,屬于計算機網(wǎng)絡(luò)領(lǐng)域。
現(xiàn)在的互連網(wǎng)(Internet)已由以往的單一數(shù)據(jù)傳送網(wǎng)發(fā)展成傳送數(shù)據(jù)、語音、視頻等多媒體信息的綜合業(yè)務(wù)網(wǎng)。隨著網(wǎng)絡(luò)應(yīng)用和用戶的不斷增加,Internet經(jīng)常發(fā)生擁塞,造成了數(shù)據(jù)傳輸延時、抖動等服務(wù)質(zhì)量的下降,使帶寬、緩存等網(wǎng)絡(luò)資源利用率降低,在極端的情況下,可導(dǎo)致整個網(wǎng)絡(luò)崩潰。
目前在Internet上的擁塞控制方法是以TCP為核心的基于窗口技術(shù)的端到端控制。這種方法主要是以丟包作為擁塞發(fā)生的信號,當(dāng)發(fā)送端確認(rèn)已發(fā)出的數(shù)據(jù)包丟失后,通過減少擁塞窗口來降低發(fā)送速度,緩解擁塞。但是,由于Internet規(guī)模的不斷增長,從網(wǎng)絡(luò)節(jié)點發(fā)生擁塞(丟包)到發(fā)送端降低流量需要較長的響應(yīng)周期,而此時發(fā)送端仍在高速度發(fā)送數(shù)據(jù),這會造成更大規(guī)模的擁塞,因此不能完全依靠所有的發(fā)送端控制擁塞。
近幾年來出現(xiàn)的另一種方法是逐節(jié)擁塞控制。它通過利用每條連接的一些狀態(tài)信息(如緩沖區(qū)的大小和發(fā)送速度等)在數(shù)據(jù)流經(jīng)過的每個網(wǎng)絡(luò)節(jié)點上實施擁塞控制。但這種方法要在網(wǎng)絡(luò)節(jié)點中保存每條連接的一些狀態(tài)信息,當(dāng)連接數(shù)量增長時,存儲容量和處理時間也隨之增加,因而該方法在Internet主干網(wǎng)上沒有很好的可擴展性。
本發(fā)明的主要目的在于提出一種基于隨機早期檢測的逐節(jié)擁塞控制方法,各網(wǎng)絡(luò)節(jié)點用改進(jìn)的隨機早期檢測算法檢測擁塞狀態(tài),在擁塞發(fā)生之前向鄰近的上游節(jié)點發(fā)送以流量控制信息協(xié)議(Flow Control Message Protocol,簡稱為FCMP)規(guī)定格式的流量控制信息。
本發(fā)明的又一目的在于提出一種基于隨機早期檢測的逐節(jié)擁塞控制方法,當(dāng)節(jié)點收到流量控制信息時,實施流量控制,避免和減輕擁塞,克服現(xiàn)有網(wǎng)絡(luò)擁塞控制的缺陷;各網(wǎng)絡(luò)節(jié)點不用保存每條連接的狀態(tài)信息,使其具有良好的可擴展性。
本發(fā)明的目的是通過以下的技術(shù)方案實現(xiàn)的一種基于隨機早期檢測的逐節(jié)擁塞控制方法,其包括流量控制信息協(xié)議、基于流量控制信息協(xié)議的擁塞檢測方法、路由器流量控制方法和主機流量控制方法。其中流量控制信息協(xié)議為一種報文格式,該報文在TCP/IP協(xié)議族的IP層和數(shù)據(jù)鏈路層之間傳遞,且用于在相鄰路由器之間以及路由器與主機之間交換擁塞狀態(tài)信息;該報文格式包括如下的信息域用于驗證發(fā)送方和接收方的流量控制信息協(xié)議報文格式一致性的版本號域、流量控制信息協(xié)議報文長度域、流量控制信息協(xié)議報文類型域、用于表示路由器類型的代碼域、源IP地址域、目的IP地址域、源端口號域、目的端口號域、用于保證流量控制信息協(xié)議報文數(shù)據(jù)的完整性的校驗域和填充域。上述的流量控制信息協(xié)議報文類型包括恢復(fù)流量報文類型和降低流量報文類型,路由器類型包括與發(fā)送端主機或接收端主機相連接的邊緣路由器及僅與路由器相連接的內(nèi)部路由器。
擁塞檢測是在數(shù)據(jù)包隊列到達(dá)本節(jié)點時開始進(jìn)行的;其方法包括如下步驟1、將數(shù)據(jù)包隊列的平均長度與預(yù)定義的隊列平均長度的上限和下限作比較;2、當(dāng)數(shù)據(jù)包隊列的平均長度在上、下限之間,則認(rèn)為有可能發(fā)生擁塞;計算標(biāo)注概率,并根據(jù)該概率決定是否對將要入隊的數(shù)據(jù)包做標(biāo)記;否則轉(zhuǎn)步驟4;3、路由器向發(fā)送該已標(biāo)記的數(shù)據(jù)包的上游節(jié)點發(fā)送“降低流量”流量控制信息協(xié)議報文;4、當(dāng)數(shù)據(jù)包隊列的平均長度小于下限,不對數(shù)據(jù)包作標(biāo)記;否則將該包丟棄;
5、如果在此之前,發(fā)送過“降低流量”的流量控制信息協(xié)議報文,再發(fā)送“恢復(fù)流量”流量控制信息協(xié)議報文。
當(dāng)該向上游節(jié)點發(fā)送流量控制信息協(xié)議報文的路由器為邊緣路由器時,該路由器只向其上游節(jié)點發(fā)送“降低流量”流量控制信息協(xié)議報文。
上述平均隊列長度的計算依據(jù)如下公式若隊列不空(q>0),則 avg←(1-Wq)×avg+Wq×q否則 m←f(time-q_time)avg←(1-Wq)m×avg其中avg=平均隊列長度;time=當(dāng)前時間;q_time=隊列空閑時間的起始點;Wq=隊列的權(quán)重;q=隊列的實際長度;f(t)=時間t的一個線性函數(shù);上述概率的計算依據(jù)如下公式和步驟將count加1;Pb←Pmax(avg-THmin)/(THmax-THmin)Pa←Pb/(1-count×Pb)其中count=上一個“降低流量”流量控制信息協(xié)議報文發(fā)送后數(shù)據(jù)包的分組數(shù)THmin=隊列長度的下限;THmax=隊列長度的上限;Pb=計算中間值;Pmax=Pb的最大值;Pa=當(dāng)前數(shù)據(jù)包分組進(jìn)行標(biāo)注的概率。
路由器流量控制方法包括如下步驟11、路由器通過“漏桶算法”控制流量;12、當(dāng)收到“降低流量”流量控制信息協(xié)議報文時,將漏桶容量減少一半;
13、每隔一設(shè)定的時間間隔,將漏桶容量加1個長度的數(shù)據(jù)包,但最大值不超過漏桶的最初容量;14、當(dāng)收到“恢復(fù)流量”流量控制信息協(xié)議報文時,立即恢復(fù)漏桶的最初容量。
其中步驟11所述的“漏桶算法“為如下步驟111以一定的速率產(chǎn)生令牌,令牌桶滿時,終止令牌的產(chǎn)生;112當(dāng)數(shù)據(jù)包到達(dá)時,如果令牌桶中有令牌,則取出一個令牌后發(fā)送數(shù)據(jù)包;否則數(shù)據(jù)包放在緩沖區(qū)中等待令牌的出現(xiàn);113當(dāng)緩沖區(qū)滿時,丟棄到達(dá)的數(shù)據(jù)包。
主機流量控制方法包括如下步驟21、主機根據(jù)由邊緣路由器發(fā)來的流量控制信息協(xié)議報文中各域的信息查找對應(yīng)TCP連接的套接字(Socket);22、找到對應(yīng)的Socket后,TCP通過調(diào)用支持流量控制信息協(xié)議的擁塞控制過程來控制流量;23、如果TCP在上一往返時間內(nèi)沒有降低流量,流量控制的請求將在本往返時間內(nèi)被響應(yīng)一次;24、如果該流量控制請求是丟包引起的,TCP調(diào)用原來的擁塞控制過程;25、如果收到“降低流量”流量控制信息協(xié)議報文,TCP將擁塞窗口和慢啟動臨界值減半。
上述步驟中所述的原來的擁塞控制過程是指以TCP為核心的基于窗口技術(shù)的端到端的控制;所述的往返時間為一個數(shù)據(jù)包從一臺主機出發(fā)到達(dá)另一臺主機然后返回所用的時間之和;擁塞窗口為TCP在啟動階段使用的或在擁塞時期為減小流量而使用的窗口;慢啟動臨界值為在慢啟動階段,擁塞窗口的增加方式由以指數(shù)增加方式改變?yōu)橐跃€性增加方式時的擁塞窗口數(shù)量。
本發(fā)明在數(shù)據(jù)包隊列到達(dá)本節(jié)點時就開始進(jìn)行早期的擁塞檢測,利用基于隨機早期檢測的逐節(jié)擁塞控制方法和流量控制信息協(xié)議報文的傳遞,采用路由器流量控制和主機流量控制,使得在網(wǎng)絡(luò)發(fā)生擁塞之前就獲得了流量控制;由于擁塞控制是在相鄰的節(jié)點之間進(jìn)行,其加快了擁塞控制的響應(yīng)速度,使丟包率為零,數(shù)據(jù)延時縮短,延時的抖動減小;且本發(fā)明的各節(jié)點不需要保存連接的狀態(tài)信息,具有良好的可擴展性。
以下結(jié)合附圖及一較佳實施例對本發(fā)明作進(jìn)一步的詳細(xì)說明
圖1為本發(fā)明一實施例的擁塞控制流程示意圖。
圖2為本發(fā)明一實施例的流量控制信息協(xié)議報文格式。
圖3為本發(fā)明一實施例以路由器為發(fā)送端的擁塞檢測控制流程。
圖4為本發(fā)明一實施例以路由器為接收端的接收端擁塞控制流程。
圖5為本發(fā)明一實施例以主機為接收端的接收端擁塞控制流程。
如圖1所示的本發(fā)明擁塞控制流程,其包括一發(fā)送端主機1、一接受端主機4及其數(shù)量不少于兩個的路由器2、3。數(shù)據(jù)包由發(fā)送端1發(fā)送,經(jīng)過若干路由器2、3的傳送后,由接收端4接收。在路由器2或3之中,各有由該路由器2或3的上一節(jié)點發(fā)送來的數(shù)據(jù)包組成的相應(yīng)的數(shù)據(jù)包隊列24或34。在發(fā)送端1和接收端4中各有其原有的TCP擁塞控制程序11及41;而在路由器2或3之中增設(shè)有與之相應(yīng)的流量控制信息協(xié)議報文協(xié)議21或31、擁塞檢測程序22或32、流量控制程序23或33。
如圖2所示流量控制信息協(xié)議報文包括如下的信息域版本號域,其用于驗證發(fā)送方和接收方的報文格式是否一致;報文長度域,其指出該的報文長度;報文類型域,其指出流量控制信息協(xié)議報文的類型為“恢復(fù)流量”或“降低流量”;代碼域,其指出當(dāng)前節(jié)點的上一節(jié)點為主機或路由器;源IP地址,其指出發(fā)送端主機的IP地址;目的IP地址,其指出接收端主機的IP地址;源端口號,其指出TCP連接的發(fā)送端主機的端口號;目的端口號,其指出TCP連接的接收端主機的端口號;校驗域,其用于存放保證報文數(shù)據(jù)的完整性的校驗信息;填充域,其由該報文實際長度與規(guī)定的長度值之間的差值構(gòu)成,用“0”填充。
如圖1及圖3所示當(dāng)上游節(jié)點發(fā)送來的數(shù)據(jù)包到達(dá)路由器2或3時,其擁塞檢測程序22或32將數(shù)據(jù)包隊列24或34的平均長度與該隊列24或34的平均長度的上限和下限作比較。當(dāng)該平均長度在上、下限之間時,即認(rèn)為此時有可能發(fā)生擁塞,計算概率Pa,并根據(jù)該概率Pa對該數(shù)據(jù)包做標(biāo)記。對已標(biāo)記的數(shù)據(jù)包,路由器2或3向發(fā)送該數(shù)據(jù)包的上游節(jié)點發(fā)送“降低流量”流量控制信息協(xié)議報文;當(dāng)平均長度小于下限時,不對該數(shù)據(jù)包作標(biāo)記,如果在此之前,已發(fā)送過“降低流量”的流量控制信息協(xié)議報文,再發(fā)送“恢復(fù)流量”流量控制信息協(xié)議報文;將該數(shù)據(jù)包加入路由器2或3的數(shù)據(jù)包隊列24或34之中;當(dāng)平均長度大于上限時,丟棄該數(shù)據(jù)包。
當(dāng)路由器2向其上游節(jié)點發(fā)送流量控制信息協(xié)議報文時,如果該路由器2為邊緣路由器,則路由器2只發(fā)送“降低流量”流量控制信息協(xié)議報文。
上述平均隊列長度的計算依據(jù)如下公式若隊列不空(q>0),則avg←(1-Wq)×avg+Wq×q否則m←f(time-q_time)avg←(1-Wq)m×avg其中avg=平均隊列長度;time=當(dāng)前時間;q_time=隊列空閑時間的起始點;Wq=隊列的權(quán)重;q=隊列的實際長度;f(t)=時間t的一個線性函數(shù);上述的標(biāo)注概率的計算依據(jù)如下公式和步驟將count加1;Pb←Pmax(avg-THmin)/(THmax-THmin)Pa←Pb/(1-count×Pb)其中count=上一個“降低流量”流量控制信息協(xié)議報文發(fā)送后數(shù)據(jù)包的分組數(shù)THmin=隊列長度的下限;THmax=隊列長度的上限;
Pb=計算中間值;Pmax=Pb的最大值;Pa=當(dāng)前數(shù)據(jù)包分組進(jìn)行標(biāo)注的概率。
如圖1及圖4所示路由器2或3通過“漏桶算法”控制本節(jié)點的流量;當(dāng)路由器2或3收到“降低流量”流量控制信息協(xié)議報文時,其將漏桶容量減少一半,然后每隔一定的時間間隔,將漏桶容量加1個長度的數(shù)據(jù)包,但最大值不超過該漏桶的最初容量;當(dāng)路由器2或3收到“恢復(fù)流量”流量控制信息協(xié)議報文時,立即恢復(fù)該漏桶的最初容量。
所述的“漏桶算法”為本節(jié)點路由器以一定的速率產(chǎn)生令牌,當(dāng)令牌桶滿時路由器終止產(chǎn)生令牌;當(dāng)一數(shù)據(jù)包到達(dá)本節(jié)點路由器時,如果令牌桶中有令牌,則取出一個令牌后發(fā)送該數(shù)據(jù)包;否則將該數(shù)據(jù)包放在路由器的緩沖區(qū)中等待令牌的出現(xiàn);當(dāng)本節(jié)點路由器的緩沖區(qū)滿時,則丟棄到達(dá)本節(jié)點路由器的數(shù)據(jù)包。
如圖1及圖5所示發(fā)送端1的主機根據(jù)由邊緣路由器2發(fā)送來的流量控制信息協(xié)議報文中各域的信息查找對應(yīng)TCP連接的套接字(Socket);如果找到對應(yīng)的Socket,并且,如果TCP在上一往返時間內(nèi)沒有降低流量,流量控制的請求將在本往返時間內(nèi)被響應(yīng)一次;如果該流量控制請求是由丟包引起的,TCP則調(diào)用原來的擁塞控制過程;否則,TCP將擁塞窗口和慢啟動臨界值減半。如果沒有找到對應(yīng)的Socket,則報錯,結(jié)束。
權(quán)利要求
1.一種基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于它包括流量控制信息協(xié)議、基于該協(xié)議的擁塞檢測方法、利用該協(xié)議的路由器流量控制方法和主機流量控制方法。
2.如權(quán)利要求1所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于該流量控制信息協(xié)議為一位于TCP/IP協(xié)議族的IP層和數(shù)據(jù)鏈路層之間、用于相鄰路由器之間及路由器與主機之間交換擁塞狀態(tài)信息的流量控制信息協(xié)議報文格式。
3.如權(quán)利要求2所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于該流量控制信息協(xié)議報文格式設(shè)有用于驗證發(fā)送方和接收方的流量控制信息協(xié)議報文格式一致性的版本號域、流量控制信息協(xié)議報文長度域、流量控制信息協(xié)議報文類型域、用于表示路由器類型的代碼域、源IP地址域、目的IP地址域、源端口號域、目的端口號域、用于保證流量控制信息協(xié)議報文數(shù)據(jù)的完整性的校驗域及填充域。
4.如權(quán)利要求3所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于流量控制信息協(xié)議報文類型包括恢復(fù)流量報文類型及降低流量報文類型。
5.如權(quán)利要求3所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于路由器類型包括與發(fā)送端主機或接收端主機相連接的邊緣路由器及僅與路由器相連接的內(nèi)部路由器。
6.如權(quán)利要求1所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于所述的基于流量控制信息協(xié)議的擁塞檢測方法包括如下步驟a、將數(shù)據(jù)包隊列的平均長度與預(yù)定義的隊列平均長度的上限和下限作比較;b、當(dāng)數(shù)據(jù)包隊列的平均長度在上、下限之間,則認(rèn)為有可能發(fā)生擁塞;計算標(biāo)記的概率,并根據(jù)該概率決定是否對將要入隊的數(shù)據(jù)包做標(biāo)記;否則轉(zhuǎn)步驟d;c、路由器向發(fā)送該已標(biāo)記的數(shù)據(jù)包的上游節(jié)點發(fā)送“降低流量”流量控制信息協(xié)議報文;d、當(dāng)數(shù)據(jù)包隊列的平均長度小于下限,不對數(shù)據(jù)包作標(biāo)記;否則將該包丟棄;e、如果在此之前,發(fā)送過“降低流量”的流量控制信息協(xié)議報文,再發(fā)送“恢復(fù)流量”流量控制信息協(xié)議報文。
7.如權(quán)利要求6所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于所述的擁塞檢測是在數(shù)據(jù)包隊列到達(dá)本節(jié)點時開始的。
8.如權(quán)利要求6所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于所述的平均隊列長度依照如下公式計算當(dāng)隊列不空時(q>0),則avg←(1-Wq)×avg+Wq×q;否則 m←f(time-q_time);avg←(1-Wq)m×avg;其中avg=平均隊列長度;time=當(dāng)前時間;q_time=隊列空閑時間的起始點;Wq=隊列的權(quán)重;q=隊列的實際長度;f(t)=時間t的一個線性函數(shù);
9.如權(quán)利要求6所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于所述的標(biāo)注概率依照如下公式和步驟計算將count加1;Pb←Pmax(avg-THmin)/(THmax-THmin)Pa←Pb/(1-count×Pb)其中count=上一個“降低流量”流量控制信息協(xié)議報文發(fā)送后數(shù)據(jù)包的分組數(shù);THmin=隊列長度的下限;THmax=隊列長度的上限;Pb=計算中間值;Pmax=Pb的最大值;Pa=當(dāng)前數(shù)據(jù)包分組進(jìn)行標(biāo)注的概率。
10.如權(quán)利要求1所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于所述的路由器流量控制方法包括如下步驟a、路由器通過“漏桶算法”控制流量;b、當(dāng)收到“降低流量”流量控制信息協(xié)議報文時,將漏桶容量減半;c、每隔一設(shè)定的時間間隔將漏桶容量加1個長度的數(shù)據(jù)包,但最大值不超過漏桶的最初容量;d、當(dāng)收到“恢復(fù)流量”流量控制信息協(xié)議報文時,立即恢復(fù)漏桶的最初容量。
11.如權(quán)利要求10所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于所述的漏桶算法為如下步驟a、以一定的速率產(chǎn)生令牌,令牌桶滿時,終止令牌的產(chǎn)生;b、當(dāng)數(shù)據(jù)包到達(dá)時,如果令牌桶中有令牌,則取出一個令牌后發(fā)送數(shù)據(jù)包;否則數(shù)據(jù)包放在緩沖區(qū)中等待令牌的出現(xiàn);c、當(dāng)緩沖區(qū)滿時,丟棄到達(dá)的數(shù)據(jù)包。
12.如權(quán)利要求1所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于所述的主機流量控制方法包括如下步驟a、主機根據(jù)由邊緣路由器發(fā)來的流量控制信息協(xié)議報文中各域的信息查找對應(yīng)TCP連接的套接字;b、找到對應(yīng)的套接字后,TCP通過調(diào)用支持流量控制信息協(xié)議的擁塞控制過程來控制流量;c、如果TCP在上一往返時間內(nèi)沒有降低流量,流量控制的請求將在本往返時間內(nèi)被響應(yīng)一次;d、如果該流量控制請求是丟包引起的,TCP調(diào)用原來的擁塞控制過程;e、如果收到“降低流量”流量控制信息協(xié)議報文,TCP將擁塞窗口和慢啟動臨界值減半。
13.如權(quán)利要求12所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于所述的往返時間為一個數(shù)據(jù)包從一臺主機出發(fā)到達(dá)另一臺主機然后返回所用的時間和。
14.如權(quán)利要求12所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于所述的原來的擁塞控制過程為以TCP為核心的基于窗口技術(shù)的端到端控制方式。
15.如權(quán)利要求12所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于所述的擁塞窗口為TCP在啟動階段使用的或在擁塞時期為減小流量而使用的窗口。
16.如權(quán)利要求12所述的基于隨機早期檢測的逐節(jié)擁塞控制方法,其特征在于所述的慢啟動臨界值為在慢啟動階段,擁塞窗口的增加方式由以指數(shù)增加方式改變?yōu)橐跃€性增加方式時的擁塞窗口數(shù)量。
全文摘要
一種基于隨機早期檢測的逐節(jié)擁塞控制方法,其包括流量控制信息協(xié)議、基于該協(xié)議的擁塞檢測方法、路由器流量控制方法和主機流量控制方法;網(wǎng)絡(luò)各節(jié)點利用改進(jìn)的隨機早期檢測算法檢測擁塞狀態(tài),在擁塞發(fā)生之前向鄰近的上游節(jié)點發(fā)送流量控制信息;當(dāng)節(jié)點收到流量控制信息后,實施流量控制,避免和減輕了網(wǎng)絡(luò)數(shù)據(jù)的擁塞,克服了現(xiàn)有網(wǎng)絡(luò)擁塞控制的缺陷;同時,由于各網(wǎng)絡(luò)節(jié)點不用保存每條連接的狀態(tài)信息,使其具有良好的可擴展性。
文檔編號H04L12/26GK1353367SQ0013036
公開日2002年6月12日 申請日期2000年11月2日 優(yōu)先權(quán)日2000年11月2日
發(fā)明者高文, 龐斌 申請人:北京算通數(shù)字技術(shù)研究中心有限公司