CN103825976B - 分布式系统架构中的nat处理方法及装置 - Google Patents

分布式系统架构中的nat处理方法及装置 Download PDF

Info

Publication number
CN103825976B
CN103825976B CN201410076425.0A CN201410076425A CN103825976B CN 103825976 B CN103825976 B CN 103825976B CN 201410076425 A CN201410076425 A CN 201410076425A CN 103825976 B CN103825976 B CN 103825976B
Authority
CN
China
Prior art keywords
nat
address
message
index
business board
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.)
Active
Application number
CN201410076425.0A
Other languages
English (en)
Other versions
CN103825976A (zh
Inventor
岳炳词
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Security Technologies Co Ltd
Original Assignee
New H3C Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by New H3C Technologies Co Ltd filed Critical New H3C Technologies Co Ltd
Priority to CN201410076425.0A priority Critical patent/CN103825976B/zh
Publication of CN103825976A publication Critical patent/CN103825976A/zh
Application granted granted Critical
Publication of CN103825976B publication Critical patent/CN103825976B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

本申请公开了一种分布式系统架构中的NAT处理方法及装置,其中,该方法中包括:接口板上的硬件可编程逻辑器件在接收到需要进行NAT的报文之后,从分流表中查找该报文对应的NAT类型、NAT地址映射表的索引和业务板索引;若查找到的业务板索引的值为空,则在查找到的NAT类型中包括的NAT方向是正向NAT时,从查找到的NAT地址映射表的索引所指示的NAT地址映射表中,为该报文获取NAT后的IP地址;并按照预定算法对该报文的相关信息进行运算,根据得到的运算值,从分布式映射表中查找到对应的业务板索引;将该报文、获取的NAT后的IP地址、以及查找到的NAT类型,发送给查找到的业务板索引所指示的业务板,以便该业务板上的硬件可编程逻辑器件对该报文进行地址转换。

Description

分布式系统架构中的NAT处理方法及装置
技术领域
本申请涉及网络通信技术领域,特别涉及一种分布式系统架构中的NAT处理方法及装置。
背景技术
NAT(Network Address Translation,网络地址转换)是将IP(InternetProtocol,因特网协议)数据报文的头部中的IP地址(源IP地址或目的IP地址)转换为另一个IP地址的过程。NAT的实现方式主要有一对一的NAT和多对一的NAT。一对一的NAT是指转换前的IP地址和转换后的IP地址一一对应。而多对一的NAT是指多个不同的IP地址可以转换为同一IP地址。
如图1所示,在内网和外网之间设置有NAT设备,内网中有主机A和主机B,两者的IP地址分别是192.168.1.2、192.168.1.3。主机A访问外网中的服务器时,会分别发出源地址为192.168.1.2的报文1,主机B访问该服务器时,会发出源地址为192.168.1.3的报文2。NAT设备接收到报文1和报文2时,会按照预定ACL规则,对报文1和报文2中的源IP地址进行NAT,都转换为了IP地址20.1.1.1,并且改变了源端口。
为了提高性能和可靠性等,用于实现NAT的网络设备,例如,路由器、防火墙等,可以采用如图2所示的分布式系统架构,在这种分布式系统架构中包括:控制板、至少一个接口板和多个业务板。此时,在如图2所示的分布式系统架构中时,需要采用分布式处理方式实现NAT,即,多个业务板各自独立地并行进行NAT处理。但是,在现有技术实现NAT分布式处理时,是通过软件来实现的,软件的处理速度会受到软件代码、以及CPU(中央处理器)软件的处理性能等的限制,因此,软件的处理速度较慢,使得现有的NAT分布式处理性能较差。
发明内容
本申请提供了一种分布式系统架构中的NAT处理方法及装置,旨在解决现有技术中存在的NAT处理性能较差的问题。
本申请的技术方案如下:
一方面,提供了一种分布式系统架构中的NAT处理方法,分布式系统架构中包括:接口板和至少两个业务板,该方法包括:
接口板上的硬件可编程逻辑器件在接收到需要进行NAT的报文之后,从分流表中查找该报文对应的NAT类型、NAT地址映射表的索引和业务板索引;其中,NAT类型中包括:NAT方向和需要转换的IP地址类型;
若查找到的业务板索引的值为空,则在查找到的NAT类型中包括的NAT方向是正向NAT时,接口板上的硬件可编程逻辑器件从查找到的NAT地址映射表的索引所指示的NAT地址映射表中,为该报文获取NAT后的IP地址;并按照预定算法对该报文的相关信息进行运算,根据得到的运算值,从分布式映射表中查找到对应的业务板索引;其中,分流表、NAT地址映射表和分布式映射表保存在接口板上的硬件可编程逻辑器件中;
接口板上的硬件可编程逻辑器件将该报文、获取的NAT后的IP地址、以及查找到的NAT类型,发送给查找到的业务板索引所指示的业务板,以便该业务板上的硬件可编程逻辑器件根据获取的NAT后的IP地址、以及该NAT类型对该报文进行地址转换。
另一方面,还提供了一种分布式系统架构中的NAT处理装置,分布式系统架构中包括:接口板和至少两个业务板,该装置应用于接口板上的硬件可编程逻辑器件,该装置包括:
接收模块,用于接收需要进行NAT的报文;
确定模块,用于在接收到需要进行NAT的报文之后,从分流表中查找该报文对应的NAT类型、NAT地址映射表的索引和业务板索引;其中,NAT类型中包括:NAT方向和需要转换的IP地址类型;
获取模块,用于若确定模块查找到的业务板索引的值为空,则在确定模块查找到的NAT类型中包括的NAT方向是正向NAT时,从确定模块查找到的NAT地址映射表的索引所指示的NAT地址映射表中,为该报文获取NAT后的IP地址;
运算模块,用于在获取模块获取到NAT后的IP地址之后,按照预定算法对该报文的相关信息进行运算;
查找模块,用于根据运算模块得到的运算值,从分布式映射表中查找到对应的业务板索引;
发送模块,用于若确定模块查找到的业务板索引的值为空,则在确定模块查找到的NAT类型中包括的NAT方向是正向NAT时,将接收模块接收到的报文、获取模块获取的NAT后的IP地址、以及确定模块查找到的NAT类型,发送给查找模块查找到的业务板索引所指示的业务板,以便该业务板上的硬件可编程逻辑器件根据获取的NAT后的IP地址、以及该NAT类型对该报文进行地址转换;
保存模块,用于保存分流表、NAT地址映射表和分布式映射表。
本申请的以上技术方案中,在分布式系统架构中,在接口板和业务板上设置硬件可编程逻辑器件,通过这些硬件可编程逻辑器件共同实现NAT的分布式处理,由于硬件的处理速度比软件快很多,而且,硬件要处理的任务单一,具有更高的处理性能,因此,提高了分布式系统的NAT处理能力,能够满足对NAT处理性能的更高需求。
附图说明
图1是实现NAT的网络示意图;
图2是分布式系统架构的结构示意图;
图3是本申请一实施例的分布式系统架构中的NAT处理方法的流程图;
图4是本申请一实施例的根据运算值获取对应的业务板索引的方法的流程图;
图5是本申请另一实施例的分布式系统架构中的NAT处理方法的具体处理流程图;
图6是本申请又一实施例的分布式系统架构中的NAT处理装置的结构示意图。
具体实施方式
为了解决现有技术中存在的NAT处理性能较差的问题,本申请以下实施例中提供了一种分布式系统架构中的NAT处理方法,以及一种可以应用该方法的装置。
本申请以下实施例的方法及装置,可以应用于如图2所示的分布式系统架构中。其中,每一个接口板和每一个业务板中均设置有硬件可编程逻辑器件,用于共同实现NAT处理。在实际实施过程中,硬件可编程逻辑器件例如可以是FPGA(Field Programmable GateArray,现场可编程门阵列)、CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)、ASIC(Application Specific Integrated Circuit,专用集成电路)芯片等,本申请对此不做限定。
本申请一具体实施例中,分布式系统架构中的NAT处理方法由接口板上的硬件可编程逻辑器件来执行。如图3所示,该方法中包括以下步骤:
步骤S102,接口板上的硬件可编程逻辑器件在接收到需要进行NAT的报文之后,从分流表中查找该报文对应的NAT类型、NAT地址映射表的索引和业务板索引;其中,NAT类型中包括:NAT方向和需要转换的IP地址类型;之后执行步骤S104;
接口板上的端口接收到报文后,将该报文发送给接口板上的硬件可编程逻辑器件,之后该硬件可编程逻辑器件会执行步骤S102。接口板上的硬件可编程逻辑器件上预先保存有如表1-1所示的分流表,该分流表根据用户配置的NAT规则进行创建,预先创建该分流表的过程如下:预先在接口板上的硬件可编程逻辑器件中创建如表1-1所示的分流表,其中,该分流表的每一个表项中包含有:转换前的IP地址、包括正向NAT和需要转换的IP地址类型的NAT类型、转换后的IP地址所在的NAT地址映射表的索引、与业务板索引之间的对应关系,该业务板索引的值为空。
这样,在步骤S102中,接口板上的硬件可编程逻辑器件会根据该报文的源IP地址或目的IP地址,从分流表中查找到对应的NAT类型、NAT地址映射表的索引和业务板索引。
其中,NAT类型中包括:NAT方向和需要转换的IP地址类型,NAT方向是正向NAT或反向NAT,需要转换的IP地址类型是源IP地址或目的IP地址。关于正向NAT和反向NAT的定义是:首次匹配NAT规则时执行的NAT为正向NAT,执行正向NAT的报文为正向报文;正向报文的回应报文是反向报文,反向报文执行的NAT为反向NAT。
可见,在初始创建的分流表中会记录有每一个正向报文的转换前的源或目的IP地址、该正向报文需要执行的NAT的NAT类型:正向NAT和需要转换的IP地址类型、NAT地址映射表的索引、以及业务板索引,该NAT地址映射表的索引是该正向报文的转换后的源或目的IP地址所在的NAT地址映射表的索引。
表1-1
在如表1-1所示的分流表中,NAT类型中可以使用两个字节来分别存储NAT方向和需要转换的IP地址类型。
步骤S104,判断在步骤S102中查找到的业务板索引的值是否为空,若是,
则执行步骤S106,否则,执行步骤S118;
步骤S106,判断在步骤S102中查找到的NAT类型中包括的NAT方向是否是正向NAT,若是,则执行步骤S108,否则,执行步骤S114;
步骤S108,从在步骤S102中查找到的NAT地址映射表的索引所指示的NAT地址映射表中,为该报文获取NAT后的IP地址;之后执行步骤S110;
在步骤S108中,为该报文获取到NAT后的IP地址之后,还需要执行以下步骤:在如表1-1所示的分流表中添加一表项,添加的表项中包含有:步骤S108中获取到的NAT后的IP地址、包括反向NAT和需要转换的IP地址类型的NAT类型、NAT地址映射表的索引、与业务板索引之间的对应关系;此时,如表1-1所示的分流表更新为如表1-2所示。
其中,当步骤S102中查找到的NAT类型中包括的需要转换的IP地址类型是源IP地址时,该添加的表项中的需要转换的IP地址类型是目的IP地址,当步骤S102中查找到的NAT类型中包括的需要转换的IP地址类型是目的IP地址时,该添加的表项中的需要转换的IP地址类型是源IP地址;该添加的表项中的NAT地址映射表的索引和业务板索引的值为空。
表1-2
如表1-2所示,分流表中还会记录有每一个反向报文的源或目的IP地址、该反向报文需要执行的NAT的NAT类型:反向NAT和需要转换的IP地址类型、NAT地址映射表的索引、以及业务板索引,由于只有正向NAT才需要从NAT地址映射表中获取一个IP地址,作为NAT后的源或目的IP地址,因此,在分流表中,正向报文对应的表项中的NAT地址映射表的索引才不为空,而反向报文对应的表项中的NAT地址映射表的索引为空。
而且,当一个正向报文对应的需要转换的IP地址类型是源IP地址时,该正向报文的反向报文对应的需要转换的IP地址类型是目的IP地址;当一个正向报文对应的需要转换的IP地址类型是目的IP地址时,该正向报文的反向报文对应的需要转换的IP地址类型是源IP地址。
在实际实施过程中,在步骤S108之前,需要预先创建各个NAT地址映射表。具体的,可以包括以下步骤:
步骤11:硬件可编程逻辑器件驱动(软件)接收到用户的配置信息,其中,该配置信息中包括:创建NAT地址池以及该NAT地址池中的IP地址范围;
步骤12:硬件可编程逻辑器件驱动将该NAT地址池的相关信息和用于指示创建的操作命令,发送给接口板上的硬件可编程逻辑器件;
步骤13:接口板上的硬件可编程逻辑器件根据该操作命令,在本地创建一NAT地址映射表,用于记录该NAT地址池中的所有IP地址,为需要进行NAT的正向报文提供NAT后的IP地址。
该NAT地址映射表的格式可以如表2所示:
表2
在表2中,CurNatAddrIdx是地址指针,用于指示当前要选择的IP地址的索引,其长度可以是16bit(比特);CurNatAddrIdx的初始值为1;每次为一个需要进行NAT的报文获取IP地址时,将CurNatAddrIdx的当前值n所指向的NatAddr分配给该报文,之后,将CurNatAddrIdx的当前值n更新为(n+1)%N;其中,N为该NAT地址映射表中的IP地址的总数;
NatAddrNum是该NAT地址映射表中的IP地址的总数N,也是对应的NAT地址池中的IP地址的总数N;NatAddrNum的长度可以是16bit;
NatAddr是NAT地址池中的IP地址,其长度可以是32bit;NAT地址映射表中的NatAddr的个数为N。
后续,当用户想要更新该NAT地址池时,例如,编辑该NAT地址池,删除该NAT地址池,还可以执行以下步骤:
步骤21:硬件可编程逻辑器件驱动接收到用户的配置信息,其中,该配置信息中包括:更新已经创建的NAT地址池;
步骤22:硬件可编程逻辑器件驱动将更新内容和用于指示更新的操作命令,发送给接口板上的硬件可编程逻辑器件;
步骤23:接口板上的硬件可编程逻辑器件根据该操作命令,更新对应的NAT地址映射表。
这样,步骤S108中从确定出的索引所指示的NAT地址映射表中,为该报文获取NAT后的IP地址的方法包括以下步骤:
步骤S202,从如表2所示的NAT地址映射表中,获取地址指针CurNatAddrIdx的当前值,记为n;
步骤S204,根据该当前值n,从该NAT地址映射表中查找到对应的IP地址NatAddr,作为为该报文获取的NAT后的IP地址;
由于NAT地址映射表中的IP地址NatAddr是顺序排列的,因此,可以根据该当前值n查找到对应的IP地址NatAddr。
步骤S206,将地址指针CurNatAddrIdx的当前值n更新为(n+1)%N,其中,n=1,2,...,N,%为取模运算符。
例如,如果N=100,则,CurNatAddrIdx的取值范围为1~100。
可见,会按照轮循方式将该NAT地址映射表中的各个IP地址分配给各个正向报文。
步骤S110,按照预定算法对该报文的相关信息进行运算,根据得到的运算值,从分布式映射表中查找到对应的业务板索引;之后执行步骤S112;
在步骤S110中,从分布式映射表中查找到对应的业务板索引之后,接口板上的硬件可编程逻辑器件还需要将如表1-2所示的分流表中与该报文对应的为空的业务板索引,更新为从分布式映射表中查找到的业务板索引的值,更新后的分流表如表1-3所示:
表1-3
其中,该预定算法例如可以是哈希(Hash)算法等,本申请对此不做限定。
对报文的相关信息进行Hash计算,可以把不同报文均衡地送到不同的业务板进行NAT。其中,报文的相关信息可以是IP地址、端口标识(ID)、协议号等。
步骤S112,将该报文、步骤S108中获取到的NAT后的IP地址、以及步骤S102中查找到的NAT类型,发送给步骤S110中查找到的业务板索引所指示的业务板;结束本流程;
该业务板上的硬件可编程逻辑器件接收到接口板上的硬件可编程逻辑器件发来的报文、NAT后的IP地址、NAT类型之后,根据该NAT后的IP地址以及NAT类型,对该报文进行地址转换。
具体的,当该NAT类型中包括的需要转换的IP地址类型是源IP地址时,将该报文的源IP地址转换为步骤S108中获取到的NAT后的IP地址,将转换前的五元组信息与转换后的五元组信息之间的对应关系记录到如表3所示的NAT地址转换表中;当该NAT类型中包括的需要转换的IP地址类型是目的IP地址时,将该报文的目的IP地址转换为步骤S108中获取到的NAT后的IP地址,将转换前的五元组信息与转换后的五元组信息之间的对应关系记录到如表3所示的NAT地址转换表中。
表3
步骤S114,按照上述预定算法对该报文的相关信息进行运算,根据得到的运算值,从分布式映射表中查找到对应的业务板索引;之后执行步骤S116;
该步骤S114中的预定算法与步骤S110中的预定算法相同。
在步骤S114中,从分布式映射表中查找到对应的业务板索引之后,接口板上的硬件可编程逻辑器件还需要将如表1-3所示的分流表中与该报文对应的为空的业务板索引,更新为从分布式映射表中查找到的业务板索引的值,更新后的分流表如表1-4所示:
表1-4
步骤S116,将该报文发送给步骤S114中查找到的业务板索引所指示的业务板;结束本流程;
该业务板上的硬件可编程逻辑器件接收到接口板上的硬件可编程逻辑器件发来的该报文之后,会对该报文进行地址转换。
具体的,根据该报文的五元组信息从如表3所示的NAT地址转换表中查找到对应的五元组信息,将该报文的五元组信息转换为查找到的五元组信息。
步骤S118,接口板上的硬件可编程逻辑器件将该报文发送给步骤S102中查找到的业务板索引所指示的业务板;结束本流程。
该业务板上的硬件可编程逻辑器件接收到接口板上的硬件可编程逻辑器件发来的该报文之后,会对该报文进行地址转换。
具体的,根据该报文的五元组信息从如表3所示的NAT地址转换表中查找到对应的五元组信息,将该报文的五元组信息转换为查找到的五元组信息。
本申请实施例的技术方案中,在分布式系统架构中,在接口板和业务板上设置硬件可编程逻辑器件,通过这些硬件可编程逻辑器件共同实现NAT的分布式处理,由于硬件的处理速度比软件快很多,而且,硬件要处理的任务单一,具有更高的处理性能,因此,提高了分布式系统的NAT处理能力,能够满足对NAT处理性能的更高需求。
其中,在上述方法的步骤S110和步骤S114之前,还需要创建如表4所示的分布式映射表:
表4
Sel HandleIdx
以预定算法是Hash算法为例,分布式映射表的大小由Hash值的取值范围决定。假设,将Hash值记为HashIdx,HashIdx的取值范围设置为0~65535,则,分布式映射表的大小即为65536bytes(字节)。每一个表项对应于一个Hash值,占用1byte。每一个表项中均包括:Sel(选择)标志位和HandleIdx,其中,首bit为Sel标志位,后面的7个bit为HandleIdx。下面分别对Sel标志位和HandleIdx进行详细介绍。
Sel标志位:用于指示本表项中的HandleIdx是否为空,如果Sel的值置为0,则表示对应的HandleIdx为空,即,还没有为本表项对应的Hash值分配业务板,这时,需要根据业务板获取机制获取到业务板索引,然后把业务板索引添加到本表项中的HandleIdx中。如果Sel的值置为1,则表示对应的HandleIdx不为空,即,已经为本表项对应的Hash值分配了业务板,该业务板的索引就是本表项中的HandleIdx的值。
HandleIdx:是本表项对应的Hash值对应的业务板索引,当业务板的最大数量为128时,HandleIdx的取值范围为0~127。
在实际实施过程中,如表4所示的分布式映射表可以由一个大小为65536的数组来实现,数组中的每一个元素占用一个byte。例如,用一个字符数组来实现该分布式映射表,该字符数组用C语言表示为:
char mapping[65536]
此时,Hash值HashIdx与该字符数组下标一一对应。如:当HashIdx=21时,该HashIdx对应的表项为:mapping[21],该表项占用的1个字节中的首bit为Sel标志位,后面7bit为HandleIdx。
其中,在初始创建好如表4所示的分布式映射表之后,该分布式映射表中的各个表项中的Sel标志位均设置为0,对应的HandleIdx的值均为空,后续,当有需要进行NAT的报文后,接口板上的硬件可编程逻辑器件按照上述方法执行到步骤S108或步骤S112时,若根据得到的运算值(例如Hash值)从如表4所示的分布式映射表中查找到的对应表项中的Sel标志位为0,此时再按照业务板获取机制,为该运算值获取对应的业务板索引,并添加到该表项的HandleIdx中。其中,业务板获取机制的具体过程可以参见步骤S302~步骤S308,这里不再赘述。
由上,在步骤S108和步骤S112中,按照预定算法对该报文的相关信息进行运算的方法可以按照以下几种情况进行:
情况1:当确定出的NAT类型中包括的NAT方向是正向NAT,且该NAT类型中包括的需要转换的IP地址类型是源IP地址时,根据预定算法对该报文的第一相关信息进行运算;
情况2:当确定出的NAT类型中包括的NAT方向是反向NAT,且该NAT类型中包括的需要转换的IP地址类型是目的IP地址时,根据预定算法对该报文的第二相关信息进行运算;
在情况1和情况2中,当第一相关信息中包括:获取的NAT后的IP地址(即为NAT后的源IP地址)、该报文的目的IP地址和目的端口标识时,第二相关信息中包括:该报文的目的IP地址、源IP地址、源端口标识;当第一相关信息中包括:获取的NAT后的IP地址(即为NAT后的源IP地址)、该报文的目的IP地址、目的端口标识和协议号时,第二相关信息中包括:该报文的目的IP地址、源IP地址、源端口标识和协议号。
情况3:当确定出的NAT类型中包括的NAT方向是正向NAT,且该NAT类型中包括的需要转换的IP地址类型是目的IP地址时,根据预定算法对该报文的第三相关信息进行运算;
情况4:当确定出的NAT类型中包括的NAT方向是反向NAT,且该NAT类型中包括的需要转换的IP地址类型是源IP地址时,根据预定算法对该报文的第四相关信息进行运算;
在情况3和情况4中,当第三相关信息中包括:获取的NAT后的IP地址(即为NAT后的目的IP地址)、该报文的源IP地址、源端口标识时,第四相关信息中包括:该报文的源IP地址、目的IP地址、目的端口标识;当第三相关信息中包括:获取的NAT后的IP地址(即为NAT后的目的IP地址)、该报文的源IP地址、源端口标识和协议号时,第四相关信息中包括:该报文的源IP地址、目的IP地址、目的端口标识和协议号。
以该预定算法是Hash算法为例,在上述四种情况中,按照以下公式进行Hash运算:
正向NAT和转换源IP地址:Hash值SouHashIdx=FuncHash(NAT后的源IP地址,目的IP地址,目的端口标识);
反向NAT和转换目的IP地址:Hash值ReSouHashIdx=FuncHash(目的IP地址,源IP地址,源端口标识);
正向NAT和转换目的IP地址:Hash值DestHashIdx=FuncHash(NAT后的目的IP地址,源IP地址,源端口标识);
反向NAT和转换源IP地址:Hash值ReDestHashIdx=FuncHash(源IP地址,目的IP地址,目的端口标识);
或者,
正向NAT和转换源IP地址:Hash值SouHashIdx=FuncHash(NAT后的源IP地址,目的IP地址,目的端口标识,协议号);
反向NAT和转换目的IP地址:Hash值ReSouHashIdx=FuncHash(目的IP地址,源IP地址,源端口标识,协议号);
正向NAT和转换目的IP地址:Hash值DestHashIdx=FuncHash(NAT后的目的IP地址,源IP地址,源端口标识,协议号);
反向NAT和转换源IP地址:Hash值ReDestHashIdx=FuncHash(源IP地址,目的IP地址,目的端口标识,协议号)。
其中,FuncHash(x)表示Hash算法的函数。
由上可见,由于对应于反向NAT和转换目的IP地址的报文(为了描述方便,将这种报文称为第一反向报文)是对应于正向NAT和转换源IP地址的报文(为了描述方便,将这种报文称为第一正向报文)的回应报文,因此,第一反向报文中的源IP地址就是第一正向报文中的目的IP地址,第一反向报文中的目的IP地址就是第一正向报文中的NAT后的源IP地址,第一反向报文中的目的端口就是第一正向报文中的源端口,也就是说,在针对第一正向报文进行Hash运算时所依据的参数:NAT后的源IP地址、目的IP地址,目的端口标识,与在针对第一反向报文进行Hash运算时所依据的参数:目的IP地址、源IP地址、源端口标识,是相同的,故而,得到的Hash值也是相同的,根据Hash值查找到的业务板也是相同的,从而,能够保证一条数据流以及该数据流的回应数据流能够由同一业务板进行NAT处理,保证了来回路径的一致性。
同样,由于对应于反向NAT和转换源IP地址的报文(为了描述方便,将这种报文称为第二反向报文)是对应于正向NAT和转换目的IP地址的报文(为了描述方便,将这种报文称为第二正向报文)的回应报文,因此,第二反向报文中的源IP地址就是第二正向报文中的NAT后的目的IP地址,第二反向报文中的目的IP地址就是第二正向报文中的源IP地址,第二反向报文中的源端口就是第二正向报文中的目的端口,也就是说,在针对第二正向报文进行Hash运算时所依据的参数:NAT后的目的IP地址、源IP地址、源端口标识,与在针对第二反向报文进行Hash运算时所依据的参数:源IP地址、目的IP地址、目的端口标识,是相同的,故而,得到的Hash值也是相同的,从而,能够保证一条数据流以及该数据流的回应数据流能够由同一业务板进行NAT处理,保证了来回路径的一致性。
另外,由于一个报文以及该报文的回应报文中的协议号是不会改变的,因此,在上述四种情况中计算Hash值时,所依据的参数还可以包括协议号,此时,依然可以保证一条数据流以及该数据流的回应数据流能够由同一业务板进行NAT处理,保证来回路径的一致性。
另外,在步骤S108和步骤S112中,根据得到的运算值,从如表4所示的分布式映射表中查找到对应的业务板索引的方法,如图4所示,包括以下步骤:
步骤S302,从如表4所示的分布式映射表中查找到与该运算值(例如,Hash值)对应的表项;之后执行步骤S304;
步骤S304,判断查找到的表项中包括的业务板索引HandleIdx的值是否为空,若不为空,则执行步骤S306,否则,执行步骤S308;
具体的,判断查找到的表项中包括的Sel标志位的值是否为0,若是0,则说明该表项中的业务板索引HandleIdx的值为空,否则,说明该表项中的业务板索引HandleIdx的值不为空。
步骤S306,获取查找到的表项中的业务板索引HandleIdx的值;
步骤S308,获取本地保存的选择变量m,将查找到的表项中的业务板索引HandleIdx的值设置为(m+1)%M,获取该业务板索引的值(m+1)%M,将该选择变量m更新为m+1;其中,M为业务板总数,m=1,2,...,%为取模运算符。
例如,假设M=4,即,分布式系统架构中共有4块业务板,这4块业务板的索引分别为1,2,3,4。通过上述步骤S302~步骤S308,可以采用轮循方式依次选择这四个业务板中的一个业务板。
本申请实施例中,接口板和业务板上的硬件可编程逻辑器件为FPGA,如图5所示,NAT处理方法的具体流程包括如下步骤:
步骤S402,接口板上的FPGA在接收到需要进行NAT的报文之后,根据该报文的源IP地址或目的IP地址,从分流表中查找该报文对应的NAT类型、NAT地址映射表的索引、以及业务板索引;查找结果是查找到的业务板索引的值为空,则执行步骤S404;
步骤S404,判断查找到的NAT类型中包括的NAT方向是否为正向NAT,若是,则执行步骤S406,否则,执行步骤S414;
步骤S406,从查找到的NAT地址映射表的索引所指示的如表2所示的NAT地址映射表中,获取地址指针CurNatAddrIdx的当前值所指向的IP地址NatAddr,作为该报文的NAT后的IP地址;之后执行步骤S408;
步骤S408,判断查找到的NAT类型中包括的需要转换的IP地址类型是否为源IP地址,若是,则执行步骤S410,否则,执行步骤412;
步骤S410,按照以下公式计算Hash值HashIdx;之后执行步骤S420;
HashIdx=SouHashIdx=FuncHash(NAT后的源IP地址,目的IP地址,目的端口标识,协议号)
步骤S412,按照以下公式计算Hash值HashIdx;之后执行步骤S420;
HashIdx=DestHashIdx=FuncHash(NAT后的目的IP地址,源IP地址,源端口标识,协议号)
步骤S414,判断查找到的NAT类型中包括的需要转换的IP地址类型是否为源IP地址,若是,则执行步骤S416,否则,执行步骤418;
步骤S416,按照以下公式计算Hash值HashIdx;之后执行步骤S420;
HashIdx=ReDestHashIdx=FuncHash(源IP地址,目的IP地址,目的端口标识,协议号)
步骤S418,按照以下公式计算Hash值HashIdx;之后执行步骤S420;
HashIdx=ReSouHashIdx=FuncHash(目的IP地址,源IP地址,源端口标识,协议号)
步骤S420,从如表4所示的分布式映射表中,查找到与HashIdx对应的业务板索引HandleIdx的值;之后执行步骤S422;
步骤S422,将该报文和相关内容发送给查找到的HandleIdx的值所指示的业务板;之后执行步骤S424;
其中,如果是正向NAT,则将该报文、获取到的NAT后的IP地址、以及确定出的NAT类型,发送给该业务板;如果是反向NAT,则将该报文发送给该业务板。
步骤S424,业务板上的FPGA接收到该报文和相关内容后,根据该相关信息对该报文进行地址转换。
其中,业务板上的FPGA接收到该报文、获取到的NAT后的IP地址、以及确定出的NAT类型之后,当该NAT类型中包括的需要转换的IP地址类型是源IP地址时,将该报文的源IP地址转换为获取的NAT后的IP地址,将转换前的五元组信息与转换后的五元组信息之间的对应关系记录到如表3所示的NAT地址转换表中;当该NAT类型中包括的需要转换的IP地址类型是目的IP地址时,将该报文的目的IP地址转换为获取的NAT后的IP地址,将转换前的五元组信息与转换后的五元组信息之间的对应关系记录到如表3所示的NAT地址转换表中;
业务板上的FPGA接收到该报文之后,根据该报文的五元组信息从如表3所示的NAT地址转换表中查找到对应的五元组信息,将该报文的五元组信息转换为查找到的五元组信息。
本申请实施例中还提供一种可以应用该方法的装置,该装置应用于接口板的硬件可编程逻辑器件上。
如图6所示,该装置中可以包括以下模块:接收模块10、确定模块20、获取模块30、运算模块40、查找模块50、发送模块60和保存模块70,其中:
接收模块10,用于接收需要进行NAT的报文;
确定模块20,用于在接收模块10接收到需要进行NAT的报文之后,从分流表中查找该报文对应的NAT类型、NAT地址映射表的索引和业务板索引;其中,NAT类型中包括:NAT方向和需要转换的IP地址类型;
获取模块30,用于若确定模块20查找到的业务板索引的值为空,则在确定模块20查找到的NAT类型中包括的NAT方向是正向NAT时,从确定模块20查找到的NAT地址映射表的索引所指示的NAT地址映射表中,为该报文获取NAT后的IP地址;
运算模块40,用于在获取模块30获取到NAT后的IP地址之后,按照预定算法对该报文的相关信息进行运算;
查找模块50,用于根据运算模块40得到的运算值,从分布式映射表中查找到对应的业务板索引;
发送模块60,用于若确定模块20查找到的业务板索引的值为空,则在确定模块20查找到的NAT类型中包括的NAT方向是正向NAT时,将接收模块10接收到的报文、获取模块30获取的NAT后的IP地址、以及确定模块20查找到的NAT类型,发送给查找模块50查找到的业务板索引所指示的业务板,以便该业务板上的硬件可编程逻辑器件根据获取的NAT后的IP地址、以及该NAT类型对该报文进行地址转换;
保存模块70,用于保存分流表、NAT地址映射表和分布式映射表。
其中,NAT地址映射表中包括:地址指针和N个IP地址,该地址指针用于指示当前要选择的IP地址的索引,N为正整数;则,获取模块中包括:地址指针获取单元、IP地址查找单元和指针更新单元,其中:
地址指针获取单元,用于从确定模块确定出的索引所指示的NAT地址映射表中,获取地址指针的当前值n;
IP地址查找单元,用于根据地址指针获取单元获取到的当前值n,从该NAT地址映射表中查找到对应的IP地址,作为为该报文获取的NAT后的IP地址;
指针更新单元,用于将该NAT地址映射表中的地址指针的当前值n更新为(n+1)%N,其中,n=1,2,...,N,%为取模运算符。
另外,运算模块40,还用于若确定模块20查找到的业务板索引的值为空,则在确定模块20查找到的NAT类型中包括的NAT方向是反向NAT时,按照上述预定算法对该报文的相关信息进行运算;
发送模块60,还用于若确定模块20查找到的业务板索引的值为空,则在确定模块20查找到的NAT类型中包括的NAT方向是反向NAT时,将接收模块10接收到的报文发送给查找模块50查找到的业务板索引所指示的业务板,以便该业务板上的硬件可编程逻辑器件对该报文进行地址转换。
其中,运算模块中包括:第一运算单元和第二运算单元,其中:
第一运算单元,用于当确定模块查找到的NAT类型中包括的NAT方向是正向NAT,且该NAT类型中包括的需要转换的IP地址类型是源IP地址时,根据预定算法对该报文的第一相关信息进行运算;
第二运算单元,用于当确定模块查找到的NAT类型中包括的NAT方向是反向NAT,且该NAT类型中包括的需要转换的IP地址类型是目的IP地址时,根据预定算法对该报文的第二相关信息进行运算;
其中,当第一相关信息中包括:获取的NAT后的IP地址,该报文的目的IP地址和目的端口标识时,第二相关信息中包括:该报文的目的IP地址、源IP地址、源端口标识;
当第一相关信息中包括:获取的NAT后的IP地址,该报文的目的IP地址、目的端口标识和协议号时,第二相关信息中包括:该报文的目的IP地址、源IP地址、源端口标识和协议号。
另外,运算模块中还包括:第三运算单元和第四运算单元,其中:
第三运算单元,用于当确定模块查找到的NAT类型中包括的NAT方向是正向NAT,且该NAT类型中包括的需要转换的IP地址类型是目的IP地址时,根据预定算法对该报文的第三相关信息进行运算;
第四运算单元,用于当确定模块查找到的NAT类型中包括的NAT方向是反向NAT,且该NAT类型中包括的需要转换的IP地址类型是源IP地址时,根据预定算法对该报文的第四相关信息进行运算;
其中,当第三相关信息中包括:获取的NAT后的IP地址,该报文的源IP地址、源端口标识时,第四相关信息中包括:该报文的源IP地址、目的IP地址、目的端口标识;
当第三相关信息中包括:获取的NAT后的IP地址,该报文的源IP地址、源端口标识和协议号时,第四相关信息中包括:该报文的源IP地址、目的IP地址、目的端口标识和协议号。
其中,查找模块中包括:表项查找单元、判断单元、索引值获取单元,其中:
表项查找单元,用于从分布式映射表中查找到与该运算值对应的表项,其中,分布式映射表的每一个表项中包括:业务板索引;
判断单元,用于判断表项查找单元查找到的表项中包括的业务板索引的值是否为空;
索引值获取单元,用于若判断单元的判断结果是不为空,则获取表项查找单元查找到的表项中的业务板索引的值;还用于若判断单元的判断结果是为空,则获取本地保存的选择变量m,将表项查找单元查找到的表项中的业务板索引的值设置为(m+1)%M,获取该业务板索引的值(m+1)%M,将该选择变量m更新为m+1;其中,M为业务板总数,m=1,2,...,%为取模运算符。
另外,该装置中还包括:分流表更新模块,其中:分流表更新模块,用于在查找模块从分布式映射表中查找到对应的业务板索引之后,将分流表中与该报文对应的为空的业务板索引,更新为从分布式映射表中查找到的业务板索引的值;发送模块,还用于若确定模块查找到的业务板索引的值不为空,则将接收模块接收到的报文发送给确定模块查找到的业务板索引所指示的业务板,以便该业务板上的硬件可编程逻辑器件对该报文进行地址转换。
另外,该装置中还包括:分流表创建模块,其中:
分流表创建模块,用于预先在保存模块中创建分流表,其中,分流表的每一个表项中包含有:转换前的IP地址、包括正向NAT和需要转换的IP地址类型的NAT类型、转换后的IP地址所在的NAT地址映射表的索引、与业务板索引之间的对应关系,该业务板索引的值为空;
分流表更新模块,用于在获取模块为该报文获取到NAT后的IP地址之后,在分流表中添加一表项,添加的表项中包含有:获取模块获取到的NAT后的IP地址、包括反向NAT和需要转换的IP地址类型的NAT类型、NAT地址映射表的索引、与业务板索引之间的对应关系;其中,当确定模块查找到的NAT类型中包括的需要转换的IP地址类型是源IP地址时,该添加的表项中的需要转换的IP地址类型是目的IP地址,当确定模块查找到的NAT类型中包括的需要转换的IP地址类型是目的IP地址时,该添加的表项中的需要转换的IP地址类型是源IP地址;该添加的表项中的NAT地址映射表的索引和业务板索引的值为空。
另外,业务板上的硬件可编程逻辑器件中包括以下模块:
接收模块,用于接收接口板上的硬件可编程逻辑器件发来的报文、NAT后的IP地址、以及NAT类型;还用于接收接口板上的硬件可编程逻辑器件发来的报文;
地址转换模块,用于在接收模块接收到上述报文、NAT后的IP地址、以及NAT类型之后,当该NAT类型中包括的需要转换的IP地址类型是源IP地址时,将该报文的源IP地址转换为该NAT后的IP地址,将转换前的五元组信息与转换后的五元组信息之间的对应关系记录到NAT地址转换表中;当该NAT类型中包括的需要转换的IP地址类型是目的IP地址时,将该报文的目的IP地址转换为该NAT后的IP地址,将转换前的五元组信息与转换后的五元组信息之间的对应关系记录到NAT地址转换表中;还用于在接收模块接收到上述报文之后,根据该报文的五元组信息从NAT地址转换表中查找到对应的五元组信息,将该报文的五元组信息转换为查找到的五元组信息。
显然,本领域技术人员可以将上述功能模块实现于现有的硬件可编程逻辑器件,如FPGA上。
综上,本申请以上实施例可以达到以下技术效果:
(1)在分布式系统架构中,在接口板和业务板上设置硬件可编程逻辑器件,通过这些硬件可编程逻辑器件共同实现NAT的分布式处理,由于硬件的处理速度比软件快很多,而且,硬件要处理的任务单一,具有更高的处理性能,因此,提高了分布式系统的NAT处理能力,能够满足对NAT处理性能的更高需求。
(2)利用需要进行NAT的报文的IP地址、端口标识、协议号等信息来决定将需要进行NAT的报文分发到分布式系统的哪一块业务板上,可以比较均衡地将不同数据流的报文分发到不同业务板上进行地址转换。
另外,接口板上的硬件可编程逻辑器件统一为所有正向报文(即对应于正向NAT的报文)分配IP地址作为NAT后的IP地址,而且,在针对对应于正向NAT和需要转换源IP地址的第一正向报文计算Hash值时所依据的参数,以及在针对反向NAT和需要转换目的IP地址的第一反向报文(即第一正向报文的回应报文)计算Hash值时所依据的参数,是相同的,因此,得到的Hash值也是相同的,从而,根据Hash值查找到的业务板也是相同的,从而,能够保证一条数据流以及该数据流的回应数据流能够由同一业务板进行NAT处理,保证了来回路径的一致性,增加了分布式系统的NAT处理容量。
同样,在针对对应于正向NAT和需要转换目的IP地址的第二正向报文计算Hash值时所依据的参数,以及在针对反向NAT和需要转换源IP地址的第二反向报文(即第二正向报文的回应报文)计算Hash值时所依据的参数,是相同的,因此,得到的Hash值也是相同的,从而,根据Hash值查找到的业务板也是相同的,从而,能够保证一条数据流以及该数据流的回应数据流能够由同一业务板进行NAT处理,保证了来回路径的一致性,增加了分布式系统的NAT处理容量。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (16)

