WQE,將接收到的數(shù)據(jù)保存到WQE記錄的數(shù)據(jù)緩存區(qū)中;
[0046]第五步、當(dāng)發(fā)送端的適配器處理好一個(gè)SQ的WQE時(shí),生成一個(gè)完成隊(duì)列元素(Complet1n Queue Element,以下簡稱CQE),用于指示一個(gè)發(fā)送的完成,并將該CQE插入到發(fā)送端的CQ中;當(dāng)接收端接收到一個(gè)數(shù)據(jù)包時(shí),生成一個(gè)CQE,用于指示一個(gè)接收的完成,并將該CQE插入到接收端的CQ中。
[0047]通過上述五個(gè)步驟即可實(shí)現(xiàn)在兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)中進(jìn)行通信,在網(wǎng)絡(luò)節(jié)點(diǎn)中SQ和RQ是成對(duì)出現(xiàn)的,即QP,網(wǎng)絡(luò)節(jié)點(diǎn)可以支持多個(gè)QP的建立,但是網(wǎng)絡(luò)節(jié)點(diǎn)的適配器在一個(gè)處理周期內(nèi)只能處理一個(gè)QP,因此對(duì)于網(wǎng)絡(luò)節(jié)點(diǎn)的適配器來講確定當(dāng)前處理的QP并保證數(shù)據(jù)鏈路的暢通是很重要的。
[0048]圖1為本發(fā)明通信隊(duì)列處理方法實(shí)施例一的流程圖,如圖1所示,本實(shí)施例的方法可以包括:
[0049]步驟101、根據(jù)預(yù)設(shè)輪詢規(guī)則,確定當(dāng)前處理周期需要處理的交換機(jī)端口 ;
[0050]本實(shí)施例的執(zhí)行主體可以是通信隊(duì)列處理器,其作用是確定當(dāng)前處理周期需要處理的QP。
[0051]本實(shí)施例中,通信隊(duì)列處理器根據(jù)預(yù)設(shè)輪詢規(guī)則,確定當(dāng)前處理周期需要處理的交換機(jī)端口,具體地,預(yù)設(shè)輪詢規(guī)則可以認(rèn)為是一種輪流處理的機(jī)制,例如和通信隊(duì)列處理器連接的交換機(jī)包括A、B、C三個(gè)端口,這三個(gè)端口的信息已經(jīng)保存在通信隊(duì)列處理器中,通信隊(duì)列處理器可以按照每個(gè)處理周期處理一個(gè)端口的規(guī)則,輪流對(duì)三個(gè)端口進(jìn)行處理,例如可以是在第一個(gè)周期內(nèi)通信隊(duì)列處理器確定端口 A為當(dāng)前要處理的交換機(jī)端口,在第二個(gè)周期內(nèi)通信隊(duì)列處理器確定端口 B為當(dāng)前要處理的交換機(jī)端口,在第三個(gè)周期內(nèi)通信隊(duì)列處理器確定端口 C為當(dāng)前要處理的交換機(jī)端口,從第四個(gè)周期開始,通信隊(duì)列處理器又從端口 A開始輪流處理,每三個(gè)周期即可將交換機(jī)的三個(gè)端口遍歷一遍。由此可見,只要確定了當(dāng)前的周期,根據(jù)預(yù)設(shè)輪詢規(guī)則,通信隊(duì)列處理器即可確定出當(dāng)前處理周期需要處理的交換機(jī)端口。
[0052]步驟102、獲取所述交換機(jī)端口對(duì)應(yīng)的全部待處理的QP的信息;
[0053]本實(shí)施例中,需要處理的QP都有一個(gè)對(duì)端地址,很多情況下會(huì)出現(xiàn)多個(gè)QP對(duì)應(yīng)同一個(gè)對(duì)端網(wǎng)絡(luò)節(jié)點(diǎn),從而導(dǎo)致同一個(gè)交換機(jī)端口對(duì)應(yīng)了多個(gè)待處理的QP,因此通信隊(duì)列處理器在確定了當(dāng)前處理周期需要處理的交換機(jī)端口后,獲取該交換機(jī)端口對(duì)應(yīng)的全部待處理的QP的信息。
[0054]步驟103、采用加權(quán)循環(huán)調(diào)度算法,從所述全部待處理QP中確定當(dāng)前處理周期需要處理的QP,并對(duì)所述需要處理的QP進(jìn)行處理。
[0055]加權(quán)循環(huán)調(diào)度算法(Weighted Round Robin,以下簡稱WRR)是在輪詢的基礎(chǔ)上加上權(quán)重的優(yōu)先級(jí)算法,例如有三個(gè)待處理QP,QPl, QP2,QP3,它們的權(quán)重分別為1,2,3,說明QP3的優(yōu)先級(jí)最高,QP2的優(yōu)先級(jí)次之,QPl的優(yōu)先級(jí)最低,通信隊(duì)列處理器每六個(gè)處理周期將這三個(gè)待處理QP輪詢一遍,其中QPI,QP2,QP3分別占用1,2,3個(gè)處理周期。
[0056]本實(shí)施例中,通信隊(duì)列處理器采用WRR算法,從當(dāng)前處理周期需要處理的交換機(jī)端口對(duì)應(yīng)的全部待處理QP中確定當(dāng)前處理周期需要處理的QP,并對(duì)所述需要處理的QP進(jìn)行處理,即將當(dāng)前處理周期確定出來的需要處理的QP通過交換機(jī)發(fā)往對(duì)端的網(wǎng)絡(luò)節(jié)點(diǎn)。
[0057]現(xiàn)有技術(shù)中,適配器只考慮了 QP的優(yōu)先級(jí),即每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)在當(dāng)前處理周期處理的QP都是本節(jié)點(diǎn)當(dāng)前待處理QP中優(yōu)先級(jí)最高的那一個(gè),但是如果多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)處理的QP都需要使用到同樣的路徑,就會(huì)在交換機(jī)的出口鏈路上造成擁堵。
[0058]本實(shí)施例,通過預(yù)設(shè)輪詢規(guī)則確定當(dāng)前處理周期需要處理的交換機(jī)端口,然后從該端口對(duì)應(yīng)的全部待處理QP中根據(jù)WRR算法確定當(dāng)前需要處理的QP,并對(duì)該QP進(jìn)行處理,實(shí)現(xiàn)QP的優(yōu)先級(jí)考量以及交換機(jī)端口處理的結(jié)合,解決QP被發(fā)送出網(wǎng)絡(luò)節(jié)點(diǎn)后在出口鏈路上造成擁堵從而影響整體服務(wù)質(zhì)量的問題。
[0059]圖2為本發(fā)明通信隊(duì)列處理方法實(shí)施例二的流程圖,在圖1所示的方法實(shí)施例的步驟101之前,還包括通信隊(duì)列處理器將初始建立的QP加入對(duì)應(yīng)的交換機(jī)端口的待處理隊(duì)列中,具體的實(shí)現(xiàn)方法可以包括:
[0060]步驟201、接收并保存對(duì)接交換機(jī)發(fā)送的路由信息,所述路由信息包括交換機(jī)端口與目的網(wǎng)絡(luò)節(jié)點(diǎn)的映射關(guān)系;
[0061]本實(shí)施例中,通信隊(duì)列處理器接收并保存對(duì)接交換機(jī)發(fā)送的路由信息,該路由信息是由交換機(jī)進(jìn)行更新維護(hù)的,一旦網(wǎng)絡(luò)拓?fù)浒l(fā)生變化,路由信息的內(nèi)容也隨之發(fā)生變化,例如交換機(jī)有三個(gè)端口 A、B、C,分別對(duì)應(yīng)于網(wǎng)絡(luò)節(jié)點(diǎn)1、2、3,如果網(wǎng)絡(luò)節(jié)點(diǎn)2被取消,那么路由信息則會(huì)更新成端口 A、C分別對(duì)應(yīng)網(wǎng)絡(luò)節(jié)點(diǎn)1、3。交換機(jī)可以周期性地向通信隊(duì)列處理器發(fā)送路由信息,也可以以更新為觸發(fā)向通信隊(duì)列處理器發(fā)送路由信息,交換機(jī)和通信隊(duì)列處理器是一一對(duì)應(yīng)的。通信隊(duì)列處理器將接收到的路由信息保存在本地,以便后續(xù)使用。
[0062]步驟202、根據(jù)所述路由信息,以及所述初始建立的QP的上下文中預(yù)存的目的網(wǎng)絡(luò)節(jié)點(diǎn)信息,確定所述初始建立的QP對(duì)應(yīng)的交換機(jī)端口 ;
[0063]本實(shí)施例中,所有初始建立的待處理的QP的上下文中都已經(jīng)保存了該QP要被發(fā)往的目的網(wǎng)絡(luò)節(jié)點(diǎn)信息,例如新建立了三個(gè)QP需要被處理,QPl要被發(fā)送到網(wǎng)絡(luò)節(jié)點(diǎn)1,QP2要被發(fā)送到網(wǎng)絡(luò)節(jié)點(diǎn)2,QP3要被發(fā)送到網(wǎng)絡(luò)節(jié)點(diǎn)3,通信隊(duì)列處理器根據(jù)上述QP和目的網(wǎng)絡(luò)節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系,再根據(jù)從對(duì)接的交換機(jī)獲取的路由信息,即可獲取到QP和交換機(jī)端口之間的對(duì)應(yīng)關(guān)系,例如QPl和端口 A對(duì)應(yīng),QP2和端口 B對(duì)應(yīng),QP3和端口 C對(duì)應(yīng),通信隊(duì)列處理器可以以映射表的形式將QP與交換機(jī)端口的對(duì)應(yīng)關(guān)系保存起來。
[0064]步驟203、將所述初始建立的QP加入所述交換機(jī)端口的待處理隊(duì)列中。
[0065]本實(shí)施例中,通信隊(duì)列處理器已經(jīng)獲取了初始建立的QP和交換機(jī)端口的對(duì)應(yīng)關(guān)系,就將這些QP加入到其對(duì)應(yīng)的交換機(jī)端口的待處理隊(duì)列中,例如,端口 A的待處理對(duì)中有QP1,端口 B的待處理對(duì)中有QP2,端口 C的待處理對(duì)中有QP3,每個(gè)交換機(jī)端口對(duì)應(yīng)的待處理的QP可以有一個(gè)以上,例如,有多個(gè)QP需要被發(fā)送給網(wǎng)絡(luò)節(jié)點(diǎn)1,那么在端口 A的待處理隊(duì)列中就會(huì)有多個(gè)QP。
[0066]本實(shí)施例,通過通信隊(duì)列處理器接受并保存對(duì)接交換機(jī)中的路由信息,并根據(jù)QP的的目的網(wǎng)絡(luò)節(jié)點(diǎn)信息,將初始建立的QP和交換機(jī)端口聯(lián)系起來,實(shí)現(xiàn)QP以掛隊(duì)列的方式與交換機(jī)端口對(duì)應(yīng),解決QP被發(fā)送出網(wǎng)絡(luò)節(jié)點(diǎn)后在出口鏈路上造成擁堵從而影響整體服務(wù)質(zhì)量的問題。
[0067]圖3為本發(fā)明通信隊(duì)列處理裝置實(shí)施例一的結(jié)構(gòu)示意圖,如圖3所示,本實(shí)施例的裝置可以包括:端口確定模塊11、獲取模塊12以及仲裁模塊13,其中,端口確定模塊11,用于根據(jù)預(yù)設(shè)輪詢規(guī)則,確定當(dāng)前處理周期需要處理的交換機(jī)端口 ;獲取模塊12,用于獲取所述交換機(jī)端口對(duì)應(yīng)的全部待處理的隊(duì)列對(duì)QP的信息;仲裁模塊13,用于采用WRR算法,從所述全部待處理QP中確定當(dāng)前處理周期需要處理的QP,并對(duì)所述需要處理的QP進(jìn)行處理。
[0068]本實(shí)施例的裝置,可以用于執(zhí)行圖1所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
[0069]圖4為本發(fā)明通信隊(duì)列處理裝置實(shí)施例二的結(jié)構(gòu)示意圖,如圖4所示,本實(shí)施例的裝置在圖3所示裝置結(jié)構(gòu)的基礎(chǔ)上,進(jìn)一步地,還可以包括:隊(duì)列增加模塊21,該隊(duì)列增加模塊21用于將初始建立的QP加入對(duì)應(yīng)的交換機(jī)端口的待處理隊(duì)列中。
[0070]進(jìn)一步的,圖5為本發(fā)明通信隊(duì)列處理裝置實(shí)施例三的結(jié)構(gòu)示意圖,如圖5所示,本實(shí)施例的裝置在圖4所示裝置結(jié)構(gòu)的基礎(chǔ)上,進(jìn)一步地,隊(duì)列增加模塊21可以包括:接收單元211、獲取單元212以及增加單元213,其中,接收單元211,用于接收并保存對(duì)接交換機(jī)發(fā)送的路由信息,所述路由信息包括交換機(jī)端口與目的網(wǎng)絡(luò)節(jié)點(diǎn)的映射關(guān)系;獲取單元212,用于根據(jù)所述路由信息,以及所述初始建立的QP的上下文中預(yù)存的目的網(wǎng)絡(luò)節(jié)點(diǎn)信息,獲取所述初始建立的QP對(duì)應(yīng)的交換機(jī)端口 ;