亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種報(bào)文轉(zhuǎn)發(fā)方法及裝置與流程

文檔序號(hào):12492355閱讀:350來(lái)源:國(guó)知局
一種報(bào)文轉(zhuǎn)發(fā)方法及裝置與流程

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種報(bào)文轉(zhuǎn)發(fā)方法及裝置。



背景技術(shù):

網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)吞吐性能和新建會(huì)話性能代表了一個(gè)網(wǎng)絡(luò)安全廠商的技術(shù)實(shí)力。隨著計(jì)算機(jī)領(lǐng)域科技發(fā)展,多核技術(shù)已經(jīng)成為十分成熟的技術(shù),基于多核系統(tǒng)的網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備隨之出現(xiàn),通過(guò)增加網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備的中央處理器(Central Processing Unit,CPU)核的個(gè)數(shù),來(lái)提升網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)吞吐性能已成為一種趨勢(shì)。

在現(xiàn)有技術(shù)中,在進(jìn)行報(bào)文轉(zhuǎn)發(fā)時(shí),網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備通常基于用戶態(tài)和內(nèi)核態(tài)共同維護(hù)的實(shí)體會(huì)話表對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),如圖1所示,在用戶態(tài)、內(nèi)核線程、內(nèi)核系統(tǒng)調(diào)用、內(nèi)核軟中斷上下文等分別有不同模塊或CPU,對(duì)共同維護(hù)的實(shí)體會(huì)話表進(jìn)行各種新建、刪除、更新和查找等訪問(wèn)操作。然而,在多核系統(tǒng)下,為了保證會(huì)話表的安全性,用戶態(tài)和內(nèi)核態(tài)通過(guò)加鎖的方式訪問(wèn)共同維護(hù)的實(shí)體會(huì)話表,即一個(gè)模塊或CPU訪問(wèn)實(shí)體會(huì)話表時(shí),其他模塊或CPU無(wú)法訪問(wèn)實(shí)體會(huì)話表,因此會(huì)產(chǎn)生多核互斥以及資源競(jìng)爭(zhēng)的問(wèn)題,這樣會(huì)造成網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能并未隨著CPU核個(gè)數(shù)的增加而線性增長(zhǎng),從而導(dǎo)致報(bào)文轉(zhuǎn)發(fā)性能較低。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本發(fā)明提出了一種報(bào)文轉(zhuǎn)發(fā)方法及裝置,主要目的在于解決由于現(xiàn)有技術(shù)中網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能并未隨著CPU核個(gè)數(shù)的增加而線性增長(zhǎng),導(dǎo)致報(bào)文轉(zhuǎn)發(fā)性能較低的問(wèn)題。

為達(dá)到上述目的,本發(fā)明提供如下技術(shù)方案:

一方面,本發(fā)明提供了一種報(bào)文轉(zhuǎn)發(fā)方法,包括:

根據(jù)接收到的報(bào)文,查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中是否存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,所述實(shí)體接會(huì)話表中包含所述用戶態(tài)CPU負(fù)責(zé)處理的會(huì)話連接,不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表;

若存在,則通過(guò)所述用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā);

若不存在,則基于接收?qǐng)?bào)文的用戶態(tài)CPU向內(nèi)核態(tài)CPU獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息;

基于所述接收?qǐng)?bào)文的用戶態(tài)CPU根據(jù)所述會(huì)話連接建立策略信息建立與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,并通過(guò)所述接收?qǐng)?bào)文的CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā)。

進(jìn)一步地,所述接收?qǐng)?bào)文的用戶態(tài)CPU通過(guò)內(nèi)核態(tài)CPU獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息包括:

基于所述接收?qǐng)?bào)文的用戶態(tài)CPU向內(nèi)核態(tài)CPU發(fā)送針對(duì)所述報(bào)文建立會(huì)話連接的請(qǐng)求,所述請(qǐng)求中包含所述報(bào)文;

所述內(nèi)核態(tài)CPU根據(jù)所述請(qǐng)求獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息,并將所述會(huì)話連接建立策略信息發(fā)送給所述接收?qǐng)?bào)文的用戶態(tài)CPU。

進(jìn)一步地,所述內(nèi)核態(tài)CPU根據(jù)所述請(qǐng)求獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息包括:

所述內(nèi)核態(tài)CPU在接收到所述請(qǐng)求后,查詢是否有已建立的會(huì)話子連接模板,所述會(huì)話子連接模板為源端口號(hào)為0且源互聯(lián)網(wǎng)協(xié)議IP地址、目的IP地址、目的端口號(hào)以及協(xié)議類型與會(huì)話連接一致的會(huì)話連接模板;

若有已建立的會(huì)話子連接模板,則查詢已建立的會(huì)話子連接模板中是否存在與所述報(bào)文對(duì)應(yīng)的會(huì)話子連接模板;

若存在與所述報(bào)文對(duì)應(yīng)的會(huì)話子連接模板,則將所述報(bào)文按照所述會(huì)話子連接模板封裝與所述報(bào)文對(duì)應(yīng)的會(huì)話消息,并發(fā)送給內(nèi)核態(tài)的CPU,以便獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息;

若不存在與所述報(bào)文對(duì)應(yīng)的會(huì)話子連接模板,則將所述報(bào)文發(fā)送給內(nèi)核態(tài)的CPU,以便獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息;

若沒(méi)有已建立的會(huì)話子連接模板,則將所述報(bào)文發(fā)送給內(nèi)核態(tài)的CPU,以便獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息。

進(jìn)一步地,通過(guò)所述用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā)包括:

確定與所述報(bào)文對(duì)應(yīng)的會(huì)話連接存在的實(shí)體會(huì)話表所屬的用戶態(tài)CPU是否為接收?qǐng)?bào)文的用戶態(tài)CPU;

若為接收?qǐng)?bào)文的用戶態(tài)CPU,則通過(guò)接收?qǐng)?bào)文的用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā);

若為除接收?qǐng)?bào)文的用戶態(tài)CPU以外的其他用戶態(tài)CPU,則通過(guò)倒核隊(duì)列將所述報(bào)文轉(zhuǎn)發(fā)給對(duì)應(yīng)的其他用戶態(tài)CPU進(jìn)行轉(zhuǎn)發(fā)。

進(jìn)一步地,所述方法還包括:

為每個(gè)用戶態(tài)CPU建立一個(gè)會(huì)話消息接收隊(duì)列,所述會(huì)話消息接收隊(duì)列用于接收用戶態(tài)其他CPU對(duì)本地CPU實(shí)體會(huì)話表的新建、刪除或更新消息。

進(jìn)一步地,所述方法還包括:

用戶態(tài)CPU接收設(shè)置在用戶態(tài)的配置命令行調(diào)試模塊發(fā)送的針對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表進(jìn)行操作的操作消息;

接收到所述操作消息的用戶態(tài)CPU根據(jù)所述操作消息對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表執(zhí)行對(duì)應(yīng)的操作。

進(jìn)一步地,所述用戶態(tài)CPU接收設(shè)置在用戶態(tài)的配置命令行調(diào)試模塊發(fā)送的針對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表進(jìn)行操作的操作消息,包括:

用戶態(tài)建立與所述配置命令行調(diào)試模塊進(jìn)行通信的進(jìn)程間通信ipc線程;

所述ipc線程接收所述配置命令行調(diào)試模塊發(fā)送的針對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表進(jìn)行操作的操作消息,并根據(jù)所述操作消息的類型確定執(zhí)行所述操作消息的用戶態(tài)CPU;

將所述操作消息發(fā)送給確定的用戶態(tài)CPU。

進(jìn)一步地,所述實(shí)體會(huì)話表包括安全部分和不安全部分,所述安全部分用于存儲(chǔ)非地址信息,所述不安全部分用于存儲(chǔ)地址信息;所述方法還包括:

在初始化的過(guò)程中,將所述實(shí)體會(huì)話表的地址空間共享給內(nèi)核態(tài),以便內(nèi)核態(tài)的其他CPU安全的獲取一實(shí)體會(huì)話表的安全信息。

優(yōu)選地,所述實(shí)體會(huì)話表采用預(yù)先分配的內(nèi)存池申請(qǐng)獲取。

另一個(gè)方面,本發(fā)明提供了一種報(bào)文轉(zhuǎn)發(fā)裝置,包括:

查詢單元,用于根據(jù)接收到的報(bào)文,查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中是否存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,所述實(shí)體接會(huì)話表中包含所述用戶態(tài)CPU負(fù)責(zé)處理的會(huì)話連接,不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表;

轉(zhuǎn)發(fā)單元,用于若所述查詢單元查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,則通過(guò)所述用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā);

獲取單元,用于若所述查詢單元查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中不存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,則基于接收?qǐng)?bào)文的用戶態(tài)CPU向內(nèi)核態(tài)CPU獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息;

建立單元,用于基于所述接收?qǐng)?bào)文的用戶態(tài)CPU根據(jù)所述會(huì)話連接建立策略信息建立與所述報(bào)文對(duì)應(yīng)的會(huì)話連接;

