一种介质接入控制地址学习的方法

文档序号:7954502阅读:113来源:国知局
专利名称:一种介质接入控制地址学习的方法
技术领域
本发明涉及一种数据网络通信技术方法,尤其涉及的是一种虚拟专用网的介质接入控制MAC地址学习方法。
背景技术
现有技术中,虚拟专用网(VPN)技术是运营商为用户提供跨区域网络连接的一种常用技术,VPN的实现主要包括基于BGP与MPLS技术的第三层VPN(L3VPN)和基于ATM技术的第二层VPN(L2VPN)。
现有的3层VPN技术已经发展成熟,但由于3层VPN是提供IP层的数据支持,路由由运营商管理,在保密性方面是个劣势。而L2VPN是基于介质接入控制MAC的,以VPLS(虚拟专用局域网服务VirtualPrivate LAN Service)为代表的L2VPN能够提供点到多点的交换式以太网业务,是IP/MPLS、VPN、以太网交换等多种技术的完美结合。而其中对MAC地址的学习,是L2VPN技术的一个关键点,是决定路由器转发效率的一个关键。
在图1所示的应用环境中,用户边界CE1(Custom Edge)、CE2、CE3处于同一个VPLS域VPLSA中,他们经过一个包交换的网络(如MPLS网络)连接起来。各个支持边界PE(Provider Edge)都时具有VPLS能力的设备,各个PE之间建立全网状(Full Mesh)的PW连接。
如果CE1和CE3要进行通信,CE1首先要学习到CE3的MAC地址,该MAC地址的学习是基于数据流进行的。同时,在PE1上要求有到PE3的两层标签,一个为外层的包交换标签,用于穿越MPLS网络;一个为内层的PW(VC)标签。
当PE1收到目的地址为CE3的MAC帧时,PE根据MAC地址和VCID以及其他的信息查到到达PE3的内、外层标签,并将标签加入到数据帧中在MPLS网络上进行传送。
数据到达PE3后,将剩下内层标签,PE3根据内层标签和MAC地址从而得到CE3所在的PE3的连接端口,并从该端口上发送出去,数据将到达CE3。从而完成了CE1和CE3的通信。
在现有技术的处理过程中,对MAC帧的处理都是将整个报文直接上送协议层,由协议层收集相关的信息形成转发的条目,通告给底层后做转发处理。这种处理方式需要由上层进行报文分析,效率低下,没有发挥底层网络处理器高效的报文分析和处理功能。
因此,现有技术存在缺陷,而有待于改进和发展。

发明内容
本发明的目的在于提供一种介质接入控制地址学习的方法,所要解决的技术问题是针对现有技术的将MAC报文直接上送协议处理而产生的效率低下的问题,有效的防止MAC地址学习的错误,充分发挥底层芯片的高效的报文分析和处理能力。
本发明的技术方案包括一种介质接入控制地址学习的方法,其包括步骤A0、由接收方的底层网络处理器从报文中提取介质接入控制转发条目所需的信息;B0、写入一环形队列;C0、依协议收到该收集好的信息,形成转发条目更新入所述环形队列。
所述的方法,其中,所述方法具体还包括A、对收到的报文判断是否需要进行介质接入控制地址学习;
B、对需要进行介质接入控制地址学习的,提取相应信息写入所述环形队列;C、将队列中的信息提交上层,上层生成完整的转发条目,更新到所述环形队列。
所述的方法,其中,在VPLS功能模式下,所述步骤B中包括B1、从报文中提取VPN ID、源介质接入控制地址、数据包入接口和数据包入PW标签;B2、根据所述步骤B1中获得信息,构造一介质接入控制转发条目;B3、根据该介质接入控制条目中内层标签值,将该条目挂在相应得VPLS路由条目下面,以便后续对条目的管理和操作。
所述的方法,其中,所述环形队列采用双向链表,以方便老化操作。
所述的方法,其中,所述介质接入控制条目中仅保留介质接入控制地址、VPN ID、本地标志和相应的指针域,其指针指向路由器入口。
本发明所提供的一种介质接入控制地址学习的方法,通过充分利用底层网络处理器对报文的高效分析和处理能力,提高了MAC学习的效率,并且能够有效地加入老化处理,防止了组网微变引起的MAC地址学习错误的问题。


