馮國仕, 李 璞, 吳 海
(中國電子科技集團公司第三十研究所,四川 成都 610041)
各種網絡應用需要借助網絡通信設備來完成端到端的信息交互,隨著網絡應用的豐富,對網絡帶寬和傳輸時延提出了更高的要求。為了滿足應用對網絡的高帶寬等需求,二層交換技術得到了迅速的發展,其中以太網速率從10/100 Mb/s提高到1 Gb/s等更高速率,極大地提高了局域交換的吞吐量。相比于成本相對低廉的二層交換機,三層路由器的價格更為昂貴,而低端的路由器的轉發性能又不能滿足較高的帶寬需求,因此業界將三層路由與二層交換機功能進行融合,形成了三層交換機[1],以達到成本相對較低同時又能快速路由和交換的目的。
相較于商業應用,工業應用往往對設備的結構尺寸、溫度等環境適應性等要求更為苛刻,因此往往在商業應用中成熟的產品滿足不了特定的工業需求,筆者也因此參與研發了一款千兆三層交換機。文中描述了該設備的軟硬件體系架構,并深入闡述三層交換核心驅動模塊的開發方法。
在局域網中往往利用 VLAN[2]技術來實現網段的劃分,達到隔離廣播域的目的。同一個VLAN內的站點之間直接通過二層交換完成通信,而位于不同VLAN之間的站點則借助于三層路由功能進行通信。三層交換機通過在二層交換機上引入路由功能,利用三層協議中的信息來完成路由和交換,以實現不同VLAN網段之間主機的通信。三層交換的路由通過軟件學習獲取,但IP報文轉發通過硬件實現,從而達到三層線速轉發。
三層交換機具有多張表,分為二層表和三層表兩大類。其中三層有兩種核心表,分別是三層接口表和三層交換表:三層接口表為VLAN虛擬接口的集合,其條目可抽象為
該三層交換機的硬件平臺如圖1所示,主要包括主控制和以太網交換兩個模塊。

圖1 硬件結構
主控制模塊由MPC8271[3]等芯片構成,主要負責三層交換機的控制和管理,運行生成樹協議(STP[4])、動態主機配置協議(DHCP[5])等協議,并運行RIP、OSPF等多種路由協議。通過PCI連接以太網交換模塊,以完成2層和3層表的配置,并利用DMA完成交換芯片與CPU之間的IP報文的收發。
以太網交換模塊的交換芯片為BCM56224[6],該芯片是Broadcom公司推出的具有多層交換能力的以太網交換芯片,具有28路以太網接口,接口速率自適應 10/100/1000 Mb/s,其中有 4路可以配置為2.5 Gb/s以支持級聯。BCM56224通過 SGMII連接BCM54680E PHY芯片,以提供對外連接的以太網接口。
軟件平臺操作系統采用VxWorks5.5,使用風河公司的Tornado 2.2完成軟件開發與調試,交換芯片的配置管理則采用Broadcom公司提供的SDK[7]。
軟件系統結構圖如圖2所示,主要包括基礎支撐層、中間層和應用層,其中應用層分為業務協議處理和管理兩大部分。

