本發(fā)明實施例涉及計算機(jī)領(lǐng)域,并且更具體地,涉及一種多隊列或設(shè)備的選擇方法和計算節(jié)點。
背景技術(shù):多隊列網(wǎng)卡是一種技術(shù),最初是用來解決網(wǎng)絡(luò)輸入輸出(IO)的業(yè)務(wù)質(zhì)量(QoS)問題的,后來隨著網(wǎng)絡(luò)IO的帶寬的不斷提升,單核CPU不能完全滿足網(wǎng)卡的需求,通過多隊列網(wǎng)卡驅(qū)動的支持,當(dāng)收包時將各個隊列通過中斷綁定到不同的核上,以滿足網(wǎng)卡的收包性能需求;當(dāng)發(fā)包時,通過選擇不同的隊列,滿足負(fù)載均衡需求,提高發(fā)包速度。隨著虛擬化技術(shù)的發(fā)展,在虛擬機(jī)上的虛擬網(wǎng)卡也開始使用多隊列技術(shù),比如基于內(nèi)核的虛擬機(jī)(Kernel-basedVirtualMachine,KVM)的VirtIO架構(gòu)就應(yīng)用多隊列技術(shù)來提高虛擬機(jī)的網(wǎng)絡(luò)IO吞吐量,并降低單個CPU的負(fù)載。在使用網(wǎng)卡時,通常也會把多個物理網(wǎng)卡進(jìn)行聚合,這個聚合起來的設(shè)備看起來是一個單獨的網(wǎng)卡設(shè)備(虛擬網(wǎng)卡)。這個虛擬網(wǎng)卡設(shè)備通過不同的物理網(wǎng)卡進(jìn)行收發(fā)包。在虛擬化環(huán)境下,虛擬機(jī)和物理網(wǎng)卡在發(fā)送和接收每一個網(wǎng)絡(luò)數(shù)據(jù)包的時候,都會使用隊列選擇算法來選擇發(fā)送隊列和接收隊列,選擇算法計算重復(fù),系統(tǒng)運(yùn)算的效率較低。
技術(shù)實現(xiàn)要素:本發(fā)明實施例提供一種多隊列或設(shè)備的選擇方法和計算節(jié)點,能夠提高計算節(jié)點的系統(tǒng)性能。第一方面,提供了一種多隊列或設(shè)備的選擇方法,該方法包括:計算節(jié)點的選擇策略管理單元向該計算節(jié)點的第一選擇單元發(fā)送復(fù)用指示信息,該復(fù)用指示信息用于指示該第一選擇單元復(fù)用該計算節(jié)點的第二選擇單元已計算的選擇參數(shù),該第一選擇單元用于確定第一隊列或設(shè)備中選擇使用的隊列或設(shè)備,該第二選擇單元用于確定第二隊列或設(shè)備中選擇使用的隊列或設(shè)備,該選擇參數(shù)用于該第二選擇單元確定該第二隊列或設(shè)備中選擇使用的隊列或設(shè)備;該第一選擇單元根據(jù)該復(fù)用指示信息獲取該選擇參數(shù);該第一選擇單元根據(jù)該選擇參數(shù)確定該第一隊列或設(shè)備中選擇使用的隊列或設(shè)備。結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,具體實現(xiàn)為,該第一選擇單元設(shè)置在該計算節(jié)點的虛擬機(jī)VM上,該選擇策略管理單元和該第二選擇單元設(shè)置在該計算節(jié)點的宿主機(jī)Host上,其中該計算節(jié)點的選擇策略管理單元向該計算節(jié)點的第一選擇單元發(fā)送復(fù)用指示信息具體實現(xiàn)為:該計算節(jié)點的選擇策略管理單元通過設(shè)置在該VM上的選擇策略代理單元向該計算節(jié)點的第一選擇單元發(fā)送復(fù)用指示信息。結(jié)合第一方面,在第二種可能的實現(xiàn)方式中,具體實現(xiàn)為:該選擇策略管理單元、該第一選擇單元和該第二選擇單元設(shè)置在該計算節(jié)點的Host上。結(jié)合第一方面的第一種可能的實現(xiàn)方式或第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,具體實現(xiàn)為:當(dāng)該計算節(jié)點用于接收數(shù)據(jù)包時,該第二選擇單元為該數(shù)據(jù)包輸入時經(jīng)過的選擇單元中在該第一選擇單元之前的選擇單元。結(jié)合第一方面,在第四種可能的實現(xiàn)方式中,具體實現(xiàn)為:該選擇策略管理單元和該第一選擇單元設(shè)置在該計算節(jié)點的Host上,該第二選擇單元設(shè)置在該計算節(jié)點的VM上。結(jié)合第一方面的第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,具體實現(xiàn)為:當(dāng)該計算節(jié)點用于從該VM往該計算節(jié)點之外發(fā)送數(shù)據(jù)包時,該第二選擇單元為該數(shù)據(jù)包輸出時經(jīng)過的選擇單元中在該第一選擇單元之前的選擇單元。結(jié)合第一方面的第三種可能的實現(xiàn)方式或第一方面的第五種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,具體實現(xiàn)為:該選擇參數(shù)由以下至少一個參數(shù)確定:該數(shù)據(jù)包的目標(biāo)MAC地址、本地MAC地址、目標(biāo)IP地址、本地IP地址、目標(biāo)Port地址、本地Port地址。結(jié)合第一方面或第一方面的第一種可能的實現(xiàn)方式至第一方面的第六種可能的實現(xiàn)方式中任一種可能的實現(xiàn)方式,在第七種可能的實現(xiàn)方式中,該方法還包括:該選擇策略管理單元向該第二選擇單元發(fā)送選擇策略;該第二選擇單元根據(jù)該選擇策略確定該選擇參數(shù)。第二方面,提供了一種計算節(jié)點,包括:選擇策略管理單元、第一選擇單元和第二選擇單元,其中,該第二選擇單元用于確定選擇參數(shù)確定該第二隊列或設(shè)備中選擇使用的隊列或設(shè)備,該隊列或設(shè)備選擇參數(shù)用于該第二選擇單元確定該第二隊列或設(shè)備中選擇使用的隊列或設(shè)備;該選擇策略管理單元用于向該第一選擇單元發(fā)送復(fù)用指示信息,該復(fù)用指示信息用于指示該第一選擇單元復(fù)用該第二選擇單元已計算的隊列或設(shè)備選擇參數(shù);該第一選擇單元用于根據(jù)該復(fù)用指示信息獲取該隊列或設(shè)備選擇參數(shù),并根據(jù)該選擇參數(shù)確定第一隊列或設(shè)備中選擇使用的隊列或設(shè)備。結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,具體實現(xiàn)為:該第一選擇單元設(shè)置在該計算節(jié)點的虛擬機(jī)VM上,該選擇策略管理單元和該第二選擇單元設(shè)置在該計算節(jié)點的宿主機(jī)Host上;該選擇策略管理單元具體用于通過設(shè)置在該VM上的選擇策略代理單元向該第一選擇單元發(fā)送復(fù)用指示信息。結(jié)合第二方面,在第二種可能的實現(xiàn)方式中,具體實現(xiàn)為:該選擇策略管理單元、該第一選擇單元和該第二選擇單元設(shè)置在該計算節(jié)點的Host上。結(jié)合第二方面的第一種可能的實現(xiàn)方式或第二方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,具體實現(xiàn)為:當(dāng)該計算節(jié)點用于接收數(shù)據(jù)包時,該第二選擇單元為該數(shù)據(jù)包輸入時經(jīng)過的選擇單元中在該第一選擇單元之前的選擇單元。結(jié)合第二方面,在第四種可能的實現(xiàn)方式中,具體實現(xiàn)為:該選擇策略管理單元和該第一選擇單元設(shè)置在該計算節(jié)點的Host上,該第二選擇單元設(shè)置在該計算節(jié)點的VM上。結(jié)合第二方面的第四種可能的實現(xiàn)方式,在第五種可能的實現(xiàn)方式中,具體實現(xiàn)為:當(dāng)該計算節(jié)點用于從該VM往該計算節(jié)點之外發(fā)送數(shù)據(jù)包時,該第二選擇單元為該數(shù)據(jù)包輸出時經(jīng)過的選擇單元中在該第一選擇單元之前的選擇單元。結(jié)合第二方面的第三種可能的實現(xiàn)方式或第二方面的第五種可能的實現(xiàn)方式,在第六種可能的實現(xiàn)方式中,具體實現(xiàn)為:該選擇參數(shù)由以下至少一個參數(shù)確定:該數(shù)據(jù)包的目標(biāo)MAC地址、本地MAC地址、目標(biāo)IP地址、本地IP地址、目標(biāo)Port地址、本地Port地址。結(jié)合第二方面或第二方面的第一種可能的實現(xiàn)方式至第二方面的第六種可能的實現(xiàn)方式中任一種可能的實現(xiàn)方式,在第七種可能的實現(xiàn)方式中,具體實現(xiàn)為:該選擇策略管理單元還用于向該第二選擇單元發(fā)送選擇策略;該第二選擇單元還用于根據(jù)該選擇策略確定該隊列或設(shè)備選擇參數(shù)?;谝陨霞夹g(shù)方案,本發(fā)明實施例中,計算節(jié)點通過復(fù)用已計算的選擇參數(shù),能夠減少不必要的運(yùn)算,提高計算節(jié)點的系統(tǒng)性能。附圖說明為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實施例的應(yīng)用場景的流程示意圖。圖2是本發(fā)明實施例多隊列或設(shè)備的選擇方法流程圖。圖3是本發(fā)明一個實施例計算節(jié)點發(fā)送數(shù)據(jù)包的流程示意圖。圖4是本發(fā)明另一實施例計算節(jié)點接收數(shù)據(jù)包的流程示意圖。圖5是本發(fā)明一個實施例計算節(jié)點的結(jié)構(gòu)示意圖。圖6是本發(fā)明另一實施例計算節(jié)點的結(jié)構(gòu)示意圖。具體實施方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。為了方便理解本發(fā)明實施例,首先在此介紹本發(fā)明實施例描述中會引入的幾個要素。虛擬機(jī)(VirtualMachine,VM):通過虛擬機(jī)軟件可以在一臺物理計算機(jī)上模擬出一臺或者多臺虛擬的計算機(jī),而這些虛擬機(jī)就像真正的計算機(jī)那樣進(jìn)行工作,虛擬機(jī)上可以安裝操作系統(tǒng)和應(yīng)用程序,虛擬機(jī)還可訪問網(wǎng)絡(luò)資源。對于在虛擬機(jī)中運(yùn)行的應(yīng)用程序而言,虛擬機(jī)就像是在真正的計算機(jī)中進(jìn)行工作。硬件層:虛擬化環(huán)境運(yùn)行的硬件平臺。其中,硬件層可包括多種硬件,例如某計算節(jié)點的硬件層可包括CPU和內(nèi)存,還可以包括網(wǎng)卡、存儲器等等高速/低速輸入/輸出(I/O,Input/Output)設(shè)備。宿主機(jī)(Host):作為管理層,用以完成硬件資源的管理、分配;為虛擬機(jī)呈現(xiàn)虛擬硬件平臺;實現(xiàn)虛擬機(jī)的調(diào)度和隔離。其中,Host可能是虛擬機(jī)監(jiān)控器(VirtualMachineMonitor,VMM);或者,有時VMM和1個特權(quán)虛擬機(jī)配合,兩者結(jié)合組成Host(例如,本實施例中的計算機(jī)節(jié)點)。其中,虛擬硬件平臺對其上運(yùn)行的各個虛擬機(jī)提供各種硬件資源,如提供虛擬CPU、內(nèi)存、虛擬磁盤、虛擬網(wǎng)卡等等。其中,該虛擬磁盤可對應(yīng)Host的一個文件或者一個邏輯塊設(shè)備。虛擬機(jī)可以運(yùn)行在Host為其準(zhǔn)備的虛擬硬件平臺上,Host上可以運(yùn)行一個或多個虛擬機(jī)。VMM:虛擬機(jī)監(jiān)控器(VirtualMachineMonitor),它是計算機(jī)軟件和硬件組成的平臺,可以創(chuàng)建和運(yùn)行一個或多個虛擬機(jī),VMM為這些虛擬機(jī)的操作系統(tǒng)提供虛擬硬件環(huán)境并對這些虛擬機(jī)的運(yùn)行進(jìn)行管理。多種操作系統(tǒng)的虛擬機(jī)可以共享虛擬化硬件資源,例如CPU、存儲和網(wǎng)絡(luò)。KVM:一個開源的系統(tǒng)虛擬化模塊,一種VMM的開源實現(xiàn)。VirtIO:是開源KVM虛擬化平臺下為虛擬機(jī)提供IO能力的一種前后端框架,分成前端驅(qū)動和后端驅(qū)動兩部分。VirtIO框架的其中一個功能就是為虛擬機(jī)提供虛擬網(wǎng)卡,前端驅(qū)動運(yùn)行在虛擬機(jī)內(nèi)部,生成前端網(wǎng)卡,后端驅(qū)動運(yùn)行在Host上,生成后端網(wǎng)卡。后端網(wǎng)卡負(fù)責(zé)在硬件網(wǎng)卡和前端網(wǎng)卡之間傳輸網(wǎng)絡(luò)流量。TAP:在計算機(jī)網(wǎng)絡(luò)中,TAP是操作系統(tǒng)內(nèi)核中的虛擬網(wǎng)絡(luò)設(shè)備,該虛擬網(wǎng)絡(luò)設(shè)備全部用軟件實現(xiàn),并向運(yùn)行于操作系統(tǒng)上的軟件提供與硬件的網(wǎng)絡(luò)設(shè)備完全相同的功能。TAP可視為等同于一個以太網(wǎng)設(shè)備,操作第二層數(shù)據(jù)包如以太網(wǎng)數(shù)據(jù)幀。操作系統(tǒng)通過TAP設(shè)備向綁定該設(shè)備的用戶空間的程序發(fā)送數(shù)據(jù),反之,用戶空間的程序也可以像操作硬件網(wǎng)絡(luò)設(shè)備那樣,通過TAP設(shè)備發(fā)送數(shù)據(jù)。圖1是本發(fā)明實施例的應(yīng)用場景的流程示意圖,用于發(fā)送虛擬機(jī)應(yīng)用的數(shù)據(jù)包。在圖1所示的應(yīng)用場景系統(tǒng)架構(gòu)圖,可包括宿主機(jī)、虛擬機(jī)及連接虛擬機(jī)和宿主機(jī)的虛擬監(jiān)控器VMM。其中,Host可包括隊列選擇單元C,隊列選擇單元C對應(yīng)的物理網(wǎng)卡隊列(例如,圖1的物理網(wǎng)卡隊列中的tx0、tx1等),設(shè)備選擇單元B,開放虛擬交換機(jī)/網(wǎng)橋(openvswitch/bridge)等網(wǎng)絡(luò)單元,套接字(socket)隊列(例如,圖1中基于tap機(jī)制生成的sock0、sock1等),網(wǎng)卡前端驅(qū)動隊列(例如,圖1的tx0、tx1等),網(wǎng)卡后端驅(qū)動隊列(例如,圖1的vhost-tx0、vhost-tx1等),應(yīng)用(例如,圖1的app1、app2等)。其中,網(wǎng)卡前端驅(qū)動隊列(例如,圖1的tx0、tx1等)分別綁定到不同的CPU;網(wǎng)卡后端驅(qū)動隊列(例如,圖1的vhost-tx0、vhost-tx1等)也分別綁定到不同的CPU。當(dāng)發(fā)包時,網(wǎng)卡前端驅(qū)動隊列會通過“隊列選擇單元A”選擇發(fā)送數(shù)據(jù)包的前端發(fā)送隊列。網(wǎng)卡后端驅(qū)動隊列生成對應(yīng)前端”tx”發(fā)包隊列的多個“vhost-tx”后端發(fā)包隊列,該多個“vhost-tx”后端發(fā)包隊列接收從網(wǎng)卡前端驅(qū)動的發(fā)送過來的數(shù)據(jù)包。根據(jù)TAP機(jī)制生成的多個socket(例如,圖1的sock0、sock1等等),接收到“vhost-tx”后端發(fā)包隊列的數(shù)據(jù)包后,提交給openvswitch或者bridge等網(wǎng)絡(luò)模塊。同時,“聚合層”聚合后的虛擬網(wǎng)卡從openvswitch或者bridge得到數(shù)據(jù)包后,會通過“設(shè)備選擇單元B”來選擇相應(yīng)的“slave設(shè)備”,每個“slave設(shè)備”代表一個真實的物理網(wǎng)卡設(shè)備。(如果是多層聚合,則每個“slave設(shè)備”代表一個虛擬網(wǎng)卡設(shè)備)。最后系統(tǒng)調(diào)用“隊列選擇單元C”來選擇物理網(wǎng)卡隊列。在圖1所示的系統(tǒng)架構(gòu)圖中,“隊列選擇單元A”、“設(shè)備選擇單元B”、“隊列選擇單元C”的運(yùn)行相互獨立,可能使用不同的算法和裝置,因而可能導(dǎo)致不同的應(yīng)用程序發(fā)送的數(shù)據(jù)包最后依然從某個特定的物理隊列發(fā)送出去,并且每次采用不同的算法計算,影響了系統(tǒng)效率。當(dāng)然,本發(fā)明實施例的方法并不僅限于圖1所示的應(yīng)用場景中,圖1的應(yīng)用場景僅僅是為了便于結(jié)合本發(fā)明實施例的方法理解本發(fā)明實施例的方案。圖2是本發(fā)明實施例多隊列或設(shè)備的選擇方法流程圖。圖2的方法由計算節(jié)點執(zhí)行。201,計算節(jié)點的選擇策略管理單元向該計算節(jié)點的第一選擇單元發(fā)送復(fù)用指示信息。其中,該復(fù)用指示信息用于指示該第一選擇單元復(fù)用該計算節(jié)點的第二選擇單元已計算的選擇參數(shù),該第一選擇單元用于確定第一隊列或設(shè)備中選擇使用的隊列或設(shè)備,該第二選擇單元用于確定第二隊列或設(shè)備中選擇使用的隊列或設(shè)備,該選擇參數(shù)用于該第二選擇單元確定該第二隊列或設(shè)備中選擇使用的隊列或設(shè)備。202,該第一選擇單元根據(jù)該復(fù)用指示信息獲取該選擇參數(shù)。203,該第一選擇單元根據(jù)該選擇參數(shù)確定該第一隊列或設(shè)備中選擇使用的隊列或設(shè)備。其中,第一隊列或設(shè)備指第一選擇單元對應(yīng)的多個隊列資源或多個設(shè)備資源,第二隊列或設(shè)備指第二選擇單元對應(yīng)的多個隊列資源或多個設(shè)備資源。例如,在圖1中,隊列選擇單元A對應(yīng)網(wǎng)卡前端驅(qū)動隊列的資源(tx0、tx1等),設(shè)備選擇單元B對應(yīng)Slave設(shè)備的資源(slave0,slave1等),設(shè)備選擇單元C對應(yīng)物理網(wǎng)卡隊列的資源(tx0、tx1等)。第一選擇單元可從第一隊列或設(shè)備中確定選擇使用的隊列資源或設(shè)備資源,第二選擇單元可從第二隊列或設(shè)備中確定選擇使用的隊列資源或設(shè)備資源。本發(fā)明實施例中,計算節(jié)點通過復(fù)用已計算的選擇參數(shù),能夠減少不必要的運(yùn)算,提高了系統(tǒng)的性能。另外,本發(fā)明實施例的方法,通過復(fù)用已計算的選擇參數(shù),還可避免不同選擇單元因采用不同算法而導(dǎo)致的某一隊列或設(shè)備擁塞問題。另外,當(dāng)計算節(jié)點的不同選擇單元下的多個隊列或設(shè)備綁定到不同的CPU時,本發(fā)明實施例的方法,通過復(fù)用已計算的選擇參數(shù),還可避免不同選擇單元因采用不同算法而導(dǎo)致數(shù)據(jù)在不同CPU間的切換,即避免不同選擇單元因采用不同算法而導(dǎo)致cache的乒乓效應(yīng)。本發(fā)明實施例中,計算節(jié)點可包括:硬件層、運(yùn)行在該硬件層之上的宿主機(jī)Host、以及運(yùn)行在該Host之上的虛擬機(jī)VM,其中,選擇策略管理單元、第一選擇單元、第一隊列或設(shè)備、第二選擇單元以及第二隊列或設(shè)備,可以部署在計算節(jié)點的Host或VM上。本發(fā)明的一個實施例,該第一選擇單元設(shè)置在該計算節(jié)點的VM上,該選擇策略管理單元和該第二選擇單元設(shè)置在該計算節(jié)點的宿主機(jī)(Host)上。進(jìn)一步地,該計算節(jié)點的選擇策略管理單元向該計算節(jié)點的第一選擇單元發(fā)送復(fù)用指示信息可包括:該計算節(jié)點的選擇策略管理單元通過設(shè)置在該VM上的選擇策略代理單元向該計算節(jié)點的第一選擇單元發(fā)送復(fù)用指示信息。進(jìn)一步地,當(dāng)該計算節(jié)點用于接收數(shù)據(jù)包時,該第二選擇單元為該數(shù)據(jù)包輸入時經(jīng)過的選擇單元中在該第一選擇單元之前的選擇單元。優(yōu)選地,當(dāng)該計算節(jié)點用于接收數(shù)據(jù)包時,該第二選擇單元為該數(shù)據(jù)包輸入時經(jīng)過的設(shè)置在該Host的第一個選擇單元。本發(fā)明的另一實施例,該選擇策略管理單元、該第一選擇單元和該第二選擇單元設(shè)置在該計算節(jié)點的Host上。進(jìn)一步地,當(dāng)該計算節(jié)點用于接收數(shù)據(jù)包時,該第二選擇單元為該數(shù)據(jù)包輸入時經(jīng)過的選擇單元中在該第一選擇單元之前的選擇單元。優(yōu)選地,當(dāng)該計算節(jié)點用于接收數(shù)據(jù)包時,該第二選擇單元為該數(shù)據(jù)包輸入時經(jīng)過的設(shè)置在該Host的第一個選擇單元。本發(fā)明的再一實施例,該選擇策略管理單元和該第一選擇單元設(shè)置在該計算節(jié)點的Host上,該第二選擇單元設(shè)置在該計算節(jié)點的VM上。進(jìn)一步地,當(dāng)該計算節(jié)點用于從該VM往該計算節(jié)點之外發(fā)送數(shù)據(jù)包時,該第二選擇單元為該數(shù)據(jù)包輸出時經(jīng)過的選擇單元中在該第一選擇單元之前的選擇單元。優(yōu)選地,當(dāng)該計算節(jié)點用于從該VM往該計算節(jié)點之外發(fā)送數(shù)據(jù)包時,該第二選擇單元為該數(shù)據(jù)包輸出時經(jīng)過的設(shè)置在該VM上的第一個選擇單元??蛇x地,當(dāng)該計算節(jié)點用于接收數(shù)據(jù)包時,或者當(dāng)該計算節(jié)點用于從該VM往該計算節(jié)點之外發(fā)送數(shù)據(jù)包時,該選擇參數(shù)由以下至少一個參數(shù)確定:該數(shù)據(jù)包的目標(biāo)媒體接入控制(MediaAccessControl,MAC)地址、本地MAC地址、目標(biāo)互聯(lián)網(wǎng)協(xié)議(InternetProtocol,IP)地址、本地IP地址、目標(biāo)端口(Port)地址、本地Port地址。可選地,該方法還可包括:該選擇策略管理單元向該第二選擇單元發(fā)送選擇策略,并根據(jù)該選擇策略確定該選擇參數(shù)。進(jìn)一步地,當(dāng)該選擇策略管理單元設(shè)置在該計算節(jié)點的Host上,該第二選擇單元設(shè)置在該計算節(jié)點的VM上時,該選擇策略管理單元向該第二選擇單元發(fā)送選擇策略可包括:該選擇策略管理單元通過設(shè)置在該計算節(jié)點的VM上的選擇策略代理單元向該第二選擇單元發(fā)送選擇策略。下面將結(jié)合具體的實施例,對本發(fā)明實施例的方法作進(jìn)一步的描述。圖3是本發(fā)明實施例計算節(jié)點發(fā)送數(shù)據(jù)包的流程示意圖。圖3中,計算節(jié)點可包括硬件層、運(yùn)行在硬件層之上的宿主機(jī)Host、以及運(yùn)行在Host之上的虛擬機(jī)VM。其中,Host可包括隊列選擇單元C,隊列選擇單元C對應(yīng)的物理網(wǎng)卡隊列(例如,圖3的tx0、tx1等),設(shè)備選擇單元B,設(shè)備選擇單元B對應(yīng)的slave設(shè)備(例如,圖3的聚合層聚合后的虛擬網(wǎng)卡slave0、slave1等),以及選擇策略管理單元。VM可包括選擇策略代理單元和隊列選擇單元A,隊列選擇單元A對應(yīng)的網(wǎng)卡前端驅(qū)動隊列(例如,圖3中的tx0、tx1等)。當(dāng)然,Host還可包括openvswitch/bridge等網(wǎng)絡(luò)單元,socket隊列(例如,圖3中基于tap機(jī)制生成的sock0、sock1等),網(wǎng)卡后端驅(qū)動隊列(例如,圖3的vhost-tx0、vhost-tx1等),VM還可包括應(yīng)用(例如,圖3的app1、app2等),本發(fā)明實施例在此不作限制。宿主機(jī)和虛擬機(jī)中的虛擬網(wǎng)卡設(shè)備的建立方法,可以參考現(xiàn)有技術(shù)的內(nèi)容,本發(fā)明實施例在此不作贅述。其中,圖3中的設(shè)備選擇單元B和隊列選擇單元C相當(dāng)于步驟201中的第一選擇單元,slave設(shè)備(slave0、slave1等)和物理網(wǎng)卡隊列(tx0、tx1等)相當(dāng)于步驟201中的第一隊列或設(shè)備,隊列選擇單元A相當(dāng)于步驟201中的第二選擇單元,網(wǎng)卡前端驅(qū)動隊列(tx0、tx1等)相當(dāng)于步驟201中的第二隊列或設(shè)備。本發(fā)明的一個實施例如圖3所示,虛擬機(jī)的兩個應(yīng)用app1和app2向外界發(fā)送數(shù)據(jù)包。其中,網(wǎng)卡前端驅(qū)動隊列tx0、tx1等分別綁定到不同的CPU;網(wǎng)卡后端驅(qū)動隊列vhost-tx0、vhost-tx1等也分別綁定到不同的CPU,其實現(xiàn)可參考現(xiàn)有技術(shù),本發(fā)明實施例在此不再贅述。當(dāng)數(shù)據(jù)包發(fā)包流程進(jìn)入虛擬機(jī)的內(nèi)核態(tài)時,隊列選擇單元A可選擇合適的算法,確定虛擬機(jī)中的網(wǎng)卡前端驅(qū)動隊列中用于傳輸app1和app2的虛擬網(wǎng)卡設(shè)備。一種可能的方式,隊列選擇單元A可采用哈希(Hash)算法,根據(jù)數(shù)據(jù)包中的目標(biāo)MAC地址、本地MAC地址、目標(biāo)IP地址、本地IP地址、目標(biāo)Port地址、本地Port地址等的一個或多個參數(shù),獲得一個選擇參數(shù)(相當(dāng)于本發(fā)明步驟1中提到的選擇參數(shù))。如圖3所示,隊列選擇單元A可根據(jù)app1的數(shù)據(jù)包的相關(guān)參數(shù)信息(包括數(shù)據(jù)包中的目標(biāo)MAC地址、本地MAC地址、目標(biāo)IP地址、本地IP地址、目標(biāo)Port地址、本地Port地址等的一種)確定第一選擇參數(shù),進(jìn)而確定用于傳輸app1的數(shù)據(jù)包的虛擬網(wǎng)卡設(shè)備tx0;根據(jù)app2的數(shù)據(jù)包的相關(guān)參數(shù)信息確定第二選擇參數(shù),進(jìn)而確定用于傳輸app2的數(shù)據(jù)包的虛擬網(wǎng)卡設(shè)備tx3。宿主機(jī)的選擇策略管理單元可向設(shè)備選擇單元B和隊列選擇單元C發(fā)送復(fù)用指示信息,指示復(fù)用隊列選擇單元A已計算的選擇參數(shù)。設(shè)備選擇單元B和隊列選擇單元C可根據(jù)復(fù)用指示信息獲取隊列選擇單元A已計算的選擇參數(shù)。另外,在隊列選擇單元A計算選擇參數(shù),選擇網(wǎng)卡前端驅(qū)動隊列之前,選擇策略管理單元還可通過選擇策略代理單元向隊列選擇單元A發(fā)送選擇策略,該選擇策略可用于指示隊列選擇單元A選擇網(wǎng)卡前端驅(qū)動隊列時采用的策略,例如,指示隊列選擇單元A選擇某種算法計算選擇參數(shù)以選擇網(wǎng)卡前端驅(qū)動隊列,等等。隊列選擇單元A可根據(jù)該選擇策略確定選擇參數(shù)。設(shè)備選擇單元B和隊列選擇單元C可根據(jù)復(fù)用指示信息獲取隊列選擇單元A已計算的選擇參數(shù)可以參考現(xiàn)有技術(shù)的內(nèi)容,例如,在linux操作系統(tǒng)中,隊列選擇單元A可將選擇參數(shù)存儲到套接字緩沖區(qū)(SKB)包中,而在Windows操作系統(tǒng)中,隊列選擇單元A可將選擇參數(shù)存儲到網(wǎng)絡(luò)驅(qū)動接口規(guī)范補(bǔ)?。∟etworkDriverInterfaceSpecificationPATCH,NDIS_PATCH)包中;設(shè)備選擇單元B和隊列選擇單元C從SKB包或NDIS_PATCH包獲取相應(yīng)的選擇參數(shù)。設(shè)備選擇單元B和隊列選擇單元C獲取相應(yīng)的選擇參數(shù),可根據(jù)選擇參數(shù)選擇用于傳輸數(shù)據(jù)包的設(shè)備。例如,在圖3中,設(shè)備選擇單元B可根據(jù)第一選擇參數(shù)確定用于傳輸app1數(shù)據(jù)包的slave0,根據(jù)第二選擇參數(shù)確定用于傳輸app2數(shù)據(jù)包的slave1;隊列選擇單元C可根據(jù)第一選擇參數(shù)確定物理網(wǎng)卡隊列中用于傳輸app1數(shù)據(jù)包的tx0,根據(jù)第二選擇參數(shù)確定物理網(wǎng)卡隊列中用于傳輸app2數(shù)據(jù)包的tx3。設(shè)備選擇單元B和隊列選擇單元C通過復(fù)用選擇參數(shù),可減少設(shè)備選擇單元B和隊列選擇單元C的計算量,提高效率。同時,設(shè)備選擇單元B和隊列選擇單元C復(fù)用選擇參數(shù)也相當(dāng)于采用相同的隊列設(shè)備選擇算法,避免了某個隊列設(shè)備資源擁塞的問題。再者,對于綁定到CPU的隊列或設(shè)備而言,復(fù)用選擇參數(shù)可以一定程度上保證選擇使用的隊列或設(shè)備是綁定到同一個CPU上的,從而避免了數(shù)據(jù)包在不同CPU之間來回切換的問題。圖4是本發(fā)明實施例計算節(jié)點接收數(shù)據(jù)包的流程示意圖。圖4中,計算節(jié)點可包括硬件層、運(yùn)行在硬件層之上的宿主機(jī)Host、以及運(yùn)行在Host之上的虛擬機(jī)VM。其中,Host可包括隊列選擇單元C,隊列選擇單元C對應(yīng)的物理網(wǎng)卡隊列(例如,圖4的rx0、rx1等),隊列選擇單元D,隊列選擇單元D對應(yīng)的socket隊列或設(shè)備(例如,圖4中基于tap機(jī)制生成的sock0、sock1等),以及選擇策略管理單元。VM可包括選擇策略代理單元和隊列選擇單元A,隊列選擇單元A對應(yīng)的網(wǎng)卡前端驅(qū)動隊列(例如,圖4中的rx0、rx1等)。當(dāng)然,Host還可包括openvswitch/bridge等網(wǎng)絡(luò)單元,Slave設(shè)備(例如,圖4中聚合層聚合后的虛擬網(wǎng)卡的slave0、slave1等),網(wǎng)卡后端驅(qū)動隊列(例如,圖4的vhost-rx0、vhost-rx1等),VM還可包括應(yīng)用(例如,圖4的app1、app2等),本發(fā)明實施例在此不作限制。宿主機(jī)和虛擬機(jī)中的虛擬網(wǎng)卡設(shè)備的建立方法,可以參考現(xiàn)有技術(shù)的內(nèi)容,本發(fā)明實施例在此不作贅述。其中,圖4中的隊列選擇單元D和隊列選擇單元A相當(dāng)于步驟201中的第一選擇單元,socket隊列(sock0、sock1等)和網(wǎng)卡前端驅(qū)動隊列(rx0、rx1等)相當(dāng)于步驟201中的第一隊列或設(shè)備,隊列選擇單元C相當(dāng)于步驟201中的第二選擇單元,物理網(wǎng)卡隊列(rx0、rx1等)相當(dāng)于步驟201中的第二隊列或設(shè)備。本發(fā)明的一個實施例如圖4所示,外界向虛擬機(jī)的兩個應(yīng)用app1和app2發(fā)送數(shù)據(jù)包。當(dāng)數(shù)據(jù)包發(fā)包流程進(jìn)入宿主機(jī),隊列選擇單元C可選擇合適的算法,確定物理網(wǎng)卡隊列中用于傳輸app1和app2的網(wǎng)卡設(shè)備。一種可能的方式,隊列選擇單元C可采用哈希(Hash)算法,根據(jù)數(shù)據(jù)包中的目標(biāo)MAC地址、本地MAC地址、目標(biāo)IP地址、本地IP地址、目標(biāo)Port地址、本地Port地址等的一個或多個參數(shù),獲得一個選擇參數(shù)(相當(dāng)于本發(fā)明步驟1中提到的選擇參數(shù))。如圖4所示,隊列選擇單元C可根據(jù)發(fā)給app1的數(shù)據(jù)包的相關(guān)參數(shù)信息(包括數(shù)據(jù)包中的目標(biāo)MAC地址、本地MAC地址、目標(biāo)IP地址、本地IP地址、目標(biāo)Port地址、本地Port地址等的至少一種)確定第一選擇參數(shù),進(jìn)而確定用于傳輸發(fā)給app1的數(shù)據(jù)包的網(wǎng)卡設(shè)備rx0;根據(jù)發(fā)給app2的數(shù)據(jù)包的相關(guān)參數(shù)信息確定第二選擇參數(shù),進(jìn)而確定用于傳輸發(fā)給app2的數(shù)據(jù)包的網(wǎng)卡設(shè)備rx3。宿主機(jī)的選擇策略管理單元可向隊列選擇單元D和虛擬機(jī)的隊列選擇單元A發(fā)送復(fù)用指示信息,指示復(fù)用隊列選擇單元C已計算的選擇參數(shù)。宿主機(jī)的選擇策略管理單元在向虛擬機(jī)的隊列選擇單元A發(fā)送復(fù)用指示信息時,可通過虛擬機(jī)的選擇策略代理單元向虛擬機(jī)的隊列選擇單元A發(fā)送;宿主機(jī)的選擇策略管理單元在向宿主機(jī)的隊列選擇單元D發(fā)送復(fù)用指示信息時,可直接向宿主機(jī)的隊列選擇單元D發(fā)送。另外,在隊列選擇單元C計算選擇參數(shù),選擇物理網(wǎng)卡隊列之前,選擇策略管理單元還可直接向隊列選擇單元C發(fā)送選擇策略,該選擇策略可用于指示隊列選擇單元C選擇物理網(wǎng)卡隊列時采用的策略,例如,指示隊列選擇單元C選擇某種算法計算選擇參數(shù)以選擇物理網(wǎng)卡隊列,等等。隊列選擇單元C可根據(jù)該選擇策略確定選擇參數(shù)。設(shè)備選擇單元B和隊列選擇單元A可根據(jù)復(fù)用指示信息獲取隊列選擇單元C已計算的選擇參數(shù),獲取的方式與圖3的實施例中設(shè)備選擇單元B和隊列選擇單元C選擇參數(shù)的方式類似,本發(fā)明實施例在此不再贅述。隊列選擇單元D和隊列選擇單元A獲取相應(yīng)的選擇參數(shù),可根據(jù)選擇參數(shù)選擇用于傳輸數(shù)據(jù)包的設(shè)備。例如,在圖4中,隊列選擇單元D可根據(jù)第一選擇參數(shù)確定宿主機(jī)socket隊列用于傳輸app1數(shù)據(jù)包的sock0,根據(jù)第二選擇參數(shù)確定宿主機(jī)socket隊列中用于傳輸app2數(shù)據(jù)包的sock3;隊列選擇單元A可根據(jù)第一選擇參數(shù)確定虛擬機(jī)網(wǎng)卡前端驅(qū)動隊列用于傳輸app1數(shù)據(jù)包的rx0,根據(jù)第二選擇參數(shù)確定虛擬機(jī)網(wǎng)卡前端驅(qū)動隊列中用于傳輸app2數(shù)據(jù)包的rx3。隊列選擇單元D和隊列選擇單元A通過復(fù)用選擇參數(shù),可減少隊列選擇單元D和隊列選擇單元A的計算量,提高效率。同時,隊列選擇單元D和隊列選擇單元A復(fù)用選擇參數(shù)也相當(dāng)于采用相同的隊列設(shè)備選擇算法,避免了某個隊列設(shè)備資源擁塞的問題。再者,對于綁定到CPU的隊列或設(shè)備而言,復(fù)用選擇參數(shù)可以一定程度上保證選擇使用的隊列或設(shè)備是綁定到同一個CPU上的,從而避免了數(shù)據(jù)包在不同CPU之間來回切換的問題。圖5是本發(fā)明實施例計算節(jié)點500的結(jié)構(gòu)示意圖。計算節(jié)點500可包括:選擇策略管理單元501、第一選擇單元502、第一隊列或設(shè)備、第二選擇單元503和第二隊列或設(shè)備。第二選擇單元503用于選擇參數(shù)并確定第二隊列或設(shè)備中選擇使用的隊列或設(shè)備。其中,該選擇參數(shù)用于第二選擇單元503確定第二隊列或設(shè)備中選擇使用的隊列或設(shè)備。選擇策略管理單元501用于向第一選擇單元502發(fā)送復(fù)用指示信息。其中,該復(fù)用指示信息指示第一選擇單元502復(fù)用第二選擇單元503已計算的選擇參數(shù)。第一選擇單元502用于根據(jù)該復(fù)用指示信息獲取該選擇參數(shù),并根據(jù)該選擇參數(shù)確定第一隊列或設(shè)備中選擇使用的隊列或設(shè)備。本發(fā)明實施例中,計算節(jié)點500通過復(fù)用已計算的選擇參數(shù),能夠減少不必要的運(yùn)算,提高了系統(tǒng)的性能。另外,本發(fā)明實施例中,計算節(jié)點500通過復(fù)用已計算的選擇參數(shù),還可避免不同選擇單元因采用不同算法而導(dǎo)致的某一隊列或設(shè)備擁塞問題。另外,本發(fā)明實施例中,當(dāng)計算節(jié)點500的不同選擇單元下的多個隊列或設(shè)備綁定到不同的CPU時,計算節(jié)點500通過復(fù)用已計算的選擇參數(shù),還可避免不同選擇單元因采用不同算法而導(dǎo)致數(shù)據(jù)在不同CPU間的切換,即避免不同選擇單元因采用不同算法而導(dǎo)致cache的乒乓效應(yīng)。本發(fā)明實施例中,計算節(jié)點500可包括:硬件層、運(yùn)行在該硬件層之上的宿主機(jī)Host、以及運(yùn)行在該Host之上的虛擬機(jī)VM。其中,選擇策略管理單元501、第一選擇單元502和第二選擇單元503第二隊列或設(shè)備,可以部署在計算節(jié)點500的Host或VM上。Host上的單元向VM上的單元發(fā)送信息,或者VM上的單元向Host上的單元發(fā)送信息,可參考現(xiàn)有技術(shù)實現(xiàn),本發(fā)明實施例在此不再贅述。另外,本發(fā)明實施例中提到的選擇單元,都是指用于對多個隊列或設(shè)備進(jìn)行選擇的單元。本發(fā)明的一個實施例,第一選擇單元502設(shè)置在計算節(jié)點500的虛擬機(jī)VM上,選擇策略管理單元501和第二選擇單元503設(shè)置在該計算節(jié)點的宿主機(jī)Host上。進(jìn)一步地,選擇策略管理單元501具體用于通過設(shè)置在該VM上的選擇策略代理單元向第一選擇單元502發(fā)送復(fù)用指示信息。進(jìn)一步地,當(dāng)計算節(jié)點500用于接收數(shù)據(jù)包時,第二選擇單元503為該數(shù)據(jù)包輸入時經(jīng)過的選擇單元中在第一選擇單元502之前的選擇單元。優(yōu)選地,當(dāng)計算節(jié)點500用于接收數(shù)據(jù)包時,第二選擇單元503為該數(shù)據(jù)包輸入時經(jīng)過的設(shè)置在該Host的第一個選擇單元。本發(fā)明的另一實施例,選擇策略管理單元501、第一選擇單元502和第二選擇單元503設(shè)置在計算節(jié)點500的Host上。進(jìn)一步地,當(dāng)計算節(jié)點500用于接收數(shù)據(jù)包時,第二選擇單元503為該數(shù)據(jù)包輸入時經(jīng)過的選擇單元中在第一選擇單元502之前的選擇單元。優(yōu)選地,當(dāng)計算節(jié)點500用于接收數(shù)據(jù)包時,第二選擇單元503為該數(shù)據(jù)包輸入時經(jīng)過的設(shè)置在該Host的第一個選擇單元。本發(fā)明的再一實施例,選擇策略管理單元501和第一選擇單元502設(shè)置在計算節(jié)點500的Host上,第二選擇單元503設(shè)置在該計算節(jié)點的VM上。進(jìn)一步地,當(dāng)計算節(jié)點500用于從該VM往計算節(jié)點500之外發(fā)送數(shù)據(jù)包時,第二選擇單元503為該數(shù)據(jù)包輸入時經(jīng)過的選擇單元中在第一選擇單元502之前的選擇單元。優(yōu)選地,當(dāng)計算節(jié)點500用于從該VM往計算節(jié)點500之外發(fā)送數(shù)據(jù)包時,第二選擇單元503為該數(shù)據(jù)包輸出時經(jīng)過的設(shè)置在該VM上的第一個選擇單元??蛇x地,當(dāng)計算節(jié)點500用于接收數(shù)據(jù)包時,或者當(dāng)計算節(jié)點500用于從該VM往計算節(jié)點500之外發(fā)送數(shù)據(jù)包時,該選擇參數(shù)由以下至少一個參數(shù)確定:該數(shù)據(jù)包的目標(biāo)MAC地址、本地MAC地址、目標(biāo)IP地址、本地IP地址、目標(biāo)Port地址、本地Port地址??蛇x地,選擇策略管理單元501還用于向第二選擇單元503發(fā)送選擇策略。第二選擇單元503還用于根據(jù)該選擇策略確定該選擇參數(shù)。進(jìn)一步地,選擇策略管理單元501設(shè)置在計算節(jié)點500的Host上,第二選擇單元503設(shè)置在該計算節(jié)點的VM上時,選擇策略管理單元501向第二選擇單元503發(fā)送選擇策略可包括:選擇策略管理單元501通過設(shè)置在計算節(jié)點500的VM上的選擇策略代理單元向第二選擇單元503發(fā)送選擇策略。另外,計算節(jié)點500還可執(zhí)行圖2至圖4的實施例中所示的方法,本發(fā)明實施例在此不再贅述。圖6是本發(fā)明實施例計算節(jié)點600的結(jié)構(gòu)示意圖。計算節(jié)點600可包括:選擇策略管理處理器603、第一選擇處理器601、第二選擇處理器602和存儲器604。存儲器604可以包括只讀存儲器和隨機(jī)存取存儲器,并向第一選擇處理器601、第二選擇處理器602和選擇策略管理處理器603提供指令和數(shù)據(jù)。存儲器604的一部分還可以包括非易失性隨機(jī)存取存儲器(NVRAM)。存儲器604存儲了如下的元素,可執(zhí)行模塊或者數(shù)據(jù)結(jié)構(gòu),或者它們的子集,或者它們的擴(kuò)展集:操作指令:包括各種操作指令,用于實現(xiàn)各種操作。操作系統(tǒng):包括各種系統(tǒng)程序,用于實現(xiàn)各種基礎(chǔ)業(yè)務(wù)以及處理基于硬件的任務(wù)。在本發(fā)明實施例中,第一選擇處理器601、第二選擇處理器602和選擇策略管理處理器603通過調(diào)用存儲器604存儲的操作指令(該操作指令可存儲在操作系統(tǒng)中),執(zhí)行如下操作:第二選擇處理器602確定選擇參數(shù)并確定第二隊列或設(shè)備中選擇使用的隊列或設(shè)備,其中,該選擇參數(shù)用于第二選擇處理器602確定第二隊列或設(shè)備中選擇使用的隊列或設(shè)備;選擇策略管理處理器603向第一選擇處理器601發(fā)送復(fù)用指示信息,其中,該復(fù)用指示信息指示第一選擇處理器601復(fù)用第二選擇處理器602已計算的選擇參數(shù);第一選擇處理器601用于根據(jù)該復(fù)用指示信息獲取該選擇參數(shù),并根據(jù)該選擇參數(shù)確定第一隊列或設(shè)備中選擇使用的隊列或設(shè)備。本發(fā)明實施例中,計算節(jié)點600通過復(fù)用已計算的選擇參數(shù),能夠減少不必要的運(yùn)算,提高了系統(tǒng)的性能。另外,本發(fā)明實施例中,計算節(jié)點600通過復(fù)用已計算的選擇參數(shù),還可避免不同選擇單元因采用不同算法而導(dǎo)致的某一隊列或設(shè)備擁塞問題。第一選擇處理器601、第二選擇處理器602和選擇策略管理處理器603控制計算節(jié)點600的操作,第一選擇處理器601、第二選擇處理器602和選擇策略管理處理器603還可以稱為CPU(CentralProcessingUnit,中央處理單元)。存儲器604可以包括只讀存儲器和隨機(jī)存取存儲器,并向CPU提供指令和數(shù)據(jù)。存儲器604的一部分還可以包括非易失性隨機(jī)存取存儲器(NVRAM)。具體的應(yīng)用中,用戶設(shè)備900的各個組件通過總線系統(tǒng)605耦合在一起,其中總線系統(tǒng)605除包括數(shù)據(jù)總線之外,還可以包括電源總線、控制總線和狀態(tài)信號總線等。但是為了清楚說明起見,在圖中將各種總線都標(biāo)為總線系統(tǒng)605。上述本發(fā)明實施例揭示的方法可以應(yīng)用于第一選擇處理器601、第二選擇處理器602和選擇策略管理處理器603中,或者由第一選擇處理器601、第二選擇處理器602和選擇策略管理處理器603實現(xiàn)。第一選擇處理器601、第二選擇處理器602和選擇策略管理處理器603可能是一種集成電路芯片,具有信號的處理能力。在實現(xiàn)過程中,上述方法的各步驟可以通過第一選擇處理器601、第二選擇處理器602和選擇策略管理處理器603中的硬件的集成邏輯電路或者軟件形式的指令完成。上述的第一選擇處理器601、第二選擇處理器602和選擇策略管理處理器603可以是通用處理器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)成可編程門陣列(FPGA)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫崿F(xiàn)或者執(zhí)行本發(fā)明實施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。結(jié)合本發(fā)明實施例所公開的方法的步驟可以直接體現(xiàn)為硬件譯碼處理器執(zhí)行完成,或者用譯碼處理器中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機(jī)存儲器,閃存、只讀存儲器,可編程只讀存儲器或者電可擦寫可編程存儲器、寄存器等本領(lǐng)域成熟的存儲介質(zhì)中。該存儲介質(zhì)位于存儲器604,第一選擇處理器601、第二選擇處理器602和選擇策略管理處理器603讀取存儲器604中的信息,結(jié)合其硬件完成上述方法的步驟。另外,第一選擇處理器601、第二選擇處理器602和選擇策略管理處理器603在物理實現(xiàn)上各自可以是一個實現(xiàn)其功能的CPU,也可以是計算節(jié)點600的CPU中用于實現(xiàn)第一選擇處理器601、第二選擇處理器602和選擇策略管理處理器603各自功能的部分CPU資源。本發(fā)明實施例中,計算節(jié)點可包括:硬件層、運(yùn)行在該硬件層之上的宿主機(jī)Host、以及運(yùn)行在該Host之上的虛擬機(jī)VM。其中,第一選擇處理器601、第二選擇處理器602和選擇策略管理處理器603可以是應(yīng)用于計算節(jié)點的Host或VM上的CPU資源。應(yīng)用于Host上的處理器向應(yīng)用于VM上的處理器發(fā)送信息,或者應(yīng)用于VM上的處理器向應(yīng)用于Host上的處理器發(fā)送信息,可參考現(xiàn)有技術(shù)實現(xiàn),本發(fā)明實施例在此不再贅述。另外,本發(fā)明實施例中提到的選擇處理器,都是指用于對多個隊列或設(shè)備進(jìn)行選擇的處理器。本發(fā)明的一個實施例,第一選擇處理器601是應(yīng)用于計算節(jié)點600的虛擬機(jī)VM上的CPU資源,選擇策略管理處理器603和第二選擇處理器602是應(yīng)用于計算節(jié)點600的宿主機(jī)Host的CPU資源。進(jìn)一步地,在用于向第一選擇處理器601發(fā)送復(fù)用指示信息,選擇策略管理處理器603具體用于通過選擇策略代理處理器向第一選擇處理器601發(fā)送復(fù)用指示信息,其中選擇策略代理處理器是應(yīng)用于該VM上的CPU資源,用于接收第一選擇處理器601發(fā)送復(fù)用指示信息并向第一選擇處理器601轉(zhuǎn)發(fā)該復(fù)用指示信息。進(jìn)一步地,當(dāng)計算節(jié)點600用于接收數(shù)據(jù)包時,第二選擇處理器602為該數(shù)據(jù)包輸入時經(jīng)過的選擇處理器中在第一選擇處理器601之前的選擇處理器。優(yōu)選地,當(dāng)計算節(jié)點600用于接收數(shù)據(jù)包時,第二選擇處理器602為該數(shù)據(jù)包輸入時經(jīng)過的設(shè)置在該Host的第一個選擇處理器。本發(fā)明的另一實施例,選擇策略管理處理器603、第一選擇處理器601和第二選擇處理器602是應(yīng)用于計算節(jié)點600的Host上的CPU資源。進(jìn)一步地,當(dāng)計算節(jié)點600用于接收數(shù)據(jù)包時,第二選擇處理器602為該數(shù)據(jù)包輸入時經(jīng)過的選擇處理器中在第一選擇處理器601之前的選擇處理器。優(yōu)選地,當(dāng)計算節(jié)點600用于接收數(shù)據(jù)包時,第二選擇處理器602為該數(shù)據(jù)包輸入時經(jīng)過的設(shè)置在該Host的第一個選擇處理器。本發(fā)明的再一實施例,選擇策略管理處理器603和第一選擇處理器601是應(yīng)用于計算節(jié)點600的Host上的CPU資源,第二選擇處理器602是應(yīng)用于計算節(jié)點600的VM上的CPU資源。進(jìn)一步地,當(dāng)計算節(jié)點600用于從該VM往計算節(jié)點600之外發(fā)送數(shù)據(jù)包時,第二選擇處理器602為該數(shù)據(jù)包輸入時經(jīng)過的選擇處理器中在第一選擇處理器601之前的選擇處理器。優(yōu)選地,當(dāng)計算節(jié)點600用于從該VM往計算節(jié)點600之外發(fā)送數(shù)據(jù)包時,第二選擇處理器602為該數(shù)據(jù)包輸出時經(jīng)過的設(shè)置在該VM上的第一個選擇處理器??蛇x地,當(dāng)計算節(jié)點600用于接收數(shù)據(jù)包時,或者當(dāng)計算節(jié)點600用于從該VM往計算節(jié)點600之外發(fā)送數(shù)據(jù)包時,該選擇參數(shù)由以下至少一個參數(shù)確定:該數(shù)據(jù)包的目標(biāo)MAC地址、本地MAC地址、目標(biāo)IP地址、本地IP地址、目標(biāo)Port地址、本地Port地址??蛇x地,選擇策略管理處理器603還用于向第二選擇處理器602發(fā)送選擇策略。第二選擇處理器602還用于根據(jù)該選擇策略確定該選擇參數(shù)。進(jìn)一步地,選擇策略管理處理器603是應(yīng)用于計算節(jié)點600的Host上的CPU資源,第二選擇處理器602是應(yīng)用于該計算節(jié)點的VM上的CPU資源時,選擇策略管理處理器603向第二選擇處理器602發(fā)送選擇策略可包括:選擇策略管理處理器603通過選擇策略代理處理器向第二選擇處理器602發(fā)送選擇策略。其中選擇策略代理處理器是應(yīng)用于該VM上的CPU資源,還可用于接收第一選擇處理器601發(fā)送選擇策略并向第一選擇處理器601轉(zhuǎn)發(fā)該選擇策略。另外,計算節(jié)點600還可執(zhí)行圖2至圖4的實施例中所示的方法,本發(fā)明實施例在此不再贅述。本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機(jī)軟件和電子硬件的結(jié)合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應(yīng)過程,在此不再贅述。在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。所述功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機(jī)存取存儲器(RAM,RandomAccessMemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。