一種地址解析協(xié)議緩存及其緩存方法
【專利摘要】本發(fā)明提供了一種ARP緩存,包括網(wǎng)絡接口模塊,用于將IP數(shù)據(jù)包發(fā)送至查找模塊進行IP地址查找;在IP地址查找失敗后,將獲取的MAC地址發(fā)送至查找模塊;查找模塊,用于根據(jù)網(wǎng)絡接口模塊發(fā)送的IP數(shù)據(jù)包在ARP緩存模塊中查找IP地址,在IP地址查找失敗后,將網(wǎng)絡接口模塊發(fā)送的MAC地址存儲到ARP緩存模塊;ARP緩存模塊,用于提供IP地址給查找模塊進行IP地址查找;在IP地址查找失敗后,將所述IP地址即時存儲到ARP緩存模塊中;本發(fā)明還同時公開了一種ARP緩存方法,采用本發(fā)明,能夠在ARP緩存被填滿但沒有任何ARP表項達到老化時間時,與非ARP高速緩存表中的其他主機通信。
【專利說明】一種地址解析協(xié)議緩存及其緩存方法
【技術領域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)中的地址解析協(xié)議(ARP,Address Resolution Protocol)緩存領域,尤其涉及一種ARP緩存及其緩存方法。
【背景技術】
[0002]ARP是在僅知道主機的因特網(wǎng)協(xié)議(IP,Internet Protocol)地址時確定其物理地址的一種協(xié)議,從IP地址到物理地址的映射有兩種方式:表格方式和非表格方式。ARP具體來說就是,將網(wǎng)絡層地址解析為數(shù)據(jù)連接層的物理地址,即:將IP地址解析為介質(zhì)訪問控制(MAC, MediaAccess Control)地址。
[0003]一般情況下,在眾多網(wǎng)絡協(xié)議和應用中,發(fā)送端往往有一個以上的IP數(shù)據(jù)包要發(fā)送到同一個終點,如果對發(fā)送到同一個主機或路由器的每一個數(shù)據(jù)包都使用ARP,那么效率是很低的。使用ARP高速緩存表可以解決這一問題,通常情況下,當主機或路由器通過ARP獲得某一遠端IP地址和物理地址的對應關系后,會將這個關系保存在本地的ARP高速緩存表中,以便于后續(xù)需要發(fā)往同一終點的IP數(shù)據(jù)包繼續(xù)使用。因此,在每臺安裝有傳輸控制協(xié)議 / 因特網(wǎng)互聯(lián)協(xié)議(TCP/IP, Transmission Control Protocol/Internet Protocol)協(xié)議棧的主機或路由器里都會有ARP高速緩存表。當網(wǎng)絡層有IP數(shù)據(jù)包需要發(fā)送時,會先查找這個ARP高速緩存表,找到要發(fā)送的目的主機或路由器的物理地址,若查找失敗,則會觸發(fā)ARP的執(zhí)行,通過ARP來動態(tài)獲取目的主機或路由器的物理地址,并保存在ARP高速緩存表中。ARP高速緩存表提高數(shù)據(jù)傳輸?shù)男?,?jié)省了網(wǎng)絡流量。
[0004]一般情況下,ARP高速緩存表并不長期的保存表中的各個表項。因為,首先ARP高速緩存表的資源有限,其次為了防止ARP欺騙等非法攻擊也需要對ARP高速緩存表進行超時處理。對ARP高速緩存表中的表項超時處理的過程稱為ARP老化。從伯克利系統(tǒng)演變而來的系統(tǒng)一般對完整的表項設置超時時間為20分鐘,而對不完整的表項設置超時時間為3分鐘,當這些表項再次使用時,一般都會將超時時間重新設為20分鐘。但是,在ARP高速緩存表被填滿之后,且沒有任何ARP表項達到老化時間之前,系統(tǒng)就無法和非ARP高速緩存表中的其他主機通信了。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明的主要目的在于提供一種ARP緩存及其緩存方法,能夠在ARP緩存被填滿之后、且沒有任何ARP表項達到老化時間之前,與非ARP高速緩存表中的其他主機通信。
[0006]為達到上述目的,本發(fā)明的技術方案是這樣實現(xiàn)的:
[0007]本發(fā)明提供了一種ARP緩存,該緩存包括:網(wǎng)絡接口模塊、查找模塊、ARP緩存模塊;其中,
[0008]所述網(wǎng)絡接口模塊,用于將IP數(shù)據(jù)包發(fā)送至查找模塊進行IP地址查找;在IP地址查找失敗后,將獲取的MAC地址發(fā)送至查找模塊;[0009]所述查找模塊,用于根據(jù)網(wǎng)絡接口模塊發(fā)送的IP數(shù)據(jù)包在ARP緩存模塊中查找IP地址,在IP地址查找失敗后,將網(wǎng)絡接口模塊發(fā)送的MAC地址存儲到ARP緩存模塊;
[0010]所述ARP緩存模塊,用于提供IP地址給查找模塊進行IP地址查找;在IP地址查找失敗后,將所述IP地址即時存儲到ARP緩存模塊中。
[0011]上述方案中,所述網(wǎng)絡接口模塊,還用于在IP地址查找失敗后獲取MAC地址。
[0012]上述方案中,所述網(wǎng)絡接口模塊,還用于在IP地址查找成功后,接收ARP緩存模塊發(fā)來的含有MAC地址的IP數(shù)據(jù)包;
[0013]相應的,所述查找模塊,還用于在IP地址查找成功后,將接收到的IP數(shù)據(jù)包存儲到ARP緩存模塊中;
[0014]所述ARP緩存模塊,還用于在IP地址查找成功后,將所述IP地址對應的MAC地址復制于IP數(shù)據(jù)包的頭部,并將含有MAC地址的IP數(shù)據(jù)包發(fā)送至網(wǎng)絡接口模塊。
[0015]上述方案中,所述ARP緩存模塊,還用于在IP地址查找失敗后,存儲所述IP地址對應的MAC地址;在IP地址查找成功后,存儲所述IP數(shù)據(jù)包。
[0016]上述方案中,所述ARP緩存進一步包括:時間同步模塊,用于提供當前同步時間給ARP緩存模塊。
[0017]上述方案中,所述ARP緩存模塊包括:IP地址存儲單元、MAC地址存儲單元、狀態(tài)存儲單元、IP數(shù)據(jù)包存儲單元、時間存儲單元;其中,
[0018]所述IP地址存儲單元,用于提供IP地址給查找模塊進行IP地址查找,在IP地址查找失敗后,存儲被查找的IP地址;
[0019]所述MAC地址存儲單元,用于存儲IP地址對應的MAC地址,并將所述MAC地址復制到IP數(shù)據(jù)包的頭部,將含有MAC地址的IP數(shù)據(jù)包發(fā)送至網(wǎng)絡接口模塊;
[0020]所述狀態(tài)存儲單元,用于存儲表項所處的狀態(tài);
[0021]所述IP數(shù)據(jù)包存儲單元,用于存儲IP數(shù)據(jù)包;
[0022]所述時間存儲單元,用于存儲IP地址存入的時間,并在MAC地址被使用時,更新該時間為當前時間。
[0023]本發(fā)明提供了一種ARP緩存方法,該方法包括:
[0024]將當前IP數(shù)據(jù)包發(fā)送至ARP緩存中進行IP地址查找;
[0025]在所述IP地址查找失敗后,將所述IP地址即時存入到ARP緩存中,并將獲取的所述IP地址對應的MAC地址存入到ARP緩存中。
[0026]上述方案中,所述將所述IP地址即時存入ARP緩存中包括:
[0027]當ARP緩存具有空閑狀態(tài)的表項時,直接將所述IP地址存儲在表項中;
[0028]當ARP緩存沒有空閑狀態(tài)的表項時,清空時間字段最小的表項,將所述IP地址存儲在表項中。
[0029]上述方案中,所述IP地址即時存入到ARP緩存之后,該方法還包括:獲取所述IP地址對應的MAC地址。
[0030]上述方案中,所述獲取所述IP地址對應的MAC地址包括:
[0031]廣播一個ARP請求報文至網(wǎng)絡層,所述ARP請求報文包含目的IP地址;
[0032]具有該目的IP地址的IP終端返回一個ARP響應報文到ARP緩存中,所述ARP響應報文包含目的IP地址對應的MAC地址;[0033]ARP緩存接收所述ARP響應報文。
[0034]本發(fā)明提供的ARP緩存及其緩存方法,與現(xiàn)有技術相比,在ARP緩存被填滿后,通過ARP緩存模塊將時間字段最小的表項清空,并將該表項的狀態(tài)字段設置為空閑狀態(tài),如此,新的目的IP地址可以即時被存入該表項中;并且,獲取新存入的IP地址對應的MAC地址,將該MAC地址存入該表項中;如此,可以利用該ARP緩存中新存入的MAC地址,將IP數(shù)據(jù)包發(fā)送至目的IP終端。
【專利附圖】
【附圖說明】
[0035]圖1為本發(fā)明ARP緩存組成結構示意圖;
[0036]圖2為本發(fā)明ARP緩存實現(xiàn)其緩存方法的流程示意圖;
[0037]圖3為本發(fā)明實施例中利用ARP緩存進行緩存的實現(xiàn)流程示意圖;
[0038]圖4為本發(fā)明ARP緩存狀態(tài)轉(zhuǎn)換圖。
【具體實施方式】
[0039]為了能夠更加詳盡地了解本發(fā)明的特點與技術內(nèi)容,下面結合附圖對本發(fā)明的實現(xiàn)進行詳細闡述,所附附圖僅供參考說明之用,并非用來限定本發(fā)明。
[0040]圖1為本發(fā)明ARP緩存組成結構示意圖,如圖1所示,該ARP緩存包括:網(wǎng)絡接口模塊11、查找模塊12、ARP緩存模塊13 ;其中,
[0041]所述網(wǎng)絡接口模塊11,用于將IP數(shù)據(jù)包發(fā)送至查找模塊12進行IP地址查找;在IP地址查找失敗后,將獲取的MAC地址發(fā)送至查找模塊12 ;
[0042]這里,所述IP數(shù)據(jù)包為本地終端發(fā)送到目的MAC地址的一組數(shù)據(jù),該IP數(shù)據(jù)包包括:目的IP地址、源IP地址、源MAC地址等;
[0043]進一步的,所述網(wǎng)絡接口模塊11,還用于在IP地址查找成功后,接收ARP緩存模塊13發(fā)來的含有MAC地址的IP數(shù)據(jù)包;
[0044]進一步的,所述網(wǎng)絡接口模塊11,還用于在IP地址查找失敗后,接收查找模塊12發(fā)送的IP地址查找失敗信息;
[0045]進一步的,所述網(wǎng)絡接口模塊11,還用于在IP地址查找失敗后,獲取MAC地址;
[0046]具體的,IP地址查找失敗后,網(wǎng)絡接口模塊11廣播一個ARP請求報文至網(wǎng)絡層,所述ARP請求報文包含目的IP地址;相應的,具有該目的IP地址的IP終端返回一個ARP響應報文到網(wǎng)絡接口模塊11,所述ARP響應報文包含目的IP地址對應的MAC地址;網(wǎng)絡接口模塊11接收該ARP響應報文,如此,網(wǎng)絡接口模塊11從ARP響應報文中獲取MAC地址。
[0047]所述查找模塊12,用于接收網(wǎng)絡接口模塊11發(fā)送的IP數(shù)據(jù)包,并根據(jù)該IP數(shù)據(jù)包在ARP緩存模塊13中查找IP地址;在IP地址查找失敗后,將網(wǎng)絡接口模塊11發(fā)送的MAC地址存儲到ARP緩存模塊;
[0048]這里,所述在ARP緩存模塊13中查找的IP地址是:接收到的IP數(shù)據(jù)包的目的IP地址;相應的,所述IP地址查找失敗是:ARP緩存模塊13中沒有查找到所接收IP數(shù)據(jù)包的目的IP地址;
[0049]進一步的,所述查找模塊12,還用于在IP地址查找失敗后,發(fā)送IP地址查找失敗信息給網(wǎng)絡接口模塊11;[0050]所述ARP緩存模塊13,用于提供IP地址給查找模塊12進行查找,在IP地址查找失敗后,將該IP地址即時存儲到ARP緩存模塊13中;
[0051]這里,所述將IP地址即時存儲到ARP緩存模塊13中有兩種情況,具體為:
[0052]當ARP緩存模塊13具有空閑(FREE)狀態(tài)的表項時,直接將該IP地址存儲在該表項中,并將狀態(tài)字段設置為待定(PENDING)狀態(tài);
[0053]當ARP緩存模塊13沒有FREE狀態(tài)的表項時,清空時間字段最小的表項,并將該表項的狀態(tài)字段設置為FREE,將該IP地址存儲在該表項中,狀態(tài)字段設置為PENDING狀態(tài);
[0054]進一步的,將時間字段與當前時間的差值大于超時時間(Timeout)的表項全部清空,并將這些表項的狀態(tài)字段設置為FREE ;
[0055]這里,所述表項為一組記錄IP地址到MAC地址映射的數(shù)據(jù),包括:IP地址、MAC地址、狀態(tài)字段、時間字段、隊列號字段等;其中,
[0056]所述IP地址,用于記錄一個IP地址;
[0057]所述MAC地址,用于記錄所述IP地址對應的一個MAC地址;
[0058]所述狀態(tài)字段,用于記錄所述IP地址、MAC地址的記錄情況;
[0059]所述時間字段,用于記錄所述IP地址被記錄的時間,并更新該時間為所述MAC地址被使用的時間;
[0060]所述隊列號字段,用于記錄存儲在所述IP地址之后的IP數(shù)據(jù)包;
[0061]進一步的,所述狀態(tài)字段的內(nèi)容包括:FREE狀態(tài)、PENDING狀態(tài)、已存(RESOLVED)狀態(tài);
[0062]其中,F(xiàn)REE狀態(tài)對應IP地址無記錄、MAC地址無記錄的情況;PENDING狀態(tài)記錄IP地址有記錄、MAC地址無記錄的情況;RES0LVED狀態(tài)記錄IP地址有記錄、MAC地址有記錄的情況;
[0063]相應的,F(xiàn)REE狀態(tài)表示該表項可以給其它新的IP地址使用;PENDING狀態(tài)表示該表項處于等待記錄MAC地址;RES0LVED狀態(tài)表示該表項中的MAC地址可以被使用;
[0064]這里,所述時間字段具體為:當一個新IP地址被存儲在FREE狀態(tài)的表項時,將此刻的同步時間存儲在該表項的時間字段;當該表項的IP地址對應的MAC地址被使用時,更新所存儲的時間字段為當前同步時間;
[0065]相應的,所述時間字段最小的表項是時間字段存儲最早的表項;
[0066]這里,所述Timeout是已經(jīng)設定好的超時時間,一般為2_4分鐘;
[0067]所述ARP緩存模塊13,還用于在IP地址查找成功后,將該IP地址對應的MAC地址復制于IP數(shù)據(jù)包的頭部,并將含有MAC地址的IP數(shù)據(jù)包發(fā)送至網(wǎng)絡接口模塊11。
[0068]這里,所述將MAC地址存儲到ARP緩存模塊13中具體為:將MAC地址存儲在已存有與其對應IP地址的表項中;在MAC地址存儲后,將原來的PENDING狀態(tài)設置為RESOLVED狀態(tài);
[0069]進一步的,在IP地址查找成功后,所述查找模塊12還用于將接收到的IP數(shù)據(jù)包存儲到ARP緩存模塊13中;
[0070]這里,所述將IP數(shù)據(jù)包存儲到緩存模塊13中具體為:將IP數(shù)據(jù)包存儲在已存有與其對應IP地址的表項中;具體的,存儲在該表項中的隊列號之后;進一步的,對于同一 IP地址的所有IP數(shù)據(jù)包依次存入該隊列號之后;[0071]進一步的,存儲IP地址后,所述ARP緩存模塊13還用于存儲該IP地址對應的MAC地址;
[0072]進一步的,在IP地址查找成功后,所述ARP緩存模塊13還用于存儲IP數(shù)據(jù)包;
[0073]這里,用于存儲IP數(shù)據(jù)包的表項包括兩種狀態(tài):RES0LVED狀態(tài)、PENDING狀態(tài);
[0074]進一步的,當該表項為RESOLVED狀態(tài)時,即該表項已存有MAC地址,將該MAC地址復制到隊列號之后的IP數(shù)據(jù)包頭部,并發(fā)送至網(wǎng)絡接口模塊11 ;當該表項為PENDING狀態(tài)時,即該表項未存有MAC地址,隊列號之后的IP數(shù)據(jù)包處于時刻等待發(fā)送狀態(tài),直到該表項存入MAC地址、變?yōu)镽ESOLVED狀態(tài)時,才將MAC地址復制到隊列號之后的IP數(shù)據(jù)包頭部,并發(fā)送至網(wǎng)絡接口模塊11 ;
[0075]相應的,網(wǎng)絡接口模塊11接收到含有MAC地址的IP數(shù)據(jù)包后,依據(jù)MAC地址,SP:目的MAC地址,將其發(fā)送到目的IP終端。
[0076]進一步的,該ARP緩存還包括時間同步模塊14,用于提供當前同步時間給ARP緩存模塊13 ;
[0077]具體的,所述時間同步模塊14提供當前同步時間為:當一個新IP地址被存儲在FREE狀態(tài)的表項時,將此刻的同步時間存儲在該表項的時間字段;當該表項的IP地址對應的MAC地址被使用時,更新所存儲的時間字段為當前同步時間。
[0078]進一步的,所述ARP緩存模塊13包括:IP地址存儲單元131、MAC地址存儲單元132、狀態(tài)存儲單元133、IP數(shù)據(jù)包存儲單元134、時間存儲單元135 ;其中,
[0079]所述IP地址存儲單元131對應表項中的IP地址部分,用于提供IP地址給查找模塊12進行IP地址查找;在IP地址查找失敗后,存儲被查找的IP地址;
[0080]這里,IP地址存儲單元131存儲該IP地址有兩種情況,具體為:
[0081 ] 當ARP緩存模塊13具有FREE狀態(tài)的表項時,直接將IP地址存儲到該表項中的IP地址存儲單元131,并將狀態(tài)字段設置為PENDING狀態(tài);
[0082]當ARP緩存模塊13沒有FREE狀態(tài)的表項時,清空時間字段最小的表項,將該表項的狀態(tài)字段設置為FREE,并將IP地址存儲到該表項中的IP地址存儲單元131,狀態(tài)字段設置為PENDING狀態(tài);進一步的,將時間字段與當前時間的差值大于Timeout的表項全部清空,并將這些表項的狀態(tài)字段設置為FREE ;
[0083]所述MAC地址存儲單元132對應表項中的MAC地址部分,用于存儲IP地址對應的MAC地址,并將該MAC地址復制到IP數(shù)據(jù)包的頭部,將含有MAC地址的IP數(shù)據(jù)包發(fā)送至網(wǎng)絡接口模塊11 ;
[0084]這里,所述存儲IP地址對應的MAC地址具體為:將MAC地址存儲到存有對應IP地址表項的MAC地址存儲單元132 ;將原來的PENDING狀態(tài)設置為RESOLVED狀態(tài);
[0085]所述狀態(tài)存儲單元133對應表項中的狀態(tài)字段,用于存儲表項所處的狀態(tài);
[0086]具體的,狀態(tài)存儲單元133所存儲的狀態(tài)包括:FREE、PENDING、RESOLVED ;
[0087]所述FREE狀態(tài),表示該表項中的IP地址存儲單元131和MAC地址存儲單元132為空閑狀態(tài),可以給其他新的IP地址和MAC地址使用;
[0088]所述PENDING狀態(tài),表示該表項中的IP地址存儲單元131存有IP地址,但MAC地址存儲單元132沒有存放MAC地址,處于時刻等待接收MAC地址狀態(tài);
[0089]所述RESOLVED狀態(tài),表示該表項中的IP地址存儲單元131和MAC地址存儲單元132分別存有IP地址和MAC地址,IP數(shù)據(jù)包可以利用該MAC地址進行數(shù)據(jù)的傳輸;
[0090]所述IP數(shù)據(jù)包存儲單元134對應表項中的隊列號字段,用于存儲IP數(shù)據(jù)包;
[0091]這里,所述存儲IP數(shù)據(jù)包具體為:將IP數(shù)據(jù)包存儲在存有對應IP地址表項的IP數(shù)據(jù)包存儲單元134 ;進一步的,對于同一 IP地址的所有IP數(shù)據(jù)包依次存入該IP數(shù)據(jù)包存儲單兀134后;
[0092]相應的,所述MAC地址存儲單元132將MAC地址復制在IP數(shù)據(jù)包頭部具體為:當狀態(tài)存儲單元133存儲RESOLVED狀態(tài)時,即該表項已存有MAC地址,將該MAC地址復制到IP數(shù)據(jù)包存儲單元134中的IP數(shù)據(jù)包頭部,并發(fā)送至網(wǎng)絡接口模塊11 ;當狀態(tài)存儲單元133存儲PENDING狀態(tài)時,即該表項未存有MAC地址,IP數(shù)據(jù)包存儲單元134中的IP數(shù)據(jù)包處于時刻等待發(fā)送狀態(tài),直到MAC地址存儲單元132中存入MAC地址、進而狀態(tài)存儲單元133存儲RESOLVED狀態(tài)時,才將MAC地址復制到IP數(shù)據(jù)包存儲單元134中的IP數(shù)據(jù)包頭部,并發(fā)送至網(wǎng)絡接口模塊11 ;
[0093]所述時間存儲單元135對應表項中的時間字段,用于存儲IP地址存入的時間,并在MAC地址被使用時,更新該時間為當前時間;
[0094]所述MAC地址被使用是:MAC地址存儲單元132將MAC地址復制在IP數(shù)據(jù)包頭部。
[0095]圖2為本發(fā)明ARP緩存實現(xiàn)其緩存方法的實現(xiàn)流程示意圖,如圖2所示,該方法包括步驟:
[0096]步驟201:將當前IP數(shù)據(jù)包發(fā)送至ARP緩存中進行IP地址查找;
[0097]這里,所述IP數(shù)據(jù)包為本地終端發(fā)送到目的MAC地址的一組數(shù)據(jù),該IP數(shù)據(jù)包包括:目的IP地址、源IP地址、源MAC地址等;
[0098]所述進行IP地址查找是:查找IP數(shù)據(jù)包的目的IP地址。
[0099]步驟202:該IP地址查找失敗后,將該IP地址即時存入到ARP緩存中,并將獲取的該IP地址對應的MAC地址存入到ARP緩存中;
[0100]這里,該IP地址是IP數(shù)據(jù)包的目的IP地址;
[0101]所述將該IP地址即時存入到ARP緩存中具體包括兩種情況,具體為:
[0102]當ARP緩存具有FREE狀態(tài)的表項時,直接將該IP地址存儲在該表項中,并將狀態(tài)字段設置為待定ENDING狀態(tài);
[0103]當ARP緩存沒有FREE狀態(tài)的表項時,清空時間字段最小的表項,并將該表項的狀態(tài)字段設置為FREE,將該IP地址存儲在該表項中,狀態(tài)字段設置為PENDING狀態(tài);
[0104]進一步的,將時間字段與當前時間的差值大于Timeout的表項全部清空,并將這些表項的狀態(tài)字段設置為FREE ;
[0105]這里,所述表項為一組記錄IP地址到MAC地址映射的數(shù)據(jù),包括:IP地址、MAC地址、狀態(tài)字段、時間字段、隊列號字段等;其中,
[0106]所述IP地址,用于記錄一個IP地址;
[0107]所述MAC地址,用于記錄所述IP地址對應的一個MAC地址;
[0108]所述狀態(tài)字段,用于記錄所述IP地址、MAC地址的記錄情況;
[0109]所述時間字段,用于記錄所述IP地址被記錄的時間,并更新該時間為所述MAC地址被使用的時間;
[0110]所述隊列號字段,用于記錄存儲在所述IP地址之后的IP數(shù)據(jù)包;[0111]進一步的,所述狀態(tài)字段的內(nèi)容包括:FREE狀態(tài)、PENDING狀態(tài)、已存(RESOLVED)狀態(tài);
[0112]其中,F(xiàn)REE狀態(tài)對應IP地址無記錄、MAC地址無記錄的情況;PENDING狀態(tài)記錄IP地址有記錄、MAC地址無記錄的情況;RES0LVED狀態(tài)記錄IP地址有記錄、MAC地址有記錄的情況;
[0113]相應的,F(xiàn)REE狀態(tài)表示該表項可以給其它新的IP地址使用;PENDING狀態(tài)表示該表項處于等待記錄MAC地址;RES0LVED狀態(tài)表示該表項中的MAC地址可以被使用;
[0114]這里,所述時間字段具體為:當一個新IP地址被存儲在FREE狀態(tài)的表項時,將此刻的同步時間存儲在該表項的時間字段;當該表項的IP地址對應的MAC地址被使用時,更新所存儲的時間字段為當前同步時間;
[0115]相應的,所述時間字段最小的表項是時間字段存儲最早的表項;
[0116]這里,所述Timeout是已經(jīng)設定好的超時時間,一般為2_4分鐘。
[0117]進一步的,當所述IP地址即時存入到ARP緩存之后,該方法還包括:獲取該IP地址對應的MAC地址;
[0118]具體的,ARP緩存廣播一個ARP請求報文至網(wǎng)絡層,所述ARP請求報文包含目的IP地址;相應的,具有該目的IP地址的IP終端返回一個ARP響應報文到ARP緩存,所述ARP響應報文包含目的IP地址對應的MAC地址;ARP緩存接收該ARP響應報文,如此,ARP緩存從ARP響應報文中獲取MAC地址。
[0119]該方法還包括:ARP緩存根據(jù)該IP地址對應的MAC地址,將IP數(shù)據(jù)包發(fā)送至目的IP終端;
[0120]這里,所述該IP地址為目的IP地址;相應的,將該目的IP地址對應的MAC地址即目的MAC地址復制到隊列號之后的IP數(shù)據(jù)包頭部,依據(jù)該目的MAC地址,將IP數(shù)據(jù)包發(fā)送到目的IP終端。
[0121]圖3為本發(fā)明實施例中利用ARP緩存進行緩存的實現(xiàn)流程示意圖,如圖3所示,該方法包括步驟:
[0122]步驟301:將當前IP數(shù)據(jù)包發(fā)送至ARP緩存中進行IP地址查找;
[0123]這里,所述IP數(shù)據(jù)包為本地終端發(fā)送到目的MAC地址的一組數(shù)據(jù),該IP數(shù)據(jù)包包括:目的IP地址、源IP地址、源MAC地址等;
[0124]所述進行IP地址查找是:查找IP數(shù)據(jù)包的目的IP地址。
[0125]步驟302:判斷是否查找到該IP地址,若查找到該IP地址,說明IP地址查找成功,則執(zhí)行步驟303 ;若未查找到該IP地址,說明IP地址查找失敗,則執(zhí)行步驟305 ;
[0126]這里,該IP地址是IP數(shù)據(jù)包的目的IP地址。
[0127]步驟303:判斷ARP緩存中是否存有與該IP地址對應的MAC地址,若存有該MAC地址,則執(zhí)行步驟304 ;若沒有存該MAC地址,則執(zhí)行步驟308 ;
[0128]本步驟前還包括:將IP數(shù)據(jù)包存儲到ARP緩存中;具體的,將IP數(shù)據(jù)包存儲在已存有與其對應IP地址的表項中;
[0129]進一步的,存儲在該表項中的隊列號之后,對于同一 IP地址的所有IP數(shù)據(jù)包依次存入該隊列號之后。
[0130]步驟304:利用該MAC地址發(fā)送IP數(shù)據(jù)包,結束當前處理流程;[0131]具體的,將該MAC地址即目的MAC地址復制到隊列號之后的IP數(shù)據(jù)包頭部,依據(jù)該目的MAC地址,將IP數(shù)據(jù)包發(fā)送到目的IP終端。
[0132]步驟305:判斷ARP緩存中是否有FREE狀態(tài)的表項,若無FREE狀態(tài)的表項,則執(zhí)行步驟306 ;若有FREE狀態(tài)的表項,則直接執(zhí)行步驟307 ;
[0133]這里,所述表項為一組記錄IP地址到MAC地址映射的數(shù)據(jù),包括:IP地址、MAC地址、狀態(tài)字段、時間字段、隊列號字段等;其中,
[0134]所述IP地址,用于記錄一個IP地址;
[0135]所述MAC地址,用于記錄所述IP地址對應的一個MAC地址;
[0136]所述狀態(tài)字段,用于記錄所述IP地址、MAC地址的記錄情況;
[0137]所述時間字段,用于記錄所述IP地址被記錄的時間,及更新該時間為所述MAC地址被使用的時間;
[0138]所述隊列號字段,用于記錄存儲在所述IP地址之后的IP數(shù)據(jù)包;
[0139]進一步的,所述狀態(tài)字段的內(nèi)容包括:FREE狀態(tài)、PENDING狀態(tài)、已存RESOLVED狀態(tài);
[0140]其中,F(xiàn)REE狀態(tài)對應IP地址無記錄、MAC地址無記錄的情況;PENDING狀態(tài)記錄IP地址有記錄、MAC地址無記錄的情況;RES0LVED狀態(tài)記錄IP地址有記錄、MAC地址有記錄的情況;
[0141]相應的,F(xiàn)REE狀態(tài)表示該表項可以給其它新的IP地址使用;PENDING狀態(tài)表示該表項處于等待記錄MAC地址;RES0LVED狀態(tài)表示該表項中的MAC地址可以被使用;
[0142]這里,所述時間字段具體為:當一個新IP地址被存儲在FREE狀態(tài)的表項時,將此刻的同步時間存儲在該表項的時間字段;當該表項的IP地址對應的MAC地址被使用時,更新所存儲的時間字段為當前同步時間;
[0143]相應的,所述時間字段最小的表項是時間字段存儲最早的表項;
[0144]這里,所述Timeout是已經(jīng)設定好的超時時間,一般為2_4分鐘。
[0145]步驟306:將時間字段最小的表項清空,并將該表項的狀態(tài)字段設置為FREE ;將時間字段與當前時間的差值大于Timeout的表項全部清空,并將相應表項的狀態(tài)字段設置為FREE。
[0146]步驟307:存儲被查找的IP地址,并更新時間字段為當前同步時間;
[0147]相應的,將該表項的狀態(tài)字段設置為PENDING。
[0148]步驟308:獲取該IP地址對應的MAC地址,執(zhí)行步驟303 ;
[0149]所述獲取IP地址對應的MAC地址具體包括:廣播一個ARP請求報文至網(wǎng)絡層,所述ARP請求報文包含目的IP地址;相應的,具有該目的IP地址的IP終端返回一個ARP響應報文到ARP緩存中,所述ARP響應報文包含目的IP地址對應的MAC地址;ARP緩存接收該ARP響應報文,如此,ARP緩存從ARP響應報文中獲取MAC地址。
[0150]圖4為本發(fā)明的ARP緩存狀態(tài)轉(zhuǎn)換圖,如圖4所示,ARP緩存狀態(tài)包括:FREE狀態(tài)41、PENDING 狀態(tài) 42、RESOLVED 狀態(tài) 43 ;其中,
[0151 ] FREE狀態(tài)41,對應IP地址無記錄、MAC地址無記錄的情況;
[0152]PENDING狀態(tài)42,對應IP地址有記錄、MAC地址無記錄的情況;
[0153]RESOLVED狀態(tài)43,對應IP地址有記錄、MAC地址有記錄的情況;[0154]當FREE狀態(tài)41的表項中記錄IP地址時,該狀態(tài)轉(zhuǎn)變?yōu)镻ENDING狀態(tài)42 ;
[0155]當PENDING狀態(tài)42的表項中記錄MAC地址時,該狀態(tài)轉(zhuǎn)變?yōu)镽ESOLVED狀態(tài)43 ;
[0156]當RESOLVED狀態(tài)43的表項中的時間字段與當前時間的差值大于Timeout時,該狀態(tài)轉(zhuǎn)變?yōu)镕REE狀態(tài)41 ;
[0157]當PENDING狀態(tài)42的表項中的時間字段與當前時間的差值大于Timeout時,該狀態(tài)轉(zhuǎn)變?yōu)镕REE狀態(tài)41。
[0158]以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
【權利要求】
1.一種ARP緩存,其特征在于,該緩存包括:網(wǎng)絡接口模塊、查找模塊、ARP緩存模塊;其中, 所述網(wǎng)絡接口模塊,用于將IP數(shù)據(jù)包發(fā)送至查找模塊進行IP地址查找;在IP地址查找失敗后,將獲取的MAC地址發(fā)送至查找模塊; 所述查找模塊,用于根據(jù)網(wǎng)絡接口模塊發(fā)送的IP數(shù)據(jù)包在ARP緩存模塊中查找IP地址,在IP地址查找失敗后,將網(wǎng)絡接口模塊發(fā)送的MAC地址存儲到ARP緩存模塊; 所述ARP緩存模塊,用于提供IP地址給查找模塊進行IP地址查找;在IP地址查找失敗后,將所述IP地址即時存儲到ARP緩存模塊中。
2.根據(jù)權利要求1所述的ARP緩存,其特征在于,所述網(wǎng)絡接口模塊,還用于在IP地址查找失敗后獲取MAC地址。
3.根據(jù)權利要求1或2所述的ARP緩存,其特征在于,所述網(wǎng)絡接口模塊,還用于在IP地址查找成功后,接收ARP緩存模塊發(fā)來的含有MAC地址的IP數(shù)據(jù)包; 相應的,所述查找模塊,還用于在IP地址查找成功后,將接收到的IP數(shù)據(jù)包存儲到ARP緩存模塊中; 所述ARP緩存模塊,還用于在IP地址查找成功后,將所述IP地址對應的MAC地址復制于IP數(shù)據(jù)包的頭部,并將含有MAC地址的IP數(shù)據(jù)包發(fā)送至網(wǎng)絡接口模塊。
4.根據(jù)權利要求1所述的ARP緩存,其特征在于,所述ARP緩存模塊,還用于在IP地址查找失敗后,存儲所述IP地址對應的MAC地 址;在IP地址查找成功后,存儲所述IP數(shù)據(jù)包。
5.根據(jù)權利要求1、2或4所述的ARP緩存,其特征在于,所述ARP緩存進一步包括:時間同步模塊,用于提供當前同步時間給ARP緩存模塊。
6.根據(jù)權利要求3所述的ARP緩存,其特征在于,所述ARP緩存模塊包括:IP地址存儲單元、MAC地址存儲單元、狀態(tài)存儲單元、IP數(shù)據(jù)包存儲單元、時間存儲單元;其中, 所述IP地址存儲單元,用于提供IP地址給查找模塊進行IP地址查找,在IP地址查找失敗后,存儲被查找的IP地址; 所述MAC地址存儲單元,用于存儲IP地址對應的MAC地址,并將所述MAC地址復制到IP數(shù)據(jù)包的頭部,將含有MAC地址的IP數(shù)據(jù)包發(fā)送至網(wǎng)絡接口模塊; 所述狀態(tài)存儲單元,用于存儲表項所處的狀態(tài); 所述IP數(shù)據(jù)包存儲單元,用于存儲IP數(shù)據(jù)包; 所述時間存儲單元,用于存儲IP地址存入的時間,并在MAC地址被使用時,更新該時間為當前時間。
7.—種ARP緩存方法,其特征在于,該方法包括: 將當前IP數(shù)據(jù)包發(fā)送至ARP緩存中進行IP地址查找; 在所述IP地址查找失敗后,將所述IP地址即時存入到ARP緩存中,并將獲取的所述IP地址對應的MAC地址存入到ARP緩存中。
8.根據(jù)權利要求7所述的ARP緩存方法,其特征在于,所述將所述IP地址即時存入ARP緩存中包括: 當ARP緩存具有空閑狀態(tài)的表項時,直接將所述IP地址存儲在表項中; 當ARP緩存沒有空閑狀態(tài)的表項時,清空時間字段最小的表項,將所述IP地址存儲在表項中。
9.根據(jù)權利要求7或8所述的ARP緩存方法,其特征在于,所述IP地址即時存入到ARP緩存之后,該方法還包括:獲取所述IP地址對應的MAC地址。
10.根據(jù)權利要求9所述的ARP緩存方法,其特征在于,所述獲取所述IP地址對應的MAC地址包括: 廣播一個ARP請求報文至網(wǎng)絡層,所述ARP請求報文包含目的IP地址;具有該目的IP地址的IP終端返回一個ARP響應報文到ARP緩存中,所述ARP響應報文包含目的IP地址對應的MAC地址; ARP緩存接收所述ARP響 應報文。
【文檔編號】H04L29/06GK103856435SQ201210494749
【公開日】2014年6月11日 申請日期:2012年11月28日 優(yōu)先權日:2012年11月28日
【發(fā)明者】馬勇軍 申請人:中興通訊股份有限公司