所述轉(zhuǎn)發(fā)單元,還用于通過(guò)所述接收?qǐng)?bào)文的CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā)。

進(jìn)一步地,所述獲取單元包括:

獲取子單元,用于基于所述接收?qǐng)?bào)文的用戶態(tài)CPU向內(nèi)核態(tài)CPU發(fā)送針對(duì)所述報(bào)文建立會(huì)話連接的請(qǐng)求,所述請(qǐng)求中包含所述報(bào)文;

所述獲取子單元,還用于所述內(nèi)核態(tài)CPU根據(jù)所述請(qǐng)求獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息;

第一發(fā)送子單元,用于將所述會(huì)話連接建立策略信息發(fā)送給所述接收?qǐng)?bào)文的用戶態(tài)CPU。

進(jìn)一步地,所述獲取子單元包括:

第一查詢模塊,用于所述內(nèi)核態(tài)CPU在接收到所述請(qǐng)求后,查詢是否有已建立的會(huì)話子連接模板,所述會(huì)話子連接模板為源端口號(hào)為0且源互聯(lián)網(wǎng)協(xié)議IP地址、目的IP地址、目的端口號(hào)以及協(xié)議類型與會(huì)話連接一致的會(huì)話連接模板;

第二查詢模塊,用于若所述第一查詢模塊查詢有已建立的會(huì)話子連接模板,則查詢已建立的會(huì)話子連接模板中是否存在所述報(bào)文對(duì)應(yīng)的會(huì)話子連接模板;

第一發(fā)送模塊,用于若所述第二查詢模塊查詢已建立的會(huì)話子連接模板中存在所述報(bào)文對(duì)應(yīng)的會(huì)話子連接模板,則將所述報(bào)文按照所述會(huì)話子連接模板封裝與所述報(bào)文對(duì)應(yīng)的會(huì)話消息,并發(fā)送給內(nèi)核態(tài)的CPU,以便獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息;

所述第一發(fā)送模塊,還用于若所述第二查詢模塊查詢已建立的會(huì)話子連接模板中不存在所述報(bào)文對(duì)應(yīng)的會(huì)話子連接模板,則將所述報(bào)文發(fā)送給內(nèi)核態(tài)的CPU,以便獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息;

第二發(fā)送模塊,用于若所述第一查詢模塊查詢沒(méi)有已建立的會(huì)話子連接模板,則將所述報(bào)文發(fā)送給內(nèi)核態(tài)的CPU,以便獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息。

進(jìn)一步地,所述轉(zhuǎn)發(fā)單元包括:

第一確定子單元,用于確定與所述報(bào)文對(duì)應(yīng)的會(huì)話連接存在的實(shí)體會(huì)話表所屬的用戶態(tài)CPU是否為接收?qǐng)?bào)文的用戶態(tài)CPU;

轉(zhuǎn)發(fā)子單元,用于若所述第一確定子單元確定與所述報(bào)文對(duì)應(yīng)的會(huì)話連接存在的實(shí)體會(huì)話表所屬的用戶態(tài)CPU為接收?qǐng)?bào)文的用戶態(tài)CPU,則通過(guò)接收?qǐng)?bào)文的用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā);

所述轉(zhuǎn)發(fā)子單元,還用于若所述第一確定子單元確定與所述報(bào)文對(duì)應(yīng)的會(huì)話連接存在的實(shí)體會(huì)話表所屬的用戶態(tài)CPU為除接收?qǐng)?bào)文的用戶態(tài)CPU以外的其他用戶態(tài)CPU,則通過(guò)倒核隊(duì)列將所述報(bào)文轉(zhuǎn)發(fā)給對(duì)應(yīng)的其他用戶態(tài)CPU進(jìn)行轉(zhuǎn)發(fā)。

所述建立單元,還用于為每個(gè)用戶態(tài)CPU建立一個(gè)會(huì)話消息接收隊(duì)列,所述會(huì)話消息接收隊(duì)列用于接收用戶態(tài)其他CUP對(duì)本地CUP實(shí)體會(huì)話表的新建、刪除或更新消息。

進(jìn)一地,所述裝置還包括:

接收單元,用于用戶態(tài)CPU接收設(shè)置在用戶態(tài)的配置命令行調(diào)試模塊發(fā)送的針對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表進(jìn)行操作的操作消息;

執(zhí)行單元,用于接收到所述操作消息的用戶態(tài)CPU根據(jù)所述操作消息對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表執(zhí)行對(duì)應(yīng)的操作。

進(jìn)一步地,所述接收單元包括:

建立子單元,用于用戶態(tài)建立與所述配置命令行調(diào)試模塊進(jìn)行通信的進(jìn)程間通信ipc線程;

接收子單元,用于所述ipc線程接收所述配置命令行調(diào)試模塊發(fā)送的針對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表進(jìn)行操作的操作消息;

第二確定子單元,用于根據(jù)所述接收子單元接收的所述操作消息的類型確定執(zhí)行所述操作消息的用戶態(tài)CPU;

第二發(fā)送子單元,用于將所述第二確定子單元確定的所述操作消息發(fā)送給確定的用戶態(tài)CPU。

進(jìn)一步地,所述實(shí)體會(huì)話表包括安全部分和不安全部分,所述安全部分用于存儲(chǔ)非地址信息,所述不安全部分用于存儲(chǔ)地址信息;所述裝置還包括:

共享單元,用于在初始化的過(guò)程中,將所述實(shí)體會(huì)話表的地址空間共享給內(nèi)核態(tài),以便內(nèi)核態(tài)的其他CPU安全的獲取一實(shí)體會(huì)話表的安全信息。

優(yōu)選地,所述實(shí)體會(huì)話表采用預(yù)先分配的內(nèi)存池申請(qǐng)獲取。

借由上述技術(shù)方案,本發(fā)明提供的一種報(bào)文轉(zhuǎn)發(fā)方法及裝置,與現(xiàn)有技術(shù)基于用戶態(tài)和內(nèi)核態(tài)共同維護(hù)的實(shí)體會(huì)話表對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)相比,本發(fā)明通過(guò)在查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,所述實(shí)體接會(huì)話表中包含所述用戶態(tài)CPU負(fù)責(zé)處理的會(huì)話連接,不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表時(shí),通過(guò)所述用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā),以及在查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中不存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接時(shí),向內(nèi)核態(tài)CPU獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息,基于所述接收?qǐng)?bào)文的用戶態(tài)CPU根據(jù)所述會(huì)話連接建立策略信息建立與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,并通過(guò)所述接收?qǐng)?bào)文的CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā),能夠?qū)崿F(xiàn)基于接收?qǐng)?bào)文的用戶態(tài)CPU自己維護(hù)的實(shí)體會(huì)話表對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),避免了不同CPU競(jìng)爭(zhēng)同一實(shí)體會(huì)話表資源,從而可以實(shí)現(xiàn)在多核并行轉(zhuǎn)發(fā)報(bào)文時(shí),消除多核之間互斥以及共享資源競(jìng)爭(zhēng)的問(wèn)題,實(shí)現(xiàn)網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能隨著CPU核個(gè)數(shù)的增加做到線性增長(zhǎng),進(jìn)而提升報(bào)文轉(zhuǎn)發(fā)性能。

上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。

附圖說(shuō)明

通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:

圖1示出了現(xiàn)有技術(shù)提供的用戶態(tài)和內(nèi)核態(tài)共同維護(hù)實(shí)體會(huì)話表的示意圖;

圖2示出了本發(fā)明實(shí)施例提供的一種報(bào)文轉(zhuǎn)發(fā)方法的流程示意圖;

圖3示出了本發(fā)明實(shí)施例提供的不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表的示意圖;

圖4示出了本發(fā)明實(shí)施例提供的另一種報(bào)文轉(zhuǎn)發(fā)方法的流程示意圖;

圖5示出了本發(fā)明實(shí)施例提供的又一種報(bào)文轉(zhuǎn)發(fā)方法的流程示意圖;

圖6示出了本發(fā)明實(shí)施例提供的實(shí)體會(huì)話表的基本設(shè)計(jì)架構(gòu)示意圖;

圖7示出了本發(fā)明實(shí)施例提供的基于內(nèi)核態(tài)慢速模塊建立的報(bào)文對(duì)應(yīng)的會(huì)話連接示意圖;

圖8示出了本發(fā)明實(shí)施例提供的將報(bào)文發(fā)送給內(nèi)核態(tài)慢速模塊進(jìn)行新建邏輯處理的流程示意圖;

圖9示出了本發(fā)明實(shí)施例提供的內(nèi)核態(tài)的新建處理邏輯的流程示意圖;

圖10示出了本發(fā)明實(shí)施例提供的用戶態(tài)的新建處理邏輯的流程示意圖;

圖11示出了本發(fā)明實(shí)施例提供的配置命令行調(diào)試模塊下發(fā)配置將轉(zhuǎn)發(fā)核CPU3的實(shí)體會(huì)話表刪掉的流程示意圖;

