一种基于分布式系统的NAT会话管理方法与流程

文档序号:12494616阅读:281来源:国知局
一种基于分布式系统的NAT会话管理方法与流程

本发明属于数据通信和网络安全领域,尤其涉及一种基于分布式系统的NAT会话管理方法。



背景技术:

随着互联网技术的迅猛发展,越来越多的用户进入互联网获取各种信息,包括当前热门的物联网技术也离不开互联网的支撑。但是传统IPv4网络的地址仅有32bit,只能分配给有限的用户,而IPv6的出现也正是为了解决这个地址资源瓶颈问题。

当前传统IPv4网络发展已经相当成熟,完全过渡到IPv6还需要一段较长时间。为了解决IPv4网络中地址资源瓶颈问题,NAT(Network Address Translation)技术应运而生,该技术能将多个私网地址映射到一个或多个公网地址,实现网络地址的高度重用,解决地址资源瓶颈问题。

分布式系统通常包括多块控制板卡、多块业务板卡和交换板卡等,每张板卡都是一个独立的子系统,整个系统的正常运行依赖于每个子系统的互相协作。在网络通信设备中,控制板卡主要用于运行各种路由协议、各种表项以及规则的产生和下发。业务板卡主要用于接收控制板卡下发的各种表项及规则,并根据这些表项和规则进行网络数据流处理和转发。交换板卡主要用于连接控制板卡和业务板卡,实现高速无阻塞数据交换传递功能。

NAT技术广泛应用于基于分布式系统的网络通信设备中,其实现关键在于会话的使用和管理,寻找一种以较低的管理复杂度使得NAT在分布式系统中高效运行的会话管理方法至关重要。

专利201510056361.2中通过信息树数据结构对会话进行老化管理:当IP信息发生改变后,将改变前的IP信息以节点的形式插入到预设的IP信息树型存储结构的等待树中,根据等待树中的IP节点数量,以及老化定时时间,确定是否对流表和NAT会话表进行老化,本方案中采用了树形结构进行老化管理,实现较为复杂。

专利200610140776.9中通过单独创建会话保活报文的方式对会话表项进行保持更新。该方法由于要单独创建保活报文,带来了额外的管理开销。

综上,分布式系统中的NAT技术对会话管理的依赖较强,要实现该技术,需要找到一种简单、高效的会话管理方法。



技术实现要素:

本发明所要解决的技术问题是提供一种基于分布式系统的NAT会话管理方法,该方法有效提高会话键值查找速度及会话的老化和查询效率。

本发明解决上述技术问题的技术方案如下:

一种基于分布式系统的NAT会话管理方法,包括以下步骤:

(1)创建NAT会话:将会话发起方向IP报文中的五元组信息作为会话发起方向键值,结合NAT规则计算出会话回应方向键值;根据发起方向键值和回应方向键值分别计算出hash桶索引,再将发起方向键值和回应方向键值分别加入到对应hash桶中,形成NAT会话;最后将该NAT会话加入到一个双向链表中,完成NAT会话的创建;

(2)对创建的NAT会话进行保持更新:将收到IP报文中的五元组信息作为查询键值,并由该查询键值计算出hash桶索引值,再到对应hash桶中查询对应的会话键值;通过查询到的会话键值得到对应的NAT会话,将会话中当前时间更新为系统时间,完成对已创建NAT会话的保持更新,以确保该会话在有通信流量时不被老化删除;

(3)对更新后的NAT会话进行老化操作:采用一个老化指示指针指向双向链表开始处,并每间隔一段时间从指针指示处延着该双向链表对其中的NAT会话进行老化检查;在检查每条会话时,将当前时间加上老化时间大于系统时间的会话进行老化处理,同时保留其他会话,并更新所述指示指针位置,完成对更新后的NAT会话的老化操作;

(4)查询老化操作后的NAT会话:采用一个查询指示指针指向双向链表开始处,并每间隔一段时间判断是否有查询动作需要执行;如果需要执行查询动作,便从指针指示处延着双向链表对其中的NAT会话进行查询,更新所述指示指针位置,完成对老化检查后的NAT会话的查询操作。

本发明的有益效果是:本方法有效提高了会话键值查找速度,以及提高了会话的老化和查询效率。

在上述技术方案的基础上,本发明还可以做如下改进。

