本發明涉及數據網絡通信領域,尤其是涉及到報文解封裝處理方法及裝置。
背景技術:
通用路由協議封裝(genericroutingencapsulation,簡稱gre)有效解決了將一種協議的報文在另一種協議組成的網絡中傳輸的問題,能夠高效利用現有網絡,減少升級、新建網絡的投資。
隨著云計算、流媒體、移動應用的普及,運營商核心網設備不斷向高速ip分組傳輸演進以提升網絡能力,gre隧道技術被越來越廣泛的應用,對gre隧道解封裝的效率的要求也越來越高,尤其是在用gre隧道穿越二級運營商虛擬專用網絡(virtualprivatenetwork,簡稱vpn)接入多協議標記交換(multiprotocallabelswitchingvpn,簡稱mplsvpn)骨干網的應用場景,既要知道gre穿越vpn網絡的vpnid,也要知道接入mplsvpn的解封裝以后的vpnid。目前對隧道解封裝的通常做法是為解封裝專門建一張隧道終結表,表里存放隧道終結標記和vpnid,轉發面通過查終結表得到隧道終結標記和vpnid,通過終結標記判斷是否解封裝,即剝掉外層ip頭和gre頭,用內層ip頭中的目的ip地址加終結表里的vpnid查路由表轉發。這種方式需要用gre的目的地址和源地址為關鍵字用某種hash算法得到終結表的表索引,因此,要使用更多的微碼指令完成解封裝的工作,引起報文處理時間變長,這給實現日益提高的線速轉發要求提出了挑戰。
針對相關技術中gre隧道解封裝處理時間過長的問題,現有技術還未提出有效的解決方案。
技術實現要素:
本發明的目的在于提供了報文解封裝處理方法及裝置,解決了相關技術中gre隧道解封裝處理時間過長的問題。
根據本發明的一個方面,提供一種報文解封裝處理方法,包括:解析獲取報文的鍵值,其中,該鍵值包括隧道源地址、隧道目的地址、隧道穿過的虛擬專用網絡vpn的id號、通用路由協議封裝gre的協議號;通過該鍵值查詢訪問控制列表acl表獲取與該鍵值對應的結果值,并根據該結果值對報文進行解封裝處理,其中,該acl表包括通過控制面寫入的鍵值和結果值,該結果值包括終結標記和內層vpn的id號。
進一步地,通過該鍵值查詢訪問控制列表acl表獲取與該鍵值對應的結果值,并根據該結果值對報文進行解封裝處理包括:通過該鍵值查詢訪問控制列表acl表獲取與該鍵值對應的終結標記,在該終結標記為終結的情況下,獲取與該鍵值對應的內層vpn的id號,并對該報文進行gre解封裝;通過該鍵值查詢訪問控制列表acl表獲取與該鍵值對應的終結標記和內層vpn的id號,在該終結標記為終結的情況下,并對該報文進行gre解封裝。
進一步地,該報文解封裝處理方法還包括:在該終結標記為未終結的情況下,對該報文進行繼續轉發。
進一步地,在對該報文進行gre解封裝之后,該報文解封裝處理方法還包括:將該內層vpn的id號結合內層目的ip地址得到路由轉發信息;根據該路由轉發信息進行轉發。
進一步地,該解析報文獲取鍵值包括:通過該報文入接口id號查詢隧道的接口表得到隧道穿過的vpnid號。
根據本發明的另一方面,提供一種數據寫入方法包括:將鍵值與結果值寫入訪問控制列表acl表,其中,該鍵值包括隧道源地址、隧道目的地址、隧道穿過的虛擬專用網絡vpn的id號、通用路由協議封裝gre的協議號,該鍵值與該結果值對應,該結果值包括終結標記和內層vpn的id號,該acl表用于通過解析獲取報文的鍵值查詢以獲取與該鍵值對應的結果值,并根據該結果值對報文進行解封裝處理。
根據本發明的另一方面,提供一種報文解封裝處理裝置,包括:解析模塊,用于解析報文獲取鍵值,其中,該鍵值包括隧道源地址、隧道目的地址、隧道穿過的虛擬專用網絡vpn的id號、通用路由協議封裝gre的協議號;獲取模塊,用于通過該鍵值查詢訪問控制列表acl表獲取與該鍵值對應的結果值,并根據該結果值對報文進行解封裝處理,其中,該acl表包括通過控制面寫入的鍵值和結果值,該結果值包括終結標記和內層vpn的id號。
進一步地,該獲取模塊包括:第一獲取單元,用于通過該鍵值查詢訪問控制列表acl表獲取與該鍵值對應的終結標記;第一處理單元,用于在該終結標記為終結的情況下,獲取與該鍵值對應的內層vpn的id號,并對該報文進行gre解封裝;
第二獲取單元,用于通過該鍵值查詢訪問控制列表acl表獲取與該鍵值對應的終結標記和內層vpn的id號;第二處理單元,用于在該終結標記為終結的情況下,并對該報文進行gre解封裝。
進一步地,該報文解封裝處理裝置還包括得到模塊,用于將該內層vpn的id號結合內層目的ip地址得到路由轉發信息;轉發模塊,用于根據該路由轉發信息進行轉發。
根據本發明的另一方面,提供一種數據寫入裝置,包括:寫入模塊,用于將鍵值與結果值寫入訪問控制列表acl表,其中,該鍵值包括隧道源地址、隧道目的地址、隧道穿過的虛擬專用網絡vpn的id號、通用路由協議封裝gre的協議號,該鍵值與該結果值對應,該結果值包括終結標記和內層vpn的id號,該acl表用于通過解析獲取報文的鍵值查詢以獲取與該鍵值對應的結果值,并根據該結果值對報文進行解封裝處理。
通過本發明,采用在acl表中讀取結果值的技術方案,解決了相關技術中gre隧道解封裝處理時間過長的問題,降低了解封裝過程中所需要的微碼指令。
附圖說明
此處所說明的附圖用來提供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中:
圖1是根據本發明實施例的報文解封裝方法的流程圖一;
圖2是根據本發明實施例的報文解封裝處理裝置的結構框圖一;
圖3是根據本發明優選實施例的報文解封裝處理裝置的結構框圖一;
圖4是根據本發明優選實施例的報文解封裝處理裝置的結構框圖二;
圖5是根據本發明實施例的報文處理方法的流程圖;
圖6是根據本發明實施例的控制面gre隧道解封裝寫acl表的流程圖;
圖7是根據本發明實施例的轉發面gre隧道解封裝的流程圖。
具體實施方式
下文中將參考附圖并結合實施例來詳細說明本發明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。
在本實施例中提供了一種報文解封裝處理方法及裝置,圖1是根據本發明實施例的報文解封裝處理方法的流程圖一,如圖1所示,該流程包括如下步驟:
步驟s102,轉發面解析獲取報文的鍵值,其中,該鍵值包括隧道源地址、隧道目的地址、隧道穿過的虛擬專用網絡vpn的id號、通用路由協議封裝gre的協議號;
步驟s104,該轉發面通過該鍵值查詢訪問控制列表acl表獲取與該鍵值對應的結果值,并根據該結果值對報文進行解封裝處理,其中,該acl表包括通過控制面寫入的鍵值和結果值,該結果值包括終結標記和內層vpn的id號。
可選地,該轉發面可通過該報文入接口id號查詢隧道的接口表得到隧道穿過的vpnid號。
一種可選地實施方式為該轉發面通過該鍵值查詢acl表獲取與該鍵值對應的終結標記,在該終結標記為終結的情況下,獲取與該鍵值對應的內層vpn的id號,并對該報文進行gre解封裝。在該終結標記為未終結的情況下,對該報文進行繼續轉發。
優選地,該轉發面通過該鍵值查詢acl表獲取與該鍵值對應的終結標記與內層vpn的id號,在該終結標記為終結的情況下,并對該報文進行gre解封裝,從而進一步減少指令開銷。
進一步地,在對該報文進行gre解封裝之后,轉發面將該內層vpn的id號結合內層目的ip地址得到路由轉發信息,根據該路由轉發信息查詢路由表進行轉發。
通過上述步驟,解決了相關技術中gre隧道解封裝處理時間過長的問題,降低了解封裝過程中所需要的微碼指令。
根據本發明實施例還提供一種數據寫入方法,該方法包括:將鍵值與結果值寫入訪問控制列表acl表,其中,該鍵值包括隧道源地址、隧道目的地址、隧道穿過的虛擬專用網絡vpn的id號、通用路由協議封裝gre的協議號,該鍵值與該結果值對應,該結果值包括終結標記和內層vpn的id號。轉發面可以解析報文以獲取鍵值,根據該獲取到的鍵值查詢acl表,以獲取與該鍵值對應的結果值,并根據該結果值對報文進行解封裝處理。
圖2是根據本發明實施例的報文解封裝處理裝置的結構框圖一,如圖2所示,該裝置包括:
解析模塊22,用于解析報文獲取鍵值,其中,上述鍵值包括隧道源地址、隧道目的地址、隧道穿過的虛擬專用網絡vpn的id號、通用路由協議封裝gre的協議號;
獲取模塊24,用于通過該鍵值查詢訪問控制列表acl表獲取與該鍵值對應的結果值,并根據該結果值對報文進行解封裝處理。
上述acl表包括通過控制面寫入的鍵值和結果值,該結果值包括終結標記和內層vpn的id號。
圖3是根據本發明優選實施例的報文解封裝處理裝置的結構框圖一,如圖3所示,上述獲取模塊24包括:
第一獲取單元32,用于通過該鍵值查詢訪問控制列表acl表獲取與該鍵值對應的終結標記;
第一處理單元34,用于在該終結標記為終結的情況下,獲取與該鍵值對應的內層vpn的id號,并對該報文進行gre解封裝;
可選地,上述獲取模塊24還可以包括:第二獲取單元,用于通過該鍵值查詢訪問控制列表acl表獲取與該鍵值對應的終結標記和內層vpn的id號;第二處理單元,用于在該終結標記為終結的情況下,并對該報文進行gre解封裝。
上述獲取模塊24包含上述第一獲取單元32和上述第一處理單元34,或者第二獲取單元與上述第二處理單元。一種可替代實施方式為,上述獲取模塊24包含上述第一獲取單元32和上述第一處理單元34,且包含第二獲取單元與上述第二處理單元。
圖4是根據本發明優選實施例的報文解封裝處理裝置的結構框圖二,如圖4所示,該報文解封裝處理裝置還包括:
得到模塊42,用于將該內層vpn的id號結合內層目的ip地址得到路由轉發信息;
轉發模塊44,用于根據該路由轉發信息進行轉發。
根據本發明實施例還提供一種數據寫入裝置,所述裝置包括:寫入模塊,用于將鍵值與結果值寫入訪問控制列表acl表,其中,該鍵值包括隧道源地址、隧道目的地址、隧道穿過的虛擬專用網絡vpn的id號、通用路由協議封裝gre的協議號,該鍵值與該結果值對應,該結果值包括終結標記和內層vpn的id號,該acl表用于通過解析獲取報文的鍵值查詢以獲取與該鍵值對應的結果值,并根據該結果值對報文進行解封裝處理。
下面結合具體實施例對本發明進行進一步說明。
圖5是根據本發明實施例的報文處理方法的流程圖,如圖5所示,該方法包括以下步驟:
步驟s502,控制面在gre隧道的兩端設備將隧道的源地址、目的地址、隧道穿過的vpn的vpnid和gre的協議號作為鍵值,以終結標記和解封裝后的vpnid為結果表內容寫訪問控制列表(accesscontrollist,簡稱acl)。
步驟s504,轉發面識別報文的目的ip地址、源ip地址、gre協議號和隧道穿過的vpn的vpnid,查acl表,得到結果表中的終結標記和解封裝后的vpnid,根據終結標記剝掉外層ip頭和gre頭變成普通ip報文,用內層目的ip地址和結果表里的vpnid查路由表得到轉發出接口,將報文轉發出去。
通過以上方式實現gre隧道在尾節點快速、高效解封裝。
與現有技術相比,本實施例的轉發面直接用報文關鍵字查acl表得到隧道的終結標記,不需要判斷報文的協議號為gre,簡化微碼流程;且轉發面通過acl鍵值查找acl表實現終結標記的獲取,不需要hash關鍵字查隧道終結表,降低微碼復雜度并減少微碼指令,為微碼支持更多功能提供了可能。
圖6是根據本發明實施例的控制面gre隧道解封裝寫acl表的流程圖,如圖6所示,該方法包括以下步驟:
步驟s602:隧道模塊整合配置的隧道源地址、目的地址、gre協議號、隧道穿過vpn的id號、終結標記(terminal_flag)、隧道接口vpnid信息傳遞給acl模塊。
步驟s604:acl模塊將隧道源地址、目的地址、gre協議號和隧道穿過vpnid按acl鍵值格式封裝為acl表的鍵值,將隧道終結標記和隧道接口vpnid按acl結果表格式封裝為acl結果表,調用公共接口將鍵值和結果寫入acl硬件表,acl將封裝好的鍵值和結果表組織在一起,如表1所示。
表1封裝好的鍵值和結果表格式
步驟s606:通過硬件提供的寫表接口將上述鍵值和結果值寫入硬件表,寫入的硬件表分為鍵值表和結果表,鍵值表內保存結果表的索引,acl匹配到鍵值表以后,通過鍵值表里的結果表索引查詢到結果表的內容,其表項組織形式如表2.1和2.2所示。上述結果值為隧道終結標記和隧道接口vpnid。
表2.1acl硬件表之鍵值表
表2.2acl硬件表之結果表
圖7是根據本發明實施例的轉發面gre隧道解封裝的流程圖,如圖7所示,該方法包括以下步驟:
步驟s702:轉發面“報文解析模塊”提取報文關鍵字,可選地,從ip報文中解析出源ip地址、目的ip地址,協議號等字段;
步驟s704:轉發面“vpnid查找模塊”由報文入接口id查接口表得到隧道穿過的vpnid;
步驟s706:轉發面“acl匹配模塊”由前兩步得到的字段組裝的acl鍵值查找acl表得到結果表傳遞給隧道解封裝模塊。
步驟s708:轉發面“隧道解封裝模塊”讀取acl結果表的終結標記,如果terminal_flag=1,表示當前設備為隧道尾節點,需要進行gre解封裝,剝離外層ip頭和gre頭,用結果表里的vpnid,也即解封裝后的vpnid加內層ip頭的目的ip地址查路由表繼續轉發;反之,繼續用外層ip頭的目的ip查路由轉發。
顯然,本領域的技術人員應該明白,上述的本發明的各模塊或各步驟可以用通用的計算裝置來實現,它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網絡上,可選地,它們可以用計算裝置可執行的程序代碼來實現,從而,可以將它們存儲在存儲裝置中由計算裝置來執行,并且在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現。這樣,本發明不限制于任何特定的硬件和軟件結合。
以上所述僅為本發明的優選實施例而已,并不用于限制本發明,對于本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包括在本發明的保護范圍之內。