一種實時媒體數(shù)據(jù)傳輸方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種實時媒體數(shù)據(jù)傳輸方法、裝置及系統(tǒng),該方法包括:安全穿越網(wǎng)關STG在確定出接收到的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,判斷所述實時媒體數(shù)據(jù)是否是正確排序的數(shù)據(jù)包;根據(jù)判斷結果,將正確排序的數(shù)據(jù)包保存在維護的順序隊列中,以及將錯誤排序的數(shù)據(jù)包保存在維護的亂序隊列中;STG依次讀取順序隊列中的數(shù)據(jù)包,并向客戶端發(fā)送響應信息,其中所述響應信息用于指示客戶端發(fā)送數(shù)據(jù)包;若順序隊列中沒有新接收的數(shù)據(jù)包,則在亂序隊列中依次讀取按序排列的數(shù)據(jù)包并放置在順序隊列中,并向客戶端發(fā)送響應信息。采用上述技術方案,能夠較好地節(jié)省系統(tǒng)資源,提高基于TCP的實時媒體數(shù)據(jù)的傳輸效率。
【專利說明】一種實時媒體數(shù)據(jù)傳輸方法、裝置及系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及多媒體數(shù)據(jù)處理【技術領域】,尤其是涉及一種實時媒體數(shù)據(jù)傳輸方法、裝置及系統(tǒng)。
【背景技術】
[0002]網(wǎng)絡地址轉(zhuǎn)換/ 防火墻穿越(NAT/FT, Network Address Translation/FirewallTraversal),是一種保證位于NAT設備后的主機與外部的主機之間能夠正常通信的技術。
[0003]由于IPv4地址緊缺及網(wǎng)絡安全問題,多數(shù)企業(yè)用戶在網(wǎng)絡出口處設置了 NAT/NAPT設備建立一個私有IP地址、私有端口與公網(wǎng)IP、公網(wǎng)端口之間的綁定,為內(nèi)網(wǎng)主機分配公網(wǎng)地址和端口與外部主機進行通信。會話發(fā)起協(xié)議(SIP, Session InitiationProtocol)是一個基于文本的應用層協(xié)議,會話建立的有關IP地址信息在數(shù)據(jù)包中傳輸,但是NAT是對TCP/IP以下協(xié)議層進行處理,無法解析應用層的SIP數(shù)據(jù)包,無法完成正常的SIP會話建立過程。從安全方面考慮,多數(shù)企業(yè)在網(wǎng)絡出口處設置了防火墻,對通過設置的防火墻的IP數(shù)據(jù)包按照相關策略進行過濾。防火墻在訪問列表配置時,除打開網(wǎng)內(nèi)業(yè)務需要的知名端口外(如http的80端口),其它端口一般都配置為拒絕。對于基于SIP的多媒體通信應用而言,需要在控制信令中動態(tài)地協(xié)商媒體流端口,并維護多個UDP流實現(xiàn)媒體流的發(fā)送和接收。動態(tài)分配的端口為在防火墻上配置固定的包過濾策略帶來了困難,對于不支持SIP應用網(wǎng)關(SIP ALG)的防火墻,無法獲取動態(tài)端口信息,導致媒體報文不能通過。
[0004]隨著多媒體處理技術的發(fā)展,基于流媒體傳輸?shù)亩嗝襟w應用得到了迅速的發(fā)展。而音/視頻等媒體流對實時性要求很高,通常采用基于UDP的RTP協(xié)議來傳輸。但為了節(jié)省IPv4地址空間及保障網(wǎng)絡安全,在CM-MS網(wǎng)絡中多數(shù)企業(yè)用戶在出網(wǎng)處部署NAT、防火墻及HTTP代理,但是,由部署的NAT、防火墻及HTTP代理等設備,會使實時媒體數(shù)據(jù)傳輸產(chǎn)生下述缺陷:
[0005]第一種缺陷:如圖1a所示,某些防火墻會對協(xié)議進行限制,采用UDP協(xié)議的數(shù)據(jù)不能通過,導致基于m)P的sip和RTP數(shù)據(jù)也無法通過。
[0006]第二種缺陷:如圖1b所示,CM-1MS需要使用大量UDP端口進行媒體數(shù)據(jù)傳輸,防火墻可能無法開放大量UDP端口
[0007]第三種缺陷:防火墻實現(xiàn)SIP ALG功能,但其對SIP消息的修改不符合CM-MS要求,導致核心網(wǎng)無法正確處理SIP消息。
[0008]針對上述缺陷,一種解決方式是在會話邊界控制器(SBC, Session BorderController)處部署STG設備,STG可與SBC分設或合設。客戶端與STG之間建立隧道(tunnel),隧道類型包括 TLS (Transport Layer Security)及 DTLS (Datagram TransportLayer Security),如圖1c所示,分別將數(shù)據(jù)加密后封裝在payload中。如果將基于UDP的SIP消息或RTP消息利用DTLS方式封裝并傳輸,其行為類似UDP的方式。如果是利用TLS方式封裝并傳輸,其行為與TCP類似。由于TCP的擁塞控制機制(丟包認為是網(wǎng)絡擁塞,重傳丟包并將發(fā)送速度減慢)和可靠性連接機制(丟包重傳,實時媒體對實時性要求高,超過一定時間的重傳沒有意義),導致利用TLS傳實時媒體效果不好?;诖颂岢鲆环N利用TCP協(xié)議承載實時媒體的方案,應用于Client與STG Server的TLS隧道傳輸過程中。由于TCP協(xié)議存在丟包重傳的可靠性保障機制,丟包后發(fā)送速率減半的擁塞控制機制等,在具體實施中需要占用大量的傳輸資源和時間上的開銷,使得基于TCP傳輸實時媒體數(shù)據(jù)的效率不聞?;诖?,現(xiàn)有技術中提出兩種解決方案:
[0009]第一種方案:TCP-RTM的方法。該種方法需要對接收方和發(fā)送方的協(xié)議棧進行更改,然后給予更改后的協(xié)議棧來傳輸實時媒體數(shù)據(jù)。
[0010]第二種方案:在TCP層和底層協(xié)議棧之間增加一個工作層的方法。具體實施中,在TCP層和底層協(xié)議棧之間增加一個工作層NDIS,位于TCP層之下、網(wǎng)卡之上,完成基于TCP的數(shù)據(jù)包封包以及數(shù)據(jù)包的過濾接收。對于承載實時媒體的數(shù)據(jù)包,通過NDIS層直接交給應用層,對于普通TCP數(shù)據(jù)包,則交給標準TCP/IP協(xié)議棧進行傳輸。
[0011]上述兩種方案,其中第一種方案,需要分別對發(fā)送方和接收方的協(xié)議棧進行改動,而第二種方案,則需要額外增加一個工作層,兩種技術方案復雜度比較高,比較浪費系統(tǒng)資源,進而影響基于TCP的實時媒體數(shù)據(jù)的傳輸效率。
【發(fā)明內(nèi)容】
[0012]本發(fā)明實施例提供了一種實時媒體數(shù)據(jù)傳輸方法、裝置及系統(tǒng),能夠較好地節(jié)省系統(tǒng)資源,提高基于TCP的實時媒體數(shù)據(jù)的傳輸效率。
[0013]一種實時媒體數(shù)據(jù)傳輸方法,包括:安全穿越網(wǎng)關STG在確定出接收到的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,判斷所述實時媒體數(shù)據(jù)是否是正確排序的數(shù)據(jù)包;根據(jù)判斷結果,將正確排序的數(shù)據(jù)包保存在維護的順序隊列中,以及將錯誤排序的數(shù)據(jù)包保存在維護的亂序隊列中;STG依次讀取順序隊列中的數(shù)據(jù)包,并向客戶端發(fā)送響應信息,其中所述響應信息用于指示客戶端發(fā)送數(shù)據(jù)包;若順序隊列中沒有新接收的數(shù)據(jù)包,則在亂序隊列中依次讀取按序排列的數(shù)據(jù)包并放置在順序隊列中,并向客戶端發(fā)送響應信息。
[0014]一種實時媒體數(shù)據(jù)傳輸方法,包括:安全穿越網(wǎng)關STG在確定出待發(fā)送的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,向客戶端發(fā)送實時多媒體數(shù)據(jù)包;在預設時長內(nèi),判斷是否接收到客戶端發(fā)來的響應消息;根據(jù)判斷結果,STG調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大??;通過調(diào)整后的發(fā)送窗口發(fā)送實時媒體數(shù)據(jù)。
[0015]一種實時媒體數(shù)據(jù)傳輸裝置,包括:判斷單元,在確定出接收到的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,判斷所述實時媒體數(shù)據(jù)是否是正確排序的數(shù)據(jù)包;保存單元,用于根據(jù)判斷結果,將正確排序的數(shù)據(jù)包保存在維護的順序隊列中,以及將錯誤排序的數(shù)據(jù)包保存在維護的亂序隊列中;發(fā)送單元,用于讀取順序隊列中的數(shù)據(jù)包,并向客戶端發(fā)送響應信息,其中所述響應信息用于指示客戶端發(fā)送數(shù)據(jù)包;若順序隊列中沒有新接收的數(shù)據(jù)包,則在亂序隊列中依次讀取按序排列的數(shù)據(jù)包并放置在順序隊列中,并向客戶端發(fā)送響應信息。
[0016]一種實時媒體數(shù)據(jù)傳輸裝置,包括:發(fā)送單元,用于在確定出待發(fā)送的數(shù)據(jù)包類型是基于傳輸控制協(xié)議T CP傳輸?shù)膶崟r媒體數(shù)據(jù)時,向客戶端發(fā)送實時多媒體數(shù)據(jù)包;判斷單元,用于在預設時長內(nèi),判斷是否接收到客戶端發(fā)來的響應消息;調(diào)整單元,用于根據(jù)判斷結果,STG調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小;所述發(fā)送單元,還用于通過調(diào)整后的發(fā)送窗口發(fā)送實時媒體數(shù)據(jù)。
[0017]一種實時媒體數(shù)據(jù)傳輸系統(tǒng),包括至少一個客戶端和至少一個安全穿越網(wǎng)關STG,其中所述客戶端,用于向STG發(fā)送實時媒體數(shù)據(jù)包,以及接收STG發(fā)來的實時媒體數(shù)據(jù)包,并向所述STG發(fā)送響應信息;所述STG,用于在確定出接收到的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,判斷所述實時媒體數(shù)據(jù)是否是正確排序的數(shù)據(jù)包;根據(jù)判斷結果,將正確排序的數(shù)據(jù)包保存在維護的順序隊列中,以及將錯誤排序的數(shù)據(jù)包保存在維護的亂序隊列中;STG依次讀取順序隊列中的數(shù)據(jù)包,并向客戶端發(fā)送響應信息,其中所述響應信息用于指示客戶端發(fā)送數(shù)據(jù)包;若順序隊列中沒有新接收的數(shù)據(jù)包,則在亂序隊列中依次讀取按序排列的數(shù)據(jù)包并放置在順序隊列中,并向客戶端發(fā)送響應信息;以及在確定出待發(fā)送的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,向客戶端發(fā)送實時多媒體數(shù)據(jù)包;在預設時長內(nèi),判斷是否接收到客戶端發(fā)來的響應消息;根據(jù)判斷結果,STG調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小,通過調(diào)整后的發(fā)送窗口發(fā)送實時媒體數(shù)據(jù)。
[0018]采用上述技術方案,STG在確定出接收到的數(shù)據(jù)包類型是實時媒體數(shù)據(jù)時,判斷所述實時媒體數(shù)據(jù)是否是正確排序的數(shù)據(jù)包,并根據(jù)判斷結果,將正確排序的數(shù)據(jù)包保存在維護的順序隊列中,以及將錯誤排序的數(shù)據(jù)包保存在維護的亂序隊列中,在進行實時媒體數(shù)據(jù)包讀取時,首先讀取順序隊列中的數(shù)據(jù)包,若順序隊列中沒有新接收的數(shù)據(jù)包,則在亂序隊列中依次讀取按序排列的數(shù)據(jù)包并放置在順序隊列中,并向客戶端發(fā)送響應信息。相對現(xiàn)有技術來說,由于沒有回復重復ACK,因此發(fā)送實時媒體數(shù)據(jù)包的發(fā)送速率不會降低(例如減半),從而提高了實時媒體數(shù)據(jù)包的發(fā)送效率。
[0019]并且,STG在確定出待 發(fā)送的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,向客戶端發(fā)送實時多媒體數(shù)據(jù)包,在預設時長內(nèi),判斷是否接收到客戶端發(fā)來的響應消息,根據(jù)判斷結果,STG調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小。發(fā)送窗口的調(diào)整回根據(jù)響應消息進行適應性調(diào)整,與其他條件沒有關系,從而能夠較好地提升網(wǎng)絡的吞吐量,提升高實時媒體數(shù)據(jù)傳輸?shù)男省?br>
【專利附圖】
【附圖說明】
[0020]圖1a~圖1b為現(xiàn)有技術中,提出的部署NAT、防火墻及HTTP代理設備的系統(tǒng)結構圖;
[0021]圖1c為現(xiàn)有技術中,提出的實時媒體數(shù)據(jù)包封裝示意圖;
[0022]圖2為本發(fā)明實施例一中,提出的實時媒體數(shù)據(jù)傳輸系統(tǒng)結構圖;
[0023]圖3為本發(fā)明實施例二中,提出的實時媒體數(shù)據(jù)傳輸方法流程圖;
[0024]圖4為本發(fā)明實施例二中,提出的實時媒體數(shù)據(jù)傳輸裝置結構圖;
[0025]圖5為本發(fā)明實施例二中,提出的TCP數(shù)據(jù)包的格式示意圖;
[0026]圖6為本發(fā)明實施例二中,提出的實時媒體數(shù)據(jù)傳輸裝置結構圖;
[0027]圖7為本發(fā)明實施例三中,提出的實時媒體數(shù)據(jù)傳輸方法流程圖?!揪唧w實施方式】
[0028]針對現(xiàn)有技術中存在的實時媒體數(shù)據(jù)傳輸浪費系統(tǒng)資源,傳輸效率較低的問題,本發(fā)明實施例這里提出的技術方案,通過在安全穿越網(wǎng)關(STG, Security TraversingGateway)出增加傳輸實時媒體數(shù)據(jù)的功能,在接收實時媒體數(shù)據(jù)時,采用丟包忽略方式,而在發(fā)送實時媒體數(shù)據(jù)時,發(fā)送數(shù)據(jù)包的速度取決于接收方的緩存,從而使得網(wǎng)絡側(cè)的丟包不再影響發(fā)送窗口的大小,并且不需要對協(xié)議棧進行改造,易于實現(xiàn),較好地節(jié)省了系統(tǒng)資源,提高了實時媒體數(shù)據(jù)的傳輸效率。
[0029]下面將結合各個附圖對本發(fā)明實施例技術方案的主要實現(xiàn)原理、【具體實施方式】及其對應能夠達到的有益效果進行詳細地闡述。
[0030]實施例一
[0031]本發(fā)明實施例一這里提出一種實時媒體數(shù)據(jù)傳輸系統(tǒng),如圖2所示包括至少一個客戶端和至少一個STG,客戶端和STG之間既傳輸信令數(shù)據(jù)也傳輸實時媒體數(shù)據(jù)。其中:
[0032]所述客戶端,用于向STG發(fā)送實時媒體數(shù)據(jù)包,以及接收STG發(fā)來的實時媒體數(shù)據(jù)包,并向所述STG發(fā)送響應信息。
[0033]具體地,客戶端向STG發(fā)送實時媒體數(shù)據(jù)包,即STG接收實時媒體數(shù)據(jù),可以稱之為上行鏈路的實時媒體數(shù)據(jù)包傳輸,而客戶端接收STG發(fā)來的實時媒體數(shù)據(jù)包,即STG發(fā)送實時媒體數(shù)據(jù),可以稱之為下行鏈路的實時媒體數(shù)據(jù)包傳輸。其中客戶端向STG發(fā)送的是標準的基于TCP的 實時媒體數(shù)據(jù)包或者是基于UDP的數(shù)據(jù)包。
[0034]所述STG,具備上行鏈路的數(shù)據(jù)傳輸功能和/或下行鏈路的數(shù)據(jù)傳輸功能。本發(fā)明實施例一這里以STG同時具備上行上行鏈路的數(shù)據(jù)傳輸功能和下行鏈路的數(shù)據(jù)傳輸功能進行詳細闡述。在上行鏈路中,STG用于在確定出接收到的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,判斷所述實時媒體數(shù)據(jù)是否是正確排序的數(shù)據(jù)包;根據(jù)判斷結果,將正確排序的數(shù)據(jù)包保存在維護的順序隊列中,以及將錯誤排序的數(shù)據(jù)包保存在維護的亂序隊列中;STG依次讀取順序隊列中的數(shù)據(jù)包,并向客戶端發(fā)送響應信息,其中所述響應信息用于指示客戶端發(fā)送數(shù)據(jù)包;若順序隊列中沒有新接收的數(shù)據(jù)包,則在亂序隊列中依次讀取按序排列的數(shù)據(jù)包并放置在順序隊列中,并向客戶端發(fā)送響應信息。
[0035]在下行鏈路中,STG用于在確定出待發(fā)送的數(shù)據(jù)包類型是基于TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,向客戶端發(fā)送實時多媒體數(shù)據(jù)包,在預設時長內(nèi),判斷是否接收到客戶端發(fā)來的響應消息;根據(jù)判斷結果,STG調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小。
[0036]其中,本發(fā)明實施例一這里提出的實時媒體數(shù)據(jù)傳輸系統(tǒng),具體實施中,系統(tǒng)中包含的所有客戶端可以均位于NAT/FW/HTTP代理設備后,即通過STG設備與MS核心網(wǎng)連接,也可以是一部分客戶端位于NAT/FW/HTTP代理設備后,而另一部分客戶端直接與MS核心網(wǎng)連接。
[0037]具體地,本發(fā)明實施例這里提出的技術方案中,STG可以作為實時媒體數(shù)據(jù)傳輸系統(tǒng)中的一個獨立組成設備,也可以是集成在SBC設備中的一個模塊。
[0038]實施例二
[0039]基于上述實施例一提出的實時媒體數(shù)據(jù)傳輸系統(tǒng)的系統(tǒng)架構,本發(fā)明實施例一這里以兩個客戶端,兩個STG設備為例來詳細闡述實時媒體數(shù)據(jù)傳輸方法。
[0040]需要說明的是,本發(fā)明實施例二這里提出的STG既具有上行鏈路和/或下行鏈路的數(shù)據(jù)傳輸功能,為便于闡述,本發(fā)明實施例二這里以兩個STG為例來進行詳細闡述,其中,STGl具備上行鏈路的數(shù)據(jù)傳輸功能,用于接收客戶端Clientl發(fā)送的實時媒體數(shù)據(jù)包,STG2具備下行鏈路的數(shù)據(jù)傳輸功能,用于向客戶端Client2發(fā)送實時媒體數(shù)據(jù)包,STGl和STG2之間通過MS核心網(wǎng)絡進行連接,傳輸實時媒體數(shù)據(jù)包。其中,Clientl位于STGl之后,即Clientl通過STGl和MS核心網(wǎng)絡進行連接向Client2發(fā)送實時媒體數(shù)據(jù)包,Client2位于STG2之后,即Client2通過STG2和MS核心網(wǎng)絡進行連接,接收Clientl發(fā)送的實時媒體數(shù)據(jù)包。如圖3所示,其具體處理流程如下述:
[0041]步驟201,STGl接收Clientl發(fā)來的數(shù)據(jù)包。
[0042]其中,在數(shù)據(jù)傳輸層,Clientl按照順序向STGl按照順序發(fā)送數(shù)據(jù)包,Clientl發(fā)送的數(shù)據(jù)包類型可以但不限于是基于TCP的數(shù)據(jù)包或者是基于UDP的數(shù)據(jù)包。
[0043]步驟202,STGl判斷接收到的數(shù)據(jù)包類型是否是基于TCP傳輸?shù)膶崟r媒體數(shù)據(jù)包,在判斷結果為是時,執(zhí)行步驟203,反之,正常傳輸接收到的數(shù)據(jù)包。
[0044]步驟203,STGl在確定出接收到的數(shù)據(jù)包類型是基于TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,判斷所述實時媒體數(shù)據(jù)是否是正確排序的數(shù)據(jù)包。
[0045]其中,STGl可以根據(jù)接收到的實時媒體數(shù)據(jù)包的序號,確定所述實時媒體數(shù)據(jù)包是否是按序到達,如果是,確定所述實時媒體數(shù)據(jù)是正確排序的數(shù)據(jù)包,如果否,確定所述實時媒體數(shù)據(jù)是錯誤排序的數(shù)據(jù)包。
[0046]具體地,STGl接收到Clientl發(fā)來的實時媒體數(shù)據(jù)包之后,通過查詢基于TCP的實時媒體數(shù)據(jù)包包頭的序號,來判斷實時媒體數(shù)據(jù)包是否是按照順序到達的。
[0047]步驟204,根據(jù)判斷結果,將正確排序的數(shù)據(jù)包保存在維護的順序隊列中,以及將錯誤排序的數(shù)據(jù)包保存在維護的亂序隊列中。
[0048]其中,在STGl的傳輸層可以維護兩個隊列,即順序隊列和亂序隊列。根據(jù)步驟203中的判斷結果,如果實時媒體數(shù)據(jù)包是按照順序到達的,則將該實時媒體數(shù)據(jù)包保存在維護的順序隊列中,并且,下一數(shù)據(jù)包接收指針Rcv_next_ptr指向該保存的實時媒體數(shù)據(jù)包之后,較佳地,還可以向Clientl發(fā)送響應信息ACK,Clientl在接收到ACK之后,會繼續(xù)發(fā)送新的實時媒體數(shù)據(jù)包。如果實時媒體數(shù)據(jù)包是亂序到達的,則將該實時媒體數(shù)據(jù)包保存在維護的亂序隊列中,并向Cl ient I回復ACK,該ACK與上一個ACK的內(nèi)容相同,客戶端統(tǒng)計重復接收到的ACK的數(shù)量信息,當超過三個時,即某一實時媒體數(shù)據(jù)包需要進行三次重發(fā)時,將該ACK對應的實時媒體數(shù)據(jù)包丟棄,并將發(fā)送窗口減小至原來的二分之一,通過減小后的發(fā)送窗口繼續(xù)發(fā)送實時媒體數(shù)據(jù)包。
[0049]步驟205,STGl依次讀取順序隊列中存儲的實時媒體數(shù)據(jù)包,并向客戶端發(fā)送響應信息,其中所述響應信息用于指示客戶端發(fā)送數(shù)據(jù)包。
[0050]其中在實時媒體數(shù)據(jù)包傳輸時,STGl依次讀取順序隊列中存儲的實時媒體數(shù)據(jù)包,在讀取后,讀取指針ReacLptr會依次指向順序隊列中的下一個將要讀取的實時媒體數(shù)據(jù)包。例如,假設順序隊列中共有三個實時媒體數(shù)據(jù)包,分別標識為Tl,T2和T3,如果Tl正在被讀取,則Read_ptr指針指向下一個要被讀取的實時媒體數(shù)據(jù)包T2。
[0051]步驟206,若順序隊列中沒有新接收的數(shù)據(jù)包,則在亂序隊列中依次讀取按序排列的數(shù)據(jù)包并放置在順序隊列中,并向客戶端發(fā)送響應信息。
[0052]其中,假設亂序隊列中依次存儲著數(shù)據(jù)包T4和T5,當順序隊列中沒有新接收的數(shù)據(jù)包時,則在亂序隊列中獲得數(shù)據(jù)包T4,將數(shù)據(jù)包T4放置在順序隊列中,并且,Rcv_next_Ptr和ReacLptr同時指向順序隊列中最新接收到的實時媒體數(shù)據(jù)包。例如,將T4放置在順序隊列中,STGl讀取T4,并且向Clientl回復正確讀取數(shù)據(jù)包的ACK,指示Clientl發(fā)送實時媒體數(shù)據(jù)包,Clientl在接收到ACK后,會繼續(xù)發(fā)送實時媒體數(shù)據(jù)包T6,STG1將接收到的T6存儲到順序隊列中,此時Rcv_next_ptr和Read_ptr同時指向T6,STG1在讀取T4之后,會讀取接收到的T6。
[0053]較佳地,在上述步驟206之后,還可以包括:
[0054]若STG在設定時長內(nèi)未接收到客戶端發(fā)來的數(shù)據(jù)包,則重新發(fā)送響應信息,指示客戶端發(fā)送數(shù)據(jù)包。[0055]可以在STGl的應用層設置一個定時器,并將該定時器周期性啟動,如果定時器超時時,STGl還沒有接收到Clientl發(fā)送的實時媒體數(shù)據(jù)包,則可以指示傳輸層發(fā)送重復的ACK,指示Clientl發(fā)送實時媒體數(shù)據(jù)包。
[0056]具體實施中,采用本發(fā)明實施例這里提出的技術方案,STG沒有收到任何實時媒體數(shù)據(jù)包時,不會回復響應消息ACK,或者是回復的響應消息ACK丟失??梢缘幌抻诎ㄏ率鰞煞N情況:
[0057]第一種情況:STG支持周期性發(fā)送心跳消息,如果到達規(guī)定時間后STG還未收到客戶端發(fā)來的新實時媒體數(shù)據(jù)包,則可以發(fā)送心跳消息(例如發(fā)送重復的ACK)。
[0058]第二種情況:在STG處設置定時器,超時后重新發(fā)送重復的響應消息ACK,并等待客戶端發(fā)送的實時媒體數(shù)據(jù)包的到來。
[0059]第三種情況:通過在客戶端設置的定時器,當客戶端設置的定時器超時后,則將發(fā)送速率減半并重傳未被確認的實時媒體數(shù)據(jù)包。
[0060]上述過程是STG接收Client發(fā)送的實時媒體數(shù)據(jù)包并進行讀取的處理過程,在整個處理過程中,STG收到正確排序的數(shù)據(jù)包,則實時與現(xiàn)有技術中相同的處理方案,對當前實時媒體數(shù)據(jù)包進行確認或?qū)η皫讉€實時媒體數(shù)據(jù)包進行一并確認,同時發(fā)送響應信息ACK給客戶端,請求發(fā)送端發(fā)送新的數(shù)據(jù)包。并且STG將正常順序的實時媒體數(shù)據(jù)包就放置在順序隊列中,將亂序到達的實時媒體數(shù)據(jù)包放置亂序隊列中,在進行實時媒體數(shù)據(jù)包讀取時,若順序隊列中沒有新的數(shù)據(jù)包,則將亂序隊列中取出從第一個開始的順序排列的實時媒體數(shù)據(jù)包放置在順序隊列中,并且rcV_next_ptr指針跳過前面沒有正常接收的實時媒體數(shù)據(jù)包并回復ACK請求下一個實時媒體數(shù)據(jù)包。由于沒有回復重復ACK,因此發(fā)送實時媒體數(shù)據(jù)包的發(fā)送速率不會降低(例如減半),從而提高了實時媒體數(shù)據(jù)包的發(fā)送效率。只有STG未讀取數(shù)據(jù),STG回復重復ACK或客戶端發(fā)送實時媒體數(shù)據(jù)包超時時,實時媒體數(shù)據(jù)包重傳,則發(fā)送實時媒體數(shù)據(jù)包的發(fā)送速率減半,而此時,由于在STG中維護順序隊列(即相當于設置了實時媒體數(shù)據(jù)播放緩沖區(qū)),因此不會影響用戶感知。
[0061]相應地,本發(fā)明實施二這里還提出一種實時媒體數(shù)據(jù)傳輸裝置,如圖4所示,包括:
[0062]判斷單元301,在確定出接收到的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,判斷所述實時媒體數(shù)據(jù)是否是正確排序的數(shù)據(jù)包。
[0063]保存單元302,用于根據(jù)判斷結果,將正確排序的數(shù)據(jù)包保存在維護的順序隊列中,以及將錯誤排序的數(shù)據(jù)包保存在維護的亂序隊列中。[0064]發(fā)送單元303,用于讀取順序隊列中的數(shù)據(jù)包,并向客戶端發(fā)送響應信息,其中所述響應信息用于指示客戶端發(fā)送數(shù)據(jù)包;若順序隊列中沒有新接收的數(shù)據(jù)包,則在亂序隊列中依次讀取按序排列的數(shù)據(jù)包并放置在順序隊列中,并向客戶端發(fā)送響應信息。
[0065]具體地,上述發(fā)送單元303,還用于若在設定時長內(nèi)未接收到客戶端發(fā)來的數(shù)據(jù)包,則重新發(fā)送響應信息,指示客戶端發(fā)送數(shù)據(jù)包。
[0066]如圖3所示,在STGl接收到實時媒體數(shù)據(jù)包之后,通過MS核心網(wǎng)發(fā)送給STG2,由STG2將實時媒體數(shù)據(jù)包發(fā)送給客戶端Client2。具體處理過程如下述:
[0067]步驟401,STG在確定出待發(fā)送的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,向客戶端發(fā)送實時多媒體數(shù)據(jù)包。
[0068]具體地,STG2判斷待發(fā)送給Client2的數(shù)據(jù)包類型是否是實時媒體數(shù)據(jù),如果是,則向Client2發(fā)送實時多媒體數(shù)據(jù)包。
[0069]步驟402,在預設時長內(nèi),判斷是否接收到客戶端發(fā)來的響應消息。
[0070]步驟403,根據(jù)判斷結果,STG調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小,并通過調(diào)整后的發(fā)送窗口發(fā)送實時媒體數(shù)據(jù)包。
[0071]其中,若在預設時長內(nèi),接收到客戶端發(fā)來的響應消息,確定所述響應消息是否是正常響應消息,如果是,且重復接收到的響應信息數(shù)量小于預設數(shù)值,確定所述接收響應消息中包含的通告窗口信息,其中所述通告窗口信息是客戶端的緩存空間剩余容量信息,并將發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小調(diào)整至與確定出的通告窗口信息相同;如果否,且重復接收到的響應消息 數(shù)量大于預設數(shù)值,重新發(fā)送與所述響應消息對應的實時媒體數(shù)據(jù)包,并將發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小調(diào)整至與確定出的通告窗口信息相同;若在預設時長內(nèi)未收到客戶端發(fā)來的響應消息,STG重新發(fā)送最后一個實時媒體數(shù)據(jù)包,并將發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小調(diào)整為原來的二分之一。
[0072]具體地,通告窗口信息是接收方(例如本發(fā)明實施例這里的客戶端)回復的響應信息ACK里所攜帶的內(nèi)容,為接收端的緩存空間剩余大小,即默認的緩存空間大小和接收端收到的且還未遞交給應用層的數(shù)據(jù)之間的差值。
[0073]具體實施中,STG2向Client2發(fā)送實時媒體數(shù)據(jù)包之后,具體處理情況可以但不限于是下述幾種:
[0074]第一種情況:Client2在正確接收到該實時媒體數(shù)據(jù)包之后,會向STG2發(fā)送響應消息ACK0,是STG2在接收到Client2反饋的正常響應消息ACKO之后,會根據(jù)ACKO中包含的通告窗口信息,調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口,通過調(diào)整后的發(fā)送窗口繼續(xù)向Client2發(fā)送實時媒體數(shù)據(jù)包。其中,通告窗口默認值可以為64kb。
[0075]第二種情況:STG2向Client2發(fā)送實時媒體數(shù)據(jù)包之后,如果重復接收到Client2反饋的響應消息ACK0,且重復接收的數(shù)量小于預設數(shù)值,例如3個,繼續(xù)傳輸新的實時媒體數(shù)據(jù)包,并且根據(jù)重復重復接收到的響應消息ACKO中包含的通告窗口信息,來調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口,通過調(diào)整后的發(fā)送窗口繼續(xù)向Client2發(fā)送實時媒體數(shù)據(jù)包。
[0076]第三種情況:STG2向Client2發(fā)送實時媒體數(shù)據(jù)包之后,如果重復接收到Client2反饋的響應消息ACK0,且重復接收的數(shù)量大于預設數(shù)值,例如3個,則STG2重新發(fā)送該重復接收到的響應消息ACKO對應的實時媒體數(shù)據(jù)包,并且根據(jù)重復重復接收到的響應消息ACKO中包含的通告窗口信息,來調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口,通過調(diào)整后的發(fā)送窗口繼續(xù)向Client2發(fā)送實時媒體數(shù)據(jù)包。
[0077]第四種情況:如果STG2在預設時長內(nèi)沒有收到Client2反饋的響應消息ACK0,則STG2向Client2再次發(fā)送最后一次發(fā)送的實時媒體數(shù)據(jù)包,并調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口,將發(fā)送窗口調(diào)整至先前的二分之一,通過調(diào)整后的發(fā)送窗口繼續(xù)發(fā)送實時媒體數(shù)據(jù)包。
[0078]上 述下行鏈路的實時媒體數(shù)據(jù)傳輸過程中,STG本地緩存基于TCP傳輸?shù)膶崟r媒體數(shù)據(jù)包,在接收到客戶端的正常響應消息ACK時,發(fā)送新的實時媒體數(shù)據(jù)包,當接收到客戶端發(fā)來的的三個重復的響應消息ACK或STG的定時器超時時,則會迅速從本地重傳實時媒體數(shù)據(jù)包,并且發(fā)送窗口始終等于接收方的通告窗口的大小。其中,基于TCP傳輸?shù)膶崟r媒體數(shù)據(jù)包包頭格式如圖5所示,Window部分即為通告窗口大小。STG收到數(shù)據(jù)包之后,查看ACK似是否為I,如果是,將發(fā)送窗口調(diào)至通告窗口大小。
[0079]相應地,本發(fā)明實施例這里還提出一種實時媒體數(shù)據(jù)傳輸裝置,如圖6所示,包括:
[0080]發(fā)送單元501,用于在確定出待發(fā)送的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,向客戶端發(fā)送實時多媒體數(shù)據(jù)包。
[0081]判斷單元502,用于在預設時長內(nèi),判斷是否接收到客戶端發(fā)來的響應消息。
[0082]調(diào)整單元503,用于根據(jù)判斷結果,STG調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小。
[0083]具體地,上述調(diào)整單元503,具體用于若在預設時長內(nèi),接收到客戶端發(fā)來的響應消息,確定所述響應消息是否是正常響應消息,如果是,且重復接收到的響應消息數(shù)量小于預設數(shù)值,確定所述接收響應消息中包含的通告窗口信息,其中所述通告窗口信息是客戶端的緩存空間剩余容量信息,并將發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小調(diào)整至與確定出的通告窗口信息相同;如果否,且重復接收到的響應消息數(shù)量大于預設數(shù)值,重新發(fā)送與所述響應信息對應的實時媒體數(shù)據(jù)包,并將發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小調(diào)整至與確定出的通告窗口信息相同;若在預設時長內(nèi)未收到客戶端發(fā)來的響應消息,STG重新發(fā)送最后一個實時媒體數(shù)據(jù)包,并將發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小調(diào)整為原來的二分之一。
[0084]實施例三
[0085]基于上述實施例一闡述的系統(tǒng)架構,本發(fā)明實施例三這里提出一種實時媒體數(shù)據(jù)傳輸方法。
[0086]需要說明的是,本發(fā)明實施例三這里提出的STG既具有上行鏈路和/或下行鏈路的數(shù)據(jù)傳輸功能,為便于闡述,本發(fā)明實施例三這里以兩個客戶端、一個STG為例來進行詳細闡述,其中,STG具備上行鏈路的數(shù)據(jù)傳輸功能,用于接收客戶端Clientl發(fā)送的實時媒體數(shù)據(jù)包,通過IMS核心網(wǎng)向客戶端Client2發(fā)送實時媒體數(shù)據(jù)包。其中,Clientl位于STG之后,即Clientl通過STG和MS核心網(wǎng)絡進行連接向Client2發(fā)送實時媒體數(shù)據(jù)包,Client2側(cè)傳輸數(shù)據(jù)時則不需要進行穿越防火墻或者代理設備。如圖7所示,具體處理過程如下述:
[0087]步驟70廣步驟706,STG接收Clientl發(fā)來的數(shù)據(jù)包,并在確定數(shù)數(shù)據(jù)包類型是實時媒體數(shù)據(jù)之后,采用本發(fā)明實施例這里提出的實時媒體數(shù)據(jù)傳輸方法。[0088]其中,Clientl和STG之間的實時媒體數(shù)據(jù)傳輸方法,請參見上述實施例二中步驟20廣步驟206中的詳細闡述,這里不再贅述。
[0089]步驟707,在下行鏈路中,Client2側(cè)在進行數(shù)據(jù)傳輸時,不需要穿越防火墻或代理設備,因此,在Client2側(cè),設置在SBC中的STG與Client2之間進行數(shù)據(jù)傳輸是,可以基于UDP進行數(shù)據(jù)傳輸。
[0090]本領域的技術人員應明白,本發(fā)明的實施例可提供為方法、裝置(設備)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0091]本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、裝置(設備)和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0092]這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0093]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0094]盡管已描述了本發(fā)明的優(yōu)選實施例,但本領域內(nèi)的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
[0095]顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
【權利要求】
1.一種實時媒體數(shù)據(jù)傳輸方法,其特征在于,包括: 安全穿越網(wǎng)關STG在確定出接收到的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,判斷所述實時媒體數(shù)據(jù)是否是正確排序的數(shù)據(jù)包; 根據(jù)判斷結果,將正確排序的數(shù)據(jù)包保存在維護的順序隊列中,以及將錯誤排序的數(shù)據(jù)包保存在維護的亂序隊列中; STG依次讀取順序隊列中的數(shù)據(jù)包,并向客戶端發(fā)送響應信息,其中所述響應信息用于指示客戶端發(fā)送數(shù)據(jù)包; 若順序隊列中沒有新接收的數(shù)據(jù)包,則在亂序隊列中依次讀取按序排列的數(shù)據(jù)包并放置在順序隊列中,并向客戶端發(fā)送響應信息。
2.如權利要求1所述的方法,其特征在于,還包括: 若STG在設定時長內(nèi)未接收到客戶端發(fā)來的數(shù)據(jù)包,則重新發(fā)送響應信息,指示客戶端發(fā)送數(shù)據(jù)包。
3.如權利要求1所述的方法,其特征在于,判斷所述實時媒體數(shù)據(jù)是否是正確排序的數(shù)據(jù)包,包括: 根據(jù)接收到的實時媒體數(shù)據(jù)包的序號,確定所述實時媒體數(shù)據(jù)包是否是按序到達,如果是,確定所述實時媒體數(shù)據(jù)是正確排序的數(shù)據(jù)包,如果否,確定所述實時媒體數(shù)據(jù)是錯誤排序的數(shù)據(jù)包。
4.一種實時媒體數(shù)據(jù)傳輸方法,其特征在于,包括: 安全穿越網(wǎng)關STG在確定出待發(fā)送的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,向客戶端發(fā)送實時多媒體數(shù)據(jù)包; 在預設時長內(nèi),判斷是否接收到客戶端發(fā)來的響應消息; 根據(jù)判斷結果,STG調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大??; 通過調(diào)整后的發(fā)送窗口發(fā)送實時媒體數(shù)據(jù)。
5.如權利要求4所述的方法,其特征在于,根據(jù)判斷結果,STG調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小,包括: 若在預設時長內(nèi),接收到客戶端發(fā)來的響應消息,確定所述響應消息是否是正常響應消息,如果是,且重復接收到的響應消息數(shù)量小于預設數(shù)值,確定所述接收響應消息中包含的通告窗口信息,其中所述通告窗口信息是客戶端的緩存空間剩余容量信息,并將發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小調(diào)整至與確定出的通告窗口信息相同;如果否,且重復接收到的響應信息數(shù)量大于預設數(shù)值,重新發(fā)送與所述響應消息對應的實時媒體數(shù)據(jù)包,并將發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小調(diào)整至與確定出的通告窗口信息相同; 若在預設時長內(nèi)未收到客戶端發(fā)來的響應消息,STG重新發(fā)送最后一個實時媒體數(shù)據(jù)包,并將發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小調(diào)整為原來的二分之一。
6.一種實時媒體數(shù)據(jù)傳輸裝置,其特征在于,包括: 判斷單元,在確定出接收到的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,判斷所述實時媒體數(shù)據(jù)是否是正確排序的數(shù)據(jù)包; 保存單元,用于根據(jù)判斷結果,將正確排序的數(shù)據(jù)包保存在維護的順序隊列中,以及將錯誤排序的數(shù)據(jù)包保存在維護的亂序隊列中; 發(fā)送單元,用于讀取順序隊列中的數(shù)據(jù)包,并向客戶端發(fā)送響應信息,其中所述響應信息用于指示客戶端發(fā)送數(shù)據(jù)包;若順序隊列中沒有新接收的數(shù)據(jù)包,則在亂序隊列中依次讀取按序排列的數(shù)據(jù)包并放置在順序隊列中,并向客戶端發(fā)送響應信息。
7.如權利要求6所述的裝置,其特征在于,所述發(fā)送單元,還用于若在設定時長內(nèi)未接收到客戶端發(fā)來的數(shù)據(jù)包,則重新發(fā)送響應信息,指示客戶端發(fā)送數(shù)據(jù)包。
8.一種實時媒體數(shù)據(jù)傳輸裝置,其特征在于,包括: 發(fā)送單元,用于在確定出待發(fā)送的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,向客戶端發(fā)送實時多媒體數(shù)據(jù)包; 判斷單元,用于在預設時長內(nèi),判斷是否接收到客戶端發(fā)來的響應消息; 調(diào)整單元,用于根據(jù)判斷結果,STG調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大?。? 所述發(fā)送單元,還用于通過調(diào)整后的發(fā)送窗口發(fā)送實時媒體數(shù)據(jù)。
9.如權利要求8所述的裝置,其特征在于,所述調(diào)整單元,具體用于若在預設時長內(nèi),接收到客戶端發(fā)來的響應消息,確定所述響應消息是否是正常響應消息,如果是,且重復接收到的響應消息數(shù)量小于預設數(shù)值,確定所述接收響應消息中包含的通告窗口信息,其中所述通告窗口信息是客戶端的緩存空間剩余容量信息,并將發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小調(diào)整至與確定出的通告窗口信息相同;如果否,且重復接收到的響應信息數(shù)量大于預設數(shù)值,重新發(fā)送與所述響應消息對應的實時媒體數(shù)據(jù)包,并將發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小調(diào)整至 與確定出的通告窗口信息相同;若在預設時長內(nèi)未收到客戶端發(fā)來的響應消息,STG重新發(fā)送最后一個實時媒體數(shù)據(jù)包,并將發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小調(diào)整為原來的二分之一。
10.一種實時媒體數(shù)據(jù)傳輸系統(tǒng),其特征在于,包括至少一個客戶端和至少一個安全穿越網(wǎng)關STG,其中 所述客戶端,用于向STG發(fā)送實時媒體數(shù)據(jù)包,以及接收STG發(fā)來的實時媒體數(shù)據(jù)包,并向所述STG發(fā)送響應信息; 所述STG,用于在確定出接收到的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,判斷所述實時媒體數(shù)據(jù)是否是正確排序的數(shù)據(jù)包;根據(jù)判斷結果,將正確排序的數(shù)據(jù)包保存在維護的順序隊列中,以及將錯誤排序的數(shù)據(jù)包保存在維護的亂序隊列中;STG依次讀取順序隊列中的數(shù)據(jù)包,并向客戶端發(fā)送響應信息,其中所述響應信息用于指示客戶端發(fā)送數(shù)據(jù)包;若順序隊列中沒有新接收的數(shù)據(jù)包,則在亂序隊列中依次讀取按序排列的數(shù)據(jù)包并放置在順序隊列中,并向客戶端發(fā)送響應信息;以及在確定出待發(fā)送的數(shù)據(jù)包類型是基于傳輸控制協(xié)議TCP傳輸?shù)膶崟r媒體數(shù)據(jù)時,向客戶端發(fā)送實時多媒體數(shù)據(jù)包;在預設時長內(nèi),判斷是否接收到客戶端發(fā)來的響應消息;根據(jù)判斷結果,STG調(diào)整發(fā)送實時媒體數(shù)據(jù)包的發(fā)送窗口的大小,通過調(diào)整后的發(fā)送窗口發(fā)送實時媒體數(shù)據(jù)。
【文檔編號】H04L12/861GK103905331SQ201210576431
【公開日】2014年7月2日 申請日期:2012年12月26日 優(yōu)先權日:2012年12月26日
【發(fā)明者】彭晉, 李牧, 陸璐, 鄧靈莉, 宋月 申請人:中國移動通信集團公司