專利名稱:一種監(jiān)測(cè)與調(diào)整通用路由封裝隧道狀態(tài)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種通信領(lǐng)域,特別是涉及一種基于GRE協(xié)議下監(jiān)測(cè)與調(diào)整通用路由封裝隧道狀態(tài)的方法。
背景技術(shù):
現(xiàn)有的互聯(lián)網(wǎng)數(shù)據(jù)傳輸主要采用GRE(Generic Router Encapsulation)技術(shù),它是一種為滿足數(shù)據(jù)傳輸而建立的隧道封裝協(xié)議。主要用于在網(wǎng)絡(luò)通信的兩個(gè)端點(diǎn)之間建立一個(gè)GRE隧道。通過(guò)在各端的tunnel口配置GRE協(xié)議達(dá)到相互建立通信隧道的目的,并通過(guò)此隧道來(lái)實(shí)現(xiàn)這兩點(diǎn)間的數(shù)據(jù)傳輸。由于這項(xiàng)技術(shù)在其實(shí)際運(yùn)用中具有簡(jiǎn)單的低成本的特性,所以,已經(jīng)成為在網(wǎng)絡(luò)數(shù)據(jù)通信協(xié)議中,IPV4向IPV6過(guò)渡的一種解決方案。然而,GRE協(xié)議中所描述的在網(wǎng)絡(luò)端點(diǎn)間所建立的GRE tunnel(GRE隧道),其本身從協(xié)議上來(lái)說(shuō)是一種不穩(wěn)定的狀態(tài)。也就是說(shuō)本地GRE端點(diǎn)(采用GRE協(xié)議的端點(diǎn))不保存任何關(guān)于對(duì)端GRE端點(diǎn)的信息。因此,這個(gè)本地端點(diǎn)就不知道對(duì)端端點(diǎn)是否存活。而在實(shí)際的數(shù)據(jù)通信中知道對(duì)端是否存活對(duì)本地端點(diǎn)是很有用處的。如果知道GRE對(duì)端不再存活,我們可以把本地的tunnel口設(shè)置為down狀態(tài)。假如有一種方法能在數(shù)據(jù)傳輸過(guò)程中實(shí)現(xiàn)對(duì)對(duì)端GRE端點(diǎn)的存活狀態(tài)的監(jiān)測(cè),并根據(jù)監(jiān)測(cè)的情況對(duì)本地的tunnel口狀態(tài)進(jìn)行動(dòng)態(tài)調(diào)整,這將給數(shù)據(jù)通信帶來(lái)很大好處。例如,路由表中一該tunnel口作為外出端口的時(shí)候,我們可以刪除該相關(guān)路由表項(xiàng),或者甚至可以選擇另外一個(gè)可選路由表項(xiàng)來(lái)代替刪除的表項(xiàng)。另外,如果知道對(duì)端不再存活,可以停止發(fā)送報(bào)文,減少網(wǎng)絡(luò)通信的負(fù)擔(dān)。
發(fā)明內(nèi)容
為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種監(jiān)測(cè)與調(diào)整通用路由封裝隧道狀態(tài)的方法,它是一種GRE keepalive機(jī)制,這種機(jī)制是依照《RFC 1701》、《RFC 1702》和《RFC 2784》完成的,應(yīng)用于采用GRE協(xié)議的數(shù)據(jù)傳輸隧道中。
本發(fā)明的內(nèi)容是利用支持GRE協(xié)議功能的數(shù)據(jù)通信設(shè)備通過(guò)本地GRE發(fā)送端點(diǎn)發(fā)送keepalive報(bào)文來(lái)實(shí)現(xiàn)對(duì)接收端通信狀態(tài)進(jìn)行監(jiān)測(cè)并動(dòng)態(tài)改變發(fā)送端GRE端點(diǎn)的tunnel口的狀態(tài)。該方法的作用是使采用GRE協(xié)議的通信兩端在利用GRE隧道進(jìn)行數(shù)據(jù)傳輸?shù)倪^(guò)程中,通過(guò)本發(fā)明的機(jī)制來(lái)提高網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)挠行砸约皽p少為確保數(shù)據(jù)傳輸所造成的占用網(wǎng)絡(luò)資源的浪費(fèi)。
為了實(shí)現(xiàn)以上所述的發(fā)明方法,該方法的具體步驟為首先在本地GRE端點(diǎn)設(shè)置一個(gè)keepalive的計(jì)時(shí)器,每到一定時(shí)間就發(fā)送一個(gè)keepalive報(bào)文。其次,對(duì)端收到這樣的一個(gè)keepalive報(bào)文后,不會(huì)對(duì)它進(jìn)行特別處理,只會(huì)對(duì)它進(jìn)行普通的GRE解封裝,然后交給上層協(xié)議處理(ICMP),ICMP處理順利完成后就會(huì)給一個(gè)ICMP響應(yīng)報(bào)文,這個(gè)響應(yīng)的ICMP報(bào)文同樣要經(jīng)過(guò)GRE的封裝處理,形成一個(gè)keepalive響應(yīng)報(bào)文。當(dāng)然,對(duì)端在機(jī)制方法上不需要一定支持keepalive機(jī)制,因?yàn)樗鼤?huì)像一般GRE協(xié)議方法處理那樣對(duì)待對(duì)方發(fā)送過(guò)來(lái)的keepalive報(bào)文。接著假如因?yàn)閷?duì)端不存在導(dǎo)致本地發(fā)送的keepalive報(bào)文后沒(méi)有收到響應(yīng)報(bào)文,本地的GRE端點(diǎn)會(huì)按本地的計(jì)時(shí)器設(shè)置,每到一定的時(shí)間就發(fā)送同樣的keepalive報(bào)文,但是在計(jì)時(shí)器超時(shí)之前沒(méi)有收到對(duì)端發(fā)送過(guò)來(lái)的keepalive響應(yīng)報(bào)文就會(huì)增加一條錯(cuò)誤記錄,直到超過(guò)最大錯(cuò)誤次數(shù)的時(shí)候就標(biāo)志著對(duì)端GRE隧道不再存在。此時(shí),本地GRE端點(diǎn)設(shè)置tunnel口為down狀態(tài),但是還需要定時(shí)發(fā)送keepalive報(bào)文,這樣做的目的是為了動(dòng)態(tài)發(fā)現(xiàn)對(duì)端可能重新存活的端口,重新建立用來(lái)數(shù)據(jù)傳輸?shù)腉RE隧道。當(dāng)然對(duì)于本地設(shè)置發(fā)送keepalive報(bào)文的時(shí)間,可根據(jù)實(shí)際的網(wǎng)絡(luò)情況作動(dòng)態(tài)更改。
另外,本發(fā)明還有如下技術(shù)特征1]本發(fā)明中所涉及的通信報(bào)文是利用BDCOM已有的GRE接口和Tunnel接口,把code=0,type=8類型的ICMP報(bào)文,用GRE封裝成一個(gè)GRE報(bào)文作為我們的keepalive報(bào)文格式,如圖1所示。
2]本發(fā)明沒(méi)有對(duì)網(wǎng)絡(luò)部署做出明顯的改動(dòng)。如果在數(shù)據(jù)傳輸過(guò)程中,通信兩端有一端或兩端同時(shí)想配置GRE keepalive機(jī)制方法,只要這兩端都支持GRE協(xié)議就可以。對(duì)雙方而言,不需要做任何改動(dòng)。其應(yīng)用代價(jià)很小。
3]假如GRE通信的兩端都采用GRE keepalive機(jī)制方法,則這兩端不需要和對(duì)方的keepalive的計(jì)時(shí)器進(jìn)行同步。也就是說(shuō),雙方的keepalive計(jì)時(shí)器可以相互獨(dú)立,兩端可以設(shè)置不一樣的參數(shù)值。這樣減少了通信雙方在協(xié)商過(guò)程和管理匹配上的復(fù)雜程度,易于應(yīng)用。
本發(fā)明的有益效果為本發(fā)明所述方法在keepalive報(bào)文的類型上沒(méi)有引入新的報(bào)文種類,降低了該機(jī)制方法在具體實(shí)施中的復(fù)雜度,并且充分利用了現(xiàn)有的系統(tǒng)功能,實(shí)現(xiàn)了用靈活的設(shè)計(jì)獲取額外的功能。該方法通過(guò)利用對(duì)上述報(bào)文的發(fā)送與回應(yīng),可以動(dòng)態(tài)發(fā)現(xiàn)GRE對(duì)端的狀態(tài)信息,以此相應(yīng)改變Tunnel口的狀態(tài)信息。同時(shí),該方法作為一種機(jī)制對(duì)數(shù)據(jù)傳輸?shù)男阅軟](méi)有明顯的消耗。其高效簡(jiǎn)潔的特點(diǎn)在沒(méi)有增加現(xiàn)有系統(tǒng)復(fù)雜度的情況下,為IPV6和IPV4的聯(lián)合部署提供了一種新的更完善的系統(tǒng)解決方案。
圖1為在GRE keepalive機(jī)制中的keepalive報(bào)文格式圖2為GRE協(xié)議下本地發(fā)送的keepalive報(bào)文圖3為GRE協(xié)議下對(duì)端對(duì)本地發(fā)送的keepalive報(bào)文所發(fā)送的響應(yīng)報(bào)文圖4為本地發(fā)送keepalive的數(shù)據(jù)流程5為本地收到一個(gè)keepalive報(bào)文的處理數(shù)據(jù)流程
具體實(shí)施例方式為了更好的說(shuō)明本發(fā)明的實(shí)施步驟,以下將結(jié)合附圖具體說(shuō)明GRE keepalive機(jī)制方法的工作流程如圖4所示,為本地端利用GRE keepalive機(jī)制方法的功能發(fā)送keepalive報(bào)文。在此過(guò)程中,一開(kāi)始根據(jù)本地的keepalive配置,啟動(dòng)keepalive本身的計(jì)時(shí)器,重發(fā)次數(shù)初始化數(shù)為0。當(dāng)keepalive的計(jì)時(shí)器為0時(shí),意味著在這段時(shí)間內(nèi)沒(méi)有收到keepalive的響應(yīng)報(bào)文,則重發(fā)次數(shù)加一。如果沒(méi)有達(dá)到最大重發(fā)次數(shù),則構(gòu)造一個(gè)keepalive報(bào)文,構(gòu)造過(guò)程中需要調(diào)用GRE進(jìn)行封裝,并通過(guò)IP層發(fā)送這個(gè)keepalive報(bào)文。假如該重發(fā)次數(shù)超過(guò)了最大重發(fā)次數(shù),則本地端置本地的tunnel口為down狀態(tài),這意味著這個(gè)對(duì)端不再存活,然后再構(gòu)造一個(gè)keepalive報(bào)文發(fā)送,其過(guò)程處理同上。
如圖5所示,為本地端利用GRE keepalive機(jī)制方法的功能接收keepalive報(bào)文。其過(guò)程為IP模塊把收到的keepalive報(bào)文交給GRE模塊進(jìn)行解封裝處理,然后報(bào)文就送到Tunnel模塊進(jìn)行keepalive的相關(guān)處理,重新設(shè)置timer和置重傳次數(shù)為0。然后等待keepalive的timerl到達(dá)來(lái)進(jìn)行再一次發(fā)送keepalive報(bào)文,處理過(guò)程回到上面的發(fā)送keepalive報(bào)文的處理過(guò)程。
根據(jù)以上實(shí)施方式所述的發(fā)明方法,可具體配置于支持IPV6和IPV4雙協(xié)議棧路由器中。在GRE協(xié)議支持下,如果本地配置了keepalive功能,則不需要要求對(duì)端的IPV4/IPV6路由器一定具備能實(shí)現(xiàn)keepalive功能,也不需要對(duì)端配置的keepalive的時(shí)間和本地一致。這樣就可以動(dòng)態(tài)監(jiān)測(cè)對(duì)端的雙協(xié)議棧路由器是否存活,從而完善IPV6和IPV4互連的通信效果。
以上所述的僅為本發(fā)明的最佳實(shí)施例而已,并不用以限制本發(fā)明凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種監(jiān)測(cè)與調(diào)整通用路由封裝隧道狀態(tài)的方法,該方法利用支持GRE協(xié)議功能的數(shù)據(jù)通信設(shè)備通過(guò)本地GRE發(fā)送端點(diǎn)發(fā)送keepalive報(bào)文來(lái)實(shí)現(xiàn)對(duì)對(duì)端通信狀態(tài)進(jìn)行監(jiān)測(cè)并動(dòng)態(tài)改變發(fā)送端GRE端點(diǎn)的tunnel口的狀態(tài),該方法的步驟包括1]在本地GRE端點(diǎn)設(shè)置一個(gè)keepalive的計(jì)時(shí)器;2]本地GRE端點(diǎn)每到一定時(shí)間就發(fā)送一個(gè)keepalive報(bào)文;3]對(duì)端的接收端接收到的一個(gè)keepalive報(bào)文后,對(duì)它進(jìn)行普通的GRE解封裝,然后交給上層協(xié)議處理(ICMP),ICMP處理順利完成后就會(huì)給一個(gè)ICMP響應(yīng)報(bào)文,這個(gè)響應(yīng)的ICMP報(bào)文同樣要經(jīng)過(guò)GRE的封裝處理,形成一個(gè)keepalive響應(yīng)報(bào)文,并發(fā)還給發(fā)送端。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于所涉及的keepalive報(bào)文利用BDCOM已有的GRE接口和Tunnel接口,把code=0,type=8類型的ICMP報(bào)文,用GRE封裝成一個(gè)GRE報(bào)文作為我們的keepalive報(bào)文格式。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于該方法在實(shí)施過(guò)程中發(fā)送端的GRE端點(diǎn)會(huì)按發(fā)送端的計(jì)時(shí)器設(shè)置,每到一定的時(shí)間就發(fā)送同樣的keepalive報(bào)文,但是在計(jì)時(shí)器超時(shí)之前沒(méi)有收到接收端發(fā)送過(guò)來(lái)的keepalive響應(yīng)報(bào)文就會(huì)增加一條錯(cuò)誤記錄,直到超過(guò)最大錯(cuò)誤次數(shù)的時(shí)候就標(biāo)志著對(duì)端GRE隧道不再存在,此時(shí),發(fā)送端設(shè)置tunnel口為down狀態(tài),但是還需要定時(shí)發(fā)送keepalive報(bào)文,以便為了動(dòng)態(tài)發(fā)現(xiàn)接收端可能重新存活的端口,重新建立用來(lái)數(shù)據(jù)傳輸?shù)腉RE隧道。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于該方法中所涉及的發(fā)送端設(shè)置發(fā)送keepalive報(bào)文的時(shí)間,可根據(jù)實(shí)際的網(wǎng)絡(luò)情況作動(dòng)態(tài)更改。
5.根據(jù)權(quán)利要求1所述的發(fā)明方法,其特征在于該方法在實(shí)際應(yīng)用中可以同時(shí)配置于通信的一端或兩端。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于若在實(shí)際應(yīng)用中該機(jī)制方法同時(shí)配置于通信的兩端,則這兩端不需要和對(duì)方的keepalive的計(jì)時(shí)器進(jìn)行同步,雙方的keepalive計(jì)時(shí)器可以相互獨(dú)立,兩端可以設(shè)置不一樣的參數(shù)值。
全文摘要
一種監(jiān)測(cè)與調(diào)整通用路由封裝隧道狀態(tài)的方法,它是一種GRE keepalive機(jī)制,這種機(jī)制是依照《RFC 1701》、《RFC 1702》和《RFC 2784》完成的,應(yīng)用于采用GRE協(xié)議的數(shù)據(jù)傳輸隧道中。主要內(nèi)容是利用支持GRE協(xié)議功能的數(shù)據(jù)通信設(shè)備通過(guò)本地GRE發(fā)送端點(diǎn)發(fā)送keepalive報(bào)文來(lái)實(shí)現(xiàn)對(duì)接收端通信狀態(tài)進(jìn)行監(jiān)測(cè)并動(dòng)態(tài)改變發(fā)送端GRE端點(diǎn)的tunnel口的狀態(tài)。該方法的主要目的是使采用GRE協(xié)議的通信兩端在利用GRE隧道進(jìn)行數(shù)據(jù)傳輸?shù)倪^(guò)程中,通過(guò)本發(fā)明的機(jī)制來(lái)提高網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)挠行砸约皽p少為確保數(shù)據(jù)傳輸所造成的占用網(wǎng)絡(luò)資源的浪費(fèi)。
文檔編號(hào)H04L12/56GK101064667SQ20061002627
公開(kāi)日2007年10月31日 申請(qǐng)日期2006年4月29日 優(yōu)先權(quán)日2006年4月29日
發(fā)明者汪革, 茍利平 申請(qǐng)人:上海博達(dá)數(shù)據(jù)通信有限公司