发明内容
本发明实施例提供一种MAC表项学习方法和装置,以提高MAC表项学习的效率。
本发明实施例第一方面提供一种MAC表项学习方法,包括:
接收第一报文,若媒体接入控制MAC转发表中未存储包含所述第一报文的目的MAC地址的第一MAC表项,则在所述MAC转发表中添加第二MAC表项,并确定所述第一报文的目的MAC地址为所述第二MAC表项中的MAC地址;
当在第一预设时间段内,接收到源MAC地址与所述第二MAC表项中的MAC地址相同的第二报文,则学习接收所述第二报文的端口号,将所述接收第二报文的端口号确定为所述第二MAC表项中的端口号,所述第一预设时间段的起始时刻为当前时刻之前接收的最后一个目的MAC地址与所述第二MAC表项中的MAC地址相同的报文的时刻。
结合第一方面,在第一种可能的实现方式中,所述方法还包括:当在所述第一预设时间段内,未接收到源MAC地址与所述第二MAC表项的MAC地址相同的第二报文,并且,未接收到目的MAC地址与所述第二MAC表项的MAC地址相同的第三报文,则删除所述第二MAC表项。
结合第一方面或第一种可能的实现方式,在第二种可能的实现方式中,所述方法还包括:当在所述第一预设时间段内,接收到目的MAC地址与所述第二MAC表项的MAC地址相同的第三报文,则将所述第一预设时间段的起始时刻更新为接收所述第三报文的时刻。
结合第一方面或第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,所述确定接收所述第二报文的端口号为所述第二MAC表项中的端口号之后,还包括:
当在第二预设时间段内,未接收到源MAC地址与所述第二MAC表项的MAC地址相同的第四报文,并且,未接收到目的MAC地址与所述第二MAC表项的MAC地址相同的第五报文,则删除所述第二MAC表项;
其中,所述第二预设时间段的起始时刻为当前时刻之前接收的最后一个包含所述第二MAC表项的MAC地址的报文的时刻,所述包含所述第二MAC表项的MAC报文为源MAC地址为所述第二MAC表项的MAC地址的报文或者目的MAC地址为所述第二MAC表项的MAC地址的报文;
结合第一方面或第一种至第三种可能的实现方式中任一种可能的实现方式,在第四种可能的实现方式中,所述确定接收所述第二报文的端口号为所述第二MAC表项中的端口号之后,还包括:
当在第二预设时间段内,接收到包含所述第二MAC表项的MAC地址的报文,则更新所述第二预设时间段的起始时刻为接收包含所述第二MAC表项的MAC地址的报文的时刻,其中,所述包含所述第二MAC表项的MAC地址的报文为源MAC地址为所述第二MAC表项的MAC地址的报文或者目的MAC地址为所述第二MAC表项的MAC地址的报文。
本发明实施例第二方面一种MAC表项学习装置,包括:
接收模块,用于接收第一报文,若媒体接入控制MAC转发表中未存储包含所述第一报文的目的MAC地址的第一MAC表项,则在所述MAC转发表中添加第二MAC表项,并确定所述第一报文的目的MAC地址为所述第二MAC表项中的MAC地址;
处理模块,用于当在第一预设时间段内,接收到源MAC地址与所述第二MAC表项中的MAC地址相同的第二报文,则学习接收所述第二报文的端口号,将所述接收第二报文的端口号确定为所述第二MAC表项中的端口号,所述第一预设时间段的起始时刻为当前时刻之前接收的最后一个目的MAC地址与所述第二MAC表项中的MAC地址相同的报文的时刻。
结合第二方面,在第一种可能的实现方式中,所述处理模块还用于当在所述第一预设时间段内,未接收到源MAC地址与所述第二MAC表项的MAC地址相同的第二报文,并且,未接收到目的MAC地址与所述第二MAC表项的MAC地址相同的第三报文,则删除所述第二MAC表项。
结合第二方面或第一种可能的实现方式,在第二种可能的实现方式中,所述处理模块还用于当在所述第一预设时间段内,接收到目的MAC地址与所述第二MAC表项的MAC地址相同的第三报文,则将所述第一预设时间段的起始时刻更新为接收所述第三报文的时刻。
结合第二方面或第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,所述处理模块还用于确定接收所述第二报文的端口号为所述第二MAC表项中的端口号之后,当在第二预设时间段内,未接收到源MAC地址与所述第二MAC表项的MAC地址相同的第四报文,并且,未接收到目的MAC地址与所述第二MAC表项的MAC地址相同的第五报文,则删除所述第二MAC表项;其中,所述第二预设时间段的起始时刻为当前时刻之前接收的最后一个包含所述第二MAC表项的MAC地址的报文的时刻,所述包含所述第二MAC表项的MAC报文为源MAC地址为所述第二MAC表项的MAC地址的报文或者目的MAC地址为所述第二MAC表项的MAC地址的报文;
结合第二方面或第一种至第三种可能的实现方式中任一种可能的实现方式,在第四种可能的实现方式中,所述处理模块还用于确定接收所述第二报文的端口号为所述第二MAC表项中的端口号之后,当在第二预设时间段内,接收到包含所述第二MAC表项的MAC地址的报文,则更新所述第二预设时间段的起始时刻为接收包含所述第二MAC表项的MAC地址的报文的时刻,其中,所述包含所述第二MAC表项的MAC地址的报文为源MAC地址为所述第二MAC表项的MAC地址的报文或者目的MAC地址为所述第二MAC表项的MAC地址的报文。
本实施例提供的MAC表项学习方法和装置,通过接收第一报文,若MAC转发表中未存储包含第一报文的目的MAC地址的第一MAC表项,则在MAC转发表中添加第二MAC表项,并确定第一报文的目的MAC地址为第二MAC表项中的MAC地址,当在第一预设时间段内,接收到源MAC地址与第二MAC表项中的MAC地址相同的第二报文,则学习接收第二报文的端口号,将接收第二报文的端口号确定为第二MAC表项中的端口号,从而,完成MAC表项学习。相当于,第二MAC表项是根据用用户的实际业务需求而进行学习的,从而,降低了无效MAC的学习,提高了MAC表项学习的效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
MAC转发表用于指导报文的快速转发,即根据MAC转发表确定具体通过网络设备的哪个端口转发报文,然而,MAC转发表的存储容量有限,因此,提高MAC转发表存储的MAC表项的有效性很重要。MAC转发表中的MAC表项存储MAC地址与端口号的对应关系,衡量MAC表项的有效性是根据MAC表项的利用率衡量的,即存储的MAC表项被利用的次数越多,MAC表项的有效性越高,若存储的MAC表项从未被利用过则认为该MAC表项为无效的MAC表项。MAC表项中具体存储哪些MAC表项是与MAC表项学习的方法有关的,因此,为了提高MAC表项学习的效率,本发明通过第一报文的目的MAC地址确定待学习的MAC表项的MAC地址,通过源MAC地址与第一报文的目的MAC地址相同的第二报文学习MAC表项的端口号,通过第一报文的目的MAC地址确定待学习的MAC表项的MAC地址,说明网络设备具有向第一报文的目的MAC地址对应的设备进行转发报文的需求,通过源MAC地址与第一报文的目的MAC地址相同的第二报文学习MAC表项的端口号,说明与第一报文的目的地址对应的设备状态良好,从而,通过第二报文学习MAC表项的端口号;也就是,本发明的MAC表项学习方法是根据用户的实际业务需求确定学习MAC表项,因此,能够提高MAC表项的学习效率。
下面以具体的实施例对本发明的技术方案进行详细描述。
图1为本发明MAC表项学习方法实施例一的流程示意图,本实施例的执行主体是网络设备,该网络设备是指具有报文转发功能的网络设备,例如,路由器、交换机和网关设备等。如图1所示,本实施例的方法如下:
S101:接收第一报文,若MAC转发表中未存储包含上述第一报文的目的MAC地址的第一MAC表项,则在上述MAC转发表中添加第二MAC表项,并确定上述第一报文的目的MAC地址为上述第二MAC表项中的MAC地址。
其中,MAC转发表中包含至少一条MAC表项,MAC表项可以为包含MAC地址和端口号的MAC表项,也可以为只包含MAC地址、端口号为空或者为默认值的MAC表项,本发明中称前一种MAC表项为实MAC表项,后一种MAC表项为虚MAC表项。在S101中的若MAC转发表中未存储包含第一报文的目的MAC地址的第一MAC表项,是指转发表中即未存储包含第一报文的目的MAC地址的实MAC表项,也未存储包含第一报文的目的MAC地址的虚MAC表项。在这种情况下,则在MAC转发表中添加第二MAC表项,并确定第一报文的目的MAC地址为上述第二MAC表项中的MAC地址,该步骤即建立了一个虚MAC表项,虚MAC表项中的MAC地址为第一报文的目的MAC地址。
S102:当在第一预设时间段内,接收到源MAC地址与第二MAC表项中的MAC地址相同的第二报文,则学习接收第二报文的端口号,将接收第二报文的端口号确定为第二MAC表项中的端口号。
其中,第一预设时间段的起始时刻为当前时刻之前接收的最后一个目的MAC地址与上述第二MAC表项中的MAC地址相同的报文的时刻。第一预设时间段也就是虚MAC表项的老化时间,即老化时间到了则删除该虚MAC表项,第一预设时间段具体为多长时间,依据实际应用而设定。
若在第一预设时间段内,接收到源MAC地址与第二MAC表项中的MAC地址相同的第二报文,则学习接收第二报文的端口号,将第二报文的端口号确定为第二MAC表项中的端口号,在S101步骤中的第二MAC表项相当于一个虚MAC表项,S102步骤相当于将该虚MAC表项转化成实MAC表项,S102中的第二MAC表项包含MAC地址和端口号,第二MAC表项中的MAC地址为第一报文的目的MAC地址,第二MAC表项中的端口号为接收第二报文的端口号。
本实施例,通过接收第一报文,若MAC转发表中未存储包含第一报文的目的MAC地址的第一MAC表项,则在MAC转发表中添加第二MAC表项,并确定第一报文的目的MAC地址为第二MAC表项中的MAC地址,当在第一预设时间段内,接收到源MAC地址与第二MAC表项中的MAC地址相同的第二报文,则学习接收第二报文的端口号,将接收第二报文的端口号确定为第二MAC表项中的端口号,从而,完成MAC表项学习。在该技术方案中,通过第一报文的目的MAC地址确定第二MAC表项的MAC地址,通过接收源MAC地址与第二MAC表项的MAC地址相同的第二报文的端口号确定第二MAC表项的端口号,可以看出,网络中发送第一报文的设备具有与第二MAC表项中的MAC地址对应的设备进行通信的需求,并且,第二MAC表项中的MAC地址对应的设备处于良好的状态,因此,可以通过第二MAC表项中的MAC地址对应的设备发送的第二报文学习第二MAC表项中的端口号,即第二MAC表项是根据用用户的实际业务需求而进行学习的,从而,降低了无效MAC的学习,提高了MAC表项学习的效率。
在上述实施例中,当在第一预设时间段内,未接收到源MAC地址与第二MAC表项的MAC地址相同的第二报文,并且,未接收到目的MAC地址与第二MAC表项的MAC地址相同的第三报文,则删除第二MAC表项。此处的第二MAC表项是指步骤S101中生成的第二MAC表项,即虚MAC表项,若在第一预设时间段内,未接收到源MAC地址与第二MAC表项的MAC地址相同的第二报文,并且,未接收到目的MAC地址与第二MAC表项的MAC地址相同的第三报文,则删除第二MAC表项,则说明第二MAC表项中的MAC地址对应的设备故障,或者,第二MAC表项的MAC地址对应的设备无与其他设备进行通信的需求,或者是其他原因导致无法建立第二MAC表项中的MAC地址与端口号的对应关系,则删除第二MAC表项,即,删除虚MAC表项。从而,避免无效的MAC表项占用MAC转发表的存储空间,提高了MAC转发表的利用率。
在上述实施中,当在第一预设时间段内,接收到目的MAC地址与第二MAC表项的MAC地址相同的第三报文,则将第一预设时间段的起始时刻更新为接收第三报文的时刻。
在上述实施例中,在S102之后,当在第二预设时间段内,未接收到源MAC地址与第二MAC表项的MAC地址相同的第四报文,并且,未接收到目的MAC地址与第二MAC表项的MAC地址相同的第五报文,则删除第二MAC表项,该第二MAC表项即实MAC表项,该第二MAC表项中包含MAC地址和端口号。
其中,第二预设时间段的起始时刻为当前时刻之前接收的最后一个包含第二MAC表项的MAC地址的报文时刻。包含第二MAC表项的MAC地址的报文可以为目的MAC地址为第二MAC表项的MAC地址的报文,或者源MAC地址为第二MAC表项的MAC地址的报文。第二预设时间段即实MAC的老化时间。第二预设时间段具体为多长时间,依据实际应用而设定。
若在实MAC的老化时间内,未接收到源MAC地址与第二MAC表项的MAC地址相同的第四报文,并且,未接收到目的MAC地址与第二MAC表项的MAC地址相同的第五报文,则老化实MAC表项,即删除第二MAC表项。
值得说明的是,第二预设时间段可以与第一预设时间段相同,也可以不相同,具体不作限定。
在上述实施例中,在S102之后,当在第二预设时间段内,接收到包含所述第二MAC表项的MAC地址的报文,则更新所述第二预设时间段的起始时刻为接收包含所述第二MAC表项的MAC地址的报文的时刻,其中,所述包含所述第二MAC表项的MAC地址的报文为源MAC地址为所述第二MAC表项的MAC地址的报文或者目的MAC地址为所述第二MAC表项的MAC地址的报文。即,当在第二预设时间段内,接收到源MAC地址与第二MAC表项的MAC地址相同的第四报文,则更新第二预设时间段的起始时刻为接收上述第四报文的时刻,当在第二预设时间段内,接收到目的MAC地址与第二MAC表项的MAC地址相同的第五报文,则更新第二预设时间段的起始时刻为接收上述第五报文的时刻。
图2为本发明MAC表项学习方法实施例二的流程示意图,本实施例的执行主体是网络设备,该网络设备是指具有报文转发功能的网络设备,例如,路由器、交换机和网关设备等。如图2所示,本实施例的方法如下:
S201:接收第一报文。
S202:判断MAC转发表中是否存储包含第一报文的目的MAC地址的第一MAC表项,若包含,执行S203,若不包含,执行S204。
其中,MAC转发表中包含至少一条MAC表项,MAC表项可以为包含MAC地址和端口号的MAC表项,也可以为只包含MAC地址、端口号为空或者为默认值的MAC表项,本发明中称前一种MAC表项为实MAC表项,后一种MAC表项为虚MAC表项。在S202中的包含第一报文的目的MAC地址的第一MAC表项,是指包含第一报文的目的MAC地址的实MAC表项,或者,包含第一报文的目的MAC地址的虚MAC表项。
S203:判断第一MAC表项中是否是实MAC表项。若是,执行S205,若否,执行S206。
S204:在MAC转发表中添加第二MAC表项,并确定第一报文的目的MAC地址为第二MAC表项中的MAC地址。
在此步骤中的第二MAC表项为虚MAC表项,即第二MAC表项中的MAC地址为第一报文的目的地址,端口号为空或者为默认值。
S205:第一MAC表项的老化时间的起始时刻更新为接收第一报文的时间,并根据第一MAC表项中的端口号转发第一报文。
S206:第一MAC表项的老化时间的起始时刻更新为接收第一报文的时间,广播上述第一报文。
S207:判断在第一预设时间内,是否接收到源MAC地址与第二MAC表项中的MAC地址相同的第二报文,若接收到,则执行S208,若未接收到,则执行S209。
其中,第一预设时间段的起始时刻为当前时刻之前接收的最后一个目的MAC地址与第二MAC表项中的MAC地址相同的报文的时刻。
S208:学习接收第二报文的端口号,将接收第二报文的端口号确定为第二MAC表项中的端口号。
该步骤中的第二MAC表项包含MAC地址和端口号,即将虚MAC表项转化成实MAC表项。
S209:判断在第一预设时间段内,是否接收到目的MAC地址与第二MAC表项中的MAC地址相同的第三报文,若接收到,则执行S210,若未接收到,则执行S211。
S210:将第一预设时间段的起始时刻更新为接收第三报文的时刻。返回执行S207。
S211:则删除所述第二MAC表项。
本实施例中,根据第一报文的目的MAC地址,确定第二MAC表项中的的MAC地址,根据在第一预设时间段内接收到的源MAC地址与第二MAC表项的MAC地址相同的第二报文,学习第二MAC表项中的端口号,即根据用户的实际业务需求学习MAC表项,降低无效MAC表项的学习,提高了MAC表项的学习效率。
在上述实施例的S208之后,可以按照下述方法(但不限于下述方法)老化第二MAC表项。
作为其中的一种方式,当在第二预设时间段内,未接收到源MAC地址与第二MAC表项的MAC地址相同的第四报文,并且,未接收到目的MAC地址与第二MAC表项的MAC地址相同的第五报文,则删除第二MAC表项,该第二MAC表项即实MAC表项,该第二MAC表项中包含MAC地址和端口号。
其中,第二预设时间段的起始时刻为当前时刻之前接收的最后一个包含第二MAC表项的MAC地址的报文时刻。包含第二MAC表项的MAC地址的报文可以为目的MAC地址为第二MAC表项的MAC地址的报文,或者源MAC地址为第二MAC表项的MAC地址的报文。第二预设时间段即实MAC的老化时间。第二预设时间段具体为多长时间,依据实际应用而设定。
当在第二预设时间段内,接收到包含所述第二MAC表项的MAC地址的报文,则更新所述第二预设时间段的起始时刻为接收包含所述第二MAC表项的MAC地址的报文的时刻,其中,所述包含所述第二MAC表项的MAC地址的报文为源MAC地址为所述第二MAC表项的MAC地址的报文或者目的MAC地址为所述第二MAC表项的MAC地址的报文。
图3为本发明MAC表项学习装置实施例一的结构示意图,本实施例的装置包括接收模块301和处理模块302,其中,接收模块301用于接收第一报文,若媒体接入控制MAC转发表中未存储包含上述第一报文的目的MAC地址的第一MAC表项,则在上述MAC转发表中添加第二MAC表项,并确定上述第一报文的目的MAC地址为上述第二MAC表项中的MAC地址;处理模块302用于当在第一预设时间段内,接收到源MAC地址与上述第二MAC表项中的MAC地址相同的第二报文,则学习接收上述第二报文的端口号,将上述接收第二报文的端口号确定为上述第二MAC表项中的端口号,上述第一预设时间段的起始时刻为当前时刻之前接收的最后一个目的MAC地址与上述第二MAC表项中的MAC地址相同的报文的时刻。
在上述实施例中,上述处理模块302还用于当在上述第一预设时间段内,未接收到源MAC地址与上述第二MAC表项的MAC地址相同的第二报文,并且,未接收到目的MAC地址与上述第二MAC表项的MAC地址相同的第三报文,则删除上述第二MAC表项。
在上述实施例中,上述处理模块302还用于当在上述第一预设时间段内,接收到目的MAC地址与上述第二MAC表项的MAC地址相同的第三报文,则将上述第一预设时间段的起始时刻更新为接收上述第三报文的时刻。
在实施例中,上述处理模块302还用于确定接收上述第二报文的端口号为上述第二MAC表项中的端口号之后,当在第二预设时间段内,未接收到源MAC地址与上述第二MAC表项的MAC地址相同的第四报文,并且,未接收到目的MAC地址与上述第二MAC表项的MAC地址相同的第五报文,则删除上述第二MAC表项;其中,上述第二预设时间段的起始时刻为当前时刻之前接收的最后一个包含上述第二MAC表项的MAC地址的报文的时刻,上述包含上述第二MAC表项的MAC报文为源MAC地址为上述第二MAC表项的MAC地址的报文或者目的MAC地址为上述第二MAC表项的MAC地址的报文;
在上述实施例中,上述处理模块302还用于确定接收上述第二报文的端口号为上述第二MAC表项中的端口号之后,当在第二预设时间段内,接收到包含上述第二MAC表项的MAC地址的报文,则更新上述第二预设时间段的起始时刻为接收包含上述第二MAC表项的MAC地址的报文的时刻,其中,上述包含上述第二MAC表项的MAC地址的报文为源MAC地址为上述第二MAC表项的MAC地址的报文或者目的MAC地址为上述第二MAC表项的MAC地址的报文。
上述各装置实施例的模块对应可执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图4为本发明MAC表项学习装置实施例二的结构示意图,本实施例的装置包括接收器401和处理器402,其中,接收器401用于接收第一报文,若媒体接入控制MAC转发表中未存储包含上述第一报文的目的MAC地址的第一MAC表项,则在上述MAC转发表中添加第二MAC表项,并确定上述第一报文的目的MAC地址为上述第二MAC表项中的MAC地址;处理器402用于当在第一预设时间段内,接收到源MAC地址与上述第二MAC表项中的MAC地址相同的第二报文,则学习接收上述第二报文的端口号,将上述接收第二报文的端口号确定为上述第二MAC表项中的端口号,上述第一预设时间段的起始时刻为当前时刻之前接收的最后一个目的MAC地址与上述第二MAC表项中的MAC地址相同的报文的时刻。
在上述实施例中,上述处理器402还用于当在上述第一预设时间段内,未接收到源MAC地址与上述第二MAC表项的MAC地址相同的第二报文,并且,未接收到目的MAC地址与上述第二MAC表项的MAC地址相同的第三报文,则删除上述第二MAC表项。
在上述实施例中,上述处理器402还用于当在上述第一预设时间段内,接收到目的MAC地址与上述第二MAC表项的MAC地址相同的第三报文,则将上述第一预设时间段的起始时刻更新为接收上述第三报文的时刻。
在实施例中,上述处理器402还用于确定接收上述第二报文的端口号为上述第二MAC表项中的端口号之后,当在第二预设时间段内,未接收到源MAC地址与上述第二MAC表项的MAC地址相同的第四报文,并且,未接收到目的MAC地址与上述第二MAC表项的MAC地址相同的第五报文,则删除上述第二MAC表项;其中,上述第二预设时间段的起始时刻为当前时刻之前接收的最后一个包含上述第二MAC表项的MAC地址的报文的时刻,上述包含上述第二MAC表项的MAC报文为源MAC地址为上述第二MAC表项的MAC地址的报文或者目的MAC地址为上述第二MAC表项的MAC地址的报文;
在上述实施例中,上述处理器402还用于确定接收上述第二报文的端口号为上述第二MAC表项中的端口号之后,当在第二预设时间段内,接收到包含上述第二MAC表项的MAC地址的报文,则更新上述第二预设时间段的起始时刻为接收包含上述第二MAC表项的MAC地址的报文的时刻,其中,上述包含上述第二MAC表项的MAC地址的报文为源MAC地址为上述第二MAC表项的MAC地址的报文或者目的MAC地址为上述第二MAC表项的MAC地址的报文。
上述各装置实施例的模块对应可执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。