新四季網

基於nat的udp流媒體伺服器的網關穿透方法

2023-06-12 11:32:21

專利名稱:基於nat的udp流媒體伺服器的網關穿透方法
技術領域:
本發明屬於網絡多媒體技術領域,涉及一種基於NAT的UDP流媒體伺服器的網關穿透方法。具體地說,主要涉及在網絡多媒體中,使流媒體伺服器ClearServer可以識別內網客戶端的IP(網絡協議)地址和埠號,將伺服器端的多媒體數據能夠順利發送到客戶端的方法,從而實時有效的在網際網路中傳送多媒體信息。
背景技術:
流媒體(Media Streaming)技術是指支持多媒體數據流通過網絡從伺服器向客戶端傳送,接收方邊接收邊播放的技術。流媒體應用通常要求視頻和音頻連續、清晰和實時地播放,這就對網絡服務提出了要求1)必須實時傳輸數據,僅能夠容忍少量的延遲(數百毫秒);2)傳送數據相對可靠,容忍一定數量的數據丟失;3)確保一定的帶寬,以保證傳輸的數據量能夠實時地播放。
Internet(網際網路)給網絡應用程式提供兩種服務TCP(傳輸控制協議)和UDP(用戶數據報協議)。TCP通過確認和重傳機制保證數據無錯順序地傳送,同時採用擁塞控制策略和發送速率控制解決傳輸中的擁塞問題以及發送速率與接受速率不匹配問題。但是TCP採用上述控制策略的時候卻犧牲了數據的傳輸速度,所以對於傳輸數據量較大的流媒體應用來說,採用TCP傳輸難以保證數據傳輸的實時性。而UDP傳輸方式沒有TCP的擁塞控制和發送速率控制,也沒有提供數據傳輸的可靠性保證,但是卻保證了傳輸的速度,滿足了流媒體應用中的關鍵因素——實時性,所以越來越被流媒體應用系統所採納。
ClearServer是一種新興的UDP流媒體伺服器,實現了視頻質量和發送速率的控制以及符合工業標準的擁塞控制以此大幅度的提高流媒體服務質量,並有自適應網絡帶寬的傳輸功能,可按網絡實際狀況調節媒體傳輸碼率,解決了流媒體傳輸中的時延問題,即採用UDP傳輸協議能夠獲得較高的傳輸率。ClearServer伺服器端接收到包含客戶端請求信息的RTSP(Real Time Streaming Protocol實時流協議)數據包請求之後,解析數據包取得客戶端的IP位址和埠號,根據取得的客戶端IP位址和埠號,將客戶請求的多媒體數據發送到客戶端。但是,這種接收和發送機制存在這樣的一個問題如果一臺intranet(內網)機器在點播ClearServer的時候,由於內網機器IP位址對於普通的Internet上的機器而言是不可知的,即對於流媒體伺服器ClearServer來說,包含客戶端請求信息的RTSP數據包中的IP位址和埠號是不可識別的,根據這個數據包中的IP位址和埠號,ClearServer無法將客戶端請求的流媒體數據發到客戶端。
由於UDP傳輸協議是一個面向無連接的服務,即沒有在兩個進程之間建立連接的初始「握手」階段,所以在一個進程想要往另一個進程發送一批字節的時候,發送方進程必須將目的進程的地址加入到發送的字節中。當點播ClearServer的時候,客戶端發送的RTSP請求字節中包含客戶端的IP位址和埠號信息。當RTSP請求到達ClearServer後,ClearServer將它解析,得到客戶端的IP位址和埠號信息,然後伺服器回應客戶端的RTSP請求。在向客戶端發送UDP流媒體數據之前,先對要發送的流媒體數據進行「包裝」,以解析RTSP請求所得的客戶端IP位址和埠為發送目的地,然後將UDP數據包發出。
在內網中,任何一臺計算機的IP位址僅僅是一個臨時的IP位址,即內網外部的機器無法識別這個IP位址。所以內網的某臺計算機點播ClearServer伺服器的時候,客戶端發送到伺服器端的分組中包含的IP位址實際上「虛擬」的,以這個IP位址為發送目的地的UDP數據包無法到達客戶端。所以,必須找出一種方法,找到內網客戶端的「地址」,使得伺服器端能夠根據這個「地址」能找到客戶端,從而將流媒體數據發送到客戶端。

