報(bào)文數(shù)據(jù)外的多個(gè)部分的報(bào)文數(shù)據(jù)的緩存空間對(duì)應(yīng)的指針。
[0116]比如:通過(guò)指針是:0、3、5、6的指針對(duì)應(yīng)的4個(gè)緩存空間來(lái)對(duì)報(bào)文數(shù)據(jù)進(jìn)行緩存,指針O頭指針,而指針3、5、6就是第二類緩存空間對(duì)應(yīng)的指針,指針3、5、6就會(huì)預(yù)先存儲(chǔ)在頭指針對(duì)應(yīng)的第一類緩存空間中。那么在讀取報(bào)文之前,可以在報(bào)文頭指針對(duì)應(yīng)的第一類緩存空間中就可以獲取第二類緩存空間對(duì)應(yīng)的指針3、5、6。
[0117]步驟310、根據(jù)多個(gè)指針,交換機(jī)獲取多個(gè)第二類緩存空間。
[0118]具體地,根據(jù)多個(gè)第二類緩存空間對(duì)應(yīng)的多個(gè)指針,交換機(jī)從緩存空間鏈表中找到第二類緩存空間對(duì)應(yīng)的多個(gè)指針,根據(jù)指針找到分別緩存報(bào)文的第一部分報(bào)文數(shù)據(jù)外的多個(gè)部分的報(bào)文數(shù)據(jù)的第二類緩存空間。
[0119]步驟311、從多個(gè)第二類緩存空間中,交換機(jī)并行讀取第一部分報(bào)文數(shù)據(jù)外的多個(gè)部分的報(bào)文數(shù)據(jù)。
[0120]具體地,交換機(jī)按照?qǐng)?bào)文的緩存空間鏈表中的第二類緩存空間對(duì)應(yīng)的指針順序并行讀取第二類緩存空間中的報(bào)文數(shù)據(jù);而且在讀取完某一個(gè)指針對(duì)應(yīng)的緩存空間中緩存的報(bào)文數(shù)據(jù)后,間隔很短的時(shí)間周期就可以立刻并行讀取下一個(gè)指針對(duì)應(yīng)的緩存空間中緩存的報(bào)文數(shù)據(jù),減小了網(wǎng)絡(luò)中交換機(jī)轉(zhuǎn)發(fā)報(bào)文的時(shí)延。
[0121]比如:通過(guò)指針:0、3、5、6對(duì)應(yīng)的4個(gè)緩存空間來(lái)對(duì)報(bào)文數(shù)據(jù)進(jìn)行緩存,那么交換機(jī)分別找到指針0、3、5、6對(duì)應(yīng)的緩存空間,然后按照緩存報(bào)文的順序讀取指針對(duì)應(yīng)的緩存空間中緩存的報(bào)文數(shù)據(jù),完成緩存在RAM中的報(bào)文的讀取操作。步驟312、讀取到完整的報(bào)文數(shù)據(jù)后,交換機(jī)轉(zhuǎn)發(fā)報(bào)文。
[0122]具體地,交換機(jī)在讀取完報(bào)文的任意部分?jǐn)?shù)據(jù)后,都將讀取的該部分報(bào)文數(shù)據(jù)進(jìn)行緩存,然后立刻就可以讀取另一部分的報(bào)文數(shù)據(jù),直到讀取報(bào)文的完整數(shù)據(jù)。在預(yù)讀取到完整的報(bào)文數(shù)據(jù)后,交換機(jī)將讀取的完整的報(bào)文通過(guò)預(yù)先確定的接口轉(zhuǎn)發(fā)到用戶接入網(wǎng)絡(luò)的終端對(duì)應(yīng)的網(wǎng)絡(luò)節(jié)點(diǎn)中。
[0123]基于上述描述,本發(fā)明實(shí)施例提供的報(bào)文轉(zhuǎn)發(fā)方法,通過(guò)從報(bào)文的緩存空間鏈表中獲取報(bào)文的頭指針,報(bào)文的頭指針中記錄有緩存報(bào)文其余部分的第二類緩存空間對(duì)應(yīng)指針,可以使緩存到RAM中的報(bào)文被轉(zhuǎn)發(fā)時(shí),可以僅通過(guò)讀取報(bào)文的頭指針就可以獲取報(bào)文的頭指針對(duì)應(yīng)的第一類緩存空間和第一類緩存空間中記錄的多個(gè)指針對(duì)應(yīng)的指針?biāo)鶎?duì)應(yīng)的分別緩存報(bào)文的第一部分報(bào)文數(shù)據(jù)外的多個(gè)部分的報(bào)文數(shù)據(jù)的第二類緩存空間,從而并行讀取完整的報(bào)文數(shù)據(jù),在讀取到完整的報(bào)文數(shù)據(jù)后,完成報(bào)文的轉(zhuǎn)發(fā),避免了傳統(tǒng)的報(bào)文緩存空間鏈表讀取報(bào)文時(shí)延較長(zhǎng)的缺陷,可以使用價(jià)格低廉且存儲(chǔ)空間大的DDR SDRAM等RAM芯片對(duì)報(bào)文進(jìn)行緩存并轉(zhuǎn)發(fā),無(wú)需使用價(jià)格昂貴且存儲(chǔ)空間小的QDRSDRAM對(duì)緩存在RAM中的報(bào)文進(jìn)行轉(zhuǎn)發(fā),降低了對(duì)緩存在RAM中的隊(duì)列進(jìn)行管理的成本,并提高了鏈表的存儲(chǔ)空間。
[0124]實(shí)施例三
[0125]本發(fā)明實(shí)施例提供了一種報(bào)文轉(zhuǎn)發(fā)裝置,參見(jiàn)圖5,報(bào)文轉(zhuǎn)發(fā)裝置包括:第一獲取模塊400、第二獲取模塊401、第三獲取模塊402、第四獲取模塊403、讀取模塊404和轉(zhuǎn)發(fā)模塊 405。
[0126]具體地,第一獲取模塊400,用于獲取對(duì)報(bào)文的轉(zhuǎn)發(fā)指令,報(bào)文有緩存空間鏈表,緩存空間鏈表包括報(bào)文的所有指針,報(bào)文的所有指針中的頭指針對(duì)應(yīng)的第一類緩存空間中記錄有報(bào)文的第一部分報(bào)文數(shù)據(jù)和多個(gè)第二類緩存空間對(duì)應(yīng)的多個(gè)指針,多個(gè)第二類緩存空間分別緩存報(bào)文的第一部分報(bào)文數(shù)據(jù)外的多個(gè)部分的報(bào)文數(shù)據(jù);第二獲取模塊401和第一獲取模塊400相連接,用于從報(bào)文的緩存空間鏈表中獲取報(bào)文的頭指針;第三獲取模塊402和第二獲取模塊401相連接,用于從報(bào)文的頭指針對(duì)應(yīng)的第一類緩存空間中,讀取報(bào)文的第一部分報(bào)文數(shù)據(jù),并獲取多個(gè)指針;第四獲取模塊403和第三獲取模塊402相連接,用于根據(jù)多個(gè)指針,獲取多個(gè)第二類緩存空間;讀取模塊404和第四獲取模塊403相連接,用于從多個(gè)第二類緩存空間中,并行讀取報(bào)文的第一部分報(bào)文數(shù)據(jù)外的多個(gè)部分的報(bào)文數(shù)據(jù);轉(zhuǎn)發(fā)模塊405和讀取模塊404相連接,用于讀取到完整的報(bào)文數(shù)據(jù)后,轉(zhuǎn)發(fā)報(bào)文。
[0127]基于上述描述,本發(fā)明實(shí)施例提供的報(bào)文轉(zhuǎn)發(fā)裝置,通過(guò)從報(bào)文的緩存空間鏈表中獲取報(bào)文的頭指針,報(bào)文的頭指針中記錄有緩存報(bào)文其余部分的第二類緩存空間對(duì)應(yīng)指針,可以使緩存到RAM中的報(bào)文被轉(zhuǎn)發(fā)時(shí),可以僅通過(guò)讀取報(bào)文的頭指針就可以獲取報(bào)文的頭指針對(duì)應(yīng)的第一類緩存空間和第一類緩存空間中記錄的多個(gè)指針對(duì)應(yīng)的指針?biāo)鶎?duì)應(yīng)的分別緩存報(bào)文的第一部分報(bào)文數(shù)據(jù)外的多個(gè)部分的報(bào)文數(shù)據(jù)的第二類緩存空間,從而并行讀取完整的報(bào)文數(shù)據(jù),在讀取到完整的報(bào)文數(shù)據(jù)后,完成報(bào)文的轉(zhuǎn)發(fā),避免了傳統(tǒng)的報(bào)文緩存空間鏈表讀取報(bào)文時(shí)延較長(zhǎng)的缺陷,可以使用價(jià)格低廉且存儲(chǔ)空間大的DDR SDRAM等RAM芯片對(duì)報(bào)文進(jìn)行緩存并轉(zhuǎn)發(fā),無(wú)需使用價(jià)格昂貴且存儲(chǔ)空間小的QDRSDRAM對(duì)緩存在RAM中的報(bào)文進(jìn)行轉(zhuǎn)發(fā),降低了對(duì)緩存在RAM中的隊(duì)列進(jìn)行管理的成本,并提高了鏈表的存儲(chǔ)空間。
[0128]實(shí)施例四
[0129]本發(fā)明實(shí)施例提供了一種報(bào)文轉(zhuǎn)發(fā)裝置,參見(jiàn)圖6,報(bào)文轉(zhuǎn)發(fā)裝置包括:第一獲取模塊500、第二獲取模塊501、第三獲取模塊502、第四獲取模塊503、讀取模塊504、轉(zhuǎn)發(fā)模塊505、接收模塊506、判斷模塊507、第一處理模塊508、第二處理模塊509、緩存模塊510、存儲(chǔ)模塊511和第三處理模塊512。
[0130]具體地,接收模塊506,用于接收?qǐng)?bào)文;判斷模塊507和接收模塊506相連接,用于確定用于緩存報(bào)文的RAM的空間是否已滿;第一處理模塊508和判斷模塊507相連接,用于若確定RAM的空間未滿,則從RAM中獲取多個(gè)空閑緩存空間對(duì)應(yīng)的指針;第三處理模塊512和判斷模塊507相連接,用于若確定RAM的空間已滿,則丟棄報(bào)文;第二處理模塊509和第一處理模塊508相連接,用于根據(jù)多個(gè)空閑緩存空間對(duì)應(yīng)的指針,生成報(bào)文的緩存空間鏈表;緩存模塊510和第二處理模塊509相連接,用于根據(jù)生成的緩存空間鏈表,將接收到的報(bào)文緩存到多個(gè)空閑緩存空間中,其中,多個(gè)空閑緩存空間包括第一類緩存空間和多個(gè)第二類緩存空間;存儲(chǔ)模塊511和緩存模塊510相連接,用于將報(bào)文的緩存空間鏈表的頭指針存儲(chǔ)到報(bào)文所在隊(duì)列的隊(duì)列鏈表中;第一獲取模塊500和存儲(chǔ)模塊510相連接,用于獲取對(duì)報(bào)文的轉(zhuǎn)發(fā)指令,報(bào)文有緩存空間鏈表,緩存空間鏈表包括報(bào)文的所有指針,報(bào)文的所有指針中的頭指針對(duì)應(yīng)的第一類緩存空間中記錄有報(bào)文的第一部分報(bào)文數(shù)據(jù)和多個(gè)第二類緩存空間對(duì)應(yīng)的多個(gè)指針,多個(gè)第二類緩存空間分別緩存報(bào)文的第一部分報(bào)文數(shù)據(jù)外的多個(gè)部分的報(bào)文數(shù)據(jù);第二獲取模塊501和第一獲取模塊500相連接,用于從報(bào)文的緩存空間鏈表中獲取報(bào)文的頭指針;第三獲取模塊502和第二獲取模塊501相連接,用于從報(bào)文的頭指針對(duì)應(yīng)的第一類緩存空間中,讀取報(bào)文的第一部分報(bào)文數(shù)據(jù),并獲取多個(gè)指針;第四獲取模塊503和第三獲取模塊502相連接,用于根據(jù)多個(gè)指針,獲取多個(gè)第二類緩存空間;讀取模塊504和第四獲取模塊503相連接,用于從多個(gè)第二類緩存空間中,并行讀取報(bào)文的第一部分報(bào)文數(shù)據(jù)外的多個(gè)部分的報(bào)文數(shù)據(jù);轉(zhuǎn)發(fā)模塊505和讀取模塊504相連接,用于讀取到完整的報(bào)文數(shù)據(jù)后,轉(zhuǎn)發(fā)報(bào)文。
[0131]具體地,在判斷模塊507中:
[0132]若RAM中緩存的報(bào)文占用的緩存空間數(shù)量小于預(yù)先設(shè)定的閾值,則說(shuō)明RAM未滿。
[0133]進(jìn)一步地,隊(duì)列鏈表和緩存空間鏈表存儲(chǔ)在RAM中。
[0134]基于上述描述,本發(fā)明實(shí)施例提供的報(bào)文轉(zhuǎn)發(fā)裝置,通過(guò)從報(bào)文的緩存空間鏈表中獲取報(bào)文的頭指針,報(bào)文的頭指針中記錄有緩存報(bào)文其余部分的第二類緩存空間對(duì)應(yīng)指針,可以使緩存到RAM中的報(bào)文被轉(zhuǎn)發(fā)時(shí),可以僅通過(guò)讀取報(bào)文的頭指針就可以獲取報(bào)文的頭指針對(duì)應(yīng)的第一類緩存空間和第一類緩存空間中記錄的多個(gè)指針對(duì)應(yīng)的指針?biāo)鶎?duì)應(yīng)的分別緩存報(bào)文的第一部分報(bào)文數(shù)據(jù)外的多個(gè)部分的報(bào)文數(shù)據(jù)的第二類緩存空間,從而并行讀取完整的報(bào)文數(shù)據(jù),在讀取到完整的報(bào)文數(shù)據(jù)后,完成報(bào)文的轉(zhuǎn)發(fā),避免了傳統(tǒng)的報(bào)文緩存空間鏈表讀取報(bào)文時(shí)延較長(zhǎng)的缺陷,可以使用價(jià)格低廉且存儲(chǔ)空間大的DDR SDRAM等RAM芯片對(duì)報(bào)文進(jìn)行緩存并轉(zhuǎn)