專利名稱:基于fpga的快速地址查找算法的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及局域網(wǎng)、廣域網(wǎng)等以太網(wǎng)技術(shù)領(lǐng)域,可以內(nèi)嵌在任何以太網(wǎng)交換網(wǎng)或傳輸系統(tǒng)中,適用于點(diǎn)到點(diǎn)、點(diǎn)到多點(diǎn)鏈接來傳送多協(xié)議數(shù)據(jù)報(bào)文的通信方式,也涉及其它數(shù)據(jù)格式完成源端到目的端建立信息交換的應(yīng)用模式。
背景技術(shù):
以太網(wǎng)技術(shù)是當(dāng)今現(xiàn)有局域網(wǎng)最通用的通信協(xié)議標(biāo)準(zhǔn),以IP為代表的數(shù)據(jù)業(yè)務(wù)的迅速發(fā)展,都給網(wǎng)絡(luò)傳輸提出了更高的容量和功能要求,為了減少數(shù)據(jù)交換和查找表帶來的延遲,必須建立有效而且快速的地址查找算法。FLA算法采用動(dòng)態(tài)存儲(chǔ)結(jié)構(gòu),將任意長(zhǎng)度的二進(jìn)制值映射為固定長(zhǎng)度的較小二進(jìn)制值,這個(gè)小的二進(jìn)制值稱為關(guān)鍵字,關(guān)鍵字是一段數(shù)據(jù)唯一且極其緊湊的數(shù)值表示形式。 如果輸入數(shù)據(jù)中有變化,則關(guān)鍵字也會(huì)發(fā)生變化。而且把數(shù)據(jù)的存儲(chǔ)和查找消耗的時(shí)間大大降低,幾乎可以看成是常數(shù)時(shí)間,代價(jià)僅僅是消耗比較多的存儲(chǔ)空間,然而在當(dāng)前可利用內(nèi)存越來越多的情況下,用空間換時(shí)間的做法是值得的。另外,編碼比較容易也是它的特點(diǎn)之一。因此作為線性數(shù)據(jù)結(jié)構(gòu),與逐條的比較算法相比,F(xiàn)LA算法無疑是查找速度比較快、 經(jīng)濟(jì)實(shí)用的一種算法。但按照關(guān)鍵字為每一個(gè)輸入值〃分類〃,然后將這個(gè)元素存儲(chǔ)在相應(yīng)〃類〃所對(duì)應(yīng)的地方,因此不能保證每個(gè)關(guān)鍵字與輸入值是一一對(duì)應(yīng)的,極有可能出現(xiàn)對(duì)于不同的輸入值,卻計(jì)算出了相同的關(guān)鍵字,這樣就產(chǎn)生了"沖突"??梢圆捎弥匦翭LA算法來解決該問題,簡(jiǎn)單的說就是每次產(chǎn)生碰撞,都會(huì)根據(jù)關(guān)鍵字用另一個(gè)FLA函數(shù)重新算一個(gè)關(guān)鍵字, 直到探尋到一個(gè)不沖突的關(guān)鍵字。
發(fā)明內(nèi)容
根據(jù)設(shè)定的FLA函數(shù)(使用好的函數(shù)公式,在輸入數(shù)據(jù)中所做的更改就可以更改結(jié)果關(guān)鍵字中的所有位)和處理沖突方法將網(wǎng)絡(luò)地址映射到一個(gè)有限的地址區(qū)間上,并以關(guān)鍵字為地址區(qū)間中的偏移地址,作為記錄在表中的存儲(chǔ)位置。本算法基于FPGA的硬件邏輯開發(fā),不需要其它外部軟件或處理器的干預(yù),程序加載后自動(dòng)完成地址的學(xué)習(xí)/查找過程,可以支持單播、組播、廣播多種通信方式。本發(fā)明的技術(shù)方案如下模塊組件包括1.地址表,用來存儲(chǔ)地址信息及接收數(shù)據(jù)的端口號(hào);2.地址學(xué)習(xí)模塊,學(xué)習(xí)IP數(shù)據(jù)流中源地址信息,通過計(jì)算得到源地址的關(guān)鍵字, 并把地址信息寫入地址表中;3.地址查找模塊,查找IP數(shù)據(jù)流中目的地址,得到目的地址的關(guān)鍵字(也就是對(duì)應(yīng)其它IP數(shù)據(jù)流中源地址信息),查找地址表,由此知道IP數(shù)據(jù)流的輸出端口 ;4.地址老化模塊,可由外置的處理器模塊來配置老化的參數(shù)(使能、老化時(shí)間等級(jí)、老化時(shí)間周期等)和靜態(tài)地址。5.配置接口,提供標(biāo)準(zhǔn)的通信總線,連接外置的處理器芯片。注1 為了滿足其它的以太網(wǎng)通信協(xié)議,地址表中可以增加其它信息來實(shí)現(xiàn),如增加VLANID實(shí)現(xiàn)虛擬局域網(wǎng)技術(shù)。注2 地址表的空間大小由FPGA芯片內(nèi)嵌或外擴(kuò)的RAM來決定。注3 靜態(tài)地址不受老化時(shí)間的影響。任何一個(gè)端口的接收到IP數(shù)據(jù)流通過FLA算法,對(duì)新發(fā)現(xiàn)的地址信息加入到地址表中,最終形成整個(gè)交換網(wǎng)或傳輸系統(tǒng)的地址表項(xiàng),一旦源端口需發(fā)送數(shù)據(jù),可以快速從地址表中查找到目的地址信息和輸出端口,再由交換網(wǎng)或傳輸系統(tǒng)建立源端口到目的端口的傳送路徑,完成數(shù)據(jù)的可靠傳輸。為了節(jié)省地址空間,實(shí)現(xiàn)地址表的重復(fù)利用,開啟地址老化模塊,刪除地址表中超時(shí)不再使用的地址信息。
圖1所示為FLA算法在系統(tǒng)中的模型圖
具體實(shí)施例方式下面根據(jù)附圖和實(shí)例對(duì)本發(fā)明做進(jìn)一步詳細(xì)說明實(shí)例系統(tǒng)簡(jiǎn)化模型如圖1所示,以二個(gè)端口間單播數(shù)據(jù)為例,主機(jī)A(連接端口 1,IP 地址 192. 168. 1. 1, MAC 地址 00-aa-00-62-c6_01)向主機(jī) B (端口 2,IP 地址 192. 168. 1. 2,MAC 地址 00-aa-00-62-c6_02)發(fā)送數(shù)據(jù)。1.當(dāng)發(fā)送數(shù)據(jù)時(shí),主機(jī)A會(huì)在自己的ARP緩存表中尋找是否有目標(biāo)IP地址。如果找到了,也就知道了目標(biāo)MAC地址,直接把目標(biāo)MAC地址寫入幀里面發(fā)送就可以了 ;如果在ARP緩存表中沒有找到目標(biāo)IP地址,主機(jī)A就會(huì)在網(wǎng)絡(luò)上發(fā)送一個(gè)廣播,A主機(jī)MAC 地址是“主機(jī)A的MAC地址”,這表示向同一網(wǎng)段內(nèi)的所有主機(jī)發(fā)出這樣的詢問“我是 192. 168. 1. 1,我的硬件地址是〃主機(jī)A的MAC地址〃.請(qǐng)問IP地址為192. 168. 1. 2的MAC 地址是什么? ”,這時(shí)FLA算法就從端口 1學(xué)到了 00-aa-00-62-c6-01,寫入地址表中。2.網(wǎng)絡(luò)上其他主機(jī)并不響應(yīng)ARP詢問,只有主機(jī)B接收到這個(gè)幀時(shí),才向主機(jī)A 做出這樣的回應(yīng)"192. 168. 1. 2的MAC地址是00-aa-00-62-c6-02,,,從端口 2同樣學(xué)到了 00-aa-00-62-c6-02,寫入地址表中。3.主機(jī)A知道了主機(jī)B的MAC地址,而且地址表中也存儲(chǔ)了二條地址信息,主機(jī)A 向主機(jī)B發(fā)送數(shù)據(jù)時(shí),交換網(wǎng)或傳輸系統(tǒng)立即查到了主機(jī)A的輸入端口 1,發(fā)送到主機(jī)B輸出端口 2,建立硬件邏輯通路,主機(jī)B就接收到了主機(jī)A的數(shù)據(jù)。以上所述,僅為本發(fā)明典型的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此, 任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.基于FPGA的快速地址查找算法,包括地址表、地址老化模塊、地址學(xué)習(xí)模塊、地址查找模塊和配置接口。本發(fā)明涉及的系統(tǒng),其特征是算法由FPGA邏輯程序自動(dòng)完成,不需要其它外部軟件或處理器的干預(yù)。
2.根據(jù)權(quán)利要求1所述的算法,其特征在于,作為地址提取和查找模塊,地址信息的多少不影響地址查找的時(shí)間,可以認(rèn)為是恒定的時(shí)間周期內(nèi)。
3.根據(jù)權(quán)利要求1所述的算法,其特征在于,作為快速查找算法,運(yùn)算過程不影響數(shù)據(jù)流的信號(hào),不會(huì)產(chǎn)生數(shù)據(jù)交換的時(shí)延。
全文摘要
本發(fā)明旨在提供一種基于FPGA的快速地址查找算法,可以內(nèi)嵌在任何以太網(wǎng)交換網(wǎng)或傳輸系統(tǒng)中,適用于點(diǎn)到點(diǎn)、點(diǎn)到多點(diǎn)鏈接來傳送多協(xié)議數(shù)據(jù)報(bào)文的通信方式,適用于局域網(wǎng)、廣域網(wǎng)等以太網(wǎng)技術(shù)領(lǐng)域。算法基于FPGA硬件平臺(tái),包括地址表、地址老化模塊、地址學(xué)習(xí)模塊、地址查找模塊和配置接口。采用動(dòng)態(tài)存儲(chǔ)結(jié)構(gòu),將任意長(zhǎng)度的二進(jìn)制值映射為固定長(zhǎng)度的較小關(guān)鍵字,并以關(guān)鍵字為地址區(qū)間中的偏移地址,作為記錄在表中的存儲(chǔ)位置。算法不需要其它外部軟件或處理器的干預(yù),程序加載后自動(dòng)完成地址的學(xué)習(xí)/查找過程,可以支持單播、組播、廣播多種通信方式。
文檔編號(hào)H04L29/12GK102299971SQ20101021161
公開日2011年12月28日 申請(qǐng)日期2010年6月25日 優(yōu)先權(quán)日2010年6月25日
發(fā)明者高勝 申請(qǐng)人:深圳市邦彥信息技術(shù)有限公司