專利名稱:包交換電路及包交換方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù),尤其涉及一種包交換電路及包交換方法。
背景技術(shù):
包交換,也稱為分組交換,它是將用戶傳送的數(shù)據(jù)分成一定的長度,每個部分叫做一個分組。在每個分組的前面加上一個分組頭,用以指明該分組發(fā)往何地址,然后由交換機根據(jù)每個分組的分組頭中的信息,將分組轉(zhuǎn)發(fā)至目的地址。現(xiàn)有技術(shù)中,包交換電路被廣泛地應(yīng)用在固網(wǎng)以及無線通信系統(tǒng)中。在全球移動通信(Global SystemFor Mobile Communication,簡稱為GSM)以及通用移動通信系統(tǒng)(Universal MobileTelecommunications System,簡稱為UMTS)等無線通信制式中,數(shù)據(jù)包的發(fā)送通常是以固定時隙突發(fā)的方式進行傳輸,同時存在大量的組播或廣播數(shù)據(jù)包,這就必然導(dǎo)致包交換電 路針對無線基站系統(tǒng)的應(yīng)用場景在芯片設(shè)計結(jié)構(gòu)上需要有所針對性,既要解決瞬時突發(fā)大流量數(shù)據(jù)包的沖擊,又要考慮緩存的成本問題。現(xiàn)有技術(shù)中提供的包交換方式通常為在包交換電路的各輸入端口的緩存中存儲進入包交換電路的數(shù)據(jù)包,使用輪詢調(diào)度算法輪詢處理各個輸入端口的緩存中存儲的數(shù)據(jù)包,經(jīng)過路由計算后分發(fā)給各個輸出端口的緩存。對于這種采用輪詢后路由分發(fā)的包交換方式,實現(xiàn)方法簡單,資源開銷小,但是,對于無線基站存在的瞬時突發(fā)大流量數(shù)據(jù)包的情況,這種包交換方式需要為每個輸出端口提供較大的緩存方能保證數(shù)據(jù)包不因為緩存溢包而丟包。但是,為包交換電路的每個輸出端口提供較大的輸出緩存會造成存儲資源的浪費以及包交換電路成本的提高。
發(fā)明內(nèi)容
本發(fā)明提供一種用于解決存儲資源的浪費問題,以及有效降低成本的包交換電路,包括多個輸入端口、多個輸出端口、第一輪詢單元、路由計算單元、共享緩存、與輸出端口一一對應(yīng)的控制緩存、以及第二輪詢單元,其中,每個輸入端口均具有輸入緩存,每個輸出端口均具有輸出緩存;所述輸入端口,用于接收數(shù)據(jù)包并將所述數(shù)據(jù)包存儲在自身的輸入緩存中;所述第一輪詢單元,用于對所述輸入端口的輸入緩存進行輪詢;所述路由計算單元,用于對所述第一輪詢單元輪詢到的輸入緩存中存儲的至少一個數(shù)據(jù)包進行路由計算,確定所述數(shù)據(jù)包對應(yīng)的輸出端口 ;所述共享緩存,用于存儲經(jīng)過所述路由計算單元確定輸出端口的數(shù)據(jù)包,并根據(jù)輸出端口將數(shù)據(jù)包在共享緩存中的存儲地址存入相應(yīng)的控制緩存中;所述第二輪詢單元,用于對多個控制緩存進行輪詢,在輪詢到的控制緩存中獲得至少一個數(shù)據(jù)包在共享緩存中的存儲地址,并根據(jù)所述存儲地址在共享緩存中獲得數(shù)據(jù)包,并存入相應(yīng)的輸出端口的輸出緩存中;所述輸出端口,用于讀取自身的輸出緩存并發(fā)送數(shù)據(jù)包。
本發(fā)明提供的基于上述包交換電路的包交換方法包括對輪詢到的 輸入緩存中存儲的至少一個數(shù)據(jù)包進行路由計算,確定數(shù)據(jù)包的輸出端口 ;將已確定輸出端口的數(shù)據(jù)包存入共享緩存,根據(jù)輸出端口將數(shù)據(jù)包在共享緩存中的存儲地址存入相應(yīng)的控制緩存中;在輪詢到的控制緩存中獲得至少一個數(shù)據(jù)包在共享緩存中的存儲地址,并根據(jù)所述存儲地址在共享緩存中獲得數(shù)據(jù)包,并存入相應(yīng)的輸出緩存中。本發(fā)明的技術(shù)效果是將突發(fā)的大流量數(shù)據(jù)包都存儲在共享緩存中,每個輸出端口對應(yīng)的控制緩存中存儲數(shù)據(jù)包在共享緩存中的存儲地址,通過讀取控制緩存中的存儲地址,到共享緩存中獲得相應(yīng)的數(shù)據(jù)包,每個輸出端口的輸出緩存僅需要使用較小的存儲空間,可以有效減少各輸出緩存的存儲資源浪費。
圖I為本發(fā)明實施例一提供的包交換電路的結(jié)構(gòu)示意圖;圖2為本發(fā)明實施例二提供的基于上述實施例提供的包交換電路的包交換方法的流程圖;圖3為本發(fā)明實施例三提供的基于上述實施例提供的包交換電路的包交換方法的流程圖;圖4為本發(fā)明實施例四提供的基于上述實施例提供的包交換電路的包交換方法的流程圖。
具體實施例方式圖I為本發(fā)明實施例一提供的包交換電路的結(jié)構(gòu)示意圖,如圖I所示,該包交換電路包括多個輸入端口、多個輸出端口、第一輪詢單元、路由計算單元、共享緩存、與輸出端口一一對應(yīng)的控制緩存以及第二輪詢單元。其中,每個輸入端口均具有輸入緩存,每個輸出端口均具有輸出緩存。具體的,輸入端口用于接收數(shù)據(jù)包并將接收到的數(shù)據(jù)包存儲在自身的輸入緩存中;第一輪詢單元用于對輸入端口的輸入緩存進行輪詢;路由計算單元用于對第一輪詢單元輪詢到的輸入緩存中存儲的至少一個數(shù)據(jù)包進行路由計算,以確定數(shù)據(jù)包對應(yīng)的輸出端口 ;共享緩存用于存儲經(jīng)過路由計算單元確定輸出端口的數(shù)據(jù)包,并根據(jù)輸出端口將數(shù)據(jù)包在共享緩存中的存儲地址存入相應(yīng)的控制緩存中;第二輪詢單元用于對多個控制緩存進行輪詢,在輪詢到的控制緩存中獲得至少一個數(shù)據(jù)包在共享緩存中的存儲地址,并根據(jù)存儲地址在共享緩存中獲得數(shù)據(jù)包,并存入相應(yīng)的輸出端口的輸出緩存中;輸出端口用于讀取自身的輸出緩存并發(fā)送數(shù)據(jù)包。其中,共享緩存用于存儲來自全部輸入緩存的數(shù)據(jù)包,無論該數(shù)據(jù)包是準(zhǔn)備發(fā)往哪個輸出端口的,均需要存入共享緩存中,因此,數(shù)據(jù)包可以順序地寫入共享緩存,那么數(shù)據(jù)包在共享緩存中的存儲地址就可以按照數(shù)據(jù)包到達共享緩存的先后循序依次遞增,而且存儲地址還可以循環(huán)使用。這樣更加有利于共享緩存的存儲空間的有效利用,相比較于其他方式的存儲有著更好的系統(tǒng)健壯性。同時,不需要特殊的指針電路對存儲地址進行維護,節(jié)約了系統(tǒng)成本。該共享緩存的大小可以根據(jù)無線基站的實際應(yīng)用場景而設(shè)計,要能夠存儲瞬時突發(fā)大流量的全部數(shù)據(jù)包,一般情況下,瞬時突發(fā)大流量的全部數(shù)據(jù)包的總量是可以預(yù)先獲知的,那么,共享緩存的容量僅需根據(jù)預(yù)先獲知的數(shù)據(jù)包總量來設(shè)置即可。但為了更加便利地設(shè)置該共享緩存,可以將該共享的緩存的容量設(shè)置為大于或等于全部是輸入緩存的容量之和??刂凭彺娴臄?shù)量與輸出端口的數(shù)量相同,也即每個輸出端口都對應(yīng)有一個控制緩存,每個控制緩存中存儲的內(nèi)容是準(zhǔn)備發(fā)送到其相應(yīng)輸出端口的數(shù)據(jù)包在共享緩存中的地址信息。第一輪詢單元以及第二輪詢單元都可以使用狀態(tài)機或者計數(shù)器等實現(xiàn)其功倉泛。本發(fā)明實施例提供的包交換電路,將突發(fā)的大流量數(shù)據(jù)包都存儲在共享緩存中,每個輸出端口對應(yīng)的控制緩存中存儲數(shù)據(jù)包在共享緩存中的存儲地址,通過讀取控制緩存中的存儲地址,到共享緩存中獲得相應(yīng)的數(shù)據(jù)包,每個輸出端口的輸出緩存僅需要使用較小的存儲空間,可以有效減少各輸出緩存的存儲資源浪費。
在上述實施方式的基礎(chǔ)上,該包交換電路的第二輪詢單元還可以用于檢測輪詢到的控制緩存所對應(yīng)的輸出端口的輸出緩存是否反壓;如果反壓,輪詢下一個控制緩存。需要說明的是,反壓是指如果當(dāng)前處理的輸出端口對應(yīng)的輸出緩存已經(jīng)滿了,沒有足夠的存儲空間繼續(xù)存包,則會將這樣的信息反饋給自身的前一級單元(也即第二輪詢單元),要求前一級單元不要再發(fā)包給自己。如果某一個輸出緩存反壓,則不讀取其對應(yīng)的控制緩存中的地址信息,而是輪詢下一個控制緩存,處理下一個輸出緩存,不會存在由于某一個輸出緩存反壓而導(dǎo)致發(fā)包暫停,同時對于由于反壓而停止發(fā)包的輸出端口的發(fā)包順序也不會發(fā)生改變。通過這種方式可以有效降低數(shù)據(jù)包的丟包率。在上述實施方式的基礎(chǔ)上,該包交換電路的共享緩存還可以用于判斷待存入共享緩存的數(shù)據(jù)包與已存入共享緩存的數(shù)據(jù)包之間是否相同;如果相同,丟棄待存入共享緩存的數(shù)據(jù)包;如果不相同,將待存入共享緩存的數(shù)據(jù)包存入共享緩存即可。上述實施例提供的包交換電路,對于組播或者廣播的數(shù)據(jù)包,經(jīng)過路由計算后,存儲共享緩存的僅為一個數(shù)據(jù)包,有效避免了瞬時突發(fā)大流量數(shù)據(jù)包時對于包交換電路輸出緩存的擁塞情況。圖2為本發(fā)明實施例二提供的基于上述實施例提供的包交換電路的包交換方法的流程圖,如圖2所示,該方法包括步驟201、對輪詢到的輸入緩存中存儲的至少一個數(shù)據(jù)包進行路由計算,確定數(shù)據(jù)包的輸出端口;步驟203、將已確定輸出端口的數(shù)據(jù)包存入共享緩存,根據(jù)輸出端口將數(shù)據(jù)包在共享緩存中的存儲地址存入相應(yīng)的控制緩存中;具體的,可以按照數(shù)據(jù)包到達共享緩存的先后順序?qū)?shù)據(jù)包進行存儲,數(shù)據(jù)包的存儲地址可以依次地址,且循環(huán)使用。步驟205、在輪詢到的控制緩存中獲得至少一個數(shù)據(jù)包在共享緩存中的存儲地址,并根據(jù)存儲地址在共享緩存中獲得數(shù)據(jù)包,并存入相應(yīng)的輸出緩存中。在上述實施方式的基礎(chǔ)上,圖3為本發(fā)明實施例三提供的基于上述實施例提供的包交換電路的包交換方法的流程圖,如圖3所示,在步驟205之前,該方法還可以包括步驟204、檢測輪詢到的控制緩存所對應(yīng)的輸出端口的輸出緩存是否反壓;
如果反壓,輪詢下一個控制緩存;如果不反壓,執(zhí)行步驟205。在上述實施方式的基礎(chǔ)上,圖4為本發(fā)明實施例四提供的基于上述實施例提供的包交換電路的包交換方法的流程圖,如圖4所示,在步驟203之前,該方法還可以包括步驟202、判斷待存入共享緩存的數(shù)據(jù)包與已存入共享緩存的數(shù)據(jù)包之間是否相同;如果相同,丟棄待存入共享緩存的數(shù)據(jù)包;如果不相同,執(zhí)行步驟203。將突發(fā)的大流量數(shù)據(jù)包都存儲在共享緩存中,每個輸出端口對應(yīng)的控制緩存中存 儲數(shù)據(jù)包在共享緩存中的存儲地址,通過讀取控制緩存中的存儲地址,到共享緩存中獲得相應(yīng)的數(shù)據(jù)包,每個輸出端口的輸出緩存僅需要使用較小的存儲空間,可以有效減少各輸出緩存的存儲資源浪費。最后應(yīng)說明的是以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。
權(quán)利要求
1.一種包交換電路,其特征在于,包括多個輸入端口、多個輸出端口、第一輪詢單兀、路由計算單元、共享緩存、與輸出端口一一對應(yīng)的控制緩存、以及第二輪詢單元,其中,每個輸入端口均具有輸入緩存,每個輸出端口均具有輸出緩存; 所述輸入端口,用于接收數(shù)據(jù)包并將所述數(shù)據(jù)包存儲在自身的輸入緩存中; 所述第一輪詢單元,用于對所述輸入端口的輸入緩存進行輪詢; 所述路由計算單元,用于對所述第一輪詢單元輪詢到的輸入緩存中存儲的至少一個數(shù)據(jù)包進行路由計算,確定所述數(shù)據(jù)包對應(yīng)的輸出端口 ; 所述共享緩存,用于存儲經(jīng)過所述路由計算單元確定輸出端口的數(shù)據(jù)包,并根據(jù)輸出端口將數(shù)據(jù)包在共享緩存中的存儲地址存入相應(yīng)的控制緩存中; 所述第二輪詢單元,用于對多個控制緩存進行輪詢,在輪詢到的控制緩存中獲得至少一個數(shù)據(jù)包在共享緩存中的存儲地址,并根據(jù)所述存儲地址在共享緩存中獲得數(shù)據(jù)包,并存入相應(yīng)的輸出端口的輸出緩存中; 所述輸出端口,用于讀取自身的輸出緩存并發(fā)送數(shù)據(jù)包。
2.根據(jù)權(quán)利要求I所述的包交換電路,其特征在于,所述第二輪詢單元還用于檢測輪詢到的控制緩存所對應(yīng)的輸出端口的輸出緩存是否反壓;如果反壓,輪詢下一個控制緩存。
3.根據(jù)權(quán)利要求I或2所述的包交換電路,其特征在于,所述共享緩存還用于判斷待存入共享緩存的數(shù)據(jù)包與已存入共享緩存的數(shù)據(jù)包之間是否相同; 如果相同,丟棄所述待存入共享緩存的數(shù)據(jù)包; 如果不同,將所述待存入共享緩存的數(shù)據(jù)包存入共享緩存。
4.根據(jù)權(quán)利要求I至3中任一項所述的包交換電路,其特征在于,所述共享緩存中數(shù)據(jù)包的存儲地址,按照數(shù)據(jù)包到達共享緩存的先后順序依次遞增,且循環(huán)使用。
5.根據(jù)權(quán)利要求I至4中任一項所述的包交換電路,其特征在于,所述共享緩存的容量大于或等于全部輸入緩存的容量之和。
6.一種基于權(quán)利要求I至5中任一項所述的包交換電路的包交換方法,其特征在于,包括 對輪詢到的輸入緩存中存儲的至少一個數(shù)據(jù)包進行路由計算,確定數(shù)據(jù)包的輸出端Π ; 將已確定輸出端口的數(shù)據(jù)包存入共享緩存,根據(jù)輸出端口將數(shù)據(jù)包在共享緩存中的存儲地址存入相應(yīng)的控制緩存中; 在輪詢到的控制緩存中獲得至少一個數(shù)據(jù)包在共享緩存中的存儲地址,并根據(jù)所述存儲地址在共享緩存中獲得數(shù)據(jù)包,并存入相應(yīng)的輸出緩存中。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述在輪詢到的控制緩存中獲得至少一個數(shù)據(jù)包在共享緩存中的存儲地址之前,所述方法還包括 檢測輪詢到的控制緩存所對應(yīng)的輸出端口的輸出緩存是否反壓; 如果反壓,輪詢下一個控制緩存。
8.根據(jù)權(quán)利要求6或7所述的方法,其特征在于,所述將已確定輸出端口的數(shù)據(jù)包存入共享緩存之前,所述方法還包括 判斷待存入共享緩存的數(shù)據(jù)包與已存入共享緩存的數(shù)據(jù)包之間是否相同; 如果相同,丟棄所述待存入共享緩存的數(shù)據(jù)包;如果不同,執(zhí)行所述將已確定輸出端口的數(shù)據(jù)包存入共享緩存的步驟。
9.根據(jù)權(quán)利要求6至8中任一項所述的方法,其特征在于,所述將已確定輸出端口的數(shù)據(jù)包存入共享緩存具體包括 按照數(shù)據(jù)包到達共享緩存的先后順序?qū)λ鰯?shù)據(jù)包進行存儲,數(shù)據(jù)包的存儲地址依次遞增,且循環(huán)使用。
10.根據(jù)權(quán)利要求6至9中任一項所述的方法,其特征在于,所述共享緩存的容量大于或等于全部輸入緩存的容量之和。
全文摘要
本發(fā)明提供一種包交換電路及包交換方法。每個輸入端口均具有輸入緩存,每個輸出端口均具有輸出緩存;第一輪詢單元,用于對輸入端口的輸入緩存進行輪詢;路由計算單元,用于對輪詢到的輸入緩存中存儲的至少一個數(shù)據(jù)包進行路由計算,確定數(shù)據(jù)包對應(yīng)的輸出端口;共享緩存,用于存儲經(jīng)過路由計算單元確定輸出端口的數(shù)據(jù)包,并根據(jù)輸出端口將數(shù)據(jù)包在共享緩存中的存儲地址存入相應(yīng)的控制緩存中;第二輪詢單元對多個控制緩存進行輪詢,在輪詢到的控制緩存中獲得至少一個數(shù)據(jù)包在共享緩存中的存儲地址,根據(jù)存儲地址在共享緩存中獲得數(shù)據(jù)包存入相應(yīng)的輸出端口的輸出緩存中。
文檔編號H04L12/56GK102780611SQ20121018397
公開日2012年11月14日 申請日期2012年6月6日 優(yōu)先權(quán)日2012年6月6日
發(fā)明者萬玉鵬, 余劍, 盧海彥 申請人:華為技術(shù)有限公司