專利名稱:一種報文轉發(fā)方法和系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及網絡通信領域的服務器負載均衡技術,尤其是一種報文轉發(fā)方法和系統(tǒng)。
背景技術:
負載均衡技術是由多臺服務器以對稱的方式組成一個服務器集合,每臺服務器都具有等價的地位,都可以單獨對外提供服務而無須其他服務器的輔助。通過某種負載分擔技術,將外部發(fā)送來的請求均勻分配到對稱結構中的某一臺服務器上,而接收到請求的服務器獨立地回應客戶的請求。
負載均衡系統(tǒng)包括負載均衡器、服務器組。
負載均衡器,又稱負載調度器(load balancer),是整個服務器組對外的前端機,負責將客戶端的請求按照一定的調度機制,發(fā)送到一組服務器上執(zhí)行,而客戶端認為服務是來自一個IP(Internet Protocol,網際協(xié)議)地址上的,可稱之為虛擬IP地址。負載均衡器中存在流緩存表,保存各個服務器的各種連接的相關信息。
服務器組,或稱服務器池,包括多個服務器,是一組真正執(zhí)行客戶請求的服務器。其執(zhí)行的服務可以是WEB(網頁服務)、MAIL(郵件服務)、FTP(FileTransfer Protocol,文件傳輸協(xié)議)和DNS(Domain Name System,域名系統(tǒng))或其他更多種類。其中,WEB包括HTTP(超文本傳輸協(xié)議),HTTPS(加密的超文本傳輸協(xié)議)和Cookie(Cookie允許一個Web站點在用戶的電腦上保存信息并且隨后再取回它)等網頁瀏覽相關的服務。
通過應用負載均衡技術,應用服務超過了一臺服務器只能為有限用戶提供服務的限制,可以利用多臺服務器同時為大量用戶提供服務。當某臺服務器出現(xiàn)故障時,負載均衡器會自動進行檢測并停止將服務請求分發(fā)至該服務器,而由其他工作正常的服務器繼續(xù)提供服務,從而保證了服務的可靠性。
為了保證服務器組中的服務器處于有效狀態(tài),負載均衡器需要定時的檢測服務器組,即對服務器組進行健康性檢測。健康性檢測,負載均衡器每隔一定時間對服務器進行檢測,就是某個運行著的進程去發(fā)現(xiàn)服務器的健康狀況,即真實服務器當前是處于活動狀態(tài)還是關閉狀態(tài),或者由于網絡等原因而不可達。健康性檢測只有兩種結果,可用或不可用。健康性檢測的目的是及時和自動地去發(fā)現(xiàn)真實服務器的健康性狀況,從而將負荷分配到可用的服務器,避免負荷被分配到不可用的服務器,使客戶端得不到響應。當負載均衡器在對一臺服務器進行健康性檢測,檢測失敗后,會把該服務器從負載均衡的流緩存表中刪除或標為不可用,當客戶端新建一個連接時,負載均衡器重新調度,將該連接分配給可用的其他服務器。
現(xiàn)有技術中的負載均衡技術對于客戶端已經存在的連接,則無法新建該連接。如圖1所示,一臺服務器失效以后,客戶端存在連接時間很久的TCP(TransferControl Protocol,傳輸控制協(xié)議)連接,其處理流程如下負載均衡器收到該連接的后發(fā)報文,首先查找流緩存表,由于與該連接對應的服務器不可用,負載均衡器會將后發(fā)報文丟棄,因為所述后發(fā)報文不是TCP首包,即使調度到另一個服務器也沒有用。這樣客戶端既沒有收到報文響應,也沒有收到其他報文,而TCP的機制是等到超時時間沒有回應再重發(fā),直到重發(fā)夠次數(shù)以后才會斷開連接或新建連接。于是客戶端反復的向負載均衡器發(fā)送該后發(fā)報文。直到達到一定次數(shù)確認連接失敗后,才會斷開連接或者新建連接。
現(xiàn)有技術的這種處理方法存在如下缺點(1)在連接中浪費時間,由于后發(fā)報文需要等待超時后重發(fā)到一定次數(shù)才能斷開連接,這個過程往往會花費一分多鐘的時間,這樣降低了對客戶端的響應速度;(2)占用資源,由于客戶端需要反復重發(fā)報文,而且這些重發(fā)報文沒有任何意義,只會占用網絡帶寬和負載均衡器處理能力。
發(fā)明內容
本發(fā)明的目的在于當負載均衡系統(tǒng)中服務器不可用時,對于客戶端已經存在的連接,不需要多次重發(fā)即可通知客戶端斷開該連接,從而使客戶端請求新的連接。
本發(fā)明目的是通過如下技術方案實現(xiàn)的提供一種報文轉發(fā)方法,包括報文轉發(fā)模塊判斷接收到的TCP報文是否為首包;如果所述TCP報文是首包,報文轉發(fā)模塊重新調度,在流緩存表中新建連接,并按流緩存表內容轉發(fā)所述TCP報文;如果所述TCP報文不是首包,查詢流緩存表中是否存在所述TCP報文的有效連接,存在有效連接時,按所述有效連接轉發(fā)所述TCP報文;不存在有效連接時,則向客戶端發(fā)送斷開連接請求。
該報文轉發(fā)方法中,所述查詢流緩存表中是否存在所述TCP報文的有效連接,具體為查詢流緩存表,判斷所述TCP報文查詢流緩存表中是否存在該連接,如果存在該連接,且所述連接不存在斷開連接請求標志,則存在有效連接,否則不存在有效連接。
該報文轉發(fā)方法,還包括健康性檢測的步驟健康性檢測模塊向服務器發(fā)送檢測報文,根據(jù)服務器的回應檢測出服務器是否失效的狀態(tài)。
較佳的,該報文轉發(fā)方法中,所述健康性檢測的步驟包括健康性檢測模塊向服務器發(fā)送檢測報文,在指定時間內,收到服務器的回應,則將無回應計數(shù)器清零;未收到服務器的回應,則將無回應計數(shù)器加一,當無回應計數(shù)器的值到門限值,則標記當前服務器為不可用,并刪除流緩存表中對應于該服務器的所有連接。
該報文轉發(fā)方法中,所述查詢流緩存表中是否存在所述TCP報文的有效連接,具體為確定所述流緩存表中不存在所述TCP報文的連接,則不存在有效連接。
較佳的,該報文轉發(fā)方法中,所述健康性檢測的步驟包括健康性檢測模塊向服務器發(fā)送檢測報文,在指定時間內,收到服務器的回應,則將無回應計數(shù)器清零;未收到服務器的回應,則將無回應技術器加一,當無回應計數(shù)器的值到門限值,則標記當前服務器為不可用,并將流緩存表中對應于該服務器的所有連接標記斷開連接請求標志。
該報文轉發(fā)方法中,所述查詢流緩存表中是否存在所述TCP報文的有效連接,具體為確定流緩存表中查詢到的所述TCP報文的連接帶有斷開連接請求標志,則不存在有效連接。
本發(fā)明還提供一種報文轉發(fā)系統(tǒng),包括健康性檢測模塊,檢測服務器的狀態(tài);流緩存表,存儲有與服務器相關的連接信息;報文轉發(fā)模塊,管理流緩存表,創(chuàng)建,刪除和維護流緩存表中的連接,并根據(jù)流緩存表內容對TCP報文進行轉發(fā);所述健康性檢測模塊檢測服務器組的狀態(tài),并根據(jù)所述健康性檢測模塊結果,修改流緩存表;所述報文轉發(fā)模塊接收客戶端報文,并查詢流緩存表,根據(jù)流緩存表對報文進行轉發(fā)。
較佳的,該報文轉發(fā)系統(tǒng)中,所述健康性檢測模塊包括檢測報文發(fā)送模塊,向服務器發(fā)送檢測報文,發(fā)起健康性檢測;接收模塊,用于接收服務器對檢測報文的回應,并輸出相應的報文回應信息;計時器,用于設置一定的時間;判斷模塊,判斷報文回應信息的內容是否為空,以及無回應計數(shù)器的值是否為空;無回應計數(shù)器,用于存儲服務器無回應的次數(shù);流緩存修改模塊,用于修改流緩存表中的連接;所述判斷模塊判斷接收到的報文回應信息是否為空,當所述報文回應信息不為空時,將無回應計數(shù)器的值置零;當所述報文回應信息為空時,判斷無回應計數(shù)器的值是否達到門限值,如果未達到門限值則將其值增加一;如果達到門限值,則向流緩存修改模塊發(fā)送服務器無效的信息;流緩存修改模塊根據(jù)該服務器無效信息,修改流緩存表中與該服務器對應的連接。
較佳的,該報文轉發(fā)系統(tǒng)中,所述判斷模塊包括第一判斷模塊,判斷報文回應信息的內容是否為空;第二判斷模塊,判斷無回應計數(shù)器的值是否達到門限值;所述第一判斷模塊判斷所述接收模塊中的報文回應信息是否為空,當所述報文回應信息為空時,向第二判斷模塊發(fā)送該報文回應信息;第二判斷模塊判斷無回應計數(shù)器是否到達門限值,當達到門限值時,向流緩存修改模塊發(fā)送服務器無效的信息;未達到門限值時,則將無回應計數(shù)器增1。
較佳的,該報文轉發(fā)系統(tǒng)中,所述報文轉發(fā)模塊包括首包判斷模塊,判斷接收到的TCP報文是否為首包,輸出相應的首包判斷結果,當所述TCP報文為首包時,輸出首包消息,當所述TCP報文不是首包時,輸出非首包消息;流緩存創(chuàng)建模塊,接收來自首包判斷模塊的所述首包消息,根據(jù)負載均衡機制調度該連接,并在流緩存中創(chuàng)建新的連接;流緩存查詢模塊,接收所述非首包消息,并向流緩存表中查詢是否存在有效連接,如果存在有效連接,則輸出轉發(fā)該連接的指令,如果不存在有效連接則輸出發(fā)送斷開連接請求的指令;發(fā)送模塊根據(jù)轉發(fā)連接指令將所述連接按照流緩存表內容向服務器轉發(fā),或者根據(jù)發(fā)送斷開連接請求的指令,向客戶端發(fā)送斷開連接請求。
較佳的,該報文轉發(fā)系統(tǒng)中,所述報文轉發(fā)模塊還包括流緩存刪除模塊,當流緩存查詢模塊輸出所述發(fā)送斷開連接請求的指令時,刪除流緩存表中的所述連接。
采用本發(fā)明提供的方案,通過在健康性檢測過程中對失效的服務器所對應的連接做相應的標記或者刪除,對于客戶端已經存在的連接的后發(fā)報文,當服務器不可用時,負載均衡器向客戶端發(fā)送斷開連接請求,客戶端不需要多次重發(fā)該報文,即可斷開該連接,請求新連接,負載均衡器將新連接調度到可用的服務器上,從而節(jié)約時間,提高對客戶端的響應速度,并可以減少網絡資源占用。
圖1是現(xiàn)有技術中出現(xiàn)服務器不可用時的處理流程;圖2是本發(fā)明報文轉發(fā)系統(tǒng)的結構圖;圖3是圖2中健康性檢測模塊細化圖;圖4是圖2中報文轉發(fā)模塊的細化圖;圖5是本發(fā)明報文轉發(fā)方法的流程圖;圖6是本發(fā)明報文轉發(fā)方法第一實施例具體流程圖;圖7是本發(fā)明報文轉發(fā)方法第一實施例中健康性檢測的具體流程;圖8是本發(fā)明報文轉發(fā)方法第二實施例具體流程圖;圖9是本發(fā)明報文轉發(fā)方法第一實施例中健康性檢測的具體流程;圖10是本發(fā)明改進后報文轉發(fā)的示意圖。
具體實施例方式
下面結合附圖和具體實施例對本發(fā)明做進一步的描述。
本發(fā)明的關鍵在于,負載均衡服務器在健康性檢測的時候,對不可用服務器對應的連接刪除或者做相應的標記,當收到TCP報文時,負載均衡服務器首先判斷該連接是否首包,如果不是首包,則在流緩存表中查詢是否存在有效連接,如果是無效連接,則向客戶端發(fā)送一個斷開連接請求,以便客戶端重新發(fā)送TCP連接請求。所述無效連接包括流緩存表中不存在的連接以及流緩存表中做了斷開連接請求RST標志的連接。
圖2所示,本發(fā)明提供的系統(tǒng),包括健康性檢測模塊、流緩存表、報文轉發(fā)模塊,其中健康性檢測模塊,檢測服務器的狀態(tài);流緩存表,存儲有與服務器相關的連接信息;報文轉發(fā)模塊,管理流緩存表,創(chuàng)建,刪除和維護流緩存表中的連接,并對根據(jù)流緩存表對TCP報文進行轉發(fā);所述健康性檢測模塊檢測服務器組的狀態(tài),并根據(jù)所述健康性檢測模塊結果,修改流緩存表;所述報文轉發(fā)模塊接收客戶端TCP報文,并查詢流緩存表,根據(jù)流緩存表對報文進行轉發(fā)。
圖3所示是本發(fā)明中所述健康性檢測模塊具體結構圖,其包括檢測報文發(fā)送模塊,向服務器發(fā)送檢測報文,發(fā)起健康性檢測;接收模塊,用于接收服務器對檢測報文的回應,并輸出相應的報文回應信息;計時器,用于設置一定的時間;判斷模塊,判斷報文回應信息的內容是否為空,以及無回應計數(shù)器的值是否為空;無回應計數(shù)器,用于存儲服務器無回應的次數(shù);
流緩存修改模塊,用于修改流緩存表中的連接;所述判斷模塊判斷接收到的報文回應信息是否為空,當所述報文回應信息不為空時,將無回應計數(shù)器的值置零;當所述報文回應信息為空時,判斷無回應計數(shù)器的值是否達到門限值,如果未達到門限值則將其值增加一;如果達到門限值,則向流緩存修改模塊發(fā)送服務器無效的信息;流緩存修改模塊根據(jù)該服務器無效信息,修改流緩存表中與該服務器對應的連接。
其中,所述判斷模塊包括第一判斷模塊,用于判斷報文回應信息的內容是否為空;第二判斷模塊,用于判斷無回應計數(shù)器的值是否達到門限值;所述第一判斷模塊判斷所述接收模塊中的報文回應信息是否為空,當所述報文回應信息為空時,向第二判斷模塊發(fā)送該報文回應信息;第二判斷模塊判斷無回應計數(shù)器是否到達門限值,當達到門限值時,向流緩存修改模塊發(fā)送服務器無效的信息;未達到門限值時,則將無回應計數(shù)器增1。
圖4是本發(fā)明的報文轉發(fā)模塊的具體結構圖,其包括首包判斷模塊,判斷接收到的TCP報文是否為首包,輸出相應的首包判斷結果,當所述TCP報文為首包時,輸出首包消息,當所述TCP報文不是首包時,輸出非首包消息;流緩存創(chuàng)建模塊,接收來自首包判斷模塊的所述首包消息,根據(jù)負載均衡機制調度該連接,并在流緩存中創(chuàng)建新的連接;流緩存查詢模塊,接收所述非首包消息,并向流緩存表中查詢是否存在有效連接,如果存在有效連接,則輸出轉發(fā)該連接的指令,如果不存在有效連接則輸出發(fā)送RST的指令;發(fā)送模塊根據(jù)轉發(fā)連接指令將所述連接按照流緩存表內容向服務器轉發(fā),或者根據(jù)發(fā)送RST報文指令,向客戶端發(fā)送RST報文。
所述報文轉發(fā)模塊還包括,流緩存刪除模塊,當流緩存查詢模塊輸出所述發(fā)送斷開連接請求的指令時,刪除流緩存表中的所述連接。
流緩存表,或叫連接哈希表,用于存儲連接的信息,包括連接的源IP地址、源端口,目的IP地址、目的端口或目的MAC(Medium Access Control,媒體訪問控制)地址,協(xié)議類型,和其他一些和這個連接相關的信息。協(xié)議類型一般是,TCP和UDP(User Datagram Protocol,用戶數(shù)舉報協(xié)議)。當然并不是每個負載均衡器都需要上述所有內容,可以根據(jù)系統(tǒng)做相應的調整。對于客戶端的每一個新建的連接,負載均衡器會流緩存表中新建一個流緩存項,在后續(xù)報文到達后就根據(jù)流緩存表里內容進行報文的修改和轉發(fā)。
如圖5所示,本發(fā)明提供的報文轉發(fā)方法,包括報文轉發(fā)模塊接收TCP報文,判斷該報文是否為首包;如果該TCP報文為首包,報文轉發(fā)模塊重新調度,在流緩存表中新建連接,并按流緩存表中的內容轉發(fā)所述TCP報文;如果該TCP報文不是首包,查詢流緩存表是否存在有效連接,存在有效連接時,按所述有效連接轉發(fā)所述TCP報文;不存在有效連接時,則向客戶端發(fā)送斷開連接請求。
所述查詢流緩存表中是否存在所述TCP報文的有效連接,具體為查詢流緩存表,判斷所述TCP報文查詢流緩存表中是否存在該連接,如果存在該連接,且所述連接不存在RST標志,則存在有效連接,否則不存在有效連接。
所述報文轉發(fā)方法還包括健康性檢測的步驟健康性檢測模塊向服務器發(fā)送檢測報文,根據(jù)服務器的回應檢測出服務器是否失效的狀態(tài)。
圖6為本發(fā)明第一實施例的流程圖,當報文轉發(fā)模塊接收到TCP報文,判斷該TCP報文是否為首包,如果為首包,則重新調度,在流緩存表中新建連接;如果該TCP報文不是首包,報文轉發(fā)模塊查詢流緩存表,查詢到該連接則按照流緩存表對該TCP報文進行轉發(fā);否則向客戶端發(fā)送RST報文。
如圖7所示,在上述當報文轉發(fā)模塊接收到TCP報文的步驟之前,還包括健康性檢測的步驟健康性檢測模塊向服務器發(fā)送檢測報文,在指定時間內,收到服務器的回應,則將無回應計數(shù)器清零;未收到服務器的回應,則在無回應計數(shù)器加一,當無回應計數(shù)器的值到門限值,則標記當前服務器為不可用,并刪除流緩存表中對應于該服務器的所有連接。所述門限值根據(jù)系統(tǒng)需要設置一定的次數(shù),門限值大小可以根據(jù)網絡情況和系統(tǒng)響應時間要求進行設置。
圖8為本發(fā)明第二實施例的流程圖,當報文轉發(fā)模塊接收到TCP報文,判斷該TCP報文是否為首包,如果為首包,則重新調度,在流緩存表中新建連接;如果該TCP報文不是首包,報文轉發(fā)模塊查詢流緩存表,未查詢到該連接則丟棄該報文;查詢到有效連接后,則按照流緩存表對該TCP報文進行轉發(fā);如果查詢到該連接,但該連接包含RST標志,則向客戶端發(fā)送RST報文。所述有效連接為流緩存表中存在該連接,且所述連接不存在RST標志。
如圖9所示,在上述當報文轉發(fā)模塊接收到TCP報文的步驟之前,還包括健康性檢測的步驟健康性檢測模塊向服務器發(fā)送檢測報文,在指定時間內,收到服務器的回應,則將無回應計數(shù)器清零;未收到服務器的回應,則將無回應計數(shù)器加一,當無回應計數(shù)器的值到門限值,則標記當前服務器為不可用,并在流緩存表中對應于該服務器的所有連接標記RST標志。所述門限值根據(jù)系統(tǒng)需要設置一定的次數(shù),門限值大小可以根據(jù)網絡情況和系統(tǒng)響應時間要求進行設置。
負載均衡系統(tǒng)中,負載均衡器需要定時的對服務器進行健康性檢測的步驟。
如圖10所示,采用本發(fā)明提供的方案后,對于客戶端請求的連接,負載均衡器處理過程如下對于客戶端的新建的TCP報文,負載均衡器根據(jù)調度算法分配一臺可用的服務器,在流緩存表中新建該連接,并按照流緩存內容將該TCP報文轉發(fā)給所述服務器,通過TCP三次握手,建立客戶端和服務器之間的連接;在該連接存在過程中,如果所述服務器不可用,負載均衡器在健康性檢測過程中將該服務器標記為不可用,對于客戶端發(fā)送的該連接的后發(fā)報文,負載均衡器向客戶端回復RST報文,客戶端根據(jù)收到的RST報文重新發(fā)起新的連接,或者停止發(fā)送連接。對于客戶端新建的連接,負載均衡器重新調度可用的服務器,并轉發(fā)該連接??梢?,在此過程中,客戶端不需要重復多次向負載均衡器發(fā)送后發(fā)報文,等待連接失敗時才斷開連接,從而節(jié)約時間,提高響應速度,并避免報文多次重發(fā)占用系統(tǒng)資源。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,凡在本發(fā)明的精神和原則之內所做的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內,因此,本發(fā)明的保護范圍應該以權利要求的保護范圍為準。
權利要求
1.一種報文轉發(fā)方法,其特征在于,包括報文轉發(fā)模塊判斷接收到的TCP報文是否為首包;如果所述TCP報文是首包,報文轉發(fā)模塊重新調度,在流緩存表中新建連接,并按流緩存表內容轉發(fā)所述TCP報文;如果所述TCP報文不是首包,查詢流緩存表中是否存在所述TCP報文的有效連接,存在有效連接時,按所述有效連接轉發(fā)所述TCP報文;不存在有效連接時,則向客戶端發(fā)送斷開連接請求。
2.如權利要求1所述的報文轉發(fā)方法,其特征在于,所述查詢流緩存表中是否存在所述TCP報文的有效連接,具體為查詢流緩存表,判斷所述TCP報文查詢流緩存表中是否存在該連接,如果存在該連接,且所述連接不存在斷開連接請求標志,則存在有效連接,否則不存在有效連接。
3.如權利要求2所述的報文轉發(fā)方法,其特征在于,該方法還包括健康性檢測的步驟健康性檢測模塊向服務器發(fā)送檢測報文,根據(jù)服務器的回應檢測出服務器是否失效的狀態(tài)。
4.如權利要求3所述的報文轉發(fā)方法,其特征在于,所述健康性檢測的步驟包括健康性檢測模塊向服務器發(fā)送檢測報文,在指定時間內,收到服務器的回應,則將無回應計數(shù)器清零;未收到服務器的回應,則將無回應計數(shù)器加一,當無回應計數(shù)器的值到門限值,則標記當前服務器為不可用,并刪除流緩存表中對應于該服務器的所有連接。
5.如權利要求4所述的報文轉發(fā)方法,其特征在于,所述查詢流緩存表中是否存在所述TCP報文的有效連接,具體為確定所述流緩存表中不存在所述TCP報文的連接,則不存在有效連接。
6.如權利要求3所述的報文轉發(fā)方法,其特征在于,所述健康性檢測的步驟包括健康性檢測模塊向服務器發(fā)送檢測報文,在指定時間內,收到服務器的回應,則將無回應計數(shù)器清零;未收到服務器的回應,則將無回應技術器加一,當無回應計數(shù)器的值到門限值,則標記當前服務器為不可用,并將流緩存表中對應于該服務器的所有連接標記斷開連接請求標志。
7.如權利要求6所述的報文轉發(fā)方法,其特征在于,所述查詢流緩存表中是否存在所述TCP報文的有效連接,具體為確定流緩存表中查詢到的所述TCP報文的連接帶有斷開連接請求標志,則不存在有效連接。
8.一種報文轉發(fā)系統(tǒng),其特征在于,包括健康性檢測模塊,檢測服務器的狀態(tài);流緩存表,存儲有與服務器相關的連接信息;報文轉發(fā)模塊,管理流緩存表,創(chuàng)建,刪除和維護流緩存表中的連接,并根據(jù)流緩存表內容對TCP報文進行轉發(fā);所述健康性檢測模塊檢測服務器組的狀態(tài),并根據(jù)所述健康性檢測模塊結果,修改流緩存表;所述報文轉發(fā)模塊接收客戶端報文,并查詢流緩存表,根據(jù)流緩存表對報文進行轉發(fā)。
9.如權利要求8所述的報文轉發(fā)系統(tǒng),其特征在于,所述健康性檢測模塊包括檢測報文發(fā)送模塊,向服務器發(fā)送檢測報文,發(fā)起健康性檢測;接收模塊,用于接收服務器對檢測報文的回應,并輸出相應的報文回應信息;計時器,用于設置一定的時間;判斷模塊,判斷報文回應信息的內容是否為空,以及無回應計數(shù)器的值是否為空;無回應計數(shù)器,用于存儲服務器無回應的次數(shù);流緩存修改模塊,用于修改流緩存表中的連接;所述判斷模塊判斷接收到的報文回應信息是否為空,當所述報文回應信息不為空時,將無回應計數(shù)器的值置零;當所述報文回應信息為空時,判斷無回應計數(shù)器的值是否達到門限值,如果未達到門限值則將其值增加一;如果達到門限值,則向流緩存修改模塊發(fā)送服務器無效的信息;流緩存修改模塊根據(jù)該服務器無效信息,修改流緩存表中與該服務器對應的連接。
10.如權利要求9所述的報文轉發(fā)系統(tǒng),其特征在于,所述判斷模塊包括第一判斷模塊,判斷報文回應信息的內容是否為空;第二判斷模塊,判斷無回應計數(shù)器的值是否達到門限值;所述第一判斷模塊判斷所述接收模塊中的報文回應信息是否為空,當所述報文回應信息為空時,向第二判斷模塊發(fā)送該報文回應信息;第二判斷模塊判斷無回應計數(shù)器是否到達門限值,當達到門限值時,向流緩存修改模塊發(fā)送服務器無效的信息;未達到門限值時,則將無回應計數(shù)器增1。
11.如權利要求8所述的報文轉發(fā)系統(tǒng),其特征在于,所述報文轉發(fā)模塊包括首包判斷模塊,判斷接收到的TCP報文是否為首包,輸出相應的首包判斷結果,當所述TCP報文為首包時,輸出首包消息,當所述TCP報文不是首包時,輸出非首包消息;流緩存創(chuàng)建模塊,接收來自首包判斷模塊的所述首包消息,根據(jù)負載均衡機制調度該連接,并在流緩存中創(chuàng)建新的連接;流緩存查詢模塊,接收所述非首包消息,并向流緩存表中查詢是否存在有效連接,如果存在有效連接,則輸出轉發(fā)該連接的指令,如果不存在有效連接則輸出發(fā)送斷開連接請求的指令;發(fā)送模塊根據(jù)轉發(fā)連接指令將所述連接按照流緩存表內容向服務器轉發(fā),或者根據(jù)發(fā)送斷開連接請求的指令,向客戶端發(fā)送斷開連接請求。
12.如權利要求10所述的報文轉發(fā)系統(tǒng),其特征在于,所述報文轉發(fā)模塊還包括流緩存刪除模塊,當流緩存查詢模塊輸出所述發(fā)送斷開連接請求的指令時,刪除流緩存表中的所述連接。
全文摘要
本發(fā)明公開一種報文轉發(fā)方法和系統(tǒng),負載均衡服務器在健康性檢測的時候,對不可用服務器對應的連接刪除或者做相應的標記,當收到TCP報文時,負載均衡服務器首先判斷該連接是否首包,如果不是首包,則在流緩存表中查詢是否存在有效連接,如果是無效連接,則向客戶端發(fā)送一個斷開連接請求,以便客戶端重新發(fā)送TCP連接請求。采用本發(fā)明的技術方案,對于客戶端已經存在的連接的后發(fā)報文,當服務器不可用時,客戶端不需要多次重發(fā)該報文,節(jié)約時間,并減少資源占用。
文檔編號H04L29/06GK1909507SQ200610061528
公開日2007年2月7日 申請日期2006年7月4日 優(yōu)先權日2006年7月4日
發(fā)明者易惕斌, 戴崇經, 余正軍 申請人:華為技術有限公司