專利名稱:一種arp報文處理方法
技術領域:
本發(fā)明涉及數據通訊領域,具體地說,涉及一種ARP報文處理方法。
背景技術:
數據鏈路如以太網或令牌環(huán)網都有自己的尋址機制(常常為48bit地址),這是使用數據鏈路的任何網絡層都必須遵從的。一個網絡如以太網可以同時被不同的網絡層使用。例如,一組使用TCP/IP協(xié)議的主機和另一組使用某種PC網絡軟件的主機可以共享相同的電纜。
當一臺主機把以太網數據幀發(fā)送到位于同一局域網上的另一臺主機時,是跟據48bit的以太網地址來確定目的接口的。設備驅動程序從不檢查IP數據包中的目的IP地址。
地址解析為這兩種不同的地址形式提供映射32bit的IP地址和數據鏈路層使用的任何類型的地址。
ARP為IP地址到對應的硬件地址之間提供動態(tài)映射。之所以用動態(tài)這個詞是因為這個過程是動態(tài)完成的,一般應用程序用戶或系統(tǒng)管理員不必關心。
ARP高速運行的關鍵是由于每個主機上都有一個ARP高速緩存。這個高速緩存存放了最近IP地址到硬件地址之間的映射記錄。高速緩存中每一項的生存時間一般為20分鐘,起始時間從被創(chuàng)建是開始算起。高速緩存中表項的建立有兩種方式第一,當主機收到目的IP地址是本機的ARP請求報文時,根據ARP報文中源IP地址,源硬件地址建立ARP高速緩存表項;第二,主機發(fā)送ARP請求,并收到對端主機的ARP回應報文,建立對端主機對應的ARP高速緩存。
對于路由設備,特別是BAS設備,也存在ARP高速緩存表項,簡稱ARP表項。路由設備的ARP表項管理與主機ARP表項管理最大區(qū)別在于ARP表項生存周期到期時的處理方式,主機的處理方式是直接刪除該ARP表項,而路由設備處理方式是ARP表項到期時會發(fā)送ARP請求報文去探測該ARP表項對應的設備是否還在線,如果該設備還在線,它會響應路由設備的ARP請求報文,當路由設備收到響應報文時會更新該ARP表項的生存周期;如果該設備不在線,就沒有設備響應路由設備發(fā)送出來的ARP請求報文,路由設備將刪除該ARP表項。那么路由設備這種處理方式的好處在于如果對端設備一直在線,那么路由設備的ARP表項就一直不會刪除,這樣可以保持網絡一直處于連接狀態(tài),避免出現路由設備因為解析不到ARP表項而發(fā)送ARP請求從新學習ARP表項。
現在的路由設備為了加快轉發(fā)速度,一般分為控制平面和轉發(fā)平面??刂破矫嬗绍浖崿F,負責用戶管理,轉發(fā)平面所需要的各種表項的生成;轉發(fā)平面由硬件實現,轉發(fā)平面根據控制平面下發(fā)各種表項,決定報文的處理方式,包括轉發(fā),丟棄,上交控制平面處理等。上述的ARP表項是由控制平面負責創(chuàng)建與維護的,轉發(fā)平面在轉發(fā)過程中會使用ARP表項將網絡層地址映射到鏈路層地址來完成轉發(fā)。
控制平面對ARP表項的創(chuàng)建有以下幾種方式第一,本設備控制平面收到對端設備的ARP請求報文;第二,本設備控制平面往外發(fā)送報文,當無法解析到ARP表項時,主動發(fā)送ARP請求報文學習對應的鏈路層信息,如果對端設備響應了ARP請求,本設備就創(chuàng)建對應的ARP表項;第三,本設備轉發(fā)平面轉發(fā)報文,當無法解析到ARP表項時,轉發(fā)平面將報文上交給控制平面處理,控制平面采用上述第二種處理流程來建立ARP表項。
在第一種處理流程中,本設備對于對端設備的ARP請求報文處理流程是,因為只有轉發(fā)平面與物理接口相連,所以ARP請求報文必須通過轉發(fā)平面才能送給控制平面,ARP請求報文到達控制平面后,檢查ARP請求的目的IP地址與報文接收接口的IP地址是否相同,如果不同說明該ARP請求報文不是發(fā)送給本設備的,丟棄報文;如果相同,使用ARP請求報文種的源IP地址查找本設備的ARP表,若查找到ARP表項,更新該ARP表項的生存周期,并發(fā)送ARP響應報文給對端設備,若沒有找到ARP表項,創(chuàng)建新的ARP表項。
上述控制平面對于ARP請求報文處理流程,由于控制平面由軟件實現,轉發(fā)平面由硬件實現,硬件處理速度比軟件處理速度快得多,因此軟件處理速度必然是一個瓶頸,如果硬件收到很多無效的ARP請求報文,如ARP請求報文的目的IP地址不是接收接口的IP地址,那么軟件資源都消耗在這種無效的處理中,其他的業(yè)務都無法進行。而實際的網絡情況是,這種無效的ARP請求報文比較多,而且有可能是惡意的ARP攻擊報文,這樣勢必會影響路由器的處理能力。
現有技術中針對上述無效ARP請求報文會影響控制處理能力,現有一般處理方法是,對轉發(fā)平面上交控制平面的報文分優(yōu)先級處理,降低ARP請求報文的優(yōu)先級,并且限制ARP請求報文從轉發(fā)平面上交給控制平面的速度,這樣就可以保證網絡中大量的無效ARP請求報文不會影響路由設備的處理能力。
現有技術的缺點為,這種降低轉發(fā)平面上交軟件平面的ARP請求報文優(yōu)先級和限制速度的方法,在一定程度上可以減小無效ARP請求報文對于軟件的沖擊,但是同時也犧牲了設備對ARP請求報文處理能力,ARP是路由設備最基本的功能之一,如果ARP的處理能力不行,勢必會影響整個設備的性能。
發(fā)明內容
本發(fā)明目的在于提出一種ARP報文處理方法,解決了當存在大量無效ARP報文的時候,路由器處理能力變差的問題。
一種ARP報文處理方法,在路由器的轉發(fā)平面增加ARP過濾線性表,轉發(fā)平面根據接收到的ARP請求報文在ARP過濾線性表中查詢計算,如果ARP報文是無效的,則丟棄該ARP請求報文。
ARP過濾線性表字段包括目的IP地址、源IP地址、接口標識、目的IP地址掩碼、源IP地址掩碼和接口標識掩碼。
所述轉發(fā)平面根據接收到的ARP請求報文在ARP過濾線性表中查詢計算,具體步驟為a1.轉發(fā)平面收到ARP請求報文后,從ARP請求報文中取出目的IP地址、源IP地址和接口標識構造成A;a2.轉發(fā)平面取出已存在于轉發(fā)平面內部的線性表中的一個線性表項B,將B劃分為由目的IP地址、源IP地址和接口標識組成的C和由目的IP地址掩碼、源IP地址掩碼和接口標識掩碼組成的D;a3.將D與A做按位與運算,將計算的結果與C比較,如果不相等,則取出下一個線性表項重復上面的比較操作,若到線性表結束都沒有相等的表項,則丟棄該報文;如果比較相等,則上交控制平面處理。
本方案的更優(yōu)化方案為,在路由器的轉發(fā)平面增加ARP查找線性表,如果所述ARP報文是有效的,則根據接收到的ARP請求報文在ARP查找線性表中查找計算,如果ARP請求報文在ARP查找線性表中匹配成功,則由轉發(fā)平面直接發(fā)送ARP回應報文;如果匹配不成功,則轉發(fā)平面將該ARP請求報文轉發(fā)給控制平面處理。
ARP查找線性表字段包括曾發(fā)送過ARP請求報文的設備的IP地址。
所述根據接收到的ARP請求報文在ARP查找線性表中查找計算的具體步驟為b1.轉發(fā)平面根據這個ARP請求報文目的IP地址查找對應的ARP查找線性表;
b2.遍歷所述線性表,比較這個ARP請求報文的源IP地址是否與該線性表中的某個表項相同,若遍歷完線性表都沒有找到相同的表項,則轉發(fā)平面將這個ARP請求報文上交控制平面處理;若找到,則轉發(fā)平面發(fā)送ARP回應報文。
回應報文可由APR請求報文修改得到,具體修改方法是將源硬件地址填本設備的硬件地址,目的硬件地址填ARP請求報文的源硬件地址,將ARP報文中的源IP地址與目的IP地址的數據交換,將ARP報文類型由請求報文修改成回應報文類型。
本發(fā)明通過使用轉發(fā)平面預處理ARP報文,同時在轉發(fā)平面設置ARP過濾線性表,過濾大量無效的ARP報文,減少軟件平面需要處理的ARP報文的數量,從而提高路由器對ARP報文的處理能力;此外還設置ARP查找線性表,對于符合ARP查找線性表條件的ARP報文,直接由轉發(fā)平面進行處理,縮短ARP報文的處理時間,提高路由器對ARP報文的處理能力。
圖1為本發(fā)明中硬件過濾ARP請求報文使用的表項結構;圖2為本發(fā)明中硬件查找ARP表項使用的表項結構;圖3為本發(fā)明中硬件對ARP報文處理流程示意圖具體實施方式
為使本發(fā)明的目的、技術方案、及優(yōu)點更加清楚明白,以下參照附圖并舉實施例,對本發(fā)明進一步詳細說明。
本發(fā)明的基本思路為,如圖3所示,轉發(fā)平面收到ARP請求報文,然后取出目的IP地址、源IP地址和接口標識,構造成ARP過濾線性表的前半部分;然后遍歷整個ARP過濾線性表,查看該接收的ARP報文是否合法,如果不合法,則丟棄報文;如果合法,則根據報文接收接口找到該接收到的ARP報文對應的ARP查找線性表,遍歷該ARP查找線性表,查詢ARP查找線性表中是否存在該接收到的ARP報文對應的ARP表項,如果不存在,則把該接收到的ARP報文上交控制平面處理;如果存在,則發(fā)送ARP回應報文。
硬件轉發(fā)平面過濾無效ARP請求報文的過程的具體描述如下,這里所謂無效ARP指的是ARP請求報文的目的IP地址與報文接收接口的IP地址不相同。如果硬件轉發(fā)平面要過濾這種報文,轉發(fā)平面必須知道每個接口的標識以及接口對應的IP地址。設計硬件過濾ARP請求報文所需要的ARP過濾線性表項如圖1。轉發(fā)平面內的ARP過濾線性表中存在一個或者多個圖1所示的表項,使用線性表主要考慮到實現簡單,硬件查找速度快,不會因為查找速度影響效率。如圖1可以看出該表分為兩個部分,前半部分(12個字節(jié))存放目的IP地址、源IP地址和報文接收接口標識,這部分做為表項查找的關鍵字,后半部分(12個字節(jié))存放的是前半部分的掩碼,這樣做可以增強表項查找的靈活性,可以對前半部分中的目的IP地址、源IP地址和接口標識做部分檢查。
轉發(fā)平面收到ARP請求報文后,從ARP請求報文中取出目的IP地址、源IP地址和接口標識構造成線性表項的前半部分A,接著用A與已存在于轉發(fā)平面內部的ARP過濾線性表中的每一項進行比較,比較的方法是,取出已存在于轉發(fā)平面內部的線性表中的一個線性表項B,則B是由線性表項的前半部分C和線性表項的后半部分D(掩碼部分)構成的,使用D與A做按位與運算,計算的結果與C做是否相等比較,如果不相等,則取出下一個線性表項重復上面的比較操作,若到線性表結束都沒有相等的表項,說明是無效的ARP報文,丟棄該報文;如果比較相等,說明是有效的ARP請求報文,可以上交控制平面處理。
上面講到了轉發(fā)平面如何過濾無效的ARP請求報文,轉發(fā)平面能夠做出正確地判斷關鍵是有線性表的存在,那么線性表中的表項內容及其創(chuàng)建步驟如下線性表項的內容包括目的IP地址、源IP地址、接口標識、目的IP地址掩碼、源IP地址掩碼和接口標識掩碼。目的IP地址,實際應該理解成ARP報文接收接口的IP地址;源IP地址,因為ARP協(xié)議規(guī)定,對于ARP請求報文的接收接口來說,該接口接收到的ARP請求報文的源IP地址必須與該接口在相同網段,那么可以認為線性表中的源IP地址即為接口IP地址的子網網段地址;接口標識,即本設備用于標識該接口的編號??梢钥闯?,線性表項的所以結構都與接口配置的IP地址相關,實際上該線性表中的各個表項就是在接口配置IP地址的時候創(chuàng)建,目的IP地址即為接口配置的IP地址,源IP地址即為接口的子網地址(接口IP地址與掩碼做按位與運算的結果),接口標識即為接口的編號。同樣在刪除接口IP地址時可以刪除該表項。
這種IP地址加掩碼的線性表結構還可以更靈活的使用,如若接口需要做ARP代理,所謂ARP代理指的是通過該接口把兩個網絡相連,那么該接口就需要接收目的地址是該接口子網網段內的ARP請求報文,此時轉發(fā)平面內的ARP過濾線性表里的一個表項的目的IP地址就為接口IP地址與接口子網掩碼做按位與運算的結果,這樣轉發(fā)平面在做ARP請求報文檢查時就可以把目的地址屬于該接口子網的ARP報文都交由控制平面處理。
轉發(fā)平面響應ARP表項中存在的ARP請求報文的過程的具體描述如下,首先轉發(fā)平面必須知道該接口所有的ARP表項,所以設計如圖2所示表項結構用于轉發(fā)平面查找ARP表項。
每個接口保存一份由圖2所示的表項構成的線性表,每個表項為一個4字節(jié)的IP地址。這個線性表中的IP地址指的是發(fā)送ARP請求報文的設備的IP地址。有了該線性表后,轉發(fā)平面收到ARP請求報文后,先做無效ARP過濾檢查,即檢查ARP請求報文是否是發(fā)送給自己的,如果能通過檢查,則說明ARP請求報文的目的IP地址是接收接口的IP地址,源IP地址是接收接口子網網段內的地址。然后,根據這個ARP請求報文目的IP地址在該接口中找到對應的ARP查找線性表,然后遍歷線性表,比較這個ARP請求報文的源IP地址是否與ARP線性表中的某個表項相同,若遍歷完線性表都沒有找到與ARP請求報文的源IP地址相同的表項,則說明這是一個新的表項,即該ARP請求報文的源IP地址并沒有登記在控制平面的地址解析表中,于是,轉發(fā)平面把這個ARP請求報文上交控制平面處理;如果這個ARP報文的源IP地址在ARP線性表中找到與之相同的表項,此時轉發(fā)平面需要發(fā)送ARP回應報文,回應報文的構造方法可以在請求報文的基礎上修改,具體修改方法是把源硬件地址填本設備的硬件地址,目的硬件地址填ARP請求報文的源硬件地址,調換ARP報文中的源IP地址與目的IP地址,把ARP報文類型由請求報文修改成回應報文類型,然后發(fā)送該報文。
該線性表的創(chuàng)建的過程如下,控制平面收到ARP請求報文或者ARP回應報文后,建立控制平面內的軟件ARP表項成功后,根據報文接收接口找到對應的轉發(fā)平面的ARP線性表,然后新增加一個ARP線性表項;相反當控制平面刪除本平面內一個ARP表項時,同樣要刪除相應的轉發(fā)平面的ARP線性表項。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應該以權利要求的保護范圍為準。
權利要求
1.一種ARP報文處理方法,其特征在于,在路由器的轉發(fā)平面增加ARP過濾線性表,轉發(fā)平面根據接收到的ARP請求報文在ARP過濾線性表中查詢計算,如果ARP報文是無效的,則丟棄該ARP請求報文。
2.根據權利要求1所述的一種ARP報文處理方法,其特征在于ARP過濾線性表字段包括目的IP地址、源IP地址、接口標識、目的IP地址掩碼、源IP地址掩碼和接口標識掩碼。
3.根據權利要求1或2所述的一種ARP報文處理方法,其特征在于所述轉發(fā)平面根據接收到的ARP請求報文在ARP過濾線性表中查詢計算,具體步驟為a1.轉發(fā)平面收到ARP請求報文后,從ARP請求報文中取出目的IP地址、源IP地址和接口標識構造成A;a2.轉發(fā)平面取出已存在于轉發(fā)平面內部的線性表中的一個線性表項B,將B劃分為由目的IP地址、源IP地址和接口標識組成的C和由目的IP地址掩碼、源IP地址掩碼和接口標識掩碼組成的D;a3.將D與A做按位與運算,將計算的結果與C比較,如果不相等,則取出下一個線性表項重復上面的比較操作,若到線性表結束都沒有相等的表項,則丟棄該報文;如果比較相等,則上交控制平面處理。
4.根據權利要求1所述的一種ARP報文處理方法,其特征在于在路由器的轉發(fā)平面增加ARP查找線性表,如果所述ARP報文是有效的,則根據接收到的ARP請求報文在ARP查找線性表中查找計算,如果ARP請求報文在ARP查找線性表中匹配成功,則由轉發(fā)平面直接發(fā)送ARP回應報文;如果匹配不成功,則轉發(fā)平面將該ARP請求報文轉發(fā)給控制平面處理。
5.根據權利要求4所述的一種ARP報文處理方法,其特征在于ARP查找線性表字段包括曾發(fā)送過ARP請求報文的設備的IP地址。
6.根據權利要求5所述的一種ARP報文處理方法,其特征在于所述根據接收到的ARP請求報文在ARP查找線性表中查找計算的具體步驟為b1.轉發(fā)平面根據這個ARP請求報文目的IP地址查找對應的ARP查找線性表;b2.遍歷所述線性表,比較這個ARP請求報文的源IP地址是否與該線性表中的某個表項相同,若遍歷完線性表都沒有找到相同的表項,則轉發(fā)平面將這個ARP請求報文上交控制平面處理;若找到,則轉發(fā)平面發(fā)送ARP回應報文。
7.根據權利要求6所述的一種ARP報文處理方法,其特征在于回應報文可由APR請求報文修改得到,具體修改方法是將源硬件地址填本設備的硬件地址,目的硬件地址填ARP請求報文的源硬件地址,將ARP報文中的源IP地址與目的IP地址的數據交換,將ARP報文類型由請求報文修改成回應報文類型。
全文摘要
本發(fā)明公開了一種ARP報文處理方法,其特征在于,在路由器的轉發(fā)平面增加ARP過濾線性表和ARP查找線性表;將轉發(fā)平面接收到ARP請求報文在ARP過濾線性表中查找計算,過濾掉無效的ARP請求報文;把ARP請求報文在ARP查找線性表中查找計算,轉發(fā)平面直接發(fā)送已存在表中的ARP回應報文。通過本發(fā)明的提供的方法,提高了路由器對ARP報文的處理能力。
文檔編號H04L12/56GK1852253SQ20061003375
公開日2006年10月25日 申請日期2006年2月17日 優(yōu)先權日2006年2月17日
發(fā)明者任斌, 熊宇, 胡杰暉, 懷南, 曹亮 申請人:華為技術有限公司