一种NAT地址转换链表的实现方法技术

技术编号:26762377 阅读:21 留言:0更新日期:2020-12-18 23:10
本发明专利技术公开了一种NAT地址转换链表的实现方法,S1、新建流表流程:系统从链表池子Pool那里申请出一个节点,其中包括两块内存,根据配置信息,计算回源方向的5元组信息,然后给节点的两个方向的5元组信息赋值,根据请求方向的5元组,计算哈希的索引值index1,得到该索引值的双向链表,然后把请求方向的5元组节点push到这条链表尾部,根据回源方向的5元组,计算哈希的索引值index2,本发明专利技术涉及计算机软件技术领域。该NAT地址转换链表的实现方法,申请、释放链表不需要加锁,性能更高,链表池子和哈希表配合,申请和释放只是简单的出队列和入队列的操作,而且每个初始状态entry分别以高速缓存线路cacheline对齐,提升了申请和释放效率。

【技术实现步骤摘要】
一种NAT地址转换链表的实现方法
本专利技术涉及计算机软件
,具体为一种NAT地址转换链表的实现方法。
技术介绍
网络地址转换简称NAT,是1994年提出的。当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT方法,这种方法需要在专用网连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。这样,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和因特网连接,另外,这种通过使用少量的公有IP地址代表较多的私有IP地址的方式,将有助于减缓可用的IP地址空间的枯竭。地址转换是当前常见的技术手段,可以有效的私有地址转换为公有地址,同时可以达到保护内网的目的。当通过地址转换后,某个内网ip地址都会被唯一的进行映射到某个外网ip地址,现有的NAT地址转换需要加密,且性能较差,申请和释放效率较低。
技术实现思路
针对现有技术的不足,本专利技术提供了一种NAT地址转换链表的实现方法,解决了NAT地址转换需要加密,且性能较差,申请和释放效率较低的问题。为实现以上目的,本专利技术通过以下技术方案予以实现:一种NAT地址转换链表的实现方法,具体包括以下步骤:S1、新建流表流程:系统从链表池子Pool那里申请出一个节点,其中包括两块内存,根据配置信息,计算回源方向的5元组信息,然后给节点的两个方向的5元组信息赋值,根据请求方向的5元组,计算哈希的索引值index1,得到该索引值的双向链表,然后把请求方向的5元组节点push到这条链表尾部,根据回源方向的5元组,计算哈希的索引值index2,得到该索引值index的双向链表,然后把请求方向的5元组节点push到这条链表尾部,获取当前的超时时间tick,根据配置超时时间计算超时时间tick值,找时间轮上刻度Ti,得到刻度Ti时刻上的双向链表,把该节点push到刻度Ti的双向链表尾部。S2、删除流表流程:超时,获取当前刻度上的双向链表,获取该链表上的头结点,通过节点获取请求方向的tuple信息,并且哈希表上删除该信息,通过节点获取回源方向的tuple信息,并且哈希表上删除该信息,把该节点从双向链表上删除掉,把它还给链表池子Pool,检查链表是否为空,如果非空,跳转到获取该链表上的头节点。S3、更新节点超时:提取报文5元组,计算哈希索引值index,查找哈希表,检查索引值index表项的双线链表是否为空,非空时,遍历链表,直到找到匹配的节点,根据超时时间,计算超时时刻Tj,把该节点从当前的时刻双线链表中剔除,把该节点push到超时时刻Tj的双线链表中。优选的,所述S1中链表池子Pool是储存链表节点的一个池子,这些链表的节点包括请求方向5元组和回源方向的5元组信息。优选的,所述S1中初始化时,把所有节点push到链表池子Pool上。优选的,所述S1中哈希表保存的是双向链表的链表头,初始化时,都把这个头部的节点prev和节点next指针指向自己,表示这个表的双向链表为初始状态empty;当新建流表时,根据请求方向的5元组计算出哈希的索引值index1,找到对应索引的队列,把请求方向的5元组信息节点push到该索引值index1下面的双向链表。优选的,所述S1中根据回源方向的5元组计算出哈希的索引值index2,找到对应索引的队列,再把回源方向的5元组信息节点push到该索引值index2下的双线链表尾部,这样两个方向的5元组都挂接到同一个哈希表中。优选的,所述S1中时间轮是当系统的超时时间tick走过了某一单位值,指向时间轮的指针就会指向下一跳。与哈希表蕾西,每一刻度上都用双向链表保存着将要处理的节点,这些节点用双线链表关联在一起,如果为空,表示没有需要处理的节点,初始化时,时间轮上所有的刻度都为空。优选的,所述S1中当新建流表时,根据配置的超时时间长度,得到时间轮上的刻度Ti时刻,把节点push到刻度Ti双线链表的尾部。如果新建流表没超时,又有报文过来,再重新计算得到超时时刻Tj,把节点从当前所在超时刻度删除,然后节点push到超时时刻Tj的双线链表尾部。有益效果本专利技术提供了一种NAT地址转换链表的实现方法。与现有技术相比具备以下有益效果:该NAT地址转换链表的实现方法,通过在S1、新建流表流程:系统从链表池子Pool那里申请出一个节点,其中包括两块内存,根据配置信息,计算回源方向的5元组信息,然后给节点的两个方向的5元组信息赋值,根据请求方向的5元组,计算哈希的索引值index1,得到该索引值的双向链表,然后把请求方向的5元组节点push到这条链表尾部,根据回源方向的5元组,计算哈希的索引值index2,得到该索引值index的双向链表,然后把请求方向的5元组节点push到这条链表尾部,获取当前的超时时间tick,根据配置超时时间计算超时时间tick值,找时间轮上刻度Ti,得到刻度Ti时刻上的双向链表,把该节点push到刻度Ti的双向链表尾部,S2、删除流表流程:超时,获取当前刻度上的双向链表,获取该链表上的头结点,通过节点获取请求方向的tuple信息,并且哈希表上删除该信息,通过节点获取回源方向的tuple信息,并且哈希表上删除该信息,把该节点从双向链表上删除掉,把它还给链表池子Pool,检查链表是否为空,如果非空,跳转到获取该链表上的头节点,S3、更新节点超时:提取报文5元组,计算哈希索引值index,查找哈希表,检查索引值index表项的双线链表是否为空,非空时,遍历链表,直到找到匹配的节点,根据超时时间,计算超时时刻Tj,把该节点从当前的时刻双线链表中剔除,把该节点push到超时时刻Tj的双线链表中,使得每个线程都有自己的链表池子和哈希表,申请、释放链表不需要加锁,性能更高,链表池子和哈希表配合,申请和释放只是简单的出队列和入队列的操作,而且每个初始状态entry分别以高速缓存线路cacheline对齐,提升了申请和释放效率。附图说明图1为本专利技术的整体示意图;图2为本专利技术哈希表原理图;图3为本专利技术时间轮远离图;图4为本专利技术新建流表流程图;图5为本专利技术删除流表流程图;图6为本专利技术更新节点超时流程图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参阅图1-6,本专利技术提供一种技术方案:一种NAT地址转换链表的实现方法,具体包括以下步骤:S1、新建流表流程:系统从链表池子Pool那里申请出一个节点,其中包括两块内存,根据配置信息,计算回源方向的5元组信息,然后给节点的两个方向的5元本文档来自技高网...

