|
|
|
 |
|
|
核心路由器交換結構協(xié)處理器屬于因特網(wǎng)主干網(wǎng)核心路由器技術領域,其特征在于:由上行和下行兩模塊組成,用FPGA外接存儲器實現(xiàn),支持4Gb/s包線速。上行模塊,接收數(shù)據(jù)包過濾掉無用數(shù)據(jù)后,數(shù)據(jù)被分成兩路,每一路數(shù)據(jù)包被分成定長帶優(yōu)先級的若干數(shù)據(jù)片。每個數(shù)據(jù)片加上特定的頭成為信元,信元依據(jù)優(yōu)先級和目的地址不同屬于不同隊列,存于存儲器,依據(jù)隊列信息和來自下行模塊的流量控制信息,調度出信元,并發(fā)送給交換結構。下行模塊從交換結構接收兩路信元,提取其中的流量控制信息給上行模塊,去掉信元頭還原為數(shù)據(jù)片,數(shù)據(jù)片依據(jù)來源優(yōu)先級不同屬于不同隊列,存于存儲器,含有一個以上完整數(shù)據(jù)包分片的隊列參加調度,調度成功的隊列的數(shù)據(jù)包被輸出。 |
|
|
|
|
|
|
 |
|
核心路由器交換結構協(xié)處理器
核心路由器交換結構協(xié)處理器,其特征在于,所述交換結構協(xié)處理器是在大規(guī)模可編程數(shù)字集成電路芯片FPGA和FPGA片外存儲器中實現(xiàn)的,由上行模塊和下行模塊組成,其中: 上行模塊,它包括下列功能子模塊:包輸入接口、包分路器、第一路反壓、第二路反壓、6個先進先出存儲器:FIFO10、FIFO11、FIFO12、FIFO20、FIFO21、FIFO22、第一路包分片、第二路包分片、第一路信元緩存管理、第二路信元緩存管理、第一路隊列調度、第二路隊列調度、第一路信元發(fā)送、第二路信元發(fā)送、流量控制、以及上行CPU接口電路;其中: 包輸入接口,它有一個外部先進先出數(shù)據(jù)包存儲器FIFO的輸入端,從外部上行FIFO讀取數(shù)據(jù)包,過濾掉無效數(shù)據(jù),過濾后的每個數(shù)據(jù)包,有且只有一個頭標識和尾標識; 包分路器,它的輸入端和包輸入接口的數(shù)據(jù)包輸出端相連,對輸入的數(shù)據(jù)包,根據(jù)設定的狀態(tài),對包的頭標識進行識別,以包為單位分為兩路,也可以關閉某一路,讓包只走兩路中的一條通路,分路后的數(shù)據(jù)包分別輸入到所述FIFO10和FIFO20中; FIFO10、FIFO20各自的數(shù)據(jù)包輸入端分別和所述的包分路器的數(shù)據(jù)包輸出端相連; 第一路包分片模塊和第二路包分片模塊,分別從所述FIFO10、FIFO20的輸出端輸入數(shù)據(jù)包后,把數(shù)據(jù)包分片為76或128字節(jié)的信元,為每個信元加上符合CSIX-L1協(xié)議的信元頭,CSIX-L1信元頭后面緊接的是負載數(shù)據(jù),負載數(shù)據(jù)包含一個流量管理TM頭,該TM頭包括:源線卡號、信元標識、信元序列號、類型、優(yōu)先級,一個信元含有8位優(yōu)先級:TM頭含優(yōu)先級中的5位,信元擴展頭中含優(yōu)先級的3位,兩個包分片模塊將分成的信元分別發(fā)送給FIFO11、FIFO21; FIFO11和FIFO21,它們的數(shù)據(jù)輸入端分別和第一路和第二路包分片模塊輸出端相連,而它們的讀輸入端分別和第一路信元緩存管理、第二路信元緩存管理模塊各自的讀FIFO輸出端分別連接; 第一路信元緩存管理模塊和第二路信元緩存管理模塊分別從FIFO11、FIFO21讀入信元后,分別把輸入信元中具有相同目的線卡號和優(yōu)先級的數(shù)據(jù),按照分片的順序存放在同一個隊列中,不同目的線卡號和優(yōu)先級的信元組成不同的隊列,每個隊列信息以鏈表保存; 信元存儲器按照最大信元的大小被分成大小相等的2↑[N]個存儲塊,N一般取不小于13的自然數(shù),每個存儲塊可以存儲一個信元,組成每個存儲塊的存儲單元地址是連續(xù)的,一個數(shù)據(jù)包常常拆分成一個以上的數(shù)據(jù)信元,這些數(shù)據(jù)信元保存在不同的存儲塊中,這些存儲塊在存儲器中的位置可以是互不相鄰; 信元緩存管理模塊采用鏈表隊列對信元存儲空間進行管理,它包含兩類鏈表:信元隊列鏈表和空鏈表,信元隊列鏈表的鏈表節(jié)點保存每個隊列包含的信元信息,空鏈表保存外部信元存儲器中沒有利用的所有存儲塊信息,兩類鏈表都保存在外部鏈表存儲器中,動態(tài)共享鏈表存儲器空間,信元存儲器每個存儲塊的起始地址和鏈表存儲器中鏈表節(jié)點存儲地址一一對應,鏈表的每個節(jié)點單元存儲地址指示每個存儲塊的起始地址,單元的存儲內容,指示屬于同一個鏈表的下一個鏈表節(jié)點的地址; 每個信元緩存管理模塊都各有一個片內狀態(tài)存儲器,每個隊列是否存在信元的狀態(tài)信息保存在狀態(tài)存儲器中,一個存儲單元對應一個隊列,信元狀態(tài)存儲器至少有1025個存儲單元,每個單元分別用“1”或“0”表示對應的隊列是否存在信元,兩個信元緩存管理單元都分別管理1024個分成64個優(yōu)先級的單播隊列、以及一個不分優(yōu)先級的多播隊列; 流量管理模塊,接收來自交換結構下行模塊的流控數(shù)據(jù),并將到達的流控數(shù)據(jù)發(fā)送到第一隊列調度模塊、第二隊列調度模塊以及第一路信元發(fā)送模塊、第二路信元發(fā)送模塊; 所述的第一隊列調度模塊和第二隊列調度模塊,隊列調度采用帶加權的優(yōu)先級調度規(guī)則,多播沒有優(yōu)先級,為了便于調度,也給多播定義一個加權值,系統(tǒng)支持64個單播優(yōu)先級,每種優(yōu)先級定義一個加權值,優(yōu)先級越高對應的加權值就越大,每個隊列初始的加權和值都為0,隊列調度模塊周期性地從信元緩存管理模塊得到1024個單播隊列和1個多播隊列的狀態(tài)信息,若得到某個隊列狀態(tài)信息為0,則置該隊列的加權和值為0,如果某個隊列的狀態(tài)信息不為0,則該隊列的加權和值等于該隊列原來的加權和值再加上該隊列優(yōu)先級對應的加權值,隊列調度模塊對1025個隊列進行周期性的調度,調度出當前加權和值最大的隊列號傳送給信元緩存管理模塊,每次調度完畢,應該對調度成功隊列的加權和進行更新,更新后的調度成功隊列加權和等于未調度之前的加權和減去該隊列優(yōu)先級對應的加權值; 外部信元存儲器的未使用存儲塊個數(shù)小于等于16時,信元緩存管理模塊發(fā)出外部信元存儲器快滿信號給各自相連的FIFO11或FIFO21,同時停止從FIFO11或FIFO21讀入信元,如果后來通過信元的發(fā)送,未使用存儲塊個數(shù)增加,信元緩存管理模塊繼續(xù)從各自相連的FIFO11或FIFO21讀入信元; 第一路信元緩存管理模塊和第二路信元緩存管理模塊分別利用各自對應的隊列調度模塊成功調度出的隊列號,進行鏈表遍歷操作,得到該隊列的第一個信元,并將該信元發(fā)送發(fā)送給與信元緩存管理模塊相連的FIFO12或FIFO22,信元發(fā)送完成之后,對應的鏈表節(jié)點應該從信元隊列中刪除,信元緩存管理模塊將刪除的節(jié)點插入到空鏈表隊列中; 第一路信元發(fā)送模塊和第二路信元發(fā)送模塊根據(jù)采自流量控制模塊的鏈路級流量控制信息,決定是否分別從FIFO12、FIFO22中讀取信元發(fā)送到外部的交換結構,如果流量控制信息有效,說明交換結構沒有準備好接收信元,則不讀FIFO12或FIFO22,不進行信元發(fā)送,否則,流量控制信息無效,說明交換結構準備好接收信元,則讀FIFO12或FIFO22,進行信元發(fā)送; 第一路信元反壓模塊接收FIFO10幾乎滿、FIFO11幾乎滿和第一路信元緩存管理模塊提供的信元緩存幾乎滿信號,并產(chǎn)生一個幾乎滿的反壓信號給包分路器,第二路信元反壓模塊接收FIFO20幾乎滿、FIFO21幾乎滿和第二路信元緩存管理模塊提供的信元緩存幾乎滿信號,并產(chǎn)生一個幾乎滿的反壓信號給包分路器,包分路器根據(jù)系統(tǒng)的設定和接收的第一路反壓模塊和第二路反壓模塊信號,在第一路反壓模塊或第二路反壓模塊信號無效的情況下,可以設定系統(tǒng)支持的4種方式中的一種對數(shù)據(jù)包進行分路:(1)數(shù)據(jù)包優(yōu)先分配給第一路FIFO10,只有在第一路反壓模塊反壓信號有效的情況下,第二路反壓信號無效的情況下,數(shù)據(jù)才分配給第二路FIFO20,(2)數(shù)據(jù)包在第一路FIFO10和第二路FIFO20之間均勻分配,(3)數(shù)據(jù)包只分配給第一路FIFO10,(4)數(shù)據(jù)包只分配給第二路FIFO20; 上行CPU接口電路使得所述的上行模塊中各個功能子模塊與線卡上的CPU模塊互連,CPU發(fā)送指令對上行模塊的各個子模塊的運行進行控制,同時通過CPU指令能夠讀出各個功能子模塊的當前運行狀態(tài)信息,供用戶監(jiān)控上行模塊的運行使用; 下行模塊,它包含下列功能子模塊:第一路信元處理模塊、第二路信元處理模塊、流量控制模塊、數(shù)據(jù)包發(fā)送模塊以及下行CPU接口模塊,其中: 第一信元處理模塊和第二信元處理模塊包括:交換結構接口、信元先進先出FIFO、包重組模塊、數(shù)據(jù)片先進先出FIFO、數(shù)據(jù)包緩存管理模塊、隊列調度模塊、以及數(shù)據(jù)包先進先出FIFO模塊;除了交換結構接口模塊有雙時鐘外,其它模塊都只采用下行模塊主時鐘做為工作時鐘;其中: 交換結構接口:包括第一路交換結構接口和第二路交換結構接口,第一路交換結構接口輸入端和交換結構出口輸出的信元開始信號SOF0、奇偶校驗信號PAR0、32位信元數(shù)據(jù)信號data0、數(shù)據(jù)同步時鐘CSIX_CLK0相連,同時它也接收第一路信元FIFO模塊的信元快滿反饋信號,和下行模塊主時鐘CLK相連;第二路交換結構接口輸入端和交換結構出口輸出的信元開始信號SOF1、奇偶校驗信號PAR1、32位信元數(shù)據(jù)信號data1、數(shù)據(jù)同步時鐘CSIX_CLK1相連,同時它也接收第二路信元FIFO模塊的信元快滿反饋信號,和下行模塊主時鐘CLK相連; 交換結構接口將接收的信元區(qū)分為單播、多播和流控信元,完成單播、多播和流控信元的分離,并將分離出的單播和多播數(shù)據(jù)去掉CSIX-L1信元基本和擴展頭,保留擴展頭中的優(yōu)先級信息,信元擴展頭中的優(yōu)先級信息和余下的信元負載部分發(fā)送給各自的信元FIFO模塊;如果信元FIFO模塊反饋給交換結構接口的FIFO快滿信號有效,則交換結構接口將接收的信元以一個完整的信元負載為單位丟棄,不發(fā)送給信元FIFO模塊; 除了交換結構接口模塊有雙時鐘外,下行模塊的其它子模塊都只有一個單一時鐘CLK; 交換結構接口還提取信元中的鏈路級流量控制信息,分離出流量控制信元,這些信息發(fā)送給流量控制模塊; 信元FIFO模塊:包括第一信元FIFO和第二信元FIFO模塊,它們各自輸入端和所述各自相連交換結構接口輸出端相連,讀信號來自包重組模塊; 包重組模塊:包括第一路包重組和第二路包重組,它們各自的數(shù)據(jù)輸入端分別和對應的信元FIFO數(shù)據(jù)輸出端以及信元FIFO是否為空的指示信號相連,此外,它還接收各自相連的數(shù)據(jù)片FIFO反饋的快滿信號,如果數(shù)據(jù)片FIFO反饋的快滿信號無效,包重組模塊就從信元FIFO中讀取去掉CSIX-L1頭的信元負載數(shù)據(jù),根據(jù)信元負載數(shù)據(jù)流量管理TM頭中的源線卡號、信元標識、信元序列號、類型和信元8位優(yōu)先級來判斷接收的信元是否正確,包重組模塊去掉負載數(shù)據(jù)的TM頭,去掉TM頭的CSIX-L1負載稱為數(shù)據(jù)片,按照TM頭中的源線卡號、類型和信元優(yōu)先級不同,數(shù)據(jù)片分屬于不同隊列,如果數(shù)據(jù)片來源的源線卡號、類型和優(yōu)先級相同,則它們屬于同一隊列,共1040個隊列:1024個單播隊列,16個多播隊列,包重組模塊將數(shù)據(jù)片和數(shù)據(jù)片對應的隊列號傳送給數(shù)據(jù)片FIFO;包重組模塊含有一個序列號存儲器,序列號存儲器為1040個隊列的每一個隊列分配一個存儲單元,用來記錄每個隊列預期接收的信元序列號,利用序列號存儲器包重組模塊能識別和標識錯誤的數(shù)據(jù)包; 數(shù)據(jù)片FIFO模塊:包括第一路數(shù)據(jù)片FIFO和第二路數(shù)據(jù)片FIFO,它們的數(shù)據(jù)輸入端與各自相連的包重組模塊的輸出端相連,它的讀信號來自各自相連的數(shù)據(jù)包緩存管理模塊; 數(shù)據(jù)包緩存管理模塊接收隊列調度模塊輸出的隊列調度信息、數(shù)據(jù)包FIFO快滿信號,數(shù)據(jù)包緩存管理模塊還和片外數(shù)據(jù)緩存和鏈表存儲器相連; 數(shù)據(jù)包緩存管理模塊:包括第一路數(shù)據(jù)包緩存管理和第二路數(shù)據(jù)包緩存管理,它們的數(shù)據(jù)輸入端和各自相連的數(shù)據(jù)片FIFO數(shù)據(jù)輸出端相連,數(shù)據(jù)包緩存管理模塊將來自數(shù)據(jù)片FIFO具有相同源線卡號和優(yōu)先級的數(shù)據(jù)片,按照接收的順序存放在同一個隊列中,一個數(shù)據(jù)包由一個或多個數(shù)據(jù)片組成,數(shù)據(jù)包緩存管理模塊總共支持1024個單播隊列,16個多播隊列,共1040個隊列,單播隊列分成64個優(yōu)先級,多播隊列不分優(yōu)先級,采用鏈表結構進行數(shù)據(jù)包存儲的隊列管理,為了進行數(shù)據(jù)包的存儲管理,數(shù)據(jù)包緩存管理模塊外接兩個存儲器,一個存儲器,做為鏈表存儲器,一個存儲器做為數(shù)據(jù)片存儲器,數(shù)據(jù)片存儲器被分成大小相等的2↑[N]個存儲塊,N一般取不小于13的自然數(shù),每個存儲塊可以存儲一個數(shù)據(jù)片,組成每個存儲塊的存儲單元地址是連續(xù)的,一個數(shù)據(jù)包常常由一個以上的數(shù)據(jù)片組成,這些數(shù)據(jù)片保存在不同的存儲塊中,這些存儲塊在存儲器中的位置可以是互不相鄰,每個存儲塊的起始地址和鏈表存儲器中的鏈表節(jié)點存儲地址一一對應; 鏈表存儲器保存鏈表,鏈表的每個節(jié)點單元存儲地址指示每個數(shù)據(jù)片的起始地址,單元的存儲內容,存儲數(shù)據(jù)片信息,同時存儲屬于同一個隊列的下一個鏈表節(jié)點的地址,數(shù)據(jù)包緩存管理模塊也包含兩類鏈表:數(shù)據(jù)片隊列鏈表和空鏈表,這兩類鏈表的建立、刪除、插入方式和信元緩存管理模塊一樣; 數(shù)據(jù)包緩存管理模塊含有數(shù)據(jù)包隊列狀態(tài)存儲器,該存儲器保存每個數(shù)據(jù)包隊列是否存在數(shù)據(jù)包的狀態(tài)標識信息,每個存儲單元取值為0或1;1表示相應隊列含有完整數(shù)據(jù)包,0表示不含完整數(shù)據(jù)包,隊列狀態(tài)存儲器一個存儲單元對應一個隊列; 外部數(shù)據(jù)片存儲器的未使用存儲塊個數(shù)小于等于16時,數(shù)據(jù)包緩存管理模塊停止從各自的數(shù)據(jù)片FIFO讀入數(shù)據(jù)片,如果后來通過數(shù)據(jù)片的發(fā)送,未使用存儲塊個數(shù)增加,數(shù)據(jù)包緩存管理模塊繼續(xù)從各自相連的數(shù)據(jù)片FIFO讀入數(shù)據(jù)片; 隊列調度:包括第一路隊列調度和第二路隊列調度,它們的輸入和輸出端與各自相連的數(shù)據(jù)包緩存管理模塊相應的輸入輸出相連,隊列調度為所有多播隊列定義一個加權值,為64個單播優(yōu)先級,每種優(yōu)先級定義一個加權值,優(yōu)先級越高對應的加權值就越大,每個隊列初始的加權和值都為0,隊列調度模塊周期性地從數(shù)據(jù)包緩存管理模塊得到1024個單播隊列和16個多播隊列的狀態(tài)信息,若得到某個隊列狀態(tài)信息為0,則置該隊列的加權和值為0,如果某個隊列的狀態(tài)信息不為0,則該隊列的加權和值等于該隊列原來的加權和值加上該隊列優(yōu)先級對應的加權值,隊列調度模塊對1040個隊列進行周期性的調度,調度出一個加權和值最大的隊列號傳送給數(shù)據(jù)包緩存管理模塊,每次調度完畢,應該對調度成功隊列的加權和進行更新,更新后的調度成功隊列加權和等于該隊列調度之后的加權和減去該隊列優(yōu)先級對應的加權值; 數(shù)據(jù)包緩存管理模塊接收到調度成功信息之后,首先找到調度成功的隊列的頭指針,根據(jù)隊列頭指針,將構成該隊列隊頭數(shù)據(jù)包的所有數(shù)據(jù)片的存儲快地址找出來,以數(shù)據(jù)片為單位從數(shù)據(jù)片存儲器中將數(shù)據(jù)發(fā)送給數(shù)據(jù)包FIFO,當然如果數(shù)據(jù)包FIFO的反饋信號有效,數(shù)據(jù)包FIFO快滿了,則數(shù)據(jù)包緩存管理模塊暫停發(fā)送數(shù)據(jù)片給數(shù)據(jù)包FIFO,數(shù)據(jù)包FIFO的反饋信號如果變?yōu)闊o效,則數(shù)據(jù)包緩存管理模塊繼續(xù)發(fā)送數(shù)據(jù)片給數(shù)據(jù)包FIFO; 數(shù)據(jù)包FIFO:包括第一路數(shù)據(jù)包FIFO和第二路數(shù)據(jù)包FIFO,它們各自把從數(shù)據(jù)包緩存管理模塊收到的數(shù)據(jù)包發(fā)送給數(shù)據(jù)包發(fā)送模塊,數(shù)據(jù)包發(fā)送模塊以包為單位,交替從第一路數(shù)據(jù)包FIFO和第二路數(shù)據(jù)包FIFO中讀取數(shù)據(jù)發(fā)送給交換結構協(xié)處理器相連的外部下行FIFO,如果外部下行FIFO反饋給數(shù)據(jù)包發(fā)送電路FIFO快滿信號,則數(shù)據(jù)包發(fā)送模塊暫停數(shù)據(jù)包的發(fā)送,直到下行FIFO反饋的快滿信號無效時,才又給下行FIFO發(fā)送數(shù)據(jù)包; 流量控制模塊,它的輸入端分別接收第一路、第二路信元處理交換結構接口模塊的輸出流控數(shù)據(jù)總線fc0、fc1,以及第一路和第二路信元處理模塊信元FIFO快滿信號,流量控制模塊的輸出接上行模塊流量控制數(shù)據(jù)輸入端; 下行CPU接口模塊,它使得下行模塊內部各個功能模塊與線路接口卡上的CPU進行互聯(lián),接受外界的CPU指令,對下行模塊運行進行控制,同時能夠接收CPU指令讀出其各個子模塊內部狀態(tài)信息。
|
|
|
|
|
 |
|
專利號: |
200810114737 |
申請日: |
2008年6月11日 |
公開/公告日: |
2008年10月22日 |
授權公告日: |
|
申請人/專利權人: |
清華大學 |
國家/省市: |
北京(11) |
郵編: |
100084 |
發(fā)明/設計人: |
趙有健、楊珂、徐明偉、全成斌 |
代理人: |
朱琨 |
專利代理機構: |
北京觀韜專利代理有限責任公司(11246) |
專利代理機構地址: |
北京市海淀區(qū)新街口外大街5號(100088) |
專利類型: |
發(fā)明 |
公開號: |
101291546 |
公告日: |
|
授權日: |
|
公告號: |
000000000 |
優(yōu)先權: |
|
審批歷史: |
|
附圖數(shù): |
4 |
頁數(shù): |
12 |
權利要求項數(shù): |
7 |
| |
|
|
|