發明內容
本發明的目的在於提供一種使流媒體伺服器Clear Media Server可以識別內網客戶端的IP位址和埠號,將伺服器端的多媒體數據順利發送到客戶端的方法,我們稱其為ClearNat方法。目前網絡上運行的網關普遍都提供NAT服務,即網絡地址轉換。本發明適用於穿透提供NAT服務的網關,以下稱之為NAT伺服器。本方法需要為內網的機器的客戶端建立內網IP位址、埠與NAT伺服器IP位址、埠的映射,以使流媒體伺服器ClearServer能將媒體數據穿透NAT伺服器發送到內網機器的播放器上。該方法的計算複雜度較低,效果好,對主控伺服器的其他應用進程沒有影響,且在流媒體伺服器ClearServer中能支持大的內網並發用戶的使用。
對於流媒體伺服器來說處於內網的客戶端所在計算機的IP位址、埠是不可見的,也就是說,通過RTSP交互,伺服器ClearServer得到的內網IP位址、埠其實是不可用的,即無法將點播節目的UDP數據包發送到處於內網的客戶端。而網關提供的NAT服務使得伺服器有途經正確得發送UDP數據包。當內網的計算機向外網發送UDP數據包時,NAT伺服器會記錄內網計算機的IP位址、埠(記為A、B),並在NAT伺服器上隨即選擇一個埠C,轉發從內網發送過來的UDP數據包,並將NAT伺服器上的埠C與內網IP位址A、埠B組成一個映射,此後,從外網發回給NAT伺服器埠C的UDP數據包都會被轉發到內網IP位址A的埠B。因此,只要UDP流媒體伺服器將數據包發向NAT伺服器上正確的埠,那麼UDP數據包就能夠被轉發到處於內網的客戶端。關鍵在於,要讓UDP流媒體伺服器ClearServer建立內網IP位址、埠與NAT伺服器IP位址、埠的映射。通過運行在客戶端與伺服器端兩方的程序的配合,能夠做到這一點,這也就是ClearNat方法的基本原理。據此,稱本發明為基於NAT的UDP流媒體伺服器的網關穿透方法。
本發明的具體工作步驟如下首先,需要一個OCX(ActiveX控制項)運行在客戶端瀏覽的點播網頁上。當用戶點擊網頁上的點播連結後,由網頁告知OCX,用戶名信息、用戶點播影片名信息和流媒體伺服器ClearServer的IP位址。OCX根據這些信息構建UDP數據包,其中數據段的內容包括用戶的內網IP位址、內網UDP接收埠和點播的節目名。內網UDP接收埠其實就是用戶的視頻播放器等待接收UDP數據包的埠,OCX可以根據不同播放器的不同配置來動態決定埠號(在RTSP協議下,通常為4個連續的埠)。UDP數據包構建完成後,發送到流媒體伺服器ClearServer的IP位址(實際實現中約定埠8888,非強制)。每個UDP數據包對應一個埠映射,四個連續的埠映射形成一組。
然後,ClearServer伺服器端有一個clearnat進程,負責接收和處理OCX發送過來UDP數據包。在收到一個UDP數據包後,先解析UDP協議頭部,獲得UDP數據包來源的IP位址和埠,也就是NAT伺服器的IP位址和埠。接著解析UDP數據段,獲得用戶的內網IP位址和埠(用戶名和節目名是用於判斷這個UDP數據包是否反映了最新的信息,以防止產生重複和錯誤的映射關係)。再將NAT伺服器的IP位址和埠與內網IP位址和埠組成一對埠映射關係,並記錄下來,然後接著接收下一個UDP數據包。當集齊4個連續的埠映射後,就把它們作為一組完整的埠映射關係,並將完整的每一組映射關係,通過IPC(進程間通信)方式傳遞給ClearServer的主控伺服器。主控伺服器接收映射關係組,並保存在關係組記錄表中。
最後,當ClearServer主控伺服器需要向客戶端發送UDP數據包的時候,先去查看映射關係組記錄表。對於來自於內網的客戶端點播,伺服器就用映射關係中的NAT地址、埠替換掉客戶端所在計算機的內網IP位址、埠。即,以NAT IP位址、埠作為UDP數據包的發送目的地。
這樣,ClearServer實際上就會向NAT伺服器發送UDP數據包,而當數據包到達NAT伺服器後,就會被正確得轉發到處於內網的客戶端。讓內網用戶也能享受視頻點播的服務。


