CN108810182A - 一种基于openflow系统的NAT流表动态学习及配置方法 - Google Patents
一种基于openflow系统的NAT流表动态学习及配置方法 Download PDFInfo
- Publication number
- CN108810182A CN108810182A CN201810398583.6A CN201810398583A CN108810182A CN 108810182 A CN108810182 A CN 108810182A CN 201810398583 A CN201810398583 A CN 201810398583A CN 108810182 A CN108810182 A CN 108810182A
- Authority
- CN
- China
- Prior art keywords
- nat
- openflow
- flow table
- exchange chip
- systems
- 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
- 238000000034 method Methods 0.000 title claims abstract description 28
- 238000004321 preservation Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000004891 communication Methods 0.000 abstract description 2
- 238000012545 processing Methods 0.000 description 3
- 238000000429 assembly Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/08—Learning-based routing, e.g. using neural networks or artificial intelligence
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及网络通信技术领域,具体公开了一种基于openflow系统的NAT流表动态学习及配置方法,所述OpenFlow系统中包括OpenFlow控制器和OpenFlow交换机,所述方法应用于所述OpenFlow交换机,所述OpenFlow交换机包括相互连接的交换芯片和CPU,本发明是将用户或控制器下发的需要NAT的流表,在交换芯片不能直接进行NAT的情况下,根据报文内容学习并转换为交换芯片支持的NAT流表的配置方法,使用该方法后,用户无需关心交换芯片NAT功能特性的限制,可以根据用户需求下发需要的NAT流表,达到线速转发要求。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种基于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结构中,便于后期删除时使用。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (9)
1.一种基于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中重新处理,保证报文不被丢弃。
2.根据权利要求1所述的基于openflow系统的NAT流表动态学习及配置方法,其特征在于:所述步骤S2中的流表数据结构是使用hashmap方式维护。
3.根据权利要求2所述的基于openflow系统的NAT流表动态学习及配置方法,其特征在于:所述步骤S2中的流表数据结构是使用两级hashmap方式维护。
4.根据权利要求3所述的基于openflow系统的NAT流表动态学习及配置方法,其特征在于:所述步骤S1中是通过判断流表的match和action字段是否为交换芯片支持的NAT特性。
5.根据权利要求4所述的基于openflow系统的NAT流表动态学习及配置方法,其特征在于,所述步骤S2中具体包括以下过程:将步骤S1中下发的原始流表的match和action字段保存到hashmap结构中,同时修改action为上CPU,并将修改后的流表配置到交换芯片中,等待符合match条件的报文上CPU后学习。
6.根据权利要求5所述的基于openflow系统的NAT流表动态学习及配置方法,其特征在于:所述步骤S2中还包括对修改后的流表分配规则标识符。
7.根据权利要求6所述的基于openflow系统的NAT流表动态学习及配置方法,其特征在于,所述步骤S3具体包括以下过程:收到上CPU的报文后,从报文包头中取出依赖交换芯片NAT时的必需字段,和原有的match和action重新组装后,将新的流表规则配置到交换芯片中。
8.根据权利要求7所述的基于openflow系统的NAT流表动态学习及配置方法,其特征在于:所述步骤S3中还包括根据规则标识符查找hashmap结构中保存的需要NAT的流表。
9.根据权利要求7所述的基于openflow系统的NAT流表动态学习及配置方法,其特征在于:所述步骤S3中还包括将新的流表保存到hashmap的子hashmap结构中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810398583.6A CN108810182B (zh) | 2018-04-28 | 2018-04-28 | 一种基于openflow系统的NAT流表动态学习及配置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810398583.6A CN108810182B (zh) | 2018-04-28 | 2018-04-28 | 一种基于openflow系统的NAT流表动态学习及配置方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108810182A true CN108810182A (zh) | 2018-11-13 |
CN108810182B CN108810182B (zh) | 2021-05-18 |
Family
ID=64093080
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810398583.6A Expired - Fee Related CN108810182B (zh) | 2018-04-28 | 2018-04-28 | 一种基于openflow系统的NAT流表动态学习及配置方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108810182B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111314498A (zh) * | 2020-01-21 | 2020-06-19 | 山东汇贸电子口岸有限公司 | 网络地址转换方法和nat网关 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012128282A1 (ja) * | 2011-03-23 | 2012-09-27 | 日本電気株式会社 | 通信制御システム、スイッチノード、及び通信制御方法 |
CN103067534A (zh) * | 2012-12-26 | 2013-04-24 | 中兴通讯股份有限公司 | 一种NAT实现系统、方法及Openflow交换机 |
CN103428094A (zh) * | 2013-08-12 | 2013-12-04 | 杭州华三通信技术有限公司 | 开放流OpenFlow系统中的报文转发方法及装置 |
CN104168222A (zh) * | 2014-07-15 | 2014-11-26 | 杭州华三通信技术有限公司 | 一种报文传输方法和设备 |
CN104378298A (zh) * | 2013-08-16 | 2015-02-25 | 中兴通讯股份有限公司 | 一种流表条目生成方法及相应设备 |
CN104601432A (zh) * | 2014-12-31 | 2015-05-06 | 杭州华三通信技术有限公司 | 一种报文传输方法和设备 |
CN106101298A (zh) * | 2016-06-06 | 2016-11-09 | 刘昱 | 基于sdn的网络地址转换装置及方法 |
-
2018
- 2018-04-28 CN CN201810398583.6A patent/CN108810182B/zh not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012128282A1 (ja) * | 2011-03-23 | 2012-09-27 | 日本電気株式会社 | 通信制御システム、スイッチノード、及び通信制御方法 |
CN103067534A (zh) * | 2012-12-26 | 2013-04-24 | 中兴通讯股份有限公司 | 一种NAT实现系统、方法及Openflow交换机 |
CN103428094A (zh) * | 2013-08-12 | 2013-12-04 | 杭州华三通信技术有限公司 | 开放流OpenFlow系统中的报文转发方法及装置 |
CN104378298A (zh) * | 2013-08-16 | 2015-02-25 | 中兴通讯股份有限公司 | 一种流表条目生成方法及相应设备 |
CN104168222A (zh) * | 2014-07-15 | 2014-11-26 | 杭州华三通信技术有限公司 | 一种报文传输方法和设备 |
CN104601432A (zh) * | 2014-12-31 | 2015-05-06 | 杭州华三通信技术有限公司 | 一种报文传输方法和设备 |
CN106101298A (zh) * | 2016-06-06 | 2016-11-09 | 刘昱 | 基于sdn的网络地址转换装置及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111314498A (zh) * | 2020-01-21 | 2020-06-19 | 山东汇贸电子口岸有限公司 | 网络地址转换方法和nat网关 |
CN111314498B (zh) * | 2020-01-21 | 2022-05-24 | 浪潮云信息技术股份公司 | 网络地址转换方法和nat网关 |
Also Published As
Publication number | Publication date |
---|---|
CN108810182B (zh) | 2021-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104601432B (zh) | 一种报文传输方法和设备 | |
EP3142310B1 (en) | Method, device, and system for configuring flow entries | |
US9444743B2 (en) | Network system, switch and connected terminal detection method | |
US20160234097A1 (en) | Packet forwarding in software defined networking | |
RU2661768C2 (ru) | Способ воплощения arp, устройство коммутатора и модуль управления | |
EP3292661B1 (en) | Packet forwarding | |
CN104780088A (zh) | 一种业务报文的传输方法和设备 | |
JPWO2014136864A1 (ja) | パケット書換装置、制御装置、通信システム、パケット送信方法及びプログラム | |
WO2018001242A1 (zh) | 一种数据报文处理方法及装置 | |
CN109218301A (zh) | 多协议间软件定义的帧头映射的方法和装置 | |
EP3292663B1 (en) | Packet forwarding | |
RU2013114830A (ru) | Устройство управления, система связи, способ связи и носитель записи с записанной на нем программой связи | |
WO2015014187A1 (zh) | 一种支持多租户的数据转发方法和装置 | |
CN104301246A (zh) | 基于sdn的大流负载均衡转发方法及装置 | |
EP3292660B1 (en) | Packet forwarding in a vxlan switch | |
WO2016101510A1 (zh) | 获取nat信息的方法及bras设备 | |
CN108810182A (zh) | 一种基于openflow系统的NAT流表动态学习及配置方法 | |
WO2016119269A1 (zh) | 一种业务流数据包的处理方法及装置 | |
CN100479457C (zh) | 一种实现虚拟私有网络中数据传输的方法 | |
US20170237691A1 (en) | Apparatus and method for supporting multiple virtual switch instances on a network switch | |
US20130077530A1 (en) | Scaling IPv6 on Multiple Devices Virtual Switching System with Port or Device Level Aggregation | |
CN110753135A (zh) | 一种ip地址配置方法、配置设备及存储介质 | |
CN102546348A (zh) | 一种网络处理器实现多种三层接口的方法和网络处理器 | |
CN102647347A (zh) | 实现基于连接的流量的处理方法及系统 | |
CN104821914A (zh) | 跨多链路透明连接trill网络的报文转发方法和设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210518 |