CN104135548B - 基于fpga的静态nat实现方法及装置 - Google Patents

基于fpga的静态nat实现方法及装置 Download PDF

Info

Publication number
CN104135548B
CN104135548B CN201410396112.3A CN201410396112A CN104135548B CN 104135548 B CN104135548 B CN 104135548B CN 201410396112 A CN201410396112 A CN 201410396112A CN 104135548 B CN104135548 B CN 104135548B
Authority
CN
China
Prior art keywords
data
address
nat
forwarded
packet
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
CN201410396112.3A
Other languages
English (en)
Other versions
CN104135548A (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.)
Bangyan Technology Co ltd
Original Assignee
Bangyan Technology 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 Bangyan Technology Co ltd filed Critical Bangyan Technology Co ltd
Priority to CN201410396112.3A priority Critical patent/CN104135548B/zh
Publication of CN104135548A publication Critical patent/CN104135548A/zh
Application granted granted Critical
Publication of CN104135548B publication Critical patent/CN104135548B/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

本发明公开了一种基于FPGA的静态NAT实现方法,所述基于FPGA的静态NAT实现包括以下步骤:获取待转发数据包中的控制信息;根据所述控制信息对所述待转发数据包进行NAT处理完成所述待转发数据包的IP地址、端口转换,并确定所述待转发数据包对应的目的端;将NAT处理后的待转发数据包发送至所确定的目的端。本发明还公开了一种基于FPGA的静态NAT实现装置。本发明实现外网访问内网,提高数据访问的多样性。

Description