圖1是本發明的方法結構圖。
圖2是OCX的工作流程圖。
圖3是clearnat進程的工作流程圖。
圖4是主控伺服器中處理映射關係並進行地址埠替換的功能模塊的工作流程圖。
具體實施例方式
為了解決現有技術中的問題,本發明提供了一種新穎的使UDP數據包順利穿透網關(NAT伺服器)的方法,即ClearNat方法,參見圖1。圖1描述的是ClearNat方法的結構。圖中圓圈的標號反映的是數據流程的順序。IP位址和埠僅僅是示例性的。
下面詳細說明ClearNat方法的工作流程。
第一,本發明需要在內網客戶端的點播網頁上運行一個OCX。OCX的工作流程參見圖2。當用戶進行VOD(Video On Demand)點播時,首先會點擊視頻點播網頁上某一個節目的連結。這樣,網頁就會把一些必要的信息傳遞給在網頁上運行的OCX,對應圖中步驟202。信息包括用戶名、點播的節目名和點播伺服器ClearServer的IP位址。OCX接收到這些信息後,就到了步驟204。OCX需要確定本機播放器監聽接收UDP視頻數據的埠。一般而言,對於Apple公司的QuickTime Player,會以6970為起始,每4個連續的埠為一個播放器工作。例如,一臺計算機上,第一個QuickTime Player使用埠6970-6973,第二個QuickTime Player使用埠6974-6977,以此類推。對於MicroSoft公司的WindowsMedia Player,可以為它指定接收UDP視頻數據的埠,OCX每次動態地選擇一組空閒的埠供Windows Media Player使用。這樣,OCX就根據用戶使用的播放器確定本機UDP數據接收埠,並綁定。接著進入步驟206,OCX將確定的本機埠號,連同本機IP位址、用戶名、點播節目名寫入UDP數據包的數據段中。每個埠對應一個UDP數據包,4個合為一組。最後,步驟208中,根據網頁處得來的ClearServer伺服器的IP位址,將步驟206中構建的UDP數據包發向ClearServer的8888埠(實際實現中的約定)。考慮到內網到外網的鏈路一般環境不會很好,UDP可能會出現丟包,則在步驟208中,可以採取冗餘發送的策略,將每個UDP數據包發送多遍,可以有效降低丟包率。實際上,由復旦大學(內網環境)發向清華大學(外網環境),每個UDP數據包發送3遍就幾乎可以確保沒有丟包。
第二,在UDP流媒體視頻點播伺服器ClearServer端,運行一個名為clearnat的進程。它的功能是接收、處理OCX發過來的UDP數據包,並將完整的、最新的埠映射關係組發送給主控進程。clearnat的工作流程參見圖3。步驟302中clearnat啟動並在約定的8888埠監聽,當接收到一個UDP數據包後,就開始處理。步驟304,解析UDP協議頭,獲得NAT伺服器的IP位址和埠;解析UDP數據段,獲得用戶名、點播節目名、內網IP位址和埠。如果UDP協議頭中的IP位址與UDP數據段中的內網IP位址相同,則說明該用戶是在外網上進行點播,不需要用到本發明的方法,程序繼續等待下一個UDP數據包。如果是內網點播,則將NAT伺服器的IP位址和埠與內網的IP位址和埠組成一個映射關係。然後查詢自己維護的映射關係記錄表(步驟306),如果有重複的記錄,說明這是個冗餘的UDP數據包,則簡單地丟棄它;否則再根據用戶名、點播節目名來判斷這個映射關係的時效性(步驟308),即是否反映了最新的用戶點播請求,是,則將這個映射關係記錄(步驟310);否,則簡單丟棄。進入步驟312,每次記錄下一個映射關係,就去檢查整個映射關係記錄表,看看是否集齊完整的一組映射關係,即,同一個內網IP位址上的4個連續埠的映射關係。如果沒有,就繼續等待下一個UDP數據包的到來;如果得到完整的一組映射關係,就將這一映射關係組,通過IPC(Inter-Process Communication進程間通信)方式傳遞給主控伺服器(步驟314),然後繼續等待UDP數據包。
第三,在主控伺服器上,有一個功能模塊,負責處理從clearnat進程發送過來的信息,並在伺服器發送UDP數據前進行必要的IP位址和埠的替換。圖4描述了這個功能模塊的流程。它在主控伺服器的消息循環中等待來自clearnat的信息(步驟402),接收到clearnat發送過來的映射關係組信息後(步驟404),首先到自己的映射關係組記錄表中查詢是否有相同的記錄(步驟406),如果有相同的記錄則丟棄此映射關係組,繼續等待映射關係組信息,如果沒有則把此記錄添加到記錄表中(步驟408)。每當有客戶端的點播請求到達主控伺服器時(步驟410),就去映射關係組記錄表中查詢,看看是否有對應該用戶的映射關係記錄(步驟412),如果沒有,則表明該用戶是普通的外網點播客戶端,無需使用本發明的方法,(步驟414);如果有,則表明該用戶是通過內網點播的客戶端,那麼在向這個客戶端發送UDP數據的時候,就用映射關係組中的NAT伺服器IP位址和埠,替換內網IP位址和埠。
本發明的性能如下複雜度N個客戶端,處理NAT信息所需要多做的計算包括加減計算和查表計算計算複雜度為O(N2)。
處理時間ClearNat信息處理中主要是對信息表的查詢和處理操作。表1是信息表查詢操作所需的CPU時間進行測試。測試環境處理器迅馳1.5G,內存512M,作業系統WindowsXP。

