一種流量控制方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及到通信領(lǐng)域,特別涉及到一種流量控制方法及裝置。
【背景技術(shù)】
[0002]在當(dāng)前的通信系統(tǒng)中,數(shù)據(jù)業(yè)務(wù)協(xié)議的層與層之間,同一系統(tǒng)之內(nèi)的模塊與模塊之間、局域網(wǎng)或無(wú)線網(wǎng)絡(luò)的兩個(gè)節(jié)點(diǎn)之間,存在端對(duì)端的大量數(shù)據(jù)傳輸。通常,發(fā)送端和接收端的速度總是存在差異,若發(fā)送端速度大于接收端,則存在數(shù)據(jù)溢出問(wèn)題,會(huì)導(dǎo)致數(shù)據(jù)丟失;若接收端速度大于發(fā)送端,存在數(shù)據(jù)讀空問(wèn)題,會(huì)導(dǎo)致讀入錯(cuò)誤數(shù)據(jù);且在速度方面,需要一種機(jī)制來(lái)根據(jù)需求調(diào)節(jié)收發(fā)速度。因此,如何提供一種可靠的流量控制方法,以防止數(shù)據(jù)傳輸溢出和進(jìn)行速度控制,將是我們亟待解決的問(wèn)題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的主要目的為提供一種流量控制方法及裝置,旨在防止數(shù)據(jù)傳輸溢出和進(jìn)行速度控制。
[0004]本發(fā)明提供一種流量控制方法,該方法包括:
[0005]S10、流量控制裝置獲取發(fā)送端的寫(xiě)入速度V1、接收端的讀取速度V2、用戶設(shè)置的傳輸速度V、該流量控制裝置中的緩存模塊中的數(shù)據(jù)隊(duì)列的容量大小L和所述數(shù)據(jù)隊(duì)列的已使用大小E ;
[0006]S20、所述流量控制裝置根據(jù)所述獲取發(fā)送端的寫(xiě)入速度V1、接收端的讀取速度V2、用戶設(shè)置的傳輸速度V、該流量控制裝置中的緩存模塊中的數(shù)據(jù)隊(duì)列的容量大小L和所述數(shù)據(jù)隊(duì)列的已使用大小E,控制發(fā)送端向所述緩存模塊中的數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù)的開(kāi)始時(shí)機(jī)和停止時(shí)機(jī),及/或控制接收端從所述緩存模塊中的數(shù)據(jù)隊(duì)列讀取數(shù)據(jù)的開(kāi)始時(shí)機(jī)和停止時(shí)機(jī)。
[0007]優(yōu)選地,所述流量控制裝置根據(jù)所述獲取發(fā)送端的寫(xiě)入速度V1、接收端的讀取速度V2、用戶設(shè)置的傳輸速度V、該流量控制裝置中的緩存模塊中的數(shù)據(jù)隊(duì)列的容量大小L和所述數(shù)據(jù)隊(duì)列的已使用大小E,控制發(fā)送端向所述緩存模塊中的數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù)的開(kāi)始時(shí)機(jī)和停止時(shí)機(jī),及/或控制接收端從所述緩存模塊中的數(shù)據(jù)隊(duì)列讀取數(shù)據(jù)的開(kāi)始時(shí)機(jī)和停止時(shí)機(jī)的步驟包括:
[0008]S21、所述流量控制裝置根據(jù)所述獲取發(fā)送端的寫(xiě)入速度V1、接收端的讀取速度V2、用戶設(shè)置的傳輸速度V和該流量控制裝置中的緩存模塊中的數(shù)據(jù)隊(duì)列的容量大小L計(jì)算延時(shí)時(shí)間t:
[0009]t= (V1*L* (V2-V)) / ((Vl-V) *V2);
[0010]S22、判斷所述寫(xiě)入速度Vl是否大于讀取速度V2 ;
[0011]S23、在所述寫(xiě)入速度Vl大于讀取速度V2,且在所述流量控制裝置獲取的緩存模塊中的數(shù)據(jù)隊(duì)列的已使用大小E為O時(shí),向所述發(fā)送端發(fā)送寫(xiě)入指令,以使得所述發(fā)送端向所述數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù);及向所述接收端發(fā)送停止讀取指令并開(kāi)始計(jì)時(shí)得到第一計(jì)時(shí)時(shí)間tl,以使得所述接收端停止從所述數(shù)據(jù)隊(duì)列讀取數(shù)據(jù);
[0012]S24、在所述第一計(jì)時(shí)時(shí)間tl等于延時(shí)時(shí)間t時(shí),所述流量控制裝置向所述接收端發(fā)送讀取指令,以使得所述接收端從所述數(shù)據(jù)隊(duì)列讀取數(shù)據(jù);及所述流量控制裝置監(jiān)測(cè)所述數(shù)據(jù)隊(duì)列的已使用大小E ;
[0013]S25、在所述數(shù)據(jù)隊(duì)列的已使用大小E等于L時(shí),所述流量控制裝置向所述發(fā)送端發(fā)送停止寫(xiě)入指令,以使得所述發(fā)送端停止向所述數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù);及所述流量控制裝置繼續(xù)監(jiān)測(cè)所述數(shù)據(jù)隊(duì)列的已使用大小E ;
[0014]S26、在所述數(shù)據(jù)隊(duì)列的已使用大小E為零時(shí),返回步驟S10。
[0015]優(yōu)選地,在所述S22、判斷所述寫(xiě)入速度Vl是否大于讀取速度V2之后,該方法還包括:
[0016]S31、在所述寫(xiě)入速度Vl小于讀取速度V2,且在所述流量控制裝置獲取的緩存模塊中的數(shù)據(jù)隊(duì)列的已使用大小E為O時(shí),向所述發(fā)送端發(fā)送寫(xiě)入指令,以使得所述發(fā)送端向所述數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù);及向所述接收端發(fā)送停止讀取指令,以使得所述接收端停止從所述數(shù)據(jù)隊(duì)列讀取數(shù)據(jù);及所述流量控制裝置監(jiān)測(cè)所述數(shù)據(jù)隊(duì)列的已使用大小E ;
[0017]S32、在所述數(shù)據(jù)隊(duì)列的已使用大小E等于L時(shí),所述流量控制裝置向所述接收端發(fā)送讀取指令,以使得所述接收端從所述數(shù)據(jù)隊(duì)列中讀取數(shù)據(jù);及向所述發(fā)送端發(fā)送停止寫(xiě)入指令并開(kāi)始計(jì)時(shí)得到第二計(jì)時(shí)時(shí)間t2,以使得所述發(fā)送端停止向所述數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù);
[0018]S33、在所述第二計(jì)時(shí)時(shí)間t2等于延時(shí)時(shí)間t時(shí),所述流量控制裝置向所述發(fā)送端發(fā)送寫(xiě)入指令,以使得所述發(fā)送端向所述數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù);及所述流量控制裝置繼續(xù)檢測(cè)所述數(shù)據(jù)隊(duì)列的已使用大小E ;
[0019]S34、在所述數(shù)據(jù)隊(duì)列的已使用大小E為零時(shí),返回步驟S10。
[0020]優(yōu)選地,所述用戶設(shè)置的傳輸速度V大于零且小于寫(xiě)入速度Vl與讀取速度V2中較小的一個(gè)。
[0021]優(yōu)選地,所述控制發(fā)送端向所述緩存模塊中的數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù)的步驟為:控制發(fā)送端向所述緩存模塊中的數(shù)據(jù)隊(duì)列的隊(duì)列尾寫(xiě)入數(shù)據(jù);
[0022]所述控制接收端從所述緩存模塊中的數(shù)據(jù)隊(duì)列讀取數(shù)據(jù)的步驟為:控制接收端從所述緩存模塊中的數(shù)據(jù)隊(duì)列的隊(duì)列頭讀取數(shù)據(jù)。
[0023]本發(fā)明還提供一種流量控制裝置,該流量控制裝置分別與發(fā)送端、接收端連接,所述流量控制裝置包括:緩存模塊,與所述緩存模塊連接的獲取模塊,與所述獲取模塊連接控制模塊,其中:
[0024]所述獲取模塊,用于獲取發(fā)送端的寫(xiě)入速度V1、接收端的讀取速度V2、用戶設(shè)置的傳輸速度V、該緩存模塊中的數(shù)據(jù)隊(duì)列的容量大小L和所述數(shù)據(jù)隊(duì)列的已使用大小E ;
[0025]所述控制模塊,用于根據(jù)所述獲取發(fā)送端的寫(xiě)入速度V1、接收端的讀取速度V2、用戶設(shè)置的傳輸速度V、緩存模塊中的數(shù)據(jù)隊(duì)列的容量大小L和所述數(shù)據(jù)隊(duì)列的已使用大小E,控制發(fā)送端向所述緩存模塊中的數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù)的開(kāi)始時(shí)機(jī)和停止時(shí)機(jī),及/或控制接收端從所述緩存模塊中的數(shù)據(jù)隊(duì)列讀取數(shù)據(jù)的開(kāi)始時(shí)機(jī)和停止時(shí)機(jī)。
[0026]優(yōu)選地,所述控制模塊包括:
[0027]計(jì)算單元,用于根據(jù)獲取的發(fā)送端的寫(xiě)入速度V1、接收端的讀取速度V2、用戶設(shè)置的傳輸速度V和緩存模塊中的數(shù)據(jù)隊(duì)列的大小L計(jì)算延時(shí)時(shí)間t:
[0028]t= (V1*L* (V2-V)) / ((Vl-V) *V2);
[0029]判斷單元,用于判斷所述寫(xiě)入速度Vl是否大于讀取速度V2 ;
[0030]第一控制單元,用于在所述寫(xiě)入速度Vl大于讀取速度V2,且所述數(shù)據(jù)隊(duì)列的已使用大小E為O時(shí),向所述發(fā)送端發(fā)送寫(xiě)入指令,以使得所述發(fā)送端向所述數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù),及向所述接收端發(fā)送停止讀取指令,以使得所述接收端停止從所述數(shù)據(jù)隊(duì)列讀取數(shù)據(jù)并開(kāi)始計(jì)時(shí)得到第一計(jì)時(shí)時(shí)間tl ;及用于所述第一計(jì)時(shí)時(shí)間tl等于延時(shí)時(shí)間t時(shí),向所述接收端發(fā)送讀取指令,以使得所述接收端從所述數(shù)據(jù)隊(duì)列讀取數(shù)據(jù),及監(jiān)測(cè)所述數(shù)據(jù)隊(duì)列的已使用大小E ;及用于在所述數(shù)據(jù)隊(duì)列的已使用大小E等于L時(shí),向所述發(fā)送端發(fā)送停止寫(xiě)入指令,以使得所述發(fā)送端停止向所述數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù),直到所述數(shù)據(jù)隊(duì)列的已使用大小E為零。
[0031 ] 優(yōu)選地,控制模塊還包括:
[0032]第二控制單元,用于在所述寫(xiě)入速度Vl小于讀取速度V2,且在所述數(shù)據(jù)隊(duì)列的已使用大小E為O時(shí),向所述發(fā)送端發(fā)送寫(xiě)入指令,以使得所述發(fā)送端向所述數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù),及向所述接收端發(fā)送停止讀取指令,以使得所述接收端停止從所述數(shù)據(jù)隊(duì)列讀取數(shù)據(jù),及監(jiān)測(cè)所述數(shù)據(jù)隊(duì)列的已使用大小E ;及用于在所述數(shù)據(jù)隊(duì)列的已使用大小E為L(zhǎng)時(shí),向所述接收端發(fā)送讀取指令,以使得所述接收端從所述數(shù)據(jù)隊(duì)列讀取數(shù)據(jù),及向所述發(fā)送端發(fā)送停止寫(xiě)入指令并開(kāi)始計(jì)時(shí)得到第二計(jì)時(shí)時(shí)間t2,以使得所述發(fā)送端停止向所述數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù);及用于在第二計(jì)時(shí)時(shí)間t2等于延時(shí)時(shí)間t時(shí),向所述發(fā)送端發(fā)送寫(xiě)入指令,以使得所述發(fā)送端向所述數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù),直到所述緩存中數(shù)據(jù)隊(duì)列的已使用大小E為零。
[0033]優(yōu)選地,所述用戶設(shè)置的傳輸速度V大于零且小于寫(xiě)入速度Vl與讀取速度V2中較小的一個(gè)。
[0034]優(yōu)選地,所述控制模塊控制發(fā)送端向所述緩存模塊中的數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù)為:控制發(fā)送端向所述緩存模塊中的數(shù)據(jù)隊(duì)列的隊(duì)列尾寫(xiě)入數(shù)據(jù);
[0035]所述控制模塊控制接收端從所述緩存模塊中的數(shù)據(jù)隊(duì)列讀取數(shù)據(jù)為:控制接收端從所述緩存模塊中的數(shù)據(jù)隊(duì)列的隊(duì)列頭讀取數(shù)據(jù)。
[0036]實(shí)施本發(fā)明,流量控制裝置獲取發(fā)送端的寫(xiě)入速度V1、接收端的讀取速度V2、用戶設(shè)置的傳輸速度V、該流量控制裝置中的緩存模塊中的數(shù)據(jù)隊(duì)列的容量大小L和所述數(shù)據(jù)隊(duì)列的已使用大小E ;然后所述流量控制裝置根據(jù)所述獲取發(fā)送端的寫(xiě)入速度V1、接收端的讀取速度V2、用戶設(shè)置的傳輸速度V、該流量控制裝置中的緩存模塊中的數(shù)據(jù)隊(duì)列的容量大小L和所述數(shù)據(jù)隊(duì)列的已使用大小E,控制發(fā)送端向所述緩存模塊中的數(shù)據(jù)隊(duì)列寫(xiě)入數(shù)據(jù)的開(kāi)始時(shí)機(jī)和停止時(shí)機(jī),及/或控制接收端從所述緩存模塊中的數(shù)據(jù)隊(duì)列讀取數(shù)據(jù)的開(kāi)始時(shí)機(jī)和停止時(shí)機(jī);可防止數(shù)據(jù)傳輸溢出和進(jìn)行速度控制。
【附圖說(shuō)明】
[0037]圖1為本發(fā)明流量控制方法的優(yōu)選實(shí)施例流程示意圖;
[0038]圖2為步驟S20的第一實(shí)施例流程示意圖;
[0039]圖3為步驟S20的第二實(shí)施例流程示意圖;
[0040]圖4為本發(fā)明流量控制裝置的優(yōu)選實(shí)施例結(jié)構(gòu)示意圖;
[0041]圖5為圖4中控制模塊的結(jié)構(gòu)示意圖