專利名稱:檢測內部服務器組成員失效的方法及網(wǎng)絡地址轉換設備的制作方法
技術領域:
本發(fā)明涉及通信檢測技術領域,具體涉及檢測內部服務器組成員失效的方法及網(wǎng)絡地址轉換(NAT,Network Address Translation)設備。
背景技術:
通過NAT內部服務器組內的多臺服務器共同對外提供某種服務,可以實現(xiàn)內部服務器的負載分擔?;驹硎怯蒒AT設備對外公布一個虛擬IP地址,當有客戶訪問該虛擬 IP地址時,由NAT設備通過一定的哈希(HASH)算法,將其映射到內部服務器組的某一成員。圖1給出了現(xiàn)有的內部服務器組共同對外提供某種服務的組網(wǎng)示例圖,如圖1 所示,當個人計算機(PC,Personal Computer) 1訪問NAT設備對外公布的虛擬IP地址 212. 1. 1. 2時,通過NAT轉換可能映射到服務器(Server) 1,后續(xù)由Serverl為PCl提供服務,而當PC2訪問該虛擬IP地址時,通過NAT轉換可能會映射到krver3,后續(xù)由Server3 為PC2提供服務,從而實現(xiàn)內部服務器的負載分擔。當前的地址映射方法是取報文內容如源IP地址計數(shù)出一個HASH值,用該值與內部服務器組成員個數(shù)取模,得的值作為偏移量與內部服務器組配置表的基值相加從而得到相應的內部服務器組成員。該方法存在的問題是如果內部服務器組的某一成員失效了,即不能提供相應服務時,NAT設備并不能感知到,還是會將部分訪問分擔到該成員,導致這些訪問得不到服務, 即使此時還有其它有效服務器組成員存在。
發(fā)明內容
本發(fā)明提供檢測內部服務器組成員失效的方法及NAT設備,以實現(xiàn)NAT設備對內部服務器組成員失效的檢測。本發(fā)明的技術方案是這樣實現(xiàn)的一種檢測內部服務器組成員失效的方法,該方法包括若NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為探測,探測該服務器是否三層可達,若否,則將該服務器的狀態(tài)切換為失效;若是,將該服務器的狀態(tài)切換為stale,當有業(yè)務流被分擔到該服務器上時,在該業(yè)務流對應會話上加S標記,將該服務器的狀態(tài)切換為delay,為該服務器設置第一定時器,當?shù)谝欢〞r器超時前,若該帶S標記的會話從open狀態(tài)切換為ready狀態(tài),或者針對該帶S標記的會話的TCP三次握手成功,則將該服務器的狀態(tài)切換為有效;否則,將該服務器的狀態(tài)切換為失效;若NAT設備接收到一內網(wǎng)設備發(fā)來的RST報文,根據(jù)該報文確定不可達的服務器, 將該服務器的狀態(tài)切換為stale,當有業(yè)務流被分擔到該服務器上時,在該業(yè)務流對應會話上加S標記,將該服務器的狀態(tài)切換為delay,為該服務器設置第一定時器,當?shù)谝欢〞r器超時前,若針對該帶S標記的會話的TCP三次握手成功,則將該服務器的狀態(tài)切換為有效;否則,將該服務器的狀態(tài)切換為失效。當NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文時,所述將該服務器的狀態(tài)切換為失效之后進一步包括為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回所述將該服務器的狀態(tài)切換為探測的動作;當NAT設備接收到一內網(wǎng)設備發(fā)來的RST報文時,所述將該服務器的狀態(tài)切換為失效之后進一步包括為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回將該服務器的狀態(tài)切換為stale的動作。當NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文時,所述確定不可達的服務器之后,將該服務器的狀態(tài)切換為探測之前進一步包括NAT設備根據(jù)ICMP目的不可達報文攜帶的原始數(shù)據(jù)包的五元組,確定對應的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變;當NAT設備接收到一內網(wǎng)設備發(fā)來的RST報文時,所述確定不可達的服務器之后, 將該服務器的狀態(tài)切換為stale之前進一步包括NAT設備根據(jù)復位報文的五元組,確定對應的處于同步狀態(tài)的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變。所述方法進一步包括當NAT設備接收到業(yè)務流首包時,在內部服務器組中選擇一個狀態(tài)為有效或 stale的服務器,將該業(yè)務流分擔到所選擇的服務器上。所述方法進一步包括當發(fā)現(xiàn)服務器的狀態(tài)切換為探測或delay或失效,則在狀態(tài)為stale或有效的服務器中,選擇一個第二服務器作為所述服務器的備用成員;若發(fā)現(xiàn)所述服務器作為了其它服務器的備用成員,則為該其它服務器重新在stale或reachable的服務器中選擇備用成員;當NAT設備接收到業(yè)務流首包時,按照預設負載均衡算法,計算分擔該業(yè)務流的服務器,判斷分擔該業(yè)務流的服務器的狀態(tài)是否為stale或有效,若是,直接將業(yè)務流分擔到該服務器上;否則,將業(yè)務流分擔到該服務器的備用成員上。一種檢測內部服務器組成員失效的方法,該方法包括若NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為探測,若發(fā)現(xiàn)該服務器對外提供UDP服務,則探測該服務器是否三層可達,若否,則將該服務器的狀態(tài)切換為失效;若是,將該服務器的狀態(tài)切換為stale,當有業(yè)務流被分擔到該服務器上時,在該業(yè)務流對應會話上加S標記,將該服務器的狀態(tài)切換為delay,為該服務器設置第一定時器,當?shù)谝欢〞r器超時前,若該帶S標記的會話從open狀態(tài)切換為ready狀態(tài),則將該服務器的狀態(tài)切換為有效;否則,將該服務器的狀態(tài)切換為失效;若NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文或RST報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為探測,若發(fā)現(xiàn)該服務器對外提供TCP服務,則與該服務器進行TCP三次握手,若成功,則將該服務器的狀態(tài)切換為有效,若失敗,則將該服務器的狀態(tài)切換為失效。
當NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文或RST報文時,所述將該服務器的狀態(tài)切換為失效之后進一步包括為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回所述將該服務器的狀態(tài)切換為探測的動作。當NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文時,所述確定不可達的服務器之后,將該服務器的狀態(tài)切換為探測之前進一步包括NAT設備根據(jù)ICMP目的不可達報文攜帶的原始數(shù)據(jù)包的五元組,確定對應的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變;當NAT設備接收到一內網(wǎng)設備發(fā)來的RST報文時,所述確定不可達的服務器之后, 將該服務器的狀態(tài)切換為探測之前進一步包括NAT設備根據(jù)復位報文的五元組,確定對應的處于同步狀態(tài)的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變。所述發(fā)現(xiàn)該服務器對外提供TCP服務之后,與該服務器進行TCP三次握手之前進一步包括判斷本設備與該服務器的TCP連接是否存在,若是,將該服務器的狀態(tài)切換為有效;否則,執(zhí)行所述與該服務器進行TCP三次握手的動作。所述方法進一步包括當NAT設備接收到業(yè)務流首包時,在內部服務器組中選擇一個狀態(tài)為有效或 stale的服務器,將該業(yè)務流分擔到所選擇的服務器上。所述方法進一步包括當發(fā)現(xiàn)服務器的狀態(tài)切換為探測或delay或失效,則在狀態(tài)為stale或有效的服務器中,選擇一個第二服務器作為所述服務器的備用成員;若發(fā)現(xiàn)所述服務器作為了其它服務器的備用成員,則為該其它服務器重新在stale或reachable的服務器中選擇備用成員;當NAT設備接收到業(yè)務流首包時,按照預設負載均衡算法,計算分擔該業(yè)務流的服務器,判斷分擔該業(yè)務流的服務器的狀態(tài)是否為stale或有效,若是,直接將業(yè)務流分擔到該服務器上;否則,將業(yè)務流分擔到該服務器的備用成員上。一種NAT設備,包括成員狀態(tài)維護模塊維護內部服務器組各成員的狀態(tài);成員狀態(tài)檢測模塊若接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為探測,探測該服務器是否三層可達, 若否,則將該服務器的狀態(tài)切換為失效;若是,將該服務器的狀態(tài)切換為stale,當有業(yè)務流被分擔到該服務器上時,在該業(yè)務流對應會話上加S標記,將該服務器的狀態(tài)切換為 delay,為該服務器設置第一定時器,當?shù)谝欢〞r器超時前,若該帶S標記的會話從open狀態(tài)切換為ready狀態(tài),或者針對該帶S標記的會話的TCP三次握手成功,則將該服務器的狀態(tài)切換為有效;否則,將該服務器的狀態(tài)切換為失效;或者,若接收到一內網(wǎng)設備發(fā)來的RST報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為stale,當有業(yè)務流被分擔到該服務器上時,在該業(yè)務流對應會話上加S 標記,將該服務器的狀態(tài)切換為delay,為該服務器設置第一定時器,當?shù)谝欢〞r器超時前,若針對該帶S標記的會話的TCP三次握手成功,則將該服務器的狀態(tài)切換為有效;否則,將
該服務器的狀態(tài)切換為失效。 所述成員狀態(tài)檢測模塊進一步用于,當接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文時,將該服務器的狀態(tài)切換為失效之后,為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回所述將該服務器的狀態(tài)切換為探測的動作;當接收到一內網(wǎng)設備發(fā)來的RST報文時,將該服務器的狀態(tài)切換為失效之后,為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回將該服務器的狀態(tài)切換為stale的動作。所述成員狀態(tài)檢測模塊進一步用于,當NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文時,確定不可達的服務器之后,根據(jù)ICMP目的不可達報文攜帶的原始數(shù)據(jù)包的五元組,確定對應的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變;當接收到一內網(wǎng)設備發(fā)來的RST報文時,確定不可達的服務器之后,根據(jù)復位報文的五元組,確定對應的處于同步狀態(tài)的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變。所述NAT設備進一步包括負載分擔模塊當接收到業(yè)務流首包時,根據(jù)成員狀態(tài)維護模塊中維護的各內部服務器的狀態(tài),在內部服務器組中選擇一個狀態(tài)為有效或stale 的服務器,將該業(yè)務流分擔到所選擇的服務器上。所述NAT設備進一步包括負載分擔模塊根據(jù)成員狀態(tài)維護模塊中維護的各內部服務器的狀態(tài),當發(fā)現(xiàn)一個服務器的狀態(tài)切換為探測或delay或失效,則在狀態(tài)為stale 或有效的服務器中,選擇一個第二服務器作為所述服務器的備用成員;若發(fā)現(xiàn)所述服務器作為了其它服務器的備用成員,則為該其它服務器重新在stale或reachable的服務器中選擇備用成員;當接收到業(yè)務流首包時,按照預設負載均衡算法,計算分擔該業(yè)務流的服務器,判斷分擔該業(yè)務流的服務器的狀態(tài)是否為stale或有效,若是,直接將業(yè)務流分擔到該服務器上;否則,將業(yè)務流分擔到該服務器的備用成員上。一種NAT設備,包括成員狀態(tài)維護模塊維護內部服務器組各成員的狀態(tài);成員狀態(tài)檢測模塊若接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為探測,若發(fā)現(xiàn)該服務器對外提供UDP服務,則探測該服務器是否三層可達,若否,則將該服務器的狀態(tài)切換為失效;若是,將該服務器的狀態(tài)切換為stale,當有業(yè)務流被分擔到該服務器上時,在該業(yè)務流對應會話上加S標記,將該服務器的狀態(tài)切換為delay,為該服務器設置第一定時器,當?shù)谝欢〞r器超時前,若該帶S標記的會話從open狀態(tài)切換為ready狀態(tài),則將該服務器的狀態(tài)切換為有效;否則, 將該服務器的狀態(tài)切換為失效;或者,若接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文或RST報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為探測,若發(fā)現(xiàn)該服務器對外提供TCP服務,則與該服務器進行TCP三次握手,若成功,則將該服務器的狀態(tài)切換為有效,若失敗,則將該服務器的狀態(tài)切換為失效。所述成員狀態(tài)檢測模塊進一步用于,當接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文或RST報文時,將該服務器的狀態(tài)切換為失效之后,為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回所述將該服務器的狀態(tài)切換為探測的動作。所述成員狀態(tài)檢測模塊進一步用于,當接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文時,確定不可達的服務器之后, 根據(jù)ICMP目的不可達報文攜帶的原始數(shù)據(jù)包的五元組,確定對應的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變;當接收到一內網(wǎng)設備發(fā)來的RST報文時,確定不可達的服務器之后,根據(jù)復位報文的五元組,確定對應的處于同步狀態(tài)的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變。所述成員狀態(tài)檢測模塊進一步用于,發(fā)現(xiàn)該服務器對外提供TCP服務之后,判斷本設備與該服務器的TCP連接是否存在,若是,將該服務器的狀態(tài)切換為有效;否則,執(zhí)行所述與該服務器進行TCP三次握手的動作。所述NAT設備進一步包括負載分擔模塊當接收到業(yè)務流首包時,根據(jù)成員狀態(tài)維護模塊中維護的各內部服務器的狀態(tài),在內部服務器組中選擇一個狀態(tài)為有效或stale 的服務器,將該業(yè)務流分擔到所選擇的服務器上。所述NAT設備進一步包括負載分擔模塊根據(jù)成員狀態(tài)維護模塊中維護的各內部服務器的狀態(tài),當發(fā)現(xiàn)一個服務器的狀態(tài)切換為探測或delay或失效,則在狀態(tài)為stale 或有效的服務器中,選擇一個第二服務器作為所述服務器的備用成員;若發(fā)現(xiàn)所述服務器作為了其它服務器的備用成員,則為該其它服務器重新在stale或reachable的服務器中選擇備用成員;當接收到業(yè)務流首包時,按照預設負載均衡算法,計算分擔該業(yè)務流的服務器,判斷分擔該業(yè)務流的服務器的狀態(tài)是否為stale或有效,若是,直接將業(yè)務流分擔到該服務器上;否則,將業(yè)務流分擔到該服務器的備用成員上。與現(xiàn)有技術相比,本發(fā)明中,NAT設備能夠檢測到內部服務器組成員的失效;本發(fā)明實施例中,NAT設備在進行負載均衡時,根據(jù)內部服務器組成員的狀態(tài),將業(yè)務流分擔到可用的服務器上,從而保證了服務不中斷。
圖1為現(xiàn)有的內部服務器組共同對外提供某種服務的組網(wǎng)示例圖;圖2為本發(fā)明實施例提供的當內部服務器組對外提供基于UDP的服務時,NAT設備根據(jù)ICMP目的不可達報文檢測內部服務器組成員失效的方法流程圖;圖3為本發(fā)明實施例提供的當內部服務器組對外提供基于TCP的服務時,NAT設備根據(jù)ICMP目的不可達報文檢測內部服務器組成員失效的方法流程圖;圖4為本發(fā)明實施例提供的當內部服務器組對外提供基于TCP的服務時,NAT設備根據(jù)RST報文檢測內部服務器組成員失效的方法流程圖;圖5為本發(fā)明實施例提供的NAT設備通過ICMP目的不可達報文檢測內部服務器組成員失效的方法流程圖;圖6為本發(fā)明實施例提供的NAT設備根據(jù)RST報文檢測內部服務器組成員失效的方法流程圖;圖7為本發(fā)明實施例一提供的NAT設備進行負載分擔方法流程圖;圖8為本發(fā)明實施例二提供的NAT設備進行負載分擔方法流程圖;圖9為本發(fā)明實施例一提供的NAT設備的組成示意圖。
具體實施例方式下面結合附圖及具體實施例對本發(fā)明再作進一步詳細的說明。本發(fā)明中,需要在NAT設備與內部服務器組之間的各臺內網(wǎng)設備上開啟因特網(wǎng)控制消息協(xié)議(ICMP,Internet Control Message Protocol)目的不可達上送開關。在內網(wǎng)設備上開啟ICMP目的不可達上送開關后,內網(wǎng)設備就可以向NAT設備上送ICMP目的不可達報文,這樣,NAT設備就可根據(jù)ICMP目的不可達報文得知哪一臺服務器不可達了。服務器提供的服務通常為基于UDP的服務或基于TCP的服務。對于基于UDP的服務,當向一臺服務器請求UDP服務失敗時,NAT設備會接收到ICMP目的不可達報文。對于基于TCP的服務,當一臺服務器的基于TCP的服務打開時,若該服務器不可達,則NAT設備會接收到內網(wǎng)設備發(fā)來的ICMP目的不可達報文;當一臺服務器的基于TCP的服務未打開時, 則NAT設備會接收到內網(wǎng)設備發(fā)來的復位(RST,Reset)報文。以下分別針對各種情況給出具體的實施例圖2給出了本發(fā)明實施例提供的當內部服務器組對外提供基于UDP的服務時,NAT 設備根據(jù)ICMP目的不可達報文檢測內部服務器組成員失效的方法流程圖,如圖2所示,其具體步驟如下步驟201 :NAT設備在自身建立內部服務器組內各成員的配置表,該表中包含各服務器的內網(wǎng)IP地址及狀態(tài),將各服務器的狀態(tài)初始化為有效(reachable)。步驟202 :NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文,根據(jù)該報文攜帶的原始數(shù)據(jù)包的IP首部及傳輸層首部信息,確定不可達的服務器。具體地,NAT設備是根據(jù)原始數(shù)據(jù)包的IP首部和傳輸層首部的協(xié)議號、目的IP地址和目的端口號來確定不可達的服務器。NAT設備在收到ICMP目的不可達報文后,會走NAT流程,來將三層頭中的IP地址進行私、公網(wǎng)之間的轉換;同時,若報文的應用層中攜帶IP地址,就會走應用層網(wǎng)關(ALG, Application Layer Gateway)流程,來對應用層的IP地址進行私、公網(wǎng)之間的轉換。因此, 本步驟中,NAT設備在收到ICMP目的不可達報文時,在走ALG流程時,要先根據(jù)原始數(shù)據(jù)包的IP首部及傳輸層首部的協(xié)議號、目的IP地址和目的端口號,確定不可達的服務器,然后再對原始數(shù)據(jù)包中的IP地址進行私、公網(wǎng)之間的轉換。步驟203 :NAT設備根據(jù)ICMP目的不可達報文攜帶的原始數(shù)據(jù)包的五元組,確定對應的會話是否存在,若是,執(zhí)行步驟205 ;否則,執(zhí)行步驟204。步驟204 =NAT設備保持該服務器的狀態(tài)不變,本流程結束。步驟205 =NAT設備將該服務器的狀態(tài)切換為探測O^robe)。步驟206 =NAT設備根據(jù)ICMP目的不可達報文攜帶的原始數(shù)據(jù)包的IP首部信息中的協(xié)議號,發(fā)現(xiàn)服務是基于UDP的,則向該服務器發(fā)送Ping報文。步驟207 =NAT設備判斷是否ping通,若是,執(zhí)行步驟208 ;否則,執(zhí)行步驟212。
12
這里,向第一服務器發(fā)送ping報文是為了探測該服務器是否三層可達。步驟208 =NAT設備將該服務器的狀態(tài)切換為陳舊(stale)。步驟209 當NAT設備發(fā)現(xiàn)有業(yè)務流被分擔到該服務器上時,則在該業(yè)務流會話上添加S標志,并將該服務器的狀態(tài)切換為delay (延遲),同時為該服務器設置第一定時器。步驟210 =NAT設備發(fā)現(xiàn)第一定時器超時,則判斷該帶S標記的會話是否由打開 (open)狀態(tài)切換到了準備(ready)狀態(tài),若是,執(zhí)行步驟211 ;否則,執(zhí)行步驟212。當會話由open狀態(tài)切換到了 ready狀態(tài)時,表明雙向UDP會話已建立。步驟211 =NAT設備將該服務器的狀態(tài)切換到reachable,返回步驟202。步驟212 =NAT設備將該服務器的狀態(tài)切換到unreachable,并為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回步驟205。圖3給出了本發(fā)明實施例提供的當內部服務器組對外提供基于TCP的服務時,NAT 設備根據(jù)ICMP目的不可達報文檢測內部服務器組成員失效的方法流程圖,如圖3所示,其具體步驟如下步驟301 305與步驟201 205相同。步驟201、301都是NAT設備的初始化步驟。步驟306 =NAT設備根據(jù)ICMP目的不可達報文攜帶的原始數(shù)據(jù)包的IP首部信息中的協(xié)議號,發(fā)現(xiàn)服務是基于TCP的。步驟307 :NAT設備判斷該服務器的TCP連接是否存在,若是,執(zhí)行步驟308 ;否則, 執(zhí)行步驟309。步驟308 =NAT設備將該服務器的狀態(tài)切換為reachable,本流程結束。步驟309 =NAT設備主動與該服務器進行TCP三次握手,判斷是否握手成功,若是, 執(zhí)行步驟310 ;否則,執(zhí)行步驟311。步驟310 =NAT設備將該服務器的狀態(tài)切換為reachable,同時,將該服務器的TCP 連接的狀態(tài)置為“存在”,同時為該服務器設置TCP連接定時器,本流程結束。設置TCP連接定時器的目的是為了避免重復建立、拆除TCP連接,在TCP連接定時器超時前,若NAT設備接收到針對該服務器的不可達報文,不予理會;在TCP連接定時器超時后,若NAT設備接收到針對該服務器的ICMP目的不可達報文,則返回步驟303。當TCP連接拆除時,將TCP連接的狀態(tài)置為“拆除”。步驟311 =NAT設備將該服務器的狀態(tài)切換為unreachable,并為該服務器設置第三定時器,當?shù)谌〞r器超時時,返回步驟305。圖4給出了本發(fā)明實施例提供的當內部服務器組對外提供基于TCP的服務時,NAT 設備根據(jù)RST報文檢測內部服務器組成員失效的方法流程圖,如圖4所示,其具體步驟如下步驟401與步驟201相同。步驟402 =NAT設備接收到一內網(wǎng)設備發(fā)來的RST報文,根據(jù)該報文的IP首部及傳輸層首部信息,確定不可達的服務器。步驟403 =NAT設備根據(jù)RST報文的五元組,查找對應的處于同步(SYN)狀態(tài)的會話是否存在,若是,執(zhí)行步驟405 ;否則,執(zhí)行步驟404。步驟404 =NAT設備保持該服務器的狀態(tài)不變,本流程結束。
步驟405 =NAT設備將該服務器的狀態(tài)切換為ftx)be。步驟406 :NAT設備根據(jù)RST報文的IP首部信息中的協(xié)議號,發(fā)現(xiàn)服務是基于TCP 的。步驟407 411與步驟307 311相同。圖2 4中,根據(jù)內部服務器組提供的服務類型的不同,給出了不同的處理流程, 在實際應用中,也可以不區(qū)分內部服務器組提供的服務類型。圖5為本發(fā)明實施例提供的NAT設備通過ICMP目的不可達報文檢測內部服務器組成員失效的方法流程圖,如圖5所示,其具體步驟如下步驟501 505與步驟201 205相同。步驟506 :NAT設備向該服務器發(fā)送Ping報文。步驟507 =NAT設備判斷是否ping通,若是,執(zhí)行步驟508 ;否則,執(zhí)行步驟512。步驟508 =NAT設備將該服務器的狀態(tài)切換為stale。步驟509 當NAT設備發(fā)現(xiàn)有業(yè)務流被分擔到該服務器上時,則在該業(yè)務流會話上添加S標志,并將該服務器的狀態(tài)切換為delay,同時為該服務器設置第一定時器。步驟510 =NAT設備發(fā)現(xiàn)第一定時器超時,判斷是否該帶S標記的會話由open狀態(tài)切換到了 ready狀態(tài),或者針對該帶S標記的會話的TCP三次握手成功,若是,執(zhí)行步驟 511 ;否則,執(zhí)行步驟512。步驟511 =NAT設備將該服務器的狀態(tài)切換到reachable,返回步驟502。步驟512 =NAT設備將該服務器的狀態(tài)切換到unreachable,并為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回步驟508。圖6給出了本發(fā)明實施例提供的NAT設備根據(jù)RST報文檢測內部服務器組成員失效的方法流程圖,如圖6所示,其具體步驟如下步驟601 604與步驟401 404相同。步驟605 606與步驟508 509相同。步驟607 =NAT設備發(fā)現(xiàn)第一定時器超時,判斷是否針對該帶S標記的會話的TCP 三次握手成功,若是,執(zhí)行步驟608 ;否則,執(zhí)行步驟609。步驟608 609與步驟511 512相同。通過圖2 4所示實施例或圖5 6所示實施例檢測出各服務器組成員的狀態(tài)后, NAT設備在進行負載分擔時,就可以只將業(yè)務流分擔到可用的成員上了。以下給出兩個NAT 設備進行負載分擔的實施例圖7為本發(fā)明實施例一提供的NAT設備進行負載分擔方法流程圖,如圖7所示,其具體步驟如下步驟701 =NAT設備發(fā)現(xiàn)一個服務器組內的第一服務器的狀態(tài)切換為probe或 delay 5 unreachable。步驟702 =NAT設備在狀態(tài)為stale或reachable的服務器中,選擇一個第二服務器作為第一服務器的備用成員,將該備用成員的IP地址放入第一服務器的配置表中;同時,若NAT設備發(fā)現(xiàn)第一服務器作為了其它服務器的備用成員,則為該其它服務器重新在 stale或reachable的服務器中選擇備用成員。表1給出了一個內部服務器組成員的配置表的示例
權利要求
1.一種檢測內部服務器組成員失效的方法,其特征在于,該方法包括若NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為探測,探測該服務器是否三層可達,若否,則將該服務器的狀態(tài)切換為失效;若是,將該服務器的狀態(tài)切換為stale,當有業(yè)務流被分擔到該服務器上時,在該業(yè)務流對應會話上加S標記,將該服務器的狀態(tài)切換為delay,為該服務器設置第一定時器,當?shù)谝欢〞r器超時前,若該帶S標記的會話從open狀態(tài)切換為ready狀態(tài),或者針對該帶S標記的會話的TCP三次握手成功,則將該服務器的狀態(tài)切換為有效;否則,將該服務器的狀態(tài)切換為失效;若NAT設備接收到一內網(wǎng)設備發(fā)來的RST報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為stale,當有業(yè)務流被分擔到該服務器上時,在該業(yè)務流對應會話上加 S標記,將該服務器的狀態(tài)切換為delay,為該服務器設置第一定時器,當?shù)谝欢〞r器超時前,若針對該帶S標記的會話的TCP三次握手成功,則將該服務器的狀態(tài)切換為有效;否則, 將該服務器的狀態(tài)切換為失效。
2.根據(jù)權利要求1所述的方法,其特征在于,當NAT設備接收到一內網(wǎng)設備發(fā)來的 ICMP目的不可達報文時,所述將該服務器的狀態(tài)切換為失效之后進一步包括為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回所述將該服務器的狀態(tài)切換為探測的動作;當NAT設備接收到一內網(wǎng)設備發(fā)來的RST報文時,所述將該服務器的狀態(tài)切換為失效之后進一步包括為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回將該服務器的狀態(tài)切換為stale的動作。
3.根據(jù)權利要求1所述的方法,其特征在于,當NAT設備接收到一內網(wǎng)設備發(fā)來的 ICMP目的不可達報文時,所述確定不可達的服務器之后,將該服務器的狀態(tài)切換為探測之前進一步包括NAT設備根據(jù)ICMP目的不可達報文攜帶的原始數(shù)據(jù)包的五元組,確定對應的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變;當NAT設備接收到一內網(wǎng)設備發(fā)來的RST報文時,所述確定不可達的服務器之后,將該服務器的狀態(tài)切換為stale之前進一步包括NAT設備根據(jù)復位報文的五元組,確定對應的處于同步狀態(tài)的會話是否存在,若存在, 則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變。
4.根據(jù)權利要求1至4任一所述的方法,其特征在于,所述方法進一步包括當NAT設備接收到業(yè)務流首包時,在內部服務器組中選擇一個狀態(tài)為有效或stale的服務器,將該業(yè)務流分擔到所選擇的服務器上。
5.根據(jù)權利要求1至4任一所述的方法,其特征在于,所述方法進一步包括當發(fā)現(xiàn)服務器的狀態(tài)切換為探測或delay或失效,則在狀態(tài)為stale或有效的服務器中,選擇一個第二服務器作為所述服務器的備用成員;若發(fā)現(xiàn)所述服務器作為了其它服務器的備用成員,則為該其它服務器重新在stale或reachable的服務器中選擇備用成員;當NAT設備接收到業(yè)務流首包時,按照預設負載均衡算法,計算分擔該業(yè)務流的服務器,判斷分擔該業(yè)務流的服務器的狀態(tài)是否為stale或有效,若是,直接將業(yè)務流分擔到該服務器上;否則,將業(yè)務流分擔到該服務器的備用成員上。
6.一種檢測內部服務器組成員失效的方法,其特征在于,該方法包括若NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為探測,若發(fā)現(xiàn)該服務器對外提供UDP服務,則探測該服務器是否三層可達,若否,則將該服務器的狀態(tài)切換為失效;若是,將該服務器的狀態(tài)切換為 stale,當有業(yè)務流被分擔到該服務器上時,在該業(yè)務流對應會話上加S標記,將該服務器的狀態(tài)切換為delay,為該服務器設置第一定時器,當?shù)谝欢〞r器超時前,若該帶S標記的會話從open狀態(tài)切換為ready狀態(tài),則將該服務器的狀態(tài)切換為有效;否則,將該服務器的狀態(tài)切換為失效;若NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文或RST報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為探測,若發(fā)現(xiàn)該服務器對外提供TCP服務,則與該服務器進行TCP三次握手,若成功,則將該服務器的狀態(tài)切換為有效,若失敗,則將該服務器的狀態(tài)切換為失效。
7.根據(jù)權利要求6所述的方法,其特征在于,當NAT設備接收到一內網(wǎng)設備發(fā)來的 ICMP目的不可達報文或RST報文時,所述將該服務器的狀態(tài)切換為失效之后進一步包括 為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回所述將該服務器的狀態(tài)切換為探測的動作。
8.根據(jù)權利要求6所述的方法,其特征在于,當NAT設備接收到一內網(wǎng)設備發(fā)來的 ICMP目的不可達報文時,所述確定不可達的服務器之后,將該服務器的狀態(tài)切換為探測之前進一步包括NAT設備根據(jù)ICMP目的不可達報文攜帶的原始數(shù)據(jù)包的五元組,確定對應的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變;當NAT設備接收到一內網(wǎng)設備發(fā)來的RST報文時,所述確定不可達的服務器之后,將該服務器的狀態(tài)切換為探測之前進一步包括NAT設備根據(jù)復位報文的五元組,確定對應的處于同步狀態(tài)的會話是否存在,若存在, 則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變。
9.根據(jù)權利要求6所述的方法,其特征在于,所述發(fā)現(xiàn)該服務器對外提供TCP服務之后,與該服務器進行TCP三次握手之前進一步包括判斷本設備與該服務器的TCP連接是否存在,若是,將該服務器的狀態(tài)切換為有效;否則,執(zhí)行所述與該服務器進行TCP三次握手的動作。
10.根據(jù)權利要求6至9任一所述的方法,其特征在于,所述方法進一步包括當NAT設備接收到業(yè)務流首包時,在內部服務器組中選擇一個狀態(tài)為有效或stale的服務器,將該業(yè)務流分擔到所選擇的服務器上。
11.根據(jù)權利要求6至9任一所述的方法,其特征在于,所述方法進一步包括當發(fā)現(xiàn)服務器的狀態(tài)切換為探測或delay或失效,則在狀態(tài)為stale或有效的服務器中,選擇一個第二服務器作為所述服務器的備用成員;若發(fā)現(xiàn)所述服務器作為了其它服務器的備用成員,則為該其它服務器重新在stale或reachable的服務器中選擇備用成員;當NAT設備接收到業(yè)務流首包時,按照預設負載均衡算法,計算分擔該業(yè)務流的服務器,判斷分擔該業(yè)務流的服務器的狀態(tài)是否為stale或有效,若是,直接將業(yè)務流分擔到該服務器上;否則,將業(yè)務流分擔到該服務器的備用成員上。
12.—種NAT設備,其特征在于,包括成員狀態(tài)維護模塊維護內部服務器組各成員的狀態(tài);成員狀態(tài)檢測模塊若接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為探測,探測該服務器是否三層可達,若否, 則將該服務器的狀態(tài)切換為失效;若是,將該服務器的狀態(tài)切換為stale,當有業(yè)務流被分擔到該服務器上時,在該業(yè)務流對應會話上加S標記,將該服務器的狀態(tài)切換為delay,為該服務器設置第一定時器,當?shù)谝欢〞r器超時前,若該帶S標記的會話從open狀態(tài)切換為 ready狀態(tài),或者針對該帶S標記的會話的TCP三次握手成功,則將該服務器的狀態(tài)切換為有效;否則,將該服務器的狀態(tài)切換為失效;或者,若接收到一內網(wǎng)設備發(fā)來的RST報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為stale,當有業(yè)務流被分擔到該服務器上時,在該業(yè)務流對應會話上加S標記,將該服務器的狀態(tài)切換為delay,為該服務器設置第一定時器,當?shù)谝欢〞r器超時前,若針對該帶S標記的會話的TCP三次握手成功,則將該服務器的狀態(tài)切換為有效;否則,將該服務器的狀態(tài)切換為失效。
13.根據(jù)權利要求12所述的NAT設備,其特征在于,所述成員狀態(tài)檢測模塊進一步用于,當接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文時,將該服務器的狀態(tài)切換為失效之后,為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回所述將該服務器的狀態(tài)切換為探測的動作;當接收到一內網(wǎng)設備發(fā)來的RST報文時,將該服務器的狀態(tài)切換為失效之后,為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回將該服務器的狀態(tài)切換為stale的動作。
14.根據(jù)權利要求12所述的NAT設備,其特征在于,所述成員狀態(tài)檢測模塊進一步用于,當NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文時,確定不可達的服務器之后,根據(jù)ICMP目的不可達報文攜帶的原始數(shù)據(jù)包的五元組,確定對應的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變;當接收到一內網(wǎng)設備發(fā)來的RST報文時,確定不可達的服務器之后,根據(jù)復位報文的五元組,確定對應的處于同步狀態(tài)的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變。
15.根據(jù)權利要求12至14任一所述的NAT設備,其特征在于,所述NAT設備進一步包括負載分擔模塊當接收到業(yè)務流首包時,根據(jù)成員狀態(tài)維護模塊中維護的各內部服務器的狀態(tài),在內部服務器組中選擇一個狀態(tài)為有效或stale的服務器,將該業(yè)務流分擔到所選擇的服務器上。
16.根據(jù)權利要求12至14任一所述的NAT設備,其特征在于,所述NAT設備進一步包括負載分擔模塊根據(jù)成員狀態(tài)維護模塊中維護的各內部服務器的狀態(tài),當發(fā)現(xiàn)一個服務器的狀態(tài)切換為探測或delay或失效,則在狀態(tài)為stale或有效的服務器中,選擇一個第二服務器作為所述服務器的備用成員;若發(fā)現(xiàn)所述服務器作為了其它服務器的備用成員,則為該其它服務器重新在stale或reachable的服務器中選擇備用成員;當接收到業(yè)務流首包時,按照預設負載均衡算法,計算分擔該業(yè)務流的服務器,判斷分擔該業(yè)務流的服務器的狀態(tài)是否為stale或有效,若是,直接將業(yè)務流分擔到該服務器上;否則,將業(yè)務流分擔到該服務器的備用成員上。
17.一種NAT設備,其特征在于,包括成員狀態(tài)維護模塊維護內部服務器組各成員的狀態(tài);成員狀態(tài)檢測模塊若接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為探測,若發(fā)現(xiàn)該服務器對外提供UDP服務,則探測該服務器是否三層可達,若否,則將該服務器的狀態(tài)切換為失效;若是,將該服務器的狀態(tài)切換為stale,當有業(yè)務流被分擔到該服務器上時,在該業(yè)務流對應會話上加S標記, 將該服務器的狀態(tài)切換為delay,為該服務器設置第一定時器,當?shù)谝欢〞r器超時前,若該帶S標記的會話從open狀態(tài)切換為ready狀態(tài),則將該服務器的狀態(tài)切換為有效;否則,將該服務器的狀態(tài)切換為失效;或者,若接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文或RST報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為探測,若發(fā)現(xiàn)該服務器對外提供TCP服務,則與該服務器進行TCP三次握手,若成功,則將該服務器的狀態(tài)切換為有效,若失敗,則將該服務器的狀態(tài)切換為失效。
18.根據(jù)權利要求17所述的NAT設備,其特征在于,所述成員狀態(tài)檢測模塊進一步用于,當接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文或RST報文時,將該服務器的狀態(tài)切換為失效之后,為該服務器設置第二定時器,當?shù)诙〞r器超時時,返回所述將該服務器的狀態(tài)切換為探測的動作。
19.根據(jù)權利要求17所述的NAT設備,其特征在于,所述成員狀態(tài)檢測模塊進一步用于,當接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文時,確定不可達的服務器之后,根據(jù) ICMP目的不可達報文攜帶的原始數(shù)據(jù)包的五元組,確定對應的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變;當接收到一內網(wǎng)設備發(fā)來的RST報文時,確定不可達的服務器之后,根據(jù)復位報文的五元組,確定對應的處于同步狀態(tài)的會話是否存在,若存在,則執(zhí)行所述將該服務器的狀態(tài)切換為探測的動作;否則,保持該服務器的狀態(tài)不變。
20.根據(jù)權利要求17所述的NAT設備,其特征在于,所述成員狀態(tài)檢測模塊進一步用于,發(fā)現(xiàn)該服務器對外提供TCP服務之后,判斷本設備與該服務器的TCP連接是否存在,若是,將該服務器的狀態(tài)切換為有效;否則,執(zhí)行所述與該服務器進行TCP三次握手的動作。
21.根據(jù)權利要求17至20任一所述的NAT設備,其特征在于,所述NAT設備進一步包括負載分擔模塊當接收到業(yè)務流首包時,根據(jù)成員狀態(tài)維護模塊中維護的各內部服務器的狀態(tài),在內部服務器組中選擇一個狀態(tài)為有效或stale的服務器,將該業(yè)務流分擔到所選擇的服務器上。
22.根據(jù)權利要求17至20任一所述的NAT設備,其特征在于,所述NAT設備進一步包括負載分擔模塊根據(jù)成員狀態(tài)維護模塊中維護的各內部服務器的狀態(tài),當發(fā)現(xiàn)一個服務器的狀態(tài)切換為探測或delay或失效,則在狀態(tài)為stale或有效的服務器中,選擇一個第二服務器作為所述服務器的備用成員;若發(fā)現(xiàn)所述服務器作為了其它服務器的備用成員,則為該其它服務器重新在stale或reachable的服務器中選擇備用成員;當接收到業(yè)務流首包時,按照預設負載均衡算法,計算分擔該業(yè)務流的服務器,判斷分擔該業(yè)務流的服務器的狀態(tài)是否為stale或有效,若是,直接將業(yè)務流分擔到該服務器上;否則,將業(yè)務流分擔到該服務器的備用成員上。
全文摘要
本發(fā)明公開了檢測內部服務器組成員失效的方法及網(wǎng)絡地址轉換設備。方法包括若NAT設備接收到一內網(wǎng)設備發(fā)來的ICMP目的不可達報文,根據(jù)該報文確定不可達的服務器,將該服務器的狀態(tài)切換為探測,探測該服務器是否三層可達,若否,則將該服務器的狀態(tài)切換為失效;若是,將該服務器的狀態(tài)切換為stale,當有業(yè)務流被分擔到該服務器上時,在該業(yè)務流對應會話上加S標記,將該服務器的狀態(tài)切換為delay,為該服務器設置第一定時器,當?shù)谝欢〞r器超時前,若該帶S標記的會話從open狀態(tài)切換為ready狀態(tài),或者針對該帶S標記的會話的TCP三次握手成功,則將該服務器的狀態(tài)切換為有效;否則,將該服務器的狀態(tài)切換為失效。本發(fā)明能夠檢測出內部服務器組成員失效。
文檔編號H04L29/08GK102299831SQ20111028970
公開日2011年12月28日 申請日期2011年9月27日 優(yōu)先權日2011年9月27日
發(fā)明者徐步正 申請人:杭州華三通信技術有限公司