背景技术
通信设备根据缓存的ARP表,能够实现从IP地址到MAC(Media AccessControl,媒介访问控制)地址的解析。其中,在一般二层交换机的ARP表项中,需要记录IP地址、下一跳MAC地址和Port(端口)号等信息;在需要跨VLAN(Virtual Local Area Network,虚拟局域网)转发报文的情况下,比如在三层交换机或者路由器中,一个ARP表项还需要记录与下一跳MAC地址关联的VLAN虚接口信息。
为了组织方便,ARP表可以由记录IP信息的IP子表、记录MAC信息的MAC子表和记录端口号信息的端口子表组成;对于三层交换机和路由器而言,其ARP表还进一步包括记录VLAN虚接口信息的VLAN虚接口子表,并通过VLAN虚接口索引与MAC子表关联。在上述ARP表中,MAC子表和端口子表往往通过共用IP子表项的Next-Index(下一索引)实现到IP地址的关联,如图1所示;同时,IP子表项通过HASH算法确定其在IP子表中存放位置。
为了保证下一跳路由解析的正确性,交换设备中需要不断进行ARP表项的更新和添加。对于ARP表项的更新来说,直接比较IP地址,并相应修改对应的MAC地址以及端口号即可;但对于ARP表项的添加来说,现有技术中由于需要先进行MAC地址、端口号以及VLAN接口的比较,因此存在处理效率低的缺陷。
以前述由IP子表、MAC子表和端口子表以及VLAN子表组成的ARP表为例,现有技术中进行该ARP表项的添加步骤如下:(a1)如果存在匹配的MAC地址、端口号以及VLAN虚接口,则返回该完全匹配子表项的索引,否则添加MAC地址、端口号以及VLAN虚接口,并返回该子表项的索引;(a2)将上一步返回的索引赋给IP子表项的Next-Index参数,将待添加ARP表项的IP赋给同一IP子表项的IP参数;(a3)通过HASH算法确定该IP子表项的索引,然后将步骤(a2)确定的参数添加到该IP子表的相应位置中。可以看出,该添加ARP表项的流程是先确定MAC子表项和端口子表项的索引,再添加IP子表项。
假设,当前已经添加了100条参数完全不同的ARP表项,如果需要添加一条新的ARP表项,则需要进行如下处理:(b1)进行MAC子表项、端口子表项的比较,由于参数完全不同,则在MAC子表、端口子表索引101处添加对应子表项,然后返回索引值101;(b2)给参数Next-Index赋值101,给IP参数赋值;(b3)根据HASH算法确定IP子表项索引(假设该索引为3),则在相应位置3处添加IP子表项,包括IP值以及Next-Index 101。
显然,由于现有技术中需要进行待添加ARP表项与已添加ARP表项信息的MAC和端口号信息的比较,因此,在存在大量ARP表项的情况下再进行添加工作,或者频繁地添加/删除ARP表项,都会造成系统效率低下,甚至导致处理能力的瘫痪。
发明内容
本发明的目的是克服上述现有技术中的缺陷,提供一种ARP表项的快速添加方案,以提高添加ARP表项的效率。
为实现上述目的,本发明的实施例提供了一种ARP表项的快速添加方法,包括以下步骤:
S1、对于待添加ARP表项,计算其IP地址在ARP表中的索引,其中,所述ARP表至少由IP子表、MAC子表和端口子表组成;
S2、在所述IP子表、MAC子表和端口子表的所述索引位置处,将待添加ARP表项的IP地址、MAC地址和端口号相应赋予上述各子表项。
本发明的实施例还提供了一种ARP表项的快速添加装置,与用于保存ARP表的ARP缓存单元连接,所述ARP缓存单元包括用于保存IP子表的IP子单元、用于保存MAC子表的MAC子单元和用于保存端口子表的端口子单元,所述快速添加装置包括:索引计算单元,用于计算待添加ARP表项的IP地址在ARP表中的索引;表项变更单元,与ARP缓存单元和索引计算单元连接,用于在所述IP子表、MAC子表和端口子表的所述索引位置处,将待添加ARP表项的IP地址、MAC地址和端口号相应赋予上述各子表项。
本发明的实施例还提供了一种交换设备,设有上述ARP表项的快速添加装置。
由上述技术方案可知,本发明以IP索引替代专用的Next-Index,具有以下有益效果:
省略了现有ARP表项添加过程中对MAC地址和端口号的匹配查找过程,提高了添加ARP表项的效率。
具体实施方式
为了提高添加ARP表项的效率,本发明提供了通过IP地址索引关联IP地址、MAC地址和端口号的技术方案,以避免现有技术中对MAC地址和端口号的匹配查找过程。下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
需要首先说明的是,一般情况下,进行ARP表项添加的工作都是由底层交换芯片完成的,而识别ARP表项属于更新还是添加的工作则由上层处理装置完成。本发明所解决的是底层交换芯片的添加ARP表项问题。
参见图2,为本发明提供的ARP表项的快速添加方法的实施例流程图,包括以下步骤:
S1、对于待添加ARP表项,计算其IP地址在ARP表中的索引;
一般情况下,ARP表项的位置都是根据对IP地址进行HASH计算获得的,因此本技术方案中可以沿用现有技术的计算方法,即通过HASH算法计算待添加ARP表项中IP地址在ARP表中的索引。
S2、将待添加ARP表项的IP地址、MAC地址和端口号以该索引关联,并添加到ARP表中。
本步骤S2相对于ARP表的不同组织结构,可以存在不同的实现方案。
例如,以该索引为指针分别指向待添加ARP表项的IP地址、MAC地址和端口号,并添加到ARP表中。
又例如,当ARP表至少由IP子表、MAC子表和端口子表组成时,本步骤S2可以包括:在IP子表、MAC子表和端口子表的索引位置处,将所述IP地址、MAC地址和端口号相应赋予上述各子表项,从而实现了IP子表、MAC子表和端口子表中各子表项通过IP地址索引关联,具有一一对应关系。
以图3所示为例,该ARP表包括IP子表、MAC子表和端口子表,IP地址、MAC地址以及端口号分别保存在相应的子表中,各子表可用数组加以表示,且数组由数组单元(子表项)组成,用于存储具体信息。则各子表通过IP索引关联,具有一一对应的关系是指,数组的各个索引和数组中的各个单元具有一一对应的关系,且不同数组间索引和数组单元的对应关系完全相同,例如索引3在IP地址数组(IP子表)中对应数组单元3,同时,索引3在MAC地址数组(MAC子表)和端口地址数组(端口子表)中也分别对应数组单元3,而各个子表的数组单元3的保存信息属于同一ARP记录。
再例如,当沿用现有技术中ARP表的组织结构时,即MAC子表和端口子表利用IP子表中的Next-Index参数实现索引时,本步骤S2包括:在IP子表、MAC子表和端口子表的索引位置处,将所述IP地址、MAC地址和端口号相应赋予上述各子表项,并将所述索引值赋予IP子表所述索引位置处的Next-Index参数,通过Next-Index参数实现IP子表、MAC子表和端口子表中各子表项通过IP地址索引关联,具有一一对应关系。
下面试举一例加以说明:假设当前已经添加了100条ARP表项,现在再添加一条ARP表项,其IP地址为A,包括如下步骤:
(c1)通过对A进行HASH运算,确定待添加的ARP表项的IP地址索引,假设为3;
(c2)在IP子表、MAC子表和端口子表的索引3处分别添加该IP地址、MAC地址和端口号;例如,以3为索引,在IP地址数组中确定数组单元3来保存IP地址A,在MAC地址数组中确定数组单元3来保存MAC地址,在端口地址数组中确定数组单元3来保存端口号;
(c3)将IP子表的索引3处的参数Next-Index赋值为3,亦即,将IP地址A所对应的MAC地址和端口号的索引添加至Next-Index表项中,从而将IP地址、MAC地址和端口号通过共同的索引3相关联。
同理,当为IP地址B设置ARP表项时,对B进行哈希运算,假设得出数值为1,则以1为索引进行后续的ARP表项设定。可以看出,本发明中MAC地址和端口号的索引是在IP地址索引确定后便立刻确定的,且一旦确定索引,就可以确定唯一对应的存储单元以便进行存储;因此,当需要进行ARP表项的添加时,根据IP地址索引直接进行表项数据添加即可,无需进行对MAC地址和端口号的查找匹配。相对于现有技术中花费很长时间来进行MAC地址和端口号的查询,无疑使ARP表项的添加速度大为提高。
进一步的,本发明的实施例通过在VLAN虚接口子表中添加待添加ARP表项的VLAN虚接口信息(作为VLAN虚接口子表项),并建立所述VLAN虚接口信息与MAC地址的关联,就可以实现包括VLAN虚接口子表的ARP表进行表项快速添加。具体而言,VLAN虚接口子表项与MAC地址可通过MAC子表中的VLAN虚接口-Index关联,其采用现有ARP表项添加过程中的相关技术即可,在此不再赘述。
综上所述,本发明所提供的ARP表项的快速添加方法能够省略现有ARP表项添加过程中对MAC地址和端口号的匹配查找过程,从而提高添加ARP表项的效率。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括如下步骤:
S1、对于待添加ARP表项,计算其IP地址在ARP表中的索引;
S2、将待添加ARP表项的IP地址、MAC地址和端口号以所述索引关联,并添加到所述ARP表中。
所述的存储介质包括:ROM/RAM、磁碟或者光盘等。
相应的,本发明的实施例还提供了一种ARP表项的快速添加装置100,与用于保存ARP表的ARP缓存单元200连接,请结合图4。
本领域技术人员可以理解,
该ARP表项的快速添加装置100可以设在交换设备(如路由器、交换机)的底层交换芯片上,接收上级处理装置的添加ARP表项的指令。其中,该上级处理装置可以与底层交换芯片合设或者分设,用于接收ARP响应,识别ARP表项的更新和添加,从而触发ARP表项的快速添加装置100。由于接收ARP响应和后续识别工作并非本发明所讨论的对象,因此不再赘述。
该ARP表项的快速添加装置100包括索引计算单元101和表项变更单元102。
其中,索引计算单元101用于计算待添加ARP表项的IP地址在ARP表中的索引;表项变更单元102与ARP缓存单元200和索引计算单元101连接,用于将待添加ARP表项的IP地址、MAC地址和端口号以所述索引关联,并添加到ARP表中。
该ARP表项的快速添加装置100适合于以不同结构组织的ARP表:
例如,以该索引为指针分别指向待添加ARP表项的IP地址、MAC地址和端口号,并添加到ARP表中。
又例如,当ARP表包括IP子表、MAC子表和端口子表时,该ARP缓存单元200可以包括保存IP子表的IP子单元、保存MAC子表的MAC子单元和保存端口子表的端口子单元,则该表项变更单元102用于在IP子表、MAC子表和端口子表的该索引位置处,将待添加ARP表项的IP地址、MAC地址和端口号相应赋予上述各子表项,从而实现了IP子表、MAC子表和端口子表中子表项通过IP地址索引关联,具有一一对应关系,如图3所示。
再例如,当ARP表沿用现有技术中的组织结构时,即MAC子表和端口子表通过IP子表中Next-Index参数与IP子表关联时,ARP缓存单元200的MAC子单元和端口子单元通过IP子表中Next-Index参数与IP子单元关联起来,则表项变更单元102用于在IP子表、MAC子表和端口子表的索引位置处,将待添加ARP表项的IP地址、MAC地址和端口号相应赋予上述各子表项,并将该索引值赋予IP子表相应索引位置处的Next-Index参数,通过Next-Index参数实现IP子表、MAC子表和端口子表中各子表项通过IP地址索引关联,具有一一对应关系。
这样,直接根据IP地址索引就可以完成添加或者变更ARP表项的操作,省略了现有技术ARP表项添加过程中的查找匹配步骤。即,本发明实施例所提供的ARP表项的快速添加装置能够基于IP地址索引实现IP子表、MAC子表和端口子表的统一关联,不需要引入单独的Next-Index,从而避免了ARP表项添加时对MAC地址和接口号的逐一比较查找,提高了ARP表项的添加效率。
进一步的,本发明实施例所提供的ARP表项的快速添加装置还可支持包括VLAN虚接口子表的ARP表,即ARP缓存单元200还包括用于保存VLAN虚接口子表的VLAN虚接口子单元,则表项变更单元102在VLAN虚接口子表中添加待添加ARP表项的VLAN虚接口信息(作为VLAN虚接口子表项),并建立该VLAN虚接口信息与相应MAC地址的关联,比如按照现有技术中通过VLAN虚接口-Index实现关联即可。
本发明实施例还提供了一种交换设备,包括路由器、二层交换机、三层交换机等,该交换设备设有上述提供的ARP表项的快速添加装置,能够实现ARP表项的快速添加。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。