CN107566549A - 一种网络地址转换映射表的处理方法、装置及设备 - Google Patents
一种网络地址转换映射表的处理方法、装置及设备 Download PDFInfo
- Publication number
- CN107566549A CN107566549A CN201710923278.XA CN201710923278A CN107566549A CN 107566549 A CN107566549 A CN 107566549A CN 201710923278 A CN201710923278 A CN 201710923278A CN 107566549 A CN107566549 A CN 107566549A
- Authority
- CN
- China
- Prior art keywords
- network address
- list item
- bucket
- conversion
- mapping tables
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种网络地址转换映射表的处理方法、装置及设备,所述方法应用于多核网络转发系统中的任一CPU中,所述方法包括:接收任一数据包后,对所述数据包进行解析得到源网络地址;在预设的网络地址转换NAT映射表中,查找所述源网络地址对应的转换后网络地址;NAT映射表为数组结构,NAT映射表包括N个桶bucket,每个bucket包括不大于M个表项,每个表项存储有源网络地址与转换后网络地址的对应关系,N和M为预先设置的自然数;如果查找到所述源网络地址对应的转换后网络地址,则基于所述转换后网络地址,对所述数据包进行转发。本发明提供的多核网络转发系统中的无锁查找NAT映射表的设计,减少了多核系统的全局资源竞争的问题,提高了多核系统性能。
Description
技术领域
本申请涉及数据处理领域,具体涉及一种网络地址转换映射表的处理方法、装置及设备。
背景技术
网络地址转换(英文:Network Address Translation;缩写:NAT),用于解决Ipv4面临的网络地址枯竭和保护私有网络安全的问题。在网络地址转换过程中,需要查询预先建立的网络地址转换NAT映射表,以获取转换后网络地址。而由于NAT映射表是全局资源,多核系统中的每个核在接收到报文后,均需要查询NAT映射表,必然涉及多核系统中的全局资源竞争的问题。
现有的NAT映射表是基于链表结构设计的,NAT映射表中的各个表项均需要添加定时器维护超时,即通过访问定时器完成表项的维护。而定时器是全局资源,对定时器的访问本身就是需要加锁处理,由于对每个报文的处理均需要访问定时器,所以对每个报文的处理都需要对定时器加锁。可见,利用定时器维护表项使得多核系统中全局资源竞争的概率增加,影响多核系统的性能。
发明内容
本发明提供了一种网络地址转换映射表的处理方法、装置及设备,能够减少多核系统中网络地址转换过程中的全局资源竞争压力,进而减少对多核系统性能的影响。
第一方面,本发明提供了一种网络地址转换映射表的处理方法,所述方法应用于多核网络转发系统中的任一CPU中,所述方法包括:
接收任一数据包后,对所述数据包进行解析得到源网络地址;
在预设的网络地址转换NAT映射表中,查找所述源网络地址对应的转换后网络地址;其中,所述NAT映射表为数组结构,所述NAT映射表包括N个桶bucket,每个bucket包括不大于M个表项,每个bucket内实行最近最少使用LRU表项替换机制,每个表项存储有源网络地址与转换后网络地址的对应关系,N和M为预先设置的自然数;
如果查找到所述源网络地址对应的转换后网络地址,则基于所述转换后网络地址,对所述数据包进行转发。
可选的,所述方法还包括:
如果未查找到所述源网络地址对应的转换后网络地址,则从地址池中获取任一可用网络地址,作为所述源网络地址对应的转换后网络地址;
确定由所述源网络地址与所述转换后网络地址组成的表项对应的bucket;
判断所述bucket包括的表项个数是否达到M个,如果否,则在所述bucket中新建表项,所述表项包括所述源网络地址与所述转换后网络地址的对应关系。
可选的,所述表项还包括更新时间,所述更新时间用于记录所述表项最近一次更新的时间;
所述方法还包括:
如果所述bucket包括的表项个数达到M个,则确定所述bucket中更新时间最早的表项;
利用由所述源网络地址与所述转换后网络地址组成的表项,替换所述更新时间最早的表项。
可选的,所述方法还包括:
当访问任一表项时,判断所述表项的更新时间与本次访问时间的差值是否大于预设第一阈值;
如果是,则利用本次访问时间更新所述表项的更新时间。
可选的,所述方法还包括:
按照预设周期,遍历所述NAT映射表中各个表项的更新时间;
删除更新时间与本次遍历时间的差值大于预设第二阈值的表项。
可选的,所述按照预设周期,遍历所述NAT映射表中各个表项的更新时间,包括:
当达到预设周期时,判断当前网络地址转换的流量是否为0;
如果是,则遍历所述NAT映射表中各个表项的更新时间。
第二方面,本发明提供了一种网络地址转换映射表的处理装置,所述装置应用于多核网络转发系统中的任一CPU中,所述装置包括:
解析模块,用于接收任一数据包后,对所述数据包进行解析得到源网络地址;
查找模块,用于在预设的网络地址转换NAT映射表中,查找所述源网络地址对应的转换后网络地址;其中,所述NAT映射表为数组结构,所述NAT映射表包括N个桶bucket,每个bucket包括不大于M个表项,每个bucket内实行最近最少使用LRU表项替换机制,每个表项存储有源网络地址与转换后网络地址的对应关系,N和M为预先设置的自然数;
转发模块,用于在查找到所述源网络地址对应的转换后网络地址后,基于所述转换后网络地址,对所述数据包进行转发。
可选的,所述装置还包括:
获取模块,用于在未查找到所述源网络地址对应的转换后网络地址时,从地址池中获取任一可用网络地址,作为所述源网络地址对应的转换后网络地址;
确定模块,用于确定由所述源网络地址与所述转换后网络地址组成的表项对应的bucket;
第一判断模块,用于判断所述bucket包括的表项个数是否达到M个;
新建模块,用于在所述第一判断模块的结果为否时,在所述bucket中新建表项,所述表项包括所述源网络地址与所述转换后网络地址的对应关系。
可选的,所述表项还包括更新时间,所述更新时间用于记录所述表项最近一次更新的时间;
所述装置还包括:
第二确定模块,用于在所述第一判断模块的结果为是时,确定所述bucket中更新时间最早的表项;
替换模块,用于利用由所述源网络地址与所述转换后网络地址组成的表项,替换所述更新时间最早的表项。
可选的,所述装置还包括:
第二判断模块,用于当访问任一表项时,判断所述表项的更新时间与本次访问时间的差值是否大于预设第一阈值;
更新模块,用于在所述第二判断模块的结果为是时,利用本次访问时间更新所述表项的更新时间。
可选的,所述装置还包括:
遍历模块,用于按照预设周期,遍历所述NAT映射表中各个表项的更新时间;
删除模块,用于删除更新时间与本次遍历时间的差值大于预设第二阈值的表项。
可选的,所述遍历模块包括:
判断子模块,用于当达到预设周期时,判断当前网络地址转换的流量是否为0;
遍历子模块,用于在所述判断子模块的结果为是时,遍历所述NAT映射表中各个表项的更新时间。
第三方面,本发明提供了一种网络地址转换映射表的处理设备,所述设备包括存储器和处理器,
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令,执行以下步骤:接收任一数据包后,对所述数据包进行解析得到源网络地址;在预设的网络地址转换NAT映射表中,查找所述源网络地址对应的转换后网络地址;其中,所述NAT映射表为数组结构,所述NAT映射表包括N个桶bucket,每个bucket包括不大于M个表项,每个bucket内实行最近最少使用LRU表项替换机制,每个表项存储有源网络地址与转换后网络地址的对应关系,N和M为预先设置的自然数;如果查找到所述源网络地址对应的转换后网络地址,则基于所述转换后网络地址,对所述数据包进行转发。
本发明提供的网络地址转换映射表的处理方法中,NAT映射表是基于数组结构设计的,且每个bucket内实行最近最少使用LRU表项替换机制,代替了现有技术中的定时器维护超时表项机制,所以,在查询NAT映射表时无需加锁,大大减少了多核网络转发系统的全局资源竞争。而查找操作是网络地址转换中最重要的部分,所以无锁的查找操作最大程度上减少了多核网络转发系统的全局资源竞争,提升了多核系统整体性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中的一种基于链表结构设计的NAT映射表的示意图;
图2为本发明实施例提供的一种NAT映射表的结构示意图;
图3为本发明实施例提供的一种NAT映射表的处理方法流程图;
图4为本发明实施例提供的另一种NAT映射表的处理方法流程图;
图5为本发明实施例提供的一种NAT映射表的处理装置的结构示意图;
图6为本发明实施例提供的另一种NAT映射表的处理装置的结构示意图;
图7为本发明实施例提供的一种NAT映射表的处理设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实际应用中,在从防火墙内部网络访问外部网络时,可以通过隐藏内部网络使用的IP地址的方式,一定程度上保障私有网络的安全,避免网络攻击。网络地址转换的目的是将内部网络的IP地址转换成一个指定的公网IP地址,以避免网络攻击。
网络地址转换NAT映射表,用于存储源网络地址与转换后网络地址的对应关系。在进行网络地址转换时,通过查询预先建立的NAT映射表,获取数据包的源网络地址对应的转换后网络地址,以完成网络地址的转换。多核系统中的每个转发核接收到任一个数据包后,均需要查询NAT映射表完成网络地址转换,而NAT映射表属于多核系统的全局资源,所以,必然涉及多核系统的全局资源竞争的问题。
在多核系统中,如何设计出能够最大化减少全局资源竞争的NAT映射表,是多核系统性能的重要影响因素。
现有技术中,多核网络转发系统的NAT映射表是基于链表结构设计的,如图1所示。具体的,基于链表结构设计的NAT映射表是一张哈希表,具体包括若干桶bucket,每个bucket中以指针的方式挂有若干表项,每个表项用于存储源网络地址与转换后网络地址的对应关系,具体可以以key-value的形式存储。每个bucket挂的表项中key的hash值相同,也就是说,只有key的hash值相同的表项才可以被挂到同一个bucket中。
NAT映射表是一张哈希表,是可以根据关键码值(Key-value)而直接进行访问的数据结构。哈希表中同一个位置可能存有多个元素,以应对哈希冲突问题。这样,哈希表中的每个位置表示一个桶bucket,bucket常被用于解决多个关键码值对应同一个存储地址而造成的哈希冲突问题。如图1所示,利用bucket的作用,基于链表结构设计的NAT映射表将若干个hash值相同的表项存储于一个bucket中,解决了哈希冲突问题。
由于现有技术中的NAT映射表是基于链表结构设计的,且NAT映射表中的各个表项均需要添加定时器维护超时,而对定时器的访问需要加锁处理,所以定时器维护表项的方式使得多核系统中全局资源竞争的概率增加。
另外,由于多核系统中的每个转发核接收到任一个数据包后,均需要查询NAT映射表完成网络地址转换,所以,对NAT映射表的查询性能是影响多核系统整体性能的主要因素。实际应用中,对现有技术的NAT映射表中的任一表项进行查询时,均需要对定时器进行加锁访问,另外,在对该表项进行查询时,还需要对该表项所在的bucket加锁,显然,对现有技术中的NAT映射表进行查询至少涉及上述两种锁机制,所以,现有技术中对NAT映射表的查找操作会导致多核网络转发系统的全局资源竞争较大,极大地影响系统性能。
为了降低查找NAT映射表对多核网络转发系统性能的影响,本发明提供了一种基于数组结构设计的NAT映射表,如图2所示,为本发明实施例提供的一种NAT映射表的结构示意图,其中,NAT映射表包括N个bucket,每个bucket最多设置M个表项Node,也就是说,NAT映射表中的表项个数最多为N*M个。因此,在初始化过程中,在内存池中申请N*M个表项所占的内存空间,并按照N个bucket且每个bucket最多设置M个表项的结构,分配每个bucket包括的表项。另外,每个bucket内的各个表项的更新机制为最近最少使用LRU表项替换机制,即在添加表项时,如果对应的bucket中存有M个表项,则利用该表项替换最近最少使用的表项,完成表项的更新,由于数组结构中的表项替换操作处理简单,耗时较少,即使需要对bucket加锁,也不会造成全局资源竞争。
由于本发明提供的NAT映射表是基于数组结构设计的,且利用bucket内实行LRU表项替换机制代替了现有技术中的定时器维护超时表项机制,所以,在查询NAT映射表时无需加锁,显然与现有技术的定时器超时维护表项的两种锁机制相比,大大减少了多核网络转发系统的全局资源竞争。而查找操作是网络地址转换中最重要的部分,所以无锁的查找操作最大程度上减少了多核网络转发系统的全局资源竞争,提升了多核系统整体性能。
本发明提供了一种网络地址转换映射表的处理方法,参考图3,为本发明实施例提供的一种NAT映射表的处理方法流程图,本发明实施例中的NAT映射表的处理方法可以应用于多核网络转发系统中的任意一个CPU(以下称为第一CPU),所述方法包括:
S301:第一CPU接收任一数据包后,对所述数据包进行解析得到源网络地址。
多核网络转发系统具体可以包括防火墙转发系统,用于对数据包进行转发。
实际应用中,多核网络转发系统中的第一CPU在接收到任一数据包后,为了保障私有网络的安全,避免网络攻击,在对该数据包进行转发之前,首先对该数据包进行网络地址转换。
在进行数据包的网络地址转换的过程中,首先对接收到的数据包进行解析,以得到该数据包的源网络地址,如源IP地址,端口号等。
S302:第一CPU在预设的网络地址转换NAT映射表中,查找所述源网络地址对应的转换后网络地址,如果查找到所述源网络地址对应的转换后网络地址,则执行S303。
其中,所述NAT映射表为数组结构,所述NAT映射表包括N个桶bucket,每个bucket包括不大于M个表项,每个bucket内实行最近最少使用LRU表项替换机制,每个表项存储有源网络地址与转换后网络地址的对应关系,N和M为预先设置的自然数。
本发明实施例中的NAT映射表采用基于bucket的最近最少使用LRU表项替换机制,具体的,向NAT映射表中的任一bucket中添加表项时,如果该bucket内未达到M个表项,则直接添加表项即可,否则,利用该表项替换最近最少使用的表项,实现表项的更新。
在查找NAT映射表时,对于直接添加表项的更新,完全不会影响查找结果,所以查找操作无需加锁,避免了多核之间的锁竞争,提升多核系统整体性能。而对于替换表项的更新,由于数组结构中的表项替换操作处理简单,即使需要对bucket加锁,也不会造成全局资源竞争,进而对NAT映射表的查找操作影响不大。
实际应用中,在基于数组结构设计的NAT映射表中,每对源网络地址与转换后网络地址的对应关系,通过预设算法确定对应的bucket,例如,通过hash算法,计算每对源网络地址与转换后网络地址的对应关系应该存储于哪个bucket的表项中。
实际应用中,多核网络转发系统中的第一CPU解析得到数据包的源网络地址后,在预设的NAT映射表中,查找该源网络地址对应的转换后网络地址。
一种实现方式中,可以通过预设算法,如hash算法,计算NAT映射表中与该源网络地址对应的bucket。在确定bucket后,在该bucket中查找与该源网络地址对应的转换后网络地址。
S303:第一CPU基于所述转换后网络地址,对所述数据包进行转发。
本发明实施例中,第一CPU在NAT映射表中查找到该源网络地址对应的转换后网络地址后,利用转换后网络地址替换源网络地址,并基于转换后网络地址,对该数据包进行转发。
由于利用转换后网络地址隐藏了数据包的源网络地址,所以,一定程度上能够保障私有网络的安全。
本发明实施例提供的网络地址转换映射表的处理方法中,NAT映射表是基于数组结构设计的,且每个bucket内实行最近最少使用LRU表项替换机制,代替了现有技术中的定时器维护超时表项机制,所以,在查询NAT映射表时无需加锁,大大减少了多核网络转发系统的全局资源竞争。而查找操作是网络地址转换中最重要的部分,所以无锁的查找操作最大程度上减少了多核网络转发系统的全局资源竞争,提升了多核系统整体性能。
另外,本发明实施例还提供了一种网络地址转换映射表的处理方法,参考图4,为本发明实施例提供的另一种网络地址转换映射表的处理方法流程图,该方法包括:
S401:第一CPU接收任一数据包后,对所述数据包进行解析得到源网络地址。
S402:第一CPU在预设的网络地址转换NAT映射表中,查找所述源网络地址对应的转换后网络地址,如果查找到所述源网络地址对应的转换后网络地址,则执行S403;否则执行S404。
S403:第一CPU基于所述转换后网络地址,对所述数据包进行转发。
S401-S403与上述S301-S303相同,可参照理解,在此不再赘述。
S404:第一CPU从地址池中获取任一可用网络地址,作为所述源网络地址对应的转换后网络地址。
本发明实施例中,如果第一CPU在NAT映射表中未查找到该源网络地址对应的转换后网络地址,可以从地址池中获取一个可用的网络地址,作为该源网络地址对应的转换后网络地址,以便用于后续数据包的网络地址转换。
S405:确定由所述源网络地址与所述转换后网络地址组成的表项对应的bucket。
一种实现方式中,第一CPU从地址池中,为源网络地址获取对应的转换后网络地址后,通过预设算法,如hash算法,计算由该源网络地址与该转换后网络地址组成的表项应该存储的bucket。
例如,NAT映射表中的每个bucket具有对应的hash值,第一CPU从地址池中,为源网络地址获取对应的转换后网络地址后,通过hash算法,计算该源网络地址的hash值,并将该hash值对应的bucket,作为由该源网络地址与该转换后网络地址组成的表项应该存储的bucket。
S406:判断所述bucket包括的表项个数是否达到M个,如果否,则执行S407;如果是,则执行S408。
S407:在所述bucket中新建表项,所述表项包括所述源网络地址与所述转换后网络地址的对应关系。
本发明实施例中,第一CPU在确定由该源网络地址与该转换后网络地址组成的表项对应的bucket后,判断该bucket中当前已存储的表项个数是否达到预设最大个数,即M个。如果当前未达到M个,则可以在该bucket中新建表项,用于存储该源网络地址与该转换后网络地址的对应关系,以便用于后续数据包的网络地址转换。
值得注意的是,每个bucket中能够存储表项的最大个数M可以是根据用户的需求进行设置的,NAT映射表中包括的bucket个数N也可以是根据用户的需求进行设置的。
S408:确定所述bucket中更新时间最早的表项,并利用由所述源网络地址与所述转换后网络地址组成的表项,替换所述更新时间最早的表项。
为了实现对NAT映射表中的各个表项的更新,本发明实施例的表项中不仅存储有源网络地址与转换后网络地址的对应关系,还存储有该表项最近一次更新的时间,即更新时间uptime。具体的,在新建表项时,表项的新建时间即为该表项的更新时间;每次对表项进行访问时,可以利用本次访问表项的时间更新该表项的更新时间。
实际应用中,如果确定该bucket中当前已存储的表项个数已经达到M个,则可以基于bucket的粒度,利用LRU(Least rencently used;最近最少使用)表项替换机制,对表项进行更新,由于数组结构中的表项替换操作处理简单,即使需要对bucket加锁,也不会造成全局资源竞争。
具体的,首先确定该bucket中更新时间最早的表项,即更新时间距当前时间最远的表项。其次,利用由该源网络地址与该转换后网络地址组成的表项,替换该更新时间最早的表项,实现表项的更新。
表项的更新时间距当前时间最远,说明该表项最长时间未被访问,进一步说明该表项再次被访问的几率较小,所以,本发明实施例利用LRU规则对表项进行更新,对网络地址转换造成的影响最小。
实际应用中,为了减少系统性能的开销,在第一CPU每次访问NAT映射表中的表项时,首先判断该表项的更新时间与本次访问时间的差值是否大于预设第一阈值,例如为1s,如果大于,则利用本次访问时间更新该表项的更新时间;否则,不对该表项的更新时间进行更新。通过减少对表项的更新时间的更新次数,一定程度上能够减少系统性能的开销,且对网络地址转换没有影响。
另外,对于长时间未被访问的表项,如果不对其进行删除,无疑是对存储资源的浪费。为此,本发明实施例中,多核网络转发系统中的第一CPU可以按照预设周期,遍历NAT映射表中各个表项的更新时间,如果更新时间与本次遍历时间的差值大于预设第二阈值,例如为60s,则删除该表项,同时删除该表项中存储的源网络地址与转换后网络地址的对应关系。
一种实现方式中,为了避免对多核网络转发系统中网络地址转换性能的影响,可以在当前不存在网络地址转换时执行遍历NAT映射表中各个表项的更新时间的操作。具体的,当达到遍历NAT映射表中各个表项的更新时间的预设周期,且在执行遍历NAT映射表中各个表项的更新时间的操作之前,首先判断当前网络地址转换的流量是否为0,即当前是否存在网络地址转换,如果当前网络地址转换的流量为0,即当前不存在网络地址转换,则开始执行遍历NAT映射表中各个表项的更新时间的操作。
另外,为了避免较长时间的处理超时表项的删除操作,而影响多核网络转发系统中网络地址转换性能,本发明实施例在对表项进行删除的过程中,可以每删除若干表项,如128个,就判断一次当前网络地址转换的流量是否为0,如果为0,则继续删除更新时间与本次遍历时间的差值大于预设第二阈值的表项,否则记录上一次删除到的表项对应的bucket,并开始处理网络地址转换。当再次对NAT映射表中的表项进行删除时,可以从记录的上一次删除到的表项对应的bucket开始进行删除。
本发明实施例提供的网络地址转换映射表的处理方法中,NAT映射表是基于数组结构设计的,且每个bucket内实行最近最少使用LRU表项替换机制,代替了现有技术中的定时器维护超时表项机制,所以,在查询NAT映射表时无需加锁,大大减少了多核网络转发系统的全局资源竞争。而查找操作是网络地址转换中最重要的部分,所以无锁的查找操作最大程度上减少了多核网络转发系统的全局资源竞争,提升了多核系统整体性能。
本发明实施例还提供了一种网络地址转换映射表的处理装置,参考图5,为本发明实施例提供的一种网络地址转换映射表的处理装置的结构示意图,该装置应用于多核网络转发系统的任一CPU中,所述装置包括:
解析模块501,用于接收任一数据包后,对所述数据包进行解析得到源网络地址;
查找模块502,用于在预设的网络地址转换NAT映射表中,查找所述源网络地址对应的转换后网络地址;其中,所述NAT映射表为数组结构,所述NAT映射表包括N个桶bucket,每个bucket包括不大于M个表项,每个表项存储有源网络地址与转换后网络地址的对应关系,N和M为预先设置的自然数;
转发模块503,用于在查找到所述源网络地址对应的转换后网络地址后,基于所述转换后网络地址,对所述数据包进行转发。
参考图6,所述装置还可以包括:
获取模块601,用于在未查找到所述源网络地址对应的转换后网络地址时,从地址池中获取任一可用网络地址,作为所述源网络地址对应的转换后网络地址;
确定模块602,用于确定由所述源网络地址与所述转换后网络地址组成的表项对应的bucket;
第一判断模块603,用于判断所述bucket包括的表项个数是否达到M个;
新建模块604,用于在所述第一判断模块的结果为否时,在所述bucket中新建表项,所述表项包括所述源网络地址与所述转换后网络地址的对应关系。
另外,所述表项还包括更新时间,所述更新时间用于记录所述表项最近一次更新的时间;
所述装置还包括:
第二确定模块,用于在所述第一判断模块的结果为是时,确定所述bucket中更新时间最早的表项;
替换模块,用于利用由所述源网络地址与所述转换后网络地址组成的表项,替换所述更新时间最早的表项。
所述装置还包括:
第二判断模块,用于当访问任一表项时,判断所述表项的更新时间与本次访问时间的差值是否大于预设第一阈值;
更新模块,用于在所述第二判断模块的结果为是时,利用本次访问时间更新所述表项的更新时间。
为了实现对长时间未被访问的表项的删除功能,所述装置还包括:
遍历模块,用于按照预设周期,遍历所述NAT映射表中各个表项的更新时间;
删除模块,用于删除更新时间与本次遍历时间的差值大于预设第二阈值的表项。
具体的,所述遍历模块包括:
判断子模块,用于当达到预设周期时,判断当前网络地址转换的流量是否为0;
遍历子模块,用于在所述判断子模块的结果为是时,遍历所述NAT映射表中各个表项的更新时间。
本发明实施例提供的网络地址转换映射表的处理装置中,NAT映射表是基于数组结构设计的,且每个bucket内实行最近最少使用LRU表项替换机制,代替了现有技术中的定时器维护超时表项机制,所以,在查询NAT映射表时无需加锁,大大减少了多核网络转发系统的全局资源竞争。而查找操作是网络地址转换中最重要的部分,所以无锁的查找操作最大程度上减少了多核网络转发系统的全局资源竞争,提升了多核系统整体性能。
相应的,本发明实施例还提供一种网络地址转换映射表的处理设备,参见图7所示,可以包括:
处理器701、存储器702、输入装置703和输出装置704。网络地址转换映射表的处理设备中的处理器701的数量可以一个或多个,图7中以一个处理器为例。在本发明的一些实施例中,处理器701、存储器702、输入装置703和输出装置704可通过总线或其它方式连接,其中,图7中以通过总线连接为例。
存储器702可用于存储软件程序以及模块,处理器701通过运行存储在存储器702的软件程序以及模块,从而执行网络地址转换映射表的处理设备的各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入装置703可用于接收输入的数字或字符信息,以及产生与网络地址转换映射表的处理设备的用户设置以及功能控制有关的信号输入。
具体在本实施例中,处理器701会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器702中,并由处理器701来运行存储在存储器702中的应用程序,从而实现各种功能:
接收任一数据包后,对所述数据包进行解析得到源网络地址;在预设的网络地址转换NAT映射表中,查找所述源网络地址对应的转换后网络地址;其中,所述NAT映射表为数组结构,所述NAT映射表包括N个桶bucket,每个bucket包括不大于M个表项,每个表项存储有源网络地址与转换后网络地址的对应关系,N和M为预先设置的自然数;如果查找到所述源网络地址对应的转换后网络地址,则基于所述转换后网络地址,对所述数据包进行转发。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请实施例所提供的一种网络地址转换映射表的处理方法、装置及设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种网络地址转换映射表的处理方法,其特征在于,所述方法应用于多核网络转发系统中的任一CPU中,所述方法包括:
接收任一数据包后,对所述数据包进行解析得到源网络地址;
在预设的网络地址转换NAT映射表中,查找所述源网络地址对应的转换后网络地址;其中,所述NAT映射表为数组结构,所述NAT映射表包括N个桶bucket,每个bucket包括不大于M个表项,每个bucket内实行最近最少使用LRU表项替换机制,每个表项存储有源网络地址与转换后网络地址的对应关系,N和M为预先设置的自然数;
如果查找到所述源网络地址对应的转换后网络地址,则基于所述转换后网络地址,对所述数据包进行转发。
2.根据权利要求1所述的网络地址转换映射表的处理方法,其特征在于,所述方法还包括:
如果未查找到所述源网络地址对应的转换后网络地址,则从地址池中获取任一可用网络地址,作为所述源网络地址对应的转换后网络地址;
确定由所述源网络地址与所述转换后网络地址组成的表项对应的bucket;
判断所述bucket包括的表项个数是否达到M个,如果否,则在所述bucket中新建表项,所述表项包括所述源网络地址与所述转换后网络地址的对应关系。
3.根据权利要求2所述的网络地址转换映射表的处理方法,其特征在于,所述表项还包括更新时间,所述更新时间用于记录所述表项最近一次更新的时间;
所述方法还包括:
如果所述bucket包括的表项个数达到M个,则确定所述bucket中更新时间最早的表项;
利用由所述源网络地址与所述转换后网络地址组成的表项,替换所述更新时间最早的表项。
4.根据权利要求3所述的网络地址转换映射表的处理方法,其特征在于,所述方法还包括:
当访问任一表项时,判断所述表项的更新时间与本次访问时间的差值是否大于预设第一阈值;
如果是,则利用本次访问时间更新所述表项的更新时间。
5.根据权利要求3或4所述的网络地址转换映射表的处理方法,其特征在于,所述方法还包括:
按照预设周期,遍历所述NAT映射表中各个表项的更新时间;
删除更新时间与本次遍历时间的差值大于预设第二阈值的表项。
6.根据权利要求5所述的网络地址转换映射表的处理方法,其特征在于,所述按照预设周期,遍历所述NAT映射表中各个表项的更新时间,包括:
当达到预设周期时,判断当前网络地址转换的流量是否为0;
如果是,则遍历所述NAT映射表中各个表项的更新时间。
7.一种网络地址转换映射表的处理装置,其特征在于,所述装置应用于多核网络转发系统中的任一CPU中,所述装置包括:
解析模块,用于接收任一数据包后,对所述数据包进行解析得到源网络地址;
查找模块,用于在预设的网络地址转换NAT映射表中,查找所述源网络地址对应的转换后网络地址;其中,所述NAT映射表为数组结构,所述NAT映射表包括N个桶bucket,每个bucket包括不大于M个表项,每个bucket内实行最近最少使用LRU表项替换机制,每个表项存储有源网络地址与转换后网络地址的对应关系,N和M为预先设置的自然数;
转发模块,用于在查找到所述源网络地址对应的转换后网络地址后,基于所述转换后网络地址,对所述数据包进行转发。
8.根据权利要求7所述的网络地址转换映射表的处理装置,其特征在于,所述装置还包括:
获取模块,用于在未查找到所述源网络地址对应的转换后网络地址时,从地址池中获取任一可用网络地址,作为所述源网络地址对应的转换后网络地址;
确定模块,用于确定由所述源网络地址与所述转换后网络地址组成的表项对应的bucket;
第一判断模块,用于判断所述bucket包括的表项个数是否达到M个;
新建模块,用于在所述第一判断模块的结果为否时,在所述bucket中新建表项,所述表项包括所述源网络地址与所述转换后网络地址的对应关系。
9.根据权利要求8所述的网络地址转换映射表的处理装置,其特征在于,所述表项还包括更新时间,所述更新时间用于记录所述表项最近一次更新的时间;
所述装置还包括:
第二确定模块,用于在所述第一判断模块的结果为是时,确定所述bucket中更新时间最早的表项;
替换模块,用于利用由所述源网络地址与所述转换后网络地址组成的表项,替换所述更新时间最早的表项。
10.一种网络地址转换映射表的处理设备,其特征在于,所述设备包括存储器和处理器,
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令,执行以下步骤:接收任一数据包后,对所述数据包进行解析得到源网络地址;在预设的网络地址转换NAT映射表中,查找所述源网络地址对应的转换后网络地址;其中,所述NAT映射表为数组结构,所述NAT映射表包括N个桶bucket,每个bucket包括不大于M个表项,每个bucket内实行最近最少使用LRU表项替换机制,每个表项存储有源网络地址与转换后网络地址的对应关系,N和M为预先设置的自然数;如果查找到所述源网络地址对应的转换后网络地址,则基于所述转换后网络地址,对所述数据包进行转发。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710923278.XA CN107566549B (zh) | 2017-09-30 | 2017-09-30 | 一种网络地址转换映射表的处理方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710923278.XA CN107566549B (zh) | 2017-09-30 | 2017-09-30 | 一种网络地址转换映射表的处理方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107566549A true CN107566549A (zh) | 2018-01-09 |
CN107566549B CN107566549B (zh) | 2021-06-18 |
Family
ID=60983542
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710923278.XA Active CN107566549B (zh) | 2017-09-30 | 2017-09-30 | 一种网络地址转换映射表的处理方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107566549B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109981633A (zh) * | 2019-03-19 | 2019-07-05 | 全链通有限公司 | 访问服务器的方法、设备及计算机可读存储介质 |
CN111049750A (zh) * | 2019-12-05 | 2020-04-21 | 东软集团股份有限公司 | 一种报文转发方法、系统及设备 |
CN111314505A (zh) * | 2020-04-21 | 2020-06-19 | 杭州迪普科技股份有限公司 | 一种网络地址转换方法及装置 |
CN111459844A (zh) * | 2019-01-21 | 2020-07-28 | 慧荣科技股份有限公司 | 数据储存装置及用于存取逻辑至物理地址映射表的方法 |
CN112104565A (zh) * | 2020-09-15 | 2020-12-18 | 东软集团股份有限公司 | 一种实现报文转发的方法、系统及设备 |
JP2021516923A (ja) * | 2018-03-26 | 2021-07-08 | 新華三技術有限公司New H3C Technologies Co., Ltd. | ネットワークアドレス変換 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247421A (zh) * | 2008-03-28 | 2008-08-20 | 杭州华三通信技术有限公司 | 分布式架构下nat地址池的自适应分配方法和系统 |
CN101262506A (zh) * | 2008-04-21 | 2008-09-10 | 杭州华三通信技术有限公司 | 分布式架构下的网络地址转换端口资源分配方法及系统 |
CN102821165A (zh) * | 2012-04-13 | 2012-12-12 | 中兴通讯股份有限公司 | Ip地址转换方法及装置 |
CN103731356A (zh) * | 2013-12-09 | 2014-04-16 | 福建星网锐捷网络有限公司 | 报文处理方法及装置 |
US20140115686A1 (en) * | 2012-10-24 | 2014-04-24 | Joint stock company "lnfoTeCS" | Method for Managing Connections in Firewalls |
CN106131244A (zh) * | 2016-08-29 | 2016-11-16 | 北京神州绿盟信息安全科技股份有限公司 | 一种报文传送方法及装置 |
CN106657439A (zh) * | 2016-12-06 | 2017-05-10 | 东软集团股份有限公司 | 网络地址转换映射表的操作方法及装置 |
CN106790556A (zh) * | 2016-12-26 | 2017-05-31 | 深圳市风云实业有限公司 | 一种基于分布式系统的nat会话管理方法 |
-
2017
- 2017-09-30 CN CN201710923278.XA patent/CN107566549B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247421A (zh) * | 2008-03-28 | 2008-08-20 | 杭州华三通信技术有限公司 | 分布式架构下nat地址池的自适应分配方法和系统 |
CN101262506A (zh) * | 2008-04-21 | 2008-09-10 | 杭州华三通信技术有限公司 | 分布式架构下的网络地址转换端口资源分配方法及系统 |
CN102821165A (zh) * | 2012-04-13 | 2012-12-12 | 中兴通讯股份有限公司 | Ip地址转换方法及装置 |
US20140115686A1 (en) * | 2012-10-24 | 2014-04-24 | Joint stock company "lnfoTeCS" | Method for Managing Connections in Firewalls |
CN103731356A (zh) * | 2013-12-09 | 2014-04-16 | 福建星网锐捷网络有限公司 | 报文处理方法及装置 |
CN106131244A (zh) * | 2016-08-29 | 2016-11-16 | 北京神州绿盟信息安全科技股份有限公司 | 一种报文传送方法及装置 |
CN106657439A (zh) * | 2016-12-06 | 2017-05-10 | 东软集团股份有限公司 | 网络地址转换映射表的操作方法及装置 |
CN106790556A (zh) * | 2016-12-26 | 2017-05-31 | 深圳市风云实业有限公司 | 一种基于分布式系统的nat会话管理方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021516923A (ja) * | 2018-03-26 | 2021-07-08 | 新華三技術有限公司New H3C Technologies Co., Ltd. | ネットワークアドレス変換 |
JP7082211B2 (ja) | 2018-03-26 | 2022-06-07 | 新華三技術有限公司 | ネットワークアドレス変換 |
CN111459844A (zh) * | 2019-01-21 | 2020-07-28 | 慧荣科技股份有限公司 | 数据储存装置及用于存取逻辑至物理地址映射表的方法 |
CN109981633A (zh) * | 2019-03-19 | 2019-07-05 | 全链通有限公司 | 访问服务器的方法、设备及计算机可读存储介质 |
CN109981633B (zh) * | 2019-03-19 | 2021-05-11 | 全链通有限公司 | 访问服务器的方法、设备及计算机可读存储介质 |
CN111049750A (zh) * | 2019-12-05 | 2020-04-21 | 东软集团股份有限公司 | 一种报文转发方法、系统及设备 |
CN111049750B (zh) * | 2019-12-05 | 2022-12-09 | 东软集团股份有限公司 | 一种报文转发方法、系统及设备 |
CN111314505A (zh) * | 2020-04-21 | 2020-06-19 | 杭州迪普科技股份有限公司 | 一种网络地址转换方法及装置 |
CN111314505B (zh) * | 2020-04-21 | 2023-08-29 | 杭州迪普科技股份有限公司 | 一种网络地址转换方法及装置 |
CN112104565A (zh) * | 2020-09-15 | 2020-12-18 | 东软集团股份有限公司 | 一种实现报文转发的方法、系统及设备 |
CN112104565B (zh) * | 2020-09-15 | 2024-03-29 | 东软集团股份有限公司 | 一种实现报文转发的方法、系统及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107566549B (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107566549A (zh) | 一种网络地址转换映射表的处理方法、装置及设备 | |
CN111478820B (zh) | 网络靶场大规模网络环境的网络设备配置系统与方法 | |
US8208408B2 (en) | Tree-based node insertion method and memory device | |
CN104917851B (zh) | 信息处理方法及dns缓存服务器 | |
US9053054B1 (en) | System and method for fetching the latest versions of stored data objects | |
US20180041468A1 (en) | Managing dynamic ip address assignments | |
US8849825B1 (en) | System and method for clustering distributed hash table entries | |
US9626224B2 (en) | Optimizing available computing resources within a virtual environment | |
CN104504003B (zh) | 图数据的搜索方法和装置 | |
US10397362B1 (en) | Combined cache-overflow memory structure | |
CN104899160B (zh) | 一种缓存数据控制方法、节点控制器和系统 | |
CN105635342B (zh) | 建立连接的方法、域名服务器以及存储节点 | |
EP3338436B1 (en) | Lock-free updates to a domain name blacklist | |
US10108539B2 (en) | Allocation of distributed data structures | |
CN101917494B (zh) | 自治互联网的实现 | |
CN103957282B (zh) | 一种域内终端用户域名解析加速系统及其方法 | |
CN106331148A (zh) | 一种客户端数据读取时的缓存管理方法及其装置 | |
CN104125238A (zh) | 一种DNS递归服务器抗DoS、DDoS攻击的方法 | |
CN110489405A (zh) | 数据处理的方法、装置和服务器 | |
EP2743833B1 (en) | Method and apparatus for querying and traversing virtual memory area | |
CN110427386A (zh) | 数据处理方法、装置及计算机存储介质 | |
US9264399B1 (en) | Lock-free updates to a domain name blacklist | |
JP2016177688A (ja) | データ処理装置、データ処理方法およびコンピュータプログラム | |
CN104965793B (zh) | 一种云存储数据节点装置 | |
US11683316B2 (en) | Method and device for communication between microservices |
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 |