圖12示出了本發(fā)明實(shí)施例提供的內(nèi)核態(tài)和用戶態(tài)共享同一地址空間的示意圖;

圖13示出了本發(fā)明實(shí)施例提供的多個(gè)不同進(jìn)程訪問(wèn)用戶態(tài)轉(zhuǎn)發(fā)核1的實(shí)體會(huì)話表信息的控制表示意圖;

圖14示出了本發(fā)明實(shí)施例提供的一種報(bào)文轉(zhuǎn)發(fā)裝置的組成框圖;

圖15示出了本發(fā)明實(shí)施例提供的另一種報(bào)文轉(zhuǎn)發(fā)裝置的組成框圖。

具體實(shí)施方式

下面將參照附圖更加詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。

本發(fā)明實(shí)施例提供了一種報(bào)文轉(zhuǎn)發(fā)方法,如圖2所示,所述方法包括:

101、根據(jù)接收到的報(bào)文,查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中是否存在與報(bào)文對(duì)應(yīng)的會(huì)話連接。若是,則執(zhí)行步驟102;若否,則執(zhí)行步驟103。

其中,所述實(shí)體接會(huì)話表中包含所述用戶態(tài)CPU負(fù)責(zé)處理的會(huì)話連接,不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表。本發(fā)明實(shí)施例的執(zhí)行主體可以為基于多核系統(tǒng)的報(bào)文轉(zhuǎn)發(fā)裝置,所述報(bào)文轉(zhuǎn)發(fā)裝置可以為防火墻,也可以為路由器等。用戶態(tài)CPU接收到的報(bào)文可以為網(wǎng)卡發(fā)送的。

需要說(shuō)明的是,可以通過(guò)報(bào)文對(duì)應(yīng)的會(huì)話特征查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中是否存在與報(bào)文對(duì)應(yīng)的會(huì)話連接。所述會(huì)話特征可以為報(bào)文的五元組,所述五元組包括:源互聯(lián)網(wǎng)協(xié)議(Internet Protocol,IP)地址、目的IP地址、源端口號(hào)、目的端口號(hào)和協(xié)議類型。

為了更好的理解不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表,本發(fā)明實(shí)施例提供了圖3,如圖3所示,在用戶態(tài)CPU轉(zhuǎn)發(fā)接收到網(wǎng)卡發(fā)送的報(bào)發(fā)后,可以對(duì)自己內(nèi)核的用戶態(tài)實(shí)體會(huì)話表進(jìn)行任何增刪操作。用戶態(tài)的轉(zhuǎn)發(fā)核1可以對(duì)內(nèi)核的用戶態(tài)實(shí)體會(huì)話表1進(jìn)行新建和刪除操作;用戶態(tài)的轉(zhuǎn)發(fā)核2可以對(duì)內(nèi)核的用戶態(tài)實(shí)體會(huì)話表2進(jìn)行新建和刪除操作;用戶態(tài)的轉(zhuǎn)發(fā)核3可以對(duì)內(nèi)核的用戶態(tài)實(shí)體會(huì)話表3進(jìn)行新建和刪除操作。由于實(shí)體會(huì)話表是不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表,實(shí)體會(huì)話表每個(gè)CPU核內(nèi)獨(dú)立的局部資源,僅能僅允許建立該實(shí)體會(huì)話表的CPU核進(jìn)行新建、刪除操作,其他的CPU核無(wú)法對(duì)非自己核的獨(dú)有會(huì)話資源進(jìn)行任何增刪操作,因此本發(fā)明實(shí)施例是采用無(wú)鎖方式查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表,與采用現(xiàn)有技術(shù)采用加鎖方式相比,可以避免因加鎖帶來(lái)的性能降低問(wèn)題,從而可以做到報(bào)文轉(zhuǎn)發(fā)的性能隨著CPU的個(gè)數(shù)增長(zhǎng),進(jìn)而可以提高報(bào)文轉(zhuǎn)發(fā)性能。

102、通過(guò)用戶態(tài)CPU對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)。

對(duì)于本發(fā)明實(shí)施例,若用戶態(tài)CPU本地建立的實(shí)體會(huì)話表存在與報(bào)文對(duì)應(yīng)的會(huì)話連接,則對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)的用戶態(tài)CPU可以為接收?qǐng)?bào)文的用戶態(tài)CPU,也可以為除接收?qǐng)?bào)文的用戶態(tài)CPU以外的其他用戶態(tài)CPU。具體地,若接收?qǐng)?bào)文的用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中存在與報(bào)文對(duì)應(yīng)的會(huì)話連接,則通過(guò)接收?qǐng)?bào)文的用戶態(tài)CPU對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),若接收?qǐng)?bào)文的用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中不存在與報(bào)文對(duì)應(yīng)的會(huì)話連接,則查詢所述報(bào)文對(duì)應(yīng)的會(huì)話連接存在的實(shí)體會(huì)話表,并通過(guò)該實(shí)體會(huì)話表所屬的其他用戶態(tài)CPU對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)。

103、基于接收?qǐng)?bào)文的用戶態(tài)CPU向內(nèi)核態(tài)CPU獲取報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息。

需要說(shuō)明的是,若用戶態(tài)CPU本地建立的實(shí)體會(huì)話表不存在與報(bào)文對(duì)應(yīng)的會(huì)話連接,則說(shuō)明所述報(bào)文對(duì)應(yīng)的會(huì)話連接是連接首包,在用戶態(tài)CPU中并未建立過(guò)所述報(bào)文對(duì)應(yīng)的會(huì)話連接,此時(shí)需要建立所述報(bào)文對(duì)應(yīng)的會(huì)話連接,以便后續(xù)報(bào)文進(jìn)行快速轉(zhuǎn)發(fā)。具體地,所述報(bào)文對(duì)應(yīng)的會(huì)話連接可以為根據(jù)所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息建立的,所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息用于指示如何建立報(bào)文對(duì)應(yīng)的會(huì)話連接。所述內(nèi)核態(tài)CPU保存有不同報(bào)文分別對(duì)應(yīng)的會(huì)話連接建立策略信息。

在本發(fā)明實(shí)施例中,所述基于接收?qǐng)?bào)文的用戶態(tài)CPU向內(nèi)核態(tài)CPU獲取報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息的具體過(guò)程可以為:向內(nèi)核態(tài)CPU發(fā)送所述報(bào)文建立會(huì)話連接的請(qǐng)求,以便內(nèi)核態(tài)CPU根據(jù)所述請(qǐng)求獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息,并發(fā)送給接收?qǐng)?bào)文的用戶態(tài)CPU。

104、基于接收?qǐng)?bào)文的用戶態(tài)CPU根據(jù)會(huì)話連接建立策略信息建立與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,并通過(guò)接收?qǐng)?bào)文的CPU對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)。

對(duì)于本發(fā)明實(shí)施例,在接收?qǐng)?bào)文的用戶態(tài)CPU本地建立所述報(bào)文對(duì)應(yīng)的會(huì)話連接,并通過(guò)接收?qǐng)?bào)文的CPU對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),實(shí)現(xiàn)了轉(zhuǎn)發(fā)報(bào)文的用戶態(tài)CPU即為接收?qǐng)?bào)文的用戶態(tài)CPU,從而避免了在報(bào)文轉(zhuǎn)發(fā)過(guò)程中進(jìn)行倒核操作,節(jié)省了倒核操作帶來(lái)的系統(tǒng)開(kāi)銷,進(jìn)而提升了報(bào)文轉(zhuǎn)發(fā)性能。

本發(fā)明實(shí)施例提供的一種報(bào)文轉(zhuǎn)發(fā)方法,與現(xiàn)有技術(shù)基于用戶態(tài)和內(nèi)核態(tài)共同維護(hù)的實(shí)體會(huì)話表對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)相比,本發(fā)明通過(guò)在查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,所述實(shí)體接會(huì)話表中包含所述用戶態(tài)CPU負(fù)責(zé)處理的會(huì)話連接,不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表時(shí),通過(guò)所述用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā),以及在查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中不存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接時(shí),向內(nèi)核態(tài)CPU獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息,基于所述接收?qǐng)?bào)文的用戶態(tài)CPU根據(jù)所述會(huì)話連接建立策略信息建立與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,并通過(guò)所述接收?qǐng)?bào)文的CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā),能夠?qū)崿F(xiàn)基于接收?qǐng)?bào)文的用戶態(tài)CPU自己維護(hù)的實(shí)體會(huì)話表對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),避免了不同CPU競(jìng)爭(zhēng)同一實(shí)體會(huì)話表資源,從而可以實(shí)現(xiàn)在多核并行轉(zhuǎn)發(fā)報(bào)文時(shí),消除多核之間互斥以及共享資源競(jìng)爭(zhēng)的問(wèn)題,實(shí)現(xiàn)網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能隨著CPU核個(gè)數(shù)的增加做到線性增長(zhǎng),進(jìn)而提升報(bào)文轉(zhuǎn)發(fā)性能。

