本申請涉及通信,尤其涉及一種報文分流方法、網(wǎng)絡(luò)設(shè)備及存儲介質(zhì)。
背景技術(shù):
1、af_xdp(address?family?express?data?path)是linux內(nèi)核從v4.18版本開始加入的一個地址族,具體是通過af_xdp套接字(af_xdp?socket,xsk)提供高性能的數(shù)據(jù)處理方式。因此,應(yīng)用程序可以通過用戶態(tài)協(xié)議棧完成報文的接收和發(fā)送,無需調(diào)用傳統(tǒng)的linux內(nèi)核協(xié)議棧。
2、但是,在使用虛擬機或者容器場景下,經(jīng)常只有一個網(wǎng)絡(luò)接口,若在該場景下使用了基于快速數(shù)據(jù)路徑地址族(address?family?express?data?path,af_xdp)的用戶態(tài)協(xié)議棧和linux內(nèi)核協(xié)議棧,此時這兩種協(xié)議棧就需要共享同一個網(wǎng)絡(luò)接口。由于這兩種協(xié)議棧共享同一個網(wǎng)絡(luò)接口,可能會導(dǎo)致應(yīng)用程序分別在兩種協(xié)議棧上主動建立udp或tcp連接,兩種協(xié)議棧分配的本地端口號有可能會發(fā)生沖突,從而造成資源沖突而報錯的問題,用戶體驗較差。
技術(shù)實現(xiàn)思路
1、本申請實施例的主要目的在于提供一種報文分流方法、網(wǎng)絡(luò)設(shè)備及存儲介質(zhì),旨在解決基于af_xdp的用戶態(tài)協(xié)議棧和linux內(nèi)核協(xié)議棧共享網(wǎng)絡(luò)接口時所面臨的資源沖突的問題。
2、第一方面,本申請實施例提供一種報文分流方法,所述方法包括:
3、獲取網(wǎng)絡(luò)報文對應(yīng)的協(xié)議類型;
4、若所述協(xié)議類型為第一預(yù)設(shè)協(xié)議類型,則獲取所述網(wǎng)絡(luò)報文對應(yīng)的目標端口號;
5、若所述目標端口號屬于預(yù)設(shè)端口號組,則將所述網(wǎng)絡(luò)報文傳遞到對應(yīng)的用戶態(tài)協(xié)議棧,以使所述用戶態(tài)協(xié)議棧對所述網(wǎng)絡(luò)報文進行處理;
6、若所述目標端口號不屬于所述預(yù)設(shè)端口號組,則將所述網(wǎng)絡(luò)報文傳遞到linux內(nèi)核協(xié)議棧,以使所述linux內(nèi)核協(xié)議棧對所述網(wǎng)絡(luò)報文進行處理。
7、第二方面,本申請實施例提供一種網(wǎng)絡(luò)設(shè)備,所述網(wǎng)絡(luò)設(shè)備包括:
8、處理器、存儲器、存儲在所述存儲器上并可被所述處理器執(zhí)行的計算機程序以及用于實現(xiàn)所述處理器和所述存儲器之間的連接通信的數(shù)據(jù)總線,其中所述計算機程序被所述處理器執(zhí)行時,實現(xiàn)如前述所述的報文分流方法的步驟。
9、第三方面,本申請實施例提供一種存儲介質(zhì),用于計算機可讀存儲,所述存儲介質(zhì)存儲有一個或者多個程序,所述一個或者多個程序可被一個或者多個處理器執(zhí)行,以實現(xiàn)如前述所述的報文分流方法的步驟。
10、本申請實施例提供一種報文分流方法、網(wǎng)絡(luò)設(shè)備及存儲介質(zhì)。獲取網(wǎng)絡(luò)報文對應(yīng)的協(xié)議類型;若協(xié)議類型為第一預(yù)設(shè)協(xié)議類型,則獲取網(wǎng)絡(luò)報文對應(yīng)的目標端口號;若目標端口號屬于預(yù)設(shè)端口號組,則將網(wǎng)絡(luò)報文傳遞到對應(yīng)的用戶態(tài)協(xié)議棧,以使用戶態(tài)協(xié)議棧對網(wǎng)絡(luò)報文進行處理;若目標端口號不屬于預(yù)設(shè)端口號組,則將網(wǎng)絡(luò)報文傳遞到linux內(nèi)核協(xié)議棧,以使linux內(nèi)核協(xié)議棧對網(wǎng)絡(luò)報文進行處理。由此可以使得基于af_xdp的用戶態(tài)協(xié)議棧和傳統(tǒng)的linux內(nèi)核協(xié)議棧共享網(wǎng)絡(luò)接口且不發(fā)生資源沖突,從而避免資源沖突而報錯的問題,提高了報文分流的穩(wěn)定性。
1.一種報文分流方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述預(yù)設(shè)端口號組包括預(yù)設(shè)端口號和預(yù)設(shè)端口范圍;所述獲取所述網(wǎng)絡(luò)報文對應(yīng)的目標端口號之后,還包括:
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第一預(yù)設(shè)協(xié)議類型為udp協(xié)議類型或tcp協(xié)議類型,所述確定所述目標端口號是否為所述預(yù)設(shè)端口號之前,還包括:
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述將所述網(wǎng)絡(luò)報文傳遞到對應(yīng)的用戶態(tài)協(xié)議棧,以使所述用戶態(tài)協(xié)議棧對所述網(wǎng)絡(luò)報文進行處理,包括:
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取網(wǎng)絡(luò)報文對應(yīng)的協(xié)議類型之后,還包括:
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述用戶態(tài)協(xié)議棧從所述af_xdp套接字接收到所述網(wǎng)絡(luò)報文,并對所述網(wǎng)絡(luò)報文進行處理,包括:
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所述目標字段信息確定所述網(wǎng)絡(luò)報文對應(yīng)的arp報文類型之后,還包括:
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取網(wǎng)絡(luò)報文之后,還包括:
9.一種網(wǎng)絡(luò)設(shè)備,其特征在于,所述網(wǎng)絡(luò)設(shè)備包括:
10.一種存儲介質(zhì),用于計算機可讀存儲,其特征在于,所述存儲介質(zhì)存儲有一個或者多個程序,所述一個或者多個程序可被一個或者多個處理器執(zhí)行,以實現(xiàn)如權(quán)利要求1至8中任一項所述的報文分流方法的步驟。