業(yè)務(wù)報(bào)文分發(fā)方法及裝置的制造方法
【專利摘要】本申請(qǐng)?zhí)峁┮环N業(yè)務(wù)報(bào)文分發(fā)方法及裝置,該方法包括:通過內(nèi)核態(tài)接收業(yè)務(wù)報(bào)文;根據(jù)所述業(yè)務(wù)報(bào)文的報(bào)文特征確定發(fā)送所述業(yè)務(wù)報(bào)文的套接字Socket;通過所述Socket將所述業(yè)務(wù)報(bào)文發(fā)送給對(duì)應(yīng)的用戶態(tài)進(jìn)程。本申請(qǐng)通過在內(nèi)核態(tài)中直接將業(yè)務(wù)報(bào)文分發(fā)到對(duì)應(yīng)的用戶態(tài)進(jìn)程中進(jìn)行處理,提高了網(wǎng)絡(luò)設(shè)備的業(yè)務(wù)處理效率。
【專利說明】
業(yè)務(wù)報(bào)文分發(fā)方法及裝置
技術(shù)領(lǐng)域
[0001]本申請(qǐng)涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及業(yè)務(wù)報(bào)文分發(fā)方法及裝置。
【背景技術(shù)】
[0002]目前,有越來越多的網(wǎng)絡(luò)設(shè)備采用多CPU (Central Processing Unit,中央處理器)多進(jìn)程的方式提高網(wǎng)絡(luò)設(shè)備的業(yè)務(wù)處理能力。網(wǎng)絡(luò)設(shè)備通過Socket (套接字)在操作系統(tǒng)的用戶態(tài)接收其它網(wǎng)絡(luò)設(shè)備發(fā)送的業(yè)務(wù)報(bào)文,當(dāng)多個(gè)進(jìn)程同時(shí)監(jiān)聽同一個(gè)端口時(shí),由于端口沖突導(dǎo)致操作系統(tǒng)無法獲知哪個(gè)進(jìn)程的Socket獲取了該業(yè)務(wù)報(bào)文,進(jìn)而無法確定業(yè)務(wù)報(bào)文在哪個(gè)進(jìn)程中處理。
[0003]現(xiàn)有技術(shù)方案中,采用一個(gè)主進(jìn)程對(duì)應(yīng)多個(gè)子進(jìn)程的方式,由主進(jìn)程負(fù)責(zé)接收業(yè)務(wù)報(bào)文,然后根據(jù)預(yù)設(shè)的分發(fā)算法將該業(yè)務(wù)報(bào)文分發(fā)給各個(gè)子進(jìn)程處理,子進(jìn)程處理完后再將需要發(fā)送的報(bào)文通過主進(jìn)程發(fā)送出去。該處理方式增加了主進(jìn)程與子進(jìn)程之間的通信數(shù)據(jù)量,且所有的報(bào)文都通過主進(jìn)程收發(fā)存在瓶頸,影響網(wǎng)絡(luò)設(shè)備的工作效率。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本申請(qǐng)?zhí)峁┝艘环N業(yè)務(wù)報(bào)文分發(fā)方法,該方法包括:
[0005]通過內(nèi)核態(tài)接收業(yè)務(wù)報(bào)文;
[0006]根據(jù)所述業(yè)務(wù)報(bào)文的報(bào)文特征確定發(fā)送所述業(yè)務(wù)報(bào)文的套接字Socket ;
[0007]通過所述Socket將所述業(yè)務(wù)報(bào)文發(fā)送給對(duì)應(yīng)的用戶態(tài)進(jìn)程。
[0008]本申請(qǐng)還提供了一種業(yè)務(wù)報(bào)文分發(fā)裝置,該裝置包括:
[0009]接收單元,用于通過內(nèi)核態(tài)接收業(yè)務(wù)報(bào)文;
[0010]確定單元,用于根據(jù)所述業(yè)務(wù)報(bào)文的報(bào)文特征確定發(fā)送所述業(yè)務(wù)報(bào)文的套接字Socket ;
[0011]發(fā)送單元,用于通過所述Socket將所述業(yè)務(wù)報(bào)文發(fā)送給對(duì)應(yīng)的用戶態(tài)進(jìn)程。
[0012]本申請(qǐng)?jiān)趦?nèi)核態(tài)接收業(yè)務(wù)報(bào)文,并根據(jù)該業(yè)務(wù)報(bào)文的報(bào)文特征確定發(fā)送該業(yè)務(wù)報(bào)文的Socket,通過該Socket將業(yè)務(wù)報(bào)文發(fā)送給與該Socket綁定的用戶態(tài)進(jìn)程??梢?,本申請(qǐng)?jiān)趦?nèi)核態(tài)中直接實(shí)現(xiàn)了對(duì)業(yè)務(wù)報(bào)文的分發(fā),每個(gè)業(yè)務(wù)報(bào)文直接送入對(duì)應(yīng)的用戶態(tài)進(jìn)程中處理,提高了網(wǎng)絡(luò)設(shè)備的業(yè)務(wù)處理效率。
【附圖說明】
[0013]圖1是本申請(qǐng)一種實(shí)施例中業(yè)務(wù)報(bào)文分發(fā)方法的處理流程圖;
[0014]圖2是本申請(qǐng)一種實(shí)施例中IKE協(xié)商系統(tǒng)示意圖;
[0015]圖3是本申請(qǐng)一種實(shí)施例中用戶態(tài)與內(nèi)核態(tài)之間業(yè)務(wù)報(bào)文分發(fā)示意圖;
[0016]圖4是本申請(qǐng)一種實(shí)施例中業(yè)務(wù)報(bào)文分發(fā)裝置的基礎(chǔ)硬件示意圖;
[0017]圖5是本申請(qǐng)一種實(shí)施例中業(yè)務(wù)報(bào)文分發(fā)裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0018]為使本申請(qǐng)的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖對(duì)本申請(qǐng)所述方案作進(jìn)一步地詳細(xì)說明。
[0019]目前,有越來越多的網(wǎng)絡(luò)設(shè)備采用多CPU多進(jìn)程的方式提高網(wǎng)絡(luò)設(shè)備的業(yè)務(wù)處理能力。網(wǎng)絡(luò)設(shè)備通過Socket在操作系統(tǒng)的用戶態(tài)接收其它網(wǎng)絡(luò)設(shè)備發(fā)送的業(yè)務(wù)報(bào)文,以UDP(User Datagram Protocol,用戶數(shù)據(jù)包協(xié)議)協(xié)議傳輸?shù)臉I(yè)務(wù)報(bào)文為例,網(wǎng)絡(luò)設(shè)備在操作系統(tǒng)的用戶態(tài)通過UDP Socket接收業(yè)務(wù)報(bào)文,當(dāng)多個(gè)用戶態(tài)進(jìn)程的UDP Socket同時(shí)監(jiān)聽同一目的端口時(shí),由于目的端口沖突導(dǎo)致操作系統(tǒng)無法獲知哪個(gè)用戶態(tài)進(jìn)程的UDPSocket獲取了該業(yè)務(wù)報(bào)文,因此,無法確定業(yè)務(wù)報(bào)文在哪個(gè)用戶態(tài)進(jìn)程中處理。
[0020]現(xiàn)有技術(shù)方案中,采用一個(gè)主進(jìn)程對(duì)應(yīng)多個(gè)子進(jìn)程的方式,由主進(jìn)程負(fù)責(zé)接收業(yè)務(wù)報(bào)文,然后根據(jù)預(yù)設(shè)的分發(fā)算法將該業(yè)務(wù)報(bào)文分發(fā)給各個(gè)子進(jìn)程處理,子進(jìn)程處理完后再將需要發(fā)送的報(bào)文通過主進(jìn)程發(fā)送出去。該處理方式增加了主進(jìn)程與子進(jìn)程之間的通信數(shù)據(jù)量,且所有的業(yè)務(wù)報(bào)文都通過主進(jìn)程收發(fā)存在瓶頸,影響網(wǎng)絡(luò)設(shè)備的工作效率。
[0021]針對(duì)上述問題,本申請(qǐng)實(shí)施例提出一種業(yè)務(wù)報(bào)文分發(fā)方法,該方法在內(nèi)核態(tài)接收業(yè)務(wù)報(bào)文,并根據(jù)該業(yè)務(wù)報(bào)文的報(bào)文特征確定發(fā)送該業(yè)務(wù)報(bào)文的Socket,通過該Socket將業(yè)務(wù)報(bào)文發(fā)送給與該Socket綁定的用戶態(tài)進(jìn)程。
[0022]參見圖1,為本申請(qǐng)業(yè)務(wù)報(bào)文分發(fā)方法的一個(gè)實(shí)施例流程圖,該實(shí)施例對(duì)業(yè)務(wù)報(bào)文分發(fā)的處理過程進(jìn)行描述。
[0023]步驟110,通過內(nèi)核態(tài)接收業(yè)務(wù)報(bào)文。
[0024]網(wǎng)絡(luò)設(shè)備在接收業(yè)務(wù)報(bào)文之前,首先根據(jù)實(shí)際的業(yè)務(wù)需求在用戶態(tài)創(chuàng)建若干用戶態(tài)進(jìn)程,為每一個(gè)用戶態(tài)進(jìn)程創(chuàng)建對(duì)應(yīng)的進(jìn)程組,例如,進(jìn)程I對(duì)應(yīng)進(jìn)程組1,進(jìn)程2對(duì)應(yīng)進(jìn)程組2,以此類推。同時(shí),為每一個(gè)用戶態(tài)進(jìn)程創(chuàng)建對(duì)應(yīng)的Socket,例如,進(jìn)程I對(duì)應(yīng)Socketl,進(jìn)程2對(duì)應(yīng)Socket2,以此類推。上述為進(jìn)程創(chuàng)建的Socket為用戶態(tài)與內(nèi)核態(tài)之間的通信接口,例如:Linux系統(tǒng)中的Netlink Socket就是一種用戶態(tài)與內(nèi)核態(tài)之間雙向傳輸數(shù)據(jù)的通信接口。建立每一個(gè)用戶態(tài)進(jìn)程的Socket與進(jìn)程組的綁定關(guān)系,例如,進(jìn)程I的Socketl與進(jìn)程組I綁定,進(jìn)程2的Socket2與進(jìn)程組2綁定,以此類推。
[0025]網(wǎng)絡(luò)設(shè)備接收業(yè)務(wù)報(bào)文后,通過協(xié)議棧送到內(nèi)核態(tài),執(zhí)行后續(xù)步驟。
[0026]步驟120,根據(jù)所述業(yè)務(wù)報(bào)文的報(bào)文特征確定發(fā)送所述業(yè)務(wù)報(bào)文的套接字Socket0
[0027]內(nèi)核態(tài)接收業(yè)務(wù)報(bào)文后,獲取業(yè)務(wù)報(bào)文的報(bào)文特征,例如,該業(yè)務(wù)報(bào)文的源IP地址,再獲取已創(chuàng)建的進(jìn)程組的數(shù)量,通過業(yè)務(wù)報(bào)文的源IP地址對(duì)進(jìn)程組的數(shù)量進(jìn)行取模,根據(jù)取模結(jié)果確定處理該業(yè)務(wù)報(bào)文的進(jìn)程組的進(jìn)程組標(biāo)識(shí)。根據(jù)獲得的進(jìn)程組標(biāo)識(shí)查詢步驟110中建立的Socket與進(jìn)程組的綁定關(guān)系,找到發(fā)送該業(yè)務(wù)報(bào)文的Socket。
[0028]步驟130,通過所述Socket將所述業(yè)務(wù)報(bào)文發(fā)送給對(duì)應(yīng)的用戶態(tài)進(jìn)程。
[0029]現(xiàn)以IKE (Internet Key Exchange Protocol,因特網(wǎng)密鑰交換協(xié)議)協(xié)商為例,詳細(xì)介紹業(yè)務(wù)報(bào)文分發(fā)的處理過程。
[0030]參見圖2為本申請(qǐng)IKE協(xié)商系統(tǒng)示意圖。假設(shè)某企業(yè)員工分別通過遠(yuǎn)程主機(jī)PCl?PCn訪問企業(yè)內(nèi)部服務(wù)器,在企業(yè)入口處有一臺(tái)網(wǎng)關(guān)GW,用戶主機(jī)首先與該企業(yè)網(wǎng)關(guān)建立IKE協(xié)商,以實(shí)現(xiàn)通過專用的VPN (Virtual Private Network,虛擬專用網(wǎng))通道訪問內(nèi)部服務(wù)器,保證業(yè)務(wù)安全。
[0031]參見圖3,假設(shè),GW內(nèi)有3個(gè)CPU,在每一個(gè)CPU內(nèi)為IKE協(xié)商創(chuàng)建一個(gè)用戶態(tài)進(jìn)程,分別為進(jìn)程1、進(jìn)程2以及進(jìn)程3 ;為每一個(gè)用戶態(tài)進(jìn)程創(chuàng)建對(duì)應(yīng)的進(jìn)程組,分別為進(jìn)程組1、進(jìn)程組2以及進(jìn)程組3 ;并為每一個(gè)用戶態(tài)進(jìn)程創(chuàng)建對(duì)應(yīng)的Netlink Socket,分別為Socketl、Socket2以及Socket3 ;建立Netlink Socket與進(jìn)程組的綁定關(guān)系,Socketl與進(jìn)程組I綁定,Socket2與進(jìn)程組2綁定,Socket3與進(jìn)程組3綁定。
[0032]假設(shè),GW接收到PCl發(fā)送的IKE協(xié)商報(bào)文,該報(bào)文首先到達(dá)GW的內(nèi)核態(tài),在內(nèi)核態(tài)中對(duì)該IKE協(xié)商報(bào)文進(jìn)行分組,具體過程為:首先,獲取PCl的IP地址(假設(shè)為1.1.1.1),通過該IP地址除以創(chuàng)建的進(jìn)程組數(shù)量3,計(jì)算得到的余數(shù)為I,則找到進(jìn)程組I,通過與進(jìn)程組I綁定的Socketl將PCl發(fā)送的IKE協(xié)商報(bào)文發(fā)送給進(jìn)程I處理。
[0033]同理,假設(shè)PC2的IP地址為1.1.1.2,則計(jì)算的余數(shù)為2,通過與進(jìn)程組2綁定的Socket2將PC2發(fā)送的IKE協(xié)商報(bào)文發(fā)送給進(jìn)程2處理,以此類推,將所有用戶發(fā)送的IKE協(xié)商報(bào)文分發(fā)到不同的用戶態(tài)進(jìn)程中處理。
[0034]與前述業(yè)務(wù)報(bào)文分發(fā)方法的實(shí)施例相對(duì)應(yīng),本申請(qǐng)還提供業(yè)務(wù)報(bào)文分發(fā)裝置的實(shí)施例。
[0035]本申請(qǐng)業(yè)務(wù)報(bào)文分發(fā)裝置的實(shí)施例可以應(yīng)用在網(wǎng)絡(luò)設(shè)備上。裝置實(shí)施例可以通過軟件實(shí)現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實(shí)現(xiàn)。以軟件實(shí)現(xiàn)為例,作為一個(gè)邏輯意義上的裝置,是通過其所在設(shè)備的CPU運(yùn)行存儲(chǔ)器中對(duì)應(yīng)的計(jì)算機(jī)程序指令形成的。從硬件層面而言,如圖4所示,為本申請(qǐng)業(yè)務(wù)報(bào)文分發(fā)裝置所在設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖4所示的CPU、存儲(chǔ)器之外,實(shí)施例中裝置所在的設(shè)備通常還可以包括其他硬件。
[0036]請(qǐng)參考圖5,為本申請(qǐng)一個(gè)實(shí)施例中的業(yè)務(wù)報(bào)文分發(fā)裝置的結(jié)構(gòu)示意圖。該業(yè)務(wù)報(bào)文分發(fā)裝置包括接收單元501、確定單元502以及發(fā)送單元503,其中:
[0037]接收單元501,用于通過內(nèi)核態(tài)接收業(yè)務(wù)報(bào)文;
[0038]確定單元502,用于根據(jù)所述業(yè)務(wù)報(bào)文的報(bào)文特征確定發(fā)送所述業(yè)務(wù)報(bào)文的套接字 Socket ;
[0039]發(fā)送單元503,用于通過所述Socket將所述業(yè)務(wù)報(bào)文發(fā)送給對(duì)應(yīng)的用戶態(tài)進(jìn)程。
[0040]進(jìn)一步地,所述業(yè)務(wù)報(bào)文分發(fā)裝置還包括:
[0041]創(chuàng)建單元,用于在所述接收單元501通過內(nèi)核態(tài)接收業(yè)務(wù)報(bào)文之前,在用戶態(tài)創(chuàng)建若干用戶態(tài)進(jìn)程;為每一個(gè)用戶態(tài)進(jìn)程創(chuàng)建對(duì)應(yīng)的進(jìn)程組以及Socket ;建立所述每一個(gè)用戶態(tài)進(jìn)程的Socket與進(jìn)程組的綁定關(guān)系;
[0042]所述確定單元502,包括:
[0043]標(biāo)識(shí)獲取模塊,用于根據(jù)所述業(yè)務(wù)報(bào)文的報(bào)文特征獲取處理所述業(yè)務(wù)報(bào)文的進(jìn)程組的進(jìn)程組標(biāo)識(shí);
[0044]Socket確定模塊,用于根據(jù)所述進(jìn)程組標(biāo)識(shí)查詢所述Socket與進(jìn)程組的綁定關(guān)系,確定發(fā)送所述業(yè)務(wù)報(bào)文的Socket。
[0045]進(jìn)一步地,
[0046]所述標(biāo)識(shí)獲取模塊,具體用于獲取所述業(yè)務(wù)報(bào)文的源IP地址;獲取已創(chuàng)建的進(jìn)程組的數(shù)量;根據(jù)所述源IP地址和所述進(jìn)程組的數(shù)量計(jì)算處理所述業(yè)務(wù)報(bào)文的進(jìn)程組的進(jìn)程組標(biāo)識(shí)。
[0047]進(jìn)一步地,
[0048]所述Socket 為 Netlink Socket。
[0049]上述圖5示出的業(yè)務(wù)報(bào)文分發(fā)裝置的實(shí)施例,其具體實(shí)現(xiàn)過程可參見前述方法實(shí)施例的說明,在此不再贅述。
[0050]從以上方法和裝置的實(shí)施例中可以看出,本申請(qǐng)?jiān)趦?nèi)核態(tài)接收業(yè)務(wù)報(bào)文,并根據(jù)該業(yè)務(wù)報(bào)文的報(bào)文特征確定發(fā)送該業(yè)務(wù)報(bào)文的Socket,通過該Socket將業(yè)務(wù)報(bào)文發(fā)送給與該Socket綁定的用戶態(tài)進(jìn)程。可見,本申請(qǐng)?jiān)趦?nèi)核態(tài)中直接實(shí)現(xiàn)了對(duì)業(yè)務(wù)報(bào)文的分發(fā),每個(gè)業(yè)務(wù)報(bào)文直接送入對(duì)應(yīng)的用戶態(tài)進(jìn)程中處理,提高了網(wǎng)絡(luò)設(shè)備的業(yè)務(wù)處理效率。
[0051]以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種業(yè)務(wù)報(bào)文分發(fā)方法,其特征在于,該方法包括: 通過內(nèi)核態(tài)接收業(yè)務(wù)報(bào)文; 根據(jù)所述業(yè)務(wù)報(bào)文的報(bào)文特征確定發(fā)送所述業(yè)務(wù)報(bào)文的套接字Socket ; 通過所述Socket將所述業(yè)務(wù)報(bào)文發(fā)送給對(duì)應(yīng)的用戶態(tài)進(jìn)程。2.如權(quán)利要求1所述的方法,其特征在于,所述通過內(nèi)核態(tài)接收業(yè)務(wù)報(bào)文之前,還包括: 在用戶態(tài)創(chuàng)建若干用戶態(tài)進(jìn)程; 為每一個(gè)用戶態(tài)進(jìn)程創(chuàng)建對(duì)應(yīng)的進(jìn)程組以及Socket ; 建立所述每一個(gè)用戶態(tài)進(jìn)程的Socket與進(jìn)程組的綁定關(guān)系; 所述根據(jù)所述業(yè)務(wù)報(bào)文的報(bào)文特征確定發(fā)送所述業(yè)務(wù)報(bào)文的Socket,包括: 根據(jù)所述業(yè)務(wù)報(bào)文的報(bào)文特征獲取處理所述業(yè)務(wù)報(bào)文的進(jìn)程組的進(jìn)程組標(biāo)識(shí); 根據(jù)所述進(jìn)程組標(biāo)識(shí)查詢所述Socket與進(jìn)程組的綁定關(guān)系,確定發(fā)送所述業(yè)務(wù)報(bào)文的 Socket。3.如權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述業(yè)務(wù)報(bào)文的報(bào)文特征獲取處理所述業(yè)務(wù)報(bào)文的進(jìn)程組的進(jìn)程組標(biāo)識(shí),包括: 獲取所述業(yè)務(wù)報(bào)文的源IP地址; 獲取已創(chuàng)建的進(jìn)程組的數(shù)量; 根據(jù)所述源IP地址和所述進(jìn)程組的數(shù)量計(jì)算處理所述業(yè)務(wù)報(bào)文的進(jìn)程組的進(jìn)程組標(biāo)識(shí)。4.如權(quán)利要求1至3任一所述的方法,其特征在于: 所述 Socket 為 Netlink Socket。5.一種業(yè)務(wù)報(bào)文分發(fā)裝置,其特征在于,該裝置包括: 接收單元,用于通過內(nèi)核態(tài)接收業(yè)務(wù)報(bào)文; 確定單元,用于根據(jù)所述業(yè)務(wù)報(bào)文的報(bào)文特征確定發(fā)送所述業(yè)務(wù)報(bào)文的套接字Socket ; 發(fā)送單元,用于通過所述Socket將所述業(yè)務(wù)報(bào)文發(fā)送給對(duì)應(yīng)的用戶態(tài)進(jìn)程。6.如權(quán)利要求5所述的裝置,其特征在于,所述裝置還包括: 創(chuàng)建單元,用于在所述接收單元通過內(nèi)核態(tài)接收業(yè)務(wù)報(bào)文之前,在用戶態(tài)創(chuàng)建若干用戶態(tài)進(jìn)程;為每一個(gè)用戶態(tài)進(jìn)程創(chuàng)建對(duì)應(yīng)的進(jìn)程組以及Socket ;建立所述每一個(gè)用戶態(tài)進(jìn)程的Socket與進(jìn)程組的綁定關(guān)系; 所述確定單元,包括: 標(biāo)識(shí)獲取模塊,用于根據(jù)所述業(yè)務(wù)報(bào)文的報(bào)文特征獲取處理所述業(yè)務(wù)報(bào)文的進(jìn)程組的進(jìn)程組標(biāo)識(shí); Socket確定模塊,用于根據(jù)所述進(jìn)程組標(biāo)識(shí)查詢所述Socket與進(jìn)程組的綁定關(guān)系,確定發(fā)送所述業(yè)務(wù)報(bào)文的Socket。7.如權(quán)利要求6所述的裝置,其特征在于: 所述標(biāo)識(shí)獲取模塊,具體用于獲取所述業(yè)務(wù)報(bào)文的源IP地址;獲取已創(chuàng)建的進(jìn)程組的數(shù)量;根據(jù)所述源IP地址和所述進(jìn)程組的數(shù)量計(jì)算處理所述業(yè)務(wù)報(bào)文的進(jìn)程組的進(jìn)程組標(biāo)識(shí)O8.如權(quán)利要求5至7任一所述的裝置,其特征在于:所述 Socket 為 Netlink Socket。
【文檔編號(hào)】H04L29/08GK105991755SQ201510264416
【公開日】2016年10月5日
【申請(qǐng)日】2015年5月21日
【發(fā)明人】孔偉政, 劉宇馳
【申請(qǐng)人】杭州迪普科技有限公司