本發(fā)明實(shí)施例提供了另一種報(bào)文轉(zhuǎn)發(fā)方法,如圖4所示,所述方法包括:

201、根據(jù)接收到的報(bào)文,查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中是否存在與報(bào)文對(duì)應(yīng)的會(huì)話連接。若是,則執(zhí)行步驟202;若否,則執(zhí)行步驟203。

其中,所述實(shí)體接會(huì)話表中包含所述用戶態(tài)CPU負(fù)責(zé)處理的會(huì)話連接,不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表。實(shí)體會(huì)話表只在用戶態(tài)唯一存在,無(wú)需多個(gè)定時(shí)器維護(hù)狀態(tài)機(jī)。如果在內(nèi)核態(tài)存在一份實(shí)體會(huì)話表的副本的話,不僅僅需要維護(hù)實(shí)體會(huì)話表在用戶態(tài)和內(nèi)核態(tài)的一致性,因?yàn)榫S護(hù)一致性的消息可能丟失,為了防止內(nèi)存泄漏,內(nèi)核態(tài)還需要維護(hù)一個(gè)定時(shí)器,來(lái)保證實(shí)體會(huì)話表不能內(nèi)存泄漏。本發(fā)明實(shí)施例通過(guò)在用戶態(tài)建立實(shí)體會(huì)話表,只需要用戶態(tài)每核定時(shí)器來(lái)維護(hù)會(huì)話表的生存周期即可,簡(jiǎn)化了實(shí)體會(huì)話表的維護(hù)復(fù)雜度。

202、通過(guò)用戶態(tài)CPU對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)。

對(duì)于本發(fā)明實(shí)施例,步驟202具體可以包括:確定與所述報(bào)文對(duì)應(yīng)的會(huì)話連接存在的實(shí)體會(huì)話表所屬的用戶態(tài)CPU是否為接收?qǐng)?bào)文的用戶態(tài)CPU;若為接收?qǐng)?bào)文的用戶態(tài)CPU,則通過(guò)接收?qǐng)?bào)文的用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā);若為除接收?qǐng)?bào)文的用戶態(tài)CPU以外的其他用戶態(tài)CPU,則通過(guò)倒核隊(duì)列將所述報(bào)文轉(zhuǎn)發(fā)給對(duì)應(yīng)的其他用戶態(tài)CPU進(jìn)行轉(zhuǎn)發(fā)。與所述報(bào)文對(duì)應(yīng)的會(huì)話連接所屬的用戶態(tài)CPU為建立所述報(bào)文對(duì)應(yīng)的會(huì)話連接的CPU。

為了更好的理解報(bào)文轉(zhuǎn)發(fā)的具體過(guò)程,本發(fā)明實(shí)施例提供了圖5,如圖5所述,用戶態(tài)CPU接收到網(wǎng)卡發(fā)送的報(bào)文后,首先查詢本地建立的實(shí)體會(huì)話表,若實(shí)體會(huì)話表中存在報(bào)文對(duì)應(yīng)的會(huì)話連接,則查詢本地用戶態(tài)CPU是否為建立所述報(bào)文對(duì)應(yīng)的會(huì)話連接存在的實(shí)體會(huì)話表的CPU,若是,則本地用戶態(tài)CPU基于實(shí)體會(huì)話表轉(zhuǎn)發(fā)對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)。若否,則通過(guò)倒核隊(duì)列(Rollover Protection System,Rps)將所述報(bào)文轉(zhuǎn)發(fā)給對(duì)應(yīng)的其他用戶態(tài)CPU進(jìn)行轉(zhuǎn)發(fā)。若實(shí)體會(huì)話表中不存在報(bào)文對(duì)應(yīng)的會(huì)話連接,則需要新建報(bào)文對(duì)應(yīng)的會(huì)話連接。對(duì)于網(wǎng)絡(luò)轉(zhuǎn)發(fā)而言,最佳狀況用戶態(tài)CPU是從網(wǎng)卡收到報(bào)文后,查找報(bào)文對(duì)應(yīng)的會(huì)話連接,這個(gè)報(bào)文對(duì)應(yīng)的會(huì)話連接直接就在當(dāng)前核,并基于已經(jīng)建立好的實(shí)體會(huì)話表進(jìn)行快速轉(zhuǎn)發(fā)。即如圖5所示,最佳路徑為圖5中的中間部分流程。由于報(bào)文對(duì)應(yīng)的會(huì)話連接為每個(gè)CPU核內(nèi)獨(dú)立的局部資源,且實(shí)體會(huì)話表為每個(gè)CPU核內(nèi)獨(dú)立的局部資源,因此,本發(fā)明實(shí)施例中查詢實(shí)體會(huì)話表為無(wú)鎖查找,基于建立報(bào)文對(duì)應(yīng)的會(huì)話連接存在的實(shí)體會(huì)話表的CPU對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),能夠?qū)崿F(xiàn)整個(gè)報(bào)文轉(zhuǎn)發(fā)操作為無(wú)鎖操作,從而能夠?qū)崿F(xiàn)CPU核個(gè)數(shù)的增加做到線性增長(zhǎng),進(jìn)而提升報(bào)文轉(zhuǎn)發(fā)性能。

203、基于接收?qǐng)?bào)文的用戶態(tài)CPU向內(nèi)核態(tài)CPU發(fā)送針對(duì)報(bào)文建立會(huì)話連接的請(qǐng)求。

其中,所述請(qǐng)求中包含所述報(bào)文。由于報(bào)文可以為動(dòng)態(tài)端口類的連接報(bào)文,對(duì)于網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備,觸發(fā)會(huì)話連接建立的方式有兩種情況:

第一種是報(bào)文驅(qū)動(dòng)觸發(fā)建立。即由同一會(huì)話連接的報(bào)文五元組所建立的,用戶態(tài)CPU從網(wǎng)卡等設(shè)備上接收到報(bào)文時(shí),需要對(duì)報(bào)文進(jìn)行解析并根據(jù)報(bào)文的五元組信息建立報(bào)文對(duì)應(yīng)的會(huì)話連接。

第二種是動(dòng)態(tài)端口類的連接報(bào)文在父連接報(bào)文被識(shí)別時(shí)觸發(fā)建立。由于動(dòng)態(tài)端口類的連接報(bào)文的連接端口是未知的,是動(dòng)態(tài)私有端口,為了識(shí)別出動(dòng)態(tài)端口類的連接報(bào)文的報(bào)文類型和轉(zhuǎn)發(fā)安全策略,網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備在收到動(dòng)態(tài)端口類的連接報(bào)文的會(huì)話父連接報(bào)文后,會(huì)預(yù)先建立好動(dòng)態(tài)端口類的連接報(bào)文的會(huì)話連接模板,即預(yù)先建立好父連接報(bào)文對(duì)應(yīng)的會(huì)話子連模板,所述會(huì)話子連模板為源端口號(hào)為0且源IP地址、目的IP地址、目的端口號(hào)以及協(xié)議類型與會(huì)話連接一致的會(huì)話連接模板。由于識(shí)別出父連接報(bào)文類型并確定其有子連接的深度識(shí)別模塊是在模塊在內(nèi)核態(tài)的系統(tǒng)調(diào)用上下文,且與第一種建立報(bào)文對(duì)應(yīng)的會(huì)話連接方式不一樣,在本發(fā)明實(shí)例中對(duì)于動(dòng)態(tài)端口類的連接報(bào)文建立會(huì)話連接時(shí),可以采用同步方式,直接在內(nèi)核態(tài)建立會(huì)話子連接模板。通過(guò)將會(huì)話子模板建立在內(nèi)核態(tài),除了方便深度識(shí)別模塊可以同步新建、更新和刪除操作外,還可以方便會(huì)話子連接模板的維護(hù),提高會(huì)話子連接模板維護(hù)效率,由于用戶態(tài)的實(shí)體會(huì)話表是每核資源,生存周期均只與報(bào)文的連接建立時(shí)間和協(xié)議相關(guān),而會(huì)話子連接模板的生存與死亡只取決于深度識(shí)別模塊。這類會(huì)話子連接模板在用戶態(tài)維護(hù)時(shí),需要將添加、刪除、更新等操作變?yōu)楫惒讲僮?,還要考慮同步消息丟失時(shí),維護(hù)這個(gè)會(huì)話模板的生存周期等,設(shè)計(jì)起來(lái)十分復(fù)雜。

綜上所述,本發(fā)明實(shí)施例,可以將實(shí)體會(huì)話表拆分為兩類:一類為用戶態(tài)的實(shí)體會(huì)話表,另一類為內(nèi)核態(tài)的會(huì)話子連接模板,這兩類實(shí)體會(huì)話表分別建立在不同的上下文,內(nèi)核態(tài)的各個(gè)模塊可以同步訪問(wèn)會(huì)話子連接模板,保證處理消息的同步及時(shí)性,且無(wú)需進(jìn)行異步的操作消息傳遞,簡(jiǎn)化了實(shí)體會(huì)話表整體設(shè)計(jì)的復(fù)雜度。同時(shí)這兩類實(shí)體會(huì)話表無(wú)任何交集,且內(nèi)核態(tài)的會(huì)話子連接模板無(wú)需定時(shí)器維護(hù)生存周期,設(shè)計(jì)上十分簡(jiǎn)單,又保證了訪問(wèn)會(huì)話的同步性。

