本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種會(huì)話遷移的方法、裝置及防火墻。
背景技術(shù):
防火墻作為中間轉(zhuǎn)發(fā)設(shè)備,其處理數(shù)據(jù)流量的性能高低是一項(xiàng)重要的指標(biāo)。隨著中央處理器(Central Processing Unit,CPU)向多核方向發(fā)展,多核多線程設(shè)計(jì)也成為一種用于提高數(shù)據(jù)處理性能的實(shí)現(xiàn)方式。在防火墻處理數(shù)據(jù)流量時(shí),都是以一條數(shù)據(jù)連接為單位的,包括正向和反向的數(shù)據(jù)流。該數(shù)據(jù)流的相關(guān)信息都會(huì)存儲(chǔ)在一個(gè)會(huì)話(也稱為session結(jié)構(gòu))中,便于查詢相關(guān)信息進(jìn)行快速處理轉(zhuǎn)發(fā)。由于每個(gè)CPU核的處理能力有限,因此如何將會(huì)話均勻分布給每個(gè)CPU核是有效提高防火墻性能的前提。
在現(xiàn)有技術(shù)中,網(wǎng)卡硬件內(nèi)部實(shí)現(xiàn)了RSS算法,該算法通過對(duì)數(shù)據(jù)流的固定元素(例如源ip,目的ip,源端口,目的端口)進(jìn)行哈希計(jì)算,將數(shù)據(jù)流映射到網(wǎng)卡的隊(duì)列上,由于網(wǎng)卡上的隊(duì)列與CPU核一一對(duì)應(yīng),因此實(shí)現(xiàn)了將會(huì)話對(duì)應(yīng)分布給CPU核的目的。但是,由于網(wǎng)絡(luò)拓?fù)涮厥饣蛘呷藶樵O(shè)定的原因,無法保證所有的會(huì)話都能夠被平均分配,此時(shí)就會(huì)造成會(huì)話較多的CPU核由于處理能力不足而導(dǎo)致丟包現(xiàn)象發(fā)生。因此,如何將會(huì)話均勻分配給各個(gè)CPU核成為提高防火墻處理性能時(shí)亟待解決的問題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提出了一種會(huì)話遷移的方法、裝置及防火墻,主要目的在于解決由于現(xiàn)有技術(shù)無法保證CPU核上會(huì)話的均勻分布而導(dǎo)致防火墻吞吐量性能低下的問題。
依據(jù)本發(fā)明的第一個(gè)方面,本發(fā)明提供了一種會(huì)話遷移的方法,包括:
計(jì)算每個(gè)CPU核上平均分配的會(huì)話個(gè)數(shù)SESSavg;
獲取分配最多的會(huì)話個(gè)數(shù)SESSmax的CPUmax核以及分配最少的會(huì)話個(gè)數(shù)SESSmin的CPUmin核;
將CPUmax核上的會(huì)話遷移到CPUmin核上;
根據(jù)遷移會(huì)話的屬性信息生成所述遷移會(huì)話的filter結(jié)構(gòu)信息;
將所述遷移會(huì)話對(duì)應(yīng)的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給所述遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡,以便所述網(wǎng)卡將所述遷移會(huì)話的數(shù)據(jù)流分配到所述CPUmin核上。
具體的,將CPUmax核上的會(huì)話遷移到CPUmin核上包括:
將遷移會(huì)話的CPU標(biāo)識(shí)修改為CPUmin;
將遷移會(huì)話從CPUmax核的會(huì)話鏈表中刪除,添加到CPUmin核的鏈表中,同時(shí)將所述CPUmax核的會(huì)話個(gè)數(shù)減1并將所述CPUmin的會(huì)話個(gè)數(shù)加1。
進(jìn)一步地,在將CPUmax核上的會(huì)話遷移到CPUmin核上之前,所述方法還包括:
從CPUmax核的會(huì)話鏈表中隨機(jī)選取會(huì)話作為遷移會(huì)話;
或者,從CPUmax核的會(huì)話鏈表的頭部選取會(huì)話作為遷移會(huì)話;
或者,從CPUmax核的會(huì)話鏈表的尾部選取會(huì)話作為遷移會(huì)話。
進(jìn)一步地,在將遷移會(huì)話的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給所述遷移會(huì)話的數(shù)據(jù)流對(duì)應(yīng)的網(wǎng)卡之前,所述方法還包括:
預(yù)先配置網(wǎng)卡的flow director條目,用于記錄會(huì)話的filter結(jié)構(gòu)信息;所述filter結(jié)構(gòu)信息包括會(huì)話中的源ip、目的ip、源端口、目的端口以及協(xié)議類型。
進(jìn)一步地,在將遷移會(huì)話的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給所述遷移會(huì)話的數(shù)據(jù)流對(duì)應(yīng)的網(wǎng)卡之后,所述方法還包括:
根據(jù)所述網(wǎng)卡當(dāng)前具有的filter結(jié)構(gòu)信息的序列號(hào)以序列號(hào)遞增的方式為所述遷移會(huì)話的filter結(jié)構(gòu)信息建立序列號(hào)。
進(jìn)一步地,所述方法還包括:
當(dāng)在CPU核上對(duì)連接超時(shí)的會(huì)話進(jìn)行刪除時(shí),根據(jù)刪除會(huì)話的源ip、目的ip、源端口、目的端口以及協(xié)議類型獲取所述刪除會(huì)話的數(shù)據(jù)流對(duì)應(yīng)網(wǎng)卡上的待刪除的filter結(jié)構(gòu)信息,將待刪除的filter結(jié)構(gòu)信息對(duì)應(yīng)的flow director條目刪除。
依據(jù)本發(fā)明的第二個(gè)方面,本發(fā)明提供了一種會(huì)話遷移的裝置,包括:
計(jì)算單元,用于計(jì)算每個(gè)CPU核上平均分配的會(huì)話個(gè)數(shù)SESSavg;
獲取單元,用于獲取分配最多的會(huì)話個(gè)數(shù)SESSmax的CPUmax核以及分配最少的會(huì)話個(gè)數(shù)SESSmin的CPUmin核;
遷移單元,用于將CPUmax核上的會(huì)話遷移到CPUmin核上;
下發(fā)單元,用于將所述遷移會(huì)話對(duì)應(yīng)的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給所述遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡,以便所述網(wǎng)卡將所述遷移會(huì)話的數(shù)據(jù)流分配到所述CPUmin核上。
具體的,所述遷移單元包括:
修改模塊,用于將遷移會(huì)話的CPU標(biāo)識(shí)修改為CPUmin;
遷移模塊,用于將遷移會(huì)話從CPUmax核的會(huì)話鏈表中刪除,添加到CPUmin核的鏈表中;
記錄模塊,用于在遷移模塊將所述遷移會(huì)話遷移之后,將所述CPUmax核的會(huì)話個(gè)數(shù)減1并將所述CPUmin的會(huì)話個(gè)數(shù)加1。
進(jìn)一步地,所述裝置還包括:
選取單元,用于從CPUmax核的會(huì)話鏈表中隨機(jī)選取會(huì)話作為遷移會(huì)話;
所述選取單元,還用于從CPUmax核的會(huì)話鏈表的頭部選取會(huì)話作為遷移會(huì)話;
所述選取單元,還用于從CPUmax核的會(huì)話鏈表的尾部選取會(huì)話作為遷移會(huì)話。
進(jìn)一步地,所述裝置還包括:
配置單元,用于預(yù)先配置網(wǎng)卡的flow director條目,用于記錄會(huì)話的filter結(jié)構(gòu)信息;所述filter結(jié)構(gòu)信息包括會(huì)話中的源ip、目的ip、源端口、目的端口以及協(xié)議類型。
進(jìn)一步地,所述裝置還包括:
編號(hào)單元,用于根據(jù)所述網(wǎng)卡當(dāng)前具有的filter結(jié)構(gòu)信息的序列號(hào)以序列號(hào)遞增的方式為所述遷移會(huì)話的filter結(jié)構(gòu)信息建立序列號(hào)。
進(jìn)一步地,所述裝置還包括:
刪除單元,用于當(dāng)在CPU核上對(duì)連接超時(shí)的會(huì)話進(jìn)行刪除時(shí),根據(jù)刪除會(huì)話的源ip、目的ip、源端口、目的端口以及協(xié)議類型獲取所述刪除會(huì)話的數(shù)據(jù)流對(duì)應(yīng)網(wǎng)卡上的待刪除的filter結(jié)構(gòu)信息,將待刪除的filter結(jié)構(gòu)信息對(duì)應(yīng)的flow director條目進(jìn)行刪除。
依據(jù)本發(fā)明的第三個(gè)方面,本發(fā)明提供了一種防火墻,所述防火墻包括:
如上述第二個(gè)方面所述的會(huì)話遷移的裝置;
所述防火墻中的會(huì)話遷移的裝置用于計(jì)算每個(gè)CPU核上平均分配的會(huì)話個(gè)數(shù)SESSavg;用于獲取分配最多的會(huì)話個(gè)數(shù)SESSmax的CPUmax核以及分配最少的會(huì)話個(gè)數(shù)SESSmin的CPUmin核;用于將CPUmax核上的會(huì)話遷移到CPUmin核上;用于根據(jù)遷移會(huì)話的屬性信息生成所述遷移會(huì)話的filter結(jié)構(gòu)信息;用于將所述遷移會(huì)話對(duì)應(yīng)的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給所述遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡,以便所述網(wǎng)卡將所述遷移會(huì)話的數(shù)據(jù)流分配到所述CPUmin核上。
借由上述技術(shù)方案,本發(fā)明實(shí)施例提供的一種會(huì)話遷移的方法、裝置及防火墻,能夠在防火墻中通過計(jì)算每個(gè)CPU核上應(yīng)該被平均分配的會(huì)話個(gè)數(shù)SESSavg,并在獲取分配最多的會(huì)話個(gè)數(shù)SESSmax的CPUmax核以及分配最少的會(huì)話個(gè)數(shù)SESSmin的CPUmin核后,將CPUmax核上的會(huì)話遷移到CPUmin核上;然后根據(jù)遷移會(huì)話的屬性信息生成所述遷移會(huì)話的filter結(jié)構(gòu)信息;最后將所述遷移會(huì)話對(duì)應(yīng)的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給所述遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡,以便所述網(wǎng)卡將所述遷移會(huì)話的數(shù)據(jù)流分配到所述CPUmin核上。通過上述方式將防火墻中的會(huì)話進(jìn)行遷移后,使得防火墻中每個(gè)CPU核都能負(fù)載均衡的處理數(shù)據(jù),從而提高防火墻整體的吞吐量性能。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說明
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1示出了本發(fā)明實(shí)施例提供的一種會(huì)話遷移的方法的流程示意圖;
圖2示出了本發(fā)明實(shí)施例提供的一種會(huì)話遷移的裝置的組成框圖;
圖3示出了本發(fā)明實(shí)施例提供的一種會(huì)話遷移的裝置的組成框圖;
圖4示出了本發(fā)明實(shí)施例提供的一種防火墻的示意圖。
具體實(shí)施方式
下面將參照附圖更加詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
在現(xiàn)有的網(wǎng)卡硬件內(nèi)部的算法通過哈希計(jì)算將數(shù)據(jù)流映射到網(wǎng)卡的隊(duì)列上,基于網(wǎng)卡上的隊(duì)列與CPU核一一對(duì)應(yīng)的關(guān)系,實(shí)現(xiàn)將會(huì)話對(duì)應(yīng)分布給CPU核的目的;但是由于網(wǎng)絡(luò)拓?fù)涮厥饣蛘呷藶樵O(shè)定的原因,無法保證所有的會(huì)話都能夠被平均分配,此時(shí)防火墻中CPU核由于處理能力不足而導(dǎo)致丟包現(xiàn)象發(fā)生,極大的降低了防火墻的吞吐量性能。
為了解決上述問題,本發(fā)明實(shí)施例提供了一種會(huì)話遷移的方法,主要是在防火墻中基于軟件和硬件相結(jié)合的方式實(shí)現(xiàn)會(huì)話的動(dòng)態(tài)遷移,保證會(huì)話的均衡分配,從而提高防火墻的吞吐量性能?,F(xiàn)以其中的軟件部分的方法進(jìn)行說明,如圖1所示,該方法包括:
101、計(jì)算每個(gè)CPU核上平均分配的會(huì)話個(gè)數(shù)SESSavg。
在企業(yè)日常的網(wǎng)絡(luò)化辦公中,無論是在內(nèi)部網(wǎng)與外部網(wǎng)之間,還是專用網(wǎng)與公共網(wǎng)之間,都需要為交互的數(shù)據(jù)建立一個(gè)保護(hù)屏障。該保護(hù)屏障通??梢酝ㄟ^防火墻來實(shí)現(xiàn)。防火墻是一種常用的網(wǎng)關(guān)設(shè)備,其是由軟件和硬件組合而成,計(jì)算機(jī)中流入和流出的數(shù)據(jù)流都要經(jīng)過防火墻的處理,并由防火墻轉(zhuǎn)發(fā)出去。一般情況下,防火墻區(qū)分?jǐn)?shù)據(jù)流都是以一條數(shù)據(jù)連接為單位,包括正向和反向的數(shù)據(jù)流。該數(shù)據(jù)流的相關(guān)信息都會(huì)存儲(chǔ)在一個(gè)稱為會(huì)話(session)的結(jié)構(gòu)上,便于查詢相關(guān)信息進(jìn)行快速處理轉(zhuǎn)發(fā)。
因此,在防火墻處理數(shù)據(jù)流量時(shí),如何將數(shù)據(jù)流量平均分配給每個(gè)CPU核處理,是達(dá)到防火墻吞吐量最大性能的關(guān)鍵。而本發(fā)明實(shí)施例為了避免現(xiàn)有的網(wǎng)卡硬件算法無法將會(huì)話均勻分配給各個(gè)CPU核的缺陷,故提出了一種在防火墻內(nèi)部以軟件和硬件相結(jié)合的方式對(duì)會(huì)話進(jìn)行遷移。其中,軟件部分首先需要執(zhí)行步驟101計(jì)算每個(gè)CPU核上平均分配的會(huì)話個(gè)數(shù)SESSavg。計(jì)算公式為:SESSavg=SESStotal/CPUtotal其中,SESSavg是每個(gè)CPU核應(yīng)該平均分配的會(huì)話的個(gè)數(shù),SESStotal是當(dāng)前防火墻中會(huì)話的總數(shù),CPUtotal代表CPU核的總個(gè)數(shù)。計(jì)算SESSavg是在遷移之前進(jìn)行的,目的在于確定最終經(jīng)過會(huì)話遷移后每個(gè)CPU核上最理想狀態(tài)下的會(huì)話個(gè)數(shù)。
102、獲取分配最多的會(huì)話個(gè)數(shù)SESSmax的CPUmax核以及分配最少的會(huì)話個(gè)數(shù)SESSmin的CPUmin核。
當(dāng)通過步驟101確定了防火墻中每個(gè)CPU核上最理想狀態(tài)下的會(huì)話個(gè)數(shù)之后,就需要確定最先對(duì)哪個(gè)CPU核上的會(huì)話進(jìn)行遷移,以及遷移到哪個(gè)CPU核上。因此,首先需要統(tǒng)計(jì)每個(gè)CPU核上當(dāng)前的會(huì)話個(gè)數(shù),然后獲取相對(duì)于SESSavg分配最多的會(huì)話個(gè)數(shù)SESSmax的CPUmax核以及分配最少的會(huì)話個(gè)數(shù)SESSmin的CPUmin核。其中,具有會(huì)話個(gè)數(shù)最多的CPU核與其他CPU核相比,其處理能力相對(duì)不足;同樣的,具有會(huì)話個(gè)數(shù)最少的CPU核與其他CPU核相比,其處理能力相對(duì)充足。因此首選的,可以將當(dāng)前分配最多會(huì)話個(gè)數(shù)的CPU核上的會(huì)話優(yōu)先遷移到當(dāng)前分配最少會(huì)話個(gè)數(shù)的CPU核上。
103、將CPUmax核上的會(huì)話遷移到CPUmin核上。
當(dāng)通過步驟102確定了最先對(duì)哪個(gè)CPU核上的會(huì)話進(jìn)行遷移,以及遷移到哪個(gè)CPU核上之后,就需要執(zhí)行步驟103將當(dāng)前會(huì)話個(gè)數(shù)最多的CPU核上的會(huì)話遷移到當(dāng)前會(huì)話個(gè)數(shù)最少的CPU核上。其中,CPU核上分配最多的會(huì)話個(gè)數(shù)記為SESSmax,CPU核上分配最少的會(huì)話個(gè)數(shù)記為SESSmin,具有SESSmax個(gè)會(huì)話的CPU核記為CPUmax核,具有SESSmin個(gè)會(huì)話的CPU核記為CPUmin核。
104、根據(jù)遷移會(huì)話的屬性信息生成所述遷移會(huì)話的filter結(jié)構(gòu)信息。
為了達(dá)到上述效果,本發(fā)明實(shí)施例在將CPUmax核上的會(huì)話遷移到的CPUmin核上之后,還需要將有關(guān)遷移會(huì)話的遷移信息下發(fā)給網(wǎng)卡。具體的,根據(jù)遷移會(huì)話的屬性信息生成所述遷移會(huì)話的filter結(jié)構(gòu)信息,其中遷移會(huì)話的屬性信息具體可以為遷移會(huì)話中記錄的源ip、目的ip、源端口、目的端口以及協(xié)議類型等。
105、將所述遷移會(huì)話對(duì)應(yīng)的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給所述遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡,以便所述網(wǎng)卡將所述遷移會(huì)話的數(shù)據(jù)流分配到所述CPUmin核上。
在本發(fā)明實(shí)施例中,通過filter結(jié)構(gòu)信息可以對(duì)數(shù)據(jù)流進(jìn)行過濾,也就是確定哪些數(shù)據(jù)流是對(duì)應(yīng)遷移會(huì)話的數(shù)據(jù)流。此外,還需要根據(jù)遷移會(huì)話中記錄的網(wǎng)卡ID,將遷移會(huì)話的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給對(duì)應(yīng)的網(wǎng)卡。由于所述網(wǎng)卡接收到遷移會(huì)話的CPUmin核屬性信息以及filter結(jié)構(gòu)信息,并且通過filter結(jié)構(gòu)信息可以確定數(shù)據(jù)流對(duì)應(yīng)的遷移會(huì)話所在的CPU核。因此,當(dāng)網(wǎng)卡接收到數(shù)據(jù)流之后,就可以根據(jù)數(shù)據(jù)流報(bào)頭中的五元組信息找到對(duì)應(yīng)的filter結(jié)構(gòu)信息及其對(duì)應(yīng)的CPU核,從而直接通過網(wǎng)卡接收隊(duì)列將數(shù)據(jù)流交給對(duì)應(yīng)的CPU核進(jìn)行處理,省去了網(wǎng)卡通過哈希算法將數(shù)據(jù)流映射到不同的CPU核上的復(fù)雜過程,同時(shí)也省去了軟件倒核的資源開銷(例如CPU1收到數(shù)據(jù)流,發(fā)現(xiàn)該數(shù)據(jù)流所屬的會(huì)話屬于CPU2,此時(shí)需要將CPU1接收到的數(shù)據(jù)流倒給CPU2,這種開銷對(duì)防火墻性能影響較大)。
當(dāng)通過步驟105將所述遷移會(huì)話對(duì)應(yīng)的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給所述遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡之后,并不能保證會(huì)話被平均分配,有可能導(dǎo)致CPU核上分配會(huì)話最多的個(gè)數(shù)以及分配最少的個(gè)數(shù)發(fā)生變化,或者具有最多會(huì)話個(gè)數(shù)的CPU核以及具有最少會(huì)話個(gè)數(shù)的CPU核發(fā)生變化,僅通過一次遷移往往無法實(shí)現(xiàn)將會(huì)話在各個(gè)CPU核上平均分配的目的。因此,在步驟105之后還需要跳轉(zhuǎn)到步驟102重新獲取最新的SESSmax及最新的SESSmin,并將最新的SESSmax對(duì)應(yīng)的CPUmax核上的會(huì)話遷移到最新的SESSmin對(duì)應(yīng)的CPUmin核上,循環(huán)執(zhí)行步驟102-步驟105直至每個(gè)CPU核上分配的會(huì)話個(gè)數(shù)為SESSavg為止。
因此,當(dāng)所述遷移會(huì)話對(duì)應(yīng)的CPUmin核屬性信息以及filter結(jié)構(gòu)信息未成功的下發(fā)給所述遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡,則將遷移至CPUmin核上的會(huì)話回歸至原來的CPUmax核上;當(dāng)所述遷移會(huì)話對(duì)應(yīng)的CPUmin核屬性信息以及filter結(jié)構(gòu)信息成功的下發(fā)給所述遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡,則重新獲取最新的SESSmax及最新的SESSmin,并將最新的SESSmax對(duì)應(yīng)的CPUmax核上的會(huì)話遷移到最新的SESSmin對(duì)應(yīng)的CPUmin核上,循環(huán)執(zhí)行直至每個(gè)CPU核上分配的會(huì)話個(gè)數(shù)為SESSavg為止。
需要說明的是,當(dāng)通過公式SESSavg=SESStotal/CPUtotal得到的SESSavg中包含小數(shù)時(shí),即平均分配的會(huì)話個(gè)數(shù)為非整數(shù),則在獲取分配最多的會(huì)話個(gè)數(shù)SESSmax的CPUmax核以及分配最少的會(huì)話個(gè)數(shù)SESSmin的CPUmin核之后,需要計(jì)算CPUmax核上的會(huì)話個(gè)數(shù)與平均分配的會(huì)話個(gè)數(shù)SESSavg的差是否小于1,若小于1則無需將CPUmax核上的會(huì)話遷移到CPUmin核上;若大于1則將CPUmax核上的會(huì)話遷移到CPUmin核上。
本發(fā)明實(shí)施例提供的一種會(huì)話遷移的方法,能夠在防火墻中通過計(jì)算每個(gè)CPU核上應(yīng)該被平均分配的會(huì)話個(gè)數(shù)SESSavg,并獲取分配最多的會(huì)話個(gè)數(shù)SESSmax的CPUmax核以及分配最少的會(huì)話個(gè)數(shù)SESSmin的CPUmin核后,將CPUmax核上的會(huì)話遷移到CPUmin核上;然后根據(jù)遷移會(huì)話的屬性信息生成所述遷移會(huì)話的filter結(jié)構(gòu)信息;最后將所述遷移會(huì)話對(duì)應(yīng)的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給所述遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡,以便所述網(wǎng)卡將所述遷移會(huì)話的數(shù)據(jù)流分配到所述CPUmin核上。通過上述方式將防火墻中的會(huì)話進(jìn)行遷移后,使得防火墻中每個(gè)CPU核都能負(fù)載均衡的處理數(shù)據(jù),從而提高防火墻整體的吞吐量性能。
進(jìn)一步的,由于會(huì)話可以用來識(shí)別數(shù)據(jù)并保存數(shù)據(jù)的交互信息,根據(jù)會(huì)話可以獲取數(shù)據(jù)的來源及去處。因此,在將CPUmax核上的會(huì)話遷移到CPUmin核上時(shí),還需要進(jìn)行下述操作。例如:將遷移會(huì)話的CPU標(biāo)識(shí)修改為CPUmin,避免遷移會(huì)話所在的CPU核與其對(duì)應(yīng)的會(huì)話中記錄的CPU核不一致,導(dǎo)致后續(xù)根據(jù)遷移會(huì)話中記錄的錯(cuò)誤CPU標(biāo)識(shí)將數(shù)據(jù)流導(dǎo)入至錯(cuò)誤的CPU核而無法對(duì)數(shù)據(jù)流進(jìn)行處理。此外,在將遷移會(huì)話從CPUmax核的會(huì)話鏈表中刪除,并添加到CPUmin核的鏈表中之后,同時(shí)還需要對(duì)統(tǒng)計(jì)的CPU核上的會(huì)話個(gè)數(shù)進(jìn)行整理,也就是將CPUmax核的會(huì)話個(gè)數(shù)減1并將CPUmin的會(huì)話個(gè)數(shù)加1。
以上是在CPU核上對(duì)會(huì)話進(jìn)行遷移的實(shí)施方式,但是每次在將會(huì)話進(jìn)行遷移之前,還需要選擇將CPUmax核上的哪些會(huì)話作為遷移會(huì)話。由于從總體上來說,每個(gè)會(huì)話所對(duì)應(yīng)的數(shù)據(jù)流量大小通常不會(huì)存在巨大的差異,因此,本發(fā)明實(shí)施例在從CPUmax核上選擇要遷移的會(huì)話時(shí),可以從CPUmax核的會(huì)話鏈表中隨機(jī)選取會(huì)話作為遷移會(huì)話;或者,從CPUmax核的會(huì)話鏈表的頭部選取會(huì)話作為遷移會(huì)話;或者,從CPUmax核的會(huì)話鏈表的尾部選取會(huì)話作為遷移會(huì)話。無論以上述哪種方式選擇要遷移的會(huì)話,都可以每次選擇一個(gè)會(huì)話進(jìn)行遷移,每次選擇一個(gè)會(huì)話進(jìn)行遷移,可以不用考慮當(dāng)一次遷移的會(huì)話過多時(shí)而導(dǎo)致遷移失衡的問題發(fā)生。當(dāng)然,如果CPUmax核上的會(huì)話個(gè)數(shù)大大高于CPUmin核上的會(huì)話個(gè)數(shù)時(shí),也可以一次選擇多個(gè)會(huì)話進(jìn)行遷移,通過這種方式可以提高會(huì)話的遷移效率。
以上是通過軟件的方法在CPU核上進(jìn)行會(huì)話的動(dòng)態(tài)遷移,以使得防火墻中的所有會(huì)話能夠均衡的分配給各個(gè)CPU核進(jìn)行處理。這里需要說明的是,在觸發(fā)會(huì)話的動(dòng)態(tài)遷移時(shí),可以預(yù)先在防火墻中設(shè)置一個(gè)線程進(jìn)行處理,用于定時(shí)觸發(fā)會(huì)話的動(dòng)態(tài)遷移機(jī)制。當(dāng)然,也可以人工操作觸發(fā)會(huì)話的動(dòng)態(tài)遷移機(jī)制。
這里需要說明的是,由于本發(fā)明實(shí)施例需要將遷移會(huì)話的filter結(jié)構(gòu)信息下發(fā)給網(wǎng)卡硬件,因此在將遷移會(huì)話的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給所述遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡之前,本發(fā)明實(shí)施例還需要預(yù)先配置網(wǎng)卡的flow director條目,以便記錄遷移會(huì)話的filter結(jié)構(gòu)信息。具體配置流程如下:1、配置FDIRCTRL寄存器的PBALLOC作用域,作用域?yàn)?bit,(00代表不開啟、01代表申請(qǐng)2k-2個(gè)條目、10代表申請(qǐng)4k-2個(gè)條目、11代表申請(qǐng)8k-2個(gè)條目);2、輪詢查看FDIRCTRL寄存器的INIT-Done作用域,如果被硬件設(shè)置為1時(shí),說明功能開啟,可以進(jìn)行下一步配置(例如增加filter,刪除filter);網(wǎng)卡初始化配置步驟完成。
將filter結(jié)構(gòu)信息下發(fā)給對(duì)應(yīng)的網(wǎng)卡是在每遷移一個(gè)會(huì)話時(shí),就生成該遷移會(huì)話的filter結(jié)構(gòu)信息并將其下發(fā)給對(duì)應(yīng)的網(wǎng)卡上,因此網(wǎng)卡的flow director條目上會(huì)記錄有大量的filter結(jié)構(gòu)信息,為了便于查找和管理大量的filter結(jié)構(gòu)信息,本發(fā)明實(shí)施例還需要為網(wǎng)卡上的filter結(jié)構(gòu)信息進(jìn)行編號(hào),同一個(gè)網(wǎng)卡上的每個(gè)filter結(jié)構(gòu)信息都具有唯一的序列號(hào)。由于在查找filter結(jié)構(gòu)信息時(shí)還需要依靠對(duì)應(yīng)的網(wǎng)卡ID,因此,在不同的網(wǎng)卡上的filter結(jié)構(gòu)信息的序列號(hào)可以相同,只要保證同一個(gè)網(wǎng)卡上的filter結(jié)構(gòu)信息不存在相同的序列號(hào)即可?;谏鲜鲈?,可選的在將遷移會(huì)話的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡之后,本發(fā)明實(shí)施例還可以根據(jù)所述網(wǎng)卡當(dāng)前具有的filter結(jié)構(gòu)信息的序列號(hào),為新下發(fā)的filter結(jié)構(gòu)信息進(jìn)行編號(hào)。例如,可以以序列號(hào)遞增的方式為下發(fā)的所述遷移會(huì)話的filter結(jié)構(gòu)信息建立序列號(hào)。通過為filter結(jié)構(gòu)信息建立序列號(hào),能夠快速查找相應(yīng)的filter結(jié)構(gòu)信息,便于對(duì)大量的filter結(jié)構(gòu)信息進(jìn)行管理。
通過上述實(shí)施例中的實(shí)施方式,可以在防火墻中將一個(gè)分配過多的CPU核上的會(huì)話動(dòng)態(tài)的遷移到分配較少的CPU核上,并且結(jié)合網(wǎng)卡硬件的flow director特性,直接將遷移會(huì)話所對(duì)應(yīng)的數(shù)據(jù)流直接分配給對(duì)應(yīng)的CPU核,最終在防火墻中達(dá)到會(huì)話分配的均衡性。但是,每個(gè)會(huì)話都有自身的生命周期,當(dāng)一個(gè)會(huì)話由于連接超時(shí)或者后續(xù)防火墻的防御檢測(cè)而造成阻斷時(shí),該會(huì)話將會(huì)失效,此時(shí)需要將CPU核上的會(huì)話進(jìn)行刪除;同時(shí),對(duì)于網(wǎng)卡上與CPU核上刪除的會(huì)話相對(duì)應(yīng)的filter結(jié)構(gòu)信息而言,也同樣需要進(jìn)行刪除。具體的,可以根據(jù)刪除會(huì)話的源ip、目的ip、源端口、目的端口以及協(xié)議類型獲取所述刪除會(huì)話的數(shù)據(jù)流對(duì)應(yīng)網(wǎng)卡上的待刪除的filter結(jié)構(gòu)信息,將待刪除的filter結(jié)構(gòu)信息對(duì)應(yīng)的flow director條目刪除。
進(jìn)一步的,作為對(duì)上述圖1所示方法的實(shí)現(xiàn),本發(fā)明實(shí)施例提供了一種會(huì)話遷移的裝置,如圖2所示,該裝置包括:計(jì)算單元21、獲取單元22、遷移單元23、生成單元24以及下發(fā)單元25,其中,
計(jì)算單元21,用于計(jì)算每個(gè)CPU核上平均分配的會(huì)話個(gè)數(shù)SESSavg;計(jì)算公式為:SESSavg=SESStotal/CPUtotal其中,SESSavg是每個(gè)CPU核應(yīng)該平均分配的會(huì)話的個(gè)數(shù),SESStotal是當(dāng)前防火墻中會(huì)話的總數(shù),CPUtotal代表CPU核的總個(gè)數(shù);
獲取單元22,用于獲取分配最多的會(huì)話個(gè)數(shù)SESSmax的CPUmax核以及分配最少的會(huì)話個(gè)數(shù)SESSmin的CPUmin核。其中,具有會(huì)話個(gè)數(shù)最多的CPU核與其他CPU核相比,其處理能力相對(duì)不足;同樣的,具有會(huì)話個(gè)數(shù)最少的CPU核與其他CPU核相比,其處理能力相對(duì)充足;首選的,可以將當(dāng)前分配最多會(huì)話個(gè)數(shù)的CPU核上的會(huì)話優(yōu)先遷移到當(dāng)前分配最少會(huì)話個(gè)數(shù)的CPU核上;
遷移單元23,用于將CPUmax核上的會(huì)話遷移到CPUmin核上;
生成單元24,用于根據(jù)遷移會(huì)話的屬性信息生成所述遷移會(huì)話的filter結(jié)構(gòu)信息;
下發(fā)單元25,用于將所述遷移會(huì)話對(duì)應(yīng)的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給所述遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡,以便所述網(wǎng)卡將所述遷移會(huì)話的數(shù)據(jù)流分配到所述CPUmin核上。
進(jìn)一步的,如圖3所示,遷移單元23包括:
修改模塊231,用于將遷移會(huì)話的CPU標(biāo)識(shí)修改為CPUmin;避免遷移會(huì)話所在的CPU核與其對(duì)應(yīng)的會(huì)話中記錄的CPU核不一致,導(dǎo)致后續(xù)根據(jù)遷移會(huì)話中記錄的錯(cuò)誤CPU標(biāo)識(shí)將數(shù)據(jù)流導(dǎo)入至錯(cuò)誤的CPU核而無法對(duì)數(shù)據(jù)流進(jìn)行處理;
遷移模塊232,用于將遷移會(huì)話從CPUmax核的會(huì)話鏈表中刪除,添加到CPUmin核的鏈表中;
記錄模塊233,用于在遷移模塊232將所述遷移會(huì)話遷移之后,將所述CPUmax核的會(huì)話個(gè)數(shù)減1并將所述CPUmin的會(huì)話個(gè)數(shù)加1。
進(jìn)一步的,如圖3所示,所述裝置還包括:
選取單元26,用于從CPUmax核的會(huì)話鏈表中隨機(jī)選取會(huì)話作為遷移會(huì)話;
選取單元26還用于從CPUmax核的會(huì)話鏈表的頭部選取會(huì)話作為遷移會(huì)話;
選取單元26還用于從CPUmax核的會(huì)話鏈表的尾部選取會(huì)話作為遷移會(huì)話。
無論以上述哪種方式選擇要遷移的會(huì)話,都可以每次選擇一個(gè)會(huì)話進(jìn)行遷移,每次選擇一個(gè)會(huì)話進(jìn)行遷移,可以不用考慮當(dāng)一次遷移的會(huì)話過多時(shí)而導(dǎo)致遷移失衡的問題發(fā)生。當(dāng)然,如果CPUmax核上的會(huì)話個(gè)數(shù)大大高于CPUmin核上的會(huì)話個(gè)數(shù)時(shí),也可以一次選擇多個(gè)會(huì)話進(jìn)行遷移,通過這種方式可以提高會(huì)話的遷移效率。
進(jìn)一步的,由于本發(fā)明實(shí)施例需要將遷移會(huì)話的filter結(jié)構(gòu)信息下發(fā)給網(wǎng)卡硬件,因此如圖3所示,所述裝置還包括:
配置單元27,用于預(yù)先配置網(wǎng)卡的flow director條目,用于記錄會(huì)話的filter結(jié)構(gòu)信息;所述filter結(jié)構(gòu)信息包括會(huì)話中的源ip、目的ip、源端口、目的端口以及協(xié)議類型。
進(jìn)一步的,由于網(wǎng)卡的flow director條目上會(huì)記錄有大量的filter結(jié)構(gòu)信息,為了便于查找和管理大量的filter結(jié)構(gòu)信息,如圖3所示,所述裝置還包括:
編號(hào)單元28,用于根據(jù)所述網(wǎng)卡當(dāng)前具有的filter結(jié)構(gòu)信息的序列號(hào)以序列號(hào)遞增的方式為所述遷移會(huì)話的filter結(jié)構(gòu)信息建立序列號(hào)。
進(jìn)一步的,由于每個(gè)會(huì)話都有自身的生命周期,當(dāng)一個(gè)會(huì)話由于連接超時(shí)或者后續(xù)防火墻的防御檢測(cè)而造成阻斷時(shí),該會(huì)話將會(huì)失效,因此在CPU核上將連接超時(shí)的會(huì)話進(jìn)行刪除時(shí);還需要在網(wǎng)卡上將對(duì)應(yīng)的filter結(jié)構(gòu)信息也進(jìn)行刪除。因此如圖3所示,所述裝置還包括:
刪除單元29,用于當(dāng)在CPU核上對(duì)連接超時(shí)的會(huì)話進(jìn)行刪除時(shí),根據(jù)刪除會(huì)話的源ip、目的ip、源端口、目的端口以及協(xié)議類型獲取所述刪除會(huì)話的數(shù)據(jù)流對(duì)應(yīng)網(wǎng)卡上的待刪除的filter結(jié)構(gòu)信息,將待刪除的filter結(jié)構(gòu)信息對(duì)應(yīng)的flow director條目進(jìn)行刪除。
本發(fā)明實(shí)施例提供的一種會(huì)話遷移的裝置,能夠在防火墻中通過計(jì)算每個(gè)CPU核上應(yīng)該被平均分配的會(huì)話個(gè)數(shù)SESSavg,并在獲取分配最多的會(huì)話個(gè)數(shù)SESSmax的CPUmax核以及分配最少的會(huì)話個(gè)數(shù)SESSmin的CPUmin核后,將CPUmax核上的會(huì)話遷移到CPUmin核上;然后根據(jù)遷移會(huì)話的屬性信息生成所述遷移會(huì)話的filter結(jié)構(gòu)信息;最后將所述遷移會(huì)話對(duì)應(yīng)的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給所述遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡,以便所述網(wǎng)卡將所述遷移會(huì)話的數(shù)據(jù)流分配到所述CPUmin核上。通過上述方式將防火墻中的會(huì)話進(jìn)行遷移后,使得防火墻中每個(gè)CPU核都能負(fù)載均衡的處理數(shù)據(jù),從而提高防火墻整體的吞吐量性能。
此外,本發(fā)明實(shí)施例中的會(huì)話遷移的裝置通過為網(wǎng)卡配置flowdirector條目,將與CPU核上的會(huì)話相對(duì)應(yīng)的filter結(jié)構(gòu)信息進(jìn)行記錄,使得防火墻中的所有會(huì)話在CPU核上均衡分配后,均衡分配的會(huì)話所對(duì)應(yīng)的數(shù)據(jù)流可以直接通過網(wǎng)卡接收隊(duì)列交給對(duì)應(yīng)的CPU核進(jìn)行處理,省去了網(wǎng)卡通過哈希算法將數(shù)據(jù)流映射到不同的CPU核上的復(fù)雜過程,同時(shí)也省去了軟件倒核的資源開銷(例如CPU1收到數(shù)據(jù)流,發(fā)現(xiàn)該數(shù)據(jù)流所屬的會(huì)話屬于CPU2,此時(shí)需要將CPU1接收到的數(shù)據(jù)流倒給CPU2,這種開銷對(duì)防火墻性能影響較大)。
進(jìn)一步的,作為對(duì)上述圖1所示方法的實(shí)現(xiàn),以及對(duì)圖2和圖3所示裝置的應(yīng)用,本發(fā)明實(shí)施例還提供了一種具有多個(gè)CPU核以及多個(gè)網(wǎng)卡的防火墻,其中網(wǎng)卡配置有flow director條目。如圖4所示,所述防火墻還包括:如圖2或圖3所示的會(huì)話遷移的裝置;
其中,所述防火墻中的會(huì)話遷移的裝置用于計(jì)算每個(gè)CPU核上平均分配的會(huì)話個(gè)數(shù)SESSavg;用于獲取分配最多的會(huì)話個(gè)數(shù)SESSmax的CPUmax核以及分配最少的會(huì)話個(gè)數(shù)SESSmin的CPUmin核;用于將CPUmax核上的會(huì)話遷移到CPUmin核上;用于根據(jù)遷移會(huì)話的屬性信息生成所述遷移會(huì)話的filter結(jié)構(gòu)信息;用于將所述遷移會(huì)話對(duì)應(yīng)的CPUmin核屬性信息以及filter結(jié)構(gòu)信息下發(fā)給所述遷移會(huì)話對(duì)應(yīng)的網(wǎng)卡,以便所述網(wǎng)卡將所述遷移會(huì)話的數(shù)據(jù)流分配到所述CPUmin核上。
同時(shí),所述防火墻中的會(huì)話遷移的裝置還用于將會(huì)話的CPU核屬性及其filter結(jié)構(gòu)信息下發(fā)給網(wǎng)卡,以便網(wǎng)卡接收到數(shù)據(jù)流之后,就可以根據(jù)數(shù)據(jù)流報(bào)頭中的五元組信息找到對(duì)應(yīng)的filter結(jié)構(gòu)信息及其對(duì)應(yīng)的CPU核,從而直接通過網(wǎng)卡接收隊(duì)列將數(shù)據(jù)流交給對(duì)應(yīng)的CPU核進(jìn)行處理。
本發(fā)明實(shí)施例提供的一種防火墻,能夠在防火墻中通過計(jì)算每個(gè)CPU核上應(yīng)該被平均分配的會(huì)話個(gè)數(shù)SESSavg,并在統(tǒng)計(jì)當(dāng)前每個(gè)CPU核上的會(huì)話個(gè)數(shù)后,將會(huì)話個(gè)數(shù)最多的CPUmax核上的會(huì)話遷移到會(huì)話個(gè)數(shù)最少的CPUmin核上;重復(fù)上述操作,直至每個(gè)CPU核上被分配了SESSavg個(gè)會(huì)話為止。通過上述方式將防火墻中的會(huì)話進(jìn)行遷移后,使得防火墻中每個(gè)CPU核都能負(fù)載均衡的處理數(shù)據(jù),從而提高防火墻整體的吞吐量性能。
此外,本發(fā)明實(shí)施例提供的防火墻通過為網(wǎng)卡配置flow director條目,將與CPU核上的會(huì)話相對(duì)應(yīng)的filter結(jié)構(gòu)信息進(jìn)行記錄,使得防火墻中的所有會(huì)話在CPU核上均衡分配后,均衡分配的會(huì)話所對(duì)應(yīng)的數(shù)據(jù)流可以直接通過網(wǎng)卡接收隊(duì)列交給對(duì)應(yīng)的CPU核進(jìn)行處理,省去了網(wǎng)卡通過哈希算法將數(shù)據(jù)流映射到不同的CPU核上的復(fù)雜過程,同時(shí)也省去了軟件倒核的資源開銷(例如CPU1收到數(shù)據(jù)流,發(fā)現(xiàn)該數(shù)據(jù)流所屬的會(huì)話屬于CPU2,此時(shí)需要將CPU1接收到的數(shù)據(jù)流倒給CPU2,這種開銷對(duì)防火墻性能影響較大)。
在上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
可以理解的是,上述方法及裝置中的相關(guān)特征可以相互參考。另外,上述實(shí)施例中的“第一”、“第二”等是用于區(qū)分各實(shí)施例,而并不代表各實(shí)施例的優(yōu)劣。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。
在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(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è)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
本發(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)來實(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)行說明而不是對(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ī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。