本發(fā)明涉及計算機網(wǎng)絡(luò)領(lǐng)域,尤其涉及一種報文匹配方法和系統(tǒng)。
背景技術(shù):
當(dāng)前網(wǎng)絡(luò)設(shè)備,特別是多核架構(gòu)網(wǎng)絡(luò)設(shè)備,大多采用連接表的方式轉(zhuǎn)發(fā)報文,相對于逐包處理報文的方法,逐流處理報文可大大提高報文的處理和轉(zhuǎn)發(fā)速度,連接表以IP五元組的形式組成一個表項,IP五元組為原IP地址,目的IP地址,協(xié)議號,原端口號,目的端口號,其中IP五元組相同的報文會匹配到相同的表項中,并對報文執(zhí)行相同的處理。
在對網(wǎng)絡(luò)設(shè)備進行穩(wěn)定性測試和最大連接數(shù)測試時,測試儀通常至少新建100萬條連接,然后對每個連接進行打流?;?,不斷地創(chuàng)建連接,此時會由于CPU忙于匹配報文是否為新建連接報文還是?;钸B接報文,導(dǎo)致CPU使用率過高而丟包。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)的不足,提供一種報文匹配方法和系統(tǒng)。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種報文匹配方法,包括如下步驟:
步驟S1,CPU接到報文后,在本地連接表中查找與所述報文對應(yīng)的本地連接,如果找到,則根據(jù)本地連接轉(zhuǎn)發(fā)所述報文,否則執(zhí)行步驟S2;
步驟S2,判斷所述報文與連接表的第一個表項是否匹配,如果匹配,則將所述表項置于所述連接表的鏈尾,并按照所述連接表轉(zhuǎn)發(fā)所述報文并在所述本地連接表中建立一個與所述報文對應(yīng)的連接;如果不匹配,則在所述連接表中建立新的表項,并將所述新的表項置于所述連接表的鏈尾,并創(chuàng)建與所述報文對應(yīng)的連接,按照所述連接轉(zhuǎn)發(fā)所述報文。
本發(fā)明的有益效果是:本發(fā)明能提高報文匹配的速度,解決由于CPU的使用率過高而導(dǎo)致的丟包問題。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進。
進一步地,所述本地連接至少包括:源地址、源端口、目的地址、目的端口和協(xié)議號。
進一步地,步驟S1中在本地連接表中查找與所述報文對應(yīng)的本地連接的過程不需要加鎖保護。
進一步地,步驟S2中判斷所述報文與連接表的第一個表項是否匹配的過程需要加鎖保護。
進一步地,所述表項包括IP五元組,所述IP五元組為原IP地址,目的IP地址,協(xié)議號,原端口號,目的端口號。
本發(fā)明解決上述技術(shù)問題的另一種技術(shù)方案如下:一種報文匹配系統(tǒng),包括:
查找模塊,用于在CPU接到報文后,在本地連接表中查找與所述報文對應(yīng)的本地連接,如果找到,則根據(jù)本地連接轉(zhuǎn)發(fā)所述報文,否則調(diào)用匹配模塊;
匹配模塊,用于判斷所述報文與連接表的第一個表項是否匹配,如果匹配,則將所述表項置于所述連接表的鏈尾,并按照所述連接表轉(zhuǎn)發(fā)所述報文并在所述本地連接表中建立一個與所述報文對應(yīng)的連接;如果不匹配,則在所述連接表中建立新的表項,并將所述新的表項置于所述連接表的鏈尾,并創(chuàng)建與所述報文對應(yīng)的連接,按照所述連接轉(zhuǎn)發(fā)所述報文。
本發(fā)明的有益效果是:本發(fā)明能提高報文匹配的速度,解決由于CPU的使用率過高而導(dǎo)致的丟包問題。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進。
進一步地,所述本地連接至少包括:源地址、源端口、目的地址、目的端口和協(xié)議號。
進一步地,查找模塊中在本地連接表中查找與所述報文對應(yīng)的本地連接的過程不需要加鎖保護
進一步地,匹配模塊中判斷所述報文與連接表的第一個表項是否匹配的過程需要加鎖保護。
進一步地,所述表項包括IP五元組,所述IP五元組為原IP地址,目的IP地址,協(xié)議號,原端口號,目的端口號。
本發(fā)明附加的方面的優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明實踐了解到。
附圖說明
圖1為本發(fā)明所述報文匹配方法流程圖;
圖2為本發(fā)明所述報文匹配系統(tǒng)結(jié)構(gòu)圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
圖1為本發(fā)明所述報文匹配方法流程圖。
如圖1所示,一種報文匹配方法,包括如下步驟:
步驟S1,CPU接到報文后,在本地連接表中查找與所述報文對應(yīng)的本地連接,如果找到,則根據(jù)本地連接轉(zhuǎn)發(fā)所述報文,否則執(zhí)行步驟S2;
步驟S2,判斷所述報文與連接表的第一個表項是否匹配,如果匹配,則將所述表項置于所述連接表的鏈尾,并按照所述連接表轉(zhuǎn)發(fā)所述報文并在所述本地連接表中建立一個與所述報文對應(yīng)的連接;如果不匹配,則在所述連接表中建立新的表項,并將所述新的表項置于所述連接表的鏈尾,并創(chuàng)建與所述報文對應(yīng)的連接,按照所述連接轉(zhuǎn)發(fā)所述報文。
在本發(fā)明的具體實施例中,本地連接至少包括:源地址、源端口、目的地址、目的端口和協(xié)議號。
在本發(fā)明的具體實施例中,步驟S1中在本地連接表中查找與所述報文對應(yīng)的本地連接的過程不需要加鎖保護。
在本發(fā)明的具體實施例中,步驟S2中判斷所述報文與連接表的第一個表項是否匹配的過程需要加鎖保護。
在本發(fā)明的具體實施例中,表項包括IP五元組,所述IP五元組為原IP地址,目的IP地址,協(xié)議號,原端口號,目的端口號。
圖2為本發(fā)明所述報文匹配系統(tǒng)結(jié)構(gòu)圖。
如圖2所示,一種報文匹配系統(tǒng),包括:
查找模塊,用于在CPU接到報文后,在本地連接表中查找與所述報文對應(yīng)的本地連接,如果找到,則根據(jù)本地連接轉(zhuǎn)發(fā)所述報文,否則調(diào)用匹配模塊;
匹配模塊,用于判斷所述報文與連接表的第一個表項是否匹配,如果匹配,則將所述表項置于所述連接表的鏈尾,并按照所述連接表轉(zhuǎn)發(fā)所述報文并在所述本地連接表中建立一個與所述報文對應(yīng)的連接;如果不匹配,則在所述連接表中建立新的表項,并將所述新的表項置于所述連接表的鏈尾,并創(chuàng)建與所述報文對應(yīng)的連接,按照所述連接轉(zhuǎn)發(fā)所述報文。
在本發(fā)明的具體實施例中,本地連接至少包括:源地址、源端口、目的地址、目的端口和協(xié)議號。
在本發(fā)明的具體實施例中,查找模塊中在本地連接表中查找與所述報文對應(yīng)的本地連接的過程不需要加鎖保護
在本發(fā)明的具體實施例中,匹配模塊中判斷所述報文與連接表的第一個表項是否匹配的過程需要加鎖保護。
在本發(fā)明的具體實施例中,表項包括IP五元組,所述IP五元組為原IP地址,目的IP地址,協(xié)議號,原端口號,目的端口號。
在本說明書的描述中,參考術(shù)語“實施例一”、“實施例二”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實施例或示例描述的具體方法、裝置或者特點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不必須針對的是相同的實施例或示例。而且,描述的具體特征、方法、裝置或者特點可以在任一個或多個實施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實施例或示例以及不同實施例或示例的特征進行結(jié)合和組合。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。