1.一种分布式系统架构中的网络地址转换NAT处理方法,所述分布式系统架构中包括:接口板和至少两个业务板,其特征在于,所述方法包括:
接口板上的硬件可编程逻辑器件在接收到需要进行NAT的报文之后,从分流表中查找该报文对应的NAT类型、NAT地址映射表的索引和业务板索引;其中,NAT类型中包括:NAT方向和需要转换的IP地址类型;
若查找到的业务板索引的值为空,则在查找到的NAT类型中包括的NAT方向是正向NAT时,接口板上的硬件可编程逻辑器件从查找到的NAT地址映射表的索引所指示的NAT地址映射表中,为该报文获取NAT后的因特网协议IP地址;在查找到的NAT类型中包括的需要转换的IP地址类型是源IP地址时,按照预定算法对该报文的第一相关信息进行运算,根据得到的运算值,从分布式映射表中查找到对应的业务板索引;在查找到的NAT类型中包括的需要转换的IP地址类型是目的IP地址时,按照预定算法对该报文的第三相关信息进行运算,根据得到的运算值,从分布式映射表中查找到对应的业务板索引;其中,所述分流表、所述NAT地址映射表和所述分布式映射表保存在所述接口板上的硬件可编程逻辑器件中;其中,
接口板上的硬件可编程逻辑器件将该报文、获取的NAT后的IP地址、以及查找到的NAT类型,发送给查找到的业务板索引所指示的业务板,以便该业务板上的硬件可编程逻辑器件根据所述获取的NAT后的IP地址、以及该NAT类型对该报文进行地址转换。
2.根据权利要求1所述的方法,其特征在于,所述NAT地址映射表中包括:地址指针和N个IP地址,所述地址指针用于指示当前要选择的IP地址的索引,N为正整数;则,从查找到的NAT地址映射表的索引所指示的NAT地址映射表中,为该报文获取NAT后的IP地址的方法包括:
从该NAT地址映射表中,获取地址指针的当前值n;
根据该当前值n,从该NAT地址映射表中查找到对应的IP地址,作为为该报文获取的NAT后的IP地址;
将地址指针的当前值n更新为(n+1)%N,其中,n=1,2,...,N,%为取模运算符。
3.根据权利要求1所述的方法,其特征在于,在查找该报文对应的NAT类型、NAT地址映射表的索引和业务板索引之后,还包括:
若查找到的业务板索引的值为空,则在查找到的NAT类型中包括的NAT方向是反向NAT时,接口板上的硬件可编程逻辑器件按照所述预定算法对该报文的相关信息进行运算,根据得到的运算值,从所述分布式映射表中查找到对应的业务板索引;
接口板上的硬件可编程逻辑器件将该报文发送给查找到的业务板索引所指示的业务板,以便该业务板上的硬件可编程逻辑器件对该报文进行地址转换。
4.根据权利要求3所述的方法,其特征在于,该方法还包括:
在查找到的NAT类型中包括的NAT方向是反向NAT,且该NAT类型中包括的需要转换的IP地址类型是目的IP地址时,根据所述预定算法对该报文的第二相关信息进行运算;
其中,当第一相关信息中包括:获取的NAT后的IP地址,该报文的目的IP地址和目的端口标识时,第二相关信息中包括:该报文的目的IP地址、源IP地址、源端口标识;
当第一相关信息中包括:获取的NAT后的IP地址,该报文的目的IP地址、目的端口标识和协议号时,第二相关信息中包括:该报文的目的IP地址、源IP地址、源端口标识和协议号。
5.根据权利要求3所述的方法,其特征在于,该方法还包括:
在查找到的NAT类型中包括的NAT方向是反向NAT,且该NAT类型中包括的需要转换的IP地址类型是源IP地址时,根据所述预定算法对该报文的第四相关信息进行运算;
其中,当第三相关信息中包括:获取的NAT后的IP地址,该报文的源IP地址、源端口标识时,第四相关信息中包括:该报文的源IP地址、目的IP地址、目的端口标识;
当第三相关信息中包括:获取的NAT后的IP地址,该报文的源IP地址、源端口标识和协议号时,第四相关信息中包括:该报文的源IP地址、目的IP地址、目的端口标识和协议号。
6.根据权利要求3、4或5所述的方法,其特征在于,所述根据得到的运算值,从分布式映射表中查找到对应的业务板索引的方法包括:
从所述分布式映射表中查找到与该运算值对应的表项,其中,所述分布式映射表的每一个表项中包括:业务板索引;
判断查找到的表项中包括的业务板索引的值是否为空;
若不为空,则获取所述查找到的表项中的业务板索引的值;
若为空,则获取本地保存的选择变量m,将所述查找到的表项中的业务板索引的值设置为(m+1)%M,获取该业务板索引的值(m+1)%M,将该选择变量m更新为m+1;其中,M为业务板总数,m=1,2,...,%为取模运算符。
7.根据权利要求3所述的方法,其特征在于,在从分布式映射表中查找到对应的业务板索引之后,还包括:将所述分流表中与该报文对应的为空的业务板索引,更新为从所述分布式映射表中查找到的业务板索引的值;
在查找该报文对应的NAT类型、NAT地址映射表的索引和业务板索引之后,还包括:若查找到的业务板索引的值不为空,则接口板上的硬件可编程逻辑器件将该报文发送给查找到的业务板索引所指示的业务板,以便该业务板上的硬件可编程逻辑器件对该报文进行地址转换。
8.根据权利要求7所述的方法,其特征在于,所述根据所述获取的NAT后的IP地址、以及该NAT类型对该报文进行地址转换的方法包括:当该NAT类型中包括的需要转换的IP地址类型是源IP地址时,将该报文的源IP地址转换为所述获取的NAT后的IP地址,将转换前的五元组信息与转换后的五元组信息之间的对应关系记录到NAT地址转换表中;当该NAT类型中包括的需要转换的IP地址类型是目的IP地址时,将该报文的目的IP地址转换为所述获取的NAT后的IP地址,将转换前的五元组信息与转换后的五元组信息之间的对应关系记录到NAT地址转换表中;
所述对该报文进行地址转换的方法包括:根据该报文的五元组信息从所述NAT地址转换表中查找到对应的五元组信息,将该报文的五元组信息转换为查找到的五元组信息。
9.根据权利要求1所述的方法,其特征在于,在接收到需要进行NAT的报文之前,还包括:预先在所述接口板上的硬件可编程逻辑器件中创建所述分流表,其中,所述分流表的每一个表项中包含有:转换前的IP地址、包括正向NAT和需要转换的IP地址类型的NAT类型、转换后的IP地址所在的NAT地址映射表的索引、与业务板索引之间的对应关系,该业务板索引的值为空;
在为该报文获取到NAT后的IP地址之后,还包括:在所述分流表中添加一表项,添加的表项中包含有:所述获取的NAT后的IP地址、包括反向NAT和需要转换的IP地址类型的NAT类型、NAT地址映射表的索引、与业务板索引之间的对应关系;其中,当所述查找到的NAT类型中包括的需要转换的IP地址类型是源IP地址时,所述添加的表项中的需要转换的IP地址类型是目的IP地址,当所述查找到的NAT类型中包括的需要转换的IP地址类型是目的IP地址时,所述添加的表项中的需要转换的IP地址类型是源IP地址;所述添加的表项中的NAT地址映射表的索引和业务板索引的值为空。
10.一种分布式系统架构中的网络地址转换NAT处理装置,所述分布式系统架构中包括:接口板和至少两个业务板,其特征在于,所述装置应用于接口板上的硬件可编程逻辑器件,所述装置包括:
接收模块,用于接收需要进行NAT的报文;
确定模块,用于在所述接收模块接收到需要进行NAT的报文之后,从分流表中查找该报文对应的NAT类型、NAT地址映射表的索引和业务板索引;其中,NAT类型中包括:NAT方向和需要转换的IP地址类型;
获取模块,用于若所述确定模块查找到的业务板索引的值为空,则在所述确定模块查找到的NAT类型中包括的NAT方向是正向NAT时,从所述确定模块查找到的NAT地址映射表的索引所指示的NAT地址映射表中,为该报文获取NAT后的因特网协议IP地址;
运算模块,用于在所述获取模块获取到NAT后的IP地址之后,在确定模块查找到的NAT类型中包括的需要转换的IP地址类型是源IP地址时,按照预定算法对该报文的第一相关信息进行运算;在确定模块查找到的NAT类型中包括的需要转换的IP地址类型是目的IP地址时,按照预定算法对该报文的第三相关信息进行运算;
查找模块,用于根据所述运算模块得到的运算值,从分布式映射表中查找到对应的业务板索引;
发送模块,用于若所述确定模块查找到的业务板索引的值为空,则在所述确定模块查找到的NAT类型中包括的NAT方向是正向NAT时,将所述接收模块接收到的报文、所述获取模块获取的NAT后的IP地址、以及所述确定模块查找到的NAT类型,发送给所述查找模块查找到的业务板索引所指示的业务板,以便该业务板上的硬件可编程逻辑器件根据所述获取的NAT后的IP地址、以及该NAT类型对该报文进行地址转换;
保存模块,用于保存所述分流表、所述NAT地址映射表和所述分布式映射表。
11.根据权利要求10所述的装置,其特征在于,NAT地址映射表中包括:地址指针和N个IP地址,所述地址指针用于指示当前要选择的IP地址的索引,N为正整数;则,所述获取模块中包括:
地址指针获取单元,用于从所述确定模块确定出的索引所指示的NAT地址映射表中,获取地址指针的当前值n;
IP地址查找单元,用于根据所述地址指针获取单元获取到的当前值n,从该NAT地址映射表中查找到对应的IP地址,作为为该报文获取的NAT后的IP地址;
指针更新单元,用于将该NAT地址映射表中的地址指针的当前值n更新为(n+1)%N,其中,n=1,2,...,N,%为取模运算符。
12.根据权利要求10所述的装置,其特征在于,
所述运算模块,还用于若所述确定模块查找到的业务板索引的值为空,则在所述确定模块查找到的NAT类型中包括的NAT方向是反向NAT时,按照所述预定算法对该报文的相关信息进行运算;
所述发送模块,还用于若所述确定模块查找到的业务板索引的值为空,则在所述确定模块查找到的NAT类型中包括的NAT方向是反向NAT时,将所述接收模块接收到的报文发送给所述查找模块查找到的业务板索引所指示的业务板,以便该业务板上的硬件可编程逻辑器件对该报文进行地址转换。
13.根据权利要求12所述的装置,其特征在于,所述运算模块中包括:
第一运算单元,用于当所述确定模块查找到的NAT类型中包括的NAT方向是正向NAT,且该NAT类型中包括的需要转换的IP地址类型是源IP地址时,根据所述预定算法对该报文的第一相关信息进行运算;
第二运算单元,用于当所述确定模块查找到的NAT类型中包括的NAT方向是反向NAT,且该NAT类型中包括的需要转换的IP地址类型是目的IP地址时,根据所述预定算法对该报文的第二相关信息进行运算;
其中,当第一相关信息中包括:获取的NAT后的IP地址,该报文的目的IP地址和目的端口标识时,第二相关信息中包括:该报文的目的IP地址、源IP地址、源端口标识;
当第一相关信息中包括:获取的NAT后的IP地址,该报文的目的IP地址、目的端口标识和协议号时,第二相关信息中包括:该报文的目的IP地址、源IP地址、源端口标识和协议号。
14.根据权利要求12所述的装置,其特征在于,所述运算模块中包括:
第三运算单元,用于当所述确定模块查找到的NAT类型中包括的NAT方向是正向NAT,且该NAT类型中包括的需要转换的IP地址类型是目的IP地址时,根据所述预定算法对该报文的第三相关信息进行运算;
第四运算单元,用于当所述确定模块查找到的NAT类型中包括的NAT方向是反向NAT,且该NAT类型中包括的需要转换的IP地址类型是源IP地址时,根据所述预定算法对该报文的第四相关信息进行运算;
其中,当第三相关信息中包括:获取的NAT后的IP地址,该报文的源IP地址、源端口标识时,第四相关信息中包括:该报文的源IP地址、目的IP地址、目的端口标识;
当第三相关信息中包括:获取的NAT后的IP地址,该报文的源IP地址、源端口标识和协议号时,第四相关信息中包括:该报文的源IP地址、目的IP地址、目的端口标识和协议号。
15.根据权利要求12、13或14所述的装置,其特征在于,所述查找模块中包括:
表项查找单元,用于从所述分布式映射表中查找到与该运算值对应的表项,其中,所述分布式映射表的每一个表项中包括:业务板索引;
判断单元,用于判断所述表项查找单元查找到的表项中包括的业务板索引的值是否为空;
索引值获取单元,用于若所述判断单元的判断结果是不为空,则获取所述表项查找单元查找到的表项中的业务板索引的值;还用于若所述判断单元的判断结果是为空,则获取本地保存的选择变量m,将所述表项查找单元查找到的表项中的业务板索引的值设置为(m+1)%M,获取该业务板索引的值(m+1)%M,将该选择变量m更新为m+1;其中,M为业务板总数,m=1,2,...,%为取模运算符。
16.根据权利要求12所述的装置,其特征在于,还包括:分流表更新模块,其中:
所述分流表更新模块,用于在所述查找模块从分布式映射表中查找到对应的业务板索引之后,将所述分流表中与该报文对应的为空的业务板索引,更新为从所述分布式映射表中查找到的业务板索引的值;
所述发送模块,还用于若所述确定模块查找到的业务板索引的值不为空,则将所述接收模块接收到的报文发送给所述确定模块查找到的业务板索引所指示的业务板,以便该业务板上的硬件可编程逻辑器件对该报文进行地址转换。
CN201410076425.0A 2014-03-04 2014-03-04 分布式系统架构中的nat处理方法及装置 Active CN103825976B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410076425.0A CN103825976B (zh) 2014-03-04 2014-03-04 分布式系统架构中的nat处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410076425.0A CN103825976B (zh) 2014-03-04 2014-03-04 分布式系统架构中的nat处理方法及装置

