欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于dvpn的數(shù)據(jù)傳輸方法和設(shè)備的制作方法

文檔序號(hào):7867244閱讀:183來源:國(guó)知局
專利名稱:一種基于dvpn的數(shù)據(jù)傳輸方法和設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別是涉及一種基于DVPN(Dynamic Virtual PrivateNetwork,動(dòng)態(tài)虛擬專用網(wǎng)絡(luò))的數(shù)據(jù)傳輸方法和設(shè)備。
背景技術(shù)
越來越多的企業(yè)希望利用公共網(wǎng)絡(luò)組建VPN (Virtual Private Network,虛擬專用網(wǎng)絡(luò)),以連接地理位置不同的多個(gè)分支機(jī)構(gòu);然而企業(yè)分支機(jī)構(gòu)通常采用動(dòng)態(tài)地址接入公共網(wǎng)絡(luò),使得通信一端無法事先知道對(duì)端的公網(wǎng)地址,為組建VPN提出了難題。為此提出了 DVPN 技術(shù),其通過 NHRP (Next Hop Resolution Protocol,下一跳解析協(xié)議)或者 VAM(VPN Address Management, VPN地址管理)協(xié)議收集、維護(hù)和分發(fā)動(dòng)態(tài)變化的公網(wǎng)地址信息,從而在企業(yè)網(wǎng)各分支機(jī)構(gòu)使用動(dòng)態(tài)地址接入公網(wǎng)的情況下,在各分支機(jī)構(gòu)間建立VPN。 DVPN包括Full-Mesh (全互聯(lián))網(wǎng)絡(luò),在Full-Mesh網(wǎng)絡(luò)中,Spoke之間可以建立direct (直連)隧道直接進(jìn)行通信,且Hub主要作為路由信息交換的中心;具體的,Spoke在向Server (服務(wù)器)注冊(cè)后可以獲得Hub的信息,并與Hub建立永久的隧道連接;且任意兩個(gè)Spoke之間可以建立direct隧道,該direct隧道是動(dòng)態(tài)的,在一段規(guī)定時(shí)間內(nèi)沒有數(shù)據(jù)交互時(shí)需要被刪除。在Full-Mesh網(wǎng)絡(luò)中,隧道建立過程包括如下步驟
步驟1、如圖1所示的Site(節(jié)點(diǎn))接入網(wǎng)絡(luò)的初始狀態(tài)示意圖;在初始狀態(tài)下,各Site都接入到網(wǎng)絡(luò),但彼此之間沒有建立隧道。步驟2、如圖2所示的Site向Server注冊(cè)示意圖;在各Site向Server注冊(cè)的過程中,各Site可以通過注冊(cè)請(qǐng)求報(bào)文和回應(yīng)報(bào)文的交互,獲得Hub或Spoke的身份,且在Spoke和Hub之間建立隧道;其中,該Server可以是NHS (對(duì)應(yīng)于NHRP實(shí)現(xiàn)的方式)或者VAM Server (對(duì)應(yīng)于VAM實(shí)現(xiàn)的方式)。步驟3、如圖3所示的Spoke之間建立direct隧道示意圖;在Spoke之間建立direct隧道的過程中,假設(shè)Spokel與PCl相連,Spoke2與PC2相連,當(dāng)PCl需要發(fā)送數(shù)據(jù)給PC2時(shí),Spokel向Server發(fā)送下一跳解析請(qǐng)求報(bào)文,Server將Spoke2注冊(cè)的公網(wǎng)地址通過下一跳解析響應(yīng)報(bào)文通知給Spokel,之后Spokel可以利用Spoke2的公網(wǎng)地址建立到Spoke2 的 direct 隧道。在所有Spoke之間都建立direct隧道之后,可以形成一個(gè)Full-Mesh網(wǎng)絡(luò),如圖4所示,為Full-Mesh網(wǎng)絡(luò)的示意圖;該網(wǎng)絡(luò)中包括Spoke和Hub之間的隧道以及Spoke和Spoke之間的direct隧道;此時(shí),各Spoke之間的數(shù)據(jù)可以直接通過Spoke之間的direct隧道轉(zhuǎn)發(fā),而不需要通過Hub進(jìn)行中轉(zhuǎn)。現(xiàn)有技術(shù)中,Spoke之間在通過direct隧道進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)時(shí),Spoke之間的direct隧道并不一定是最短轉(zhuǎn)發(fā)路徑。如圖5所示,為Full-Mesh網(wǎng)絡(luò)轉(zhuǎn)發(fā)路徑Cost (開銷)示意圖;Sp0kel到達(dá)Spoke2的direct隧道需要經(jīng)歷8跳(此轉(zhuǎn)發(fā)路徑經(jīng)過8個(gè)路由器或三層交換機(jī)),而Spokel至Hub至Spoke2的路徑需要經(jīng)歷2+4=6跳,Spokel至Spoke3至Spoke2的路徑需要經(jīng)歷2+2=4跳。

