麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種數據報文傳輸方法和裝置與流程

文檔序號:12729508閱讀:360來源:國知局
一種數據報文傳輸方法和裝置與流程
本申請涉及通信
技術領域
,尤其涉及一種數據報文傳輸方法和裝置。
背景技術
:GRE(GenericRoutingEncapsulation,通用路由封裝)隧道是一種常見隧道,可以對某些網絡層協議(如IP)的數據報文進行封裝,使這些被封裝的數據報文能夠在另一網絡層協議(如IP)中傳輸,封裝后的數據報文在網絡中傳輸的路徑稱為GRE隧道,GRE隧道是一個點到點連接,其兩端設備分別對數據報文進行封裝和解封裝。GRE隧道的工作原理如圖1所示,數據報文1的源地址為主機1的IP地址,目的地址為主機2的IP地址,在數據報文1到達路由器A時,根據目的IP地址查詢路由表,發現出接口是GRE隧道,則為數據報文1封裝GRE頭,得到數據報文2,GRE頭的內容包括版本、協議、序列號等。然后為數據報文2封裝IP頭,得到數據報文3,IP頭的源地址為路由器A的IP地址,目的地址為路由器B的IP地址。路由器A通過GRE隧道將數據報文3發送給路由器B,路由器B對數據報文3進行解封裝,得到數據報文1,根據數據報文1的目的IP地址查詢路由表,通過出接口將數據報文1發送到主機2。當企業分支機構眾多時,可以在企業中心配置中心路由器,并在各個分支機構配置分支路由器,如圖2所示的組網。若在中心路由器與每個分支路由器之間單獨建立GRE隧道,則隨著分支機構數量的增加,GRE隧道的數量會很多,配置工作量很大,而且中心路由器需要為每個GRE隧道單獨分配IP地址,浪費地址資源。為此,提出了基于P2MP(Pointtomulti-point,點到多點)的GRE隧道技術,在每個分支路由器上配置GRE隧道,GRE隧道的目的IP地址為中心路由器的IP地址A,源IP地址為本分支路由器的IP地址,而中心路由器上配置P2MPGRE隧道?;诖耍行穆酚善鹘邮盏絹碜苑种酚善?的數據報文后,從數據報文中解析出分支路由器1的IP地址和主機2的IP地址,建立一條隧道表項,該隧道表項的索引為主機2的IP地址,目的地址為分支路由器1的IP地址。這樣,中心路由器在接收到主機1發送給主機2的數據報文后,通過數據報文的目的IP地址查詢隧道表項,得到分支路由器1的IP地址,并利用IP地址A和分支路由器1的IP地址對數據報文進行GRE隧道封裝并發送。在上述方式下,中心路由器只有接收到來自分支路由器1的數據報文,才可以維護隧道表項,若當前沒有維護隧道表項時,先接收到主機1發送給主機2的數據報文,則無法傳輸數據報文。而且,為了節約表項資源,若一定時間內沒有接收到來自分支路由器1的數據報文,中心路由器還會刪除已經建立的隧道表項,此時若接收到主機1發送給主機2的數據報文,也無法傳輸數據報文。技術實現要素:本申請提供一種數據報文傳輸方法,應用于中心路由器,該方法包括:接收數據報文,并利用所述數據報文的目的IP地址查詢分支網段表;若不存在與所述目的IP地址匹配的隧道表項,則為目的地址表中的每個IP地址構造探測報文,所述探測報文攜帶所述目的IP地址;發送所述探測報文,以使與所述目的IP地址對應的分支路由器返回探測響應報文;接收分支路由器返回的探測響應報文,并利用所述探測響應報文獲得與所述目的IP地址匹配的隧道表項,在所述分支網段表中記錄所述隧道表項;利用與所述目的IP地址匹配的隧道表項發送所述數據報文。本申請提供一種數據報文傳輸裝置,應用于中心路由器,該裝置包括:接收模塊,用于接收數據報文;判斷模塊,用于利用所述數據報文的目的IP地址查詢分支網段表;處理模塊,用于當不存在與所述目的IP地址匹配的隧道表項時,則為目的地址表中的每個IP地址構造探測報文,所述探測報文攜帶所述目的IP地址;發送模塊,用于發送所述處理模塊為目的地址表中的每個IP地址構造的探測報文,以使與所述目的IP地址對應的分支路由器返回探測響應報文;所述接收模塊,還用于接收分支路由器返回的探測響應報文;所述處理模塊,還用于利用所述探測響應報文獲得與所述目的IP地址匹配的隧道表項,并在所述分支網段表中記錄所述隧道表項;所述發送模塊,還用于利用所述隧道表項發送所述數據報文?;谏鲜黾夹g方案,本申請實施例中,在接收到數據報文時,若分支網段表不存在與數據報文的目的IP地址匹配的隧道表項,則可以為目的地址表中的每個IP地址構造探測報文,以使與該目的IP地址對應的分支路由器返回探測響應報文,并利用該探測響應報文獲得與該目的IP地址匹配的隧道表項,從而利用該隧道表項發送該數據報文?;谏鲜龇绞剑灰浗邮者^分支路由器發送的報文,即使當前在分支網段表中沒有找到與目的IP地址匹配的隧道表項,也可以通過目的地址表觸發學習到隧道表項,解決無法傳輸數據報文的問題,即解決沒有隧道表項時的斷流問題,并可以提高P2MP隧道的自適應性。附圖說明為了更加清楚地說明本申請實施例或者現有技術中的技術方案,下面將對本申請實施例或者現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實施例,對于本領域普通技術人員來講,還可以根據本申請實施例的這些附圖獲得其他的附圖。圖1是GRE隧道的工作原理的示意圖;圖2是基于P2MP的GRE隧道技術的工作原理的示意圖;圖3是本申請一種實施方式中的數據報文傳輸方法的流程圖;圖4是本申請一種實施方式中的目的地址表的結構示意圖;圖5是本申請一種實施方式中根據keepalive報文建立隧道表項的示意圖;圖6是本申請一種實施方式中的分支網段表的結構示意圖;圖7是本申請一種實施方式中的維護分支網段表、目的地址表的示意圖;圖8是本申請另一種實施方式中的數據報文傳輸方法的流程圖;圖9是本申請一種實施方式中的配置兩個中心路由器的示意圖;圖10是本申請另一種實施方式中的數據報文傳輸方法的流程圖;圖11是本申請一種實施方式中的中心路由器的硬件結構圖;圖12是本申請一種實施方式中的數據報文傳輸裝置的結構圖。具體實施方式在本申請使用的術語僅僅是出于描述特定實施例的目的,而非限制本申請。本申請和權利要求書中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其它含義。還應當理解,本文中使用的術語“和/或”是指包含一個或多個相關聯的列出項目的任何或所有可能組合。應當理解,盡管在本申請可能采用術語第一、第二、第三等來描述各種信息,但這些信息不應限于這些術語。這些術語僅用來將同一類型的信息彼此區分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,此外,所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應于確定”。本申請實施例中提出一種數據報文傳輸方法,該方法可以應用于中心路由器,參見圖3所示,為數據報文傳輸方法的流程圖,該方法可以包括以下步驟:步驟301,接收數據報文,利用該數據報文的目的IP地址查詢分支網段表。步驟302,若不存在與該目的IP地址匹配的隧道表項,則為目的地址表中的每個IP地址構造探測報文,該探測報文攜帶該目的IP地址;以及,發送該探測報文,以使與該目的IP地址對應的分支路由器返回探測響應報文。步驟303,接收分支路由器返回的探測響應報文,并利用該探測響應報文獲得與該目的IP地址匹配的隧道表項,并在分支網段表中記錄該隧道表項。步驟304,利用與該目的IP地址匹配的隧道表項發送該數據報文。在圖3所示的流程中,涉及到分支網段表和目的地址表的內容,以下先對分支網段表的維護過程以及目的地址表的維護過程進行詳細說明。情況一、目的地址表(傳統方式不會維護目的地址表)。在一個例子中,中心路由器在接收到來自分支路由器的第一類報文時,從該第一類報文中解析出外層源IP地址,并判斷目的地址表中是否存在與該外層源IP地址匹配的隧道表項;若不存在,則生成與該外層源IP地址匹配的隧道表項,并在目的地址表中記錄生成的隧道表項,并為生成的隧道表項設置老化定時器;若存在,刷新與外層源IP地址匹配的隧道表項的老化定時器的老化時間。其中,第一類報文是包括外層源IP地址,且內層源IP地址不是主機地址的報文。如圖2所示,假設中心路由器接收到來自分支路由器1的第一類報文,該第一類報文包括外層源IP地址(即分支路由器1的IP地址),且內層源IP地址不是主機2的IP地址,因此無法基于第一類報文建立傳統的隧道表項。在一個例子中,第一類報文可以為keepalive(?;?報文,keepalive報文是GRE隧道的?;顖笪模种酚善骺梢酝ㄟ^GRE隧道周期性的向中心路由器發送keepalive報文,如果連續發送預設次數(可以根據經驗配置)個keepalive報文后,仍然沒有收到中心路由器返回的響應報文,則分支路由器將GRE隧道的接口狀態設置為down,表示無法通過GRE隧道向中心路由器發送報文。分支路由器1向中心路由器發送的keepalive報文攜帶分支路由器1的IP地址、GRE隧道頭等內容。分支路由器2向中心路由器發送的keepalive報文攜帶分支路由器2的IP地址、GRE隧道頭等內容。在傳統方式中,中心路由器在收到來自分支路由器1/分支路由器2的keepalive報文后,由于keepalive報文只攜帶分支路由器1/分支路由器2的IP地址,但不包括主機的IP地址,因此無法基于第一類報文建立隧道表項,只是向分支路由器1/分支路由器2返回響應報文。與上述方式不同的是,本申請實施例中,中心路由器可以維護目的地址表,在接收到來自分支路由器1/分支路由器2的keepalive報文后,可以根據keepalive報文建立隧道表項,并在目的地址表中記錄該隧道表項。其中,目的地址表是一種組織結構,用于記錄各隧道表項,如采用表格的方式記錄各隧道表項,如表1所示,或者,也可以采用哈希表的方式記錄各隧道表項,如圖4所示。對此目的地址表的結構不做限制,在后續過程中,以采用哈希表的方式為例。表1隧道目的地址GRE隧道頭的KEY值老化定時器隧道表項11隧道表項12…隧道表項31針對“中心路由器在接收到來自分支路由器1/分支路由器2的keepalive報文后,根據keepalive報文建立隧道表項,在目的地址表中記錄該隧道表項”的過程,參見圖5所示,為中心路由器根據keepalive報文建立隧道表項的示意圖。步驟501,中心路由器接收來自分支路由器的keepalive報文。步驟502,中心路由器從keepalive報文中解析出分支路由器的IP地址(即該keepalive報文的外層源IP地址),并解析出GRE隧道頭的KEY值。其中,keepalive報文包括外層IP頭、GRE頭和內層載荷。外層IP頭的源IP地址也稱為外層源IP地址,也就是分支路由器的IP地址。GRE頭的內容可以包括版本、協議、序列號、KEY值等,對此內容以及各內容的含義不做限制。內層載荷的源IP地址也稱為內層源IP地址,內層載荷的目的IP地址也稱為內層目的IP地址,而且,keepalive報文的內層載荷的源IP地址為中心路由器的IP地址(而不是主機的IP地址),內層載荷的目的IP地址為本分支路由器的IP地址,因此,中心路由器可以認為內層源IP地址不是主機地址。步驟503,中心路由器判斷目的地址表中是否存在與分支路由器的IP地址匹配的隧道表項;若不存在,則執行步驟504;若存在,則執行步驟505。步驟504,中心路由器生成與分支路由器的IP地址匹配的隧道表項,并在目的地址表中記錄該生成的隧道表項,并為該隧道表項設置老化定時器。步驟505,中心路由器刷新與分支路由器的IP地址匹配的隧道表項的老化定時器的老化時間,對此老化定時器的老化時間刷新方式不做限制。經過上述處理,中心路由器可以在目的地址表中記錄與分支路由器1的IP地址匹配的隧道表項,與分支路由器2的IP地址匹配的隧道表項。而且,中心路由器每次接收到keepalive報文后,都會刷新對應的老化定時器的老化時間。情況二、分支網段表(與傳統方式維護的分支網段表不同)。在一個例子中,中心路由器在接收到來自分支路由器的第二類報文時,從該第二類報文中解析出外層源IP地址以及內層源IP地址,并判斷分支網段表中是否存在與該外層源IP地址、該內層源IP地址匹配的隧道表項;若不存在,則生成與該外層源IP地址、該內層源IP地址匹配的隧道表項,并在分支網段表中記錄該隧道表項,并為該隧道表項設置老化定時器;若存在,則刷新與該外層源IP地址、該內層源IP地址匹配的隧道表項的老化定時器的老化時間。其中,第二類報文是包括外層源IP地址,且內層源IP地址為主機地址的報文。如圖2所示,假設中心路由器接收到來自分支路由器1的第二類報文,該第二類報文包括外層源IP地址(即分支路由器1的IP地址),且包括內層源IP地址(即主機2的IP地址),中心路由器可以基于第二類報文建立隧道表項。在一個例子中,第二類報文可以為數據報文(如主機2向主機1發送的數據報文)或者模擬報文。例如,分支路由器1在接收到主機2向主機1發送的數據報文后,對數據報文進行GRE封裝,得到第二類報文,并通過GRE隧道將第二類報文發送給中心路由器。又例如,分支路由器1在較長時間內未接收到主機2向主機1發送的數據報文時,可以生成模擬報文,該模擬報文用于模擬主機2向主機1發送的數據報文,之后,分支路由器1對模擬報文進行GRE封裝,得到第二類報文,并通過GRE隧道將第二類報文發送給中心路由器。針對分支路由器2的處理,與分支路由器1的處理過程類似,在此不再贅述。其中,分支路由器1可以基于HWPing(測試組)或者NQA(NetworkQualityAnalyzer,網絡質量分析)等協議生成模擬報文,對此生成方式不做限制。在一個例子中,第二類報文可以攜帶分支路由器1的IP地址、主機2的IP地址、GRE隧道頭等內容。中心路由器在接收到來自分支路由器1的第二類報文之后,由于第二類報文攜帶分支路由器1的IP地址、主機2的IP地址,因此,中心路由器可以基于第二類報文建立隧道表項。具體的,中心路由器可以維護分支網段表,在接收到來自分支路由器的第二類報文之后,可以根據第二類報文建立隧道表項,并在分支網段表中記錄該隧道表項。其中,該分支網段表是一種組織結構,用于記錄各隧道表項,如采用表格的方式記錄各隧道表項,或者,也可以采用哈希表的方式記錄各隧道表項,如圖6所示。對此分支網段表的結構不做限制,在后續過程中,以采用哈希表的方式為例進行說明。在一個例子中,中心路由器在接收到來自分支路由器的第二類報文之后,不僅可以根據第二類報文維護分支網段表,還可以根據該第二類報文維護目的地址表。基于此,中心路由器在從第二類報文中解析出外層源IP地址以及內層源IP地址之后,還可以判斷目的地址表中是否存在與該外層源IP地址匹配的隧道表項;若不存在,則生成與該外層源IP地址匹配的隧道表項,并在目的地址表中記錄生成的隧道表項,并為生成的隧道表項設置老化定時器;若存在,則刷新與該外層源IP地址匹配的隧道表項的老化定時器的老化時間。針對“中心路由器根據第二類報文維護分支網段表、目的地址表”的過程,參見圖7所示,為根據第二類報文維護分支網段表、目的地址表的示意圖。步驟701,中心路由器接收來自分支路由器的第二類報文。步驟702,中心路由器從第二類報文中解析出分支路由器的IP地址(外層源IP地址)、主機的IP地址(內層源IP地址)、GRE隧道頭的KEY值。在一個例子中,第二類報文可以包括外層IP頭、GRE頭和內層載荷(如主機2發送給主機1的數據報文或者分支路由器生成的模擬報文)。其中,外層IP頭的源IP地址也稱為外層源IP地址,也就是分支路由器的IP地址。GRE頭的內容可以包括版本、協議、序列號、KEY值等,對此內容以及各內容的含義不做限制。內層載荷的源IP地址也稱為內層源IP地址,也就是主機的IP地址。步驟703,中心路由器判斷分支網段表中是否存在與分支路由器的IP地址(如分支路由器1的IP地址)、主機的IP地址(如主機2的IP地址)匹配的隧道表項。若不存在,則可以執行步驟704;若存在,則可以執行步驟705。步驟704,中心路由器生成與分支路由器的IP地址、主機的IP地址匹配的隧道表項,并在分支網段表中記錄該隧道表項,為該隧道表項設置老化定時器。步驟705,中心路由器刷新與分支路由器的IP地址、主機的IP地址匹配的隧道表項的老化定時器的老化時間,具體的刷新方式不做限制。在步驟702之后,還可以執行步驟706,步驟706與步驟703沒有先后關系。步驟706,中心路由器判斷目的地址表中是否存在與分支路由器的IP地址匹配的隧道表項;若不存在,則執行步驟707;若存在,則執行步驟708。步驟707,中心路由器生成與分支路由器的IP地址匹配的隧道表項,并在目的地址表中記錄該生成的隧道表項,并為該隧道表項設置老化定時器。步驟708,中心路由器刷新與分支路由器的IP地址匹配的隧道表項的老化定時器的老化時間,具體的刷新方式不做限制。經過上述處理,中心路由器可以在分支網段表中記錄與分支路由器1的IP地址匹配的隧道表項,與分支路由器2的IP地址匹配的隧道表項。中心路由器可以在目的地址表中記錄與分支路由器1的IP地址匹配的隧道表項,與分支路由器2的IP地址匹配的隧道表項。而且,中心路由器每次接收到第二類報文后,都會刷新分支網段表、目的地址表的各隧道表項對應的老化定時器的老化時間。針對上述情況一和情況二,當采用哈希表方式維護目的地址表時,如圖4所示,中心路由器在接收到第一類報文時,利用第一類報文的特征(如分支路由器的IP地址)對數量n進行hash運算,根據hash運算結果確定隧道表項與節點的對應關系。例如,將分支路由器的IP地址對數量n進行取余處理,假設結果為0,則確定隧道表項與節點1關聯,假設結果為1,則確定隧道表項與節點2關聯,以此類推。假設隧道表項與節點1關聯,則查詢節點1下是否存在與第一類報文匹配的隧道表項,在生成第一類報文對應的隧道表項時,也將第一類報文對應的隧道表項記錄在節點1下。同理,當采用哈希表方式維護分支網段表時,如圖6所示,中心路由器在接收到第二類報文時,利用第二類報文的特征(如主機的IP地址)對數量n進行hash運算,根據hash運算結果確定隧道表項與節點的對應關系,其處理方式與目的地址表的處理類似,不再贅述。針對上述情況一和情況二,目的地址表的隧道表項可以包括但不限于隧道目的地址、GRE頭的KEY值、老化定時器,分支網段表的隧道表項可以包括但不限于隧道目的地址、分支網段地址、GRE頭的KEY值、老化定時器。從圖4和圖6可以看出,分支網段表的隧道表項比目的地址表的隧道表項多一個分支網段地址,當然,在實際應用中,目的地址表的隧道表項也可以包括分支網段地址,只是該分支網段地址為全0,而不是主機IP地址,對此不做限制。在一個例子中,在目的地址表的隧道表項以及分支網段表的隧道表項中,隧道目的地址是分支路由器的IP地址,即外層源IP地址。分支網段地址是主機的IP地址(如主機的32位IP地址,或者主機所屬網段的網段地址),即內層源IP地址。KEY值用于區分隧道表項的優先級,KEY值越小,則隧道表項的優先級越高,在后續過程中會介紹優先級的使用方式,在此不再贅述。老化定時器用于隧道表項的老化,節約隧道表項的資源,刪除長時間閑置的隧道表項。在一個例子中,中心路由器在接收到來自分支路由器的報文之后,還可以先區分該報文是第一類報文還是第二類報文,若是第一類報文,則可以采用圖5所示的流程處理,若是第二類報文,則可以采用圖7所示的流程處理。在上述過程中,介紹了目的地址表中的隧道表項的維護過程,分支網段表中的隧道表項的維護過程,在實際應用中,還涉及分支網段表中的隧道表項的刪除過程、目的地址表中的隧道表項的刪除過程,以下對刪除過程進行說明。針對分支網段表中的隧道表項的刪除過程:在根據中心路由器的配置信息確定需要刪除分支網段表中的隧道表項,或者,根據刪除命令確定需要刪除分支網段表中的隧道表項,或者,根據隧道表項的老化定時器確定需要刪除分支網段表中的隧道表項時,則中心路由器可以從分支網段表中刪除待刪除的隧道表項,或者,可以將分支網段表中的待刪除的隧道表項遷移到指定存儲位置。針對“根據中心路由器的配置信息確定需要刪除分支網段表中的隧道表項”的過程,可以包括:若中心路由器的配置信息發生變化(如接口內網掩碼配置變化),則確定刪除該接口對應的所有隧道表項,如分支網段表中的隧道表項。針對“根據刪除命令確定需要刪除分支網段表中的隧道表項”的過程,可以包括:在接收到刪除命令后,根據刪除命令確定需要刪除的隧道表項。例如,若刪除命令攜帶分支路由器的IP地址,則確定需要刪除與該分支路由器的IP地址對應的所有隧道表項;若刪除命令攜帶分支路由器的IP地址、主機的IP地址,則確定需要刪除與該分支路由器的IP地址、該主機的IP地址對應的隧道表項。針對“根據隧道表項的老化定時器確定需要刪除分支網段表中的隧道表項”的過程,可以包括:若隧道表項的老化定時器超時,確定需要刪除該隧道表項。在一個例子中,在確定需要刪除的隧道表項后,以需要刪除隧道表項1為例,則中心路由器可以從分支網段表中刪除隧道表項1或者將隧道表項1遷移到指定存儲位置。其中,刪除隧道表項1是指:從中心路由器上徹底刪除隧道表項1,中心路由器上不再存儲隧道表項1。將隧道表項1遷移到指定存儲位置是指:不在分支網段表中記錄隧道表項1,但是仍然在中心路由器的指定存儲位置(如內存)中存儲隧道表項1,即隧道表項1仍然存儲在中心路由器。而且,在指定存儲位置記錄隧道表項1時,該隧道表項1的分支網段地址可以為主機的IP地址,也可以將隧道表項1的分支網段地址清成全0,對此不做限制。進一步的,在中心路由器的指定存儲位置(如內存)中存儲隧道表項1后,中心路由器可以通過其它表項或者特定方式找到該指定存儲位置(如內存),對此實現方式不做限制,只要可以找到該指定存儲位置(如內存)即可。針對目的地址表中的隧道表項的刪除過程:在隧道表項的老化定時器超時時,根據該隧道表項的外層源IP地址構造第三類報文,并向該外層源IP地址對應的分支路由器發送該第三類報文。若在預設時間內接收到第三類報文對應的響應報文,則刷新該隧道表項的老化定時器的老化時間,不再刪除該隧道表項;若在預設時間內未接收到第三類報文對應的響應報文,則從目的地址表中刪除該隧道表項。或者,在隧道表項的老化定時器超時之前的第N秒,根據該隧道表項的外層源IP地址構造第三類報文,并向該外層源IP地址對應的分支路由器發送第三類報文。若在該隧道表項的老化定時器超時之前,接收到該第三類報文對應的響應報文,則刷新該隧道表項的老化定時器的老化時間;若在該老化定時器超時之前,未接收到該第三類報文對應的響應報文,則從目的地址表中刪除該隧道表項;其中,N為大于0的數值,如N可以為3秒。針對“根據隧道表項的外層源IP地址構造第三類報文,并向外層源IP地址對應的分支路由器發送第三類報文”的過程,可以根據隧道表項的外層源IP地址(也就是隧道表項中的隧道目的地址,其是分支路由器的IP地址)構造第三類報文,即第三類報文的目的IP地址為分支路由器的IP地址,這樣,中心路由器可以將第三類報文發送給分支路由器。進一步的,若分支路由器與中心路由器之間的鏈路未發生故障,且分支路由器未發生故障,則分支路由器在接收到第三類報文后,可以向中心路由器返回第三類報文對應的響應報文。基于此,若中心路由器發送第三類報文后,在預設時間(如3秒)內或者老化定時器超時之前,接收到第三類報文對應的響應報文,則刷新該隧道表項的老化定時器的老化時間,在該隧道表項的老化定時器的老化時間被刷新后,該隧道表項不會由于老化定時器超時而被刪除,即不再刪除該隧道表項。若中心路由器在預設時間內或者老化定時器超時之前,未接收到第三類報文對應的響應報文,則表示分支路由器與中心路由器之間的鏈路發生故障,或者分支路由器發生故障,中心路由器可以從目的地址表中刪除該隧道表項。在中心路由器從目的地址表中刪除隧道表項后,針對“將分支網段表中的隧道表項遷移到指定存儲位置”的實現方式,中心路由器還可以通過該隧道表項的外層源IP地址查詢指定存儲位置記錄的隧道表項。若指定存儲位置存在與該隧道表項匹配的隧道表項,則從指定存儲位置刪除與隧道表項匹配的隧道表項,也就是從中心路由器上徹底刪除該隧道表項,不再存儲該隧道表項。在一個例子中,分支網段表中的各隧道表項的老化定時器的老化時間可以相同,也可以不同,可根據經驗配置。目的地址表中的各隧道表項的老化定時器的老化時間可以相同,也可以不同,可根據經驗配置。以分支網段表中的各隧道表項的老化定時器的老化時間相同,目的地址表中的各隧道表項的老化定時器的老化時間相同為例,基于此,目的地址表中的隧道表項的老化定時器的老化時間可以大于等于分支網段表中的隧道表項的老化定時器的老化時間。在上述分支網段表、目的地址表的基礎上,以主機1向主機2發送數據報文1為例,參見圖8所示,為數據報文傳輸方法的流程圖,該方法可以包括:步驟801,主機1向主機2發送數據報文1。步驟802,中心路由器在接收到數據報文1后,利用該數據報文1的目的IP地址(即主機2的IP地址)查詢分支網段表(如圖6所示的分支網段表)。步驟803,中心路由器判斷該分支網段表中是否存在與該目的IP地址匹配的隧道表項。如果是,則執行步驟804;如果否,則執行步驟805。在一個例子中,中心路由器在利用目的IP地址查詢分支網段表時,以采用哈希表方式維護分支網段表為例,中心路由器可以利用數據報文1的特征(如目的IP地址)對數量n進行hash運算,根據hash運算結果確定隧道表項與節點的對應關系,如將數據報文1的目的IP地址對數量n進行取余處理,假設結果為0,確定隧道表項與節點1關聯,假設結果為1,確定隧道表項與節點2關聯,以此類推?;诖?,假設隧道表項與節點1關聯,則利用目的IP地址查詢分支網段表的節點1,判斷節點1下是否存在與目的IP地址匹配的隧道表項。步驟804,中心路由器利用與該目的IP地址匹配的隧道表項發送數據報文1。例如,中心路由器從與該目的IP地址匹配的隧道表項中獲得分支路由器1的IP地址,為數據報文1封裝GRE頭,得到數據報文2,該GRE頭的內容可以包括版本、協議、序列號等。為數據報文2封裝IP頭,得到數據報文3,IP頭的源地址為中心路由器的IP地址,目的地址為從隧道表項中獲得的分支路由器1的IP地址。然后,中心路由器通過GRE隧道將數據報文3發送給分支路由器1。分支路由器1對收到的數據報文3進行解封裝,得到數據報文1,根據數據報文1的目的IP地址查詢路由表,通過出接口將數據報文1發送到主機2。步驟805,中心路由器為目的地址表的每個IP地址(如分支路由器1的IP地址、分支路由器2的IP地址)構造探測報文,探測報文攜帶主機2的IP地址。步驟806,中心路由器利用探測報文的目的IP地址發送該探測報文(如ICMP報文等),以使與主機2的IP地址對應的分支路由器返回探測響應報文。例如,中心路由器為分支路由器1的IP地址構造探測報文1,該探測報文1的目的IP地址為分支路由器1的IP地址,且該探測報文1攜帶主機2的IP地址。由于目的IP地址為分支路由器1的IP地址,因此探測報文1會發送到分支路由器1,分支路由器1在接收到探測報文1后,發現探測報文1攜帶的主機2的IP地址是與本分支路由器1連接的主機的IP地址,因此向中心路由器返回探測響應報文。同理,中心路由器為分支路由器2的IP地址構造探測報文2,且分支路由器2在接收到探測報文2后,發現探測報文2攜帶的主機2的IP地址不是與本分支路由器2連接的主機的IP地址,因此直接丟棄探測報文2。步驟807,中心路由器接收分支路由器1返回的探測響應報文,該探測響應報文攜帶分支路由器1的IP地址和主機2的IP地址(從探測報文中獲知)。步驟808,中心路由器利用該探測響應報文獲得與主機2的IP地址匹配的隧道表項(如圖6所示的隧道表項),并在分支網段表中記錄該隧道表項。在一個例子中,針對“中心路由器利用該探測響應報文獲得與主機2的IP地址匹配的隧道表項”的過程,可以包括:中心路由器從探測響應報文中解析出分支路由器的IP地址、主機2的IP地址,并判斷指定存儲位置是否存在與該分支路由器的IP地址、主機2的IP地址匹配的隧道表項。如果是,則直接從指定存儲位置獲得與分支路由器的IP地址、主機2的IP地址匹配的隧道表項,在分支網段表中記錄該隧道表項,并刷新該隧道表項的老化定時器的老化時間。如果否,則中心路由器生成與分支路由器的IP地址、主機2的IP地址匹配的隧道表項,為該隧道表項設置老化定時器,并在分支網段表中記錄該隧道表項(如果不設置指定存儲位置存儲之前在分支網段表中刪除的隧道表項,則可不執行存儲位置的判斷,直接執行該分支步驟即可)。步驟809,中心路由器利用與主機2的IP地址匹配的隧道表項發送數據報文1。由于經過步驟805-步驟808的處理后,中心路由器可以在分支網段表中記錄與主機2的IP地址匹配的隧道表項,因此可以利用與主機2的IP地址匹配的隧道表項發送數據報文1,具體發送過程可以參見步驟804,在此不再贅述。在一個例子中,中心路由器在確定出沒有與主機2的IP地址匹配的隧道表項時,可以緩存數據報文1,并為數據報文1啟動定時器。在發送探測報文之后,若在定時器超時之前接收到探測響應報文,則取出之前緩存的數據報文1,并執行“利用與主機2的IP地址匹配的隧道表項發送數據報文1”的過程。若在定時器超時之后仍然沒有接收到探測響應報文,則刪除之前緩存的數據報文1。在實際應用中,為了提高中心路由器的可靠性,還可以在企業中心配置多個中心路由器,如圖9所示的應用場景,以配置兩個中心路由器為例,可以在分支路由器1上配置兩條GRE隧道,一條GRE隧道是分支路由器1與中心路由器1之間的GRE隧道,另一條GRE隧道是分支路由器1與中心路由器2之間的GRE隧道,而且在中心路由器1與中心路由器2之間配置一條GRE隧道。以中心路由器1為主中心路由器,中心路由器2為備中心路由器為例,在正常情況下,通過分支路由器1與中心路由器1之間的GRE隧道傳輸報文,當分支路由器1與中心路由器1之間的GRE隧道出現故障時,則通過分支路由器1與中心路由器2之間的GRE隧道傳輸報文。在上述應用場景下,可以將中心路由器1與中心路由器2之間的GRE隧道的接口稱為GRE隧道備份口。在上述分支網段表、目的地址表的基礎上,以主機1向主機2發送數據報文1為例,參見圖10所示,為數據報文傳輸方法的流程圖,該方法可以包括:步驟1001,主機1向主機2發送數據報文1。步驟1002,中心路由器1在接收到數據報文1后,利用該數據報文1的目的IP地址(即主機2的IP地址)查詢分支網段表(如圖6所示的分支網段表)。步驟1003,中心路由器1判斷該分支網段表中是否存在與該目的IP地址匹配的隧道表項。如果是,則執行步驟1004;如果否,則執行步驟1007。步驟1004,中心路由器1查詢是否存在GRE隧道備份口。如果不存在GRE隧道備份口,則執行步驟1005;如果存在GRE隧道備份口,則執行步驟1006。步驟1005,中心路由器1利用與目的IP地址匹配的隧道表項發送數據報文1。步驟1006,中心路由器1根據隧道表項的優先級與GRE隧道備份口的優先級發送數據報文1。具體的,中心路由器1可以比較隧道表項的優先級與GRE隧道備份口的優先級;如果隧道表項的優先級高于GRE隧道備份口的優先級,則利用與目的IP地址匹配的隧道表項發送數據報文1;如果GRE隧道備份口的優先級高于隧道表項的優先級,則利用GRE隧道備份口發送數據報文1。在一個例子中,GRE隧道備份口是中心路由器1與中心路由器2之間的GRE隧道,該GRE隧道備份口也會有對應的隧道表項,該隧道表項的內容可以根據實際情況進行配置,例如,該隧道表項可以包括中心路由器1的IP地址、中心路由器2的IP地址、KEY值等內容?;诖?,中心路由器1可以比較與目的IP地址匹配的隧道表項的KEY值以及GRE隧道備份口的隧道表項的KEY值,并選取KEY值小的隧道表項,作為優先級高的隧道表項。其中,KEY值用于區分隧道表項的優先級,而且,KEY值越小,則隧道表項的優先級也就越高。其中,若中心路由器1利用GRE隧道備份口發送數據報文1,則中心路由器可以從隧道表項中獲得中心路由器1的IP地址、中心路由器2的IP地址,為數據報文1封裝GRE頭,并封裝IP頭,該IP頭的源地址為中心路由器1的IP地址,目的地址為中心路由器2的IP地址。然后,中心路由器1可以通過GRE隧道將封裝后的數據報文發送給中心路由器2。中心路由器2對接收到的數據報文進行解封裝,得到數據報文1,然后對數據報文1進行處理,其處理過程與中心路由器1對數據報文1進行處理的過程類似,在此不再重復贅述。步驟1007,中心路由器1查詢是否存在GRE隧道備份口。如果存在GRE隧道備份口,則執行步驟1008;如果不存在GRE隧道備份口,則執行步驟1009。步驟1008,中心路由器1利用GRE隧道備份口發送數據報文1。步驟1009,中心路由器1為目的地址表的每個IP地址構造探測報文,該探測報文攜帶主機2的IP地址,并利用探測報文的目的IP地址發送該探測報文,以使與主機2的IP地址對應的分支路由器返回探測響應報文。步驟1010,中心路由器1接收分支路由器1返回的探測響應報文(其中攜帶分支路由器1的IP地址和主機2的IP地址),并利用該探測響應報文獲得與主機2的IP地址匹配的隧道表項,并在分支網段表中記錄該隧道表項。步驟1011,中心路由器1利用該隧道表項發送數據報文1。在一個例子中,針對步驟1009的情況,中心路由器1可以先緩存數據報文1,并為數據報文1啟動定時器。在發送探測報文之后,若在定時器超時之前接收到探測響應報文,則中心路由器1取出之前緩存的數據報文1,并執行“利用與主機2的IP地址匹配的隧道表項發送數據報文1”的過程。若在定時器超時之后仍然沒有接收到探測響應報文,則中心路由器1刪除之前緩存的數據報文1。在一個例子中,針對上述步驟1006、步驟1008,若中心路由器1利用GRE隧道備份口發送數據報文1,則中心路由器2在獲得數據報文1后,中心路由器2的處理與中心路由器1的處理相同,若中心路由器2確定出分支網段表中沒有與數據報文1的目的IP地址匹配的隧道表項,且存在GRE隧道備份口,則會通過GRE隧道備份口將數據報文1發送給中心路由器1,從而導致環路問題。針對上述發現,本申請實施例中,中心路由器2在通過GRE隧道備份口接收到數據報文時,還可以設置數據報文的入接口索引為該GRE隧道備份口。進一步的,中心路由器2在利用數據報文的目的IP地址查詢分支網段表后,若分支網段表不存在與該目的IP地址匹配的隧道表項,且存在GRE隧道備份口,則中心路由器2還可以判斷數據報文的入接口索引是否為GRE隧道備份口,如果是,則丟棄該數據報文,而不再通過GRE隧道備份口將數據報文發送給中心路由器1,從而避免環路問題。此外,若數據報文的入接口索引不是GRE隧道備份口,中心路由器2才會通過GRE隧道備份口將數據報文發送給中心路由器1。基于上述技術方案,本申請實施例中,在接收到數據報文時,若分支網段表不存在與數據報文的目的IP地址匹配的隧道表項,則可以為目的地址表中的每個IP地址構造探測報文,以使與該目的IP地址對應的分支路由器返回探測響應報文,并利用該探測響應報文獲得與該目的IP地址匹配的隧道表項,從而利用該隧道表項發送該數據報文?;谏鲜龇绞剑灰浗邮者^分支路由器發送的報文,即使當前在分支網段表中沒有找到與目的IP地址匹配的隧道表項,也可以通過目的地址表觸發學習到隧道表項,解決無法傳輸數據報文的問題,即解決沒有隧道表項時的斷流問題,并可以提高P2MP隧道的自適應性。基于與上述方法同樣的申請構思,本申請實施例還提供一種數據報文傳輸裝置,可以應用在中心路由器上。其中,該數據報文傳輸裝置可以通過軟件實現,也可以通過硬件或者軟硬件結合的方式實現。以軟件實現為例,作為一個邏輯意義上的裝置,是通過其所在的中心路由器的處理器,讀取非易失性存儲器中對應的計算機程序指令形成的。從硬件層面而言,如圖11所示,為本申請提出的數據報文傳輸裝置所在的中心路由器的一種硬件結構圖,除了圖11所示的處理器、非易失性存儲器外,中心路由器還可以包括其他硬件,如負責處理報文的轉發芯片、網絡接口、內存等;從硬件結構上來講,該中心路由器還可能是分布式設備,可能包括多個接口卡,以便在硬件層面進行報文處理的擴展。如圖12所示,為本申請提出的數據報文傳輸裝置的結構圖,該裝置包括:接收模塊11,用于接收數據報文;判斷模塊12,用于利用所述數據報文的目的IP地址查詢分支網段表;處理模塊13,用于當不存在與所述目的IP地址匹配的隧道表項時,則為目的地址表中的每個IP地址構造探測報文,所述探測報文攜帶所述目的IP地址;發送模塊14,用于發送所述處理模塊13為目的地址表中的每個IP地址構造的探測報文,以使與所述目的IP地址對應的分支路由器返回探測響應報文;所述接收模塊11,還用于接收分支路由器返回的探測響應報文;所述處理模塊13,還用于利用所述探測響應報文獲得與所述目的IP地址匹配的隧道表項,并在所述分支網段表中記錄所述隧道表項;所述發送模塊14,還用于利用所述隧道表項發送所述數據報文。所述接收模塊11,還用于接收來自分支路由器的第一類報文;所述判斷模塊12,還用于從所述第一類報文中解析出外層源IP地址,并判斷目的地址表中是否存在與所述外層源IP地址匹配的隧道表項;所述處理模塊13,還用于當不存在與所述外層源IP地址匹配的隧道表項時,生成與外層源IP地址匹配的隧道表項,在目的地址表中記錄生成的隧道表項,為生成的隧道表項設置老化定時器;當存在與所述外層源IP地址匹配的隧道表項時,刷新與外層源IP地址匹配的隧道表項的老化定時器的老化時間。所述接收模塊11,還用于接收來自分支路由器的第二類報文;所述判斷模塊12,還用于從所述第二類報文中解析出外層源IP地址以及內層源IP地址,并判斷所述分支網段表中是否存在與所述外層源IP地址、所述內層源IP地址匹配的隧道表項;所述處理模塊13,還用于當不存在與所述外層源IP地址、所述內層源IP地址匹配的隧道表項時,則生成與所述外層源IP地址、所述內層源IP地址匹配的隧道表項,并在所述分支網段表中記錄生成的隧道表項,并為生成的隧道表項設置老化定時器;當存在與所述外層源IP地址、所述內層源IP地址匹配的隧道表項時,則刷新與所述外層源IP地址、所述內層源IP地址匹配的隧道表項的老化定時器的老化時間。所述判斷模塊12,還用于在從所述第二類報文中解析出外層源IP地址以及內層源IP地址后,判斷目的地址表中是否存在與外層源IP地址匹配的隧道表項;所述處理模塊13,還用于當不存在與外層源IP地址匹配的隧道表項時,生成與外層源IP地址匹配的隧道表項,在目的地址表中記錄生成的隧道表項,為生成的隧道表項設置老化定時器;當存在與外層源IP地址匹配的隧道表項時,刷新與外層源IP地址匹配的隧道表項的老化定時器的老化時間。所述處理模塊13,還用于在根據所述中心路由器的配置信息確定需要刪除所述分支網段表中的隧道表項,或者,根據刪除命令確定需要刪除所述分支網段表中的隧道表項,或者,根據隧道表項的老化定時器確定需要刪除所述分支網段表中的隧道表項時,則從所述分支網段表中刪除待刪除的隧道表項,或者,將所述分支網段表中的待刪除的隧道表項遷移到指定存儲位置。所述處理模塊13,具體用于在利用所述探測響應報文獲得與所述目的IP地址匹配的隧道表項的過程中,從所述探測響應報文中解析出分支路由器的IP地址,并判斷指定存儲位置是否存在與所述分支路由器的IP地址、所述目的IP地址匹配的隧道表項;如果是,則從所述指定存儲位置獲得與所述分支路由器的IP地址、所述目的IP地址匹配的隧道表項,刷新該隧道表項的老化定時器的老化時間;如果否,則生成與所述分支路由器的IP地址、所述目的IP地址匹配的隧道表項,并為生成的隧道表項設置老化定時器。所述處理模塊13,還用于在隧道表項的老化定時器超時時,根據所述隧道表項的外層源IP地址構造第三類報文,并向所述外層源IP地址對應的分支路由器發送所述第三類報文;若在預設時間內收到所述第三類報文對應的響應報文,則刷新所述隧道表項的老化定時器的老化時間;若在預設時間內未收到所述第三類報文對應的響應報文,則從所述目的地址表中刪除所述隧道表項;或者,在隧道表項的老化定時器超時之前的第N秒,根據所述隧道表項的外層源IP地址構造第三類報文,并向所述外層源IP地址對應的分支路由器發送所述第三類報文;若在所述老化定時器超時之前,收到所述第三類報文對應的響應報文,則刷新所述隧道表項的老化定時器的老化時間;若在所述老化定時器超時之前,未收到所述第三類報文對應的響應報文,則從所述目的地址表中刪除所述隧道表項;其中,N為大于0的數值。所述判斷模塊12,還用于在利用數據報文的目的IP地址查詢分支網段表后,若存在與所述目的IP地址匹配的隧道表項,查詢是否存在GRE隧道備份口;所述發送模塊14,還用于當不存在GRE隧道備份口時,則利用與所述目的IP地址匹配的隧道表項發送所述數據報文;當存在GRE隧道備份口時,則比較隧道表項的優先級與所述GRE隧道備份口的優先級,如果隧道表項的優先級高于所述GRE隧道備份口的優先級,則利用與所述目的IP地址匹配的隧道表項發送所述數據報文,如果所述GRE隧道備份口的優先級高于隧道表項的優先級,則利用所述GRE隧道備份口發送所述數據報文;所述判斷模塊12,還用于在利用所述數據報文的目的IP地址查詢分支網段表后,若不存在與所述目的IP地址匹配的隧道表項,則查詢是否存在GRE隧道備份口;所述發送模塊14,還用于當存在GRE隧道備份口時,則利用所述GRE隧道備份口發送所述數據報文;當不存在GRE隧道備份口時,則由所述處理模塊13為目的地址表中的每個IP地址構造探測報文。上述實施例闡明的系統、裝置、模塊或單元,具體可以由計算機芯片或實體實現,或者由具有某種功能的產品來實現。一種典型的實現設備為計算機,計算機的具體形式可以是個人計算機、膝上型計算機、蜂窩電話、相機電話、智能電話、個人數字助理、媒體播放器、導航設備、電子郵件收發設備、游戲控制臺、平板計算機、可穿戴設備或者這些設備中的任意幾種設備的組合。為了描述的方便,描述以上裝置時以功能分為各種單元分別描述。當然,在實施本申請時可以把各單元的功能在同一個或多個軟件和/或硬件中實現。本領域內的技術人員應明白,本申請的實施例可提供為方法、系統、或計算機程序產品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本申請實施例可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。本申請是參照根據本申請實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可以由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其它可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其它可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。而且,這些計算機程序指令也可以存儲在能引導計算機或其它可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或者多個流程和/或方框圖一個方框或者多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其它可編程數據處理設備上,使得在計算機或者其它可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其它可編程設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。本領域技術人員應明白,本申請的實施例可提供為方法、系統或計算機程序產品。因此,本申請可以采用完全硬件實施例、完全軟件實施例、或者結合軟件和硬件方面的實施例的形式。而且,本申請可以采用在一個或者多個其中包含有計算機可用程序代碼的計算機可用存儲介質(可以包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求范圍之內。當前第1頁1 2 3 
當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 民乐县| 嵊州市| 来安县| 鹤峰县| 西安市| 开原市| 嘉黎县| 金坛市| 锡林郭勒盟| 什邡市| 泗洪县| 鸡东县| 鲜城| 武定县| 大英县| 玉林市| 南召县| 万山特区| 五莲县| 花莲县| 云梦县| 陆丰市| 绵竹市| 清徐县| 义乌市| 兴化市| 龙江县| 垦利县| 增城市| 涪陵区| 皋兰县| 新和县| 马边| 巨鹿县| 商都县| 双鸭山市| 武穴市| 林甸县| 宁晋县| 木里| 萨迦县|