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