一种快速更新地址解析协议的方法

文档序号:7626258阅读:133来源:国知局
专利名称:一种快速更新地址解析协议的方法
技术领域
本发明涉及网络通信技术,尤其涉及一种在网络拓扑结构发生变化的情况下快速更新地址解析协议(ARP,Address Resolution Protocol)的方法。
背景技术
在以太网(Ethernet)中,多个网络设备通过交换机彼此相连并进行通信。交换机是由一个标准化机制的生成树协议(STP,Spanning Tree Protocol)来管理的。STP是一种二层管理协议,通过有选择性地阻塞网络冗余链路来达到消除网络二层环路的目的,从而有效地抑制广播风暴的产生。与此同时,STP还具备链路备份功能,当网络拓扑结构发生变化或网络发生故障时,可重新计算生成树信息并设置相应的交换机的端口状态。
另外,在以太网中,一个网络设备要和另一个网络设备进行直接通信,除了需要知道目标设备的网络层逻辑地址外,例如IP地址,还要知道目标设备的第二层物理地址,例如Mac地址,ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的Mac地址,以保证通信的顺利进行。也就是说,ARP提供IP地址和硬件Mac地址之间的映射关系,这种映射关系可通过设备自身ARP报文的动态学习来获取。此外,对于当前很多支持虚拟局域网(VLAN,Virtual LAN)的三层交换机来说,ARP表项还包括VLAN以及以太网端口等信息在内的一些其它信息,也就是说,ARP表项还可以绑定交换机的端口信息。
通常情况下,网络拓扑发生变化时,STP会重新计算生成树信息,于是交换机端口的状态会随之改变,由于ARP表项和端口绑定,所以网络设备学习到的动态ARP表项会变成无效的,于是端口收到STP网络拓扑改变的消息后,会将其它端口学习到的与状态改变的端口相关的ARP表项全部删除,同时将网络拓扑改变的消息向其它端口传播,由于ARP表项被删除,所以会立即主动触发动态ARP的重新学习和更新,然而其它端口随后又传来拓扑改变的消息,刚刚学习到的ARP表项又被全部删除,于是又会主动触发ARP的重新学习和更新,如此重复直至找到合适的交换机端口,建立重新稳定的通信为止。
于是,交换机在这个过程中会频繁地收到拓扑改变的消息,动态ARP的表项也会被频繁删除,由于动态ARP的触发和学习都必须由CPU完成,如果ARP表项被频繁删除,那么重新触发和学习会占用交换机大量的CPU时间,而且受CPU处理能力的限制,在网络比较复杂的情况下,可能无法在短时间内学到所有的ARP表项,导致网络出现闪断。另外,由于ARP的主动请求是广播报文,在复杂的网络内,如果所有ARP都被删除,在短时间内会触发大量的ARP请求,从而导致网络内ARP广播报文的泛滥。

