一种NAT实现系统、方法及Openflow交换机的制作方法

文档序号:7870318阅读:449来源:国知局
专利名称:一种NAT实现系统、方法及Openflow交换机的制作方法
技术领域
本发明涉及网络技术领域,具体涉及一种NAT实现系统、方法及Openflow交换机。
技术背景
网络地址转换(NAT,Network Address Translation)技术是将私有地址转换为公有IP地址的技术,这项技术广泛地应用在Internet接入方式中。企业的内部网络为私有网络,可以采用私有地址作为主机地址;当主机连接互联网(Internet)上的服务器时,NAT 设备将数据包的私有地址转换为公有IP地址发送至服务器;当Internet上的服务器按此公有IP地址返回应答数据包时,NAT设备将此公有IP地址转换为原来的私有地址,使应答数据包能够正确返回到相应的主机。NAT技术可令同一公有IP地址对应于多个主机的私有地址,在保证了企业内部网络安全的前提下,节约了公有IP地址资源。
软件定义网络(SDN, Software Defined Network)技术是一种通信网络实现方法; 将NAT技术应用于基于Openflow (网络交换模型)的SDN,实现数据包路由控制与数据包转发的分离。
现有的Openflow网络组成结构如图1所示,包括控制器(Controller)和 Openflow 交换机(Openflow Switch);
当企业内部网络的主机B’链接到互联网的服务器D时,所述Openflow交换机接收到来自主机B’具有私有地址B的数据包A,所述Openflow交换机向所述Controller上报接收到数据包A事件;
接收到上报事件后,所述Controller下发流表(Flow Table)到所述Openflow交换机,所述流表包含动作表,指示将数据包A的私有地址B转换为公有IP地址C,即建立起了数据包A的私有地址B与公有IP地址C之间的地址映射关系;所述Openflow交换机依据流表记录的内容,将私有地址B转换为公有IP地址C,利用公有IP地址C将数据包A发送出去;
所述Controller将流表下发到所述Openflow交换机的同时将组表(Group Table)也下发到所述Openflow交换机;所述组表包括数据类型及对相应数据类型的处理操作,例如,对Select (选择)数据类型的数据包进行广播、服务器负载均衡等等。
由上面所述可看出,所述Openflo w交换机通过流表完成私有地址B到公有IP地址C的转换;除此之外,当主机B’链接到互联网的另一服务器如服务器E时,所述Openflow 交换机与所述Controller又将依据上述技术方案进行一次互动;也就是说,现有技术中,每当主机B’拥有一个不同的链接(主机B’链接到Internet的不同服务器)时,所述 Openflow交换机在接收到主机B’私有地址的数据包时,所述Controller都将下发一次流表到所述Openflow交换机,当有大量私有网络的主机数据包需要Openflow交换机发送到 Internet时,Controller频繁下发流表将增加Openflow交换机和Controller的交互次数、延长了数据包转发的时延,同时因Internet除了对主机与服务器之间的数据包进行传输之外,还有传输其它业务,进而严重影响了 Internet网络传输效率。发明内容
有鉴于此,本发明的主要目的在于提供一种NAT实现系统、方法及Openflow交换机,能够减少Openflow交换机和Controller的交互次数、缩短数据包转发时延,提高网络传输效率。
为达到上述目的,本发明的技术方案是这样实现的
本发明提供了一种NAT实现系统,该系统包括控制器Controller和Openflow交换机 Openflow Switch ;其中,
所述控制器Controller,用于利用Openflow协议,将流表和改进组表下发到所述 Openflow交换机;
所述Openflow交换机,用于利用Openflow协议,接收所述Controller下发的所述流表和所述改进组表;
接收来源于私有网络或互联网Internet的数据包,所述Openflow交换机根据流表记录的地址转换匹配规则匹配出需要进行地址转换的数据包,根据改进组表记录的地址转换规则,执行数据包的私有地址与公有IP地址之间的转换,将数据包或发送至Internet 或发送至私有网络。
上述方案中,所述Openflow交换机进一步包括=Switch控制面、内部通道和 Switch转发面;其中,
所述Switch控制面,利用Openflow协议,接收所述Controller下发的流表和改进组表;
在接收到流表和改进组表之后,对接收到的数据包属性进行规则匹配,当有数据包属性能够匹配所述流表记录的地址转换匹配规则时,所述流表执行Group命令,指向所述改进组表,根据改进组表记录的地址转换规则产生转换命令,通过所述内部通道下发转换命令至所述Switch转发面;
所述Switch转发面,用于接收来自私有网络或Internet的数据包并通过所述内部通道将数据包属性发送至所述Switch控制面;
接收所述Switch控制面下发转换命令,依据地址转换规则,执行数据包私有地址与公有IP地址之间的转换,将数据包或发送至私有网络或发送至Internet。
上述方案中,所述改进 组表记录的地址转换规则包括的内容为需要进行地址转换的数据包的协议类型、供私有地址选择的公有IP地址范围、端口号范围及私有地址与公有IP地址对应转换关系的有效维持时间。
上述方案中,所述流表记录有规则和命令,对能够匹配规则的数据包进行命令处理;所述规则包括地址转换匹配规则;所述命令包括Group命令;当有数据包能够匹配所述流表记录的地址转换匹配规则时,所述流表执行Group命令,指向带有NAT数据类型的改进组表。
上述方案中,所述Switch控制面接收流表和改进组表,进一步包括NAT分析模块; 其中,
所述流表,用于将数据包属性进行规则匹配,当有数据包属性能够匹配记录的地址转换匹配规则时,所述流表执行Group命令,指向所述带有NAT数据类型的改进组表;
所述改进组表,用于记录有地址转换规则;
所述NAT分析模块,用于依据IANA规定及地址转换规则,对数据包属性进行分析, 产生转换命令,并通过内部通道下发命令到所述Switch转发面。
上述方案中,所述Switch转发面用于完成从私有地址到公有IP地址转换之后,还用于保存数据包的NAT转换列表。
本发明还提供了一种NAT实现方法,该方法包括
利用Openflow协议,Openflow交换机接收由Controller下发的流表和改进组表;
Openflow交换机根据接收流表和改进组表,依据流表记录的地址转换匹配规则匹配出需要进行地址转换的数据包,根据改进组表记录的地址转换规则,执行数据包私有地址与公有IP地址之间的转换,将数据包或发送至Internet或发送至私有网络。
上述方案中,所述改进组表记录有地址转换规则,所述地址转换规则记录的内容包括
需要进行地址转换的数据包的协议类型、供私有地址选择的公有IP地址范围、端口号范围及私有地址与公有IP地址对应转换关系的有效维持时间。
上述方案中,所述完成数据包私有地址与公有IP地址之间的转换为
依据IANA规定及地址转换规则,判断出当前数据包的地址源地址、目的地址为私有地址还是公有IP地址;
当判断出当前数据包的源地址为私有地址,且目的地址为公有IP地址时,将私有地址转换为公有IP地址,并利用转换后的公有IP地址将当前数据包发送至目的地址,并保存当前数据包的NAT转换列表;
当判断出当前数据包的源地址为公有IP地址,且目的地址在所述地址转换规则记录的范围内时,查找所有已保存的NAT转换列表;
当查找到有关于该公有IP地址转换关系的NAT转换列表时,将当前数据包的目的 IP地址和端口号转换为私有地址和端口号,并将当前数据包发送至链接私有地址的主机;
当查找不到有关于该公有IP地址转换关系的NAT转换列表时,丢弃当前数据包。
本发明提供了一种Openflow交换机,包括Switch控制面、内部通道和Switch转发面;其中,
所述Switch控制面,利用Openflow协议,接收所述Controller下发的流表和改进组表;
在接收到流表和改进组表之后,对接收到的数据包属性进行规则匹配,当有数据包属性能够匹配所述流表记录的地址转换匹配规则时,所述流表执行Group命令,指向所述改进组表,根据改进组表记录的地址转换规则产生转换命令,通过所述内部通道下发转换命令至所述Switch转发面;
所述Switch转发面,用于接收来自私有网络或Internet的数据包并通过所述内部通道将数据包属性发送至所述Switch控制面;
接收所述Switch 控制面下发转换命令,依据地址转换规则,执行数据包私有地址与公有IP地址之间的转换,将数据包或发送至私有网络或发送至Internet。
上述方案中,所述Switch控制面接收流表和改进组表,进一步包括NAT分析模块;其中,所述流表,用于将数据包属性进行规则匹配,当有数据包属性能够匹配记录的地 址转换匹配规则时,所述流表执行Group命令,指向所述带有NAT数据类型的改进组表;所述改进组表,用于记录有地址转换规则;所述NAT分析模块,用于依据IANA规定及地址转换规则,对数据包属性进行分析, 产生转换命令,并通过内部通道下发命令到所述Switch转发面。上述方案中,所述改进组表记录的地址转换规则包括的内容为需要进行地址转 换的数据包的协议类型、供私有地址选择的公有IP地址范围、端口号范围及私有地址与公 有IP地址对应转换关系的有效维持时间。本发明提供的NAT实现系统、方法及Openf low交换机,利用Openf low协议, Controller下发流表和改进组表到Openflow交换机,Openflow交换机接收流表和改进 组表,对接收到的数据包进行规则匹配,当有数据包能够匹配流表记录的地址转换匹配规 则时,说明当前数据包需要进行地址转换,所述流表执行Group命令,指向改进组表,因改 进组表记录有地址转换规则,依据改进组表记录的地址转换规则,所述Openflw交换机通 过NAT分析模块的转换命令来执行私有地址与公有IP地址之间的转换;利用本发明,无需 Controller频繁下发流表与改进组表,只需在Openflow交换机接收到的数据包为私有网 络的第一个数据包时才下发流表和改进组表,减小Openflow交换机和Controller的交互 次数,缩短了数据包转发时延,提高了网络传输效率。


