本發(fā)明屬于網(wǎng)絡(luò)數(shù)據(jù)處理技術(shù)領(lǐng)域,具體涉及一種基于FPGA的SDN交換機(jī)流表加密方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)、物聯(lián)網(wǎng)等領(lǐng)域的快速發(fā)展,大數(shù)據(jù)逐漸成為人們關(guān)注的焦點(diǎn),海量的數(shù)據(jù)處理使得其對(duì)網(wǎng)絡(luò)提出了更高的要求,傳統(tǒng)的網(wǎng)絡(luò)以及難以滿足其對(duì)資源的需求。
SDN(軟件定義網(wǎng)絡(luò))將轉(zhuǎn)發(fā)與控制分離,一方面進(jìn)行靈活控制,另一方面進(jìn)行快速轉(zhuǎn)發(fā)。我們可以將流表通過控制器下發(fā)至SDN交換機(jī)中并存儲(chǔ)在特定存儲(chǔ)器中,而該存儲(chǔ)器不具有安全性,任何人都可以讀取和修改存儲(chǔ)器流表內(nèi)容,很容易被人植入病毒以竊取各種信息,甚至惡意攻擊。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是現(xiàn)有SDN交換機(jī)中的存儲(chǔ)器易被讀取和修改的問題,提供一種基于FPGA的SDN交換機(jī)流表加密方法。
為解決上述問題,本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的:
一種基于FPGA的SDN交換機(jī)流表加密方法,包括如下步驟:
步驟1、上層控制器通過控制協(xié)議將指定流表下發(fā)至FPGA中;
步驟2、FPGA提取流表中的IP地址,并通過預(yù)定的加密算法對(duì)流表進(jìn)行加密;再以流表所提取到的IP地址作為尋址地址,將對(duì)應(yīng)的流表密文寫入SDN交換機(jī)的存儲(chǔ)器中;
步驟3、FPGA對(duì)客戶機(jī)發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)流進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)的采集,并對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行特征的提??;
步驟4、FPGA以流表所提取到的IP地址作為尋址地址從存儲(chǔ)器中讀出加密的流表;
步驟5、FPGA對(duì)從存儲(chǔ)器中讀出的密文進(jìn)行解密,并將解密后的流表與步驟3的網(wǎng)絡(luò)數(shù)據(jù)中所提取的特征信息進(jìn)行匹配;
步驟6、對(duì)于步驟3的網(wǎng)絡(luò)數(shù)據(jù)的轉(zhuǎn)發(fā)與否取決于步驟5中的匹配結(jié)果;若完全匹配,則轉(zhuǎn)發(fā)步驟3中客戶機(jī)發(fā)送的網(wǎng)絡(luò)數(shù)據(jù);否則,丟棄該網(wǎng)絡(luò)數(shù)據(jù),并將該網(wǎng)絡(luò)數(shù)據(jù)中的目的MAC地址轉(zhuǎn)發(fā)至上層控制器,上層控制器將其加入編號(hào)標(biāo)簽,設(shè)置生存時(shí)間,封裝成ARP請(qǐng)求報(bào)文,通過SDN交換機(jī)進(jìn)行ARP請(qǐng)求報(bào)文廣播;
步驟7、SDN交換機(jī)若收到ARP請(qǐng)求報(bào)文應(yīng)答,則提取該ARP請(qǐng)求報(bào)文中的特征信息并上傳上層控制器;
步驟8、上層控制器收到特征信息,封裝成流表后下發(fā)至FPGA,并返回步驟2。
上述步驟2中,加密算法為AES加密算法。
上述步驟2中,流表所提取到的IP地址通過Hash運(yùn)算映射后,形成尋址地址。
與現(xiàn)有技術(shù)相比,本發(fā)明可以利用FPGA的并行高速性,在保證數(shù)據(jù)高速轉(zhuǎn)發(fā)的情況下,增加了流表存儲(chǔ)的安全性。相比于流水線的查找方式,IP地址映射存儲(chǔ)器地址的查找方式又降低了數(shù)據(jù)的處理時(shí)間。
附圖說明
圖1為一種基于FPGA的SDN交換機(jī)流表加密方法的總體流程圖。
圖2為AES算法的總體流程。
具體實(shí)施方式
下面以NetMagic為例對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明,需要說明的是:實(shí)施例中的參數(shù)并不影響本發(fā)明的一般性。
一種基于FPGA的SDN交換機(jī)流表加密方法,如圖1所示,其具體步驟包含如下:
步驟S1、上位機(jī)將指定流表通過nmac協(xié)議下載至內(nèi)部FPGA中。
步驟S2、FPGA通過對(duì)流表的提取得到IP地址,然后通過AES加密算法對(duì)收到的流表進(jìn)行加密,具體加密過程如圖2所示,IP地址通過Hash運(yùn)算映射成26位DDR2寫入地址,并將對(duì)應(yīng)的流表密文寫入該地址當(dāng)中。
步驟S3、FPGA對(duì)客戶機(jī)發(fā)送的數(shù)據(jù)流在rx_tx_1000模塊中進(jìn)行數(shù)據(jù)的采集,并對(duì)數(shù)據(jù)進(jìn)行特征的提取。
步驟S4、FPGA將所提取到的IP地址作Hash運(yùn)算映射成26位DDR2讀取地址從DDR2中讀出加密的流表。
步驟S5、FPGA對(duì)從DDR2中讀出的加密流表進(jìn)行解密并與數(shù)據(jù)包中提取的特征信息匹配。
步驟S6、對(duì)于步驟3中的數(shù)據(jù)轉(zhuǎn)發(fā)與否取決于步驟5中的匹配結(jié)果,若完全匹配則轉(zhuǎn)發(fā),否則丟棄并將目的MAC地址轉(zhuǎn)發(fā)至NetMagic控制器,控制器對(duì)其加入編號(hào)標(biāo)簽,設(shè)置生存時(shí)間,封裝成ARP請(qǐng)求報(bào)文流,通過nmac協(xié)議下發(fā)至NetMagic進(jìn)行ARP廣播。
步驟S7、若NetMagic收到ARP應(yīng)答流,則提取特征信息并上傳NatMagic控制器。
步驟S8、控制器收到特征信息,封裝成流表并下發(fā)至FPGA重復(fù)步驟S2。
FPGA利用其硬件并行優(yōu)勢(shì),對(duì)上層控制器下發(fā)的流表數(shù)據(jù)進(jìn)行加密并以未加密數(shù)據(jù)中提取的IP地址作為寫入地址寫入存儲(chǔ)器中;對(duì)物理端口傳輸?shù)臄?shù)據(jù)進(jìn)行采集,根據(jù)采集到的IP地址作為讀取地址從存儲(chǔ)器中讀取對(duì)應(yīng)地址數(shù)據(jù)并解密。
以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施方式僅限于此,對(duì)于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單的推演或替換,都應(yīng)該視為屬于本發(fā)明的權(quán)利要求書的保護(hù)范圍。