发明内容
有鉴于此,本发明的目的在于提供一种快速更新ARP的方法,使用该方法可以改进在网络拓扑结构发生变化或网络发生故障时ARP的更新机制,节约CPU的时间,避免网络中广播报文的泛滥,从而提高ARP的收敛能力和网络稳定性。
为了实现上述发明目的,本发明提供一种快速更新ARP的方法,在交换机的端口状态发生变化时,该方法包括A、保留端口状态发生变化的交换机的ARP表项;B、该交换机获取与端口状态变化相关的设备的Mac地址以及Mac地址所携带的该交换机的端口信息;C、该交换机根据Mac地址查找有相同Mac地址信息的ARP表项,并用端口信息更新ARP表项的端口信息。
所述步骤A可以进一步包括
将交换机上与端口状态变化相关的ARP表项设为不可用。
所述步骤B可以包括该交换机转发以太网报文时,获取报文所携带的Mac地址以及所经过的该交换机的端口信息。
所述步骤B可以包括交换机以与端口状态变化相关的设备的Mac地址为目的Mac地址,单播该目的Mac地址并采用广播发送的方式主动触发ARP请求,并获取应答消息中的Mac地址和应答消息所经过的该交换机的端口信息。
所述步骤A可以进一步包括对该交换机上与端口状态变化相关的ARP表项进行标记;所述交换机采用单播目的Mac地址、广播发送的方式主动触发ARP请求,可以包括对有标记的ARP表项,交换机采用单播目的Mac地址、广播发送的方式主动触发有标记的ARP请求。
所述步骤A还可以进一步包括启动一个定时器;所述主动触发有标记的ARP请求,包括以定时器的定时为时间间隔,分批主动触发有标记的ARP请求。
以上所述交换机可以为分布式交换机。
所述交换机为分布式交换机时,所述步骤A可以包括保留主控板上的ARP表项,删除接口板上的ARP表项和Mac表项;所述步骤B可以包括B1、接口板转发报文,对Mac进行学习,获取报文的Mac地址以及端口信息并发送给主控板;B2、主控板更新Mac表,并通知ARP,ARP根据更新消息中携带的Mac地址信息查找有相同Mac地址的ARP表项,并用端口信息更新ARP表项的端口信息。
该方法还可以进一步包括主控板更新ARP表项之后同步端口所在的接口板,接口板下发硬件Mac表并获取Mac索引,该索引与主控板传入的Mac索引值不一致时,同步主控板更新,主控板收到接口板更新消息,修改ARP表项的Mac索引,并更新主机路由,同步所有接口板。
另外,所述步骤A可以包括对主控板上与端口状态改变相关的ARP表项进行标记,同时启动定时器;所述步骤B可以包括以定时器的定时为时间间隔,对主控板上有标记的ARP表项采用单播目的Mac、广播发送的方式主动触发ARP请求,接口板接到应答消息后,获取应答消息中的Mac地址和端口信息;所述步骤C包括接口板根据应答消息用端口信息更新接口板和主控板的ARP表项的端口信息,同时清除标记。
所述交换机还可以是集中式交换机。
一种快速更新地址解析协议ARP表项的方法,在交换机的端口状态发生变化时,该方法包括a.保留交换机上与端口状态变化相关的ARP表项,并将ARP表项设为不可用;b、该交换机转发以太网报文时,获取与端口状态变化相关的设备的Mac地址以及Mac地址所携带的该交换机的端口信息;c、该交换机根据Mac地址查找有相同Mac地址信息的ARP表项,并用Mac地址所携带的该交换机的端口信息更新该交换机的ARP表项的端口信息。
一种快速更新地址解析协议ARP表项的方法,在交换机的端口状态发生变化时,该方法包括I、保留交换机上的与端口状态变化相关的ARP表项,并对ARP表项设置标记,同时启动定时器;II、定时器超时时,交换机采用单播目的Mac地址、广播发送的方式主动触发有标记的ARP请求,并获取应答ARP请求的消息所经过的该交换机的端口信息;III、交换机根据目的Mac地址查找有相同Mac地址信息的ARP表项,并用Mac地址所携带的该交换机的端口信息更新交换机的ARP表项的端口信息。
从以上技术方案可以看到,本发明所提供的一种快速更新ARP的方法具有以下有益效果1、不直接删除动态ARP表项,避免短时问触发大量的ARP请求所造成的网络内广播报文的泛滥;2、通过Mac学习更新ARP表项,省略了主动触发ARP请求及接收ARP应答的处理流程,节约了CPU时间,并且Mac学习能力要强于ARP的学习能力,因此相比于ARP的主动触发请求,提高了更新效率和ARP的收敛能力,对于网络闪断的问题也有所缓解;3、对于不能通过Mac学习更新的ARP表项,采用单播目的Mac、广播发送的方式进行请求,避免广播报文泛滥。


