棧實(shí)例對(duì)所述底層數(shù)據(jù)接收隊(duì)列中的所述數(shù)據(jù)包進(jìn)行所述上層協(xié)議處理;所述第二協(xié)議棧實(shí)例對(duì)應(yīng)的協(xié)議棧實(shí)例關(guān)聯(lián)鏈表用于指示與所述第二協(xié)議棧實(shí)例存在關(guān)聯(lián)關(guān)系的socket。
8.根據(jù)權(quán)利要求1-5任一項(xiàng)所述的方法,其特征在于,所述確定對(duì)所述低層協(xié)議處理后的所述數(shù)據(jù)包進(jìn)行上層協(xié)議處理所需的目標(biāo)套接字socket之前,還包括: 利用所述并行協(xié)議棧實(shí)例包括的各協(xié)議棧實(shí)例中的一個(gè)父協(xié)議棧實(shí)例,創(chuàng)建與所述各協(xié)議棧實(shí)例均不存在關(guān)聯(lián)關(guān)系的所述目標(biāo)socket ;所述父協(xié)議棧實(shí)例是應(yīng)用APP采用隨機(jī)方式或者參數(shù)指定方式或者負(fù)載均衡方式選定的。
9.根據(jù)權(quán)利要求1-5任一項(xiàng)所述的方法,其特征在于,所述方法還包括: 接收所述應(yīng)用APP發(fā)送的第一數(shù)據(jù)包; 確定對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理所需要的所述目標(biāo)套接字socket ; 確定與所述目標(biāo)socket關(guān)聯(lián)的所述第二協(xié)議棧實(shí)例; 利用所述目標(biāo)socket和所述第二協(xié)議棧實(shí)例,對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理。
10.一種基于并行協(xié)議棧實(shí)例的數(shù)據(jù)包處理方法,其特征在于,所述并行協(xié)議棧實(shí)例中至少包括第一協(xié)議棧實(shí)例和第二協(xié)議棧實(shí)例,所述方法包括: 接收應(yīng)用APP發(fā)送的第一數(shù)據(jù)包; 確定對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理所需要的目標(biāo)套接字socket ; 根據(jù)所述目標(biāo)socket與第二協(xié)議棧實(shí)例的關(guān)聯(lián)關(guān)系,確定與所述目標(biāo)socket關(guān)聯(lián)的所述第二協(xié)議棧實(shí)例; 利用所述目標(biāo)socket和所述第二協(xié)議棧實(shí)例,對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理; 其中,所述目標(biāo)socket與所述第二協(xié)議棧實(shí)例的關(guān)聯(lián)關(guān)系,是所述第一協(xié)議棧實(shí)例和所述第二協(xié)議棧實(shí)例對(duì)第二數(shù)據(jù)包進(jìn)行協(xié)議處理時(shí)確定的,所述第一協(xié)議棧實(shí)例對(duì)所述第二數(shù)據(jù)包進(jìn)行低層協(xié)議處理,所述第二協(xié)議棧實(shí)例對(duì)所述第二數(shù)據(jù)包進(jìn)行上層協(xié)議處理,所述低層協(xié)議處理和所述上層協(xié)議處理共同完成對(duì)所述第二數(shù)據(jù)包的完整協(xié)議處理。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述利用所述目標(biāo)socket和所述第二協(xié)議棧實(shí)例,對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理,包括: 將所述第一數(shù)據(jù)包加入到所述目標(biāo)socket的APP數(shù)據(jù)發(fā)送隊(duì)列中; 當(dāng)根據(jù)所述第二協(xié)議棧實(shí)例對(duì)應(yīng)的協(xié)議棧實(shí)例關(guān)聯(lián)鏈表,輪詢到所述目標(biāo)socket的APP數(shù)據(jù)發(fā)送隊(duì)列時(shí),利用所述目標(biāo)socket和所述第二協(xié)議棧實(shí)例對(duì)所述APP數(shù)據(jù)發(fā)送隊(duì)列中的所述第一數(shù)據(jù)包分別進(jìn)行低層協(xié)議處理和上層協(xié)議處理;所述第二協(xié)議棧實(shí)例對(duì)應(yīng)的協(xié)議棧實(shí)例關(guān)聯(lián)鏈表用于指示與所述第二協(xié)議棧實(shí)例存在關(guān)聯(lián)關(guān)系的socket。
12.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述根據(jù)所述目標(biāo)socket與第二協(xié)議棧實(shí)例的關(guān)聯(lián)關(guān)系,確定與所述目標(biāo)socket關(guān)聯(lián)的第二協(xié)議棧實(shí)例,包括: 根據(jù)親和性圖譜,判斷所述目標(biāo)socket是否存在關(guān)聯(lián)的協(xié)議棧實(shí)例;所述親和性圖譜用于記載與所述目標(biāo)socket關(guān)聯(lián)的協(xié)議棧實(shí)例; 若所述目標(biāo)socket存在關(guān)聯(lián)的協(xié)議棧實(shí)例,則確定所述與所述目標(biāo)socket關(guān)聯(lián)的協(xié)議棧實(shí)例為所述第二協(xié)議棧實(shí)例。
13.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述方法還包括: 若所述目標(biāo)socket不存在關(guān)聯(lián)的協(xié)議棧實(shí)例,則將控制消息加入到所述目標(biāo)socket的父協(xié)議棧實(shí)例的接收隊(duì)列中;所述目標(biāo)socket的父協(xié)議棧實(shí)例是用于創(chuàng)建所述目標(biāo)socket的協(xié)議棧實(shí)例;所述控制消息用于指示對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理; 當(dāng)輪詢到所述父協(xié)議棧實(shí)例的接收隊(duì)列中的所述控制消息時(shí),對(duì)所述控制消息進(jìn)行解析,獲得所述第一數(shù)據(jù)包; 利用所述父協(xié)議棧實(shí)例對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理; 將所述親和性圖譜中記載的所述目標(biāo)socket關(guān)聯(lián)的協(xié)議棧實(shí)例更新為所述父協(xié)議棧實(shí)例。
14.根據(jù)權(quán)利要求10-13任一項(xiàng)所述的方法,其特征在于,所述確定對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理所需要的目標(biāo)套接字socket,包括: 在socket表中進(jìn)行檢索,確定對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理所需的所述目標(biāo)socket ο
15.根據(jù)權(quán)利要求13所述的方法,其特征在于,所述確定對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理所需要的目標(biāo)套接字socket之前,還包括: 利用所述父協(xié)議棧實(shí)例,創(chuàng)建與所述并行協(xié)議棧實(shí)例包括的各協(xié)議棧實(shí)例均不存在關(guān)聯(lián)關(guān)系的所述目標(biāo)socket,所述父協(xié)議棧實(shí)例是所述APP采用隨機(jī)方式或者參數(shù)指定方式或者負(fù)載均衡方式在所述各協(xié)議棧實(shí)例中選定的。
16.根據(jù)權(quán)利要求10-13任一項(xiàng)所述的方法,其特征在于,所述利用所述目標(biāo)socket和所述第二協(xié)議棧實(shí)例,對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理之后,還包括: 將所述協(xié)議處理后的第一數(shù)據(jù)包加入到網(wǎng)卡的發(fā)送隊(duì)列中,以使所述網(wǎng)卡發(fā)送所述協(xié)議處理后的第一數(shù)據(jù)包。
17.一種基于并行協(xié)議棧實(shí)例的數(shù)據(jù)包處理裝置,其特征在于,所述并行協(xié)議棧實(shí)例中至少包括第一協(xié)議棧實(shí)例和第二協(xié)議棧實(shí)例,所述裝置包括: 低層處理模塊,用于利用所述第一協(xié)議棧實(shí)例對(duì)網(wǎng)卡向所述第一協(xié)議棧實(shí)例分流的所述數(shù)據(jù)包進(jìn)行低層協(xié)議處理; 第一確定模塊,用于確定對(duì)所述低層協(xié)議處理后的所述數(shù)據(jù)包進(jìn)行上層協(xié)議處理所需的目標(biāo)套接字socket ; 第二確定模塊,用于根據(jù)所述目標(biāo)socket,確定與所述目標(biāo)socket關(guān)聯(lián)的第二協(xié)議棧實(shí)例; 上層處理模塊,用于利用所述目標(biāo)socket和所述第二協(xié)議棧實(shí)例對(duì)所述低層協(xié)議處理后的所述數(shù)據(jù)包進(jìn)行所述上層協(xié)議處理; 其中,所述低層協(xié)議處理模塊和所述上層協(xié)議處理模塊共同完成對(duì)所述數(shù)據(jù)包的完整協(xié)議處理。
18.根據(jù)權(quán)利要求17所述的裝置,其特征在于, 所述第二確定模塊,具體用于根據(jù)親和性圖譜中所述目標(biāo)socket與所述并行協(xié)議棧實(shí)例包含的每個(gè)協(xié)議棧實(shí)例之間的親和性,確定與所述目標(biāo)socket關(guān)聯(lián)的所述第二協(xié)議棧實(shí)例;所述目標(biāo)socket與所述每個(gè)協(xié)議棧實(shí)例之間的親和性用于指示所述網(wǎng)卡向所述每個(gè)協(xié)議棧實(shí)例已分流的數(shù)據(jù)包中,需要利用所述目標(biāo)socket進(jìn)行上層協(xié)議處理的數(shù)據(jù)包數(shù)量。
19.根據(jù)權(quán)利要求18所述的裝置,其特征在于,所述裝置,還包括: 更新模塊,用于根據(jù)所述低層協(xié)議處理后的所述數(shù)據(jù)包的個(gè)數(shù),更新所述親和性圖譜中所記載的所述目標(biāo)socket與所述第一協(xié)議棧實(shí)例之間的親和性。
20.根據(jù)權(quán)利要求19所述的裝置,其特征在于,所述裝置,還包括: 判斷模塊,用于判斷nXA是否大于B,其中,A為所述目標(biāo)socket與所述第一協(xié)議棧實(shí)例之間的親和性,B為所述親和性圖譜中記載的所述目標(biāo)socket與關(guān)聯(lián)的協(xié)議棧實(shí)例之間的親和性,η為預(yù)設(shè)系數(shù); 則所述第二確定模塊,包括: 第一確定單元,用于若nXA不大于B,則確定將所述親和性圖譜中記載的所述目標(biāo)socket關(guān)聯(lián)的協(xié)議棧實(shí)例作為與所述目標(biāo)socket關(guān)聯(lián)的所述第二協(xié)議棧實(shí)例。
21.根據(jù)權(quán)利要求20所述的裝置,其特征在于,所述第二確定模塊,還包括: 第二確定單元,用于若nXA大于B,則將所述第一協(xié)議棧實(shí)例確定為與所述目標(biāo)socket關(guān)聯(lián)的所述第二協(xié)議棧實(shí)例,并將所述親和性圖譜中記載的所述目標(biāo)socket關(guān)聯(lián)的協(xié)議棧實(shí)例更新為所述第一協(xié)議棧實(shí)例。
22.根據(jù)權(quán)利要求17-21任一項(xiàng)所述的裝置,其特征在于, 所述第一確定模塊,具體用于在socket表中進(jìn)行檢索,獲得對(duì)所述低層協(xié)議處理后的數(shù)據(jù)包進(jìn)行上層協(xié)議處理所需的所述目標(biāo)socket。
23.根據(jù)權(quán)利要求17-21任一項(xiàng)所述的裝置,其特征在于,所述上層處理模塊,包括: 隊(duì)列單元,用于將所述低層協(xié)議處理后的所述數(shù)據(jù)包加入到所述目標(biāo)socket的底層數(shù)據(jù)接收隊(duì)列中; 上層處理單元,用于當(dāng)根據(jù)所述第二協(xié)議棧實(shí)例對(duì)應(yīng)的協(xié)議棧實(shí)例關(guān)聯(lián)鏈表,輪詢到所述目標(biāo)socket時(shí),利用所述第二協(xié)議棧實(shí)例對(duì)所述底層數(shù)據(jù)接收隊(duì)列中的所述數(shù)據(jù)包進(jìn)行所述上層協(xié)議處理;所述第二協(xié)議棧實(shí)例對(duì)應(yīng)的協(xié)議棧實(shí)例關(guān)聯(lián)鏈表用于指示與所述第二協(xié)議棧實(shí)例存在關(guān)聯(lián)關(guān)系的socket。
24.根據(jù)權(quán)利要求17-21任一項(xiàng)所述的裝置,其特征在于,所述裝置,還包括: 創(chuàng)建模塊,用于利用所述并行協(xié)議棧實(shí)例包括的各協(xié)議棧實(shí)例中的一個(gè)父協(xié)議棧實(shí)例,創(chuàng)建與所述各協(xié)議棧實(shí)例均不存在關(guān)聯(lián)關(guān)系的所述目標(biāo)socket ;所述父協(xié)議棧實(shí)例是應(yīng)用APP采用隨機(jī)方式或者參數(shù)指定方式或者負(fù)載均衡方式選定的。
25.根據(jù)權(quán)利要求17-21任一項(xiàng)所述的裝置,其特征在于,所述裝置,還包括: 接收模塊,用于接收所述應(yīng)用APP發(fā)送的第一數(shù)據(jù)包; 所述第一確定模塊,還用于確定對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理所需要的所述目標(biāo)套接字 socket ; 所述第二確定模塊,還用于確定對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理所需要的所述目標(biāo)套接字socket之后,確定與所述目標(biāo)socket關(guān)聯(lián)的所述第二協(xié)議棧實(shí)例; 協(xié)議處理模塊,用于利用所述目標(biāo)socket和所述第二協(xié)議棧實(shí)例,對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理。
26.一種基于并行協(xié)議棧實(shí)例的數(shù)據(jù)包處理裝置,其特征在于,所述并行協(xié)議棧實(shí)例中至少包括第一協(xié)議棧實(shí)例和第二協(xié)議棧實(shí)例,所述裝置包括: 接收模塊,用于接收應(yīng)用APP發(fā)送的第一數(shù)據(jù)包; 第一確定模塊,用于確定對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理所需要的目標(biāo)套接字socket ; 第二確定模塊,用于根據(jù)所述目標(biāo)socket與第二協(xié)議棧實(shí)例的關(guān)聯(lián)關(guān)系,確定與所述目標(biāo)socket關(guān)聯(lián)的所述第二協(xié)議棧實(shí)例; 第一處理模塊,用于利用所述目標(biāo)socket和所述第二協(xié)議棧實(shí)例,對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理; 其中,所述目標(biāo)socket與所述第二協(xié)議棧實(shí)例的關(guān)聯(lián)關(guān)系,是所述第一協(xié)議棧實(shí)例和所述第二協(xié)議棧實(shí)例對(duì)第二數(shù)據(jù)包進(jìn)行協(xié)議處理時(shí)確定的,所述第一協(xié)議棧實(shí)例對(duì)所述第二數(shù)據(jù)包進(jìn)行低層協(xié)議處理,所述第二協(xié)議棧實(shí)例對(duì)所述第二數(shù)據(jù)包進(jìn)行上層協(xié)議處理,所述低層協(xié)議處理和所述上層協(xié)議處理共同完成對(duì)所述第二數(shù)據(jù)包的完整協(xié)議處理。
27.根據(jù)權(quán)利要求26所述的裝置,其特征在于,所述第一處理模塊,包括: 隊(duì)列單元,用于將所述第一數(shù)據(jù)包加入到所述目標(biāo)socket的APP數(shù)據(jù)發(fā)送隊(duì)列中; 處理單元,用于當(dāng)根據(jù)所述第二協(xié)議棧實(shí)例對(duì)應(yīng)的協(xié)議棧實(shí)例關(guān)聯(lián)鏈表,輪詢到所述目標(biāo)socket的APP數(shù)據(jù)發(fā)送隊(duì)列時(shí),利用所述目標(biāo)socket和所述第二協(xié)議棧實(shí)例對(duì)所述APP數(shù)據(jù)發(fā)送隊(duì)列中的所述第一數(shù)據(jù)包分別進(jìn)行低層協(xié)議處理和上層協(xié)議處理;所述第二協(xié)議棧實(shí)例對(duì)應(yīng)的協(xié)議棧實(shí)例關(guān)聯(lián)鏈表用于指示與所述第二協(xié)議棧實(shí)例存在關(guān)聯(lián)關(guān)系的socket ο
28.根據(jù)權(quán)利要求26所述的裝置,其特征在于,所述第二確定模塊,包括: 判斷單元,用于根據(jù)親和性圖譜,判斷所述目標(biāo)socket是否存在關(guān)聯(lián)的協(xié)議棧實(shí)例;所述親和性圖譜用于記載與所述目標(biāo)socket關(guān)聯(lián)的協(xié)議棧實(shí)例; 確定單元,用于若所述目標(biāo)socket存在關(guān)聯(lián)的協(xié)議棧實(shí)例,則確定所述與所述目標(biāo)socket關(guān)聯(lián)的協(xié)議棧實(shí)例為所述第二協(xié)議棧實(shí)例。
29.根據(jù)權(quán)利要求28所述的裝置,其特征在于,所述裝置,還包括: 隊(duì)列模塊,用于若所述目標(biāo)socket不存在關(guān)聯(lián)的協(xié)議棧實(shí)例,則將控制消息加入到所述目標(biāo)socket的父協(xié)議棧實(shí)例的接收隊(duì)列中;所述目標(biāo)socket的父協(xié)議棧實(shí)例是用于創(chuàng)建所述目標(biāo)socket的協(xié)議棧實(shí)例;所述控制消息用于指示對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理; 解析模塊,用于當(dāng)輪詢到所述父協(xié)議棧實(shí)例的接收隊(duì)列中的所述控制消息時(shí),對(duì)所述控制消息進(jìn)行解析,獲得所述第一數(shù)據(jù)包; 第二處理模塊,用于利用所述父協(xié)議棧實(shí)例對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理; 更新模塊,用于將所述親和性圖譜中記載的所述目標(biāo)socket關(guān)聯(lián)的協(xié)議棧實(shí)例更新為所述父協(xié)議棧實(shí)例。
30.根據(jù)權(quán)利要求26-29任一項(xiàng)所述的裝置,其特征在于, 所述第一確定模塊,具體用于在socket表中進(jìn)行檢索,確定對(duì)所述第一數(shù)據(jù)包進(jìn)行協(xié)議處理所需的所述目標(biāo)socket。
31.根據(jù)權(quán)利要求29所述的裝置,其特征在于,所述裝置,還包括: 創(chuàng)建模塊,用于利用所述父協(xié)議棧實(shí)例,創(chuàng)建與所述并行協(xié)議棧實(shí)例包括的各協(xié)議棧實(shí)例均不存在關(guān)聯(lián)關(guān)系的所述目標(biāo)socket,所述父協(xié)議棧實(shí)例是所述APP采用隨機(jī)方式或者參數(shù)指定方式或者負(fù)載均衡方式在所述各協(xié)議棧實(shí)例中選定的。
32.根據(jù)權(quán)利要求26-29任一項(xiàng)所述的裝置,其特征在于,所述裝置,還包括: 發(fā)送模塊,用于將所述協(xié)議處理后的第一數(shù)據(jù)包加入到網(wǎng)卡的發(fā)送隊(duì)列中,以使所述網(wǎng)卡發(fā)送所述協(xié)議處理后的第一數(shù)據(jù)包。
【專利摘要】本發(fā)明提供一種基于并行協(xié)議棧實(shí)例的數(shù)據(jù)包處理方法和裝置,利用第一協(xié)議棧實(shí)例對(duì)向該第一協(xié)議棧實(shí)例分流的數(shù)據(jù)包進(jìn)行低層協(xié)議處理,確定對(duì)低層協(xié)議處理后的數(shù)據(jù)包進(jìn)行上層協(xié)議處理所需的目標(biāo)socket之后,通過目標(biāo)socket確定關(guān)聯(lián)的第二協(xié)議棧實(shí)例,利用目標(biāo)socket和第二協(xié)議棧實(shí)例,對(duì)低層協(xié)議處理后的數(shù)據(jù)包進(jìn)行上層協(xié)議處理,由于采用了由不同的協(xié)議棧分別完成協(xié)議處理中的低層協(xié)議處理部分和上層協(xié)議處理部分,通過目標(biāo)socket確定進(jìn)行上層協(xié)議處理的第二協(xié)議棧實(shí)例,從而解決了由于APP指定的協(xié)議棧實(shí)例與網(wǎng)卡指定的協(xié)議棧實(shí)例沖突所導(dǎo)致的無法對(duì)數(shù)據(jù)包進(jìn)行協(xié)議處理的技術(shù)問題。
【IPC分類】H04L29-06, H04L29-08
【公開號(hào)】CN104811431
【申請(qǐng)?zhí)枴緾N201410043721
【發(fā)明人】楊永強(qiáng), 戴芬, 文劉飛
【申請(qǐng)人】華為技術(shù)有限公司
【公開日】2015年7月29日
【申請(qǐng)日】2014年1月29日
【公告號(hào)】WO2015113435A1