一種負(fù)載均衡方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明設(shè)及數(shù)據(jù)傳輸技術(shù),特別設(shè)及一種負(fù)載均衡方法和系統(tǒng)。
【背景技術(shù)】
[0002] 目前,隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,通過網(wǎng)絡(luò)技術(shù)傳輸?shù)臄?shù)據(jù)也越來越多。在進(jìn)行上 述數(shù)據(jù)傳輸時(shí),一般都會(huì)使用相應(yīng)的服務(wù)器進(jìn)行傳輸。為了保證各個(gè)服務(wù)器的工作效率,在 進(jìn)行數(shù)據(jù)傳輸時(shí)將使用負(fù)載均衡設(shè)備。負(fù)載均衡設(shè)備將根據(jù)預(yù)設(shè)的分配策略,并根據(jù)所接 收到的各個(gè)數(shù)據(jù)請(qǐng)求,完成相應(yīng)的數(shù)據(jù)傳輸。
[0003] 在進(jìn)行上述數(shù)據(jù)傳輸時(shí),通常會(huì)有同源同宿的要求,即同一個(gè)會(huì)話的報(bào)文,從同一 個(gè)出端口發(fā)出。
[0004] 現(xiàn)有技術(shù)中已經(jīng)提出了一種相應(yīng)的數(shù)據(jù)傳輸方法。在該數(shù)據(jù)傳輸方法中,將先區(qū) 分所接收到的數(shù)據(jù)包是上行數(shù)據(jù)包還是下行數(shù)據(jù)包,然后對(duì)數(shù)據(jù)包進(jìn)行解析,剝離出鏈路 層信息;接著剝離出網(wǎng)絡(luò)層信息,對(duì)上行數(shù)據(jù)包提取源IP地址,對(duì)下行數(shù)據(jù)包提取目標(biāo)IP地 址;隨后再對(duì)所提取的地址進(jìn)行散列計(jì)算,得出散列值;最后,將相同散列值的數(shù)據(jù)包存入 同一個(gè)隊(duì)列。在該方法中,通過對(duì)數(shù)據(jù)包的IP地址或者數(shù)據(jù)包特定的偏移位置進(jìn)行散列計(jì) 算,實(shí)現(xiàn)"同源同宿",保證了同一個(gè)用戶的所有數(shù)據(jù)包都被放入同樣的隊(duì)列中,應(yīng)用程序處 理的時(shí)候,就不必在不同隊(duì)列進(jìn)行捜索,避免"訪問競(jìng)爭(zhēng)"的同時(shí)也就提升了數(shù)據(jù)包的處理 效率。
[0005] 但是,上述的現(xiàn)有技術(shù)中還存在一些問題,例如,在上述的方法中,需要區(qū)分?jǐn)?shù)據(jù) 包是上行數(shù)據(jù)包還是下行數(shù)據(jù)包,而且還需要對(duì)源IP地址和目的IP地址共8字節(jié)即64位數(shù) 據(jù)進(jìn)行存儲(chǔ)、建表、查詢,因此將耗費(fèi)較多的存儲(chǔ)空間;同時(shí),該方法需要HASH散列存儲(chǔ),因 此將導(dǎo)致CPU開銷巨大,性能低下;此外,如果將該方法應(yīng)用于IPv6場(chǎng)合,則系統(tǒng)開銷將會(huì)更 大。
[0006] 由此可知,現(xiàn)有技術(shù)中的上述方法中還存在一些問題,亟待解決。
【發(fā)明內(nèi)容】
[0007] 有鑒于此,本發(fā)明提供一種負(fù)載均衡方法和系統(tǒng),從而可W在進(jìn)行負(fù)載均衡的同 時(shí),使得所輸出的報(bào)文都符合同源同宿規(guī)則,并可減少存儲(chǔ)空間,提高系統(tǒng)的整體性能。
[000引本發(fā)明的技術(shù)方案具體是運(yùn)樣實(shí)現(xiàn)的:
[0009] -種負(fù)載均衡方法,該方法包括:
[0010] 從外部接收?qǐng)?bào)文;
[0011] 根據(jù)預(yù)設(shè)的流分類策略對(duì)所接收的報(bào)文進(jìn)行流分類,確定所接收到的報(bào)文所符合 的匹配規(guī)則組合;
[0012] 將所接收到的符合同源同宿規(guī)則的報(bào)文發(fā)送到預(yù)先設(shè)置的與其所符合的匹配規(guī) 則組合相對(duì)應(yīng)的負(fù)載均衡單元;
[0013] 各個(gè)負(fù)載均衡單元根據(jù)所接收的報(bào)文進(jìn)行內(nèi)部負(fù)載均衡,將所接收到的報(bào)文根據(jù) 內(nèi)部負(fù)載均衡的結(jié)果發(fā)送到相應(yīng)的出端口;
[0014] 其中,所述預(yù)設(shè)的流分類策略包括:
[0015] 預(yù)先在源IP地址和目的IP地址中的預(yù)設(shè)位置對(duì)應(yīng)地截取n位;其中,所述n為小于 或等于32的正整數(shù);
[0016] 對(duì)所截取的n位源IP地址、目的IP地址的所有可能的取值進(jìn)行排列組合,并將每一 種排列組合結(jié)果作為一種匹配規(guī)則;
[0017] 根據(jù)報(bào)文的源IP地址和目的IP地址中的預(yù)設(shè)位置的n位的實(shí)際取值,確定所對(duì)應(yīng) 的排列組合結(jié)果,并根據(jù)所確定的排列組合結(jié)果確定該報(bào)文所符合的匹配規(guī)則組合;其中, 所述匹配規(guī)則組合中包括至少一種匹配規(guī)則。
[0018] 較佳的,所述將所接收到的符合同源同宿規(guī)則的報(bào)文發(fā)送到預(yù)先設(shè)置的與其所符 合的匹配規(guī)則組合相對(duì)應(yīng)的負(fù)載均衡單元包括:
[0019] 預(yù)先設(shè)置X個(gè)負(fù)載均衡單元,且每個(gè)負(fù)載均衡單元都一一對(duì)應(yīng)一種符合同源同宿 規(guī)則的匹配規(guī)則組合;其中,所述X為種匹配規(guī)則中符合同源同宿規(guī)則的匹配規(guī)則組合的 數(shù)量;
[0020] 將所接收到的符合同源同宿規(guī)則的報(bào)文發(fā)送到與其所符合的匹配規(guī)則組合相對(duì) 應(yīng)的負(fù)載均衡單元。
[0021 ]較佳的,所述n的取值小于或等于4。
[0022] 較佳的,所述源IP地址和目的IP地址中的預(yù)設(shè)位置的n位為:
[0023] 源IP地址和目的IP地址中的最后2位。
[0024] 較佳的,所述X通過如下公式得到:
[0026] 較佳的,所述各個(gè)負(fù)載均衡單元根據(jù)所接收的報(bào)文進(jìn)行內(nèi)部負(fù)載均衡,將所接收 到的報(bào)文根據(jù)內(nèi)部負(fù)載均衡的結(jié)果發(fā)送到相應(yīng)的出端口包括:
[0027] 從報(bào)文的源IP地址和目的IP地址中的預(yù)設(shè)第二位置對(duì)應(yīng)地選取X位;其中,所述X 為小于或等于32的正整數(shù);
[0028] 對(duì)所選取的X位源IP地址和目的IP地址進(jìn)行異或計(jì)算,然后進(jìn)行對(duì)m取模計(jì)算;
[0029] 將所接收到的報(bào)文發(fā)送到與取模計(jì)算的結(jié)果相應(yīng)的出端口。
[0030] 較佳的,所述X的取值小于或等于6。
[0031] 本發(fā)明還提供了一種負(fù)載均衡系統(tǒng),該系統(tǒng)包括:收包單元、流分類單元、重定向 單元和多個(gè)負(fù)載均衡單元;
[0032] 所述收包單元中設(shè)置有多個(gè)入端口,用于從外部接收?qǐng)?bào)文,并將所接收的報(bào)文發(fā) 生給所述流分類單元;
[0033] 所述流分類單元,用于根據(jù)預(yù)設(shè)的流分類策略對(duì)所接收的報(bào)文進(jìn)行流分類,確定 所接收到的報(bào)文所符合的匹配規(guī)則組合;將所接收到的報(bào)文W及該報(bào)文所符合的匹配規(guī)則 組合發(fā)生給所述重定向單元;
[0034] 所述重定向單元,用于將所接收到的符合同源同宿規(guī)則的報(bào)文發(fā)送到預(yù)先設(shè)置的 與其所符合的匹配規(guī)則組合相對(duì)應(yīng)的負(fù)載均衡單元;
[0035] 所述各個(gè)負(fù)載均衡單元,用于根據(jù)所接收的報(bào)文進(jìn)行內(nèi)部負(fù)載均衡,將所接收到 的報(bào)文根據(jù)內(nèi)部負(fù)載均衡的結(jié)果發(fā)送到相應(yīng)的出端口;
[0036] 其中,所述預(yù)設(shè)的流分類策略包括:
[0037] 預(yù)先在源IP地址和目的IP地址中的預(yù)設(shè)位置對(duì)應(yīng)地截取n位;其中,所述n為小于 或等于32的正整數(shù);
[0038] 對(duì)所截取的n位源IP地址、目的IP地址的所有可能的取值進(jìn)行排列組合,并將每一 種排列組合結(jié)果作為一種匹配規(guī)則;
[0039] 根據(jù)報(bào)文的源IP地址和目的IP地址中的預(yù)設(shè)位置的n位的實(shí)際取值,確定所對(duì)應(yīng) 的排列組合結(jié)果,并根據(jù)所確定的排列組合結(jié)果確定該報(bào)文所符合的匹配規(guī)則組合;其中, 所述匹配規(guī)則組合中包括至少一種匹配規(guī)則。
[0040] 較佳的,所述負(fù)載均衡單元包括:發(fā)包模塊和負(fù)載均衡引擎;
[0041] 所述發(fā)包模塊中設(shè)置有m個(gè)出端口;
[0042] 所述負(fù)載均衡引擎,用于根據(jù)所接收的報(bào)文進(jìn)行內(nèi)部負(fù)載均衡,將所接收到的報(bào) 文根據(jù)內(nèi)部負(fù)載均衡的結(jié)果發(fā)送到所述發(fā)包模塊中相應(yīng)的出端口。
[0043] 如上可見,在本發(fā)明的技術(shù)方案中,由于是先根據(jù)預(yù)設(shè)的流分類策略確定所接收 到的報(bào)文所符合的匹配規(guī)則組合,然后再將符合同源同宿規(guī)則的報(bào)文發(fā)送到預(yù)先設(shè)置的與 其所符合的匹配規(guī)則組合相對(duì)應(yīng)的負(fù)載均衡單元,而且各個(gè)負(fù)載均衡單元均可根據(jù)所接收 的報(bào)文進(jìn)行內(nèi)部負(fù)載均衡,將所接收到的報(bào)文根據(jù)內(nèi)部負(fù)載均衡的結(jié)果發(fā)送到相應(yīng)的出端 口,因此使得同一個(gè)會(huì)話的報(bào)文,只會(huì)從同一個(gè)出端口發(fā)出,從而在進(jìn)行負(fù)載均衡的同時(shí), 使得所輸出的報(bào)文都符合同源同宿規(guī)則。而且,在本發(fā)明的技術(shù)方案中,無需對(duì)源IP地址和 目的IP地址的所有字節(jié)進(jìn)行存儲(chǔ)、建表、查詢等操作,而只需關(guān)注源IP地址和目的IP地址中 預(yù)先設(shè)置的n位,從而可W大大減少存儲(chǔ)空間;另外,在本發(fā)明的技術(shù)方案中,無需進(jìn)行HASH 散列存儲(chǔ),可W大大減少計(jì)算工作量,降低對(duì)系統(tǒng)資源的占用,提高系統(tǒng)的整體性能;此外, 本發(fā)明的技術(shù)方案在IPV4和IPV6場(chǎng)合都通用,而無需進(jìn)行更改。
【附圖說明】
[0044] 圖1為本發(fā)明實(shí)施例中的負(fù)載均衡方法的流程示意圖。
[0045] 圖2為本發(fā)明實(shí)施例中的負(fù)載均衡系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0046] 為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,W下參照附圖并舉實(shí)施例,對(duì) 本發(fā)明進(jìn)一步詳細(xì)說明。
[0047] 本實(shí)施例提供了一種負(fù)載均衡方法和系統(tǒng)。
[0048] 圖1為本發(fā)明實(shí)施例中的負(fù)載均衡方法的流程示意圖。如圖1所示,本發(fā)明實(shí)施例 中的負(fù)載均衡方法主要包括如下所述的步驟:
[0049] 步驟11,從外部接收?qǐng)?bào)文。
[0050] 在本發(fā)明的技術(shù)方案中,將首先從外部接收?qǐng)?bào)文,例如,較佳的,可W通過各個(gè)入 端口從外部接收?qǐng)?bào)文。
[0051] 由于各個(gè)報(bào)文從哪個(gè)入端口沒有任何規(guī)律,同一個(gè)會(huì)話的上行報(bào)文和下行報(bào)文會(huì) 隨機(jī)的從任意一個(gè)入端口進(jìn)入,因此如果不對(duì)從外部所接收的報(bào)文進(jìn)行任何處理即進(jìn)行傳 輸,則所傳輸?shù)膱?bào)文一般都不符合同源同宿規(guī)則。所述同源同宿規(guī)則為:同一個(gè)會(huì)