进一步,所述步骤(1)的创建NAT会话的具体方法为,

(11)NAT设备接收到报文时,提取出报文中的IP五元组信息作为会话发起方向键值,并将其保存到会话发起方向键值中,所述IP五元组为源IP、目的IP、源端口、目的端口和协议号;

(12)对接收到的报文使用会话进行NAT规则匹配;

(13)根据NAT规则匹配结果,判断该报文是否需要进行NAT转换,如果不需要做NAT转换,则进入正常转发流程;如果需要进行NAT转换,则进入下一步;

(14)根据NAT转换规则对IP五元组中的源IP、源端口或目的IP、目的端口进行转换,选择转化后的IP和端口,通过选择的IP和端口得到该报文对应的会话回应方向键值;

(15)根据会话发起方向键值和会话回应方向键值分别计算出hash桶索引值会话发起方向hash索引和会话回应方向hash索引;

(16)根据计算出的hash桶索引,分别将会话发起方向键值和会话回应方向键值加入到对应的hash桶中;

(17)将会话发起方向键值和会话回应方向键值对应的会话加入到双向链表中,便于老化和查询操作。

采用上述进一步方案的有益效果是:根据IP报文五元组信息将所有会话发起方向键值和回应方向键值分开,并均匀散列到不同的hash桶中,可有效减少同一会话中两个方向的报文流量以及不同会话流量间的hash访问冲突,提高报文转发时查询会话键值的效率。

进一步,所述步骤(2)对创建的NAT会话进行保持更新方法为,

(21)NAT设备接收到报文时,提取报文中的IP五元组信息作为会话键值,并保存到会话键值中;

(22)用会话键值计算出hash桶索引值,并到该hash桶中查询该会话键值;

(23)判断该hash桶中是否查询到该会话键值,如果未查询到该会话键值,则返回会话创建流程,重新创建NAT会话;如果查询到该会话键值,则进入下一步;

(24)获取当前系统时间,并将该会话键值对应会话中的当前时间更新为当前系统时间,保证会话不被老化删除。

采用上述进一步方案的有益效果是:在NAT报文转发查询会话键值的同时,采用捎带更新的方式对会话进行保持更新,避免了对会话键值的二次查询,简化更新流程、提高会话更新效率。

进一步,所述步骤(3)对更新后的NAT会话进行老化操作方法为,

(31)将老化指示指针指向双向链表开始处;

(32)将每次老化检查的会话条数最大值设置为max,将已检查会话条数设置为0;

(33)判断进行老化检查的会话条数是否大于等于最大值max或双向链表中是否已无会话;如果是,则进入步骤(34);如果否,则进入步骤(35);

(34)延时一段时间后返回步骤(32)进行下一次老化检查;

(35)获取老化指示指针所指向会话的当前时间、老化时间和系统时间;

(36)判断会话当前时间与会话老化时间之和是否小于系统时间,如果是,则进入步骤(37);如果否,则进入步骤(38)说明该会话已较长时间无流量通过,

(37)将该会话老化删除,并释放相关资源,更新老化指示指针,使老化指示指针指向双向链表中的下一条会话;

(38)不对该会话进行老化删除操作,直接更新老化指示指针,使老化指示指针指向双向链表中的下一条会话;

(39)返回步骤(33),循环对会话进行老化检查操作。

采用上述进一步方案的有益效果是:采用单独的双向链表和老化指示指针结合的方式完成对NAT会话的老化操作,避免了在会话老化查询过程中对hash桶二次加锁,在提高会话老化效率的同时不影响NAT报文的转发效率。

进一步,所述步骤(4)查询老化操作后的NAT会话方法为,

(41)将会话查询指示指针指向双向链表开始处;

(42)判断当前是否需要进行查询操作,如果不需要执行查询操作,则进入步骤(43);如果需要执行查询操作,则进入步骤(44);

(43)延时一段时间后返回步骤(42);

(44)设置每次能查询的会话条数最大值为max,设置已查询的会话条数为0;

(45)判断已查询会话条数是否大于等于最大值max或双向链表中是否已无会话,如果是,则返回步骤(43);如果否,则进入步骤(46);

(46)获取查询指示指针当前所指向会话的信息,完成当前会话的查询;

(47)更新查询指示指针,使其指向双向链表中的下一条会话;

