專利名稱:一種負載分擔方法及裝置的制作方法
技術領域:
本發(fā)明涉及網(wǎng)絡通信中的負載分擔技術,尤其涉及一種負載分擔方法及裝置。
背景技術:
網(wǎng)絡地址轉(zhuǎn)換(NAT, Network Address Translation)是一種將私有地址轉(zhuǎn)化為合法因特網(wǎng)協(xié)議(IP,Internet Protocol)地址的轉(zhuǎn)換技術,它被廣泛應用于各種類型的國際互聯(lián)網(wǎng)(Internet)接入方式和各種類型的網(wǎng)絡中。NAT可以使多臺私網(wǎng)計算機共享Internet連接,很好地解決公共IP地址資源緊缺的問題。運營商級網(wǎng)絡地址轉(zhuǎn)換(CGN, Carrier Grade NAT)是一種在運營商中部署的設備,通過集成包括隧道和NAT在內(nèi)的多種演進機制,來改善互聯(lián)網(wǎng)協(xié)議第4版(IPv4,Internet Protocol Version4)和互聯(lián)網(wǎng)協(xié)議第 6版(IPv6, Internet Protocol Version6)的平滑過渡和推進演進過程。CGN的轉(zhuǎn)換形式有:私網(wǎng)IPv4到公網(wǎng)IPv4地址、私網(wǎng)IPv4到IPv6地址、IPv6到公網(wǎng)IPv4地址等。為了提高CGN的性能,目前多采用獨立的處理單元,處理單元可以為單核處理單元或多核處理單元,多核處理單元目前采用負載分擔的形式,使得多核處理單元的中央處理器(CPU, Central Processing Unit)性能達到最優(yōu)。負載分擔包括公網(wǎng)地址資源的負載分擔和用戶端設備的負載分擔,為了使公網(wǎng)地址資源和用戶端設備的分配達到均衡負載分擔的效果,可以采用哈希(HASH)的方式把公網(wǎng)地址資源隨機的散列到不同CPU,但是,如果以單個公網(wǎng)地址資源進行散列,對CGN的轉(zhuǎn)發(fā)單元和處理單元的性能要求較高;如果以固定公網(wǎng)地址塊進行散列,隨著CGN的處理單元個數(shù)的不同,以及各個處理單元中包含的CPU的個數(shù)的不同,CGN進行地址轉(zhuǎn)換的性能差距較大,且存在負載分擔較差的問題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種負載分擔方法及裝置,能解決NAT在多個CPU上負載分擔不均的問題。為達到上述目的,本發(fā)明的技術方案是這樣實現(xiàn)的:本發(fā)明提供了一種負載分擔方法,所述方法包括:以地址池形式配置公網(wǎng)地址;接收到用戶端設備發(fā)送的流量后,根據(jù)所述用戶端設備發(fā)送的流量模型對用戶端設備進行分組,由各個CPU為用戶端設備分配公網(wǎng)地址,并為用戶端設備的私網(wǎng)地址做公網(wǎng)地址轉(zhuǎn)換;其中,每個地址池包括多個地址塊,每個地址塊對應一個CPU ;每個用戶組包括多個用戶塊,每個用戶塊對應一個CPU。上述方案中,所述方法還包括:根據(jù)地址池對應的地址資源數(shù)據(jù)鏈生成公網(wǎng)地址資源負載分擔標記表,根據(jù)用戶組對應的用戶數(shù)據(jù)鏈生成用戶端設備負載分擔標記表;所述地址資源數(shù)據(jù)鏈根據(jù)配置的地址池生成;所述用戶數(shù)據(jù)鏈根據(jù)配置的用戶組生成;根據(jù)公網(wǎng)地址資源負載分擔標記表和用戶端設備負載分擔標記表生成的負載分擔控制信息發(fā)送給CPU ;相應的,所述CPU為用戶端設備分配公網(wǎng)地址,并為用戶端設備的私網(wǎng)地址做公網(wǎng)地址轉(zhuǎn)換為:所述CPU根據(jù)收到的負載分擔控制信息為用戶端設備分配公網(wǎng)地址,并為用戶端設備的私網(wǎng)地址做公網(wǎng)地址轉(zhuǎn)換。上述方案中,所述各個CPU在每個地址池中對應的公網(wǎng)地址數(shù)基本相同;具體實現(xiàn)方法為:將當前地址池的公網(wǎng)地址總數(shù)除以CPU數(shù)平方的整數(shù)值與CPU數(shù)的乘積個公網(wǎng)地址分配給各個CPU ;若還有公網(wǎng)地址剩余,則將剩余的公網(wǎng)地址除以CPU數(shù)的整數(shù)值個公網(wǎng)地址分配給各個CPU;若還有公網(wǎng)地址剩余,則將各個地址池中所述剩余的公網(wǎng)地址作為一個整體進行公網(wǎng)地址分配,使各個CPU對應的公網(wǎng)地址數(shù)基本相同。上述方案中,所述各個CPU分擔的用戶端設備數(shù)基本相同;具體實現(xiàn)方法為:將當前用戶組的用戶端設備總數(shù)除以CPU數(shù)平方的整數(shù)值與CPU數(shù)的乘積個用戶端設備分配給各個CPU ;若還有用戶端設備剩余,則將剩余的用戶端設備除以CPU數(shù)的整數(shù)值個用戶端設備分配給各個CPU ;若還有用戶端設備剩余,則將各個用戶組中剩余的用戶端設備作為一個整體進行用戶端設備分配,使各個CPU分配的用戶端設備數(shù)基本相同。上述方案中,每個地址池對應一個公網(wǎng)地址資源數(shù)據(jù)鏈,所述公網(wǎng)地址資源數(shù)據(jù)鏈的節(jié)點數(shù)為CPU數(shù),且每個節(jié)點對應一個CPU ;每個節(jié)點分為塊標記和尾標記。上述方案中,每個用戶組對應一個用戶數(shù)據(jù)鏈,所述用戶數(shù)據(jù)鏈的節(jié)點數(shù)為CPU數(shù),且每個節(jié)點對應一個CPU ;每個節(jié)點包括塊標記、尾標記。本發(fā)明還提供了一種負載分擔裝置,所述裝置包括負載分擔配置模塊、負載分擔控制模塊、CPU ;其中,所述負載分擔配置模塊,用于以地址池形式配置對公網(wǎng)地址;根據(jù)所述用戶端設備發(fā)送的流量模型對用戶端設備進行分組;其中,每個地址池包括多個地址塊,每個地址塊對應一個CPU ;每個用戶組包括多個用戶塊,每個用戶塊對應一個CPU ;所述負載分擔控制模塊,將負載分擔控制信息發(fā)送給CPU ;所述CPU,用于根據(jù)收到的負載分擔控制信息為用戶端設備分配公網(wǎng)地址,并為用戶端設備的私網(wǎng)地址做公網(wǎng)地址轉(zhuǎn)換。上述方案中,所述負載分擔控制模塊,具體用于根據(jù)公網(wǎng)地址資源數(shù)據(jù)鏈生成公網(wǎng)地址資源負載分擔標記表;以及,根據(jù)用戶數(shù)據(jù)鏈生成用戶端設備負載分擔標記表;并將根據(jù)公網(wǎng)地址資源負載分擔標記表和用戶端設備負載分擔標記表生成的負載分擔控制信息下發(fā)到CPU。上述方案中,每個地址池對應一個公網(wǎng)地址資源數(shù)據(jù)鏈,所述公網(wǎng)地址資源數(shù)據(jù)鏈的節(jié)點數(shù)為CPU數(shù),且每個節(jié)點對應一個CPU ;每個節(jié)點分為塊標記和尾標記;每個用戶組對應一個用戶數(shù)據(jù)鏈,所述用戶數(shù)據(jù)鏈的節(jié)點數(shù)為CPU數(shù),且每個節(jié)點對應一個CPU ;每個節(jié)點包括塊標記、尾標記。
上述方案中,所述負載分擔配置模塊、負載分擔控制模塊設置于CGN設備中。本發(fā)明所提供的負載分擔方法及裝置,對公網(wǎng)地址以地址池的形式進行配置,以使各個CPU在每個地址池中對應的公網(wǎng)地址數(shù)基本相同;接收到用戶端設備發(fā)送的流量后,根據(jù)所述用戶端設備發(fā)送的流量模型對用戶端設備進行分組,使各個CPU分擔的用戶端設備數(shù)基本相同;并由各個CPU為用戶端設備分配公網(wǎng)地址,并為用戶端設備的私網(wǎng)地址做公網(wǎng)地址轉(zhuǎn)換。如此,解決了 NAT在不同CPU上的公網(wǎng)地址資源和用戶端設備負載分擔不均問題,同時也減小了部分公網(wǎng)地址資源和用戶端設備的增刪對CGN整體性能的影響問題。本發(fā)明的技術方案,既能提高CPU處理地址轉(zhuǎn)換的速度,又能實現(xiàn)在不同CPU負載均衡的效果。
圖1為本發(fā)明負載分擔方法的實現(xiàn)流程示意圖;圖2為本發(fā)明實施例公網(wǎng)地址資源數(shù)據(jù)鏈結(jié)構(gòu)示意圖;圖3為本發(fā)明實施例用戶數(shù)據(jù)鏈示意圖;圖4為本發(fā)明負載分擔裝置的組成結(jié)構(gòu)示意圖;圖5為本發(fā)明實施例CGN的負載分擔的示意圖。
具體實施例方式下面結(jié)合附圖及具體實施例對本發(fā)明再作進一步詳細的說明。圖1為負載分擔方法的實現(xiàn)流程示意圖,如圖1所示,該包括以下步驟:步驟101:以地址池形式配置公網(wǎng)地址;其中,每個地址池包括多個地址塊,每個地址塊對應一個CPU ;本發(fā)明中,設置有多個地址池,地址池的數(shù)目可以根據(jù)實際需要確定;每個地址池中包括若干個公網(wǎng)地址,每個地址池中含有的公網(wǎng)地址數(shù)可以相同,也可以不同;且每個地址池中均包括對應每個CPU的公網(wǎng)地址,各個CPU在每個地址池中對應的公網(wǎng)地址數(shù)基本相同;舉個例子來說,有地址池A、地址池B、地址池C三個地址池,CPUl和CPU2兩個CPU,十二個公網(wǎng)地址,這里,地址池A、B、C中含有的公網(wǎng)地址數(shù)可靈活配置,也就是說,地址池
A、地址池B、地址池C中含有的公網(wǎng)地址數(shù)可不一樣,比如:地址池A含有八個公網(wǎng)地址,地址池B含有三個公網(wǎng)地址,地址池C含有一個公網(wǎng)地址;理想情況下,地址池A、地址池B、地址池C各自會包括四個公網(wǎng)地址,且每個地址池中有兩個公網(wǎng)地址對應CPU1、兩個公網(wǎng)地址對應CPU2。步驟102:接收到用戶端設備發(fā)送的流量后,根據(jù)所述用戶端設備發(fā)送的流量模型對用戶端設備進行分組,由各CPU為用戶端設備分配公網(wǎng)地址,并為用戶端設備的私網(wǎng)地址做公網(wǎng)地址轉(zhuǎn)換;其中,每個用戶組包括多個用戶塊,每個用戶塊對應一個CPU ;所述流量模型可以是現(xiàn)有傳輸技術中所采用的流量模型。這里,在對用戶端設備分組時,盡量使各個CPU分擔的用戶端設備數(shù)基本相同,以保證CPU的負載均衡;CPU為用戶端設備分配的公網(wǎng)地址來自于各地址池中與自身對應的公網(wǎng)地址;
具體的,所述CPU根據(jù)負載分擔控制信息為用戶端設備分配公網(wǎng)地址;其中,所述負載分擔控制信息包括:根據(jù)公網(wǎng)地址資源數(shù)據(jù)鏈生成的公網(wǎng)地址資源負載分擔標記表,根據(jù)用戶數(shù)據(jù)鏈生成的用戶端設備負載分擔標記表;這里,所述公網(wǎng)地址資源數(shù)據(jù)鏈是指用于記錄各個CPU在各地址池中分配到的公網(wǎng)地址情況的鏈表結(jié)構(gòu);用戶數(shù)據(jù)鏈是指用于包括用戶端設備負載情況的鏈表結(jié)構(gòu)。在實際應用中,以地址池形式配置公網(wǎng)地址如圖2所示,將預配置的所有公網(wǎng)地址以地址池的形式進行劃分;這里,各個地址池中包含的公網(wǎng)地址總數(shù)可以相同,也可以不同;但是,每個CPU對應多個地址池,各個CPU在每個地址池中對應的公網(wǎng)地址數(shù)要基本相同。具體的,對于每個地址池,選擇一個地址池后,實現(xiàn)各個CPU對應的公網(wǎng)地址數(shù)基本相同的方法為:先進行首次公網(wǎng)地址分配,將當前地址池的公網(wǎng)地址總數(shù)除以CPU數(shù)平方的整數(shù)值與CPU數(shù)的乘積個公網(wǎng)地址分配給各個CPU ;若還有公網(wǎng)地址剩余,再進行二次公網(wǎng)地址分配,將剩余的公網(wǎng)地址除以CPU數(shù)的整數(shù)值個公網(wǎng)地址分配給各個CPU ;若還有公網(wǎng)地址剩余,則將所述剩余的公網(wǎng)地址進行單獨處理;但是,每個CPU在分配過程中最多分配一個公網(wǎng)地址,即:每個CPU在第三次公網(wǎng)地址分配過程中分配到的公網(wǎng)地址數(shù)為O或I。所述將剩余的公網(wǎng)地地址進行單獨處理為:將各個地址池中所述剩余的公網(wǎng)地址作為一個整體進行公網(wǎng)地址分配,以使各個CPU對應的公網(wǎng)地址數(shù)基本相同;這里,之所以對所述剩余的公網(wǎng)地址按整體來處理,是因為,如果地址A、地址池
B、地址池C中剩余的公網(wǎng)地址數(shù)為1,若每個地址池均把剩余的I個公網(wǎng)地址數(shù)分配給CPUA;那么,CPU A承擔的負荷較重,若把剩余的公網(wǎng)地址作為一個整體進行公網(wǎng)地址分配,那么地址池A可以把該地址池剩余的一個公網(wǎng)地址分配給CPU A,地址池B可以把該地址池剩余的一個公網(wǎng)地址分配給CPU B,地址池C可以把該地址池剩余的一個公網(wǎng)地址分配給CPUC ;如此,能夠使各個CPU分配的公網(wǎng)地址數(shù)更加均衡。如圖2所示,每個地址池都對應一個公網(wǎng)地址資源數(shù)據(jù)鏈,所述公網(wǎng)地址資源數(shù)據(jù)鏈的節(jié)點數(shù)為CPU數(shù),且每個公網(wǎng)地址資源數(shù)據(jù)鏈的節(jié)點與一個CPU相對應;每個節(jié)點包括塊標記和尾標記,其中,所述塊標記,用于記錄與本節(jié)點對應的CPU首次分配的地址塊及地址塊數(shù),以及,用于記錄與本節(jié)點對應的CPU 二次分配的地址塊及地址塊數(shù);所述尾標記,用于記錄與本節(jié)點對應的CPU從第三次分配中獲得的公網(wǎng)地址數(shù),且從第三次分配中獲得的公網(wǎng)地址數(shù)為O或1,也就是說,每個節(jié)點的尾標記為O或I。這里,所述地址池以地址塊為單位,且所述地址塊大小可變;所述地址塊大小表示每個地址塊中包含的公網(wǎng)地址的數(shù)量;首次分配的地址塊大小與二次分配的地址塊大小不同;其中,所述首次分配為:將當前地址池的公網(wǎng)地址總數(shù)除以CPU數(shù)平方的整數(shù)值與CPU數(shù)的乘積個公網(wǎng)地址分配給各個CPU ;其中,首次分配的地址塊大小為CPU的個數(shù),每個CPU含有的地址塊數(shù)為地址池內(nèi)公網(wǎng)地址總數(shù)除以CPU數(shù)平方的整數(shù)值,以使每個CPU含有的地址塊的個數(shù)相同;這里需要指明的是,此處首次分配的地址塊大小,與CPU個數(shù)、地址池內(nèi)公網(wǎng)地址總數(shù)等多個變量相關,因此,可將首次分配的地址塊大小設為一個函數(shù)變量,所述首次分配的地址塊大小可有多種變通方式。
所述二次分配為:若首次分配后還有公網(wǎng)地址剩余,則將剩余的公網(wǎng)地址除以CPU數(shù)的整數(shù)值個公網(wǎng)地址分配給各個CPU ;其中,二次分配的地址塊為首次分配后剩余的公網(wǎng)地址總數(shù)整除CPU數(shù)的整數(shù)值,每個CPU含有的二次分配的地址塊的個數(shù)均為I ;若二次分配后還有公網(wǎng)地址剩余,則將剩余的公網(wǎng)地址進行單獨處理;所述將剩余的公網(wǎng)地地址進行單獨處理為:將各個地址池中所述剩余的公網(wǎng)地址作為一個整體進行公網(wǎng)地址分配,使各個CPU對應的公網(wǎng)地址數(shù)基本相同;每個CPU在分配過程中最多分配一個公網(wǎng)地址,即:每個CPU在此次分配過程中分配到的公網(wǎng)地址數(shù)為O或I。具體的,所有地址池可以由一個數(shù)據(jù)鏈表維護,每個鏈表節(jié)點對應所有地址池、且對應一個CPU,鏈表節(jié)點數(shù)為CPU數(shù),每個鏈表節(jié)點包含塊和標記、尾和標記;這里,每個鏈表節(jié)點的塊和標記,用于記錄各個地址池中與所述CPU相對應的首次分配與二次分配的公網(wǎng)地址總數(shù)之和;即:用于記錄各個地址池中與其相對應的CPU首次分配地址塊數(shù)與地址塊的乘積之和,以及,用于記錄與其相對應的CPU的二次分配的地址塊數(shù)與地址塊的乘積之和;每個鏈表節(jié)點的尾和標記,用于記錄各個地址池中與所述CPU相對應的尾標記之和。所述數(shù)據(jù)鏈表,用于對在哪個CPU上增加或刪除公網(wǎng)地址進行判斷,如果要增加公網(wǎng)地址,優(yōu)先對尾和標記小的節(jié)點所對應的CPU進行增加,如果要刪除公網(wǎng)地址,優(yōu)先對尾和標記大的節(jié)點所對應的CPU進行刪除,以保證公網(wǎng)地址分配以及CPU負載的均衡;具體的,對單個地址池進行維護時,如果要增加公網(wǎng)地址,優(yōu)先對尾標記為O的節(jié)點所對應的CPU進行增加,如果要隨機刪除公網(wǎng)地址,優(yōu)先對尾標記為I的所對應的CPU進行刪除;所述對單個地址池進行維護時,如果要增加公網(wǎng)地址,優(yōu)先對尾標記為O的節(jié)點所對應的CPU進行增加,如果要隨機刪除公網(wǎng)地址,優(yōu)先對尾標記為I的所對應的CPU進行刪除,包括:若地址池增加公網(wǎng)地址,則將所述二次分配后剩余的公網(wǎng)地址與增加的公網(wǎng)地址合并,將合并后的公網(wǎng)地址重新進行首次分配和二次分配;若地址池刪除的公網(wǎng)地址數(shù)為1,則搜索預刪除的公網(wǎng)地址所在的節(jié)點,檢查該節(jié)點的尾標記是否為1,如果為1,則刪除所述公網(wǎng)地址,并將所述節(jié)點的尾標記由I更新為O ;如果該節(jié)點的尾標記不為1,則執(zhí)行若地址池刪除的公網(wǎng)地址數(shù) > 首次分配的地址塊時的操作;若1〈地址池刪除的公網(wǎng)地址數(shù)<首次分配的地址塊,如果預刪除的公網(wǎng)地址分布在不同的節(jié)點,且分布所述預刪除的公網(wǎng)地址的節(jié)點的尾標記均為1,則刪除所述預刪除的公網(wǎng)地址,并將分布所述預刪除的公網(wǎng)地址的節(jié)點的尾標記由I更新為O ;如果預刪除的公網(wǎng)地址未完全分布在不同的節(jié)點上,或者分布所述預刪除的公網(wǎng)地址的節(jié)點的尾標記不全為1,則執(zhí)行若地址池刪除的公網(wǎng)地址數(shù) > 首次分配的地址塊時的操作;若地址池刪除的公網(wǎng)地址數(shù) > 首次分配的地址塊,則根據(jù)地址池原來的公網(wǎng)地址總數(shù)與預刪除的公網(wǎng)地址數(shù)的差值,重新對公網(wǎng)地址進行分配。舉例來說:如果只配置一個地址池,且該地址池所對應的公網(wǎng)地址總數(shù)為97,下面分別給出只有一個CPU或有兩個CPU—CPU AXPU B情況下,公網(wǎng)地址資源數(shù)據(jù)鏈的生成和更新情況。只有一個CPU時,地址塊大小為97,地址塊數(shù)為I ;公網(wǎng)地址資源數(shù)據(jù)鏈的尾標記為O ;兩個CPU時,地址塊大小為2,設所述兩個CPU所對應的節(jié)點為A和B;則CPU A對應的節(jié)點包括塊標記A和尾標記A ;CPU B包括塊標記B和尾標記B ;首次分配時,每個CPU所分配的地址塊大小為2、地址塊數(shù)為24 ;剩余I個地址,做二次分配。公網(wǎng)地址分配完后,塊標記A和塊標記B的地址塊大小都為2,地址塊數(shù)都為24,尾標記A為I,尾標記8為0;此時,如果刪除一個公網(wǎng)地址,且預刪除的公網(wǎng)地址在CPUA中,那么刪除該公網(wǎng)地址,且將尾標記A修改為O ;如果刪除兩個公網(wǎng)地址,但預刪除的兩個公網(wǎng)地址都在CPU A上,則重新進行公網(wǎng)地址分配,即新的地址塊大小為2,首次分配時,CPU A、CPU B的地址塊大小均為2,地址塊數(shù)均為23 ;二次分配時,CPU A、CPU B的地址塊大小均為I,地址塊數(shù)均為I ;尾標記A為I,尾標記B為O。由上可知,公網(wǎng)地址資源在不同的CPU上是負載均衡的,地址數(shù)相差最大為1,且不受處理單元個數(shù)的影響;這里,每個處理單元可以包含不同個數(shù)的CPU,用戶數(shù)據(jù)鏈的生成和更新類似,不再贅述。在實際應用中,對用戶端設備進行分組,如圖3所示,將一定時間間隔內(nèi)發(fā)送流量的所有用戶端設備,根據(jù)所述用戶端設備發(fā)送的流量模型對用戶端設備進行分組;這里,各個用戶組中包含的用戶端設備總數(shù)可以不同,但是,每個CPU對應多個用戶組,各個CPU在每個用戶組中對應的用戶端設備數(shù)基本相同。對于每個用戶組,選擇一個用戶組后,實現(xiàn)各個CPU對應的用戶端設備數(shù)基本相同的方法為:先進行首次分配,將當前用戶組的用戶端設備總數(shù)除以CPU數(shù)平方的整數(shù)值與CPU數(shù)的乘積個用戶端設備分配給各個CPU ;若還有用戶端設備剩余,再進行二次分配,將剩余的用戶端設備除以CPU數(shù)的整數(shù)值個用戶端設備分配給各個CPU ;若還有用戶端設備剩余,則進行單獨處理;所述將剩余的用戶端設備進行單獨處理為:將各個用戶組中剩余的用戶端設備作為一個整體進行用戶端設備分配,使各個CPU分配的用戶端設備數(shù)基本相同;每個CPU在分配過程中最多分配I個用戶端設備,即:每個CPU在第三次分配過程中分配到的用戶端設備數(shù)為O或I。這里,所述用戶組以一定時間間隔為單位進行劃分。圖3為本發(fā)明實施例用戶數(shù)據(jù)示意圖;如圖3所示,將一定時間間隔內(nèi)發(fā)送流量的用戶終端分成多個用戶組;每一個用戶組都對應一個用戶數(shù)據(jù)鏈,所述用戶數(shù)據(jù)鏈的節(jié)點數(shù)為CPU數(shù);所述用戶數(shù)據(jù)鏈的節(jié)點與各個CPU相對應;每一個節(jié)點包括塊標記和尾標記,其中,所述塊標記,用于記錄與本節(jié)點對應的CPU的首次分配的用戶塊及用戶塊數(shù),以及,用于記錄與本節(jié)點對應的CPU的二次分配的用戶塊及用戶塊數(shù);所述尾標記,用于記錄與本節(jié)點對應的CPU從第三次分配中獲得的用戶端設備數(shù),且從第三次分配中獲得的用戶端設備數(shù)為O或I。這里,所述用戶組以用戶塊為單位,且所述用戶塊大小可變;所述用戶塊大小表示每個用戶塊中包含的用戶端設備數(shù);首次分配的用戶塊大小與二次分配的用戶塊大小不同;
其中,所述首次分配為:將當前用戶組的用戶端設備總數(shù)除以CPU數(shù)平方的整數(shù)值與CPU數(shù)的乘積個用戶端設備分配給各個CPU ;其中,首次分配的用戶塊大小為CPU的個數(shù),每個CPU含有的用戶塊數(shù)為用戶組內(nèi)用戶端設備總數(shù)除以CPU數(shù)平方的整數(shù)值,以使每個CPU分配的用戶塊的個數(shù)相同;所述二次分配為:若首次分配后還有用戶端設備剩余,則將剩余的用戶端設備除以CPU數(shù)的整數(shù)值個用戶端設備分配給各個CPU ;其中,二次分配的用戶塊為首次分配后剩余的用戶端設備總數(shù)整除CPU數(shù)的整數(shù)值,每個CPU 二次分配的用戶塊的個數(shù)均為I。若二次分配后還有用戶端設備剩余,則進行單獨處理;所述將剩余的用戶端設備進行單獨處理為:將各個用戶組中剩余的用戶端設備作為一個整體進行用戶端設備分配,使各個CPU分配的用戶端設備數(shù)基本相同;每個CPU在分配過程中最多分配一個用戶端設備,也就是說,每個CPU在第三次分配過程中分配到的用戶端設備數(shù)為O或I。具體的,所有用戶組可以由一個用戶組數(shù)據(jù)鏈表維護,每個鏈表節(jié)點對應所有用戶組、且對應一個CPU,鏈表節(jié)點數(shù)為CPU數(shù),每個鏈表節(jié)點包含塊和標記、尾和標記;其中,如果要增加用戶端設備,則將以一定時間為單位為所述預增加的用戶端設備劃分為新的用戶組;如果要刪除用戶端設備,優(yōu)先對尾和標記大的節(jié)點所對應的CPU進行刪除。每個鏈表節(jié)點的塊和標記,用于記錄各個用戶組中與所述CPU相對應的首次分配與二次分配的用戶端設備總數(shù)之和;即:用于記錄各個地址池中與其相對應的CPU首次分配用戶塊數(shù)與用戶塊的乘積之和,以及,用于記錄與其相對應的CPU的二次分配的用戶塊數(shù)與用戶塊的乘積之和。每個鏈表節(jié)點的尾和標記,用于記錄各個用戶組中與所述CPU相對應的尾標記之和。所述用戶組數(shù)據(jù)鏈表,用于對在哪個CPU上刪除用戶端設備進行判斷,如果要刪除用戶端設備,優(yōu)先對尾和標記大的節(jié)點所對應的CPU進行刪除;具體的,對單個用戶組進行維護時,如果要隨機刪除用戶端設備,優(yōu)先對尾標記為I的所對應的CPU進行刪除。所述對單個地址池進行維護時,如果要隨機刪除用戶端設備,優(yōu)先對尾標記為I的所對應的CPU進行刪除,包括:若用戶組刪除的用戶端設備數(shù)為1,則搜索預刪除的用戶端設備所在的節(jié)點,檢查該節(jié)點的尾標記是否為1,如果為1,則刪除所述用戶端設備,并將所述節(jié)點的尾標記由I更新為O ;如果該節(jié)點的尾標記不為1,則執(zhí)行用戶組刪除的戶端設備數(shù) > 首次分配的用戶塊時的操作;若I〈用戶組刪除的戶端設備數(shù)<首次分配的用戶塊,如果預刪除的用戶端設備分布在不同的節(jié)點,且分布所述預刪除的用戶端設備的節(jié)點的尾標記均為1,則刪除所述預刪除的用戶端設備,并將分布所述預刪除的用戶端設備的節(jié)點的尾標記由I更新為O ;如果預刪除的用戶端設備沒有分布在不同的節(jié)點上,或者分布所述預刪除的用戶端設備的節(jié)點的尾標記不全為1,則執(zhí)行用戶組刪除的戶端設備數(shù)〉首次分配的用戶塊時的操作;若用戶組刪除的戶端設備數(shù) > 首次分配的用戶塊,則根據(jù)用戶組原來的用戶端設備總數(shù)與預刪除的用戶端設備數(shù)的差值,重新對用戶端設備進行分配。由上可知,用戶端設備資源在不同的CPU是負載均衡的,用戶端設備數(shù)相差最大為1,用戶數(shù)據(jù)鏈的生成和更新與公網(wǎng)地址資源數(shù)據(jù)鏈的生成和更新類似,不再贅述。
圖4為本發(fā)明負載分擔裝置的組成結(jié)構(gòu)示意圖;如圖4所示,所述裝置包括負載分擔配置模塊41、負載分擔控制模塊42、CPU43 ;其中,所述負載分擔配置模塊41,用于以地址池形式配置公網(wǎng)地址;還用于根據(jù)所述用戶端設備發(fā)送的流量模型對用戶端設備進行分組;其中,每個地址池包括多個地址塊,每個地址塊對應一個CPU ;每個用戶組包括多個用戶塊,每個用戶塊對應一個CPU ;所述負載分擔控制模塊42,用于將負載分擔控制信息發(fā)送給CPU43,以控制CPU進行負載分擔;所述負載分擔控制模塊42,具體用于根據(jù)公網(wǎng)地址資源數(shù)據(jù)鏈生成公網(wǎng)地址資源負載分擔標記表,根據(jù)用戶數(shù)據(jù)鏈生成用戶端設備負載分擔標記表;并將根據(jù)公網(wǎng)地址資源負載分擔標記表和用戶端設備負載分擔標記表生成的負載分擔控制信息下發(fā)到CPU43 ;所述CPU43,用于根據(jù)收到的負載分擔控制信息為用戶端設備分配公網(wǎng)地址,并為用戶端設備的私網(wǎng)地址做公網(wǎng)地址轉(zhuǎn)換。具體的,每個地址池對應一個公網(wǎng)地址資源數(shù)據(jù)鏈,所述公網(wǎng)地址資源數(shù)據(jù)鏈的節(jié)點數(shù)為CPU數(shù),且每個節(jié)點對應一個CPU ;每個節(jié)點分為塊標記和尾標記;每個用戶組對應一個用戶數(shù)據(jù)鏈,所述用戶數(shù)據(jù)鏈的節(jié)點數(shù)為CPU數(shù),且每個節(jié)點對應一個CPU ;每個節(jié)點包括塊標記、尾標記。實際應用中,所述負載分擔配置模塊41、負載分擔控制模塊42可以設置于CGN設備中。圖5為本發(fā)明實施例CGN的負載分擔的示意圖,本實施例中,所述CGN設備的類型可以為Ds-1ite CGN、NAT44、Bras nat44、NAT64等;用戶端設備對應的私網(wǎng)地址可以為私網(wǎng)IPv4、IPv6等;CGN設備為多業(yè)務處理單元,每個處理單元包含多個CPU。如圖5所示,首先,負載分擔配置模塊以地址池形式配置公網(wǎng)地址,并將公網(wǎng)地址資源分擔到CGN設備中不同處理單元的CPU上;其中,地址池的個數(shù)可根據(jù)實際需要進行設置。同時,可以配置用戶的類型,所述用戶的類型為用戶端設備對應的私網(wǎng)地址類型;用戶端設備也是采用動態(tài)的負載分擔的形式分流,即:將用戶端設備分擔到不同的CPU上;由負載分擔控制模塊生成負載分擔標記表,并將標記表信息發(fā)送到相應CPU ;經(jīng)過上述處理后,每個CPU分擔的公網(wǎng)地址數(shù),是基本均衡的;每個CPU所處理的用戶端設備的數(shù)目,也是基本均衡的。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
權(quán)利要求
1.一種負載分擔方法,其特征在于,所述方法包括: 以地址池形式配置公網(wǎng)地址; 接收到用戶端設備發(fā)送的流量后,根據(jù)所述用戶端設備發(fā)送的流量模型對用戶端設備進行分組,由各個中央處理器CPU為用戶端設備分配公網(wǎng)地址,并為用戶端設備的私網(wǎng)地址做公網(wǎng)地址轉(zhuǎn)換; 其中,每個地址池包括多個地址塊,每個地址塊對應一個CPU ;每個用戶組包括多個用戶塊,每個用戶塊對應一個CPU。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 根據(jù)地址池對應的地址資源數(shù)據(jù)鏈生成公網(wǎng)地址資源負載分擔標記表,根據(jù)用戶組對應的用戶數(shù)據(jù)鏈生成用戶端設備負載分擔標記表;所述地址資源數(shù)據(jù)鏈根據(jù)配置的地址池生成;所述用戶數(shù)據(jù)鏈根據(jù)配置的用戶組生成; 根據(jù)公網(wǎng)地址資源負載分擔標記表和用戶端設備負載分擔標記表生成的負載分擔控制信息發(fā)送給CPU ; 相應的,所述CPU為用戶端設備分配公網(wǎng)地址,并為用戶端設備的私網(wǎng)地址做公網(wǎng)地址轉(zhuǎn)換為: 所述CPU根據(jù)收到的負載分擔控制信息為用戶端設備分配公網(wǎng)地址,并為用戶端設備的私網(wǎng)地址做公網(wǎng)地址轉(zhuǎn)換。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述各個CPU在每個地址池中對應的公網(wǎng)地址數(shù)基本相同;具體實現(xiàn)方法為: 將當前地址池的 公網(wǎng)地址總數(shù)除以CPU數(shù)平方的整數(shù)值與CPU數(shù)的乘積個公網(wǎng)地址分配給各個CPU ;若還有公網(wǎng)地址剩余,則將剩余的公網(wǎng)地址除以CPU數(shù)的整數(shù)值個公網(wǎng)地址分配給各個CPU;若還有公網(wǎng)地址剩余,則將各個地址池中所述剩余的公網(wǎng)地址作為一個整體進行公網(wǎng)地址分配,使各個CPU對應的公網(wǎng)地址數(shù)基本相同。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述各個CPU分擔的用戶端設備數(shù)基本相同;具體實現(xiàn)方法為: 將當前用戶組的用戶端設備總數(shù)除以CPU數(shù)平方的整數(shù)值與CPU數(shù)的乘積個用戶端設備分配給各個CPU ;若還有用戶端設備剩余,則將剩余的用戶端設備除以CPU數(shù)的整數(shù)值個用戶端設備分配給各個CPU;若還有用戶端設備剩余,則將各個用戶組中剩余的用戶端設備作為一個整體進行用戶端設備分配,使各個CPU分配的用戶端設備數(shù)基本相同。
5.根據(jù)權(quán)利要求1至4任一項所述的方法,其特征在于,每個地址池對應一個公網(wǎng)地址資源數(shù)據(jù)鏈,所述公網(wǎng)地址資源數(shù)據(jù)鏈的節(jié)點數(shù)為CPU數(shù),且每個節(jié)點對應一個CPU ;每個節(jié)點分為塊標記和尾標記。
6.根據(jù)權(quán)利要求1至4任一項所述的方法,其特征在于,每個用戶組對應一個用戶數(shù)據(jù)鏈,所述用戶數(shù)據(jù)鏈的節(jié)點數(shù)為CPU數(shù),且每個節(jié)點對應一個CPU ;每個節(jié)點包括塊標記、尾 己 O
7.一種負載分擔裝置,其特征在于,所述裝置包括負載分擔配置模塊、負載分擔控制模塊、CPU ;其中, 所述負載分擔配置模塊,用于以地址池形式配置對公網(wǎng)地址;根據(jù)所述用戶端設備發(fā)送的流量模型對用戶端設備進行分組;其中,每個地址池包括多個地址塊,每個地址塊對應一個CPU ;每個用戶組包括多個用戶塊,每個用戶塊對應一個CPU ; 所述負載分擔控制模塊,將負載分擔控制信息發(fā)送給CPU ; 所述CPU,用于根據(jù)收到的負載分擔控制信息為用戶端設備分配公網(wǎng)地址,并為用戶端設備的私網(wǎng)地址做公網(wǎng)地址轉(zhuǎn)換。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述負載分擔控制模塊,具體用于根據(jù)公網(wǎng)地址資源數(shù)據(jù)鏈生成公網(wǎng)地址資源負載分擔標記表;以及,根據(jù)用戶數(shù)據(jù)鏈生成用戶端設備負載分擔標記表;并將根據(jù)公網(wǎng)地址資源負載分擔標記表和用戶端設備負載分擔標記表生成的負載分擔控制信息下發(fā)到CPU。
9.根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,每個地址池對應一個公網(wǎng)地址資源數(shù)據(jù)鏈,所述公網(wǎng)地址資源數(shù)據(jù)鏈的節(jié)點數(shù)為CPU數(shù),且每個節(jié)點對應一個CPU ;每個節(jié)點分為塊標記和尾標記; 每個用戶組對應一個用戶數(shù)據(jù)鏈,所述用戶數(shù)據(jù)鏈的節(jié)點數(shù)為CPU數(shù),且每個節(jié)點對應一個CPU ;每個節(jié)點包括塊標記、尾標記。
10.根據(jù)權(quán)利要求7或8所述的裝置,其特征在于,所述負載分擔配置模塊、負載分擔控制模塊設置于 CGN設備中。
全文摘要
本發(fā)明公開了一種負載分擔方法,以地址池形式配置公網(wǎng)地址;接收到用戶端設備發(fā)送的流量后,根據(jù)所述用戶端設備發(fā)送的流量模型對用戶端設備進行分組,由各個中央處理器CPU為用戶端設備分配公網(wǎng)地址,并為用戶端設備的私網(wǎng)地址做公網(wǎng)地址轉(zhuǎn)換;其中,每個地址池包括多個地址塊,每個地址塊對應一個CPU;每個用戶組包括多個用戶塊,每個用戶塊對應一個CPU。本發(fā)明還同時公開了一種負載分擔裝置,采用本發(fā)明所述方法及裝置,能夠解決在多個CPU上的公網(wǎng)地址資源以及用戶端設備負載分擔不均問題,既能提高CPU處理地址轉(zhuǎn)換的速度,又能實現(xiàn)較好的負載分擔效果。
文檔編號H04L12/803GK103117947SQ20131003214
公開日2013年5月22日 申請日期2013年1月28日 優(yōu)先權(quán)日2013年1月28日
發(fā)明者王 鋒, 陳貴香 申請人:中興通訊股份有限公司