專利名稱:基于fpga的高速網(wǎng)絡(luò)數(shù)據(jù)流負載均衡調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體涉及一種基于FPGA的高速網(wǎng)絡(luò)數(shù)據(jù)流負載均衡調(diào)度方法。
背景技術(shù):
目前現(xiàn)有網(wǎng)絡(luò)的各個核心部分隨著業(yè)務(wù)量的提高以及訪問量和數(shù)據(jù)流量的快速增長,其處理能力和計算強度也相應(yīng)地增大,使得單一的服務(wù)器設(shè)備根本無法承擔。在此情況下,如果扔掉現(xiàn)有設(shè)備去做硬件升級,這樣將造成現(xiàn)有資源的巨大浪費,針對這種情況,一些負載均衡方法應(yīng)運而生。當網(wǎng)絡(luò)應(yīng)用的訪問量不斷增長,單個處理單元無法滿足負載需求或者網(wǎng)絡(luò)應(yīng)用流量將要出現(xiàn)瓶頸時,負載均衡才會起到作用,其將單個重負載節(jié)點的計算分擔到多臺低速節(jié)點上做并行處理,使得系統(tǒng)處理能力得到大幅度提高。為增加網(wǎng)絡(luò)吞吐量、加強網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性,選擇合理的負載均衡方法至關(guān)重要。目前常用的負載均衡方法中輪循調(diào)度、加權(quán)輪循調(diào)度、地址散列調(diào)度等為靜態(tài)負載均衡方法,另外最小連接調(diào)度、最小數(shù)據(jù)包均衡、最快響應(yīng)時間均衡等為動態(tài)負載均衡方法。然而單一的負載均衡方法很難滿足網(wǎng)絡(luò)應(yīng)用多樣性與復(fù)雜性要求,另外以上負載均衡方法都沒有考慮各個子通道的當前流量負載情況,故而導(dǎo)致在各子通道中流量均衡度不高;此外現(xiàn)有的負載均衡方法中鮮有考慮流粒度(屬于同一條TCP流的數(shù)據(jù)包必須被調(diào)度到相同的子通道中)問題,這在很大程度上影響了入侵檢測、協(xié)議還原等對數(shù)據(jù)流的完整性需求。FPGA (Field Programmable Gate Array,現(xiàn)場可編程門陣列)不僅解決了定制電路的不足,也結(jié)合了軟件與硬件各自的優(yōu)點,和純軟件實現(xiàn)速度相比得到了極大的提高,和純硬件實現(xiàn)相比又有了更大的靈活性。除此之外,F(xiàn)PGA有豐富的片內(nèi)資源,減少了外圍電路設(shè)計,提聞了系統(tǒng)的穩(wěn)定度。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是現(xiàn)有的負載均衡方法均衡度不高的不足,提供一種基于FPGA的高速網(wǎng)絡(luò)數(shù)據(jù)流負載均衡調(diào)度方法。為解決上述問題,本發(fā)明是通過以下方案實現(xiàn)的:基于FPGA的高速網(wǎng)絡(luò)數(shù)據(jù)流負載均衡調(diào)度方法,包括如下步驟:S1.數(shù)據(jù)包首部信息提取,F(xiàn)PGA采用TEMAC (TriMode Ethernet MAC,三態(tài)以太網(wǎng)MAC)核將物理層比特流封裝成MAC幀,然后再相應(yīng)提取源IP地址、目的IP地址、源端口、目的端口、復(fù)位RST、同步SYN和終止FIN ;S2.哈希運算,對提取的源IP地址、目的IP地址、源端口和目的端口進行四元組哈希運算,并將哈希結(jié)果對4求模取余數(shù);S3.流映射表管理,包括流映射表的寫操作管理、讀操作管理和清除操作管理;即
S31.判斷TCP新建連接,若SYN=I,則根據(jù)在本周期中隊列組中最大剩余數(shù)據(jù)量,判斷是否存在隊列擁塞,若最大剩余數(shù)據(jù)量沒有超過一定門限值則視為沒有擁塞,則不做任何處理;若最大剩余量超過該門限且存在某種梯度時視為輕度、中度與重度擁塞,則分別按某種概率增長方式依概率選中最小流量端口作為當前數(shù)據(jù)包的輸出端口,并標記流映射端口有效,同時將該數(shù)據(jù)包對應(yīng)的源IP地址和目的IP地址寫入CAM(Content AddressableMemory,內(nèi)容可尋址存儲器)中,并將該CAM地址作為RAM (Random Access Memory,隨機存儲器)地址,將該輸出端口值存入RAM中,以備后續(xù)同一條流的數(shù)據(jù)包訪問;若SYN=O,則執(zhí)行 S32 ;S32.判斷TCP復(fù)位,若RST=I,則將數(shù)據(jù)包對應(yīng)的源IP地址和目的IP地址匹配CAM,若匹配CAM命中,則將該CAM地址寫入指定FIFO (First Input First Output,先入先出隊列),以示該CAM地址單元已被清除,可以為S31中新建連接提供備用,盡量解決CAM不夠用情況,若匹配CAM不命中,則不做任何處理;若RST=O,執(zhí)行S33 ;S33.將數(shù)據(jù)包相應(yīng)的源IP地址和目的IP地址匹配CAM,若匹配CAM命中,則將該命中的CAM地址作為地址訪問RAM,得到該數(shù)據(jù)包的輸出端口,并標記流映射端口有效,再判斷TCP終止,若FIN=I,則再將該CAM地址寫入指定FIF0,以示該CAM地址單元已被清除,可以為S31中新建連接提供備用,盡量解決CAM不夠用情況,若FIN=O,則表示該數(shù)據(jù)包為普通數(shù)據(jù)包,跳出此步;若匹配CAM不命中,則不做任何處理;S4.輸出端口選擇,根據(jù)流映射表與哈希值來選擇當前數(shù)據(jù)包的輸出端口,即在流映射端口有效時優(yōu)先選擇流映射端口為輸出端口,在流映射端口無效時選擇哈希值為輸出端口 ;S5.數(shù)據(jù)輸入輸出管理,包含將數(shù)據(jù)包寫入至緩沖池與讀取到對應(yīng)PHY (Physicallayer,物理層)端口;S51.從緩沖器接收數(shù)據(jù)包,并傳遞該數(shù)據(jù)包長度信息,另外根據(jù)輸出端口修改相應(yīng)指定字段,并將該數(shù)據(jù)包存儲至緩沖池中,同時記錄一次數(shù)據(jù)包傳輸?shù)氖椎刂?;S52.根據(jù)上述記錄中的首地址,讀取緩沖池中的數(shù)據(jù)包,根據(jù)修改的輸出端口字段發(fā)送至相應(yīng)輸出隊列,使之從該端口發(fā)出;S6.隊列分發(fā)與存儲管理,將數(shù)據(jù)包相應(yīng)信息分發(fā)存儲至PHY端口對應(yīng)FIFO中,并經(jīng)過一定周期后反饋當前隊列組最大剩余數(shù)據(jù)量;S7.流量統(tǒng)計與反饋,在一定周期內(nèi)統(tǒng)計并反饋當前最小流量端口,并基于速率反饋動態(tài)調(diào)整下一次統(tǒng)計的周期。上述方案中,步驟S2與S3并發(fā)執(zhí)行,此外步驟S5、S6與S7也并發(fā)執(zhí)行。上述方案中,步驟S2中所述哈希運算最好為移位異或哈希運算。上述方案中,為了加快數(shù)據(jù)包處理速率,步驟S5中的數(shù)據(jù)包的寫入與讀取最好以塊為單位,其中一個塊中有多個數(shù)據(jù)包。上述方案中,步驟S7中將前一個周期中端口速率以及當前端口速率按一定關(guān)聯(lián)因子計算出速率,進而依據(jù)當前端口流量得出下一個統(tǒng)計周期值。本發(fā)明的有益效果在于:通過本發(fā)明可以利用FPGA實現(xiàn)高速網(wǎng)絡(luò)數(shù)據(jù)流負載均衡調(diào)度,且該調(diào)度方法能適應(yīng)突發(fā)流量,并在保證流粒度的前提下,實現(xiàn)高速網(wǎng)絡(luò)數(shù)據(jù)流的瞬時均衡。
圖1是本發(fā)明優(yōu)選實施例的負載均衡調(diào)度方法總體框架示意圖;圖2是本發(fā)明優(yōu)選實施例的負載均衡調(diào)度方法流程圖;圖3是本發(fā)明優(yōu)選實施例的流映射管理流程圖。
具體實施例方式下面結(jié)合附圖,給出本發(fā)明的具體實施例。需要說明的是:實施例中的參數(shù)并不影響本發(fā)明的一般性。參見圖1與圖2,其中圖1是本發(fā)明的總體框架示意圖,圖2是本發(fā)明的整體流程圖。本發(fā)明具體設(shè)計是:首先提取數(shù)據(jù)包的首部信息,對其首部信息并發(fā)執(zhí)行哈希運算和流映射管理,同時將數(shù)據(jù)包存儲到一個數(shù)據(jù)緩沖器中,若流映射表端口有效則優(yōu)先選擇流映射端口為輸出端口,否則以哈希值作為輸出端口;根據(jù)輸出端口并發(fā)執(zhí)行將數(shù)據(jù)包從相應(yīng)端口發(fā)出,保證了數(shù)據(jù)包先后順序以及流的相關(guān)性,將數(shù)據(jù)包長度信息寫入端口對應(yīng)的FIFO,以及周期性訪問該隊列組來統(tǒng)計在該周期中最小流量端口并將其反饋,同時基于速率反饋動態(tài)調(diào)整下一次周期的大小,使其適應(yīng)網(wǎng)絡(luò)突發(fā)流量。其中每一個先入先出隊列對應(yīng)一個千兆以太網(wǎng)(GBE,Giga Bit Ethernet)端口。上述設(shè)計充分發(fā)揮FPGA并行計算優(yōu)勢,提高網(wǎng)絡(luò)吞吐量,實現(xiàn)高速網(wǎng)絡(luò)數(shù)據(jù)流瞬時動態(tài)均衡。結(jié)合圖2、圖3對基于FPGA的高速網(wǎng)絡(luò)數(shù)據(jù)流負載均衡調(diào)度過程做進一步說明。具體包含如下步驟:S1.數(shù)據(jù)包首部信息提取,F(xiàn)PGA采用TEMAC核將物理層比特流封裝成MAC幀,然后再相應(yīng)提取源IP地址、目的IP地址、源端口、目的端口、復(fù)位RST、同步SYN、終止FIN ;S2.哈希運算,對提取的源IP地址、目的IP地址、源端口、目的端口四元組哈希運算,將哈希結(jié)果對4求模取余數(shù)。在S2中的哈希運算采用移位異或哈希運算,提高了哈希值的均衡性,由于移位異或哈希為本領(lǐng)域熟知技術(shù),在這里不再詳細描述;需要指出的是:S2與后續(xù)S3為并發(fā)執(zhí)行,為描述方便記為S2與S3。S3.流映射管理,該過程包括流映射表寫操作管理、讀操作管理和清除操作管理,參見圖3,具體包括如下步驟:S31.判斷TCP新建連接,若SYN=I,根據(jù)在本周期中隊列組中最大剩余數(shù)據(jù)量,判斷是否存在隊列擁塞,若最大剩余數(shù)據(jù)量,以下簡稱最大剩余量,小于初始值的70%時視為沒有擁塞,則不做任何處理;若最大剩余量超過70%但小于等于80%時視為輕度擁塞,則以1/4為概率選中最小流量端口作為當前數(shù)據(jù)包的輸出端口,并標記流映射端口有效,同時將該數(shù)據(jù)包對應(yīng)源IP地址、目的IP地址寫入CAM中,并將該CAM地址作為RAM地址,將該輸出端口值存入RAM中,以備后續(xù)同一條流的數(shù)據(jù)包訪問;若最大剩余量超過80%但小于等于90%時視為中度擁塞,則以1/2為概率選中最小流量端口作為當前數(shù)據(jù)包的輸出端口,后續(xù)操作與上類同;若最大剩余量超過90%時視為重度擁塞,則將最小流量端口作為當前數(shù)據(jù)包的輸出端口,即以概率為I選中最小流量端口,后續(xù)操作與上類同,不再贅述;若SYN=O,則執(zhí)行S32 ;
S32.判斷TCP復(fù)位,若RST=I,則該數(shù)據(jù)包相應(yīng)源IP地址、目的IP地址匹配CAM,若命中,則將該CAM地址寫入指定FIFO,以示該CAM地址單元已被清除,可以為S31中新建連接提供備用,盡量解決CAM不夠用情況,這里不再贅述,若不命中,則不做任何處理;若RST=O,執(zhí)行 S33 ;S33.將數(shù)據(jù)包相應(yīng)源IP地址、目的IP地址匹配CAM,若命中,則將該命中的CAM地址作為地址訪問RAM,得到該數(shù)據(jù)包的輸出端口,并標記流映射端口有效,再判斷TCP終止,若FIN=I,則再將該CAM地址寫入指定FIFO,以示該CAM地址單元已被清除,可以為S31中新建連接提供備用,盡量解決CAM不夠用情況,若FIN=O,則表示該數(shù)據(jù)包為普通數(shù)據(jù)包,跳出此步;若匹配CAM不命中,則不做任何處理;S4.選擇輸出端口,選擇器根據(jù)流映射端口有效優(yōu)先選擇流映射端口為該數(shù)據(jù)包的輸出端口,否則選擇哈希值為其輸出端口,然后將該輸出端口轉(zhuǎn)發(fā)出去; S5.數(shù)據(jù)輸入輸出管理,包含將數(shù)據(jù)包寫入至緩沖池與讀取到對應(yīng)PHY端口,具體包括如下步驟:S51.從緩沖器接收數(shù)據(jù)包,并傳遞該數(shù)據(jù)包長度信息,另外根據(jù)輸出端口修改相應(yīng)指定字段,并將該數(shù)據(jù)包存儲至緩沖池中,同時記錄一次數(shù)據(jù)包傳輸?shù)氖椎刂?;S52.根據(jù)上述記錄中的首地址,讀取緩沖池中的數(shù)據(jù)包,根據(jù)修改的輸出端口字段發(fā)送至相應(yīng)輸出隊列,使之從該端口發(fā)出;在步驟S5中的數(shù)據(jù)包的寫入與讀取可以以單個數(shù)據(jù)包為單位,但為了能夠加快數(shù)據(jù)包處理速率,在本發(fā)明優(yōu)選實施例中,步驟S5中的數(shù)據(jù)包寫入與讀取以塊為單位,其中一個塊中有多個數(shù)據(jù)包。需要指出的是:步驟S5與后續(xù)步驟S6和S7為并發(fā)執(zhí)行,為描述方便記為S5、S6與S7。S6.隊列分發(fā)與存儲管理,將接收到的數(shù)據(jù)包長度信息根據(jù)輸出端口將其分發(fā)存儲至PHY端口對應(yīng)FIFO中,并經(jīng)過一定周期后反饋當前隊列組最大剩余數(shù)據(jù)量;S7.流量統(tǒng)計與反饋,在一定周期內(nèi)統(tǒng)計并反饋當前最小流量端口,并基于速率反饋動態(tài)調(diào)整下一次統(tǒng)計的周期,采用將前一個周期中端口速率以及當前端口速率按一定關(guān)聯(lián)因子計算出速率,進而依據(jù)當前端口流量得出下一個統(tǒng)計周期值,使其滿足突發(fā)流量的處理需求。初始時設(shè)置統(tǒng)計周期為2s。以上內(nèi)容是結(jié)合具體的優(yōu)選實施方式對本發(fā)明的進一步詳細說明,不能認定本發(fā)明的具體實施方式
僅限于此,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單的推演或替換,都應(yīng)該視為屬于本發(fā)明的權(quán)利要求書的保護范圍。
權(quán)利要求
1.基于FPGA的高速網(wǎng)絡(luò)數(shù)據(jù)流負載均衡調(diào)度方法,其特征是包括如下步驟: 51.數(shù)據(jù)包首部信息提取,F(xiàn)PGA采用TEMAC核將物理層比特流封裝成MAC幀,然后再相應(yīng)提取源IP地址、目的IP地址、源端口、目的端口、復(fù)位RST、同步SYN和終止FIN ; 52.哈希運算,對提取的源IP地址、目的IP地址、源端口和目的端口進行四元組哈希運算,并將哈希結(jié)果對4求模取余數(shù); 53.流映射表管理,包括流映射表的寫操作管理、讀操作管理和清除操作管理;即 531.判斷TCP新建連接,若SYN=I,則根據(jù)在本周期中隊列組中最大剩余數(shù)據(jù)量,判斷是否存在隊列擁塞,若最大剩余數(shù)據(jù)量沒有超過一定門限值則視為沒有擁塞,則不做任何處理;若最大剩余量超過該門限且存在某種梯度時視為輕度、中度與重度擁塞,則分別按某種概率增長方式依概率選中最小流量端口作為當前數(shù)據(jù)包的輸出端口,并標記流映射端口有效,同時將該數(shù)據(jù)包對應(yīng)的源IP地址和目的IP地址寫入CAM中,并將該CAM地址作為RAM地址,將該輸出端口值存入RAM中,以備后續(xù)同一條流的數(shù)據(jù)包訪問;若SYN=O,則執(zhí)行S32 ; 532.判斷TCP復(fù)位,若RST=I,則將數(shù)據(jù)包對應(yīng)的源IP地址和目的IP地址匹配CAM,若匹配CAM命中,則將該CAM地址寫入指定FIFO,以示該CAM地址單元已被清除,若匹配CAM不命中,則不做任何處理;若RST=O,執(zhí)行S33 ; 533.將數(shù)據(jù)包相應(yīng)的源IP地址和目的IP地址匹配CAM,若匹配CAM命中,則將該命中的CAM地址作為地址訪問RAM,得到該數(shù)據(jù)包的輸出端口,并標記流映射端口有效,再判斷TCP終止,若FIN=I,則再將該CAM地址寫入指定FIFO,以示該CAM地址單元已被清除,若FIN=O,則表示該數(shù)據(jù)包為普通數(shù)據(jù)包,跳出此步;若匹配CAM不命中,則不做任何處理; 54.輸出端口選擇 ,根據(jù)流映射表與哈希值來選擇當前數(shù)據(jù)包的輸出端口,即在流映射端口有效時優(yōu)先選擇流映射端口為輸出端口,在流映射端口無效時選擇哈希值為輸出端Π ; 55.數(shù)據(jù)輸入輸出管理,包含將數(shù)據(jù)包寫入至緩沖池與讀取到對應(yīng)PHY端口;SP 551.從緩沖器接收數(shù)據(jù)包,并傳遞該數(shù)據(jù)包長度信息,另外根據(jù)輸出端口修改相應(yīng)指定字段,并將該數(shù)據(jù)包存儲至緩沖池中,同時記錄一次數(shù)據(jù)包傳輸?shù)氖椎刂罚? 552.根據(jù)上述記錄中的首地址,讀取緩沖池中的數(shù)據(jù)包,根據(jù)修改的輸出端口字段發(fā)送至相應(yīng)輸出隊列,使之從該端口發(fā)出; 56.隊列分發(fā)與存儲管理,將數(shù)據(jù)包相應(yīng)信息分發(fā)存儲至PHY端口對應(yīng)FIFO中,并經(jīng)過一定周期后反饋當前隊列組最大剩余數(shù)據(jù)量; 57.流量統(tǒng)計與反饋,在一定周期內(nèi)統(tǒng)計并反饋當前最小流量端口,并基于速率反饋動態(tài)調(diào)整下一次統(tǒng)計的周期。
2.根據(jù)權(quán)利要求1所述的基于FPGA的高速網(wǎng)絡(luò)數(shù)據(jù)流負載均衡調(diào)度方法,其特征是, 步驟S2與S3并發(fā)執(zhí)行,此外步驟S5、S6與S7也并發(fā)執(zhí)行。
3.根據(jù)權(quán)利要求1所述的基于FPGA的高速網(wǎng)絡(luò)數(shù)據(jù)流負載均衡調(diào)度方法,其特征是, 步驟S2中所述哈希運算為移位異或哈希運算。
4.根據(jù)權(quán)利要求1所述的基于FPGA的高速網(wǎng)絡(luò)數(shù)據(jù)流負載均衡調(diào)度方法,其特征是, 步驟S5中的數(shù)據(jù)包的寫入與讀取以塊為單位,其中一個塊中有多個數(shù)據(jù)包。
5.根據(jù)權(quán)利要求1所述的基于FPGA的高速網(wǎng)絡(luò)數(shù)據(jù)流負載均衡調(diào)度方法,其特征是,步驟S7中將前一個周期中端口速率以及當前端口速率按一定關(guān)聯(lián)因子計算出速率,進而依據(jù)當前端口流量 得出下一個統(tǒng)計周期值。
全文摘要
本發(fā)明公開一種基于FPGA的高速網(wǎng)絡(luò)數(shù)據(jù)流負載均衡調(diào)度方法,該方法充分發(fā)揮FPGA并行計算的優(yōu)勢,前端并發(fā)執(zhí)行哈希運算和根據(jù)隊列組的擁塞程度依概率來選擇輸出端口,并采取流映射端口優(yōu)先的策略;后端根據(jù)輸出端口并發(fā)將數(shù)據(jù)包從相應(yīng)PHY端口發(fā)出,將數(shù)據(jù)包相應(yīng)信息寫入PHY端口對應(yīng)FIFO并按周期反饋當前最大剩余數(shù)據(jù)量,以及統(tǒng)計并反饋本周期內(nèi)的最小流量端口同時基于速率反饋動態(tài)調(diào)整下一次統(tǒng)計的周期,使其能適應(yīng)突發(fā)流量,并在保證流粒度的前提下,實現(xiàn)高速網(wǎng)絡(luò)數(shù)據(jù)流的瞬時均衡。
文檔編號H04L12/803GK103139093SQ20131005649
公開日2013年6月5日 申請日期2013年2月22日 優(yōu)先權(quán)日2013年2月22日
發(fā)明者王勇, 劉勇, 陶曉玲, 何倩 申請人:桂林電子科技大學(xué)