專利名稱:一種路由器多徑輸出智能負載均衡的方法及路由器的制作方法
技術領域:
本發明涉及通訊技術領域,尤其涉及一種路由器多徑輸出智能負載均衡的方法及路由器。
背景技術:
圖1為一種能夠實現負載均衡的組網結構,該種組網模式常用于網吧、酒店、學校、小區接入等場合。多個用戶終端通過鏈路1、鏈路2等多條鏈路訪問網絡服務器,由于多條鏈路連接相同的寬帶路由器,從寬帶路由器到達網絡服務器可以生成多條等價鏈路,即多條代價相同的路由。現有技術中,來自于同一用戶終端的數據流走同一鏈路,使得每個用戶終端的所有數據流都走相同的鏈路到達網絡服務器的同一接口。該種實現方式通過在寬帶路由器上配置策略路由,對用戶終端出接口進行設置,但該種方式策略路由使用復雜且無法動態適應網絡結構的變化,一旦網絡結構發生變化就需要重新對策略路由進行配置;此外,該種方式容易出現單線路故障帶來的網絡可用性風險和網絡帶寬不足帶來的網絡訪問問題,因此用戶往往會租用多條線路。面對多線路的情況,用戶需要合理運用多條線路的功能,使得來自于同一用戶終端的數據流在寬帶路由器進行負載均衡,即一部分數據流走鏈路1、一部分數據流走鏈路2,一部分數據可以選擇其他等價鏈路,既不造成線路資源的浪費,又能實現網絡服務質量的提升。
發明內容
本發明要解決的技術問題是提出一種路由器多徑輸出智能負載均衡的方法及路由器,以解決單線路故障帶來的網絡可用性風險和網絡帶寬不足帶來的網絡訪問問題。一種路由器多徑輸出智能負載均衡的方法,包括如下步驟:獲取待轉發數據流;如果所述數據流沒有匹配到狀態表,且存在N條優先級相同的路由時,計算所述N條路由的當前權值,并更新各接口所有對應的路由權值;根據所述N條路由的當前權值,指定下一跳,建立狀態表;從指定出接口轉發數據;其中,所述N為大于等于2的整數,所述N條優先級相同的路由包括網段路由或者
默認路由。進一步地,該方法按照預定時間間隔計算所述N條路由的當前權值。進一步地,所述優先級相同的N條路由的初始權值與對應鏈路配置接口的下行帶寬成正比。4、根據權利要求2所述的路由器多徑輸出智能負載均衡的方法,其特征在于,所述按照預定時間間隔計算所述N條路由的當前權值包括,S1:配置每條路由對應接口的下行帶寬;S2:設置初始時間,從所述初始時間開始計時,到達預定時間間隔,觸發定時器中斷,計算每條路由對應接口在所述預定時間間隔內的平均下行帶寬;S3:計算每條路由對應接口當前平均剩余下行帶寬,所述當前平均剩余下行帶寬通過每條路由對應接口配置下行帶寬減去預定時間間隔內對應的平均下行帶寬得到;S4:根據每條路由對應接口的平均剩余下行帶寬,按照比值得到每條路由的當前權值,更新各接口所有對應的路由權值,執行步驟S2。進一步地,所述各接口所有對應的路由包括,與接口處于同一網段的直連路由和下一跳與接口處于同一網段的所有路由。進一步地,所述根據所述N條路由的當前權值,指定下一跳,建立狀態表包括,統計所述N條路由的當前權值;首先從所述權值中選出最小的權值,然后從剩余權值中每次選擇一個權值依次相力口,生成一個數據隊列,根據所述數據隊列生成一個包括N個相鄰取值區間的隊列;生成一個隨機數,查找所述隨機數所處的取值區間,以所述取值區間最大值對應的下一跳作為數據流傳輸的下一跳;根據數據流中指定粒度,建立狀態表,記錄出接口 ;其中,所述隨機數為生成的數據隊列中的任意值。進一步地,所述數據流中指定粒度包括數據包的源IP和目的IP組成的IP對;或者,數據包的協議類型、目的地址、目的端口、源地址和源端口組成的五元組信息。進一步地,如果所述數據流匹配到狀態表,根據狀態表指定的下一跳轉發數據包。相應地,本發明還公開一種路由器,所述路由器包括,獲取模塊,用于獲取待轉發數據流;匹配模塊,用于將待轉發數據流與狀態表表項進行匹配;第一計算模塊,用于當所述數據流沒有匹配到狀態表,且存在N條優先級相同的路由時,計算所述N條路由的當前權值; 更新模塊,用于根據所述N條路由的當前權值更新各接口所有對應的路由權值;第二計算模塊,用于根據所述N條路由的當前權值,指定下一跳,建立狀態表;轉發模塊,用于從指定出接口轉發數據;其中,所述N為大于等于2的整數,所述路由條目包括網段路由或者默認路由。進一步地,所述更新模塊用于更新各接口下所有路由權值,所述所有路由條目包括與接口處于同一網段的直連路由和下一跳與接口處于同一網段的所有路由。本發明的技術方案通過為路由器多出口線路分別設置權值,以權值為依據,通過負載均衡算法來決定流量的出口,并且定期自動計算每一條線路的剩余帶寬,更新各條線路的權值,動態的適應線路的忙閑變化,從而實現網絡服務質量的提升。
圖1為一種實現負載均衡的組網結構示意圖;圖2為本發明實施例提供的路由器多徑輸出智能負載均衡的方法流程圖;圖3為本發明實施例的計算N條路由條目的當前權值的方法流程圖;圖4為本發明實施例的負載均衡算法的方法流程圖;圖5為本發明實施例提供的路由器的結構框圖。
具體實施例方式為詳細說明本發明的技術內容、所實現目的及效果,以下結合實施方式并配合附圖予以詳細說明。圖2為本發明實施例提供的路由器多徑輸出智能負載均衡的方法流程圖。如圖2所示,該方法包括如下步驟:步驟101:獲取待轉發數據流。各用戶終端發送數據流到寬帶路由器,等待寬帶路由器將數據轉發到目的地址。步驟102:判斷所述待轉發數據流是否匹配到狀態表,若是,執行步驟107 ;否則,執行步驟103。狀態表表項中包括相互關聯保存的用戶終端特征信息和對應于寬帶路由器的多條等價鏈路的出接口信息。所述用戶終端特征信息是指能夠唯一標識發送數據流的終端用戶的信息,用于區別于其他終端用戶。例如數據流攜帶的源IP地址等。出接口是為用于轉發數據流的出接口標識,或者為出接口標識及下一跳路由地址。對于某些虛擬接口,通過接口標識無法決定要轉發數據流的物理地址,這種情況下需要將出接口及下一跳路由地址綁定來確定實際的物理端口。步驟103:所述待轉發數據流匹配到N條優先級相同的路由,所述N條優先級相同路由包括網段路由或者默認路由。所述優先級相同的路由條目是指兩條或者兩條以上的等價路由,即能夠到達目的地址且代價近似相同的路由。如果不存在多條優先級相同的路由,也就無法實現負載均衡。假如根據具體的網絡拓撲結構就可以確定來自不同終端的所有報文都只發送給一個目的地址,則必然存在N條優先級相同的路由,該種情況下也不需要在進行匹配。步驟104:計算所述N條路由的當前權值,并更新各接口下所有對應的路由權值。所述優先級相同的N條路由條目的初始權值與對應線路配置接口的下行帶寬成正比。也可以說是與對應線路配置接口鏈路的容量成正比或者與速度成正比。計算所述N條路由條目的當前權值可以根據用戶設置的時間進行。對于時間間隔沒有嚴格的限制。為了實現方便,本實施例中按照預定時間間隔計算所述N條路由條目的當前權值。圖3為本發明實施例的計算N條路由條目的當前權值的方法流程圖,具體流程包括:步驟1041:配置每條路由對應接口的下行帶寬;每條路由條目對應接口的下行帶寬可以根據用戶需要進行設置,也可以直接按照路由器初始值進行分配。接口下行帶寬確定的話,接口下路由權值也就為確定值。在路由器初始化后,每條路由條目權值與對應接口配置的下行帶寬成比例。步驟1042:系統啟用一個定時器,設置初始時間和定時時間間隔。步驟1043:從所述初始時間開始計時,到達預定時間間隔,觸發定時器中斷。步驟1044:計算每一條路由所對應接口在一個定時器周期內的平均下行帶寬。步驟1045:計算每條路由條目對應接口當前平均剩余下行帶寬。所述當前平均剩余下行帶寬通過每條路由條目對應接口配置下行帶寬減去預定時間間隔內對應的平均下行帶寬得到。
步驟1046:根據每條路由條目對應接口的平均剩余下行帶寬,按照比值得到每條路由條目的當前權值。所述當前路由權值是當前各接口平均剩余下行帶寬的比值,也就是說,每次計算各接口當前平均剩余下行帶寬都要按照平均剩余下行帶寬比值得到各路由當前權值,所述當前路由權值的取值范圍為I到1000。步驟1047:更新各接口所有對應的路由權值,執行步驟1042。步驟105:根據所述N條路由條目當前權值,指定下一跳,建立狀態表。該步驟利用負載均衡算法指定下一跳,建立狀態表。圖4為本發明實施例的負載均衡算法的方法流程圖。該方法具體包括:步驟1051:統計所述N條路由條目的當前權值。步驟1052:首先從所述權值中選出最小的權值,然后從剩余權值中每次選擇一個權值依次相加,生成一個數據隊列,根據所述數據隊列生成一個包括N個相鄰取值區間的
隊列。例如,N條路由條目的權值分別為kl、k2、k3......kn ;選出最小的權值kl用Xl表
示,然后從剩余的權值中任意選擇一個,與所述最小的權值Xl相加,得到X2 ;然后從剩余的
權值中任意選擇一個,與X2相加,得到X3,以此類推,得到一個X1、X2、X3......Xn的數據
隊列,根據所述數據隊列生成一個包括N個相鄰取值區間的區間隊列,S卩[O XI]、[XI X2]、[X2X3]......[Xn-1 Xn]。所述步驟1052只是一個具體的例子。對于生成包括N個相鄰取值區間的隊列的過程,選擇第一個權值可以為N條路由條目的權值中的任意一個,用Xl表示,然后從剩余的權值中任意選擇一個,與所述最小的權值Xl相加,得到X2 ;然后從剩余的權值中任意選擇
一個,與X2相加,得到X3,以此類推......,這樣形成的相鄰取值區間的值可能不同,但只
需要改變后續生成隨機數的范圍,同樣能夠實現負載均衡。步驟1053:生成一個隨機數,查找所述隨機數所處的取值區間,以所述取值區間最大值對應的下一跳作為數據流傳輸的下一跳。生成一個隨機數P,P的取值范圍為I到Xn ;查找P處在哪一個取值區間內,找到對應取值區間以該區間最大值對應的下一跳作為流的指定下一跳,建立狀態表,記錄出接口。所述隨機數P可以采用隨機數生成算法得到。這里要說明的是P所處取值區間最大值對應的下一跳即得到該最大值對應的路由權值,選擇該條路由作為下一跳。步驟1054:根據數據流中指定粒度,建立狀態表,記錄出接口。所述數據流中指定粒度包括數據包的源IP和目的IP組成的IP對;或者,數據包的協議類型、目的地址、目的端口、源地址和源端口組成的五元組信息。所述狀態表表項中記錄相互關聯保存的用戶終端數據包的的源IP和目的IP組成的IP對與路由器多條等價鏈路的出接口信息;或者記錄相互關聯保存的用戶終端數據包的協議類型、目的地址、目的端口、源地址和源端口組成的五元組信息與路由器多條等價鏈路的出接口信息。步驟106:從指定出接口轉發數據。根據數據流中指定粒度找到對應出接口,發送數據。步驟107:根據狀態表指定的下一跳轉發數據包。具體地,假設在圖1所示的組網結構中,寬帶路由器配置3個接口到網絡服務器,形成3條優先級相同的路由條目,分別用鏈路1、鏈路2和鏈路3表示。預先配置3個接口的下行帶寬分別為10M、20M和30M,在3條路由條目全部生效的情況下,3條路由條目的權值分別用1、2和3表示。假如寬帶路由器獲取到6個數據流,如果數據流匹配到狀態表,會按照狀態表指定的出接口對應的路由鏈路轉發數據;如果數據流沒有匹配到狀態表,需要根據3條路由條目的權值分配所述數據流到某條鏈路上進行傳輸。在路由器初始化后,3條路由條目的帶寬與預先配置的對應接口帶寬相同。在默認情況下,6個數據流會按照3條路由條目的權值進行分配,即權值為3的路由鏈路分配3個數據流,權值為2的路由鏈路分配2個數據流,權值為I的路由鏈路分配I個數據流。寬帶路由器一旦接收數據并開始傳輸數據,各接口下的流量會時刻變化,數據傳輸是時刻進行的,當寬帶路由器不斷接收數據流時,3條路由條目的權重值是時刻在變化的,在某個時刻,有的鏈路可能處于空閑狀態,有的鏈路可能處于忙碌狀態,理想情況下,是將待轉發數據流分配到空閑的鏈路上進行傳輸。因此,需要對當前路由條目的權值進行重新計算。本實施例中采用按照預定時間間隔,計算3條路由條目當前權值,并更新各接口下所有對應的路由權值,根據3條路由條目的當前權值,依據負載均衡算法,指定下一跳,建立狀態表,記錄出接口 ;從指定出接口轉發數據。下面以具體實例對負載均衡算法進行說明:3條路由條目的初始權值分別為1、2、3 ;選出最小的權值I用Xl表示,然后從剩余的權值中選擇任意一個,如選擇3,與所述最小的權值Xl相加,得到X2,即4 ;然后從剩余的權值中選擇剩余的一個,與X2相加,得到X3,即6,這樣,得到一個X1、X2、X3的數據隊列,即1、4、6。根據所述數據隊列生成一個包括3個相鄰取值區間的區間隊列,S卩[O 1]、[1 4]、[4 6]。然后生成一個介于I到6之間的隨機數,如隨機數為5,查找隨機數5處于[4 6]的取值區間,根據該取值區間對應的最大值6,可以得到所述最大值6對應的下一跳為第二條路由鏈路,記錄該條路由接口,建立狀態表。根據數據流中指定粒度,供所述第二條路由鏈路轉發數據。當達到預定時間間隔后,需要重新計算當前路由條目對應接口的平均剩余帶寬,根據所述平均剩余帶寬計算各條路由權值,根據負載均衡算法對數據流進行分配。圖5為本發明實施例提供的路由器的結構框圖。如圖5所示,所述路由器包括,獲取模塊501,用于獲取待轉發數據流。各用戶終端發送數據流到寬帶路由器,等待寬帶路由器將數據轉發到目的地址。匹配模塊502,用于將所述帶轉發數據流與狀態表表項進行匹配。第一計算模塊503,用于當所述數據流沒有匹配到狀態表,且存在N條優先級相同的路由條目時,計算所述N條路由條目的當前權值。所述路由器按照預定時間間隔計算N條路由條目的當前權值,計算步驟可參考圖3的詳細描述。更新模塊504,用于根據所述N條路由條目的當前權值更新各接口所有對應的路由權值。所述各接口下所有路由包括與接口處于同一網段的直連路由和下一跳與接口處于同一網段的所有路由。第二計算模塊505,用于根據所述N條路由條目的當前權值,指定下一跳,建立狀態表。所述根據所述N條路由條目的當前權值,指定下一跳依據負載均衡算法實現,具體步驟可參考圖4部分的詳細描述。轉發模塊506,用于從指定出接口轉發數據;
其中,所述N為大于等于2的整數,所述路由條目包括網段路由或者默認路由。本發明的技術方案,通過為路由器多出口線路分別設置權值,以權值為依據,通過負載均衡算法來決定流量的出口,并且定期自動計算每一條線路的剩余帶寬,更新各條線路的權值,動態的適應線路的忙閑變化,使得路由器可以根據每一條線路上實時流量,動態調整權重,合理分配不同流量到合適的線路上,克服了傳統多線路中,無論線路忙閑,流量都走固定線路的弊端,大大的提高了線路帶寬利用率,并且極大的改善了上網體驗。上述僅為本發明的較佳實施例及所運用技術原理,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍內。
權利要求
1.一種路由器多徑輸出智能負載均衡的方法,其特征在于,包括如下步驟: 獲取待轉發數據流; 如果所述數據流沒有匹配到狀態表,且存在N條優先級相同的路由時,計算所述N條路由的當前權值,并更新各接口所有對應的路由權值; 根據所述N條路由的當前權值,指定下一跳,建立狀態表; 從指定出接口轉發數據; 其中,所述N為大于等于2的整數,所述N條優先級相同的路由包括網段路由或者默認路由。
2.根據權利要求1所述的路由器多徑輸出智能負載均衡的方法,其特征在于,該方法按照預定時間間隔計算所述N條路由的當前權值。
3.根據權利要求1所述的路由器多徑輸出智能負載均衡的方法,其特征在于,所述優先級相同的N條路由的初始權值與對應鏈路配置接口的下行帶寬成正比。
4.根據權利要求2所述的路由器多徑輸出智能負載均衡的方法,其特征在于,所述按照預定時間間隔計算所述N條路由的當前權值包括, 51:配置每條路由對應接口的下行帶寬; 52:設置初始時間,從所述初始時間開始計時,到達預定時間間隔,觸發定時器中斷,計算每條路由對應接口在所述預定時間間隔內的平均下行帶寬; 53:計算每條路由對應接口當前平均剩余下行帶寬,所述當前平均剩余下行帶寬通過每條路由對應接口配置下行帶寬減去預定時間間隔內對應的平均下行帶寬得到; 54:根據每條路由對應接口的平均剩余下行帶寬,按照比值得到每條路由的當前權值,更新各接口所有對應的路由權值,執行步驟S2。
5.根據權利要求1所述的路由器多徑輸出智能負載均衡的方法,其特征在于,所述各接口所有對應的路由包括, 與接口處于同一網段的直連路由和下一跳與接口處于同一網段的所有路由。
6.根據權利要求1所述的路由器多徑輸出智能負載均衡的方法,其特征在于,所述根據所述N條路由的當前權值,指定下一跳,建立狀態表包括, 統計所述N條路由的當前權值; 首先從所述權值中選出最小的權值,然后從剩余權值中每次選擇一個權值依次相加,生成一個數據隊列,根據所述數據隊列生成一個包括N個相鄰取值區間的隊列; 生成一個隨機數,查找所述隨機數所處的取值區間,以所述取值區間最大值對應的下一跳作為數據流傳輸的下一跳; 根據數據流中指定粒度,建立狀態表,記錄出接口 ; 其中,所述隨機數為生成的數據隊列中的任意值。
7.根據權利要求6所述的路由器多徑輸出智能負載均衡的方法,其特征在于,所述數據流中指定粒度包括數據包的源IP和目的IP組成的IP對;或者,數據包的協議類型、目的地址、目的端口、源地址和源端口組成的五元組信息。
8.根據權利要求1或2所述的路由器多徑輸出智能負載均衡的方法,其特征在于,如果所述數據流匹配到狀態表, 根據狀態表指定的下一跳轉發數據包。
9.一種路由器,其特征在于,所述路由器包括,獲取模塊,用于獲取待轉發數據流; 匹配模塊,用于將待轉發數據流與狀態表表項進行匹配; 第一計算模塊,用于當所述數據流沒有匹配到狀態表,且存在N條優先級相同的路由時,計算所述N條路由的當前權值; 更新模塊,用于根據所述N條路由的當前權值更新各接口所有對應的路由權值; 第二計算模塊,用于根據所述N條路由的當前權值,指定下一跳,建立狀態表; 轉發模塊,用于從指定出接口轉發數據; 其中,所述N為大于等于2的整數,所述路由條目包括網段路由或者默認路由。
10.根據權利要求9所述的路由器,其特征在于,所述更新模塊用于更新各接口下所有路由權值,所述所有路由條目包括與接口處于同一網段的直連路由和下一跳與接口處于同一網段的所有路由。
全文摘要
本發明公開一種路由器多徑輸出智能負載均衡的方法及路由器,通過為路由器多條鏈路分別設置權值,以權值為依據進行負載均衡,指定下一跳,來決定流量的出口,并且定期自動計算每一條線路的平均剩余帶寬,更新各條線路的權值,動態的適應線路的忙閑變化,使得路由器可以根據每一條線路上實時流量,動態調整權重,合理分配不同流量到合適的線路上,克服了傳統多線路中,無論線路忙閑,流量都走固定線路的弊端,大大的提高了線路帶寬利用率,并且極大的改善了上網體驗。
文檔編號H04L12/771GK103188165SQ201310077108
公開日2013年7月3日 申請日期2013年3月12日 優先權日2013年3月12日
發明者魏元首 申請人:神州數碼網絡(北京)有限公司