發(fā)明內(nèi)容
本發(fā)明提供一種基于DVPN的數(shù)據(jù)傳輸方法和設(shè)備,以通過較小的路徑開銷傳輸數(shù)據(jù),并降低數(shù)據(jù)的轉(zhuǎn)發(fā)延遲。為了達(dá)到上述目的,本發(fā)明實(shí)施例提供一種基于動(dòng)態(tài)虛擬專用網(wǎng)絡(luò)DVPN的數(shù)據(jù)傳輸方法,應(yīng)用于包括多個(gè)Spoke的網(wǎng)絡(luò)中,各Spoke上維護(hù)有鄰居開銷Cost表,所述鄰居Cost表中記錄了本設(shè)備與鄰居Spoke之間的Cost值,該方法包括以下步驟
Spoke向鄰居Spoke發(fā)送開銷請(qǐng)求Cost Request報(bào)文,所述Cost Request報(bào)文中攜 帶了目的Spoke的信息;由所述鄰居Spoke在收到所述Cost Request報(bào)文之后,利用所述目的Spoke的信息查詢本地維護(hù)的鄰居Cost表,獲得本設(shè)備與所述目的Spoke之間的Cost值;
所述Spoke接收鄰居Spoke返回的開銷響應(yīng)Cost Response報(bào)文,所述Cost Response報(bào)文中攜帶了所述鄰居Spoke與所述目的Spoke之間的Cost值;
所述Spoke比較本設(shè)備與所述目的Spoke之間的Cost值和本設(shè)備至所述鄰居Spoke至所述目的Spoke之間的Cost值,并在需要向所述目的Spoke發(fā)送數(shù)據(jù)時(shí),通過Cost值最小的路徑向所述目的Spoke發(fā)送數(shù)據(jù)。所述網(wǎng)絡(luò)中還包括有服務(wù)器,各Spoke維護(hù)鄰居Cost表的過程,進(jìn)一步包括各Spoke在向所述服務(wù)器發(fā)起注冊(cè)的過程中,接收來自所述服務(wù)器的注冊(cè)應(yīng)答報(bào)文,所述注冊(cè)應(yīng)答報(bào)文中攜帶了生存時(shí)間TTL值N;
各Spoke均向本設(shè)備的鄰居Spoke發(fā)送保活Keepalive報(bào)文,所述Keepalive報(bào)文中攜帶了所述TTL值N;
各Spoke在收到來自鄰居Spoke的Keepalive報(bào)文后,獲得Keepalive報(bào)文中攜帶的TTL值M,并確定本設(shè)備與鄰居Spoke之間的Cost值為(N_M);
各Spoke在本地維護(hù)的鄰居Cost表中記錄所述鄰居Spoke的信息與所述Cost值(N_M)之間的對(duì)應(yīng)關(guān)系。所述目的Spoke的信息包括目的Spoke的公網(wǎng)地址;所述Spoke向鄰居Spoke發(fā)送開銷請(qǐng)求Cost Request報(bào)文的過程,進(jìn)一步包括
所述Spoke在需要向目的Spoke發(fā)送數(shù)據(jù)時(shí),向鄰居Spoke發(fā)送攜帶所述目的Spoke的公網(wǎng)地址的Cost Request報(bào)文。所述Spoke通過Cost值最小的路徑向所述目的Spoke發(fā)送數(shù)據(jù),具體包括所述Spoke在Cost值最小的路徑為所述Spoke至鄰居Spoke至目的Spoke時(shí),通過所述Spoke與目的Spoke之間的direct隧道地址對(duì)所述數(shù)據(jù)進(jìn)行第一層封裝,并通過所述Spoke與鄰居Spoke之間的direct隧道地址對(duì)第一層封裝后的數(shù)據(jù)進(jìn)行第二層封裝,并將第二層封裝后的數(shù)據(jù)發(fā)送給所述鄰居Spoke ;
由所述鄰居Spoke在收到第二層封裝后的數(shù)據(jù)時(shí),解第二層封裝得到第一層封裝后的數(shù)據(jù),并將第一層封裝后的數(shù)據(jù)發(fā)送給所述目的Spoke。所述Spoke通過Cost值最小的路徑向所述目的Spoke發(fā)送數(shù)據(jù),具體包括所述Spoke在Cost值最小的路徑為所述Spoke至鄰居Spoke至目的Spoke時(shí),通過所述Spoke與鄰居Spoke之間的direct隧道地址對(duì)所述數(shù)據(jù)進(jìn)行封裝,并在封裝后的數(shù)據(jù)的指定字段中攜帶所述目的Spoke的公網(wǎng)地址,并將封裝后的數(shù)據(jù)發(fā)送給所述鄰居Spoke ;
由所述鄰居Spoke在收到封裝后的數(shù)據(jù)時(shí),如果發(fā)現(xiàn)指定字段中攜帶的公網(wǎng)地址不是本設(shè)備的公網(wǎng)地址,則將封裝后的數(shù)據(jù)的目的地址修改為所述指定字段中攜帶的公網(wǎng)地址,并將修改后的數(shù)據(jù)發(fā)送給所述目的Spoke。本發(fā)明實(shí)施例提供一種基于動(dòng)態(tài)虛擬專用網(wǎng)絡(luò)DVPN的數(shù)據(jù)傳輸設(shè)備,作為Spoke應(yīng)用于包括多個(gè)Spoke的網(wǎng)絡(luò)中,所述設(shè)備包括
維護(hù)模塊,用于維護(hù)鄰居開銷Cost表,所述鄰居Cost表中記錄了本設(shè)備與鄰居Spoke之間的Cost值;
報(bào)文發(fā)送模塊,用于向鄰居Spoke發(fā)送開銷請(qǐng)求Cost Request報(bào)文,所述CostRequest報(bào)文中攜帶了目的Spoke的信息;由所述鄰居Spoke在收到所述Cost Request報(bào)文之后,利用所述目的Spoke的信息查詢本地維護(hù)的鄰居Cost表,獲得本設(shè)備與所述目的 Spoke之間的Cost值;
接收模塊,用于接收鄰居Spoke返回的開銷響應(yīng)Cost Response報(bào)文,所述CostResponse報(bào)文中攜帶了所述鄰居Spoke與目的Spoke之間的Cost值;
比較模塊,用于比較本設(shè)備與所述目的Spoke之間的Cost值和本設(shè)備至所述鄰居Spoke至所述目的Spoke之間的Cost值;
數(shù)據(jù)發(fā)送模塊,用于在需要向所述目的Spoke發(fā)送數(shù)據(jù)時(shí),通過Cost值最小的路徑向所述目的Spoke發(fā)送數(shù)據(jù)。所述網(wǎng)絡(luò)中還包括有服務(wù)器;所述維護(hù)模塊,進(jìn)一步用于在向所述服務(wù)器發(fā)起注冊(cè)的過程中,接收來自所述服務(wù)器的注冊(cè)應(yīng)答報(bào)文,且所述注冊(cè)應(yīng)答報(bào)文中攜帶了生存時(shí)間TTL值N ;向本設(shè)備的鄰居Spoke發(fā)送?;頚eepalive報(bào)文,所述Keepalive報(bào)文中攜帶了所述TTL值N ;在收到來自鄰居Spoke的Keepalive報(bào)文后,獲得Keepalive報(bào)文中攜帶的TTL值M,并確定本設(shè)備與鄰居Spoke之間的Cost值為(N-M);在本地維護(hù)的鄰居Cost表中記錄所述鄰居Spoke的信息與所述Cost值(N-M)之間的對(duì)應(yīng)關(guān)系。所述目的Spoke的信息包括所述目的Spoke的公網(wǎng)地址;所述報(bào)文發(fā)送模塊,具體用于在需要向目的Spoke發(fā)送數(shù)據(jù)時(shí),向鄰居Spoke發(fā)送攜帶所述目的Spoke的公網(wǎng)地址的 Cost Request 報(bào)文。所述數(shù)據(jù)發(fā)送模塊,進(jìn)一步用于在Cost值最小的路徑為本設(shè)備至鄰居Spoke至目的Spoke時(shí),通過本設(shè)備與目的Spoke之間的direct隧道地址對(duì)所述數(shù)據(jù)進(jìn)行第一層封裝,并通過本設(shè)備與鄰居Spoke之間的direct隧道地址對(duì)第一層封裝后的數(shù)據(jù)進(jìn)行第二層封裝,并將第二層封裝后的數(shù)據(jù)發(fā)送給所述鄰居Spoke ;由所述鄰居Spoke在收到第二層封裝后的數(shù)據(jù)時(shí),解第二層封裝得到第一層封裝后的數(shù)據(jù),并將第一層封裝后的數(shù)據(jù)發(fā)送給所述目的Spoke。所述數(shù)據(jù)發(fā)送模塊,進(jìn)一步用于在Cost值最小的路徑為本設(shè)備至鄰居Spoke至目的Spoke時(shí),通過本設(shè)備與鄰居Spoke之間的direct隧道地址對(duì)所述數(shù)據(jù)進(jìn)行封裝,并在封裝后的數(shù)據(jù)的指定字段中攜帶所述目的Spoke的公網(wǎng)地址,并將封裝后的數(shù)據(jù)發(fā)送給所述鄰居Spoke ;由所述鄰居Spoke在收到封裝后的數(shù)據(jù)時(shí),如果發(fā)現(xiàn)指定字段中攜帶的公網(wǎng)地址不是本設(shè)備的公網(wǎng)地址,則將封裝后的數(shù)據(jù)的目的地址修改為所述指定字段中攜帶的公網(wǎng)地址,并將修改后的數(shù)據(jù)發(fā)送給所述目的Spoke。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例至少具有以下優(yōu)點(diǎn)本發(fā)明實(shí)施例中,能夠確定DVPN中各Spoke之間轉(zhuǎn)發(fā)數(shù)據(jù)的最短路徑,并可以通過最短路徑傳輸數(shù)據(jù),從而以較小的路徑開銷傳輸數(shù)據(jù),并降低數(shù)據(jù)的轉(zhuǎn)發(fā)延遲。