為了更好的理解內(nèi)核態(tài)的會(huì)話子連接模板和用戶態(tài)的實(shí)體會(huì)話表,本發(fā)明實(shí)施例提供了實(shí)體會(huì)話表的基本設(shè)計(jì)架構(gòu),如圖6所示。在圖6中,內(nèi)核態(tài)的各個(gè)模塊或者慢速核可以同步訪問(wèn)會(huì)話子連接模板,用戶態(tài)的各個(gè)模塊或者轉(zhuǎn)發(fā)核可以訪問(wèn)自己核內(nèi)維護(hù)的用戶態(tài)實(shí)體會(huì)話表。

204、內(nèi)核態(tài)CPU根據(jù)針對(duì)報(bào)文建立會(huì)話連接的請(qǐng)求獲取報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息,并將會(huì)話連接建立策略信息發(fā)送給接收?qǐng)?bào)文的用戶態(tài)CPU。

其中,所述內(nèi)核態(tài)CPU可以包括內(nèi)核態(tài)慢速CPU和內(nèi)核態(tài)處理核CPU,內(nèi)核態(tài)慢速CPU可以為內(nèi)核態(tài)慢速模塊,功能較為復(fù)雜的報(bào)文對(duì)應(yīng)的會(huì)話連接是基于內(nèi)核態(tài)慢速模塊建立的,建立流程可以如圖7所示,在圖7中,用戶態(tài)轉(zhuǎn)發(fā)核CPU1在接收到網(wǎng)卡發(fā)送的報(bào)文后,查詢實(shí)體會(huì)話表是否存在報(bào)文對(duì)應(yīng)的會(huì)話連接,若找到,則基于用戶態(tài)轉(zhuǎn)發(fā)核CPU1內(nèi)的會(huì)話表轉(zhuǎn)發(fā)報(bào)文;若沒(méi)找到,則將報(bào)文轉(zhuǎn)發(fā)給內(nèi)核態(tài)處理核CPU2并請(qǐng)求建立報(bào)文對(duì)應(yīng)的會(huì)話連接,內(nèi)核態(tài)處理核CPU2在接收到用戶態(tài)轉(zhuǎn)發(fā)核CPU1發(fā)送的報(bào)文首先查詢會(huì)話子連接模板,若找到會(huì)話子連接模板,則將報(bào)文根據(jù)會(huì)話子連接模板封裝和填寫會(huì)話消息Sessinfo,然后再將報(bào)文發(fā)送給內(nèi)核態(tài)慢速模塊,以便內(nèi)核態(tài)慢速模塊獲取并返回報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息。若沒(méi)找到會(huì)話子連接模板,將報(bào)文發(fā)送給內(nèi)核態(tài)慢速模塊,以便內(nèi)核態(tài)慢速模塊獲取并返回報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息。

對(duì)于本發(fā)明實(shí)施例,由于新建報(bào)文對(duì)應(yīng)的會(huì)話連接的邏輯必須考慮會(huì)話連接是會(huì)話子連接的可能性,通過(guò)在用戶態(tài)只查詢實(shí)體會(huì)話表以及在內(nèi)核態(tài)查詢會(huì)話子連接模板,簡(jiǎn)化了用戶態(tài)快速邏輯查詢實(shí)體會(huì)話表的復(fù)雜度。同時(shí)在建立報(bào)文對(duì)應(yīng)的會(huì)話連接時(shí),增加會(huì)話子連接模板是否存在的判斷,將可能性較大判斷移到流程圖的前面,減少了條件判斷的次數(shù),從而提升了報(bào)文轉(zhuǎn)發(fā)性能。

對(duì)于本發(fā)明實(shí)施例,當(dāng)查詢實(shí)體會(huì)話表中不存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接時(shí),需要建立所述報(bào)文對(duì)應(yīng)的會(huì)話連接,如圖8所示,可以將報(bào)文發(fā)送給內(nèi)核態(tài)慢速模塊進(jìn)行新建邏輯處理,因此所述內(nèi)核態(tài)CPU根據(jù)針對(duì)報(bào)文建立會(huì)話連接的請(qǐng)求獲取報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息的步驟具體包括:所述內(nèi)核態(tài)CPU在接收到所述請(qǐng)求后,查詢是否有已建立的會(huì)話子連接模板,則查詢已建立的會(huì)話子連接模板中是否存在與所述報(bào)文對(duì)應(yīng)的會(huì)話子連接模板;若存在與所述報(bào)文對(duì)應(yīng)的會(huì)話子連接模板,則將所述報(bào)文按照所述會(huì)話子連接模板封裝與所述報(bào)文對(duì)應(yīng)的會(huì)話消息,并發(fā)送給內(nèi)核態(tài)的CPU,以便獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息;若不存在與所述報(bào)文對(duì)應(yīng)的會(huì)話子連接模板,則將所述報(bào)文發(fā)送給內(nèi)核態(tài)的CPU,以便獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息;若沒(méi)有已建立的會(huì)話子連接模板,則將所述報(bào)文發(fā)送給內(nèi)核態(tài)的CPU,以便獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息。

為了方便理解,本發(fā)明實(shí)施例提供了內(nèi)核態(tài)的新建處理邏輯,如圖9所示,在圖9中UK通道為內(nèi)核態(tài)到用戶態(tài)的通道,由于會(huì)話子連接模板是極為特殊的一種模板,且這種模板是全局表,故先判斷是否有建立好的子連接模板,如果沒(méi)有根本沒(méi)有建立過(guò)子連接模板,則直接將報(bào)文發(fā)送給慢速模塊;否則需要查詢子連接模板,沒(méi)有查找到,直接講報(bào)文交給慢速模塊;查找成功則將報(bào)文按照子連接模板封裝session info,再將報(bào)文交給慢速模塊進(jìn)行新建報(bào)文連接的處理;等待慢速模塊返回處理結(jié)果后,將報(bào)文再次發(fā)回給用戶態(tài)的快速模塊。

205、基于接收?qǐng)?bào)文的用戶態(tài)CPU根據(jù)會(huì)話連接建立策略信息建立與報(bào)文對(duì)應(yīng)的會(huì)話連接,并通過(guò)接收?qǐng)?bào)文的CPU對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)。

為了方便理解,本發(fā)明實(shí)施例提供了用戶態(tài)的新建處理邏輯,如圖10所示,在圖10中KU通道為用戶態(tài)到內(nèi)核態(tài)的通道,當(dāng)慢速模塊返回報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息時(shí),根據(jù)會(huì)話連接建立策略信息在接收?qǐng)?bào)文的用戶態(tài)CPU中建立報(bào)文對(duì)應(yīng)的會(huì)話連接。

對(duì)于本發(fā)明實(shí)施例,為了方便接收用戶態(tài)其他CPU對(duì)本地CPU實(shí)體會(huì)話表的新建、刪除或更新消息,所述方法還提供了建立會(huì)話消息接收隊(duì)功能,包括:為每個(gè)用戶態(tài)CPU建立一個(gè)會(huì)話消息接收隊(duì)列,所述會(huì)話消息接收隊(duì)列用于接收用戶態(tài)其他CPU對(duì)本地CPU實(shí)體會(huì)話表的新建、刪除或更新消息。

對(duì)于本發(fā)明實(shí)施例,為了實(shí)現(xiàn)根據(jù)新建、刪除或更新消息對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表進(jìn)行新建、刪除或更新操作,所述方法還包括:用戶態(tài)CPU接收設(shè)置在用戶態(tài)的配置命令行調(diào)試模塊發(fā)送的針對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表進(jìn)行操作的操作消息;接收到所述操作消息的用戶態(tài)CPU根據(jù)所述操作消息對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表執(zhí)行對(duì)應(yīng)的操作。

需要說(shuō)明的是,所述用戶態(tài)CPU接收設(shè)置在用戶態(tài)的配置命令行調(diào)試模塊發(fā)送的針對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表進(jìn)行操作的操作消息的步驟,具體可以包括:用戶態(tài)建立與所述配置命令行調(diào)試模塊進(jìn)行通信的進(jìn)程間通信(inter-process communication,ipc)線程;所述ipc線程接收所述配置命令行調(diào)試模塊發(fā)送的針對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表進(jìn)行操作的操作消息,并根據(jù)所述操作消息的類型確定執(zhí)行所述操作消息的用戶態(tài)CPU;將所述操作消息發(fā)送給確定的用戶態(tài)CPU。

