相關申請的交叉引用
本申請要求2014年12月19日提交的題為“negotiationofchunksizeformessagesessionrelayprotocol”的在先提交的美國臨時專利申請?zhí)?2/094,227的優(yōu)先權,其內容通過引用并入本文。
本公開大體上涉及在端點之間對消息會話中繼協(xié)議msrp塊大小的協(xié)商。
背景技術:
消息會話中繼協(xié)議msrp是通過通信網絡在端點之間使用以用于在會合會話的上下文中通過互聯網協(xié)議ip網絡交換一系列相關的即時消息的標準媒體平面協(xié)議。它由互聯網工程任務組ietf在“請求注釋”rfc4975中定義。即時消息中的內容可以是文本消息、超文本傳輸協(xié)議html頁面、包含視頻剪輯、圖像、歌曲的文件或只是通用文件。該內容還可以與共享遠端桌面或白板有關。
msrp是一種基于文本的協(xié)議,其通過傳輸協(xié)議(如傳輸控制協(xié)議tcp、ietfrfc793、流控制傳輸協(xié)議sctp、ietfrfc2690、tcp承載傳輸層安全tls、ietfrfc2246等)承載在媒體平面上。換句話說,提供擁塞控制的任何傳輸協(xié)議。如當前指定的,msrp不對消息大小或內容類型施加限制。
也可以按照ietfrfc4976所定義的使用msrp中繼。當端點之一位于網絡地址轉換器nat后面(更具體地,如果msrp會話必須跨越多個管理域)時,使用msrp中繼。msrp中繼還用于支持批量消息收發(fā),并通過少量中繼間連接而承載用于大量msrp會話的消息。
msrp消息由請求和響應組成,并且并非每個msrp請求都通過msrp響應應答。msrp定義了方法,并且目前有三種指定的方法:
用于發(fā)送任意長度的即時消息或文件等的send(發(fā)送)方法。
用于提供消息傳送通知的report(報告)方法。
用于使用中繼認證端點的auth(認證)方法。
msrp無法獨立設置會話,并且為了在端點之間建立msrp會話,通過外部會合機制協(xié)商msrp會話。用于建立msrp會話的典型會合機制是利用會話描述協(xié)議sdp供應/應答模型的會話發(fā)起協(xié)議sip。當然可以使用而不排除其他會合協(xié)議。目前,會話發(fā)起協(xié)議sipietfrfc3261和會話描述sdp供應/應答ietfrfc3264是用于建立msrp會話的唯一已知的標準化機制。sip是一種ietf標準協(xié)議,其允許建立涉及多媒體元素(如視頻、語音、聊天、游戲和虛擬現實)的交互式用戶會話。它還用于建立用于交換即時消息或文件的基于會話的消息收發(fā)會話,即msrp會話。根據sdp應答/供應模型交換msrp會話參數。
在sdp供應/應答交換中通過sip在端點之間交換以下sdp屬性,以建立msrp會話:
接受類型:包含端點愿意接收的媒體類型的列表。
包裝類型:包含端點在具有多部分內容的msrp消息中愿意接收的媒體類型的列表。
最大大小:指示端點愿意接收的msrp消息或最大消息的八位字節(jié)的最大數量。最大大小是指完整消息,而不是任何一個塊的大小。發(fā)送方不應當超過在得到的會話中發(fā)送的任何消息的最大大小限制。
路徑:指示在會話中發(fā)送的消息必須訪問的一系列msrp設備(包括最終端點)。
通常,托管sip用戶代理的起始端點100向也托管sip用戶代理的遠端端點發(fā)送包括sdp供應的sipinvite(邀請)。sdp供應包括消息媒體類型和路徑屬性中的起始端點100的msrpuri。如果遠端端點接受邀請,則以200ok進行響應以確認對媒體的選擇并包括接收msrpuri。此時,建立msrp會話,并且端點可以開始交換即時消息或文件等。當任一端點發(fā)送sipbye請求時,msrp會話終止。
一旦建立了msrp會話,起始端點100就發(fā)送send請求以傳送完整消息,或者如果消息非常大,則起始端點100可以使用幾個send請求以塊的形式傳送該消息,其中每個send請求包含整個消息的一個塊、與整個消息相對應的消息id、標識send請求中承載的消息的部分的字節(jié)范圍首部字段和消息的總大小。遠端端點使用接收到的信息來對消息進行重新組合,并確定哪些塊屬于哪個消息。遠端端點將塊重新組合成完整消息。
send請求可以由來自對等節(jié)點或端點節(jié)點的msrp200ok和/或來自端點的指示成功地傳送了完整消息的report請求來應答。也可以在接收到消息塊時由遠端端點生成逐步成功report請求。
目前,當從起始端點100向遠端端點發(fā)送消息時,起始端點100基于例如其內部配置來確定msrp塊大小。msrp中繼還可以將msrp消息重新分段為與它接收到的塊大小不同的塊大小。在msrp中繼處執(zhí)行的重新分段通?;趦炔颗渲?。
如果它從高容量接入網移動到低容量接入網,或者反之亦然,或者如果遠端端點中的網絡/鏈路狀況已發(fā)生變化,則塊大小的確定未考慮遠端端點能力、接收網絡能力和遠端端點移動性。這可能會在消息傳送中導致可能無法傳送的消息塊或缺少優(yōu)化。雖然msrp通過提供擁塞控制的傳輸協(xié)議承載,但是起始端點沒有指示對于遠端端點可接受的最佳塊大小。
技術實現要素:
本發(fā)明的目的是通過使端點能夠與遠端端點或接收端點協(xié)商msrp塊大小或與中間服務器(諸如背靠背用戶代理b2bua或中繼)協(xié)商msrp塊大小來消除或減輕現有技術的至少一個缺點。然后,b2bua或中繼將與遠端端點協(xié)商塊大小。然后,起始端點將考慮起始端點和遠端端點或b2bua限制和能力(包括接入網類型、網絡和鏈路狀況和配置)確定要使用的最佳塊大小。
在一個實施例中,端點與遠端端點協(xié)商用于msrp媒體會話的msrp塊大小。端點確定其為msrp媒體會話提出的優(yōu)選msrp塊大小,并向遠端端點發(fā)送包括優(yōu)選msrp塊大小的消息。當端點接收到包括遠端端點的優(yōu)選msrp塊大小的響應消息時,它將基于端點的優(yōu)選msrp塊大小和所接收的遠端端點的優(yōu)選msrp塊大小來確定用于msrp媒體會話的msrp塊大小。然后,端點將使用確定的msrp塊大小來對通過msrp媒體會話傳送的消息或文件或內容進行分段。遠端端點可以是消息所去往的最終目的地遠端端點或者駐留在網絡中的服務器中的用于向最終目的地遠端端點轉發(fā)或中繼消息的中間遠端端點。
在一個實施例中,端點的優(yōu)選msrp塊大小和/或遠端端點的優(yōu)選塊大小對應于針對該端點的最大允許塊大小。
在一個實施例中,端點基于所使用的端點的接入網類型(例如,長期演進ltetm、wifitm)和/或本地端點配置和/或端點能力來確定優(yōu)選msrp塊大小。優(yōu)選msrp塊大小被編碼在sdp屬性中并以sdp供應和sdp應答進行交換。使用諸如sip協(xié)議(例如,使用sipinvite、sip200ok、sipre-invite和sipupdate消息等)的會合協(xié)議來傳輸sdp供應和sdp應答。
在另一個實施例中,端點在sdp屬性中發(fā)送按偏好或優(yōu)先級順序列出的優(yōu)選msrp塊大小的列表。
在一個實施例中,端點通過選擇端點的優(yōu)選msrp塊大小和遠端端點的優(yōu)選msrp塊大小中的較小者來確定用于msrp媒體會話的msrp塊大小。如果端點僅支持預配置的塊大小的集合,并且接收到比端點的優(yōu)選msrp塊大小更小并且端點不能選擇并用于msrp會話的遠端端點的優(yōu)選msrp塊大小,則端點選擇更接近并小于遠端端點的優(yōu)選msrp塊大小的配置的msrp塊大小。
端點向遠端端點發(fā)送msrpsend請求,每個send請求包括要發(fā)送的文件或內容或消息的塊,并且其中,塊的大小依據由端點在協(xié)商之后確定的msrp塊大小。
在一個實施例中,使用服務器來與起始端點(也稱為第一端點)和遠端端點(也稱為第二端點)協(xié)商msrp塊大小。當在第一端點與第二端點之間通過服務器傳輸消息時,服務器確定要用于第一(起始)端點與服務器之間以及服務器與第二(遠端)端點之間的msrp會話的msrp塊大小。服務器在第一消息(例如,sipinvite)中從第一端點接收包括第一端點的優(yōu)選msrp塊大小的sdp供應。在向第二端點轉發(fā)具有sdp供應的第一消息之前,服務器可以使用本地策略和/或服務器與沿著通信路徑的對等網絡或第二端點所在的網絡之間的服務級別協(xié)議來確定第一服務器優(yōu)選msrp塊大小。服務器在sdp供應中使用第一服務器優(yōu)選msrp塊大小替換從第一端點接收的第一端點的優(yōu)選msrp塊大小,并向第二端點轉發(fā)具有更新的sdp供應的第一消息。當服務器在第二消息(例如,sip200ok)中接收到包括sdp應答屬性中的第二端點的優(yōu)選msrp塊大小的sdp應答時,它可以使用本地策略和/或服務器與沿著朝向第一端點的通信路徑的對等網絡節(jié)點之間的服務級別協(xié)議來確定將在服務器與第一端點之間使用的第二服務器優(yōu)選msrp塊大小。然后,服務器在sdp應答中使用第二服務器優(yōu)選msrp塊大小來替換從第二端點接收的第二端點的優(yōu)選msrp塊大小。然后,服務器向第一端點轉發(fā)第二消息中的更新的sdp應答。
在一個實施例中,第一服務器優(yōu)選msrp塊大小可以對應于在服務器與第二端點之間允許的最大msrp塊大小。類似地,第二服務器優(yōu)選msrp塊大小可以對應于在服務器與第一端點之間允許的最大msrp塊大小。
在一個實施例中,服務器基于第二端點的優(yōu)選msrp塊大小和第一服務器優(yōu)選msrp塊大小來確定要用于對從服務器到第二端點的消息進行分段的第一服務器msrp塊大小。服務器可以通過選擇第一服務器優(yōu)選msrp塊大小和第二端點的優(yōu)選msrp塊大小中的較小者來確定第一服務器msrp塊大小。對于服務器與第一個端點之間的msrp會話,服務器基于第一端點的優(yōu)選msrp塊大小和第二服務器優(yōu)選msrp塊大小來確定第二服務器msrp塊大小。類似地,服務器可以通過選擇第二服務器優(yōu)選msrp塊大小和第一端點的優(yōu)選msrp塊大小中的較小者來確定第二服務器msrp塊大小。
在一個實施例中,當服務器從第一端點接收到去往第二端點的大消息或文件或其他大內容的塊時,服務器可以在轉發(fā)根據第一服務器msrp塊大小重新分段的消息之前存儲從第一端點接收到的所有消息塊。同樣地,在另一個方向上,如果服務器從第二端點接收到大消息或文件或其他大內容的塊,則服務器可以在轉發(fā)根據第二服務器msrp塊大小重新分段的消息之前存儲從第二端點接收到的所有消息塊。備選地,一接收到消息塊,服務器就向任一端點發(fā)送重新分段的消息塊。
在一個實施例中,服務器在sdp屬性中向第二端點發(fā)送第一服務器優(yōu)選msrp塊大小的列表。可以按照偏好或優(yōu)先級順序列出第一服務器優(yōu)選msrp塊大小。本發(fā)明的另一個目的在于在sdp屬性中提供最小塊大小和最大塊大小,從而提供允許的msrp塊大小的范圍。
附圖說明
現在將僅通過舉例的方式參考附圖來描述本發(fā)明的實施例,其中:
圖1是起始端點與遠端端點之間的簡化msrp會話建立的示例性實施例。
圖2是在始發(fā)端點與遠端端點之間經由諸如b2bua的服務器的簡化msrp會話建立的示例性實施例。
圖3是在端點處執(zhí)行的協(xié)商msrp塊大小的方法的示例性實施例。
圖4是在服務器處執(zhí)行的用于協(xié)商塊大小的方法的示例性實施例。
圖5是根據實施例的端點的示意圖。
圖6是根據實施例的服務器的示意圖。
圖7是根據另一實施例的端點的示意圖。
具體實施方式
縮略詞和定義
貫穿本公開使用以下首字母縮略詞和術語
abnf:ietfrfc5234中所規(guī)定的擴充巴科斯諾爾范式。
端點:可以是手持設備、移動設備(例如,智能電話或平板電腦)。備選地,它可以是物聯網iot設備、ip電話、便攜式計算機、臺式計算機、網關或交互功能。端點支持任何媒體格式,例如文本、圖像、音頻、視頻、八位字節(jié)流、mime格式等,并且能夠使用諸如sip用戶代理等的通信用戶代理來協(xié)商msrp會話以用于發(fā)送和接收msrp消息的目的。msrp消息可以包含可以通過建立的msrp會話傳送的文本、文件和任何類型的多媒體內容。在本公開中呈現的實施例使用起始端點和遠端端點或接收端點。起始端點對應于發(fā)起msrp會話的協(xié)商的端點,并且遠端端點或接收端點對應于與其執(zhí)行msrp會話協(xié)商的端點。端點可以直接或通過網絡中的服務器協(xié)商msrp會話參數。當使用服務器時,服務器充當針對起始端點的中間遠端端點和針對遠端端點的中間起始端點。
ietf:互聯網工程任務組。
msrp:對應于ietfrfc4975中規(guī)定的消息會話中繼協(xié)議。
nni:網絡到網絡接口,它是網絡中的兩個節(jié)點之間的接口。
oma:開放移動聯盟
rfc:請求注釋。
服務器:在所描述的實施例中使用的服務器被定義為起始端點與遠端端點或接收端點之間的網絡節(jié)點或軟件實體。服務器可以是msrp背靠背用戶代理b2bua(例如在ietfrfc6714中描述的背靠背用戶代理)、中繼(例如,在ietfrfc4976中規(guī)定的中繼)、應用消息收發(fā)服務器等。服務器用于與起始端點和遠端端點或接收端點中的每一個協(xié)商msrp會話,在這種情況下,服務器充當針對起始端點的中間遠端端點,并且充當針對遠端端點的中間起始端點。起始端點與遠端端點之間的所有消息都通過服務器傳輸。
sdp:在ietfrfc3264中規(guī)定的會話描述協(xié)議。
sip:在ietfrfc3261中規(guī)定的會話發(fā)起協(xié)議。
uri:統(tǒng)一資源標識符
uni:用戶到網絡接口,其是也對應于端點設備的用戶設備與網絡中的節(jié)點之間的接口。當端點是諸如智能電話或平板電腦的用戶便攜式設備時,uni的示例可以是端點到服務器(b2bua)接口。
現在將參考附圖描述本發(fā)明的各種特征。下面將結合示例性實施例和示例更詳細地描述這些各個方面,以便于理解本發(fā)明,但不應被解釋為限于這些實施例。更確切地,這些實施例被提供,使得本公開將是徹底和完整的,并且將向本領域技術人員充分地傳達本發(fā)明的范圍。
圍繞由計算機系統(tǒng)的元件或能夠執(zhí)行編程指令的其他硬件執(zhí)行的動作序列或功能來描述本發(fā)明的多個方面。將認識到,各種動作可以由專用電路來執(zhí)行,通過由一個或多個處理器執(zhí)行程序指令來執(zhí)行,或者由兩者的組合執(zhí)行。此外,本發(fā)明還可以被認為完全體現在任何形式的計算機可讀載體或載波中,所述任何形式的計算機可讀載體或載波包含將使處理器執(zhí)行本文所述技術的適當的計算機指令集合。
圖1示出了起始端點100和遠端端點101之間的簡化msrp會話建立的示例性實施例,其中僅示出了相關步驟。為了建立msrp會話,在步驟102,起始端點100發(fā)送sipinvite,并且包括包含公知的路徑屬性的sdp供應。如果起始端點100確定必須以塊的形式傳送消息或文件,則指示起始端點的優(yōu)選塊大小的新sdp屬性被包括在sdp供應中。起始端點100至少部分地基于接入網類型、接入網/接入鏈路狀況、內部配置和/或起始端點100能力來確定優(yōu)選塊大小。備選地,起始端點100可以提供優(yōu)選塊大小的列表。遠端端點101以sip200ok進行響應,sip200ok包括包含公知路徑屬性在內的sdp應答和指示遠端端點的優(yōu)選塊大小的新屬性。備選地,遠端端點101可以提供其優(yōu)選塊大小的列表。如果遠端端點的優(yōu)選塊大小與起始端點的優(yōu)選塊大小相同,則遠端端點101可以省略在sdp應答中向起始端點100發(fā)送遠端端點的優(yōu)選塊大小。
起始端點100的優(yōu)選塊大小和遠端端點的優(yōu)選塊大小可以指示端點針對msrp會話允許的最大塊大小。另外,如果sdp屬性包含優(yōu)選塊大小的列表,則列表中的每個塊大小可以指示絕對塊大小值,在這種情況下,塊大小按偏好或優(yōu)先級順序列出??蛇x地,列表可以包括指示最小塊大小值和最大塊大小值的兩個值,從而提供可以用于msrp會話的可允許的塊大小范圍。
起始端點使用起始端點的優(yōu)選塊大小和遠端端點的優(yōu)選塊大小來確定當向遠端端點101發(fā)送消息塊時使用的最佳塊大小。在優(yōu)選實施例中,起始端點100選擇并使用起始端點的優(yōu)選塊大小和遠端端點的優(yōu)選塊大小中的最小塊大小。圖1示出了可以以兩個塊發(fā)送消息。步驟104示出了起始端點100在send請求中向遠端端點101發(fā)送完整消息的第一段或塊,在步驟105,遠端端點101以msrp200ok進行響應。send請求中的消息塊的大小是起始端點100確定的用于起始端點和遠端端點的最佳塊大小。在步驟106,起始端點100在第二send請求中向遠端端點101發(fā)送完整消息的第二和最后一個段或塊,在步驟107,遠端端點101以msrp200ok進行響應。一旦遠端端點101確定接收到所有塊,它就可選地發(fā)送report請求以指示成功地傳送了消息,如步驟108所示。為了終止msrp會話,起始端點100發(fā)送sipbye消息,并從遠端端點101接收sip200ok,如捆綁步驟109所示。
圖2示出了在起始端點100和遠端端點101之間通過諸如b2bua200的服務器的簡化msrp會話建立的示例性實施例。還可以使用其他服務器,例如消息收發(fā)應用服務器或msrp中繼。在圖2中示出了b2bua200。為了簡單起見,圖2沒有示出諸如sip代理和服務呼叫會話控制功能s-cscf等的中間節(jié)點。僅示出了端點與b2bua200之間的相關步驟。為了通過b2bua200建立msrp會話,在步驟201,起始端點100通過b2bua200向遠端端點101發(fā)送sipinvite,并且包括包含公知的路徑屬性在內的sdp供應。如果起始端點100確定必須以塊的形式傳送消息或文件,則指示起始端點的優(yōu)選塊大小的新sdp屬性被包括在sipinvite的sdp供應中。備選地,起始端點100可以在sdp屬性中提供優(yōu)選塊大小的列表。
b2bua200接收包括新sdp屬性的sipinvite,并且當在步驟202向遠端端點101轉發(fā)或中繼sipinvite之前,b2bua200確定sdp屬性中的起始端點的優(yōu)選塊大小是否應該用其自己的優(yōu)選塊大小替換。如果b2bua200確定應該替換起始端點的優(yōu)選塊大小,則b2bua200確定其自己的優(yōu)選msrp塊大小,即要與遠端端點101協(xié)商的第一服務器msrp優(yōu)選塊大小。b2bua200可以根據其內部配置或網絡/鏈路狀況、能力和/或與遠端端點網絡的服務級別協(xié)議來確定第一服務器msrp優(yōu)選塊大小。b2bua200向遠端端點101轉發(fā)修改的sipinvite,其中它已經在sdp供應屬性中用第一服務器msrp優(yōu)選塊大小替換了起始端點的優(yōu)選塊大小。備選地,b2bua200可以用b2bua優(yōu)選塊大小的列表來替換起始端點的優(yōu)選塊大小,并向遠端端點101轉發(fā)sipinvite。在接收到包括第一服務器msrp優(yōu)選塊大小的修改的sipinvite時,遠端端點101可以基于接入網類型、網絡狀況/鏈路和內部配置來確定其優(yōu)選塊大小。在步驟203,遠端端點101通過b2bua200向起始端點100發(fā)送sip200ok,其中它包括包含公知路徑屬性在內的sdp應答和指示遠端端點的優(yōu)選塊大小的新sdp屬性。備選地,遠端端點101可以在新sdp屬性中提供優(yōu)選塊大小的列表。
b2bua200從遠端端點接收sip200ok消息。當在步驟204向起始端點100轉發(fā)或中繼sip200ok之前,b2bua200可以用其可能愿意針對起始端點100使用的第二服務器msrp優(yōu)選塊大小代替遠端端點的優(yōu)選塊大小來替換遠端端點的優(yōu)選塊大小。b2bua200可以根據其內部配置、能力、網絡/鏈路狀況和/或與起始端點100的服務級別協(xié)議來確定第二服務器msrp優(yōu)選塊大小。b2bua200向起始端點100發(fā)送修改的sip200ok,其中它已經用其自己的優(yōu)選塊大小,即第二服務器msrp優(yōu)選塊大小替換了遠端端點的優(yōu)選塊大小。備選地,在向起始端點100轉發(fā)修改的sip200ok之前,b2bua200可以用b2bua優(yōu)選塊大小的列表來替換遠端端點的優(yōu)選塊大小。b2bua200可以針對遠端端點101和起始端點100使用不同的第一服務器msrp優(yōu)選塊大小和第二服務器msrp優(yōu)選塊大小或不同的b2bua優(yōu)選塊大小的列表。
對于從起始端點100向遠端端點101發(fā)送的消息,如圖2所示,起始端點100使用其優(yōu)選塊大小和第二服務器msrp優(yōu)選塊大小來確定當針對遠端端點101向b2bua200發(fā)送消息塊時要使用的最佳塊大小。在一個實施例中,起始端點100選擇并使用起始端點的優(yōu)選塊大小和第二服務器msrp優(yōu)選塊大小中的最小塊大小作為最佳端點塊大小。
最佳端點塊大?。絤in(起始端點優(yōu)選塊大小、服務器(例如,b2bua200)的第二msrp優(yōu)選塊大小)
在步驟204,b2bua200使用其已經向遠端端點101發(fā)送的第一服務器msrp優(yōu)選塊大小和遠端端點的優(yōu)選塊大小來確定在向遠端端點101轉發(fā)起始端點100的消息時要使用的最佳塊大小。在一個實施例中,b2bua200選擇并使用第一服務器msrp優(yōu)選塊大小和遠端端點的優(yōu)選塊大小中的最小塊大小作為最佳服務器塊大小。
最佳服務器塊大小=min(遠端端點的優(yōu)選塊大小、第一服務器msrp優(yōu)選塊大小)
圖2示出了起始端點100使用最佳端點塊大小以使用兩個塊:塊1和塊2通過b2bua200向遠端端點101發(fā)送完整消息的實施例。b2bua200將使用最佳服務器塊大小(也可以被稱為第一服務器msrp塊大小)在三個塊(塊1′、塊2′和塊3′)中向遠端端點101轉發(fā)從起始端點100接收到的完整消息。圖2示出了當消息塊被接收時b2bua200向遠端端點101發(fā)送消息塊。在所示實施例中,最佳端點塊大小大于(>)最佳服務器塊大小/第一服務器msrp塊大小,因此塊1′小于塊1。因此,b2bua200需要針對遠端端點101使用更多的send請求來轉發(fā)從起始端點100接收的消息。
步驟205示出了起始端點100使用確定的最佳端點塊大小在send請求中向b2bua200發(fā)送完整消息的第一段或塊1。當塊1′小于塊1時,b2bua200存儲消息的塊1,并且在步驟206向遠端端點101發(fā)送包括消息的塊1′的send請求。在步驟207,b2bua200從遠端端點101接收msrp200ok,以確認接收到塊1′。在步驟208,b2bua200向起始端點100發(fā)送msrp200ok以確認在步驟205接收到send消息。注意,步驟208可以在步驟207或步驟206之前發(fā)生。在步驟209,起始端點100在第二send請求中向b2bua200發(fā)送第二和最后一個消息段或塊2。b2bua200存儲接收到的消息的塊2,并確定塊2是完整消息的最后一個塊。在步驟210,b2bua200向遠端端點101發(fā)送包括完整消息的塊2′的send請求。在步驟211,遠端端點101在msrp200ok消息中確認接收到send請求。在步驟212,b2bua200向遠端端點101發(fā)送包括完整消息的塊3′的最后一個send請求。在步驟213,遠端端點101使用msrp200ok消息確認接收到send請求。注意,b2bua200不需要等待步驟211的塊2′的msrp200ok來執(zhí)行步驟212。步驟214示出了b2bua200向起始端點100發(fā)送msrp200ok以確認接收到塊2。類似地,步驟214可以在步驟209之后立刻發(fā)生。
可以使用其他實施例,其中最佳端點塊大小小于(<)最佳服務器塊大小(第一服務器msrp塊大小),在這種情況下,b2bua200在消息塊到達時存儲接收到的消息塊,在它針對遠端端點101使用第一服務器msrp塊大小對消息進行重新分段之前等待直到接收到所有消息塊為止。即使最佳端點塊大小大于(>)第一服務器msrp塊大小,作為圖2所示實施例的替代方案,b2bua200可以在消息塊到達時存儲接收到的消息塊,在它針對遠端端點101使用也被稱為最佳服務器塊大小的第一服務器msrp塊大小對消息進行重新分段之前等待直到接收到所有消息塊為止。
一旦遠端端點101確定接收到所有塊,它就可選地向b2bua200發(fā)送report請求以指示成功地傳送了完整消息,如步驟215所示。然后,b2bua200向起始端點100發(fā)送report請求以指示成功地傳送了完整消息,如步驟216所示。當msrp會話終止時,起始端點100然后可以通過發(fā)送sipbye消息并從b2bua200接收sip200ok來終止會話,如捆綁的步驟217所示。然后,b2bua200通過發(fā)送sipbye消息并從遠端端點101接收sip200ok來終止會話,如捆綁的步驟218所示。
注意,起始端點的優(yōu)選塊大小、第一個服務器msrp優(yōu)選塊大小和遠端端點的優(yōu)選塊大小可以指示每個實體支持的最大塊大小。另外,如果使用了優(yōu)選塊大小的列表,則它可以指示絕對塊大小值,在這種情況下,它們按偏好或優(yōu)先級順序列出??蛇x地,列表可以包括指示最小塊大小和最大塊大小的兩個值,從而提供可允許的塊大小范圍。
圖3示出了在端點處執(zhí)行的方法30的實施例,該端點向遠端端點發(fā)出即時消息。遠端端點可以是msrp消息的目的地/接收方端點,在這種情況下,端點與作為目的地/接收方端點的遠端直接進行通信。備選地,遠端端點可以是作為針對端點的中間遠端端點的服務器。服務器用于代表端點與目的地/接收方遠端端點進行通信或互通。因此,從端點到目的地端點的包括msrp消息的所有通信都通過服務器(例如,b2bua)。無論它是作為中間遠端端點的服務器還是目的地/接收方端點,這里將其稱為遠端端點。
在步驟31,端點確定即時消息或文件或內容將以塊的形式發(fā)送,并進一步確定消息的優(yōu)選塊大小。優(yōu)選塊大小作為sdp供應在sipinvite中發(fā)送。在另一實施例中,端點可以替代地發(fā)送按偏好或優(yōu)先級順序列出的優(yōu)選塊大小的列表。在另一實施例中,端點可以發(fā)送指示最小塊大小和最大塊大小的兩個塊大小值,從而提供可允許的塊大小范圍。端點至少部分地基于包括以下項的標準來確定優(yōu)選塊大?。憾它c接入網類型、端點接入網/接入鏈路狀況和/或內部配置。
在步驟32,端點在sip200ok中從遠端端點101接收sdp應答。如果遠端端點101支持協(xié)商消息塊大小,則sip200ok包括遠端端點的優(yōu)選塊大小。遠端端點101可以基于遠端端點接入網類型、遠端端點接入網/接入鏈路狀況和/或內部配置來確定其優(yōu)選塊大小。備選地,遠端端點101可以替代地在sdp應答中包括按偏好或優(yōu)先級順序列出的優(yōu)選塊大小的列表。在另一實施例中,遠端端點101可以替代地在sdp應答中包括指示最小塊大小和最大塊大小的兩個塊大小值,從而提供可允許的塊大小范圍。
一旦端點已經在sdp應答中接收到遠端端點優(yōu)選塊大小,則它確定要用于msrp會話的最佳塊大小。確定最佳塊大小的實施例如下:
-如果端點的優(yōu)選塊大小小于遠端端點的優(yōu)選塊大小,則最佳塊大小是端點的優(yōu)選塊大小。
-如果遠端端點的優(yōu)選塊大小小于端點的優(yōu)選塊大小并且它可以由端點支持,則最佳塊大小是遠端端點的優(yōu)選塊大小。
-如果遠端端點的優(yōu)選塊大小小于優(yōu)選端點塊大小,并且由于端點被配置為僅使用一些預配置的msrp塊大小因而端點不能支持遠端端點的優(yōu)選塊大小,則端點將最佳塊大小選擇為小于遠端端點優(yōu)選快大小的最接近的預配置的msrp塊大小或遠端端點的優(yōu)選塊大小。
除了上述實施例以外,如果遠端端點101不支持對塊大小的協(xié)商,則端點應該假設如今的已知行為,即,對于塊大小沒有限制,并且它可以使用其自己配置的值或甚至其自己確定的優(yōu)選塊大小。
在步驟33,msrp會話開始,其中端點使用上面在步驟32確定的會話的最佳塊大小來發(fā)送包括完整消息的第一塊的send請求。端點可以從遠端端點101接收msrp200ok以確認接收到send請求。端點在完整消息被發(fā)送和傳送之前繼續(xù)發(fā)送包括后續(xù)消息塊的后續(xù)send請求。一旦遠端端點101已經接收到完整消息并重新組合了所有塊,就可以接收到指示成功傳送的報告消息。
在一個實施例中,在活動msrp會話期間,端點和/或遠端端點101可以從一個接入網類型移動到另一個不同容量的接入網類型,或者一個或兩個端點的接入網/接入鏈路狀況已經發(fā)生了改變。當上述任何一種情況發(fā)生時,端點和/或遠端端點101可以在正在進行的msrp會話期間在sipre-invite或sipupdate中發(fā)送更新的sdp供應。更新的sdp供應將包括針對一個端點的更新的優(yōu)選塊大小值,并且返回sdp應答,sdp應答可以包括針對另一端點的更新的優(yōu)選塊大小。然后,發(fā)送消息的端點可以基于更新的sdp供應/應答中的更新的優(yōu)選塊大小來對最佳塊大小值進行新的確定,并使用新確定的最佳塊大小值繼續(xù)msrp會話。
圖4示出了在服務器200處執(zhí)行的示例性方法40,服務器200將即時消息從起始端點100中繼或轉發(fā)到遠端端點101。服務器200可以是具有在起始端點100和遠端端點101之間建立msrp會話并且按需要根據定義或動態(tài)的服務器標準對在起始端點100和遠端端點101之間發(fā)送的即時消息進行重新分段的能力的b2bua、中繼或消息中心。服務器200與每個端點協(xié)商msrp會話的參數。msrp會話建立在步驟41開始,當服務器200在sipinvite消息中接收sdp供應時,sdp供應包括傳統(tǒng)的msrp參數,例如路徑、最大大小等以及當可以從起始端點100以塊的形式傳送消息時指示消息的起始端點的優(yōu)選塊大小的新sdp屬性。在步驟42,服務器200根據路徑參數確定遠端端點101,針對遠端端點101確定第一服務器優(yōu)選msrp塊大小。如果第一服務器優(yōu)選msrp塊大小與接收到的起始端點的優(yōu)選塊大小值不同,則其通過用其自己的優(yōu)選msrp塊大小(即,第一服務器優(yōu)選msrp塊大小)替換接收的sdp供應中指示起始端點的優(yōu)選塊大小的新sdp屬性值來進一步修改sipinvite消息。然后,服務器200向遠端端點101轉發(fā)具有sdp供應的修改的sipinvite。在步驟43,服務器200在sip200ok中從遠端端點101接收sdp應答,sdp應答包括傳統(tǒng)msrp參數和指示遠端端點的優(yōu)選塊大小的新sdp參數。此外,服務器200確定第二服務器優(yōu)選msrp塊大小,但是這一次針對起始端點100。如果第二服務器優(yōu)選msrp塊大小不同于遠端端點的優(yōu)選塊大小值,則它進一步修改sip200ok,其中它用其自己的優(yōu)選msrp塊大小(即,第二服務器優(yōu)選msrp塊大小)替換sdp應答中指示遠端端點的優(yōu)選塊大小的新sdp屬性值,并且向起始端點100轉發(fā)具有sdp應答的修改的sip200ok。如果第二服務器優(yōu)選msrp塊大小與遠端端點的優(yōu)選塊大小相同,則服務器200可以不用其自己的優(yōu)選msrp塊大小(即,第二服務器優(yōu)選msrp塊大小)替換sdp應答中指示遠端端點的優(yōu)選塊大小的新sdp屬性值。
在一個實施例中,服務器200基于標準來確定第一服務器優(yōu)選msrp塊大小和第二服務器優(yōu)選msrp塊大小,該標準包括內部配置或配置的策略和/或服務器與沿著路徑(例如,網絡到網絡互連nni或者甚至用戶到網絡互連uni(如果服務器200在沒有其他中間節(jié)點的情況下直接與一個或兩個端點進行通信的話))的下一個節(jié)點之間的服務級別協(xié)議。
在圖4的步驟44,服務器200確定針對從起始端點100接收的消息的第一服務器msrp塊大小,其是要針對遠端端點101使用的最佳塊大小。服務器200還確定針對同一msrp會話上在從遠端端點101到起始端點100的另一方向上接收的消息的第二服務器msrp塊大小,其是要針對起始端點100使用的最佳塊大小。描述了確定第一服務器msrp塊大小的實施例。相同的實施例可應用于關于起始端點100確定第二服務器msrp塊大?。?/p>
-如果在步驟42確定的第一服務器優(yōu)選msrp塊大小小于遠端端點的優(yōu)選塊大小,則第一服務器msrp塊大小(即要在服務器200與遠端端點101之間使用的塊大小)是第一服務器優(yōu)選msrp塊大小。
-如果遠端端點的優(yōu)選塊大小小于第一服務器優(yōu)選msrp塊大小,并且它可以被服務器200支持,則第一服務器msrp塊大小是遠端端點的優(yōu)選塊大小。
-如果遠端端點的優(yōu)選塊大小小于第一服務器優(yōu)選msrp塊大小,并且由于服務器200被配置為僅使用一些預配置的msrp塊大小因而服務器200不能支持遠端端點的優(yōu)選塊大小,則服務器200將第一服務器msrp塊大小(或最佳塊大小)選擇為小于遠端端點的優(yōu)選塊大小的最接近的預配置的服務器msrp塊大小。
除了上述實施例之外,如果服務器200(例如,b2bua)和遠端端點101不能協(xié)商塊大小,則服務器200應該假定如今的已知行為,即,對塊大小可以沒有限制并且對于從服務器200轉發(fā)到遠端端點101的消息,其可以使用其自己的配置值或甚至其自己確定的優(yōu)選塊大小。可能存在服務器200(例如,b2bua)能夠與遠端端點101而不是與起始端點100(反之亦然)協(xié)商塊大小的情況。當塊大小的協(xié)商不能與端點中的任一個協(xié)商時,有關的端點和服務器200將根據現有技術在相應鏈路上使用默認塊大小。
在步驟45,建立msrp會話。服務器200使用第一服務器msrp塊大小和第二服務器msrp塊大小在起始端點100和遠端端點101之間傳輸消息。當服務器200從起始端點100接收到消息塊時,它可能需要在接收到完整消息之前存儲所有消息塊,然后開始向遠端端點101轉發(fā)根據第一服務器msrp塊大小重新分段的消息。備選地,服務器200一接收到并存儲了足夠的消息字節(jié)或八位字節(jié)以允許根據第一服務器msrp塊大小進行重新分段,服務器200就可以開始向遠端端點101轉發(fā)重新分段的消息。在該后一種備選方案中,服務器200在其開始向遠端端點101轉發(fā)之前可能僅需要存儲消息的少量塊而不需要等待從起始端點100接收并存儲完整消息。
例如,如果來自起始端點100的msrpsend請求中使用的消息塊大小小于第一服務器msrp塊大小,則服務器200存儲消息塊,并在其開始向遠端端點101轉發(fā)并根據第一服務器msrp塊大小進行重新分段之前等待更多的消息塊從起始端點100到達。
方法40的步驟45對于從遠端端點101接收的消息被等同地執(zhí)行,其中在朝向起始端點100的相反方向上根據第二msrp塊大小對消息塊進行重新分段。
此外,在正在進行的msrp會話期間,起始端點100和/或遠端端點101可以隨時更新其對應的優(yōu)選msrp塊大小。端點可以隨時在sipre-invite或sipupdate消息中發(fā)送sdp供應。如果例如網絡/鏈路狀況已經改變或端點之一或兩個端點已經移動到不同容量的不同接入網類型(不同的帶寬策略可能適用),則可能發(fā)生這種情況。然而,如果從一個端點接收到更新的sdp供應的服務器200確定它應該保持其先前確定的第一服務器優(yōu)選msrp塊大小或第二服務器優(yōu)選msrp塊大小,則它對該端點進行響應而不向另一端點轉發(fā)sdp供應。
以下實施例示出了當包含在sdp供應和sdp應答中的新sdp屬性用于承載優(yōu)選塊大小時該屬性的格式。屬性的定義和語法的示例如下:
sdp——行屬性“a=chunk-size:”可以取例如100千字節(jié)開始的以kb為單位的值。
塊大小可以是最大塊大小。
為了與rfc4975的向后兼容性,在sdp供應或sdp應答中未接收到msrp塊大小屬性的端點應該假定如今的行為,即對塊大小沒有限制,并且它可以使用其自己配置的值。
針對新sdp屬性的擴充巴科斯諾爾范式abnf語法可以是:
chunk-size=chunk-size-label“:”chunk-size-value
chunk-size-label=“chunk-size”
chunk-size-value=1*(digit);塊大小(千字節(jié))
當屬性用于承載按照偏好或優(yōu)先級順序列出的優(yōu)選塊大小的列表時,可以使用類似的實施例。備選地,屬性可以被格式化為承載優(yōu)選塊大小的最小值和最大值。
圖5所示的實施例示出了包括電路50的端點,其中除了在此描述的其它實施例之外,電路50還執(zhí)行根據如圖1和圖3所述的實施例的方法步驟。在一個實施例中,電路50可以包括處理器51和包含指令的存儲設備52(也稱為存儲器),指令在被執(zhí)行時使處理器51執(zhí)行根據本文描述的實施例的方法中的步驟。電路50還可以包括通信接口53以與外部實體通信。
圖6所示的實施例示出了包括電路60的服務器200,除了本文所述的其它實施例之外,電路60還執(zhí)行根據如圖2和圖4所述的實施例的方法步驟。在一個實施例中,電路50可以包括處理器61和包含指令的存儲設備62(也稱為存儲器),指令在被執(zhí)行時使處理器61執(zhí)行根據本文所描述的實施例的方法中的步驟。電路60還可以包括通信接口63以與外部實體和端點通信。
在圖7中示出了端點的另一個實施例。圖7示出了包括處理模塊71的電路70,處理模塊71被配置為確定用于msrp會話的優(yōu)選msrp塊大小,并且通過通信模塊73發(fā)送包括端點的優(yōu)選msrp塊大小在內的消息。該消息可以是sip-invite消息。處理模塊71還被配置為通過通信模塊73接收響應消息,其中響應消息包括遠端端點的優(yōu)選msrp塊大小。處理模塊71被配置為確定要用于msrp媒體會話的msrp塊大小。當通過通信模塊73向遠端端點發(fā)送msrp會話消息時,處理模塊71還被配置為根據存儲在存儲器模塊(72)中的確定的msrp塊大小來對msrp會話消息進行分段。
圖7中的電路70還包括通信模塊73,被配置為發(fā)送和接收用于建立msrp會話的通信消息,并協(xié)商用于端點之間的msrp會話的msrp塊大小。通信模塊73還被配置為發(fā)送根據確定的msrp塊大小被分段的分段的msrp會話消息。通信模塊73還被配置為從遠端端點接收msrp會話消息,其中可能根據遠端端點確定的msrp塊大小對msrp會話消息進行了分段。存儲器模塊72維持由端點確定的msrp塊大小,該確定的msrp塊大小用于對從端點到遠端端點的msrp消息進行分段。
已經參考特定實施例描述了本發(fā)明。然而,對于本領域技術人員顯而易見的是,可以以與上述實施例不同的具體形式不同的具體形式來體現本發(fā)明。所描述的實施例僅僅是說明性的,而不應被認為是任何限制性的。本發(fā)明的范圍由所附權利要求而不是前面的描述給出,并且落入權利要求的范圍內的所有變化和等同物旨在被包含在其中。