地址解析协议表项的处理方法

文档序号:7904100阅读:239来源:国知局
专利名称:地址解析协议表项的处理方法
技术领域
本发明涉及TCP/IP(传输控制协议/网际协议),具体地说,涉及ARP(地址解析协议)表项的处理方法,以使ARP支持并解决VPN(虚拟专用网)中的多实例问题。
背景技术
网络通信技术的飞速发展使网络在现代社会中的应用越来越普及。为了保证在公共网络上传输数据的安全性,VPN技术正在越来越广泛地被使用。VPN要将通过公共网络传输的数据进行加密,因此对于VPN来说,公共网络就如同是使用租用线路的专用网络。然而,并非所有的通信系统都支持VPN。对于不支持VPN的系统,任何一个IP地址都必须是唯一的,从而可以通过IP地址唯一索引到一个ARP表项。
在实际的通信系统中,IP地址是作为互联网的逻辑地址,因此IP地址与实际网络的固有地址之间必须有对应关系。ARP的主要目的就是实现地址解析,即形成MAC(媒体访问控制)地址与IP地址的对应关系。在路由器、三层交换机等产品中,ARP表项里还包含出端口、出接口等信息。在不支持VPN的系统中,由于IP地址的唯一性,故而不存在多实例的问题。但是对于支持VPN的系统,不同的VPN中会存在IP地址相同的ARP表项,因此根据IP地址就不能唯一地索引到一个ARP表项,从而产生了需要通信系统支持多实例的问题。
在这种情况下,要想索引到VPN中的目标ARP表项,就需要区分开各个VPN。为此可以采取分别将各个不同VPN的ARP表项中的IP地址IPAddr加上偏移量X的方法。换言之,通过IPAddr+X来索引各VPN的ARP表项。X可根据各个通信系统实现方案的特点而有不同的选择。
在以往不支持VPN的系统中,通过IP地址索引ARP表项的一般方法是,通过对IP地址进行HASH(散列算法)的处理,将ARP表项组织起来,构成HASH表(哈希表,或HASH数组)。在查找ARP表项时,根据IP地址进行HASH处理,得到HASH数组的下标。然后再遍历冲突链。冲突链是指HASH值相同,都放在同一个HASH数组里的不同表项,通常以链表形式组织起来。在遍历过程中,依次对各ARP表项与相关规则进行匹配,以找到所需要的表项。图1显示了表项组织结构的示意图。
但是,对于支持VPN的系统,如果还按照上述现有技术的方法对IP地址进行HASH处理,则不同的VPN中IP地址相同的ARP表项就都挂在一个HASH数组(链)下,冲突链就可能会很长,使查表速度变慢,从而降低系统的运行速度。

发明内容
本发明的目的就是要克服现有技术中的上述问题,使得支持VPN的通信系统能够以与不支持VPN的系统几乎相同的速度来查询ARP表项,以适应VPN体系中的多实例情况,并达到很好地支持VPN体系的目的。
根据本发明,提供了一种ARP表项的处理方法,包括(1)根据VPN的特定参数将不同VPN的ARP表项分别放入不同的HASH数组;(2)比较IP地址以查询HASH数组中的ARP表项。
在本发明的一种实施方案中,上述步骤(1)包括将VPN的ARP表项中的IP地址加上VPN特定的参数;对IP地址与所述参数相加的结果进行HASH处理,得到经HASH处理后的ARP表项的HASH数组。
在本发明的上述方法中,所述的参数例如为VLANid,RdIndex等。
根据上述方法,当查询ARP表项时,只需比较其IP地址即可。从而使得支持VPN的系统在查询ARP表项时的速度与以往不支持VPN的系统(非VPN系统)的查询速度几乎一样。因此本发明的方法可以很好地支持VPN体系,并可适应ARP的多实例情况。而且,本发明在使原有的非VPN系统过渡到VPN系统的过程中,仅就ARP协议层而言,对系统的改动很小。
另外,当通信系统中的系统内存很大,可以支持足够的ARP表项数目时,上述步骤(1)也可以这样来实现在创建一个VPN时,按照该VPN的索引RdIndex向通信系统中专门负责系统内存管理的模块申请一套ARPHASH数组;通信系统判断内存容量情况,在内存容量允许分配新的所述HASH数组时,向该VPN分配所述HASH数组;将该VPN的ARP表项进行HASH处理后的值放入所分配的HASH数组中。这样,各个VPN可以在自己的HASH数组中按常规的方法那样通过对IP地址进行HASH处理而组织自己的ARP表项。这样就不再使用前面所述的将RdIndex或VLANid与IPAddr相加后再进行HASH处理的方法了。在查表时也可以按前文所述的现有技术的方法来进行。
该实施方案可以有效地缩短ARP表项的冲突链长度,使支持VPN的系统可以达到与不支持VPN的系统一样的ARP表项查找速度。从ARP方面解决了通信系统对VPN的支持问题。


