ontrolling Multiple Streams for Telepresence,用于智真的多流控制協(xié)議)之類的數據協(xié)議,實現語音通話、視頻通話、文 檔共享、消息收發(fā)、視頻會議等實時的信息交互。
[0194] 在第二種可能的實現方式中,當應答消息中未攜帶有對應于第二提議屬性行的第 二應答屬性行時,根據應答消息中攜帶的對應于第一提議屬性行的第一應答屬性行檢測兩 端是否均支持DCEP方式;若檢測出兩端均支持DCEP方式,則通過DCEP方式與接收端之間 建立數據通道。
[0195] 當發(fā)送端檢測出兩端均支持DCEP方式時,發(fā)送端向接收端發(fā)送數據通道打開請 求,該數據通道打開請求可以以DCEP Open消息的形式發(fā)送給接收端。
[0196] 數據通道打開請求中攜帶有發(fā)送端為數據通道指定的流標識。另外,數據通道打 開請求中還可攜帶有PPID (Payload Protocol Identifier,凈荷協(xié)議標識)、用于請求打開數 據通道的參數以及在數據通道上傳輸的數據協(xié)議等內容。
[0197] 比如,該數據通道打開請求可以為:
[0199] 其中,"Stream ID = 2"表示發(fā)送端為數據通道指定的流標識為2,"PPID = 50"用 于表示DCEP協(xié)議,"MessageType = DATA_CHANNEL_0PEN"用于表示請求打開數據通道的參 數,"Protocol = MSRP"用于表示數據通道上傳輸的數據協(xié)議為MSRP。
[0200] 對應地,接收端根據數據通道打開請求與發(fā)送端之間建立數據通道,并向發(fā)送端 反饋數據通道打開響應。
[0201] 比如,該數據通道打開響應可以為:
[0203] 其中,"MessageType = DATA_CHANNEL_ACK"用于表示響應打開數據通道的參數。
[0204] 另外,發(fā)送端與接收端之間首先建立SCTP偶聯(lián),然后在此基礎上建立數據通道, 該數據通道包括SCTP偶聯(lián)下的一對出入流,且該對出入流具有相同的流標識。
[0205] 綜上所述,本實施例提供的數據通道建立方法,解決了當通信兩端中的至少一端 同時支持兩種或者兩種以上的數據通道協(xié)商方式時,通信兩端就無法協(xié)商建立數據通道的 問題;當兩端中的至少一端支持兩種或兩種以上數據通道協(xié)商方式時,通過兩端對數據通 道協(xié)商方式的協(xié)商確定,進而在此基礎上完成數據通道的建立,使得兩端能夠簡單、高效地 建立數據通道,實現了不同終端、不同網絡之間的互連互通。
[0206] 另外,本實施例提供的數據通道建立方法,在對數據通道協(xié)商方式進行協(xié)商的同 時,接收端在確定同意采用SDP方式建立數據通道時,通過在應答消息中直接反饋數據通 道關聯(lián)的流標識,可以避免兩端在后續(xù)過程中對流標識的進一步協(xié)商,使得發(fā)送端接收到 應答消息之后,可以直接根據應答消息與接收端之間建立數據通道,減少兩端信息交互的 次數,提高數據通道建立的效率;同時,還可避免因信息交互過程中可能存在的信息丟失、 或者收發(fā)延時等問題導致的協(xié)商失敗,充分提高數據通道建立的成功率。
[0207] 需要說明的一點是,當基于瀏覽器的終端或者傳統(tǒng)終端與頂S(IP Multimedia Subsystem,IP多媒體子系統(tǒng))連接時,接收端通常為分離架構下的頂S-ALG QMS Application Level Gateway,IMS 應用層網關)和 IMS_AGW(IMS Access Media Gateway,IMS 接入媒體網關)。由于發(fā)送端與頂S-ALG之間進行SDP會話,而數據通道需要建立在發(fā)送端 與頂S-AGW之間,這就需要在頂S-ALG與頂S-AGW之間建立一種協(xié)商機制,使得頂S-ALG獲 知頂S-AGW支持的數據通道協(xié)商方式。
[0208] 具體地,當接收端包括分離架構下的應用層網關和接入媒體網關時,通過應用層 網關和接入媒體網關之間交互確定接入媒體網關支持的數據通道協(xié)商方式;通過應用層網 關根據第一提議屬性行、第二提議屬性行以及接入媒體網關支持的數據通道協(xié)商方式確定 應答消息。
[0209] 在一個實施例中,應用層網關可以向接入媒體網關發(fā)送詢問請求以詢問接入媒體 網關支持的數據通道協(xié)商方式。比如,該詢問請求為:
[0210] Query_datachannel_message{method for established datachannel: static ; dynamic}
[0211] 其中,仍然以第一標識"dynamic"表示DCEP方式,第二標識"static"表示SDP方 式。
[0212] 對應地,接入媒體網關根據自身支持的數據通道協(xié)商方式向應用層網關發(fā)送對應 于詢問請求的詢問響應:
[0213] Resp_datachannel_message{method for established datachannel: static ; dynamic}
[0214] 其中,若詢問響應包括第一標識"dynamic",則說明接入媒體網關支持DCEP方式; 若詢問響應包括第二標識"static",則說明接入媒體網關支持SDP方式;若詢問響應包括 第一標識"dynamic"和第二標識"static",則說明接入媒體網關支持DCEP方式和SDP方 式。
[0215] 之后,應用層網關根據第一提議屬性行、第二提議屬性行和接入媒體網關支持的 數據通道協(xié)商方式確定應答消息。具體確定應答消息的過程在上述圖4所示實施例中的步 驟402已經詳細介紹,不再贅述。
[0216] 在圖4所示實施例中,具體介紹了發(fā)送端與接收端之間對數據通道協(xié)商方式的協(xié) 商,并在此基礎上建立數據通道。在對數據通道協(xié)商方式進行協(xié)商的同時,發(fā)送端和接收端 之間還可對數據通道上傳輸的數據協(xié)議進行協(xié)商。下面,將通過圖5所示實施例介紹在一 次SDP會話中完成數據通道協(xié)商方式的協(xié)商以及數據通道上傳輸的數據協(xié)議的協(xié)商。
[0217] 請參考圖5,其示出了本發(fā)明還一實施例提供的數據通道建立方法的方法流程圖, 本實施例以該數據通道建立方法應用于圖1所示實施環(huán)境中來舉例說明。該數據通道建立 方法可以包括如下幾個步驟:
[0218] 步驟501,發(fā)送端向接收端發(fā)送提議消息。
[0219] 與圖4所示實施例相同的是,為了實現兩端對采用何種數據通道協(xié)商方式的協(xié) 商,提議消息中攜帶有第一提議屬性行和第二提議屬性行。
[0220] 與圖4所示實施例不同的是,在本實施例中,為了實現兩端在對數據通道協(xié)商方 式進行協(xié)商的同時,對數據通道上傳輸的數據協(xié)議也進行協(xié)商,提議消息中還包括第三提 議屬性行。
[0221] 第三提議屬性行包括發(fā)送端在數據通道上支持的數據協(xié)議的信息。在通常情況 下,基于SCTP偶聯(lián)的數據通道上可以傳輸MSRP協(xié)議的數據和CLUE協(xié)議的數據。其中,MSRP 協(xié)議主要用于聊天應用和文件傳輸應用,CLUE協(xié)議主要用于會議應用。因此,發(fā)送端在數 據通道上支持的數據協(xié)議可以是MSRP協(xié)議和CLUE協(xié)議中的任意一種或者全部兩種。第三 提議屬性行中包括的信息可以是明確的攜帶有MSRP協(xié)議和/或CLUE協(xié)議對應的協(xié)議標識 的信息,也可以是能夠表明發(fā)送端在數據通道上支持的數據協(xié)議的其它任何形式的信息, 對此本實施例不作具體限定。
[0222] 具體地,提議消息的確定過程可以包括如下幾個步驟:
[0223] 第一,根據發(fā)送端支持的數據通道協(xié)商方式確定本次請求的數據通道協(xié)商方式。
[0224] 第二,根據發(fā)送端支持的數據通道協(xié)商方式確定第一提議屬性行。
[0225] 第一提議屬性行的確定過程在圖4所示實施例中已經詳細介紹和說明,具體參見 圖4所示實施例,本實施例中不再贅述。
[0226] 第三,根據發(fā)送端在數據通道上支持的數據協(xié)議確定第三提議屬性行。
[0227] 第三提議屬性行中可以包括發(fā)送端在數據通道上支持的數據協(xié)議對應的協(xié)議標 識。比如,當發(fā)送端在數據通道上支持的數據協(xié)議為MSRP協(xié)議和CLUE協(xié)議時,第三提議屬 性行可以為:a = subprotocol:MSRP/CLUE ;再比如,當發(fā)送端在數據通道上支持的數據協(xié) 議為MSRP協(xié)議時,第三提議屬性行可以為:a = subprotocol :MSRP。
[0228] 第四,根據發(fā)送端在數據通道上支持的數據協(xié)議對應的應用的數量a確定本次請 求建立的數據通道的數量a,a > 1。
[0229] 其中,每種數據協(xié)議對應于至少一種應用。比如,當發(fā)送端在數據通道上支持的數 據協(xié)議為MSRP協(xié)議和CLUE協(xié)議時,假設發(fā)送端請求通過MSRP協(xié)議實現聊天應用和文件傳 輸應用,通過CLUE協(xié)議實現會議應用,則發(fā)送端需要請求建立3條數據通道,每條數據通道 用于傳輸一種應用的數據。
[0230] 第五,根據本次請求的數據通道協(xié)商方式生成a個第二提議屬性行。
[0231] 第二提議屬性行的數量與本次請求建立的數據通道的數量相同。當本次請求建立 的數據通道的數量為3時,發(fā)送端需要生成3個第二提議屬性行。具體地:
[0232] 若本次請求的數據通道協(xié)商方式為DCEP方式,則生成a個第二提議屬性行;其中, 每個第二提議屬性行包括一個流標識和一個標簽,且不同的第二提議屬性行中包括的流標 識均為任意流標識符,不同的第二提議屬性行中包括的標簽為互不相同的標簽,每個標簽 對應于一條數據通道。
[0233] 任意流標識符用于表示本次請求建立的數據通道關聯(lián)的流標識為任意的,其可由 接收端在后續(xù)應答過程中選定一個未被使用的流標識作為數據通道關聯(lián)的流標識,也可在 后續(xù)過程中以DCEP Open消息的形式進一步協(xié)商確定數據通道關聯(lián)的流標識。
[0234] 在本實施例中,假設以表示任意流標識符。發(fā)送端生成的第二提議屬性行除 了包括流標識和標簽之外,通常還包括SCTP端口號、數據通道對應的標簽以及最大重傳次 數等參數。因此,當本次請求的數據通道協(xié)商方式為DCEP方式時,上述3條數據通道所對 應的3個第二提議屬性行可以為:
[0235] a = dcmap:5000stream = ^ ;label 1 = ^channel for file transfer^ ;max_retr = 3
[0236] a = dcmap:5000stream =氺;label2 = ''channel for chat" ;max-retr = 3
[0237] a = dcmap:5000stream =氺;label3 = ''channel for conference" ;max-retr = 3
[0238] 若第二提議屬性行包括任意流標識符,可以使得接收端在后續(xù)過程中確定采用 SDP方式建立數據通道時,在應答消息中直接反饋數據通道關聯(lián)的流標識,避免兩端在后續(xù) 過程中對流標識的進一步協(xié)商。
[0239] 若本次請求的數據通道協(xié)商方式為SDP方式,則生成a個第二提議屬性行;其中, 每個第二提議屬性行包括一個流標識和一個標簽,且不同的第二提議屬性行中包括的流標 識為互不相同的指定流標識符,不同的第二提議屬性行中包括的標簽為互不相同的標簽, 每個標簽對應于一條數據通道。
[0240] 指定流標識符用于表示數據通道關聯(lián)的流標識為指定的。當發(fā)送端請求SDP方式 協(xié)商建立數據通道時,發(fā)送端為請求建立的數據通道選定一個未被使用的流標識。指定流 標識符可以是1、2、3、……、η中的任意整數,η彡1。
[0241] 比如,當本次請求的數據通道協(xié)商方式為SDP方式時,上述3條數據通道所對應的 3個第二提議屬性行可以為:
[0242] a = dcmap: 5000stream = 1 ;label 1 = ^channel for file transfer^ ;max_retr = 3
[0243] a = dcmap:5000stream = 2 ;label2 = ''channel for chat" ;max_retr = 3
[0244] a = dcmap:5000stream = 3 ;label3 = ''channel for conference" ;max_retr = 3
[0245] 另外,第三提議屬性行還可以包括每個協(xié)議標識關聯(lián)的標簽,以便接收端在后續(xù) 過程中對第二提議屬性行做出有針對性的應答。對于發(fā)送端在數據通道上支持的每一個數 據協(xié)議,發(fā)送端獲取該數據協(xié)議對應的應用的數量。比如,當發(fā)送端在數據通道上支持的數 據協(xié)議為MSRP協(xié)議和CLUE協(xié)議時,假設MSRP協(xié)議對應的應用的數量為2 (即聊天應用和文 件傳輸應用),CLUE協(xié)議對應的應用的數量為1 (即會議應用)。之后,發(fā)送端根據數據協(xié)議 對應的應用的數量為數據協(xié)議分配相同數量的標簽,每個標簽為a個第二提議屬性行中包 括的a個互不相同的標簽中的一個。比如,發(fā)送端根據MSRP協(xié)議對應的應用的數量為MSRP 協(xié)議分配2個標簽,分別為label 1和label2 ;根據CLUE協(xié)議對應的應用的數量為CLUE協(xié) 議分配1個標簽,為label3。之后,發(fā)送端將數據協(xié)議對應的協(xié)議標識與數據協(xié)議所分配得 的標簽進行關聯(lián)。比如,該關聯(lián)結果可以表示為MSRP(labell ;label2)以及CLUE(label3)。 之后,發(fā)送端生成包括各個數據協(xié)議對應的協(xié)議標識以及每個協(xié)議標識關聯(lián)的標簽的第 三提議屬性行。如,第三提議屬性行可以為:a = subprotocol :MSRP(labell ;label2)/ CLUE(label3)。
[0246] 第六,發(fā)送端生成攜帶有第一提議屬性行、a個第二提議屬性行和第三提議屬性行 的提議消息。
[0247] 如,發(fā)送端生成的提議消息可以包括:
[0248] m = application54111DTLS/SCTP5000
[0249] c = IN IP479. 97. 215. 79
[0250] a = sctpmap: 5000datachannel max-message-size = lOOOOOstreams = 16
[0251] a = assignstreamid: static ;dynamic
[0252] a = subprotocol:MSRP(label1 ;label2)/CLUE (label3)
[0253] a = dcmap: 5000stream = * ;label 1 = ^channel for file transfer^ ;max_retr = 3
[0254] a = dcmap:5000stream =氺;label2 = ''channel for chat" ;max_retr = 3
[0255] a = dcmap:5000stream =氺;label3 = ''channel for conference" ;max_retr = 3
[0256] 之后,發(fā)送端向接收端發(fā)送提議消息。
[0257] 對應地,接收端接收發(fā)送端發(fā)送的提議消息。
[0258] 步驟502,接收端確定應答消息。
[0259] 具體地,本步驟可以包括如下幾個子步驟:
[0260] 第一,當提議消息中還包括第三提議屬性行時,接收端根據第三提議屬性行和接 收端在數據通道上支持的數據協(xié)議檢測是否存在兩端在數據通道上均支持的數據協(xié)議。
[0261] 第三提議屬性行包括發(fā)送端在數據通道上支持的數據協(xié)議的信息。接收端根據發(fā) 送端在數據通道上支持的數據協(xié)議和接收端在數據通道上支持的數據協(xié)議檢測是否存在 兩端在數據通道上均支持的數據協(xié)議。
[0262] 比如,當第三提議屬性行為"a = subprotocol :MSRP/CLUE",且接收端在數據通道 上支持的數據協(xié)議為MSRP協(xié)議時,說明存在兩端在數據通道上均支持的數據協(xié)議,即MSRP 協(xié)議。
[0263] 再比如,當第三提議屬性行為"a = subprotocol :CLUE",且接收端在數據通道上 支持的數據協(xié)議為MSRP協(xié)議和CLUE協(xié)議時,說明存在兩端在數據通道上均支持的數據協(xié) 議,即CLUE協(xié)議。
[0264] 第二,若檢測出存在兩端在數據通道上均支持的數據協(xié)議,則接收端根據兩端在 數據通道上均支持的數據協(xié)議生成對應于第三提議屬性行的第三應答屬性行。
[0265] 與圖4所示實施例不同的是,在本實施例中,應答消息中還可以攜帶有對應于第 三提議屬性行的第三應答屬性行。第三應答屬性行包括兩端在數據通道上均支持的數據協(xié) 議的信息。
[0266] 第三應答屬性行可以包括兩端在數據通道上均支持的數據協(xié)議所對應的協(xié)議標 識。比如,當兩端在數據通道上均支持的數據協(xié)議為MSRP協(xié)議和CLUE協(xié)議時,第三應答屬 性行可以為:a = subprotocol :MSRP/CLUE ;再比如,當兩端在數據通道上均支持的數據協(xié) 議為MSRP協(xié)議時,第三應答屬性行可以為:a = subprotocol :MSRP。
[0267] 另外,若檢測出不存在兩端在數據通道上均支持的數據協(xié)議,則不生成對應于第 三提議屬性行的第三應答屬性行。相應地,在后續(xù)生成應答消息的過程中,應答消息中也不 攜帶對應于第三提議屬性行的第三應答屬性行。
[0268] 在本實施例中,當存在兩端在數據通道上均支持的數據協(xié)議時,應答消息中攜帶 有對應于第一提議屬性行的第一應答屬性行,以及對應于第三提議屬性行的第三應答屬性 行。另外,根據最終確定采用的數據通道協(xié)商方式不同,應答消息中可以攜帶有對應于第二 提議屬性行的第二應答屬性行,也可以不攜帶對應于第二提議屬性行的第二應答屬性行。 具體地:
[0269] 第三,根據第一提議屬性行和接收端支持的數據通道協(xié)商方式確定兩端均支持的 數據通道協(xié)商方式。
[0270] 第四,若兩端均支持的數據通道協(xié)商方式有且只有DCEP方式,則確定同意采用的 數據通道協(xié)商方式為DCEP方式,并生成攜帶有第一應答屬性行和第三應答屬性行的應答 消息。
[0271] 當確定同意采用的數據通道協(xié)商方式為DCEP方式時,應答消息可以包括:
[0272] c = IN IP479. 97. 215. 79
[0273] a = sctpmap: 5000datachannel max-message-size = lOOOOOstreams = 16
[0274] a = assignstreamid: dynamic
[0275] a = subprotocol:MSRP
[0276] 其中,第一應答屬性行"a = assignstreamid:dynamic"表示接收端支持的數據通 道協(xié)商方式為DCEP方式;第三應答屬性行"a = subprotocol :MSRP"表示兩端在數據通道 上均支持的數據協(xié)議為MSRP協(xié)議。
[0277] 第四,若兩端均支持的數據通道協(xié)商方式有且只有SDP方式,則確定同意采用的 數據通道協(xié)商方式為SDP方式,并生成攜帶有第一應答屬性行、第二應答屬性行和第三應 答屬性行的應答消息。
[0278] 其中,第二應答屬性行與第二提議屬性行對應,第二應答屬性行包括接收端同意 采用的數據通道協(xié)商方式的信息,該信息通常包括相關用于建立數據通道的參數,比如 SCTP端口號、數據通道關聯(lián)的流標識、數據通道對應的標簽以及最大重傳次數等等。接收端 生成攜帶有第一應答屬性行、第二應答屬性行和第三應答屬性行的應答消息,以便發(fā)送端 在后續(xù)過程中讀取第二應答屬性行后,通過SDP方式與接收端之間建立數據通道,并根據 第三應答屬性行確定在數據通道上傳輸的數據協(xié)議。
[0279] 在本實施例中,接收端確定第二應答屬性行的過程如下:
[0280] 1、根據第三提議屬性行以及兩端在數據通道上均支持的數據協(xié)議確定所需應答 的第二提議屬性行。
[0281] 其中,所需應答的第二提議屬性行中的屬性值包括的標簽與兩端在數據通道上均 支持的數據協(xié)議對應的協(xié)議標識在第三提議屬性行中關聯(lián)的標簽相同。
[0282] 比