圖2 軟件結構
基礎支撐層是軟硬件之間的接口,為 VxWorks運行于特定的硬件平臺提供支撐,實現系統對硬件底層的透明性。
中間層通過調用底層接口函數,結合本層的功能給上層應用提供各種系統服務,主要包含三層交換芯片支持包(SSP)、三層交換驅動模塊、二層管理支撐模塊等。其中三層交換芯片支持包為Broadcom公司提供的SDK,是三層交換開發中的一個核心中間件,用于完成交換芯片的配置管理,三層交換驅動模塊也基于此模塊進行開發。
應用層:主要包括協議處理模塊和配置管理模塊。協議處理模塊包括鏈路層協議和路由協議處理;配置管理模塊用于給設備提供各種外部管理接口,包括命令行接口、WEB管理接口、SNMP網絡管理接口,便于用戶對設備的狀態進行監控和維護。
由上述的軟件體系結構可以看出,該軟件體系結構具有良好的可移植性和可擴展性,能充分利用其它產品(路由器、交換機)的開發成果,便于產品線的平滑升級。
三層交換核心模塊基于Broadcom公司的SDK進行開發,因此重點工作是完成SDK基于VxWorks環境的編譯與集成,并基于SDK提供的管理接口開發三層驅動模塊。
由于BCM56224通過PCI總線連接CPU,因此需要移植PCI驅動,依據硬件連接設PCI的基地址、中斷號和設備號等。
依據SDK中提供的Makefile模板,創建自己的Make.local文件,通過該文件來配置支持的芯片和功能模塊,利用編譯開關可以極大地壓縮可執行代碼的尺寸。
完成SDK移植后,首先需要驗證芯片能正確初始化,以確保系統可以正常運行,方法是在VxWorks系統啟動后,調用SDK的初始化函(diag_shell)完成交換芯片的初始化,并通過SDK提供的CLI對芯片進行配置與測試,如果驗證通過即完成了 SDK的移植。
三層交換機由硬件完成三層數據的轉發,但需要軟件配置三層交換接口,并依據路由和主機等信息配置三層交換表,因此三層驅動的核心設計是如何融合路由、出接口、網關MAC地址等信息生成并下發相關表項,并當網關等信息發生變更時快速更新相關的三層交換表項。本模塊構建并維護三層交換表采用的方法如下:
1)利用RouteInfo_st、HostInfo_st、L3Intf-Info_st三種數據結構分別表示路由信息、主機信息和三層接口信息。其中RouteInfo_st中包含IP/MaskLen、如果為非直連路由則包括指向其網關的指針(類型為 HostInfo_st),直連路由則包括指向三層接口的指針;HostInfo_st信息包括主機的IP地址、指向三層接口的指針、MAC地址和出二層端口號,并維護一個以本機為網關的路由項列表,便于網關的信息改變時能快速更新所有以該主機作為網關的路由的三層轉發表項;L3IntfInfo_st表示一個三層接口,包括Intf-id、VLAN-ID、MAC等信息。
2)當收到路由管理模塊下發的新增路由消息,則依據是否是直連路由進行不同處理:直連路由則完成路由登記并與出接口信息關聯起來;非直連路由則完成路由登記并與網關關聯起來。如果網關信息完整,則依據這三項信息可以得出完整的
3)當收到路由管理模塊下發的刪除路由消息,且該路由條目對應的信息已下發到交換芯片,則從交換芯片中刪除該路由對應的三層轉發表項。
4)監聽發往CPU的IP報文,判斷其源IP地址是否屬于某一個直連網段,是則創建或者修改到該主機的三層轉發信息,如果該主機信息屬于新建或者發生改變,則更新所有以該主機作為網關的三層轉發表項。
業界往往用以下三個指標衡量路由交換設備的性能:①吞吐量:是指在沒有幀丟失的情況下,設備能接收并轉發的最大數據速率;②轉發時延:在最大吞吐量情況下,轉發一個報文的平均時延;③丟包率:是指因系統資源不足等原因而導致的包丟失率。這幾個性能指標采用安捷倫公司的N2X測試獲得,端口速率為1 Gb/s,測試結果見表1。

表1 交換機性能測試結果
文中介紹了三層交換機的工作原理,并詳細描述了自主研發的三層交換機的軟件體系架構[8-9],深入介紹了三層交換驅動的實現方法。經過功能和性能測試,表明該三層交換機實現了二層、三層線速交換,軟硬件架構設計合理,為后續的深入開發提供了可靠的基礎平臺。
[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的實時多任務調度內核設計[J].通信技術,2011,44(06):135-137.
[9] 王勝銀,付國晴,陳周國,等.基于linux平臺的雙機雙工的實現[J].通信技術,2009,42(12):232-234,233.