本申請涉及通信,尤其涉及一種基于融合網關的數據包轉發方法、裝置、設備存儲及介質。
背景技術:
1、為了提供彈性靈活的網絡功能并降低成本,云廠商往往將網絡功能(networkfunction,nf)以軟件形式實現并運行在裸機或虛擬機中,以資源池的形式部署在網絡中。在一些云計算或邊緣計算場景中,網絡功能虛擬化(network?functions?virtualization,nfv)網元通常按照流水線的方式根據前后計算的順序進行組織。這一連串nf稱為服務功能鏈(service?function?chain,sfc),通常包括負載均衡器、防火墻、網絡地址轉換等功能。
2、然而在邊緣場景下,nf卻難以如此部署。1),邊緣云是一個效率低下的地方。與在大型數據中心上運行的常規云服務不同,邊緣服務需要靠近終端用戶(例如,移動或物聯網設備),通常位于電力、空間和計算受限的租賃設施中,無法部署大量服務器集群作為nf。2),邊緣場景下的中央處理器(central?processing?unit,cpu)算力資源寶貴,應該集中于處理租戶的計算任務,如果大量機器僅用于數據包處理,邊緣云的容量和效益將大大降低。最后,cpu并不是為網絡流量處理專門設計的,相比較于交換設備處理網絡流量的能力弱,導致軟件nf通常比硬件nf慢一到兩個數量級,在網絡流量持續增長的今天,單核cpu的算力增長速度明顯低于流量增長的速度,基于軟件的nf很難對數據包進行線速處理因此在一些大規模場景下逐漸捉襟見肘。
3、近年來,協議無關轉發架構和編程語言的流行讓很多研究者關注于使用可編程交換機卸載nfv,如圖1所示為p4抽象轉發模型,其中解析器和流表都可以通過p4語言進行編程配置;在表匹配時,匹配域和動作將不再受現有協議的限制。數據包進入p4交換機時,先完成程序員設計的數據包頭部解析,然后經過“匹配-動作”流水線完成數據包處理。在交換機運行時,用戶可以通過控制平面向交換機中加入表項。
4、雖然硬件轉發的性能比軟件性能強的多,但在nfv卸載方面存在一個問題:p4交換機的內存資源有限,無法存儲太多表項。以intel的tofino芯片為例,tofino有四個獨立的pipeline(管線)用于數據包處理,每條pipeline由固定數量的單個stage(階段)組成,每個stage都有自己的靜態隨機存取存儲器(static?random-access?memory,sram)和三重內容尋址內存(ternary?content?addressable?memory,tcam),內存資源被相等地分割并附加到每個stage,使得每個stage只能訪問其本地內存資源。雖然表可以跨stage配置,但對一些包含大量的表項的nf網元(如公有云網關中的虛擬擴展局域網(virtual?extensiblelocal?area?network,vxlan)路由表),顯然使用單獨p4交換芯片無法存儲,導致大表項的nf無法卸載到asic(application?specific?integrated?circuit,應用型專用集成電路)硬件中。
技術實現思路
1、本申請實施例提供一種基于融合網關的數據包轉發方法、裝置、設備存儲及介質,以解決現有技術中asic內存資源有限導致僅能存儲少量nfv網元表項的問題。
2、為解決上述技術問題,本申請是這樣實現的:
3、第一方面,本申請實施例提供一種基于融合網關的數據包轉發方法,所述融合網關包括硬件單元和軟件單元,所述硬件單元的預設流表中存儲有與網關功能虛擬化nfv網元對應的熱點表項,所述軟件單元的內存數據庫中存儲有與所述nfv網元對應的非熱點表項,所述方法包括:在所述硬件單元獲取到數據包后,在所述預設流表中查找是否存在用于轉發所述數據包的表項;在預設流表中不存在所述表項的情況下,在所述數據包中插入目標字段,并將插入所述目標字段的數據包轉發至所述軟件單元;其中,所述目標字段用于表征與所述表項對應的表信息;基于所述目標字段在所述內存數據庫中查找所述表項,并基于查找到的所述表項更新所述預設流表;將所述數據包發送至所述硬件單元,并基于所述預設流表中的所述表項轉發所述數據包。
4、第二方面,本申請實施例提供一種基于融合網關的數據包轉發裝置,所述融合網關包括硬件單元和軟件單元,所述硬件單元的預設流表中存儲有與網關功能虛擬化nfv網元對應的熱點表項,所述軟件單元的內存數據庫中存儲有與所述nfv網元對應的非熱點表項,所述裝置包括:查找模塊,用于在所述硬件單元獲取到數據包后,在所述預設流表中查找是否存在用于轉發所述數據包的表項;第一處理模塊,用于在預設流表中不存在所述表項的情況下,在所述數據包中插入目標字段,并將插入所述目標字段的數據包轉發至所述軟件單元;其中,所述目標字段用于表征與所述表項對應的表信息;第二處理模塊,用于基于所述目標字段在所述內存數據庫中查找所述表項,并基于查找到的所述表項更新所述預設流表;第三處理模塊,用于將所述數據包發送至所述硬件單元,并基于所述預設流表中的所述表項轉發所述數據包。
5、第三方面,本申請實施例提供一種通信設備,包括收發機和處理器,所述處理器,用于在所述硬件單元獲取到數據包后,在所述預設流表中查找是否存在用于轉發所述數據包的表項,以及在預設流表中不存在所述表項的情況下,在所述數據包中插入目標字段;所述收發機,用于將插入所述目標字段的數據包轉發至所述軟件單元;其中,所述目標字段用于表征與所述表項對應的表信息;所述處理器,還用于基于所述目標字段在所述內存數據庫中查找所述表項,并基于查找到的所述表項更新所述預設流表;所述收發機,還用于將所述數據包發送至所述硬件單元,并基于所述預設流表中的所述表項轉發所述數據包。第四方面,本申請實施例提供一種通信設備,包括:處理器、存儲器及存儲在所述存儲器上并可在所述處理器上運行的程序,所述程序被所述處理器執行時實現如上述第一方面所述的基于融合網關的數據包轉發方法的步驟。
6、第五方面,本申請實施例提供一種計算機可讀存儲介質,所述計算機可讀存儲介質上存儲有計算機程序,所述計算機程序被處理器執行時實現如上述第一方面所述的基于融合網關的數據包轉發方法的步驟。
7、本申請實施例中,由于硬件單元的預設流表中存儲有與網關功能虛擬化nfv網元對應的熱點表項,軟件單元的內存數據庫中存儲有與nfv網元對應的非熱點表項,因此,在硬件單元中未查找到用于轉發數據包的表項時,會將數據包轉發至軟件單元,并在軟件單元中進行查找,然后將查找到的表項更新至硬件單元,并將數據包再次發送至硬件單元,從而在硬件單元的預設流表中查找到用于轉發數據包的表項。可見,在本申請實施例中通過軟件單元存儲一部分表項,相比于現有技術中僅有asic硬件單元存儲表項,擴展了存表空間,從而解決了現有技術中asic內存資源有限導致僅能存儲少量nfv網元表項的問題。
1.一種基于融合網關的數據包轉發方法,其特征在于,所述融合網關包括硬件單元和軟件單元,所述硬件單元的預設流表中存儲有與網關功能虛擬化nfv網元對應的熱點表項,所述軟件單元的內存數據庫中存儲有與所述nfv網元對應的非熱點表項,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述在所述數據包中插入目標字段,并將插入所述目標字段的數據包轉發至所述軟件單元包括:
3.根據權利要求2所述的方法,其特征在于,基于所述目標字段在所述內存數據庫中查找所述表項,并基于查找到的表項更新所述預設流表包括:
4.根據權利要求3所述的方法,其特征在于,將所述數據包發送至所述硬件單元,包括:
5.根據權利要求4所述的方法,其特征在于,基于所述預設流表中的所述表項轉發所述數據包,包括:
6.根據權利要求1所述的方法,其特征在于,在所述預設流表包括多個流表的情況下,在所述預設流表中查找是否存在用于轉發所述數據包的表項,包括:
7.根據權利要求6所述的方法,其特征在于,基于所述關鍵字進行哈希函數計算,并將計算結果與預設結果比較結果確定第二流表包括:
8.一種基于融合網關的數據包轉發裝置,其特征在于,所述融合網關包括硬件單元和軟件單元,所述硬件單元的預設流表中存儲有與網關功能虛擬化nfv網元對應的熱點表項,所述軟件單元的內存數據庫中存儲有與所述nfv網元對應的非熱點表項,所述裝置包括:
9.一種通信設備,其特征在于,包括收發機和處理器,
10.一種通信設備,其特征在于,包括:處理器、存儲器及存儲在所述存儲器上并可在所述處理器上運行的程序,所述程序被所述處理器執行時實現如權利要求1至7中任一項所述的基于融合網關的數據包轉發方法的步驟。
11.一種可讀存儲介質,其特征在于,所述計算機可讀存儲介質上存儲有計算機程序,所述計算機程序被處理器執行時實現如權利要求1至7中任一項所述的基于融合網關的數據包轉發方法的步驟。