專利名稱:一種流控傳輸協(xié)議中數(shù)據(jù)傳輸實現(xiàn)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于IP信令技術(shù)領(lǐng)域,特別涉及一種流控傳輸協(xié)議(SCTPStreamControl Transfer Protocol)中數(shù)據(jù)傳輸實現(xiàn)方法及系統(tǒng)。
背景技術(shù):
SCTP代表流控傳輸協(xié)議,其是由IETF(Internet Engieering TaskForce)新近制定的協(xié)議,它提供了電信信令在IP網(wǎng)上的傳輸服務(wù)。與目前廣泛應(yīng)用于Internet網(wǎng)上的傳統(tǒng)的TCP協(xié)議相比,SCTP更加強壯和可靠,SCTP已經(jīng)被3G的標準化組織(3GPP)所采納,應(yīng)用于在IP網(wǎng)上傳輸7號信令(SS7)。
SCTP可應(yīng)用于3G WCDMA(Wideband Code Division Multiple Address)系統(tǒng)中,與M3UA形成IP信令網(wǎng)的節(jié)點,位置與7號信令平行,由供應(yīng)商根據(jù)實際情況進行選擇。以保證數(shù)據(jù)快速可靠的傳輸,高效地完成SCTP協(xié)議的數(shù)據(jù)傳輸功能。
SCTP的基本操作對象是關(guān)聯(lián),類似于TCP中的連接,所不同的是每一個關(guān)聯(lián)中可以有多個流,每個流能夠按序傳輸數(shù)據(jù),不同的流互不干擾。關(guān)聯(lián)端點可以包含多個IP地址,所以在一個關(guān)聯(lián)中存在多個路徑,上層用戶可以指定某條路徑在某個流上發(fā)送按序傳遞的數(shù)據(jù)。同時SCTP對這些路徑進行可達性管理,對于沒有指定路徑的數(shù)據(jù),在主路徑上發(fā)送。當主路徑不可達時則選擇下一可達的路徑發(fā)送。SCTP最基本的傳輸單元是數(shù)據(jù)塊,多個數(shù)據(jù)塊可以與控制塊捆綁在一個SCTP包中發(fā)送。
SCTP具備以下基本功能(1)關(guān)聯(lián)的啟動和關(guān)閉完成關(guān)聯(lián)的創(chuàng)建和釋放;(2)流內(nèi)的數(shù)據(jù)按序傳遞保證一個流內(nèi)的數(shù)據(jù)按照順序傳遞;(3)用戶數(shù)據(jù)分段重組用戶數(shù)據(jù)長度大于PMTU(Path Maximum TransferUnit)時需要分段,而在接收端需要重組分段數(shù)據(jù),然后才能提交給上層用戶;
(4)數(shù)據(jù)塊應(yīng)答及擁塞避免機制在接收方用SACK控制塊對收到的數(shù)據(jù)塊進行選擇性應(yīng)答,發(fā)送方重傳丟失的數(shù)據(jù)塊。采用一種慢啟動快降落的方法避免擁塞;(5)塊捆綁在一個SCTP包中可以捆綁多個數(shù)據(jù)塊和控制塊;(6)包的有效性檢查SCTP包的合法性檢查;(7)路徑管理路徑可達性管理維護,需要進行路徑可達性的心跳檢測。
就目前的狀況而言,SCTP協(xié)議對于關(guān)聯(lián)的啟動和關(guān)閉等方面有比較詳細的說明,但是對于數(shù)據(jù)傳輸方面只有一個大概的基本規(guī)則,沒有提供一個詳盡的技術(shù)方案來實現(xiàn)SCTP協(xié)議功能,尤其在如何利用合理的隊列結(jié)構(gòu)和完善的隊列管理方法提高SCTP的數(shù)據(jù)傳輸性能方面沒有一個系統(tǒng)的技術(shù)方案。
SCTP在具體實現(xiàn)時還存在以下不足之處其一缺少合理的隊列結(jié)構(gòu)和隊列管理方法。SCTP協(xié)議在這一方面沒有做出具體的規(guī)定,但是如果采用不合適的隊列結(jié)構(gòu)和隊列管理方法,在數(shù)據(jù)接收和發(fā)送過程中會造成數(shù)據(jù)的排隊時間過長或者數(shù)據(jù)丟失,流之間的隊列設(shè)置不合理的話,也會產(chǎn)生頭阻現(xiàn)象,也就是因某一個流中的某一數(shù)據(jù)的延遲導(dǎo)致其它流數(shù)據(jù)的不必要的延遲,大大降低SCTP的數(shù)據(jù)傳輸性能。
其二在發(fā)生擁塞時沒有通知上層,以便積極地控制上層擁塞源。當發(fā)生網(wǎng)絡(luò)擁塞時,SCTP協(xié)議只是減少發(fā)送端發(fā)送的字節(jié)數(shù),而沒有限制SCTP上層應(yīng)用的流量。這樣會導(dǎo)致上層應(yīng)用不了解底層的實際數(shù)據(jù)傳輸能力,盲目要求SCTP傳輸數(shù)據(jù),從而發(fā)生數(shù)據(jù)丟失,或者數(shù)據(jù)傳輸延遲很長,達不到上層數(shù)據(jù)傳輸要求。
發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問題在于,提供一種流控傳輸協(xié)議中數(shù)據(jù)傳輸實現(xiàn)方法及系統(tǒng),以解決以上分析的SCTP協(xié)議中沒有考慮的實現(xiàn)問題和基于軟件實現(xiàn)上的傳輸性能問題。合理使用隊列結(jié)構(gòu)和隊列管理以進行數(shù)據(jù)傳輸。并加強擁塞避免機制,實現(xiàn)高效的SCTP數(shù)據(jù)傳輸,防止擁塞現(xiàn)象趨向嚴重。
本發(fā)明的技術(shù)方案為一種流控傳輸協(xié)議中數(shù)據(jù)傳輸實現(xiàn)方法,其特征在于包括以下步驟為每一個SCTP關(guān)聯(lián)設(shè)置發(fā)送隊列,所述的發(fā)送隊列接收上層請求發(fā)送的數(shù)據(jù),并將該數(shù)據(jù)發(fā)送給所述的流接收隊列;在發(fā)送數(shù)據(jù)時須判斷是否滿足發(fā)送條件,如果否則告警給上層,要求上層在警告解除之前停止發(fā)送新數(shù)據(jù);如果是則報告給上層告警解除,上層能夠自由請求發(fā)送新數(shù)據(jù);設(shè)置待應(yīng)答隊列,所述的待應(yīng)答隊列從所述的發(fā)送隊列選取隊列元素發(fā)送出去之后,將該隊列元素移入待應(yīng)答隊列;當發(fā)送成功時則從所述的待應(yīng)答隊列中刪除該隊列元素;當發(fā)送失敗時將該隊列元素從所述發(fā)送隊列轉(zhuǎn)移到所述的重發(fā)隊列;設(shè)置重傳隊列,所述的重發(fā)隊列接收所述的待應(yīng)答隊列轉(zhuǎn)移的數(shù)據(jù),并將該數(shù)據(jù)發(fā)送給所述的流接收隊列;設(shè)置重組隊列,所述的重組隊列暫存分片數(shù)據(jù)塊,當分片數(shù)據(jù)塊接收完整后,將所述的分片數(shù)據(jù)塊重組成一個完整的數(shù)據(jù)塊,并將重組后的數(shù)據(jù)塊加入到相應(yīng)的流接收隊列中;每一個流設(shè)置流接收隊列,所述的流接收隊列將接收到的數(shù)據(jù)上傳給上層用戶。
本發(fā)明還提供了一種流控傳輸協(xié)議中數(shù)據(jù)傳輸實現(xiàn)系統(tǒng),其特征在于包括數(shù)據(jù)發(fā)送處理模塊、數(shù)據(jù)接收處理模塊,其中所述的數(shù)據(jù)發(fā)送處理模塊接收上層數(shù)據(jù)傳輸請求,對于按序傳遞的數(shù)據(jù)按序?qū)?shù)據(jù)發(fā)送到所述的數(shù)據(jù)接收處理模塊;所述的數(shù)據(jù)接收處理模塊處理接收的數(shù)據(jù)塊,重組分片的數(shù)據(jù)塊,并且在每一個流內(nèi)按序?qū)⑹正R的數(shù)據(jù)上傳給上層用戶,根據(jù)需要產(chǎn)生選擇性應(yīng)答控制塊,反饋給關(guān)聯(lián)數(shù)據(jù)的所述的數(shù)據(jù)發(fā)送處理模塊。
本發(fā)明的有益效果在于
一個流設(shè)置一個流接收隊列,保證了流之間數(shù)據(jù)上傳互不干擾,避免因一個流的擁塞導(dǎo)致所有流數(shù)據(jù)擁塞的現(xiàn)象,使數(shù)據(jù)能盡快傳遞給上層協(xié)議用戶;發(fā)送隊列設(shè)置兩個門檻值,有效的將網(wǎng)絡(luò)擁塞狀況通知上層用戶,及早在源頭控制網(wǎng)絡(luò)擁塞的產(chǎn)生,避免數(shù)據(jù)傳輸過程中過長的排隊延遲,并有效避免網(wǎng)絡(luò)擁塞;完善的慢啟動快降落擁塞避免機制緩解了突發(fā)數(shù)據(jù)造成的網(wǎng)絡(luò)擁塞;快速重傳機制確保多次重傳的數(shù)據(jù)盡快發(fā)送到對端,減少因網(wǎng)絡(luò)擁塞和多次重傳導(dǎo)致數(shù)據(jù)延遲過長。
在實踐過程中,采用本方法能快速可靠地在IP信令網(wǎng)中傳輸信令數(shù)據(jù)。
圖1是SCTP隊列結(jié)構(gòu)圖;圖2是SCTP隊列數(shù)據(jù)流圖;圖3是SCTP數(shù)據(jù)發(fā)送處理模塊結(jié)構(gòu)圖;圖4是上層數(shù)據(jù)請求處理模塊數(shù)據(jù)處理流程圖;圖5是數(shù)據(jù)成包發(fā)送模塊數(shù)據(jù)處理流程圖;圖6是SACK信號控制塊處理模塊數(shù)據(jù)處理流程圖;圖7是SCTP數(shù)據(jù)接收處理模塊結(jié)構(gòu)圖;圖8是接收端隊列處理模塊數(shù)據(jù)處理流程圖;圖9是數(shù)據(jù)塊重組模塊數(shù)據(jù)處理流程圖;圖10是SACK反饋模塊數(shù)據(jù)處理流程圖;圖11是數(shù)據(jù)塊接收處理模塊數(shù)據(jù)處理流程圖。
具體實施例方式
下面結(jié)合
本發(fā)明的
具體實施例方式如圖1、2所示,首先為每一個SCTP關(guān)聯(lián)設(shè)置一個發(fā)送隊列、待應(yīng)答隊列、重傳隊列、重組隊列,為每一個流設(shè)置一個流接收隊列,隊列結(jié)構(gòu)及數(shù)據(jù)流。
發(fā)送隊列是一個按TSN(Transfer Serial Number)和SSN(Stream SerialNumber)順序排列的先進先出隊列,該隊列設(shè)置兩個門檻值(門檻值1<門檻值2),當該隊列的元素超過了該門檻值2時就報告給上層隊列告警,要求上層在告警解除之前停止發(fā)送新數(shù)據(jù),否則不保證發(fā)送上層繼續(xù)要求發(fā)送的新數(shù)據(jù),如果發(fā)送隊列的長度小于門檻值1,則報告給上層告警解除,上層應(yīng)用可以自由請求發(fā)送新數(shù)據(jù)。
待應(yīng)答隊列也是一個按照TSN順序排列的隊列。從發(fā)送隊列選取隊列元素發(fā)送出去之后,將該隊列元素移入待應(yīng)答隊列。當隊列元素的TSN小于收到的SACK控制塊攜帶的TSN時,從待應(yīng)答隊列中刪除該隊列元素;如果SACK控制塊顯示某個隊列元素丟失時,將此隊列元素從發(fā)送隊列轉(zhuǎn)移到重發(fā)隊列,并標記重發(fā)次數(shù)。
重發(fā)隊列是一個按照TSN排列的隊列,每次可以發(fā)送數(shù)據(jù)時,優(yōu)先發(fā)送重發(fā)隊列中的數(shù)據(jù)塊。
重組隊列是一個按照TSN排序的隊列,該隊列主要是為了暫存沒有接受完整的分片了的數(shù)據(jù)塊,一旦分片數(shù)據(jù)塊接收完整之后,就將它們組合成一個完整的數(shù)據(jù)塊。每當重組隊列中插入一個隊列元素時,檢查該隊列中的隊列元素是否能夠重組,如果是,則將數(shù)據(jù)塊重組,并將重組后的數(shù)據(jù)塊加入到相應(yīng)的流接收隊列中。
流接收隊列是一個按照SSN排序的隊列,每一個流設(shè)置一個這樣的隊列,是為了避免流之間的相互干擾。等待SSN之前的所有數(shù)據(jù)塊都收到了以后,才將具有SSN的數(shù)據(jù)塊上傳給上層用戶,保證按序傳遞。
如圖3、7所示,為本發(fā)明系統(tǒng),其包括數(shù)據(jù)發(fā)送處理模塊、數(shù)據(jù)接收處理模塊;其中所述的數(shù)據(jù)發(fā)送處理模塊(如圖3所示)接收上層數(shù)據(jù)傳輸請求,對于按序傳遞的數(shù)據(jù)按序?qū)?shù)據(jù)發(fā)送到所述的數(shù)據(jù)接收處理模塊;
所述的數(shù)據(jù)接收處理模塊(如圖7所示)處理接收的數(shù)據(jù)塊,重組分片的數(shù)據(jù)塊,并且在每一個流內(nèi)按序?qū)⑹正R的數(shù)據(jù)上傳給上層用戶,根據(jù)需要產(chǎn)生選擇性應(yīng)答控制塊,反饋給關(guān)聯(lián)數(shù)據(jù)的所述的數(shù)據(jù)發(fā)送處理模塊。
所述的數(shù)據(jù)發(fā)送處理模塊包括上層數(shù)據(jù)請求處理模塊、發(fā)送端隊列處理模塊、數(shù)據(jù)成包發(fā)送模塊、SACK(選擇性應(yīng)答)信號控制塊處理模塊;其中上層數(shù)據(jù)請求處理模塊處理上層數(shù)據(jù)傳輸請求,進行上層數(shù)據(jù)分組;發(fā)送端隊列處理模塊將分組后的數(shù)據(jù)加入發(fā)送隊列,根據(jù)條件上報用戶網(wǎng)絡(luò)擁塞狀況;數(shù)據(jù)成包發(fā)送模塊根據(jù)接收窗和擁塞窗狀況從重發(fā)隊列和發(fā)送隊列中選擇合適的數(shù)據(jù)塊捆綁成SCTP包發(fā)送到接收端;SACK信號控制塊處理模塊處理接收端反饋的選擇性應(yīng)答控制塊。
所述的數(shù)據(jù)接收處理模塊包括數(shù)據(jù)塊接收處理模塊、接收端隊列處理模塊、數(shù)據(jù)塊重組模塊、SACK反饋模塊;其中數(shù)據(jù)塊接收處理模塊數(shù)據(jù)塊合法性檢查,并根據(jù)數(shù)據(jù)塊的重組屬性將它們加入到重組隊列或者流接收隊列,并調(diào)節(jié)接收窗口;接收端隊列處理模塊將流輸入隊列中的數(shù)據(jù)按序提交給上層;數(shù)據(jù)塊重組模塊重組在重組隊列中的數(shù)據(jù)塊,并將重組好的數(shù)據(jù)轉(zhuǎn)移到相應(yīng)的流接收隊列;SACK反饋模塊根據(jù)需要產(chǎn)生SACK控制塊,將接收方的數(shù)據(jù)塊接收情況反饋給發(fā)送端。
在具體實施時在發(fā)送端設(shè)有所述的數(shù)據(jù)發(fā)送處理模塊,所述的數(shù)據(jù)發(fā)送處理模塊包括上層數(shù)據(jù)請求處理模塊、發(fā)送端隊列處理模塊、數(shù)據(jù)成包發(fā)送模塊、SACK信號控制塊處理模塊;
在接收端設(shè)有所述的數(shù)據(jù)接收處理模塊,所述的數(shù)據(jù)接收處理模塊包括數(shù)據(jù)塊接收處理模塊、接收端隊列處理模塊、數(shù)據(jù)塊重組模塊、SACK反饋模塊;其中上層數(shù)據(jù)請求處理模塊(如圖4所示)處理上層數(shù)據(jù)傳輸請求,進行上層數(shù)據(jù)分組;其中發(fā)送端隊列處理模塊將分組后的數(shù)據(jù)加入發(fā)送隊列,發(fā)送隊列是一個按TSN和SSN順序排列的先進先出隊列,該隊列設(shè)置兩個門檻值,且門檻值1<門檻值2,當該隊列的元素超過了該門檻值2時就報告給上層隊列告警,要求上層在告警解除之前停止發(fā)送新數(shù)據(jù),否則不保證發(fā)送上層繼續(xù)要求發(fā)送的新數(shù)據(jù),如果發(fā)送隊列的長度小于門檻值1,則報告給上層告警解除,上層應(yīng)用可以自由請求發(fā)送新數(shù)據(jù);待應(yīng)答隊列也是一個按照TSN順序排列的隊列;其從發(fā)送隊列選取隊列元素發(fā)送出去之后,將該隊列元素移入待應(yīng)答隊列;當隊列元素的TSN小于收到的SACK控制塊攜帶的TSN時,從待應(yīng)答隊列中刪除該隊列元素;如果SACK控制塊顯示某個隊列元素丟失時,將此隊列元素從發(fā)送隊列轉(zhuǎn)移到重發(fā)隊列,并標記重發(fā)次數(shù);重發(fā)隊列是一個按照TSN排列的隊列,每次可以發(fā)送數(shù)據(jù)時,優(yōu)先發(fā)送重發(fā)隊列中的數(shù)據(jù)塊;數(shù)據(jù)成包發(fā)送模塊(如圖5所示)根據(jù)接收窗和擁塞窗大小從重發(fā)隊列和發(fā)送隊列中選擇合適的數(shù)據(jù)塊捆綁成一個SCTP包,通過IP接口發(fā)送到接收端;SACK信號控制塊處理模塊(如圖6所示)更新SACK中的狀態(tài)信息;從待應(yīng)答隊列中刪除TSN以下的隊列元素;處理丟失的數(shù)據(jù)塊和重復(fù)接收的數(shù)據(jù)塊;數(shù)據(jù)塊接收處理模塊(如圖11所示)判斷重組隊列中的元素是否能重組;如果否則返回;如果是則重組這些隊列元素;將重組后的數(shù)據(jù)加入到相應(yīng)的流接收隊列;將所述的數(shù)據(jù)從重組隊列中刪除;
接收端隊列處理模塊(如圖8所示)判斷流序號為SSN的流數(shù)據(jù)是否收到;如果否則返回,如果是則將所述的數(shù)據(jù)提交給上層;數(shù)據(jù)塊重組模塊(如圖9所示)進行數(shù)據(jù)塊合法性檢查,所述檢查通過后判斷數(shù)據(jù)塊是否需要重組;如果是,則將該數(shù)據(jù)塊加入重組隊列;如果否,則將該數(shù)據(jù)塊加入流接收隊列;SACK反饋模塊(如圖10所示)獲取接收的重復(fù)數(shù)據(jù)塊信息;獲取接收的數(shù)據(jù)塊位圖信息;生成SACK控制塊,將該SACK控制塊反饋給發(fā)送端。
采用以上所述的SCTP隊列管理和數(shù)據(jù)處理方法,有以下有益效果1)一個流設(shè)置一個流接收隊列,保證了流之間數(shù)據(jù)上傳互不干擾,避免因一個流的擁塞導(dǎo)致所有流數(shù)據(jù)擁塞的現(xiàn)象,使數(shù)據(jù)能盡快傳遞給上層協(xié)議用戶;2)發(fā)送隊列設(shè)置兩個門檻值,有效的將網(wǎng)絡(luò)擁塞狀況通知上層用戶,及早在源頭控制網(wǎng)絡(luò)擁塞的產(chǎn)生,避免數(shù)據(jù)傳輸過程中過長的排隊延遲,并有效避免網(wǎng)絡(luò)擁塞;3)完善的慢啟動快降落擁塞避免機制緩解了突發(fā)數(shù)據(jù)造成的網(wǎng)絡(luò)擁塞;4)快速重傳機制確保多次重傳的數(shù)據(jù)盡快發(fā)送到對端,減少因網(wǎng)絡(luò)擁塞和多次重傳導(dǎo)致數(shù)據(jù)延遲過長。
在實踐過程中,采用本方法能快速可靠地在IP信令網(wǎng)中傳輸信令數(shù)據(jù)。
SCTP作為IP信令承載,它關(guān)系到信令是否能及時可靠的發(fā)送到目的信令點,這又涉及到整個通訊系統(tǒng)的可靠性和穩(wěn)定性,故如何有效地避免網(wǎng)絡(luò)擁塞,快速可靠的傳輸數(shù)據(jù)是SCTP在實現(xiàn)過程中切實考慮的重要問題,本文提供了一種SCTP的隊列管理和數(shù)據(jù)處理方法,它根據(jù)數(shù)據(jù)的屬性和狀態(tài)有區(qū)別的放入到不同的隊列,配合恰當?shù)膿砣幚矸椒?,能有效的將?shù)據(jù)快速可靠的傳輸?shù)侥康男帕铧c。
以上具體實施方式
僅用于說明本發(fā)明,而非用于限定本發(fā)明。
權(quán)利要求
1.一種流控傳輸協(xié)議中數(shù)據(jù)傳輸實現(xiàn)方法,其特征在于包括以下步驟為每一個SCTP關(guān)聯(lián)設(shè)置發(fā)送隊列,所述的發(fā)送隊列接收上層請求發(fā)送的數(shù)據(jù),并將該數(shù)據(jù)發(fā)送給所述的流接收隊列;在發(fā)送數(shù)據(jù)時須判斷是否滿足發(fā)送條件,如果否則告警給上層,要求上層在警告解除之前停止發(fā)送新數(shù)據(jù);如果是則報告給上層告警解除,上層能夠自由請求發(fā)送新數(shù)據(jù);設(shè)置待應(yīng)答隊列,所述的待應(yīng)答隊列從所述的發(fā)送隊列選取隊列元素發(fā)送出去之后,將該隊列元素移入待應(yīng)答隊列;當發(fā)送成功時則從所述的待應(yīng)答隊列中刪除該隊列元素;當發(fā)送失敗時將該隊列元素從所述發(fā)送隊列轉(zhuǎn)移到所述的重發(fā)隊列;設(shè)置重傳隊列,所述的重發(fā)隊列接收所述的待應(yīng)答隊列轉(zhuǎn)移的數(shù)據(jù),并將該數(shù)據(jù)發(fā)送給所述的流接收隊列;設(shè)置重組隊列,所述的重組隊列暫存分片數(shù)據(jù)塊,當分片數(shù)據(jù)塊接收完整后,將所述的分片數(shù)據(jù)塊重組成一個完整的數(shù)據(jù)塊,并將重組后的數(shù)據(jù)塊加入到相應(yīng)的流接收隊列中;每一個流設(shè)置流接收隊列,所述的流接收隊列將接收到的數(shù)據(jù)上傳給上層用戶。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的發(fā)送隊列是一個按TSN和SSN順序排列的先進先出隊列,該隊列設(shè)置兩個門檻值,且門檻值1<門檻值2,當該隊列的元素超過了門檻值2時就報告給上層隊列告警,要求上層在告警解除之前停止發(fā)送新數(shù)據(jù),否則不保證發(fā)送上層繼續(xù)要求發(fā)送的新數(shù)據(jù),如果發(fā)送隊列的長度小于門檻值1,則報告給上層告警解除,上層應(yīng)用可以自由請求發(fā)送新數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的待應(yīng)答隊列是一個按照TSN順序排列的隊列;從所述的發(fā)送隊列選取隊列元素發(fā)送出去之后,將該隊列元素移入待應(yīng)答隊列;當隊列元素的TSN小于收到的SACK控制塊攜帶的TSN時,從待應(yīng)答隊列中刪除該隊列元素;如果SACK控制塊顯示某個隊列元素丟失時,將此隊列元素從發(fā)送隊列轉(zhuǎn)移到重發(fā)隊列,并標記重發(fā)次數(shù)。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的重發(fā)隊列是一個按照TSN排列的隊列,每次可以發(fā)送數(shù)據(jù)時,優(yōu)先發(fā)送重發(fā)隊列中的數(shù)據(jù)塊。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的重組隊列是一個按照TSN排序的隊列,該隊列暫存沒有接受完整的分片了的數(shù)據(jù)塊,當分片數(shù)據(jù)塊接收完整之后,將它們組合成一個完整的數(shù)據(jù)塊;每當重組隊列中插入一個隊列元素時,檢查該隊列中的隊列元素是否能夠重組,如果是,則將數(shù)據(jù)塊重組,并將重組后的數(shù)據(jù)塊加入到相應(yīng)的流接收隊列中。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的流接收隊列是一個按照SSN排序的隊列,每一個流設(shè)置一個流接收隊列,等待SSN之前的所有數(shù)據(jù)塊都收到了以后,將具有SSN的數(shù)據(jù)塊按序傳遞給上層用戶。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,包括以下具體步驟在發(fā)送端為每一個SCTP關(guān)聯(lián)設(shè)置一個發(fā)送隊列、一個待應(yīng)答隊列、一個重傳隊列;在接收端為每一個SCTP關(guān)聯(lián)設(shè)置一個重組隊列,并為每一個流設(shè)置一個流接收隊列,形成n路流接收隊列;其中發(fā)送隊列是一個按TSN和SSN順序排列的先進先出隊列,該隊列設(shè)置兩個門檻值,且門檻值1<門檻值2,當該隊列的元素超過了該門檻值2時就報告給上層隊列告警,要求上層在告警解除之前停止發(fā)送新數(shù)據(jù),否則不保證發(fā)送上層繼續(xù)要求發(fā)送的新數(shù)據(jù),如果發(fā)送隊列的長度小于門檻值1,則報告給上層告警解除,上層應(yīng)用可以自由請求發(fā)送新數(shù)據(jù);待應(yīng)答隊列也是一個按照TSN順序排列的隊列;從發(fā)送隊列選取隊列元素發(fā)送出去之后,將該隊列元素移入待應(yīng)答隊列;當隊列元素的TSN小于收到的SACK控制塊攜帶的TSN時,從待應(yīng)答隊列中刪除該隊列元素;如果SACK控制塊顯示某個隊列元素丟失時,將此隊列元素從發(fā)送隊列轉(zhuǎn)移到重發(fā)隊列,并標記重發(fā)次數(shù);重發(fā)隊列是一個按照TSN排列的隊列,每次可以發(fā)送數(shù)據(jù)時,優(yōu)先發(fā)送重發(fā)隊列中的數(shù)據(jù)塊;重組隊列是一個按照TSN排序的隊列,該隊列主要是為了暫存沒有接受完整的分片了的數(shù)據(jù)塊,一旦分片數(shù)據(jù)塊接收完整之后,就將它們組合成一個完整的數(shù)據(jù)塊;每當重組隊列中插入一個隊列元素時,檢查該隊列中的隊列元素是否能夠重組,如果是,則將數(shù)據(jù)塊重組,并將重組后的數(shù)據(jù)塊加入到相應(yīng)的流接收隊列中;流接收隊列是一個按照SSN排序的隊列,每一個流設(shè)置一個這樣的隊列,是為了避免流之間的相互干擾;等待SSN之前的所有數(shù)據(jù)塊都收到了以后,才將具有SSN的數(shù)據(jù)塊上傳給上層用戶,并保證按序傳遞。
8.一種流控傳輸協(xié)議中數(shù)據(jù)傳輸實現(xiàn)系統(tǒng),其特征在于包括數(shù)據(jù)發(fā)送處理模塊、數(shù)據(jù)接收處理模塊;其中所述的數(shù)據(jù)發(fā)送處理模塊接收上層數(shù)據(jù)傳輸請求,對于按序傳遞的數(shù)據(jù)按序?qū)?shù)據(jù)發(fā)送到所述的數(shù)據(jù)接收處理模塊;所述的數(shù)據(jù)接收處理模塊處理接收的數(shù)據(jù)塊,重組分片的數(shù)據(jù)塊,并且在每一個流內(nèi)按序?qū)⑹正R的數(shù)據(jù)上傳給上層用戶,根據(jù)需要產(chǎn)生選擇性應(yīng)答控制塊,反饋給關(guān)聯(lián)數(shù)據(jù)的所述的數(shù)據(jù)發(fā)送處理模塊。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于所述的數(shù)據(jù)發(fā)送處理模塊包括上層數(shù)據(jù)請求處理模塊、發(fā)送端隊列處理模塊、數(shù)據(jù)成包發(fā)送模塊、SACK(選擇性應(yīng)答)信號控制塊處理模塊;其中上層數(shù)據(jù)請求處理模塊處理上層數(shù)據(jù)傳輸請求,進行上層數(shù)據(jù)分組;發(fā)送端隊列處理模塊將分組后的數(shù)據(jù)加入發(fā)送隊列,根據(jù)條件上報用戶網(wǎng)絡(luò)擁塞狀況;數(shù)據(jù)成包發(fā)送模塊根據(jù)接收窗和擁塞窗狀況從重發(fā)隊列和發(fā)送隊列中選擇合適的數(shù)據(jù)塊捆綁成SCTP包發(fā)送到接收端;SACK信號控制塊處理模塊處理接收端反饋的選擇性應(yīng)答控制塊。
10.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于所述的數(shù)據(jù)接收處理模塊包括數(shù)據(jù)塊接收處理模塊、接收端隊列處理模塊、數(shù)據(jù)塊重組模塊、SACK反饋模塊;其中數(shù)據(jù)塊接收處理模塊數(shù)據(jù)塊合法性檢查,并根據(jù)數(shù)據(jù)塊的重組屬性將它們加入到重組隊列或者流接收隊列,并調(diào)節(jié)接收窗口;接收端隊列處理模塊將流輸入隊列中的數(shù)據(jù)按序提交給上層;數(shù)據(jù)塊重組模塊重組在重組隊列中的數(shù)據(jù)塊,并將重組好的數(shù)據(jù)轉(zhuǎn)移到相應(yīng)的流接收隊列;SACK反饋模塊根據(jù)需要產(chǎn)生SACK控制塊,將接收方的數(shù)據(jù)塊接收情況反饋給發(fā)送端。
11.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于在發(fā)送端設(shè)有所述的數(shù)據(jù)發(fā)送處理模塊,所述的數(shù)據(jù)發(fā)送處理模塊包括上層數(shù)據(jù)請求處理模塊、發(fā)送端隊列處理模塊、數(shù)據(jù)成包發(fā)送模塊、SACK信號控制塊處理模塊;在接收端設(shè)有所述的數(shù)據(jù)接收處理模塊,所述的數(shù)據(jù)接收處理模塊包括數(shù)據(jù)塊接收處理模塊、接收端隊列處理模塊、數(shù)據(jù)塊重組模塊、SACK反饋模塊;其中上層數(shù)據(jù)請求處理模塊處理上層數(shù)據(jù)傳輸請求,進行上層數(shù)據(jù)分組;發(fā)送端隊列處理模塊將分組后的數(shù)據(jù)加入發(fā)送隊列,發(fā)送隊列是一個按TSN和SSN順序排列的先進先出隊列,該隊列設(shè)置兩個門檻值,且門檻值1<門檻值2,當該隊列的元素超過了該門檻值2時就報告給上層隊列告警,要求上層在告警解除之前停止發(fā)送新數(shù)據(jù),否則不保證發(fā)送上層繼續(xù)要求發(fā)送的新數(shù)據(jù),如果發(fā)送隊列的長度小于門檻值1,則報告給上層告警解除,上層應(yīng)用可以自由請求發(fā)送新數(shù)據(jù);待應(yīng)答隊列也是一個按照TSN順序排列的隊列;其從發(fā)送隊列選取隊列元素發(fā)送出去之后,將該隊列元素移入待應(yīng)答隊列;當隊列元素的TSN小于收到的SACK控制塊攜帶的TSN時,從待應(yīng)答隊列中刪除該隊列元素;如果SACK控制塊顯示某個隊列元素丟失時,將此隊列元素從發(fā)送隊列轉(zhuǎn)移到重發(fā)隊列,并標記重發(fā)次數(shù);重發(fā)隊列是一個按照TSN排列的隊列,每次可以發(fā)送數(shù)據(jù)時,優(yōu)先發(fā)送重發(fā)隊列中的數(shù)據(jù)塊;數(shù)據(jù)成包發(fā)送模塊根據(jù)接收窗和擁塞窗大小從重發(fā)隊列和發(fā)送隊列中選擇合適的數(shù)據(jù)塊捆綁成一個SCTP包,通過IP接口發(fā)送到接收端;SACK信號控制塊處理模塊更新SACK中的狀態(tài)信息;從待應(yīng)答隊列中刪除TSN以下的隊列元素;處理丟失的數(shù)據(jù)塊和重復(fù)接收的數(shù)據(jù)塊;數(shù)據(jù)塊接收處理模塊判斷重組隊列中的元素是否能重組;如果否則返回;如果是則重組這些隊列元素;將重組后的數(shù)據(jù)加入到相應(yīng)的流接收隊列;將所述的數(shù)據(jù)從重組隊列中刪除;接收端隊列處理模塊判斷流序號為SSN的流數(shù)據(jù)是否收到;如果否則返回,如果是則將所述的數(shù)據(jù)提交給上層;數(shù)據(jù)塊重組模塊進行數(shù)據(jù)塊合法性檢查,所述檢查通過后判斷數(shù)據(jù)塊是否需要重組;如果是,則將該數(shù)據(jù)塊加入重組隊列;如果否,則將該數(shù)據(jù)塊加入流接收隊列;SACK反饋模塊獲取接收的重復(fù)數(shù)據(jù)塊信息;獲取接收的數(shù)據(jù)塊位圖信息;生成SACK控制塊,將該SACK控制塊反饋給發(fā)送端。
全文摘要
本發(fā)明提供一種流控傳輸協(xié)議中數(shù)據(jù)傳輸實現(xiàn)方法及系統(tǒng),其通過為每一個SCTP關(guān)聯(lián)設(shè)置發(fā)送隊列、待應(yīng)答隊列、重傳隊列、重組隊列、以及流接收隊列;以解決SCTP協(xié)議中基于軟件實現(xiàn)上的數(shù)據(jù)傳輸性能問題。合理使用隊列結(jié)構(gòu)和隊列管理以進行數(shù)據(jù)傳輸。并加強擁塞避免機制,實現(xiàn)高效的SCTP數(shù)據(jù)傳輸,防止擁塞現(xiàn)象趨向嚴重。
文檔編號H04Q3/64GK1571418SQ03132078
公開日2005年1月26日 申請日期2003年7月16日 優(yōu)先權(quán)日2003年7月16日
發(fā)明者柏慧, 樊沛 申請人:深圳市中興通訊股份有限公司南京分公司