发明内容
本发明的第一个发明目的是提供一种更新地址解析协议(ARP)表中端口地址的方法,可以对ARP表中的端口地址快速更新,避免在端口发生迁移时长时间无法正确进行三层转发。
本发明的第二个发明目的是提供一种更新ARP表中端口地址的设备,可以对ARP表中的端口地址快速更新,避免在端口发生迁移时长时间无法正确进行三层转发。
为了达到上述第一个发明目的,本发明提出的技术方案为:
一种更新地址解析协议表中端口地址的方法,该方法为:
A、当进行由端口迁移所引发的媒体接入控制MAC迁移时,获得MAC迁移过程中检测出的端口迁移后的端口地址和对应的MAC地址;
根据检测出的MAC地址查询包括ARP属性的MAC软件表,所述ARP属性为新增加的属性;查询到包括检测出的MAC地址的表项,并根据表项的ARP属性判断ARP表中是否包括检测出的MAC地址,是则执行步骤B;否则结束本流程;
B、将地址解析协议ARP表中与检测出的MAC地址所对应的端口地址更新为检测出的端口地址。
上述方案中,所述获得MAC迁移过程中检测出的端口迁移后的端口地址和对应的MAC地址的方法为:
从中断信号中获得端口迁移后的端口地址和对应的MAC地址,所述中断信号为MAC迁移过程中检测出端口迁移时所产生的包括端口迁移后的端口地址和对应的MAC地址的中断信号。
上述方案中,所述ARP表包括ARP软件表和ARP硬件表,所述步骤B包括:
将ARP软件表中与检测出的MAC地址所对应的端口地址更新为检测出的端口地址,再将ARP软件表同步给ARP硬件表;或者,
将ARP硬件表中与检测出的MAC地址所对应的端口地址更新为检测出的端口地址,再将ARP硬件表同步给ARP软件表。
为了达到上述第二个发明目的,本发明提出的技术方案为:
一种更新地址解析协议表中端口地址的设备,该设备包括:
获取单元,用于在进行由端口迁移所引发的MAC迁移时,获得MAC迁移过程中检测出的端口迁移后的端口地址和对应的MAC地址;
存储单元,用于保存ARP表和MAC软件表;
判别单元,用于根据检测出的MAC地址查询存储单元中保存的MAC软件表,查询到包括检测出的MAC地址的表项,根据表项新增加的ARP属性判断出ARP表中包括检测出的MAC地址,启动ARP更新单元;
ARP更新单元,用于将ARP表中与检测出的MAC地址所对应的端口地址更新为检测出的端口地址。
综上所述,本发明提出的一种更新地址解析协议表中端口地址的方法和设备,可以在进行由端口迁移所引发的媒体接入控制(MAC)迁移时,从MAC迁移过程中获得检测出的端口迁移后的端口地址和对应的MAC地址;并将地址解析协议(ARP)表中与检测出的MAC地址所对应的端口地址更新为检测出的端口地址。由于本发明方案中的交换机不必等待ARP老化,可以实现对ARP表中的端口地址快速更新,从而避免在端口发生迁移时长时间无法正确进行三层转发。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
为了在发生端口迁移时,能够及时更新地址解析协议(ARP)表中的端口地址,本发明将更新ARP表中端口地址的过程与端口迁移引发的MAC迁移进行关联。这样,本发明就可以根据MAC迁移过程中获得的端口地址进行更新,而不必等待ARP老化,从而到达对ARP表中端口地址进行快速更新的目的。
图1是本发明实现对ARP表中端口地址进行更新的方法流程图。如图1所示,该方法可以包括:
步骤101:当进行由端口迁移所引发的MAC迁移时,获得MAC迁移过程中检测出的端口迁移后的端口地址和对应的MAC地址。
实际应用中,当端口发生迁移时,不但需要更新ARP表中的端口地址,还需要更新用于二层报文转发的MAC表中的端口地址。MAC表包括MAC硬件表和MAC软件表,MAC表的表项中则包括MAC地址和对应的端口地址。如果ARP表和MAC表同时包括某设备的MAC地址,那么与该MAC地址对应的端口地址在ARP表和MAC表中也应该完全相同。比如:ARP表中包括设备A的MAC地址,对应的端口地址为交换机的端口1,那么,MAC表中也包括设备A的MAC地址,对应的端口地址也应该为交换机的端口1。
这里所述MAC硬件表是交换机进行二层报文转发时直接使用的MAC表,一般可以保存在只读存储器(ROM)中;而MAC软件表则是交换机软件为了便于管理MAC地址而设置的,是从MAC硬件表同步所得到的MAC表。
通常,由端口迁移而导致MAC表中端口地址的更新也可以称为MAC迁移。为了更好地描述本步骤,下面先对MAC迁移的情况进行简单介绍:
如果与交换机连接的某设备位置或网络的拓扑结构发生变化,导致交换机与该设备连接的端口发生迁移,交换机在从迁移后的端口接收到该设备的报文时,会检测出接收报文的端口地址和该设备的MAC地址的对应关系与MAC表记录的情况不一致,将会产生中断,从而引发MAC迁移。MAC迁移的具体过程可以为:交换机检测出由端口迁移所产生的中断信号,所述中断信号包括端口迁移后的端口地址和对应的MAC地址;交换机将MAC硬件表中与检测出的MAC地址所对应的端口地址更新为检测出的端口地址,并将MAC硬件表同步给事先设置的MAC软件表。
上述是MAC迁移的过程,交换机可以从MAC迁移过程的中断信号中获得端口迁移后的端口地址和对应的MAC地址。
步骤102:将ARP表中与检测出的MAC地址所对应的端口地址更新为检测出的端口地址。
由于MAC表中MAC地址和端口地址的对应关系,以及ARP表中MAC地址和端口地址的对应关系是完全相同的,只要从步骤101中获得迁移后的端口地址和对应的MAC地址,就可以对ARP表中的端口地址进行更新。
实际应用中,如果与交换机连接的某些设备仅允许进行二层转发,而不能进行三层转发,那么,这些设备的MAC地址和端口地址的对应关系就仅存在于MAC表,而没有保存在ARP表中。在这种情况下,就可以在步骤101和步骤102之间进一步包括:
交换机根据检测出的MAC地址查询事先设置的包括ARP属性的MAC软件表,查询到包括检测出的MAC地址的表项,并根据该表项的ARP属性判断ARP表中是否包括检测出的MAC地址,如果是,则执行步骤102。
也就是说,可以事先为MAC软件表的表项增加一个MAC硬件表所没有的ARP属性,用于表示MAC软件表中的MAC地址是否也同时存在于ARP表中。这样,在交换机产生中断信号时,就可以在明确ARP表存在中断信号包括的MAC地址时,才利用步骤102对ARP表中的端口地址进行更新,否则,交换机可以不对ARP表进行更新。
为了更好地说明本发明方案,下面用一个较佳实施例进行详细描述。
本实施例中,假设设备A由于位置发生变化,交换机与之连接的端口从端口1迁移到端口2;交换机允许对设备A进行二层报文和三层报文的转发;交换机中包括MAC硬件表、MAC软件表以及ARP表等等。
端口迁移之前,MAC硬件表的格式可以如表一所示:
MAC地址 |
端口地址 |
MAC-A |
端口1 |
... |
... |
表一
其中,“MAC-A”表示设备A的MAC地址,“端口1”表示交换机通过端口1与设备A进行交互。
端口迁移之前,MAC软件表的格式可以如表二所示:
表二
其中,“MAC-A”表示设备A的MAC地址,“端口1”表示交换机通过端口1与设备A进行交互,“ARP属性为1”表示ARP表中也包括针对设备A的表项,即存在设备A的MAC地址。
端口迁移之前,交换机中的ARP表的格式可以如表三所示:
IP地址 |
MAC地址 |
端口地址 |
IP-A |
MAC-A |
端口1 |
... |
... |
... |
表三
其中,“IP-A”表示设备A的IP地址,“MAC-A”表示设备A的MAC地址,“端口1”表示交换机通过端口1与设备A进行交互。
可见,端口迁移之前,MAC表中设备A的MAC地址和端口地址的对应关系,与ARP表中设备A的MAC地址和端口地址的对应关系完全相同。
此后,假设设备A的位置发生变化,交换机从端口2接收到来自设备A的报文,并可以检测出携带有设备A的MAC地址的报文是从端口2接收到的这种对应关系。这种对应关系与硬件MAC表中原有的对应关系不一致,将引发MAC迁移,其过程可以为:交换机检测出由端口迁移所产生的中断信号,所述中断信号包括端口迁移后的端口2和对应的MAC-A;交换机将MAC硬件表中与MAC-A所对应的端口地址更新为端口2,将MAC硬件表同步给事先设置的MAC软件表。
交换机更新MAC硬件表之后,其格式可以如表四所示:
MAC地址 |
端口地址 |
MAC-A |
端口2 |
... |
... |
表四
交换机同步MAC软件表之后,其格式可以如表五所示:
MAC地址 |
端口地址 |
ARP属性 |
MAC-A |
端口2 |
1 |
... |
... |
... |
表五
上述是MAC迁移的情况,本实施例中,当交换机进行由端口迁移所引发的MAC迁移时,还需要对ARP表中的端口地址进行更新。
图2是本实施例实现更新ARP表中端口地址方法的流程图。如图2所示,该方法包括:
步骤201:当进行由端口迁移所引发的MAC迁移时,交换机从中断信号中获得检测出的端口迁移后的端口地址和对应的MAC地址。
这里,中断信号中包括的端口地址就是“端口2”,对应的MAC地址就是“MAC-A”。
步骤202:交换机根据检测出的MAC地址查询MAC软件表,查询到包括检测出的MAC地址的表项。
步骤203:交换机根据查询到的表项中ARP属性判断出ARP表中包括检测出的MAC地址。
这里,由于查询到的表项中ARP属性值为“1”,表示ARP表中包括设备A的MAC地址。实际应用中,如果不允许对设备A进行三层转发,则该表项中的ARP属性可以为“0”,表示ARP表中不包括设备A的MAC地址,交换机将不再继续执行后续步骤,直接结束本流程即可。
步骤204:交换机将ARP表中与检测出的MAC地址所对应的端口地址更新为检测出的端口地址。
本步骤中,交换机将更新ARP表中的端口地址,更新后的ARP表可以如表六所示:
IP-A |
MAC-A |
端口2 |
... |
... |
... |
表六
与MAC表相似,ARP表其实也可以分为ARP硬件表和ARP软件。其中,ARP硬件表是交换机进行三层转发时直接使用的ARP表,而ARP软件表是交换机软件为了便于管理而设置的ARP表。
在这种情况下,本步骤更新ARP表中的端口地址的过程可以为:将ARP软件表中与检测出的MAC地址所对应的端口地址更新为检测出的端口地址,再将ARP软件表同步给ARP硬件表。或者,将ARP硬件表中与检测出的MAC地址所对应的端口地址更新为检测出的端口地址,再将ARP硬件表同步给ARP软件表。
另外,本发明实施例中MAC迁移和ARP迁移本身仍然是两个过程,但MAC迁移可以启动ARP迁移,并利用在MAC表中设置的ARP属性将MAC迁移和ARP迁移关联起来。
应用本实施例方案,由于交换机可以在端口迁移引发MAC迁移时启动对ARP表中端口地址的更新,所以,如果交换机在对设备A进行三层报文转发,就可以不必等待ARP老化而将ARP表中的端口地址快速进行更新,从而将接收到的三层报文及时正确地转发给设备A,避免设备A长时间中断三层报文的接收。
针对上述方法,本发明还提出一种更新地址解析协议表中端口地址的设备。图3是该设备的基本结构示意图,如图3所示,该设备包括:
获取单元301,用于在进行由端口迁移所引发的MAC迁移时,从MAC迁移过程中获得检测出的端口迁移后的端口地址和对应的MAC地址。
存储单元302,用于保存ARP表。
ARP更新单元303,用于将ARP表中与检测出的MAC地址所对应的端口地址更新为检测出的端口地址。
图4是应用本发明方案的设备实施例内部结构示意图。如图4所示,该实施例不但包括图3中的实际应用中获取单元301、存储单元302、ARP更新单元303,该设备还可以包括:
判别单元304,用于根据检测出的MAC地址查询存储单元302保存的MAC软件表,查询到包括检测出的MAC地址的表项,根据表项事先设置的ARP属性判断出ARP表中包括检测出的MAC地址,并启动ARP更新单元302。
也就是说,在进行由端口迁移所引发的MAC迁移时,获取单元301从MAC迁移过程中获得检测出的端口迁移后的端口地址和对应的MAC地址;判别单元304根据检测出的MAC地址查询保存在存储单元302中的MAC软件表,查询到包括检测出的MAC地址的表项,根据表项事先设置的ARP属性判断出ARP表中包括检测出的MAC地址,并启动ARP更新单元303;ARP更新单元303将ARP表中与检测出的MAC地址所对应的端口地址更新为检测出的端口地址。
当然,实际应用中,存储单元302还可以分为ROM、RAM等不同的存储器,并将MAC硬件表、ARP硬件表保存在ROM中,将MAC软件表、ARP软件表等保存在RAM中。由于MAC软件表和ARP软件表分别与MAC硬件表和ARP硬件表保持同步,所以,保存MAC软件表和ARP软件表的存储器也通常称为映射区(shadow)。
应用本发明方案,由于交换机可以在进行MAC迁移时获得端口迁移后的端口地址和对应的MAC地址,并根据端口迁移后的端口地址和对应的MAC地址启动ARP表中端口地址的更新,不必等待ARP老化,从而实现对ARP表的快速更新,避免交换机在端口发生迁移时长时间无法正确进行三层转发。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。