本发明涉及通信网络数据交换技术领域,具体涉及一种硬件压缩打包提升mac学习速率的方法及系统。
背景技术:
随着以太网的快速发展,二层以太网技术已经从传统的局域网发展到应用于分布距离更远、处理更为复杂的城域网系统中。如何在城域网中实现局域网的二层交换功能是城域网需要解决的问题,mac(mediaaccesscontrol,介质访问控制)地址学习效率及可靠性也是城域网中面临的主要问题之一。
mac地址学习是数据通信网中二层数据交换的基础。对于集中式软件mac学习系统,例如二层网络互联的vpn技术evpn(ethernetvirtualprivatenetwork,以太网虚拟专用网络),由于其采用类似于bgp/mplsipvpn的机制,并通过扩展bgp协议,使用扩展后的可达性信息,使不同站点的二层网络间的过程从数据平面转移到控制平面,在控制层面的mac地址学习效率直接决定着数据平面能否快速实现转发通道的建立,因此,亟需解决软件mac学习速率慢的问题。
技术实现要素:
针对现有技术中存在的缺陷,本发明的目的在于提供一种硬件压缩打包提升mac学习速率的方法及系统,使得mac地址学习速率能进行大幅提升。
为达到以上目的,本发明采取的技术方案是:一种硬件压缩打包提升mac学习速率的方法,包括以下步骤:
交换芯片收到报文时,根据mac表挂起状态和老化状态,进行mac地址过滤;
根据过滤后的mac地址生成mac学习消息,将mac学习消息批量压缩打包上送。
在上述技术方案的基础上,交换芯片收到报文时,根据mac表挂起状态和老化状态,进行mac地址过滤,具体包括以下步骤:
获取端口信息,并确定业务模型为evpn或vpls;
根据业务虚拟转发实例和报文中的源mac信息读取mac表,并判断是否进行mac学习:
如果是首次进入交换芯片的报文,则将mac表挂起,并进入mac学习消息压缩打包流程;
如果不是首次进入交换芯片的报文,且mac表不是挂起状态,进入mac学习消息压缩打包流程;
如果不是首次进入交换芯片的报文,且mac表是挂起状态,则判断老化表状态,如果老化表状态为1则退出mac地址学习,如果老化表状态为0,则进入mac学习消息压缩打包流程。
在上述技术方案的基础上,根据过滤后的mac地址生成mac学习消息,将mac学习消息批量打包上送,具体包括以下步骤:
开启定时发包器,定时发包器按照设定的发包速率、发包间隔进行发包;
每一份包用于:扫描mac表状态,如果mac表是挂起状态,则将mac表存入mac学习消息中,并将mac表写入已读取状态,继续扫描下一张mac表;如果mac表不是挂起状态则不动作,继续扫描下一张mac表;
重复上述处理,直到扫描的mac表数量达到预设上限m时,将mac学习消息进行压缩封装,并将压缩封装后的mac学习消息上送到学习模块。
在上述技术方案的基础上,所述方法还包括以下步骤,将mac学习消息批量打包上送的同时及以后,定时删除处于挂起状态的mac表。
在上述技术方案的基础上,将mac学习消息批量打包上送的同时及以后,定时删除处于挂起状态的mac表,具体包括以下步骤:
开启定时发包器,定时发包器按照设定的发包速率、发包间隔进行发包;
每一份包用于:扫描mac表状态,如果mac表是挂起状态,则将mac表删除,继续扫描下一张mac表;如果mac表不是挂起状态则不动作,继续扫描下一张mac表;
重复上述处理,直到扫描的mac表数量达到预设上限m时,将该包丢弃。
本发明还提供一种硬件压缩打包提升mac学习速率的系统,包括:
mac过滤模块,其用于:交换芯片收到报文时,根据mac表挂起状态和老化状态,进行mac地址过滤;
mac打包模块,其用于:根据过滤后的mac地址生成mac学习消息,将mac学习消息批量压缩打包上送。
在上述技术方案的基础上,mac过滤模块具体用于:
获取端口信息,并确定业务模型为evpn或vpls;
根据业务虚拟转发实例和报文中的源mac信息读取mac表,并判断是否进行mac学习:
如果是首次进入交换芯片的报文,则将mac表挂起,并进入mac学习消息压缩打包流程;
如果不是首次进入交换芯片的报文,且mac表不是挂起状态,进入mac学习消息压缩打包流程;
如果不是首次进入交换芯片的报文,且mac表是挂起状态,则判断老化表状态,如果老化表状态为1则退出mac地址学习,如果老化表状态为0,则进入mac学习消息压缩打包流程。
在上述技术方案的基础上,mac打包模块具体用于:
开启定时发包器,定时发包器按照设定的发包速率、发包间隔进行发包;
每一份包用于:扫描mac表状态,如果mac表是挂起状态,则将mac表存入mac学习消息中,并将mac表写入已读取状态,继续扫描下一张mac表;如果mac表不是挂起状态则不动作,继续扫描下一张mac表;
重复上述处理,直到扫描的mac表数量达到预设上限m时,将mac学习消息进行压缩封装,并将压缩封装后的mac学习消息上送到学习模块。
在上述技术方案的基础上,所述系统还包括mac删除模块,其用于:在mac学习消息批量打包上送的同时及以后,定时删除处于挂起状态的mac表。
在上述技术方案的基础上,mac删除模块具体用于:
开启定时发包器,定时发包器按照设定的发包速率、发包间隔进行发包;
每一份包用于:扫描mac表状态,如果mac表是挂起状态,则将mac表删除,继续扫描下一张mac表;如果mac表不是挂起状态则不动作,继续扫描下一张mac表;
重复上述处理,直到扫描的mac表数量达到预设上限m时,将该包丢弃。
与现有技术相比,本发明的优点在于:
本发明通过交换芯片收到报文时,根据mac表挂起状态和老化状态,进行mac地址过滤;同时,将mac学习消息批量压缩打包上送,大幅提升mac学习效率。为了进一步提升mac学习的可靠性,本发明还设计了mac表删除流程,当不可靠的系统出现mac学习消息丢失时,通过定时删除被挂起的mac表,能保证mac学习消息会继续送往学习模块进行学习。
附图说明
图1为本发明实施例的硬件压缩打包提升mac学习速率的方法的流程示意图;
图2为本发明实施例的mac地址硬件学习及过滤的流程示意图;
图3为本发明实施例的mac地址压缩打包的流程示意图;
图4为本发明实施例的定时删除处于挂起状态的mac表的流程示意图。
具体实施方式
以下结合附图对本发明的实施例作进一步详细说明。
参见图1所示,本发明实施例提供一种硬件压缩打包提升mac学习速率的方法,包括以下步骤:
s1、交换芯片收到报文时,根据mac表挂起状态和老化状态,进行mac地址过滤;
s2、根据过滤后的mac地址生成mac学习消息,将mac学习消息批量压缩打包上送。
优选的,所述方法还包括以下步骤,将mac学习消息批量打包上送的同时及以后,定时删除处于挂起状态的mac表。
本发明实施例适用的业务模型为evpn或vpls(virtualprivatelanservice,虚拟专用局域网业务)。
一、mac地址硬件学习及过滤
业务模型为evpn的相关表项设计:
evpn_mac_collision(mac学习冲突表)
evpn_mac_learn(mac学习hash表)
evpn_aging_status(macage老化表)
vp_tbl(virtualporttbl虚端口表)
业务模型为vpls的相关表项设计:
vpls_mac_collision(mac学习冲突表)
vpls_mac_learn(mac学习hash表)
vpls_aging_status(macage老化表)
vp_tbl(virtualporttbl虚端口表)
1、参见图2所示,报文从线路侧进入交换芯片后,首先读取vp表获取端口信息,并确定业务模型为evpn或vpls;
2、根据evpn或vpls的vsi(virtualswitchinstance,虚拟转发实例)和报文中的源mac信息读取mac表,并确定是否进行mac学习;
3、如果是首次进入交换芯片的报文,则将mac表挂起,并进入mac学习消息上行压缩打包流程,否则进入步骤4;
4、如果不是步骤3的首次进入交换芯片的报文,则进入mac表是否挂起判断处理,如果此时mac表不是挂起状态,则进入mac学习消息压缩打包流程,否则进入步骤5;
5、步骤4中mac表如果是挂起状态,则进入age表状态判断,如果age状态为1则退出mac地址学习,如果age状态为0,则进入mac学习消息压缩打包流程。
二、mac地址压缩打包
在完成图一中mac地址硬件学习过滤后,每个报文的mac及虚端口信息会被暂存起来,当定时发包器产生mac学习消息后会将mac信息批量打包上送,参见图3所示,具体流程如下:
1、开启定时发包器,定时发包器按照设定好的发包速率,发包间隔进行定时发包;
2、pkt1(第一份包)扫描mac表1状态,如果mac表是挂起状态,则将mac表存入mac消息中,并将mac表写入已读取状态,然后进入步骤3中mac表2状态扫描。如果mac表不是挂起状态则mac消息不动作,直接进入步骤3的mac表2状态扫描;
3、重复步骤2中的扫描处理,指到扫描m张(m大小同交换芯片处理能力有关)mac表后,结束扫描过程;
4、pkt1扫描完序列号为1-m的mac表后,将mac消息进行封装,并将mac学习消息送到学习模块,封装的具体格式不同系统可以有所差异;
5、pkt2(第二份包)重复步骤2、3、4,此时扫描的mac表变序列号为(m+1)-(2m);
6、pktn(n的大小同交换芯片处理能力有关)重复步骤2、3、4。
三、定时删除处于挂起状态的mac表
在上边的两个流程mac地址硬件学习及过滤和mac地址压缩打包处理完成后,mac学习效率将能得到大幅提升,为了进一步提升mac学习的可靠性,为此设计了mac表删除(macflush)流程。当不可靠的系统出现mac学习消息丢失后,mac表删除将能保证mac学习消息会继续送往学习模块进行学习,参见图4所示:
1、开启定时发包器,定时发包器按照设定好的发包速率,发包间隔进行定时发包;
2、pkt1(第一份包)扫描mac表1状态,如果mac表是挂起状态,则将mac表删除,然后进入步骤3中mac表2状态扫描。如果mac表不是挂起状态则不动作,直接进入步骤3mac表2状态扫描;
3、重复步骤2中的扫描处理,直到扫描m张(m大小同交换芯片处理能力有关)mac表后,结束扫描过程;
4、pkt1扫描完序列号为1-m的mac表后,将pkt1丢弃;
5、pkt2(第二份包)重复步骤2、3、4,此时扫描的mac表变序列号为(m+1)-(2m);
6、pktn(n的大小同交换芯片处理能力有关)重复步骤2、3、4。
本发明实施例还提供一种硬件压缩打包提升mac学习速率的系统,包括:
mac过滤模块,其用于:交换芯片收到报文时,根据mac表挂起状态和老化状态,进行mac地址过滤;
mac打包模块,其用于:根据过滤后的mac地址生成mac学习消息,将mac学习消息批量压缩打包上送。
作为优先的实施方式,mac过滤模块具体用于:
获取端口信息,并确定业务模型为evpn或vpls;
根据业务虚拟转发实例和报文中的源mac信息读取mac表,并判断是否进行mac学习:
如果是首次进入交换芯片的报文,则将mac表挂起,并进入mac学习消息压缩打包流程;
如果不是首次进入交换芯片的报文,且mac表不是挂起状态,进入mac学习消息压缩打包流程;
如果不是首次进入交换芯片的报文,且mac表是挂起状态,则判断老化表状态,如果老化表状态为1则退出mac地址学习,如果老化表状态为0,则进入mac学习消息压缩打包流程。
作为优先的实施方式,mac打包模块具体用于:
开启定时发包器,定时发包器按照设定的发包速率、发包间隔进行发包;
每一份包用于:扫描mac表状态,如果mac表是挂起状态,则将mac表存入mac学习消息中,并将mac表写入已读取状态,继续扫描下一张mac表;如果mac表不是挂起状态则不动作,继续扫描下一张mac表;
重复上述处理,直到扫描的mac表数量达到预设上限m时,将mac学习消息进行压缩封装,并将压缩封装后的mac学习消息上送到学习模块。
作为优先的实施方式,所述系统还包括mac删除模块,其用于:在mac学习消息批量打包上送的同时及以后,定时删除处于挂起状态的mac表。
作为优先的实施方式,mac删除模块具体用于:
开启定时发包器,定时发包器按照设定的发包速率、发包间隔进行发包;
每一份包用于:扫描mac表状态,如果mac表是挂起状态,则将mac表删除,继续扫描下一张mac表;如果mac表不是挂起状态则不动作,继续扫描下一张mac表;
重复上述处理,直到扫描的mac表数量达到预设上限m时,将该包丢弃。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。