【技术保护点】
1.一种NAT地址转换链表的实现方法,其特征在于:具体包括以下步骤:/nS1、新建流表流程:系统从链表池子Pool那里申请出一个节点,其中包括两块内存,根据配置信息,计算回源方向的5元组信息,然后给节点的两个方向的5元组信息赋值,根据请求方向的5元组,计算哈希的索引值index1,得到该索引值的双向链表,然后把请求方向的5元组节点push到这条链表尾部,根据回源方向的5元组,计算哈希的索引值index2,得到该索引值index的双向链表,然后把请求方向的5元组节点push到这条链表尾部,获取当前的超时时间tick,根据配置超时时间计算超时时间tick值,找时间轮上刻度Ti,得到刻度Ti时刻上的双向链表,把该节点push到刻度Ti的双向链表尾部;/nS2、删除流表流程:超时,获取当前刻度上的双向链表,获取该链表上的头结点,通过节点获取请求方向的tuple信息,并且哈希表上删除该信息,通过节点获取回源方向的tuple信息,并且哈希表上删除该信息,把该节点从双向链表上删除掉,把它还给链表池子Pool,检查链表是否为空,如果非空,跳转到获取该链表上的头节点;/nS3、更新节点超时:提取报文5元组,计算哈希索引值index,查找哈希表,检查索引值index表项的双线链表是否为空,非空时,遍历链表,直到找到匹配的节点,根据超时时间,计算超时时刻Tj,把该节点从当前的时刻双线链表中剔除,把该节点push到超时时刻Tj的双线链表中。/n...

【技术特征摘要】
1.一种NAT地址转换链表的实现方法,其特征在于:具体包括以下步骤:
S1、新建流表流程:系统从链表池子Pool那里申请出一个节点,其中包括两块内存,根据配置信息,计算回源方向的5元组信息,然后给节点的两个方向的5元组信息赋值,根据请求方向的5元组,计算哈希的索引值index1,得到该索引值的双向链表,然后把请求方向的5元组节点push到这条链表尾部,根据回源方向的5元组,计算哈希的索引值index2,得到该索引值index的双向链表,然后把请求方向的5元组节点push到这条链表尾部,获取当前的超时时间tick,根据配置超时时间计算超时时间tick值,找时间轮上刻度Ti,得到刻度Ti时刻上的双向链表,把该节点push到刻度Ti的双向链表尾部;
S2、删除流表流程:超时,获取当前刻度上的双向链表,获取该链表上的头结点,通过节点获取请求方向的tuple信息,并且哈希表上删除该信息,通过节点获取回源方向的tuple信息,并且哈希表上删除该信息,把该节点从双向链表上删除掉,把它还给链表池子Pool,检查链表是否为空,如果非空,跳转到获取该链表上的头节点;
S3、更新节点超时:提取报文5元组,计算哈希索引值index,查找哈希表,检查索引值index表项的双线链表是否为空,非空时,遍历链表,直到找到匹配的节点,根据超时时间,计算超时时刻Tj,把该节点从当前的时刻双线链表中剔除,把该节点push到超时时刻Tj的双线链表中。


2.根据权利要求1所述的一种NAT地址转换链表的实现方法,其特征在于:所述S1中链表池子Pool是储存链表节点的一个池子,这些链表的节点包括请求方向5元组和回源方向的5元组信息。


3.根据权利要求1所述...

【专利技术属性】
技术研发人员:严克剑
申请(专利权)人:广东网堤信息安全技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1