例如,圖11配置命令行調(diào)試模塊下發(fā)配置需要將轉(zhuǎn)發(fā)核CPU3的實(shí)體會(huì)話表刪掉,首先是配置命令行調(diào)試模塊將刪除消息通過(guò)ipc線程傳遞給轉(zhuǎn)發(fā)核CPU3的ipc接收線程,ipc接收線程再根據(jù)消息類型將刪除消息傳遞給轉(zhuǎn)發(fā)核CPU3,轉(zhuǎn)發(fā)核接收到刪除消息后執(zhí)行刪除操作,將本地的用戶態(tài)實(shí)體會(huì)話表3進(jìn)行刪除。

需要說(shuō)明的是,所述實(shí)體會(huì)話表采用預(yù)先分配的內(nèi)存池申請(qǐng)獲取。采用事先分配好的mempool內(nèi)存池申請(qǐng),主要有如下幾點(diǎn)優(yōu)勢(shì):

A.由于實(shí)體會(huì)話表的內(nèi)存預(yù)先申請(qǐng)好,能夠?qū)崿F(xiàn)在申請(qǐng)的過(guò)程中,減少申請(qǐng)alloc內(nèi)存的次數(shù),防止造成過(guò)多的內(nèi)存碎片。

B.每個(gè)實(shí)體會(huì)話表的內(nèi)存地址空間范圍是固定的,即內(nèi)存池中的每一項(xiàng)都會(huì)是一個(gè)合法的實(shí)體會(huì)話表地址,即便這個(gè)實(shí)體會(huì)話表實(shí)際上被刪除了,也不會(huì)因?yàn)闀?huì)話刪除而訪問(wèn)到無(wú)效地址,只能是地址上的會(huì)話表已失效,不會(huì)導(dǎo)致內(nèi)存訪問(wèn)越界而死機(jī)。

C.由于內(nèi)存池采用緩存cache內(nèi)存的申請(qǐng)和釋放,每核實(shí)體會(huì)話表能夠cache,更好的利用了cache機(jī)制。

在本發(fā)明實(shí)施例中,為了節(jié)省內(nèi)核態(tài)異步獲取用戶態(tài)實(shí)體會(huì)話表信息帶來(lái)的開(kāi)銷,所述方法還包括:在初始化的過(guò)程中,將所述實(shí)體會(huì)話表的地址空間共享給內(nèi)核態(tài),以便內(nèi)核態(tài)的其他CPU安全的獲取一實(shí)體會(huì)話表的安全信息。所述實(shí)體會(huì)話表可以包括安全部分和不安全部分,所述安全部分用于存儲(chǔ)非地址信息,所述不安全部分用于存儲(chǔ)地址信息。由于內(nèi)核態(tài)和用戶態(tài)共享同一地址空間,如圖12所示,用戶態(tài)中的實(shí)體會(huì)話表是使用內(nèi)存池的方式申請(qǐng)內(nèi)存的,且內(nèi)核態(tài)可以訪問(wèn)的實(shí)體會(huì)話表信息是固定的,因此需要嚴(yán)格規(guī)范內(nèi)核態(tài)對(duì)實(shí)體會(huì)話表信息的訪問(wèn),即僅允許其更改實(shí)體會(huì)話表中的安全信息。

其中,所述非地址信息包括物理地址(Media Access Control,MAC)信息、局域網(wǎng)(Virtual Local Area Network,VLAN)信息、二三層設(shè)備信息等。具體地,可以為源目的MAC地址、源目的設(shè)備信息、轉(zhuǎn)發(fā)策略等,所述地址信息可以為內(nèi)存空間的內(nèi)存地址。

為了方便理解實(shí)體會(huì)話表的訪問(wèn)控制情況,本發(fā)明實(shí)施例提供了多個(gè)不同進(jìn)程訪問(wèn)用戶態(tài)轉(zhuǎn)發(fā)核1的實(shí)體會(huì)話表信息的控制表,如圖13所示,快速用戶態(tài)轉(zhuǎn)發(fā)核1、快速用戶態(tài)的轉(zhuǎn)發(fā)核2、快速用戶態(tài)的轉(zhuǎn)發(fā)核3、可以對(duì)實(shí)體會(huì)話表中的安全信息以及不安全信息(危險(xiǎn)信息)進(jìn)行訪問(wèn),而慢速1內(nèi)核態(tài)的軟中斷上下文、慢速2內(nèi)核態(tài)的軟中斷上下文、慢速3內(nèi)核態(tài)的軟中斷上下文只能訪問(wèn)用戶態(tài)轉(zhuǎn)發(fā)核1的實(shí)體會(huì)話表中的安全信息,由于實(shí)體會(huì)話表中的不安全部分為共享給內(nèi)核態(tài),內(nèi)核態(tài)訪問(wèn)實(shí)體會(huì)話表中的危險(xiǎn)信息進(jìn)行訪問(wèn),可能會(huì)直接導(dǎo)致死機(jī)問(wèn)題。

本發(fā)明實(shí)施例提供的另一種報(bào)文轉(zhuǎn)發(fā)方法,與現(xiàn)有技術(shù)基于用戶態(tài)和內(nèi)核態(tài)共同維護(hù)的實(shí)體會(huì)話表對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)相比,本發(fā)明通過(guò)在查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,所述實(shí)體接會(huì)話表中包含所述用戶態(tài)CPU負(fù)責(zé)處理的會(huì)話連接,不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表時(shí),通過(guò)所述用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā),以及在查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中不存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接時(shí),向內(nèi)核態(tài)CPU獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息,基于所述接收?qǐng)?bào)文的用戶態(tài)CPU根據(jù)所述會(huì)話連接建立策略信息建立與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,并通過(guò)所述接收?qǐng)?bào)文的CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā),能夠?qū)崿F(xiàn)基于接收?qǐng)?bào)文的用戶態(tài)CPU自己維護(hù)的實(shí)體會(huì)話表對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),避免了不同CPU競(jìng)爭(zhēng)同一實(shí)體會(huì)話表資源,從而可以實(shí)現(xiàn)在多核并行轉(zhuǎn)發(fā)報(bào)文時(shí),消除多核之間互斥以及共享資源競(jìng)爭(zhēng)的問(wèn)題,實(shí)現(xiàn)網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能隨著CPU核個(gè)數(shù)的增加做到線性增長(zhǎng),進(jìn)而提升報(bào)文轉(zhuǎn)發(fā)性能。此外,在接收?qǐng)?bào)文的用戶態(tài)CPU本地建立所述報(bào)文對(duì)應(yīng)的會(huì)話連接,并通過(guò)接收?qǐng)?bào)文的CPU對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),實(shí)現(xiàn)了轉(zhuǎn)發(fā)報(bào)文的用戶態(tài)CPU即為接收?qǐng)?bào)文的用戶態(tài)CPU,從而避免了在報(bào)文轉(zhuǎn)發(fā)過(guò)程中進(jìn)行倒核操作,節(jié)省了倒核操作帶來(lái)的系統(tǒng)開(kāi)銷,進(jìn)而提升了報(bào)文轉(zhuǎn)發(fā)性能。進(jìn)一步地,本發(fā)明實(shí)施例通過(guò)在用戶態(tài)只查詢實(shí)體會(huì)話表以及在內(nèi)核態(tài)查詢會(huì)話子連接模板,簡(jiǎn)化了用戶態(tài)快速邏輯查詢實(shí)體會(huì)話表的復(fù)雜度。同時(shí)在建立報(bào)文對(duì)應(yīng)的會(huì)話連接時(shí),增加會(huì)話子連接模板是否存在的判斷,將可能性較大判斷移到流程圖的前面,減少了條件判斷的次數(shù),從而提升了報(bào)文轉(zhuǎn)發(fā)性能。

進(jìn)一步的,作為對(duì)上述圖2所示方法的實(shí)現(xiàn),本發(fā)明實(shí)施例提供了一種報(bào)文轉(zhuǎn)發(fā)裝置,如圖14所示,所述裝置包括:查詢單元31、轉(zhuǎn)發(fā)單元32、獲取單元33、建立單元34,其中,

所述查詢單元31,可以用于根據(jù)接收到的報(bào)文,查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中是否存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,所述實(shí)體接會(huì)話表中包含所述用戶態(tài)CPU負(fù)責(zé)處理的會(huì)話連接,不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表。

本發(fā)明實(shí)施例的執(zhí)行主體可以為基于多核系統(tǒng)的報(bào)文轉(zhuǎn)發(fā)裝置,所述報(bào)文轉(zhuǎn)發(fā)裝置可以為防火墻,也可以為路由器等。用戶態(tài)CPU接收到的報(bào)文可以為網(wǎng)卡發(fā)送的。

