CN103581022A - Mac地址的查找转发方法和装置 - Google Patents
Mac地址的查找转发方法和装置 Download PDFInfo
- Publication number
- CN103581022A CN103581022A CN201310505138.2A CN201310505138A CN103581022A CN 103581022 A CN103581022 A CN 103581022A CN 201310505138 A CN201310505138 A CN 201310505138A CN 103581022 A CN103581022 A CN 103581022A
- Authority
- CN
- China
- Prior art keywords
- address
- mac
- access control
- media access
- aging
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
本发明提供一种MAC地址的查找转发方法和装置,包括:接收用户报文,根据所述用户报文中的目的MAC地址和VFI ID确定目的平衡二叉树;根据所述MAC地址和VFI ID查找所述目的平衡二叉树,找到与所述目的MAC地址对应的目的MAC地址表项;根据所述目的MAC地址表项确定所述目的MAC地址是否需要老化;若确定出所述目的MAC地址需要老化,则对所述目的MAC地址进行老化。在进行MAC地址转发时对MAC地址进行老化,在对MAC地址老化时,不需要对目的平衡二叉树进行上锁,使得在对目的MAC地址老化时,目的平衡二叉树中除目的MAC地址以外的其他MAC地址可用于进行报文转发,提高了MAC地址的转发效率。
Description
技术领域
本发明涉及数据通讯技术,尤其涉及一种媒体接入控制(Media AccessControl,简称MAC)地址的查找转发方法和装置。
背景技术
虚拟专用局域网服务(Virtual Private LAN Service,简称VPLS),是一种在多协议标签交换/网际协议(Multi Protocol Label Switch/Internet Protocol,简称MPLS/IP)网络中提供虚拟专用以太网的技术。使用VPLS,可以在多个提供商边缘(Provider Edge,简称PE)设备间建立全网状的伪线(PseudoWire,简称PW),将二层以太网帧封装后通过MPLS网络使之在各个PE之间进行转发,从而建立一个点对多点的以太网VPN。
PE设备作为交换机进行报文转发,交换机二层的转发特性,符合802.1D网桥协议标准。交换机的二层转发涉及到两个关键的线程:地址学习线程和报文转发线程。地址学习线程如下:1、交换机接收网段上的所有用户报文,利用接收用户报文中的源MAC地址来建立一张包含源MAC地址、虚拟局域网标识(Virtual Local Area Network Identity,简称VLAN ID)或虚拟转发实例标识(Virtual Forward Instance Identity,简称VFI ID)、端口(port)的转发表;2、端口移动机制:交换机如果发现一个报文的入端口和报文中源MAC地址的所在端口(在交换机的MAC地址表中对应的端口)不同,就产生端口移动,将MAC地址重新学习到新的端口;3、地址老化机制:如果交换机在很长一段时间之内没有收到某台主机发出的报文,则该主机对应的MAC地址就会被删除,等下次报文来的时候会重新学习。报文转发线程:1、交换机在MAC地址表中查找用户报文中的目的MAC地址,如果找到,就将该用户报文发送到相应的端口,如果找不到,就向所有的端口发送;2、如果交换机收到的报文中源MAC地址和目的MAC地址所在的端口相同,则丢弃该报文;3、交换机向入端口以外的其它所有端口转发广播报文。
但是,现有的MAC地址都是采用哈希链的方式存储,在转发时,交换机通过VLAN+MAC算出一个HASH值,然后查找HASH链,找到冲突MAC地址表,从该冲突MAC地址表中逐一进行比较找到MAC的出端口,通过出端口转发用户报文,若该冲突MAC地址表有N个MAC地址,则最坏的情况下,需要比较N次才能找到MAC地址的出端口,查找效率低,影响了MAC地址的转发效率,而且现有技术中,对MAC地址进行转发和老化时,需要对MAC地址表进行上锁,也会影响MAC地址的转发效率。具体来说,当根据某张MAC地址表转发时,需要对该MAC地址进行上锁,在转发时,不能对该MAC地址进行老化,相应地,在对MAC地址表进行老化时,也需要上锁,不能够查询该MAC地址表进行转发,从而也影响了MAC地址的转发效率。
发明内容
本发明提供一种媒体接入控制MAC地址的查找转发方法和装置,以提高MAC地址的转发效率。
本发明第一方面提供一种媒体接入控制MAC地址的查找转发方法,包括:
接收用户报文,根据所述用户报文中的目的MAC地址和虚拟转发实例标识VFI ID确定目的平衡二叉树,所述目的平衡二叉树有N个节点,每个节点上存储有一个MAC地址表项,N大于等于1;
根据所述目的MAC地址和VFI ID查找所述目的平衡二叉树,找到与所述目的MAC地址对应的目的MAC地址表项,所述目的MAC地址表项中包括所述目的MAC地址、所述VFI ID以及所述目的MAC地址对应的目的端口;
根据所述目的MAC地址表项确定所述目的MAC地址是否需要老化;
若确定出所述目的MAC地址需要老化,则对所述目的MAC地址进行老化,将所述用户报文广播出去,其中,在对所述目的MAC地址老化时,不对所述目的平衡二叉树上锁,所述目的平衡二叉树中除所述目的MAC地址以外的其他MAC地址可用于进行报文转发;
若确定出所述目的MAC地址不需要老化,则从所述目的MAC地址对应的目的端口将所述用户报文转发出去。
如上所述的MAC地址的查找转发方法,所述目的MAC地址表中的各MAC地址表项有序存储,则所述根据所述MAC地址和VFI ID查找所述目的平衡二叉树,找到与所述目的MAC地址对应的目的MAC地址表项,包括:
根据所述目的MAC地址和VFI ID采用二分查找法查找所述目的平衡二叉树,找到与所述目的MAC地址和VFI ID匹配的目的MAC地址表项。
如上所述的MAC地址的查找转发方法,所述根据所述目的MAC地址表项确定所述目的MAC地址是否需要老化,包括:
确定所述目的MAC地址是否为动态MAC地址;
若否,则确定所述目的MAC不需要老化;
若是,则根据所述目的MAC地址的有效标识位的值判断所述目的MAC地址是否有效,其中,所述有效标识位用于标识所述MAC地址是否有效;
若无效,则确定所述目的MAC地址需要老化;
若有效,则确定所述目的MAC地址不需要老化。
如上所述的MAC地址的查找转发方法,所述接收用户报文,根据所述用户报文中的目的MAC地址和VFI ID确定目的平衡二叉树之前,还包括:
接收所述用户报文,对所述用户报文进行源MAC地址学习,当确定出MAC地址表中没有存储所述用户报文的源MAC地址时,确定所述MAC地址表中是否有可用的空闲资源;
若有空闲资源,则根据所述源MAC地址的学习结果,生成所述目的MAC地址表项,将所述目的MAC地址表项插入所述目的平衡二叉树;
若没有空闲资源,则遍历所述MAC地址表,确定出待老化的MAC地址,对所述待老化的MAC地址进行老化,释放所述待老化MAC地址占用的资源,其中,在对所述待老化的MAC地址进行老化时,不对所述待老化的MAC地址所在的目的平衡二叉树上锁,所述目的平衡二叉树中除所述待老化的MAC地址以外的其他MAC地址可用于进行报文转发;
在对所述待老化的MAC地址进行老化删除后,根据所述源MAC地址的学习结果,生成所述目的MAC地址表项,将所述目的MAC地址表项插入所述目的平衡二叉树。
如上所述的MAC地址的查找转发方法,所述接收用户报文,对所述用户报文进行源MAC地址学习之前,还包括:
构建所述目的平衡二叉树,创建所述目的平衡二叉树的各节点。
本发明第二方面提供一种媒体接入控制MAC地址的查找转发方法装置,包括:
接收模块,用于接收用户报文,根据所述用户报文中的目的MAC地址和虚拟转发实例标识VFI ID确定目的平衡二叉树,所述目的平衡二叉树有N个节点,每个节点上存储有一个MAC地址表项,N大于等于1;
查找模块,用于据所述MAC地址和VFI ID查找所述目的平衡二叉树,找到与所述目的MAC地址对应的目的MAC地址表项,所述目的MAC地址表项中包括所述目的MAC地址、所述VFI ID以及所述目的MAC地址对应的目的端口;
老化模块,用于根据所述目的MAC地址表项确定所述目的MAC地址是否需要老化;
若确定出所述目的MAC地址需要老化,则对所述目的MAC地址进行老化,其中,在对所述目的MAC地址老化时,不对所述目的平衡二叉树上锁,所述目的平衡二叉树中除所述目的MAC地址以外的其他MAC地址可用于进行报文转发;
发送模块,用于在所述老化模块对所述目的MAC地址进行老化后,广播所述用户报文,还用于在所述老化模块确定出所述目的MAC地址不需要老化时,从所述目的MAC地址对应的目的端口将所述用户报文转发出去。
如上所述的MAC地址的查找转发装置,所述查找模块具体用于:
根据所述目的MAC地址和VFI ID采用二分查找法查找所述目的平衡二叉树,找到与所述目的MAC地址和VFI ID匹配的目的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地址的查找转发方法实施例一的流程图;
图2为本发明MAC地址的查找转发方法实施例二的流程图;
图3为本发明MAC地址的查找转发装置实施例一的结构示意图;
图4为本发明MAC地址的查找转发装置实施例二的结构示意图。
具体实施方式
图1为本发明MAC地址的查找转发方法实施例一的流程图,本实施例提供的方法可以由交换机执行,在VPLS网络中,各PE设备都可以看作具有转发功能的交换机,如图1所示,本实施例的方法可以包括:
步骤101、接收用户报文,根据用户报文中的目的MAC地址和VFI ID确定目的平衡二叉树,目的平衡二叉树有N个节点,每个节点上存储有一个MAC地址表项,N大于等于1。
本实施例中,交换机维护有一张MAC地址表,MAC地址表采用平衡二叉树的方式存储,假设交换机上共创建了I棵平衡二叉树,每个平衡二叉树维护有一张冲突MAC地址表,该冲突MAC地址表中存储的所有MAC地址为冲突MAC地址,冲突MAC地址即MAC地址+VFI ID根据一定的哈希算法得到的哈希值相同的MAC地址。各平衡二叉树的各节点上分别存储有一个MAC地址表项,各平衡二叉树的节点个数可以不相同。该MAC地址表项可以是单播MAC地址表项,也可以是多播MAC地址表项,每个单播MAC地址表项分别包括一个MAC地址、该MAC地址对应的VFI ID,该MAC地址对应的端口,其中,VFI ID和VLAN ID的作用一样,通过VFI-ID确保报文的入VLAN和出VLAN是一致的,交换机在广播发送报文时,只向同一VLAN内的所有端口转发用户报文,这样带来的好处是,(1)限制了局部的网络流量,在一定程度上可以提高整个网络的处理能力;(2)虚拟的工作组,通过灵活的VLAN设置,把不同的用户划分到工作组内;(3)安全性,一个VLAN内的用户和其它VLAN内的用户不能互访,提高了安全性。还包括以下参数:Valid、Remain-tick、Static,Valid的值为1表示该单元已经被占用,为0表示该单元未被占用。Remain-tick表示该MAC地址的老化时间,MAC的老化时间通过定时器维护,Static的值为1表示MAC地址为静态MAC地址,对于静态MAC地址不需要老化,Static值为0表示MAC地址为动态MAC地址,对于动态MAC地址需要老化。多播MAC地址表项也包括以上参数,但是多播MAC地址表项中包括的MAC地址为多播MAC地址,端口也为多播端口。
本实施例中,假设用户报文的目的MAC地址预先已经存储在MAC地址表中,因此,本实施例描述的过程只是用户报文的转发过程,不涉及到用户报文的源MAC地址的学习过程。交换机接收到用户报文后,根据用户报文中的目的MAC地址和VFI ID查找各平衡二叉树,确定出目的平衡二叉树,具体地,根据报文中包括的目的MAC地址和VFI ID按照哈希算法生成哈希值,根据生成的哈希值查找各平衡二叉树,各平衡二叉树都有自己的编号,这里,该二叉树的编号可以为MAC+VFI ID的生成的哈希值。通过MAC+VFIID的哈希值确定出目的平衡二叉树,该目的平衡二叉树中维护一张冲突MAC地址表,该冲突MAC地址表内所有的MAC地址+VFI ID的哈希值相同,假设目的平衡二叉树有N个节点,每个节点上存储有一个MAC地址表项,N大于等于1,目的MAC地址存储在该目的MAC地址表中。
步骤102、根据MAC地址和VFI ID查找目的平衡二叉树,找到与目的MAC地址对应的目的MAC地址表项,目的MAC地址表项中包括目的MAC地址、VFI ID以及目的MAC地址对应的目的端口。
在查找出目的平衡二叉树后,说明目的MAC地址就存储在该目的平衡二叉树中,然后,查找目的平衡二叉树找到与目的MAC地址对应的目的MAC地址表项。在查找时,可以采用顺序查找,索引查找,二分查找、哈希查找等方法,本发明并不对此进行限制,一种优选的方式中,为了提高查找效率,采用二分查找发进行查找。举例来说,现有技术中采用哈希链的存储方法,查找时顺序查找,如果有N个MAC地址表项,则在查询时最坏的情况下,比较次数为N次,而采用二分查找发查找时,最坏的情况下只需要比较Log2N次,尤其是在MAC数目较大的情况下,查找效率明显的比现有技术有所提高。通过将目的MAC地址和VFI ID与目的MAC地址表项中的MAC地址进行比较,找到目的MAC地址表项。本实施例中,假设了用户报文的目的MAC地址预先已经存储在MAC地址表中,若没有存储,则在目的MAC地址表中找不到匹配的目的MAC地址表项,需要将学习到MAC地址存储在目的MAC地址表中。
步骤103、根据目的MAC地址表项确定目的MAC地址是否需要老化。
在找到目的MAC地址表项后,还需要进一步判断,MAC地址是否需要老化,若需要老化则执行步骤104,若不需要老化则执行步骤105。可通过以下方式确定目的MAC地址是否需要老化:
首先,确定目的MAC地址是否为动态MAC地址;若否,则确定目的MAC不需要老化,可通过目的MAC地址表项中Static的值确定MAC地址是否为动态,若static的值为1,则目的MAC地址为静态,所以不需要老化,若static的值为0,则目的MAC地址为动态。当目的MAC地址为动态MAC地址时,进一步的根据目的MAC地址的有效标识位的值判断目的MAC地址是否有效,其中,有效标识位用于标识MAC地址是否有效,一种实现方式中,可通过现有的Valid来表示有效标识位,这种实现方式中,给Valid赋予了新的含义,Valid和现有技术中Valid的含义不同,现有技术中Valid仅表示该单元是否被占用,而本实施例中,Valid的值不仅表示该单元是否被占用,还表示该MAC地址是否有效,例如当Valid为1时,表示MAC地址时有效的,Valid为0时表示MAC地址是无效的,另一种方式中,为MAC地址表项新定义一个有效标识位,该有效表示位专用于表示MAC地址是否有效,当老化时间到达时,定时器将该有效标识位的值置为0,表示该MAC地址无效。若无效,则确定目的MAC地址需要老化;若有效,则确定目的MAC地址不需要老化。
需要说明的是,在判断MAC地址是否需要老化时,还可以通过其他的判断条件,例如当HASH-AVL树的节点数>=VFI_MAX_MAC_NUM–1,这里,HASH-AVL树的节点数是指交换机上的各平衡二叉树的总节点数,VFI_MAX_MAC_NUM是指交换机所支持的最大MAC地址个数,每个节点上存储有一个MAC地址,即当交换机上存储的平衡二叉树的节点大于等于交换机所支持的最大MAC地址个数减1时,执行MAC地址老化删除,举例来说,如果交换机最大支持1000个MAC地址,则当平衡二叉树的节点数大于等于999时,执行老化删除。或者满足以下条件时进行MAC地址老化:转发报文个数=(转发报文个数++)%(间隔老化报文数)=0,间隔老化报文数有系统进行配置,每当转发一个报文后,对转发报文个数进行加1运算,然后通过上述公式进行判断,若结果为零,则执行老化删除,然后再转发报文。
步骤104、若确定出目的MAC地址需要老化,则对目的MAC地址进行老化,将用户报文广播出去,其中,在对目的MAC地址老化时,不对目的平衡二叉树上锁,目的平衡二叉树中除目的MAC地址以外的其他MAC地址可用于进行报文转发。
本实施例中,将MAC地址的老化放在了转发中去做,定时器只负责MAC地址的老化时间及有效性的管理,不负责MAC地址的老化,在对MAC地址老化时,不对目的平衡二叉树上锁,目的平衡二叉树中除目的MAC地址以外的其他MAC地址可用于进行报文转发,而现有技术中,在对MAC地址老化时,需要对冲突MAC地址表上锁,冲突MAC地址表内的其他MAC地址不能够被访问,因此,也不能用于进行转发,从而影响了转发效率,而本实施例提供的方法,能够避免转发和老化竞争平衡二叉树的资源,不需要对目的MAC地址上锁,提高了交换机的整体转发效率。
步骤105、若确定出目的MAC地址不需要老化,则从目的MAC地址对应的目的端口将用户报文转发出去。
本实施例提供的方法,在进行MAC地址转发时对MAC地址进行老化,在对MAC地址老化时,不需要对目的平衡二叉树进行上锁,使得在对目的MAC地址老化时,目的平衡二叉树中除目的MAC地址以外的其他MAC地址可用于进行报文转发,从而提高了交换机的转发效率。
图2为本发明MAC地址的查找转发方法实施例二的流程图,本实施例对图1所示方法实施例的技术方案进行详细说明。如图2所示,本实施例的方法可以包括:
步骤201、接收用户报文,对用户报文进行源MAC地址学习,当确定出MAC地址表中没有存储用户报文的源MAC地址时,确定MAC地址表中是否有可用的空闲资源。
本实施例中,交换机接收到用户报文,对报文进行源MAC地址的学习,得到用户报文的源MAC地址,然后判断MAC地址表中是否存储有该用户报文的源MAC地址,若确定出MAC地址表中没有存储用户报文的源MAC地址,则交换机需要将学习到的源MAC地址的相关信息存储在MAC地址表中,以便于下次收到该用户报文时,根据存储的源MAC地址的信息进行报文的转发。首先,需要确定MAC地址表中是否有可用的空闲资源,MAC地址表的可用空闲资源可以由空闲链管理模块进行管理,交换机通过查询空闲链管理模块确定MAC地址表中是否有可用的空闲资源。若MAC地址表中没有可用的空闲资源,则执行步骤202,若有可用的空闲资源,直接执行步骤203。
步骤202、若没有空闲资源,则遍历MAC地址表,确定出待老化的MAC地址,对待老化的MAC地址进行老化,释放待老化MAC地址占用的资源,执行步骤203。
当需要新学习MAC,但是没有MAC表资源时,开始执行平衡二叉树的老化节点删除,释放无效的MAC节点到空闲链,供新学习到的MAC地址使用。遍历MAC地址表,确定出待老化的MAC地址,在确定一个MAC地址是否需要老化时,首先,确定该MAC地址是否为动态MAC地址;若否,则确定目的MAC不需要老化;若是,则根据目的MAC地址的有效标识位的值判断目的MAC地址是否有效,其中,有效标识位用于标识MAC地址是否有效;若无效,则确定目的MAC地址需要老化;若有效,则确定目的MAC地址不需要老化。具体实现方式,可参照实施例一中的相关描述,这里不再赘述。其中,在对待老化的MAC地址进行老化时,不对待老化的MAC地址所在的目的平衡二叉树上锁,目的平衡二叉树中除待老化的MAC地址以外的其他MAC地址可用于进行报文转发。
需要说明的是,本实施例中,在对用户报文进行源MAC地址进行学习之前,需要构建各平衡二叉树,创建各平衡二叉树的各节点,如果构建平衡二叉树以及创建平衡二叉树的各节点为现有技术,这里就不再赘述。
步骤203、根据源MAC地址的学习结果,生成目的MAC地址表项,将目的MAC地址表项插入目的平衡二叉树。
若MAC地址表中有可用的空闲资源,或者,在对待老化的MAC地址进行老化删除后,释放待老化的MAC地址占用的MAC地址表资源到空闲链后,执行本步骤,根据源MAC地址的学习结果,生成目的MAC地址表项,更新目的平衡二叉树,具体地,将生成的目的MAC地址表项按照一定的方式插入到目的平衡二叉树中,并对平衡二叉树进行平衡化调整,由于平衡二叉树的插入、删除,平衡性调整等技术都已经很成熟,这里就不做过多的描述。
步骤204、根据MAC地址表项中的目的MAC地址对应的端口,将用户报文转发出去。
步骤205、接收用户报文,根据用户报文中的目的MAC地址和VFI ID确定目的平衡二叉树。
通过步骤201-204的描述,完成了用户报文源MAC地址的学习过程,将源MAC地址存储在MAC地址表中,并在目的平衡二叉树中增加一个节点,保存目的MAC地址表项,目的MAC地址表项中的目的MAC地址即学习到的源MAC地址。通过源MAC地址的学习,将源MAC地址保存在MAC地址表中,以便以后在接收到该用户报文时,根据学习到的用户报文的目的MAC地址进行报文的转发。
当交换机再次接收到用户报文,本次接收到的用户报文和前次的用户报文来自同一个用户,即本次接收到的用户报文和前次接收到用户报文的所携带的目的MAC地址以及VFI ID相同,则根据目的MAC地址和VFI ID查找各平衡二叉树,确定出目的平衡二叉树,目的平衡二叉树有N个节点,每个节点上存储有一个MAC地址表项,N大于等于1。
步骤206、根据目的MAC地址和VFI ID采用二分查找法查找目的平衡二叉树,找到与目的MAC地址和VFI ID匹配的目的MAC地址表项。
目的MAC地址表项中包括目的MAC地址、VFI ID以及目的MAC地址对应的目的端口,具体实现方式,可参照实施例一步骤102的描述,这里不再赘述。
步骤207、根据目的MAC地址表项确定目的MAC地址是否需要老化。
本步骤中,若确定出目的MAC地址需要老化,则执行步骤208,若确定出目的MAC地址不需要老化,则执行步骤209。首先,确定目的MAC地址是否为动态MAC地址;若否,则确定目的MAC不需要老化,可通过目的MAC地址表项中Static的值确定MAC地址是否为动态,若static的值为1,则目的MAC地址为静态,所以不需要老化,若static的值为0,则目的MAC地址为动态。当目的MAC地址为动态MAC地址时,进一步的根据目的MAC地址的有效标识位的值判断目的MAC地址是否有效,其中,有效标识位用于标识MAC地址是否有效,一种实现方式中,可通过现有的Valid来表示有效标识位,这种实现方式中,给Valid赋予了新的含义,Valid和现有技术中Valid的含义不同,现有技术中Valid仅表示该单元是否被占用,而本实施例中,Valid的值不仅表示该单元是否被占用,还表示该MAC地址是否有效,例如当Valid为1时,表示MAC地址时有效的,Valid为0时表示MAC地址是无效的,另一种方式中,为MAC地址表项新定义一个有效标识位,该有效表示位专用于表示MAC地址是否有效,当老化时间到达时,定时器将该有效标识位的值置为0,表示该MAC地址无效。若无效,则确定目的MAC地址需要老化;若有效,则确定目的MAC地址不需要老化。
本实施例,通过增加一个有效标识位来表示MAC地址是否有效,从而在对MAC地址老化时,不需要上锁,对该MAC地址进行老化时,不影响其他MAC地址的转发。
步骤208、对目的MAC地址进行老化,将用户报文广播出去。
其中,在对目的MAC地址老化时,不对目的平衡二叉树上锁,目的平衡二叉树中除目的MAC地址以外的其他MAC地址可用于进行报文转发;
步骤209、从目的MAC地址对应的目的端口将用户报文转发出去。
本步骤中,若确定出目的MAC地址不需要老化,则从目的MAC地址对应的目的端口将用户报文转发出去。
本实施例提供的方法,通过增加一个有效标识位来表示MAC地址是否有效,从而在对某一个MAC地址进行老化时,不需要对MAC地址所在的平衡二叉树上锁,该平衡二叉树内的其他MAC地址仍然能够用于报文转发,从而能够提高MAC地址的转发效率,而且,本实施例提供的方法,采用平衡二叉树的结构存储MAC地址,各平衡二叉树各节点有序存储,查找平衡二叉树时采用二分法查找,提高了查找效率,从而也能够提高MAC地址的转发效率。
图3为本发明MAC地址的查找转发装置实施例一的结构示意图,本实施例提供的装置可以集成在交换机和PE设备中,如图3所示,本实施例提供的装置包括:接收模块31、查找模块32、老化模块33、发送模块34。
其中,接收模块31,用于接收用户报文,根据用户报文中的目的MAC地址和VFI ID确定目的平衡二叉树,目的平衡二叉树有N个节点,每个节点上存储有一个MAC地址表项,N大于等于1;
查找模块32,用于根据目的MAC地址和VFI ID查找目的平衡二叉树,找到与目的MAC地址对应的目的MAC地址表项,目的MAC地址表项中包括目的MAC地址、VFI ID以及目的MAC地址对应的目的端口;
老化模块33,用于根据目的MAC地址表项确定目的MAC地址是否需要老化;
若确定出目的MAC地址需要老化,则对目的MAC地址进行老化,其中,在对目的MAC地址老化时,不对目的平衡二叉树上锁,目的平衡二叉树中除目的MAC地址以外的其他MAC地址可用于进行报文转发;
发送模块34,用于在老化模块33对目的MAC地址进行老化后,广播用户报文,还用于在老化模块确定出目的MAC地址不需要老化时,从目的MAC地址对应的目的端口将用户报文转发出去。
本实施例中,查找模块32具体用于:根据目的MAC地址和VFI ID采用二分查找法查找目的平衡二叉树,找到与目的MAC地址和VFI ID匹配的目的MAC地址表项。
老化模块33具体用于:确定目的MAC地址是否为动态MAC地址;若否,则确定目的MAC不需要老化;若是,则根据目的MAC地址的有效标识位的值判断目的MAC地址是否有效,其中,有效标识位用于标识MAC地址是否有效;若无效,则确定目的MAC地址需要老化;若有效,则确定目的MAC地址不需要老化。
本实施例提供的MAC地址的查找转发方法装置,可用于执行方法实施例一提供的技术方案,具体实现方式和技术效果类似,这里不再赘述。
图4为本发明MAC地址的查找转发装置实施例二的结构示意图,本实施例提供的装置可以集成在交换机和PE设备中,如图4所示,本实施例提供的装置包括:接收模块41、查找模块42、老化模块43、发送模块44,和实施例一相比,本实施例提供的装置还可以包括:空闲资源确定模块45、平衡二叉树调整模块46、平衡二叉树创建模块47。
其中,接收模块41,用于接收用户报文,根据用户报文中的目的媒体接入控制MAC地址和虚拟转发实例标识VFI ID确定目的平衡二叉树,目的平衡二叉树有N个节点,每个节点上存储有一个MAC地址表项,N大于等于1;
查找模块42,用于根据目的MAC地址和VFI ID查找目的平衡二叉树,找到与目的MAC地址对应的目的MAC地址表项,目的MAC地址表项中包括目的MAC地址、VFI ID以及目的MAC地址对应的目的端口;
老化模块43,用于根据目的MAC地址表项确定目的MAC地址是否需要老化;
若确定出目的MAC地址需要老化,则对目的MAC地址进行老化,其中,在对目的MAC地址老化时,不对目的平衡二叉树上锁,目的平衡二叉树中除目的MAC地址以外的其他MAC地址可用于进行报文转发;
发送模块44,用于在老化模块43对目的MAC地址进行老化后,广播用户报文,还用于在老化模块43确定出目的MAC地址不需要老化时,从目的MAC地址对应的目的端口将用户报文转发出去。
本实施例中,查找模块42具体用于:根据目的MAC地址和VFI ID采用二分查找法查找目的平衡二叉树,找到与目的MAC地址和VFI ID匹配的目的MAC地址表项。
老化模块43具体用于:确定目的MAC地址是否为动态MAC地址;若否,则确定目的MAC不需要老化;若是,则根据目的MAC地址的有效标识位的值判断目的MAC地址是否有效,其中,有效标识位用于标识MAC地址是否有效;若无效,则确定目的MAC地址需要老化;若有效,则确定目的MAC地址不需要老化。
本实施例中,接收模块41还用于接收用户报文,对用户报文进行源MAC地址学习;
空闲资源确定模块45,用于当接收模块41确定出MAC地址表中没有存储用户报文的源MAC地址时,确定MAC地址表中是否有可用的空闲资源;
平衡二叉树调整模块46,用于在空闲资源确定模块45确定出MAC地址表有空闲资源时,根据源MAC地址的学习结果,生成目的MAC地址表项,将目的MAC地址表项插入目的平衡二叉树;
老化模块43还用于,在空闲资源确定模块45确定出MAC地址表没有空闲资源时,遍历MAC地址表,确定出待老化的MAC地址,对待老化的MAC地址进行老化,释放待老化MAC地址占用的资源,其中,在对待老化的MAC地址进行老化时,不对待老化的MAC地址所在的目的平衡二叉树上锁,目的平衡二叉树中除待老化的MAC地址以外的其他MAC地址可用于进行报文转发;
平衡二叉树调整模块46还用于,在老化模块43对待老化的MAC地址进行老化删除后,根据源MAC地址的学习结果,生成目的MAC地址表项,将目的MAC地址表项插入目的平衡二叉树。
平衡二叉树创建模块47,用于构建目的平衡二叉树,创建目的平衡二叉树的各节点。
本实施例提供的MAC地址的查找转发方法装置,用于执行方法实施例二提供的技术方案,具体实现方式和技术效果类型,这里不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种媒体接入控制MAC地址的查找转发方法,其特征在于,包括:
接收用户报文,根据所述用户报文中的目的MAC地址和虚拟转发实例标识VFI ID确定目的平衡二叉树,所述目的平衡二叉树有N个节点,每个节点上存储有一个MAC地址表项,N大于等于1;
根据所述目的MAC地址和VFI ID查找所述目的平衡二叉树,找到与所述目的MAC地址对应的目的MAC地址表项,所述目的MAC地址表项中包括所述目的MAC地址、所述VFI ID以及所述目的MAC地址对应的目的端口;
根据所述目的MAC地址表项确定所述目的MAC地址是否需要老化;
若确定出所述目的MAC地址需要老化,则对所述目的MAC地址进行老化,将所述用户报文广播出去,其中,在对所述目的MAC地址老化时,不对所述目的平衡二叉树上锁,所述目的平衡二叉树中除所述目的MAC地址以外的其他MAC地址可用于进行报文转发;
若确定出所述目的MAC地址不需要老化,则从所述目的MAC地址对应的目的端口将所述用户报文转发出去。
2.根据权利要求1所述的方法,其特征在于,所述目的MAC地址表中的各MAC地址表项有序存储,则所述根据所述MAC地址和VFI ID查找所述目的平衡二叉树,找到与所述目的MAC地址对应的目的MAC地址表项,包括:
根据所述目的MAC地址和VFI ID采用二分查找法查找所述目的平衡二叉树,找到与所述目的MAC地址和VFI ID匹配的目的MAC地址表项。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述目的MAC地址表项确定所述目的MAC地址是否需要老化,包括:
确定所述目的MAC地址是否为动态MAC地址;
若否,则确定所述目的MAC不需要老化;
若是,则根据所述目的MAC地址的有效标识位的值判断所述目的MAC地址是否有效,其中,所述有效标识位用于标识所述MAC地址是否有效;
若无效,则确定所述目的MAC地址需要老化;
若有效,则确定所述目的MAC地址不需要老化。
4.根据权利要求1所述的方法,其特征在于,所述接收用户报文,根据所述用户报文中的目的MAC地址和VFI ID确定目的平衡二叉树之前,还包括:
接收所述用户报文,对所述用户报文进行源MAC地址学习,当确定出MAC地址表中没有存储所述用户报文的源MAC地址时,确定所述MAC地址表中是否有可用的空闲资源;
若有空闲资源,则根据所述源MAC地址的学习结果,生成所述目的MAC地址表项,将所述目的MAC地址表项插入所述目的平衡二叉树;
若没有空闲资源,则遍历所述MAC地址表,确定出待老化的MAC地址,对所述待老化的MAC地址进行老化,释放所述待老化MAC地址占用的资源,其中,在对所述待老化的MAC地址进行老化时,不对所述待老化的MAC地址所在的目的平衡二叉树上锁,所述目的平衡二叉树中除所述待老化的MAC地址以外的其他MAC地址可用于进行报文转发;
在对所述待老化的MAC地址进行老化删除后,根据所述源MAC地址的学习结果,生成所述目的MAC地址表项,将所述目的MAC地址表项插入所述目的平衡二叉树。
5.根据权利要4所述的方法,其特征在于,所述接收用户报文,对所述用户报文进行源MAC地址学习之前,还包括:
构建所述目的平衡二叉树,创建所述目的平衡二叉树的各节点。
6.一种媒体接入控制MAC地址的查找转发方法装置,其特征在于,包括:
接收模块,用于接收用户报文,根据所述用户报文中的目的MAC地址和虚拟转发实例标识VFI ID确定目的平衡二叉树,所述目的平衡二叉树有N个节点,每个节点上存储有一个MAC地址表项,N大于等于1;
查找模块,用于据所述MAC地址和VFI ID查找所述目的平衡二叉树,找到与所述目的MAC地址对应的目的MAC地址表项,所述目的MAC地址表项中包括所述目的MAC地址、所述VFI ID以及所述目的MAC地址对应的目的端口;
老化模块,用于根据所述目的MAC地址表项确定所述目的MAC地址是否需要老化;若确定出所述目的MAC地址需要老化,则对所述目的MAC地址进行老化,其中,在对所述目的MAC地址老化时,不对所述目的平衡二叉树上锁,所述目的平衡二叉树中除所述目的MAC地址以外的其他MAC地址可用于进行报文转发;
发送模块,用于在所述老化模块对所述目的MAC地址进行老化后,广播所述用户报文,还用于在所述老化模块确定出所述目的MAC地址不需要老化时,从所述目的MAC地址对应的目的端口将所述用户报文转发出去。
7.根据权利要求6所述的装置,其特征在于,所述查找模块具体用于:
根据所述目的MAC地址和VFI ID采用二分查找法查找所述目的平衡二叉树,找到与所述目的MAC地址和VFI ID匹配的目的MAC地址表项。
8.根据权利要求6或7所述的装置,其特征在于,所述老化模块具体用于:
确定所述目的MAC地址是否为动态MAC地址;
若否,则确定所述目的MAC不需要老化;
若是,则根据所述目的MAC地址的有效标识位的值判断所述目的MAC地址是否有效,其中,所述有效标识位用于标识所述MAC地址是否有效;
若无效,则确定所述目的MAC地址需要老化;
若有效,则确定所述目的MAC地址不需要老化。
9.根据权利要求6所述的装置,其特征在于,还包括:空闲资源确定模块、平衡二叉树调整模块;
所述接收模块还用于:接收所述用户报文,对所述用户报文进行源MAC地址学习;
所述空闲资源确定模块,用于当所述接收模块确定出MAC地址表中没有存储所述用户报文的源MAC地址时,确定所述MAC地址表中是否有可用的空闲资源;
所述平衡二叉树调整模块,用于在所述空闲资源确定模块确定出所述MAC地址表有空闲资源时,根据所述源MAC地址的学习结果,生成所述目的MAC地址表项,将所述目的MAC地址表项插入所述目的平衡二叉树;
所述老化模块还用于,在所述空闲资源确定模块确定出所述MAC地址表没有空闲资源时,遍历所述MAC地址表,确定出待老化的MAC地址,对所述待老化的MAC地址进行老化,释放所述待老化MAC地址占用的资源,其中,在对所述待老化的MAC地址进行老化时,不对所述待老化的MAC地址所在的目的平衡二叉树上锁,所述目的平衡二叉树中除所述待老化的MAC地址以外的其他MAC地址可用于进行报文转发;
所述平衡二叉树调整模块还用于,在所述老化模块对所述待老化的MAC地址进行老化删除后,根据所述源MAC地址的学习结果,生成所述目的MAC地址表项,将所述目的MAC地址表项插入所述目的平衡二叉树。
10.根据权利要求9所述的装置,其特征在于,还包括:
平衡二叉树创建模块,用于构建所述目的平衡二叉树,创建所述目的平衡二叉树的各节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310505138.2A CN103581022B (zh) | 2013-10-23 | 2013-10-23 | Mac地址的查找转发方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310505138.2A CN103581022B (zh) | 2013-10-23 | 2013-10-23 | Mac地址的查找转发方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103581022A true CN103581022A (zh) | 2014-02-12 |
CN103581022B CN103581022B (zh) | 2017-01-11 |
Family
ID=50051984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310505138.2A Active CN103581022B (zh) | 2013-10-23 | 2013-10-23 | Mac地址的查找转发方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103581022B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016201843A1 (zh) * | 2015-06-18 | 2016-12-22 | 中兴通讯股份有限公司 | 一种mac地址学习的控制方法和装置 |
CN108307001A (zh) * | 2018-04-28 | 2018-07-20 | 深圳市风云实业有限公司 | Mac地址老化方法、装置及电子设备 |
CN108616614A (zh) * | 2018-04-28 | 2018-10-02 | 深圳市风云实业有限公司 | Mac地址管理方法、装置及电子设备 |
CN109379210A (zh) * | 2018-09-03 | 2019-02-22 | 中新网络信息安全股份有限公司 | 基于机房管理实现网络设备物理位置自动化定位的方法 |
CN109495370A (zh) * | 2018-12-29 | 2019-03-19 | 瑞斯康达科技发展股份有限公司 | 一种基于vpls的报文传输方法及装置 |
CN110992671A (zh) * | 2019-12-16 | 2020-04-10 | 宁波三星医疗电气股份有限公司 | 电表地址转发方法、装置、系统和电子设备 |
CN114520800A (zh) * | 2022-01-07 | 2022-05-20 | 锐捷网络股份有限公司 | Mac地址表的更新方法及装置 |
CN115065662A (zh) * | 2022-06-13 | 2022-09-16 | 上海亿家芯集成电路设计有限公司 | 一种mac地址哈希冲突的处理方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101047670A (zh) * | 2006-04-14 | 2007-10-03 | 华为技术有限公司 | 一种mac地址表老化、操作方法及其处理系统 |
CN102821168A (zh) * | 2012-08-09 | 2012-12-12 | 中兴通讯股份有限公司 | 基于vpls的mac地址老化的方法及装置 |
CN102831140A (zh) * | 2012-05-18 | 2012-12-19 | 浙江大学 | 一种fpga中mac地址查找表的实现方法 |
-
2013
- 2013-10-23 CN CN201310505138.2A patent/CN103581022B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101047670A (zh) * | 2006-04-14 | 2007-10-03 | 华为技术有限公司 | 一种mac地址表老化、操作方法及其处理系统 |
CN102831140A (zh) * | 2012-05-18 | 2012-12-19 | 浙江大学 | 一种fpga中mac地址查找表的实现方法 |
CN102821168A (zh) * | 2012-08-09 | 2012-12-12 | 中兴通讯股份有限公司 | 基于vpls的mac地址老化的方法及装置 |
Non-Patent Citations (2)
Title |
---|
于翔等: "基于FPGA的MAC层地址表设计与仿真", 《计算机工程设计》 * |
蒋友等: "二层交换机中MAC地址的学习、查找和老化方法", 《网络与信息安全》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016201843A1 (zh) * | 2015-06-18 | 2016-12-22 | 中兴通讯股份有限公司 | 一种mac地址学习的控制方法和装置 |
CN108307001A (zh) * | 2018-04-28 | 2018-07-20 | 深圳市风云实业有限公司 | Mac地址老化方法、装置及电子设备 |
CN108616614A (zh) * | 2018-04-28 | 2018-10-02 | 深圳市风云实业有限公司 | Mac地址管理方法、装置及电子设备 |
CN108616614B (zh) * | 2018-04-28 | 2021-04-06 | 深圳市风云实业有限公司 | Mac地址管理方法、装置及电子设备 |
CN109379210A (zh) * | 2018-09-03 | 2019-02-22 | 中新网络信息安全股份有限公司 | 基于机房管理实现网络设备物理位置自动化定位的方法 |
CN109495370A (zh) * | 2018-12-29 | 2019-03-19 | 瑞斯康达科技发展股份有限公司 | 一种基于vpls的报文传输方法及装置 |
CN109495370B (zh) * | 2018-12-29 | 2020-11-24 | 瑞斯康达科技发展股份有限公司 | 一种基于vpls的报文传输方法及装置 |
CN110992671A (zh) * | 2019-12-16 | 2020-04-10 | 宁波三星医疗电气股份有限公司 | 电表地址转发方法、装置、系统和电子设备 |
CN114520800A (zh) * | 2022-01-07 | 2022-05-20 | 锐捷网络股份有限公司 | Mac地址表的更新方法及装置 |
CN114520800B (zh) * | 2022-01-07 | 2024-04-16 | 锐捷网络股份有限公司 | Mac地址表的更新方法及装置 |
CN115065662A (zh) * | 2022-06-13 | 2022-09-16 | 上海亿家芯集成电路设计有限公司 | 一种mac地址哈希冲突的处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103581022B (zh) | 2017-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103581022A (zh) | Mac地址的查找转发方法和装置 | |
US8312066B2 (en) | Hash collision resolution with key compression in a MAC forwarding data structure | |
CN101621414B (zh) | 一种网络资源及拓扑的发现方法及装置 | |
EP2907279B1 (en) | Ensuring any-to-any reachability with opportunistic layer 3 forwarding in massive scale data center environments | |
US20190235909A1 (en) | Forwarding policy configuration | |
US8630288B2 (en) | Hierarchical isolated learning and flooding for metro ethernet bridging domains | |
US10187293B2 (en) | Apparatus and method for multicast data packet forwarding | |
US9369293B2 (en) | Compressing singly linked lists sharing common nodes for multi-destination group expansion | |
JP6722816B2 (ja) | パケット転送 | |
US9876718B2 (en) | Forwarding packets | |
US20130003732A1 (en) | Abstracting accepting interface to optimize parent and child entry lookup for bidirectional pim | |
EP2827542A1 (en) | Packet sending method and network device | |
JP6633775B2 (ja) | パケット伝送 | |
US20180212876A1 (en) | Dynamic and compressed trie for use in route lookup | |
CN108600074B (zh) | 组播数据报文的转发方法及装置 | |
CN107094110B (zh) | 一种dhcp报文转发方法及装置 | |
CN107547346B (zh) | 一种报文传输方法和装置 | |
EP2890064B1 (en) | Packet forwarding method and system | |
US20120155485A1 (en) | Efficient space utilization of distributed mac address tables in ethernet switches | |
CN102291472A (zh) | 一种网络地址查找方法及装置 | |
CN108540386B (zh) | 一种防止业务流中断方法及装置 | |
US20190199633A1 (en) | Method and apparatus for forwarding in information centric networking | |
US8428060B2 (en) | Determining the group address for an Ethernet-based multicast communication | |
CN104468348A (zh) | 实现vpn快速重路由的服务商边界路由器、系统及方法 | |
CN104954255A (zh) | 一种vpn报文处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee after: RUIJIE NETWORKS Co.,Ltd. Address before: Cangshan District of Fuzhou City, Fujian province 350002 Jinshan Road No. 618 Garden State Industrial Park 19 floor Patentee before: Beijing Star-Net Ruijie Networks Co.,Ltd. |