新四季網

有效處理通信流量的系統和方法

2023-05-03 08:33:36


專利名稱::有效處理通信流量的系統和方法
技術領域:
:本發明涉及一種用於有效通信流量處理的系統和方法,特別涉及一種將通信流量按預定的總線流量寬度重排並將選擇的流量類型區分優先次序的交換系統和方法。
背景技術:
:IP網上語音(VoIP)在本領域裡眾所周知,且已經證明其用於通信是非常有用和節省成本的。但是,一些用戶發現VoIP質量達不到他們的期望或要求。特別地,延遲和抖動是VoIP最主要的問題。另外,VoIP的安全性也是一個令人擔心的問題。由於沒有身份驗證給VoIP用戶,使用各種知名黑客系統就可以輕易地竊聽和回放VoIP用戶之間的談話。而且,儘管開發了一些軟體用來減少延遲和抖動,但當VoIP流量增加時,語音質量並不能得到保證。當前技術提供一定接口用於在一個通信系統裡交換數據信息包。例如,在美國專利6,668,297中Karr等披露了一個接口,通過POS(SONET上的數據包)實施,將物理層(PHY)設備互連到連結層設備。但是,這個接口設計在多信道系統裡只有較低的吞吐量。另外,這個接口設計通常是為普通數據傳送而設計,並不能為傳送語音通信而提供有效途徑。因此,需要提供一種系統和方法用於有效且安全地處理和傳輸語音通信。發明概述此處披露了一種數據處理方法。本方法包括以下步驟接收初始數據寬度窄於或等於預定數據寬度的流量;重排接收到的流量到預定數據寬度的總線流量裡;識別總線流量內的一個特別流量;處理總線流量;給予特別流量的優先權次序優於總線流量裡的其它流量;並依照優先次序的結果輸出總線流量。而且,此處披露了一種用於數據處理的系統。本系統包括一個電路用於接收並重排一個初始數據寬度窄於或等於預定數據寬度的流量到所述預定數據寬度的總線流量;一個電路用於辨認總線流量裡一個特別流量;一個處理器用於處理重排的總線流量;和一個電路用於給予特別流量以優先權次序優於總線流量裡其它流量。再者,此處披露了一種用於安全幀傳輸的設備。本設備包括一個接收電路用於接收幀;和一個入口處理器用於處理幀以確定是否進一步處理此幀。依照本發明披露的一個實施例將流量重排到一個預定總線流量數據寬度,以確保在多信道系統裡的高吞吐量。另外,依照本發明披露的一個實施例將一個特別類型的流量(如語音)從其它普通數據流量區分出來,並提供優先權來傳輸此特別流量。再者,由於VoIP用戶是由網絡驗證和授權,VoIP通話的安全性得以保證,且通話不會被泛濫或傳播給其他用戶。所以,本發明提供一種有效且安全的語音流量處理和傳輸的系統和方法。圖l是描述本發明一個實施例的總體構造的方框示意圖。圖2是描述如圖1所示的本發明相同實施例的總體過程的流程圖。圖3是一個可以實施所述方案的通用計算機的方框示意圖。圖4是描述如圖1所述的轉發晶片模塊的方框示意圖。圖5是描述如圖1所述的排隊晶片模塊的方框示意圖。圖6是表示存儲控制器的方框示意圖。圖7是圖1MUX晶片140的結構方框示意圖。圖8是圖1DEMUX晶片190的結構方框示意圖。圖9顯示由圖1轉發晶片150處理的Ethernet和IP幀格式。圖10是在具體埠上的Ethernet幀的每個區段上執行處理的流程圖。圖11是圖4入口處理模塊420的功能流程示意圖。圖12顯示一個埠表格存儲器的組織結構。圖13顯示一個VLAN屬性表格的格式。圖14顯示一個生成樹表格的格式。圖15是2層轉發功能的流程圖。圖16是一個學習過程的流程圖。圖17是一個時效過程的流程圖。圖18顯示一個時效表格的編碼。0027]圖19顯示學習FIFO寄存器的格式。圖20是2層和3層轉發技術的流程圖。圖21是一個RFC1812硬體裡進行單播工P轉發的流程圖。圖22是IP頭檢驗過程的流程圖。圖23是IP頭校驗和過程的流程圖。圖24是ira地址査找過程的流程圖。圖25是轉發更新過程的流程圖。圖26是轉發輸出過程的流程示意圖。圖27顯示分類輸入項欄位的格式。圖28是一個由CAM執行過程的流程圖。圖29是下一跳功能的流程圖。圖30是下一跳模塊過程的流程圖。圖31顯示SRAM裡的2層、3層,和流程分類輸入項以及在外部SRAM裡下一跳表格內的對應輸入項之間的關係。圖32顯示Ethernet幀頭裡將被替換的欄位。圖33顯示L2NHInfo和L3NHInfo表格裡的輸入項格式。圖34顯示在FCNInfo表格裡的輸入項格式。圖35是多播處理功能的流程圖。圖36是多播數據隊列處理功能的流程圖。圖37顯示一個控制頭的格式。圖38顯示MHdrFIFO的輸入項格式。圖39顯示多播控制RAM的輸入項格式。圖40是描述緩衝和排隊過程的方框示意圖。圖41是表示出站排隊過程的方框示意圖。圖42是表示緩衝工D自由列表的方框示意圖。圖43是表示輸入-輸出頭和輸入-輸出尾表格的表格格式的方框示意圖。圖44是表示自由頭寄存器和自由尾寄存器的方框示意圖。圖45是表示per-flow排隊的頭和尾緩衝區ID表格的方框示意圖。圖46是表示使用連結列表的頭和尾流隊列的方框示意圖。圖47是表示使用連結列表的頭和尾流隊列的方框示意圖。圖48是表示每個-埠-類別-子類隊列-長度計數表格格式的方框示意圖。圖49是表示積壓流連結列表的數據結構的方框示意圖。圖50是表示積壓流連結列表的頭和尾FlowID表格的方框示意圖。圖51是表示形成積壓FlowID環的數據結構的方框示意圖。圖52是表示積壓埠-類別位圖表格的方框示意圖。圖53是表示積壓埠-類別子類位圖表格的方框示意圖。圖54是表示流-埠-類別-子類表格的方框示意圖。圖55是表示隊列長度高閾值表格的方框示意圖。圖56是表示隊列長度低閾值表格的方框示意圖。圖57是表示隊列管理器SRAM存儲器映射表格的方框示意圖。圖58是表示分層式修改加權輪轉調度實施的示意圖。圖59是表示時隙配置表格的方框示意圖。圖60是表示類別權重表格的方框示意圖。圖61是表示類別WRR計數表格的方框示意圖。圖62是表示WRR合適埠類別-位圖表格的方框示意圖。圖63是表示之前被調度的類別表格的方框示意圖。圖64是表示子類權重表格的方框示意圖。圖65是表示子類WRR計數表格的方框示意圖。圖66是表示WRR合適埠-類別子類-位圖表格的方框示意圖。圖67是表示之前被調度的子類表格的方框示意圖。發明詳述在此,為了便於描述,請參考任何一個或多個附圖裡的步驟和/或特徵,那些具有相同參考數字的步驟和/或特徵具有相同的功能或操作,除非出現相反的指示。此處披露了一種交換系統和方法,用於重排通信流量到一個預定總線流量寬度。在此描述的一個實施例裡,預定總線寬度是64比特寬。如此所述,寬度窄於或等於64比特的數據被定義為在1比特和64比特之間的任何數據寬度,包括但不限於l、2、4、8、16、32和64比特數據。但是,本領域有經驗的技術人員將會理解,使用不同於64比特包括但不限於8、16、32或128比特的總線流量寬度,可以等同地實施本發明的實施例,而不會偏離本發明的精神和範圍。綜述以下是依照本發明描述本方法和系統的一個具體應用。參考圖l和圖2,它們分別描述用於流量處理的本系統和方法。圖1顯示依照本發明披露的一個實施例的整體系統構造100。系統100接收流量105、125。流量首先經過物理層(PHY)晶片110、120,然後行進到媒介訪問控制(MAC)晶片130。通常,流量105、125包括語音流量和其它普通數據流量。在這個特別實施例裡,流量105、125通常具有一個窄於或等於64比特的數據寬度。但是,實際總線寬度將依照特定應用的不同而不同。所示系統100有48個快速乙太網(FE)埠110和4個萬兆乙太網(GE)埠120,因而總計52個埠可用於接收流量105、125。在所示實施例裡,FE埠110接收流量105,而GE埠120接收流量125。FE埠110和GE埠120被雙工連結連接到MAC晶片130。相應地,MAC130最好是一個快速乙太網MAC和萬兆乙太網MAC。第一電路140,通常是如圖1所示的MUX晶片140,被連接到MAC晶片130。MUX晶片140發送控制信號到MAC晶片130以控制在MUX晶片140和MAC晶片130之間的流量。如前所述,這個實施例的流量通常包括語音流量和數據寬度窄於或等於64比特的其它普通數據流量。當而X晶片140接收到來自MAC晶片130的流量時,MUX晶片140重排此流量成預定寬度(在此例子裡是64比特)的總線流量,並在所述總線流量內識別出一個特定類型的流量,如語音流量。例如,在一個實施例裡,MUX晶片140在虛擬LAN(VLANID)裡使用語音設備識別器,以在存儲器內形成一個表格,從而識別此通信流量的源/埠,並相應地編排數據的優先次序。MUX晶片140如何重排和區分語音流量的更多細節將在以下描述。第二電路150,通常是如圖l所示的轉發晶片150,被連接到MUX晶片140以從MUX晶片140接收重排過的總線流量。轉發晶片150執行第二和第三層入口處理,有關細節將在以下描述,重點參考圖4。第三電路170,通常是如圖1所示的排隊晶片170,其被連接到轉發晶片150以從轉發晶片150接收被處理過的流量。排隊晶片170從其它普通流量識別出一個選擇的流量類型,如語音,並進一步編排所選擇流量的次序優於其它普通流量。特別地,排隊晶片170重新整理流量並首先輸出所選擇的流量,同時存儲其它普通數據流量在一個與排隊晶片170連接的緩衝區180裡。排隊晶片170如何編排流量優先次序的細節將在以下描述,重點參考圖5。在轉發晶片150轉發處理過的流量到排隊晶片170之前,有可能增加新特徵到此流量。相應地,系統100包括一個擴展/處理器接口模塊160。選擇出的流量被轉發晶片150提交給擴展/處理器接口模塊160。在一個例子裡,擴展/處理器接口模塊160利用一個軟體程序來配置和改變流量的數據頭。在另一個例子裡,用戶可能發現,對一個特別應用而言,在流量被傳遞到排隊晶片170之前,可以很方便地利用擴展/處理器接口160對流量執行進一步處理,或執行流量特定信息的驗證檢查。擴展/處理器接口模塊160在執行任何要求的處理之後,將轉發通信流量到排隊晶片170。第四電路190,通常是如圖1所示的DEMUX晶片190,其被連接到排隊晶片170。如前所述,來自排隊晶片170的流量現在是一個預定寬度的總線流量,是一個被MUX晶片140處理後的結果。在這個例子裡,總線流量是64比特,相應地,DEMUX晶片190從排隊晶片170接收64比特流量,並拆分64比特流量到一個對應初始流量105、125的數據寬度。DEMUX晶片190如何拆分64比特流量到初始數據寬度的有關細節將在以下描述。DEMUX晶片190傳遞被拆分的流量到MAC晶片130,以便傳輸到FE埠110和GE埠120。圖2是一個由圖1系統100執行的方法步驟的流程圖200。圖2的210到270中的每個步驟對應參考圖1以上所述的電路功能。本方法開始於BEGIN步驟205,然後到步驟210,其對應於MUX晶片140接收具有數據寬度窄於或等於預定總線流量數據寬度的流量。如有關圖1的以上所述,這個特別例子的預定總線流量數據寬度是64比特,但其它數據寬度可以被等同地使用。控制行進到步驟220,其中MUX晶片140重排接收到的流量成一個64比特的數據寬度流量。控制行進到步驟230,其中MUX晶片140在64比特流量裡識別出一個特定類型的流量。控制從步驟230行進到步驟240,其中轉發晶片150處理此64比特流量。隨後,控制行進到步驟250,其中排隊晶片170和緩衝區180編排此特定流量的次序優於其它64比特的流量,並在步驟260依照優先次序結果輸出此64比特的流量。控制從步驟260行進到步驟270,其中DEMUX晶片190拆分此64比特的流量到初始數據寬度,並傳輸此流量回到MAC晶片130,然後依次傳遞到PHY晶片110、120。控制行進到END步驟280,本方法結束。本發明具有一定的優點。例如,所有通信流量被重排成預定數據寬度的總線流量,從而流量處理率被顯著提高,以確保在多信道系統裡的高吞吐量。另外,本發明將選擇出的流量從其它普通數據流量區分開來,並提供優先權以傳輸此選擇出的流量。在此例子裡,語音流量被選擇出來以享有優先權,VoIP的延遲被顯著降低,且能夠提高語音質量。另外,由於VoIP用戶是由網絡驗證和授權,VoIP通話的安全性得以保證,且通話不會被泛濫或廣播到任何其他用戶。所以,本發明提供了一種有效且安全的語音流量處理和傳輸的系統和方法。依照本發明的一個實施例,以下是一個在先前技術方法上處理性能改善的例子。通常使用軟體的VoIP處理延遲大概是2G0、sec(微秒),使用軟體的VoIP處理的吞吐量高達500Mbps。對比而言,依照本發明的一個實施例,VoIP流量的硬體協助處理可以有l、sec或更短的處理延遲。具體地,假設時鐘頻率是80MHz,且大約需要10個流水線(pipeline)來處理一個64位元組幀,在一個8時鐘周期流水線裡的處理延遲僅是1、sec。如果時鐘頻率是100MHz,處理延遲是800nsec(納秒)。而且,如果時鐘頻率是160MHz,處理延遲是500nsec。因此,依照本發明的處理延遲比先前技術的方法更短。而且,依照本發明的一個實施例,VoIP處理的吞吐量可以高達14Gbps,它比使用軟體獲得的吞吐量高28倍。另外,由於排隊晶片170和緩衝區180,還可以獲得進一步的改善。例如,本發明的一個實施例提供會話之間的流量隔離、單個會話的帶寬分配、和一個固定低VoIP的流量延遲,而先前技術的軟體方法不能提供這樣的性能。本發明的實施例可以被應用在不同接口上,用於在通信系統裡交換數據信息包。例如,在美國專利6,668,297裡Karr等披露的通過一個POS(SONET上的數據包)實施的將物理層(PHY)設備互連到連結層設備的接口已經被成功實施在MUX晶片140和DEMUX晶片190上以增強語音質量。在本領域有經驗的技術人員的知識範圍內,對MUX晶片140和DEMUX晶片190的設計作出較小改變之後,本發明可以被等同地應用到PCI接口、PCMCIA接口、USB接口和CARDBUS接口等。本發明將依照某些首選實施例被詳細描述。為了完整且清晰地描述本發明的細節,某些描述性的名字將被賦予給各種組成部分。本領域有經驗的技術人員應該理解,這些描述性術語只是被用來提供一種方式來容易地識別說明書裡的組成部分,而不是限制本發明到特定描述。例如,儘管以上披露特別提供優先權給語音流量,但本發明也能夠提供優先權給其它類型的流量,如用於增強視頻傳輸質量的視頻流量。另外,儘管以上披露特別指定Vo工P,但重排流量成預定總線數據寬度以提高流量處理率的晶片和方法可以被用於其它通信系統,包括控制和編排數據的優先次序用於家庭用具。另外一個例子,在以上實施例裡描述的64比特流量轉發和處理可以通過一個64比特總線或一個雙時鐘頻率的32比特總線執行。所以,可以作出許多這樣的修改,而不會偏離本發明的精神和範圍。MUX晶片圖7是一個圖1中MUX晶片140構造的模塊示意圖。如以上圖1所述,MUX晶片140從MAC晶片130接收流量,重排此流量成一個預定數據寬度的總線流量,並在所述總線流量裡識別出一個特定類型的流量,如語音流量。圖7顯示MUX晶片140從MAC晶片130接收流量705。流量705是以POS-PHY2級接口(PP2Rx)總線(在此例子裡是16比特寬)和系統信息包3級接口(SPI3Rx)總線(在此例子裡是32比特寬)的格式呈現。在所示實施例裡,PP2Rx總線是3.3V,LVTTL,50MHz,SDR,而SPI3Rx總線是3.3V,LVTTL,125MHz,SDR。特別地,來自PP2Rx總線的流量比特705a…705f被提交給一系列相應的PP2Rx接收模塊710...710f。類似地,來自SPI3Rx總線的流量比特710a...710d被提交給一系列相應的接收模塊720a...720d。在所示實施例裡,MUX晶片140同時兼容SPI3和PP2的接口標準。但是,本領域有經驗的技術人員應該容易理解,也可以同樣使用其它通信標準接口。而且,圖7所示的實施例有10個總線通道705a...705f和705g...705j。其它實施例可以同樣地使用更多或更少的總線通道,並不偏離本發明的精神和範圍。各個PP2Rx接收模塊710a...710f各自運行作為一個總線控制器,將來自外部POS-PHY/2級(PP2Rx)總線的流量解碼成具有預定數據寬度(在此例子裡是64比特)的數據總線,並提交一個64比特的輸出到一系列相應的PKTFIFO模塊715a...715f。這6個PP2Rx接收模塊710a...710f各自提供-8個通道,總計達到圖1的48個FE埠.110。每個PKTFIFO.模塊715a...715f運行作為一個緩衝區用於從PP2Rx接收模塊710a...710f接收數據包,並提交一個64比特的輸出到一個多路復用器730。各個SPI3Rx接收模塊720a...720d各自運行作為一個總線控制器,將來自外部SPI3(SPI3Rx)總線的流量解碼成預定數據寬度的總線流量。在這個例子裡,預定總線流量是64比特寬,所以每個SPI3Rx接收模塊720a...720d提交一個64比特的輸出到一系列相應的PKTFIFO模塊725a...725d。這4個SPI3Rx接收模塊720a...720d對應圖1的4個GE埠120。每個PKTFIFO模塊725a...725d運行作為一個緩衝區用於從SP工3Rx接收模塊720a...720d接收數據包,並提交一個64比特的輸出到多路復用器730。多路復用器730從這10個PKTFIFO模塊715a...715f和725a...725d中的每個模塊接收64比特輸入,並多路復用傳iI這10個信道的數據到正確的FIFO信道裡HDRFIFO和CHUNKFIFO,以產生(i)一個16比特的輸出到一個HDRFIFO模塊735,和(ii)一個64比特的輸出到一個CHUNKFIFO模塊740。HDRFIFO模塊735緩衝頭信息,並提交一個16比特的輸出到一個發送器(XMTR)模塊750。CHUNKFIFO模塊740緩衝數據並提交一個64比特的輸出到這個發送器(XMTR)模塊750。發送器模塊750產生一個頭信息760和數據(DAT)770再被提交到轉發晶片150。如上所示,可以同樣實施不同的總線流量寬度,並不偏離本發明的精神和範圍。因此,MUX晶片140利用PP2Rx接收模塊710a...710f和SPI3Rx接收模塊720a...720d來將進入的乙太網流量解碼成64比特數據,其被存儲在PKTFIFO模塊715a...715f和725a..725d內。MUX晶片140多路復用數據到HDRFIFO735和ChunkFIFO740裡。然後,發送器模塊750編排頭信息和塊(chunk)成一個XMT協議的流量760和77(V在所示實施例裡,輸出是1.8V,HSTL,133MHz,DDR。PKTFIFO的大小是512(地址)x64比特,臓FIFO的大小是128(地址)x16比特,以及CHUNKFIFO的大小是512(地址)x64比特。本領域有經驗的技術人員將會理解,可以同樣使用其它流量寬度、信息包大小和電壓,而不會偏離本發明的精神和範圍。轉發晶片存發餅-娜圖4是一個表示圖1轉發晶片(FCHIP)150的模塊示意圖。轉發晶片150在一個接收(RCV)模塊410上從MUX晶片140接收一個來自預定數據寬度的總線流量的幀405。特別地,RCV模塊410通過分析幀頭預處理此幀來確定此幀的幀頭有效性。如果幀頭欄位是錯誤的,該幀將被丟棄。否則,RCV模塊410傳遞此幀到一個入口(ingress)處理器420以確定是否對此幀執行進一步的處理。RCV模塊也被連接到CPU/DMA接口415,其提供一個雙工連結465到轉發晶片150外部的一個中央處理單元(CPU)。此CPU/DMA接口415提供一個直接存儲器存取(DMA)通信信道在擴展/處理器接口模塊160和排隊晶片170之間。典型地,入口處理器420為一個特別幀分配一個VLANID。此VLANID是從一個頭VLAN標記、默認埠ID裡挑選出來的,或通過一個關聯源MAC地址被分類成一個語音VLAN。更具體地,入口處理器420設置VLANID並被配置給VoiceVID,並進一步為VoiceVID設置X2比特以避免幀泛濫。VocieVID和X2隨後將在說明書裡被詳細描述。或者,入口處理器420記錄被授權用戶的MAC地址到一個硬體寄存器內。在整個過程裡使用被分配的VLANID。由於VLANID對一個特別幀是唯一的,入口處理器420能夠使用VLANID來識別用戶是否被授權,在LAN內未被授權的用戶是不能訪問這個特別的VLANID。所以,僅有授權用戶能夠訪問網絡,而其他用戶不能聽到授權用戶之間的談話。入口處理器420也能夠確定是否以第2層或第3層實體轉發此幀。如果幀被確定為是第2層實體,入口處理器420輸出一個入口處理幀424到第2層處理器430以引導入口處理幀到一個正確埠以避免幀泛濫。第2層處理器430提交一個入口處理幀432到下一跳處理器460。或者,如果幀被確定為是第3層實體,入口處理器420輸出一個入口處理幀426到一個第3層處理器440以引導入口處理幀到一個正確埠。第3層處理器440提交一個入口處理幀442到下一跳處理器460。在其它情況下,如當頭信息被確定為是第4層、第5層、第7層等,入口處理器420輸出一個入口處理幀422到一個流分類電路450,以通過匹配幀的頭欄位將此幀分類成一個流。流分類電路450提交一個入口處理幀452到下一跳處理器460。流分類單元450也被連接到一個內容可尋址存儲器(CAM)接口455,其從FCHIP150提供一個雙工連接475到一個CAM模塊,這在圖中未顯示。下一跳處理器460確定一個接收幀452、432或442的控制幀頭修改和幀輸出。下一跳處理器460轉發幀到一個多播處理器470以輸出此幀。多播處理器470通過一個傳輸(XFER)模塊480輸出此幀。轉發晶片150的輸出是一個幀495。下一跳處理器460也被連接到一個SRAM接口445,其從FCHIP150提供一個雙工連接到一個靜態隨機存儲器(SRAM)模塊。而且,RCV模塊410連接到一個FFIF0模塊425,其隨後連接到下一跳處理器460。綠餅祭遂轉發晶片150處理核心是對從MUX晶片140接收到的每個幀執行第2層、第3層和第4層(流)處理。在所述應用裡,幀是一個乙太網幀。通過檢査幀頭並隨後確定此幀的一個輸出決定,轉發晶片150執行轉發功能。幀的頭欄位也可以被修改用於第3層轉發,包括但不限於如,生存時間(TTL)遞減、區分服務代碼點(DSCP)標記、和網絡地址轉換(NAT)的地址和埠替換。一旦轉發晶片150作出一個輸出決定,幀被轉發到排隊晶片(QCHIP)170裡執行緩衝、排隊和調度功能。排隊晶片170可以被一個現場可編程門陣列(FPGA)來執行實現。幀以64位元組區段從MAC模塊130傳輸到頭-處理模塊,對應圖4的入口處理模塊420。頭處理是在一個來自輸入埠的幀的第一區段上被觸發,例如一個乙太網幀的起始位。頭處理的結果是一個包含FlowID的輸出決定。此FlowID值以每一個輸入埠為基礎被存儲,以頭信息被增加到相同輸入埠的每個64位元組幀區段。流分類模塊450利用此Flow工D值給每個信息包映射分配正確的輸出埠和優先權。此FlowID值也被用來將此幀分類成正確的流量類別和子類用於調度。此FlowID值通過SRAM接口445、485被存儲在SRAM內。—旦執行了頭處理,多播和輸出處理模塊470產生一個輸出決定。此輸出決定被存儲在一個外部存儲器內(圖中未顯示),並被用來標記來自相同埠的幀的所有後續區段的頭(直到幀指示結束)。因此,所有這些區段被轉發到相同的輸出埠。微芯#-必麟遂轉發晶片150對每個乙太網幀執行第2層、第3層和第4層(流)處理。處理包括檢查幀頭並作出幀輸出決定的轉發功能,可以改變第2層、第3層和第4層頭的頭修改功能(例如TTL遞減,DSCP標記,NAT的地址和埠替換),和流處理功能(例如校正、RTP監控、信息包統計)。一旦已經執行了輸出決定、頭修改和流處理功能,幀被轉發到在QCHIP晶片170裡執行緩衝、排隊和調度功能。表1顯示在文檔剩餘部分的幀處理描述裡使用的標頭縮寫。表1tableseeoriginaldocumentpage22圖9顯示轉發晶片150處理的Ethernet和IP幀的格式900。在一個實施例裡,可以使用一個現場可編程門陣列(FPGA)來實現轉發晶片150。圖IO是一個在一個指定埠上對乙太網幀的每個區段執行處理的流程圖1000。處理在歩驟1005上開始,然後行進到決策步驟1010,其確定是否處理一個信息包起始位(SOP)。如果處理SOP,控制行進到步驟1040以提取頭欄位。控制行進到步驟1045以進行入口處理,然後行進到決策步驟1050,其確定是否丟棄正被處理的幀。如果此幀將被丟棄,控制行進到步驟1055,丟棄幀並結束處理。但是,如果在步驟1050上幀未被丟棄,控制行進到下一個決策步驟1060。決策步驟1060確定幀是否將被發送到一個中央處理單元(CPU)。如果幀將被發送到CPU,控制行進到步驟1065,發送幀到CPU。如果在步驟1060上幀未被發送到CPU,控制以並行方式行進到步驟1070和1090。決策步驟1070確定是否執行第3層轉發和第3層啟動。如果執行第3層轉發和第3層啟動,控制行進到步驟1075以執行第3層轉發,接著過程結束。但是,'如果在步驟1070上沒有執行第3層轉發和第3層啟動,控制行進到步驟1080以執行第2層轉發。與決策步驟1070並行,決策步驟1090上確定是否啟動流處理。如果啟動流處理,控制行進到步驟1095以執行流處理,接著過程結束。但是,如果在步驟1090上沒有啟東流處理,控制行進到End步驟1035,過程結束。回到步驟1010,如果沒有處理信息包起始位(S0P),控制行進到決策步驟1015,其確定是否處理信息包終止位(E0P)。如果處理E0P,控制行進到決策步驟1020,其確定幀循環冗餘校驗(CRC)是否等於一個計算的CRC。如果是的話,控制行進到步驟1025。回到步驟1015,如果不處理EOP,控制直接行進到步驟1025。步驟1025使用一個當前^^口輸出決定,增加FlowID和控制頭。控制從步驟1025行進到End步驟1035。回到步驟1020,如果幀CRC不等於計算的CRC,控制從步驟1020行進到步驟1030,在傳遞控制到End步驟1035之前,增加FlowID和一個丟棄指示。[0111]轉發過程包括入口處理功能,接著是第2層和第3層轉發功能,然後是流處理功能。注意到信息包可以由第2層或第3層處理轉發,但不能同時通過這兩個處理轉發。但是,流處理功能可以被應用到所有信息包(第2層和第3層轉發的)。流處理功能可以修改第2層和第3層轉發決策,並可以導致信息包被重新指向不同埠、優先權和隊列或用於信息包軟體處理。第2層和第3層轉發決策的輸出包括用於處理幀頭的FlowID和控制信息(如替換源工P地址,目標IP位址等),和需要更新的信息欄位。存發芯#-乂/7必潘入口處理模塊420執行多種預處理功能,包括分析幀頭和檢查頭以確保信息包頭是有效的。入口處理模塊420通過一個64比特的數據總線連接到RCV模塊410,傳輸幀區段和控制信號(如PORTID、S0P、EOP和ERR控制信號)。在這個實施例裡,假設所有乙太網幀是VLAN標記格式用於入口處理功能。在一個SOP指示上,第2層頭欄位(DA、SAP、PT、VID、PRI)和第3層頭欄位(DIP、SIP、HL、FRAG、PROT)是從幀區段裡提取的。然後,頭欄位被用來執行第2層和第3層頭檢查以確保幀頭的完整性。如果獲知頭欄位是錯誤的,在開始頭處理之前丟棄此幀。如果幀包括需要轉發到處理器以作進一步處理的第2層或第3層頭欄位,對此幀設置toCPU欄位,並禁止正常的第2層或第3層轉發。除了確定特定案例之外,入口處理模塊420對一個特別幀分配VLANID-VLANID是從一個頭VLAN標記、默認埠ID選擇出來,或通過一個關聯的源MAC地址被分類成一個語音VLAN。分配的VLANID被用於在轉發過程的其餘部分裡執行的處理和查詢。幀入口處理也確定入站幀是否以第2層或第3層實體而被轉發。這是通過首先檢查以確保幀有一個0x800的乙太網協議類型(PT)、然後比較幀的目標MAC地址(DA)和路由器MAC地址(RMAC)而實現。如果這些MAC地址(和VLANID)匹配的話,使用IP轉發算法,幀被轉發。如果MAC地址不匹配,對此幀使用第2層(802.1D/Q)基於網橋的轉發。圖11是一個由入口處理模塊420執行的方法1100的流程圖。方法1100開始於步驟1105,接收信息包頭、輸入埠標識符、SOP和EOP。控制從步驟1105行進到步驟1110,從接收到的參數獲得頭信息、埠ID、VLANID、和生成樹ID。控制從步驟1110行進到步驟1120,執行第2層生成樹和埠驗證。控制行進到步驟1130以執行第2層轉發入口檢査,並隨後行進到步驟1140進行第2層、第3層、第4層的轉發檢査。控制行進到End步驟1150,並輸出信息包頭欄位、埠ID、SOP、EOP、Drop、toCPU變量、L2Forward、L3Forward、L4Forward、禾口L2Learn。微芯#-雜微1.T進klD索引輸入埠工D數據中繼線組ID(TrunkGroupID)大小64x6比特7>7/7^/"表格包括在輸入埠和中繼線組之間的映射。在轉發過程裡的基於輸入埠ID上的所有操作被有關中繼線組ID優先執行。默認地,TrunkID表格最好是輸入埠ID和中繼線組ID之間的1對1映射。當配置一個中繼線時,在中繼線組裡的最低物理埠號使用中繼線組ID。2.VL扁emberMap索弓l:VLANID數據成員埠映射(MemberPortMap)大小256x64比特VLA麗emberMap表格保留交換系統100的VLAN到埠的連接關係。一個VLANID索引指向這個表格。數據以位元映射(bitmap)格式被存儲在這個表格裡。如果對應埠的比特被設置成1,埠是在VLAN上被寄存。這個表格被用來濾除無效的入站幀,並使幀的多播泛濫成為可能。3.SpanningTreeID索引VLANID數據生成樹(ST)大小256x3比特5^/Mi/^7ree/"表格存儲VLAN到生成樹映射。表格是在多個生成樹支持的情況下要求的。在此所述的實施例裡,交換最多支持8個生成樹。生成樹的最大數目可能依照特定應用的不同而不同。4.ForwardMap索弓l:ST工D數據轉發埠映射(ForwardingPortMap)大小8x64比特/^r附2Y/ife/包括控制比特,其顯示埠是否在由生成樹協議軟體確定的轉發模式上。這個表格被生成樹ID索引,且每個位置包括每個埠的轉發狀態的位元映射。5.LearnMap索弓l:ST工D數據學習埠映射(LearningPortM即)大小8x64比特i:朋27^Sp包括控制比特,其顯示埠是否在由生成樹協議軟體確定的學習模式上。生成樹ID索引這個表格,且每個位置包括每個埠的學習狀態的位元映射。6.體AC索引VLANID數據路由器MAC地址大小49比特7細C表格包括VLANID到路由器MAC地址的映射。對每個入站幀而言,VLANID被確定,並對照這個表格裡的對應位置的路由器MAC地址檢査DA。如果地址匹配的話,信息包被指定該IP路由引擎。7.AuthPortMap大小64比特^W力A^^/sp是在系統裡每個埠的授權狀態的位元映射。如果802.lx在埠上是有效的,這個比特的狀態是由這個協議確定,否則系統管理員配置這個比特。8.DefaultPortVID索引埠ID數據VLANID大小64x12比特Zfe/ai/h屍oj^K/""表格包括未標記信息包被分配到的默認VLANID。埠ID被使用作為這個表格的索引,且存儲器位置包括這個埠的默認VID。默認優先權在這個表格裡也被指定。9.AuthMAC索引埠ID數據區C地址大小64x49比特A/仏始c表格包括使用802.lx驗證的埠的授權MAC地址。當一個802.lx授權埠被配置作為單機埠時,驗證主機的MAC地址被寫到這個表格裡。這樣鎖定這個埠,使僅被授權的終端主機能夠通過這個埠發送或接收信息包。10.VoiceMAC索引埠ID數據MAC地址大小64x49比特P^'ce船c表格包括與輸入埠連接的IP電話的MAC地址。當埠接收一個具有VoiceMac地址作為其源地址的信息包時,信息包被看作一個被授權的MAC地址,並通過這個埠被轉發。11.VoiceVID索引埠工D數據VLANID大小64x16比特f^'ceP7"表格指定VLANID分配給任何包括VoiceMac作為其源地址的幀。這樣允許交換始終如一地交換引導所有的語音信息包。這個表格也允許對這些信息包分配802.lp優先權。12.AFT大小64比特可接受的幀類型"/T)寄存器是一個位元映射,指定是否應該從當前埠接受被標記的VLAN幀。位元映射裡的0值顯示僅有未被標記的幀將從埠被接受,1值顯示在埠上將允許被標記的和未被標記的幀。,30]13.X2索弓l:VLAN工D數據X2VLAN大小256x1比特X表格被用來實施一個專有VLAN,其中未知泛濫或傳播幀是禁止的。X2VLAN也禁止幀的路由,僅當如果幀在相同的VLAN上且存在目標MAC地址的一個輸入項,或如果對幀的第4層轉發設置了合適的流處理輸入項時,幀才被交換。14.MulticastIndex索弓l:VLANID數據麗ndex大小256x9比特M/7"csWT/7ofer表格被用來作為在入站VLAN工D和出站多播表格索引之間的映射。這個索引被用於未知的第2層轉發幀(例如,如果在CAM裡幀的目標MAC地址不是匹配的)。這個欄位的MSB被設置成1,以顯示這個值已經由軟體寫入。如果索引未被初始化,VLANID被用來作為W/72c/^r用於表格l.埠表格圖12顯示一個埠表格存儲器1200的組織結構。埠表格1200包括以上所述的幀頭的入口處理所要求的埠屬性。埠表格存儲器通過埠表格地址和數據寄存器可以進入CPU。2.VLAN表格圖13顯示一個VLAN屬性表格1300的格式。VLAN表格1300通過VLAN表格地址和數據寄存器可以進入CPU。3.生成樹表格生成樹表格包括8個不同生成樹IDs的轉發和學習信息。屑14顯示一個生成樹表格1400的格式。轉發第2層轉發過程執行乙太網信息包基於802.1Q的轉發所要求的處理歩驟。第2層轉發功能的目標是引導具有認識到的MAC地址的流量到正確的輸出埠,從而避免幀泛濫到所有埠。圖15是第2層轉發功能1500的流程圖。第2層(L2)轉發功能1500在步驟1510上開始,然後行進到CAMSearchL2步驟1520。如果基於幀頭行使L2轉發功能,CAMSearchL2步驟1520對一個匹配當前幀的目標MAC地址和VLANID的第2層輸入項執行搜索外部內容尋址存儲器(CAM)。—個匹配信號顯示CAM搜索是成功的,這個從步驟1520返回的匹配信號必須由L2Age表格的狀態證明是匹配的索引,以確保輸入項不在被刪除的過程裡。如果L2Match(匹配)信號和L2Index(索引)是有效的,L2Age輸入項就是有效的。搜索返回的索引值指定了轉發信息表格裡的位置,轉發信息表格包括L2輸入項的轉發信息。這個索引被用來從外部SRAM存儲器取回FlowID,其指定幀應該被轉發到的埠。控制從步驟1520行進到決策步驟1530。決策步驟1530確定匹配信號是否是正的以及時效過程是否已經達到一個預定的時效閾值,在這個例中其顯示為L2Age[CAMIndex]〉6。如果是的話,控制行進到步驟1550,設置L2Match等於1和L2Index等於CAMIndex。然後,控制行進到輸出步驟1560。回到步驟1530,如果不是的話,控制行進到歩驟1540,其設置L2Match等於0。然後,控制行進到輸出步驟1560。輸出歩驟1560輸出L2Match和L2Index,然後傳遞控制到End步驟1570。本領域有經驗的技術人員將會理解,這個預定的時效閾值是可變的,並且根據實施例應用的不同而不同。學習(Learning)第2層處理也必須執行源MAC地址和VLAN的學習。學習過程的功能如下1.在6"0屍和L^esr"的指示上,在CAM裡搜索源MAC地址和VLANID。如果發現沒有匹配的,源MAC地址(48比特)、VLANID(8比特)和中繼線組ID(6比特)被寫入到一個Z朋27FIF0。如果發現有匹配的,MatchIndex(匹配索引,12比特)被作為下一跳SRAM的一個索引,且源MAC地址(48比特)、VLANID(8比特)和中繼線組ID(6比特)被寫入到SRAM。匹配索引也被用來將Z^4ge表格裡的對應輸入項更新成來自時效寄存器的當前值,並設置有效的比特。2.在一個非活躍的時隙上,讀取Z朋i77FIF0(如果不是空的)的頭,並連同源MAC地址和VLANID作為數據欄位發出一個學習CAM命令。學習命令在CAM裡的下一個自由地址上寫入數據,並返回與這個地址相關聯的索引值。這個學習索引(12-比特)被作為地址以寫入源MAC地址(48比特),VLANID(8比特)和中繼線組ID(6比特)到下一跳SRAM。學習索引也被使用將L2Age表格裡的對應輸入項更新成來自時效寄存器的當前值,並設置有效的比特。圖16是當L^eara有效時的學習過程1600的流程圖。過程1600在L2Learning歩驟1605上開始,然後行進到CAMSearch步驟1610,其在內容可尋址存儲器(CAM)內搜索源MAC地址和VLAN丄D。控制從歩驟1610行進到決策歩驟1615,其確定在源MAC地址和VLANID之間是否有一個匹配。如果存在匹配,控制行進到步驟1620,處理數據。特別地,步驟1620讀取一個匹配索引,其將被作為到下一跳SRAM的一個索引,並寫入源MAC地址、VLANID和中繼線組ID到SRAM。而且,這個匹配索引將L2Age表格裡的對應輸入項更新成來自時效寄存器的當前值(數據二時效+8)。控制從步驟1630行進到End步驟1645,學習過程1600結束。回到步驟1615,如果沒有匹配,控制從歩驟1615行進到決策歩驟1625,其確定學習FIFO隊列是否是滿的。如果FIFO隊列是滿的,控制行進到End步驟1645,過程1600結束。但是,如果FIFO隊列在步驟1625上不是滿的,控制從步驟1625行進到1630。步驟1630寫到學習FIFO隊列,並設置源MAC地址、VLANID、中繼線ID、和時效作為數據欄位。控制從步驟1630行進到決策步驟1635,其確定是否有一個空閒時隙。如果沒有空閒時隙,控制遞歸返回到步驟1635,直到有一個空閒時隙。如果在步驟1635上有一個空閒時隙,控制行進到步驟1640,步驟1640讀取學習FIFO隊列的頭,並使用源MAC地址和VLANID作為參數發出一個CAMLearn(學習)命令。這個CAMLearn命令在C雄裡的下一個可用的自由地址上寫入數據,並返回一個與這個地址相關聯的索引值。然後,學習索引被作為一個地址用於寫入源MAC地址、VLANID和中繼線ID的值到下一跳SRAM。學習索引也被用來更新L2Age表格裡的一個對應輸入項。控制從步驟1640行進到End步驟1645,過程1600結束。時效(Aging)時效過程的功能是當輸入項時效達到一個高於時效寄存器裡的時效數值時從CAM地址表格刪除第2層MAC輸入項。這意味著具有一個對應給定輸入項的源MAC地址的Ethernet幀沒有在此輸入項時效期間內進行交換。一個軟體進程在等於由交換配置指定的時效時間V8th的間隔上更新3-比特時效寄存器。圖17是一個時效過程1700的流程圖。時效過程包括兩個主要操作(i)基於時效寄存器的當前值無效L2Age輸入項;(ii)當有一個空閒時隙時從CAM刪除時效的輸入項。時效過程1700在步驟1705上開始,然後行進到步驟1710,其讀取L2Age表格的一個當前索引,並獲得Valid(有效)值和AgeVal值的數據。控制行進到決策歩驟1715,其確定讀取的數據是否等於Oxl,且是否有空閒時隙。AgeVal值存儲時效值。如果AgeVal等於Oxl,時效值是在其初始值上。如果不是的話,控制行進到決策步驟1725,其確定Valid數據值是否是正的,且AgeVal值是否等於當前時效值+l。如果是的話,控制行進到步驟1735,使用索引寫入L2Age表格,並設置數據為Oxl。然後,控制行進到End步驟1740。回到步驟1715,如果是的話,控制行進到步驟1720,其使用當前索引寫入CAM,並設置數據等於0x2。控制從步驟1720行進到步驟1730,其以幅度l遞增當前的索引,然後行進到步驟1735。回到步驟1725,如果不是的話,控制行進到步驟1730以遞增索引。回到步驟1710,並行路徑處理從步驟1710行進到歩驟1720以遞增索引。寄存器和表格l.時效寄存器時效寄存器是一個3比特欄位,當學習或更新第2層MAC輸入項時,其指定被寫入到L2Age表格的當前時間。時效寄存器最好通過一個軟體進程在一個等於MAC地址時效時間的l/8th的間隔上被更新。2.L2Age表格L2Age表格包括8192個輸入項,每個輸入項對應CAM裡的一個索引,CAM包含一個第2層輸入項。在L2Age表格裡的每個輸入項包括4-比特。圖18顯示L2Age表格1800的編碼。在初始時,所有L2Age輸入項被設置成0以顯示沒有輸入項對應CAM裡的索引。當一個MAC地址在CAM裡被學習時,Valid(有效)比特被設置成1,且時效寄存器的值被寫入到L2Age表格輸入項。當輸入項超過時效時,Valid比特被設置成0,且State(狀態)字被設置成l以顯示CAM輸入項可以被改寫。當CAM輸入項被清除時,State字被設置成2。3.學習FIFO(LearnFIFO)學習FIFO包括將被存儲的數據,直到有可利用的時隙被寫到CAM和下一跳SRAM。學習FIFO是一個有512個輸入項的36_比特FIFO,只要有空閒時隙,其能夠存儲將被學習的256個MAC地址。學習FIFO輸入項包括(源)MAC地址和VLAN工D、輸入中繼線ID和當前時效值。圖19顯示學習FIFO寄存器1900的格式。-第3y^OT^存發L3(第3層)處理功能包括一個IP路由器所要求的轉發功能。圖20是一個結合L2和L3轉發技術的簡化流程圖2000。流程圖2000在BEGIN步驟2005上開始,然後行進到步驟2010,讀取幀以獲取目標MAC地址(DA)、目標IP位址(DIP)和VLANID(VID)。控制行進到決策歩驟2015,其確定DA是否等於在路由器MAC地址(RMAC)表格的索引V工D上的輸入項。如果不等於的話,控制行進到結束步驟2020以進行第2層處理。如果在步驟2015上DA等於在RMAC表格的索引VID上的輸入項,控制行進到決策步驟2025,其確定IP位址是否是本地的。如果IP位址是本地的,控制行進到另一個決策歩驟2035。決策步驟2035確定地址是否在CAM裡。如果地址是在CAM裡,控制行進到步驟2040以進行第3層處理。然後,控制行進到End歩驟2050,過程結束。回到步驟2025,如果IP位址不是本地的,控制行進到結束步驟2030,其發送幀到CPU。回到步驟2035,如果地址不在CAM裡,控制行進到結束步驟2030以發送幀到CPU。以上所述的有關圖20的方法假設交換保留IP網絡地址的路由表格。這些表格被用來確定被指定到路由器的IP幀的下一跳IP和MAC地址。IP轉發算法圖21是在RFC1812的硬體裡進行單播IP轉發的流程圖2100,其提供IP版本4路由器要求。RFC1812描述每個操作的相關部分如圖21裡的圓括號所示。由於IP選項處理和網際網路控制信息協議(ICMP)生成通常是由軟體執行,為了清楚起見,這些操作不在流程圖裡顯示。流程圖2100在步驟2105上開始,然後行進到步驟2110,讀取一個IP頭。控制行進到步驟2115驗證IP頭,隨後行進到步驟2120轉發一個決策。控制行進到步驟2125驗證下一跳,然後步驟2130減少一個TTL計數器。控制行進到步驟2135連接層地址。下一個步驟2140轉發幀到埠,然後過程2100在End步驟2145上結束。對於多播轉發,需要額外的檢査。特別地,源地址被檢查以確保接收信息包的接口就是被用來轉發信息包到源的接口。這個過程也可被看作是一個反向路徑轉發檢查。在一個實施例裡,多播路由是由軟體執行,而多播傳送是由硬體執行。第3層功能第3層硬體特徵1.支持基於類別的路由和支持可變長度子網掩碼。2.支持TTL遞減和增量頭校驗和計算。3.支持基於區分服務(DiffServ)的服務質量(QoS)。第3層功能被分為以下功能:*IP頭校驗-驗證IP頭欄位是合法的,且頭可以由硬體轉發處理。*IP校驗和-計算IP頭的校驗和,並驗證被插入到幀頭裡的校驗和與這個數值匹配。*IP位址査尋-IP位址查尋的算法足夠靈活,能夠支持有限數目的可變長度網絡前綴,或也能夠被用於基於類別的路由。*IP輸出-執行增量頭校驗和的計算和基於IP協議項的流量類別分類,然後轉發幀到合適的輸出埠。寄存器和表格l.埠IP轉髮禁止(PortIPFDisl[31:0],PortlPFDis2[31:0])這些寄存器被用來啟動或禁止任何埠的IP轉發操作。0值代表啟動,1值代表禁止。2.3層狀態和控制寄存器(L3SCR[31:0])寄存器包含3層轉發過程的控制比特。這個寄存器裡的比特接通或斷開轉發信息包到CPU。它包括3層頭校驗失敗的頭和沒有路由在表格裡的幀。功能流程圖在以下流程圖裡,假設己經執行了校驗以確保發給3層處理的幀包含路由器MAC地址(對VLAN)作為目標區C地址。對所有其它的幀,執行2層802.1Q處理。圖22是一個工P頭檢查過程2200的流程圖。過程2200在步驟2205上開始,然後行進到步驟2210,讀取幀以獲取目標MAC地址(DA)、IP頭長度(HL)、工nP0RTID、工P版本VER、和TTL。然後,控制行進到決策步驟2215,其確定幀是否是一個IP幀。如果在歩驟2215上網際網路協議類型(PT)等於0x800,且顯示協議類型是網際網路協議CIP),控制進行到下一個決策步驟2220。決策步驟2220檢查IP選項,且如果IP頭長度HL等於0x5,控制行進到另一個決策步驟2225。HL等於0x5表示沒有選項出現。決策步驟2225檢査IP版本,如果VER等於0x4,從而表示幀是IPv4,控制行進到決策步驟2230,檢査TTL是否期滿。如果在決策步驟2230上TTL大於Oxl,控制行進到步驟2235以執行拒絕服務(DoS)檢查。控制從步驟2235行進到結束步驟2250以執行IP位址查尋。回到決策步驟2215,如果當檢查IP幀時PT不等於0x800,控制行進到步驟2240,設置變量toCPU等於1。然後,控制行進到結束步驟2245執行IP轉發。回到決策步驟2220,如果IP選項是那些HL不等於0x5的項,如上所述,控制行進到步驟2240。類似地,如果在步驟2225,當檢查IP版本時,VER不等於0x4,控制也行進到步驟2240。在類似情況下,如果在步驟2230上當檢査TTL是否期滿時,TTL不大於Oxl,控制行進到步驟2240。IP頭校驗執行IP頭欄位的驗證,以便確定硬體裡的IP處理是否是可行的,並丟棄非法的IP幀。對IP頭驗證,將進行以下檢査1.幀的協議類型使Ox800(IP)嗎?-如果協議類型不是IP,幀被轉發到CPU埠。這樣允許相同的MAC地址與軟體裡採用的其它協議一起使用。2.頭等長度使等於Ox05(32比特)字嗎?-如果IP頭不包含IP選項(如源路由),頭的大小應該總是10個16-比特字。如果出現IP選項,幀被發送到軟體作適當處理。如果頭長度小於0x05,幀也可以被軟體丟棄。3.IP版本項是Ox4嗎?IPv4有一個版本號4。如果版本號是5(ST-I1)或6(IPv6),處理是在軟體裡進行,另外信息包將被丟棄。4.幀的TTL值等於Ox1或Ox0嗎?具有TTL值0或1的幀不應該被轉發。但是,這些幀也不應該被丟棄,因為ICMP的時間超過消息可以被發送到幀的最初發送端。因此,這些幀被轉發到CPU埠。5.拒絕服務防衛檢測6.數據報長度太短7.幀有碎片8.源IP位址=目標IP位址(LAND攻擊)9.源IP位址是子網廣播地址10.源IP位址不是單播地址11.源IP位址是一個環回地址(loop-backaddress)12.目標IP位址是一個環回地址13.目標地址不是一個有效的單播或多播地址(martian火星地址)在頭欄位被檢查之後,路由IP幀到正確的輸出埠是通過IP位址査尋和轉發來執行的。圖23是一個IP頭校驗和過程2300的流程圖。過程2300在步驟2305上開始,然後行進到步驟2310,設置頭陣列的第一元素,HEADER[O],合併IP版本、IP頭連結、和生成樹信息、(VER&HL&ST)。控制行進到步驟2315,設置索引i等於0。然後,控制行進到步驟2355,設置校驗和等於當前校驗和加上索引i的當前值指定的頭陣列內容。然後,增加索引i。控制從步驟2355行進到決策步驟2320,其確定索引i是否小於10。如果索引j'小於10,控制返回到步驟2355。但是,如果在歩驟2320上索引i不小於10,控制從歩驟2320行進到歩驟2325。步驟2325設置Carry(進位)等於一個遠大於16的校驗和,並設置校驗和(CKSUM)等於Carry(進位)加(CKSUM&OxFFFF)。控制從歩驟2325行進到歩驟2330,設置Carry等於一個遠大於16的校驗和,然後賦值校驗和(CKSUM)等於Carry力口(CKSUM&OxFFFF)。控制從步驟2330行進到決策步驟2335,其確定校驗和是否等於0xFFFF。如果等於的話,控制行進到結束步驟2345執行IP位址查尋。如果在步驟2335上校驗和不等於0xFFFF,控制行進到2340,設置Drop標記等於1。控制從步驟2340行進到結束步驟2350執行IP轉發。頭起始位是在IP版本欄位(VER)上。校驗和算法如下使用20-比特加法,獲得IP幀頭的首10個16-比特字的總和。使用17-比特加法,獲得比特[19:16](進位比特)和比特[15:0]的總和。*比特16被增加到比特[15:0]以獲得最終的校驗和。杏如果這個總和的求反(complement)等於0,校驗和是有效的。7"屍縱査尋圖24是一個IP位址査尋過程2400的流程圖,其在步驟2405上開始。控制行進到步驟2410,讀取目標IP位址(DIP)、源工P地址(SIP)、和埠。控制行進到步驟2420,確定是否有一個無效的前綴地址,DIP(31:24)〉二240。如果是的話,控制行進到步驟2460,設置Drop標記等於1。控制從步驟2460行進到結束IP轉發步驟2470。返回到步驟2420,如果DIP(31:24)不大於或等於240,控制行進到步驟2430,使用DIP、S工P和埠執行CAMSearchL3功能。控制行進到另一個決策步驟2440,確定是否有一個匹配。如果沒有匹配的話,控制行進到歩驟2460設置Drop等於1。但是,如果在歩驟2440上有匹配,控制行進到步驟2450,設置3層匹配指數等於1,並設置3層指數等於CAMIndex。然後,控制從步驟2450行進到結束步驟2470執行IP轉發。地址查尋返回一個到下一跳SRAM的指針,其包括下一跳(路由器或主機)MAC地址、TrunkID、和VID。CAMSearchL3功能返回一個索引,指向在CAM裡的目標IP位址的首個匹配。IP位址包括網絡前綴和主機號碼。網絡前綴可以是從1到32比特的任何長度,主機號碼是IP位址的其餘部分。對一個給定的IP位址而言,在CAM裡可以有輸入項,是用於匹配目標IP位址的多個網絡前綴。IPv4路由器要求(RFC1812)規定,必須使用最長長度網絡前綴匹配一個給定的IP位址,以便轉發IP幀到正確的下一跳。這個無類別査詢要求與已被廣泛使用在網際網路上的基於類別的尋址完全相反。在基於類別的尋址裡,IP位址的首4個比特確定用於IP位址的掩碼,以便進行CAM查尋。子網概念將此擴展到兩個可能被潛在使用的掩碼中的一個最大值。此處描述的實施例使用三態CAM(ternaryCAM),以便確定最長長度匹配。為了進行這個搜索,C旭裡的輸入項一直增加,從而使較長前綴的路由器總是比較短前綴的路由器存儲在一個更低索引的存儲器位置。由於CAM將返回存儲器裡的首個匹配給一個特別IP位址,這個匹配將被保證是IP位址的最長前綴路由匹配。為了簡化IP表格管理,對每個前綴最好預訂存儲器位置的一個區塊,從而可以插入輸入項,而不會弄亂(shuffling)CAM裡的IP路由前綴輸入項。在CAM裡具有相同前綴長度路由器的輸入項順序是不重要的。這個特性可以被用來實施一個較快的重整(reshuffling),即便是前綴用完了存儲器位置。當CAM搜索不產生任何匹配時,幀被丟棄。如果有一個匹配,CAM搜索將返回此匹配的索引。這個索引被用於下一跳模塊以獲得下一跳MAC、TrunkID和VID。這些數值是從外部SRAM裡的轉發信息存儲器讀取。綠棘圖25是一個轉發更新過程2500的流程圖,其在步驟2505上開始。控制行進到初始決策步驟2510,其確定一個變量toCPU是否等於1或Drop標記是否等於1。如果是的話,控制行進到一個輸出轉發決策步驟2540,過程結束。但是,如果在步驟2510上的答案是否定的,控制行進到步驟2520。步驟2520設置一個臨時變量(tmp)等於頭校驗和(HC)加1。然後,頭校驗和被設置等於(tmp&OxFFFF)+(t即》16)。TTL計數器是遞減的。控制從步驟2520行進到步驟2530,設置一個Etheraent優先權變量(Pri)為生成樹ST[8:6]以設置埠映射的優先權,其中ST[8:6]對應圖14裡ST1…ST8地址中的一個地址。控制從步驟2530行進到輸出轉發決策步驟2540。IP處理的最後階段要求遞減TTL和更新IP頭校驗和。當以幅度l遞減TTL時,增量頭校驗和操作是初始校驗和增加1。如果設置了Carry進位比特,必須檢査進位比特並將其增加到校驗和。如果信息包將被丟棄或轉發到CPU,不需要進行TTL遞減。綠微圖26是一個轉發輸出過程2600的流程圖。過程2600在歩驟2605上開始,並行進到步驟2610輸出一個轉發決策。特別地,步驟2610輸出參數L3Match、L3Index、TTL、HC、drop、PRI、和ToCPU。控制從步驟2610行進到End步驟2620,過程結束。3層轉發輸出生成^i/7ofex,作為輸出被用於確定輸出FlowID、下一跳目標MAC地址和V工D。新的TTL和HC也被輸出,並被用來更新幀的頭欄位。絲微-魔分微綴微器流分類模塊450對2層或IP幀的頭欄位、甚至包括傳輸層文件標頭執行匹配操作。這個操作將任何與這些欄位匹配的信息包分類成一個流。流分類操作產生或不產生一個匹配。在有匹配的情況下,返回一個索引並被轉發到下一跳模塊460作進一步處理。在沒有匹配的情況下,分類不返回一個索引,且信息包也不被分類成一個流。流分類模塊執行的處理步驟要點如下1.如果W屍、^s7S^C禾Qh/屍(/T二二0朋仍信號是活躍的,目標IP位址、源IP位址、源埠、目標埠、輸入埠、TOS、SYN和ACK欄位被用來執行一個相對於CAM裡流分類輸入項的128-比特搜索操作。7T7Qfer和ife&力狀態信號被傳遞到下一跳模塊。2.另外,如果5ZF和A/屍(/T二二做W)信號是活躍的,目標MAC地址、目標IP位址、源埠和目標埠被用來執行一個在CAM裡2層分類欄位的128-比特搜索。CAM控制器返回T/7o^和i^c力信號。3.如果6YF和i'siP信號不是活躍的,不需要執行流分類搜索。流分類模塊也對2層和3層頭查尋執行CAM搜索操作,並以流水線方式將這些操作進行排序。CAM控制器CAM控制器為外部CAM執行流水線操作。CAM被用來存儲乙太網MAC地址、IP路由前綴和流分類輸入項。在這個實施例裡,使用一個能夠存儲最大32K72-比特輸入項或16K144-比特輸入項或以4KB幅度遞增的72-比特和144-比特輸入項的任何組合的1Mb三態CAM。三態CAM包括CAM裡每個輸入項的一個掩碼,也包括能夠被用來在全局基礎上進行搜索操作的全局掩碼寄存器。當對於一個輸入項,設置一個掩碼比特為0時,CAM搜索將對應的比特看作"不考慮",並不會去比較那個比特和搜索數據以確定是否已經產生一個匹配。CAM輸入項的四個類型是2層輸入項、3層輸入項(IP路由器)、2層分類輸入項和流分類輸入項。圖27顯示分類輸入項欄位的格式。CAM裡每個輸入項類型的格式如圖27所示。搜索操作是在72-比特區段(對2層/3層搜索)或144-比特區段(對流程/2層分類)裡執行的。這些區段最好是在系統啟動時被配置,從而搜索操作將僅匹配相關CAM輸入項。1-比特類型欄位被用來區分2層和3層輸入項以及2層分類輸入項和流分類輸入項。2層輸入項2702包括72比特,T二0。2層輸入項包括目標MAC地址2705(48比特);VID2710(8比特);未使用的部分2715(14比特);T欄位2720(1比特)、和V欄位2725(1比特)。3層輸入項2704包括72比特,T二l。3層輸入項包括源IP位址2730(32比特);埠標識符2735(6比特);目標IP前綴2740(32比特);T欄位2745(1比特)、和V欄位2750(1比特)。2層分類輸入項2706包括144比特,T二Ol。2層分類輸入項包括源埠2755(16比特);目標埠2760(16比特);V工D2765(8比特);目標MAC地址2770(48比特);未使用的部分2775(16比特);埠標識符2780(6比特);目標IP前綴2785(32比特);和T欄位2790(2比特)。流分類輸入項2708包括144比特,T=ll。流分類輸入項包括源埠2782(16比特);目標埠2784(16比特);V工D2786(8比特);PR0T欄位2788(8比特);T0S欄位2792(6比特);SYN欄位2794(1比特);ACK欄位2796(1比特);未使用的部分2708(16比特);源IP位址2772(32比特);埠標識符2774(6比特);目標IP前綴2776(32比特);和T欄位2790(2比特)。基於每個時隙的控制信號,CAM控制器將搜索和寫入操作排序到CAM。CAM控制器執行的過程如圖28所示。CAM控制器基於來自2層和3層轉發模塊的控制信號,執行2層和3層搜索。然後,執行流分類搜索,最後也可以執行可選的CPU訪問(或源地址學習訪問)。圖28是CAM控制器操作2800的流程圖。過程2800在步驟2805上開始,然後行進到初始決策步驟2810,確定是否需要CAMSearchL2(2層搜索)和CAMSearchL3(3層搜索)。如果不需要的話,控制行進到另一個決策步驟2840,確定是否需要CPU。如果CPU是必需的,控制行進到步驟2850,執行一個寫入/搜索命令,並設置Comparand為CPU數據。Comparand是被用來比較CPU數據和學習請求。如果在決策步驟2840上CPU不是必需的,控制行進到另一個決策步驟2845,確定是否需要學習。如果學習是必需的,控制行進到結束步驟2855,執行一個學習命令並設置Comparand為學習FIFO,如果學習不是必需的,控制流程結束。回到步驟2810,如果需要的話,控制行進到決策步驟2815,確定CAMSearchL3是否是必需的。如果是的話,控制行進到步驟2830,執行CAMSearchL3並設置Comparand為SIP、Trunk、和DIP。然後,控制行進到步驟2835'執行CAMSearchL3Flow命令,並設置Co即arand為SIP、DIP、SP、DP、SYN、APK、T0S、TRUNK、和PR0T。控制從步驟2835行進到決策步驟2840以確定進一歩的CPU處理是否是必需的。回到歩驟2815,如果CAMSearchL3不是必需的,控制行進到步驟2820,執行一個CAMSearchL2命令,並設置Co即arand為DMAC、V工D。控制行進到步驟2825,其執行CAMSearchL2Flow命令,並設置Co即arand為DIP、SP、DP、DMAC、VID和TRUNK。寄存器l.CAM命令寄存器CAM命令寄存器被用來執行CAM陣列的寫入和搜索操作。CAM命令寄存器包括一個被用來訪問三態CAM陣列以讀取和寫入輸入項的13-比特CAM地址和指定是否要執行特別操作的控制比特。這種特別操作可以包括但不限於,例如寫入一個掩碼字和刪除一個掩碼輸入項。CPU可以使用的典型指令有-在地址位置上寫入數據-在地址位置上寫入掩碼-在地址位置無效輸入項-比較三態CAM和comparand寄存器裡的數據並返回索引寫入到命令寄存器會觸發將要執行的操作。在發出命令之前,與指令相關聯的數據最好被存儲在數據寄存器裡。2.CAM數據寄存器CAM數據寄存器被用來將數據和掩碼字寫入到三態CAM。對一個寫入操作,這些寄存器內的數據被用作寫入到一個位置裡的數據,對一個讀取操作,CAM裡的數據被返回到這些寄存器裡。3.CAM控制和狀態寄存器CAM控制和狀態寄存器被用來控制通過處理器的CAM操作。指示完成CAM初始化操作的狀態比特和CAM的CAM狀態標記(全滿標記、匹配標記等)被保留在這個寄存器裡。綠芯#-r一凝必謬下一跳功能是以流水線方式執行的,從而每8時鐘周期處理一個新的幀頭決定。這種實施確保處理速度與64位元組幀的入站最大信息包到達率匹配。下一跳處理模塊460負責確定幀的最終輸出決策,並控制幀頭修改。下一跳處理步驟的綜述如下。基於2層、3層和流分類匹配信號,從一個外部SRAM存儲器讀取轉發信息。轉發信息被用來確定輸出流和新幀頭。接著,基於一個被分配給當前流的PolicingID,對信息包執行policing(監管)和DiffServ(區分服務)操作。如果信息包不被丟棄,執行頭欄位替換、幀區段複製和轉發區段到CPU,正如輸出決策所要求的一樣。最後,多播控制模塊按照需要複製幀區段,並在轉發幀區段到QCHIP之前增加正確的頭控制比特用於幀緩衝和排隊。圖29是一個下一跳模塊功能2900的流程圖。過程2900在步驟2905上開始,然後行進到分類査詢步驟2910。控制行進到信息查詢步驟2920,然後分成三個平行的流。首個平行流從步驟2920行進到2層處理步驟2930。2層處理步驟使用學習、未知幀、多播幀、和鏈路匯聚。控制從步驟2930行進到步驟2960。第二平行流從步驟2920行進到3層處理步驟2940,其使用TTL更新和下一跳MAC。控制從步驟2940行進至步驟2960。第三平行處理流從步驟2920行進到步驟2950,在控制行進到2960之前,其使用會話頭和幀統計執行會話處理。步驟2960執行監管和區分服務處理,然後控制行進到步驟2970執行頭替換之前。控制行進到步驟2980進行多播和輸出控制,然後行進到End步驟2990結束。圖30是下一跳轉發過程3000的流程圖。過程3000在步驟3005上開始,然後控制行進到決策步驟3010,確定是否有一個分類指數(CI)匹配。如果有一個CI匹配,控制行進到步驟3015,通過讀取下一跳SRAM(NHSRAM):地址是CIndex,數據是CType和CNHIndex而獲得分類信息。控制從步驟3015行進到決策步驟3020,確定是否有一個許可證。如果沒有許可證,控制行進至另一個決策步驟3025,確定是否需要重新定向。如果需要的話,控制從步驟3025行進到步驟3030以獲得下一跳信息。步驟3030讀取下一跳SRAM(NHSRAM):地址是NHID,讀取的數據是FlowID、MAC、VID、SIP、DIP、SP、DP、和CTRL。控制從步驟3030行進到步驟3070,輸出轉發信息。轉發信息包括FlowID、頭欄位、控制信息、Dr叩、和未知/多播(UM)比特。控制從步驟3070行進到End步驟3075。返回到步驟3025,如果沒有重新定向,控制行進至Drop步驟3035,其設置Drop等於l,然後控制行進到轉發信息輸出步驟3070。返回到步驟3020,如果有許可證,控制行進到決策步驟3040。返回到步驟3010,如果沒有CI匹配,控制行進到決策歩驟3040。決策步驟3040確定是否有2層轉發。如果有2層轉發,控制行進到決策步驟3050,確定是否有一個2層匹配。如果沒有2層匹配,控制從步驟3050行進到步驟3055,設置未知/多播(UM)比特等於1。控制從步驟3055行進到轉發信息輸出步驟3070。如果在步驟3050上有一個2層匹配,控制行進到步驟3060,獲得下一跳信息。步驟3060讀取NHSR雄地址是L2Index,數據是UM和FlowID。控制從步驟3060行進到轉發信息輸出步驟3070。返回到決策步驟3040,如果沒有2層轉發,控制行進到決策步驟3045,其確定是否有一個3層匹配。如果沒有3層匹配,控制行進到drop步驟3035,其設置Drop等於l,然後控制行進到轉發信息輸出步驟3070。但是,如果在步驟3045上有一個3層匹配,控制行進到步驟3065,獲得下—跳信息。步驟3065讀取NHSRAM:地址是L3Index,數據是UM、FlowID、MAC、和VID。控制從歩驟3065行進到轉發信息輸出步驟3070。FlowID參數值被用來確定幀應該被轉發到的埠。但是,如果設置了未知/多播(UM)比特,FlowID值被使用作在多播和輸出處理模塊裡轉發表格內的一個索引。對2層轉發的例子而言,當在CAM裡沒有匹配時(未知幀),FlowID被設置成0,且多播模塊通過讀取VID的VLANMemberMap表格確定轉發埠映射。圖31顯示在SRAM裡2層、3層和流分類輸入項和在外部SRAM裡下一跳表格內對應輸入項之間的關係。CAM裡的2層和3層輸入項總是有一個對應輸入項在NHSRAM表格裡(如圖31裡的L2NHInfo和L3NHInfo所示)。但是,CAM裡的流分類輸入項不一定有對應的NHInfo輸入項(如FCftlCAM輸入項所示),除了重新定向(如FCtt2CAM輸入項所示)和會話控制輸入項的例子之外。流分類輸入項在外部SRAM裡總是有分類信息輸入項(Cinfo),指定了分類輸入項類型。下一跳模塊的處理步驟如下1.如果流分類產生一個成功匹配(CIMatch是有效的),讀取在分類輸入項(CIndex[14:0])的下一跳SRAM裡的存儲器位置。分類輸入項可能有以下4種類型a)—個/7e,Af傻嚴多類撒遊/f^"⑧輸入項,其指定幀是否應該被轉發和其應該以什麼類別被轉發;b)—個cfe/77f否決9輸入項,指定幀應該被過濾;c)一個化&'化"f^^7^9輸入項,包含到下一跳存儲器的一個指針,其指定埠和參數以轉發幀;和d)—個M^io;7f會話J輸入項,包含到下一跳存儲器的指針和規定將被替換頭欄位的控制比特。2.基於分類輸入項類型,採取以下動作。a)對一個per邁it『it力CoS輸入項,通過0R,ing(或操作)具有此欄位的下一跳/^opt/A使用CIF1owID[13:0]欄位(在6T/7/b輸入項裡)產生一個新/7o,/"。這樣被用來產生幀的新服務類別。b)對一個c/e77y輸入項,產生一個Drop信號。c)對一個re^'re"輸入項,從C7/7/b輸入項讀取一個新的下一跳索引(CINHID[13:0]),輸入項取代由2層和3層匹配操作返回的索引。d)對一個ses^o/7co/^roJ輸入項,產生一個新的CINHID[13:0]和CTRL[4:0]欄位,其指定下一跳輸入項和替換幀頭裡各種頭的控制欄位。3.如果對3層轉發幀出現一個匹配(L3Match是有效的),執行讀取由L3Index指定的位置。這個位置包括3層路由的下一跳輸入項(包括目標MAC地址(DMAC)、VLANID(VID)、UM比特和FlowID)。4.如果L2Match是活躍的,執行讀取由L2Index指定的位置。這個位置包括確定幀輸出埠的FlowID和UM欄位。5.當被一個Redirect或5bssio/7Omz^7分類輸入項(FCNHInfo輸入項)指定時,讀取下一跳信息表格是外部下一跳SRAM的最後讀取操作。這次讀取找回會話信息,包括與下一跳相關聯的2層標頭(DMAC和VID)和指定輸出埠的未知/多播控制比特(UM)禾口流ID(FlowID)。新的IP和傳輸標頭(SIPIndex、DIP、SP、DP)是從NHSRAM讀取,且被用於6^^i'朋6b;^2y^輸入項,指定修改這些頭。SIPIndex被用來從SIPAddr表格裡尋找源IP位址。對一個3層轉發幀,源MAC地址(SMAC)是從VLAN信息表格讀取。—旦從下一跳SRAM獲得標頭和控制信息,基於FlowID信息執行監管、區分服務和統計處理。下一跳處理的最後步驟包括從FIFO425讀取區段以修改幀頭,然後發送幀區段到輸出模塊470。如果幀區段包括SOP,從下一跳外部存儲器讀取的參數被用來替換2層頭用於3層轉發。對於4層轉發,可以有選擇地替換源和/或目標IP位址和源和目標埠。IP幀的TTL和頭校驗和欄位也被替換用於3層轉發,且UDP和TCP校驗和被修改用於頭轉換。在SOP上,控制頭也被存儲在埠的一個內部存儲器內,並被使用直到信息包的下一個起始位。對SOP信號不是活躍的幀區段,從存儲在內部存儲器內的數據增加控制頭,但不改變區段數據。區分服務處理和監管Policing(監管)功能採用一個LeakyBucket算法用來監控流和限制它們的速率。1024個監管器中的每個監管器需要一個平均比特率和一個突髮長度作為輸入參數,並基於這些參數,監管器或者標記或者丟棄不符合預定特徵的幀。幀的PoliceID是從DiffServ(區分服務)表格或分類輸入項表格裡獲得。如果通過流分類匹配沒有獲得PoliceID,PoliceID就從DiffServ表格裡獲得。基於DiffServ的policing表格使用幀頭裡一系列的TrunkPortID和DiffServ碼點,作為這個表格的一個索引。這個表格包括一個被用作這些幀的監管器的PoliceID、一個指定幀是否應該被標記的概率值,以及一個替換802.lp優先權欄位的優先權。—些寄存器和內部存儲器控制監管操作。監管狀態(policestatus)和控制寄存器(controlregister)、全局規模寄存器(globalscaleregister)、隊列長度RAM(queuelengthRAM))、速率RAM(rateRAM)、和閾值RAM(thresholdRAM)控制監管器的基本操作。對一個給定的PoliceID,一個統計RAM計算被標記(或被丟棄)幀的數目。全局規模寄存器是一個16-比特寄存器,其包括在通過所有policeIDs完成一個完整周期之後開始遞減過程的一個新周期的延遲值。設置全局規模寄存器為一個除0以外的值可以提高被監管的最大比率,在監管率粒度上也有相應損失。隊列長度RAM跟蹤每個PoliceID的隊列長度。一個監管器索引的隊列長度是基於速率RAM裡的相應速率值,而遞減的。速率RAM表格包括一個16-比特速率欄位。設置速率欄位為0,避免隊列長度計數器的遞減。速率欄位指定一個隊列長度計數器在周期性間隔上遞減的值,周期性間隔則由全局規模計數器規定。速率值由32-比特字給定。閾值RAM表格包括閾值,當在信息包起始位上的相同PoliceID的隊列長度計數器達到閾值,會導致一個入站信息包被標記或丟棄,且遞增統計計數器。另外,閾值RAM表格包括模式比特(modebit),其指定什麼時候能夠標記/丟棄,什麼時候能夠統計計數,以及模式是否是丟棄或標記。會話處理會話處理包括執行網絡地址轉換和埠地址轉換(NAT/PAT)、負載均衡、會話監控和統計收集所要求的特徵。會話監控的2個主要硬體功能是*頭欄位替換;和RTP監控和統計。頭欄位替換會話處理功能如NAT、PAT和伺服器負載均衡要求替換源和目標IP位址和/或源和目標埠。替換源和目標埠的功能和傳輸控制協議(TCP)或用戶數據報協議(UDP)是相同的,除了頭校驗和的位置之外。替換合適的頭欄位是基於一個特別流所要求的會話處理類型。基於在分類輸入項的會話控制類型裡的控制欄位,將被替換的欄位和它們在乙太網幀頭裡的位置如圖32所示。使用源IP索引(被存儲在NHSRAM裡的Info表格裡),從源IP位址RAM裡獲得源IP位址(SIP)作為RAM裡的地址。目標IP(DIP)、源埠(SP0RT)、目標埠(DPORT)欄位是直接從NHSRAM獲得的。使用一個增量頭校驗和算法,計算IP、TCP和UDP頭校驗和。TCP和UDP頭校驗和使用一個包括源和目標IP位址的偽標頭。因此,當僅僅替換這些欄位時,仍然需要重新計算UDP和TCP校驗和。增量頭校驗和重新計算算法如以下所示。注意到工P、TCP和UDP案例的校驗和計算使用求反運算,是在16-比特字上執行,並且都是相同的。1.IP校驗和對一個被路由(TTL遞減,DSCP標記)的信息包,或當IP位址或傳輸埠被更新時,執行增量IP校驗和計算。給定x,初始欄位數值,和x',更新欄位數值,更新的校驗和計算如下HC'=Hc~~TTL~~TTL'-~TOS-TOS'-~DIP-DIP"-~SIP-SIP'...l)2.TCP和UDP校驗和W二7T-"/屍--67P---OT-卿W-57W-…(2)注意到,以上所寫的公式是關於可被替換的頭欄位的邏輯表達式。但是,這些計算是在包括被替換欄位的標頭裡的合適16-比特字上進行。會話監控會話監控功能的目標是提供一個準確的IP電話通話質量的表示。會話監控通常跟蹤一個RTP會話(由分類匹配定義)的一個或多個以下參數.-抖動、幀丟失數目、和任何被監控的流所累積的字節數目,如分類輸入項裡規定的。設計會話監控功能使得僅有UDP和工P流上的RTP被監控,因為在TCP上的流能夠重新傳輸信息包,導致不正確抖動和丟失包數目。l.抖動抖動計算取決於RTP幀裡的時間戳和從RTP源產生幀的期望速率。源的速率由RTP檔案(RTPprofile)給定,由合適的RFC或由相互協議規定。源的速率在有效負荷檔案(profile)裡描述為源產生的每秒樣本。由於每個源樣本通常是以一個獨立RTP幀被分組打包和傳輸,幀的到達時間和包含在幀裡的時間戳可以被聯合使用以確定網絡傳輸引起的抖動。表2提供抖動計算的定義R源速率(每218個時鐘周期的樣本)TS(i)包含在RTP幀i裡的32-比特時間戳C(i)RTP幀i到達的32-比特時鐘值時間戳單位的幀i的轉發延遲計算如下:Transit(i)=R*C(i)-TS(i)…(3)在幀i到達時間上計算的累計抖動被計算如下formulaseeoriginaldocumentpage54…(4)為了便於存儲和獲得更好的準確性,等式(3)和(4)被重新記作formulaseeoriginaldocumentpage54…(5)以下例子強調抖動監控功能的操作。在RTP幀裡為每個有效載荷類型(7-比特)指定參數R。對一個語音編碼器的例子,源速率的共同值是每秒8000個樣本,或者假設4微秒的時鐘周期,R是8388(20C4h)。假設C(l)是FF000000h,即在流裡首個幀的到達時間的時鐘值,以及包含在首個幀裡的時間戳是72h。然後計算並存儲以下的值formulaseeoriginaldocumentpage54(6)formulaseeoriginaldocumentpage54(7)注意到,對首個信息包,抖動必須被設置成0,因為前一個幀的轉發時間是未知的。假設下一個信息包在一個FF0003E8h時鐘值上到達,並包含一個9Ah的時間戳值。然後計算和存儲以下的值formulaseeoriginaldocumentpage54(6)formulaseeoriginaldocumentpage54(7)注意到在進行這些計算時,應該考慮時鐘時間翻轉和時間戳翻轉的影響。時鐘當前MSB可以與前一個樣本的MSB進行比較,以確定是否已經發生翻轉,並在如果已經發生翻轉時作出適當校正。類似方法也可用於時間戳值。2.丟失幀為了計算丟失RTP幀的數目,RTP幀格式提供一個序列號,其能夠被用來確定幀是否已經丟失。通常,RTP序列號應該對由源產生的每個幀遞增1。但是,對一些源而言,一個源幀被分割成(被碎成)幾個RTP幀是可能的。在這個例子裡,對連續的RTP幀,序列號將不會增加。為了計算丟失幀的數目,第一個步驟是確定己經發現一個序列的RTP幀。丟失幀計數過程首先檢查確保兩個按次序的RTP幀被觀察到。然後,如果當前幀的RTP序列號不大於前一個幀的存儲值,根據在當前序列號和被存儲的序列號之間的差值,這個過程遞增丟失計數值。如果序列號差值大於一個預定閾值,計數將不再增加,並假設源重新設置序列號為一個新對每個監控的會話流,存儲當前序列號(16-比特)和丟失幀的計數(24-比特)。這個計數,結合信息包和字節統計,確定會話丟失率。統計當統計使在下一跳模塊狀態和控制寄存器裡設置比特成為可能時,每個FlowID的信息包和字節計數器被保留。對會話控制分類輸入項,在每個輸入項基礎上而不是在每FlowID基礎上保留統計。這樣使確定每個會話的一個更準確藍圖成為可能。下一跳存儲器外部NHSRAM被分成多個邏輯表格。這個存儲器的布局如表3所示表3tableseeoriginaldocumentpage55tableseeoriginaldocumentpage561.L2NHInfo和L2NHInfo表格L2NHInfo和L2NHInfo表格位於128Kx72比特下一跳SRAM的首個16K位置內。圖33顯示這些表格裡的輸入項格式。一個樣本輸入項3300包括UM欄位3305(1比特)、備用欄位3310(1比特)、FlowID3315(14比特)、VID3320(8比特)、和MAC地址3325(48比特)。對2層轉發幀,FlowID3315和UM3305欄位被用來確定幀應該被轉發到的埠。當MAC地址3325被學習時(通過學習過程),MAC地址和VID連同FlowID—起被寫入到L2Info欄位。對3層轉發幀,MAC地址和VID指定替換當前目標MAC地址和VID的下一跳MAC地址和VLANID。2.FC麗nfo表格FCNHInfo表格位於128Kx72比特下一跳SRAM裡從16K(0x4000)到48K-1(0xBFFF)的地址位置內。表格包括16KInfo輸入項,每個大小為144比特。這些輸入項的格式如圖34所示。一個樣本輸入項3400包括UM欄位3405(1比特)、Un欄位3410(1比特)、FlowID3415(14比特)、VID3420(8比特)、DMAC3425(48比特)、目標IP3430(32比特)、源IP索弓|3435(8比特)、目標埠3440(16比特)、和源埠3445(16比特)。基於會話處理的FCNHInfo輸入項可以執行3層路由功能,而不需要要求一個48-比特目標MAC地址(DMAC)和一個也被用來確定輸出幀頭的源MAC地址的8-比特VLANID的頭替換。源IP(SIP)欄位是一個256-輸入項源IP位址表格(32-比特寬)的索引,在分類表格裡的會話控制輸入項的控制比特指定幀頭裡的源IP位址替換時才被使用。類似地,目標IP、源埠和目標埠欄位,在會話控制輸入項裡的控制比特指定這些欄位的替換操作時,才被使用。3.Cinfo表格分類信息表格(Cinfo)佔用NHSRAM裡的地址OxCOOO(49152)上開始的16K位置。表格裡的每個輸入項是一個36-比特字,其佔用NHSRAM裡的72-比特字的LSBs(最低有效位),格式如表4所示。表4輸入項類型35:3332:28272625:1615:0QoSi午可i正010未使用CIPoEn未使用CIPoIDCIFlowID拒絕100未使用重新定向.110未使用-CIP。En未使用.CIPoIDCINHID-會話控制111CTRLCIPoEn未使用CIPoIDCINHID分類輸入項可以是4種類型,如下所示。e/7t/y(^^^^^著,^/",^^^^類型被用來識別分配有給定優先權隊列的特別幀。在這個操作過程中,CLFLOWID參數與從下一跳輸入項獲得的Flow工D—起被或操作。這樣允許FlowID被修改,而不會影響下一跳輸入項和參數。ZfeA76/7&7^^/《^>1_#卩類型說明幀應該被悄悄地丟棄;不需要參數。e77^^重箭定/^翰A艱J包括一個CLNHID欄位,指定將被使用的下一跳,不考慮2層或3層輸入項指定的下一跳。在被用來獲得轉發信息的下一跳表格裡,CLNHID指定輸入項地址。&5^》/7co/^ro2e/7^yf會話^^煮/^^A^^包括一個CLNH工D和一個CTRL欄位作為參數。CLNHID值指定在被用來獲得轉發信息的下一跳表格裡的輸入項地址。CTRL欄位比特指示在當前幀上將要進行的動作,如以下表5所定義的表5tableseeoriginaldocumentpage58REPDIP替換目標IP位址欄位除了以上所述的操作之外,許可證、重新定向和會話控制輸入項也包括一個與每個輸入項相關聯接的監管器的索引。這個索引指定被分配到分類輸入項的監管器(Policer)索引,並能夠被用來限制與分類輸入項匹配的信息包流速率。Policer可以在基於以下多個變量中的一個變量而被分派指定每個FlowID、每個分類匹配或每個DiffSev碼點和輸入埠。4.統計計數器基於字節計數的統計計數器是32-比特欄位,基於信息包的計數器是24-比特計數器。計數器被存儲在NHSRAM的內存庫3(SByteCnt)、5(SPktCnt)和6(FByteCnt和FPktCnt)裡。基於流的計數器(FByteCnt和FPktCnt)計算所有基於非會話流的信息包數目。如果存在一個被監控的會話控制分類輸入項,計數被保留作為會話計數(FByteCnt和FPktCnt)。5.源IP位址(SIP)表格源IP位址表格是一個256x32比特的表格,存儲源IP位址,其可以被用來替換在幀頭裡的入站源IP位址。當由於一個會話控制分類輸入項匹配而從下一跳SRAM的FCNHInfo欄位讀取一個8-比特索引時,訪問這個表格。當源IP位址將被替換時,這個索引指定將被使用的表格裡的位置。表格裡的輸入項格式如表6所示tableseeoriginaldocumentpage596.區分服務表格DiffServ(區分服務)表格是一個4Kxl8表格,'其規定DiffServ流的Policing(監管)和流控制行為。來自IP頭、優先權、延遲、吞吐量、和可靠性欄位的6個T0S(服務類型)比特與6-比特輸入埠ID連接在一起,並被使用作為DiffServ表格的索引。這個表格裡的數據輸入項包括4個欄位,優先權欄位,Pri,概率,Prob,或速率欄位和DiffServPoliceID(DSPoID)和PoliceEnable(監管啟動)比特,如表7所示。注意到,這個表格分配的優先權與被用作表格索弓1的T0S頭比特裡的優先權是不同的,儘管使用一個合適的初始化他們能夠達成匹配。tableseeoriginaldocumentpage60DiffServ功能只有當輸入信息包是一個IP信息包時且當來自下一跳轉發的FlowID小於64時是活躍的。包含在輸入項裡的優先權欄位與FlowID比特8:6被或操作。概率欄位被用來確定是否設置了出站控制頭裡的DiffServDrop比特。如果概率設定是0,將絕對不設置DiffServDrop比特,且如果概率欄位是100%或更高,DiffServDrop總是被設置。在這個範圍內的任何數目是一個百分概率,其確定DiffServDrop將被設置的可能性。從一個每8個周期從0到99遞增的計數器計算概率欄位。因此,對背靠背的信息包,概率欄位實際上是確定的,但仍然應該有這個比特集合信息包的恰當比率。'基於在默認流的FlowID裡的假設項,選擇FlowID格式,如以下表8所示tableseeoriginaldocumentpage60在這個實施例裡,表8是基於一個軟體定義,而硬體並不限於此,不同於以上所述的基於比特13:9的啟動功能是0。當啟動DiffServ時,產生一個PoliceID,DSPoID,允許具有給定T0S比特的流量流被分配到Policer。Police啟動比特必須被設置為1以使Policer能夠響應這個PoID。注意到,分類系統也能夠產生一個PoliceID,CIPoID,且它將具有超過DSPoID的優先權。DiffServ表格有4096個輸入項,包括64個輸入項的64個內存庫,而不是總共僅僅是64個輸入項。第一內存庫對應埠0,第二內存庫對應埠l,等等。PoliceID是9比特,從而DiffServ輸入項能夠被映射到首512個Policer中的任何一個Policer。7.隊列長度RAM隊列長度RAM包括每個PoliceID的24-比特Qlen(隊列長度)計數器(QlenCtr)。提供一個PoliceID地址寄存器(QlenPoIDAdr),其控制下一個Qlen計數器讀取的地址。當這個地址寄存器是CPU可讀寫(RW)時,那麼Qlen數據寄存器是只讀的(即Qlen計數器不能被CPU設置)。訪問QlenCtr的合適途徑是在QlenPoIDAdr寄存器裡設置計數器地址,並等待直到狀態寄存器裡的QlenCntGotlt標記被設置了。然後,QlenData寄存器具有有效的計數。當QlenPoIDAdr寄存器被寫入或當QlenData寄存器被讀取時,QlenCntGotlt標記自動被硬體消除。可以採用以下公式對QlenCntGot工t標記進行設置最壞情況延遲=2*(GlblScale-1024+2)/系統時鐘率…(10)由於這個讀取延遲,QlenCtr訪問主要用於測試和除錯。QlenCtr在一個字是4位元組的虛擬"隊列"裡提供字數目。8.速率RAM速率表格是一個lKxl6表格,其包括每個PoliceID的16速率比特。設置數據為0將避免由當前RatePoIdAdr提供的Qlen計數器的遞減。速率欄位規定在GlblScale計數器指定的一個周期性間隔上QlenCtr遞減的值。速率值以字計數。速率RAM的數據格式由以下表9給定。表格9比特15:0功能速率9.閾值薩閾值RAM是一個1Kx18表格,其包括每個PoliceID的閾值。當QlenCtr達到信息包起始位上的這個數值時,信息包被標記或被丟棄,且統計計數器遞增。另外,閾值RAM表格包括模式比特,其說明何時能夠標記/丟棄、何時能夠統計計數、和模式是否是Drop(丟棄)或Mark(標記)。閾值RAM格式由表10提供。在1時,Drop比特設置模式為Dr叩,在0時,設置模式為Mark。在1時,/b分a^)7啟動被標記/被丟棄的信息包的監管統計計數,而/bf/7比特啟動標記/丟棄信息包。當這個比特被設置成0時,"leakybucket"繼續運作。閾值是一個15-比特值,其由幀區段(16個32-比特字)給定。We/7計數器跟蹤字計數,但較低的4比特不進行比較。一個7fff的閾值將從不標記或丟棄信息包。一個oooo的閾值將總是標記或丟棄信息包。表10tableseeoriginaldocumentpage6210.統計RAM統計表格是一個lKxl8表格,其保留被每個PoliceID的轉發晶片標記或丟棄的信息包的計數數目。儘管可以在任何時候讀取計數,清除時要特別注意,以避免競爭條件。有兩個方法可以使用。第一,通過寫入o到那個PoID、然後讀回計數器以證明計數沒有被信息包遞增功能改寫,計數器被清除。如果在那個特別PoID上有持續的標記,則需要一些試驗。第二,對那個PoID關閉PoStatEn比特,位置被清除,然後PoStatEn比特被再次設置回l。1.設置ThresPoIdAdr為PoID2.設置StatPoIdAdr為PoID3.讀取ThresData寄存器4.將3fff和讀取數據與操作(ANDed)後,寫入ThresData寄存器,關閉PoStatEn比特5.將0寫入StatData寄存器6.將步驟3讀取的數據寫入ThresData寄存器,再次打開這個PoID的狀態閾值RAM的數據格式是由表11提供。表lltableseeoriginaldocumentpage63下一跳寄存器l.監管控制和狀態寄存器(P0CTLST)監管模塊控制和狀態寄存器被分成兩部分,較高的16-比特可用於狀態比特,而較低的16-比特可用於控制比特。較高的比特和在較低部分裡的任何填補比特僅可被讀取而不能被設置。表12概括這些比特的意義。表12tableseeoriginaldocumentpage64隊列長度計數器GotIt標記,We;0^6^/"是一個只讀比特,與讀取隊列長度計數器一起使用。隊列長度計數器GotIt標記是寄存器的較高16-比特狀態段的最低有效位(LSB)。從寄存器的控制部分的LSBs上開始,全局隊列長度計數器遞減寫入啟動比特,WWWe//fec/Frfb,控制著遞減速率過程。67W^e"/fecF^>7必須被設置為l,以"打開在leakybucket底部的洞",否則隊列長度計數器將從不遞減。全局隊列長度信息包寫入啟動比特,67W^e/7/^W:n^,控制著遞增速率過程。67W以朋,虹/^&初始應該被設置為1,以允許到達的信息包按照字計數遞增隊列長度計數器。設置WW^朋屍v^fh5)7為0是用來測試和清除計數器。全局統計寫入啟動比特,Wi^^^Frf",控制當信息包已被標記或丟棄時的統計寫入。67W6Ys^fr5h通常是l,但可以被設置為0用於測試或當從CPU清除統計計數器時避免競爭條件。當WW5YW/&^>7是0時,丟棄或標記不記錄。這並不會改變實際信息包的標記或丟棄。全局監管計數器重置比特,WW化ar/fe^V,控制遞減過程的PoliceID計數器。設置67W屍oC^/fet/^為0保持計數器為0,從而避免運行遞減過程,並避免加載QlenGotlt狀態比特和QlenData寄存器。這樣可以被用來重置計數器以消清除隊列長度計數器。當監管流量正常運作時,WW戶oCtryfe^V應該被設置為1。全局隊列長度消除比特,WWW朋67r,控制遞減過程裡的比率值。通過設置67W^e/767r為1,有可能迫使比率達到最大值。消除67W^e/767r恢復存儲在比率表格裡的比率。設置WWWe77C/r有助加快消除隊列長度計數器。2.全局規模寄存器全局規模寄存器是一個16-比特寄存器,其包括一個有預載值的計數器。計數器在系統時鐘裡計數,並在所有PoliceIDs完成一個完整周期之後延遲開始遞減過程的一個新周期。正常運行時,全局規模寄存器被設置為0,以獲得足夠大的速率用於千兆位乙太網埠。全局規模寄存器可以被設置成較大值以補償較高的系統時鐘率,或提高可能在動態範圍開銷上的低遞減率的解析度。3.NH一Control一RegNH—SCR寄存器是下一跳處理模塊的狀態和控制寄存器。4.NH一S,一AReg5.NH—S應一DReg26,腿—SRAM—DRegl7.既S應一DRegONH—SRAM—Areg、NH—SRAM—DRegO、NH_SRAM_DRegl和NH—SRAM—DReg2寄存器提供到外部HNSRAM的訪問。NH一SRAMAreg寄存器包括用於SRAM地址的17-比特值。在對外部SRAM的讀取或寫入操作時,首先寫入NH—SRAM_Areg寄存器。在讀取操作時,NH—SMM—DRegO寄存器包括32-比特外部NHSRAM的32LSBs。NH—SRAM_DRegO寄存器應該被首先讀取(在讀取NH—SRAM一DRegl和NH—SRAM—DReg2之前),因為這次讀取觸發從由NH—SRAM—Areg指向的外部SRAM存儲器取回數據的動作。—旦NH—SRA^LDRegO被讀取,NH—SRAM_DRegl寄存器包括NHSRAM的比特63:32,且NH一SRAM—DReg2包括比特71:64。到外部SRAM的寫入操作首先要求寫入32LSBs到NH_SRAM_DRegO,隨後寫入比特63:32到NH—SRAM_DRegl,和寫入8MSBs到NH_SRAM_DReg2,其觸發寫入到外部SRAM。8.NH一SIP—AdrReg9.NH—SIP一DataRegNH—SIP—AdrReg和NH—SIP—DataReg是地址和數據寄存器,其控制訪問在NH模塊裡的內部SIP表格SRAMs。在內部SRAM的讀取或寫入操作時,首先將被讀取的8-比特地址寫入到NH—SIP—AdrReg寄存器。對讀取操作,讀取NH—SIP—DataReg寄存器是從SR顏獲取32-比特數據。對寫入操作,寫入到NH_SIP—DataReg寄存器是在地址寄存器的地址上存儲32-比特值到SRAM內。多播和輸出處理每個區段處理的最後階段是多播處理。在這個步驟上,如果是多播幀、鏡幀(mirroredframe)或2層未知幀,幀區段被複製到一組輸出端卩。初始多播處理功能如圖35所示。這個初始處理確定一個輸出幀區段是否將被複製到多播隊列。由下一跳模塊輸出的UM比特設置顯示當前區段將是多播。圖35是一個多播輸出處理3500的流程圖。過程3500在步驟3505上開始,然後行進到步驟3510,i賣取UM、FlowID、和InPortID。控制從步驟3510行進到決策步驟3515,確定UM是否等於1且Drop是否未被設置。如果是的話,控制行進到步驟3525,增加一個區段到多播數據FIFO隊列,存儲InTrunk工D、S0P、E0P、VB、FlowID到多播頭FIFO內。控制從歩驟3525行進到End步驟3530。如果在決策步驟3515上的回答是否定的,控制行進到步驟3520,增加一個區段到一個輸出數據隊列。控制從步驟3520行進到結束步驟3530。多播數據隊列處理功能如圖36所示。過程檢查多播頭(MHdr)FIF0,並在其非空時,通過讀取一個說明^7,(9的FlowID和幀輸出埠之間映射關係的多播控制(M7^乃表格,讀取頭並準備輸出頭用於多播操作。使用入站FlowID作為索引讀取MCtrl表格,且表格輸出是基本多播FlowID(#/^^/")和多播映射(ifosp),其包括發送幀所到的埠。對來自#v%/rFIF0的FlowID是0(未知幀)的例子而言,Mzsp被設置等於來自VLAN表格的^AWe涵erifsp,且#/7o^7Z被設置為0。然後多播輸出過程挑選在她Kp裡設置的首個比特,計算輸出Flow工D(0FlowID)。在一個空閒時隙上,多播輸出過程插入來自多播數據R認的幀區段,並使用當前幀區段的值寫出合適的頭。然後,多播過程將在對應輸出埠的她sp裡的比特歸零,並通過在她7邵裡尋找下一個非零比特計算幀區段應該被發送到的下一個埠。如果Mffi3/是0,多播輸出過程在MHdrFIFO裡尋找下一個頭。圖36是多播隊列處理3600的流程圖。過程3600在步驟3605上開始,然後行進到決策步驟3610,確定多播頭FIFO是否是空的。如果多播頭FIFO是空的,控制返回到歩驟3610,但是,如果在步驟3610上多播頭FIFO是非空的,控制行進到步驟3615,讀取多播頭FIFO以獲得FlowID、VID和InPportID。控制從步驟3615行進到步驟3620,確定FlowID是否等於0。如果FlowID等於0,控制行進到歩驟3625,讀取控制表格,設置地址為FlowID,且數據是MflowID和Mmap。控制從步驟3625行進到步驟3635,設置Mmap(Mmap=Mmap&(l〈〈InportID)),並設置索引i等於0。返回到步驟3620,如果FlowID不等於0,控制行進到步驟3630,讀取VLAN表格,設置地址為VID,並設置數據為VLANMemberMap以及MflowID等於0。控制從步驟3630行進到步驟3635。從步驟3635,控制行進到決策步驟3640,確定是否有一個Mmap。如果沒有Mmap,控制行進到決策步驟3610。但是,如果在步驟3640上有一個Mmap,控制行進到另一個決策步驟3645。步驟3645確定對當前索引在Mmap裡是否有一個輸入項。如果沒有輸入項,控制行進到步驟3650,遞增索引i並傳遞控制到步驟3640。但是,如果在步驟3645在索引上的Mmap裡有一個輸入項,控制行進到步驟3655。步驟3655傳遞控制到決策步驟3660,確定是否有一個空閒時隙。如果沒有空閒時隙,控制返回到歩驟3660直到有一個空閒時隙。如果在步驟3660上有一個空閒時隙,控制行進到歩驟3665,輸出Fdata、S0P、E0P、VB、0PktlD、0flowID、和InPortID。控制從步驟3665行進到步驟3650遞增計數器,並繼續過程。被傳輸到設備緩衝和排隊區的幀的每64-字節區段有一個相關聯的64-比特控制頭,其在頭總線上被傳輸。這個控制頭包括FlowID、信息包起始和信息包終止指示、區段裡的有效字節數目、兩個丟棄指示(顯示是否是一個無條件丟棄或一個基於會導致幀丟棄的隊列長度的丟棄)、和用於多播幀的輸入埠ID以及輸出信息包ID。控制頭的格式如圖37所示。存儲器1.多播頭FIFO多播頭(i^rfr)FIFO存儲幀區段的控制信息,其具有在來自下一跳模塊的控制頭裡設置的未知/多播比特。i/及frFIFO有512個輸入項深和36比特寬。在MHdrFIFO裡的輸入項格式如圖38所示。2.多播數據RAM多播數據RAM是一個1024x64比特的存儲器,其在這些區段的複製過程期間存儲多播幀區段數據。多播數據RAM能夠緩衝高達16個幀區段以便處理。3.多播控制RAM多播控制RAM是一個512x36的模塊RAM,其包括8-比特FlowID和輸出基本FlowID和用於多播幀區段的輸出埠之間的映射關係。多播控制RAM裡的輸入項格式如圖39所示。排隊晶片圖5是圖1中排隊晶片的模塊示意圖。如以上所述,排隊晶片170從轉發晶片150和擴充/處理器接口160接收處理過的流量。在所述關於VoIP的實施例裡,排隊晶片170將語音流量和其它普通流量區分開來,並進一步給予語音流量優先權優於其它普通流量。排隊晶片170通過一個DDR輸入總線510在接收模塊525上接收處理過的流量。接收模塊525提交流量到緩衝管理器540。緩衝管理器540與BMSRAM接口530和隊列管理器545連接。緩衝管理器540提交輸出到存儲控制器565。存儲控制器565與FCRAM接口575連接,並提交輸出到傳輸多路分解器(XMTDEMUX)模塊580。多路分解器580的輸出被提交到傳輸模塊590。傳輸模塊590提交此輸出到一個DDR輸出總線595。隊列管理器545同時連接到QMSRAM接口555和調度器560。調度器隨後連接到傳輸模塊590。QMSRAM接口連接到一個外部總線555。XMTDEMUX模塊580被連接到一個本地總線RxDMA520。其隨後連接到一個CPU接口515。CPU接口通過一個PLX本地總線505處理在排隊晶片170和CPU之間的通信。微芯#-微緩衝、排隊和調度功能是由QCH工P170執行。緩衝和排隊過程使用一個64-比特Q頭,其由轉發晶片150預先計劃給每個幀區段,以獲得控制信息用於處理區段。這個控制信息包括隊列的FlowID、幀起始位和幀標記結束位、區段裡有效字節的數目、drop標記、mark標記和區段的輸入和輸出埠ID。緩衝管理器540實現從轉發晶片150接收到的幀區段的幀重新組裝,並實現與幀緩衝相關聯的邏輯結構(緩衝連結列表)。存儲控制器565實現到FCRAM存儲器的幀區段讀取和寫入。隊列管理器545實現流隊列建立和管理算法。QCHIP170也負責與本地總線接口連接,用於從外部接口傳送乙太網幀和傳送乙太網幀到外部接口。本地總線接口520實現接收DMA功能用於通過PLXPCI設備505從交換子系統到處理器子系統的有效幀傳每個幀區段被拷貝到FCRAM存儲器裡,並對每個信息包形成幀區段的一個邏輯連結列表。如果信息包被錯誤接收,幀被丟棄且不進行排隊。當信息包已經完全被準確地接收,隊列管理器將信息包加到流隊列的尾部。在每個流隊列裡的幀可以被分配到任何具有一個給定類別和子類分配以及低和高隊列長度閾值的埠。當流變得活躍時(即有一個排隊信息包),此流被增加到一個流列表,其將被服務用於當前埠。排隊過程的控制被傳遞到調度器。—個幀區段的緩衝和排隊過程4000的插圖描述如圖40所示。一個來自FCHIP150的入站區段4005被接收,並被提交到步驟4010和4015。步驟4015存儲此入站區段4005在一個DRAM緩衝區4020裡。步驟4010分析頭並轉發該入站區段到一個流配置表格4025。流配置表格4025分配一個輸出流到一系列埠4030a...n中的一個埠。埠4030a...n中的每個埠都被分配有一系列埠-類別-子類4035a...k中的一個埠-類別-子圖41顯示一個出站排隊過程4100和調度器任務的插圖描述。一旦流變成活躍的,調度器有助於服務處於正確順序的信息包。調度器在埠基於類別和子類在流之間執行分層式加權輪轉(hierarchicalweightedroundrobin)功能。一個時隙配置寄存器執行分配帶寬到埠,而調度器在埠上的流之間分配帶寬。許多信息包4105a...n被提交到許多環緩衝器(ringbuffer)4110a...k。在緩衝到一系列子類4115a...m中的一個子類之後,環緩衝器4110a...k提交信息包。然後,子類4115a...m被排序分類成類別4120a...z中的一個類別。類別4120a...z提交相應的信息包到埠4125a...y中的一個埠。然後,來自埠4125a...y的信息包被提交到一個調度器4135,-其分配一個時隙給來自相應埠4125a...y的信息包。調度器4135的輸出被提交到一個取回模塊4140,其從FCRAM緩衝器4150中尋回區段。然後,取回模塊4140提交一個輸出區段4155。微芯#_麥/7緩衝管理器功能綜述緩衝管理器負責(l)管理自由緩衝區連結列表;(2)分配緩衝區IDs(BIDs)用於入隊操作;(3)丟棄Q頭裡設置drop標記的幀;(4)將出隊幀的BIDs增加到自由緩衝區連結列表;和(5)建立一個BIDs連結列表以組成一個乙太網幀,然後轉發幀的頭和尾指針到隊列管理器。緩衝管理器與(1)接收接口;(2)隊列管理器;和(3)FCRAM控制器連接並執行以下功能1.在初始化時,緩衝管理器建立一個自由緩衝區連結列表,其將所有BIDs放置在自由緩衝存儲器裡。2.對一個入隊操作,緩衝管理器從自由緩衝區連結列表分配一個新BID,並將此BID值(具有寫入操作比特集合)寫入到FCRAM控制器命令FIFO裡。緩衝管理器將此新BID更新到輸入-輸出尾BID(IOT)表格(和以SOP開始的輸入-輸出頭BID(IOH)),並將此新BID值寫入到先前尾BID值的存儲器位置,從而連接此新BID到任何先前幀區段。3.關於一個EOP,緩衝管理器讀取IOH和IOT表格的內容用於當前輸入-輸出合併,並轉發信息到隊列管理器。4.關於一個Drop操作,緩衝管理器通過增加頭BID到自由列表的尾部釋放整個幀。5.關於一個出隊操作,緩衝管理器將具有讀取操作比特集合的BID值寫入到FCRAM命令FIFO裡。然後,緩衝管理器增加出隊BID到自由緩衝區連結列表的尾部。6.關於一個增加BID操作,緩衝管理器將NextBID值和相關聯的標記寫入到在外部SRAM裡的CurrentBID位置。數據結構1.自由緩衝區連結列表和Per-flow(每個流)排隊連結列表為了提供對per-flow隊列和一個自由緩衝區連結列表的管理,邏輯隊列在緩衝管理器SRAM裡形成,其中每個隊列對應一個流隊列或自由緩衝區連結列表。每個邏輯隊列按照FIFO順序包括FCRAM裡的緩衝區地址連結列表。緩衝區的自由列表的數據結構被用來實施per-flow隊列。BID自由列表的每個記錄包括下一個BID欄位(用於存儲連結列表裡下一個記錄的BID)、1-比特信息包終止位(EOP)、1-比特信息包起始位(SOP)地段(以顯示下一個BID是否包起始位/終止位相關聯)和一個6-比特長度欄位(其規定在一個64位元組信息包區段裡有效八位字節的數目)。BID自由列表的概念性布局如圖42所示。BID是從自由列表的頭裡被刪除,最終被插入到對應per-flow隊列連結列表裡。per-flow排隊連結列表的實施被記作flow—BIDlist[BID]二(NxtE0P,NxtS0P,NxtLen,NxtBID}。基於此原因,指向一個單元緩衝區的SDRAM地址被稱作緩衝區識別符(BID),而單元緩衝區的自由列表被稱作單元緩衝區列表。隊列管理器通過緩衝區管理器訪問(即寫入或讀取)per-flow連結歹據。寄存器和表格輸入-輸出頭(TOH)和尾(IOT)表格輸入-輸出頭和尾表格包括在任何輸入和輸出埠組合之間交換的幀的頭和尾BID值。由於隨時可能有最多4096個輸入-輸出埠對(64個輸入埠到64個輸出埠),表格深度是4096。表格格式如圖43所示。幀的首個區段的信息包起始位(SOP)、信息包終止位(EOP)和有效字節(VB)值必須被保留在頭BID表格裡,因為當接收到一個幀終止位時這些值只能被寫入到流隊列存儲器裡。尾BID存儲器包括尾指針表格和幀區段長度計數以及有效信息包(VP)控制比特,其顯示信息包是否正被處理用於一個給定輸入-輸出埠組合。頗義哪絲器自由頭寄存器包括指向外部SRAM存儲器裡的自由緩衝區表格的頭指針值。自由頭寄存器值被用來分配存儲器給一個入站幀區段,並通過從外部SRAM讀取自由緩衝區連結列表裡的下一單元得以更新。自由頭寄存器如圖44所示。頗眉,絲器自由尾寄存器包括指向外部SRAM存儲器裡的自由緩衝區表格的尾指針值。當將前一個被分配的存儲器位置增加回到自由緩衝區列表時(例如在一個出隊操作之後或在一個丟棄操作之後),使用自由尾寄存器值。自由尾寄存器如圖44所示。緩衝管理器SRAM存儲器映射緩衝管理器(BM)SRAM存儲器映射是基於一個1Mx36SRAM存儲器。2個512Kx36SRAM的模塊可以被用來形成1Mx36存儲器。存儲器映射布置如圖57所示。功能說明緩衝管理器的功能設計是由以下表格13裡的一組偽碼顯示。這些偽碼對由緩衝管理器執行的入隊和出隊操作提供功能說明。表格13操作入隊/出隊功能開始入隊入隊Read一RCVMUX(,,鵬i7"/"",0/,I觀腳屍',況廁WU"/"W:(義Z層A)讀取尾入隊ReadS腿A/rfr亂-孤+鄰灘,肌欣。義諷讀取頭入隊ReadS腿超潛s,J貝/"7H。義/"觀7"腳屍,入隊區段入隊If(XDR0Pli(IDV==1&&XS0P)II(IDV==0&&!XSOP))ThenDR0P=1ElseIf(IDV==0&&!XE0P)Then{WriteS跳認潛&所n。J,J觀WriteS跳超潛s;/,+柳ft"ats,解議'07,7,7Write—MC(FH[19:0],Enqueue)}ElseIf(IDV==l&&!XEOP){WriteSRAM:A/rfres5vi""7Y"":(U/^/79:^WriteS醒/柳請鄰,組a;,肌7>7Write—MC09iO5W,S晃fiV巡/"/7乂'ft7)}EOP區段入隊If(XEOP&&!DROP)Then{BM—HD=IDH,BM—TL=FH,BM_S0P=IDS0P,BM_EOP=IDE0P,BM_VB=IDVB,tableseeoriginaldocumentpage76隊列管理器功能綜述隊列管理器負責(1)管理幀的per-flow入隊和出隊;(2)跟蹤積壓流隊列(即非空流隊列);和(3)形成基於每個埠-類別-子類的積壓流環。隊列管理器與(1)調度器;(2)緩衝管理器;禾P(3)SRAM接口連接並執行以下功能1.在流隊列被調度和發送到合適埠之前,隊列管理器為per-flow排對管理流隊列的一個連結列表數據結構;2.關於緩衝管理器的新幀指示,隊列管理器檢查PCS的隊列長度以確定幀是否能夠被增加到隊列。為了增加幀到隊列,隊列管理器査詢前一個尾部的BID,並指示緩衝管理器增加信息包頭BID到尾部。與頭BID記錄相關聯的狀態比特也被存儲;如果有必要的話,對處理器已經分配流到合適的埠-類別-子類,更新積壓流環(即包含整個信息包的流)。3.—旦調度器請求埠-類別-子類出隊,隊列管理器從積壓FlowIDs的埠-類別-子類環的頭上的流隊列頭找回記錄。Per-flow隊列長度計數是遞減的;4.然後,隊列管理器更新對應的流隊列頭BID和埠-類別-子類的積壓FlowIDs環。寄存器和表格戸-,微鵬浙細/i)表潛為了跟蹤每個per-flow隊列的頭和尾用於FIFO操作,per-flow頭和尾BID表格(FlowHdTl)是在隊列管理器SRAM裡執行的。這個表格的一個概念性數據結構如圖45所示。頭和尾BID表格具有64個輸入項,其由Flow工Ds索引。每個輸入項包含6個欄位一個頭BID欄位(包含相應流隊列頭的BID值),一個尾BID欄位(包含相應流隊列尾的BID值),一個空欄位(包含顯示per-flow隊列是否是空的狀態),一個SOP欄位(顯示當前單元是否是信息包起始位),一個E0P欄位(顯示當前單元是否是信息包終止位),和一個長度欄位(顯示當前區段裡有效字節)。流隊列的頭和尾BID和單元緩衝區連結列表如何被用來實現per-flow隊列的一個例子如圖46和圖47所示。圖46顯示設立頭和尾BID表格輸入項和相應流隊列連結列表欄位的例子。圖47描述圖46的設立例子形成的流隊列連結列表。每-樣〃-類-殘廳-長度微每-埠-類別-子類隊列-長度計數表格(QCt)存儲每個埠、類別、和子類的隊列長度。每-埠-類別-子類隊列-長度表格的格式如圖48所示。為了便於調度具有入隊信息包的per-flow隊列(即積壓流隊列),基於埠-類別-子類的積壓FlowID連結列表被用於這個實施例裡。每個連結列表對應一個埠-類別-子類,並存儲被設立到這個埠-類別-子類和具有將被調度信息包的FlowID。積壓FlowID連結列表的數據結構如圖49所示。積壓FlowID連結列表被表示為BF[FloWID]={NxtFlOWID},並被存儲在與流的頭和尾指針表格相同的16K存儲器位置地址。離蔬縦身表鵬鵬表潛為了管理基於埠-類別-子類的積壓FlowIDs環的頭和尾FlowID,必需存儲形成這個環的連結列表的頭和尾FlowID在內部寄存器裡。對64個線卡(line-card)埠、8個流量類別、和2個子類,基於埠-類別-子類的積壓FlowIDs(BradTl)環的頭和尾FlowID表格包括1K輸入項,如圖50所示。積壓流連結列表的頭和尾FlowID表格是被由連接6-比特PortID,3-比特類別和l-比特子類(PortID(6,b),C1(3,b),Subcl(l,bM形成的10-比特PtClSub索引。每個輸入項的最高有效位(mostsignificantbit)包括輸入項的空指示符。用於形成基於埠-類別-子類的積壓FlowIDs環的數據結構描述如圖51所示。微,鄉船—活躍埠位圖(PtM即)是一個對應每個埠的64-比特位圖。活躍埠位圖表格是由隊列管理器設立,並被調度器使用。位圖裡的每個比特指明相應埠是否處於空閒或活躍狀態。至於隊列管理器調度一個新幀到埠,埠則必須處於空閒狀態。艦縱像表潛積壓埠類別-位圖(BPtClMap)表格包括64個輸入項,對應64個可能出站埠的每個埠。積壓埠-類別-子類位圖表格是由隊列管理器設立,並被調度器使用。每個輸入項包括一個8-比特寬位圖對應8個可能類別。在位圖裡的每個控制比特顯示對應埠-子類是否有積壓流隊列需要調度。這個表格的概念性描述如圖52所示。BPtClMap的編碼被定義如下0:對應的埠-類別沒有積壓流隊列用於調度;1:對應的埠-類別有積壓流隊列用於調度。隊列管理器設置或重新設置每個埠-類別的對應控制比特,顯示是否有任何與埠-類別相關聯的積壓流隊列。當調度一個傳輸給埠時,調度器請求一個給定PortID的位圖,並使用表格裡的控制比特協助埠的調度決策。如果對一個指定埠有至少一個類別的積壓流隊列控制比特集合,調度器使用WRR算法在控制比特被設置的類別中間作出一個調度決策。艦端O-鄉殘位歸潛積壓埠-類別子類位圖(BPtSubM即)表格包括512個輸入項,對應512個可能埠和類別。積壓埠-類別子類位圖表格是由隊列管理器設立,並被調度器使用。每個輸入項包括2比特寬位圖對應2個可能的子類。在位圖裡的每個控制比特顯示對應的埠-類別-子類是否有積壓流隊列用於調度。這個表格的概念性描述如圖53所示。BPtSubM鄰的編碼被定義如下0:對應的埠-類別-子類沒有積壓流隊列用於調度;1:對應的埠-類別-子類有積壓流隊列用於調度。隊列管理器設置或重新設置每個埠-類別-子類的相應控制比特,指示是否有任何與埠-類別-子類相關聯的積壓流隊列。當調度一個單元傳輸給埠和類別時,調度器請求一個給定PortID和類別的位圖,並使用表格裡的控制比特協助埠的調度決策。調度器使用WRR算法在控制比特被設置的子類中間作出一個調度決策。魔-端/7-,-殘表潛流-埠-類別-子類表格是一個詳細說明FlowID和埠-類別-子類之間映射的管理表格。流-埠-類別-子類表格包括16K輸入項對應每個FlowID,並包括FlowID的10-比特埠-類別-子類項。流-埠-類別-子類表格如圖54所示。流-埠-類別-子類表格裡的每個輸入項包括對應FlowID的(埠(6'b),類別(3,b),子類(l,b)}。麵長度庳離隊列長度高閾值(QHiThresh)表格是一個管理表格,如圖55所示,其指明信息包丟棄開始發生時每個埠-類別-子類的隊列長度。隊列長度高閾值是16比特長,因此最低分配單元是16幀區段。隊列管理器比較隊列長度高閾值和當前隊列長度以確定一個入站流的信息包是否應該被丟棄。麵長度戀離隊列長度低閾值(QLoThresh)表格是一個管理表格,如圖56所示,其指明標記信息包被丟棄時每個埠-類別-子類的隊列長度。隊列長度低閾值是16比特長,因此最低分配單元是16幀區段。隊列管理器比較隊列長度低閾值和當前隊列長度,如果超出隊列長度低閾值,且設置了入站幀頭裡的DSD比特,入站流的信息包被丟棄。隊列管理器SRAM存儲器映射SRAM存儲器映射是基於一個32Kx72SRAM存儲器。2個128Kx36SRAM模塊被並行排列以形成72-比特寬存儲器。存儲器映射安排如圖57所示。調度器功能綜述調度器負責每8-時鐘周期安排一次出站傳輸。1.調度器保留一個時隙配置表格,其將幀裡512個時隙中的每個時隙映射到出站埠。2.調度器調度一個出站幀區段傳輸給埠,通過-a.對埠和類別執行優先權排隊或加權輪轉調度算法,在具有積壓流隊列的高達8個類別中間確定一個類別;b.對埠、類別、和子類調度器執行優先權排隊或加權輪轉調度算法在具有積壓流隊列的高達2個子類中間確定一個子類;C.調度器執行輪轉算法,在所有積壓流隊列中間確定一個流隊列。3.然後,調度器請求流隊列頭的幀區段記錄,該流隊列被安排了隊列管理器的時隙以被出隊。—個分層式改進的加權輪轉實施5800的插圖如圖58所示。許多流隊列5810被分類到子類5820裡。然後,分類的流隊列5830被分類到類別5840裡,然後其被輸出調度到埠5850。加權輪轉過程的詳細細節將在以下提供。為類別0和1及其相應子類執行優先權排隊,類別l、子類l具有最高優先權,類別O、子類O有最低優先權。寄存器和表格好像體表潛如果59所示,時隙配置(TSConfig)表格將512個出站時隙的一個幀映射到出站埠。當line-card(線卡)埠被配置時,設置相應的輸入項。此表格包括512個輸入項,每個輸入項被一個0511範圍內的時隙索引。一個輸入項包括一個相應時隙映射的Port工D欄位。每個輸入項的最高有效位包括PortID的一個空指示符比特。這個最高有效位被編碼為*0:輸入項PortID是空的,沒有埠被配置時隙;*1:輸入項PortID不是空的,有埠被配置時隙。之微微遊纖、靜器之前被調度的時隙(PreSchTS)寄存器包括8個比特,並存儲了512個時隙幀裡被調度的之前時隙的索引值。之前被調度的時隙寄存器在被用來確定一個時隙用於調度之前,以幅度1遞增。類微羞表潛類別權重表格(ClWeight)包括每個埠-類別的.個輸入項,並存儲了類別之間用於加權輪轉(WRR)調度算法的權重值。此表格的一個概念性描述如圖60所示。類別權重表格在有流建立或拆除的PortIDs的交換操作期間建立。對一個給定埠,所有類別的權重總和提供埠的WRR調度窗口大小。一個類別權重對這個總和的比率提供保證給此類別的埠帶寬比例。類謝,微表潛類別WRR計數(ClWeightCT)表格包括每個埠-類別的一個輸入項。類別權重計數表格存儲WRR計數值用於類別之間的加權輪轉調度算法運作。此表格的一個概念性描述如圖61所示。活躍埠-類別的輸入項在WRR調度算法運作期間被更新。WRR適合埠類別-位圖表格WRR合適埠類別-位圖(WrrPtClMap)表格包括64個輸入項,對應64個可能出站埠。每個輸入項包括一個8-比特寬位圖,對應8個可能類別。位圖裡的每個控制比特顯示對應的埠-類別是否適合被WRR算法調用。此表格的一個概念性描述如圖62所示。WrrPtClMap的編碼被定義如下0:相應的埠-類別不適合WRR調度-此埠-類別的類別WRR權重計數已經達到相應的埠-類別權重;1:相應的埠-類別適合WRR調度-此埠-類別的類別WRR權重計數沒有達到相應的埠-類別權重。之微錄度麟微潛之前被調度的類別(PreSchCl)表格包括64個輸入項;每個輸入項對應埠之前被WRR算法調度給類別識別符。此表格的一個概念性描述如圖63所示。WRR調度算法設置對應埠的輸入項為調度算法剛剛調度傳輸的類別。f微置表潛子類權重表格(SubWeight)包括每個埠-類別-子類的一個輸入項,並存儲子類之間用於加權輪轉(冊R)調度算法的權重值。此表格的一個概念性描述如圖64所示。子類權重表格在有流建立或拆除的PortID和類別的交換操作期間建立。對一個給定埠和類別,所有子類的權重總和提供埠和類別的WRR調度窗口大小。一個子類權重對這個總和的比率提供保證給此子類的埠-類別的帶寬比例。賴,微表潛子類權重計數(SubWeightCT)表格包括每個埠-類別-子類的一個輸入項。子類權重計數表格存儲WRR權重值用於子類之間的加權輪轉調度算法的運算。此表格的一個概念性描述如圖65所示。活躍埠-類別-子類的輸入項在子類間的WRR調度算法運算期間被更新。腳適,/7-鄉殘-鄉表搭WRR適合埠-類別子類-位圖(WrrPtSubMap)表格包括512個輸入項對應512個可能的埠-類別。每個輸入項包括一個2-比特寬位圖對應2個可能子類。位圖裡的每個控制比特顯示對應的埠-類別-子類是否適合被WRR算法調度。此表格的一個概念性描述如圖66所示。WrrPtSubMap的編碼被定義如下0:相應的埠-類別-子類不適合WRR調度-此埠-類別-子類的類別WRR權重計數已經達到相應的埠-類別-子類權重;*1:相應的埠-類別-子類適合WRR調度-此埠-類別-子類的類別WRR權重計數沒有達到相應的埠-類別-子類權重。之,凝微遊殘表潛之前被調度的子類(PreSchSub)表格包括512個輸入項,每個輸入項對應那個埠-類別之前被WRR算法調度的子類識別符。此表格的一個概念性說明如圖67所示。WRR調度算法設置對應埠-類別的輸入項為WRR調度算法剛剛調度區段傳輸的子類。功能對一個埠,加權輪轉算法被用於類別調度。對一個埠和類別,加權輪轉算法被用於子類調度。對一個埠、類別和子類,輪轉算法被用於流隊列的幀傳輸調度。*汰辦對加權輪轉(TOR)算法的運算,滿足三個特性1.如果所有類別包括非積壓流,WRR等待下一個區段以進入任何類別的流隊列。然後,那個類別被處理,並提供完全服務;2.如果僅有一個類別包括積壓流,且所有其它類別包括非積壓流,具有積壓流的類別被處理,並繼續服務,直到流在另一個類別裡積壓;3.如果兩個或多個類別包括積壓流;WRR使用調度窗口來確定類別進入服務a.在調度窗口裡給一個特別類別較多時隙,保證較多的帶寬給此類別;同樣,b.在調度窗口裡給一個特別類別較少時隙,表示較少的帶寬給此類別;c.提供一個特別類別的埠帶寬的保證比例是分給那個類別的時隙數目除以調度窗口裡的時隙總數。對WRR運算,調度窗口裡的時隙順序和安排不影響分配到每個類別的帶寬數量。但是,延遲取決於調度窗口裡的時隙順序。有兩種方法用於基於窗口的WRR調度算法1.一個面向模塊的WRR調度算法給一個特別類別提供所有按次序的時隙,而不會移到另一個類別;2.—個分布式的WRR調度算法嘗試為一個給定類別在調度窗口均勻分布時隙。此處所述的實施例利用第二種方法。特別地,實施例提供一個WRR計數和一個權重給所有與每個埠-分類相關聯的流隊列。每次從與埠-類別相關聯的流隊列調度一個區段,對應埠-類別的WRR計數增加1,且類別被存儲為之前被調度的類別。對所有到一個埠的類別,只要在類別裡有至少一個積壓流隊列,且相關聯的WRR計數沒有達到其權重,算法就依次從流隊列頭裡繼續調度緩衝區的區段給每個類別。如果在一個類別裡不再有積壓流隊列,或一個類別的對應WRR計數達到其權重,該類別就被排除在調度周期之外。對相同埠-類別裡的積壓流隊列,一個輪轉方案被用來從每個積壓流隊列的頭傳輸區段。對一個給定的埠,只要所有類別使它們的WRR計數達到其權重或WRR計數沒有達到其權重的類別沒有積壓流隊列,所有類別的WRR計數被重新設置,且一個新的調度窗口開始用於這個埠。對一個基於可變長度信息包的系統,加權輪轉算法必須被修改以適應流達到其服務閾值的情況,但必須如packet-by-packet包傳輸所要求的,服務信息包直到完成。對這種情況,其中流被服務,而此流已經達到一個相關閾值,這時使用一種虧損服務計數器。虧損服務計數器對每個被服務的高過閾值的幀區段遞增,顯示流在當前調度循環裡已經利用額外帶寬。當這個信息包已經被服務完成,如果任何其它的流隊列有積壓信息包,但還沒有達到其閾值,這些流的信息包被服務。當所有這些信息包已經被服務且所有積壓隊列已經達到其調度閾值時,不需要重新設置調度器計數為0,計數被重新設置為虧損計數器裡保留的值。與其它流相比,減少當前循環裡流可利用的服務。這樣可以保持公平的帶寬-共享算法。微餅-存縦縱功能綜述存儲控制器565從FCRAM緩衝區存儲器讀取幀區段或寫入幀區段到FCRAM緩衝區存儲器。存儲控制器與(1)MUX模塊;(2)緩衝管理器;和(3)DEMUX模塊連接以執行以下功能*存儲控制器從緩衝管理器讀取一個命令FIFO,這個命令是通過讀取和寫入請求(和存儲器裡的區段開始地址)而寫入的。關於讀取請求,存儲控制器從給定的存儲器地址讀取幀區段,並寫入數據到一個出隊FIFO裡。關於寫入請求,存儲控制器讀取入隊FIFO,並寫入幀區段到具體的存儲器地址。存儲控制器產生如FCRAM-II規範所要求的存儲更新周期。存儲控制器模塊565的模塊圖如圖6所示。存儲控制器565在一個命令FIFO模塊610上通過一個21比特總線接收來自緩衝區管理器540的輸入。在一個入隊FIFO模塊650裡通過一個64比特總線接收來自MUX晶片140的MUX輸入。存儲控制器565包括一個讀/寫狀態機630。存儲控制器565通過一個FCRAM控制模塊640提交輸出到FCRAM接口模塊570。存儲控制器565通過一個出隊FIFO模塊620提交輸出到圖5的多路復用器580。FCRAM存儲器映射4個FCRAM設備中的每個設備包括4個內存庫(內存庫A、B、C和D),每個包括32K個行地址和128個列地址。每個FCRAM設備存儲每64-字節幀區段的16個字節。這16個字節被存儲為每內存庫8個字節,且每次讀取或寫入操作可以傳輸8個字節(2個字節,突髮長度為4)從/到內存庫A(內存庫C)或從/到內存庫B(內存庫D)。存儲控制器模塊接口存做劍器,_,C應W在一個10-周期期間內讀取和寫入FCRAM存儲器,其中讀取和寫入64-字節幀區段是交叉的。如圖所示,每個命令要求5個周期完成。讀取和寫入可以由FCRAM更新周期預先進行,其消耗大約2%的可用接口帶寬。DEMUX晶片140圖8是圖1的DEMUX晶片190的體系結構模塊圖。如圖1的以上所述,DEMUX晶片190從排隊晶片170接收流量,並從預定數據寬度將流量重排成系統100接收到的初始數據寬度。DEMUX晶片190提交輸出流量到MAC晶片130。圖8顯示DEMUX晶片190在接收模塊850上接收頭'(HDR)860和數據(DAT)870。接收模塊850緩衝接收到的頭860和數據870,並提交相應信息到HDRFIFO模塊835和CHUNGFIFO模塊840。HDRFIFO模塊835緩衝頭信息,並提交一個16比特輸出到多路復用器830。類似地,CHUNGFIFO模塊840緩衝接收到的數據,並提交一個64比特輸出到多路復用器830。多路復用器830多路傳輸接收到的頭和數據信息到10個FIFO信道(被連接到一系列10個PKTFIFO模塊815a...f,825a...d),從而將一個預定數據寬度的接收到的總線流量恢復到由系統100接收到的流量705的數據寬度。PKTFIFO模塊815a...f緩衝接收到的信息,並提交64比特輸出到相應的POS-PHY/Leve12傳輸(PP2Tx)模塊810a...f。類似地,PKTFIF0模塊825a...d緩衝接收到的信息,並提交64比特輸出到相應的SPI3Tx模塊820a...d。PP2Tx模塊810a...f產生輸出流量805a...f,SPI3Tx模塊820a...d產生輸出流量805g...j。所有的流量805a...j被提交到MAC130。前述的首選方法包括一個特別控制流。此首選方法可以有許多其它轉變,如使用不同的控制流,而不會偏離本發明的精神和範圍。而且,首選方法的一個或多個步驟可以並行地而不是按順序地進行。計算機應用流量處理的方法最好使用一臺通用計算機系統300實施,如圖3所示,其中圖1、2和4到70的過程可以作為軟體實施,如計算機系統300內運行的應用程式。特別地,流量處理方法的步驟受計算機執行的軟體裡的指令影響。這些指令可以由一個或多個代碼模塊產生,每個代碼模塊被用來執行一個或多個特別任務。軟體也可以被分割成兩個獨立部分,其中第一部分執行流量處理方法,第二部分管理第一部分和用戶之間的用戶界面。軟體可以被存儲在計算機可讀媒介裡,例如包括以下描述的存儲設備。軟體從計算機可讀媒介被載入到計算機裡,然後由計算機執行。記錄有這種軟體或電腦程式的計算機可讀媒介是電腦程式產品。在計算機裡使用電腦程式產品最好是流量處理的有效裝置。計算機系統300是由計算機模塊301、輸入設備如鍵盤302和滑鼠303、輸出設備包括印表機315、顯示設備314和揚聲器317組成。數據機(Modem)收發器設備316被計算機模塊301用來與通信網絡320進行通信,例如通過電話線321或其它功能媒介進行連接。Modem316可以被用來訪問Internet和其它網絡系統,如區域網(LAN)或廣域網(WAN),且在一些應用裡可以被合併到計算機模塊301。計算機模塊301通常包括至少一個處理器單元305和一個存儲器單元306,例如由半導體隨機存取存儲器(RAM)和只讀存儲器(ROM)形成。模塊301也包括許多輸入/輸出(I/O)接口,其包括一個連接視頻顯示器314和揚聲器317的音頻-視頻接口307,一個1/0接口一313用於鍵盤302和滑鼠303以及可選擇的操作杆(未說明),以及接口308用於Modem316和印表機315。在一些應用裡,Modem316可以被合併到計算機模塊301內,例如接口308內。提供一個存儲設備309,其通常包括硬碟驅動器310和軟碟驅動器311。也可以使用一個磁帶驅動器(未顯示)。一個CD-R0M驅動器312通常被提供作為一個永久數據源。計算機模塊301的組件305到313通常通過一個互連總線304進行通信,並在某種意義上其就是相關領域計算人員所知的計算機系統300的常規操作模式。所述計算機例子可以包括IBM-PC,s和相容設備、SunSparcstations或由此衍生的相關計算機系統。通常,應用程式駐存在硬碟驅動器310上,並通過處理器305的進行讀取和控制。程序的中間存儲和從網絡320提取任何數據可以使用半導體存儲器306來完成,可能與硬碟驅動器310—致。在一些情況下,可以提供應用程式給用戶在CD-R0M或軟碟上編碼,然後通過相應的驅動器312或313讀取,或通過Modem設備316用戶從網絡320讀取。更進一步地,軟體也可以從其它計算機可讀媒介被載入到計算機系統300裡。此處使用的術語"計算機可讀媒介"是指參與提供指令和/或數據給計算機系統300用於執行和/或處理的任何存儲或傳輸媒介。存儲媒介的例子包括軟碟、磁帶、CD-R0M、硬碟驅動器、ROM或集成電路、磁光碟、或計算機可讀卡如PCMCIA卡等,不管這種設備是計算機模塊301的內部或外部設備。傳輸媒介的例子包括無線電或紅外傳輸信道和連接到另一部計算機或網絡設備的網絡,和Internet或內聯網包括在網頁上的e-mail傳輸和記錄的信息等流量處理的方法也可以由專用硬體來實施,如執行多路傳輸和處理功能或子功能的一個或多個集成電路。這種專用硬體可以包括圖形處理器、數位訊號處理器、或一個或多個微處理器和相連存儲器。在一些可選的方案裡,交換系統100表現為一個乙太網交換機。在一個首選實施例裡,-乙太網交換機被合併到一個獨立IP電話系統。交換機在IP電話手機和乙太網網絡之間連接以提高語音質量和網絡性能。當IP電話接通到交換機,流量通過48FE埠110。交換機分辨並分類IP電話設備。然後,語音VLAN的語音ID被分配給IP電話。其後,交換機也分配優先權給IP電話設備的語音流量以保護如以上所述的計算機應用例子裡的語音質量。工業應用從以上顯然知道,所述方案可以被應用到計算機、數據處理和電話通信工業。前述僅僅描述了本發明的一些實施例,此外可以對此作出修改和/或變化,而不會偏離本發明的範圍和精神,實施例只是用作描述目的而非限制本發明。權利要求1.一種通信流量處理方法,包括接收一個初始數據寬度窄於或等於預定數據寬度的通信流量;將所述接收到的流量重排到所述預定數據寬度的總線流量;辨認所述總線流量裡的一個特別流量;處理所述總線流量;給所述特別流量以優先權優於所述總線流量裡的其它流量;和依照所述優先次序的結果輸出所述總線流量;2.根據權利要求1所述的方法,還包括將所述總線流量拆分到所述初始數據寬度。3.根據權利要求1所述的方法,其中所述辨認和所述給以優先權還包括辨認一個語音流量和給一個語音流量以優先權。4.根據權利要求1所述的方法,其中所述給以優先權還包括將所述預定數據寬度的所述總線流量進行排隊。5.根據權利要求1所述的方法,其中所述給以優先權還包括緩衝所述預定數據寬度的所述總線流量。6.根據權利要求1所述的方法,其中所述處理還包括2層、3層、和4層頭處理中的至少一種。7.根據權利要求1所述的方法,其中所述接收到的流量被應用到以下至少一個接口POS-PHY接口、SPI接口、PCI接口、PCMCIA接口、USB接口和CARDBUS接口。8.根據權利要求1所述的方法,其中所述預定數據寬度是64比特。9.一種通信流量處理的系統,包括 一個電路用於接收和重排一個初始數據寬度窄於或等於預訂數據寬度的流量到所述預定數據寬度的總線流量;一個電路用於區分所述總線流量裡一個特別流量-,一個處理器用於處理所述重排的總線流量;和一個電路用於給予所述特別流量以優先權優於所述總線流量裡其它流10.根據權利要求9所述的系統,還包括一個電路用於將所述總線流量拆分到所述初始數據寬度。11.根據權利要求9所述的系統,其中所述用於給以優先權的電路給予一個語音流量以優先權優於所述總線流量裡的其它流量。12.根據權利要求9所述的系統,其中所述用於給以優先權的電路還包括一個排隊晶片用於排隊所述總線流量和一個緩衝器用於緩衝所述總線流13.根據權利要求9所述的系統,其中所述處理器包括一個電路,根據2層、3層和4層中的至少一種進行頭處理。14.根據權利要求9所述的系統,其中所述的系統包括至少一個用於接收和重排的接口,所述接口是從以下選擇POS-PHY接口、SPI接口、PCI接口、'PCMCIA接口、USB接口和CARDBUS接口。15.根據權利要求9所述的系統,其中所述的用於拆分的電路包括以下至少一個接口POS-PHY接口、SPI接口、PCI接口、PCMCIA接口、USB接口禾卩CARDBUS接口。16.根據權利要求9所述的系統,其中所述預定數據寬度是64比特。17.—個用於安全幀傳輸的設備,包括一個接收電路用於接收幀;和一個入口處理器用於處理所述幀以確定是否進一歩處理所述幀。18.根據權利要求17所述的設備,還包括一個電路用於預處理所述幀,通過分析所述幀頭以檢查所述幀的幀頭有效性。19.根據權利要求17所述的設備,其中所述入口處理器包括一個電路用於分配識別符給所選幀。20.根據權利要求19所述的設備,其中所述識別符是一個VLANID。21.根據權利要求17所述的設備,其中所述入口處理器包括一個電路用於設置一個VLANID被配置給VoiceID,並還設置X2比特給所述VoiceID以避免幀泛濫。22.根據權利要求17所述的設備,其中所述的入口處理器包括一個電路用於記錄被授權用戶的MAC地址到寄存器裡。23.根據權利要求17所述的設備,其中所述寄存器是一個硬體寄存器。24.根據權利要求17所述的設備,其中所述的入口處理器包括一個電路用於確定是否以2層或3層實體轉發所述幀。25.根據權利要求17所述的設備,還包括一個2層處理器用於引導所述入口處理的幀到正確埠。26.根據權利要求17所述的設備,還包括一個3層處理器用於引導所述入口處理的幀到正確埠。27.根據權利要求17所述的設備,還包括電路,用於通過匹配所述幀的頭欄位將所述幀分類成一個流。28.根據權利要求17所述的設備,還包括一個下一跳處理器,用於確定所述幀輸出和所述幀的控制幀頭修改。29.根據權利要求17所述的設備,還包括一個用於輸出所述幀的多播處理器。30.—種處理通信流量的乙太網交換系統,所述交換系統包括一個電路,用於接收和重排初始數據寬度窄於或等於預定數據寬度的乙太網流量到所述預定數據寬度的總線流量;一個電路,用於區分所述總線流量裡的一個特別流量;一個處理器,用於處理所述重排的總線流量;和一個電路,用於給予所述具體流量以優先權優於所述總線流量裡其它流量。31.—個網際網路協議電話系統,包括一個數據網絡;一個網際網路協議(IP)電話手機;和一個將所述IP電話手機連接到所述數據網絡的交換器,所述交換器包括第一電路,用於從所述電話手機和所述數據網絡中的至少一個接收通信流量,所述通信流量具有一個窄於或等於預定數據寬度的初始數據寬度;第二電路,用於將所述接收到的流量重排到所述預定數據寬度的總線流量;第三電路,用於在所述總線流量裡區分出來自所述IP電話手機的語音流量;一個處理器,用於處理所述重排的總線流量;和第四電路,用於給予所述IP電話手機的語音流量以優先權優於所述總線流量裡的其它流量。全文摘要本發明披露了一種用於通信流量處理以提高數據通信網絡整體性能的方法。本方法包括接收一個數據寬度窄於或等於預定數據寬度的通信流量;將接收到的通信流量重排到所述預定數據寬度的總線流量;識別總線流量內的一個特別流量;處理總線流量;給特別流量(如語音流量)優先權優於所述總線流量裡的其它流量;和依照優先排序結果輸出總線流量。因此,本方法保證網絡資源用於語音流量,並避免可能導致系統崩潰的幀泛濫。此處還披露了一種用於通信流量處理的系統。本系統包括一個電路用於接收和重排數據寬度窄於或等於預定數據寬度的通信流量到所述預定數據寬度的總線流量裡;一個電路用於區分所述總線流量裡一個特別流量;一個處理器用於處理重排的總線流量;和一個電路用於給予特別流量優先權優於所述總線流量的其它流量。本發明還提供一個用於安全幀傳輸的設備。本設備包括一個接收電路用於接收幀;和一個入口處理器用於處理幀以確定是否進一步處理此幀。文檔編號H04L12/28GK101160825SQ200680010081公開日2008年4月9日申請日期2006年2月1日優先權日2005年2月1日發明者林子建,洪俊傑,潘查·樸羅謀申請人:香港應用科技研究院有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