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