基于FPGA的静态NAT实现方法及装置
技术领域
本发明涉及通信技术领域,尤其涉及基于FPGA的静态NAT实现方法及装置。
背景技术
目前很多机架式设备都是插卡式设备,设备是由多个子板卡组成,每个子板卡之间的数据通信方式以IP地址为基础,所以每个板卡均有一个或多个IP。而在实际的应用场合中,IP地址的规划是从设备的角度考虑,而不是从板卡的角度考虑,所以一个平台设备对外所能使用的IP地址只有一个或二个IP,(业务与管理分离时,一个独立对外的管理IP地址,一个独立对外的业务IP地址)。对于独立对外IP的需求,需要使用NAT进行IP、端口转换,实现NAT穿越。然而目前NAT的实现都是基于路由器的方案设计,很少用逻辑实现,然而用路由器方案实现会存在弊端:外网访问不了内网。在该方案下只能实现内网访问外网,使得数据访问单一,不够多样化。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于解决数据访问单一,不够多样化的问题。
为实现上述目的,本发明提供的一种基于FPGA的静态NAT实现方法,所述基于FPGA的静态NAT实现包括以下步骤:
获取待转发数据包中的控制信息;
根据所述控制信息对所述待转发数据包进行NAT处理完成所述待转发数据包的IP地址、端口转换,并确定所述待转发数据包对应的目的端;
将NAT处理后的待转发数据包发送至所确定的目的端。
优选地,所述根据所述控制信息对所述待转发数据包进行NAT处理完成待转发数据包IP的转换的步骤包括:
获取所述待转发数据包的转发标识;
判断所述转发标识是否为内网转发至外网的标识;
在所述转发标识为内网转发至外网标识时,将待转发数据包的源IP地址和源端口替换为满足预设协议的源IP地址和源端口,以完成所述待转发数据包的NAT处理。
优选地,所述判断所述转发标识是否为内网转发至外网标识的步骤之后,还包括:
在所述转发标识为外网转发至内网的标识时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理。
优选地,所述替换所述待转发数据包的目的IP地址和目的端口以完成所述待转发数据包的NAT处理的步骤包括:
获取所述待转发数据包的目的IP地址;
判断获取的目的IP地址是否与NAT外网IP地址一致;
在获取的目的IP地址与NAT外网IP地址不一致时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理。
优选地,所述判断获取的目的IP地址是否与NAT外网IP地址一致的步骤之后,还包括:
在获取的目的IP地址与NAT外网IP地址一致时,获取所述待转发数据包中的源IP地址和MAC地址,并将所述源IP地址和MAC地址保存至MAC地址映射表。
此外,为实现上述目的,本发明还提供一种基于FPGA的静态NAT实现装置,所述基于FPGA的静态NAT实现装置包括:
获取模块,用于获取待转发数据包中的控制信息;
处理模块,用于根据所述控制信息对所述待转发数据包进行NAT处理完成所述待转发数据包的IP地址、端口转换,并确定所述待转发数据包对应的目的端;
转发模块,用于将NAT处理后的待转发数据包发送至所确定的目的端。
优选地,所述基于FPGA的静态NAT实现装置还包括判断模块,
所述获取模块,还用于获取所述待转发数据包的转发标识;
所述判断模块,用于判断所述转发标识是否为内网转发至外网的标识;
所述处理模块,用于在所述转发标识为内网转发至外网标识时,将待转发数据包的源IP地址和源端口替换为满足预设协议的源IP地址和源端口,以完成所述待转发数据包的NAT处理。
优选地,所述处理模块,还用于在所述转发标识为外网转发至内网的标识时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理。
优选地,所述获取模块,还用于获取待转发数据包的目的IP地址;
所述判断模块,还用于判断获取的目的IP地址是否与NAT外网IP地址一致;
所述处理模块,还用于在获取的目的IP地址与NAT外网IP地址不一致时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理。
优选地,所述基于FPGA的静态NAT实现装置还包括存储模块,
所述获取模块,还用于在获取的目的IP地址与NAT外网IP地址一致时,获取所述待转发数据包中的源IP地址和MAC地址;
所述存储模块,用于将所述源IP地址和MAC地址保存至MAC地址映射表。
本发明通过根据待转发数据中的控制信息进行所述待转发数据的NAT处理,并将NAT处理后的待转发数据发送所确定的目的端。对所述待处理数据的IP地址和端口进行替换,将源IP地址或目标地址转换为配置的IP地址,实现了外网访问内网,提高了数据访问的多样性。
附图说明
图1为本发明基于FPGA的静态NAT实现方法的第一实施例的流程示意图;
图2为本发明基于FPGA的静态NAT实现方法的第二实施例的流程示意图;
图3为本发明基于FPGA的静态NAT实现方法的第三实施例的流程示意图;
图4为本发明基于FPGA的静态NAT实现装置的第一实施例的功能模块示意图;
图5为本发明基于FPGA的静态NAT实现装置的第二实施例的功能模块示意图;
图6为本发明基于FPGA的静态NAT实现装置的第三实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)选用的是XC6SLX100T,封装为fgg484,总体模块的划分如下:
dcm模块用来产生主控CPU MPC8248的数据接口逻辑时钟信号;
reg_control模块和I2C模块用来实现16路并行的I2C控制,通过外挂的NXP(飞利浦)的LPC2378来控制这两个模块的运行,从而实现对设备内各模块如电源板、风扇板、AMC(Automatic Message Counting,自动信息计算)板卡进行状态监测、运行控制的功能,I2C模块包括13个I2C控制模块和一个I2C数据的缓冲模块;
mpc_interface模块为主控CPU MPC8248的接口逻辑,通常此逻辑,主控CPU可以对sctp(Stream Control Transmission Protocol,流量控制协议),tcp(TransmissionControl Protocol,传输控制协议),udp(User Datagram Protocol,用户数据报协议),icmp(Internet Control Message Protocol,互联网控制消息协议)配置表,以及mac(Media Access Control,介质访问控制)地址,IP地址等参数进行读写控制;
gtp_top_i模块用来将输入的差分网络数据转换成并行数据给其他模块调用,或者将并行的网络数据转换成差分网络数据输出,该模块包括一个gtp(GPRS隧道协议)收发器和两对网口数据处理模块,分别对接收到的网络数据做预处理和对要发送的网络数据做发送前的预处理;
frame_classify模块用来分离网口过来的信令数据和非信令数据;
signal_channel模块用来对分离出的信令数据进行处理并送给发送模块发送出去,包含一个信令接收模块和一个信令发送模块;
emac0_nat模块用来对从内网到外网的数据做NAT(Network AddressTranslation网络地址转换)处理,对源IP和端口号进行替换,包含一个数据接收缓冲和两个直通数据及环回数据的发送缓冲控制模块;
emac1_nat_reverse模块用来对从外网到内网的数据做NAT逆处理,对目的IP和端口号进行替换,其所包含的模块和NAT处理模块相同,也是由一个数据接收缓冲和两个直通数据及环回数据的发送缓冲控制模块所组成;
cfg_sctp_0,cfg(control flow graph,控制流图)_list(表单)_tcp,cfg_list_udp,cfg_icmp_0模块为在NAT处理和逆处理过程中分别对sctp,tcp,udp,icmp数据包进行IP地址和端口号的替换,并记录为识别的端口号和IP地址,其中cfg_sctp_0模块包含一个FIFO(First In First Out,先入先出)和两个ram(random access memory,随机存储器)存储模块,分别用来存储未注册的IP及端口,以及NAT处理及NAT逆处理所需要的IP地址及端口信息;
mac_table_0模块为二层交换表,用来进行内外网数据包mac地址的查询和学习;
tx_packet_queue,tx_packet_queue_3模块为经过NAT处理和逆处理后的直通数据,环回数据及信令数据的发送队列模块。
基于上述FPGA系统,提出本发明实施例基于FPGA的静态NAT实现方法。
参照图1,图1为本发明基于FPGA的静态NAT实现方法的第一实施例的流程示意图。
在一实施例中,所述基于FPGA的静态NAT实现方法包括:
步骤S10,获取待转发数据包中的控制信息;
在本实施例中,提前配置NAT的配置表,即为NAT配置IP地址、端口信息。在成功配置NAT的配置表后,代表所述NAT的逻辑过程可以执行。侦测数据转发指令,在侦测到数据转发指令时,获取所述转发指令对应的待转发数据包,在获取到所述待转发数据包后,即时,或者间隔预设时间(20s、1分钟等用户预期的数据转发处理时间),获取待转发数据包中的控制信息,所述控制信息包括但不限于源MAC地址、以太网协议类型、IP协议类型、以太网源IP、以太网目的IP、icmp标识符、icmp序列号、源端口号、目的端口、IP包的16位标识、IP包的3位标志及13位片偏移、IP首部检验、ICMP/TCP/UDP的检验等。
步骤S20,根据所述控制信息对所述待转发数据包进行NAT处理完成所述待转发数据包的IP地址、端口转换,并确定所述待转发数据包对应的目的端;
在获取待转发数据包中的控制信息后,根据所述控制信息对所述待转发数据包进行NAT处理完成所述待转发数据包的IP地址、端口转换,并确定所述待转发数据包对应的目的端。若所述待转发数据包为内网至外网的数据包时,进行IP地址、端口转换为将所述待转发数据包的IP地址与NAT外网处于同一网段;若所述待转发数据包为外网至内网的数据包时,进行IP地址、端口转换为将所述待转发数据包的IP地址与外网IP地址一致。所述IP地址、端口转换是根据支持的协议进行的,即将所述待转发数据包的IP地址、端口转换为满足既定协议的IP地址、端口。所述协议包括SCTP协议,TCP协议,UDP协议、ICMP协议等。具体的NAT处理过程为:从FIFO以帧为单位读取所述待处理数据,并按照数据包的不同分类进行相应处理,包括IP地址、端口替换,校验字段的更新等处理,最终形成新的以太网数据包作为NAT处理后的待转发数据包,将NAT处理后的待转发数据保存至输出缓存中。数据包的分类包括还回包、直通包、广播包、丢弃包等。
步骤S30,将NAT处理后的待转发数据包发送至所确定的目的端。
在将所述待转发数据包进行NAT处理完成所述待转发数据包的IP地址、端口转换后,将NAT处理后的待转发数据包发送至所确定的目的端。所述目的端可以以MAC地址的形式体现,即将NAT处理后的待转发数据包发送至目的MAC地址。例如,根据MAC地址的不同,将访问内网的待转发数据发送至内网目的MAC地址,或将访问外网的待转发数据转发至外网目的MAC地址。
本实施例通过根据待转发数据中的控制信息进行所述待转发数据的NAT处理,并将NAT处理后的待转发数据发送所确定的目的端。对所述待处理数据的IP地址和端口进行替换,将源IP地址或目标地址转换为配置的IP地址,实现了外网访问内网,提高了数据访问的多样性。
参照图2,图2为本发明基于FPGA的静态NAT实现方法的第二实施例的流程示意图。基于上述基于FPGA的静态NAT实现方法的第一实施例,所述步骤S20包括:
步骤S21,获取所述待转发数据包的转发标识;
在数据包的转发过程中,每个数据包携带有转发标识,即携带数据包是从内网发送至外网、外网发送至内网、内网发送至内网的数据包的标识。获取所述待转发数据包的转发标识,即得到所述待转发数据包是内网发送至外网、外网发送至内网、内网发送至内网中的哪一种类型。
步骤S22,判断所述转发标识是否为内网转发至外网的标识;若是,则执行步骤S23,若否,则执行步骤S24。
步骤S23,将待转发数据包的源IP地址和源端口替换为满足预设协议的源IP地址和源端口,以完成所述待转发数据包的NAT处理;
步骤S24,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理。
在获取到所述待转发数据的转发标识后,判断所述转发标识是否为内网转发至外网的标识,在所述转发标识为内网转发至外网的标识时,将待转发数据包的源IP地址和源端口替换为满足预设协议的源IP地址和源端口,以完成所述待转发数据包的NAT处理;在所述转发标识为外网转发至内网的标识时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理。即从内网发送至外网和从外网发送至内网的NAT处理过程的区别在于替换的IP地址和端口不同。端口的替换包括UDP协议端口替换,ICMP协议端口替换,SCTP协议端口替换等。所述预设协议包括ICMP协议、UDP协议、SCTP协议等。
例如,以UDP协议端口替换为例,具体的过程如下:
存在两个状态机,其中一个为nat_state(状态机),在状态0时:这个时候检测reverse_check_data_i是否有效,如果有效,查看IP类型,若IP类型为无4层头的IP分段包,将数据包丢弃,进入状态4,不做其它处理;若IP类型不为无4层头的IP分段包,则判断是否为全NAT,若是全NAT则用目的端口号查询,若否则用源端口查询,进入状态1。
状态1、2、7、8均为等待端口查询输出。进入状态2,若是全NAT则判断替换端口是否存在,若存在,则输出替换后的IP地址以及端口等包头数据,数据包环回,进入状态4,若不存在,则将数据包丢弃,进入状态4。如果是非全NAT也判断替换端口是否存在,若存在,则输出替换后的IP地址以及端口等包头数据,数据包直通,进入状态4,若不存在,则进入状态3,数据包直通。
状态3为:直接进入状态4,不做任何处理;
状态4为:直接回到状态0,并对各信号进行初始化;
另一个状态机为reverse_state(相反状态机,即NAT逆处理状态机),流程和上面的差不多,主要完成NAT的逆处理流程,即外网发送至内网的数据包的NAT处理过程;通过以上两个状态机,实现UDP协议的NAT转换,即实现内外至外网数据包的IP地址、端口替换及外网至内网数据包的IP地址、端口替换。
例如,以ICMP协议端口替换为例,具体的过程如下:
存在两个状态机,其中一个为nat_state,状态A:这个时候检测reverse_check_data_i是否有效,若有效,查看所述待转发数据包是否为ICMP应答包,若是,则将所述待转发数据包丢弃,进入状态B;再查看目的IP是否为内网网关,若是,则将所述待转发数据包环回,进入状态B;再查看目的IP地址是否为内网机,若是,则将所述待转发数据包丢弃,进入状态B,最后查看是否是无4层头的分段包,若是,则将所述待转发数据包直通,进入状态B,若不是,也将所述待转发数据包直通,并将ICMP标识、源ip、目的ip、ICMP序列号写入双口RAM,进入状态A。
状态A:使双口RAM的地址指针指向下一个RAM单元,进入状态B。
状态B:对各信号进行初始化,进入状态C(初始话后的初始状态)。
另一个状态机为reverse_state,流程和上面的差不多,主要完成NAT的逆处理流程,即外网发送至内网的数据包的NAT处理过程;
通过以上两个状态机,实现ICMP协议的NAT转换。内网将源IP地址、目的IP地址、ICMP序号及ICMP标识存入512深的双口RAM,并将源IP替换为外网IP地址,ICMP序号替换为RAM地址转发到外网,从外网收到ICMP回包时,通过ICMP序号作为地址查表,并根据查表结果替换目的IP地址、ICMP序号。
例如,以SCTP协议端口替换为例,具体的过程如下:
存在2个状态机其中一个叫nat_state,这个状态机用于nat在转换过程中对SCTP数据包进行IP地址和端口的替换。状态a对nat接收到的数据包进行检测,若是有四层头的分段包,则直接对IP地址进行替换,否则发出端口ram1的查询地址
{nat_check_data_i[23:22]+nat_check_data_i[21:15]+nat_check_data_i[14:8],1'b1};状态a为等待ram1输出的暂态;状态b为执行端口和IP地址替换过程,并查询ram1中是否存储有该端口,若有则仅执行替换过程,否则需记录该端口;状态c为执行未识别的端口及源IP地址;状态d为关闭ram1及端口输出信号。另外一个状态机为reverse_state,用于nat在逆转换过程中对SCTP数据包进行IP地址和端口的替换,其流程和上面的差不多。通过这两个状态机,可以实现SCTP数据包内外网相应端口和IP地址的替换,以及未知端口的存储。通过在先获取所述待处理数据包的转发标识,在获取到转发标识后,对应进行IP地址和端口的替换。更加准确的实现IP地址和端口的替换,进而更好的实现数据访问的多样性。
参照图3,图3为本发明基于FPGA的静态NAT实现方法的第三实施例的流程示意图。基于上述基于FPGA的静态NAT实现方法的第二实施例,所述步骤S24包括:
步骤S241,获取所述待转发数据包的目的IP地址;
步骤S242,判断获取的目的IP地址是否与NAT外网IP地址一致;若是则执行步骤S244,若否则执行步骤S243。
步骤S243,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理;
步骤S244,获取所述待转发数据包中的源IP地址和MAC地址,并将所述源IP地址和MAC地址保存至MAC地址映射表。
在本实施例中,在所述转发标识为外网转发至内网的标识时,获取所述待转发数据包的目的IP地址,判断获取的目的IP地址是否与NAT外网IP地址一致,在不一致时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理;在一致时,获取所述待转发数据包中的源IP地址和MAC地址,并将所述源IP地址和MAC地址保存至MAC地址映射表。若所述转发标识为内网转发至外网的标识时,通过分析获取的所述待转发数据包的目的IP地址是否与NAT外网IP地址处于同一网段,在处于同一网段时,不进行IP地址和端口的替换,不处于同一网段时,才进行IP地址和端口的替换。通过在所述待转发数据包的目的IP地址与外网的IP地址一致时,不进行目的IP地址和目的端口的替换,节省系统开销,提高系统性能。
本发明进一步提供一种基于FPGA的静态NAT实现装置。
参照图4,图4为本发明基于FPGA的静态NAT实现装置的第一实施例的功能模块示意图。
在一实施例中,所述基于FPGA的静态NAT实现装置包括:获取模块10、处理模块20及转发模块30。
所述获取模块10,用于获取待转发数据包中的控制信息;
在本实施例中,提前配置NAT的配置表,即为NAT配置IP地址、端口信息。在成功配置NAT的配置表后,代表所述NAT的逻辑过程可以执行。侦测数据转发指令,在侦测到数据转发指令时,获取所述转发指令对应的待转发数据包,在获取到所述待转发数据包后,即时,或者间隔预设时间(20s、1分钟等用户预期的数据转发处理时间),获取待转发数据包中的控制信息,所述控制信息包括但不限于源MAC地址、以太网协议类型、IP协议类型、以太网源IP、以太网目的IP、icmp标识符(ICMP)、icmp序列号(ICMP)、源端口号、目的端口、IP包的16位标识、IP包的3位标志及13位片偏移、IP首部检验、ICMP/TCP/UDP的检验等。
所述处理模块20,用于根据所述控制信息对待转发数据包进行NAT处理完成所述待转发数据包的IP地址、端口转换,并确定所述待转发数据包对应的目的端;
在获取待转发数据包中的控制信息后,根据所述控制信息对所述待转发数据包进行NAT处理完成所述待转发数据包的IP地址、端口转换,并确定所述待转发数据包对应的目的端。若所述待转发数据包为内网至外网的数据包时,进行IP地址、端口转换为将所述待转发数据包的IP地址与NAT外网处于同一网段;若所述待转发数据包为外网至内网的数据包时,进行IP地址、端口转换为将所述待转发数据包的IP地址与外网IP地址一致。所述IP地址、端口转换是根据支持的协议进行的,即将所述待转发数据包的IP地址、端口转换为满足既定协议的IP地址、端口。所述协议包括SCTP协议,TCP协议,UDP协议、ICMP协议等。具体的NAT处理过程为:从FIFO以帧为单位读取所述待处理数据,并按照数据包的不同分类进行相应处理,包括IP地址、端口替换,校验字段的更新等处理,最终形成新的以太网数据包作为NAT处理后的待转发数据包,将NAT处理后的待转发数据保存至输出缓存中。数据包的分类包括还回包、直通包、广播包、丢弃包等。
所述转发模块30,用于将NAT处理后的待转发数据包发送至所确定的目的端。
在将所述待转发数据包进行NAT处理完成所述待转发数据包的IP地址、端口转换后,将NAT处理后的待转发数据包发送至所确定的目的端。所述目的端可以以MAC地址的形式体现,即将NAT处理后的待转发数据包发送至目的MAC地址。例如,根据MAC地址的不同,将访问内网的待转发数据发送至内网目的MAC地址,或将访问外网的待转发数据转发至外网目的MAC地址。
本实施例通过根据待转发数据中的控制信息进行所述待转发数据的NAT处理,并将NAT处理后的待转发数据发送所确定的目的端。对所述待处理数据的IP地址和端口进行替换,将源IP地址或目标地址转换为配置的IP地址,实现了外网访问内网,提高了数据访问的多样性。
参照图5,图5为本发明基于FPGA的静态NAT实现装置的第二实施例的功能模块示意图。所述基于FPGA的静态NAT实现装置还包括判断模块40。
所述获取模块10,还用于获取所述待转发数据包的转发标识;
在数据包的转发过程中,每个数据包携带有转发标识,即携带数据包是从内网发送至外网、外网发送至内网、内网发送至内网的数据包的标识。获取所述待转发数据包的转发标识,即得到所述待转发数据包是内网发送至外网、外网发送至内网、内网发送至内网中的哪一种类型。
所述判断模块40,还用于判断所述转发标识是否为内网转发至外网的标识;
所述处理模块20,还用于在所述转发标识为内网转发至外网的标识时,将待转发数据包的源IP地址和源端口替换为满足预设协议的源IP地址和源端口,以完成所述待转发数据包的NAT处理;在所述转发标识为外网转发至内网的标识时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理。
在获取到所述待转发数据的转发标识后,判断所述转发标识是否为内网转发至外网的标识,在所述转发标识为内网转发至外网的标识时,将待转发数据包的源IP地址和源端口替换为满足预设协议的源IP地址和源端口,以完成所述待转发数据包的NAT处理;在所述转发标识为外网转发至内网的标识时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理。即从内网发送至外网和从外网发送至内网的NAT处理过程的区别在于替换的IP地址和端口不同。端口的替换包括UDP协议端口替换,ICMP协议端口替换,SCTP协议端口替换等。所述预设协议包括ICMP协议、UDP协议、SCTP协议等。
例如,以UDP协议端口替换为例,具体的过程如下:
存在两个状态机,其中一个为nat_state,在状态0时:这个时候检测reverse_check_data_i是否有效,如果有效,查看IP类型,若IP类型为无4层头的IP分段包,将数据包丢弃,进入状态4,不做其它处理;若IP类型不为无4层头的IP分段包,则判断是否为全NAT,若是全NAT则用目的端口号查询,若否则用源端口查询,进入状态1。
状态1、2、7、8均为等待端口查询输出。进入状态2,若是全NAT则判断替换端口是否存在,若存在,则输出替换后的IP地址以及端口等包头数据,数据包环回,进入状态4,若不存在,则将数据包丢弃,进入状态4。如果是非全NAT也判断替换端口是否存在,若存在,则输出替换后的IP地址以及端口等包头数据,数据包直通,进入状态4,若不存在,则进入状态3,数据包直通。
状态3为:直接进入状态4,不做任何处理;
状态4为:直接回到状态0,并对各信号进行初始化;
另一个状态机为reverse_state,流程和上面的差不多,主要完成NAT的逆处理流程,即外网发送至内网的数据包的NAT处理过程;通过以上两个状态机,实现UDP协议的NAT转换,即实现内外至外网数据包的IP地址、端口替换及外网至内网数据包的IP地址、端口替换。
例如,以ICMP协议端口替换为例,具体的过程如下:
存在两个状态机,其中一个为nat_state,状态A:这个时候检测reverse_check_data_i是否有效,若有效,查看所述待转发数据包是否为ICMP应答包,若是,则将所述待转发数据包丢弃,进入状态B;再查看目的IP是否为内网网关,若是,则将所述待转发数据包环回,进入状态B;再查看目的IP地址是否为内网机,若是,则将所述待转发数据包丢弃,进入状态B,最后查看是否是无4层头的分段包,若是,则将所述待转发数据包直通,进入状态B,若不是,也将所述待转发数据包直通,并将ICMP标识、源ip、目的ip、ICMP序列号写入双口RAM,进入状态A。
状态A:使双口RAM的地址指针指向下一个RAM单元,进入状态B。
状态B:对各信号进行初始化,进入状态C(初始话后的初始状态)。
另一个状态机为reverse_state,流程和上面的差不多,主要完成NAT的逆处理流程,即外网发送至内网的数据包的NAT处理过程;
通过以上两个状态机,实现ICMP协议的NAT转换。内网将源IP地址、目的IP地址、ICMP序号及ICMP标识存入512深的双口RAM,并将源IP替换为外网IP地址,ICMP序号替换为RAM地址转发到外网,从外网收到ICMP回包时,通过ICMP序号作为地址查表,并根据查表结果替换目的IP地址、ICMP序号。
例如,以SCTP协议端口替换为例,具体的过程如下:
存在2个状态机其中一个叫nat_state,这个状态机用于nat在转换过程中对SCTP数据包进行IP地址和端口的替换。状态a对nat接收到的数据包进行检测,若是有四层头的分段包,则直接对IP地址进行替换,否则发出端口ram1的查询地址
{nat_check_data_i[23:22]+nat_check_data_i[21:15]+nat_check_data_i[14:8],1'b1};状态a为等待ram1输出的暂态;状态b为执行端口和IP地址替换过程,并查询ram1中是否存储有该端口,若有则仅执行替换过程,否则需记录该端口;状态c为执行未识别的端口及源IP地址;状态d为关闭ram1及端口输出信号。另外一个状态机为reverse_state,用于nat在逆转换过程中对SCTP数据包进行IP地址和端口的替换,其流程和上面的差不多。通过这两个状态机,可以实现SCTP数据包内外网相应端口和IP地址的替换,以及未知端口的存储。通过在先获取所述待处理数据包的转发标识,在获取到转发标识后,对应进行IP地址和端口的替换。更加准确的实现IP地址和端口的替换,进而更好的实现数据访问的多样性。
参照图6,图6为本发明基于FPGA的静态NAT实现装置的第三实施例的功能模块示意图。所述基于FPGA的静态NAT实现装置还包括存储模块50。
所述获取模块10,用于获取所述待转发数据包的目的IP地址;
所述判断模块40,还用于判断获取的目的IP地址是否与NAT外网IP地址一致;
所述处理模块20,还用于在获取的目的IP地址与NAT外网IP地址不一致时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理;
所述获取模块10,还用于在获取的目的IP地址与NAT外网IP地址一致时,获取所述待转发数据包中的源IP地址和MAC地址;
所述存储模块50,用于将所述源IP地址和MAC地址保存至MAC地址映射表。
在本实施例中,在所述转发标识为外网转发至内网的标识时,获取所述待转发数据包的目的IP地址,判断获取的目的IP地址是否与NAT外网IP地址一致,在不一致时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理;在一致时,获取所述待转发数据包中的源IP地址和MAC地址,并将所述源IP地址和MAC地址保存至MAC地址映射表。若所述转发标识为内网转发至外网的标识时,通过分析获取的所述待转发数据包的目的IP地址是否与NAT外网IP地址处于同一网段,在处于同一网段时,不进行IP地址和端口的替换,不处于同一网段时,才进行IP地址和端口的替换。通过在所述待转发数据包的目的IP地址与外网的IP地址一致时,不进行目的IP地址和目的端口的替换,节省系统开销,提高系统性能。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种基于FPGA的静态NAT实现方法,其特征在于,所述基于FPGA的静态NAT实现包括以下步骤:
获取待转发数据包中的控制信息;
根据所述控制信息对所述待转发数据包进行NAT处理完成所述待转发数据包的IP地址、端口转换,若所述待转发数据包为内网至外网的数据包时,将所述待转发数据包的IP地址转换为与NAT外网处于同一网段;若所述待转发数据包为外网至内网的数据包时,将所述待转发数据包的IP地址与外网IP地址一致;并确定所述待转发数据包对应的目的端;
将NAT处理后的待转发数据包发送至所确定的目的端;
NAT处理过程包括:从FIFO以帧为单位读取所述待转发数据包,并按照数据包的不同分类进行相应处理,包括IP地址、端口替换,检验字段的更新处理,形成新的以太网数据包作为NAT处理后的待转发数据包,将NAT处理后的待转发数据保存至输出缓存中。
2.如权利要求1所述的基于FPGA的静态NAT实现方法,其特征在于,所述根据所述控制信息对所述待转发数据包进行NAT处理完成待转发数据包IP的转换的步骤包括:
获取所述待转发数据包的转发标识;
判断所述转发标识是否为内网转发至外网的标识;
在所述转发标识为内网转发至外网标识时,将待转发数据包的源IP地址和源端口替换为满足预设协议的源IP地址和源端口,以完成所述待转发数据包的NAT处理。
3.如权利要求2所述的基于FPGA的静态NAT实现方法,其特征在于,所述判断所述转发标识是否为内网转发至外网标识的步骤之后,还包括:
在所述转发标识为外网转发至内网的标识时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理。
4.如权利要求3所述的基于FPGA的静态NAT实现方法,其特征在于,所述替换所述待转发数据包的目的IP地址和目的端口以完成所述待转发数据包的NAT处理的步骤包括:
获取所述待转发数据包的目的IP地址;
判断获取的目的IP地址是否与NAT外网IP地址一致;
在获取的目的IP地址与NAT外网IP地址不一致时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理。
5.如权利要求4所述的基于FPGA的静态NAT实现方法,其特征在于,所述判断获取的目的IP地址是否与NAT外网IP地址一致的步骤之后,还包括:
在获取的目的IP地址与NAT外网IP地址一致时,获取所述待转发数据包中的源IP地址和MAC地址,并将所述源IP地址和MAC地址保存至MAC地址映射表。
6.一种基于FPGA的静态NAT实现装置,其特征在于,所述基于FPGA的静态NAT实现装置包括:
获取模块,用于获取待转发数据包中的控制信息;
处理模块,用于根据所述控制信息对所述待转发数据包进行NAT处理完成所述待转发数据包的IP地址、端口转换,若所述待转发数据包为内网至外网的数据包时,将所述待转发数据包的IP地址转换为与NAT外网处于同一网段;若所述待转发数据包为外网至内网的数据包时,将所述待转发数据包的IP地址与外网IP地址一致;并确定所述待转发数据包对应的目的端;
转发模块,用于将NAT处理后的待转发数据包发送至所确定的目的端;
NAT处理过程包括:从FIFO以帧为单位读取所述待转发数据包,并按照数据包的不同分类进行相应处理,包括IP地址、端口替换,检验字段的更新处理,形成新的以太网数据包作为NAT处理后的待转发数据包,将NAT处理后的待转发数据保存至输出缓存中。
7.如权利要求6所述的基于FPGA的静态NAT实现装置,其特征在于,所述基于FPGA的静态NAT实现装置还包括判断模块,
所述获取模块,还用于获取所述待转发数据包的转发标识;
所述判断模块,用于判断所述转发标识是否为内网转发至外网的标识;
所述处理模块,用于在所述转发标识为内网转发至外网标识时,将待转发数据包的源IP地址和源端口替换为满足预设协议的源IP地址和源端口,以完成所述待转发数据包的NAT处理。
8.如权利要求7所述的基于FPGA的静态NAT实现装置,其特征在于,所述处理模块,还用于在所述转发标识为外网转发至内网的标识时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理。
9.如权利要求8所述的基于FPGA的静态NAT实现装置,其特征在于,所述获取模块,还用于获取待转发数据包的目的IP地址;
所述判断模块,还用于判断获取的目的IP地址是否与NAT外网IP地址一致;
所述处理模块,还用于在获取的目的IP地址与NAT外网IP地址不一致时,将待转发数据包的目的IP地址和目的端口替换为满足预设协议的IP地址和目的端口,以完成所述待转发数据包的NAT处理。
10.如权利要求9所述的基于FPGA的静态NAT实现装置,其特征在于,所述基于FPGA的静态NAT实现装置还包括存储模块,
所述获取模块,还用于在获取的目的IP地址与NAT外网IP地址一致时,获取所述待转发数据包中的源IP地址和MAC地址;
所述存储模块,用于将所述源IP地址和MAC地址保存至MAC地址映射表。
CN201410396112.3A 2014-08-12 2014-08-12 基于fpga的静态nat实现方法及装置 Active CN104135548B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410396112.3A CN104135548B (zh) 2014-08-12 2014-08-12 基于fpga的静态nat实现方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410396112.3A CN104135548B (zh) 2014-08-12 2014-08-12 基于fpga的静态nat实现方法及装置

Publications (2)

Publication Number Publication Date
CN104135548A CN104135548A (zh) 2014-11-05
CN104135548B true CN104135548B (zh) 2018-12-11

Family

ID=51808070

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410396112.3A Active CN104135548B (zh) 2014-08-12 2014-08-12 基于fpga的静态nat实现方法及装置

Country Status (1)

Country Link
CN (1) CN104135548B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106713523B (zh) * 2016-12-16 2019-12-13 无锡华云数据技术服务有限公司 基于sctp的网络地址转换方法
CN106656615B (zh) * 2016-12-29 2020-03-06 杭州迪普科技股份有限公司 一种基于tracert命令的报文处理方法及装置
CN109561164B (zh) * 2017-09-27 2021-02-09 华为技术有限公司 Nat表项的管理方法、装置及nat设备
CN107948104A (zh) * 2017-12-25 2018-04-20 北京东土科技股份有限公司 一种网络地址转换环境中报文转发的方法及交换设备
CN108600120A (zh) * 2018-05-04 2018-09-28 广东唯网络科技有限公司 一种基于dpdk下实现nat的方法
CN110086892B (zh) * 2019-03-29 2022-04-15 郑州信大捷安信息技术股份有限公司 一种基于fpga的snat系统及方法
CN110113265A (zh) * 2019-05-16 2019-08-09 济南浪潮高新科技投资发展有限公司 基于fpga的多i2c接口互联方法及模块

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101068212A (zh) * 2007-06-11 2007-11-07 中兴通讯股份有限公司 一种网络地址转换转发的装置及方法
US8001269B1 (en) * 2002-06-18 2011-08-16 Cisco Technology, Inc. Network address translation with IP redundancy

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8001269B1 (en) * 2002-06-18 2011-08-16 Cisco Technology, Inc. Network address translation with IP redundancy
CN101068212A (zh) * 2007-06-11 2007-11-07 中兴通讯股份有限公司 一种网络地址转换转发的装置及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《基于FPGA的网络地址转换(NAT)的实现》;赵胜颖;《仪器仪表学报》;20080831;第29卷(第8期);正文第372页 *

Also Published As

Publication number Publication date
CN104135548A (zh) 2014-11-05

Similar Documents

Publication Publication Date Title
CN104135548B (zh) 基于fpga的静态nat实现方法及装置
CN109743340B (zh) 报文处理的方法和网络装置
CN108781171B (zh) 用于在ipv6环境中用数据平面信号通知分组捕获的系统和方法
US10735325B1 (en) Congestion avoidance in multipath routed flows
CN107925624B (zh) 基于业务功能链sfc的报文转发方法、装置和系统
EP3709573A1 (en) Satisfying service level agreement metrics for unknown applications
CN104348716B (zh) 一种报文处理方法及设备
CN104022953B (zh) 基于开放流Openflow的报文转发方法和装置
US20120314605A1 (en) Communication system, path control apparatus, packet forwarding apparatus, and path control method
CN105340217B (zh) 一种报文处理方法、装置及系统
US8229705B1 (en) Performance monitoring in computer networks
US10778588B1 (en) Load balancing for multipath groups routed flows by re-associating routes to multipath groups
US10693790B1 (en) Load balancing for multipath group routed flows by re-routing the congested route
US20160021014A1 (en) Lightweight flow reporting in constrained networks
CN105337852B (zh) 更新业务流报文的处理方式的方法及装置
CN106464590A (zh) 一种获取路径信息的方法及装置
CN103763154A (zh) 一种网络流量检测方法
CN102123082A (zh) 数据包转发方法和设备
US11818022B2 (en) Methods and systems for classifying traffic flows based on packet processing metadata
US10819640B1 (en) Congestion avoidance in multipath routed flows using virtual output queue statistics
KR101500251B1 (ko) 통신 시스템, 노드, 패킷 전송 방법 및 프로그램을 기록한 컴퓨터 판독가능 기록 매체
EP3718269A1 (en) Packet value based packet processing
KR20110071444A (ko) 네트워크 인터페이스 카드장치 및 상기 네트워크 인터페이스 카드장치를 이용한 트래픽 처리 방법
CN104768176B (zh) 无线网络中sFlow采样的方法、装置
JP5971405B2 (ja) ネットワーク統計情報の提供システム、ネットワーク統計情報の提供方法及びプログラム

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: 518057, Shenzhen Province, Nanshan District hi tech Zone, Guangdong hi tech Zone, No. 9, building 8, East

Applicant after: BANGYAN TECHNOLOGY CO., LTD.

Address before: 518057, Shenzhen Province, Nanshan District hi tech Zone, Guangdong hi tech Zone, No. 9, building 8, East

Applicant before: Shenzhen Bangyan Information Technology Co., Ltd.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
CP02 Change in the address of a patent holder

Address after: 518000 2101, No. 100, Zhihe Road, Dakang community, Yuanshan street, Longgang District, Shenzhen, Guangdong

Patentee after: BANGYAN TECHNOLOGY Co.,Ltd.

Address before: 518057 East, 8th floor, software building, No. 9, Gaoxin Zhongyi Road, high tech Zone, Nanshan District, Shenzhen, Guangdong Province

Patentee before: BANGYAN TECHNOLOGY Co.,Ltd.

CP02 Change in the address of a patent holder