表1 查詢表操作所需CPU時間主控進程對NAT埠映射表的查詢和處理等操作所需時間非常少,即使NAT埠映射表中的節點數目達到100000,做一次查詢和處理所需的時間也基本上會小於1ms。
對並發數的影響由於查表操作所需時間比較少,只有客戶端達到100000以上時每次查表操作所需時間才超過10ms。當N=1000000時,這對於主控進程(Main Process)的調度也許就會帶來一些困難。但是這個並發數是在假定每個客戶都是內網用戶,並通過NAT伺服器進行視頻點播。在實際應用中,伺服器的客戶肯定有很大一部分是通過公網直接連接到流媒體伺服器上進行視頻點播的。
總之,採用本發明所述的ClearNat方法,可以讓流媒體伺服器ClearServer發送的UDP數據包順利穿透網關(NAT伺服器),為處於內網的客戶端提供優質的視頻點播服務。
本公開的方式描述了本公開和本發明的最佳模式,應該理解並且認識到,有許多等效於在此公開的示例性實施例的方式,並且在不脫離本發明的範圍和精神的情況下可以進行修改和變形,本發明不受示例性實施例的限制而只受附加的權利要求的限制。
權利要求
1.一種使流媒體伺服器ClearServer可以識別內網客戶端的IP位址和埠號,將伺服器端的多媒體數據順利發送到客戶端的方法,其特徵在於具體步驟如下a.將一個OCX運行在客戶端瀏覽的點播網頁上;當用戶點擊網頁上的點播連結後,由網頁告知OCX,用戶名信息、用戶點播節目的信息和流媒體伺服器ClearServer的IP位址;OCX根據這些信息構建UDP數據包,其中數據段的內容包括用戶的內網IP位址、內網UDP接收埠和點播的節目名稱;UDP數據包構建完成後,就會發送到流媒體伺服器ClearServer的IP位址(實際實現中約定埠8888,非強制)。每個UDP數據包對應一個埠映射,四個連續的埠映射形成一組;b.ClearServer伺服器端有一個clearnat進程,負責接收和處理OCX發送過來UDP數據包;在收到一個UDP數據包後,解析UDP協議頭部,獲得UDP數據包來源的IP位址和埠;解析UDP數據段,獲得內網的IP位址和埠;clearnat將完整的一組映射關係通過IPC(進程間通信)方式發送給主控伺服器;c.主控伺服器接收映射關係組,並保存在映射關係組記錄表中;當主控伺服器需要向客戶端發送UDP數據包的時候,先去查看映射關係組記錄表,對於來自於內網的客戶端點播,伺服器就用映射關係中的NAT地址、埠替換掉客戶端所在計算機的內網IP位址、埠。
2.如權利要求1所述的方法,其特徵在於,在步驟b中,包括將NAT伺服器的IP位址和埠和內網IP位址和埠組成一對埠映射關係,並記錄下來,然後接著接收下一個UDP數據包;當集齊4個連續的埠映射後,就把它們作為一組完整的埠映射關係,並將完整的每一組映射關係,通過IPC(進程間通信)方式傳遞給ClearServer的主控伺服器進程。
全文摘要
本發明屬於網絡多媒體技術領域,具體是使流媒體伺服器發送的UDP(用戶數據報協議)數據包穿透網關的一種方法,即ClearNat方法,。根據該方法流媒體伺服器ClearServer可以識別內網客戶端的IP位址和埠,將NAT伺服器的IP位址和埠與內網客戶端的IP位址和埠做一個映射,通過替換IP位址和埠,將伺服器端的UDP數據發送到NAT伺服器,再由NAT伺服器把數據轉發到處於內網的客戶端,實現穿透網關,從而有效的在網際網路中實時傳送多媒體信息。該方法的計算複雜度較低,效果很好,對主控伺服器的其他應用進程沒有影響,且在流媒體伺服器ClearServer中能支持大的內網並發用戶的使用。
文檔編號H04L12/56GK1694430SQ200510026160
公開日2005年11月9日 申請日期2005年5月25日 優先權日2005年5月25日
發明者葉德建, 孫澔峻, 張佐 申請人:復旦大學

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