一種硬件實(shí)現(xiàn)的ip/tcp校驗(yàn)裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)協(xié)議硬件處理技術(shù),尤其涉及一種硬件實(shí)現(xiàn)的IP/TCP校驗(yàn)裝置。
【背景技術(shù)】
[0002]信息技術(shù)的快速發(fā)展促進(jìn)了網(wǎng)絡(luò)技術(shù)的廣泛應(yīng)用。隨著網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)乃俾侍嵘?,對于?shù)據(jù)傳輸?shù)恼_性也有了很高的要求。位于TCP/IP協(xié)議數(shù)據(jù)鏈路層的以太網(wǎng)接口是網(wǎng)絡(luò)通信的基礎(chǔ),為網(wǎng)絡(luò)層和運(yùn)輸層提供服務(wù)。為滿足通信數(shù)據(jù)量大、處理控制復(fù)雜的網(wǎng)絡(luò)化數(shù)據(jù)傳輸?shù)囊?,本課題研宄的模塊是用于專用網(wǎng)絡(luò)處理器的網(wǎng)絡(luò)接口模塊中,作為全片唯一的包校驗(yàn)?zāi)K,實(shí)現(xiàn)對網(wǎng)絡(luò)包的校驗(yàn)。
[0003]OSI參考模型把整個(gè)網(wǎng)絡(luò)的通信功能劃分為7個(gè)層次,其中本發(fā)明相關(guān)的主要網(wǎng)絡(luò)協(xié)議是傳輸層IP協(xié)議和網(wǎng)絡(luò)層TCP/UDP協(xié)議。數(shù)據(jù)校驗(yàn)的任務(wù)主要分為兩種,一種是數(shù)據(jù)完整性校驗(yàn),一種是數(shù)據(jù)正確性校驗(yàn),只有同時(shí)保證兩種校驗(yàn)通過才認(rèn)為數(shù)據(jù)傳輸具有可靠性和有效性。目前對于數(shù)據(jù)完整性的校驗(yàn)是通過對于網(wǎng)絡(luò)包的長度進(jìn)行完整性校驗(yàn),就是通過對于網(wǎng)絡(luò)包流量的計(jì)數(shù)與網(wǎng)絡(luò)包攜帶的數(shù)據(jù)長度信息進(jìn)行比較從而確保網(wǎng)絡(luò)包完整性;對于網(wǎng)絡(luò)包的正確性校驗(yàn)在不同的網(wǎng)絡(luò)層采用不同的算法,例如在MAC層進(jìn)行的是CRC校驗(yàn),而在IP層和TCP層進(jìn)行的是模2反碼求和校驗(yàn)。
[0004]現(xiàn)有IP/TCP校驗(yàn)大多是通過軟件算法實(shí)現(xiàn),普遍存在校驗(yàn)效率低的問題,因此亟需開發(fā)一種用硬件實(shí)現(xiàn)的IP/TCP校驗(yàn)裝置,以提高IP/TCP校驗(yàn)效率。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術(shù)問題在于克服現(xiàn)有技術(shù)不足,提供一種硬件實(shí)現(xiàn)的IP/TCP校驗(yàn)裝置,可大幅提高網(wǎng)絡(luò)協(xié)議校驗(yàn)的處理效率。
[0006]本發(fā)明具體采用以下技術(shù)方案解決上述技術(shù)問題:
一種硬件實(shí)現(xiàn)的IP/TCP校驗(yàn)裝置,包括:
數(shù)據(jù)轉(zhuǎn)換模塊,用于從MAC層接收數(shù)據(jù),并對所接收數(shù)據(jù)進(jìn)行時(shí)鐘域轉(zhuǎn)換和位寬轉(zhuǎn)換,為轉(zhuǎn)換后數(shù)據(jù)添加起、止標(biāo)志后分別輸入乒乓校驗(yàn)?zāi)K、數(shù)據(jù)存儲(chǔ)緩存模塊;
乒乓校驗(yàn)單元,包括乒乓控制器以及兩個(gè)相同的校驗(yàn)?zāi)K;所述校驗(yàn)?zāi)K可對輸入數(shù)據(jù)進(jìn)行IP層首部校驗(yàn)和計(jì)算、整包的TCP/UDP層的校驗(yàn)和計(jì)算,以及包長度校驗(yàn);所述乒乓控制器用于對兩個(gè)校驗(yàn)?zāi)K當(dāng)前工作狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)測,并將當(dāng)前輸入數(shù)據(jù)分配至其中處于空閑狀態(tài)的校驗(yàn)?zāi)K進(jìn)行校驗(yàn)處理;
數(shù)據(jù)存儲(chǔ)FIFO緩存模塊,用于緩存數(shù)據(jù)轉(zhuǎn)換模塊輸出的未校驗(yàn)數(shù)據(jù);
校驗(yàn)結(jié)果FIFO緩存模塊,用于緩存乒乓校驗(yàn)單元輸出的校驗(yàn)結(jié)果;
包重組模塊,用于從數(shù)據(jù)存儲(chǔ)FIFO緩存模塊提取數(shù)據(jù),并根據(jù)校驗(yàn)結(jié)果FIFO緩存模塊中的校驗(yàn)結(jié)果,將未通過校驗(yàn)的數(shù)據(jù)丟棄,將通過校驗(yàn)的數(shù)據(jù)加上優(yōu)先級標(biāo)簽后輸出至數(shù)據(jù)輸出模塊;
優(yōu)先級判別模塊,用于判定數(shù)據(jù)的優(yōu)先級并將數(shù)據(jù)的優(yōu)先級發(fā)送至包重組模塊; 數(shù)據(jù)輸出模塊,用于根據(jù)后端的反饋對通過校驗(yàn)的數(shù)據(jù)進(jìn)行相應(yīng)處理,具體如下:如后端反饋表示能夠正常接收數(shù)據(jù),則直接將通過校驗(yàn)的數(shù)據(jù)傳輸至后端;如后端反饋表示無法正常接收數(shù)據(jù),則根據(jù)數(shù)據(jù)暫存空間余量,按照優(yōu)先級對數(shù)據(jù)進(jìn)行暫存處理。
[0007]優(yōu)選地,所述根據(jù)數(shù)據(jù)暫存空間余量,按照優(yōu)先級對數(shù)據(jù)進(jìn)行暫存處理,具體如下:當(dāng)數(shù)據(jù)暫存空間被占用不超過1/3時(shí),則直接將數(shù)據(jù)暫存;如數(shù)據(jù)暫存空間被占用1/3?2/3時(shí),則將優(yōu)先級低的數(shù)據(jù)丟棄,將優(yōu)先級高的數(shù)據(jù)暫存;如數(shù)據(jù)暫存空間被占用大于2/3時(shí),則將所有數(shù)據(jù)丟棄。
[0008]優(yōu)選地,所述校驗(yàn)?zāi)K的工作流程具體如下:
第一步、根據(jù)輸入信號的錯(cuò)誤標(biāo)志位來判斷是否在MAC層校驗(yàn)時(shí)就發(fā)生了校驗(yàn)錯(cuò)誤,分兩種情況:若錯(cuò)誤標(biāo)志有效則表明在MAC層檢測到數(shù)據(jù)錯(cuò)誤,在當(dāng)前校驗(yàn)?zāi)K執(zhí)行數(shù)據(jù)丟棄操作;若錯(cuò)誤標(biāo)志無效則表明MAC校驗(yàn)通過,進(jìn)行第二步操作;
第二步、根據(jù)數(shù)據(jù)包的VLAN標(biāo)志位進(jìn)行判斷是否具有VLAN功能或者QinQ的VLAN嵌套功能,分兩種情況:如果VLAN嵌套校驗(yàn)錯(cuò)誤,則將該數(shù)據(jù)丟棄;若VLAN嵌套標(biāo)志位正確則進(jìn)行第三步操作;
第三步、進(jìn)行MPLS嵌套判斷,分兩種情況:當(dāng)MPLS嵌套大于4層嵌套時(shí),表明MPLS嵌套錯(cuò)誤,對數(shù)據(jù)在當(dāng)前模塊采取丟棄操作;當(dāng)MPLS嵌套小于等于4層嵌套時(shí),表明MPLS標(biāo)簽正確進(jìn)行第四步操作;
第四步、根據(jù)數(shù)據(jù)包格式定位IP首部位置,并進(jìn)行IP首部校驗(yàn)和計(jì)算;
第五步、對TCP/UDP層的校驗(yàn),首先根據(jù)輸入數(shù)據(jù)包計(jì)算出TCP/UDP層的偽首部,同時(shí)完成TCP/UDP層的校驗(yàn)和計(jì)算,計(jì)算結(jié)果正確則輸出校驗(yàn)結(jié)果;計(jì)算結(jié)果錯(cuò)誤則對當(dāng)前的數(shù)據(jù)包采取丟包操作。
[0009]相比現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:
本發(fā)明利用FPGA (可編程邏輯器件)等硬件實(shí)現(xiàn),相比傳統(tǒng)的軟件實(shí)現(xiàn)方式,處理效率和校驗(yàn)準(zhǔn)確率均大幅提尚;
本發(fā)明采用并行的雙校驗(yàn)?zāi)K結(jié)構(gòu),對連續(xù)輸入的數(shù)據(jù)包進(jìn)行乒乓校驗(yàn)操作,可有效緩解連續(xù)數(shù)據(jù)輸入所容易產(chǎn)生的數(shù)據(jù)擁塞,相比采用單校驗(yàn)?zāi)K的流水線方式,其處理效率進(jìn)一步提尚;
本發(fā)明可根據(jù)后端反饋的實(shí)際情況對通過校驗(yàn)的數(shù)據(jù)包進(jìn)行相應(yīng)的處理,當(dāng)后端可正常接收數(shù)據(jù)時(shí),將通過校驗(yàn)的數(shù)據(jù)包直接傳向后端,如后端無法正常接收數(shù)據(jù),則將數(shù)據(jù)暫存,并根據(jù)暫存空間容量變化情況以及數(shù)據(jù)優(yōu)先級的不同,對數(shù)據(jù)進(jìn)行丟棄或暫存處理,可有效緩解后端設(shè)備的數(shù)據(jù)處理壓力。
【附圖說明】
[0010]圖1為本發(fā)明IP/TCP校驗(yàn)裝置的結(jié)構(gòu)示意圖;
圖2為本發(fā)明IP/TCP校驗(yàn)裝置中校驗(yàn)?zāi)K的工作流程示意圖;
圖3為本發(fā)明IP/TCP校驗(yàn)裝置中校驗(yàn)?zāi)K的校驗(yàn)原理示意圖;
圖4為本發(fā)明IP/TCP校驗(yàn)裝置中校驗(yàn)?zāi)K實(shí)現(xiàn)模2求和校驗(yàn)的原理示意圖;
圖5為本發(fā)明IP/TCP校驗(yàn)裝置中數(shù)據(jù)輸出模塊的結(jié)構(gòu)原理示意圖。
【具體實(shí)施方式】
[0011]下面結(jié)合附圖對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明:
圖1顯示了本發(fā)明IP/TCP校驗(yàn)裝置的一種具體結(jié)構(gòu)。如圖1所示,該校驗(yàn)裝置包括:數(shù)據(jù)轉(zhuǎn)換模塊、乒乓校驗(yàn)單元、數(shù)據(jù)存儲(chǔ)FIFO緩存模塊、校驗(yàn)結(jié)果FIFO緩存模塊、包重組模塊、優(yōu)先級判別模塊、數(shù)據(jù)輸出模塊;其中,乒乓校驗(yàn)單元包括乒乓控制器以及兩個(gè)相同的校驗(yàn)?zāi)K:校驗(yàn)?zāi)KA、校驗(yàn)?zāi)KB,乒乓控制器用于控制兩個(gè)校驗(yàn)?zāi)K對輸入數(shù)據(jù)包進(jìn)行兵兵校驗(yàn)操作。
[0012]數(shù)據(jù)轉(zhuǎn)換模塊的功能只負(fù)責(zé)對于從MAC層輸入的數(shù)據(jù)進(jìn)行時(shí)鐘域轉(zhuǎn)換和位寬轉(zhuǎn)換,同時(shí)將轉(zhuǎn)換后的數(shù)據(jù)添加起、止標(biāo)志,必要時(shí)可以添加位序轉(zhuǎn)換功能,本實(shí)施例中是將128位的數(shù)據(jù)轉(zhuǎn)換為四段32位數(shù)據(jù),每一段32位數(shù)據(jù)加上起、止位,形成34位帶有起止標(biāo)志的數(shù)據(jù)流。
[0013]乒乓校驗(yàn)單元用于完成本發(fā)明的主要功能,即數(shù)據(jù)的校驗(yàn)。如果采用單校驗(yàn)?zāi)K的結(jié)構(gòu),則易產(chǎn)生數(shù)據(jù)擁塞的情況,其原因是在數(shù)據(jù)校驗(yàn)?zāi)K處理數(shù)據(jù)時(shí),需要進(jìn)行模2反碼求和運(yùn)算以及一些復(fù)雜的情況判斷,硬件設(shè)計(jì)中無法在一個(gè)時(shí)鐘周期之內(nèi)完成這么多的運(yùn)算,所以對于每一個(gè)網(wǎng)絡(luò)數(shù)據(jù)包的處理在最后輸出校驗(yàn)結(jié)果時(shí)都要延遲幾個(gè)時(shí)鐘周期,如果對于單個(gè)非連續(xù)網(wǎng)絡(luò)包處理的話,這個(gè)延遲不會(huì)造成影響,但是如果連續(xù)的網(wǎng)絡(luò)包進(jìn)行輸入后這個(gè)延遲會(huì)隨著網(wǎng)絡(luò)包的增加而不斷累加,導(dǎo)致最后整個(gè)數(shù)據(jù)通路的擁塞。為解決這一問題,本發(fā)明采用圖1所示的校驗(yàn)單元結(jié)構(gòu),乒乓控制器用來接測網(wǎng)絡(luò)包的起始信號,當(dāng)檢測到數(shù)據(jù)轉(zhuǎn)換模塊給出的起始信號后,判斷校驗(yàn)?zāi)KA和校驗(yàn)?zāi)KB的處理狀態(tài),如果其中一個(gè)校驗(yàn)?zāi)K還沒有處理完成上一個(gè)包的計(jì)算,該校驗(yàn)?zāi)K的busy信號給出忙碌,乒乓控制器就使能另一個(gè)非忙碌的校驗(yàn)?zāi)K進(jìn)行對接下來連續(xù)輸入的網(wǎng)絡(luò)包進(jìn)行校驗(yàn)處理,實(shí)際的處理效果就是如果出現(xiàn)連續(xù)網(wǎng)絡(luò)包的輸入,兩個(gè)校驗(yàn)?zāi)K在乒乓控制器的作用下會(huì)交替進(jìn)行處理,然后把校驗(yàn)結(jié)果寫入到校驗(yàn)結(jié)果FIFO緩存中。這樣就實(shí)現(xiàn)了數(shù)據(jù)的無等待處理,不會(huì)發(fā)生數(shù)據(jù)通路的擁塞的情況。
[0014]數(shù)據(jù)存儲(chǔ)FIFO緩存模塊的功能是緩存數(shù)據(jù)轉(zhuǎn)換模塊輸出的未校驗(yàn)數(shù)據(jù);校驗(yàn)結(jié)果FIFO緩存模塊的功能是緩存乒乓校驗(yàn)單元輸出的校驗(yàn)結(jié)果。
[0015]包重組模塊的功能是根據(jù)校驗(yàn)?zāi)K輸出的校驗(yàn)結(jié)果,將數(shù)據(jù)從數(shù)據(jù)存儲(chǔ)FIFO緩存模塊中取出,如果校驗(yàn)通過,則將相應(yīng)的正確網(wǎng)絡(luò)包加上優(yōu)先級標(biāo)簽后發(fā)送出給數(shù)據(jù)輸出模塊,如果校驗(yàn)發(fā)生錯(cuò)誤,則將數(shù)據(jù)從數(shù)據(jù)存儲(chǔ)FIFO緩存模塊中取出后進(jìn)行丟包操作。
[0