图1为现有技术中的Openflow网络组成结构示意图;图2为本发明的NAT实现系统组成结构示意图;图3为本发明的改进组表的表项组成示意图;图4为本发明的NAT转换列表保存格式示意图;图5为本发明的NAT实现方法流程示意图。
具体实施例方式本发明提供了一种NAT实现系统,如图2所示,所述系统包括Contix)ller2和 Openflow交换机3 ;其中,所述Controller〗,用于利用Openf low协议,将流表和改进组表下发到所述 Openflow 交换机 3 ;所述Openflow交换机3,用于利用Openflow协议,接收所述Controller〗下发的 所述流表和所述改进组表,接收来源于私有网络或Internet的数据包;所述Openflow交换机3,根据流表记录的地址转换匹配规则匹配出需要进行地址 转换的数据包,根据改进组表记录的地址转换规则,执行数据包的私有地址与公有IP地址 之间的转换,将数据包或发送至Internet或发送至私有网络。其中,所述流表和改进组表是依据数据包转发路由,预先设置好的;所述 Controller2可在系统启动时下发流表和改进组表到所述Openflow交换机3,也可在私有 网络主机需要链接到Internet时即根据私有网络主机的业务需要下发流表和改进组表到所述Openflow交换机3 ;
所述流表记录有规则和命令,所述规则包括地址转换匹配规则、端口号变换匹配规则等;相应的,所述命令包括Group命令、端口号变换命令等;对能够匹配地址转换匹配规则的数据包执行Group命令;对能够匹配端口号变换匹配规则的数据包执行端口号变换命令;
所述地址转换匹配规则记录有需要进行地址转换的数据包属性,即地址转换匹配规则记录的内容包括有需要进行地址转换的数据包的协议类型、源地址及端口号和目的地址及端口号;
例如,地址转换匹配规则记录内容包括来源于私有网络、具有源地址(私有地址) 为192. 168. O.1、端口号为1,目的地址(公有IP地址)为200. 168. 10.1、端口号为2、协议类型为TCP的数据包需要进行地址转换。
所述Openflow交换机3根据流表记录的地址转换匹配规则,匹配出需要进行地址转换的数据包为所述Openflow交换机3对接收到的数据包属性进行地址转换匹配规则的匹配;
其中,数据包属性包括数据包协议类型、地址及端口号;所述数据包协议类型包括用户数据报协议TCP (UDP,User Datagram Protocol)或传输控制协议UDP (TCP, Transmission Control Protocol);所述地址包括源地址和目的地址;此处,在本系统发出数据包到链接到Internet的服务器上时,所述源地址指的是转换前的私有地址,所述目的地址指的是链接到Internet的服务器;在本系统接收由链接到Internet的服务器发送来的数据包时,所述源地址指的是Internet的服务器具有的地址,所述目的地址指的是本系统接收Internet的服务器发送来的数据包时使用的公有IP地址。
所述匹配就是判断当前数据包的协议类型、端口号、地址等信息是否符合地址转换匹配规则记录的内容,当符合地址转换匹配规则记录的内容时,确认当前数据包为需要进行地址转换的数据包;当不符合地址转换匹配规则记录的内容时,确认当前数据包为不需要进行地址转换的数据包;
根据流表记录的地址转换匹配规则,所述Openflow交换机3匹配出当前数据包为需要进行地址转换的数据包时,所述流表执行Group命令,所述执行Group命令即指向带有NAT数据类型表项的改进组表,依据所述改进组表记录的地址转换规则,进行数据包私有地址与公有IP地址的转换。
所述改进组表的表项格式如图3所示,之所以说是改进组表,是因为在现有组表基础上作了改进;本发明的所述改进组表,在不改变现有组表表项结构的基础之上,在 Group Type这个表项上增加了 NAT数据类型;
结合图3,对所述改进组表的每个表项进行含义说明
Group Id表项表示需要进行地址转换的数据包的序列号(id, identity);
Group Type表项除了包括现有技术中的Select等数据类型,还包括NAT数据类型;当GroupType表项为NAT数据类型时,表示具有Group Id表项的数据包需要依据地址转换规则记录的内容进行地址转换;
这里,地址转换规则记录的内容包括需要进行地址转换的数据包的协议类型 (TCP或UDP)、供私有地址选择(或可转换)的公有IP地址范围 、端口号范围及私有地址与公有IP地址对应转换关系的有效维持时间;
其中,当超过该有效维持时间,仍然无数据包进行地址转换时,则删除此私有地址与公有IP地址对应转换关系。
Counters表项表示对需要进行地址转换的数据包进行统计;
所述改进组表的表项还包括有两个Action List (动作列表):其一是SNATAction List,为在私有地址转换为公有IP地址后需要执行的动作,即一个来自私有网络的数据包由私有地址转换为公有IP地址后,执行SNAT Action List所示的动作;这里,所述SNAT Action List动作可根据业务需求设置,如可将所述SNAT Action List动作设置为将当前数据包输出到链接Internet的一个物理端口 ;
其二是DNAT Action List,为在公有IP地址转换为私有地址后需要执行的动作, 即一个来自Internet网络的数据包由公有IP地址转换为私有地址后,执行DNAT Action List所示的动作;这里,所述DNAT Action List动作可根据业务需求设置,如可将所述 DNAT Action List动作设置为将当前数据包输出到链接私有网络的一个物理端口。
进一步的,所述Openflow交换机3包括Switch控制面30、内部通道31和Switch 转发面32 ;
所述Switch控制面30,用于利用Openf low协议,接收所述Controller〗下发的流表和改进组表、接收所述Switch转发面32发送的数据包属性;
在接收到流表和改进组表之后,对接收到的数据包属性进行规则匹配,当有数据包属性能够匹配所述流表记录的地址转换匹配规则时,说明 该数据包需要进行地址转换, 所述流表执行Group命令,指向所述改进组表,根据改进组表记录的地址转换规则产生转换命令,通过所述内部通道31下发转换命令到所述Switch转发面32 ;
所述Switch转发面32,用于接收来自私有网络或Internet的数据包并通过内部通道31将数据包属性发送到所述Switch控制面30 ;
接收所述Switch控制面30下发的转换命令,依据地址转换规则,执行数据包私有地址与公有IP地址之间的转换,将数据包或发送至私有网络或发送至Internet。
所述Switch控制面30包括由所述Controller〗下发的流表和改进组表,还包括 NAT分析模块300 ;在所述Switch控制面30中,
所述流表,用于将数据包属性进行规则匹配,当有数据包属性能够匹配地址转换匹配规则时,所述流表执行Group命令,指向所述带有NAT数据类型表项的改进组表;
所述改进组表,用于记录有地址转换规则;
所述NAT分析模块300,用于依据IANA规定及地址转换规则,对数据包属性进行分析,产生转换命令,并通过内部通道31下发转换命令到所述Switch转发面32 ;
所述匹配就是判断当前数据包的协议类型、端口号、地址等信息是否符合地址转换匹配规则记录的内容,当符合地址转换匹配规则记录的内容时,确认当前数据包为需要进行地址转换的数据包。
具体的,所述系统完成从私有地址(源地址)转换为公有IP地址,利用转换后的公有IP地址将数据发送至链接到Internet的服务器具有的目的地址的具体过程为
利用Openflow协议,所述Controller〗将流表和改进组表下发到Openflow交换机3,进一步下发到所述Switch控制面30 ;
利用Openflow协议,所述Openflow交换机3接收所述流表和所述改进组表,进一步为所述Switch控制面30接收所述流表和所述改进组表;
所述Switch转发面32接收来源于私有网络的当前数据包,并将当前数据包属性通过所述内部通道31发送至所述Switch控制面30 ;
所述Switch控制面30接收当前数据包属性,并对当前数据包属性进行规则匹配; 这里,所述匹配就是判断当前数据包的协议类型、端口号、地址等信息是否符合地址转换匹配规则记录的内容,当符合地址转换匹配规则记录的内容时,确认当前数据包为需要进行地址转换的数据包,所述流表执行Group命令,所述流表指向带有NAT数据类型表项的所述改进组表;根据IANA规定,所述NAT分析模块300对当前数据包的源地址和目的地址进行分析;
依据因特网域名分配组织(IANA,Internet Assigned Numbers Authority)规定, 所述NAT分析模块300判断出当前数据包的源地址为私有地址,目的地址为公有IP地址; 所述NAT分析模块300产生由私有地址转换为公有IP地址的转换命令,并将转换命令通过所述内部通道31下发至所述Switch转发面32 ;
所述IANA规定为IANA保留了以下三个IP地址块用于私有网络
10. O. O. 0-10. 255. 255. 255
172. 16. O. 0-172. 31. 255. 255
192. 168. O. 0-192. 168. 255. 255
依据上述IANA规定,所述NAT分析模块300可判断出当前数据包源地址和目的地址为私有地址还是公有IP地址;
所述Switch转发面32接收到所述NAT分析模块300下发的转换命令后,依据所述改进组表记录的地址转换规则,执行当前数据包私有地址到相应公有IP地址的转换,并将当前数据包利用公有IP地址发送至Internet ;
因所述改进组表记录的地址转换规则内容包括有供私有地址选择(或可转换)的公有IP地址范围、端口号范围;这里,所述Switch转发面32将在可转换的公有IP地址及端口号范围中选择一个在当前数据包进行转换时刻处于空闲状态的公有IP地址(相应公有IP地址)及端口号,供当前数据包私有地址转换;
因改进组表动作列表SNAT Action List包括有当前数据包私有地址转换为相应公有IP地址后需要执行的动作将当前数据包发送至链接到Internet的一个物理端口,那么,所述Switch转发面32利用相应公有IP地址将当前数据包发送至链接到Internet的一个物理端口;
所述Switch转发面32执行完私有地址到相应公有IP地址转换之后,所述NAT分析模块300建立并保存当前数据包的NAT转换列表;所述NAT转换列表保存格式如 图4所示,其中,
表项id,用于表示当前数据包的序列号id ;
表项Protocol type,用于表示协议类型,由Openflow协议决定,可为UDP、TCP ;
表项Private IP、Port,用于表示当前数据包的私有地址和端口号;
表项Public IP、Port,用于表示当前数据包的公有IP地址和端口号;
表项Time out,为私有地址与公有IP地址对应转换关系的有效维持时间,用于表示超过该有效维持时间,仍然无数据包需要进行相应地址转换,则删除当前NAT转换列表。
对应于上述所述系统完成从私有地址转换为公有IP地址,利用转换后的公有IP 地址将数据发送至目的地址的具体过程,所述系统利用公有IP地址(目的地址)接收来源于链接到Internet的服务器(源地址)数据包,并将数据包发送至具有私有地址的主机的过程具体可以为
所述Switch转发面32接收来自Internet的数据包,并将接收到的当前数据包属性通过所述内部通道31发送给所述Switch控制面30 ;
这里,所述当前数据包的属性包括数据包协议类型、源地址、目的地址及端口号
所述Switch控制面30接收当前数据包属性,并对当前数据包进行规则匹配;这里,所述匹配就是判断当前数据包的协议类型、端口号、地址等信息是否符合地址转换匹配规则记录的内容,当符合地址转换匹配规则记录的内容时,确认当前数据包为需要进行地址转换的数据包,所述流表执行Group命令,指向带有NAT数据类型表项的所述改进组表;
依据IANA规定及所述地址转换规则,所述NAT分析模块300判断出当前数据包的源地址为公有IP地址、目的地址也为公有IP地址、目的地址及端口号在所述地址转换规则记录的公有IP地址范围及端口号范围内时,所述NAT分析模块300查找所有已保存的NAT 转换列表;
当所述NAT分析模块300能够查找到记录有当前数据包公有IP地址(目的地址) 的地址转换关系的NAT转换列表时,所述NAT分析模块300产生由公有IP地址转换为私有地址的转换命令,并将转换命令通过所述内部通道31下发到所述Switch转发面32 ;
所述Switch转发面32接收到所述NAT分析模块300下发的转换命令后,执行当前数据包公有IP地址到私有地址的转换,将当前数据包目的地址和端口号转换为相应的私有地址、及私有地址端口号;并将当前数据包发送至具有该私有地址及端口号的主机;
这里,当所述NAT分析模块300查找不到记录有关于该公有IP地址转换关系的 NAT转换列表时,所述NAT分析模块300将丢弃当前数据包。
基于上述NAT实现系统,本发明还提供了一种NAT实现方法,如图5所示,该方法包括
步骤401 :利用Openflow协议,Openf low交换机接收由Controller下发的流表和改进组表;
步骤402 Openflow交换机接收流表和改进组表,根据流表记录的地址转换匹配规则匹配出需要进行地址转换的数据包,根据改进组表记录的地址转换规则,执行数据包私有地址与公有IP地址之间的转换,将数据包或发送至Internet或发送至私有网络。
其中,流表和改 进组表是依据数据包转发路由,预先设置好的;
所述流表记录有地址转换匹配规则、端口号变换匹配规则等规则及Group命令、 端口号变换命令等命令;
所述地址转换匹配规则记录有需要进行地址转换的数据包属性,因数据包属性包括数据包协议类型(TCP或UDP)、地址(源地址和目的地址)及端口号,那么,地址转换匹配规则记录的内容包括有需要进行地址转换的数据包的协议类型、源地址和目的地址及端 □号;
所述Openflow交换机对接收到的数据包属性进行地址转换匹配规则的匹配;所述匹配就是判断当前数据包的协议类型、端口号、地址等信息是否符合地址转换匹配规则记录的内容,当符合地址转换匹配规则记录的内容时,确认当前数据包为需要进行地址转换的数据包;当不符合地址转换匹配规则记录的内容时,确认当前数据包为不需要进行地址转换的数据包。
实际应用中,因为私有地址往往由企业所拥有,最常见的情况是企业先发送数据包到链接Internet的服务器,然后再接收该服务器返回的响应数据包;考虑到企业自身利益,下面所述的这一情况很少发生链接到Internet的服务器先发送数据包到企业私有网络,私有网络接收并返回响应数据包。
具体的,本发明实现从私有地址(源地址)转换为公有IP地址,利用转换后的公有 IP地址将数据发送至链接到Internet的服务器(目的地址)的过程具体可以为
步骤501 :利用Openflow协议,Controller将流表和改进组表下发到Openflow交换机,进一步下发到Switch控制面;
这里,所述流表记录的地址转换匹配规则能够匹配出需要进行地址转换的数据包;
步骤502 :利用Openflow协议,Openflow交换机接收流表和改进组表,进一步为 Switch控制面接收流表和改进组表;
步骤503 :0penflow交换机接收当前数据包,进一步为Switch转发面接收当前数据包;
例如,当前数据包为A,当前数据包A来源于私有网络,其属性为协议类型为TCP、 源地址(私有地址)为192. 168. O.1、主机端口号为1、目的地址为200. 168. 38.1 ;
步骤504 Switch转发面通过内部通道将当前数据包属性发送到Switch控制面;
步骤505 =Switch控制面接收当前数据包属性,并对当前数据包属性进行规则匹配;
具体的,Switch控制面接收数据包A属性,并对当前数据包A属性进行规则匹配, 因数据包属性为协议类型为TCP、源地址(私有地址)为192. 168. O.1、主机端口号为1、目的地址为200. 168. 38.1 ;当所述地址转换匹配规则记录有协议类型为TCP、私有地址为 192. 168. O.1、主机端口号为1、目的地址为200. 168. 38.1的数据包需要进行地址转换;那么,当前数据包A需要进行地址转换,流表执行Group命令,指向带有NAT数据类型表项的改进组表;
步骤506 :依据IANA规定,NAT分析模块对当前数据包的源地址进行分析,产生转换命令,并将转换命令通过内部通道下发至Switch转发面;
具体的,根据IANA规定,NAT分析模块对当前数据包A的源地址、目的地址进行分析,分析出当前数据包A源地址为私有地址,目的地址为公有IP地址,对于当前数据包A, NAT分析模块产生由私有地址转换为公有IP地址的转换命令,并将转换命令下发至Switch 转`发面;
步骤507 =Switch转发面接收到NAT分析模块下发的转换命令后,执行当前数据包私有地址(源地址)到公有IP地址的转换,并利用公有IP地址将当前数据包发送至 Internet的服务器(目的地址);
本步骤具体可以为=Switch转发面接收到转换命令后,将当前数据包A私有地址192. 168. O.1 (源地址)转换为公有IP地址200. 168. 10.1 ;
因地址转换规则记录的内容包括有可供当前数据包A的源地址私有地址 192. 168. O.1选择的公有IP地址范围,端口号范围;这里举一个例子,如可供源地址私有地址192. 168. O.1选择的公有IP地址范围200. 168. 10.1 200. 168. 10. 100、端口号范围为 端口号为1-200 ;
Switch转发面选择200. 168. 10.1及端口号2作为私有地址192. 168. O.1转换后的公有IP地址;之所以选择200. 168. 10.1及端口号2是因为,公有IP地址200. 168. 10.1 的2号端口在当前数据包A进行地址转换的时刻是空闲的;
Switch转发面利用转换后的公有IP地址200. 168. 10.1将当前数据包A发送至链接到Internet具有目的地址200. 168. 38.1的服务器;
因改进组表动作列表SNAT Action List包括有私有地址192. 168. O.1 (源地址)转换为公有IP地址200. 168. 10.1后需要执行的动作将当前数据包A发送至链接到 Internet的一个物理端口,所以Switch转发面利用公有IP地址200. 168. 10.1将当前数据包A发送至链接到具有目的地址200. 168. 38.1的一个物理端口 ;
步骤507 =Switch转发面执行完当前数据包私有地址到公有IP地址之间的转换后,NAT分析模块建立并保存当前数据包的NAT转换列表;
具体的,Switch转发面将当前数据包A私有地址192. 168. O.1 (源地址)转换为公有IP地址200. 168. 10.1之后,NAT分析模块建立并保存当前数据包A的NAT转换列表,因为当前数据包A为第一个来源于私有网络的数据包,所以,当前数据包A表项id为“ I ”,表项 Protocol type 为 TCP,表项 Private IP,Port 的私有地址为 192. 168. O.1、端口号为 1, 表项Public IP、Port的公有IP地址为200. 168. 10. 1,端口号为2。
由上述技术方案可看出,所述Openflow交换机将私有地址(源地址)192. 168. 0.1 转换为公有IP地址200. 168. 10. 1,利用转换后的公有IP地址将当前数据包A发送至目的地址 200. 168. 38.1 ;
这里,因为当前数据包A是来源于私有网络的第一个数据包,所以首先进行步骤 50Γ502 ;
当Switch控制面接收到的当前数据包来源于私有网络,但不是来源于私有网络的第一个数据包时,无需执行步骤50广502,直接执行步骤503 507 ;也就是说,本发明的 NAT实现方法只在当前数据包是私有网络的第一个数据包时,才进行Openflow交换机与 ContiOller的交互,如此,便可减少交互次数,缩短数据包转发时延,提高网络传输效率。
对应于上述方案,当链接到Internet的服务器(源地址)发送数据包至公有IP地址(目的地址),本发明实现从所述公有IP地址(目的地址)转换为私有地址,由具有私有地址的主机接收所述数据包的过程具体为
步骤601 :0penf low交换机接收当前数据包,进一步为Switch转发面接收当前数据包;
这里,Openflow交换机接收到来自Internet的响应数据包A的数据包B,进一步为Switch转发面接收数据包B,其属性为协议类型为TCP、目的地址为200. 168. 10.1、端口号为2、源地址为200. 168. 38.1 ;
步骤601 :Switch转发面通过内部通道将当前数据包属性发送到Switch控制面;
步骤603 =Switch控制面接收当前数据包属性,并对当前数据包属性进行规则匹配;
其中,数据包属性为协议类型为TCP、目的地址为200. 168. 10.1、端口号为2、源地址为 200. 168. 38.1 ;
当所述地址转换 匹配规则记录有协议类型为TCP、目的地址为200. 168. 10.1、主机端口号为2的数据包需要进行地址转换;那么,当前数据包B需要进行地址转换,流表执行Group命令,指向带有NAT数据类型表项的改进组表;
步骤604 :依据IANA规定及地址转换规则,NAT分析模块对当前数据包源地址、目的地址进行分析,产生转换命令,并将转换命令通过内部通道下发至Switch转发面;
具体的,NAT分析模块对当前数据包B的源地址、目的地址进行分析,因当前数据包B目的地址(公有IP地址)为200. 168. 10. 1,源地址为200. 168. 38.1 ;依据IANA规定, 所述NAT分析模块分析出当前数据包B源地址为公有IP地址、目的地址也为公有IP地址; 依据地址转换规则,NAT分析模块判断出目的地址及端口号在地址转换规则记录的公有IP 地址范围及端口号范围内;NAT分析模块查找所有已保存的NAT转换列表;
当NAT分析模块能够查找到记录有当前数据包目的地址即公有IP地址的地址转换关系的NAT转换列表,NAT分析模块产生由公有IP地址(目的地址)转换为私有地址的转换命令,并将转换命令通过所述内部通道31下发到所述Switch转发面32 ;
当NAT分析模块查找不到记录有关于该公有IP地址(目的地址)转换关系的NAT 转换列表时,NAT分析模块将丢弃当前数据包。
因为这里的数据包B是在有效维持时间里返回的响应数据包,所以记录有公有IP 地址200. 168. 10.1与私有地址192. 168. O.1之间地址转换关系的NAT转换列表还存在,所以,NAT分析模块能够查找到一个公有IP地址200. 168. 10.1地址转换关系的NAT转换列表,NAT分析模块产生转换命令,并将转换命令下发至Switch转发面;
这里,因为数据包B是在有效维持时间里返回的响应数据包,记录有关于公有IP 地址200. 168. 10.1的地址转换关系的NAT转换列表还存在于NAT分析模块,NAT分析模块能够查找到该NAT转换列表;当数据包B没有在有效维持时间返回,说明此NAT转换列表在有效时间里没有数据包进行相应地址转换,NAT分析模块将删除此NAT转换列表;那么针对在超过有效时间返回的数据包B,NAT分析模块就无法查找到一个记录有关于公有IP地址 200. 168. 10.1的地址转换关系的NAT转换列表,则NAT分析模块丢弃此时的数据包B;
步骤605 =Switch转发面接收到NAT分析模块下发的转换命令后,完成当前数据包从公有IP地址到私有地址的转换,并将当前数据包发送至具有该私有地址的主机;
依据查找到的NAT转换列表,将当前数据包B公有IP地址200. 168. 10.1 (目的地址)和端口号2转换为私有地址192. 168. O.1、端口号为I ;
因改进组表动作列表DNAT Action List动作为将当前数据包输出到链接私有网络的一个物理端口,Switch转发面将公有IP地址200. 168. 10.1 (目的地址)转换为私有地址192. 168. O.1,并将数据包B发送至具有私有地址192. 168. O.1的I号端口的主机。
本发明提供的NAT实现系统、方法及Openflow交换机,利用Openflow协议, Controller将下发流表和改进组表给Openflow交换机;0penflow交换机对接收到的当前数据包进行规则匹配,当有数据包能够匹配所述流表记录的地址转换匹配规则时,所述流表执行Group命令,指向带有NAT数据类型表项的改进组表,依据改进组表记录的地址转换规则及IANA规定,所述NAT分析模块分析当前数据包的地址,并产生转换命令给 Switch转发面,Switch转发面接收到转换命令,执行当前数据包私有地址与公有IP地址之间的转换;利用本发明,无需Controller频繁下发流表,只需在Openflow交换机接收到的数据包为私有网络的第一个数据包时才下发流表和改进组表,减小Openflow交换机和 ContiOller的交互次数,缩短了数据包转发时延,提高了网络传输效率。
以上所述,仅为 本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种NAT实现系统,其特征在于,该系统包括控制器Controller和Openflow交换机 Openflow Switch ;其中,所述控制器Controller,用于利用Openflow协议,将流表和改进组表下发到所述 Openflow交换机;所述Openflow交换机,用于利用Openflow协议,接收所述Controller下发的所述流表和所述改进组表;接收来源于私有网络或互联网Internet的数据包,所述Openflow交换机根据流表记录的地址转换匹配规则匹配出需要进行地址转换的数据包,根据改进组表记录的地址转换规则,执行数据包的私有地址与公有IP地址之间的转换,将数据包或发送至Internet或发送至私有网络。
2.根据权利要求1所述的NAT实现系统,其特征在于,所述Openflow交换机进一步包括Switch控制面、内部通道和Switch转发面;其中,所述Switch控制面,利用Openflow协议,接收所述Controller下发的所述流表和所述改进组表;在接收到所述流表和所述改进组表之后,对接收到的数据包属性进行规则匹配,当有数据包属性能够匹配所述流表记录的地址转换匹配规则时,所述流表执行Group命令,指向所述改进组表,根据改进组表记录的地址转换规则产生转换命令,通过所述内部通道下发转换命令至所述Switch转发面;所述Switch转发面,用于接收来自私有网络或Internet的数据包并通过所述内部通道将数据包属性发送至所述Switch控制面;接收所述Switch控制面下发转换命令,依据地址转换规则,执行数据包私有地址与公有IP地址之间的转换,将数据包或发送至私有网络或发送至Internet。
3.根据权利要求1或2所述的NAT实现系统,其特征在于,所述改进组表记录的地址转换规则包括的内容为需要进行地址转换的数据包的协议类型、供私有地址选择的公有IP 地址范围、端口号范围及私有地址与公有IP地址对应转换关系的有效维持时间。
4.根据权利要求1所述的NAT实现系统,其特征在于,所述流表记录有规则和命令, 对能够匹配规则的数据包进行命令处理;所述规则包括地址转换匹配规则;所述命令包括Group命令;当有数据包能够匹配所述流表记录的地址转换匹配规则时,所述流表执行 Group命令,指向带有NAT数据类型的所述改进组表。
5.根据权利要求2所述的NAT实现系统,其特征在于,所述Switch控制面接收流表和改进组表,进一步包括NAT分析模块;其中,所述流表,用于将数据包属性进行规则匹配,当有数据包属性能够匹配记录的地址转换匹配规则时,所述流表执行Group命令,指向带有NAT数据类型的所述改进组表;所述改进组表,用于记录有地址转换规则;所述NAT分析模块,用于依据IANA规定及地址转换规则,对数据包属性进行分析,产生转换命令,并通过内部通道下发命令到所述Switch转发面。
6.根据权利要求5所述的NAT实现系统,其特征在于,所述Switch转发面用于完成从私有地址到公有IP地址转换之后,还用于保存数据包的NAT转换列表。
7.—种NAT实现方法,其特征在于,该方法包括利用Openflow协议,Openflow交换机接收由Controller下发的流表和改进组表;Openflow交换机根据接收流表和改进组表,依据流表记录的地址转换匹配规则匹配出需要进行地址转换的数据包,根据改进组表记录的地址转换规则,执行数据包私有地址与公有IP地址之间的转换,将数据包或发送至Internet或发送至私有网络。
8.根据权利要求7所述的NAT实现方法,其特征在于,所述改进组表记录有地址转换规则,所述地址转换规则记录的内容包括需要进行地址转换的数据包的协议类型、供私有地址选择的公有IP地址范围、端口号范围及私有地址与公有IP地址对应转换关系的有效维持时间。
9.根据权利要求7所述的NAT实现方法,其特征在于,所述完成数据包私有地址与公有 IP地址之间的转换为依据IANA规定及地址转换规则,判断出当前数据包的地址源地址、目的地址为私有地址还是公有IP地址;当判断出当前数据包的源地址为私有地址,且目的地址为公有IP地址时,将私有地址转换为相应的公有IP地址,并利用转换后的公有IP地址将当前数据包发送至目的地址,并保存当前数据包的NAT转换列表;当判断出当前数据包的源地址为公有IP地址,且目的地址在所述地址转换规则记录的范围内时,查找所有已保存的NAT转换列表;当查找到有关于该公有IP地址转换关系的NAT转换列表时,将当前数据包的目的IP 地址和端口号转换为相应的私有地址和端口号,并将当前数据包发送至具有所述私有地址的主机;当查找不到有关于该公有IP地址转换关系的NAT转换列表时,丢弃当前数据包。
10.一种Openflow交换机,其特征在于,包括Switch控制面、内部通道和Switch转发面;其中,所述Switch控制面,利用Openflow协议,接收所述Controller下发的流表和改进组表;在接收到流表和改进组表之后,对接收到的数据包属性进行规则匹配,当有数据包属性能够匹配所述流表记录的地址转换匹配规则时,所述流表执行Group命令,指向所述改进组表,根据改进组表记录的地址转换规则产生转换命令,通过所述内部通道下发转换命令至所述Switch转发面;所述Switch转发面,用于接收来自私有网络或Internet的数据包并通过所述内部通道将数据包属性发送至所述Switch控制面;接收所述Switch控制面下发转换命令,依据地址转换规则,执行数据包私有地址与公有IP地址之间的转换,将数据包或发送至私有网络或发送至Internet。
11.根据权利要求10所述的Openflow交换机,其特征在于,所述Switch控制面接收流表和改进组表,进一步包括NAT分析模块;其中,所述流表,用于将数据包属性进行规则匹配,当有数据包属性能够匹配记录的地址转换匹配规则时,所述流表执行Group命令,指向带有NAT数据类型的所述改进组表;所述改进组表,用于记录有地址转换规则;所述NAT分析模块,用于依据IANA规定及地址转换规则,对数据包属性进行分析,产生转换命令,并通过内部通道下发命令到所述Switch转发面。
12.根据权利要求10或11所述的Openflow交换机,其特征在于,所述改进组表记录的地址转换规则包括的内容为需要进行地址转换的数据包的协议类型、供私有地址选择的公有IP地址范围、端口号范围及私有地址与公有IP地址对应转换关系的有效维持时间。
全文摘要
本发明公开了一种NAT实现系统,包括Controller和Openflow交换机;Controller下发流表和改进组表;Openflow交换机接收流表和改进组表,根据流表记录的地址转换匹配规则,匹配出需要进行地址转换的数据包;根据改进组表记录的地址转换规则执行私有地址与公有IP地址之间的转换,利用转换后的地址将数据包发送出去;本发明还公开了一种NAT实现方法及Openflow交换机,利用本发明,只需将流表和改进组表一次发送给Openflow交换机,无需Openflow交换机和Controller进行频繁交互,缩短数据包转发时延,提高网络传输效率。
文档编号H04L29/12GK103067534SQ201210574680
公开日2013年4月24日 申请日期2012年12月26日 优先权日2012年12月26日
发明者马苏安, 汪军 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1