專利名稱:Onu計算上行隊列的上報長度的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種EPON(EthernetPassive Optical Network,以太網(wǎng)無源光網(wǎng)絡(luò)) 網(wǎng)絡(luò)中r印ort (報告消息)消息的形成方法。
背景技術(shù):
EPON網(wǎng)絡(luò)是一個點對多點網(wǎng)絡(luò),一個OLT (Optical Line Terminal,光纖線路終端)通過光纖和POSPassive Optical Splitter,無源光分路器)連接多個ONU(Optical Network Unit,光纖網(wǎng)絡(luò)單元)。從ONU到OLT的通訊方向為上行方向,EPON網(wǎng)絡(luò)中每個 ONU向OLT發(fā)送import消息報告上行通訊需求,OLT據(jù)此向每個ONU發(fā)送gate (門消息) 消息為每個ONU分配上行帶寬或上行傳輸時間。每個ONU都具有多個上行隊列,每個上行隊列按照FIF0(first in firstout,先進先出)原則排列有多個上行數(shù)據(jù)包。OLT為每個ONU的每個上行隊列設(shè)置有多個閾值 (threshold),ONU在形成import消息時需要根據(jù)OLT設(shè)置的多個閾值計算每個上行隊列的上報長度。對于ONU的每個上行隊列,如果OLT設(shè)置了 η個閾值,則該ONU需要為該上行隊列計算η個上報長度。其中上報長度χ是小于或等于閾值χ的前提下該上行隊列從頭開始最大數(shù)量的完整數(shù)據(jù)包長度,χ為小于或等于η的自然數(shù)。請參閱圖1,這是一個ONU的一個上行隊列的示意圖,該上行隊列從頭開始排列有數(shù)據(jù)包Α、B、C、D、Ε,長度分別為400、800、200、600、400個字節(jié)。OLT為該ONU的該上行隊列設(shè)置了 2個閾值,閾值1為1000字節(jié),閾值2為2000字節(jié)。該ONU在形成import消息時需要為該上行隊列計算2個上報長度,其中上報長度1是小于或等于1000字節(jié)的前提下該上行隊列從頭開始最大數(shù)量的完整數(shù)據(jù)包長度,上報長度2是小于或等于2000字節(jié)的前提下該上行隊列從頭開始最大數(shù)量的完整數(shù)據(jù)包長度。顯然在圖1中,上報長度1為數(shù)據(jù)包A的長度即400個字節(jié)。上報長度2為數(shù)據(jù)包A、B、C、D的長度即2000個字節(jié)。為了便于在形成r印ort消息時計算每個上行隊列的多個上報長度,需要將每個上行隊列的每個上行數(shù)據(jù)包長度存儲起來。ONU設(shè)備的MAC(MediaAccess Control,介質(zhì)訪問控制)芯片(簡稱為ONU芯片)內(nèi)具有SRAM (staticrandom access memory,靜態(tài)隨機存儲器),芯片外具有DRAM (dynamic randomaccess memory,動態(tài)隨機存儲器)。將每個上行數(shù)據(jù)包長度存儲在所述SRAM無疑是最方便的快速的,可是所述SRAM存儲空間有限,如果需要存儲大量數(shù)據(jù)則所述SRAM將占據(jù)很大的芯片面積。而將每個上行數(shù)據(jù)包長度存儲在所述DRAM則對于DRAM帶寬要求極大而且DRAM的延遲會造成計算效率不足。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種EPON網(wǎng)絡(luò)中ONU計算上行隊列的上報長度的方法,該方法綜合利用ONU芯片內(nèi)外的存儲資源,并具有較快的計算速度。為解決上述技術(shù)問題,本發(fā)明ONU計算上行隊列的上報長度的方法為ONU為每個上行隊列創(chuàng)建一個入口包長隊列和一個出口包長隊列;所述入口包長隊列和出口包長隊列的每個元素都是該上行隊列中的一個上行數(shù)據(jù)包的長度,所述入口包長隊列和出口包長隊列的總和記載了該上行隊列中所有上行數(shù)據(jù)包的長度;ONU的每個上行隊列有新的上行數(shù)據(jù)包加入時,該上行數(shù)據(jù)包的長度記錄在該上行隊列對應(yīng)的入口包長隊列之中;當(dāng)入口包長隊列存儲的數(shù)據(jù)長度達(dá)到Unit_dram時,ONU將所述入口包長隊列中長度為Unit_dram的數(shù)據(jù)存儲至該上行隊列對應(yīng)的出口包長隊列之中,然后將所述長度為 Unit_dram的數(shù)據(jù)從所述入口包長隊列中刪除;所述Unit_dram是所述DRAM的最小讀取或?qū)懭雴挝?;ONU的每個上行隊列有上行數(shù)據(jù)包發(fā)出時,所述發(fā)出的上行數(shù)據(jù)包的長度從該上行隊列對應(yīng)的出口包長隊列或入口包長隊列之中刪除掉;ONU還為每個上行隊列創(chuàng)建η個上報隊列,其中η為OLT為該ONU的該上行隊列設(shè)置的閾值的數(shù)量;每個上報隊列均為所述出口包長隊列的一部分,每個上報隊列中均包括一個截止元素;第X個截止元素表示其所對應(yīng)的上行數(shù)據(jù)包是不大于第X個閾值的前提下該上行隊列所包含的最大數(shù)量的完整的上行數(shù)據(jù)包中的最后一個上行數(shù)據(jù)包,X為小于或等于η的自然數(shù);所述入口包長隊列以及η個上報隊列存儲在ONU芯片內(nèi)部的SRAM中;所述出口包長隊列存儲在ONU芯片外部的DRAM中;第χ個上報長度就是該上行隊列的第1個上行數(shù)據(jù)包到第χ個截止元素所對應(yīng)的上行數(shù)據(jù)包的長度總和。本發(fā)明ONU計算上行隊列的上報長度的方法僅需占用SRAM的部分存儲空間,卻充分利用了 DRAM的存儲空間,并具有讀寫速度快、效率高的優(yōu)點。
圖1是ONU計算上行隊列的上報長度的規(guī)則示意圖;圖2是本發(fā)明ONU計算上行隊列的上報長度的示意圖。
具體實施例方式請參閱圖2,本發(fā)明ONU計算上行隊列的上報長度的方法為ONU為每個上行隊列創(chuàng)建一個入口包長隊列和一個出口包長隊列。所述入口包長隊列和出口包長隊列的每個元素都是該上行隊列中的一個上行數(shù)據(jù)包的長度,所述入口包長隊列和出口包長隊列的總和記載了該上行隊列中所有上行數(shù)據(jù)包的長度。ONU的每個上行隊列有新的上行數(shù)據(jù)包加入時,該上行數(shù)據(jù)包的長度先記錄在該上行隊列對應(yīng)的入口包長隊列之中。當(dāng)入口包長隊列存儲的數(shù)據(jù)長度達(dá)到Unit_dram時, ONU將所述入口包長隊列中長度為Unit_dram的數(shù)據(jù)存儲至該上行隊列對應(yīng)的出口包長隊列之中,然后將所述長度為Unit_dram的數(shù)據(jù)從所述入口包長隊列中刪除。所述Unit_dram是所述DRAM的最小讀取或?qū)懭雴挝?,也稱為所述DRAM的有效存儲單位。ONU的每個上行隊列有上行數(shù)據(jù)包發(fā)出時,該上行數(shù)據(jù)包的長度就從該上行隊列對應(yīng)的出口包長隊列或入口包長隊列之中刪除掉。
5
如果將入口包長隊列和出口包長隊列相串聯(lián)即可發(fā)現(xiàn),新加入的上行數(shù)據(jù)包長度總是記錄在入口包長隊列中。這里區(qū)分兩種情況第一種情況是入口包長隊列所記載的數(shù)據(jù)長度曾經(jīng)達(dá)到過Unit_dram,則此時該上行隊列中最早的上行數(shù)據(jù)包長度必然已經(jīng)轉(zhuǎn)存到出口包長隊列中。第二種情況是入口包長隊列所記載的數(shù)據(jù)長度從未達(dá)到過Unit_dram, 則此時該上行隊列中最早的上行數(shù)據(jù)包長度仍在入口包長隊列中。ONU還為每個上行隊列創(chuàng)建η個上報隊列。所述η是OLT為該ONU的該上行隊列設(shè)置的閾值的數(shù)量,η為自然數(shù)。每個上報隊列均為所述出口包長隊列或入口包長隊列的一部分,并且每個上報隊列中均包括一個截止元素。每個截止元素均表示該上行隊列中的一個上行數(shù)據(jù)包的長度。這樣,所述出口包長隊列和入口包長隊列的串聯(lián)隊列中就包括η個截止元素,按照截止元素所對應(yīng)的上行數(shù)據(jù)包的先后分別稱為第1個截止元素、第2個截止元素、……、第η個截止元素。顯然,第χ個上報隊列中包括第χ個截止元素,χ為小于或等于η的自然數(shù)。第χ個截止元素是這樣定義的該上行隊列的第1個上行數(shù)據(jù)包到第χ個截止元素所對應(yīng)的上行數(shù)據(jù)包的長度總和小于或等于第X個閾值,該上行隊列的第1個上行數(shù)據(jù)包到第χ個截止元素所對應(yīng)的上行數(shù)據(jù)包之后的一個數(shù)據(jù)包的長度總和大于第χ個閾值。 換而言之,第χ個截止元素所對應(yīng)的上行數(shù)據(jù)包表示在不大于第χ個閾值的前提下該上行隊列所包含的最大數(shù)量的完整的上行數(shù)據(jù)包中的最后一個上行數(shù)據(jù)包。第χ個上報長度就是該上行隊列的第1個上行數(shù)據(jù)包到第X個截止元素所對應(yīng)的上行數(shù)據(jù)包的長度總和。所述入口包長隊列以及η個上報隊列存儲在ONU芯片內(nèi)部的SRAM中。所述出口包長隊列存儲在ONU芯片外部的DRAM中。設(shè)所述入口包長隊列的長度為Lengthjn,所述出口包長隊列的長度為Length_ out,每個上報隊列的長度均為Length_Mp0rt,每個上行隊列所能包含的上行數(shù)據(jù)包的最大數(shù)量為f^acketNumjnax,每個上行數(shù)據(jù)包長度的存儲空間為PacketLength,則Unit_dram ( Length_in ( 2XUnit_dram ;Length_out = PacketNum_max X PacketLength+Unit_dram ;Length_report = Unit_dram ;所述入口包長隊列的長度為1 2倍的DRAM有效存儲單位之間,在該有限空間內(nèi)只能記錄對應(yīng)的上行隊列中最后進入的上行數(shù)據(jù)包的長度,其余較早進入的上行數(shù)據(jù)包的長度全部記載在出口包長隊列之中。通常Length_0ut遠(yuǎn)大于Lengthjn。值得注意的是,所述出口包長隊列的長度不僅能記錄對應(yīng)上行隊列的所有上行數(shù)據(jù)包長度,還具有一個Unit_dram的余量,該余量是為入口包長隊列的數(shù)據(jù)轉(zhuǎn)存而準(zhǔn)備的。一個上行隊列中每個上行數(shù)據(jù)包的長度是不同的,但記錄每個上行數(shù)據(jù)包長度的存儲空間I^acketLength是相同的。I^acketLength是所述入口包長隊列、出口包長隊列和η 個上報隊列的存儲單元。本發(fā)明中每個上報隊列的長度均為固定的,每個上報隊列可視為出口包長隊列或入口包長隊列的一個局部鏡像。Sk = UniLdram/^acketLength^為自然數(shù),則每個上報隊列包括k個元素,即記載了 k個上行數(shù)據(jù)包的長度。以第χ個上報隊列為例,每個上報隊列是這樣形成的首先第χ個上報隊列取該上行隊列的第一個上行數(shù)據(jù)包長度到第k個上行數(shù)據(jù)包長度,然后ONU計算這k個上行數(shù)據(jù)包長度(即k個元素)中是否包括第χ個截止元素。如果這k個元素中不包括第χ個截止元素,則該第χ個上報隊列接著取該上行隊列的第k+Ι個上行數(shù)據(jù)包長度到第業(yè)個上行數(shù)據(jù)包長度,然后ONU計算這k個元素中是否包括第χ個截止元素;如果這k個元素中仍不包括第χ個截止元素,則該第χ個上報隊列接著取該上行隊列的第業(yè)+1個上行數(shù)據(jù)包長度到第3k個上行數(shù)據(jù)包長度,然后ONU計算這k個元素中是否包括第χ個截止元素……以此類推,直至第χ個上報隊列中的k個元素中包括了第χ個截止元素,則第χ個上報隊列成形。當(dāng)ONU的每個上行隊列中有上行數(shù)據(jù)包發(fā)出時,該上行隊列所對應(yīng)的出口包長隊列或入口包長隊列就將已發(fā)出的數(shù)據(jù)包長度刪除掉,此時需要重新計算η個截止元素。當(dāng)ONU的一個或多個上行隊列中有閾值的數(shù)量或閾值的取值發(fā)生變化時,也需要重新計算η個截止元素。重新計算的截止元素就是是根據(jù)更新后的最早的上行數(shù)據(jù)包、或者更新后的閾值而確定的在不大于第X個閾值的前提下該上行隊列所包含的最大數(shù)量的完整的上行數(shù)據(jù)包中的最后一個上行數(shù)據(jù)包所對應(yīng)的長度元素。根據(jù)η個新的截止元素,每個上行隊列需要重新形成。每個上行隊列重新形成的方法為第χ個上行隊列判斷現(xiàn)有的k個元素中是否包括新的第X個截止元素;如果不包括新的第X個截止元素,則該第X個上報隊列接著取現(xiàn)有 k個元素之后的k個元素,然后再判斷這k個元素中是否包括新的第X個截止元素……以此類推,直至該第X個上報隊列中包括了新的第X個截止元素為止。第χ個新的上報長度就是該上行隊列的第1個上行數(shù)據(jù)包到第X個新的截止元素所對應(yīng)的上行數(shù)據(jù)包的長度總和。本發(fā)明為每個上行隊列引入了 η個上報隊列,每個上報隊列專門用于計算一個上報長度,因而計算η個上報長度可同時在SRAM中進行,因而計算速度很快,并且占用很少的 SRAM存儲空間。
權(quán)利要求
1.一種ONU計算上行隊列的上報長度的方法,其特征是ONU為每個上行隊列創(chuàng)建一個入口包長隊列和一個出口包長隊列;所述入口包長隊列和出口包長隊列的每個元素都是該上行隊列中的一個上行數(shù)據(jù)包的長度,所述入口包長隊列和出口包長隊列的總和記載了該上行隊列中所有上行數(shù)據(jù)包的長度;ONU的每個上行隊列有新的上行數(shù)據(jù)包加入時,該上行數(shù)據(jù)包的長度記錄在該上行隊列對應(yīng)的入口包長隊列之中;當(dāng)入口包長隊列存儲的數(shù)據(jù)長度達(dá)到Unit_dram時,ONU將所述入口包長隊列中長度為Unit_dram的數(shù)據(jù)存儲至該上行隊列對應(yīng)的出口包長隊列之中,然后將所述長度為 Unit_dram的數(shù)據(jù)從所述入口包長隊列中刪除;所述Unit_dram是所述DRAM的最小讀取或?qū)懭雴挝?;ONU的每個上行隊列有上行數(shù)據(jù)包發(fā)出時,所述發(fā)出的上行數(shù)據(jù)包的長度從該上行隊列對應(yīng)的出口包長隊列或入口包長隊列之中刪除掉;ONU還為每個上行隊列創(chuàng)建η個上報隊列,其中η為OLT為該ONU的該上行隊列設(shè)置的閾值的數(shù)量;每個上報隊列均為所述出口包長隊列的一部分,每個上報隊列中均包括一個截止元素;第χ個截止元素表示其所對應(yīng)的上行數(shù)據(jù)包是不大于第χ個閾值的前提下該上行隊列所包含的最大數(shù)量的完整的上行數(shù)據(jù)包中的最后一個上行數(shù)據(jù)包;第χ個上報長度就是該上行隊列的第1個上行數(shù)據(jù)包到第χ個截止元素所對應(yīng)的上行數(shù)據(jù)包的長度總和;所述χ為小于或等于η的自然數(shù);所述入口包長隊列以及η個上報隊列存儲在ONU芯片內(nèi)部的SRAM中;所述出口包長隊列存儲在ONU芯片外部的DRAM中。
2.根據(jù)權(quán)利要求1所述的ONU計算上行隊列的上報長度的方法,其特征是,設(shè)所述入口包長隊列的長度為Lengthjn,所述出口包長隊列的長度為Length_0ut,每個上報隊列的長度均為Length_i^port,每個上行隊列所能包含的上行數(shù)據(jù)包的最大數(shù)量為I^cketNunu max,每個上行數(shù)據(jù)包長度的存儲空間為PacketLength,則Unit_dram ^ Length_in ^ 2XUnit_dram ;Length_out = PacketNum_max X PacketLength+Unit_dram ;Length_report = Unit_dram。
3.根據(jù)權(quán)利要求2所述的ONU計算上行隊列的上報長度的方法,其特征是,每個上報隊列是這樣形成的首先第χ個上報隊列取該上行隊列的第一個上行數(shù)據(jù)包長度到第k個上行數(shù)據(jù)包長度,然后ONU計算這k個元素中是否包括第χ個截止元素;所述 k = Unit_dram/PacketLength, k 為自然數(shù);如果這k個元素中不包括第χ個截止元素,則該第χ個上報隊列接著取該上行隊列的第k+Ι個上行數(shù)據(jù)包長度到第業(yè)個上行數(shù)據(jù)包長度,然后ONU計算這k個元素中是否包括第χ個截止元素;如果這k個元素中仍不包括第χ個截止元素,則該第χ個上報隊列接著取該上行隊列的第業(yè)+1個上行數(shù)據(jù)包長度到第3k個上行數(shù)據(jù)包長度,然后ONU計算這k個元素中是否包括第χ個截止元素……以此類推,直至第χ個上報隊列的k個元素中包括了第χ個截止元素,則第χ個上報隊列成形。
4.根據(jù)權(quán)利要求2所述的ONU計算上行隊列的上報長度的方法,其特征是,當(dāng)ONU的每個上行隊列中有上行數(shù)據(jù)包發(fā)出時,或者當(dāng)ONU的一個或多個上行隊列中有閾值的數(shù)量或閾值的取值發(fā)生變化時,則該上行隊列重新計算η個截止元素;重新計算的截止元素就是是根據(jù)更新后的最早的上行數(shù)據(jù)包、或者更新后的閾值而確定的在不大于第χ個閾值的前提下該上行隊列所包含的最大數(shù)量的完整的上行數(shù)據(jù)包中的最后一個上行數(shù)據(jù)包所對應(yīng)的長度元素;根據(jù)η個新的截止元素,每個上行隊列需要重新形成,其方法為第χ個上行隊列判斷現(xiàn)有的k個元素中是否包括新的第χ個截止元素; 所述 k = Unit_dram/PacketLength, k 為自然數(shù);如果不包括新的第χ個截止元素,則該第χ個上報隊列接著取現(xiàn)有k個元素之后的k 個元素,然后再判斷這k個元素中是否包括新的第χ個截止元素……以此類推,直至該第χ個上報隊列中包括了新的第χ個截止元素為止。
全文摘要
本發(fā)明公開了一種ONU計算上行隊列的上報長度的方法,ONU為每個上行隊列創(chuàng)建一個入口包長隊列和一個出口包長隊列,分別存儲在SRAM和DRAM中;ONU的每個上行隊列有新的上行數(shù)據(jù)包加入時,該上行數(shù)據(jù)包的長度記錄在該上行隊列對應(yīng)的入口包長隊列之中;當(dāng)入口包長隊列存儲的數(shù)據(jù)長度達(dá)到Unit_dram時,該部分?jǐn)?shù)據(jù)轉(zhuǎn)存至該上行隊列對應(yīng)的出口包長隊列之中;ONU還為每個上行隊列創(chuàng)建n個上報隊列,均存儲在ONU芯片內(nèi)部的SRAM中。本發(fā)明ONU計算上行隊列的上報長度的方法僅需占用SRAM的部分存儲空間,卻充分利用了DRAM的存儲空間,并具有讀寫速度快、效率高的優(yōu)點。
文檔編號H04L12/56GK102469007SQ20101053482
公開日2012年5月23日 申請日期2010年11月8日 優(yōu)先權(quán)日2010年11月8日
發(fā)明者葉聰, 費繼承, 饒勇 申請人:高通創(chuàng)銳訊通訊科技(上海)有限公司