由于實(shí)體會(huì)話表是不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表,實(shí)體會(huì)話表每個(gè)CPU核內(nèi)獨(dú)立的局部資源,僅能僅允許建立該實(shí)體會(huì)話表的CPU核進(jìn)行新建、刪除操作,其他的CPU核無(wú)法對(duì)非自己核的獨(dú)有會(huì)話資源進(jìn)行任何增刪操作,因此本發(fā)明實(shí)施例是采用無(wú)鎖方式查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表,與采用現(xiàn)有技術(shù)采用加鎖方式相比,可以避免因加鎖帶來(lái)的性能降低問(wèn)題,從而可以做到報(bào)文轉(zhuǎn)發(fā)的性能隨著CPU的個(gè)數(shù)增長(zhǎng),進(jìn)而可以提高報(bào)文轉(zhuǎn)發(fā)性能。

所述轉(zhuǎn)發(fā)單元32,可以用于若所述查詢單元31查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,則通過(guò)所述用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā)。

所述獲取單元33,可以用于若所述查詢單元31查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中不存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,則基于接收?qǐng)?bào)文的用戶態(tài)CPU向內(nèi)核態(tài)CPU獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息。若用戶態(tài)CPU本地建立的實(shí)體會(huì)話表不存在與報(bào)文對(duì)應(yīng)的會(huì)話連接,則說(shuō)明所述報(bào)文對(duì)應(yīng)的會(huì)話連接是連接首包,在用戶態(tài)CPU中并未建立過(guò)所述報(bào)文對(duì)應(yīng)的會(huì)話連接,此時(shí)需要建立所述報(bào)文對(duì)應(yīng)的會(huì)話連接,以便后續(xù)報(bào)文進(jìn)行快速轉(zhuǎn)發(fā)。

所述建立單元34,可以用于基于所述接收?qǐng)?bào)文的用戶態(tài)CPU根據(jù)所述會(huì)話連接建立策略信息建立與所述報(bào)文對(duì)應(yīng)的會(huì)話連接。

所述轉(zhuǎn)發(fā)單元32,還可以用于通過(guò)所述接收?qǐng)?bào)文的CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā)。

對(duì)于本發(fā)明實(shí)施例,在接收?qǐng)?bào)文的用戶態(tài)CPU本地建立所述報(bào)文對(duì)應(yīng)的會(huì)話連接,并通過(guò)接收?qǐng)?bào)文的CPU對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),實(shí)現(xiàn)了轉(zhuǎn)發(fā)報(bào)文的用戶態(tài)CPU即為接收?qǐng)?bào)文的用戶態(tài)CPU,從而避免了在報(bào)文轉(zhuǎn)發(fā)過(guò)程中進(jìn)行倒核操作,節(jié)省了倒核操作帶來(lái)的系統(tǒng)開(kāi)銷,進(jìn)而提升了報(bào)文轉(zhuǎn)發(fā)性能。

需要說(shuō)明的是,本發(fā)明實(shí)施例提供的一種報(bào)文轉(zhuǎn)發(fā)裝置所涉及各功能單元的其他相應(yīng)描述,可以參考圖2所示方法的對(duì)應(yīng)描述,在此不再贅述,但應(yīng)當(dāng)明確,本實(shí)施例中的裝置能夠?qū)?yīng)實(shí)現(xiàn)前述方法實(shí)施例中的全部?jī)?nèi)容。

本發(fā)明實(shí)施例提供的一種報(bào)文轉(zhuǎn)發(fā)裝置,與現(xiàn)有技術(shù)基于用戶態(tài)和內(nèi)核態(tài)共同維護(hù)的實(shí)體會(huì)話表對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)相比,本發(fā)明通過(guò)在查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,所述實(shí)體接會(huì)話表中包含所述用戶態(tài)CPU負(fù)責(zé)處理的會(huì)話連接,不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表時(shí),通過(guò)所述用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā),以及在查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中不存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接時(shí),向內(nèi)核態(tài)CPU獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息,基于所述接收?qǐng)?bào)文的用戶態(tài)CPU根據(jù)所述會(huì)話連接建立策略信息建立與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,并通過(guò)所述接收?qǐng)?bào)文的CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā),能夠?qū)崿F(xiàn)基于接收?qǐng)?bào)文的用戶態(tài)CPU自己維護(hù)的實(shí)體會(huì)話表對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),避免了不同CPU競(jìng)爭(zhēng)同一實(shí)體會(huì)話表資源,從而可以實(shí)現(xiàn)在多核并行轉(zhuǎn)發(fā)報(bào)文時(shí),消除多核之間互斥以及共享資源競(jìng)爭(zhēng)的問(wèn)題,實(shí)現(xiàn)網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能隨著CPU核個(gè)數(shù)的增加做到線性增長(zhǎng),進(jìn)而提升報(bào)文轉(zhuǎn)發(fā)性能。

進(jìn)一步的,作為對(duì)上述圖4所示方法的實(shí)現(xiàn),本發(fā)明實(shí)施例提供了另一種報(bào)文轉(zhuǎn)發(fā)裝置,如圖15所示,所述裝置包括:查詢單元41、轉(zhuǎn)發(fā)單元42、獲取單元43、建立單元44,其中,

所述查詢單元41,可以用于根據(jù)接收到的報(bào)文,查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中是否存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,所述實(shí)體接會(huì)話表中包含所述用戶態(tài)CPU負(fù)責(zé)處理的會(huì)話連接,不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表。所述實(shí)體會(huì)話表采用預(yù)先分配的內(nèi)存池申請(qǐng)獲取。

采用事先分配好的內(nèi)存池mempool申請(qǐng),主要有如下幾點(diǎn)優(yōu)勢(shì):

A.由于實(shí)體會(huì)話表的內(nèi)存預(yù)先申請(qǐng)好,能夠?qū)崿F(xiàn)在申請(qǐng)的過(guò)程中,減少申請(qǐng)alloc內(nèi)存的次數(shù),防止造成過(guò)多的內(nèi)存碎片。

B.每個(gè)實(shí)體會(huì)話表的內(nèi)存地址空間范圍是固定的,即內(nèi)存池中的每一項(xiàng)都會(huì)是一個(gè)合法的實(shí)體會(huì)話表地址,即便這個(gè)實(shí)體會(huì)話表實(shí)際上被刪除了,也不會(huì)因?yàn)闀?huì)話刪除而訪問(wèn)到無(wú)效地址,只能是地址上的會(huì)話表已失效,不會(huì)導(dǎo)致內(nèi)存訪問(wèn)越界而死機(jī)。

C.由于內(nèi)存池采用緩存cache內(nèi)存的申請(qǐng)和釋放,每核實(shí)體會(huì)話表能夠cache,更好的利用了cache機(jī)制。

所述轉(zhuǎn)發(fā)單元42,可以用于若所述查詢單元41查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,則通過(guò)所述用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā)。

所述獲取單元43,可以用于若所述查詢單元41查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中不存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,則基于接收?qǐng)?bào)文的用戶態(tài)CPU向內(nèi)核態(tài)CPU獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息。

所述建立單元44,可以用于基于所述接收?qǐng)?bào)文的用戶態(tài)CPU根據(jù)所述會(huì)話連接建立策略信息建立與所述報(bào)文對(duì)應(yīng)的會(huì)話連接。

所述轉(zhuǎn)發(fā)單元42,還可以用于通過(guò)所述接收?qǐng)?bào)文的CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā)。

進(jìn)一步地,所述獲取單元43包括:獲取子單元431和第一發(fā)送子單元432。

所述獲取子單元431,可以用于基于所述接收?qǐng)?bào)文的用戶態(tài)CPU向內(nèi)核態(tài)CPU發(fā)送獲取針對(duì)所述報(bào)文建立會(huì)話連接的請(qǐng)求,所述請(qǐng)求中包含所述報(bào)文。

所述獲取子單元431,還可以用于所述內(nèi)核態(tài)CPU根據(jù)所述請(qǐng)求獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息。

第一發(fā)送子單元432,可以用于將所述會(huì)話連接建立策略信息發(fā)送給所述接收?qǐng)?bào)文的用戶態(tài)CPU。

所述獲取子單元431包括:第一查詢模塊4311、第二查詢模塊4312、第一發(fā)送模塊4313和第二發(fā)送模塊4314。

所述第一查詢模塊4311,可以用于所述內(nèi)核態(tài)CPU在接收到所述請(qǐng)求后,查詢是否有已建立的會(huì)話子連接模板,所述會(huì)話子連接模板為源端口號(hào)為0且源互聯(lián)網(wǎng)協(xié)議IP地址、目的IP地址、目的端口號(hào)以及協(xié)議類型與會(huì)話連接一致的會(huì)話連接模板。通過(guò)將會(huì)話子模板建立在內(nèi)核態(tài),除了方便深度識(shí)別模塊可以同步新建、更新和刪除操作外,還可以方便會(huì)話子連接模板的維護(hù),提高會(huì)話子連接模板維護(hù)效率。

所述第二查詢模塊4312,可以用于若所述第一查詢模塊4311查詢有已建立的會(huì)話子連接模板,則查詢已建立的會(huì)話子連接模板中是否存在所述報(bào)文對(duì)應(yīng)的會(huì)話子連接模板。

