專利名稱:一種小內存系統(tǒng)中的文件發(fā)送方法及裝置的制作方法
技術領域:
本發(fā)明涉及無線通訊領域,尤其涉及一種小內存系統(tǒng)中的文件發(fā)送方法及裝置。
背景技術:
FLUTE (File Delivery Over Unidirectional Transport,文件分發(fā)傳輸,RFC3926 中定義的面向多播的單向文件傳輸協(xié)議)協(xié)議建立在ALC (Asynchronous Layered Coding, 異步分層編碼)協(xié)議之上,利用文件傳輸表(File Delivery Table, FDT)來描述ALC協(xié) 議傳輸?shù)膶ο髮奈募畔?。文件信息包括URI (Universal Resource Identifier, 資源標志符),文件名,文件類型,文件大小,文件的內容編碼,安全屬性等。ALC協(xié)議由 LCT(Layered Coding Transport,分層編碼傳輸)模塊、多速率的CC(Congestion Control, 擁塞控制)模塊和FEC (Forward ErrorCorrection,前向糾錯)模塊組成,提供從一個發(fā)送 端到多個并發(fā)的接收端的具有擁塞控制的可靠的異步內容傳輸。 LCT模塊為可靠的內容或流傳輸協(xié)議提供運輸層的支持。編碼是指將傳輸?shù)膬热?進行編碼以提高可靠性,例如使用FEC編碼。分層是指數(shù)據(jù)在分層的多個通道中進行傳輸。 LCT是為IP組播而設計的,但是也支持使用單播的協(xié)議。同樣FLUTE也支持組播和單播。
FLUTE從ALC/LCT繼承得到會話和通道的概念。 一個ALC/LCT會話由多個ALC/LCT 通道組成。ALC/LCT利用IP組播網(wǎng)絡服務,一個ALC/LCT通道即一個組播組。各個通道被 劃分為邏輯上不同的層次,不同層的通道具有不同的傳輸速率。接收端通過加入會話通道 (加入組播組)的方式實現(xiàn)FLUTE數(shù)據(jù)傳輸。接收端通過加入不同層次的通道來實現(xiàn)接收 速率的改變,實現(xiàn)接收端驅動的多速率的擁塞控制。 在FLUTE協(xié)議中,ALC/LCT會話被稱為文件傳輸會話(file deliverysession);會 話由TSI (Transport Session Identifier,傳輸會話標識)進行標識。TSI和源IP地址對 (IP, TSI)是會話的唯一標識。如果使用UDP協(xié)議,可以使用16位的UDP源端口號作為會 話的TSI。 FLUTE協(xié)議中傳輸?shù)腁LC對象可以是文件或文件傳輸表;TOI (Transport Object Identifier,傳輸對象標識)用來表示數(shù)據(jù)包所對應的ALC對象。T0I為0,表示數(shù)據(jù)包所 屬的對象為文件傳輸表FDT。 TOI非零,表示數(shù)據(jù)包所屬的對象為傳輸?shù)奈募?,不同的TOI 表示數(shù)據(jù)包屬于不同的文件,同一個文件的數(shù)據(jù)包具有相同的T0I。 TSI和T0I都包含在ALC/LCT數(shù)據(jù)包頭中。接收端通過數(shù)據(jù)包的源IP地址和TSI 來判斷數(shù)據(jù)包來自哪個會話。利用TOI來判斷數(shù)據(jù)包屬于哪個對象(文件或FDT)。 TOI必 須包含在ALC數(shù)據(jù)包中,除非會話終止標志(A)為l。每個文件都必須指定T0I ( > 0)。同 一會話中的不同對象的T0I必須不同,不同會話中的不同的對象的T0I可以允許重復。
發(fā)送端負責向接收端提供會話描述、開始會話、以不同的速率向會話中的各個通 道發(fā)送數(shù)據(jù)。不同通道的傳輸速率不同,并且各個通道的速率是可變的。 一個會話中可以 同時傳輸多個對象,不同的對象通過T0I進行區(qū)分。 通常,發(fā)送端在一個會話中連續(xù)的向各個通道發(fā)送數(shù)據(jù),直到認為傳輸已經(jīng)完成。發(fā)送端認為傳輸已經(jīng)完成的情況可以是超過了一定的時間、發(fā)送了一定數(shù)量的數(shù)據(jù)包、或 者是一些帶外的信號(來自更高層的協(xié)議)指示傳輸完成。 接收端的操作隨服務模式的不同而不同。接收端可以同時加入多個發(fā)送端的多個
會話的多個通道。接收端通過加入組播組的方式加入通道,加入一個通道開始接收數(shù)據(jù),離 開通道停止接收數(shù)據(jù)。 接收端加入會話之前必須通過帶外方式接收會話描述。接收端從會話描述中得到 源IP地址,會話中的通道(channel)數(shù),各個通道的目的地址(IP組播的目的地址)和端 口號,會話的TSI等信息。 接收端根據(jù)TSI和源IP地址區(qū)分不同的會話,利用TOI區(qū)分不同對象的數(shù)據(jù)包, 從通道內接收感興趣的數(shù)據(jù)包。 TOI為0表示接收到的數(shù)據(jù)包是FDT實例(FDT的ALC數(shù)據(jù)包)。接收端接收到足 夠的FDT實例后,進行FEC解碼,并重構FDT,得到會話中傳輸?shù)奈募男畔?,并將此文件?息存儲在本地數(shù)據(jù)庫(或其他形式的存儲)。接收端從FDT中得到所感興趣的文件的TOI, 并開始接收對應TOI的數(shù)據(jù)包。當接收到足夠多的數(shù)據(jù)包后,進行FEC解碼和文件對象的 重構。利用FEC重構一個對象并不依賴于接收特定的數(shù)據(jù)包,而是在于接收到不同的數(shù)據(jù) 包的數(shù)量。因此增加接收端接收的層數(shù)可以減少傳輸時間。 FLUTE協(xié)議為了保證傳輸?shù)目煽啃?,需要對文件進行FEC編碼后進行發(fā)送。FEC編 碼器的輸入是具有相同長度的k個源符號。FEC編碼器生成和源符號具有相同長度的編碼 符號。不同的FEC編碼器可以有不同的符號長度。編碼符號被打包進行傳輸。數(shù)據(jù)包中的 編碼符號的數(shù)量可以是變化的或者是固定的(通常數(shù)據(jù)包中只存放一個符號,如果存放多 個符號則需要根據(jù)數(shù)據(jù)包中攜帶信息以區(qū)分數(shù)據(jù)包中不同的編碼符號)。同時,在數(shù)據(jù)包中 攜帶有足夠的信息用來區(qū)分數(shù)據(jù)包中的不同的編碼符號。接收端接收到包含有編碼符號的 數(shù)據(jù)包后,將編碼符號送入解碼器,得到原始的k個源符號。理想情況下,F(xiàn)EC解碼器可以 從任意k個編碼符號得到k個源符號。 FEC編碼根據(jù)所生成的編碼符號的個數(shù)不同可以分為以下兩類 分塊的FEC編碼分塊FEC編碼器的輸入是k個源符號和數(shù)字n。編碼器生成n個
編碼符號。如果n個編碼符號由k個源符號和n-k個冗余符號組成,則稱編碼器是系統(tǒng)的
(systematic)。分塊的FEC編碼器具有可以從n個編碼符號中的任意k個編碼符號重建k
個源符號的特性。 可擴展的FEC編碼向可擴展的FEC編碼器輸入k個源符號,可以生成所需個數(shù)的 編碼符號??蓴U展的FEC編碼器同樣具有可以從n個編碼符號中的任意k個編碼符號重建 k個源符號的特性。 對于分塊的FEC,較大的傳輸對象被分為源塊。源塊中包含k個源符號,每個源塊 的k值可以不同。源塊的k個源符號被編碼得到n個編碼符號,同樣不同源塊的n值也可 以不同。接收端為了重構對象,必須收到同一個編碼塊的k個不同的編碼符號。通常傳輸 對象被分為同樣長度的源塊。塊號和塊中的源符號ID可以用來區(qū)分同一個源塊中的不同 的源符號。如果對象的長度不是k的倍數(shù),則最后一個源塊所包含的源符號個數(shù)小于k。
對于通常的小文件,可以將整個文件讀入到內存中進行FEC編碼,然后將編碼后 的文件數(shù)據(jù)放入發(fā)送緩存區(qū)中進行發(fā)送。然而在無線通訊領域中,有些業(yè)務需要發(fā)送超大文件,如高清影片。這些文件一般都在幾G甚至幾十G的大小,如果要將這些文件編碼后放 入內存緩沖區(qū)進行發(fā)送,普通計算機系統(tǒng)的內存無法滿足要求,特別是在同時發(fā)送多個文 件的情況下。
發(fā)明內容
有鑒于上述背景,本發(fā)明提供了一種小內存系統(tǒng)中的文件發(fā)送方法及裝置,可以 實現(xiàn)在小內存系統(tǒng)中發(fā)送超大文件。 為了解決上述技術問題,本發(fā)明采用了如下技術方案
—種小內存系統(tǒng)中的文件發(fā)送方法,包括 內容獲取從內容提供服務器獲取待發(fā)送文件,并存儲在本地存儲器; 預編碼處理根據(jù)小內存系統(tǒng)的發(fā)送緩存區(qū)容量確定分塊參數(shù),依照分塊參數(shù)將
待發(fā)送文件劃分為多個源塊,對每一源塊進行編碼,依序放入預編碼文件中; 文件發(fā)送依序將預編碼文件中的源塊讀入發(fā)送緩存區(qū),按照文件發(fā)送協(xié)議對讀
入的源塊進行數(shù)據(jù)封裝,將封裝后的數(shù)據(jù)發(fā)送到目的地址。 在所述方法的一種實施例中,所述內容獲取采用FTP協(xié)議或者文件共享協(xié)議進 行。 在所述方法的一種實施例中,所述預編碼處理的編碼采用前向糾錯編碼。 在所述方法的一種實施例中,所述發(fā)送緩存區(qū)包括至少兩個,所述文件發(fā)送中,源
塊讀入和數(shù)據(jù)發(fā)送不同時在同 一發(fā)送緩存區(qū)進行。 在所述方法的一種實施例中,所述文件發(fā)送中,文件發(fā)送協(xié)議為FLUTE協(xié)議。
在所述方法的一種實施例中,所述目的地址為組播地址。
本發(fā)明還公開了一種小內存系統(tǒng)中的文件發(fā)送裝置,包括 內容獲取模塊用于從內容提供服務器獲取待發(fā)送文件,并存儲在本地存儲器;
預編碼處理模塊用于根據(jù)小內存系統(tǒng)的發(fā)送緩存區(qū)容量確定分塊參數(shù),依照分 塊參數(shù)將待發(fā)送文件劃分為多個源塊,對每一源塊進行編碼,依序放入預編碼文件中;
文件發(fā)送模塊用于依序將預編碼文件中的源塊讀入發(fā)送緩存區(qū),按照文件發(fā)送 協(xié)議對讀入的源塊進行數(shù)據(jù)封裝,將封裝后的數(shù)據(jù)發(fā)送到目的地址。 本發(fā)明通過將待發(fā)送文件獲取到本地存儲器上,而后根據(jù)發(fā)送緩存區(qū)容量確定分 塊參數(shù),依照分塊參數(shù)進行源塊劃分,再依次將編碼后的源塊讀入發(fā)送緩存區(qū),根據(jù)文件發(fā) 送協(xié)議將源塊的封裝數(shù)據(jù)發(fā)送到目的地址。從而實現(xiàn)了小內存系統(tǒng)的大文件發(fā)送。
圖1是本發(fā)明實施例的FLUTE文件發(fā)送服務器的系統(tǒng)框圖; 圖2是本發(fā)明實施例的在小內存系統(tǒng)中利用FLUTE協(xié)議發(fā)送超大文件的流程圖。
具體實施例方式
下面對照附圖,對本發(fā)明的具體實施方式
做詳細說明。 本發(fā)明實施例的文件發(fā)送方法和裝置,主要解決的是在系統(tǒng)內存容量較小時,如 何使用FLUTE協(xié)議實現(xiàn)超大文件的發(fā)送,其不但適用于普通的微機系統(tǒng),甚至可用于單片機等內存容量很小的嵌入式系統(tǒng)中。本文提及的小內存系統(tǒng),主要是指內存容量相對于待 發(fā)送的文件過小,因而無法一次讀入待發(fā)送的文件的內存系統(tǒng)。 圖l給出了本發(fā)明實施例的系統(tǒng)框圖。本發(fā)明實施例的文件發(fā)送裝置,采用FLUTE 協(xié)議進行文件發(fā)送,稱該文件發(fā)送裝置為FLUTE文件發(fā)送服務器101,其通常包含三個模 塊內容獲取模塊102、 FEC預編碼模塊103、 FLUTE發(fā)送模塊104。 內容獲取模塊102 :負責從內容提供服務器上獲取需要發(fā)送的原始文件并保存在 本地磁盤(FLUTE文件發(fā)送服務器上的存儲器)上,獲取的方式可以是FTP或者其他的文件
共享方式等。 FEC預編碼模塊103 :也稱為預編碼處理模塊,負責在發(fā)送文件之前預先對原始文 件進行FEC編碼;生成預編碼文件,也就是FEC編碼后的文件數(shù)據(jù)。 FLUTE發(fā)送模塊104 :也稱為文件發(fā)送模塊,負責將FEC編碼后的文件數(shù)據(jù)按 FLUTE協(xié)議格式打包封裝,并通過網(wǎng)口發(fā)送到設定好的組播地址上。 圖2是本發(fā)明實施例的利用FLUTE協(xié)議在小內存系統(tǒng)中發(fā)送超大文件的方法的流 程,包含以下步驟 步驟S201,內容獲取模塊102通過FTP協(xié)議或文件共享協(xié)議從內容提供服務器上 下載所需發(fā)送的文件,并保存到本地磁盤,即本地存儲器上。 步驟S202, FEC預編碼模塊103在文件發(fā)送開始前的設定時刻對待發(fā)送的文件進 行源塊劃分,源塊劃分時,首先根據(jù)內存系統(tǒng)的發(fā)送緩存區(qū)容量確定源塊劃分的分塊參數(shù), 再依據(jù)分塊參數(shù)將待發(fā)送文件劃分為多個源塊。以劃分的源塊為單位進行FEC編碼,創(chuàng)建 預編碼文件,將編碼好的源塊按順序保存在預編碼文件中。為節(jié)約磁盤空間,可以在全部源 塊編碼完成后將原始的待發(fā)送文件刪除。 步驟S203, FLUTE發(fā)送模塊104在開始發(fā)送文件后,依次從預編碼文件中讀取編碼 好的源塊數(shù)據(jù)并放入內存的發(fā)送緩存區(qū),根據(jù)FLUTE協(xié)議對源塊進行封裝打包,源塊封裝 打包后,將數(shù)據(jù)包發(fā)送到設定的組播地址,即目的地址上。為了提高發(fā)送速率,在內存足夠 的情況下可以采用雙緩存方式,即在內存中設置兩個發(fā)送緩存區(qū),在發(fā)送一個緩存區(qū)中的 源塊的同時,將下一個需要發(fā)送的編碼后的源塊讀入另一個緩存區(qū)中。在上一個源塊發(fā)送 完后,將其緩沖區(qū)置空,開始發(fā)送另一緩沖區(qū)中的源塊,同時讀取下一個編碼后的源塊放入 空的緩沖區(qū)中。如此交替發(fā)送,可以在發(fā)送的同時讀取磁盤上的數(shù)據(jù),避免讀取磁盤帶來的 延時。當然,在容量允許的情況下,也可以設置更多數(shù)量的發(fā)送緩存區(qū),只要保證文件發(fā)送 過程中的源塊數(shù)據(jù)讀入發(fā)送緩存區(qū)和發(fā)送緩存區(qū)中的封裝后的數(shù)據(jù)發(fā)送不同時在同一個 發(fā)送緩存區(qū)進行,就可達到避免磁盤讀取延時的目的。 本發(fā)明的主要特點是源塊劃分,預先編碼,將編碼后的文件保存在本地磁盤上, 然后以源塊為單位進行發(fā)送;源塊的大小可以自由劃定(只要小于發(fā)送緩存區(qū)容量),對于 小內存系統(tǒng)可以使用較小的源塊,從而可以在小內存系統(tǒng)中發(fā)送超大文件。采用在本地存 儲器上進行預編碼,避免了FEC編碼需要較長時間的問題,能夠提高文件發(fā)送的速率。
以上內容是結合具體的優(yōu)選實施方式對本發(fā)明所作的進一步詳細說明,但這只是 為便于理解而舉的實例,不應認為本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬 技術領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,可以做出各種可能的等同 改變或替換,這些改變或替換都應屬于本發(fā)明的保護范圍。
權利要求
一種小內存系統(tǒng)中的文件發(fā)送方法,其特征在于,包括內容獲取從內容提供服務器獲取待發(fā)送文件,并存儲在本地存儲器;預編碼處理根據(jù)小內存系統(tǒng)的發(fā)送緩存區(qū)容量確定分塊參數(shù),依照分塊參數(shù)將待發(fā)送文件劃分為多個源塊,對每一源塊進行編碼,依序放入預編碼文件中;文件發(fā)送依序將預編碼文件中的源塊讀入發(fā)送緩存區(qū),按照文件發(fā)送協(xié)議對讀入的源塊進行數(shù)據(jù)封裝,將封裝后的數(shù)據(jù)發(fā)送到目的地址。
2. 如權利要求1所述的方法,其特征在于,所述內容獲取采用FTP協(xié)議或者文件共享協(xié)議進行。
3. 如權利要求1所述的方法,其特征在于,所述預編碼處理的編碼采用前向糾錯編碼。
4. 如權利要求1所述的方法,其特征在于,所述發(fā)送緩存區(qū)包括至少兩個,所述文件發(fā)送中,源塊讀入和數(shù)據(jù)發(fā)送不同時在同一發(fā)送緩存區(qū)進行。
5. 如權利要求1至4任一項所述的方法,其特征在于,所述文件發(fā)送中,文件發(fā)送協(xié)議為FLUTE協(xié)議。
6. 如權利要求5所述的方法,其特征在于,所述目的地址為組播地址。
7. —種小內存系統(tǒng)中的文件發(fā)送裝置,其特征在于,包括內容獲取模塊用于從內容提供服務器獲取待發(fā)送文件,并存儲在本地存儲器;預編碼處理模塊用于根據(jù)小內存系統(tǒng)的發(fā)送緩存區(qū)容量確定分塊參數(shù),依照分塊參數(shù)將待發(fā)送文件劃分為多個源塊,對每一源塊進行編碼,依序放入預編碼文件中;文件發(fā)送模塊用于依序將預編碼文件中的源塊讀入發(fā)送緩存區(qū),按照文件發(fā)送協(xié)議對讀入的源塊進行數(shù)據(jù)封裝,將封裝后的數(shù)據(jù)發(fā)送到目的地址。
8. 如權利要求7所述的裝置,其特征在于,所述內容獲取模塊的內容獲取采用FTP協(xié)議或者文件共享協(xié)議進行。
9. 如權利要求7所述的裝置,其特征在于,所述預編碼處理模塊的編碼采用前向糾錯編碼。
10. 如權利要求7所述的裝置,其特征在于,所述發(fā)送緩存區(qū)包括至少兩個,所述文件發(fā)送模塊的文件發(fā)送中,源塊讀入和數(shù)據(jù)發(fā)送不同時在同一發(fā)送緩存區(qū)進行。
11. 如權利要求7至10任一項所述的裝置,其特征在于,所述文件發(fā)送模塊的文件發(fā)送協(xié)議為FLUTE協(xié)議。
12. 如權利要求11所述的裝置,其特征在于,所述目的地址為組播地址。
全文摘要
本發(fā)明公開了一種小內存系統(tǒng)中的文件發(fā)送方法及裝置,所述方法包括內容獲取從內容提供服務器獲取待發(fā)送文件,并存儲在本地存儲器;預編碼處理根據(jù)小內存系統(tǒng)的發(fā)送緩存區(qū)容量確定分塊參數(shù),依照分塊參數(shù)將待發(fā)送文件劃分為多個源塊,對每一源塊進行編碼,依序放入預編碼文件中;文件發(fā)送依序將預編碼文件中的源塊讀入發(fā)送緩存區(qū),按照文件發(fā)送協(xié)議對讀入的源塊進行數(shù)據(jù)封裝,將封裝后的數(shù)據(jù)發(fā)送到目的地址。所述裝置包括內容獲取模塊、預編碼處理模塊、文件發(fā)送模塊。本發(fā)明實現(xiàn)了小內存系統(tǒng)的超大文件發(fā)送。
文檔編號H04L29/08GK101707623SQ20091011015
公開日2010年5月12日 申請日期2009年11月11日 優(yōu)先權日2009年11月11日
發(fā)明者胡銦 申請人:中興通訊股份有限公司