專利名稱:一種提高非可靠通訊環(huán)境下單向通訊可靠性的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于不可靠數(shù)據(jù)通訊傳送預(yù)處理領(lǐng)域,具體涉及一種提高非可靠通訊環(huán)境下單向 通訊可靠性的方法。
背景技術(shù):
通訊協(xié)議從可靠性角度可以分為可靠傳輸和非可靠傳輸。有些網(wǎng)絡(luò)管理標(biāo)準(zhǔn)為了兼顧效 率、實(shí)現(xiàn)簡(jiǎn)便性等方面的因素會(huì)選擇以非可靠通訊協(xié)議作為底層的傳輸支撐,如SNMP協(xié)議 (Simple Network Management Protocol,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)中就是應(yīng)用不可靠的UDP協(xié)議 (User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)。當(dāng)選擇非可靠傳輸時(shí),就存在著數(shù)據(jù)包丟失 的可能,尤其是在網(wǎng)絡(luò)繁忙時(shí)。單向傳輸由于通訊兩端的應(yīng)用層之間缺少交互,數(shù)據(jù)包丟失 則成了無法補(bǔ)救的問題。數(shù)據(jù)包丟失造成的問題很多,在網(wǎng)絡(luò)管理中一個(gè)非常明顯的問題是 會(huì)造成通訊兩端的數(shù)據(jù)不一致,給用戶造成維護(hù)上的誤導(dǎo)。
為了解決這種問題,有一些專利也致力于該方面的研究,但是都存在一些問題。如中國(guó) ZL 02149439.8 "簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議中數(shù)據(jù)包傳送的可靠性保證方法"是通過發(fā)送端在每個(gè) TRAP中增加流水號(hào)、接收端解釋處理該流水號(hào),并在發(fā)生問題時(shí)向發(fā)送端進(jìn)行重新申請(qǐng);中 國(guó)ZL 01131969.0 "簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議中報(bào)文可靠傳輸?shù)姆椒?是通過在發(fā)送端、接收端都 進(jìn)行協(xié)議轉(zhuǎn)換(將不可靠傳輸在發(fā)送前轉(zhuǎn)換為可靠傳輸)的方式來保證傳輸?shù)目煽啃?。這兩 種方法能提高通訊的可靠性,但是問題也非常明顯大大增加了系統(tǒng)的復(fù)雜性,尤其是增加 接收端的實(shí)現(xiàn)復(fù)雜性在實(shí)際工程應(yīng)用中是不可接受的,因?yàn)楹芏嗤ㄟ^SNMP接入的網(wǎng)管系統(tǒng)都 是使用現(xiàn)成的接入平臺(tái),對(duì)上述專利需要修改系統(tǒng)的做法客戶肯定不會(huì)采用,因此其實(shí)用效 果大大降低。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種提高非可靠通訊環(huán)境下單向通訊可靠 性的方法。該方法通過對(duì)單向通訊的發(fā)送者進(jìn)行適當(dāng)處理,在完全不增加接收端任何工作的 情況下提高通訊的可靠性。
為解決上述技術(shù)問題,本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的 本發(fā)明所述的提高非可靠通訊環(huán)境下單向通訊可靠性的方法,包括如下步驟 步驟A.在發(fā)送者處進(jìn)行參數(shù)配置,配置發(fā)送停等時(shí)間T、間隔系數(shù)n、每次發(fā)送最大包 數(shù)M、發(fā)送者等待隊(duì)列限制長(zhǎng)度L;發(fā)送者系統(tǒng)在初始化時(shí)讀入配置的參數(shù)T、 n、 M和L,根 據(jù)系統(tǒng)對(duì)實(shí)時(shí)性的要求和發(fā)送者所在硬件系統(tǒng)的資源情況設(shè)置T、 n、 M、 L值; 步驟B.數(shù)據(jù)包發(fā)送模塊從數(shù)據(jù)包緩沖隊(duì)列中讀取要發(fā)送的數(shù)據(jù)包;
bl.如果數(shù)據(jù)包不存在,等待數(shù)據(jù)包生成模塊根據(jù)功能情況產(chǎn)生數(shù)據(jù)包,并將數(shù)據(jù)
包置入數(shù)據(jù)包緩沖隊(duì)列中; b2.如果數(shù)據(jù)包存在,則獲取數(shù)據(jù)包緩沖隊(duì)列中的M個(gè)數(shù)據(jù)包或者全部數(shù)據(jù)包,獲 取到數(shù)據(jù)包后執(zhí)行步驟C操作; 步驟C.判斷數(shù)據(jù)包緩沖隊(duì)列中剩余的數(shù)據(jù)包總數(shù),以決定數(shù)據(jù)包發(fā)送模塊的等待時(shí)間t; 步驟D.數(shù)據(jù)包發(fā)送模塊等待t時(shí)間后將數(shù)據(jù)包發(fā)送出去; 步驟E.循環(huán)執(zhí)行步驟B。
所述b2步驟中,如果數(shù)據(jù)包存在,當(dāng)數(shù)據(jù)包緩沖隊(duì)列中數(shù)據(jù)包數(shù)量多于或者等于M個(gè)時(shí), 則獲取M個(gè)數(shù)據(jù)包;當(dāng)數(shù)據(jù)包緩沖隊(duì)列中數(shù)據(jù)包數(shù)量少于M個(gè)時(shí),則獲取全部數(shù)據(jù)包。
所述步驟C中,如果數(shù)據(jù)包緩沖隊(duì)列中剩余的數(shù)據(jù)包總數(shù)大于L,則等待時(shí)間為t^/n; 如果數(shù)據(jù)包緩沖隊(duì)列中剩余的數(shù)據(jù)包總數(shù)小于或等于L,則等待時(shí)間t=T。
本發(fā)明所述的提高非可靠通訊環(huán)境下單向通訊可靠性的方法主要涉及單向通訊的發(fā)送 者、接收者,發(fā)送者和接收者通過非可靠傳輸通道進(jìn)行數(shù)據(jù)傳輸,二者可以是對(duì)等關(guān)系,也 可以是客戶層/服務(wù)器關(guān)系。發(fā)送者是通訊的發(fā)起者,負(fù)責(zé)組織數(shù)據(jù)包并將數(shù)據(jù)發(fā)送給非可靠 傳輸通道;接收者是數(shù)據(jù)包的接受者,完成對(duì)發(fā)送者發(fā)送的數(shù)據(jù)包的接收及處理。
所述發(fā)送者至少包括初始化模塊、數(shù)據(jù)包發(fā)送模塊、數(shù)據(jù)包生成模塊和數(shù)據(jù)包緩沖隊(duì)列。
本發(fā)明提出了在不可靠通訊環(huán)境下提高數(shù)據(jù)包傳輸可靠性的方法,通過在發(fā)送者處簡(jiǎn)單 的設(shè)置可以顯著的提高通訊的可靠性。
使用本發(fā)明的提高非可靠通訊環(huán)境下單向通訊可靠性的方法,具有以下有益效果
(1) 通過本方法進(jìn)行發(fā)送過程的調(diào)整,可以在很大程度上提高單向通訊的可靠性,尤其 是在大數(shù)據(jù)量的情況下,將數(shù)據(jù)按照一定的時(shí)間間隔均勻發(fā)送,能很好的調(diào)整網(wǎng)絡(luò)流量,緩 解網(wǎng)絡(luò)擁塞的情況,對(duì)減少丟包率效果非常明顯;
(2) 由于兼顧考慮了數(shù)據(jù)包緩存的數(shù)量和每次發(fā)送包的大小,對(duì)效率的影響可控制在可 以接受的范圍之內(nèi);
(3) 本方法通過對(duì)單向通訊的發(fā)送者進(jìn)行適當(dāng)處理,在完全不增加接收者任何工作的情 況下提高了通訊的可靠性。
圖1是非可靠通訊環(huán)境下單向通訊的模型示意圖2是發(fā)送者的內(nèi)部功能模塊邏輯示意圖3是SNMP協(xié)議環(huán)境下的單向TRAP通訊示意圖。
具體實(shí)施例方式
為了更好地理解本發(fā)明,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步地描述。 請(qǐng)參閱圖l,發(fā)送者1和接收者2通過非可靠傳輸通道進(jìn)行數(shù)據(jù)傳輸,二者可以是對(duì)等 關(guān)系,也可以是客戶層/服務(wù)器關(guān)系。發(fā)送者l是通訊的發(fā)起者,負(fù)責(zé)組織數(shù)據(jù)包并將數(shù)據(jù)發(fā)
送給非可靠傳輸通道;接收者2是數(shù)據(jù)包的接受者,完成對(duì)發(fā)送者發(fā)送的數(shù)據(jù)包的接收及處
理。請(qǐng)參閱圖2,發(fā)送者1包括初始化模塊101、數(shù)據(jù)包發(fā)送模塊102、數(shù)據(jù)包生成模塊103 和數(shù)據(jù)包緩沖隊(duì)列104。
以SNMP協(xié)議中TRAP的傳送可靠性控制過程為例,請(qǐng)結(jié)合參閱圖2和圖3,在SNMP網(wǎng)管 中,根據(jù)標(biāo)準(zhǔn)規(guī)定,作為代理者的SNMPAGENT(相當(dāng)于圖1中的發(fā)送者l)同作為SNMP MANAGER (相當(dāng)于圖1中的接收者2)之間是通過UDP/IP協(xié)議進(jìn)行底層通訊,而UDP是一種不可靠的 通訊方式,這導(dǎo)致S醒P AGENT同SNMP MANAGER之間存在丟包的可能性,尤其在網(wǎng)絡(luò)上數(shù)據(jù) 量較大時(shí);經(jīng)過實(shí)際測(cè)試,也確實(shí)存在丟包的情形。SNMP AGENT與SNMP MANAGER之間有一 個(gè)非常重要的單向操作類型TRAP,通過TRAP, SNMP AGENT可以將不可預(yù)期事件主動(dòng)上報(bào)給 SNMP MANAGER。 SNMP AGENT中包括初始化模塊101、數(shù)據(jù)包發(fā)送模塊102、數(shù)據(jù)包生成模塊 103、數(shù)據(jù)包緩沖隊(duì)列104四個(gè)邏輯模塊,在SNMP AGENT中設(shè)置一個(gè)配置文件,設(shè)定配置發(fā) 送停等時(shí)間T為0.1秒、間隔系數(shù)n為2、每次發(fā)送最大包數(shù)M為3、等待隊(duì)列限制長(zhǎng)度L為 5000。系統(tǒng)初始化運(yùn)行時(shí),初始化模塊101通過配置文件讀入T/n/M/L的值;初始化完成后, 系統(tǒng)進(jìn)入功能處理過程,數(shù)據(jù)包發(fā)送模塊102從數(shù)據(jù)包緩沖隊(duì)列104中獲取需要發(fā)送的數(shù)據(jù) 包;如果不能獲取到數(shù)據(jù)包(數(shù)據(jù)包緩沖隊(duì)列104中數(shù)據(jù)包為空),數(shù)據(jù)包發(fā)送模塊102則等 待直到能獲取到數(shù)據(jù);數(shù)據(jù)包生成模塊103將其處理后待TRAP發(fā)送的數(shù)據(jù)包置入數(shù)據(jù)包緩沖 隊(duì)列104中;當(dāng)數(shù)據(jù)包緩沖隊(duì)列104中存在數(shù)據(jù)包且數(shù)量少于3時(shí),數(shù)據(jù)包發(fā)送模塊102獲 取所有的數(shù)據(jù)包(l個(gè)或者2個(gè)),等待0.1秒后將獲取到的數(shù)據(jù)包發(fā)送出去;當(dāng)數(shù)據(jù)包緩沖 隊(duì)列104中存在數(shù)據(jù)包且數(shù)量至少為3時(shí),數(shù)據(jù)包發(fā)送模塊102獲取3個(gè)數(shù)據(jù)包,然后統(tǒng)計(jì) 數(shù)據(jù)包緩沖隊(duì)列104中剩余的數(shù)據(jù)包數(shù)量,如果數(shù)量小于或等于5000個(gè),數(shù)據(jù)包發(fā)送模塊 102等待0.1秒后將這3個(gè)數(shù)據(jù)包發(fā)送出去;如果數(shù)據(jù)包數(shù)量大于5000個(gè),數(shù)據(jù)包發(fā)送模塊 102等待0. 05秒后將獲得的3個(gè)數(shù)據(jù)包發(fā)送出去;最后數(shù)據(jù)包發(fā)送模塊102進(jìn)行循環(huán)讀取、發(fā)送處理。通過本發(fā)明的方法,經(jīng)過實(shí)際測(cè)試,可以有效減少丟包率,明顯提高大數(shù)據(jù)量情 況下TRAP的可靠性。
本方法可以用在任何的非可靠傳輸環(huán)境,SNMP協(xié)議作為一種典型的非可靠傳輸網(wǎng)管協(xié)議, 可以直接使用本發(fā)明。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,應(yīng)當(dāng)指出,對(duì)于本領(lǐng)域的普 通技術(shù)人員來說,凡是本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換或改進(jìn)等,均應(yīng) 包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種提高非可靠通訊環(huán)境下單向通訊可靠性的方法,其特征在于,包括如下步驟步驟A.在發(fā)送者處進(jìn)行參數(shù)配置,配置發(fā)送停等時(shí)間T、間隔系數(shù)n、每次發(fā)送最大包數(shù)M、發(fā)送者等待隊(duì)列限制長(zhǎng)度L;發(fā)送者系統(tǒng)在初始化時(shí)讀入配置的參數(shù)T、n、M和L,根據(jù)系統(tǒng)對(duì)實(shí)時(shí)性的要求和發(fā)送者所在硬件系統(tǒng)的資源情況設(shè)置T、n、M、L值;步驟B.數(shù)據(jù)包發(fā)送模塊從數(shù)據(jù)包緩沖隊(duì)列中讀取要發(fā)送的數(shù)據(jù)包;b1.如果數(shù)據(jù)包不存在,等待數(shù)據(jù)包生成模塊根據(jù)功能情況產(chǎn)生數(shù)據(jù)包,并將數(shù)據(jù)包置入數(shù)據(jù)包緩沖隊(duì)列中;b2.如果數(shù)據(jù)包存在,則獲取數(shù)據(jù)包緩沖隊(duì)列中的M個(gè)數(shù)據(jù)包或者全部數(shù)據(jù)包,獲取到數(shù)據(jù)包后執(zhí)行步驟C操作;步驟C.判斷數(shù)據(jù)包緩沖隊(duì)列中剩余的數(shù)據(jù)包總數(shù),以決定數(shù)據(jù)包發(fā)送模塊的等待時(shí)間t;步驟D.數(shù)據(jù)包發(fā)送模塊等待t時(shí)間后將數(shù)據(jù)包發(fā)送出去;步驟E.循環(huán)執(zhí)行步驟B。
2. 根據(jù)權(quán)利要求1所述的提高非可靠通訊環(huán)境下單向通訊可靠性的方法,其特征在于, 所述b2步驟中,如果數(shù)據(jù)包存在,當(dāng)數(shù)據(jù)包緩沖隊(duì)列中數(shù)據(jù)包數(shù)量多于或者等于M個(gè)時(shí),則 獲取M個(gè)數(shù)據(jù)包;當(dāng)數(shù)據(jù)包緩沖隊(duì)列中數(shù)據(jù)包數(shù)量少于M個(gè)時(shí),則獲取全部數(shù)據(jù)包。
3. 根據(jù)權(quán)利要求1或2所述的提高非可靠通訊環(huán)境下單向通訊可靠性的方法,其特征在 于,所述步驟C中,如果數(shù)據(jù)包緩沖隊(duì)列中剩余的數(shù)據(jù)包總數(shù)大于L,則等待時(shí)間t-T/n;如 果數(shù)據(jù)包緩沖隊(duì)列中剩余的數(shù)據(jù)包總數(shù)小于或等于L,則等待時(shí)間t-T。
全文摘要
本發(fā)明公開了一種提高非可靠通訊環(huán)境下單向通訊可靠性的方法。該方法主要涉及單向通訊的發(fā)送者和接收者通過非可靠傳輸通道進(jìn)行數(shù)據(jù)傳輸。發(fā)送者是通訊的發(fā)起者,負(fù)責(zé)組織數(shù)據(jù)包并將數(shù)據(jù)發(fā)送給非可靠傳輸通道;接收者是數(shù)據(jù)包的接受者,完成對(duì)發(fā)送者發(fā)送的數(shù)據(jù)包的接收及處理。本發(fā)明通過進(jìn)行發(fā)送過程的調(diào)整,可以在很大程度上提高單向通訊的可靠性,尤其是在大數(shù)據(jù)量的情況下,將數(shù)據(jù)按照一定的時(shí)間間隔均勻發(fā)送,能很好的調(diào)整網(wǎng)絡(luò)流量,緩解網(wǎng)絡(luò)擁塞的情況,對(duì)減少丟包率效果非常明顯;另外,由于兼顧考慮了數(shù)據(jù)包緩存的數(shù)量和每次發(fā)送包的大小,對(duì)效率的影響可控制在可以接受的范圍之內(nèi),在完全不增加接收者任何工作的情況下提高了通訊的可靠性。
文檔編號(hào)H04L12/56GK101188555SQ20071012503
公開日2008年5月28日 申請(qǐng)日期2007年12月14日 優(yōu)先權(quán)日2007年12月14日
發(fā)明者段磊令 申請(qǐng)人:中興通訊股份有限公司