千兆以太網(wǎng)交換芯片BCM5690及其在交換整機中的應用
關(guān)鍵詞:千兆以太網(wǎng);BCM5690;堆疊;數據流程
目前,萬(wàn)兆芯片技術(shù)不斷取得新的發(fā)展,尤其在“真”萬(wàn)兆的問(wèn)題上,只有擁有更先進(jìn)的芯片,設備廠(chǎng)商才能夠在芯片功能與特性的基礎上開(kāi)發(fā)自身的交換機體系架構。雖然Broadcom、Intel、Marvell、美國國家半導體(NS)、英飛凌(Infineon)和意法半導體(STMicro electronics)都推出了最新的千兆以太網(wǎng)芯片產(chǎn)品。但萬(wàn)兆芯片的發(fā)展無(wú)疑會(huì )從硬件與架構層面來(lái)加快萬(wàn)兆產(chǎn)品的發(fā)展速度。
為此, BroadCOM公司開(kāi)發(fā)了BCM5690(12+1)單芯片交換方案。該集成電路芯片集成了12個(gè)千兆端口和1個(gè)萬(wàn)兆端口,是一款功能比較強大和全面的三層千兆以太網(wǎng)交換芯片。文中將詳細介紹BCM5690芯片的功能特性以及基于該芯片的交換機實(shí)現方法。
1 BCM5690芯片簡(jiǎn)介
1.1 BCM5690芯片結構
BCM5690是芯片提供有12個(gè)GE接口(千兆端口)和1個(gè)HiGig接口(內聯(lián)端口),并具有堆疊功能。器件的端口采用PCI接口進(jìn)行管理。其結構框圖如圖1所示。
由圖1可以看出:BCM5690芯片由以下一些主要功能模塊組成:
(1)GIGA接口控制器GPIC:用于提供GE口與交換邏輯之間的接口。
(2)內聯(lián)端口(HiGig)控制器IPIC:主要提供HiGig口與內部交換邏輯之間的接口,有時(shí)也被用于多片BCM5690之間的堆疊操作。
(3) CPU管理接口CMIC:主要提供CPU與BCM5690設備不同功能塊之間的接口,同時(shí)也用于諸如MIIM、I2C和燈的處理等功能。該模塊通過(guò)PCI接口與CPU相聯(lián),可使CPU訪(fǎng)問(wèn)和控制BCM5690,而DMA引擎則支持數據從CPU傳向BCM5690或從BCM5690傳向CPU。
(4) 地址解析邏輯ARL:該邏輯功能模塊可在數據包的基礎上確定該數據包的轉發(fā)策略。它利用二層表(L2_TABLE)、二層組播表?L2MC TABLE?、三層表(L3_TABLE)、三層最長(cháng)前綴匹配表(DEF_IP_HI和DEF_IP_LO)、三層接口表?L3-INTF?、IP組播表(L3_IPMC)、VLAN表(VLAN)以及spanning tree Group表(VLAN_STAG)來(lái)決定如何轉發(fā)數據包。
(5) 公共緩沖池CBP?CBP實(shí)際上是1MB共享的包緩沖區。CBP由8192(8K)個(gè)單元組成,每個(gè)單元128字節。設備里的每個(gè)數據包消耗一至多個(gè)單元。
(6)內存管理單元MMU:BCM5690有一個(gè)單獨的內存管理單元。每個(gè)MMU與設備的功能塊(GPIC、IPIC等)相關(guān)聯(lián)。MMU負責數據包的緩沖和調度。它首先接收數據包,然后再將數據包緩沖,并在發(fā)送時(shí)加以調度,同時(shí)它還管理交換單元的流控特性。概括來(lái)說(shuō),就是緩沖邏輯、調度邏輯、流控邏輯。緩沖邏輯從CP-BUS接收包并存放在CBP,同樣也從CBP獲取包并將它們發(fā)送到CP-BUS上去。包的發(fā)送順序由調度邏輯根據包的優(yōu)先級別確定。流控邏輯包括Head-of-Line?HOL?阻塞預防和Backpressure兩種方式。
1.2 BCM5690芯片特性及功能介紹
Broadcom公司XGS系列芯片的重要特性是具有堆疊功能,該功能可以將多個(gè)交換芯片組合在一起,以形成一個(gè)更大規模的系統,或者將多個(gè)帶交換芯片的系統組合在一起形成一個(gè)完整的系統設備。這種功能最多可以實(shí)現30個(gè)設備的堆疊。
BCM5690能夠通過(guò)Hi-Gig和GIGA來(lái)擴展系統容量。它有四種模式,其中cascade模式通過(guò)Hi-Gig口單向互聯(lián)來(lái)形成(環(huán)行組網(wǎng));而全雙工堆疊模式則通過(guò)BCM5690的Hi-Gig口雙向地與BCM567X相連來(lái)擴展容量(環(huán)形組網(wǎng));第三是chassis模式,該模式是將Hi-Gig通過(guò)背板互連形成(星形組網(wǎng))??蓪?shí)現冗余備份和逐級交換,不需中轉,且效率比環(huán)行組網(wǎng)高;最后是SL形式的堆疊,它通過(guò)GIGA口來(lái)互連BCM5690。圖2所示為BCM5690的邏輯框圖。
BCM5690是一款千兆以太網(wǎng)交換芯片,它支持二層交換、三層路由以及第2~7層數據包的分類(lèi)和過(guò)濾等。
地址解析邏輯是BCM5690集成電路芯片的中心部件?GPIC的入口邏輯用它來(lái)決定單個(gè)包的轉發(fā)方向。
BCM5690集成電路芯片中的快速過(guò)濾處理器(FFP)是一個(gè)通過(guò)第2~7層數據包進(jìn)行分類(lèi)和過(guò)濾的引擎。每個(gè)GE口各有一個(gè)FFP來(lái)負責包的分類(lèi)和更新。FFP可以通過(guò)配置寄存器GIMASK和GIR-ULE來(lái)改變符合條件的數據包特性?其中GIMASK用于配置匹配選項,GIRULE用于產(chǎn)生操作命令。對于每個(gè)數據包來(lái)說(shuō),最多可以改變16個(gè)匹配特性。如果同時(shí)有多個(gè)特性符合匹配條件,則在GIMASK里處于高位的優(yōu)先配置。
對于包的緩沖和流控,BCM5690還集成了1MB的數據包緩沖區CBP,這個(gè)緩沖區可為所有端口共用。
BCM5690中的寄存器MIRROR_CONTROL和IMIRROR_CONTROL用來(lái)設置被鏡像端口與鏡像端口,兩個(gè)寄存器的內容應保持一致。它支持本芯片內的鏡像。
BCM5690集成電路芯片中的鏈路聚合(trunk)最大可支持8端口的Trunking,共32組Trunk,并可進(jìn)行跨芯片的端口Trunk。另外,BCM5690還支持速度高達 66MHz的PCI接口,并可對所有數據包的線(xiàn)速交換以及RMON、SNMP、STP和Rapid STP提供支持。
2 訪(fǎng)問(wèn)控制方式及數據流程
2.1 訪(fǎng)問(wèn)控制方式
BCM5690支持一系列符合PCI標準的寄存器?這些寄存器允許對設備再分配?MODID?、地址空間的自動(dòng)配置和再映射。CPU對BCM5690的控制都是通過(guò)訪(fǎng)問(wèn)PCI寄存器來(lái)實(shí)現的。BCM5690的寄存器分為直接訪(fǎng)問(wèn)和非直接訪(fǎng)問(wèn)兩種??芍苯釉L(fǎng)問(wèn)的寄存器映射到PCI的內存空間?這些寄存器相對于PCI控制寄存器有一個(gè)固定的地址偏移。上電初始化期間,系統自動(dòng)配置每個(gè)PCI設備的基地址及地址范圍,以便能夠唯一地訪(fǎng)問(wèn)每一個(gè)PCI設備中的寄存器。BCM5690的訪(fǎng)問(wèn)機制分為三個(gè)類(lèi)型:一是PCI配置空間;二是PCI memory 映射的I/O,比如通過(guò)PCI設備對DMA、MIIM和I2C的控制;第三是消息機制。
2.2 數據流程
所有的數據流通過(guò)交換芯片都要經(jīng)過(guò)輸入部分(Ingress)、內存管理單元(MMU)和輸出部分(Egress)這三個(gè)流程。其數據流程如圖3所示。
Ingress(輸入邏輯)是數據包在每端口上的邏輯流程。每端口都有自己的輸入邏輯,輸入邏輯負責所有包的轉發(fā)(交換)策略,決定將包送給哪個(gè)端口,根據轉發(fā)信息將數據包發(fā)送給MMU,進(jìn)行緩沖和調度,并以線(xiàn)速對包進(jìn)行處理。輸入邏輯與大部分交換功能關(guān)聯(lián)。
MMU(內存管理單元)主要負責數據包的緩沖與調度,它接收從輸入邏輯過(guò)來(lái)的數據包并緩沖這些包,同時(shí)對這些包進(jìn)行調度并將它們送給輸出邏輯。數據包進(jìn)入MMU時(shí)將存儲在CBP里。CBP有1MB的大小供所有端口共用。MMU主要有四部分功能:資源計數、背壓、HOL預防機制、調度。其中資源計數主要是統計當前消耗的CBP單元數或CBP數據包個(gè)數,決定數據包什么時(shí)候進(jìn)入背壓或HOL預防;調度則是根據優(yōu)先級和COS的四種調度準則來(lái)確定包發(fā)送的先后順序和權重。
Egress(輸出邏輯)主要從MMU獲取數據包并將其送入各個(gè)端口,這是整個(gè)流程中最簡(jiǎn)單的一環(huán)。它先將包發(fā)給輸出端口,然后確定是否在發(fā)送的數據包上添加tag。具體流程如下:首先從MMU請求數據包,如果發(fā)送的包要求不帶tag,則負責將tag去掉;然后計算數據包的CRC;最后將包交給MAC發(fā)送(特殊情況下,CMIC將直接把數據包以DMA方式發(fā)送給CPU)。
3 基于BCM5690的交換整機設計
3.1 硬件實(shí)現
筆者在設計中采用了兩片BCM5690和四片BCM5464,外加四個(gè)SFP接口的千兆光接口來(lái)實(shí)現16端口的10/100/1000M的電口和4個(gè)千兆光口的交換整機。BCM5464是BroadCom的四端口的千兆PHY。
圖4是該交換整機的主控板硬件結構,其硬件電路由交換單元、物理接口單元、RJ45和燈接口單元、光接口單元、控制單元、CPU連接器單元、時(shí)鐘單元、電源單元組成。其中交換單元選用了兩片BCM5690,它們之間通過(guò)Hi-Gig口背靠背連接實(shí)現通信,帶有與其它大部分單元的接口。每片BCM5690通過(guò)PCI接口與CPU連接器相連,主要用來(lái)與CPU通信以實(shí)現對芯片的管理。
圖4所示電路中的CPU采用Motorola公司的PPC8240,主要負責整個(gè)系統的運轉調度。12個(gè)電口通過(guò)背板總線(xiàn)與各個(gè)線(xiàn)卡相連,以實(shí)現各線(xiàn)卡的上聯(lián)功能。當主控板單獨作為一個(gè)獨立的三層交換機時(shí),它將同時(shí)作為與其它三層設備互聯(lián)的接口。4個(gè)千兆光接口與本設備上聯(lián)可擴展以太網(wǎng)的傳輸距離。
本系統使用了兩個(gè)背靠背連接的BCM5690來(lái)進(jìn)行設計,這樣可將該系統歸為cascade模式。在堆疊完成之后,通過(guò)在堆疊口的以太網(wǎng)包首部加上頭信息,可使芯片與芯片之間、系統與系統之間通過(guò)Broadcom專(zhuān)有的通信協(xié)議來(lái)實(shí)現相互之間的信息傳輸,從而實(shí)現數據包在不同芯片、不同系統之間的轉發(fā)。
另外,還可以通過(guò)設置IPIC CONFIG 寄存器(IPIC_CASCADE, MY_MODID)、MODPORT表和Giga bit端口CONFIG寄存器來(lái)對堆疊進(jìn)行配置。
3.2 軟件實(shí)現
a.初始化流程
在設計軟件模塊的初始化流程時(shí),首先是頭模式的設置,由于BCM5690固定工作在小頭?little_endian?模式,而PPC8240工作在大頭模式,因此需要對頭模式進(jìn)行設置;接下來(lái)是查找PCI設備,以獲取各個(gè)PCI設備的設備號以及各自的基地址;之后應對堆疊模式進(jìn)行設置,以便兩片BCM5690之間的二層表內容能夠互通;最后是基本交換功能和DMA通道的配置。
b.軟件結構
圖5是筆者設計的軟件結構簡(jiǎn)圖。其中涉及驅動(dòng)程序和驅動(dòng)程序封裝的是SAL層、Driver層和BCM層。SAL層可對操作系統與驅動(dòng)層進(jìn)行隔離,可提供PCI中斷以及PCI設備的查找、線(xiàn)程、中斷、同步和內存管理。Driver層包括BCM5690寄存器的訪(fǎng)問(wèn)方式實(shí)現、表的初始化、內存初始化、芯片堆疊模式的設置、L2和L3地址的操作與查找、數據包的發(fā)送/接收以及端口的管理等。
評論