專利名稱:一種網絡流量控制系統(tǒng)及方法
技術領域:
本發(fā)明涉及計算機網絡,尤其涉及網絡流控控制。
背景技術:
隨著因特網業(yè)務的快速發(fā)展,網絡流量急劇增加,網絡流量控制技術被廣泛關注。 特別是P2P(Peer to Peer,點對點)業(yè)務高速增長后,P2P的應用使得網絡連接的數量大大 增加,并使網絡下載流量劇增,從而導致本地網絡帶寬被大量消耗,甚至引起網絡堵塞。網絡流量控制是為了防止互聯(lián)網擁擠而采取的一種措施,作用是保證互聯(lián)網能夠 正常工作?,F有的網絡流量控制技術主要有兩種,一種是TCP窗口整形技術(又稱TCP窗 口滑動技術),另一種是基于隊列的流量控制技術。TCP窗口整形技術是通過對網絡中每個TCP連接的流量進行監(jiān)聽、跟蹤和計算,動 態(tài)的調整接收方接收窗口的大小,以控制發(fā)送方速率,從而達到避免網絡擁塞的目的。通過 TCP窗口整形處理后的信流變得較為平滑,不產生嚴重突發(fā)以影響其他信流,使廣域網資源 得以充分利用。TCP窗口整形技術不采用隊列方式,大大減少了信息包的丟失,降低了數據包的重 傳率。利用TCP窗口整形技術,網絡中所有機器的發(fā)送量都受到統(tǒng)一控制。如果從路由器 流過的流量被控制到與廣域網瓶頸帶寬相一致,那么路由器上再也不會有大量的隊列,這 就減輕了路由器的負擔,使信息包通過路由器的時間大大減少。然而,TCP窗口整形技術由于采用TCP速率控制方式,因此無法支持UDP流量,對 UDP無效,不適用于UDP流量的QoS,只適用于TCP信息傳輸。此外,TCP窗口整形技術對鏈 接帶寬利用不充分,如果保守地設置窗口大小,那么鏈路帶寬就會存在未使用的空間,無法 使網絡資源鏈接得到充分利用。此外,TCP窗口整形流量控制技術對大流量控制效果很差?;陉犃械木W絡流量控制方法對TCP、UDP均有效,既能夠支持TCP流量又能支持 UDP流量,因此既適用于TCP信息傳輸也適用于UDP信息傳輸。并且,基于隊列的流量控制 的精度相對于TCP窗口整形技術來說,流控精度更高。然而由于隊列流控通過丟包和增加Queuing Delay (隊列延遲)來抑制TCP源端 發(fā)送,因此會導致源端的重傳和鏈路時延的增加,從而使網絡傳輸質量變差,并且在大流量 的情況下會導致系統(tǒng)壓力過大由此可見,單單采用傳統(tǒng)的TCP窗口整流技術或僅采用基于隊列的流控技術都無 法得到較好的流控效果,無法滿足日益增長的流控目標需求。
發(fā)明內容
本發(fā)明提供了一種能解決以上問題的網絡流量控制系統(tǒng)及方法。在第一方面,本發(fā)明提供了一種網絡流量控制系統(tǒng),該系統(tǒng)包括UDP包過濾模塊、 流控參數更新模塊和TCP窗口整形模塊。該流控參數更新模塊用于接收流入該系統(tǒng)的數據包,并根據該數據包流速及系統(tǒng)
4設定的流控目標,計算該系統(tǒng)的流控狀態(tài)、UDP包過濾比例、TCP窗口整形比例,且該流控狀 態(tài)包括需要流控和不需要流控兩種狀態(tài)。該UDP包過濾模塊用于接收所述流控狀態(tài)、UDP包 過濾比例,且在該流控狀態(tài)為需要流控時,根據該UDP包過濾比例,對流入該系統(tǒng)的UDP數 據包進行過濾。該TCP窗口整形模塊用于接收經該UDP包過濾模塊過濾后的數據包,并接 收流控狀態(tài)和TCP窗口整形比例,且在該流控狀態(tài)為需要流控時,根據該數據包的TCP窗口 大小及所述TCP窗口整形比例,對該過濾UDP包后的數據包進行TCP窗口整形。在第二方面,本發(fā)明提供了一種網絡流量控制方法。首先接收流入系統(tǒng)的數據包, 并根據該數據包的流速及系統(tǒng)設定的流控目標,計算系統(tǒng)的流控狀態(tài)及UDP包過濾比例、 TCP窗口整形比例,且該流控狀態(tài)包括需要流控和不需要流控兩種狀態(tài)。然后在流控狀態(tài)為 需要流控時,根據該UDP包過濾比例,對該流入系統(tǒng)的UDP數據包進行過濾。最后根據該數 據包的TCP窗口大小及所述TCP窗口整形比例,對該過濾UDP包后的數據包進行TCP窗口 整形。本發(fā)明相對于傳統(tǒng)TCP窗口整形技術來說,能夠控制TCP、UDP混合流量,使流控更 加全面準確,并且能夠保證連接之間的公平性,還能夠通過負反饋快速收斂到流控目標。本發(fā)明相對于傳統(tǒng)隊列流控技術來說,能夠有效的抑制TCP發(fā)送方的發(fā)送速率, 同時還能夠在大量新并發(fā)連接持續(xù)產生的情況下快速抑制TCP發(fā)送速率,并且能夠減少 TCP發(fā)送方的重傳,大大減輕了設備的壓力。此外,由于本發(fā)明的映射表可配置,因此流控方 式更加靈活,且算法開銷更小。綜上所述,本發(fā)明的流控方法克服了傳統(tǒng)TCP窗口整形流控以及傳統(tǒng)基于隊列流 控的不足,保證了 TCP、UDP流量在整個通道內的公平。
下面將參照附圖對本發(fā)明的具體實施方案進行更詳細的說明,在附圖中圖1是本發(fā)明一個實施例的網絡流量控制系統(tǒng)示意圖;圖2是本發(fā)明一個實施例的圖1中流控參數更新模塊結構示意圖;圖3是本發(fā)明一個實施例的圖1中TCP窗口整形模塊結構示意圖。
具體實施例方式圖1是本發(fā)明一個實施例的網絡流量控制系統(tǒng)示意圖,該流控系統(tǒng)包括流控配置 模塊120、流控參數更新模塊130、UDP包過濾模塊140、TCP窗口整形模塊150、隊列流控模 塊 160。流控配置模塊120用于配置流控目標,并將該流控目標發(fā)送至流控參數更新模塊 130和列隊流控模塊160,且該流控目標是用戶期望得到的網絡流速。流控參數更新模塊130用于定期接收流入通道內的數據包并接收數據包流速,以 及接收來自流控配置模塊120的流控目標,根據該數據包流速及流控目標判定系統(tǒng)當前的 流控狀態(tài),并更新流控參數,該流控參數包括UDP包過濾比例和TCP窗口整形比例,然后再 將該UDP包過濾比例及當前流控狀態(tài)發(fā)送至UDP包過濾模塊140,將當前流控狀態(tài)及TCP窗 口整形比例發(fā)送至TCP窗口整形模塊150。其中,所述流控狀態(tài)包括需要流控和不需要流控兩種狀態(tài)。此外,多長時間判定一次系統(tǒng)是否需要流控,即流控周期的判定,通過流控參數更新模塊130來配置。更加詳細的流控參數更新模塊130的工作原理,以及如何判定流控狀態(tài)、如何計 算UDP包過濾比例、TCP窗口整形比例,將通過圖2及其相應說明部分得到詳盡闡述。UDP包過濾模塊140用于接收流入通道內的數據包,并定期(一個流控周期)接收 來自流控參數更新模塊130的流控狀態(tài)、UDP包過濾比例;且在其接收到的流控狀態(tài)為需要 流控時,根據該UDP包過濾比例,對其接收到的UDP數據包進行過濾,再將過濾后的數據包 及流速發(fā)送至流控參數更新模塊130,以便流控參數更新模塊130根據其接收到的當前流 控狀態(tài)、UDP包過濾后的流速調整下一流控周期的流控狀態(tài)及UDP包過濾比例。TCP窗口整形模塊150接收來自UDP包過濾模塊140的數據包,并定期(一個流控周期)接收來自流控參數更新模塊130的流控狀態(tài)和TCP窗口整形比 例;且在其接收到的流控狀態(tài)為需要流控時,根據該TCP窗口整形比例,采用TCP窗口整形 方法對過濾后的數據包進行窗口整形,具體TCP窗口整形方法及TCP窗口整形模塊150的 工作原理將通過圖3及其相應說明部分得到詳盡闡述。隊列流控模塊160接收來自流控配置模塊120的流控目標,并采用隊列流控方法 對經TCP窗口整形后的流量做進一步的整形處理,以便輸出的流量平緩。該隊列流控方法 可以采用任意一種隊列流控方法,如基于令牌桶的隊列流控方法。圖2是本發(fā)明一個實施例的圖1中流控參數更新模塊結構示意圖,該流控參數更 新模塊130包括流控狀態(tài)計算模塊131、UDP包過濾比例計算模塊132、窗口整形比例計算 模塊133。流控狀態(tài)計算模塊131接收來自流控配置模塊120的流控目標,并接收流入通道 內數據包的流速,然后計算當前流控狀態(tài)。一個例子中,在當前數據包流速大于流控目標時,流控狀態(tài)為需要流控,反之則不 需要流控。另一個例子中,在當前數據包流速超過流控目標一定數值時,流控狀態(tài)為需要流 控,反之則不需要流控。又一個例子,在當前數據包流速超過流控目標一定百分比(如超過 20% )時,流控狀態(tài)為需要流控,反之則不需要流控。較佳地,流控狀態(tài)的退出機制為,僅當數據包流速低于流控目標一定時間(如10 個計數周期)后,流控狀態(tài)才會被更新為不需要流控,以便使流速平穩(wěn)。需要說明的是,流控狀態(tài)的判斷方法有多種,本實施例僅以以上三種判別方法為 例加以闡述。UDP包過濾比例計算模塊132用于確定UDP包的過濾比例,并將得到的該UDP包過 濾比例發(fā)送至UDP包過濾模塊140。一個例子中,UDP包過濾比例計算模塊132接收流控目 標、當前數據包流速,然后計算該當前數據包流速偏離流控目標的比例,若該偏離比例超過 一定數值,則選取較大的UDP包過濾比例,反之則選取較小的UDP包過濾比例。另一個例子 中,配置UDP包的過濾比例,使其成為一個定值。需要說明的是,UDP包過濾比例的計算方法有多種,本實施例僅以以上兩種方法為 例加以闡述。窗口整形比例計算模塊133通過查表法來確定TCP窗口的縮放比例,以控制TCP 窗口的大?。黄渲?,所述表是一個可配置表,其表示過濾UDP包后的流速與流控目標之間的比值,與TCP窗口縮放比例之間的相互關系,如表1所示。表1中,R'表示過濾UDP包后 的流速,A表示流控目標,M表示TCP窗口縮放比例。需要說明的是,該表1僅是一個例子, 表1中的具體數值可配置,并且該可配置表需要被配置成具有負反饋功能,也就是說,當流 速超過流控目標較大時,TCP窗口縮小的比例較大;流速超過流控目標較小時,TCP窗口縮 小比例較?。欢斄魉俚陀诹骺啬繕溯^多時,需要增大TCP接收窗口,以防止流量被過度抑 制。由此可見,本實施例的查表法優(yōu)勢如下表配置靈活、達到通道流控目標的效率更高且 充分利用了網絡帶寬。
表 1圖3是本發(fā)明一個實施例的圖1中TCP窗口整形模塊結構示意圖,該TCP窗口整 形模塊150包括窗口比例更新模塊151、轉發(fā)包窗口更新模塊153。窗口比例更新模塊151接收來自UDP包過濾模塊140過濾后的數據包,在此稱該 數據包為轉發(fā)包(該轉發(fā)包包含該轉發(fā)包的累積TCP窗口整形比例),以及接收來自流控參 數更新模塊130的流控狀態(tài)和轉發(fā)包所屬通道在當前周期的TCP窗口整形比例,并根據該 轉發(fā)包中的信息獲得該轉發(fā)包所屬連接的累積TCP窗口整形比例,再根據該來自流控參數 更新模塊130的流控狀態(tài)、轉發(fā)包所屬通道在當前周期的TCP窗口整形比例以及根據該轉 發(fā)包的累積TCP窗口整形比例,更新該轉發(fā)包所屬連接在當前周期的TCP窗口整形比例。具體地,在流控狀態(tài)為需要流控時,該更新后的TCP窗口整形比例等于來自流控 參數更新模塊130的TCP窗口整形比例與所述累積TCP窗口整形比例之積。舉例如,該轉發(fā)包所屬連接在第一流控周期的TCP窗口整形比例為100%,若第二流控周期的TCP窗口整 形比例為80%,則經第二流控周期后的累積TCP窗口整形比例為100% *80%= 80%;若第 三流控周期的TCP窗口整形比例為70%,則經第三流控周期后的TCP窗口整形比例為80% *70 % = 56 % ;若第四流控周期的TCP窗口整形比例為50 %,則經第四周期后的TCP窗口整 形比例為56 % *50 % = 28 %,如此反復,從而得到更新后的TCP窗口整形比例(如當前周期 為第四周期,則更新后的TCP窗口整形比例為28% ),然后再將該更新后的TCP窗口整形比 例發(fā)送至轉發(fā)包窗口更新模塊153中。轉發(fā)包窗口更新模塊153接收來自窗口比例更新模塊151的更新后的TCP窗口整 形比例,以及接收來自UDP包過濾模塊140的當前轉發(fā)包,并根據該當前轉發(fā)包中信息得到 該轉發(fā)包的TCP窗口大小,然后根據該更新后的TCP窗口整形比例以及所述轉發(fā)包的TCP 窗口大小,計算該轉發(fā)包的最新TCP窗口大小并對其做更新,再將該已更新窗口的轉發(fā)包 發(fā)送至列隊流控模塊160。由于不同應用及操作系統(tǒng)的初始接收窗口大小不同,如wi ndows系統(tǒng)的初始接收 窗口為65535,Linux系統(tǒng)的初始接收窗口為8760,因此為了防止流量被過分抑制,現將該 更新后的窗口大小設置在一定范圍之內,舉例如,設置TCP窗口最大值為8760,TCP窗口最 小值為1460。具體地,轉發(fā)包窗口更新模塊153接收來自UDP包過濾模塊140的轉發(fā)包,然后判 斷該轉發(fā)包的TCP窗口大小是否超過系統(tǒng)設定的最大TCP窗口值(如8760),若超過,則將 該最大TCP窗口值(如8760)與來自窗口比例更新模塊151的更新后的TCP窗口整形比例 做乘積,再將該乘積值作為該轉發(fā)包的TCP窗口值;若未超過,則將該轉發(fā)包的TCP窗口大 小與該更新后的TCP窗口整形比例做乘積,然后再判定該乘積值是否低于系統(tǒng)設定的最小 TCP窗口值(如1460);若低于,則將該最小TCP窗口值(如1460)作為該轉發(fā)包的窗口值; 若未低于,則將所述乘積值作為該轉發(fā)包的TCP窗口值。顯而易見,在不偏離本發(fā)明的真實精神和范圍的前提下,在此描述的本發(fā)明可以 有許多變化。因此,所有對于本領域技術人員來說顯而易見的改變,都應包括在本權利要求 書所涵蓋的范圍之內。本發(fā)明所要求保護的范圍僅由所述的權利要求書進行限定。
權利要求
一種網絡流量控制系統(tǒng),其特征在于,包括UDP包過濾模塊、流控參數更新模塊、TCP窗口整形模塊;該流控參數更新模塊用于接收流入該系統(tǒng)的數據包,并根據該數據包流速及系統(tǒng)設定的流控目標,計算該系統(tǒng)的流控狀態(tài)、UDP包過濾比例、TCP窗口整形比例,且該流控狀態(tài)包括需要流控和不需要流控兩種狀態(tài);該UDP包過濾模塊用于接收所述流控狀態(tài)、UDP包過濾比例,且在該流控狀態(tài)為需要流控時,根據該UDP包過濾比例,對該流入系統(tǒng)的UDP數據包進行過濾;該TCP窗口整形模塊用于接收經該UDP包過濾模塊過濾后的數據包,并接收來自該流控參數更新模塊的流控狀態(tài)和TCP窗口整形比例,且在該流控狀態(tài)為需要流控時,根據該數據包的TCP窗口大小及所述TCP窗口整形比例,對該過濾UDP包后的數據包進行TCP窗口整形。
2.如權利要求1所述的一種網絡流量控制系統(tǒng),其特征在于,包括隊列流控模塊,該隊 列流控模塊用于接收流控目標,并基于該流控目標對由所述TCP窗口整形模塊進行窗口整 形后的數據包流速,進行隊列流控處理,以便輸出的流量平滑。
3.如權利要求1所述的一種網絡流量控制系統(tǒng),其特征在于,包括流控配置模塊,該流 控配置模塊用于配置所述流控目標。
4.如權利要求1所述的一種網絡流量控制系統(tǒng),其特征在于,所述流控參數更新模塊 包括流控狀態(tài)計算模塊、窗口整形比例計算模塊;該流控狀態(tài)計算模塊根據所述數據包流速及流控目標,計算當前流控狀態(tài);該窗口整形比例計算模塊通過查表來確定TCP窗口的縮放比例,以控制TCP窗口的大 ??;其中,所述表是一個可配置表,且該表被配置成具有負反饋功能,其用于表示該經UDP 包過濾模塊過濾后的數據包流速與流控目標之間的比值,與TCP窗口縮放比例之間的相互 關系。
5.如權利要求4所述的一種網絡流量控制系統(tǒng),其特征在于,所述當前流控狀態(tài)的計 算方式為判定該數據包流速與流控目標之間的大小關系,在該數據包流速大于流控目標時,該 當前流控狀態(tài)為需要流控,反之則不需要流控;或判定該數據包流速與流控目標之間的百分比,在該數據包流速大于流控目標一定百分 比時,該當前流控狀態(tài)為需要流控,反之則不需要流控。
6.如權利要求4所述的一種網絡流量控制系統(tǒng),其特征在于,所述需要流控狀態(tài)的退 出機制為,數據包流速低于流控目標的時間達到時間閾值后,流控狀態(tài)更新為不需要流控。
7.如權利要求4所述的一種網絡流量控制系統(tǒng),其特征在于,所述流控參數更新模塊 還包括UDP包過濾比例計算模塊;UDP包過濾比例計算模塊用于獲得UDP包的過濾比例,并將得到的該UDP包過濾比例發(fā) 送至UDP包過濾模塊;其中,所述UDP包過濾比例的獲得方式為計算所述數據包流速偏離流控目標的比例,若該偏離比例超過一定閾值,則選取較大 的UDP包過濾比例,反之則選取較小的UDP包過濾比例;或配置UDP包的過濾比例為一個固定數值。
8.如權利要求1所述的一種網絡流量控制系統(tǒng),其特征在于,所述TCP窗口整形模塊包括窗口比例更新模塊;該窗口比例更新模塊用于接收來自該UDP包過濾模塊過濾后的數據包,以及接收來自 流控參數更新模塊的流控狀態(tài)和TCP窗口整形比例,并根據該接收到數據包中信息獲得其 所屬連接的累積TCP窗口整形比例,再根據來自流控參數更新模塊的流控狀態(tài)、TCP窗口整 形比例以及所述累積TCP窗口整形比例,更新該連接的TCP窗口整形比例。
9.如權利要求8所述的一種網絡流量控制系統(tǒng),其特征在于,所述TCP窗口整形模塊還 包括轉發(fā)包窗口更新模塊;且該轉發(fā)包窗口更新模塊包括接收來自該窗口比例更新模塊的更新后的TCP窗口整形比例,以及接收來自UDP包過 濾模塊的數據包,并根據該數據包中信息得到該數據包TCP窗口大小的模塊;以及根據該更新后的TCP窗口整形比例以及由數據包信息中得到的TCP窗口大小,計算該 數據包的最新TCP窗口大小的模塊。
10.如權利要求9所述的一種網絡流量控制系統(tǒng),其特征在于,所述計算該數據包最新 TCP窗口大小的模塊包括判定該數據包的TCP窗口大小是否超過系統(tǒng)設定的最大TCP窗口閾值,若超過該閾值, 則將該最大TCP窗口閾值與所述更新后的TCP窗口整形比例做乘積,并將該乘積值作為該 數據包TCP窗口值的子模塊;若未超過所述閾值,則將該數據包的TCP窗口大小與該更新后的TCP窗口整形比例做 乘積,再判定該乘積值是否低于最小TCP窗口值的子模塊;若所述乘積值低于該最小TCP窗口值,將該最小TCP窗口值作為該數據包TCP窗口值 的子模塊;若所述乘積值未低于該最小TCP窗口值,則將所述乘積值作為該數據包TCP窗口值的 子模塊。
11.一種網絡流量控制方法,其特征在于,包括步驟a,接收流入系統(tǒng)的數據包,并根據該數據包的流速及系統(tǒng)設定的流控目標,計算 系統(tǒng)的流控狀態(tài)及UDP包過濾比例、TCP窗口整形比例,且該流控狀態(tài)包括需要流控和不需 要流控兩種狀態(tài);步驟b,在所述流控狀態(tài)為需要流控時,根據該UDP包過濾比例,對該流入系統(tǒng)的UDP數 據包進行過濾;步驟c,根據該數據包的TCP窗口大小及所述TCP窗口整形比例,對該過濾UDP包后的 數據包進行TCP窗口整形。
全文摘要
本發(fā)明涉及一種網絡流量控制系統(tǒng)及方法。本發(fā)明包括UDP包過濾模塊、流控參數更新模塊和TCP窗口整形模塊。該流控參數更新模塊用于接收流入該系統(tǒng)的數據包,并根據該數據包流速及系統(tǒng)設定的流控目標,計算該系統(tǒng)的流控狀態(tài)、UDP包過濾比例、TCP窗口整形比例。該UDP包過濾模塊用于接收流控狀態(tài)、UDP包過濾比例,且在該流控狀態(tài)為需要流控時,根據該UDP包過濾比例,對該流入系統(tǒng)的UDP數據包進行過濾。該TCP窗口整形模塊用于接收該過濾后的數據包、流控狀態(tài)、TCP窗口整形比例,并根據該數據包的TCP窗口大小及TCP窗口整形比例,對該過濾后的數據包進行窗口整形。本發(fā)明能夠廣泛應用于網絡流控系統(tǒng)中。
文檔編號H04L12/56GK101917349SQ20101027543
公開日2010年12月15日 申請日期2010年9月8日 優(yōu)先權日2010年9月8日
發(fā)明者才華, 斯俊偉, 梁志勇, 梁斌, 米佳 申請人:北京網康科技有限公司