(48)返回步骤(45),对双向链表中的其他会话进行查询。

采用上述进一步方案的有益效果是:采用单独的双向链表和查询指示指针结合的方式完成对NAT会话的查询操作,避免了在会话查询过程中对hash桶二次加锁,在提高会话查询效率的同时不影响NAT报文的转发效率。

附图说明

图1是分布式系统通用架构图;

图2是本发明实施例中的会话结构图;

图3是本发明实施例中的hash桶会话管理结构图;

图4是本发明实施例中的会话创建流程图;

图5是本发明实施例中的会话保持更新流程图;

图6是本发明实施例中的会话老化流程图;

图7是本发明实施例中的会话查询流程图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

图1是分布式系统通用架构,包括控制板卡、交换板卡和业务板卡。本发明实施例中重点关注的是业务板卡,NAT模块运行在业务板卡上。每张业务板卡都是多CPU系统,可根据实际情况进行功能定制,并不局限于本实施例。如本实施例中,业务板卡的CPU0用于完成会话的老化检查和查询工作,其他CPU用于完成数据业务的转发、NAT会话创建和保持更新功能。

图2是本发明实施例中的会话结构图,图中每条会话结构中都含有一个会话发起方向键值、会话回应方向键值、双向链表节点及其他信息。会话发起方向键值中保存会话发起方向报文的IP五元组信息,包括报文的源IP、源端口、目的IP、目的端口和协议号,会话回应方向键值保存了会话回应方向报文的IP五元组信息,双向链表节点用于将新创建会话加入到双向链表中。

图3是本发明实施例中的hash桶会话管理结构图,hash桶大小为N,采用hash链表结构处理hash冲突。桶中存放会话的IP五元组信息,称为会话键值,包括会话中的发起方向键值和回应方向键值。

为了解决分布式系统NAT技术中的会话管理问题,本发明提出一种NAT会话管理方法,其中包括:NAT会话的创建方法;NAT会话的保持更新方法;NAT会话的老化方法;NAT会话的查询方法。

在NAT设备内部,每个报文根据IP五元组被归类到不同的报文流中,每一种报文流将对应一条NAT会话。

对于NAT会话的创建方法如下:当NAT设备收到需要做NAT的报文流第一个报文时,提取出报文中的IP五元组信息在会话发起方向键值中保存,同时可根据NAT转换规则对IP五元组中的源IP、源端口或目的IP、目的端口进行转换,将转换后的IP五元组作为hash算法输入参数,计算出一个会话发起方向hash值。同时,通过NAT中的源IP和源端口转换模块可以得到该报文流的响应报文IP五元组信息在会话回应方向键值中保存,同样的方式进行hash计算得到会话响应方向的hash值,通过计算出的两个会话hash值分别将该会话两个方向的IP五元组信息会话发起方向键值和会话回应方向键值存入对应的hash桶中,对于hash冲突可采用hash链表结构解决,也可以采用其他方式解决。如果hash桶大小及hash算法设置合适,可将会话键值均匀散列到不同的hash桶中,加快会话的插入、查询、删除等操作,在较大程度上提升NAT性能。

图4是本发明实施例中的会话创建流程图,NAT模块启动后从使能了NAT功能的接口接收报文,进入102流程提取报文中的IP五元组信息,并将其保存到会话发起方向键值中;具体地,报文进入103流程使用会话进行NAT规则匹配;然后进入判断单元104,通过NAT规则匹配结果判断该报文是否需要做NAT转换,如果不需做NAT转换则进入105,走普通转发流程;如果需要做NAT转换,进入106模块进行IP和端口选择,通过选择出的IP和端口可以得到该报文对应的会话回应方向键值;然后进入到107流程,使用会话发起方向键值和会话回应方向键值分别计算出hash桶索引值会话发起方向hash索引和会话回应方向hash索引;进入108流程后,根据计算出的hash桶索引分别将会话发起方向键值和会话回应方向键值加入到对应的hash桶中;进入109流程后,将会话发起方向键值和会话回应方向键值对应的会话加入到双向链表中,便于老化和查询操作。