图1是根据本发明实施例一网络拓扑结构发生变化时在分布式交换机上对原有ARP表项的处理流程图;图2是根据本发明实施例一在分布式交换机上通过Mac学习来更新ARP的操作流程图;图3是根据本发明实施例一在分布式交换机上通过Mac学习来更新ARP的实现示意图;图4是根据本发明实施例一在分布式交换机上不通过Mac学习来更新ARP的操作流程图;图5是根据本发明实施例二网络拓扑结构发生变化时在分布式交换机上更新ARP的操作流程图;图6是根据本发明实施例三网络拓扑结构发生变化时在集中式交换机上更新ARP的操作流程图。
具体实施例方式
为了使本发明的优点和特征更加清楚明白,下面结合附图及示例性实施例对本发明作进一步详细的说明。
当网络拓扑结构发生变化或网络发生故障时,STP重新计算生成树信息并修改端口状态,端口状态变化后,必然引起与之相关的ARP的变化,现有技术对此的处理是删除所有与端口状态改变相关的ARP表项,ARP表项删除后,会触发动态ARP的重新学习和更新,这种做法会占用交换机大量的CPU时间,并容易产生网络中广播报文的泛滥和网络闪断。对此,本发明不直接删除动态ARP表项,只将ARP表项的出端口信息设为无效值,同时将ARP表项设为不可用;在二层Mac地址学习的同时,查找是否具有相同的VLAN及Mac信息的ARP表项,并根据Mac表项的端口信息更新ARP表项的出端口;对于不能通过Mac学习更新的ARP表项,仍采用动态ARP学习的方式更新。
下面分别以网络拓扑结构发生变化时,本发明所提供的ARP的更新方法在分布式交换机和集中式交换机的具体实现为例对本发明作详细的说明。
首先,描述本发明的ARP更新在分布式交换机的具体实现。分布式交换机的单板包括主控板、接口板、背板等,其中主控板保留全局的所有IP地址、ARP表项、VLAN、Mac表项等信息,而接口板只保留其中的一部分信息。由于该实施例中采用的交换机是分布式交换机,ARP协议在此交换机上的处理是接口板完成ARP报文的处理及动态ARP的学习,学习之后下发硬件Mac表以获取Mac表索引,然后同步主控板;主控板收到接口板同步消息之后更新ARP表,并根据ARP表的IP地址、VLAN信息、端口信息、Mac索引等生成主机路由,然后广播到所有接口板,接口板收到此消息后将主机路由下发硬件,于是就可以实现网络通信。
实施例一参见图1,当发生网络拓扑改变时,本发明首先会对现有的ARP做如下处理步骤101、主控板上STP重新计算生成树信息并修改交换机的端口状态,然后将此端口状态改变的消息通知给所有与此端口相关的ARP;步骤102、主控板上的ARP收到端口状态改变的消息后,遍历所有的动态ARP表项,将与此端口相关的ARP表项的出端口设为无效值,表项属性设为不可用,同时广播删除主机路由的消息,接口板收到删除消息后下发硬件删除主机路由;步骤103、主控板广播删除与端口状态改变相关的ARP表项的消息,接口板收到该消息之后删除与此端口相关的ARP表项,同时下发硬件删除Mac表;这一步骤之后,接口板上的ARP表项被删除,而主控板上还保有ARP表项。
步骤104、STP通知删除所有与此端口相关的Mac表项。
从上述步骤可以看到,本发明不同于现有技术的是,本发明不删除主控板上的ARP,而只是删除接口板上的ARP表项。这样做的目的是避免删除所有的ARP引起大量ARP的触发请求。
删除接口板上的ARP表项以后,主控板上的ARP表项也是不可用的,所以需要重新学习ARP以获得主机路由。于是,参见图2和图3,本发明通过Mac学习来更新ARP,具体操作步骤如下步骤201、虽然删除了接口板上的ARP和Mac表项,但是网络上的流量还在,于是接口板会继续转发以太网报文,转发的以太网报文会携带源Mac地址和源IP地址,并且会在经过交换机的端口时携带端口信息,在转发时,由于接口板Mac表项被删除,所以会触发Mac进行学习,此时如果发现Mac表项为新表项或者有修改,则发送消息给主控板以通知主控板更新,并在消息中携带新的Mac表索引信息(图3所示的过程1);步骤202、主控板收到接口板发来的更新消息后,更新主控板上的Mac表项,同时通知主控板上的ARP进行更新;
步骤203、主控板上的ARP收到更新消息后,根据此消息中的VLAN和Mac地址信息以及端口信息,查找所有相应的ARP表项,并更新这些所有相应ARP表项的出端口及Mac索引信息;于是在网络拓扑改变时设为无效的出端口以及表项就被更新掉,更新之后的ARP就可以创建主机路由,网络就可以正常通信了。
步骤204、在主控板上,ARP根据主控板上原来所保有的IP、VLAN信息及新获取的端口、Mac索引信息创建主机路由,并同步所有的接口板,接口板将此主机路由下发硬件(图3所示的过程2)。
这样在网络拓扑结构发生变化时,ARP的更新就完成了。
特别地,在步骤203中,主控板更新ARP表项之后,同步接口板,接口板下发硬件Mac表并获取Mac表索引(图3所示的过程3),并判断此索引值是否与主控板传给接口板的Mac索引值一致,如果不一致则仍需对主控板进行更新(图3所示的过程4),主控板收到接口板的更新消息后,修改ARP表项的Mac索引,并更新主机路由,同步所有接口板(图3所示的过程5);如果一致,则可以直接执行步骤204。
另外,在网络拓扑结构改变,STP修改端口状态后,接口板底层主机路由被删除,这时有可能发生无法通过Mac学习来更新ARP的情况,此时,仍然采用ARP主动触发的方式进行更新,但是不同于现有技术主动触发ARP请求、ARP广播报文的方式,而是采用单播目的Mac地址的方式,这种情况下的处理方式参见图4,具体的操作过程如下步骤401、网络拓扑结构改变时,接口板底层主机路由已经被删除,这时如果不能通过触发Mac学习来更新ARP的话,那么接口板会上送主控板CPU触发ARP请求;步骤402、因为主控板上的ARP保留有Mac地址,所以触发ARP请求时以此为单播Mac为目的Mac地址,并采用广播发送的方式;由于ARP请求时广播的不是广播地址,而是Mac地址,所以网络中与此Mac地址无关的设备会过滤掉这个广播,不会造成CPU的负担,也避免网络内广播报文的泛滥。
步骤403、接口板收到ARP的应答后,根据应答消息分别更新接口板及主控板ARP的表项,创建相应主机路由并下发接口板硬件。
通过以上步骤,就可以实现在不能通过Mac学习更新ARP的情况下,采用单播目的Mac广播发送的方式实现ARP的更新。
从以上描述可以看出,本发明所提供的方法在发生网络拓扑变化时,不删除分布式交换机主控板上的ARP,只删掉接口板上的ARP,并且通过Mac学习来更新ARP,对于不能通过Mac学习更新的ARP表项,采用单播目的Mac广播发送的方式进行更新,从而节约CPU的时间,避免广播报文的泛滥。
实施例二以上描述了网络拓扑结构变化时通过Mac学习更新ARP的情况,即不删除主控板上的ARP表项,仅将其修改为不可用,而删除接口板上的ARP表项,并且通过Mac学习更新ARP表项。然而,本发明也可以采用另外一种处理方式,即对主控板和接口板ARP表项都不作修改和删除,也不删除底层主机路由,而是根据交换机的能力分批发起ARP的主动触发请求来完成网络拓扑改变时ARP的更新,其具体的操作流程参见图5,操作步骤如下步骤501、当网络拓扑结构发生变化时,在主控板上对STP状态改变的端口对应的ARP表项进行标记,同时启动一个定时器;在网络拓扑结构发生变化时,如果所有与端口状态改变相关的ARP表项同时主动触发ARP请求,那么交换机的CPU能力有限,不能同时处理这么多的请求,容易造成网络闪断和数据包的丢失,于是这里设置一个定时器,定时器的作用就是在ARP表项较多的情况下,避免所有与端口状态改变相关的ARP表项同时主动触发,而是在每次定时器超时时,根据交换机的能力主动触发一定数量的ARP请求。
步骤502、定时器超时时,在主控板上遍历ARP表项,对有标记的ARP表项主动触发ARP请求,ARP请求采用单播目的Mac,广播发送的方式;
该步骤就是在定时器超时时,对有标记的ARP主动触发一定数量的ARP请求,并且由于并没有删除ARP表项和Mac表项,所以该请求可以采取单播目的Mac地址,广播发送的方式。
步骤503、接口板接到ARP的应答后,根据应答消息分别更新接口板及主控板的ARP表项,同时更新主机路由,并清除标记。
这样,在网络拓扑发生变化时,整个ARP更新的过程就结束了。
以上以ARP更新在分布式交换机上的实现为例对本发明进行了详细的说明,下面再描述一下本发明提供的ARP更新方法在集中式交换机上的具体实现。
实施例三集中式交换机不同于分布式交换机之处在于集中式交换机中不分主控板和接口板,就是一块板子,于是ARP更新在集中式交换机上的实现可以省略主控板与接口板之间的通讯,所以更新更为简单,参见图6,当发生网络拓扑变化时,具体的ARP更新步骤如下步骤601、STP重新计算生成树信息并修改交换机的端口状态,然后,将此端口状态改变的消息通知给ARP;步骤602、ARP收到这个消息后,遍历所有动态ARP表项,将与此端口相关的ARP表项的出端口设为无效,表项属性设为不可用,同时删除主机路由;步骤603、STP通知Mac删除所有与此端口相关的Mac表项;由于删除了Mac表项,所以交换机在继续转发以太网报文时Mac会学习,由于没有删除ARP表项,所以可以通过Mac学习来更新ARP表项。
步骤604、交换机继续转发以太网报文,Mac对报文的源Mac地址进行学习,并在经过交换机端口时携带所经过的端口信息,如果发现ARP表项中的Mac表项为新表项或者有修改,例如发现端口信息发生变化,则更新Mac表项,并通知ARP进行更新;步骤605、ARP收到更新消息后,根据此消息中的VLAN及Mac地址信息查找所有含有相同VLAN和Mac地址信息的ARP表项,并利用Mac地址所携带的交换机的端口信息更新ARP表项的出端口信息;于是,ARP表项就更新完毕,ARP表项更新之后,会根据原有的IP、VLAN、Mac信息和新更新的端口信息创建主机路由,并下发硬件。
当然,在集中式交换机上同样会发生无法通过Mac学习来更新ARP的情况,这时,主动触发ARP请求,由于没有删除ARP表项只是将其设为不可用,出端口信息设为无效,所以ARP表项中保留了Mac地址,所以触发ARP请求时,以此单播Mac地址为目的Mac地址,并采用广播发送的方式,收到ARP应答时,ARP的应答消息会在经过交换机端口时,携带该端口信息,于是就可以根据这个端口信息更新ARP表项,于是ARP表项就可以创建相应的主机路由并下发硬件。
另外,在集中式交换机上,无论是否可以采用Mac学习来更新ARP表项,都可以采用ARP主动触发请求,单播目的Mac地址并广播发送的方式来更新ARP表项,具体实现过程与实施例二中描述的分布式交换机上的类似网络拓扑结构发生变化时,对与交换机上端口状态改变相对应的ARP表项进行标记,同时启动一个定时器,定时器超时时,根据交换机的能力主动触发一定数量的ARP请求,ARP请求仍然采用单播目的Mac地址并广播发送的方式,收到ARP应答消息之后,根据应答消息中携带的交换机的端口信息更新ARP表项的出端口信息,于是ARP表项就可以创建相应的主机路由并下发硬件了。
以上分别以ARP更新在分布式交换机和集中式交换机上的实现为例,对本发明作了详细的描述,从以上描述可以看到,无论是在哪种交换机上更新ARP,都是不删除ARP表项而是对其进行保留,于是可以避免频繁删除ARP给交换机CPU带来的负担,另外,采用Mac学习更新ARP表项,或者在不能通过Mac学习更新的情况下,采用单播目的Mac、广播发送的方式主动触发ARP请求又可以避免ARP广播报文的泛滥。
以上虽然以网络拓扑变化时ARP更新分别在分布式交换机和集中式交换机上的具体实现为例,对本发明所提供的方法进行了详细的说明,然而,本发明所提供的方法同样适用于其它情况。
权利要求
1.一种快速更新地址解析协议ARP表项的方法,其特征在于,在交换机的端口状态发生变化时,该方法包括A、保留端口状态发生变化的交换机的ARP表项;B、该交换机获取与端口状态变化相关的设备的Mac地址以及Mac地址所携带的该交换机的端口信息;C、该交换机根据Mac地址查找有相同Mac地址信息的ARP表项,并用端口信息更新ARP表项的端口信息。
2.根据权利要求1所述的方法,其特征在于,所述步骤A进一步包括将交换机上与端口状态变化相关的ARP表项设为不可用。
3.根据权利要求1所述的方法,其特征在于,所述步骤B包括该交换机转发以太网报文时,获取报文所携带的Mac地址以及所经过的该交换机的端口信息。
4.根据权利要求1所述的方法,其特征在于,所述步骤B包括交换机以与端口状态变化相关的设备的Mac地址为目的Mac地址,单播该目的Mac地址并采用广播发送的方式主动触发ARP请求,并获取应答消息中的Mac地址和应答消息所经过的该交换机的端口信息。
5.根据权利要求4所述的方法,其特征在于,所述步骤A进一步包括对该交换机上与端口状态变化相关的ARP表项进行标记;对有标记的ARP表项,交换机采用单播目的Mac地址、广播发送的方式主动触发。
6.根据权利要求5所述的方法,其特征在于,所述步骤A进一步包括启动一个定时器;以定时器的定时为时间间隔,分批主动触发有标记的ARP请求。
7.根据权利要求1所述的方法,其特征在于,所述交换机为分布式交换机。
8.根据权利要求7所述的方法,其特征在于,所述步骤A包括保留主控板上的ARP表项,删除接口板上的ARP表项和Mac表项;所述步骤B包括B1、接口板转发报文,对Mac进行学习,获取报文的Mac地址以及端口信息并发送给主控板;B2、主控板更新Mac表,并通知ARP,ARP根据更新消息中携带的Mac地址信息查找有相同Mac地址的ARP表项,并用端口信息更新ARP表项的端口信息。
9.根据权利要求8所述的方法,其特征在于,该方法进一步包括步骤D主控板更新ARP表项之后同步端口所在的接口板,接口板下发硬件Mac表并获取Mac索引,该索引与主控板传入的Mac索引值不一致时,同步主控板更新,主控板收到接口板更新消息,修改ARP表项的Mac索引,并更新主机路由,同步所有接口板。
10.根据权利要求7所述的方法,其特征在于,所述步骤A包括对主控板上与端口状态改变相关的ARP表项进行标记,同时启动定时器;所述步骤B包括以定时器的定时为时间间隔,对主控板上有标记的ARP表项采用单播目的Mac、广播发送的方式主动触发ARP请求,接口板接到应答消息后,获取应答消息中的Mac地址和端口信息;所述步骤C包括接口板根据应答消息用端口信息更新接口板和主控板的ARP表项的端口信息,同时清除标记。
11.根据权利要求1所述的方法,其特征在于,所述交换机为集中式交换机。
12.一种快速更新地址解析协议ARP表项的方法,其特征在于,在交换机的端口状态发生变化时,该方法包括a.保留交换机上与端口状态变化相关的ARP表项,并将ARP表项设为不可用;b、该交换机转发以太网报文时,获取与端口状态变化相关的设备的Mac地址以及Mac地址所携带的该交换机的端口信息;c、该交换机根据Mac地址查找有相同Mac地址信息的ARP表项,并用Mac地址所携带的该交换机的端口信息更新该交换机的ARP表项的端口信息。
13.一种快速更新地址解析协议ARP表项的方法,其特征在于,在交换机的端口状态发生变化时,该方法包括I、保留交换机上的与端口状态变化相关的ARP表项,并对ARP表项设置标记,同时启动定时器;II、定时器超时时,交换机采用单播目的Mac地址、广播发送的方式主动触发有标记的ARP请求,并获取应答ARP请求的消息所经过的该交换机的端口信息;III、交换机根据目的Mac地址查找有相同Mac地址信息的ARP表项,并用Mac地址所携带的该交换机的端口信息更新交换机的ARP表项的端口信息。
全文摘要
本发明公开一种快速更新ARP的方法,该方法包括,在交换机的端口状态发生变化时,保留端口状态发生变化的交换机的ARP表项;该交换机获取与端口状态变化相关的设备的Mac地址以及Mac地址所携带的该交换机的端口信息;该交换机根据Mac地址查找有相同Mac地址信息的ARP表项,并用该端口信息更新ARP表项的端口信息。应用本发明提供的方法,可以节约CPU时间,提高ARP的收敛能力和效率,同时避免ARP主动触发请求造成的网络内广播报文的泛滥。
文档编号H04L12/56GK1764193SQ20051011505
公开日2006年4月26日 申请日期2005年11月23日 优先权日2005年11月23日
发明者滕利明 申请人:杭州华为三康技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1