專利名稱:鏈?zhǔn)疥?duì)列管理結(jié)構(gòu)整合錯(cuò)誤數(shù)據(jù)過濾的方法
鏈?zhǔn)疥?duì)列管理結(jié)構(gòu)整合錯(cuò)誤數(shù)據(jù)過濾的方法技術(shù)領(lǐng)域隊(duì)列管理是計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用(如路由器,交換機(jī)和防火墻等核心設(shè)備中) 的關(guān)鍵技術(shù)之一。隊(duì)列管理的任務(wù)是通過相應(yīng)的體系結(jié)構(gòu)、根據(jù)數(shù)據(jù)包相應(yīng)的 標(biāo)識(shí)信息,實(shí)現(xiàn)對數(shù)據(jù)包的分隊(duì)列存儲(chǔ)與輸出,本發(fā)明所述的鏈?zhǔn)疥?duì)列管理結(jié) 構(gòu)整合錯(cuò)誤數(shù)據(jù)過濾的方法屬于計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域。
背景技術(shù):
隨著英特網(wǎng)的進(jìn)一步發(fā)展,新的網(wǎng)絡(luò)業(yè)務(wù)不斷涌現(xiàn)。包括語音服務(wù)、虛擬 專用網(wǎng)絡(luò)在內(nèi)的多種網(wǎng)絡(luò)業(yè)務(wù)對網(wǎng)絡(luò)服務(wù)質(zhì)量提出了更高的要求。由于網(wǎng)絡(luò)流 量的突發(fā)特性,采用帶寬的過度預(yù)留已經(jīng)不能有效保證網(wǎng)絡(luò)的服務(wù)質(zhì)量。與此 同時(shí),網(wǎng)絡(luò)服務(wù)提供商也希望通過提供有差別的服務(wù)來增加收入。通過對不同的網(wǎng)絡(luò)業(yè)務(wù)執(zhí)行相應(yīng)的優(yōu)先級服務(wù)可以實(shí)現(xiàn)較好的網(wǎng)絡(luò)服務(wù) 質(zhì)暈。而為了實(shí)現(xiàn)優(yōu)先級服務(wù),就必須實(shí)現(xiàn)對數(shù)據(jù)包的隊(duì)列管理,具體又分為 排隊(duì)存儲(chǔ)和調(diào)度輸出。排隊(duì)存儲(chǔ)的主要任務(wù)是把輸入的數(shù)據(jù)包根據(jù)對應(yīng)標(biāo)識(shí)(如 流號)、區(qū)分隊(duì)列分別存儲(chǔ),并在每個(gè)隊(duì)列內(nèi)根據(jù)數(shù)據(jù)包到達(dá)的先后順序維護(hù)FIFO (First In First Out, FTFO)結(jié)構(gòu)。而調(diào)度輸出則是根據(jù)調(diào)度算法得出的服 務(wù)次序、將指定隊(duì)列隊(duì)首的數(shù)據(jù)包送出,并更新相應(yīng)隊(duì)列狀態(tài)。隨著網(wǎng)絡(luò)鏈路傳輸速率的快速提高,通過軟件方式實(shí)現(xiàn)的隊(duì)列管理已經(jīng)不 能滿足要求,而通過硬件實(shí)現(xiàn)的隊(duì)列管理芯片憑借其巨大的性能優(yōu)勢逐漸占據(jù) 高端應(yīng)用領(lǐng)域。通過設(shè)計(jì)相應(yīng)的硬件芯片,配合采用動(dòng)態(tài)隨機(jī)存儲(chǔ)器(DynamicRandom Access Memory, DRAM)、靜態(tài)隨機(jī)存儲(chǔ)器(Static Random Access Memory, SRAM)等外存芯片可以實(shí)現(xiàn)高速而又廉價(jià)的隊(duì)列管理系統(tǒng)。在部分 應(yīng)用場合(如交換網(wǎng)絡(luò)中),數(shù)據(jù)包可能在各個(gè)邏輯隊(duì)列間呈現(xiàn)交替到達(dá)的現(xiàn)象。 由于各種不可預(yù)知的因素,數(shù)據(jù)包內(nèi)部可能存在部分?jǐn)?shù)據(jù)的異?;騺G失。如何 過濾這部分錯(cuò)誤數(shù)據(jù)包是隊(duì)列管理系統(tǒng)需要解決的問題之一。針對錯(cuò)誤數(shù)據(jù)包的過濾問題, 一般的解決方法是兩級緩存過濾。即在入口 處額外設(shè)置一級緩存,預(yù)先緩存每個(gè)完整的數(shù)據(jù)包,待檢測數(shù)據(jù)包無誤后再放 行至下一級緩存。由于數(shù)據(jù)包間可能存在交替到達(dá)的現(xiàn)象(如,先收到A數(shù)據(jù) 包的包頭,接著又收到B數(shù)據(jù)包的包頭,然后才收到A數(shù)據(jù)包包尾),第一級緩 存需要維護(hù)大量邏輯隊(duì)列。同時(shí)每個(gè)隊(duì)列又需要預(yù)留至少一個(gè)完整數(shù)據(jù)包的存 儲(chǔ)空間。這種方式存儲(chǔ)開銷大、擴(kuò)展性差,實(shí)際上額外進(jìn)行的一次隊(duì)列管理又 引入了更大的延遲。針對傳統(tǒng)方法存在的多種問題,本專利申請的技術(shù)方法的先進(jìn)性和新穎 性體現(xiàn)在通過鏈表在回收操作過程中僅需修改少量指針即可回收多個(gè)鏈表單 元的操作特點(diǎn),設(shè)計(jì)了新的錯(cuò)誤數(shù)據(jù)過濾機(jī)制,它延遲低、開銷少、擴(kuò)展性好。發(fā)明內(nèi)容本發(fā)明的特征在于,這是一種基于鏈表的交換網(wǎng)絡(luò)中整合錯(cuò)誤數(shù)據(jù)過濾的方法,是在一種隊(duì)列緩沖管理系統(tǒng)中依次按以下步驟實(shí)現(xiàn)的步驟(l).構(gòu)建一個(gè)用于所述交換網(wǎng)絡(luò)中多隊(duì)列緩沖管理的隊(duì)列管理系統(tǒng),所述系統(tǒng)含有FPGA芯片、緩存數(shù)據(jù)包DRAM和緩存數(shù)據(jù)包描述控制信息用的 SRAM,其中FPGA芯片含有隊(duì)列管理模塊和片內(nèi)存儲(chǔ)器,其中隊(duì)列管理模塊設(shè)有數(shù)據(jù)包輸入端口和數(shù)據(jù)包輸出端口,片內(nèi)存儲(chǔ)器MRAM,與所述隊(duì)列管理模塊互連,緩存數(shù)據(jù)包DRAM,與所述隊(duì)列管理模塊互連,所述緩存數(shù)據(jù)包DRAM是 一種延遲壓縮式的RLDRAM,以16個(gè)周期為讀寫操作的最小時(shí)間單位,實(shí)際 配置為64Bx512k,擁有讀/寫分離的數(shù)據(jù)總線,但讀寫復(fù)用一套地址及控制總線, 緩存數(shù)據(jù)包描述控制信息用的SRAM,型號為CYTC1370C,擁有一套讀寫 復(fù)用的數(shù)據(jù)和控制總線,實(shí)際配置為32bitsx512k;步驟(2).把所選RLDRAM和SRAM共同組成一個(gè)"數(shù)據(jù)域和控制域分 離"的鏈表單元,所述的每個(gè)鏈表單元包含一個(gè)64B的數(shù)據(jù)域和一個(gè)32bits的 控制域,由擁有相同高位地址的所述RLDRAM和SRAM組成,步驟(3).在所述FGPA中建立一個(gè)鏈?zhǔn)娇臻e管理結(jié)構(gòu)實(shí)現(xiàn)對512個(gè)所述鏈 表單元的管理在該FPGA的片內(nèi)存儲(chǔ)器MRAM中額外維護(hù)每個(gè)邏輯隊(duì)列的頭 尾指針,對應(yīng)于頭尾鏈表單元的外存地址,再通過一個(gè)設(shè)有空閑隊(duì)列頭尾指針 的獨(dú)立隊(duì)列Freelist實(shí)現(xiàn)對空閑鏈表單元的管理,同時(shí)在該片內(nèi)存儲(chǔ)器MRAM 上為每個(gè)隊(duì)列再加上50bits信息用于錯(cuò)誤檢測和恢復(fù),其中,包括兩個(gè)19bits共計(jì)38bits的恢復(fù)指針信息,存儲(chǔ)的是最近一次正確狀況下隊(duì) 列的尾指針和為了存儲(chǔ)新信元而新分配的鏈表單元地址,lbit奇偶校驗(yàn)標(biāo)識(shí),表示當(dāng)前數(shù)據(jù)包對應(yīng)的所有信元是否出現(xiàn)過校驗(yàn)錯(cuò) 誤,其中,"1"表示出現(xiàn)錯(cuò)誤,"O"表示正確,以檢測數(shù)據(jù)包內(nèi)容的正確與 否,lbit信元序列校驗(yàn)標(biāo)識(shí),表示當(dāng)前數(shù)據(jù)包對應(yīng)的所有信元的達(dá)到序列是否 正確,以檢測數(shù)據(jù)包的包頭、包尾標(biāo)識(shí)的正確與否,"1"表示出現(xiàn)錯(cuò)誤,"0" 表示正確,步驟(4).把所述交換網(wǎng)絡(luò)中多隊(duì)列緩沖的控制信息進(jìn)行最大限度的壓縮后 得到流號FlowNo,占16bits,分段信息Seg. Info占2bits,信元長度length占5bits ,數(shù)據(jù)包總長度Total Length占9bits,其中流號FlowNo,高位表示目的線卡號CardNo,分段信息Seg.Info,其中包括四種狀態(tài)"01"表示數(shù)據(jù)包頭,"OO"表示 數(shù)據(jù)包中段,"10"表示數(shù)據(jù)包尾,"ll"表示獨(dú)立數(shù)據(jù)包,然后,在第一個(gè)鏈表單元中存儲(chǔ)所述16bits流號和9bits數(shù)據(jù)源總長度信 息,在后繼鏈表單元的后繼信元中存儲(chǔ)所述分段信息Seg.Info,以便在對所述 DRAM進(jìn)行操作的同時(shí)獲取所述SRAM中下一鏈表單元的控制信息,步驟(5).所述隊(duì)列的管理模塊依次按以下步驟判斷入隊(duì)的數(shù)據(jù)包是否正 確,當(dāng)數(shù)據(jù)包丟失信元或者奇偶校驗(yàn)錯(cuò)誤時(shí),執(zhí)行錯(cuò)誤恢復(fù)操作步驟(5.1).根據(jù)分段信息定位每個(gè)數(shù)據(jù)包的開始信元,并更新所述恢復(fù)指針 信息,奇偶校驗(yàn)標(biāo)識(shí),信元序列校驗(yàn)標(biāo)識(shí),以及信元數(shù)量標(biāo)識(shí),步驟(5.2).之后,對于到來的每一個(gè)信元執(zhí)行步驟(5.1)中所述的操作, 歩驟(5.3).當(dāng)根據(jù)分段信息定位到該數(shù)據(jù)包的末尾信元時(shí),結(jié)合步驟(5.1)和 步驟(5.2)中所記錄的信息判斷該數(shù)據(jù)包是否正確若為正確的數(shù)據(jù)包,則向調(diào)度模塊報(bào)告該數(shù)據(jù)包到達(dá), 若為錯(cuò)誤的數(shù)據(jù)包,按步驟(5.3)執(zhí)行錯(cuò)誤恢復(fù)操作, 步驟(5.4).所述隊(duì)列管理模塊執(zhí)行錯(cuò)誤恢復(fù)操作 用恢復(fù)指針把所述錯(cuò)誤數(shù)據(jù)包的隊(duì)列恢復(fù)到接收這個(gè)錯(cuò)誤數(shù)據(jù)包之前的正 確狀態(tài),同時(shí)把所述恢復(fù)指針信息中所保存的為該數(shù)據(jù)包包頭分配的鏈表單元 地址的下一跳地址指向當(dāng)前空閑指針的頭部,再把該鏈表單元地址設(shè)置為空閑 鏈表起始地址,然后,再通過指針的修改來回收該錯(cuò)誤數(shù)據(jù)包中的所有錯(cuò)誤數(shù) 據(jù)。以上操作步驟的流程如圖1所示。圖2示意了隊(duì)列管理的系統(tǒng)框圖,數(shù)據(jù)包一般在外存儲(chǔ)芯片DRAM進(jìn)行8排隊(duì)和緩存,數(shù)據(jù)包構(gòu)成的隊(duì)列描述信息可存儲(chǔ)在外存儲(chǔ)芯片DRAM/SRAM或 者FPGA片內(nèi)存儲(chǔ)中。因DRAM帶寬有限, 一般盡量將額外的描述信息放在 SRAM或者片內(nèi)存儲(chǔ)屮。本發(fā)明的目的在于設(shè)計(jì)一個(gè)有效的錯(cuò)誤數(shù)據(jù)過濾方案。該方案拋棄兩級緩 存過濾機(jī)制,弓I入基于鏈表的錯(cuò)誤數(shù)據(jù)過濾機(jī)制過濾錯(cuò)誤數(shù)據(jù)。一般鏈?zhǔn)焦芾斫Y(jié)構(gòu),均將數(shù)據(jù)包分割成定長的信元,存儲(chǔ)在外存儲(chǔ)器中, 信元之間以鏈接指針相連,同一個(gè)隊(duì)列的數(shù)據(jù)包也以鏈接指針相連,即上一個(gè) 數(shù)據(jù)包的尾信元與下一個(gè)數(shù)據(jù)包的頭信元用指針鏈接起來,指針信息既nj以與 信元一起存放在外存DRAM中,也Pj以單獨(dú)存放在片內(nèi)或者片外的SRAM中。本次發(fā)明設(shè)計(jì)的重點(diǎn)是在空間管理過程中,除了在每個(gè)邏輯隊(duì)列內(nèi)維護(hù) 鏈表結(jié)構(gòu),系統(tǒng)還通過一個(gè)獨(dú)立隊(duì)列對空閑鏈表單元進(jìn)行組織和管理。這種結(jié)構(gòu)最大的好處在于在回收鏈表操作過程中,可以通過簡單操作一次 回收多個(gè)鏈表單元,從而達(dá)到過濾錯(cuò)誤數(shù)據(jù)包的目的。在每次接收到數(shù)據(jù)包頭 時(shí)記錄當(dāng)前對應(yīng)隊(duì)列的指針信息作為恢復(fù)指針,而后在數(shù)據(jù)包的操作過程中不 斷進(jìn)行檢査。在接收到數(shù)據(jù)包尾時(shí)判斷對應(yīng)數(shù)據(jù)包的完整性與正確性,在數(shù)據(jù) 包錯(cuò)誤的情況下利用恢復(fù)指針對原隊(duì)列進(jìn)行恢復(fù)操作。同時(shí),由于錯(cuò)誤數(shù)據(jù)包 內(nèi)部各個(gè)鏈表單元呈現(xiàn)連續(xù)的鏈表結(jié)構(gòu),通過修改空閑鏈表指針的方式,可以 實(shí)現(xiàn)對多個(gè)鏈表單元的一次性回收,從而實(shí)現(xiàn)錯(cuò)誤數(shù)據(jù)的過濾。而且鏈表分配 和回收過程不受多隊(duì)列交替到達(dá)的影響。結(jié)合具體例子進(jìn)行說明。圖3顯示了編號為1、 2、 3的三個(gè)正確信元是如何被分別存儲(chǔ)并維護(hù)成相 應(yīng)鏈表結(jié)構(gòu)的。在此過程屮同時(shí)維護(hù)了 一定的控制信息。初始狀態(tài)系統(tǒng)屮存在兩個(gè)邏輯隊(duì)列A、 B,兩個(gè)隊(duì)列已經(jīng)存儲(chǔ)了只有一個(gè) 信元的數(shù)據(jù)包,并均有一個(gè)空閑的隊(duì)尾單元,當(dāng)新到一個(gè)信元時(shí),可以首先給信元分配隊(duì)尾存儲(chǔ),然后給隊(duì)列申請一個(gè)新的空閑單元,信元下面假定為信元 存儲(chǔ)單元的地址。初始時(shí),A的當(dāng)前正確狀態(tài)隊(duì)尾地址為0x02 (即下一個(gè)數(shù)據(jù) 包第一個(gè)信元的存儲(chǔ)地址),還未有下一個(gè)數(shù)據(jù)包第一個(gè)信元下一跳的地址;B 的當(dāng)前正確狀態(tài)隊(duì)尾地址為0x08,還未有下一個(gè)數(shù)據(jù)包第一個(gè)信元下一跳的地 址。給信元1分配存儲(chǔ)單元信元1為新的數(shù)據(jù)包的第一個(gè)信元,屬于邏輯隊(duì)列A,將1存儲(chǔ)在0x02中,為隊(duì)列A新申請一個(gè)空閑塊0x03; A的當(dāng)前正確狀 態(tài)隊(duì)尾地址仍為0x02,下一個(gè)數(shù)據(jù)包第一個(gè)信元下一跳的地址為0x03; B的狀 態(tài)未變化;給信元2分配存儲(chǔ)單元信元2與信元1同屬一個(gè)數(shù)據(jù)包,為該數(shù)據(jù)包第 二個(gè)信元,將2存儲(chǔ)在0x03中,為隊(duì)列A新申請一個(gè)空閑塊0x04; A的當(dāng)前 正確狀態(tài)隊(duì)尾地址仍為0x02,下一個(gè)數(shù)據(jù)包第一個(gè)信元下一跳的地址仍為0x03; B的狀態(tài)未變化;給信元3分配存儲(chǔ)單元:信元3為新數(shù)據(jù)包的第一個(gè)信元,屬于邏輯隊(duì)列B, 將3存儲(chǔ)于0x08中,為隊(duì)列B新申請一個(gè)空閑塊0x05; B的當(dāng)前正確狀態(tài)隊(duì)尾 地址為0x08,下一個(gè)數(shù)據(jù)包第一個(gè)信元下一跳的地址為0x05; A的狀態(tài)為變化。在信元l、 2、 3成功存儲(chǔ)后,到達(dá)一個(gè)新信元4對應(yīng)邏輯隊(duì)列A,它的到 來使得系統(tǒng)意識(shí)到必須回收己經(jīng)分配給信元l、 2的鏈表單元。原因可能是1、 信元4是第二個(gè)數(shù)據(jù)包的頭,而信元2不是數(shù)據(jù)包的尾;2、 信元4是數(shù)據(jù)包的尾,但是計(jì)算后的數(shù)據(jù)包長度和數(shù)據(jù)包頭信元1中記 錄的信息不一致;3、 信元4是數(shù)據(jù)包的尾,且長度一致。但是發(fā)現(xiàn)信元l、 2、 4中有一個(gè)或 者多個(gè)信元存在奇偶校驗(yàn)錯(cuò)誤。尾地址0x04的單元與空閑隊(duì)列隊(duì)頭地址相連,將A的下一個(gè)數(shù)據(jù)包第一個(gè)信元 下一跳的地址0x03作為空閑隊(duì)列新的隊(duì)頭地址;更新A的隊(duì)尾地址為A的當(dāng) 前正確狀態(tài)隊(duì)尾地址0x02,注意雖然0x02的下一跳地址并非空,但0x02為可 直接被使用的空閑單元,待下次存儲(chǔ)信元后該信息會(huì)更新;并重置A的當(dāng)前正 確狀態(tài)隊(duì)尾地址為0x02。這樣錯(cuò)誤鏈表單元就被回收了。請?zhí)貏e注意回收后的空閑鏈表順序是m, IV, VI。而V卻被分配走了。鏈表操作的高度靈活顯示即使信元在邏輯隊(duì)列間 交替到達(dá),系統(tǒng)也能正常過濾錯(cuò)誤數(shù)據(jù)包。本發(fā)明的效果在于,使用較小的存儲(chǔ)代價(jià)(對每個(gè)邏輯隊(duì)列,需要存儲(chǔ)恢 復(fù)指針),簡單的恢復(fù)操作(僅需要修改一次鏈接指針),便能很容易在數(shù)據(jù)發(fā) 生錯(cuò)誤時(shí)進(jìn)行過濾和存儲(chǔ)空間回收。
圖1本發(fā)明的流程圖。圖2隊(duì)列管理器的系統(tǒng)框圖。圖3信元到達(dá)后分配過程示意圖初始狀態(tài),給信元l分配邏輯隊(duì)列后,給信元2分配邏輯隊(duì)列后, 給信元3分配邏輯隊(duì)列后。圖4 一次性回收多個(gè)鏈表單元過程示意圖給信元3分配邏輯隊(duì)列后, 錯(cuò)誤恢復(fù)。圖5鏈?zhǔn)娇臻g管理結(jié)構(gòu)示意圖。ii具體實(shí)施方式
為了更好的說明發(fā)明內(nèi)容,本文針對交換網(wǎng)絡(luò)中多隊(duì)列緩沖結(jié)構(gòu)提出了 一 個(gè)具體的實(shí)施范例。過程中采用的FPGA芯片型號為Altera Stratix EP1S80F1508C5 , RLDRAM(Reduced Latency DRAM)的型號為MT49H16M18C,采用的SRAM型 號為CY7C1370C。RLDRAM是一種延遲較小的DRAM存儲(chǔ)器,本次使用的芯片容量達(dá)到 16MX18bits,共計(jì)288Mbits,擁有8個(gè)Bank,運(yùn)行頻率為166Mhz,它采用了 DDR (Double Date Rate)技術(shù),等效運(yùn)行頻率為333Mhz。它最大的特點(diǎn)在于擁 有讀/寫分離的數(shù)據(jù)總線,但讀/寫復(fù)用一套地址以及控制總線。為了實(shí)現(xiàn)RLDRAM的讀/寫并行、最大程度上利用帶寬,在RLDRAM的使 用中以16個(gè)周期為讀寫操作的最小時(shí)間單位。對應(yīng)這16周期所能達(dá)到的最大 吞吐量為18bitsX2X16=576bits,其中排除用于校驗(yàn)后的有效部分是576bitsX (16/18) =512bits=64B。則RLDRAM的實(shí)際配置可以理解為64BX512K。 CY7C1370C是Cypress公司出品的一款高性能SRAM。它擁有一套讀寫復(fù) 用的數(shù)據(jù)和控制總線。所有的數(shù)據(jù)操作都只能在時(shí)鐘上升沿觸發(fā)。其配置方式 為36bitsX512K,容量總計(jì)18Mbits,運(yùn)行頻率為166Mhz??紤]4bits要用于校 驗(yàn),實(shí)際剩余空間及配置方式只能為32bitsX512K,共計(jì)16Mbits。設(shè)計(jì)一實(shí)現(xiàn)鏈?zhǔn)娇臻g管理。利用RLDRAM和SRAM邏輯地址空間相同(都是512K),由RLDRAM和SRAM共同組成"數(shù)據(jù)域和控制域分離"鏈表單元結(jié)構(gòu)。邏輯上,把擁有相同高位地址的RLDRAM和SRAM視為一個(gè)完整的鏈表單元。對應(yīng)每個(gè)鏈表單元 包含一個(gè)64B的數(shù)據(jù)域和一個(gè)32 bits的控制域。通過圖5所示的鏈?zhǔn)娇臻g管理結(jié)構(gòu)實(shí)現(xiàn)對512K個(gè)鏈表單元的管理。其中 在FPGA片內(nèi)存儲(chǔ)器(MRAM)中額外維護(hù)每個(gè)邏輯隊(duì)列的頭尾指針,而通過 一個(gè)獨(dú)立隊(duì)列(Fredist)實(shí)現(xiàn)對空閑鏈表單元的維護(hù)。圖中示意了三個(gè)鏈表單 元的鏈接信息地址分別為0x02、 0x04、 0x07對應(yīng)的RLDRAM的64B的數(shù)據(jù) 域存儲(chǔ)的信元具有鏈接關(guān)系,地址0x02對應(yīng)于控制域的信息為0x04,即表示地 址0x02處數(shù)據(jù)域下一個(gè)信元為地址0x04所存儲(chǔ)。設(shè)計(jì)二基于鏈表的錯(cuò)誤數(shù)據(jù)過濾機(jī)制。之前的說明以及圖3和圖4的描述己經(jīng)清楚地描述了基于鏈表的錯(cuò)誤數(shù) 據(jù)過濾機(jī)制。這里主要討論其具體實(shí)現(xiàn)。由圖5可知片內(nèi)存儲(chǔ)維護(hù)了每個(gè)邏輯隊(duì)列的頭尾指針信息。在此基礎(chǔ)上為 每個(gè)隊(duì)列再加上50bits信息用于錯(cuò)誤檢測和恢復(fù)。具體分為1、 兩個(gè)19bits共計(jì)38bits的恢復(fù)指針信息?;謴?fù)指針信息存儲(chǔ)的是最近一 次正確狀態(tài)情況下隊(duì)列的尾指針和為存儲(chǔ)新信元而新分配的鏈表單元地址。2、 lbit奇偶檢驗(yàn)標(biāo)識(shí)。它表示當(dāng)前數(shù)據(jù)包對應(yīng)的所有信元是否出現(xiàn)過校驗(yàn) 錯(cuò)誤。專門用來檢測數(shù)據(jù)包內(nèi)容的正確性。3、 lbit信元序列檢驗(yàn)標(biāo)識(shí)。它表示當(dāng)前數(shù)據(jù)包信元到達(dá)序列是否正確。專 門用來檢測數(shù)據(jù)包包頭包尾標(biāo)識(shí)的正確性。4、 兩個(gè)5bits信元數(shù)量標(biāo)識(shí)。每個(gè)數(shù)據(jù)包都會(huì)被分割成信元,最長的1500 字節(jié)數(shù)據(jù)包會(huì)被分為24個(gè)信元。這里用兩個(gè)5bits分別存儲(chǔ)當(dāng)前數(shù)據(jù)包對應(yīng)的 原始信元數(shù),和已經(jīng)收到的信元數(shù)。專門用來檢測數(shù)據(jù)包包長正確性。具體的操作步驟是1、 根據(jù)分段信息(數(shù)據(jù)包分割為信元經(jīng)過交換網(wǎng)絡(luò)后,需要還原為數(shù)據(jù)包, 此時(shí)需要一個(gè)信息用來指導(dǎo)重組。分段信息標(biāo)識(shí)了當(dāng)前數(shù)據(jù)對應(yīng)原數(shù)據(jù)包的哪 個(gè)部分。)可以定位每個(gè)數(shù)據(jù)包的開始和結(jié)束。在每次數(shù)據(jù)包開始時(shí),更新恢復(fù) 指針信息。同時(shí)更新奇偶檢驗(yàn)標(biāo)識(shí),信元序列檢驗(yàn)標(biāo)識(shí),信元數(shù)量標(biāo)識(shí)。2、 之后,每來一個(gè)信元就對奇偶檢驗(yàn)標(biāo)識(shí),信元序列檢驗(yàn)標(biāo)識(shí),信元數(shù)量 標(biāo)識(shí)進(jìn)行更新。3、 當(dāng)接收到一個(gè)數(shù)據(jù)包的末尾信元時(shí),就可以結(jié)合記錄的信息判斷這個(gè)數(shù)據(jù)包是否正確。此時(shí)又分為兩種情況1) 數(shù)據(jù)包正確時(shí),向調(diào)度模塊報(bào)告該數(shù)據(jù)包到達(dá)。2) 數(shù)據(jù)包錯(cuò)誤時(shí)(丟失信元或者奇偶校驗(yàn)錯(cuò)誤)。執(zhí)行錯(cuò)誤恢復(fù)操作。 把對應(yīng)隊(duì)列的狀態(tài)用恢復(fù)指針進(jìn)行恢復(fù)。于是,對應(yīng)數(shù)據(jù)包的隊(duì)列就恢復(fù)到接收這個(gè)數(shù)據(jù)包之前的狀態(tài),也就是正確狀態(tài)。同時(shí),將之前步驟1中保存的為該數(shù)據(jù)包包頭分配的鏈表單元的下一跳地 址指向當(dāng)前空閑指針頭部。再將該鏈表單元的地址設(shè)置為空閑鏈表的起始地址。由于錯(cuò)誤數(shù)據(jù)包內(nèi)部鏈表的鏈接已經(jīng)完成,此時(shí),通過指針的修改就可以 把該過程中所有錯(cuò)誤的數(shù)據(jù)回收。這個(gè)過程看似復(fù)雜,但是由于實(shí)際操作以信元為單位,而極限情況下16周期才會(huì)有一個(gè)新信元到達(dá),更新代價(jià)很小。結(jié)論,我們采用基于鏈表的錯(cuò)誤恢復(fù)機(jī)制支持?jǐn)?shù)據(jù)包在不同隊(duì)列間交替到 達(dá)的情況下的錯(cuò)誤數(shù)據(jù)過濾,相對于兩級緩沖結(jié)構(gòu)開銷更小,擴(kuò)展性好。整體 設(shè)計(jì)領(lǐng)先于國內(nèi)外當(dāng)前其他任何技術(shù)。
權(quán)利要求
1.鏈?zhǔn)疥?duì)列管理結(jié)構(gòu)整合錯(cuò)誤數(shù)據(jù)過濾的方法,其特征在于,這是一種基于鏈表的交換網(wǎng)絡(luò)中整合錯(cuò)誤數(shù)據(jù)過濾的方法,是在一種隊(duì)列緩沖管理系統(tǒng)中依次按以下步驟實(shí)現(xiàn)的步驟(1).構(gòu)建一個(gè)用于所述交換網(wǎng)絡(luò)中多隊(duì)列緩沖管理的隊(duì)列管理系統(tǒng),所述系統(tǒng)含有FPGA芯片、緩存數(shù)據(jù)包DRAM和緩存數(shù)據(jù)包描述控制信息用的SRAM,其中FPGA芯片含有隊(duì)列管理模塊和片內(nèi)存儲(chǔ)器,其中隊(duì)列管理模塊設(shè)有數(shù)據(jù)包輸入端口和數(shù)據(jù)包輸出端口,片內(nèi)存儲(chǔ)器MRAM,與所述隊(duì)列管理模塊互連,緩存數(shù)據(jù)包DRAM,與所述隊(duì)列管理模塊互連,所述緩存數(shù)據(jù)包DRAM是一種延遲壓縮式的RLDRAM,以16個(gè)周期為讀寫操作的最小時(shí)間單位,實(shí)際配置為64B×512k,擁有讀/寫分離的數(shù)據(jù)總線,但讀寫復(fù)用一套地址及控制總線,緩存數(shù)據(jù)包描述控制信息用的SRAM,型號為CYTC1370C,擁有一套讀寫復(fù)用的數(shù)據(jù)和控制總線,實(shí)際配置為32bits×512k;步驟(2).把所選RLDRAM和SRAM共同組成一個(gè)“數(shù)據(jù)域和控制域分離”的鏈表單元,所述的每個(gè)鏈表單元包含一個(gè)64B的數(shù)據(jù)域和一個(gè)32bits的控制域,由擁有相同高位地址的所述RLDRAM和SRAM組成,步驟(3).在所述FGPA中建立一個(gè)鏈?zhǔn)娇臻e管理結(jié)構(gòu)實(shí)現(xiàn)對512個(gè)所述鏈表單元的管理在該FPGA的片內(nèi)存儲(chǔ)器MRAM中額外維護(hù)每個(gè)邏輯隊(duì)列的頭尾指針,對應(yīng)于頭尾鏈表單元的外存地址,再通過一個(gè)設(shè)有空閑隊(duì)列頭尾指針的獨(dú)立隊(duì)列Freelist實(shí)現(xiàn)對空閑鏈表單元的管理,同時(shí)在該片內(nèi)存儲(chǔ)器MRAM上為每個(gè)隊(duì)列再加上50bits信息用于錯(cuò)誤檢測和恢復(fù),其中,包括兩個(gè)19bits共計(jì)38bits的恢復(fù)指針信息,存儲(chǔ)的是最近一次正確狀況下隊(duì)列的尾指針和為了存儲(chǔ)新信元而新分配的鏈表單元地址,1bit奇偶校驗(yàn)標(biāo)識(shí),表示當(dāng)前數(shù)據(jù)包對應(yīng)的所有信元是否出現(xiàn)過校驗(yàn)錯(cuò)誤,其中,“1”表示出現(xiàn)錯(cuò)誤,“0”表示正確,以檢測數(shù)據(jù)包內(nèi)容的正確與否,1bit信元序列校驗(yàn)標(biāo)識(shí),表示當(dāng)前數(shù)據(jù)包對應(yīng)的所有信元的達(dá)到序列是否正確,以檢測數(shù)據(jù)包的包頭、包尾標(biāo)識(shí)的正確與否,“1”表示出現(xiàn)錯(cuò)誤,“0”表示正確,步驟(4).把所述交換網(wǎng)絡(luò)中多隊(duì)列緩沖的控制信息進(jìn)行最大限度的壓縮后得到流號Flow No,占16bits,分段信息Seg.Info占2bits,信元長度length占5bits,數(shù)據(jù)包總長度Total Length占9bits,其中流號Flow No,高位表示目的線卡號Card No,分段信息Seg.Info,其中包括四種狀態(tài)“01”表示數(shù)據(jù)包頭,”00”表示數(shù)據(jù)包中段,”10”表示數(shù)據(jù)包尾,”11”表示獨(dú)立數(shù)據(jù)包,然后,在第一個(gè)鏈表單元中存儲(chǔ)所述16bits流號和9bits數(shù)據(jù)源總長度信息,在后繼鏈表單元的后繼信元中存儲(chǔ)所述分段信息Seg.Info,以便在對所述DRAM進(jìn)行操作的同時(shí)獲取所述SRAM中下一鏈表單元的控制信息,步驟(5).所述隊(duì)列的管理模塊依次按以下步驟判斷入隊(duì)的數(shù)據(jù)包是否正確,當(dāng)數(shù)據(jù)包丟失信元或者奇偶校驗(yàn)錯(cuò)誤時(shí),執(zhí)行錯(cuò)誤恢復(fù)操作步驟(5.1).根據(jù)分段信息定位每個(gè)數(shù)據(jù)包的開始信元,并更新所述恢復(fù)指針信息,奇偶校驗(yàn)標(biāo)識(shí),信元序列校驗(yàn)標(biāo)識(shí),以及信元數(shù)量標(biāo)識(shí),步驟(5.2).之后,對于到來的每一個(gè)信元執(zhí)行步驟(5.1)中所述的操作,步驟(5.3).當(dāng)根據(jù)分段信息定位到該數(shù)據(jù)包的末尾信元時(shí),結(jié)合步驟(5.1)和步驟(5.2)中所記錄的信息判斷該數(shù)據(jù)包是否正確若為正確的數(shù)據(jù)包,則向調(diào)度模塊報(bào)告該數(shù)據(jù)包到達(dá),若為錯(cuò)誤的數(shù)據(jù)包,按步驟(5.3)執(zhí)行錯(cuò)誤恢復(fù)操作,步驟(5.4).所述隊(duì)列管理模塊執(zhí)行錯(cuò)誤恢復(fù)操作用恢復(fù)指針把所述錯(cuò)誤數(shù)據(jù)包的隊(duì)列恢復(fù)到接收這個(gè)錯(cuò)誤數(shù)據(jù)包之前的正確狀態(tài),同時(shí)把所述恢復(fù)指針信息中所保存的為該數(shù)據(jù)包包頭分配的鏈表單元地址的下一跳地址指向當(dāng)前空閑指針的頭部,再把該鏈表單元地址設(shè)置為空閑鏈表起始地址,然后,再通過指針的修改來回收該錯(cuò)誤數(shù)據(jù)包中的所有錯(cuò)誤數(shù)據(jù)。
全文摘要
鏈?zhǔn)疥?duì)列管理結(jié)構(gòu)整合錯(cuò)誤數(shù)據(jù)過濾的方法,屬于計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)領(lǐng)域,其特征在于對通過鏈表方式對外存空間進(jìn)行隊(duì)列管理的結(jié)構(gòu),通過鏈表在回收操作過程中僅需修改少量指針即可回收多個(gè)鏈表單元的操作特點(diǎn),設(shè)計(jì)了新的錯(cuò)誤數(shù)據(jù)過濾機(jī)制,支持?jǐn)?shù)據(jù)包在不同隊(duì)列間交替到達(dá)情況下的錯(cuò)誤數(shù)據(jù)過濾。它的特點(diǎn)在于延遲低,開銷少,擴(kuò)展性好。
文檔編號H04L1/00GK101594201SQ200910084279
公開日2009年12月2日 申請日期2009年5月20日 優(yōu)先權(quán)日2009年5月20日
發(fā)明者斌 劉, 棟 林 申請人:清華大學(xué)