本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種報(bào)文處理方法及裝置。
背景技術(shù):
ARP(Address Resolution Protocol,地址解析協(xié)議)是一種根據(jù)IP(Internet Protocol,網(wǎng)際協(xié)議)地址獲取物理地址的協(xié)議。網(wǎng)絡(luò)設(shè)備通過接收對端設(shè)備發(fā)送的ARP報(bào)文學(xué)習(xí)對端設(shè)備的物理地址,生成基于對端設(shè)備IP地址和物理地址的ARP表項(xiàng),從而根據(jù)ARP表項(xiàng)中記錄的物理地址完成對IP報(bào)文的封裝轉(zhuǎn)發(fā)給對端設(shè)備。
當(dāng)網(wǎng)絡(luò)設(shè)備在ARP表項(xiàng)學(xué)習(xí)過程中受到ARP攻擊時(shí),常常由于處理大量的ARP攻擊報(bào)文,而無法及時(shí)處理正常的ARP報(bào)文,甚至將正常的ARP報(bào)文丟棄,影響ARP學(xué)習(xí)。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供一種報(bào)文處理方法及裝置。
具體地,本發(fā)明是通過如下技術(shù)方案實(shí)現(xiàn)的:
本發(fā)明提供一種報(bào)文處理方法,該方法包括:
接收多個(gè)地址解析協(xié)議ARP報(bào)文;
根據(jù)各個(gè)ARP報(bào)文的發(fā)送端網(wǎng)際協(xié)議IP地址查找ARP表項(xiàng);
將命中ARP表項(xiàng)的ARP報(bào)文存入第一隊(duì)列,將未命中ARP表項(xiàng)的ARP報(bào)文存入第二隊(duì)列;其中所述第一隊(duì)列的調(diào)度優(yōu)先級低于所述第二隊(duì)列的調(diào)度優(yōu)先級;
將所述第一隊(duì)列和所述第二隊(duì)列中的ARP報(bào)文上送處理器學(xué)習(xí)。
本發(fā)明還提供一種報(bào)文處理裝置,該裝置包括:
接收模塊,用于接收多個(gè)地址解析協(xié)議ARP報(bào)文;
查找單元,用于根據(jù)各個(gè)ARP報(bào)文的發(fā)送端網(wǎng)際協(xié)議IP地址查找ARP表項(xiàng);將命中ARP表項(xiàng)的ARP報(bào)文存入第一隊(duì)列,將未命中ARP表項(xiàng)的ARP報(bào)文存入第二隊(duì)列;其中所述第一隊(duì)列的調(diào)度優(yōu)先級低于所述第二隊(duì)列的調(diào)度優(yōu)先級;
發(fā)送單元,用于將所述第一隊(duì)列和所述第二隊(duì)列中的ARP報(bào)文上送處理器學(xué)習(xí)。
由以上描述可以看出,本發(fā)明通過區(qū)分隊(duì)列(命中ARP表項(xiàng)的ARP報(bào)文存入第一隊(duì)列,將未命中ARP表項(xiàng)的ARP報(bào)文存入第二隊(duì)列)以及設(shè)置隊(duì)列的調(diào)度優(yōu)先級,提高未命中ARP表項(xiàng)的ARP報(bào)文(通常為未學(xué)習(xí)過的ARP報(bào)文或表項(xiàng)老化后重新學(xué)習(xí)的ARP報(bào)文)的上送速度,降低ARP攻擊報(bào)文對正常ARP學(xué)習(xí)報(bào)文的影響。
附圖說明
圖1是本發(fā)明一示例性實(shí)施例示出的一種報(bào)文處理方法流程圖;
圖2是本發(fā)明另一示例性實(shí)施例示出的一種報(bào)文處理方法流程圖;
圖3是本發(fā)明一示例性實(shí)施例示出的一種應(yīng)用于轉(zhuǎn)發(fā)芯片的報(bào)文處理裝置的結(jié)構(gòu)示意圖;
圖4是圖3中報(bào)文處理裝置收到ARP報(bào)文后的處理過程示意圖。
具體實(shí)施方式
這里將詳細(xì)地對示例性實(shí)施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本發(fā)明相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
在本發(fā)明使用的術(shù)語是僅僅出于描述特定實(shí)施例的目的,而非旨在限制本發(fā)明。在本發(fā)明和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應(yīng)當(dāng)理解,本文中使用的術(shù)語“和/或”是指并包含一個(gè)或多個(gè)相關(guān)聯(lián)的列出項(xiàng)目的任何或所有可能組合。
應(yīng)當(dāng)理解,盡管在本發(fā)明可能采用術(shù)語第一、第二、第三等來描述各種信息,但這些信息不應(yīng)限于這些術(shù)語。這些術(shù)語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本發(fā)明范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)”或“響應(yīng)于確定”。
ARP是一種根據(jù)IP地址獲取物理地址的協(xié)議。網(wǎng)絡(luò)設(shè)備在向?qū)Χ嗽O(shè)備發(fā)送IP報(bào)文之前,獲取對端設(shè)備的物理地址,根據(jù)該物理地址對IP報(bào)文進(jìn)行封裝后轉(zhuǎn)發(fā)給對端設(shè)備。
網(wǎng)絡(luò)設(shè)備獲取對端設(shè)備物理地址的過程即為ARP學(xué)習(xí)過程,具體為,接收對端設(shè)備發(fā)送的ARP報(bào)文(ARP請求報(bào)文/ARP響應(yīng)報(bào)文),將ARP報(bào)文上送CPU(Central Processing Unit,中央處理器)處理,CPU根據(jù)ARP報(bào)文攜帶的對端設(shè)備的物理地址和IP地址生成ARP表項(xiàng),并將該ARP表項(xiàng)同步給網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)發(fā)芯片,轉(zhuǎn)發(fā)芯片根據(jù)該ARP表項(xiàng)封裝后續(xù)發(fā)送給對端設(shè)備的IP報(bào)文。
網(wǎng)絡(luò)設(shè)備在正常ARP學(xué)習(xí)過程中,可能接收到大量的ARP攻擊報(bào)文,這些ARP攻擊報(bào)文同樣上送CPU處理,這將影響正常ARP報(bào)文的處理進(jìn)度,甚至導(dǎo)致正常ARP報(bào)文被丟棄,無法完成ARP學(xué)習(xí)。
針對上述問題,本發(fā)明實(shí)施例提出一種報(bào)文處理方法,該方法將命中ARP表項(xiàng)的ARP報(bào)文與未命中ARP表項(xiàng)的ARP報(bào)文分別存入具有不同調(diào)度優(yōu)先級的隊(duì)列,根據(jù)調(diào)度優(yōu)先級將不同隊(duì)列中的ARP報(bào)文上送CPU學(xué)習(xí)。
參見圖1,為本發(fā)明報(bào)文處理方法的一個(gè)實(shí)施例流程圖,該實(shí)施例對報(bào)文處理過程進(jìn)行描述。
步驟101,接收多個(gè)ARP報(bào)文。
網(wǎng)絡(luò)設(shè)備接收的ARP報(bào)文可能是正常的ARP學(xué)習(xí)報(bào)文,也可能是ARP攻擊報(bào)文。無論是ARP學(xué)習(xí)報(bào)文還是ARP攻擊報(bào)文,對于網(wǎng)絡(luò)設(shè)備來說,都只體現(xiàn)為ARP報(bào)文。
網(wǎng)絡(luò)設(shè)備在接收到ARP報(bào)文后,首先對ARP報(bào)文進(jìn)行合法性判斷。例如,對于接收的ARP請求報(bào)文,當(dāng)該ARP請求報(bào)文的目的IP地址匹配入接口的IP地址,且發(fā)送端IP地址與網(wǎng)絡(luò)設(shè)備接口地址在同一網(wǎng)段時(shí),認(rèn)為該ARP請求報(bào)文通過了合法性判斷;對于接收的ARP響應(yīng)報(bào)文,當(dāng)該ARP響應(yīng)報(bào)文的以太網(wǎng)頭的MAC地址和內(nèi)層目的MAC地址都匹配網(wǎng)絡(luò)設(shè)備的MAC地址時(shí),認(rèn)為該ARP響應(yīng)報(bào)文通過了合法性判斷。通過合法性判斷的ARP報(bào)文執(zhí)行后續(xù)處理,而未通過合法性判斷的ARP報(bào)文直接丟棄。
步驟102,根據(jù)各個(gè)ARP報(bào)文的發(fā)送端IP地址查找ARP表項(xiàng)。
網(wǎng)絡(luò)設(shè)備在接收到ARP報(bào)文后,將ARP報(bào)文與本地記錄的ARP表項(xiàng)進(jìn)行匹配,確認(rèn)當(dāng)前ARP報(bào)文是否命中ARP表項(xiàng)。具體地,網(wǎng)絡(luò)設(shè)備可從接收的ARP報(bào)文中獲取發(fā)送端IP(sender IP)地址,將該IP地址與ARP表項(xiàng)中的IP地址進(jìn)行匹配,若匹配成功,則確認(rèn)ARP報(bào)文命中ARP表項(xiàng);否則,確認(rèn)ARP報(bào)文未命中ARP表項(xiàng)。
步驟103,將命中ARP表項(xiàng)的ARP報(bào)文存入第一隊(duì)列,將未命中ARP表項(xiàng)的ARP報(bào)文存入第二隊(duì)列。
對于接收的ARP報(bào)文,網(wǎng)絡(luò)設(shè)備會預(yù)留一定的存儲空間緩存ARP報(bào)文,以下將緩存ARP報(bào)文的存儲空間稱為隊(duì)列。本發(fā)明實(shí)施例劃分了兩個(gè)隊(duì)列:第一隊(duì)列和第二隊(duì)列,其中,第一隊(duì)列用于存放命中ARP表項(xiàng)的ARP報(bào)文;第二隊(duì)列用于存放未命中ARP表項(xiàng)的ARP報(bào)文。
網(wǎng)絡(luò)設(shè)備通過步驟102確認(rèn)ARP報(bào)文是否命中ARP表項(xiàng)后,將ARP報(bào)文存入對應(yīng)隊(duì)列,并為每一個(gè)隊(duì)列設(shè)置調(diào)度優(yōu)先級,其中,第一隊(duì)列的調(diào)度優(yōu)先級低于第二隊(duì)列的調(diào)度優(yōu)先級。該調(diào)度優(yōu)先級的設(shè)置充分利用ARP攻擊報(bào)文集中大批量的特點(diǎn),ARP攻擊報(bào)文因頻繁命中ARP表項(xiàng)而存入第一隊(duì)列,而那些首次進(jìn)行ARP學(xué)習(xí)或由于ARP表項(xiàng)老化需要重新學(xué)習(xí)的ARP報(bào)文則會因未命中ARP表項(xiàng)而存入第二隊(duì)列,因此,通過適當(dāng)提高第二隊(duì)列的調(diào)度優(yōu)先級,可以使正常的ARP學(xué)習(xí)報(bào)文優(yōu)先上送CPU處理,降低ARP攻擊報(bào)文對正常ARP學(xué)習(xí)報(bào)文的影響。
步驟104,將第一隊(duì)列和第二隊(duì)列中的ARP報(bào)文上送處理器學(xué)習(xí)。
按照步驟103中設(shè)置的調(diào)度優(yōu)先級完成ARP報(bào)文的上送。
在一種實(shí)施方式中,該調(diào)度優(yōu)先級可體現(xiàn)為調(diào)度比例,例如,設(shè)定第一隊(duì)列和第二隊(duì)列的調(diào)度比例為1:3,則第一隊(duì)列上送1個(gè)ARP報(bào)文后,第二隊(duì)列上送3個(gè)ARP報(bào)文,如此循環(huán),執(zhí)行ARP報(bào)文上送。
在另一種實(shí)施方式中,該調(diào)度優(yōu)先級僅體現(xiàn)為高低之分,即只要調(diào)度優(yōu)先級高的第二隊(duì)列中有ARP報(bào)文,就優(yōu)先上送第二隊(duì)列中的ARP報(bào)文,在第二隊(duì)列中沒有ARP報(bào)文時(shí),上送第一隊(duì)列中的ARP報(bào)文。
當(dāng)然,也可以將上述兩種實(shí)施方式結(jié)合起來使用,具體可根據(jù)現(xiàn)網(wǎng)運(yùn)行情況動態(tài)調(diào)整。
本發(fā)明實(shí)施例還可以根據(jù)ARP報(bào)文的報(bào)文類型(ARP請求報(bào)文\ARP響應(yīng)報(bào)文)繼續(xù)細(xì)化隊(duì)列,具體為,第一隊(duì)列可包括第一子隊(duì)列和第二子隊(duì)列,將命中ARP表項(xiàng)的ARP請求報(bào)文存入第一子隊(duì)列,將命中ARP表項(xiàng)的ARP響應(yīng)報(bào)文存入第二子隊(duì)列;第二隊(duì)列可包括第三子隊(duì)列和第四子隊(duì)列,將未命中ARP表項(xiàng)的ARP請求報(bào)文存入第三子隊(duì)列,將未命中ARP表項(xiàng)的ARP響應(yīng)報(bào)文存入第四子隊(duì)列。
在前述第一隊(duì)列和第二隊(duì)列的調(diào)度優(yōu)先級的基礎(chǔ)上,可進(jìn)一步設(shè)定同一隊(duì)列中各子隊(duì)列之間的調(diào)度優(yōu)先級。以采用調(diào)度比例設(shè)置調(diào)度優(yōu)先級為例,假設(shè)第一隊(duì)列和第二隊(duì)列的調(diào)度比例為1:3,第三子隊(duì)列和第四子隊(duì)列的調(diào)度比例為2:1,則第一隊(duì)列上送1個(gè)ARP報(bào)文,第二隊(duì)列上送3個(gè)ARP報(bào)文(第三子隊(duì)列上送2個(gè)ARP請求報(bào)文,第四子隊(duì)列上送1個(gè)ARP響應(yīng)報(bào)文)。可見,通過隊(duì)列細(xì)化,可使ARP報(bào)文的調(diào)度更加靈活,可以根據(jù)現(xiàn)網(wǎng)運(yùn)行情況精細(xì)調(diào)整。
由上述描述可以看出,本發(fā)明將命中ARP表項(xiàng)的ARP報(bào)文和未命中ARP表項(xiàng)的ARP報(bào)文存入具有不同調(diào)度優(yōu)先級的隊(duì)列,再按照調(diào)度優(yōu)先級將不同隊(duì)列中的ARP報(bào)文上送CPU處理,可提高正常ARP報(bào)文的學(xué)習(xí)效率。
現(xiàn)以網(wǎng)絡(luò)設(shè)備受ARP攻擊為例,詳細(xì)介紹報(bào)文處理過程。參見圖2,為本實(shí)施例示出的報(bào)文處理流程圖。
步驟201,接收ARP報(bào)文。
步驟202,判斷ARP報(bào)文是否合法。當(dāng)ARP報(bào)文未通過合法性判斷時(shí),轉(zhuǎn)步驟203;當(dāng)ARP報(bào)文通過合法性判斷時(shí),轉(zhuǎn)步驟204。
步驟203,丟棄ARP報(bào)文。
步驟204,判斷ARP報(bào)文是否命中ARP表項(xiàng)。當(dāng)ARP報(bào)文命中ARP表項(xiàng)時(shí),轉(zhuǎn)步驟205;當(dāng)ARP報(bào)文未命中ARP表項(xiàng)時(shí),轉(zhuǎn)步驟206。
步驟205,將ARP報(bào)文存入A隊(duì)列。
ARP攻擊報(bào)文會頻繁命中ARP表項(xiàng),因此,進(jìn)入A隊(duì)列;已學(xué)習(xí)過的正常的ARP報(bào)文在命中ARP表項(xiàng)后也會進(jìn)入A隊(duì)列。
步驟206,將ARP報(bào)文存入B隊(duì)列。
首次進(jìn)行ARP學(xué)習(xí)的ARP報(bào)文無法命中ARP表項(xiàng),因此,進(jìn)入B隊(duì)列;已學(xué)習(xí)過的ARP報(bào)文(命中ARP表項(xiàng)的ARP報(bào)文)如果由于大量ARP攻擊報(bào)文的存在而被丟棄(A隊(duì)列滿,無法進(jìn)入A隊(duì)列),則會在對應(yīng)ARP表項(xiàng)老化后進(jìn)入B隊(duì)列。
步驟207,獲取預(yù)設(shè)的調(diào)度比例。假設(shè),A隊(duì)列與B隊(duì)列的調(diào)度比例為1:3。
步驟208,按照調(diào)度比例將A隊(duì)列和B隊(duì)列中的ARP報(bào)文上送CPU學(xué)習(xí)。
假設(shè),從A隊(duì)列中選擇1個(gè)ARP報(bào)文上送CPU,則從B隊(duì)列中連續(xù)選擇3個(gè)ARP報(bào)文上送CPU。通過提高B隊(duì)列的比例,提升正常ARP學(xué)習(xí)報(bào)文的處理效率。
現(xiàn)以網(wǎng)絡(luò)設(shè)備接收大量免費(fèi)ARP報(bào)文為例,詳細(xì)介紹報(bào)文處理過程,具體處理流程參見圖2。
步驟201,接收ARP報(bào)文。
步驟202,判斷ARP報(bào)文是否合法。當(dāng)ARP報(bào)文未通過合法性判斷時(shí),轉(zhuǎn)步驟203;當(dāng)ARP報(bào)文通過合法性判斷時(shí),轉(zhuǎn)步驟204。
步驟203,丟棄ARP報(bào)文。
步驟204,判斷ARP報(bào)文是否命中ARP表項(xiàng)。當(dāng)ARP報(bào)文命中ARP表項(xiàng)時(shí),轉(zhuǎn)步驟205;當(dāng)ARP報(bào)文未命中ARP表項(xiàng)時(shí),轉(zhuǎn)步驟206。
步驟205,將ARP報(bào)文存入A隊(duì)列。
周期性發(fā)送的免費(fèi)ARP報(bào)文(用于ARP學(xué)習(xí))會命中ARP表項(xiàng)進(jìn)入A隊(duì)列。
步驟206,將ARP報(bào)文存入B隊(duì)列。
若大批量免費(fèi)ARP報(bào)文導(dǎo)致A隊(duì)列溢出,則后續(xù)接收到的免費(fèi)ARP報(bào)文被丟棄,最終導(dǎo)致對應(yīng)ARP表項(xiàng)老化。當(dāng)再次接收到這些位置靠后的免費(fèi)ARP報(bào)文時(shí),由于未命中ARP表項(xiàng)而進(jìn)入B隊(duì)列。
步驟207,獲取預(yù)設(shè)的調(diào)度比例。假設(shè),A隊(duì)列與B隊(duì)列的調(diào)度比例為1:3。
步驟208,按照調(diào)度比例將A隊(duì)列和B隊(duì)列中的ARP報(bào)文上送CPU學(xué)習(xí)。
通過劃分隊(duì)列,為表項(xiàng)老化的ARP報(bào)文預(yù)留調(diào)度空間,并通過提升B隊(duì)列的調(diào)度比例,快速響應(yīng)表項(xiàng)老化的ARP報(bào)文的學(xué)習(xí)。
進(jìn)一步地,如果B隊(duì)列又分為B1子隊(duì)列(存放未命中ARP表項(xiàng)的ARP請求報(bào)文)和B2子隊(duì)列(存放未命中ARP表項(xiàng)的ARP響應(yīng)報(bào)文),由于免費(fèi)ARP報(bào)文為ARP請求報(bào)文,因此,會存入B1子隊(duì)列。此時(shí),可進(jìn)一步設(shè)置B1和B2的調(diào)度比例,假設(shè)為5:1,即進(jìn)一步提升免費(fèi)ARP報(bào)文的處理效率。
與前述報(bào)文處理方法的實(shí)施例相對應(yīng),本發(fā)明還提供了報(bào)文處理裝置的實(shí)施例。
圖3所示為本發(fā)明提供的報(bào)文處理裝置,應(yīng)用于網(wǎng)絡(luò)設(shè)備的轉(zhuǎn)發(fā)芯片,該報(bào)文處理裝置包括接收模塊、查找單元、發(fā)送單元以及存儲單元,其中:
存儲單元,用于存儲ARP表項(xiàng);
接收模塊,用于接收多個(gè)地址解析協(xié)議ARP報(bào)文;
查找單元,用于根據(jù)各個(gè)ARP報(bào)文的發(fā)送端網(wǎng)際協(xié)議IP地址查找ARP表項(xiàng);將命中ARP表項(xiàng)的ARP報(bào)文存入第一隊(duì)列,將未命中ARP表項(xiàng)的ARP報(bào)文存入第二隊(duì)列;其中所述第一隊(duì)列的調(diào)度優(yōu)先級低于所述第二隊(duì)列的調(diào)度優(yōu)先級;
發(fā)送單元,用于將所述第一隊(duì)列和所述第二隊(duì)列中的ARP報(bào)文上送處理器學(xué)習(xí)。
進(jìn)一步地,所述裝置還包括:
檢查模塊,用于在所述查找單元根據(jù)各個(gè)ARP報(bào)文的發(fā)送端IP地址查找ARP表項(xiàng)之前,對各個(gè)ARP報(bào)文進(jìn)行合法性判斷;丟棄未通過合法性判斷的ARP報(bào)文。
進(jìn)一步地,所述第一隊(duì)列包括第一子隊(duì)列和第二子隊(duì)列;
所述查找單元,具體用于將命中ARP表項(xiàng)的ARP請求報(bào)文存入所述第一子隊(duì)列,將命中ARP表項(xiàng)的ARP響應(yīng)報(bào)文存入所述第二子隊(duì)列。
進(jìn)一步地,所述第二隊(duì)列包括第三子隊(duì)列和第四子隊(duì)列;
所述查找單元,具體用于將未命中ARP表項(xiàng)的ARP請求報(bào)文存入所述第三子隊(duì)列,將未命中ARP表項(xiàng)的ARP響應(yīng)報(bào)文存入所述第四子隊(duì)列;其中第三子隊(duì)列的調(diào)度優(yōu)先級高于第四子隊(duì)列的調(diào)度優(yōu)先級。
上述裝置中各個(gè)單元的功能和作用的實(shí)現(xiàn)過程具體詳見上述方法中對應(yīng)步驟的實(shí)現(xiàn)過程,在此不再贅述。
圖4所示為圖3中報(bào)文處理裝置收到ARP報(bào)文后的處理過程,具體內(nèi)容再次不再贅述。
對于裝置實(shí)施例而言,由于其基本對應(yīng)于方法實(shí)施例,所以相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本發(fā)明方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實(shí)施。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。