Publications (2)

Publication Number Publication Date
CN103825976A CN103825976A (zh) 2014-05-28
CN103825976B true CN103825976B (zh) 2017-05-10

Family

ID=50760799

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410076425.0A Active CN103825976B (zh) 2014-03-04 2014-03-04 分布式系统架构中的nat处理方法及装置

Country Status (1)

Country Link
CN (1) CN103825976B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104580550A (zh) * 2014-12-30 2015-04-29 北京天融信科技有限公司 分布式系统中多业务板分流时的nat处理方法及设备
CN105812442B (zh) * 2014-12-31 2019-02-12 华为技术有限公司 一种合并数据文件的方法和ftp转发器
CN106254256B (zh) 2015-06-04 2019-08-16 新华三技术有限公司 基于三层vxlan网关的数据报文转发方法和设备
CN106331196A (zh) * 2015-06-26 2017-01-11 中兴通讯股份有限公司 一种实现nat的方法和装置
CN107547666A (zh) * 2016-06-24 2018-01-05 迈普通信技术股份有限公司 网络地址转换的实现方法及装置
CN106878179B (zh) * 2016-12-14 2020-10-09 新华三技术有限公司 一种报文转发方法及装置
CN106790556B (zh) * 2016-12-26 2019-09-17 深圳市风云实业有限公司 一种基于分布式系统的nat会话管理方法
CN108011991B (zh) * 2017-11-30 2021-12-07 新华三技术有限公司 数据流转发方法、主控板、接口板、引擎板及分布式防火墙
CN107948104A (zh) * 2017-12-25 2018-04-20 北京东土科技股份有限公司 一种网络地址转换环境中报文转发的方法及交换设备
CN108390954B (zh) * 2018-03-26 2021-09-21 新华三信息安全技术有限公司 一种报文传输方法和设备
CN108173982B (zh) * 2018-03-26 2020-12-22 深圳市风云实业有限公司 跨板报文的nat处理方法及装置
CN110417924B (zh) * 2018-04-28 2021-10-01 华为技术有限公司 分布式设备中的报文处理方法和分布式设备
CN109525684B (zh) * 2018-12-11 2022-09-30 杭州数梦工场科技有限公司 报文转发方法和装置
CN109672564B (zh) * 2018-12-29 2021-08-24 杭州迪普科技股份有限公司 一种业务板卡管理方法及装置
CN112511495A (zh) * 2020-11-05 2021-03-16 方一信息科技(上海)有限公司 面向分布式防火墙网络系统及接口卡数据流加速处理方法
CN113608495B (zh) * 2021-08-08 2022-09-30 上海领霄科技有限公司 一种可编程逻辑控制实现方法
CN113794640B (zh) * 2021-08-20 2022-11-18 新华三信息安全技术有限公司 一种报文处理方法、装置、设备及机器可读存储介质
CN114422164B (zh) * 2021-11-29 2023-09-15 杭州迪普科技股份有限公司 五元组表项下发装置及方法
CN114363433B (zh) * 2021-12-24 2024-06-25 山石网科通信技术股份有限公司 网络资源的分配方法、装置、存储介质及处理器
CN114615230B (zh) * 2022-03-14 2024-01-19 芯河半导体科技(无锡)有限公司 一种可回溯的napt动态地址映射方法
CN116668375B (zh) * 2023-07-31 2023-11-21 新华三技术有限公司 一种报文分流方法、装置、网络设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102821036A (zh) * 2012-04-20 2012-12-12 杭州华三通信技术有限公司 一种实现报文转发的方法及设备
CN103797774A (zh) * 2013-11-05 2014-05-14 华为技术有限公司 一种网络地址转换设备及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102821036A (zh) * 2012-04-20 2012-12-12 杭州华三通信技术有限公司 一种实现报文转发的方法及设备
CN103797774A (zh) * 2013-11-05 2014-05-14 华为技术有限公司 一种网络地址转换设备及方法