图1显示了ARP表项组织结构的示意图。
具体实施例方式
通过下面对本发明的优选实施方案的说明,本领域技术人员对本发明的特征及优点将有更清楚和全面的理解。
根据本发明的优选实施方案,为适应在支持VPN的系统中出现多个分属于不同VPN的ARP表项具有相同IP地址的情况,对于现有技术中的ARP表项的散列处理方法进行修改。具体地说,就是将现有技术中的对IP地址IPAddr进行HASH处理改为对IPAddr与VLAN(虚拟局域网)的参数相加后的结果来进行HASH处理。对于同一VLAN,可以选择某一类型的参数与IPAddr相加,只要该参数对于VLAN是特定且唯一的即可。同时,对于不同的多个VLAN,所选择的参数类型应一样。这样,即使是不同VLAN的ARP表项具有相同的IP地址,由于不同的VLAN的ARP表项的HASH值不一样,从而避免了相同IP地址的ARP表项都挂在同一个HASH链下的情况,故而缩短了冲突链的长度。因此,利用本发明的方法,在查询支持VPN系统的ARP表项的情况下,在得到HASH值后再比较ARP表项的各字段信息时,只需要比较IP地址即可,无需再比较其他信息。这与在不支持VPN系统情况下查询ARP表项时的操作基本相同,即只需要查询IP地址即可。这样就可提高查表速度,从而避免了采用现有技术的按照IP地址进行HASH处理时查表速度变慢的问题。
下面以几个优选实施例来更具体地说明本发明,以使本领域的技术人员能够更清楚地理解本发明的技术方案。
实施例1在该实施例1中,ARP表项组织结构与图1所示的ARP表项的组织结构是一样的。而实施例1与现有技术的不同点即在于各自使用了不同的HASH方法。在本例中,是对IPAddr+VLANid进行HASH处理,以得到HASH值。其中VLANid代表虚拟局域网VLAN的标识符。具体的处理算法例如可为((IpAddr>>22)+(IpAddr>>11)+IpAddr+(VLANid<<4))%TableLen;
这样,在用IPAddr+VLANid进行如上式所示那样的HASH处理之后,由于不同的VPN的VLANid是不同的,因此即使不同VLAN的ARP表项具有相同IP地址,其HASH值也将是不一样的。而只有HASH值相同的ARP表项才放在一个HASH数组中。所以不同的VLAN的ARP表项就不会放在相同的数组中。这样就避免了在现有技术中由于只对IP地址进行HASH处理而将不同VLAN中具有相同IP地址的ARP表项都挂在同一个HASH数组(链)下的情况。由此,缩短了冲突链的长度。
在查表时,要得到HASH值后再比较ARP表项的各字段信息。利用本发明上述实施例的方法,由于对于具有相同IP地址的不同VLAN的ARP表项,其HASH值是不一样的,所以不同VLAN的具有相同IP地址的ARP表项不在相同的HASH数组(链)中。这样在查表时只需要象现有技术中那样仅比较IP地址即可,无需再比较其他信息。也就是说,利用该实施例的方法,在查询ARP表项时的操作与现有技术是基本相同的。而且查表速度也与不支持VPN的通信系统中的查表速度几乎一样。
采用上述实施例1的方法,对ARP表项经HASH处理后的HASH数组结构(ARP表项的组织结构)和不支持VPN系统中的几乎一样。这样,在使不支持VPN的通信系统过渡到支持VPN的通信系统时,在ARP方面对系统几乎不需要作什么改动。
目前,分布式结构已成为新一代路由器和交换机的重要特征之一。对于具有分布式结构的路由器和交换机,需要进行微码ARP报文处理。在上层协议处理模块的ARP表项组织方式可以采用上述实施例1所描述的方法,而微码由于考虑到可能采用不同网络处理芯片,所以ARP表项组织方式不必局限于这种方法,但是其key值必须至少包含IPAddr,VLANid两个信息。例如,当采用IBM的处理芯片时,微码中的ARP表项组织就可以采用DT+Patricia Tree的方式,key值为IPAddr+VLANid+端口号。
本领域的技术人员可以理解,使用本发明实施例1的上述方法,ARP协议对ARP报文的接收、上送、下发处理与现有技术的处理方式是相同的。即采用本发明实施例1的方法的通信系统,其ARP对VPN与非VPN的ARP报文的处理方式是一样的,因而ARP无需对是否在通信系统中存在VPN作出判断,也无需对ARP报文作其它特殊的处理。这样,在ARP方面就可以使通信系统很好地支持VPN。
另外,采用本发明的上述实施例1的方法,在通信系统支持的ARP表项数目是确定的情况下,对于支持和不支持VPN的系统来说,其ARP表项的内存开销是一样的。不需要针对不同的VPN再静态申请大量的HASH数组。
实施例2在该实施例2中,ARP表项组织结构仍与图1所示的ARP表项的组织结构相同。而实施例2与现有技术及上述实施例1的不同点在于,在本例中是对IPAddr+RdIndex进行HASH处理,以得到HASH值。其中RdIndex代表不同VPN的索引。具体的处理算法例如可为((IpAddr>>22)+(IpAddr>>11)+IpAddr+(RdIndex<<4))%TableLen;这样,在用IPAddr+RdIndex进行如上式所示那样的HASH处理之后,由于不同VPN的RdIndex是不同的,所以不同VPN的ARP表项即使具有相同的IP地址,但在HASH处理后所得到的值是不一样的。这样,实施例2就具有与实施例1同样的优点,解决了在现有技术只对IP地址进行HASH处理而造成在支持VPN的通信系统中冲突链过长使查表速度变慢的问题。
同样,采用上述实施例2的方法,对ARP表项经HASH处理后的数组结构和不支持VPN的系统几乎一样。这样,在使不支持VPN的通信系统过渡到支持VPN的通信系统时,对系统几乎不需要作什么改动。
另一方面,对于具有分布式结构的路由器、交换机,如采用本发明的上述实施例的方法,微码里的ARP表项组织方式的具体HASH算法同样可以不限于该实施例的方法。但是其key值必须至少包含IPAddr,RdIndex两个信息。例如,当采用IBM的处理芯片时,微码中的ARP表项组织就可以采用DT+Patricia Tree的方式,key值为IPAddr+RdIndex+端口号。
本领域的技术人员可以理解,使用本发明的上述实施例2的方法,与实施例1的方法一样,ARP协议对ARP报文的接收、上送、下发处理与现有技术的处理方式是相同的。即采用本发明实施例2的方法的通信系统,其ARP也不需要对是否在通信系统中存在VPN作出判断,亦无需作其它特殊的处理。
同样,采用本发明的上述实施例2的方法,在通信系统主机支持的ARP表项数目是确定的情况下,对于支持和不支持VPN的系统来说,其ARP表项的内存开销是一样的。不需要针对不同的VPN再静态申请大量的HASH数组。
根据本发明的另一实施方案,在通信系统中的系统内存很大,可以支持足够的ARP表项数目时,可以采用不同的VPN可以各自维护一套自己的存放ARP表项的ARP HASH数组。这样可以更好地隔离不同VPN中的ARP表项,即避免不同VPN中具有相同IP地址的ARP表项在同一HASH数组中。
具体方法是,在创建一个VPN时,按照该VPN的索引RdIndex向通信系统中专门负责系统内存管理的模块申请一套ARP HASH数组。通信系统判断内存容量情况,在内存容量允许为该VPN分配新的HASH数组时,则向该VPN分配HASH数组。这样就可以对该VPN的ARP表项进行常规的HASH处理,将处理后的值放入所分配的HASH数组中。
根据上述方法,不同的VPN的各自ARP HASH数组的组织结构与没有支持VPN的系统中的ARP HASH数组结构是一致的。这样,各个VPN可以在自己的HASH数组中按常规的方法那样通过对IP地址进行HASH处理而组织自己的ARP表项。这样就不再使用前面所述的将RdIndex或VLANid与IPAddr相加后再进行HASH处理的方法了。在查表时也可以按前文所述的现有技术的方法来进行。
该实施方案可以有效地缩短ARP表项的冲突链长度,使支持VPN的系统可以达到与不支持VPN的系统一样的ARP表项查找速度。从ARP方面解决了通信系统对VPN的支持问题。
上文结合具体的例子对本发明的技术方案进行了解释,目的是为了使本领域技术人员更好地理解本发明的精神实质。因此本发明的具体限定并不限于上述说明中的具体内容,例如以及散列算法所使用的公式以及参数VLANid等。本领域技术人员可以理解,在本发明的精神和实质的基础上可以进行各种修改和等同方式的替换。
权利要求
1.地址解析协议(ARP)表项的处理方法,其特征在于,包括如下步骤(1)根据虚拟专用网(VPN)的特定参数将不同VPN的ARP表项分别放入不同的散列(HASH)数组;(2)比较IP(互联网协议)地址以查询HASH数组中的ARP表项。
2.根据权利要求1所述的方法,其特征在于,所述步骤(1)包括(1-1)将VPN的ARP表项中的IP地址加上VPN特定的参数;(1-2)对IP地址与所述参数相加的结果进行HASH处理,得到经HASH处理后的ARP表项的HASH数组。
3.根据权利要求1所述的方法,其特征在于,所述步骤(1)包括(1-1′)按照所述VPN的所述特定参数向通信系统申请用于存放该VPN的ARP表项的HASH数组;(1-2′)通信系统判断内存容量情况,在内存容量允许分配新的所述HASH数组时,向该VPN分配所述HASH数组;(1-3′)对该VPN的ARP表项进行HASH处理,将处理后的值放入所述分配的HASH数组中。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述的参数为VLANid或RdIndex。
全文摘要
本发明提供了一种ARP表项的处理方法,包括根据VPN的特定参数区分不同VPN的ARP表项的HASH数组;比较IP地址以查询HASH数组中的ARP表项。根据本发明的一种实施方案,上述步骤(1)包括将VPN的ARP表项中的IP地址加上VPN特定的参数;对IP地址与所述参数相加的结果进行HASH处理,得到经HASH处理后的ARP表项的HASH数组。这样,当通信系统当查询ARP表项时,只需比较其IP地址即可。从而使得ARP能够支持VPN,并且实现ARP的快速查表。
文档编号H04L29/06GK1531298SQ03119348
公开日2004年9月22日 申请日期2003年3月17日 优先权日2003年3月17日
发明者朱伟, 朱 伟 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1