圖1是現(xiàn)有技術(shù)的Full-Mesh網(wǎng)絡(luò)中Site接入網(wǎng)絡(luò)的初始狀態(tài)示意 圖2是現(xiàn)有技術(shù)的Full-Mesh網(wǎng)絡(luò)中Site向Server注冊(cè)示意 圖3是現(xiàn)有技術(shù)的Full-Mesh網(wǎng)絡(luò)中Spoke之間建立direct隧道示意 圖4是現(xiàn)有技術(shù)的Full-Mesh網(wǎng)絡(luò)的示意圖; 圖5是現(xiàn)有技術(shù)的Full-Mesh網(wǎng)絡(luò)轉(zhuǎn)發(fā)路徑Cost示意 圖6是本發(fā)明實(shí)施例提供的一種基于DVPN的數(shù)據(jù)傳輸方法流程 圖7是本發(fā)明實(shí)施例的具體應(yīng)用場(chǎng)景意 圖8是本發(fā)明實(shí)施例提出的一種基于DVPN的數(shù)據(jù)傳輸設(shè)備結(jié)構(gòu)圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)描述。針對(duì)現(xiàn)有技術(shù)中存在的問題,本發(fā)明實(shí)施例提出了一種基于DVPN的數(shù)據(jù)傳輸方法,該方法可以應(yīng)用在DVPN的Full-Mesh網(wǎng)絡(luò)中;且在Full-Mesh網(wǎng)絡(luò)中,可以至少包括服務(wù)器(Server)和多個(gè)Spoke (包含Hub和Spoke)。本發(fā)明實(shí)施例中,各Spoke上維護(hù)有鄰居Cost表,且該鄰居Cost表中記錄了本設(shè)備與鄰居Spoke之間的Cost值(即轉(zhuǎn)發(fā)跳數(shù)或者策略優(yōu)先級(jí)等)。假設(shè)Full-Mesh網(wǎng)絡(luò)中包括 Spokel、Spoke2 和 Spoke3,則SpokeI 上記錄 Spokel 與 Spoke2 之間的 Cost 值、SpokeI 與Spoke3 之間的 Cost 值;Spoke2 上記錄 Spoke2 與 Spokel 之間的 Cost 值、Spoke2 與 Spoke3之間的Cost值;Spoke3上記錄Spoke3與Spokel之間的Cost值、Spoke3與Spoke2之間的Cost 值。具體的,各Spoke上為了維護(hù)鄰居Cost表,則一種優(yōu)選的實(shí)施方式為
各Spoke在向服務(wù)器發(fā)起注冊(cè)的過程中,接收來自服務(wù)器的注冊(cè)應(yīng)答報(bào)文(Registerr印lay報(bào)文),該注冊(cè)應(yīng)答報(bào)文中攜帶了 TTL (Time To Live,生存時(shí)間)值N ;該TTL值N為Full-Mesh網(wǎng)絡(luò)的TTL值,且服務(wù)器向該Full-Mesh網(wǎng)絡(luò)中的每個(gè)Spoke所發(fā)送的注冊(cè)應(yīng)答報(bào)文中,均攜帶了相同的TTL值N。各Spoke從服務(wù)器上獲得TTL值N之后,如果各Spoke建立起Full-Mesh的隧道連接(即所有Spoke之間建立direct隧道),則各Spoke均向本設(shè)備的鄰居Spoke發(fā)送Keepalive (保活)報(bào)文(Keepalive報(bào)文可以定時(shí)發(fā)送),且該Keepalive報(bào)文的IP頭中攜帶了 TTL值N ;例如,Spokel向Spoke2發(fā)送攜帶TTL值N的Keepalive報(bào)文,并向Spoke3發(fā)送攜帶TTL值N的Keepalive報(bào)文;Spoke2向Spokel發(fā)送攜帶TTL值N的Keepalive報(bào)文,并向Spoke3發(fā)送攜帶TTL值N的Keepalive報(bào)文;Spoke3向Spokel發(fā)送攜帶TTL值N的Keepalive報(bào)文,并向Spoke2發(fā)送攜帶TTL值N的Keepalive報(bào)文。各Spoke在收到來自鄰居Spoke的Keepalive報(bào)文之后,獲得Keepalive報(bào)文中攜帶的TTL值M,并確定本設(shè)備與鄰居Spoke之間的Cost值為(N-M);以Spokel和Spoke2之間的處理為例,Spokel通過本設(shè)備與Spoke2之間的direct隧道向Spoke2發(fā)送攜帶TTL值N的Keepalive報(bào)文,且Spoke2通過本設(shè)備與Spokel之間的direct隧道向Spokel發(fā)送攜帶TTL值N的Keepalive報(bào)文;Spokel在收到來自Spoke2的Keepalive報(bào)文后,從Keepalive報(bào)文的IP頭中獲得TTL值M,并確定Spokel與Spoke2之間的Cost值為(N-M);Spoke2在收到來自Spokel的Keepalive報(bào)文后,從Keepalive報(bào)文的IP頭中獲得TTL值M,并確定Spoke2與Spokel之間的Cost值為(N_M)。各Spoke在本地所維護(hù)的鄰居Cost表中記錄鄰居Spoke的信息(如鄰居Spoke的公網(wǎng)地址)與Cost值(N-M)之間的對(duì)應(yīng)關(guān)系。例如,在Spokel的鄰居Cost表上,將記錄Spoke2的公網(wǎng)地址與Cost值(N-M)之間的對(duì)應(yīng)關(guān)系,并記錄Spoke3的公網(wǎng)地址與Cost值(N-M)之間的對(duì)應(yīng)關(guān)系;在Spoke2的鄰居Cost表上 ,將記錄Spokel的公網(wǎng)地址與Cost值(N-M)之間的對(duì)應(yīng)關(guān)系,并記錄Spoke3的公網(wǎng)地址與Cost值(N-M)之間的對(duì)應(yīng)關(guān)系;在Spoke3的鄰居Cost表上,將記錄Spokel的公網(wǎng)地址與Cost值(N-M)之間的對(duì)應(yīng)關(guān)系,并記錄Spoke2的公網(wǎng)地址與Cost值(N-M)之間的對(duì)應(yīng)關(guān)系。本發(fā)明實(shí)施例中,由于是針對(duì)Full-Mesh網(wǎng)絡(luò)的處理,因此Full-Mesh網(wǎng)絡(luò)的各Spoke按照上述方式進(jìn)行處理后,均可以在本地維護(hù)的鄰居Cost表中記錄鄰居Spoke的信息與Cost值(N-M)之間的對(duì)應(yīng)關(guān)系。基于本地維護(hù)的鄰居Cost表,如圖6所示,本發(fā)明實(shí)施例所提出的基于DVPN的數(shù)據(jù)傳輸方法可以包括以下步驟
步驟601, Spoke向鄰居Spoke(即目的Spoke之外的其它鄰居Spoke)發(fā)送Cost Request(開銷請(qǐng)求)報(bào)文,該Cost Request報(bào)文中攜帶了目的Spoke的信息;該目的Spoke的信息包括但不限于該目的Spoke的公網(wǎng)地址。本發(fā)明實(shí)施例中,Spoke向鄰居Spoke發(fā)送Cost Request報(bào)文的過程,進(jìn)一步包括Spoke在需要向目的Spoke發(fā)送數(shù)據(jù)時(shí),向鄰居Spoke發(fā)送攜帶目的Spoke的公網(wǎng)地址的Cost Request報(bào)文;例如,Spokel在需要向Spoke2發(fā)送數(shù)據(jù)時(shí),向鄰居Spoke發(fā)送攜帶Spoke2的公網(wǎng)地址的Cost Request報(bào)文;或者,Spoke定時(shí)觸發(fā)向鄰居Spoke發(fā)送攜帶目的Spoke的公網(wǎng)地址的Cost Request報(bào)文;例如,Spokel定時(shí)觸發(fā)向鄰居Spoke發(fā)送攜帶Spoke2的公網(wǎng)地址的Cost Request報(bào)文和攜帶Spoke3的公網(wǎng)地址的Cost Request報(bào)文。以圖7為本發(fā)明實(shí)施例的應(yīng)用場(chǎng)景示意圖,則對(duì)于Spokel來說,當(dāng)有數(shù)據(jù)需要通過Spokel轉(zhuǎn)發(fā)給Spoke2時(shí),該Spokel需要向所有鄰居Spoke (即Spoke3、SpokeN和Hub)發(fā)送Cost Request報(bào)文;其中,該Cost Request報(bào)文中攜帶了 Spoke2的公網(wǎng)地址,且該Cost Request報(bào)文用于使各鄰居Spoke查詢本設(shè)備到達(dá)Spoke2的direct隧道的Cost值。步驟602,鄰居Spoke在收到Cost Request報(bào)文之后,利用目的Spoke的信息查詢本地維護(hù)的鄰居Cost表,獲得本設(shè)備與目的Spoke之間的Cost值。具體的,由于鄰居Spoke本地維護(hù)的鄰居Cost表中記錄了鄰居Spoke的信息與Cost值(N-M)之間的對(duì)應(yīng)關(guān)系,因此鄰居Spoke在收到Cost Request報(bào)文之后,可以直接利用目的Spoke的信息查詢到目的Spoke對(duì)應(yīng)的Cost值,該目的Spoke對(duì)應(yīng)的Cost值為本設(shè)備與目的Spoke之間的Cost值。步驟603,鄰居Spoke向Spoke返回Cost Response (開銷響應(yīng))報(bào)文,該CostResponse報(bào)文中攜帶了鄰居Spoke與目的Spoke之間的Cost值。步驟604, Spoke在收到Cost Response報(bào)文之后,比較本設(shè)備與目的Spoke之間的Cost值和本設(shè)備至鄰居Spoke至目的Spoke之間的Cost值,并在需要向目的Spoke發(fā)送數(shù)據(jù)時(shí),通過Cost值最小的路徑向目的Spoke發(fā)送數(shù)據(jù)。如圖7 所不,Spokel 向所有鄰居 Spoke (即 Spoke3、SpokeN 和 Hub)發(fā)送 CostRequest報(bào)文之后,能夠收到來自所有鄰居Spoke的Cost Response報(bào)文;來自Spoke3的Cost Response報(bào)文中攜帶了 Cost值2 (即Spoke3與Spoke2之間的Cost值為2);來自SpokeN的Cost Response報(bào)文中攜帶了 Cost值5 (即SpokeN與Spoke2之間的Cost值為5);來自Hub的Cost Response報(bào)文中攜帶了 Cost值4 (即Hub與Spoke2之間的Cost值為4)?;谏鲜鲟従覵poke向Spoke返回的Cost Response報(bào)文以及Spoke本地維護(hù)的鄰居Cost表,Spokel可以獲知Spokel與Spoke2之間的Cost值為8, Spokel至Spoke3至Spoke2 之間的 Cost 值為 4 (2+2), Spokel 至 SpokeN 至 Spoke2 之間的 Cost 值為 7 (2+5), Spokel至Hub至Spoke2之間的Cost值為6 (2+4);通過比較本設(shè)備與目的Spoke之間的Cost值和本設(shè)備至鄰居Spoke至目的Spoke之間的Cost值,Cost值最小的路徑為Spokel至Spoke3至Spoke2,因此Spokel在需要向Spoke2發(fā)送數(shù)據(jù)時(shí),可以通過Cost值最小的路徑Spoke I至Spoke3至Spoke2的路徑向目的Spoke發(fā)送數(shù)據(jù)。綜上所述,本發(fā)明實(shí)施例能夠優(yōu)化隧道轉(zhuǎn)發(fā)路徑,并降低數(shù)據(jù)轉(zhuǎn)發(fā)延遲。例如,Spokel至Spoke3至Spoke2的Cost值為4,是最短路徑;此時(shí)Spokel可以將PCl發(fā)送給PC2的數(shù)據(jù)從direct隧道切換到Spokel至Spoke3至Spoke2的隧道上進(jìn)行轉(zhuǎn)發(fā),由于減小了轉(zhuǎn)發(fā)路徑的跳數(shù),從而可以降低轉(zhuǎn)發(fā)延遲。本發(fā)明實(shí)施例中,Spoke在收到鄰居Spoke向Spoke返回的Cost Response報(bào)文之前,如果Spoke需要向目的Spoke發(fā)送數(shù)據(jù),則Spoke可以直接通過Spoke和目的Spoke之間的direct隧道轉(zhuǎn)發(fā)數(shù)據(jù);或者,Spoke還可以通過Spoke至Hub至目的Spoke之間的路徑轉(zhuǎn)發(fā)數(shù)據(jù)。本發(fā)明實(shí)施例中,Spoke通過Cost值最小的路徑向目的Spoke發(fā)送數(shù)據(jù)的方式,具體包括但不限于如下方式
方式一、Spoke在Cost值最小的路徑為Spoke至鄰居Spoke至目的Spoke時(shí),通過Spoke與目的Spoke之間的direct隧道地址對(duì)數(shù)據(jù)進(jìn)行第一層封裝,并通過Spoke與鄰居Spoke之間的direct隧道地址對(duì)第一層封裝后的數(shù)據(jù)進(jìn)行第二層封裝,并將第二層封裝后的數(shù)據(jù)發(fā)送給鄰居Spoke ;進(jìn)一步的,鄰居Spoke在收到第二層封裝后的數(shù)據(jù)時(shí),可以解第二層封裝,以得到第一層封裝后的數(shù)據(jù),并將第一層封裝后的數(shù)據(jù)發(fā)送給目的Spoke。如圖7所示,Spokel通過Spokel與Spoke2之間的direct隧道地址對(duì)數(shù)據(jù)(PCI發(fā)送給PC2的數(shù)據(jù))進(jìn)行第一層封裝,但不發(fā)送,并通過Spokel與Spoke3之間的direct隧道地址對(duì)第一層封裝后的數(shù)據(jù)進(jìn)行第二層封裝,并將第二層封裝后的數(shù)據(jù)發(fā)送給Spoke3 ;Spoke3在收到第二層封裝后的數(shù)據(jù)時(shí),解掉第二層封裝,還原為通過Spokel與Spoke2之間的direct隧道地址進(jìn)行封裝的第一層封裝后的數(shù)據(jù),并將第一層封裝后的數(shù)據(jù)發(fā)送給Spoke2。方式二、Spoke在Cost值最小的路徑為Spoke至鄰居Spoke至目的Spoke時(shí),通過Spoke與鄰居Spoke之間的direct隧道地址對(duì)數(shù)據(jù)進(jìn)行封裝,并在封裝后的數(shù)據(jù)的指定字段中攜帶目的Spoke的公網(wǎng)地址,并將封裝后的數(shù)據(jù)發(fā)送給鄰居Spoke ;由鄰居Spoke在收到封裝后的數(shù)據(jù)時(shí),如果發(fā)現(xiàn)指定字段中攜帶的公網(wǎng)地址不是本設(shè)備的公網(wǎng)地址,則將封裝后的數(shù)據(jù)的目的地址修改為指定字段中攜帶的公網(wǎng)地址,并將修改后的數(shù)據(jù)發(fā)送給目的 Spoke。如圖7所示,Spokel通過Spokel與Spoke3之間的direct隧道地址對(duì)數(shù)據(jù)(PCl發(fā)送給PC2的數(shù)據(jù))進(jìn)行封裝,在封裝后的數(shù)據(jù)的指定字段(如私有協(xié)議報(bào)文頭)中攜帶Spoke2的公網(wǎng)地址,并將封裝后的數(shù)據(jù)發(fā)送給Spoke3 ;Spoke3在收到封裝后的數(shù)據(jù)時(shí),如果發(fā)現(xiàn)私有協(xié)議報(bào)文頭中攜帶的公網(wǎng)地址不是本設(shè)備的公網(wǎng)地址,則保留數(shù)據(jù)的源地址,將封裝后的數(shù)據(jù)的目的地址修改為私有協(xié)議報(bào)文頭中攜帶的公網(wǎng)地址,并將修改后的數(shù)據(jù)發(fā)送給Spoke2。
基于與上述方法同樣的發(fā)明構(gòu)思,本發(fā)明實(shí)施例還提出了一種基于動(dòng)態(tài)虛擬專用網(wǎng)絡(luò)DVPN的數(shù)據(jù)傳輸設(shè)備,作為Spoke應(yīng)用于包括多個(gè)Spoke的網(wǎng)絡(luò)中,如圖8所示,所述設(shè)備(即Spoke)包括
維護(hù)模塊11,用于維護(hù)鄰居開銷Cost表,所述鄰居Cost表中記錄了本設(shè)備與鄰居Spoke之間的Cost值;
報(bào)文發(fā)送模塊12,用于向鄰居Spoke發(fā)送開銷請(qǐng)求Cost Request報(bào)文,所述CostRequest報(bào)文中攜帶了目的Spoke的信息;由所述鄰居Spoke在收到所述Cost Request報(bào)文之后,利用所述目的Spoke的信息查詢本地維護(hù)的鄰居Cost表,獲得本設(shè)備與所述目的Spoke之間的Cost值;
接收模塊13,用于接收鄰居Spoke返回的開銷響應(yīng)Cost Response報(bào)文,所述CostResponse報(bào)文中攜帶了鄰居Spoke與目的Spoke之間的Cost值;
比較模塊14,用于比較本設(shè)備與所述目的Spoke之間的Cost值和本設(shè)備至所述鄰居Spoke至所述目的Spoke之間的Cost值;
數(shù)據(jù)發(fā)送模塊15,用于在需要向所述目的Spoke發(fā)送數(shù)據(jù)時(shí),通過Cost值最小的路徑向所述目的Spoke發(fā)送數(shù)據(jù)。所述網(wǎng)絡(luò)中還包括有服務(wù)器;所述維護(hù)模塊11,進(jìn)一步用于在向所述服務(wù)器發(fā)起注冊(cè)的過程中,接收來自所述服務(wù)器的注冊(cè)應(yīng)答報(bào)文,且所述注冊(cè)應(yīng)答報(bào)文中攜帶了生存時(shí)間TTL值N ;向本設(shè)備的鄰居Spoke發(fā)送保活Keepalive報(bào)文,所述Keepalive報(bào)文中攜帶了所述TTL值N ;在收到來自鄰居Spoke的Keepalive報(bào)文后,獲得Keepalive報(bào)文中攜帶的TTL值M,并確定本設(shè)備與鄰居Spoke之間的Cost值為(N_M);在本地維護(hù)的鄰居Cost表中記錄所述鄰居Spoke的信息與所述Cost值(N-M)之間的對(duì)應(yīng)關(guān)系。所述目的Spoke的信息包括所述目的Spoke的公網(wǎng)地址;所述報(bào)文發(fā)送模塊12,具體用于在需要向目的Spoke發(fā)送數(shù)據(jù)時(shí),向鄰居Spoke發(fā)送攜帶所述目的Spoke的公網(wǎng)地址的Cost Request報(bào)文。所述數(shù)據(jù)發(fā)送模塊15,進(jìn)一步用于在Cost值最小的路徑為本設(shè)備至鄰居Spoke至目的Spoke時(shí),通過本設(shè)備與目的Spoke之間的direct隧道地址對(duì)所述數(shù)據(jù)進(jìn)行第一層封裝,并通過本設(shè)備與鄰居Spoke之間的direct隧道地址對(duì)第一層封裝后的數(shù)據(jù)進(jìn)行第二層封裝,并將第二層封裝后的數(shù)據(jù)發(fā)送給所述鄰居Spoke ;由所述鄰居Spoke在收到第二層封裝后的數(shù)據(jù)時(shí),解第二層封裝得到第一層封裝后的數(shù)據(jù),并將第一層封裝后的數(shù)據(jù)發(fā)送給所述目的Spoke。所述數(shù)據(jù)發(fā)送模塊15,進(jìn)一步用于在Cost值最小的路徑為本設(shè)備至鄰居Spoke至目的Spoke時(shí),通過本設(shè)備與鄰居Spoke之間的direct隧道地址對(duì)所述數(shù)據(jù)進(jìn)行封裝,并在封裝后的數(shù)據(jù)的指定字段中攜帶所述目的Spoke的公網(wǎng)地址,并將封裝后的數(shù)據(jù)發(fā)送給所述鄰居Spoke ;由所述鄰居Spoke在收到封裝后的數(shù)據(jù)時(shí),如果發(fā)現(xiàn)指定字段中攜帶的公網(wǎng)地址不是本設(shè)備的公網(wǎng)地址,則將封裝后的數(shù)據(jù)的目的地址修改為所述指定字段中攜帶的公網(wǎng)地址,并將修改后的數(shù)據(jù)發(fā)送給所述目的Spoke。其中,本發(fā)明裝置的各個(gè)模塊可以集成于一體,也可以分離部署。上述模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可以通過硬件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺(tái)的方式來實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ) 介質(zhì)(可以是⑶-ROM,U盤,移動(dòng)硬盤等)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的。本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述進(jìn)行分布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。上述本發(fā)明序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。以上公開的僅為本發(fā)明的幾個(gè)具體實(shí)施例,但是,本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種基于動(dòng)態(tài)虛擬專用網(wǎng)絡(luò)DVPN的數(shù)據(jù)傳輸方法,應(yīng)用于包括多個(gè)Spoke的網(wǎng)絡(luò)中,其特征在于,各Spoke上維護(hù)有鄰居開銷Cost表,所述鄰居Cost表中記錄了本設(shè)備與鄰居Spoke之間的Cost值,該方法包括以下步驟 Spoke向鄰居Spoke發(fā)送開銷請(qǐng)求Cost Request報(bào)文,所述Cost Request報(bào)文中攜帶了目的Spoke的信息;由所述鄰居Spoke在收到所述Cost Request報(bào)文之后,利用所述目的Spoke的信息查詢本地維護(hù)的鄰居Cost表,獲得本設(shè)備與所述目的Spoke之間的Cost值; 所述Spoke接收鄰居Spoke返回的開銷響應(yīng)Cost Response報(bào)文,所述Cost Response報(bào)文中攜帶了所述鄰居Spoke與所述目的Spoke之間的Cost值; 所述Spoke比較本設(shè)備與所述目的Spoke之間的Cost值和本設(shè)備至所述鄰居Spoke至所述目的Spoke之間的Cost值,并在需要向所述目的Spoke發(fā)送數(shù)據(jù)時(shí),通過Cost值最小的路徑向所述目的Spoke發(fā)送數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述網(wǎng)絡(luò)中還包括有服務(wù)器,各Spoke維護(hù)鄰居Cost表的過程,進(jìn)一步包括 各Spoke在向所述服務(wù)器發(fā)起注冊(cè)的過程中,接收來自所述服務(wù)器的注冊(cè)應(yīng)答報(bào)文,所述注冊(cè)應(yīng)答報(bào)文中攜帶了生存時(shí)間TTL值N ; 各Spoke均向本設(shè)備的鄰居Spoke發(fā)送?;頚eepalive報(bào)文,所述Keepalive報(bào)文中攜帶了所述TTL值N ; 各Spoke在收到來自鄰居Spoke的Keepalive報(bào)文后,獲得Keepalive報(bào)文中攜帶的TTL值M,并確定本設(shè)備與鄰居Spoke之間的Cost值為(N-M); 各Spoke在本地維護(hù)的鄰居Cost表中記錄所述鄰居Spoke的信息與所述Cost值(N_M)之間的對(duì)應(yīng)關(guān)系。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述目的Spoke的信息包括目的Spoke的公網(wǎng)地址;所述Spoke向鄰居Spoke發(fā)送開銷請(qǐng)求Cost Request報(bào)文的過程,進(jìn)一步包括 所述Spoke在需要向目的Spoke發(fā)送數(shù)據(jù)時(shí),向鄰居Spoke發(fā)送攜帶所述目的Spoke的公網(wǎng)地址的Cost Request報(bào)文。
4.如權(quán)利要求1所述的方法,其特征在于,所述Spoke通過Cost值最小的路徑向所述目的Spoke發(fā)送數(shù)據(jù),具體包括 所述Spoke在Cost值最小的路徑為所述Spoke至鄰居Spoke至目的Spoke時(shí),通過所述Spoke與目的Spoke之間的direct隧道地址對(duì)所述數(shù)據(jù)進(jìn)行第一層封裝,并通過所述Spoke與鄰居Spoke之間的direct隧道地址對(duì)第一層封裝后的數(shù)據(jù)進(jìn)行第二層封裝,并將第二層封裝后的數(shù)據(jù)發(fā)送給所述鄰居Spoke ; 由所述鄰居Spoke在收到第二層封裝后的數(shù)據(jù)時(shí),解第二層封裝得到第一層封裝后的數(shù)據(jù),并將第一層封裝后的數(shù)據(jù)發(fā)送給所述目的Spoke。
5.如權(quán)利要求1所述的方法,其特征在于,所述Spoke通過Cost值最小的路徑向所述目的Spoke發(fā)送數(shù)據(jù),具體包括 所述Spoke在Cost值最小的路徑為所述Spoke至鄰居Spoke至目的Spoke時(shí),通過所述Spoke與鄰居Spoke之間的direct隧道地址對(duì)所述數(shù)據(jù)進(jìn)行封裝,并在封裝后的數(shù)據(jù)的指定字段中攜帶所述目的Spoke的公網(wǎng)地址,并將封裝后的數(shù)據(jù)發(fā)送給所述鄰居Spoke ; 由所述鄰居Spoke在收到封裝后的數(shù)據(jù)時(shí),如果發(fā)現(xiàn)指定字段中攜帶的公網(wǎng)地址不是本設(shè)備的公網(wǎng)地址,則將封裝后的數(shù)據(jù)的目的地址修改為所述指定字段中攜帶的公網(wǎng)地址,并將修改后的數(shù)據(jù)發(fā)送給所述目的Spoke。
6.一種基于動(dòng)態(tài)虛擬專用網(wǎng)絡(luò)DVPN的數(shù)據(jù)傳輸設(shè)備,作為Spoke應(yīng)用于包括多個(gè)Spoke的網(wǎng)絡(luò)中,其特征在于,所述設(shè)備包括 維護(hù)模塊,用于維護(hù)鄰居開銷Cost表,所述鄰居Cost表中記錄了本設(shè)備與鄰居Spoke之間的Cost值; 報(bào)文發(fā)送模塊,用于向鄰居Spoke發(fā)送開銷請(qǐng)求Cost Request報(bào)文,所述CostRequest報(bào)文中攜帶了目的Spoke的信息;由所述鄰居Spoke在收到所述Cost Request報(bào)文之后,利用所述目的Spoke的信息查詢本地維護(hù)的鄰居Cost表,獲得本設(shè)備與所述目的Spoke之間的Cost值; 接收模塊,用于接收鄰居Spoke返回的開銷響應(yīng)Cost Response報(bào)文,所述CostResponse報(bào)文中攜帶了所述鄰居Spoke與目的Spoke之間的Cost值; 比較模塊,用于比較本設(shè)備與所述目的Spoke之間的Cost值和本設(shè)備至所述鄰居Spoke至所述目的Spoke之間的Cost值; 數(shù)據(jù)發(fā)送模塊,用于在需要向所述目的Spoke發(fā)送數(shù)據(jù)時(shí),通過Cost值最小的路徑向所述目的Spoke發(fā)送數(shù)據(jù)。
7.如權(quán)利要求6所述的設(shè)備,其特征在于,所述網(wǎng)絡(luò)中還包括有服務(wù)器; 所述維護(hù)模塊,進(jìn)一步用于在向所述服務(wù)器發(fā)起注冊(cè)的過程中,接收來自所述服務(wù)器的注冊(cè)應(yīng)答報(bào)文,且所述注冊(cè)應(yīng)答報(bào)文中攜帶了生存時(shí)間TTL值N ;向本設(shè)備的鄰居Spoke發(fā)送?;頚eepalive報(bào)文,所述Keepalive報(bào)文中攜帶了所述TTL值N ;在收到來自鄰居Spoke的Keepalive報(bào)文后,獲得Keepalive報(bào)文中攜帶的TTL值M,并確定本設(shè)備與鄰居Spoke之間的Cost值為(N-M);在本地維護(hù)的鄰居Cost表中記錄所述鄰居Spoke的信息與所述Cost值(N-M)之間的對(duì)應(yīng)關(guān)系。
8.如權(quán)利要求6或7所述的設(shè)備,其特征在于,所述目的Spoke的信息包括所述目的Spoke的公網(wǎng)地址; 所述報(bào)文發(fā)送模塊,具體用于在需要向目的Spoke發(fā)送數(shù)據(jù)時(shí),向鄰居Spoke發(fā)送攜帶所述目的Spoke的公網(wǎng)地址的Cost Request報(bào)文。
9.如權(quán)利要求6所述的設(shè)備,其特征在于, 所述數(shù)據(jù)發(fā)送模塊,進(jìn)一步用于在Cost值最小的路徑為本設(shè)備至鄰居Spoke至目的Spoke時(shí),通過本設(shè)備與目的Spoke之間的direct隧道地址對(duì)所述數(shù)據(jù)進(jìn)行第一層封裝,并通過本設(shè)備與鄰居Spoke之間的direct隧道地址對(duì)第一層封裝后的數(shù)據(jù)進(jìn)行第二層封裝,并將第二層封裝后的數(shù)據(jù)發(fā)送給所述鄰居Spoke ;由所述鄰居Spoke在收到第二層封裝后的數(shù)據(jù)時(shí),解第二層封裝得到第一層封裝后的數(shù)據(jù),并將第一層封裝后的數(shù)據(jù)發(fā)送給所述目的Spoke。
10.如權(quán)利要求6所述的設(shè)備,其特征在于,所述數(shù)據(jù)發(fā)送模塊,進(jìn)一步用于在Cost值最小的路徑為本設(shè)備至鄰居Spoke至目的Spoke時(shí),通過本設(shè)備與鄰居Spoke之間的direct隧道地址對(duì)所述數(shù)據(jù)進(jìn)行封裝,并在封裝后的數(shù)據(jù)的指定字段中攜帶所述目的Spoke的公網(wǎng)地址,并將封裝后的數(shù)據(jù)發(fā)送給所述鄰居Spoke ;由所述鄰居 Spoke在收到封裝后的數(shù)據(jù)時(shí),如果發(fā)現(xiàn)指定字段中攜帶的公網(wǎng)地址不是本設(shè)備的公網(wǎng)地址,則將封裝后的數(shù)據(jù)的目的地址修改為所述指定字段中攜帶的公網(wǎng)地址,并將修改后的數(shù)據(jù)發(fā)送給所述目的Spoke。
全文摘要
本發(fā)明公開了一種基于DVPN的數(shù)據(jù)傳輸方法和設(shè)備,該方法包括Spoke向鄰居Spoke發(fā)送CostRequest報(bào)文;所述Spoke接收所述鄰居Spoke返回的CostResponse報(bào)文,所述CostResponse報(bào)文中攜帶了所述鄰居Spoke與目的Spoke之間的Cost值;所述Spoke比較本設(shè)備與所述目的Spoke之間的Cost值和本設(shè)備至所述鄰居Spoke至所述目的Spoke之間的Cost值,并在需要向所述目的Spoke發(fā)送數(shù)據(jù)時(shí),通過Cost值最小的路徑向所述目的Spoke發(fā)送數(shù)據(jù)。本發(fā)明中,能夠降低數(shù)據(jù)的轉(zhuǎn)發(fā)延遲。
文檔編號(hào)H04L12/741GK103023783SQ20121050727
公開日2013年4月3日 申請(qǐng)日期2012年12月3日 優(yōu)先權(quán)日2012年12月3日
發(fā)明者王佩龍, 毛昱 申請(qǐng)人:杭州華三通信技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
大城县| 甘洛县| 潮州市| 南郑县| 军事| 漠河县| 绥棱县| 冀州市| 麦盖提县| 通州市| 荣昌县| 黑水县| 高青县| 稷山县| 图木舒克市| 奉化市| 万安县| 古蔺县| 哈尔滨市| 建始县| 昌图县| 綦江县| 广汉市| 沾化县| 邵阳市| 阿图什市| 铁岭市| 富川| 兴宁市| 平原县| 鄂伦春自治旗| 梧州市| 武威市| 蓬安县| 墨玉县| 商城县| 正蓝旗| 绥德县| 孝义市| 砚山县| 丹凤县|