Also Published As

Publication number Publication date
CN103825976A (zh) 2014-05-28

Similar Documents

Publication Publication Date Title
CN103825976B (zh) 分布式系统架构中的nat处理方法及装置
US10581801B2 (en) Context-aware distributed firewall
CN108701187A (zh) 混合硬件软件分布式威胁分析
US20030050762A1 (en) Method and apparatus for measuring protocol performance in a data communication network
US8218539B2 (en) Flexible packet field processor
CN115037575A (zh) 报文处理的方法和装置
US10666672B2 (en) Collecting domain name system traffic
TWI635726B (zh) 巨網路流量偵測方法與軟體定義網路交換器
CN106487719A (zh) 经由分组中继使网络功能外部化的系统和方法
CN103812777B (zh) 覆盖虚拟化网络中的高效数据传输方法和系统
CN109845223A (zh) 使用预分类来实施网络安全策略
CN106209638A (zh) 从虚拟局域网至虚拟可扩展局域网的报文转发方法和设备
CN104734986B (zh) 一种报文转发方法和装置
WO2015187201A1 (en) Use of stateless marking to speed up stateful firewall rule processing
CN104205745B (zh) 报文处理的方法与设备
CN103812774B (zh) 基于tcam的策略配置方法、报文处理方法及相应装置
CN106878106A (zh) 一种可达性检测方法及装置
CN104883325B (zh) Pvlan交换机及其连接到非pvlan装置的方法
CN106209554A (zh) 跨虚拟可扩展局域网的报文转发方法和设备
US7657654B2 (en) Hashing assist for network processors
US20130013888A1 (en) Method and Appartus For Index-Based Virtual Addressing
US7720854B2 (en) Techniques for accessing a table
WO2015187200A1 (en) Efficient packet classification for dynamic containers
US20140208016A1 (en) System and Method for Filtering Addresses
US7487256B2 (en) Dynamic management method for forwarding information in router having distributed architecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Applicant after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Applicant before: Huasan Communication Technology Co., Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20180925

Address after: 230088 the 541 phase of H2 two, two innovation industrial park, No. 2800, innovation Avenue, Hi-tech Zone, Hefei, Anhui.

Patentee after: Xinhua three information Safe Technology Ltd

Address before: 310052 Changhe Road, Binjiang District, Hangzhou, Zhejiang Province, No. 466

Patentee before: Xinhua three Technology Co., Ltd.

TR01 Transfer of patent right