一种基于openflow系统的NAT流表动态学习及配置方法与流程

文档序号:15923530发布日期:2018-11-14 00:54阅读:1602来源:国知局

本发明涉及网络通信技术领域,尤其涉及一种基于openflow系统的nat流表动态学习及配置方法。

背景技术

sdn(软件定义网络)架构具有控制面与转发面分离、开放的可编程接口、集中化的网络控制、网络业务的自动化应用程序控制等特征,越来越受到行业所推崇,其中,openflow作为sdn网络架构中标准化的南向接口一种。

nat(networkaddresstranslation,网络地址转换)可以完成公网ip:端口号和私网ip:端口号的映射,不仅能解决lp地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

目前多数网络设备的nat实现是基于软件层面的,依赖于cpu处理能力,无法达到硬件转发性能,转发效率低;另外,目前多数交换芯片对nat支持也有过多的限制,灵活性较差。



技术实现要素:

针对上述技术问题,本发明提供了一种解决依赖于软件处理的nat效率低下和交换芯片对nat特性支持限制问题的基于openflow系统的nat流表动态学习及配置方法。

为了解决上述技术问题,本发明提供的具体方案如下:一种基于openflow系统的nat流表动态学习及配置方法,所述openflow系统中包括openflow控制器和openflow交换机,所述方法应用于所述openflow交换机,所述openflow交换机包括相互连接的交换芯片和cpu,包括以下步骤:

s1、用户或openflow控制器下发一条需要nat的流表,cpu判断该流表是否为交换芯片支持的nat特性,若是,则直接将流表配置到交换芯片中,通过交换芯片直接完成nat操作,若否,则进入步骤s2;

s2、将步骤s1中下发的原始流表信息保存到流表数据结构中,并转化为上cpu的流表配置到交换芯片中,等待符合的报文上cpu进行nat学习;

s3、收到上cpu的报文后,根据报文内容进行学习,得到新的流表,并将新的流表配置到交换芯片;

s4、将学习后cpu的报文放到交换芯片的pipeline中重新处理,保证报文不被丢弃。

本发明是一种适用于sdn(软件定义网络)网络架构中支持openflow协议的交换机通过动态学习方式,解决交换芯片对nat特性的限制,从而实现扩展芯片nat功能特性,达到线速转发需求。

优选的,所述步骤s2中的流表数据结构是使用hashmap方式维护,便于后续需要恢复流表信息时使用。

优选的,所述步骤s2中的流表数据结构是使用两级hashmap方式维护,便于删除时使用。

优选的,所述步骤s1中是通过判断流表的match和action字段是否为交换芯片支持的nat特性,如match字段中是否有指定目的mac。

优选的,所述步骤s2中具体包括以下过程:将步骤s1中下发的原始流表的match和action字段保存到hashmap结构中,同时修改action为上cpu,并将修改后的流表配置到交换芯片中,等待符合match条件的报文上cpu后学习。

优选的,所述步骤s2中还包括对修改后的流表分配规则标识符,便于后续上cpu处理的报文通过规则标识符来区分命中的用户或控制器下发的哪条流表。

优选的,所述步骤s3具体包括以下过程:收到上cpu的报文后,从报文包头中取出依赖交换芯片nat时的必需字段,和原有的match和action重新组装后,将新的流表规则配置到交换芯片中。

优选的,所述步骤s3中还包括根据规则标识符查找hashmap结构中保存的需要nat的流表,提高效率,具有高效性。

优选的,所述步骤s3中还包括将新的流表保存到hashmap的子hashmap结构中,便于删除时使用。

与现有技术相比,本发明的有益效果在于:本发明提供的学习及配置方法有效的解决了交换芯片对nat特性的限制,实现扩展芯片nat功能特性,达到线速转发要求,提高转发效率,具有高效性。

附图说明

图1为本发明的学习及配置方法流程图。

具体实施方式

为了详细说明本发明的技术方案,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整的描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参照图1,本实施例提供的一种基于openflow系统的nat流表动态学习及配置方法,所述openflow系统中包括openflow控制器和openflow交换机,所述方法应用于所述openflow交换机,所述openflow交换机包括相互连接的交换芯片和cpu,包括以下步骤:

s1、用户或openflow控制器下发一条需要nat的流表,cpu判断该流表是否为交换芯片支持的nat特性,若是,则直接将流表配置到交换芯片中,通过交换芯片直接完成nat操作,若否,则进入步骤s2;

通过检查交换芯片是否支持用户或openflow控制器下发的流表,如果支持则不做任何干预,直接交给交换芯片处理,如果不支持,则进行到下一步骤中,具体为通过判断流表的match和action字段是否为交换芯片支持的nat特性,如match字段中是否有指定目的mac。

s2、将步骤s1中下发的原始流表信息保存到流表数据结构中,并转化为上cpu的流表配置到交换芯片中,等待符合的报文上cpu进行nat学习;

本实施例中的流表数据结构是使用hashmap方式维护,便于后续需要恢复流表信息时使用,将步骤s1中下发的原始流表的match和action字段保存到hashmap结构中,同时修改action为上cpu,并将修改后的流表配置到交换芯片中,等待符合match条件的报文上cpu后学习。

s3、收到上cpu的报文后,根据报文内容进行学习,得到新的流表,并将新的流表配置到交换芯片;

具体的,交换机收到上cpu的报文后,从报文包头中取出依赖交换芯片nat时的必需字段,和原有的match和action重新组装后,将新的流表规则配置到交换芯片中。

s4、将学习后cpu的报文放到交换芯片的pipeline中重新处理,保证报文不被丢弃。

本实施例是一种适用于sdn(软件定义网络)网络架构中支持openflow协议的交换机通过动态学习方式,解决交换芯片对nat特性的限制,从而实现扩展芯片nat功能特性,达到线速转发需求。

作为进一步的优选方案,本实施例中步骤s2中还包括对修改后的流表分配规则标识符,如0-254,其中2及之后的作为nat使用,规则标识符事先进行设定,便于后续上cpu处理的报文通过规则标识符来区分命中的用户或控制器下发的哪条流表,具体为,将步骤s1中下发的原始流表的match和action字段保存到hashmap结构中,同时修改action为上cpu,对修改后的流表分配规则标识符后,将修改后的流表配置到交换芯片中,等待符合match条件的报文上cpu后学习,上cpu的报文会从报文结构中取出规则标识符,如果是2-254之间的则进入步骤s3处理。

步骤s3中还包括根据规则标识符通过hash算法在hashmap结构中查找保存的需要nat的流表,提高效率,具有高效性,具体的,交换机收到上cpu的报文后,从报文包头中取出依赖交换芯片nat时的必需字段,和根据规则标识符查找hashmap结构中保存的需要nat的流表,即查找原有的match和action重新组装后,将新的流表规则配置到交换芯片中。

本实施例中步骤s2中的流表数据结构是使用两级hashmap方式维护,步骤s3中在将新的流表规则配置到交换芯片时,同时也将其保存到hashmap的子hashmap结构中,便于后期删除时使用。

上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1