第一發(fā)送模塊,用于若所述第二查詢模塊4312查詢已建立的會(huì)話子連接模板中存在所述報(bào)文對(duì)應(yīng)的會(huì)話子連接模板,則將所述報(bào)文按照所述會(huì)話子連接模板封裝與所述報(bào)文對(duì)應(yīng)的會(huì)話信息,并發(fā)送給內(nèi)核態(tài)的CPU,以便獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息。

所述第一發(fā)送模塊,還用于若所述第二查詢模塊查找不成功,則將所述報(bào)文發(fā)送給內(nèi)核態(tài)的CPU,以便獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息。

第二發(fā)送模塊,用于若所述第一查詢模塊查詢沒(méi)有已建立的會(huì)話子連接模板,則將所述報(bào)文發(fā)送給內(nèi)核態(tài)的CPU,以便獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息。

所述轉(zhuǎn)發(fā)單元42包括:第一確定子單元421和轉(zhuǎn)發(fā)子單元422。

所述第一確定子單元421,可以用于確定與所述報(bào)文對(duì)應(yīng)的會(huì)話連接存在的實(shí)體會(huì)話表所屬的用戶態(tài)CPU是否為接收?qǐng)?bào)文的用戶態(tài)CPU。

所述轉(zhuǎn)發(fā)子單元422,可以用于若所述第一確定子單元421確定與所述報(bào)文對(duì)應(yīng)的會(huì)話連接存在的實(shí)體會(huì)話表所屬的用戶態(tài)CPU為接收?qǐng)?bào)文的用戶態(tài)CPU,則通過(guò)接收?qǐng)?bào)文的用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā)。

所述轉(zhuǎn)發(fā)子單元422,還用于若所述第一確定子單元421確定與所述報(bào)文對(duì)應(yīng)的會(huì)話連接存在的實(shí)體會(huì)話表所屬的用戶態(tài)CPU為除接收?qǐng)?bào)文的用戶態(tài)CPU以外的其他用戶態(tài)CPU,則通過(guò)倒核隊(duì)列將所述報(bào)文轉(zhuǎn)發(fā)給對(duì)應(yīng)的其他用戶態(tài)CPU進(jìn)行轉(zhuǎn)發(fā)。

為了方便接收用戶態(tài)其他CPU對(duì)本地CPU實(shí)體會(huì)話表的新建、刪除或更新消息,所述建立單元44,還用于為每個(gè)用戶態(tài)CPU建立一個(gè)會(huì)話消息接收隊(duì)列,所述會(huì)話消息接收隊(duì)列用于接收用戶態(tài)其他CUP對(duì)本地CUP實(shí)體會(huì)話表的新建、刪除或更新消息。

為了實(shí)現(xiàn)根據(jù)新建、刪除或更新消息對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表進(jìn)行新建、刪除或更新操作,所述裝置還包括:接收單元45和執(zhí)行單元46。

所述接收單元45,可以用于用戶態(tài)CPU接收設(shè)置在用戶態(tài)的配置命令行調(diào)試模塊發(fā)送的針對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表進(jìn)行操作的操作消息。

所述執(zhí)行單元46,可以用于接收到所述操作消息的用戶態(tài)CPU根據(jù)所述操作消息對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表執(zhí)行對(duì)應(yīng)的操作。

所述接收單元45可以包括:建立子單元451、接收子單元452、第二確定子單元453和第二發(fā)送子單元454。

所述建立子單元451,可以用于用戶態(tài)建立與所述配置命令行調(diào)試模塊進(jìn)行通信的進(jìn)程間通信ipc線程。

所述接收子單元452,可以用于所述ipc線程接收所述配置命令行調(diào)試模塊發(fā)送的針對(duì)所述用戶態(tài)CPU本地實(shí)體會(huì)話表進(jìn)行操作的操作消息。

所述第二確定子單元453,可以用于根據(jù)所述接收子單元452接收的所述操作消息的類型確定執(zhí)行所述操作消息的用戶態(tài)CPU。

所述第二發(fā)送子單元454,可以用于將所述第二確定子單元453確定的所述操作消息發(fā)送給確定的用戶態(tài)CPU。

在本發(fā)明實(shí)施例中,為了節(jié)省內(nèi)核態(tài)異步獲取用戶態(tài)實(shí)體會(huì)話表信息帶來(lái)的開(kāi)銷,所述實(shí)體會(huì)話表包括安全部分和不安全部分,所述安全部分用于存儲(chǔ)非地址信息,所述不安全部分用于存儲(chǔ)地址信息;所述非地址信息包括MAC地址信息、VLAN信息、二三層設(shè)備信息等。具體地,可以為源目的MAC地址、源目的設(shè)備信息、轉(zhuǎn)發(fā)策略等,所述地址信息可以為內(nèi)存空間的內(nèi)存地址。所述裝置還包括:共享單元47。

所述共享單元47,可以用于在初始化的過(guò)程中,將所述實(shí)體會(huì)話表的地址空間共享給內(nèi)核態(tài),以便內(nèi)核態(tài)的其他CPU安全的獲取一實(shí)體會(huì)話表的安全信息。

本發(fā)明實(shí)施例提供的另一種報(bào)文轉(zhuǎn)發(fā)裝置,與現(xiàn)有技術(shù)基于用戶態(tài)和內(nèi)核態(tài)共同維護(hù)的實(shí)體會(huì)話表對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā)相比,本發(fā)明通過(guò)在查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,所述實(shí)體接會(huì)話表中包含所述用戶態(tài)CPU負(fù)責(zé)處理的會(huì)話連接,不同的用戶態(tài)CPU各自維護(hù)各自負(fù)責(zé)處理的實(shí)體會(huì)話表時(shí),通過(guò)所述用戶態(tài)CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā),以及在查詢用戶態(tài)CPU本地建立的實(shí)體會(huì)話表中不存在與所述報(bào)文對(duì)應(yīng)的會(huì)話連接時(shí),向內(nèi)核態(tài)CPU獲取所述報(bào)文對(duì)應(yīng)的會(huì)話連接建立策略信息,基于所述接收?qǐng)?bào)文的用戶態(tài)CPU根據(jù)所述會(huì)話連接建立策略信息建立與所述報(bào)文對(duì)應(yīng)的會(huì)話連接,并通過(guò)所述接收?qǐng)?bào)文的CPU對(duì)所述報(bào)文進(jìn)行轉(zhuǎn)發(fā),能夠?qū)崿F(xiàn)基于接收?qǐng)?bào)文的用戶態(tài)CPU自己維護(hù)的實(shí)體會(huì)話表對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),避免了不同CPU競(jìng)爭(zhēng)同一實(shí)體會(huì)話表資源,從而可以實(shí)現(xiàn)在多核并行轉(zhuǎn)發(fā)報(bào)文時(shí),消除多核之間互斥以及共享資源競(jìng)爭(zhēng)的問(wèn)題,實(shí)現(xiàn)網(wǎng)絡(luò)報(bào)文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能隨著CPU核個(gè)數(shù)的增加做到線性增長(zhǎng),進(jìn)而提升報(bào)文轉(zhuǎn)發(fā)性能。此外,在接收?qǐng)?bào)文的用戶態(tài)CPU本地建立所述報(bào)文對(duì)應(yīng)的會(huì)話連接,并通過(guò)接收?qǐng)?bào)文的CPU對(duì)報(bào)文進(jìn)行轉(zhuǎn)發(fā),實(shí)現(xiàn)了轉(zhuǎn)發(fā)報(bào)文的用戶態(tài)CPU即為接收?qǐng)?bào)文的用戶態(tài)CPU,從而避免了在報(bào)文轉(zhuǎn)發(fā)過(guò)程中進(jìn)行倒核操作,節(jié)省了倒核操作帶來(lái)的系統(tǒng)開(kāi)銷,進(jìn)而提升了報(bào)文轉(zhuǎn)發(fā)性能。進(jìn)一步地,本發(fā)明實(shí)施例通過(guò)在用戶態(tài)只查詢實(shí)體會(huì)話表以及在內(nèi)核態(tài)查詢會(huì)話子連接模板,簡(jiǎn)化了用戶態(tài)快速邏輯查詢實(shí)體會(huì)話表的復(fù)雜度。同時(shí)在建立報(bào)文對(duì)應(yīng)的會(huì)話連接時(shí),增加會(huì)話子連接模板是否存在的判斷,將可能性較大判斷移到流程圖的前面,減少了條件判斷的次數(shù),從而提升了報(bào)文轉(zhuǎn)發(fā)性能。

在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見(jiàn)其他實(shí)施例的相關(guān)描述。

可以理解的是,上述方法及裝置中的相關(guān)特征可以相互參考。另外,上述實(shí)施例中的“第一”、“第二”等是用于區(qū)分各實(shí)施例,而并不代表各實(shí)施例的優(yōu)劣。

所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。

在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見(jiàn)的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。

在此處所提供的說(shuō)明書中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書的理解。

類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。

本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。

此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。

本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的發(fā)明名稱(如確定網(wǎng)站內(nèi)鏈接等級(jí)的裝置)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。

應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1