本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,特別是涉及一種報文轉(zhuǎn)發(fā)方法及裝置。
背景技術(shù):
在多核時代下,網(wǎng)絡(luò)報文轉(zhuǎn)發(fā)設(shè)備不僅需要保證基本的網(wǎng)絡(luò)信息安全的功能,還要提升網(wǎng)絡(luò)報文的轉(zhuǎn)發(fā)性能,比如用戶數(shù)據(jù)報協(xié)議(User Datagram Protocol,UDP)吞吐量性能、傳輸控制協(xié)議(Transmission Control Protocol,TCP)吞吐量性能,報文的轉(zhuǎn)發(fā)性能已成為是網(wǎng)絡(luò)報文轉(zhuǎn)發(fā)設(shè)備廠商實力的象征。網(wǎng)絡(luò)報文轉(zhuǎn)發(fā)設(shè)備是基于會話進(jìn)行網(wǎng)絡(luò)報文轉(zhuǎn)發(fā)的,會話是指一個連接的客戶端向服務(wù)器(client->server)發(fā)送的報文五元組(Client_ip,Server_ip,client_port,server_port,protocol),以及服務(wù)器向客戶端(server->client)回復(fù)的報文五元組(Server_ip,Client_ip,Server_port,Client_port,protocol),通??蛻舳讼蚍?wù)器方向稱為左半連接,服務(wù)器向客戶端方向稱為右半連接。
在現(xiàn)有技術(shù)中,在進(jìn)行報文轉(zhuǎn)發(fā)時,網(wǎng)絡(luò)報文轉(zhuǎn)發(fā)設(shè)備通?;谌B接會話對報文進(jìn)行轉(zhuǎn)發(fā)。然而,在多核下,同一會話的左半連接報文和右半連接報文可能被分配到不同的中央處理器(Central Processing Unit,CPU)核進(jìn)行處理,會導(dǎo)致不同的CPU核競爭同一會話的資源,進(jìn)而會產(chǎn)生多核互斥和以及資源競爭的問題,這樣會造成網(wǎng)絡(luò)報文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能并未隨著CPU核個數(shù)的增加而線性增長,從而導(dǎo)致報文轉(zhuǎn)發(fā)性能較低。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明提出了一種報文轉(zhuǎn)發(fā)方法及裝置,主要目的在于解決由于現(xiàn)有技術(shù)中報文轉(zhuǎn)發(fā)性能并未隨著CPU核個數(shù)的增加而線性增長,導(dǎo)致報文轉(zhuǎn)發(fā)性能較低的問題。
依據(jù)本發(fā)明的第一個方面,本發(fā)明提供了一種報文轉(zhuǎn)發(fā)方法,包括:
根據(jù)接收到的報文,查詢當(dāng)前CPU本地建立的半連接會話表中是否存在與所述報文對應(yīng)的半連接會話,所述半連接會話表中包含不同報文對應(yīng)的半連接會話,以及所述半連接會話分別對應(yīng)的CPU;
若存在,則通過與所述報文對應(yīng)的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā);
若不存在,則根據(jù)與所述報文對應(yīng)的全會話建立策略對所述報文對應(yīng)的全會話進(jìn)行半連接拆分,建立與所述報文對應(yīng)的半連接會話,并通過建立的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā)。
進(jìn)一步地,所述根據(jù)與所述報文對應(yīng)的全會話建立策略對所述報文對應(yīng)的全會話進(jìn)行半連接拆分,建立與所述報文對應(yīng)的半連接會話包括:
根據(jù)所述全會話建立策略對所述全會話進(jìn)行半連接拆分,得到兩個半連接;
確定轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU;
在確定的CPU本地建立所述報文對應(yīng)的半連接會話。
進(jìn)一步地,確定轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU包括:
根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取轉(zhuǎn)發(fā)所述報文的半連接的CPU;
將根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU。
進(jìn)一步地,確定轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU包括:
確定多個CPU是否存在負(fù)載不均衡;
若存在,則選取多個CPU中負(fù)載最小的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU;
若不存在,則根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取轉(zhuǎn)發(fā)報文的半連接的CPU;
根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU。
進(jìn)一步地,選取多個CPU中負(fù)載最小的CPU確定為轉(zhuǎn)發(fā)報文的半連接對應(yīng)的CPU包括:
獲取通過多個CPU中每個CPU建立的半連接會話個數(shù);
將建立半連接會話個數(shù)最少的CPU確定為轉(zhuǎn)發(fā)報文的半連接對應(yīng)的CPU。
進(jìn)一地,在選取多個CPU中負(fù)載最小的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU之后,所述方法還包括:
當(dāng)接收到新的報文時,通過調(diào)用硬件驅(qū)動函數(shù)將所述新的報文哈希給負(fù)載最小的CPU進(jìn)行轉(zhuǎn)發(fā)。
進(jìn)一地,所述方法還包括:
當(dāng)接收到全會話建立策略的更新信息時,查詢所述轉(zhuǎn)發(fā)所述報文的半連接的CPU建立的半連接會話,并更新所述建立的半連接會話的更新標(biāo)志位,以便于所述轉(zhuǎn)發(fā)報文的半連接的CPU根據(jù)所述更新標(biāo)志位對所述建立的半連接會話進(jìn)行更新。
依據(jù)本發(fā)明的第二個方面,本發(fā)明提供了一種報文轉(zhuǎn)發(fā)裝置,包括:
查詢單元,用于根據(jù)接收到的報文,查詢當(dāng)前CPU本地建立的半連接會話表中是否存在與所述報文對應(yīng)的半連接會話,所述半連接會話表中包含不同報文對應(yīng)的半連接會話以及所述半連接會話分別對應(yīng)的CPU;
轉(zhuǎn)發(fā)單元,用于若所述查詢單元查詢存在與所述報文對應(yīng)的半連接會話,則通過與所述報文對應(yīng)的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā);
建立單元,用于若所述查詢單元查詢不存在與所述報文對應(yīng)的半連接會話,則根據(jù)與所述報文對應(yīng)的全會話建立策略對所述報文對應(yīng)的全會話進(jìn)行半連接拆分,建立與所述報文對應(yīng)的半連接會話;
所述轉(zhuǎn)發(fā)單元,還用于通過所述建立單元建立的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā)。
進(jìn)一步地,所述建立單元包括:
拆分模塊,用于根據(jù)所述全會話建立策略對所述全會話進(jìn)行半連接拆分,得到兩個半連接;
確定模塊,用于確定轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU;
建立模塊,用于在確定的CPU本地建立所述報文對應(yīng)的半連接會話。
進(jìn)一步地,所述確定模塊包括:
獲取子模塊,用于根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取轉(zhuǎn)發(fā)所述報文的半連接的CPU;
第一確定子模塊,用于將根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU。
進(jìn)一步地,所述確定單元包括:
第二確定子模塊,用于確定多個CPU是否存在負(fù)載不均衡;
第三確定子模塊,用于若所述第二確定子模塊確定多個CPU存在負(fù)載不均衡,則選取多個CPU中負(fù)載最小的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU;
所述第三確定子模塊,還用于若所述第二確定子模塊確定多個CPU不存在負(fù)載不均衡,則根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取轉(zhuǎn)發(fā)所述報文的半連接的CPU;
第四確定子模塊,用于將所述第三確定子模塊根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU。
所述第三確定子模塊,具體用于獲取通過多個CPU中每個CPU建立的半連接會話個數(shù),并將建立半連接會話個數(shù)最少的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU。
進(jìn)一步地,所述裝置還包括:
哈希單元,用于當(dāng)接收到新的報文時,通過調(diào)用硬件驅(qū)動函數(shù)將所述新的報文哈希給負(fù)載最小的CPU進(jìn)行轉(zhuǎn)發(fā)。
進(jìn)一步地,所述裝置還包括:更新單元,
所述查詢單元,還用于當(dāng)接收到全會話建立策略的更新信息時,查詢所述轉(zhuǎn)發(fā)所述報文的半連接的CPU建立的半連接會話;
所述更新單元,用于更新所述建立的半連接會話的更新標(biāo)志位,以便于所述轉(zhuǎn)發(fā)所述報文的半連接的CPU根據(jù)所述更新標(biāo)志位對所述建立的半連接會話進(jìn)行更新。
本發(fā)明提供的一種報文轉(zhuǎn)發(fā)的方法及裝置。與現(xiàn)有技術(shù)基于全連接會話對報文進(jìn)行轉(zhuǎn)發(fā)相比,本發(fā)明通過在半連接會話表中查詢不到報文對應(yīng)的半連接會話時,根據(jù)與所述報文對應(yīng)的全會話建立策略對所述報文對應(yīng)的全會話進(jìn)行半連接拆分,建立與所述報文對應(yīng)的半連接會話,能夠?qū)崿F(xiàn)并通過建立的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā),由于半連接會話是每個CPU的獨立資源,通過建立所述報文對應(yīng)的半連接會話的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā),避免了不同的CPU競爭同一會話的資源,從而可以實現(xiàn)在多核并行轉(zhuǎn)發(fā)報文時,消除多核之間互斥以及資源競爭的問題,實現(xiàn)網(wǎng)絡(luò)報文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能隨著CPU核個數(shù)的增加做到線性增長,進(jìn)而提升報文轉(zhuǎn)發(fā)性能。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。
附圖說明
通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了本發(fā)明實施例提供的一種報文轉(zhuǎn)發(fā)方法的流程示意圖;
圖2示出了本發(fā)明實施例提供的另一種報文轉(zhuǎn)發(fā)方法的流程示意圖;
圖3示出了本發(fā)明實施例提供的一種用戶態(tài)的示意圖;
圖4示出了本發(fā)明實施例提供的另一種用戶態(tài)的示意圖;
圖5示出了本發(fā)明實施例提供的又一種報文轉(zhuǎn)發(fā)方法的流程示意圖;
圖6示出了本發(fā)明實施例提供的再一種報文轉(zhuǎn)發(fā)方法的流程示意圖;
圖7示出了本發(fā)明實施例提供的一種報文轉(zhuǎn)發(fā)裝置的組成框圖;
圖8示出了本發(fā)明實施例提供的另一種報文轉(zhuǎn)發(fā)裝置的組成框圖。
具體實施方式
下面將參照附圖更加詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)方法,如圖1所示,所述方法包括:
101、根據(jù)接收到的報文,查詢當(dāng)前CPU本地建立的半連接會話表中是否存在與報文對應(yīng)的半連接會話。
其中,所述半連接會話表中包含不同報文對應(yīng)的半連接會話,以及所述半連接會話分別對應(yīng)的CPU。本發(fā)明實施例的執(zhí)行主體可以為基于多核系統(tǒng)的報文轉(zhuǎn)發(fā)裝置,所述報文轉(zhuǎn)發(fā)裝置可以為防火墻,也可以為路由器等。當(dāng)前CPU可以為所述報文轉(zhuǎn)發(fā)裝置中接收到報文的CPU,當(dāng)前CPU接收到的報文可以為網(wǎng)卡發(fā)送的。
需要說明的是,可以通過報文對應(yīng)的會話特征查詢本地建立的半連接會話表中是否存在與所述報文對應(yīng)的半連接會話。所述會話特征可以為報文的五元組,所述五元組包括:源互聯(lián)網(wǎng)協(xié)議(Internet Protocol,IP)地址、目的IP地址、源端口號、目的端口號和協(xié)議類型,同一會話分為左半連接會話和右半連接會話。通??蛻舳讼蚍?wù)器方向稱為左半連接,服務(wù)器向客戶端方向稱為右半連接。
例如,若報文對應(yīng)的五元組為:(客戶端IP地址、服務(wù)器IP地址、客戶端端口號、服務(wù)器端口號,協(xié)議類型),則與報文對應(yīng)的半連接會話為左半連接會話;若報文對應(yīng)的五元組為:(服務(wù)器IP地址、客戶端IP地址、服務(wù)器端口號、客戶端端口號、協(xié)議類型),則與報文對應(yīng)的半連接會話為右半連接會話。
在本發(fā)明實施例中是采用無鎖方式查詢半連接會話表中是否存在與所述報文對應(yīng)的半連接會話,與采用現(xiàn)有技術(shù)采用加鎖方式相比,可以避免因加鎖帶來的性能降低問題,從而可以提高報文轉(zhuǎn)發(fā)性能。
102、若查詢半連接會話表中存在與報文對應(yīng)的半連接會話,則通過與報文對應(yīng)的半連接會話對應(yīng)的CPU對報文進(jìn)行轉(zhuǎn)發(fā)。
其中,與報文對應(yīng)的半連接會話對應(yīng)的CPU可以為建立與報文對應(yīng)的半連接會話的CPU。具體地,與報文對應(yīng)的半連接會話對應(yīng)的CPU可以根據(jù)與報文對應(yīng)的半連接建立報文對應(yīng)的半連接會話,報文對應(yīng)的半連接可以為根據(jù)報文對應(yīng)的全會話建立策略對報文對應(yīng)的全會話進(jìn)行半拆分得到的。
例如,接收的報文為報文1,根據(jù)報文1的五元組從半連接會話表中查找到與報文1對應(yīng)的左半連接會話,則將報文1轉(zhuǎn)發(fā)給左半連接會話對應(yīng)的CPU進(jìn)行報文1的轉(zhuǎn)發(fā)。即通過左半連接會話對應(yīng)的CPU將報文1轉(zhuǎn)發(fā)給服務(wù)器,從而實現(xiàn)客戶端向服務(wù)器發(fā)送報文1。
103、若查詢半連接會話表中不存在與報文對應(yīng)的半連接會話,則根據(jù)與報文對應(yīng)的全會話建立策略對報文對應(yīng)的全會話進(jìn)行半連接拆分,建立與報文對應(yīng)的半連接會話,并通過建立的半連接會話對應(yīng)的CPU對報文進(jìn)行轉(zhuǎn)發(fā)。
其中,所述報文對應(yīng)的全會話建立策略用于指示如何建立全連接會話。根據(jù)與報文對應(yīng)的全會話建立策略對報文對應(yīng)的全會話進(jìn)行半連接拆分,可以得到兩個半連接。
對于本發(fā)明實施例,查詢半連接會話表中是否存在與報文對應(yīng)的半連接會話的過程可以為在用戶態(tài)進(jìn)行的,當(dāng)查詢半連接會話表中不存在與報文對應(yīng)的半連接會話時,可以將報文發(fā)送給內(nèi)核態(tài)的處理CPU,然后查詢所述報文對應(yīng)的全會話建立策略,其中,所述內(nèi)核態(tài)的CPU保存有不同報文分別對應(yīng)的全會話建立策略。在查詢到報文對應(yīng)的全會話建立策略后,可以將報文對應(yīng)的全會話建立策略發(fā)送給一個CPU,使得所述CPU根據(jù)報文對應(yīng)的全會話建立策略對所述報文對應(yīng)的全會話進(jìn)行半連接拆分。
需要說明的是,由于報文對應(yīng)的半連接會話是每個CPU核內(nèi)獨立的局部資源,僅能被建立半連接會話的CPU訪問,禁止非建立半連接會話的CPU訪問,在每個CPU內(nèi)僅啟動一個線程進(jìn)行處理,不會出現(xiàn)多線程并發(fā)訪問互斥的情況。通過建立報文對應(yīng)的半連接會話對應(yīng)的CPU進(jìn)行報文的轉(zhuǎn)發(fā),能夠避免不同的CPU核競爭同一會話的資源,從而可以實現(xiàn)在多核并行轉(zhuǎn)發(fā)報文時,消除多核之間互斥以及資源競爭的問題,進(jìn)而實現(xiàn)網(wǎng)絡(luò)報文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能隨著CPU核個數(shù)的增加做到線性增長。
本發(fā)明實施例提供的一種報文轉(zhuǎn)發(fā)的方法。與現(xiàn)有技術(shù)基于全連接會話對報文進(jìn)行轉(zhuǎn)發(fā)相比,本發(fā)明通過在半連接會話表中查詢不到報文對應(yīng)的半連接會話時,根據(jù)與所述報文對應(yīng)的全會話建立策略對所述報文對應(yīng)的全會話進(jìn)行半連接拆分,建立與所述報文對應(yīng)的半連接會話,能夠?qū)崿F(xiàn)并通過建立的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā),由于半連接會話是每個CPU的獨立資源,通過建立所述報文對應(yīng)的半連接會話的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā),避免了不同的CPU競爭同一會話的資源,從而可以實現(xiàn)在多核并行轉(zhuǎn)發(fā)報文時,消除多核之間互斥以及資源競爭的問題,實現(xiàn)網(wǎng)絡(luò)報文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能隨著CPU核個數(shù)的增加做到線性增長,進(jìn)而提升報文轉(zhuǎn)發(fā)性能。
本發(fā)明實施例提供了另一種報文轉(zhuǎn)發(fā)方法,如圖2所示,所述方法包括:
201、根據(jù)接收到的報文,查詢當(dāng)前CPU本地建立的半連接會話表中是否存在與報文對應(yīng)的半連接會話。
其中,所述半連接會話表中包含不同報文對應(yīng)的半連接會話,以及所述半連接會話分別對應(yīng)的CPU。
需要說明的是,本半連接會話表是每個CPU核內(nèi)的獨立資源,每個CPU核內(nèi)建立的報文對應(yīng)的半連接會話也是每個CPU核內(nèi)的獨立資源,針對本半連接會話表進(jìn)行的新建、刪除、更新、查詢等操作均為無鎖操作,因此本發(fā)明實施例是通過無鎖方式查詢當(dāng)前CPU本地建立的半連接會話表中是否存在與報文對應(yīng)的半連接會話,與采用現(xiàn)有技術(shù)采用加鎖方式相比,可以避免因加鎖帶來的性能降低問題,從而可以做到報文轉(zhuǎn)發(fā)的性能隨著CPU的個數(shù)增長,進(jìn)而可以提高報文轉(zhuǎn)發(fā)性能。
202、若查詢半連接會話表中存在與報文對應(yīng)的半連接會話,則通過與報文對應(yīng)的半連接會話對應(yīng)的CPU對報文進(jìn)行轉(zhuǎn)發(fā)。
203、若查詢半連接會話表中不存在與報文對應(yīng)的半連接會話,則根據(jù)全會話建立策略對報文對應(yīng)的全會話進(jìn)行半連接拆分,得到兩個半連接。
需要說明的是,根據(jù)與報文對應(yīng)的全會話建立策略對報文對應(yīng)的全會話進(jìn)行半連接拆分,得到的兩個半連接為左半連接和右半連接。通過報文對應(yīng)的五元組可以確定報文對應(yīng)的半連接會話為左半連接會話還是右半連接會話。即通過報文對應(yīng)的五元組可以確定需要將報文轉(zhuǎn)發(fā)給客戶端還是轉(zhuǎn)發(fā)給服務(wù)器。
204、確定轉(zhuǎn)發(fā)報文的半連接對應(yīng)的CPU。
對于本發(fā)明實施例,轉(zhuǎn)發(fā)報文的半連接對應(yīng)的CPU有兩種確定方式,當(dāng)不考慮多個CPU負(fù)載均衡情況時,轉(zhuǎn)發(fā)報文的半連接對應(yīng)的CPU的確定方式可以包括:根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取轉(zhuǎn)發(fā)所述報文的半連接的CPU;將根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU。
其中,所述多隊列哈希算法可以為針對網(wǎng)卡的多對列哈希算法,網(wǎng)卡存在多個接收隊列,每個接收隊列對應(yīng)一個CPU。通過多隊列哈希算法和所述報文五元組的鍵值,能夠計算出報文會被哈希到網(wǎng)卡的哪個接收隊列中,然后選擇與計算的接收隊列對應(yīng)的CPU進(jìn)行報文的轉(zhuǎn)發(fā)。
具體地,所述多隊列哈希算法實現(xiàn)的偽代碼可以如下所示:
For hash-input key[]of length N bytes(8N bits)and a random secret key
K of 320bits
Result=0;
For each bit b in input[]{
if(b==1)
then Result^=(left-most 32bits of K);
shift K left 1bit position;
}
上述偽代碼中,最后Result的值直接決定了報文會被哈希到網(wǎng)卡的哪個接收隊列中。
需要說明的是,所述將根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU之前,所述方法還可以包括:確定轉(zhuǎn)發(fā)所述報文的半連接的CPU是否為執(zhí)行半連接拆分的CPU。若是,則將所述執(zhí)行半連接拆分的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU;若否,則將根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU。
在本發(fā)明實施例中,為了保證每個CPU都能收到網(wǎng)卡直接發(fā)來的報文,實現(xiàn)網(wǎng)絡(luò)轉(zhuǎn)發(fā)負(fù)載均衡的功能,網(wǎng)卡與用戶態(tài)的轉(zhuǎn)發(fā)核的對應(yīng)關(guān)系可以是全連接的,如圖3所示,每個CPU可以接收任何一個網(wǎng)卡轉(zhuǎn)發(fā)的報文。如圖4所示,網(wǎng)卡可以將接收到的報文發(fā)給每個CPU。
對于本發(fā)明實施例,當(dāng)為了保證負(fù)載均衡,考慮多個CPU負(fù)載均衡情況時,轉(zhuǎn)發(fā)報文的半連接對應(yīng)的CPU的確定方式可以包括:確定的多個CPU是否存在負(fù)載不均衡;若存在,則選取多個CPU中負(fù)載最小的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU;若不存在,則根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取轉(zhuǎn)發(fā)所述報文的半連接的CPU;將根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU。
需要說明的是,所述確定多個CPU是否存在負(fù)載不均衡的過程,具體可以包括:首先轉(zhuǎn)發(fā)報文的CPU在進(jìn)行發(fā)報文轉(zhuǎn)發(fā)時,實時記錄CPU核內(nèi)建立的半連接會話的個數(shù),并從多個CPU中選取一個配置CPU,由配置CPU定時統(tǒng)計每個CPU核內(nèi)的半連接會話的個數(shù),當(dāng)轉(zhuǎn)發(fā)報文CPU處理半連接會話的個數(shù)比例超過預(yù)設(shè)閾值時,確定負(fù)載不均衡。所述預(yù)設(shè)閾值可以為80%、90%等。所述處理半連接會話的個數(shù)比例可以為轉(zhuǎn)發(fā)報文CPU處理半連接會話的個數(shù)與建立半連接會話的個數(shù)的比例。
對于本發(fā)明實施例,通過選取負(fù)載最小的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU,能夠?qū)崿F(xiàn)動態(tài)遷移半連接會話。與預(yù)先建立好半連接會話,然后在負(fù)載不均衡時再將半連接會話進(jìn)行遷移相比,能夠避免將報文對應(yīng)的半連接會話同步到其他CPU所消耗的同步時間差,以及能夠避免執(zhí)行拆除原有報文對應(yīng)的半連接會話的步驟,從而能夠簡化報文對應(yīng)的半連接會話建立流程。
對于本發(fā)明實施例,為了避免在多個CPU半連接會話的個數(shù)負(fù)載不均衡時,需要將半連接會話遷移到其他CPU中帶來的倒核開銷,提升報文轉(zhuǎn)發(fā)的整體性能,在選取多個CPU中負(fù)載最小的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU之后,所述方法還包括:當(dāng)接收到新的報文時,通過調(diào)用硬件驅(qū)動函數(shù)將所述新的報文哈希給負(fù)載最小的CPU進(jìn)行轉(zhuǎn)發(fā)。
其中,所述硬件驅(qū)動函數(shù)能夠更改硬件對報文應(yīng)該哈希到的隊列,從而能夠更改報文應(yīng)該哈希到的轉(zhuǎn)發(fā)CPU。
205、在確定的CPU本地建立報文對應(yīng)的半連接會話,并通過建立的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā)。
對于本發(fā)明實施例,通過建立的半連接會話對應(yīng)的CPU,能夠保證轉(zhuǎn)發(fā)報文的CPU即為建立報文對應(yīng)的半連接的CPU,避免了倒核操作,從而節(jié)省了系統(tǒng)資源,
對于本發(fā)明實施例,由于報文對應(yīng)的全會話建立策略會存在更新,為了保證與報文對應(yīng)的全會話兩個半連接的一致性,以及保證兩個半連接會話的同步更新,所述方法還包括:當(dāng)接收到報文對應(yīng)的全會話建立策略更新信息時,需要對報文對應(yīng)的全會話的左半連接和右半連接同時更新,即需要同時更新報文對應(yīng)的半連接會話。
當(dāng)接收到所述會話建立策略的更新信息且核間隊列不堵塞時,可以通過核間隊列通知轉(zhuǎn)發(fā)所述報文的半連接的CPU,對所述建立的半連接會話進(jìn)行更新。當(dāng)接收到所述會話建立策略的更新信息且核間隊列堵塞時,查詢所述轉(zhuǎn)發(fā)所述報文的半連接的CPU建立的半連接會話,并更新所述建立的半連接會話的更新標(biāo)志位,以便于所述轉(zhuǎn)發(fā)報文的半連接的CPU根據(jù)所述更新標(biāo)志位對所述建立的半連接會話進(jìn)行更新。其中,當(dāng)核間隊列中的更新信息的數(shù)量超過一定閾值時,可以確定核間隊列堵塞。所述閾值可以根據(jù)核間隊列的長度進(jìn)行設(shè)置。所述閾值可以為1000個、2000個等。建立與報文對應(yīng)的半連接會話對應(yīng)的CPU還可以為其他CPU提供安全查詢和讀操作接口。在檢測核間隊列堵塞時,可以安全查詢和讀操作接口查詢所述轉(zhuǎn)發(fā)所述報文的半連接的CPU建立的半連接會話。對于本發(fā)明實施例,通過核間隊列通知與更新標(biāo)志位的方式,能夠保證在報文對應(yīng)的全會話的一個半連接和另一個半連接保持同步,從而提升了在報文對應(yīng)的全會話的一個半連接和另一個半連接同步的成功率。
在本發(fā)明實施例中,為了保證半連接會話的安全性,建立與報文對應(yīng)的半連接會話對應(yīng)的CPU可以基于內(nèi)存池申請的半連接會話的地址空間建立半連接會話。由于基于內(nèi)存申請的地址空間是安全的。此外,在核間隊列堵塞后,可以通過查詢轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU核內(nèi)的半連接會話表中查詢報文對應(yīng)的半連接會話的更新標(biāo)志位,由于半連接會話的地址空間是基于內(nèi)存池申請的且更新標(biāo)志位是安全位,因此不會造成內(nèi)存錯誤。
對于本發(fā)明實施例,具體應(yīng)用場景可以如下所示,但不限于此包括:如圖5所示,在用戶態(tài)中,報文轉(zhuǎn)發(fā)裝置在接收到網(wǎng)卡發(fā)送的報文時,查詢當(dāng)前CPU1本地建立的半連接會話表是否存在與報文對應(yīng)的左半連接會話,若在半連接會話表中查找到與報文對應(yīng)的右半連接會話,則通過與所述報文對應(yīng)的右半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā)。
若在半連接會話表中未查詢到與報文對應(yīng)的右半連接會話,則可以將報文發(fā)送給內(nèi)核態(tài),然后從內(nèi)核態(tài)的處理CPU3中查詢報文對應(yīng)的全會話建立策略;在查詢到全會話建立策略后,可以根據(jù)全會話建立策略對報文對應(yīng)的全會話進(jìn)行半連接拆分,得到兩個半個連接并確定右半連接對應(yīng)的CPU。在確定右半連接對應(yīng)的CPU時,可以確定當(dāng)前進(jìn)行半連接拆分的CPU是否為右半連接對應(yīng)的CPU,若當(dāng)前進(jìn)行半連接拆分的CPU是右半連接對應(yīng)的CPU,則將當(dāng)前進(jìn)行半連接拆分的CPU確定為右半連接對應(yīng)的CPU;若當(dāng)前進(jìn)行半連接拆分的CPU并非右半連接對應(yīng)的CPU,則將多隊列哈希算法和所述報文五元組的鍵值計算報文的右半連接的CPU2確定為右半連接對應(yīng)的CPU;然后將報文對應(yīng)全會話的右半連接信息通過核間隊列消息發(fā)送給確定右半連接對應(yīng)的CPU2,使得右半連接對應(yīng)的CPU建立與報文對應(yīng)的右半連接會話,并通過建立報文對應(yīng)的右半連接會話的右半連接對應(yīng)的CPU對報文進(jìn)行轉(zhuǎn)發(fā)。
進(jìn)一步地,為了保證負(fù)載均衡,如圖6所示,在根據(jù)全會話建立策略對報文對應(yīng)的全會話進(jìn)行半連接拆分,得到兩個半個連接后,還可以檢測異構(gòu)平臺的多個CPU是否負(fù)載均衡。若負(fù)載不均衡,則選取多個CPU中負(fù)載最小的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU;然后再接收到新的報文時,直接更改硬件網(wǎng)卡對新的報文哈希隊列,從而更改對新的報文哈希CPU,即將新的報文哈希給負(fù)載最小的CPU進(jìn)行轉(zhuǎn)發(fā)。若負(fù)載均衡,可以確定當(dāng)前進(jìn)行半連接拆分的CPU是否為右半連接對應(yīng)的CPU,若當(dāng)前進(jìn)行半連接拆分的CPU是右半連接對應(yīng)的CPU,則將當(dāng)前進(jìn)行半連接拆分的CPU確定為右半連接對應(yīng)的CPU;若當(dāng)前進(jìn)行半連接拆分的CPU并非右半連接對應(yīng)的CPU,則將多隊列哈希算法和所述報文五元組的鍵值計算報文的右半連接的CPU確定為右半連接對應(yīng)的CPU2;然后將報文對應(yīng)全會話的右半連接信息通過核間隊列消息發(fā)送給確定右半連接對應(yīng)的CPU2,使得右半連接對應(yīng)的CPU2建立與報文對應(yīng)的右連接會話,并通過建立報文對應(yīng)的右半連接會話的CPU2對報文進(jìn)行轉(zhuǎn)發(fā)。
本發(fā)明實施例提供的另一種報文轉(zhuǎn)發(fā)方法。與現(xiàn)有技術(shù)基于全連接會話對報文進(jìn)行轉(zhuǎn)發(fā)相比,本發(fā)明通過在半連接會話表中查詢不到報文對應(yīng)的半連接會話時,根據(jù)與所述報文對應(yīng)的全會話建立策略對所述報文對應(yīng)的全會話進(jìn)行半連接拆分,建立與所述報文對應(yīng)的半連接會話,能夠?qū)崿F(xiàn)并通過建立的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā),由于半連接會話是每個CPU的獨立資源,通過建立所述報文對應(yīng)的半連接會話的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā),避免了不同的CPU競爭同一會話的資源,從而可以實現(xiàn)在多核并行轉(zhuǎn)發(fā)報文時,消除多核之間互斥以及資源競爭的問題,實現(xiàn)網(wǎng)絡(luò)報文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能隨著CPU核個數(shù)的增加做到線性增長,進(jìn)而提升報文轉(zhuǎn)發(fā)性能。
進(jìn)一步的,作為對上述圖1所示方法的實現(xiàn),本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)裝置,如圖7所示,所述裝置包括:查詢單元31、轉(zhuǎn)發(fā)單元32、建立單元33,其中,
所述查詢單元31,可以用于根據(jù)接收到的報文,查詢當(dāng)前CPU本地建立的半連接會話表中是否存在與所述報文對應(yīng)的半連接會話,所述半連接會話表中包含不同報文對應(yīng)的半連接會話以及所述半連接會話分別對應(yīng)的CPU。
其中,本發(fā)明實施例的執(zhí)行主體可以為基于多核系統(tǒng)的報文轉(zhuǎn)發(fā)裝置,所述報文轉(zhuǎn)發(fā)裝置可以為防火墻,也可以為路由器等。當(dāng)前CPU可以為所述報文轉(zhuǎn)發(fā)裝置中接收到報文的CPU,當(dāng)前CPU接收到的報文可以為網(wǎng)卡發(fā)送的。
需要說明的是,本半連接會話表是每個CPU核內(nèi)的獨立資源,每個CPU核內(nèi)建立的報文對應(yīng)的半連接會話也是每個CPU核內(nèi)的獨立資源,針對本半連接會話表進(jìn)行的新建、刪除、更新、查詢等操作均為無鎖操作,因此本發(fā)明實施例是通過無鎖方式查詢當(dāng)前CPU本地建立的半連接會話表中是否存在與報文對應(yīng)的半連接會話,與采用現(xiàn)有技術(shù)采用加鎖方式相比,可以避免因加鎖帶來的性能降低問題,從而可以做到報文轉(zhuǎn)發(fā)的性能隨著CPU的個數(shù)增長,進(jìn)而可以提高報文轉(zhuǎn)發(fā)性能。
所述轉(zhuǎn)發(fā)單元32,可以用于若所述查詢單元31查詢存在與所述報文對應(yīng)的半連接會話,則通過與所述報文對應(yīng)的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā)。
所述建立單元33,可以用于若所述查詢單元31查詢不存在與所述報文對應(yīng)的半連接會話,則根據(jù)與所述報文對應(yīng)的全會話建立策略對所述報文對應(yīng)的全會話進(jìn)行半連接拆分,建立與所述報文對應(yīng)的半連接會話。
所述轉(zhuǎn)發(fā)單元32,可以用于通過所述建立單元32建立的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā)。
由于報文對應(yīng)的半連接會話是每個CPU核內(nèi)獨立的局部資源,僅能被建立半連接會話的CPU訪問,禁止非建立半連接會話的CPU訪問,在每個CPU內(nèi)僅啟動一個線程進(jìn)行處理,不會出現(xiàn)多線程并發(fā)訪問互斥的情況。通過建立報文對應(yīng)的半連接會話對應(yīng)的CPU進(jìn)行報文的轉(zhuǎn)發(fā),能夠避免不同的CPU核競爭同一會話的資源,從而可以實現(xiàn)在多核并行轉(zhuǎn)發(fā)報文時,消除多核之間互斥以及資源競爭的問題,進(jìn)而實現(xiàn)網(wǎng)絡(luò)報文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能隨著CPU核個數(shù)的增加做到線性增長。
需要說明的是,本發(fā)明實施例提供的一種報文轉(zhuǎn)發(fā)裝置所涉及各功能單元的其他相應(yīng)描述,可以參考圖1所示方法的對應(yīng)描述,在此不再贅述,但應(yīng)當(dāng)明確,本實施例中的裝置能夠?qū)?yīng)實現(xiàn)前述方法實施例中的全部內(nèi)容。
本發(fā)明實施例提供的一種報文轉(zhuǎn)發(fā)裝置。所述裝置可以配置查詢單元、轉(zhuǎn)發(fā)單元、建立單元。與現(xiàn)有技術(shù)基于全連接會話對報文進(jìn)行轉(zhuǎn)發(fā)相比,本發(fā)明通過在半連接會話表中查詢不到報文對應(yīng)的半連接會話時,根據(jù)與所述報文對應(yīng)的全會話建立策略對所述報文對應(yīng)的全會話進(jìn)行半連接拆分,建立與所述報文對應(yīng)的半連接會話,能夠?qū)崿F(xiàn)并通過建立的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā),由于半連接會話是每個CPU的獨立資源,通過建立所述報文對應(yīng)的半連接會話的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā),避免了不同的CPU競爭同一會話的資源,從而可以實現(xiàn)在多核并行轉(zhuǎn)發(fā)報文時,消除多核之間互斥以及資源競爭的問題,實現(xiàn)網(wǎng)絡(luò)報文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能隨著CPU核個數(shù)的增加做到線性增長,進(jìn)而提升報文轉(zhuǎn)發(fā)性能。
進(jìn)一步的,作為對上述圖2所示方法的實現(xiàn),本發(fā)明實施例提供了另一種報文轉(zhuǎn)發(fā)裝置,如圖8所示,所述裝置包括:查詢單元41、轉(zhuǎn)發(fā)單元42、建立單元43,其中,
所述查詢單元41,可以用于根據(jù)接收到的報文,查詢當(dāng)前CPU本地建立的半連接會話表中是否存在與所述報文對應(yīng)的半連接會話,所述半連接會話表中包含不同報文對應(yīng)的半連接會話以及所述半連接會話分別對應(yīng)的CPU。
所述轉(zhuǎn)發(fā)單元42,可以用于若所述查詢單元41查詢存在與所述報文對應(yīng)的半連接會話,則通過與所述報文對應(yīng)的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā)。
所述建立單元43,可以用于若所述查詢單元41查詢不存在與所述報文對應(yīng)的半連接會話,則根據(jù)與所述報文對應(yīng)的全會話建立策略對所述報文對應(yīng)的全會話進(jìn)行半連接拆分,建立與所述報文對應(yīng)的半連接會話。
所述轉(zhuǎn)發(fā)單元42,可以用于通過所述建立單元42建立的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā)。
對于本發(fā)明實施例,為了建立報文對應(yīng)的半連接會話,保證轉(zhuǎn)發(fā)報文的CPU即為建立報文對應(yīng)的半連接的CPU,避免倒核操作,節(jié)省系統(tǒng)資源,所述建立單元43包括:拆分模塊431、確定模塊432和建立模塊433。
所述拆分模塊431,用于根據(jù)所述全會話建立策略對所述全會話進(jìn)行半連接拆分,得到兩個半連接。得到的兩個半連接可以為半連接和右半連接同一會話分為左半連接和右半連接。通??蛻舳讼蚍?wù)器方向稱為左半連接,服務(wù)器向客戶端方向稱為右半連接。
所述確定模塊432,用于確定轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU。
所述建立模塊433,用于在確定的CPU本地建立所述報文對應(yīng)的半連接會話。
對于本發(fā)明實施例,在不考慮異構(gòu)平臺中多個CPU的負(fù)載均衡情況時,為了確定轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU,所述確定模塊432可以包括:獲取子模塊4321、第一確定子模塊4322。
所述獲取子模塊4321,可以為用于根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取轉(zhuǎn)發(fā)所述報文的半連接的CPU。所述報文五元組包括:源互IP地址、目的IP地址、源端口號、目的端口號和協(xié)議類型。
所述第一確定子模塊4322,可以用于將根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU。
對于本發(fā)明實施例,當(dāng)為了保證負(fù)載均衡,在考慮多個CPU負(fù)載均衡情況時,實現(xiàn)確定轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU,所述確定單元可以包括:第二確定子模塊4323、第三確定子模塊4324、第四確定子模塊4325。
所述第二確定子模塊4323,可以用于確定多個CPU是否存在負(fù)載不均衡。
所述第三確定子模塊4324,可以用于若所述第二確定子模塊4323確定多個CPU存在負(fù)載不均衡,則選取多個CPU中負(fù)載最小的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU。
所述第三確定子模塊4324,還可以用于若所述第二確定子模塊4323確定多個CPU不存在負(fù)載不均衡,則根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取轉(zhuǎn)發(fā)所述報文的半連接的CPU。
第四確定子模塊4325,用于將所述第三確定子模塊4324根據(jù)多隊列哈希算法和所述報文五元組的鍵值獲取的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU。
對于本發(fā)明實施例,為了實現(xiàn)將選取多個CPU中負(fù)載最小的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU,所述第三確定子模塊4324,具體可以用于獲取通過多個CPU中每個CPU建立的半連接會話個數(shù),并將建立半連接會話個數(shù)最少的CPU確定為轉(zhuǎn)發(fā)所述報文的半連接對應(yīng)的CPU。
對于本發(fā)明實施例,為了避免在多個CPU半連接會話的個數(shù)負(fù)載不均衡時,需要將半連接會話遷移到其他CPU中帶來的倒核開銷,提升報文轉(zhuǎn)發(fā)的整體性能,所述裝置還包括:哈希單元44。
所述哈希單元44,可以用于當(dāng)接收到新的報文時,通過調(diào)用硬件驅(qū)動函數(shù)將所述新的報文哈希給負(fù)載最小的CPU進(jìn)行轉(zhuǎn)發(fā)。其中,所述硬件驅(qū)動函數(shù)能夠更改硬件對報文應(yīng)該哈希到的隊列,從而能夠更改報文應(yīng)該哈希到的轉(zhuǎn)發(fā)CPU。
對于本發(fā)明實施例,為了保證與報文對應(yīng)的全會話兩個半連接的一致性,以及保證兩個半連接會話的同步更新,所述裝置還包括:更新單元45。
所述查詢單元41,還可以用于當(dāng)接收到全會話建立策略的更新信息時,查詢所述轉(zhuǎn)發(fā)所述報文的半連接的CPU建立的半連接會話。
所述更新單元45,還可以用于更新所述建立的半連接會話的更新標(biāo)志位,以便于所述轉(zhuǎn)發(fā)所述報文的半連接的CPU根據(jù)所述更新標(biāo)志位對所述建立的半連接會話進(jìn)行更新。
具體地,可以在接收到所述會話建立策略的更新信息且核間隊列堵塞時,更新所述建立的半連接會話的更新標(biāo)志位,以便于所述轉(zhuǎn)發(fā)所述報文的半連接的CPU根據(jù)所述更新標(biāo)志位對所述建立的半連接會話進(jìn)行更新。在接收到所述會話建立策略的更新信息且核間隊列不堵塞時,可以通過核間隊列通知轉(zhuǎn)發(fā)所述報文的半連接的CPU,對所述建立的半連接會話進(jìn)行更新。對于本發(fā)明實施例,通過核間隊列通知與更新標(biāo)志位的方式,能夠保證在報文對應(yīng)的全會話的一個半連接和另一個半連接保持同步,從而提升了在報文對應(yīng)的全會話的一個半連接和另一個半連接同步的成功率。
需要說明的是,本發(fā)明實施例提供的另一種報文轉(zhuǎn)發(fā)裝置所涉及各功能單元的其他相應(yīng)描述,可以參考圖2所示方法的對應(yīng)描述,在此不再贅述,但應(yīng)當(dāng)明確,本實施例中的裝置能夠?qū)?yīng)實現(xiàn)前述方法實施例中的全部內(nèi)容。
本發(fā)明實施例提供的另一種報文轉(zhuǎn)發(fā)裝置。所述裝置可以配置查詢單元、轉(zhuǎn)發(fā)單元、建立單元。與現(xiàn)有技術(shù)基于全連接會話對報文進(jìn)行轉(zhuǎn)發(fā)相比,本發(fā)明通過在半連接會話表中查詢不到報文對應(yīng)的半連接會話時,根據(jù)與所述報文對應(yīng)的全會話建立策略對所述報文對應(yīng)的全會話進(jìn)行半連接拆分,建立與所述報文對應(yīng)的半連接會話,能夠?qū)崿F(xiàn)并通過建立的半連接會話對應(yīng)的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā),由于半連接會話是每個CPU的獨立資源,通過建立所述報文對應(yīng)的半連接會話的CPU對所述報文進(jìn)行轉(zhuǎn)發(fā),避免了不同的CPU競爭同一會話的資源,從而可以實現(xiàn)在多核并行轉(zhuǎn)發(fā)報文時,消除多核之間互斥以及資源競爭的問題,實現(xiàn)網(wǎng)絡(luò)報文轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)性能隨著CPU核個數(shù)的增加做到線性增長,進(jìn)而提升報文轉(zhuǎn)發(fā)性能。
在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。
可以理解的是,上述方法及裝置中的相關(guān)特征可以相互參考。另外,上述實施例中的“第一”、“第二”等是用于區(qū)分各實施例,而并不代表各實施例的優(yōu)劣。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。
在此提供的算法和顯示不與任何特定計算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨實施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的發(fā)明名稱(如確定網(wǎng)站內(nèi)鏈接等級的裝置)中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機(jī)程序和計算機(jī)程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機(jī)可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機(jī)來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序。可將這些單詞解釋為名稱。