專利名稱:基于流控制傳輸協(xié)議的多地址選擇方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種基于流控制傳輸協(xié)議的多地址選擇方法。
背景技術(shù):
SCTP(Stream Control Transmission Protocol,流控制傳輸協(xié)議)為用于IP(網(wǎng)際協(xié)議)網(wǎng)絡(luò)的流控制傳輸協(xié)議,是由IETF(互聯(lián)網(wǎng)工程任務(wù)組)在原TCP(傳輸控制協(xié)議)基礎(chǔ)上改進(jìn)而來的專為信令消息在IP網(wǎng)上傳輸?shù)囊环N協(xié)議,該協(xié)議可以保證信令消息的可靠、有序傳輸。
SCTP使用的底層的IP是TCP/IP協(xié)議族內(nèi)的標(biāo)準(zhǔn)IP協(xié)議,與TCP相比SCTP對信令的傳輸具有實時、安全、可靠性更高的特點,同時SCTP能夠提供面向連接的可靠數(shù)據(jù)包傳輸,無須上層實現(xiàn)數(shù)據(jù)定界功能,并有實時性好、安全性高、避免了行頭阻塞(行頭阻塞是TCP的缺陷,SCTP通過在一個連接內(nèi)支持多個流,使得在一個流中數(shù)據(jù)受到阻塞不會影響其他的流中的數(shù)據(jù)傳輸)、支持多歸屬等諸多優(yōu)點,因此,SCTP已在信令消息的傳輸領(lǐng)域已廣泛應(yīng)用。
針對IP網(wǎng)絡(luò)的特點,SCTP提供了多歸屬的特點,即一個SCTP端點可以有多個IP地址,這樣,一條SCTP連接的數(shù)據(jù)可以走不同的IP網(wǎng)絡(luò),增強了數(shù)據(jù)傳輸?shù)目煽啃?。SCTP中規(guī)定如果端點是多歸屬的,上層用戶需指定一條首選的路徑,包括主用的本地地址和對端地址;當(dāng)首選路徑不可達(dá)時,則更換一對本端-對端地址傳輸。這樣,在選擇地址對時,如果沒有合理的方案進(jìn)行地址對的更換,則可能出現(xiàn)部分地址一直無法被選到的問題;而且,對于用戶指定的主用本地地址和對端地址,當(dāng)主用地址對出現(xiàn)故障后又恢復(fù)正常時,則因為此時已選為其他非主用地址對進(jìn)行傳輸,而導(dǎo)致主用地址一旦故障,即使恢復(fù)正常也無法再使用主用地址對進(jìn)行傳輸?,F(xiàn)有的SCTP協(xié)議標(biāo)準(zhǔn)未提供選擇地址對時保證每個地址均被選到的技術(shù)方案,且無法實現(xiàn)優(yōu)先選擇用戶指定的主用地址對。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于流控制傳輸協(xié)議的多地址選擇方法,以實現(xiàn)當(dāng)一個SCTP端點存在多個IP地址時,保證每個地址均可以被選擇到,且可以實現(xiàn)優(yōu)先選擇用戶指定的主用地址。
本發(fā)明的目的是這樣實現(xiàn)的一種基于流控制傳輸協(xié)議的多地址選擇方法為對存在多地址的SCTP(流控制傳輸協(xié)議)端點需要更換發(fā)送數(shù)據(jù)所選擇的地址時,分別依次選擇使用該SCTP端點上所有的對端地址及本地地址。
該方法包括a、為需要選擇新的地址進(jìn)行發(fā)送的數(shù)據(jù)選擇新的對端地址,并進(jìn)行數(shù)據(jù)的發(fā)送;
b、判斷SCTP端點所有的對端地址是否均已經(jīng)被選擇到,如果是,執(zhí)行步驟c,否則,執(zhí)行步驟a;c、為需要選擇新的地址進(jìn)行發(fā)送的數(shù)據(jù)選擇新的本地地址,并進(jìn)行數(shù)據(jù)的發(fā)送。
所述的步驟a為為確定需要選擇新的地址進(jìn)行發(fā)送的數(shù)據(jù)依次選擇新的對端地址作為其對端地址,并進(jìn)行數(shù)據(jù)的發(fā)送。
所述的步驟b為記錄已經(jīng)更換對端地址次數(shù),并判斷已經(jīng)更換對端地址次數(shù)是否等于該SCTP端點存在的對端地址數(shù)目,如果等于,則執(zhí)行步驟c,否則,執(zhí)行步驟a。
所述的步驟c為c1、為需要選擇新的地址進(jìn)行發(fā)送的數(shù)據(jù)選擇新的本地地址,并進(jìn)行數(shù)據(jù)的發(fā)送;c2、記錄已經(jīng)更換本地地址次數(shù),并判斷已經(jīng)更換本地地址次數(shù)是否等于該SCTP端點存在的本地地址數(shù)目,如果等于,則執(zhí)行步驟a,否則,繼續(xù)執(zhí)行步驟c1。
本發(fā)明所述的方法還包括對主用的本地地址發(fā)生故障時的處理過程d、確定主用的本地地址發(fā)生故障,選擇該SCTP端點上其他好的本地地址進(jìn)行數(shù)據(jù)傳輸,并啟動定時器;
e、當(dāng)定時器超時時,判斷主用的本地地址是否可用,如果可用,則執(zhí)行選擇該恢復(fù)正常的本地地址進(jìn)行數(shù)據(jù)的傳輸,否則,執(zhí)行步驟f;f、重新啟動定時器,并在定時器超時時執(zhí)行步驟e。
所述的定時器的定時時長不小于將所有本地地址輪詢一遍的時間。
本發(fā)明所述的方法還包括對主用的對端地址發(fā)生故障時的處理過程g、確定主用的對端地址發(fā)生故障,選擇該SCTP端點上的其他對端地址進(jìn)行數(shù)據(jù)的傳輸;h、當(dāng)發(fā)送心跳報文的定時器超時時,向主用的對端地址發(fā)送心跳消息;i、判斷是否收到了主用的對端地址返回的心跳響應(yīng)報文,如果收到,則執(zhí)行步驟j,否則,執(zhí)行步驟k;j、選擇該主用的對端地址進(jìn)行數(shù)據(jù)的傳輸;k、在該SCTP端點上選擇其他好的對端地址進(jìn)行數(shù)據(jù)的傳輸。
由上述技術(shù)方案可以看出,本發(fā)明所述的基于流控制傳輸協(xié)議的多地址選擇方法實現(xiàn)了在SCTP端點存在多地址的情況下,如果使用的首選路徑故障,那么通過遍歷算法,可以找出可用的路徑,且在選址過程中可以保證SCTP端點所存在的各個地址均可以被選擇到;同時,本發(fā)明對于主用的本地地址或?qū)Χ说刂吩?jīng)失效過后又恢復(fù)的情況,SCTP連接仍然可以使用主用地址進(jìn)行數(shù)據(jù)傳輸,以滿足用戶的傳輸需求。
圖1為本發(fā)明的具體實施方式
流程圖;圖2為對主用的本地地址的選擇過程流程圖;圖3為對主用的對端地址的選擇過程流程圖。
具體實施例方式
本發(fā)明所述的基于流控制傳輸協(xié)議的多地址選擇方法的具體實施方式
如圖1所示,包括以下步驟地步驟1確定需要選擇新的地址進(jìn)行數(shù)據(jù)的發(fā)送;如當(dāng)數(shù)據(jù)需要重新發(fā)送時,便需要重新進(jìn)行地址的選擇;步驟2為需要選擇新的地址進(jìn)行發(fā)送的數(shù)據(jù)在SCTP端點上依次選擇新的對端地址;即每一次重發(fā)選擇的對端地址都更換,且更換對端地址為依次選擇該SCTP端點的各個對端地址;步驟3判斷SCTP端點的所有對端地址是否均已經(jīng)被選擇到,如果是,則執(zhí)行步驟4,否則,對于需要選擇新的地址進(jìn)行發(fā)送的數(shù)據(jù),繼續(xù)執(zhí)行步驟2,繼續(xù)選擇新的對端地址,直至所有的對端地址均被選擇到時執(zhí)行步驟4;假設(shè),記錄數(shù)據(jù)重新發(fā)送的次數(shù)為n1,即已經(jīng)更換對端地址的次數(shù)為n1,且該SCTP端點存在的對端地址個數(shù)為N1,那么在重新發(fā)送數(shù)據(jù)時,首先選擇下一個對端地址進(jìn)行數(shù)據(jù)的傳輸,并判斷(n1-N1)是否等于0,如果等于0,則說明所有的對端地址均被選擇到,執(zhí)行步驟4,并將數(shù)據(jù)重新發(fā)送的次數(shù)n1清0,否則,保持本地地址不改變,繼續(xù)執(zhí)行步驟2,并更新數(shù)據(jù)重新發(fā)送的次數(shù)n1;步驟4為需要選擇新的地址進(jìn)行發(fā)送的數(shù)據(jù)依次選擇本地地址,即每一次重新發(fā)送數(shù)據(jù)選擇的本地地址需要根據(jù)所有的對端地址是否全部都被選擇更換過,如果所有的對端地址都已選擇過,才開始更換新的本地地址,以保證所有的地址對能夠被選到;假設(shè),記錄數(shù)據(jù)重新發(fā)送的次數(shù)為n2,即已經(jīng)更換本地地址的次數(shù)為n2,且該SCTP端點存在的對端地址個數(shù)為N2,那么在重新發(fā)送數(shù)據(jù)時,首先選擇下一個本地地址進(jìn)行數(shù)據(jù)的傳輸,并判斷(n2-N2)是否等于0,如果等于0,則說明所有的本地地址均被選擇到,執(zhí)行步驟2,并將數(shù)據(jù)重新發(fā)送的次數(shù)n2清0,否則,保持對端地址不改變,繼續(xù)執(zhí)行步驟4,并更新數(shù)據(jù)重新發(fā)送的次數(shù)n2。
本發(fā)明所述的基于流控制傳輸協(xié)議的多地址選擇方法還包括對主用地址發(fā)生故障時的處理過程,該過程又進(jìn)一步包括對主用的本地地址發(fā)生故障時的處理過程和對主用的對端地址發(fā)生的處理過程,其中主用的本地地址為用戶指定的進(jìn)行數(shù)據(jù)傳輸時所使用的本地地址,如果主用的本地地址正常,則進(jìn)行數(shù)據(jù)發(fā)送選用該主用的本地地址作為發(fā)送該數(shù)據(jù)的本地地址,如果主用的本地地址發(fā)生故障,則選擇該SCTP端點上其他好的本地地址進(jìn)行數(shù)據(jù)的傳輸;對主用的本地址發(fā)生故障的處理過程參見圖2,具體包括以下步驟
步驟5確定主用的本地地址由激活變?yōu)楣收?,并選擇該SCTP端點上的其他好的本地地址進(jìn)行數(shù)據(jù)傳輸;步驟6啟動定時器,設(shè)定的定時器的定時時長不小于將所有本地地址輪詢一遍的時間;步驟7定時器超時時,檢查判斷主用的本地地址是否已可用,即是否恢復(fù)正常,如果仍然故障,則重新啟動定時器,即執(zhí)行步驟6;否則,執(zhí)行步驟8;步驟8選擇該恢復(fù)正常的主用本地地址進(jìn)行數(shù)據(jù)的傳輸。
主用的對端地址為用戶指定的進(jìn)行數(shù)據(jù)傳輸時所使用的對端地址,如果主用的對端地址正常,則進(jìn)行數(shù)據(jù)發(fā)送選用該主用的對端地址作為發(fā)送該數(shù)據(jù)的對端地址,如果主用的對端地址發(fā)生故障,則選擇該SCTP端點上其他好的對端地址進(jìn)行數(shù)據(jù)的傳輸;對主用的對端地址選擇過程參見圖3,具體包括以下步驟步驟9當(dāng)通過心跳報文或者數(shù)據(jù)重新發(fā)送情況,發(fā)現(xiàn)主用的對端地址故障時,則選擇該SCTP端點上的其他對端地址進(jìn)行數(shù)據(jù)的傳輸;步驟10當(dāng)發(fā)送心跳報文的定時器超時時,向主用的對端地址發(fā)送心跳消息以探測該主用的對端地址是否恢復(fù)正常;即,當(dāng)發(fā)送心跳的定時器超時,則需要選擇空閑時間最長的對端地址發(fā)送一個心跳消息以探測對端地址是否恢復(fù),該對端地址可能是主用的對端地址,也可能不是主用的對端地址,所述的空閑指的是未收發(fā)數(shù)據(jù);如果找到的空閑的對端地址不是用戶指定的主用的對端地址,則需要同時向主用的對端地址發(fā)送一個心跳消息;步驟11判斷是否收到了主用的對端地址返回的心跳響應(yīng)報文,如果收到,則執(zhí)行步驟12,否則,執(zhí)行步驟13;步驟12如果收到了主用的對端地址發(fā)送來的心跳響應(yīng)報文,且當(dāng)前使用的對端地址不是該主用的對端地址,則選擇該主用的對端地址進(jìn)行數(shù)據(jù)的傳輸;步驟13在該SCTP端點上選擇其他好的對端地址進(jìn)行數(shù)據(jù)的傳輸。
權(quán)利要求
1.一種基于流控制傳輸協(xié)議的多地址選擇方法,其特征在于對存在多地址的SCTP(流控制傳輸協(xié)議)端點需要更換發(fā)送數(shù)據(jù)所選擇的地址時,分別依次選擇使用該SCTP端點上所有的對端地址及本地地址。
2.根據(jù)權(quán)利要求1所述的基于流控制傳輸協(xié)議的多地址選擇方法,其特征在于該方法包括a、為需要選擇新的地址進(jìn)行發(fā)送的數(shù)據(jù)選擇新的對端地址,并進(jìn)行數(shù)據(jù)的發(fā)送;b、判斷SCTP端點所有的對端地址是否均已經(jīng)被選擇到,如果是,執(zhí)行步驟c,否則,執(zhí)行步驟a;c、為需要選擇新的地址進(jìn)行發(fā)送的數(shù)據(jù)選擇新的本地地址,并進(jìn)行數(shù)據(jù)的發(fā)送。
3.根據(jù)權(quán)利要求2所述的基于流控制傳輸協(xié)議的多地址選擇方法,其特征在于所述的步驟a為為確定需要選擇新的地址進(jìn)行發(fā)送的數(shù)據(jù)依次選擇新的對端地址作為其對端地址,并進(jìn)行數(shù)據(jù)的發(fā)送。
4.根據(jù)權(quán)利要求2或3所述的基于流控制傳輸協(xié)議的多地址選擇方法,其特征在于所述的步驟b為記錄已經(jīng)更換對端地址次數(shù),并判斷已經(jīng)更換對端地址次數(shù)是否等于該SCTP端點存在的對端地址數(shù)目,如果等于,則執(zhí)行步驟c,否則,執(zhí)行步驟a。
5.根據(jù)權(quán)利要求2所述的基于流控制傳輸協(xié)議的多地址選擇方法,其特征在于所述的步驟c為c1、為需要選擇新的地址進(jìn)行發(fā)送的數(shù)據(jù)選擇新的本地地址,并進(jìn)行數(shù)據(jù)的發(fā)送;c2、記錄已經(jīng)更換本地地址次數(shù),并判斷已經(jīng)更換本地地址次數(shù)是否等于該SCTP端點存在的本地地址數(shù)目,如果等于,則執(zhí)行步驟a,否則,繼續(xù)執(zhí)行步驟c1。
6.根據(jù)權(quán)利要求1或2所述的基于流控制傳輸協(xié)議的多地址選擇方法,其特征在于該方法還包括對主用的本地地址發(fā)生故障時的處理過程d、確定主用的本地地址發(fā)生故障,選擇該SCTP端點上其他好的本地地址進(jìn)行數(shù)據(jù)傳輸,并啟動定時器;e、當(dāng)定時器超時時,判斷主用的本地地址是否可用,如果可用,則執(zhí)行選擇該恢復(fù)正常的本地地址進(jìn)行數(shù)據(jù)的傳輸,否則,執(zhí)行步驟f;f、重新啟動定時器,并在定時器超時時執(zhí)行步驟e。
7.根據(jù)權(quán)利要求6所述的基于流控制傳輸協(xié)議的多地址選擇方法,其特征在于所述的定時器的定時時長不小于將所有本地地址輪詢一遍的時間。
8.根據(jù)權(quán)利要求1或2所述的基于流控制傳輸協(xié)議的多地址選擇方法,其特征在于該方法還包括對主用的對端地址發(fā)生故障時的處理過程g、確定主用的對端地址發(fā)生故障,選擇該SCTP端點上的其他對端地址進(jìn)行數(shù)據(jù)的傳輸;h、當(dāng)發(fā)送心跳報文的定時器超時時,向主用的對端地址發(fā)送心跳消息;i、判斷是否收到了主用的對端地址返回的心跳響應(yīng)報文,如果收到,則執(zhí)行步驟j,否則,執(zhí)行步驟k;j、選擇該主用的對端地址進(jìn)行數(shù)據(jù)的傳輸;k、在該SCTP端點上選擇其他好的對端地址進(jìn)行數(shù)據(jù)的傳輸。
全文摘要
本發(fā)明涉及一種基于流控制傳輸協(xié)議的多地址選擇方法。該方法實現(xiàn)了對于存在多地址的SCTP(流控制傳輸協(xié)議)端點進(jìn)行數(shù)據(jù)重新傳輸時,分別依次選擇使用所有的對端及本地地址;這樣,如果使用的首選路徑故障,還可以找出其他可用的路徑,且在選址過程中可以保證SCTP端點所存在的各個地址均可以被選擇到;同時,本發(fā)明對于主用的本地地址或?qū)Χ说刂吩?jīng)失效過后又恢復(fù)的情況,SCTP連接仍然可以使用主用地址進(jìn)行數(shù)據(jù)傳輸,以滿足用戶的傳輸需求。
文檔編號H04Q3/00GK1534951SQ0310890
公開日2004年10月6日 申請日期2003年4月2日 優(yōu)先權(quán)日2003年4月2日
發(fā)明者林銘, 林 銘 申請人:華為技術(shù)有限公司