馮國仕, 李 璞, 吳 海
(中國電子科技集團公司第三十研究所,四川 成都 610041)
各種網(wǎng)絡(luò)應(yīng)用需要借助網(wǎng)絡(luò)通信設(shè)備來完成端到端的信息交互,隨著網(wǎng)絡(luò)應(yīng)用的豐富,對網(wǎng)絡(luò)帶寬和傳輸時延提出了更高的要求。為了滿足應(yīng)用對網(wǎng)絡(luò)的高帶寬等需求,二層交換技術(shù)得到了迅速的發(fā)展,其中以太網(wǎng)速率從10/100 Mb/s提高到1 Gb/s等更高速率,極大地提高了局域交換的吞吐量。相比于成本相對低廉的二層交換機,三層路由器的價格更為昂貴,而低端的路由器的轉(zhuǎn)發(fā)性能又不能滿足較高的帶寬需求,因此業(yè)界將三層路由與二層交換機功能進行融合,形成了三層交換機[1],以達到成本相對較低同時又能快速路由和交換的目的。
相較于商業(yè)應(yīng)用,工業(yè)應(yīng)用往往對設(shè)備的結(jié)構(gòu)尺寸、溫度等環(huán)境適應(yīng)性等要求更為苛刻,因此往往在商業(yè)應(yīng)用中成熟的產(chǎn)品滿足不了特定的工業(yè)需求,筆者也因此參與研發(fā)了一款千兆三層交換機。文中描述了該設(shè)備的軟硬件體系架構(gòu),并深入闡述三層交換核心驅(qū)動模塊的開發(fā)方法。
在局域網(wǎng)中往往利用 VLAN[2]技術(shù)來實現(xiàn)網(wǎng)段的劃分,達到隔離廣播域的目的。同一個VLAN內(nèi)的站點之間直接通過二層交換完成通信,而位于不同VLAN之間的站點則借助于三層路由功能進行通信。三層交換機通過在二層交換機上引入路由功能,利用三層協(xié)議中的信息來完成路由和交換,以實現(xiàn)不同VLAN網(wǎng)段之間主機的通信。三層交換的路由通過軟件學(xué)習(xí)獲取,但IP報文轉(zhuǎn)發(fā)通過硬件實現(xiàn),從而達到三層線速轉(zhuǎn)發(fā)。
三層交換機具有多張表,分為二層表和三層表兩大類。其中三層有兩種核心表,分別是三層接口表和三層交換表:三層接口表為VLAN虛擬接口的集合,其條目可抽象為
該三層交換機的硬件平臺如圖1所示,主要包括主控制和以太網(wǎng)交換兩個模塊。
圖1 硬件結(jié)構(gòu)
主控制模塊由MPC8271[3]等芯片構(gòu)成,主要負責(zé)三層交換機的控制和管理,運行生成樹協(xié)議(STP[4])、動態(tài)主機配置協(xié)議(DHCP[5])等協(xié)議,并運行RIP、OSPF等多種路由協(xié)議。通過PCI連接以太網(wǎng)交換模塊,以完成2層和3層表的配置,并利用DMA完成交換芯片與CPU之間的IP報文的收發(fā)。
以太網(wǎng)交換模塊的交換芯片為BCM56224[6],該芯片是Broadcom公司推出的具有多層交換能力的以太網(wǎng)交換芯片,具有28路以太網(wǎng)接口,接口速率自適應(yīng) 10/100/1000 Mb/s,其中有 4路可以配置為2.5 Gb/s以支持級聯(lián)。BCM56224通過 SGMII連接BCM54680E PHY芯片,以提供對外連接的以太網(wǎng)接口。
軟件平臺操作系統(tǒng)采用VxWorks5.5,使用風(fēng)河公司的Tornado 2.2完成軟件開發(fā)與調(diào)試,交換芯片的配置管理則采用Broadcom公司提供的SDK[7]。
軟件系統(tǒng)結(jié)構(gòu)圖如圖2所示,主要包括基礎(chǔ)支撐層、中間層和應(yīng)用層,其中應(yīng)用層分為業(yè)務(wù)協(xié)議處理和管理兩大部分。
圖2 軟件結(jié)構(gòu)
基礎(chǔ)支撐層是軟硬件之間的接口,為 VxWorks運行于特定的硬件平臺提供支撐,實現(xiàn)系統(tǒng)對硬件底層的透明性。
中間層通過調(diào)用底層接口函數(shù),結(jié)合本層的功能給上層應(yīng)用提供各種系統(tǒng)服務(wù),主要包含三層交換芯片支持包(SSP)、三層交換驅(qū)動模塊、二層管理支撐模塊等。其中三層交換芯片支持包為Broadcom公司提供的SDK,是三層交換開發(fā)中的一個核心中間件,用于完成交換芯片的配置管理,三層交換驅(qū)動模塊也基于此模塊進行開發(fā)。
應(yīng)用層:主要包括協(xié)議處理模塊和配置管理模塊。協(xié)議處理模塊包括鏈路層協(xié)議和路由協(xié)議處理;配置管理模塊用于給設(shè)備提供各種外部管理接口,包括命令行接口、WEB管理接口、SNMP網(wǎng)絡(luò)管理接口,便于用戶對設(shè)備的狀態(tài)進行監(jiān)控和維護。
由上述的軟件體系結(jié)構(gòu)可以看出,該軟件體系結(jié)構(gòu)具有良好的可移植性和可擴展性,能充分利用其它產(chǎn)品(路由器、交換機)的開發(fā)成果,便于產(chǎn)品線的平滑升級。
三層交換核心模塊基于Broadcom公司的SDK進行開發(fā),因此重點工作是完成SDK基于VxWorks環(huán)境的編譯與集成,并基于SDK提供的管理接口開發(fā)三層驅(qū)動模塊。
由于BCM56224通過PCI總線連接CPU,因此需要移植PCI驅(qū)動,依據(jù)硬件連接設(shè)PCI的基地址、中斷號和設(shè)備號等。
依據(jù)SDK中提供的Makefile模板,創(chuàng)建自己的Make.local文件,通過該文件來配置支持的芯片和功能模塊,利用編譯開關(guān)可以極大地壓縮可執(zhí)行代碼的尺寸。
完成SDK移植后,首先需要驗證芯片能正確初始化,以確保系統(tǒng)可以正常運行,方法是在VxWorks系統(tǒng)啟動后,調(diào)用SDK的初始化函(diag_shell)完成交換芯片的初始化,并通過SDK提供的CLI對芯片進行配置與測試,如果驗證通過即完成了 SDK的移植。
三層交換機由硬件完成三層數(shù)據(jù)的轉(zhuǎn)發(fā),但需要軟件配置三層交換接口,并依據(jù)路由和主機等信息配置三層交換表,因此三層驅(qū)動的核心設(shè)計是如何融合路由、出接口、網(wǎng)關(guān)MAC地址等信息生成并下發(fā)相關(guān)表項,并當(dāng)網(wǎng)關(guān)等信息發(fā)生變更時快速更新相關(guān)的三層交換表項。本模塊構(gòu)建并維護三層交換表采用的方法如下:
1)利用RouteInfo_st、HostInfo_st、L3Intf-Info_st三種數(shù)據(jù)結(jié)構(gòu)分別表示路由信息、主機信息和三層接口信息。其中RouteInfo_st中包含IP/MaskLen、如果為非直連路由則包括指向其網(wǎng)關(guān)的指針(類型為 HostInfo_st),直連路由則包括指向三層接口的指針;HostInfo_st信息包括主機的IP地址、指向三層接口的指針、MAC地址和出二層端口號,并維護一個以本機為網(wǎng)關(guān)的路由項列表,便于網(wǎng)關(guān)的信息改變時能快速更新所有以該主機作為網(wǎng)關(guān)的路由的三層轉(zhuǎn)發(fā)表項;L3IntfInfo_st表示一個三層接口,包括Intf-id、VLAN-ID、MAC等信息。
2)當(dāng)收到路由管理模塊下發(fā)的新增路由消息,則依據(jù)是否是直連路由進行不同處理:直連路由則完成路由登記并與出接口信息關(guān)聯(lián)起來;非直連路由則完成路由登記并與網(wǎng)關(guān)關(guān)聯(lián)起來。如果網(wǎng)關(guān)信息完整,則依據(jù)這三項信息可以得出完整的
3)當(dāng)收到路由管理模塊下發(fā)的刪除路由消息,且該路由條目對應(yīng)的信息已下發(fā)到交換芯片,則從交換芯片中刪除該路由對應(yīng)的三層轉(zhuǎn)發(fā)表項。
4)監(jiān)聽發(fā)往CPU的IP報文,判斷其源IP地址是否屬于某一個直連網(wǎng)段,是則創(chuàng)建或者修改到該主機的三層轉(zhuǎn)發(fā)信息,如果該主機信息屬于新建或者發(fā)生改變,則更新所有以該主機作為網(wǎng)關(guān)的三層轉(zhuǎn)發(fā)表項。
業(yè)界往往用以下三個指標(biāo)衡量路由交換設(shè)備的性能:①吞吐量:是指在沒有幀丟失的情況下,設(shè)備能接收并轉(zhuǎn)發(fā)的最大數(shù)據(jù)速率;②轉(zhuǎn)發(fā)時延:在最大吞吐量情況下,轉(zhuǎn)發(fā)一個報文的平均時延;③丟包率:是指因系統(tǒng)資源不足等原因而導(dǎo)致的包丟失率。這幾個性能指標(biāo)采用安捷倫公司的N2X測試獲得,端口速率為1 Gb/s,測試結(jié)果見表1。
表1 交換機性能測試結(jié)果
文中介紹了三層交換機的工作原理,并詳細描述了自主研發(fā)的三層交換機的軟件體系架構(gòu)[8-9],深入介紹了三層交換驅(qū)動的實現(xiàn)方法。經(jīng)過功能和性能測試,表明該三層交換機實現(xiàn)了二層、三層線速交換,軟硬件架構(gòu)設(shè)計合理,為后續(xù)的深入開發(fā)提供了可靠的基礎(chǔ)平臺。
[1] METZLE J, DENOIA L. Layer 3 switching: A guide for IT professionals[M].[s.l.]: Prentice Hall, 1999.
[2] IEEE Std 802.1Q-1998.IEEE Standards for Local and Metro-politan Area Networks: Virtual bridged local area networks[S].USA:IEEE,1998.
[3] MPC8272 PowerQUICC IITMFamily Reference Manual[S].[s.l.]:Freescale Semiconductor, Inc , 2005.
[4] IEEE 802.1D-1998. IEEE Standard for Information Technology——Telecommunications and Information Exchange Between Systems——LocalandMetropolitan Area NetworksCommon Specifications Part 3: Media Access Control(MAC) Bridges[S]. iso/iec 15802-3.USA:IEEE, 1998.
[5] DROMS R.Dynamic Host Configuration Protocol[S].[s.l.]:IETF RFC2131,1997.
[6] BCM56220/56020 Programmer’s Reference Guide[S].[s.l.]: Broadcom Corporation ,2002.
[7] Network Switching Software Development Kit Release 6.0.0[S]. [s.l.]:Broadcom Corporation ,2012.
[8] 易克非,胡慶鋒.基于 DSP的實時多任務(wù)調(diào)度內(nèi)核設(shè)計[J].通信技術(shù),2011,44(06):135-137.
[9] 王勝銀,付國晴,陳周國,等.基于linux平臺的雙機雙工的實現(xiàn)[J].通信技術(shù),2009,42(12):232-234,233.