发明内容
本发明的主要目的在于解决数据访问单一,不够多样化的问题。
为实现上述目的,本发明提供的一种基于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地址,实现了外网访问内网,提高了数据访问的多样性。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明实施例中,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地址和目的端口的替换,节省系统开销,提高系统性能。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。