王 蕊,周 慧,趙海茹,趙盛萍
玉溪師范學院,云南 玉溪 653100
隨著信息技術的飛速發(fā)展,在視頻會議、人工智能、高清視頻、虛擬現(xiàn)實等各個領域都出現(xiàn)了大量的應用。它們有嚴格的服務質量(QoS)要求。目前,大多數數據傳輸都通過一條路徑。在大多數情況下,單個路徑不能完全支持這些新興的應用程序。此外,在高損耗或延遲的情況下,單路徑傳輸的性能顯著下降。為提高新興應用的網絡服務質量,優(yōu)化現(xiàn)有的傳輸技術至關重要。終端設備之間多路徑的可用性不斷增加,為解決上述需求提供了機會。并發(fā)多徑傳輸(CMT)是一種很有前途的解決方案,它可以聚合多條路徑的帶寬。
傳統(tǒng)的傳輸協(xié)議,如TCP和UDP,不支持同時使用多條路徑。為了解決該問題,IETF標準化了多路徑TCP(MPTCP)[1]和流控制傳輸協(xié)議(SCTP)。MRTP(Multipath RTP)是一種多路徑RTP(Multipath RTP),它定義了如何利用終端設備之間的多條路徑傳遞多媒體信息。杜恒[2]提出SCTP具有多流的特性,支持多宿主,在端到端之間可以有多個可用的IP地址。在SCTP的主版本中,多個路徑只被認為是主路徑的備份。為了進行擴展,SCTP增加了CMT的特性。樊曉原[3]基于CMT-SCTP 協(xié)議對實時流媒體進行傳輸,研究CMT-SCTP 傳輸協(xié)議在實時流媒體傳輸場景下的所遇到的嚴重亂序、當前CMT-SCTP的重傳策略比較簡單不適合于實時流媒體傳輸等問題展開了研究。MPTCP是面向連接的傳輸層協(xié)議,面向連接雖然可靠性好,但不可避免地增加了許多的開銷和時延。SCTP很好地結合了TCP 和UDP在流媒體傳輸上的各自優(yōu)勢,能夠很好地支持流媒體的傳輸,但是SCTP不兼容現(xiàn)有網絡和應用。綜上,雖然SCTP和MPTCP能夠提高端到端的傳輸速度,提高網絡傳輸效率,但仍然不適用于流媒體數據的傳輸。
多路徑UDP的總體框架分為用戶層、編碼層、流處理層、多路徑UDP傳輸控制層和網絡層。多路徑UDP是一種基于會話的協(xié)議,為上層應用程序在多個流上分發(fā)和傳輸數據提供了方便的工具。從協(xié)議棧架構的角度來看,MPUDP作為應用層和傳輸層之間的中間層。應用程序通過常規(guī)的套接字API與多路徑UDP交互,多路徑UDP管理多個TCP/UDP流。
綜合分析傳輸層協(xié)議及并行多路徑傳輸技術的特點后發(fā)現(xiàn),要實現(xiàn)多路徑UDP的實際部署需要解決如下問題。
(1)不能有效地建立并行多路徑UDP。在多路徑并行傳輸技術中,若要實現(xiàn)并行多路徑的建立,發(fā)送端必須知道接收端是否支持多路徑,若支持則兩端必須交換雙方的地址信息以確認對端可用的IP地址。而UDP是無連接的、不可靠的傳輸協(xié)議,它不能保證雙方的多路徑可用性信息和地址信息是否可靠地交付,有效建立并行多路徑的概率會大大降低。
(2)因為亂序引起的較高主動丟包率。現(xiàn)有流媒體傳輸過程中,UDP協(xié)議使用盡力而為的交付方式,即不保證可靠交付。在基于并行多路徑的流媒體傳輸技術中,因為多條路徑性能的差異,UDP協(xié)議發(fā)送端所發(fā)送的每個數據包可能不按照原先發(fā)送的順序到達接收端,有可能早發(fā)送的數據包較后到達接收端。并且,多路徑并行UDP傳輸本來就是通過不同的路徑傳送,因此,出現(xiàn)亂序的可能性更大。若對未按序到達的數據報采用直接丟棄的方式,這將會因主動丟包率較大而造成流媒體傳輸質量降低。
(3)嚴格的排序不能保證流媒體傳輸的實時性。與單徑傳輸不同,在多徑傳輸過程中,包在多條路徑上進行傳輸,包由于在不同性能的路徑上進行傳輸,因此引起亂序可能性更大。若對到達接收端的數據在緩存區(qū)進行嚴格的排序,在流媒體數據不能按序到達的情況下,緩存區(qū)不能向應用層及時遞交數據,流媒體的實時性不能得到保證。
綜上所述,解決如何有效建立多路徑UDP、傳輸過程中較高的主動丟包率、嚴格排序造成實時性降低等問題可以有效地增大網絡吞吐量、減少亂序及降低丟包率,并通過多路徑傳輸提高網絡資源的利用率。這正好與流媒體傳輸技術朝著大流量、高服務質量方向發(fā)展相一致,具有極強的現(xiàn)實意義。
為解決以上問題,筆者提出了以下關鍵技術促進多路徑UDP的實際部署。在傳輸過程中,發(fā)送方為每個路徑分配一個流。原始應用程序數據分布在多個流中。當到達目的地時,這些數據包結合起來重建原始消息。多路徑UDP的關鍵技術如下所述。
(1)路徑建立。使用并行多路徑UDP 技術傳輸流媒體,首先要研究的內容就是在初始化過程中,怎樣有效建立路徑,能夠對兩端是否支持并行多路徑 UDP 傳輸、動態(tài)的添加可用的 IP 地址刪除不可用的 IP 地址等信息進行可靠的交互。流媒體傳輸對實時性要求高,但是可以允許一定的丟包率。對于 UDP 協(xié)議來說,它的特點是不可靠、啟動時間短、時延小。并行多路徑 UDP 技術對多條 UDP 路徑實現(xiàn)帶寬聚合,提高整體的傳送速率、吞吐量,更符合流媒體傳輸的特點。然而,基于UDP 協(xié)議的并行多路徑傳輸也是不可靠的,如果發(fā)生丟包的現(xiàn)象,也沒辦法通知發(fā)送端重新發(fā)送包。因此,如果在初始化的過程中,使用 UDP協(xié)議發(fā)送包含支持并行多路徑 UDP 傳輸、交互兩端的 IP 地址等重要信息顯然是不夠有效的。
基于上述問題,文章提出了一種有效建立并行多路徑UDP的策略,即對含有是否支持多路徑 UDP 傳輸、動態(tài)的添加、刪除 IP 地址等重要信息的包,建立一條可靠的 TCP連接發(fā)送,而其他流媒體大數據使用實時性高,有一定丟包率的 UDP 協(xié)議發(fā)送。初始化時,首先在此路徑上建立一條可靠的TCP連接,然后發(fā)送端和接收端基于該TCP進行三次握手,在SYN,SYN/ACK的交換過程中,增加雙方協(xié)商是否采用多路徑UDP協(xié)議。如果雙方都支持并同意采用多路徑UDP協(xié)議,則完成多路徑初始化。雙方再通過該TCP連接交換可用的地址信息,任意一方可以采用一對當前沒有使用的地址來新建一個UDP子流,以此實現(xiàn)多路徑UDP并行傳輸。路徑管理示意圖如圖1所示。
圖1 多路徑UDP路徑管理示意圖
(2)數據調度。建立并行多路徑UDP容易導致數據亂序問題,原因在于即使是每條路徑同時傳輸數據的時候,到達接收端時也不是同時到達。并且UDP協(xié)議本身也會因為數據在經過中間路徑的傳送時會根據各個數據傳送的路徑不同或者其他原因而造成這些數據到達的順序不同。傳統(tǒng)的輪詢方式的資源調度,即當應用層發(fā)送數據時,分組被依次分配給每條路徑進行傳輸。 輪詢方式的優(yōu)點是簡單、直接。但是它沒有考慮不同路徑在帶寬、延遲和丟包率等方面的差異,并沒有解決亂序問題。因此,通過一種有效的資源調度的方法,能夠使數據在接收端大致按序進行,減少不按序丟棄的數據,并且保障流媒體傳輸的實時性。因此,在充分考慮流媒體傳輸低時延和高帶寬的要求下,研究并設計一種盡量保證數據按序傳輸的資源調度算法。首先設計一種UDP路徑的帶寬和前向傳輸時延測量策略。再綜合考慮各子流間的帶寬和前向時延,用相關性因子給子流分類,使得同一集合內的子流傳輸時延差相對較小。然后在邏輯集合內采用最快路徑優(yōu)先算法(FSF算法),集合間采集合間計算發(fā)送起始序列號,使多子流上的數據盡可能按原順序到達接收端,以此減輕因時延差異導致的數據亂序。
(3)數據排序?,F(xiàn)有的并行多路徑傳輸的排序策略中,基于面向連接的可靠特性,都是嚴格排序的。面向連接的嚴格排序策略是每條可靠路徑數據包傳輸完成后進行排序,然后在總的接收端再開辟大量的緩存進行排序。在排序過程中,如果個別包時延較大,則要等待它到達排序;如果有包丟失,則通知發(fā)送端重新發(fā)送。該策略的優(yōu)勢是可靠性強、內容基本不會發(fā)生差錯,但是實時性較弱。對于文件、郵件類型的數據傳輸比較合適??紤]到流媒體數據量大允許丟包并且實時性要求高的特點,本文采用一種不嚴格按序的數據排序策略。由于UDP數據報本身不具有序列號,為了實現(xiàn)接收端數據的排序,首先在發(fā)送端給UDP數據報選項字段中加入連接級序列號。接收端根據連接級序號,對到達接收緩存的數據進行排序。當緩存中的數據到達一定數量便遞交應用層,對于未按序到達的數據,接收端采取丟棄的策略。
文章提出了基于多路徑UDP進行流媒體數據的傳輸。相比SCTP和多路徑TCP傳輸協(xié)議,多路徑UDP結合UDP與并行多路徑傳輸技術的特性,可進一步提升流媒體傳輸實時性需求。為實現(xiàn)多路徑UDP協(xié)議,文章還設計了協(xié)議的框架及關鍵技術,下一步將采用NS3仿真工具驗證所提關鍵技術算法的有效性。