图1是现有技术的一种需求组网图;图2是实现本发明方法的流程示意图;图3是实现本发明方法的链表组织结构示意图;图4是本发明方法的详细流程图;图5是本发明方法的应用组网示意图。
具体实施例方式
以下结合附图,将对本发明的各较佳实施例进行更为充分的说明。
本发明的介质接入控制地址学习的方法,其基本思想是由底层网络处理器从报文中提取MAC转发条目所需的信息,写入一个环形队列,协议收到该收集好的信息形成转发条目更新下来,省去了协议对报文的分析过程,大大提高了性能。
本发明的该MAC学习方法的技术方案具体包括A对收到的报文判断是否需要进行MAC学习;B需要进行MAC学习的,提取相应信息写入环形队列;C将队列中的信息提交上层,上层生成完整的转发条目,更新到队列;特殊的在VPLS功能模式下,进一步的,步骤B中包括B1从报文中提取VPN ID、源MAC地址、数据包入接口和数据包入PW标签;B2根据B1中获得信息,构造一个结构类似于路由表条目的MAC转发条目;B3根据该MAC条目中内层标签值,将该条目挂在相应得VPLS路由条目下面,以便后续对条目的管理和操作;B4链表可以采用双向链表,以方便老化操作;具体的组织方式参见附图3。
B5考虑到内存空间的问题,可将MAC条目中仅保留MAC地址、vpnid、本地标志和相应的指针域,指针指向router_entry,以简化对外层标签操作时的处理。
如图4所示的本发明较佳实施例,实现本发明方法具体包括以下步骤步骤11从报文中获取源MAC地址;步骤12根据源MAC和VPN ID查找vpls转发表,如果没有找到条目,直接跳转至步骤21,进行MAC学习,找到则继续步骤13;步骤13进步根据MAC转发条目内容判断是否需要进行MAC学习。
步骤131检验数据包的入接口号与转发条目中的入接口号是否一致,一致则继续步骤132,不一致,则跳转至步骤21;步骤132检验数据包的入标签PW与转发条目中的PW值是否一致,一致则执行步骤14,不一致跳转至步骤21。
步骤14不需要进行MAC学习,更新老化标志位,跳转步骤25;步骤21源MAC学习开始,获取环形队列的头、尾指针;步骤22判断是否可进行MAC入列操作;步骤221判断如果队列为空,即头指针等于尾指针,对列为空,则直接将MAC入列,跳转执行步骤23,否则继续步骤221;步骤222判断如果队列已满,入列操作结束,跳至步骤25,否则继续步骤223;步骤223遍历队列,检验要增加的源MAC是否在队列中,如果在则入列操作结束,跳转执行步骤25,否则继续步骤23。
步骤23MAC入列,置相关标志位,存入MAC地址、vpnid、入端口号、pw标签等。存入的数据结构类似于路由表的结构,便于操作;步骤24队尾指针更新;步骤25MAC入列操作结束。
需说明的是MAC入列后,驱动会及时将链表中的待MAC学习的条目通告上层,上层更新后同步下来,再次收到相同MAC的报文,即可成功转发。对于由于队列满而没有成功入列的报文,只能在下次收到同MAC报文时重新入列。
如图5所示,CE1、CE2,CE3分别是某企业在三个城市A,B,C的分公司对应的边缘路由器,分别通过PE1、PE2、PE3接入公网(MPLS交换网),三者之间建立了全网的PW连接,PE上均支持VPLS业务,三者位于同一个VPLS域中。
当CE1要与CE2进行通信时,就需要知道CE2的MAC地址,所以CE1会首先发一个目的IP地址是CE2的MAC帧,其中包含CE1自己的IP地址和MAC地址,当PE收到该MAC帧,就会执行方案中的步骤A,由底层网络处理器分析报文内容,根据这个源MAC地址查VPLS转发表,由于这是CE1初次发报文,必然查不到相关的转发条目,于是直接跳转执行到步骤B,进行MAC入列操作。
具体的,首先判断队列,如果为空,则直接跳过遍历的步骤,直接提取相关信息将MAC入列;如果已满,则跳过入列操作,继续后续的处理,待到再次收到相同MAC的报文,再进行入列操作;如果非空且未满,则需要遍历整个队列,如果条目存在,则跳过MAC入列流程,如果没有,则提取信息进行入列操作。
当该MAC条目入列后,驱动会将信息通告上层协议,并将协议形成的新的MAC转发条目更新到底层。而此时在将MAC入列后,底层对该报文的处理并不会结束,会继续查目的MAC地址转发表,一开始必然是查不到的,于是会将该MAC帧在整个VPLS域内广播,这时CE2、CE3都会收到该MAC帧,而只有CE2会回应。
CE2发一个携带CE1以及自身IP地址和MAC地址的MAC帧,当PE2收到该报文时,发现需要学习CE2的源MAC,会将MAC入列,通告上层进行MAC学习,生成转发条目。底层将继续处理该报文,根据目的MAC即CE1的MAC,查转发表,由于之前CE1的MAC帧广播通告的时候PE2已经学到了CE1的MAC,形成了MAC转发条目,可以查到出接口、pw标签等相关信息,因此,该CE2发往CE1的报文不需要广播,可以顺利的发送到PE1。
PE1初次收到CE2的MAC帧,将其入列,继续处理查找目的MAC(CE1 MAC)转发表,由于之前CE1发MAC帧时已经将其入列进行了MAC学习,因此可以查到条目,将报文发往正确的出接口。
这时CE1收到了CE2的MAC帧,知道了对端的MAC地址,便可以开始正常的通信了。
在通信的过程中,每收到一个源或目的MAC对应的报文,就会将对应的MAC转发条目老化标志位置1,对于长期没有活动的MAC条目,会将其删除,为了方便删除,MAC条目采用的是双向链表结构。
在上述的技术方案中,报文的生命周期比一般的直接上送协议学习MAC的处理方式要长,不仅能够充分利用底层软件的高效处理能力,还能够将报文携带消息功能最大化,使得一条报文就能够在多个PE上促发学习对应的MAC转发条目。
另外,如果在如图5的组网中发生了一些微小的变动,那么对于是否要进行源MAC学习的判断就更严格,文中所述的步骤131和132的判断就非常必要了。
实施例1假设CE1原来是由百兆接口接入PE1的,后来由于CE1客户对应的网络需求大大增加,需要从千兆接口接入。这时候,PE1上将CE1接入网络的接口从百兆换到了千兆,而PE1内部的原本从CE1过来的相关MAC转发条目仍然存在,如果没有步骤131对于接口卡一致性的判断,不会将改变了接口卡的CE1的MAC入列重新进行MAC学习,那么从CE2发给CE1的报文,将会按照原始的MAC转发条目从百兆口发出,真正的CE1将收不到报文,导致通信错误。
实施例2假设企业中某出差人员从B地出差到C地,原来通过CE2接入网络,现在改为从CE3接入网络。如果该人员从CE3接入发送报文给CE1,PE1收到报文发现MAC转发条目已经存在,如果不进行步骤132的对于入标签PW的一致性检查,不进行新的MAC学习,那么,从CE1发来的回复报文就会按照旧的MAC转发表发往PE2,导致通信错误。
通过上述结合实例对该技术方案的分析,能够清晰的发现,这种MAC学习方法高效准确,延长了报文存在的生命周期,并能够有效避免由于组网的变化引起的MAC学习错误,此外充分利用了L2VPN技术中的MAC条目与vpls路由相关联的特点,采用双向链表的组织结构方便路由的增删、修改和老化操作。
总之,采用本发明所述方法能够充分利用底层网络处理器对报文的高效分析和处理能力,提高MAC学习的效率,并且能够有效地加入老化处理,还能够防止组网微变引起的MAC地址学习错误的问题。其理由是1)由底层分析报文,提取需要信息,大大加快了对MAC学习的处理进程。
2)将内层标签相同的MAC条目挂在同一条路由下边的做法,能够简化路由增加和删除时的操作。即当外层标签发生变化的时候,只关系到相应的几个vpls路由条目,相应的修改其下的MAC条目链表即可;在删除vpls路由条目的时候,就只关系到其下链接的MAC条目,直接删除同步即可。
3)通过在MAC转发条目中设置老化标志位,对源MAC实现定时老化的功能。
4)双向链表的采用,使得老化条目时不会对整个链表产生大的影响,提高了系统的稳定性。
5)通过对MAC转发条目中出接口和入接口线卡一致性的判断,防止了由于接入PE的线卡更换造成的MAC学习错误。
6)通过对数据包携带的入标签PW和MAC条目中存放的PW标签的一致性判断,防止由于CE从PE1迁移到PE2造成的MAC学习错误。
应当理解的是,上述关于vpls的实例只是该发明专利的一个典型应用,并不能因此而限制本发明专利的涵盖范围,其专利保护范围应以所附权利要求为准。
权利要求
1.一种介质接入控制地址学习的方法,其包括步骤A0、由接收方的底层网络处理器从报文中提取介质接入控制转发条目所需的信息;B0、写入一环形队列;C0、依协议收到该收集好的信息,形成转发条目更新入所述环形队列。
2.根据权利要求1所述的方法,其特征在于,所述方法具体还包括A、对收到的报文判断是否需要进行介质接入控制地址学习;B、对需要进行介质接入控制地址学习的,提取相应信息写入所述环形队列;C、将队列中的信息提交上层,上层生成完整的转发条目,更新到所述环形队列。
3.根据权利要求2所述的方法,其特征在于,在VPLS功能模式下,所述步骤B中包括B1、从报文中提取VPN ID、源介质接入控制地址、数据包入接口和数据包入PW标签;B2、根据所述步骤B1中获得信息,构造一介质接入控制转发条目;B3、根据该介质接入控制条目中内层标签值,将该条目挂在相应得VPLS路由条目下面,以便后续对条目的管理和操作。
4.根据权利要求3所述的方法,其特征在于,所述环形队列采用双向链表,以方便老化操作。
5.根据权利要求3所述的方法,其特征在于,所述介质接入控制条目中仅保留介质接入控制地址、VPN ID、本地标志和相应的指针域,其指针指向路由器入口。
全文摘要
本发明公开了一种介质接入控制地址学习的方法,其包括步骤由接收方的底层网络处理器从报文中提取介质接入控制转发条目所需的信息;写入一环形队列;依协议收到该收集好的信息,形成转发条目更新入所述环形队列。本发明方法通过充分利用底层网络处理器对报文的高效分析和处理能力,提高了MAC学习的效率,并且能够有效地加入老化处理,防止了组网微变引起的MAC地址学习错误的问题。
文档编号H04L12/46GK1996936SQ20061003261
公开日2007年7月11日 申请日期2005年12月31日 优先权日2005年12月31日
发明者叶志宁, 龚超美, 胡龙斌, 潘建农, 于伟, 曲原 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1