对于NAT会话的保持更新方法如下:当某个报文流对应的会话在NAT设备中已经建立时,需要对会话时间进行不断更新以确保该会话在有通信流量时不被老化删除。具体方法是:系统或NAT模块运行一个时钟,该时钟能自动更新当前时间,当NAT设备从使能了NAT功能的接口接收到报文时,同样提取出报文的IP五元组进行hash计算,进一步地在该hash值对应的hash桶中可查找到是否有该报文对应的会话,如果有便将该NAT会话的当前时间更新为时钟的当前时间,以便在老化流程中不被老化删除。

图5是本发明实施例中的会话保持更新流程图,NAT模块启动后从使能了NAT功能的接口接收报文,进入202流程提取报文的IP五元组信息,并保存到会话键值中;进入203流程用会话键值计算出hash桶索引值,并到该hash桶中查询该会话键值;进入204判断单元,如果在该hash桶中没有查询到该会话键值,则继续走205会话创建流程;如果查询到了,则获取当前系统时间,并将该会话键值对应会话中的当前时间更新为当前系统时间,保证会话不被老化删除。

对于NAT会话的老化方法如下:由于前期创建的NAT会话被分插到了不同的hash桶中,要对会话进行老化操作,需要对某个hash桶进行加锁操作,但这样势必引起hash桶频繁加锁,降低NAT性能。为了解决该问题,本发明提出将新创建的会话在加入到hash桶的同时,也都同时加入到一个双向链表中,初始化时用一个老化指示指针指向该双向链表头部。NAT模块启动一个老化定时器,每间隔一段时间便从老化指示指针处开始延着双向链表,对其中的会话进行老化检查操作。检查方法是获取当前系统时间、会话中保存的当前时间和会话老化时间,如果会话保存的当前时间+会话老化时间<当前系统时间,则将会话老化掉,反之则不进行老化操作,保留会话。最后更新老化指示指针指向位置,保存下一次老化检查开始处。

图6是本发明实施例中的会话老化流程图,NAT模块启动后,进入302初始化阶段,将老化指示指针指向双向链表开始处。然后进入303,将每次最多老化检查的会话条数设置为max,将已检查会话数设置为0;然后进入304判断单元,如果进行老化检查的会话条数大于等于最大值max或双向链表中已无会话,则进入305,延时一段时候后进行下一次老化检查;反之,进入306,获取老化指示指针所指向会话的当前时间、老化时间和系统时间。然后进入307判断单元,如果会话当前时间+会话老化时间<系统时间,说明该会话已较长时间无流量通过,进入308流程,将该会话老化删除并释放相关资源,然后进入309流程更新老化指示指针。反之,则不对该会话进行老化删除操作,直接进入309流程更新老化指示指针,使老化指示指针指向双向链表中的下一条会话。最后,再次进入303流程,循环对会话进行老化检查操作。

对于NAT会话的查询方法如下:初始时,使用一个查询指示指针指向双向链表头部,每当有查询命令时,便从查询指示指针指向处开始遍历查询双向链表中的会话项,查询结束后更新查询指示指针指向位置,待下一次查询操作。

图7是本发明实施例中的会话查询流程图,NAT模块启动后,进入402初始化阶段将会话查询指示指针指向双向链表开始处,然后进入404判断单元,判断当前是否需要进行查询操作。如果不需要则进入403,延时一段时间后再进入404判断单元。如果需要执行查询操作,则进入405流程,设置每次最多能查询的会话条数为max,设置已查询的会话条数为0;然后进入406判断单元,如果已查询会话条数大于等于max或双向链表中已无会话,则进入403,延时一段时间后再进入404判断单元;反之,进入407流程,获取查询指示指针当前所指向会话的信息,完成当前会话的查询。然后进入408流程,更新查询指示指针,使其指向双向链表中的下一条会话;最后,再次进入406判断单元,对双向链表中的其他会话进行查询。

由于本发明提出的会话管理方法适用于分布式系统,在分布式网络通信设备中,NAT模块通常都工作在业务板卡上,对于各个业务板卡会话的保持更新、老化和查询方法一致。通常网络通信设备中的业务板卡都是多CPU(Central Processing Unit)系统,CPU资源可以按需进行分配和定制,视具体需求不同而不同,本发明中使用负责流量转发的CPU对NAT会话进行创建和保持更新操作,另外单独分配一个CPU或多个执行NAT会话的老化和查询操作,但不仅限于此分配方式。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1