专利名称:检测内部服务器组成员失效的方法及网络地址转换设备的制作方法
技术领域:
本发明涉及通信检测技术领域,具体涉及检测内部服务器组成员失效的方法及网络地址转换(NAT,Network Address Translation)设备。
背景技术:
通过NAT内部服务器组内的多台服务器共同对外提供某种服务,可以实现内部服务器的负载分担。基本原理是由NAT设备对外公布一个虚拟IP地址,当有客户访问该虚拟 IP地址时,由NAT设备通过一定的哈希(HASH)算法,将其映射到内部服务器组的某一成员。图1给出了现有的内部服务器组共同对外提供某种服务的组网示例图,如图1 所示,当个人计算机(PC,Personal Computer) 1访问NAT设备对外公布的虚拟IP地址 212. 1. 1. 2时,通过NAT转换可能映射到服务器(Server) 1,后续由Serverl为PCl提供服务,而当PC2访问该虚拟IP地址时,通过NAT转换可能会映射到krver3,后续由Server3 为PC2提供服务,从而实现内部服务器的负载分担。当前的地址映射方法是取报文内容如源IP地址计数出一个HASH值,用该值与内部服务器组成员个数取模,得的值作为偏移量与内部服务器组配置表的基值相加从而得到相应的内部服务器组成员。该方法存在的问题是如果内部服务器组的某一成员失效了,即不能提供相应服务时,NAT设备并不能感知到,还是会将部分访问分担到该成员,导致这些访问得不到服务, 即使此时还有其它有效服务器组成员存在。
发明内容
本发明提供检测内部服务器组成员失效的方法及NAT设备,以实现NAT设备对内部服务器组成员失效的检测。本发明的技术方案是这样实现的一种检测内部服务器组成员失效的方法,该方法包括若NAT设备接收到一内网设备发来的ICMP目的不可达报文,根据该报文确定不可达的服务器,将该服务器的状态切换为探测,探测该服务器是否三层可达,若否,则将该服务器的状态切换为失效;若是,将该服务器的状态切换为stale,当有业务流被分担到该服务器上时,在该业务流对应会话上加S标记,将该服务器的状态切换为delay,为该服务器设置第一定时器,当第一定时器超时前,若该带S标记的会话从open状态切换为ready状态,或者针对该带S标记的会话的TCP三次握手成功,则将该服务器的状态切换为有效;否则,将该服务器的状态切换为失效;若NAT设备接收到一内网设备发来的RST报文,根据该报文确定不可达的服务器, 将该服务器的状态切换为stale,当有业务流被分担到该服务器上时,在该业务流对应会话上加S标记,将该服务器的状态切换为delay,为该服务器设置第一定时器,当第一定时器超时前,若针对该带S标记的会话的TCP三次握手成功,则将该服务器的状态切换为有效;否则,将该服务器的状态切换为失效。当NAT设备接收到一内网设备发来的ICMP目的不可达报文时,所述将该服务器的状态切换为失效之后进一步包括为该服务器设置第二定时器,当第二定时器超时时,返回所述将该服务器的状态切换为探测的动作;当NAT设备接收到一内网设备发来的RST报文时,所述将该服务器的状态切换为失效之后进一步包括为该服务器设置第二定时器,当第二定时器超时时,返回将该服务器的状态切换为stale的动作。当NAT设备接收到一内网设备发来的ICMP目的不可达报文时,所述确定不可达的服务器之后,将该服务器的状态切换为探测之前进一步包括NAT设备根据ICMP目的不可达报文携带的原始数据包的五元组,确定对应的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变;当NAT设备接收到一内网设备发来的RST报文时,所述确定不可达的服务器之后, 将该服务器的状态切换为stale之前进一步包括NAT设备根据复位报文的五元组,确定对应的处于同步状态的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变。所述方法进一步包括当NAT设备接收到业务流首包时,在内部服务器组中选择一个状态为有效或 stale的服务器,将该业务流分担到所选择的服务器上。所述方法进一步包括当发现服务器的状态切换为探测或delay或失效,则在状态为stale或有效的服务器中,选择一个第二服务器作为所述服务器的备用成员;若发现所述服务器作为了其它服务器的备用成员,则为该其它服务器重新在stale或reachable的服务器中选择备用成员;当NAT设备接收到业务流首包时,按照预设负载均衡算法,计算分担该业务流的服务器,判断分担该业务流的服务器的状态是否为stale或有效,若是,直接将业务流分担到该服务器上;否则,将业务流分担到该服务器的备用成员上。一种检测内部服务器组成员失效的方法,该方法包括若NAT设备接收到一内网设备发来的ICMP目的不可达报文,根据该报文确定不可达的服务器,将该服务器的状态切换为探测,若发现该服务器对外提供UDP服务,则探测该服务器是否三层可达,若否,则将该服务器的状态切换为失效;若是,将该服务器的状态切换为stale,当有业务流被分担到该服务器上时,在该业务流对应会话上加S标记,将该服务器的状态切换为delay,为该服务器设置第一定时器,当第一定时器超时前,若该带S标记的会话从open状态切换为ready状态,则将该服务器的状态切换为有效;否则,将该服务器的状态切换为失效;若NAT设备接收到一内网设备发来的ICMP目的不可达报文或RST报文,根据该报文确定不可达的服务器,将该服务器的状态切换为探测,若发现该服务器对外提供TCP服务,则与该服务器进行TCP三次握手,若成功,则将该服务器的状态切换为有效,若失败,则将该服务器的状态切换为失效。
当NAT设备接收到一内网设备发来的ICMP目的不可达报文或RST报文时,所述将该服务器的状态切换为失效之后进一步包括为该服务器设置第二定时器,当第二定时器超时时,返回所述将该服务器的状态切换为探测的动作。当NAT设备接收到一内网设备发来的ICMP目的不可达报文时,所述确定不可达的服务器之后,将该服务器的状态切换为探测之前进一步包括NAT设备根据ICMP目的不可达报文携带的原始数据包的五元组,确定对应的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变;当NAT设备接收到一内网设备发来的RST报文时,所述确定不可达的服务器之后, 将该服务器的状态切换为探测之前进一步包括NAT设备根据复位报文的五元组,确定对应的处于同步状态的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变。所述发现该服务器对外提供TCP服务之后,与该服务器进行TCP三次握手之前进一步包括判断本设备与该服务器的TCP连接是否存在,若是,将该服务器的状态切换为有效;否则,执行所述与该服务器进行TCP三次握手的动作。所述方法进一步包括当NAT设备接收到业务流首包时,在内部服务器组中选择一个状态为有效或 stale的服务器,将该业务流分担到所选择的服务器上。所述方法进一步包括当发现服务器的状态切换为探测或delay或失效,则在状态为stale或有效的服务器中,选择一个第二服务器作为所述服务器的备用成员;若发现所述服务器作为了其它服务器的备用成员,则为该其它服务器重新在stale或reachable的服务器中选择备用成员;当NAT设备接收到业务流首包时,按照预设负载均衡算法,计算分担该业务流的服务器,判断分担该业务流的服务器的状态是否为stale或有效,若是,直接将业务流分担到该服务器上;否则,将业务流分担到该服务器的备用成员上。一种NAT设备,包括成员状态维护模块维护内部服务器组各成员的状态;成员状态检测模块若接收到一内网设备发来的ICMP目的不可达报文,根据该报文确定不可达的服务器,将该服务器的状态切换为探测,探测该服务器是否三层可达, 若否,则将该服务器的状态切换为失效;若是,将该服务器的状态切换为stale,当有业务流被分担到该服务器上时,在该业务流对应会话上加S标记,将该服务器的状态切换为 delay,为该服务器设置第一定时器,当第一定时器超时前,若该带S标记的会话从open状态切换为ready状态,或者针对该带S标记的会话的TCP三次握手成功,则将该服务器的状态切换为有效;否则,将该服务器的状态切换为失效;或者,若接收到一内网设备发来的RST报文,根据该报文确定不可达的服务器,将该服务器的状态切换为stale,当有业务流被分担到该服务器上时,在该业务流对应会话上加S 标记,将该服务器的状态切换为delay,为该服务器设置第一定时器,当第一定时器超时前,若针对该带S标记的会话的TCP三次握手成功,则将该服务器的状态切换为有效;否则,将
该服务器的状态切换为失效。 所述成员状态检测模块进一步用于,当接收到一内网设备发来的ICMP目的不可达报文时,将该服务器的状态切换为失效之后,为该服务器设置第二定时器,当第二定时器超时时,返回所述将该服务器的状态切换为探测的动作;当接收到一内网设备发来的RST报文时,将该服务器的状态切换为失效之后,为该服务器设置第二定时器,当第二定时器超时时,返回将该服务器的状态切换为stale的动作。所述成员状态检测模块进一步用于,当NAT设备接收到一内网设备发来的ICMP目的不可达报文时,确定不可达的服务器之后,根据ICMP目的不可达报文携带的原始数据包的五元组,确定对应的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变;当接收到一内网设备发来的RST报文时,确定不可达的服务器之后,根据复位报文的五元组,确定对应的处于同步状态的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变。所述NAT设备进一步包括负载分担模块当接收到业务流首包时,根据成员状态维护模块中维护的各内部服务器的状态,在内部服务器组中选择一个状态为有效或stale 的服务器,将该业务流分担到所选择的服务器上。所述NAT设备进一步包括负载分担模块根据成员状态维护模块中维护的各内部服务器的状态,当发现一个服务器的状态切换为探测或delay或失效,则在状态为stale 或有效的服务器中,选择一个第二服务器作为所述服务器的备用成员;若发现所述服务器作为了其它服务器的备用成员,则为该其它服务器重新在stale或reachable的服务器中选择备用成员;当接收到业务流首包时,按照预设负载均衡算法,计算分担该业务流的服务器,判断分担该业务流的服务器的状态是否为stale或有效,若是,直接将业务流分担到该服务器上;否则,将业务流分担到该服务器的备用成员上。一种NAT设备,包括成员状态维护模块维护内部服务器组各成员的状态;成员状态检测模块若接收到一内网设备发来的ICMP目的不可达报文,根据该报文确定不可达的服务器,将该服务器的状态切换为探测,若发现该服务器对外提供UDP服务,则探测该服务器是否三层可达,若否,则将该服务器的状态切换为失效;若是,将该服务器的状态切换为stale,当有业务流被分担到该服务器上时,在该业务流对应会话上加S标记,将该服务器的状态切换为delay,为该服务器设置第一定时器,当第一定时器超时前,若该带S标记的会话从open状态切换为ready状态,则将该服务器的状态切换为有效;否则, 将该服务器的状态切换为失效;或者,若接收到一内网设备发来的ICMP目的不可达报文或RST报文,根据该报文确定不可达的服务器,将该服务器的状态切换为探测,若发现该服务器对外提供TCP服务,则与该服务器进行TCP三次握手,若成功,则将该服务器的状态切换为有效,若失败,则将该服务器的状态切换为失效。所述成员状态检测模块进一步用于,当接收到一内网设备发来的ICMP目的不可达报文或RST报文时,将该服务器的状态切换为失效之后,为该服务器设置第二定时器,当第二定时器超时时,返回所述将该服务器的状态切换为探测的动作。所述成员状态检测模块进一步用于,当接收到一内网设备发来的ICMP目的不可达报文时,确定不可达的服务器之后, 根据ICMP目的不可达报文携带的原始数据包的五元组,确定对应的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变;当接收到一内网设备发来的RST报文时,确定不可达的服务器之后,根据复位报文的五元组,确定对应的处于同步状态的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变。所述成员状态检测模块进一步用于,发现该服务器对外提供TCP服务之后,判断本设备与该服务器的TCP连接是否存在,若是,将该服务器的状态切换为有效;否则,执行所述与该服务器进行TCP三次握手的动作。所述NAT设备进一步包括负载分担模块当接收到业务流首包时,根据成员状态维护模块中维护的各内部服务器的状态,在内部服务器组中选择一个状态为有效或stale 的服务器,将该业务流分担到所选择的服务器上。所述NAT设备进一步包括负载分担模块根据成员状态维护模块中维护的各内部服务器的状态,当发现一个服务器的状态切换为探测或delay或失效,则在状态为stale 或有效的服务器中,选择一个第二服务器作为所述服务器的备用成员;若发现所述服务器作为了其它服务器的备用成员,则为该其它服务器重新在stale或reachable的服务器中选择备用成员;当接收到业务流首包时,按照预设负载均衡算法,计算分担该业务流的服务器,判断分担该业务流的服务器的状态是否为stale或有效,若是,直接将业务流分担到该服务器上;否则,将业务流分担到该服务器的备用成员上。与现有技术相比,本发明中,NAT设备能够检测到内部服务器组成员的失效;本发明实施例中,NAT设备在进行负载均衡时,根据内部服务器组成员的状态,将业务流分担到可用的服务器上,从而保证了服务不中断。
图1为现有的内部服务器组共同对外提供某种服务的组网示例图;图2为本发明实施例提供的当内部服务器组对外提供基于UDP的服务时,NAT设备根据ICMP目的不可达报文检测内部服务器组成员失效的方法流程图;图3为本发明实施例提供的当内部服务器组对外提供基于TCP的服务时,NAT设备根据ICMP目的不可达报文检测内部服务器组成员失效的方法流程图;图4为本发明实施例提供的当内部服务器组对外提供基于TCP的服务时,NAT设备根据RST报文检测内部服务器组成员失效的方法流程图;图5为本发明实施例提供的NAT设备通过ICMP目的不可达报文检测内部服务器组成员失效的方法流程图;图6为本发明实施例提供的NAT设备根据RST报文检测内部服务器组成员失效的方法流程图;图7为本发明实施例一提供的NAT设备进行负载分担方法流程图;图8为本发明实施例二提供的NAT设备进行负载分担方法流程图;图9为本发明实施例一提供的NAT设备的组成示意图。
具体实施例方式下面结合附图及具体实施例对本发明再作进一步详细的说明。本发明中,需要在NAT设备与内部服务器组之间的各台内网设备上开启因特网控制消息协议(ICMP,Internet Control Message Protocol)目的不可达上送开关。在内网设备上开启ICMP目的不可达上送开关后,内网设备就可以向NAT设备上送ICMP目的不可达报文,这样,NAT设备就可根据ICMP目的不可达报文得知哪一台服务器不可达了。服务器提供的服务通常为基于UDP的服务或基于TCP的服务。对于基于UDP的服务,当向一台服务器请求UDP服务失败时,NAT设备会接收到ICMP目的不可达报文。对于基于TCP的服务,当一台服务器的基于TCP的服务打开时,若该服务器不可达,则NAT设备会接收到内网设备发来的ICMP目的不可达报文;当一台服务器的基于TCP的服务未打开时, 则NAT设备会接收到内网设备发来的复位(RST,Reset)报文。以下分别针对各种情况给出具体的实施例图2给出了本发明实施例提供的当内部服务器组对外提供基于UDP的服务时,NAT 设备根据ICMP目的不可达报文检测内部服务器组成员失效的方法流程图,如图2所示,其具体步骤如下步骤201 :NAT设备在自身建立内部服务器组内各成员的配置表,该表中包含各服务器的内网IP地址及状态,将各服务器的状态初始化为有效(reachable)。步骤202 :NAT设备接收到一内网设备发来的ICMP目的不可达报文,根据该报文携带的原始数据包的IP首部及传输层首部信息,确定不可达的服务器。具体地,NAT设备是根据原始数据包的IP首部和传输层首部的协议号、目的IP地址和目的端口号来确定不可达的服务器。NAT设备在收到ICMP目的不可达报文后,会走NAT流程,来将三层头中的IP地址进行私、公网之间的转换;同时,若报文的应用层中携带IP地址,就会走应用层网关(ALG, Application Layer Gateway)流程,来对应用层的IP地址进行私、公网之间的转换。因此, 本步骤中,NAT设备在收到ICMP目的不可达报文时,在走ALG流程时,要先根据原始数据包的IP首部及传输层首部的协议号、目的IP地址和目的端口号,确定不可达的服务器,然后再对原始数据包中的IP地址进行私、公网之间的转换。步骤203 :NAT设备根据ICMP目的不可达报文携带的原始数据包的五元组,确定对应的会话是否存在,若是,执行步骤205 ;否则,执行步骤204。步骤204 =NAT设备保持该服务器的状态不变,本流程结束。步骤205 =NAT设备将该服务器的状态切换为探测O^robe)。步骤206 =NAT设备根据ICMP目的不可达报文携带的原始数据包的IP首部信息中的协议号,发现服务是基于UDP的,则向该服务器发送Ping报文。步骤207 =NAT设备判断是否ping通,若是,执行步骤208 ;否则,执行步骤212。
12
这里,向第一服务器发送ping报文是为了探测该服务器是否三层可达。步骤208 =NAT设备将该服务器的状态切换为陈旧(stale)。步骤209 当NAT设备发现有业务流被分担到该服务器上时,则在该业务流会话上添加S标志,并将该服务器的状态切换为delay (延迟),同时为该服务器设置第一定时器。步骤210 =NAT设备发现第一定时器超时,则判断该带S标记的会话是否由打开 (open)状态切换到了准备(ready)状态,若是,执行步骤211 ;否则,执行步骤212。当会话由open状态切换到了 ready状态时,表明双向UDP会话已建立。步骤211 =NAT设备将该服务器的状态切换到reachable,返回步骤202。步骤212 =NAT设备将该服务器的状态切换到unreachable,并为该服务器设置第二定时器,当第二定时器超时时,返回步骤205。图3给出了本发明实施例提供的当内部服务器组对外提供基于TCP的服务时,NAT 设备根据ICMP目的不可达报文检测内部服务器组成员失效的方法流程图,如图3所示,其具体步骤如下步骤301 305与步骤201 205相同。步骤201、301都是NAT设备的初始化步骤。步骤306 =NAT设备根据ICMP目的不可达报文携带的原始数据包的IP首部信息中的协议号,发现服务是基于TCP的。步骤307 :NAT设备判断该服务器的TCP连接是否存在,若是,执行步骤308 ;否则, 执行步骤309。步骤308 =NAT设备将该服务器的状态切换为reachable,本流程结束。步骤309 =NAT设备主动与该服务器进行TCP三次握手,判断是否握手成功,若是, 执行步骤310 ;否则,执行步骤311。步骤310 =NAT设备将该服务器的状态切换为reachable,同时,将该服务器的TCP 连接的状态置为“存在”,同时为该服务器设置TCP连接定时器,本流程结束。设置TCP连接定时器的目的是为了避免重复建立、拆除TCP连接,在TCP连接定时器超时前,若NAT设备接收到针对该服务器的不可达报文,不予理会;在TCP连接定时器超时后,若NAT设备接收到针对该服务器的ICMP目的不可达报文,则返回步骤303。当TCP连接拆除时,将TCP连接的状态置为“拆除”。步骤311 =NAT设备将该服务器的状态切换为unreachable,并为该服务器设置第三定时器,当第三定时器超时时,返回步骤305。图4给出了本发明实施例提供的当内部服务器组对外提供基于TCP的服务时,NAT 设备根据RST报文检测内部服务器组成员失效的方法流程图,如图4所示,其具体步骤如下步骤401与步骤201相同。步骤402 =NAT设备接收到一内网设备发来的RST报文,根据该报文的IP首部及传输层首部信息,确定不可达的服务器。步骤403 =NAT设备根据RST报文的五元组,查找对应的处于同步(SYN)状态的会话是否存在,若是,执行步骤405 ;否则,执行步骤404。步骤404 =NAT设备保持该服务器的状态不变,本流程结束。
步骤405 =NAT设备将该服务器的状态切换为ftx)be。步骤406 :NAT设备根据RST报文的IP首部信息中的协议号,发现服务是基于TCP 的。步骤407 411与步骤307 311相同。图2 4中,根据内部服务器组提供的服务类型的不同,给出了不同的处理流程, 在实际应用中,也可以不区分内部服务器组提供的服务类型。图5为本发明实施例提供的NAT设备通过ICMP目的不可达报文检测内部服务器组成员失效的方法流程图,如图5所示,其具体步骤如下步骤501 505与步骤201 205相同。步骤506 :NAT设备向该服务器发送Ping报文。步骤507 =NAT设备判断是否ping通,若是,执行步骤508 ;否则,执行步骤512。步骤508 =NAT设备将该服务器的状态切换为stale。步骤509 当NAT设备发现有业务流被分担到该服务器上时,则在该业务流会话上添加S标志,并将该服务器的状态切换为delay,同时为该服务器设置第一定时器。步骤510 =NAT设备发现第一定时器超时,判断是否该带S标记的会话由open状态切换到了 ready状态,或者针对该带S标记的会话的TCP三次握手成功,若是,执行步骤 511 ;否则,执行步骤512。步骤511 =NAT设备将该服务器的状态切换到reachable,返回步骤502。步骤512 =NAT设备将该服务器的状态切换到unreachable,并为该服务器设置第二定时器,当第二定时器超时时,返回步骤508。图6给出了本发明实施例提供的NAT设备根据RST报文检测内部服务器组成员失效的方法流程图,如图6所示,其具体步骤如下步骤601 604与步骤401 404相同。步骤605 606与步骤508 509相同。步骤607 =NAT设备发现第一定时器超时,判断是否针对该带S标记的会话的TCP 三次握手成功,若是,执行步骤608 ;否则,执行步骤609。步骤608 609与步骤511 512相同。通过图2 4所示实施例或图5 6所示实施例检测出各服务器组成员的状态后, NAT设备在进行负载分担时,就可以只将业务流分担到可用的成员上了。以下给出两个NAT 设备进行负载分担的实施例图7为本发明实施例一提供的NAT设备进行负载分担方法流程图,如图7所示,其具体步骤如下步骤701 =NAT设备发现一个服务器组内的第一服务器的状态切换为probe或 delay 5 unreachable。步骤702 =NAT设备在状态为stale或reachable的服务器中,选择一个第二服务器作为第一服务器的备用成员,将该备用成员的IP地址放入第一服务器的配置表中;同时,若NAT设备发现第一服务器作为了其它服务器的备用成员,则为该其它服务器重新在 stale或reachable的服务器中选择备用成员。表1给出了一个内部服务器组成员的配置表的示例
权利要求
1.一种检测内部服务器组成员失效的方法,其特征在于,该方法包括若NAT设备接收到一内网设备发来的ICMP目的不可达报文,根据该报文确定不可达的服务器,将该服务器的状态切换为探测,探测该服务器是否三层可达,若否,则将该服务器的状态切换为失效;若是,将该服务器的状态切换为stale,当有业务流被分担到该服务器上时,在该业务流对应会话上加S标记,将该服务器的状态切换为delay,为该服务器设置第一定时器,当第一定时器超时前,若该带S标记的会话从open状态切换为ready状态,或者针对该带S标记的会话的TCP三次握手成功,则将该服务器的状态切换为有效;否则,将该服务器的状态切换为失效;若NAT设备接收到一内网设备发来的RST报文,根据该报文确定不可达的服务器,将该服务器的状态切换为stale,当有业务流被分担到该服务器上时,在该业务流对应会话上加 S标记,将该服务器的状态切换为delay,为该服务器设置第一定时器,当第一定时器超时前,若针对该带S标记的会话的TCP三次握手成功,则将该服务器的状态切换为有效;否则, 将该服务器的状态切换为失效。
2.根据权利要求1所述的方法,其特征在于,当NAT设备接收到一内网设备发来的 ICMP目的不可达报文时,所述将该服务器的状态切换为失效之后进一步包括为该服务器设置第二定时器,当第二定时器超时时,返回所述将该服务器的状态切换为探测的动作;当NAT设备接收到一内网设备发来的RST报文时,所述将该服务器的状态切换为失效之后进一步包括为该服务器设置第二定时器,当第二定时器超时时,返回将该服务器的状态切换为stale的动作。
3.根据权利要求1所述的方法,其特征在于,当NAT设备接收到一内网设备发来的 ICMP目的不可达报文时,所述确定不可达的服务器之后,将该服务器的状态切换为探测之前进一步包括NAT设备根据ICMP目的不可达报文携带的原始数据包的五元组,确定对应的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变;当NAT设备接收到一内网设备发来的RST报文时,所述确定不可达的服务器之后,将该服务器的状态切换为stale之前进一步包括NAT设备根据复位报文的五元组,确定对应的处于同步状态的会话是否存在,若存在, 则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变。
4.根据权利要求1至4任一所述的方法,其特征在于,所述方法进一步包括当NAT设备接收到业务流首包时,在内部服务器组中选择一个状态为有效或stale的服务器,将该业务流分担到所选择的服务器上。
5.根据权利要求1至4任一所述的方法,其特征在于,所述方法进一步包括当发现服务器的状态切换为探测或delay或失效,则在状态为stale或有效的服务器中,选择一个第二服务器作为所述服务器的备用成员;若发现所述服务器作为了其它服务器的备用成员,则为该其它服务器重新在stale或reachable的服务器中选择备用成员;当NAT设备接收到业务流首包时,按照预设负载均衡算法,计算分担该业务流的服务器,判断分担该业务流的服务器的状态是否为stale或有效,若是,直接将业务流分担到该服务器上;否则,将业务流分担到该服务器的备用成员上。
6.一种检测内部服务器组成员失效的方法,其特征在于,该方法包括若NAT设备接收到一内网设备发来的ICMP目的不可达报文,根据该报文确定不可达的服务器,将该服务器的状态切换为探测,若发现该服务器对外提供UDP服务,则探测该服务器是否三层可达,若否,则将该服务器的状态切换为失效;若是,将该服务器的状态切换为 stale,当有业务流被分担到该服务器上时,在该业务流对应会话上加S标记,将该服务器的状态切换为delay,为该服务器设置第一定时器,当第一定时器超时前,若该带S标记的会话从open状态切换为ready状态,则将该服务器的状态切换为有效;否则,将该服务器的状态切换为失效;若NAT设备接收到一内网设备发来的ICMP目的不可达报文或RST报文,根据该报文确定不可达的服务器,将该服务器的状态切换为探测,若发现该服务器对外提供TCP服务,则与该服务器进行TCP三次握手,若成功,则将该服务器的状态切换为有效,若失败,则将该服务器的状态切换为失效。
7.根据权利要求6所述的方法,其特征在于,当NAT设备接收到一内网设备发来的 ICMP目的不可达报文或RST报文时,所述将该服务器的状态切换为失效之后进一步包括 为该服务器设置第二定时器,当第二定时器超时时,返回所述将该服务器的状态切换为探测的动作。
8.根据权利要求6所述的方法,其特征在于,当NAT设备接收到一内网设备发来的 ICMP目的不可达报文时,所述确定不可达的服务器之后,将该服务器的状态切换为探测之前进一步包括NAT设备根据ICMP目的不可达报文携带的原始数据包的五元组,确定对应的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变;当NAT设备接收到一内网设备发来的RST报文时,所述确定不可达的服务器之后,将该服务器的状态切换为探测之前进一步包括NAT设备根据复位报文的五元组,确定对应的处于同步状态的会话是否存在,若存在, 则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变。
9.根据权利要求6所述的方法,其特征在于,所述发现该服务器对外提供TCP服务之后,与该服务器进行TCP三次握手之前进一步包括判断本设备与该服务器的TCP连接是否存在,若是,将该服务器的状态切换为有效;否则,执行所述与该服务器进行TCP三次握手的动作。
10.根据权利要求6至9任一所述的方法,其特征在于,所述方法进一步包括当NAT设备接收到业务流首包时,在内部服务器组中选择一个状态为有效或stale的服务器,将该业务流分担到所选择的服务器上。
11.根据权利要求6至9任一所述的方法,其特征在于,所述方法进一步包括当发现服务器的状态切换为探测或delay或失效,则在状态为stale或有效的服务器中,选择一个第二服务器作为所述服务器的备用成员;若发现所述服务器作为了其它服务器的备用成员,则为该其它服务器重新在stale或reachable的服务器中选择备用成员;当NAT设备接收到业务流首包时,按照预设负载均衡算法,计算分担该业务流的服务器,判断分担该业务流的服务器的状态是否为stale或有效,若是,直接将业务流分担到该服务器上;否则,将业务流分担到该服务器的备用成员上。
12.—种NAT设备,其特征在于,包括成员状态维护模块维护内部服务器组各成员的状态;成员状态检测模块若接收到一内网设备发来的ICMP目的不可达报文,根据该报文确定不可达的服务器,将该服务器的状态切换为探测,探测该服务器是否三层可达,若否, 则将该服务器的状态切换为失效;若是,将该服务器的状态切换为stale,当有业务流被分担到该服务器上时,在该业务流对应会话上加S标记,将该服务器的状态切换为delay,为该服务器设置第一定时器,当第一定时器超时前,若该带S标记的会话从open状态切换为 ready状态,或者针对该带S标记的会话的TCP三次握手成功,则将该服务器的状态切换为有效;否则,将该服务器的状态切换为失效;或者,若接收到一内网设备发来的RST报文,根据该报文确定不可达的服务器,将该服务器的状态切换为stale,当有业务流被分担到该服务器上时,在该业务流对应会话上加S标记,将该服务器的状态切换为delay,为该服务器设置第一定时器,当第一定时器超时前,若针对该带S标记的会话的TCP三次握手成功,则将该服务器的状态切换为有效;否则,将该服务器的状态切换为失效。
13.根据权利要求12所述的NAT设备,其特征在于,所述成员状态检测模块进一步用于,当接收到一内网设备发来的ICMP目的不可达报文时,将该服务器的状态切换为失效之后,为该服务器设置第二定时器,当第二定时器超时时,返回所述将该服务器的状态切换为探测的动作;当接收到一内网设备发来的RST报文时,将该服务器的状态切换为失效之后,为该服务器设置第二定时器,当第二定时器超时时,返回将该服务器的状态切换为stale的动作。
14.根据权利要求12所述的NAT设备,其特征在于,所述成员状态检测模块进一步用于,当NAT设备接收到一内网设备发来的ICMP目的不可达报文时,确定不可达的服务器之后,根据ICMP目的不可达报文携带的原始数据包的五元组,确定对应的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变;当接收到一内网设备发来的RST报文时,确定不可达的服务器之后,根据复位报文的五元组,确定对应的处于同步状态的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变。
15.根据权利要求12至14任一所述的NAT设备,其特征在于,所述NAT设备进一步包括负载分担模块当接收到业务流首包时,根据成员状态维护模块中维护的各内部服务器的状态,在内部服务器组中选择一个状态为有效或stale的服务器,将该业务流分担到所选择的服务器上。
16.根据权利要求12至14任一所述的NAT设备,其特征在于,所述NAT设备进一步包括负载分担模块根据成员状态维护模块中维护的各内部服务器的状态,当发现一个服务器的状态切换为探测或delay或失效,则在状态为stale或有效的服务器中,选择一个第二服务器作为所述服务器的备用成员;若发现所述服务器作为了其它服务器的备用成员,则为该其它服务器重新在stale或reachable的服务器中选择备用成员;当接收到业务流首包时,按照预设负载均衡算法,计算分担该业务流的服务器,判断分担该业务流的服务器的状态是否为stale或有效,若是,直接将业务流分担到该服务器上;否则,将业务流分担到该服务器的备用成员上。
17.一种NAT设备,其特征在于,包括成员状态维护模块维护内部服务器组各成员的状态;成员状态检测模块若接收到一内网设备发来的ICMP目的不可达报文,根据该报文确定不可达的服务器,将该服务器的状态切换为探测,若发现该服务器对外提供UDP服务,则探测该服务器是否三层可达,若否,则将该服务器的状态切换为失效;若是,将该服务器的状态切换为stale,当有业务流被分担到该服务器上时,在该业务流对应会话上加S标记, 将该服务器的状态切换为delay,为该服务器设置第一定时器,当第一定时器超时前,若该带S标记的会话从open状态切换为ready状态,则将该服务器的状态切换为有效;否则,将该服务器的状态切换为失效;或者,若接收到一内网设备发来的ICMP目的不可达报文或RST报文,根据该报文确定不可达的服务器,将该服务器的状态切换为探测,若发现该服务器对外提供TCP服务,则与该服务器进行TCP三次握手,若成功,则将该服务器的状态切换为有效,若失败,则将该服务器的状态切换为失效。
18.根据权利要求17所述的NAT设备,其特征在于,所述成员状态检测模块进一步用于,当接收到一内网设备发来的ICMP目的不可达报文或RST报文时,将该服务器的状态切换为失效之后,为该服务器设置第二定时器,当第二定时器超时时,返回所述将该服务器的状态切换为探测的动作。
19.根据权利要求17所述的NAT设备,其特征在于,所述成员状态检测模块进一步用于,当接收到一内网设备发来的ICMP目的不可达报文时,确定不可达的服务器之后,根据 ICMP目的不可达报文携带的原始数据包的五元组,确定对应的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变;当接收到一内网设备发来的RST报文时,确定不可达的服务器之后,根据复位报文的五元组,确定对应的处于同步状态的会话是否存在,若存在,则执行所述将该服务器的状态切换为探测的动作;否则,保持该服务器的状态不变。
20.根据权利要求17所述的NAT设备,其特征在于,所述成员状态检测模块进一步用于,发现该服务器对外提供TCP服务之后,判断本设备与该服务器的TCP连接是否存在,若是,将该服务器的状态切换为有效;否则,执行所述与该服务器进行TCP三次握手的动作。
21.根据权利要求17至20任一所述的NAT设备,其特征在于,所述NAT设备进一步包括负载分担模块当接收到业务流首包时,根据成员状态维护模块中维护的各内部服务器的状态,在内部服务器组中选择一个状态为有效或stale的服务器,将该业务流分担到所选择的服务器上。
22.根据权利要求17至20任一所述的NAT设备,其特征在于,所述NAT设备进一步包括负载分担模块根据成员状态维护模块中维护的各内部服务器的状态,当发现一个服务器的状态切换为探测或delay或失效,则在状态为stale或有效的服务器中,选择一个第二服务器作为所述服务器的备用成员;若发现所述服务器作为了其它服务器的备用成员,则为该其它服务器重新在stale或reachable的服务器中选择备用成员;当接收到业务流首包时,按照预设负载均衡算法,计算分担该业务流的服务器,判断分担该业务流的服务器的状态是否为stale或有效,若是,直接将业务流分担到该服务器上;否则,将业务流分担到该服务器的备用成员上。
全文摘要
本发明公开了检测内部服务器组成员失效的方法及网络地址转换设备。方法包括若NAT设备接收到一内网设备发来的ICMP目的不可达报文,根据该报文确定不可达的服务器,将该服务器的状态切换为探测,探测该服务器是否三层可达,若否,则将该服务器的状态切换为失效;若是,将该服务器的状态切换为stale,当有业务流被分担到该服务器上时,在该业务流对应会话上加S标记,将该服务器的状态切换为delay,为该服务器设置第一定时器,当第一定时器超时前,若该带S标记的会话从open状态切换为ready状态,或者针对该带S标记的会话的TCP三次握手成功,则将该服务器的状态切换为有效;否则,将该服务器的状态切换为失效。本发明能够检测出内部服务器组成员失效。
文档编号H04L29/08GK102299831SQ20111028970
公开日2011年12月28日 申请日期2011年9月27日 优先权日2011年9月27日
发明者徐步正 申请人:杭州华三通信技术有限公司