報文傳輸方法及設(shè)備的制作方法
【專利摘要】本發(fā)明公開了報文傳輸方法及設(shè)備,用以實現(xiàn)報文的保序通信。所述方法包括:確定發(fā)送者應(yīng)用需要發(fā)送給接收者應(yīng)用的報文;確定發(fā)送者應(yīng)用與接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,關(guān)聯(lián)關(guān)系包括:發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系;按照報文發(fā)往所述接收者應(yīng)用的發(fā)送順序確定所述報文對應(yīng)的報文序號,并利用所述報文序號對所述報文進(jìn)行封裝后存儲到所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列中;其中,所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間維護(hù)的初始報文序號相同,且報文序號的確定方法相同;根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述報文發(fā)送隊列中的報文。
【專利說明】報文傳輸方法及設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及報文傳輸方法及設(shè)備。
【背景技術(shù)】
[0002]在網(wǎng)絡(luò)迅猛發(fā)展的今天,人與人之間,或設(shè)備與設(shè)備之間,亦或是人與設(shè)備之間通過網(wǎng)絡(luò)進(jìn)行通信,通常采用的通信方式是傳輸控制協(xié)議(Transmission ControlProtocol, TCP)/ 用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol, UDP)等。
[0003]TCP是基于字節(jié)流的一種通信協(xié)議,在使用TCP時需要通過三次握手較繁瑣流程建立點到點連接方可通信,而且通信雙方需要事先對字節(jié)流進(jìn)行約定,并進(jìn)行必要解析處理,先發(fā)送的數(shù)據(jù)先到達(dá)。而UDP則是一種基于報文的無線連接通信協(xié)議,支持一點到多點的通信模式,報文可由應(yīng)用自行定義,數(shù)據(jù)以報文為單位在接收者和發(fā)送者之間傳送,而且發(fā)送者和接收者之間可不綁定,一個發(fā)送者可向多于一個接收者發(fā)送數(shù)據(jù)報文。但由于網(wǎng)絡(luò)之間數(shù)據(jù)轉(zhuǎn)發(fā)路徑可能存在多條,數(shù)據(jù)轉(zhuǎn)發(fā)不能完全保序,即先發(fā)數(shù)據(jù)未必先到。
[0004]在網(wǎng)元設(shè)備中也存在不同處理節(jié)點間數(shù)據(jù)通信的需求,且希望通信簡單可靠,SP不同節(jié)點之間以報文為單位轉(zhuǎn)發(fā)數(shù)據(jù),且做到先發(fā)先到。
[0005]目前,在通信領(lǐng)域中,通常是基于TCP協(xié)議進(jìn)行可靠通信。眾所周知,TCP通信是基于字節(jié)流的一種可靠通信方式,并且在通信之前需要通信雙方通過“三次握手”建立虛擬連接。而欲做到面向報文(datagram)的保序通信,還需在其上自定義報文格式來實現(xiàn)面向報文的通信,即需進(jìn)行字節(jié)流分析完成應(yīng)用報文封裝,解封裝等處理。
[0006]另外,在有些場景下,例如安全的局域網(wǎng)環(huán)境中,諸多節(jié)點告警上報,數(shù)據(jù)發(fā)送是單向的,若使用TCP通信方式,不僅需要復(fù)雜的“三次握手”,還需要字節(jié)流向報文轉(zhuǎn)換,開銷就很大。
[0007]綜上,通信節(jié)點之間采用TCP進(jìn)行面向報文保序通信,應(yīng)用除了通過較為復(fù)雜過程建立通信節(jié)點間連接關(guān)系外,還需將字節(jié)流向報文的轉(zhuǎn)化。這樣,應(yīng)用處理起來就很不方便,而采用UDP方式,無法實現(xiàn)報文的保序通信。
【發(fā)明內(nèi)容】
[0008]本發(fā)明實施例提供了報文傳輸方法及設(shè)備,用以實現(xiàn)報文的保序通信。
[0009]本發(fā)明實施例提供的一種報文傳輸方法,包括:
[0010]確定發(fā)送者應(yīng)用需要發(fā)送給接收者應(yīng)用的報文;
[0011]確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述關(guān)聯(lián)關(guān)系包括:所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系;
[0012]按照報文發(fā)往所述接收者應(yīng)用的發(fā)送順序確定所述報文對應(yīng)的報文序號,并利用所述報文序號對所述報文進(jìn)行封裝后存儲到所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列中;其中,所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間維護(hù)的初始報文序號相同,且報文序號的確定方法相同;
[0013]根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述報文發(fā)送隊列中的報文。
[0014]通過該方法,實現(xiàn)了報文的保序傳輸,簡單有效地保證了收發(fā)應(yīng)用之間經(jīng)多路徑傳送業(yè)務(wù)數(shù)據(jù)時,發(fā)送者應(yīng)用數(shù)據(jù)報文可按序到達(dá)接收者應(yīng)用。
[0015]較佳地,該方法還包括預(yù)先建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系的步驟:
[0016]通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述會話控制端口號包括發(fā)送控制端口和接收控制端口號。
[0017]較佳地,通過查找本地維護(hù)的接收者隊列列表,確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系。
[0018]較佳地,該方法還包括:
[0019]若發(fā)送者本地維護(hù)的接收者隊列列表中沒有所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,則在所述接收者隊列列表中創(chuàng)建一表項,將所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系以及所述發(fā)送者應(yīng)用需要發(fā)送給所述接收者應(yīng)用的報文的初始發(fā)送序號存入該表項,并創(chuàng)建與該表項對應(yīng)的報文發(fā)送隊列。
[0020]較佳地,利用所述報文序號對所述報文進(jìn)行封裝后存儲到所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列中之后,該方法還包括:
[0021]通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,向所述接收者發(fā)送初始發(fā)送序號通告消息;
[0022]所述根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述發(fā)送隊列中的報文,包括:
[0023]當(dāng)接收到所述接收者返回的初始發(fā)送序號通告確認(rèn)消息后,根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述發(fā)送隊列中的報文。
[0024]本發(fā)明實施例提供的一種報文傳輸方法,包括:
[0025]對接收到的經(jīng)封裝的報文進(jìn)行解封裝,獲取其中攜帶的報文序號,其中,該報文序號是發(fā)送者按照報文發(fā)往接收者應(yīng)用的發(fā)送順序確定的;
[0026]確定所述報文對應(yīng)的發(fā)送者應(yīng)用與接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述關(guān)聯(lián)關(guān)系僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號,或者,所述關(guān)聯(lián)關(guān)系包括:所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系;
[0027]確定所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列,并判斷該報文發(fā)送隊列中期望接收的報文的報文發(fā)送序號是否與所述報文的報文序號相同,如果是,則調(diào)用所述接收者應(yīng)用的回調(diào)函數(shù)對所述報文進(jìn)行處理,否則,將該報文及其對應(yīng)的報文序號存儲到所述報文發(fā)送隊列中或丟棄。
[0028]通過該方法,能夠?qū)崿F(xiàn)報文的保序傳輸,簡單有效地保證了收發(fā)應(yīng)用之間經(jīng)多路徑傳送業(yè)務(wù)數(shù)據(jù)時,發(fā)送者應(yīng)用數(shù)據(jù)報文可按序到達(dá)接收者應(yīng)用。
[0029]較佳地,當(dāng)所述報文的報文序號大于所述期望接收的報文的報文發(fā)送序號時,將該報文及其對應(yīng)的報文序號存儲到所述報文發(fā)送隊列中,當(dāng)所述報文的報文序號小于所述期望接收的報文的報文發(fā)送序號時,丟棄該報文。
[0030]較佳地,該方法還包括預(yù)先建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系的步驟:
[0031]通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述會話控制端口號包括發(fā)送控制端口和接收控制端口號。
[0032]較佳地,通過查找本地維護(hù)的發(fā)送者隊列列表,確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系。
[0033]較佳地,在接收所述報文之前,該方法還包括:
[0034]通過預(yù)先約定的發(fā)送者與接收者之間的會話控制端口號,接收所述發(fā)送者發(fā)送的初始發(fā)送序號通告消息,從中獲取所述發(fā)送者應(yīng)用發(fā)給所述接收者應(yīng)用的報文的初始發(fā)送序號;
[0035]判斷本地維護(hù)的發(fā)送者隊列列表中是否存在所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系;
[0036]若已存在的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系包括所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系,但尚未獲取到發(fā)送者初始發(fā)送序號,則記錄所述初始發(fā)送序號與該關(guān)聯(lián)關(guān)系的對應(yīng)關(guān)系,并發(fā)送初始發(fā)送序號通告確認(rèn)消息給所述發(fā)送者;
[0037]若不存在僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,則直接向所述發(fā)送者返回初始發(fā)送序號通告確認(rèn)失敗消息;
[0038]若已存在的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號,則在接收者維護(hù)的發(fā)送者隊列中新創(chuàng)建所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,該關(guān)聯(lián)關(guān)系為所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系,記錄所述初始發(fā)送序號與該關(guān)聯(lián)關(guān)系的對應(yīng)關(guān)系,并發(fā)送初始發(fā)送序號通告確認(rèn)消息給所述發(fā)送者。
[0039]本發(fā)明實施例提供的一種報文傳輸設(shè)備,包括:
[0040]報文確定單元,用于確定發(fā)送者應(yīng)用需要發(fā)送給接收者應(yīng)用的報文;
[0041]關(guān)聯(lián)關(guān)系確定單元,用于確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述關(guān)聯(lián)關(guān)系包括:所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系;
[0042]報文封裝單元,用于按照報文發(fā)往所述接收者應(yīng)用的發(fā)送順序確定所述報文對應(yīng)的報文序號,并利用所述報文序號對所述報文進(jìn)行封裝后存儲到所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列中;其中,所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間維護(hù)的初始報文序號相同,且報文序號的確定方法相同;
[0043]發(fā)送單元,用于根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述報文發(fā)送隊列中的報文。[0044]通過該設(shè)備,實現(xiàn)了報文的保序傳輸,簡單有效地保證了收發(fā)應(yīng)用之間經(jīng)多路徑傳送業(yè)務(wù)數(shù)據(jù)時,發(fā)送者應(yīng)用數(shù)據(jù)報文可按序到達(dá)接收者應(yīng)用。
[0045]較佳地,所述關(guān)聯(lián)關(guān)系確定單元還用于:
[0046]通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述會話控制端口號包括發(fā)送控制端口和接收控制端口號。
[0047]較佳地,所述關(guān)聯(lián)關(guān)系確定單元通過查找本地維護(hù)的接收者隊列列表,確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系。
[0048]較佳地,所述關(guān)聯(lián)關(guān)系確定單元還用于:
[0049]若發(fā)送者本地維護(hù)的接收者隊列列表中沒有所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,則在所述接收者隊列列表中創(chuàng)建一表項,將所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系以及所述發(fā)送者應(yīng)用需要發(fā)送給所述接收者應(yīng)用的報文的初始發(fā)送序號存入該表項,并創(chuàng)建與該表項對應(yīng)的報文發(fā)送隊列。
[0050]較佳地,所述發(fā)送單元,在所述關(guān)聯(lián)關(guān)系確定單元利用所述報文序號對所述報文進(jìn)行封裝后存儲到所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列中之后,還用于:通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,向所述接收者發(fā)送初始發(fā)送序號通告消息;
[0051]所述發(fā)送單元根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述發(fā)送隊列中的報文時,具體用于:當(dāng)接收到所述接收者返回的初始發(fā)送序號通告確認(rèn)消息后,根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述發(fā)送隊列中的報文。
[0052]本發(fā)明實施例提供的一種報文傳輸設(shè)備,包括:
[0053]解封裝單元,用于對接收到的經(jīng)封裝的報文進(jìn)行解封裝,獲取其中攜帶的報文序號,其中,該報文序號是發(fā)送者按照報文發(fā)往接收者應(yīng)用的發(fā)送順序確定的;
[0054]關(guān)聯(lián)關(guān)系確定單元,用于確定所述報文對應(yīng)的發(fā)送者應(yīng)用與接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述關(guān)聯(lián)關(guān)系僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號,或者,所述關(guān)聯(lián)關(guān)系包括:所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系;
[0055]判斷單元,用于確定所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列,并判斷該報文發(fā)送隊列中期望接收的報文的報文發(fā)送序號是否與所述報文的報文序號相同,如果是,則調(diào)用所述接收者應(yīng)用的回調(diào)函數(shù)對所述報文進(jìn)行處理,否則,將該報文及其對應(yīng)的報文序號存儲到所述報文發(fā)送隊列中或丟棄。
[0056]通過該設(shè)備,實現(xiàn)了報文的保序傳輸,簡單有效地保證了收發(fā)應(yīng)用之間經(jīng)多路徑傳送業(yè)務(wù)數(shù)據(jù)時,發(fā)送者應(yīng)用數(shù)據(jù)報文可按序到達(dá)接收者應(yīng)用。
[0057]較佳地,當(dāng)所述報文的報文序號大于所述期望接收的報文的報文發(fā)送序號時,將該報文及其對應(yīng)的報文序號存儲到所述報文發(fā)送隊列中,當(dāng)所述報文的報文序號小于所述期望接收的報文的報文發(fā)送序號時,丟棄該報文。
[0058]較佳地,所述關(guān)聯(lián)關(guān)系確定單元還用于:
[0059]通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述會話控制端口號包括發(fā)送控制端口和接收控制端口號。
[0060]較佳地,所述關(guān)聯(lián)關(guān)系確定單元通過查找本地維護(hù)的發(fā)送者隊列列表,確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系。
[0061]較佳地,所述判斷單元,還用于:
[0062]在接收所述報文之前,通過預(yù)先約定的發(fā)送者與接收者之間的會話控制端口號,接收所述發(fā)送者發(fā)送的初始發(fā)送序號通告消息,從中獲取所述發(fā)送者應(yīng)用發(fā)給所述接收者應(yīng)用的報文的初始發(fā)送序號;
[0063]判斷本地維護(hù)的發(fā)送者隊列列表中是否存在所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系;
[0064]若已存在的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系包括所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系,但尚未獲取到發(fā)送者初始發(fā)送序號,則記錄所述初始發(fā)送序號與該關(guān)聯(lián)關(guān)系的對應(yīng)關(guān)系,并發(fā)送初始發(fā)送序號通告確認(rèn)消息給所述發(fā)送者;
[0065]若不存在僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,則直接向所述發(fā)送者返回初始發(fā)送序號通告確認(rèn)失敗消息;
[0066]若已存在的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號,則在接收者維護(hù)的發(fā)送者隊列中新創(chuàng)建所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,該關(guān)聯(lián)關(guān)系為所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系,記錄所述初始發(fā)送序號與該關(guān)聯(lián)關(guān)系的對應(yīng)關(guān)系,并發(fā)送初始發(fā)送序號通告確認(rèn)消息給所述發(fā)送者。
【專利附圖】
【附圖說明】
[0067]圖1為本發(fā)明實施例提供的PSDC模型示意圖;
[0068]圖2為本發(fā)明實施例提供的PSDC-S組成示意圖;
[0069]圖3為本發(fā)明實施例提供的ISN通告消息報文格式示意圖;
[0070]圖4為本發(fā)明實施例提供的ISN通告確認(rèn)消息報文格式示意圖;
[0071]圖5為本發(fā)明實施例提供的業(yè)務(wù)報文格式示意圖;
[0072]圖6為本發(fā)明實施例提供的PSDC-S報文保序控制模式示意圖;
[0073]圖7為本發(fā)明實施例提供的數(shù)據(jù)報文確認(rèn)通告消息格式示意圖;
[0074]圖8為本發(fā)明實施例提供的AR終止通告消息格式示意圖;
[0075]圖9為本發(fā)明實施例提供的PSDC-R組成示意圖;
[0076]圖10為本發(fā)明實施例提供的一種報文傳輸方法的流程示意圖;
[0077]圖11為本發(fā)明實施例提供的另一種報文傳輸方法的流程示意圖;
[0078]圖12為本發(fā)明實施例提供的一種報文傳輸設(shè)備的結(jié)構(gòu)示意圖;
[0079]圖13為本發(fā)明實施例提供的另一種報文傳輸設(shè)備的結(jié)構(gòu)示意圖。【具體實施方式】
[0080]本發(fā)明實施例提供了 一種報文傳輸方法及設(shè)備,用以實現(xiàn)報文的保序通信。
[0081]在數(shù)據(jù)通信領(lǐng)域中,出于可靠性或大帶寬考慮,兩個通信節(jié)點間往往存在多條路由或轉(zhuǎn)發(fā)路徑,這樣,互相通信的兩節(jié)點間的數(shù)據(jù)報文轉(zhuǎn)發(fā)時序(即先發(fā)出先到達(dá))就難以保證了。另外,出于性能考慮,每個通信節(jié)點往往使用多核處理器,每個核都可能接收來自網(wǎng)絡(luò)上的數(shù)據(jù)包,這樣一來,數(shù)據(jù)包到達(dá)應(yīng)用也存在報文時序不正確的可能。但在網(wǎng)元分布式節(jié)點通信時存在保序通信要求,即一個通信節(jié)點向其它通信節(jié)點發(fā)送數(shù)據(jù)報文時,期望能有序到達(dá),即先發(fā)出的報文先到達(dá)對端節(jié)點。
[0082]本發(fā)明實施例提出一種報文有序交付控制(Packet Sequential DeliveryControl,PSDC)方案,使得在網(wǎng)元中或某些分布式應(yīng)用場景中,應(yīng)用發(fā)送的消息保序到達(dá)指定目的地,但對應(yīng)用呈現(xiàn)的接口依舊為類似UDP的簡單通信。
[0083]在本發(fā)明實施例所給出的方案中,通信節(jié)點間事先約定會話控制端口號,包括發(fā)送控制端口和接收控制端口號。通過它們,通信處理實體根據(jù)上層應(yīng)用報文發(fā)送要求,與指定節(jié)點建立關(guān)聯(lián)(Association Relation, AR)關(guān)系,之后該應(yīng)用的相關(guān)報文均基于所建關(guān)聯(lián)關(guān)系通過UDP方式在指定節(jié)點和本地節(jié)點間進(jìn)行轉(zhuǎn)發(fā)。此外,若上層應(yīng)用不再使用底層提供的保序通信服務(wù),可顯式刪除關(guān)聯(lián),或通信處理實體根據(jù)已建關(guān)聯(lián)的保持定時器觸發(fā)自動刪除關(guān)聯(lián)。
[0084]本發(fā)明實施例涉及發(fā)送者(PacketSequential Delivery Control for Sender,PSDC-S)和接收者(Packet Sequential Delivery Control for Receiver, PSDC-R)兩種通信處理實體。下面對其功能分別進(jìn)行說明。
[0085]本發(fā)明實施例中,在PSDC-S和PSDC-R兩端,分別維護(hù)有兩個列表。
[0086]PSDC-S 維護(hù)的是接收者隊列(Remote Node data Queue for receiver, RNQr)列表,該列表可以包括一個或多個表項,其中,任意一個表項用于保存本PSDC-S和一個PSDC-R的關(guān)聯(lián)關(guān)系,以及發(fā)往該P(yáng)SDC-R的報文發(fā)送隊列(Sending Queue,SQ),其中,該SQ中保存待發(fā)送給該P(yáng)SDC-R的報文,每一報文對應(yīng)一發(fā)送序列號(Sequence Number, SN),SN是按照報文的發(fā)送順序依次編排的,例如,第一個待發(fā)送的報文的SN,即初始發(fā)送序列號(Initial Sequence Number, I SN)為0,第二個待發(fā)送的報文的SN為1,第三個待發(fā)送的報文的SN為2,以此類推。
[0087]其中,同一發(fā)送者應(yīng)用與同一接收者應(yīng)用之間維護(hù)的初始報文序號相同,且報文序號的遞增規(guī)則相同,當(dāng)報文序號達(dá)到預(yù)設(shè)的最大值后,又重新置為初始序號O。
[0088]同理,PSDC-R維護(hù)的是發(fā)送者隊列(RemoteNode Queue for sender,RNQs)列表,該列表可以包括一個或多個表項,其中,任意一個表項用于保存本PSDC-R和一個PSDC-S的關(guān)聯(lián)關(guān)系,以及該P(yáng)SDC-S發(fā)往本PSDC-R的報文的發(fā)送隊列(Sending Queue,SQ),其中,該SQ中保存待上報給本PSDC-R中相應(yīng)應(yīng)用的來自該P(yáng)SDC-S的報文,每一報文對應(yīng)一發(fā)送序列號(Sequence Number, SN),SN是按照該P(yáng)SDC-S發(fā)送給本PSDC-R報文的發(fā)送順序依次編排的,例如,第一個發(fā)送的報文的SN,即初始發(fā)送序列號(Initial Sequence Number, I SN)為0,第二個發(fā)送的報文的SN為I,第三個發(fā)送的報文的SN為2,以此類推。
[0089]其中,PSDC-R和 PSDC-S 的關(guān)聯(lián)關(guān)系,即 PSDC-S 的 IP 地址(IP for sender, IPs)和 UDP端口號(Data Port for sender, DPs),與 PSDC-R 的 IP 地址(IP for receiver, IPr)和 UDP 端口號(Data Port for receiver, DPr)的對應(yīng)關(guān)系。
[0090]通過這種機(jī)制,簡單有效地保證了收發(fā)應(yīng)用之間經(jīng)多路徑傳送業(yè)務(wù)數(shù)據(jù)時,發(fā)送者應(yīng)用數(shù)據(jù)報文可按序到達(dá)接收者應(yīng)用。
[0091 ] 如下分別對PSDC-S和PSDC-R功能進(jìn)行說明。
[0092]發(fā)送者PSDC-S功能:
[0093]數(shù)據(jù)發(fā)送者應(yīng)用,例如圖1中應(yīng)用(APPlication,APP)#1,調(diào)用PSDC-S提供的發(fā)送接口向PSDC-R發(fā)送數(shù)據(jù)報文,發(fā)送數(shù)據(jù)涉及本地IP地址(IP for sender, IPs)和UDP端口號(Data Port for sender, DPs),遠(yuǎn)端 IP 地址(IP for receiver, I Pr)和 UDP 端口號(Data Port for receiver, DPr)。
[0094]PSDC-S查找其維護(hù)的RNQr列表,查找的關(guān)鍵字為四元組(簡稱PSD四元組):IPs、DPs、IPr 和 DPr。
[0095]若查找不到,則創(chuàng)建一個表項,記錄上述四元組,以及初始發(fā)送序列號(InitialSequence Number, ISN),ISN取值為0,同時創(chuàng)建一個與前述表項對應(yīng)的報文發(fā)送隊列(Sending Queue,SQ),用于將APP#1欲發(fā)送數(shù)據(jù)報文經(jīng)過序號封裝后暫存入其中。同時,通過IPs和發(fā)送者控制UDP端口(Control Port for sender, CPs)所確定的套接字(socket),向四元組中的IPr和UDP控制端口號(Control Port for receiver, CPr)所確定的接收者發(fā)起ISN通告消息,并等待接收ISN通告確認(rèn)消息。PSDC-S在接收到來自指定PSDC-R的ISN通告確認(rèn)后,將SQ中緩存報文依次按照前述四元組調(diào)用底層UDP通信接口(如操作系統(tǒng)(Operating System, OS)的 socket 發(fā)送接口 )發(fā)送出去。
[0096]若查找到,直接進(jìn)行APP#1欲發(fā)送數(shù)據(jù)報文序號(Sequence Number, SN)封裝,并存入相應(yīng)SQ中。所封裝序號應(yīng)為相應(yīng)SQ中最后一個數(shù)據(jù)報文所封裝的SN+1。若相應(yīng)SQ當(dāng)前為空,則所封裝的序號應(yīng)為相應(yīng)SQ中期望接收的報文的SN。需要說明的,在應(yīng)用發(fā)送報文且相應(yīng)SQ當(dāng)前為空,需將對應(yīng)SQ中期望接收的報文的SN執(zhí)行加一操作(即SN =SN+I)。
[0097]具體處理參見后面關(guān)于接收者PSDC-S的相關(guān)描述。
[0098]接收者PSDC-R功能:
[0099]數(shù)據(jù)接收者應(yīng)用,例如圖1中APP#2,向本地PSDC-R注冊本地IP地址IPr、UDP端口號DPr、發(fā)送者IP地址IPs和UDP端口號DPs (其中,IPs和DPs可選),以及數(shù)據(jù)接收回調(diào)接口函數(shù),若僅注冊IPr和DPrJU PSDC-R所接收到的UDP報文的目的IP、UDP端口號與IPr、DPr分別相同,即可交付于APP#2,否則,還需對所接收到的UDP報文源IP、UDP端口號,分別與IPs、DPs進(jìn)行再匹配,僅有全匹配報文才交付于APP#2。
[0100]PSDC-R在由IPr和CPr所確定的socket上接收到來自PSDC-S發(fā)送的ISN通告后,查詢其維護(hù)的以PSD四元組或二元組(即由IPr和DPr組合的元組)為關(guān)鍵字的遠(yuǎn)端節(jié)點(即發(fā)送節(jié)點)在RNQs列表中是否存在匹配項,即數(shù)據(jù)接收者的應(yīng)用是否已在PSDC-R注冊。
[0101]若已存在四元組,但尚未獲取到發(fā)送者初始發(fā)送序號,則記錄所述初始發(fā)送序號與該關(guān)聯(lián)關(guān)系的對應(yīng)關(guān)系,并發(fā)送初始發(fā)送序號通告確認(rèn)消息給所述發(fā)送者。該確認(rèn)消息通過IPr和CPr所確定的socket,由PSDC-R發(fā)往由IPs和CPs所確定的發(fā)起者PSDC-S的socket。[0102]若不存在僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,則直接向所述發(fā)送者返回初始發(fā)送序號通告確認(rèn)失敗消息。
[0103]若僅存在二元組(即未與發(fā)送者建立關(guān)聯(lián),已存在的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號),則在查找到的RNQs中記錄ISN通告消息中指定的ISN,以及PSD四元組信息,并向發(fā)送者PSDC-S返回ISN通告確認(rèn)響應(yīng)消息。
[0104]PSDC-R在IPr和DPr上接收到由PSDC-S發(fā)送的經(jīng)封裝的應(yīng)用數(shù)據(jù)報文后取出其中攜帶的SN(記為SNs)。再基于PSD四元組查找RNQr隊列,找到匹配的RNQs表項,將匹配的RNQs表項中保存的當(dāng)前SN (記為SNr)和SNs進(jìn)行比較,若相同,則通過回調(diào)接口將數(shù)據(jù)遞交給應(yīng)用APP#2處理。否則,若SNs小于SNr,則丟棄該應(yīng)用數(shù)據(jù)報文,若SNs大于SNr,則將該應(yīng)用數(shù)據(jù)報文及其對應(yīng)的SNs存入RNQs中的與該P(yáng)SD四元組所匹配的表項。
[0105]下面分別介紹PSDC-S和PSDC-R的組成及具體處理流程。
[0106]發(fā)送者PSDC-S:
[0107]PSDC-S由兩部分組成,如圖2所示,一個是遠(yuǎn)程節(jié)點包序號控制塊管理器(RmtNodePktSeqNo Manager), 一個是遠(yuǎn)程節(jié)點包序號控制塊(RmtNodeSeqNo)列表。PSDC-S根據(jù)所維護(hù)的遠(yuǎn)程節(jié)點包序號,對上層應(yīng)用欲發(fā)送報文進(jìn)行序號(Sequence Number, SN)封裝,并發(fā)送至目的節(jié)點。SN從OxO (十六進(jìn)制)開始,最大為OxFFFFFFFF (十六進(jìn)制)。
[0108]PSDC-S工作時首先指派IP地址IPs,以及一個本地UDP端口號,即控制端口號CPs,用于發(fā)送者和接收者關(guān)聯(lián)(Association Relation, AR)建立,以及數(shù)據(jù)報文到達(dá)確認(rèn)等控制類消息收發(fā),并為上層應(yīng)用提供以下接口:
[0109]注冊接口(psdcsRegister),注冊輸入內(nèi)容包括IPs和DPs。注冊成功后,應(yīng)用獲得發(fā)送實例號(SendInstance),該 SendInstance 在 PSDC-S 內(nèi)唯一。
[0110]去注冊接口(psdcsDeregister),去注冊輸入內(nèi)容包括Sendlnstance、IPr 和 DPr。其中IPr和DPr可選。若不存在可選項,則從PSDC - S中清除與Sendlnstance相對應(yīng)的以IPs和DPs為元素的所有關(guān)聯(lián)AR,其中AR是由IPs、DPs、IPr和DPr唯一確定的一個通信收發(fā)實體對,并通告這些AR的PSDC - R,即由IPr和DPr唯一確定的PSDC-R,清除相應(yīng)接收控制實例,即與通知者PSDC-S相關(guān)的控制塊,例如接收隊列、狀態(tài)機(jī)等信息。若存在可選項,則僅清除由Sendlnstance和IPr、DPr共同確定的關(guān)聯(lián)AR,并通告該AR的PSDC - R,清除相應(yīng)接收通信處理實體。
[0111]發(fā)送接口(psdcsSend),其輸入內(nèi)容包括Sendlnstance、IPr和DPr,以及待發(fā)送數(shù)據(jù)(DataBlock)、待發(fā)送數(shù)據(jù)長度(DataLen)。應(yīng)用使用該接口向指定節(jié)點發(fā)送業(yè)務(wù)數(shù)據(jù)。
[0112]查詢接口(psdcsQuery),其輸入內(nèi)容包括Sendlnstance、IPr和DPr,以及返回對應(yīng)AR當(dāng)前狀態(tài)。應(yīng)用可使用該接口查詢與所關(guān)心節(jié)點之間的關(guān)聯(lián)關(guān)系狀態(tài),作為應(yīng)用發(fā)送報文頻度控制的參考。
[0113]PSDC-S執(zhí)行下述過程:
[0114]步驟一:接收應(yīng)用注冊
[0115]當(dāng)上層應(yīng)用調(diào)用PSDC-S注冊接口 psdcsRegister執(zhí)行IPs和DPs注冊時,PSDC-S為其分配PSDC-S范圍內(nèi)唯一的Sendlnstance標(biāo)識(4字節(jié)整數(shù)),同時記錄所分配的Sendlnstance 和 IPs、DPs 的對應(yīng)關(guān)系。
[0116]步驟二:接收應(yīng)用業(yè)務(wù)數(shù)據(jù)
[0117]應(yīng)用注冊之后,調(diào)用psdcsSend接口發(fā)送數(shù)據(jù)時,PSDC-S將Sendlnstance、IPr和DPr (實質(zhì)上為IPs、DPs、IPr、DPr四元組,簡稱PSD四元組)保存下來(假如該四元組之前未保存的話)。PSD四元組作為包序號控制塊索引。
[0118]若PSD四元組不存在,則向目的節(jié)點PSDC-R的控制端口 CPr (即由IPr和CPr決定的socket)發(fā)起注冊(即ISN Notification消息)以告知其ISN,并接收來自目的節(jié)點的 ISN 通告確認(rèn)(Notification Acknowledgement)消息,完成 PSDC-S 和 PSDC-R 之間 AR的建立。具體消息如下所述:
[0119]ISN通告消息(ISN Notification)包括:
[0120]本地IPs 和 UDP 端口號 DPs ;
[0121 ]遠(yuǎn)端 IPr 和 UDP 端口號 DPr ;
[0122]流水號標(biāo)識(Identifier)(唯一標(biāo)識該ISN通告消息);
[0123]ISN。
[0124]可選的,ISN通告消息(ISN Notification)還可以包括:PSDC-R進(jìn)行數(shù)據(jù)報文確認(rèn)的頻度參數(shù),即兩次確認(rèn)報文之間持續(xù)時間間隔(AckInterval)及報文累計數(shù)量(AckPktAmount)。
[0125]具體ISN通告消息(ISN Notification)的格式如圖3所示。
[0126]其中:
[0127]消息類型(MessageType, MT):1個字節(jié),取值I。
[0128]IP地址版本(IPV):1個字節(jié),取值4時表示版本4的IP地址(IPV4);取值6時表示版本6的IP地址(IPV6)。
[0129]標(biāo)識(Identifier):唯一標(biāo)識一次ISN通告。在連續(xù)的兩次ISN通告之間不同,PSDC-S以此唯一識別一對ISN通告、ISN通告確認(rèn)消息的對應(yīng)關(guān)系。
[0130]PSDC-S 側(cè) IP 地址(SIP1 ?SIP4):若 IPV = 4,則僅存在 SIP1,SIP2、SIP3 和 SIP4不關(guān)心;若IPV = 6,則SIPl?SIP4均有效。
[0131]PSDC-R 側(cè) IP 地址(RIP1 ?RIP4):若 IPV = 4,則僅存在 RIP1,RIP2、RIP3 和 RIP4不關(guān)心;若IPV = 6,則SIPl?SIP4均有效。
[0132]PSDC-S 側(cè)數(shù)據(jù)端口(DPs):2 字節(jié)。
[0133]PSDC-R 側(cè)數(shù)據(jù)端口(DPr):2 字節(jié)。
[0134]PSDC-S確定的初始報文序號(ISN):4字節(jié)。
[0135]兩次確認(rèn)報文之間最大持續(xù)時間間隔(AckInterval):字節(jié)。
[0136]兩次確認(rèn)報文之間PSDC-R接收到的報文累計數(shù)量(AckPktAmount):4字節(jié)。
[0137]ISN通告確認(rèn)消息(ISN Notification Acknowledgement)包括:本地 IPs 和 DPs,遠(yuǎn)端IPr和DPr,以及Identifier。其格式如圖4所示。
[0138]其中,
[0139]消息類型(MessageType, MT):1個字節(jié),取值2。
[0140]IP地址版本(IPV):1個字節(jié),取值4時表示版本4的IP地址(IPV4);取值6時表示版本6的IP地址(IPV6)。[0141]標(biāo)識(Identifier):唯一標(biāo)識一次ISN通告。PSDC-R根據(jù)接收到的ISN通告中同名信息域回填。
[0142]PSDC-S 側(cè) IP 地址(SIP1 ?SIP4):若 IPV = 4,則僅存在 SIP1,SIP2、SIP3 和 SIP4不關(guān)心;若IPV = 6,則SIPl?SIP4均有效。
[0143]PSDC-R 側(cè) IP 地址(RIP1 ?RIP4):若 IPV = 4,則僅存在 RIP1,RIP2、RIP3 和 RIP4不關(guān)心;若IPV = 6,則SIPl?SIP4均有效。
[0144]PSDC-S 側(cè)數(shù)據(jù)端口(DPs):2 字節(jié)。
[0145]PSDC-R 側(cè)數(shù)據(jù)端口(DPr):2 字節(jié)。
[0146]PSDC-R側(cè)是否已成功建立與PSDC-S關(guān)聯(lián)的結(jié)果(Rst):4字節(jié)。例如:取值O表示成功。取值非O表示失敗,其中,取值I表示應(yīng)用不存在;取值2表示關(guān)聯(lián)已存在。
[0147]若PSD四元組存在,則根據(jù)該P(yáng)SD四元組所對應(yīng)的RmtNodeSeqNo進(jìn)行報文封裝并完成封裝后報文的發(fā)送。
[0148]具體地,應(yīng)用數(shù)據(jù)報文封裝方式為,在APP#1所遞交的UDP數(shù)據(jù)報文末尾追加SN字段(4字節(jié)),并更新原報文長度(Datagram Length, DL)為(DL+4)字節(jié),具體如圖5所
/Jn ο
[0149]需要說明的是:該報文是作為UDP報文凈荷發(fā)送出去的。鑒于UDP基本通信是現(xiàn)有一種通信方式,因此不再贅述。
[0150]為保證發(fā)送報文有序性,對發(fā)送報文進(jìn)行隊列管理。具體而言,PSDC-S根據(jù)PSDC-R的報文確認(rèn)進(jìn)行發(fā)送報文隊列出隊操作。若出現(xiàn)確認(rèn)報文錯序,則暫不執(zhí)行出隊操作,直至相應(yīng)確認(rèn)報文從由IPs和CPs確定的socket上收到為止,或應(yīng)用強(qiáng)行終止該通信,或指定的通信?;疃〞r器超時為止。
[0151]以下給出PSDC-S發(fā)送控制策略。
[0152]應(yīng)用調(diào)用PSDC-S發(fā)送接口 psdcsSend發(fā)送數(shù)據(jù)報文時,PSDC-S在處理完報文封裝處理后,是直接發(fā)送還是暫存入RNQs隊列,取決于定時器時長為兩次發(fā)送之間等待時間間隔(Twait)的發(fā)送控制定時器(Sending Control Timer, SCT)是否超時,或待發(fā)送隊列數(shù)據(jù)報文數(shù)量是否到達(dá)觸發(fā)一次發(fā)送過程的累計發(fā)送報文數(shù)量(Atrig)。只要上述兩個條件中的任一條件滿足,即執(zhí)行發(fā)送。但一次連續(xù)發(fā)送報文數(shù)量不超過一次連續(xù)發(fā)送報文數(shù)量(Acont),即調(diào)用底層UDP報文發(fā)送接口連續(xù)發(fā)送的報文數(shù)量。
[0153]需要說明的是:當(dāng)一次連續(xù)發(fā)送過程中若出現(xiàn)發(fā)送失敗,則立即終止本次發(fā)送。未發(fā)送的數(shù)據(jù)報文留待后續(xù)發(fā)送。
[0154]通過CPs接收來自PSDC-R期望SN,即PSDC-R斷言錯序時的期望報文。若PSDC-R無錯序,則置錯序標(biāo)志(DisorderFlag)為0,否則置其為I。同時,獲取PSDC-R接收緩沖區(qū)大小,作為其發(fā)送數(shù)據(jù)控制的參考。
[0155]PSDC-S接收到PSDC-R的確認(rèn)通告(Ack Notification)(其中攜帶錯序報文重發(fā)信息)后,重發(fā)ExpPtr至DisorderPtr間的報文。重發(fā)報文的發(fā)送策略與正常報文發(fā)送策略相同。
[0156]具體PSDC-S發(fā)送控制如下所述。針對尚未被PSDC-R確認(rèn)(即尚未接收到已發(fā)送報文的確認(rèn)消息)的報文列表如圖6所示。
[0157]在圖6中,AckPtr表示PSDC-S的RNQs中由PSD四元組決定的SQ隊列中首先欲被確認(rèn)的報文序號;ExpPtr表示PSDC-R期望接收到的報文序號;WrtPtr表示PSDC-S下一個欲被緩存的報文序號;MaxPtr表示PSDC-R當(dāng)前可接收的最新報文序號。它隨著ExpPtr的變化而變化。在ExpPtr和MaxPtr之間報文個數(shù)不超過0XFFFFFFFF/2。
[0158]需要說明的是,通常情況下,圖6中提到的報文序號AckPtr小于或等于WrtPtr,ExpPtr小于或等于MaxPtr。但隨著報文序號遞增到達(dá)OXFFFFFFFF后,便回繞至O。這樣,就存在ExpPtr大于MaxPtr, AckPtr大于WrtPtr的情況。
[0159]針對上述情況,對PSDC-S而言,待確認(rèn)報文序號范圍為:
[0160]當(dāng)AckPtr小于或等于WrtPtr時,
[0161][AckPtr, WrtPtr] = (AckPtr ?WrtPtr);
[0162]或當(dāng)AckPtr大于或等于WrtPtr時,
[0163][AckPtr, WrtPtr] = (AckPtr ?OXFFFFFFFF, O ?WrtPtr)。
[0164]認(rèn)為PSDC-R可接收報文序號范圍為:
[0165]當(dāng)ExpPtr小于或等于MaxPtr時,
[0166][ExpPtr, MaxPtr] = (ExpPtr ?MaxPtr);
[0167]當(dāng)ExpPtr大于或等于MaxPtr時,
[0168][ExpPtr, MaxPtr] = (ExpPtr ?OXFFFFFFFF, O ?MaxPtr)。
[0169]當(dāng)接收到Ack Notification時,重發(fā)指定序號段報文。具體報文確認(rèn)消息(AckNotification)包括IPs、DPs、IPr和DPr,以及期望重發(fā)的一個或多個報文的首報文序號ExpPtr及數(shù)量(Amnt),以及PSDC-R關(guān)于該AR的可接收消息個數(shù)(Br)。Br可被PSDC-S作為用戶數(shù)據(jù)報文發(fā)送控制的參考。即PSDC-S重發(fā)報文是否啟動取決Br是否大于零。
[0170]該消息由PSDC-R通過由IPr和CPr所決定的socket發(fā)往由IPs和CPs決定的PSDC-S的socket。數(shù)據(jù)報文確認(rèn)通告消息(Ack Notification)的報文格式如圖7所示,其中,
[0171]消息類型(MessageType, MT):1個字節(jié),取值3。
[0172]IP地址版本(IPV):1個字節(jié),取值4時表示版本4的IP地址(IPV4);取值6時表示版本6的IP地址(IPV6)。
[0173]在PSDC-R是否探測出報文錯序(Disorder Flag, DF):DF取值O表示無錯序;DF取值I表示錯序。
[0174]保留字節(jié)(RSVD):—個字節(jié)。
[0175]SIPl ?SIP4,表示 PSDC-S 側(cè) IP 地址。若 IPV = 4,則僅存在 SIP1,SIP2、SIP3 和SIP4不關(guān)心;若IPV = 6,則SIPl?SIP4均有效。
[0176]RIPl ?RIP4,表示 PSDC-R 側(cè) IP 地址。若 IPV = 4,則僅存在 RIP1,RIP2、RIP3 和RIP4不關(guān)心;若IPV = 6,則SIPl?SIP4均有效。
[0177]PSDC-S 側(cè)數(shù)據(jù)端口(DPs):2 字節(jié)。
[0178]PSDC-R 側(cè)數(shù)據(jù)端口(DPr):2 字節(jié)。
[0179]PSDC-R期望的待接收數(shù)據(jù)報文序號(ExpPtr):4字節(jié)。
[0180]PSDC-R期望待重發(fā)數(shù)據(jù)報文數(shù)量(Amnt),即自ExpPtr序號開時序號連續(xù)的報文數(shù)量。
[0181]PSDC-R針對PSD四元組所決定的緩沖區(qū)大小(Br),即當(dāng)時可接收報文數(shù)量。[0182]當(dāng)收到的Ack Notification消息中ExpPtr為期望接收報文序號,其中Amnt = O,表明PSDC-R無新報文到達(dá)。
[0183]若ExpPtr等于WPtr,則不做處理。
[0184]若ExpPtr落在由[AckPtr, WPtr]決定的區(qū)間,則更新AckPtr為ExpPtr,并且,
[0185](a)若 Amnt = O, PSDC-S 發(fā)送位于[AckPtr, WrPtr]之間的報文。
[0186](b)若 Amnt>0, PSDC-S 重發(fā)位于[AckPtr, MaxPtr]之間的報文。
[0187]其中,MaxPtr=(ExpPtr+Amnt) % 0x100000000?
[0188]步驟三:周期探測PSDC-R心跳是否正常。
[0189]根據(jù)與PSDC-R之間建立AR時指定的數(shù)據(jù)報文接收確認(rèn)周期要求,啟動周期定時器檢查PSDC-R是否正常。
[0190]判斷依據(jù):PSDC-R的Ack Notification消息在規(guī)定時間間隔(Twait)內(nèi)未能接收到,并連續(xù)三次仍未收到,則認(rèn)為PSDC-R異常。
[0191]若判斷PSDC-R心跳異常,認(rèn)為PSDC-R重啟,PSDC-S清除相關(guān)RNQs中緩存報文,重新嘗試ISN通告,恢復(fù)AR。
[0192]步驟四:接收應(yīng) 用去注冊,或獲知PSDC-R不可達(dá)關(guān)閉AR。
[0193]PSDC-S在以下情形下執(zhí)行相應(yīng)AR關(guān)閉操作:
[0194]應(yīng)用請求關(guān)閉指定AR ;
[0195]PSDC-R不可達(dá)超過預(yù)設(shè)時間,即PSDC-S期望的業(yè)務(wù)報文確認(rèn)時間AckInterval ;
[0196]接收到來自PSDC-R 的 AR 終止通告(AR Terminiation Notification)。
[0197]PSDC-S 向 PSDC-R 發(fā)起的 AR 終止通告(AR Termination Notif ication),包括所關(guān)閉AR對應(yīng)的PSD四元組信息。AR終止通告消息的格式如圖8所示。
[0198]其中,
[0199]消息類型(MessageType, MT):1個字節(jié),取值4。
[0200]IP地址版本(IPV): I個字節(jié),取值4時表示版本4的IP地址(IPV4);取值6時表示版本6的IP地址(IPV6)。
[0201]PSDC-S終止關(guān)聯(lián)關(guān)系的原因(Cause),例如:取值I表示上層應(yīng)用顯示關(guān)閉;取值2表示探測到PSDC-R已超過預(yù)設(shè)?;顣r間。
[0202]保留字節(jié)(RSVD):—個字節(jié)。
[0203]SIPl~SIP4,表示PSDC-S側(cè)IP地址。若IPV = 4,則僅存在SIP1,不關(guān)心SIP2、SIP3 和 SIP4 ;若 IPV = 6,則 SIPl ~SIP4 均有效。
[0204]RIPl~RIP4,表示PSDC-R側(cè)IP地址。若IPV = 4,則僅存在RIP1,不關(guān)心RIP2、RIP3 和 RIP4 ;若 IPV = 6,則 SIPl ~SIP4 均有效。
[0205]PSDC-S 側(cè)數(shù)據(jù)端口(DPs):2 字節(jié)。
[0206]PSDC-R 側(cè)數(shù)據(jù)端口(DPr):2 字節(jié)。
[0207]需要說明的是=PSDC-R在獲知某一接收者實例(即由PSD四元組決定的實例)不存在時,也通告PSDC-S。PSDC-R向PSDC-S發(fā)送的AR終止通告與上述消息格式相同。
[0208]下面介紹接收者PSDC-R的組成及具體處理流程:
[0209]PSDC-R由兩部分組成,如圖9所示,一部分是遠(yuǎn)端節(jié)點狀態(tài)機(jī)管理(RmtNodeFSMScheduler),另一部分是遠(yuǎn)端節(jié)點狀態(tài)機(jī)(RmtNodeFSM)列表。[0210]RmtNodeFSM Scheduler根據(jù)接收的遠(yuǎn)端(發(fā)送者)發(fā)起的ISN通告請求攜帶的PSD四元組信息,動態(tài)創(chuàng)建相應(yīng)RmtNodeFSM。一個RmtNodeFSM由PSD四元組唯一確定。
[0211]PSDC-R工作時首先指派本地IP地址IPr及一個本地UDP端口號,即控制端口號CPr,用于接收者和發(fā)送者之間AR的建立,以及數(shù)據(jù)報文到達(dá)確認(rèn)等控制消息收發(fā)。此外,為上層應(yīng)用提供以下接口:
[0212]注冊接口 psdcrRegister,注冊輸入內(nèi)容包括IPr、DPr、IPs、DPs和應(yīng)用數(shù)據(jù)接收回調(diào)函數(shù)AppRecvCallback。其中IPs、DPs為可選。PSDC-R根據(jù)應(yīng)用注冊的是PSD四元組還是二元組(即由IPr、DPr確定的元組)來決定來自PSDC-S的報文轉(zhuǎn)交應(yīng)用方式。
[0213]去注冊接口 psdcrDeregister,去注冊輸入內(nèi)容包括IPr、DPr、IPs、DPs,其中IPs、DPs為可選。應(yīng)用調(diào)用該接口可關(guān)閉由IPr、DPr、IPs、DPs決定的AR,或IPr、DPr決定的AR。
[0214]PSDC-R執(zhí)行下述處理流程:
[0215]步驟一:接收應(yīng)用注冊。
[0216]完成PSDC-R可接收的IPr、DPr、IPs和DPs的指定,以及應(yīng)用接收數(shù)據(jù)的回調(diào)函數(shù)的記錄,并執(zhí)行IPr、DPr、IPs和DPs相應(yīng)socket建立,以備從中接收來自PSDC-S發(fā)來的應(yīng)用數(shù)據(jù)。
[0217]步驟二:接收PSDC-S的ISN請求。
[0218]PSDC-R在接收到來自PSDC-S的ISN通告(ISN Notification)時,創(chuàng)建一新的RmtNodeFSM。前提是,通告中指定的IPr和DPr已在PSDC-R注冊,并且由ISN Notification中PSD四元組所決定的RmtNodeFSM不存在。同時,向PSDC-S返回ISN NotificationAcknowledgement響應(yīng)消息。具體如下所述:
[0219]接收來自PSDC-S的ISN Notification后,根據(jù)請求中的應(yīng)用是否注冊,以決定ISN Notification Acknowledgement 消息的填寫。
[0220]若ISN請求的應(yīng)用未注冊,則向發(fā)起者返回失敗ISN NotificationAcknowledgement消息,其中攜帶失敗原因為“應(yīng)用不存在”。
[0221]若ISN請求的應(yīng)用已注冊,且PSD四元組決定的RmtNodeFSM已存在,則向發(fā)起者返回失敗ISN Notification Acknowledgement消息,其中攜帶失敗原因為“關(guān)聯(lián)已存在”。
[0222]若ISN請求的應(yīng)用已注冊,且PSD四元組決定的RmtNodeFSM不存在,則向發(fā)起者返回成功ISN Acknowledgement消息。并且,從ISN中獲取為PSDC-R指定數(shù)據(jù)報文確認(rèn)的頻度參數(shù),即兩次確認(rèn)報文之間持續(xù)時間間隔AckInterval及報文累計數(shù)量AckPktAmount取值。
[0223]需要說明的,在與PSDC-S完成ISN同步后,定時或定量向其發(fā)送AckNotification0即使無待確認(rèn)報文,也需發(fā)Ack Notification報文,用于PSDC-R和PSDC-S間心跳探測。
[0224]以下對RmtNodeFSM工作過程進(jìn)行說明。
[0225]RmtNodeFSM涉及兩個狀態(tài):交付就緒態(tài)(DeliverReady)和糾序態(tài)(AdjustSeq)。DSDC-R在接收到PSDC-S的ISN Notification后創(chuàng)建RmtNodeFSM,并使其處于DeliverReady 態(tài)。以下對 DeliverReady、AdjustSeq 分別進(jìn)行說明。
[0226]DeliverReady 狀態(tài):[0227]在該狀態(tài)下,若接收到來自DSCP-S的數(shù)據(jù)報文序號為期望的ExpPtr時,即可將其交付應(yīng)用,狀態(tài)保持不變。
[0228]若接收到來自DSCP-S的AR終止通告(Terminiation Notification)時,清除該RmtNodeFSM。
[0229]DSDC-R在接收到PSDC-S的數(shù)據(jù)報文序號非所期望序號(ExpPtr)時,啟動糾序定時器(DisorderAdjTimer),并進(jìn)入 AdjustSeq 態(tài)。
[0230]AdjustSeq 狀態(tài):
[0231]當(dāng)DisorderAdjTimer超時后,向PSDC-S發(fā)起報文重發(fā)請求,即在AckNotification中攜帶期望重發(fā)的報文(具體報文參見前述說明)。RmtNodeFSM當(dāng)前狀態(tài)保持不變。
[0232]若接收到來自rosc-s的非期望報文,但報文序號有效,則緩存于相應(yīng)AR的接收緩沖區(qū)(Receiving Buffer,RB)中。若報文序號無效,貝U直接丟棄。RmtNodeFSM當(dāng)前狀態(tài)保持不變。
[0233]若接收到的報文是來自PSDC-S的期望報文,則在接收到該報文時,停止DisorderAdjTimer定時器,并插入相應(yīng)AR的RB首部,從RB首部開始,針對每個連續(xù)報文調(diào)用應(yīng)用注冊的數(shù)據(jù)接收回調(diào)函數(shù),將報文交付給應(yīng)用,同時清除RB中已交付給應(yīng)用的緩存報文。直至RB中報文序號不連續(xù)為止,或RB為空為止。
[0234]若出現(xiàn)RB中報文序號不連續(xù),則更新當(dāng)前期望報文序號為RB中出現(xiàn)不連續(xù)報文序號時的下一個期望報文序號,并向PSDC-S發(fā)送Ack Notification。其中,重發(fā)報文數(shù)量為期望報文序號與最早出現(xiàn)不連續(xù)報文序號間報文的個數(shù)或設(shè)定的最大值(具體見下述“接收數(shù)據(jù)報文”的處理部分所述)。同時,重啟DisorderAdjTimer定時器,定時器時長依照下述“接收數(shù)據(jù)報文”的處理部分所述方式計算。RmtNodeFSM當(dāng)前狀態(tài)保持不變。
[0235]若RB為空,則RmtNodeFSM當(dāng)前狀態(tài)遷移至DeliverReady。
[0236]步驟三:接收數(shù)據(jù)報文。
[0237]在收到報文序號為期望序號(ExpPtr)后,更新期望報文序號(ExpPtr)為當(dāng)前序號+1 (即ExpPtr = ExpPtr+Ι),并將收到報文交付給應(yīng)用。
[0238]在收到報文序號非期望序號ExpPtr后,需啟動丟包或亂序調(diào)整定時器(DisorderAdjTimer),其時長(Disorder AdjInterval)按照以下方式確定。
[0239]考慮到出現(xiàn)報文錯序后,也許期望報文隨即到達(dá),因此,在PSDC-R請求重發(fā)期望報文前延時(DisorderPtr — ExpPtr)*Tref的時間。即
[0240]Disorder AdjInterval = (DisorderPtr — ExpPtr) XTsr
[0241]其中,
[0242]DisorderPtr表示最近一次正常確認(rèn)后接收到的錯序報文SN。
[0243]ExpPtr表示PSDC-R所期望的數(shù)據(jù)報文序號。
[0244]Tsr表示用戶數(shù)據(jù)報文在PSDC-S和PSDC-R之間傳送參考時間,默認(rèn)為50ms,可根據(jù)實際情況調(diào)整。
[0245]以下對DisorderAdjTimer定時器啟動后的處理給出說明。
[0246]若在DisorderAdjTimer逾時前,收到期望報文(即報文序號為ExpPtr的報文),刪除定時器,更新ExpPtr為ExpPtr+Ι,并將收到報文交付給應(yīng)用。[0247]若超時,則向PSDC-S發(fā)送Ack Notification,其中攜帶PSDC-R認(rèn)為丟失需PSDC-S重發(fā)的報文信息即,期望報文序號(ExpPtr)和連續(xù)報文數(shù)量(Amnt)至PSDC-S,請求后者重發(fā)指定序號段報文。其中,Amnt指的是期望報文序號與錯序報文最小序號(DisorderPtr)間報文數(shù)量??紤]到錯序發(fā)生時可能引起大量不必要重傳,在PSDC-R發(fā)送AckNotification消息時控制Amnt最大值,例如為10、20等。
[0248]步驟四:AckNotification 報文發(fā)送。
[0249]通過CPr端口定期(以不大于PSDC-S發(fā)送的ISN Notification中攜帶的數(shù)據(jù)報文確認(rèn)時間為周期)或定量向PSDC-S發(fā)送Ack Notification消息,以通知PSDC-S自身期望報文序號(ExpPtr),需重發(fā)的連續(xù)報文(連續(xù)報文的序號從ExpPtr開始)數(shù)量(Amnt),當(dāng)前接收緩沖區(qū)大小(Br)。若PSDC-R無錯序,則置錯序標(biāo)志DF (Disorder Flag)為0,否則置其為I。Ack Notification消息格式如圖7所示。
[0250]步驟五:接收應(yīng)用去注冊或來自PSDC-S請求關(guān)閉AR。
[0251]接收者應(yīng)用請求關(guān)閉一組實例(即由IPr和DPr共同確定的一組實例),或特定實例(即由PSD四元組決定的實例)時,PSDC-R關(guān)閉對應(yīng)AR,并同時向相應(yīng)PSDC-S發(fā)送ARTerminiation Notification 消息。
[0252]或接收到來自PSDC-S的AR終止通告AR Terminiation Notif ication (其中包括所關(guān)閉AR對應(yīng)的PSD四元組信息)時,關(guān)閉對應(yīng)AR。需要說明的是,由某一 PSDC-S觸發(fā)的AR關(guān)閉,并不影響其它PSDC-S與該P(yáng)SDC-R的業(yè)務(wù)發(fā)送。
[0253]綜上,參見圖10,在發(fā)送端,本發(fā)明實施例提供的一種報文傳輸方法,包括:
[0254]S101、確定發(fā)送者應(yīng)用需要發(fā)送給接收者應(yīng)用的報文;
[0255]S102、確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述關(guān)聯(lián)關(guān)系包括:所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系;
[0256]S103、按照報文發(fā)往所述接收者應(yīng)用的發(fā)送順序確定所述報文對應(yīng)的報文序號,并利用所述報文序號對所述報文進(jìn)行封裝后存儲到所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列中;其中,所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間維護(hù)的初始報文序號相同,且報文序號的確定方法相同;
[0257]S104、根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述報文發(fā)送隊列中的報文。
[0258]較佳地,該方法還包括預(yù)先建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系的步驟:
[0259]通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述會話控制端口號包括發(fā)送控制端口和接收控制端口號。
[0260]較佳地,通過查找本地維護(hù)的接收者隊列列表,確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系。
[0261 ] 較佳地,該方法還包括:
[0262]若發(fā)送者本地維護(hù)的接收者隊列列表中沒有所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,則在所述接收者隊列列表中創(chuàng)建一表項,將所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系以及所述發(fā)送者應(yīng)用需要發(fā)送給所述接收者應(yīng)用的報文的初始發(fā)送序號存入該表項,并創(chuàng)建與該表項對應(yīng)的報文發(fā)送隊列。
[0263]較佳地,利用所述報文序號對所述報文進(jìn)行封裝后存儲到所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列中之后,該方法還包括:
[0264]通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,向所述接收者發(fā)送初始發(fā)送序號通告消息;
[0265]所述根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述發(fā)送隊列中的報文,包括:
[0266]當(dāng)接收到所述接收者返回的初始發(fā)送序號通告確認(rèn)消息后,根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述發(fā)送隊列中的報文。
[0267]相應(yīng)地,在接收端,參見圖11,本發(fā)明實施例提供的一種報文傳輸方法,包括步驟:
[0268]S201、對接收到的經(jīng)封裝的報文進(jìn)行解封裝,獲取其中攜帶的報文序號,其中,該報文序號是發(fā)送者按照報文發(fā)往接收者應(yīng)用的發(fā)送順序確定的;
[0269]S202、確定所述報文對應(yīng)的發(fā)送者應(yīng)用與接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述關(guān)聯(lián)關(guān)系僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號,或者,所述關(guān)聯(lián)關(guān)系包括:所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系;
[0270]S203、確定所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列,并判斷該報文發(fā)送隊列中期望接收的報文的報文發(fā)送序號是否與所述報文的報文序號相同,如果是,則調(diào)用所述接收者應(yīng)用的回調(diào)函數(shù)對所述報文進(jìn)行處理,否則,將該報文及其對應(yīng)的報文序號存儲到所述報文發(fā)送隊列中或丟棄。
[0271]較佳地,當(dāng)所述報文的報文序號大于所述期望接收的報文的報文發(fā)送序號時,將該報文及其對應(yīng)的報文序號存儲到所述報文發(fā)送隊列中,當(dāng)所述報文的報文序號小于所述期望接收的報文的報文發(fā)送序號時,丟棄該報文。
[0272]較佳地,該方法還包括預(yù)先建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系的步驟:
[0273]通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述會話控制端口號包括發(fā)送控制端口和接收控制端口號。
[0274]較佳地,通過查找本地維護(hù)的發(fā)送者隊列列表,確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系。
[0275]較佳地,在接收所述報文之前,該方法還包括:
[0276]通過預(yù)先約定的發(fā)送者與接收者之間的會話控制端口號,接收所述發(fā)送者發(fā)送的初始發(fā)送序號通告消息,從中獲取所述發(fā)送者應(yīng)用發(fā)給所述接收者應(yīng)用的報文的初始發(fā)送序號;
[0277]判斷本地維護(hù)的發(fā)送者隊列列表中是否存在所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系;
[0278]若已存在的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系包括所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系,但尚未獲取到發(fā)送者初始發(fā)送序號,則記錄所述初始發(fā)送序號與該關(guān)聯(lián)關(guān)系的對應(yīng)關(guān)系,并發(fā)送初始發(fā)送序號通告確認(rèn)消息給所述發(fā)送者;
[0279]若不存在僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,則直接向所述發(fā)送者返回初始發(fā)送序號通告確認(rèn)失敗消息;
[0280]若已存在的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號,則在接收者維護(hù)的發(fā)送者隊列中新創(chuàng)建所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,該關(guān)聯(lián)關(guān)系為所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系,記錄所述初始發(fā)送序號與該關(guān)聯(lián)關(guān)系的對應(yīng)關(guān)系,并發(fā)送初始發(fā)送序號通告確認(rèn)消息給所述發(fā)送者。
[0281]相應(yīng)地,參見圖12,在發(fā)送端,本發(fā)明實施例提供的一種報文傳輸設(shè)備,包括:
[0282]報文確定單元11,用于確定發(fā)送者應(yīng)用需要發(fā)送給接收者應(yīng)用的報文;
[0283]關(guān)聯(lián)關(guān)系確定單元12,用于確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述關(guān)聯(lián)關(guān)系包括:所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系;
[0284]報文封裝單元13,用于按照報文發(fā)往所述接收者應(yīng)用的發(fā)送順序確定所述報文對應(yīng)的報文序號,并利用所述報文序號對所述報文進(jìn)行封裝后存儲到所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列中;其中,所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間維護(hù)的初始報文序號相同,且報文序號的確定方法相同;
[0285]發(fā)送單元14,用于根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述報文發(fā)送隊列中的報文。
[0286]較佳地,所述關(guān)聯(lián)關(guān)系確定單元12還用于:
[0287]通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述會話控制端口號包括發(fā)送控制端口和接收控制端口號。
[0288]較佳地,所述關(guān)聯(lián)關(guān)系確定單元12通過查找本地維護(hù)的接收者隊列列表,確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系。
[0289]較佳地,所述關(guān)聯(lián)關(guān)系確定單元12還用于:
[0290]若發(fā)送者本地維護(hù)的接收者隊列列表中沒有所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,則在所述接收者隊列列表中創(chuàng)建一表項,將所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系以及所述發(fā)送者應(yīng)用需要發(fā)送給所述接收者應(yīng)用的報文的初始發(fā)送序號存入該表項,并創(chuàng)建與該表項對應(yīng)的報文發(fā)送隊列。
[0291]較佳地,所述發(fā)送單元14,在所述關(guān)聯(lián)關(guān)系確定單元12利用所述報文序號對所述報文進(jìn)行封裝后存儲到所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列中之后,還用于:通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,向所述接收者發(fā)送初始發(fā)送序號通告消息;
[0292]所述發(fā)送單元14根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述發(fā)送隊列中的報文時,具體用于:當(dāng)接收到所述接收者返回的初始發(fā)送序號通告確認(rèn)消息后,根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述發(fā)送隊列中的報文。
[0293]參見圖13,本發(fā)明實施例提供的一種報文傳輸設(shè)備,包括:
[0294]解封裝單元21,用于對接收到的經(jīng)封裝的報文進(jìn)行解封裝,獲取其中攜帶的報文序號,其中,該報文序號是發(fā)送者按照報文發(fā)往接收者應(yīng)用的發(fā)送順序確定的;
[0295]關(guān)聯(lián)關(guān)系確定單元22,用于確定所述報文對應(yīng)的發(fā)送者應(yīng)用與接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述關(guān)聯(lián)關(guān)系僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號,或者,所述關(guān)聯(lián)關(guān)系包括:所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系;
[0296]判斷單元23,用于確定所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列,并判斷該報文發(fā)送隊列中期望接收的報文的報文發(fā)送序號是否與所述報文的報文序號相同,如果是,則調(diào)用所述接收者應(yīng)用的回調(diào)函數(shù)對所述報文進(jìn)行處理,否則,將該報文及其對應(yīng)的報文序號存儲到所述報文發(fā)送隊列中或丟棄。
[0297]較佳地,當(dāng)所述報文的報文序號大于所述期望接收的報文的報文發(fā)送序號時,將該報文及其對應(yīng)的報文序號存儲到所述報文發(fā)送隊列中,當(dāng)所述報文的報文序號小于所述期望接收的報文的報文發(fā)送序號時,丟棄該報文。
[0298]較佳地,所述關(guān)聯(lián)關(guān)系確定單元22還用于:
[0299]通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述會話控制端口號包括發(fā)送控制端口和接收控制端口號。
[0300]較佳地,所述關(guān)聯(lián)關(guān)系確定單元22通過查找本地維護(hù)的發(fā)送者隊列列表,確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系。
[0301]較佳地,所述判斷單元23,還用于:
[0302]在接收所述報文之前,通過預(yù)先約定的發(fā)送者與接收者之間的會話控制端口號,接收所述發(fā)送者發(fā)送的初始發(fā)送序號通告消息,從中獲取所述發(fā)送者應(yīng)用發(fā)給所述接收者應(yīng)用的報文的初始發(fā)送序號;
[0303]判斷本地維護(hù)的發(fā)送者隊列列表中是否存在所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系;
[0304]若已存在的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系包括所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系,但尚未獲取到發(fā)送者初始發(fā)送序號,則記錄所述初始發(fā)送序號與該關(guān)聯(lián)關(guān)系的對應(yīng)關(guān)系,并發(fā)送初始發(fā)送序號通告確認(rèn)消息給所述發(fā)送者;
[0305]若不存在僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,則直接向所述發(fā)送者返回初始發(fā)送序號通告確認(rèn)失敗消息;
[0306]若已存在的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號,則在接收者維護(hù)的發(fā)送者隊列中新創(chuàng)建所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,該關(guān)聯(lián)關(guān)系為所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系,記錄所述初始發(fā)送序號與該關(guān)聯(lián)關(guān)系的對應(yīng)關(guān)系,并發(fā)送初始發(fā)送序號通告確認(rèn)消息給所述發(fā)送者。
[0307]綜上所述,使用本發(fā)明提出的方案,可簡單有效保證收發(fā)應(yīng)用之間經(jīng)多路徑傳送業(yè)務(wù)數(shù)據(jù)時,發(fā)送者應(yīng)用數(shù)據(jù)報文可按序到達(dá)接收者應(yīng)用。控制消息和業(yè)務(wù)數(shù)據(jù)通過不同UDP端口轉(zhuǎn)發(fā),這樣一來,在網(wǎng)絡(luò)發(fā)生擁塞情況下,可方便通過在中間交換節(jié)點配置QOS調(diào)度控制策略(如基于源目IP和UDP端口等進(jìn)行QOS隊列設(shè)置),從而保證控制消息優(yōu)先轉(zhuǎn)發(fā),盡可能避免業(yè)務(wù)數(shù)據(jù)確認(rèn)通告消息報文丟失而導(dǎo)致的大量不必要業(yè)務(wù)數(shù)據(jù)報文重傳。本發(fā)明所提出的業(yè)務(wù)數(shù)據(jù)收發(fā)關(guān)聯(lián)關(guān)系建立僅在發(fā)送和接收者之間執(zhí)行一次業(yè)務(wù)數(shù)據(jù)發(fā)送序號的請求和確認(rèn)。這對前面提到的告警上報等單向業(yè)務(wù)保序轉(zhuǎn)發(fā)的應(yīng)用場景更為適用。而對于雙向保序通信的場景,僅需在欲通信的節(jié)點上同時部署收發(fā)功能模塊即可。
[0308]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。
[0309]本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0310]這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0311 ] 這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0312] 顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
【權(quán)利要求】
1.一種報文傳輸方法,其特征在于,該方法包括: 確定發(fā)送者應(yīng)用需要發(fā)送給接收者應(yīng)用的報文; 確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述關(guān)聯(lián)關(guān)系包括:所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系; 按照報文發(fā)往所述接收者應(yīng)用的發(fā)送順序確定所述報文對應(yīng)的報文序號,并利用所述報文序號對所述報文進(jìn)行封裝后存儲到所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列中;其中,所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間維護(hù)的初始報文序號相同,且報文序號的確定方法相同; 根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述報文發(fā)送隊列中的報文。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括預(yù)先建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系的步驟: 通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述會話控制端口號包括發(fā)送控制端口和接收控制端口號。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過查找本地維護(hù)的接收者隊列列表,確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,該方法還包括: 若發(fā)送者本地維護(hù)的接收者隊列列表中沒有所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,則在所述接收者隊列列表中創(chuàng)建一表項,將所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系以及所述發(fā)送者應(yīng)用需要發(fā)送給所述接收者應(yīng)用的報文的初始發(fā)送序號存入該表項,并創(chuàng)建與該表項對應(yīng)的報文發(fā)送隊列。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,利用所述報文序號對所述報文進(jìn)行封裝后存儲到所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列中之后,該方法還包括: 通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,向所述接收者發(fā)送初始發(fā)送序號通告消息; 根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述發(fā)送隊列中的報文,包括: 當(dāng)接收到所述接收者返回的初始發(fā)送序號通告確認(rèn)消息后,根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述發(fā)送隊列中的報文。
6.—種報文傳輸方法,其特征在于,該方法包括: 對接收到的經(jīng)封裝的報文進(jìn)行解封裝,獲取其中攜帶的報文序號,其中,該報文序號是發(fā)送者按照報文發(fā)往接收者應(yīng)用的發(fā)送順序確定的; 確定所述報文對應(yīng)的發(fā)送者應(yīng)用與接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述關(guān)聯(lián)關(guān)系僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號,或者,所述關(guān)聯(lián)關(guān)系包括:所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系; 確定所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列,并判斷該報文發(fā)送隊列中期望接收的報文的報文發(fā)送序號是否與所述報文的報文序號相同,如果是,則調(diào)用所述接收者應(yīng)用的回調(diào)函數(shù)對所述報文進(jìn)行處理,否則,將該報文及其對應(yīng)的報文序號存儲到所述報文發(fā)送隊列中或丟棄。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,當(dāng)所述報文的報文序號大于所述期望接收的報文的報文發(fā)送序號時,將該報文及其對應(yīng)的報文序號存儲到所述報文發(fā)送隊列中,當(dāng)所述報文的報文序號小于所述期望接收的報文的報文發(fā)送序號時,丟棄該報文。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,該方法還包括預(yù)先建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系的步驟: 通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述會話控制端口號包括發(fā)送控制端口和接收控制端口號。
9.根據(jù)權(quán)利要求6所述的方法,其特征在于,通過查找本地維護(hù)的發(fā)送者隊列列表,確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,在接收所述報文之前,該方法還包括: 通過預(yù)先約定的發(fā)送者與接收者之間的會話控制端口號,接收所述發(fā)送者發(fā)送的初始發(fā)送序號通告消息,從中獲取所述發(fā)送者應(yīng)用發(fā)給所述接收者應(yīng)用的報文的初始發(fā)送序號; 判斷本地維護(hù)的發(fā)送者隊列列表中是否存在所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系; 若已存在的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系包括所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系,但尚未獲取到發(fā)送者初始發(fā)送序號,則記錄所述初始發(fā)送序號與該關(guān)聯(lián)關(guān)系的對應(yīng)關(guān)系,并發(fā)送初始發(fā)送序號通告確認(rèn)消息給所述發(fā)送者; 若不存在僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,則直接向所述發(fā)送者返回初始發(fā)送序號通告確認(rèn)失敗消息; 若已存在的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號,則在接收者維護(hù)的發(fā)送者隊列中新創(chuàng)建所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,該關(guān)聯(lián)關(guān)系為所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和m)P端口號的對應(yīng)關(guān)系,記錄所述初始發(fā)送序號與該關(guān)聯(lián)關(guān)系的對應(yīng)關(guān)系,并發(fā)送初始發(fā)送序號通告確認(rèn)消息給所述發(fā)送者。
11.一種報文傳輸設(shè)備,其特征在于,該設(shè)備包括: 報文確定單元,用于確定發(fā)送者應(yīng)用需要發(fā)送給接收者應(yīng)用的報文; 關(guān)聯(lián)關(guān)系確定單元,用于確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述關(guān)聯(lián)關(guān)系包括:所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系; 報文封裝單元,用于按照報文發(fā)往所述接收者應(yīng)用的發(fā)送順序確定所述報文對應(yīng)的報文序號,并利用所述報文序號對所述報文進(jìn)行封裝后存儲到所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列中;其中,所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間維護(hù)的初始報文序號相同,且報文序號的確定方法相同; 發(fā)送單元,用于根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述報文發(fā)送隊列中的報文。
12.根據(jù)權(quán)利要求11所述的設(shè)備,其特征在于,所述關(guān)聯(lián)關(guān)系確定單元還用于: 通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述會話控制端口號包括發(fā)送控制端口和接收控制端口號。
13.根據(jù)權(quán)利要求11所述的設(shè)備,其特征在于,所述關(guān)聯(lián)關(guān)系確定單元通過查找本地維護(hù)的接收者隊列列表,確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系。
14.根據(jù)權(quán)利要求13所述的設(shè)備,其特征在于,所述關(guān)聯(lián)關(guān)系確定單元還用于: 若發(fā)送者本地維護(hù)的接收者隊列列表中沒有所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,則在所述接收者隊列列表中創(chuàng)建一表項,將所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系以及所述發(fā)送者應(yīng)用需要發(fā)送給所述接收者應(yīng)用的報文的初始發(fā)送序號存入該表項,并創(chuàng)建與該表項對應(yīng)的報文發(fā)送隊列。
15.根據(jù)權(quán)利要求14所述的設(shè)備,其特征在于,所述發(fā)送單元,在所述關(guān)聯(lián)關(guān)系確定單元利用所述報文序號對 所述報文進(jìn)行封裝后存儲到所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列中之后,還用于:通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,向所述接收者發(fā)送初始發(fā)送序號通告消息; 所述發(fā)送單元根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述發(fā)送隊列中的報文時,具體用于:當(dāng)接收到所述接收者返回的初始發(fā)送序號通告確認(rèn)消息后,根據(jù)所述關(guān)聯(lián)關(guān)系,按照先后順序向所述接收者應(yīng)用對應(yīng)的接收者發(fā)送所述發(fā)送隊列中的報文。
16.一種報文傳輸設(shè)備,其特征在于,該設(shè)備包括: 解封裝單元,用于對接收到的經(jīng)封裝的報文進(jìn)行解封裝,獲取其中攜帶的報文序號,其中,該報文序號是發(fā)送者按照報文發(fā)往接收者應(yīng)用的發(fā)送順序確定的; 關(guān)聯(lián)關(guān)系確定單元,用于確定所述報文對應(yīng)的發(fā)送者應(yīng)用與接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述關(guān)聯(lián)關(guān)系僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號,或者,所述關(guān)聯(lián)關(guān)系包括:所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系; 判斷單元,用于確定所述關(guān)聯(lián)關(guān)系對應(yīng)的報文發(fā)送隊列,并判斷該報文發(fā)送隊列中期望接收的報文的報文發(fā)送序號是否與所述報文的報文序號相同,如果是,則調(diào)用所述接收者應(yīng)用的回調(diào)函數(shù)對所述報文進(jìn)行處理,否則,將該報文及其對應(yīng)的報文序號存儲到所述報文發(fā)送隊列中或丟棄。
17.根據(jù)權(quán)利要求16所述的設(shè)備,其特征在于,當(dāng)所述報文的報文序號大于所述期望接收的報文的報文發(fā)送序號時,將該報文及其對應(yīng)的報文序號存儲到所述報文發(fā)送隊列中,當(dāng)所述報文的報文序號小于所述期望接收的報文的報文發(fā)送序號時,丟棄該報文。
18.根據(jù)權(quán)利要求16所述的設(shè)備,其特征在于,所述關(guān)聯(lián)關(guān)系確定單元還用于: 通過預(yù)先約定的所述發(fā)送者與所述接收者之間的會話控制端口號,建立所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,其中,所述會話控制端口號包括發(fā)送控制端口和接收控制端口號。
19.根據(jù)權(quán)利要求16所述的設(shè)備,其特征在于,所述關(guān)聯(lián)關(guān)系確定單元通過查找本地維護(hù)的發(fā)送者隊列列表,確定所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系。
20.根據(jù)權(quán)利要求19所述的設(shè)備,其特征在于,所述判斷單元,還用于: 在接收所述報文之前,通過預(yù)先約定的發(fā)送者與接收者之間的會話控制端口號,接收所述發(fā)送者發(fā)送的初始發(fā)送序號通告消息,從中獲取所述發(fā)送者應(yīng)用發(fā)給所述接收者應(yīng)用的報文的初始發(fā)送序號; 判斷本地維護(hù)的發(fā)送者隊列列表中是否存在所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系; 若已存在的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系包括所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和UDP端口號的對應(yīng)關(guān)系,但尚未獲取到發(fā)送者初始發(fā)送序號,則記錄所述初始發(fā)送序號與該關(guān)聯(lián)關(guān)系的對應(yīng)關(guān)系,并發(fā)送初始發(fā)送序號通告確認(rèn)消息給所述發(fā)送者; 若不存在僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系,則直接向所述發(fā)送者返回初始發(fā)送序號通告確認(rèn)失敗消息; 若已存在的所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的關(guān)聯(lián)關(guān)系僅包括所述接收者應(yīng)用的接收者IP地址和UDP端口號,則在接收者維護(hù)的發(fā)送者隊列中新創(chuàng)建所述發(fā)送者應(yīng)用與所述接收者應(yīng)用之間的 關(guān)聯(lián)關(guān)系,該關(guān)聯(lián)關(guān)系為所述發(fā)送者應(yīng)用對應(yīng)的發(fā)送者IP地址和UDP端口號,與所述接收者應(yīng)用的接收者IP地址和m)P端口號的對應(yīng)關(guān)系,記錄所述初始發(fā)送序號與該關(guān)聯(lián)關(guān)系的對應(yīng)關(guān)系,并發(fā)送初始發(fā)送序號通告確認(rèn)消息給所述發(fā)送者。
【文檔編號】H04L12/70GK103986647SQ201410215037
【公開日】2014年8月13日 申請日期:2014年5月21日 優(yōu)先權(quán)日:2014年5月21日
【發(fā)明者】王高亮 申請人:大唐移動通信設(shè)備有限公司