吳曉晶 周利黔 鄭江玥



摘? 要:文章提出了一種采用開源路由協議結合傳統硬件平臺三層以太網交換機的方案。該方案上層路由協議采用開源Quagga路由協議,系統平臺采用Linux操作系統,底層硬件采用博通交換芯片BCM56150,支持二層生成樹協議、鏈路發現協議等二層協議,RIP、OSPF、BGP等三層路由協議以及PIM-SM組播協議,硬件接口可以支持24路千兆以太網電口以及4個萬兆以太網光口。
關鍵詞:以太網交換;Quagga;BCM56150
中圖分類號:TN915.04 ? ? ? 文獻標識碼:A 文章編號:2096-4706(2020)24-0077-04
Three Layer Ethernet Switching Equipment Based on Open Source Protocol
WU Xiaojing,ZHOU Liqian,ZHENG Jiangyue
(Guiyang Vocational and Technical College,Guiyang? 550081,China)
Abstract:This paper proposes a scheme of using open source routing protocol combined with traditional hardware platform three-layer Ethernet switch. In this scheme,the upper layer routing protocol adopts open source Quagga routing protocol,the system platform adopts Linux operating system,the underlying hardware adopts Broadcom switching chip BCM56150,supports two-layer protocols such as spanning tree protocol and link discovery protocol,three-layer routing protocols such as RIP,OSPF and BGP,and PIM-SM multicast protocol. The hardware interfaces can support 24 channels of Gigabit Ethernet ports and 4 Gigabit Ethernet light ports.
Keywords:Ethernet switch;Quagga;BCM56150
0? 引? 言
近年來,高密度端口的千兆、萬兆交換機逐漸走進人們的視野,具有路由功能的三層交換機的發展尤為引人關注。
目前二層交換機的技術非常成熟,二層交換機已被廣泛應用到通信行業的各個角落。二層交換機工作于OSI參考模型的第二層(數據鏈路層),它依據數據包中封裝的MAC地址進行數據轉發,對數據包的轉發是通過硬件實現的,因此數據傳輸速度非常快,但是二層交換機不能處理不同子網間的數據。隨著局域網以及子網間業務的迅猛發展,二層交換機已不能滿足子網間高速度和大容量通信的需求,三層交換技術在這種情勢下應運而生。
三層交換機集二層交換技術與三層路由技術于一身,工作于OSI參考模型的第三層,通過分析IP包的包頭信息對數據進行轉發。三層交換機不僅可以實現第三層的路由功能,而且具有線速轉發報文的功能,在多數三層交換機中采用“一次路由,多次交換”的原理,減少了路由算法的使用頻率,在一定程度上提高了數據的交換速度,最為關鍵的是三層交換機使用ASIC來處理數據包的轉發,大大提高了轉發速度。
目前世界上生產交換機的廠商不可計數,國外知名的網絡交換機設計廠商有思科、瞻博、惠普等公司,國內知名的交換機設計廠商有華為、中興、H3C等公司,它們都陸續推出了類似的三層以太網交換機產品,而且這些產品的技術都非常成熟,在國內市場上得到了廣泛的使用。
1? 硬件設計方案
三層以太網交換機的整機框圖如圖1所示。三層以太網交換機由AC/DC轉換模塊和路由交換板組成,電源采用功能可滿足需求的通用AC/DC轉換模塊,完成交流220V到直流12V的電壓轉換。路由交換板提供24路以太網電接口、4路以太網光接口、維護串口和維護網口,實現網絡功能及協議、二層功能、QoS特性、安全特性、設備管理和維護等功能,完成數據轉發。
路由交換板主要由交換芯片、PHY芯片、存儲器芯片等部分組成,硬件框圖如圖2所示。
1.1? BCM56150芯片
路由交換板的核心器件是BCM56150交換芯片,該芯片集成了轉發控制器和Cortex-A9處理器。
交換控制器部分支持L2交換、MAC地址管理、VLAN、風暴抑制、生成樹協議、鏈路聚合、ACL、端口安全、QoS等功能。其主要包括Ingress Pipeline、Egress Pipeline、MMU、內置PHY模塊、QSGMII、WC接口模塊等。內置PHY模塊可提供16個符合IEEE802.3協議的1 GbE全雙工以太網接口,減少了外部PHY的數量,節約了單板空間,降低了單板功耗。QSGMII接口通過連接外部PHY,可提供8個1 GbE、全雙工以太網接口。WC0通過連接SFP+光模塊,可提供4個10 GbE以太網光接口,作為上行接口。
內置Cortex-A9處理器的最高頻率為1 GHz,提供了豐富的存儲器接口,如DDR2/3接口、串行/并行NOR Flash接口、NAND Flash接口,并提供了MII、UART接口,用于系統調試和維護。
1.2? BCM54282芯片
BCM54282芯片為以太網PHY芯片,BCM56150芯片通過2個QSGMII接口與BCM54282芯片連接,每個接口工作在5.0 Gbps速率下,相當于4個1.25 Gbps的SGMII接口的總速率。BCM54282芯片對外提供8個符合IEEE802.3協議的1 GbE全雙工以太網接口。BCM56150芯片與BCM 54282芯片的QSGMII接口連接圖如圖3所示。
1.3? BCM5221芯片
BCM5221芯片為以太網PHY芯片,與BCM56150內置處理器的MII接口相連,提供10/100 Mbit/s自適應網口,作為維護網口。
1.4? ADM3202芯片
ADM3202芯片為串口電平轉換芯片,與BCM56150內置處理器的UART接口相連,作為維護串口。
1.5? 光接口模塊
BCM56150包含2個WarpCore(WC)模塊,WC模塊實現物理層功能,通過配置可作為上行接口或級聯接口,并可設置成不同速率。本應用使用WC0接口外接4個SFP+光模塊,并將接口速率設置為10 GbE。SFP+光模塊負責完成光/電信號的轉換。
1.6? 存儲芯片
BCM56150的內置Cortex-A9處理器外接4 Gbit的DDR3
芯片NT5CB256M16BP、256 Mbit的NOR FLASH芯片N25Q 256A13ESF40F、8 Gbit NAND FLASH芯片MT29F8G08AB ACAWP,NOR FLASH用于存放UBOOT,NAND FLASH用于存放內核和文件系統。
1.7? 時鐘模塊
BCM56150芯片有多種時鐘輸入和時鐘輸出,可以根據芯片完成的不同功能減少時鐘輸入和輸出數量。根據路由交換板實現的功能,輸入時鐘包括25 MHz的基本時鐘和PCIe總線上用到的100 MHz時鐘。輸出時鐘為提供給外部PHY芯片的125 MHz時鐘和提供給外部PCIe設備的100 MHz時鐘。
1.8? 復位模塊
為BCM56150芯片、BCM54282芯片以及光收發器單元等提供正確的上電復位。
1.9? 電源模塊
設備識別單元上的電源模塊為單板上各個功能單元提供穩定的電源。電源模塊負責將12 V的直流輸入轉換為1.0 V、
1.5 V、3.3 V等直流輸出,給單板上的Switch、CPU、PHY、FLASH、SDRAM和光收發器等提供電源。
2? 軟件設計方案
三層以太網交換機軟件實現二層功能、QoS特性、安全特性、各種網絡功能和協議、設備操作管理和維護等功能,軟件框圖如圖4所示。
軟件采用模塊化設計,所有功能模塊均以獨立進程形式加入操作系統平臺,每個模塊都有獨立的地址空間和堆棧。這樣,即使某個功能模塊失效也不會影響到其他模塊。
路由交換軟件從上到下分為管理平面、控制平面、數據平面3個層面:
(1)管理平面。管理平面向用戶提供平臺的配置和管理功能,支持CLI、WEB、SNMP三種管理方式,其中CLI、SNMP采用開源軟件Quagga自帶的管理模塊,模塊已實現了各路由協議的配置管理,可在現有模塊的基礎上擴展其他業務模塊的維護管理功能。WEB管理模塊自行開發,Web服務器可采用httpd來解析HTTP協議,通過CGI socket與各功能模塊互動,進行功能配置。
(2)控制平面。控制平面包含多個業務功能模塊,如路由協議(OSPF、RIP、BGP、PIM-SSM)、二層協議(LLDP、MSTP)以及兩個核心模塊BCMUSER、Zebra。
路由協議及Zebra模塊采用開源代碼Quagga實現,在此基礎上進行修改移植。守護進程Zebra作為三層抽象層,為路由協議進程交換路由信息,更新內核路由表并維護三層接口。
博通SDK提供API對交換芯片進行控制,BCMUSER模塊作為基礎功能及二層抽象層,根據配置信息調用SDK API對相關功能進行配置。
(3)數據平面。從端口接收數據,由數據平面決定是否將該報文從另一個端口送出。實際產品的轉發分為軟轉發和硬轉發。軟轉發由Linux內核實現,硬轉發由交換芯片實現。
2.1? 軟件功能模塊
2.1.1? Quagga
Quagga是一款開源路由軟件包,提供的路由服務基于TCP/IP協議,支持RIP、OSPF、BGP、PIM-SSM路由協議。其中PIM-SSM協議Quagga雖已提供代碼,但還未能正常工作,須自行修改。Quagga采用多進程結構,通過一系列相互合作的后臺進程一起構建路由表,包括各路由協議的后臺進程及內核路由管理者進程,如ripd、ospfd、bgpd分別用來處理RIP、OSPF、BGP協議,內核路由管理進程Zebra用于不同路由協議之間的路由重分發及內核路由表的更新。
Quagga提供了支持SMUX和AgentX協議的SNMP后臺程序snmpd,并提供了路由協議的MIBs。三層以太網交換機可在此基礎上拓展管理對象,作為整機的SNMP功能模塊。
Quagga提供了綜合用戶接口——vtysh,除了提供對路由協議的配置支持,還可以配置接口標志、接口地址、靜態路由等,并提供兩種用戶模式,分別是normal模式和enable模式。noraml模式下用戶只能查看系統狀態,enable模式下用戶可以改變系統配置。vtysh作為用戶輸入代理,通過socket連接到每一個后臺進程,三層以太網交換機可在此基礎上拓展其他業務模塊的維護管理命令,作為整機的CLI維護管理功能模塊。
2.1.2? 二層協議
三層以太網交換機支持的二層協議包括多生成樹協議MSTP和鏈路層發現協議LLDP。在所獲取的開源代碼基礎上進行修改移植,與BCMUSER模塊對接,收發協議報文并進行處理。
2.1.3? IP應用
三層以太網交換機支持的IP應用包括DHCP Server/Client、DNS,目前均有開源軟件,可在此基礎上修改配置接口,完成與CLI、SNMP、WEB維護管理模塊的對接。
2.1.4? SDK
博通SDK提供了BCM API、PHY DRIVER、SAL、HAL等功能。BCM API用于對交換設備進行控制,使軟件與硬件寄存器、存儲器布局、DMA操作等細節隔離。PHY DRVIER包含內部PHY和外部PHY驅動,內部PHY通過在配置文件中選擇正確的交換芯片即可,SDK若對外部PHY驅動未提供支持,則需進行移植。SAL提供系統抽象層功能,HAL提供硬件抽象層功能。需根據硬件交換平臺、交叉編譯環境、功能需求對SDK進行移植裁剪。SDK可工作于內核模式和用戶模式,用戶模式下開發和調試相對簡單,本應用采用用戶模式。在用戶模式下,SDK代碼被編譯為用戶應用程序的一部分,所有的驅動代碼運行于用戶空間,由于在用戶空間一般不支持對物理設備的訪問,因此需要為用戶空間的驅動代碼提供一些機制來實現中斷、DMA、寄存器訪問的虛擬處理。可通過編譯SDK后產生的BDE(Broadcom Device Enumerator)內核來加載模塊,提供合適的接口,完成內核和用戶空間的轉換。
2.1.5? BCMUSER
BCMUSER模塊是基于SDK提供的API開發出來的,作為基礎功能層及二層抽象層,該模塊的功能如下:提供適用于CLI、SNMP、WEB配置模塊的接口,根據配置參數調用相關的SDK API完成對物理端口、MAC地址、VLAN、Qos、安全等功能的設置;對MSTP、LLDP協議包進行過濾并將它們發送至相應的協議進程;提供一個能夠與Zebra守護進程通信的接口,將內核路由表里的路由信息寫入芯片的L3層地址表,實現三層硬轉發;建立虛擬網絡接口,設置過濾規則,將路由協議、應用報文過濾并經過虛擬網口送入TCP/IP協議棧。
2.1.6? 操作系統
操作系統采用Linux,內核版本為3.6.5,針對BootLoader、內核及文件系統的制作,博通提供了LDK開發包,其中包含U-BOOT、內核、平臺驅動及Buildroot工具。Buildroot的config文件夾分別針對不同系列的交換芯片,以及基于不同類型FLASH的UBOOT、內核、文件系統的制作提供了defconfig文件,可根據硬件平臺對該文件進行修改。Buildroot工具還提供了第三方軟件的接口,如DHCP、TFTP等,可在配置內核時選擇所需功能,Buildroot可自動從指定的服務器上下載源碼包,自動編譯,搭建需要的根文件系統。
2.2? 報文收發機制
2.2.1? 二層協議報文收發
三層以太網交換機支持的二層協議包括MSTP、LLDP,BCMUSER設置過濾規則,決定哪些協議報文上送。在接收方向,BCMUSER模塊解析SDK轉交的報文,依據報文類型的不同將報文通過socket通道發送給相應的協議模塊進行處理。在發送方向,協議模塊將報文通過socket通道下發給BCMUSER模塊,BCMUSER調用SDK API發送報文。二層協議報文收發如圖5所示。
2.2.2? 三層協議報文收發
與二層協議的收發相比,在BCMUSER模塊與其他模塊之間多了TCP/IP協議棧處理,所有報文收發通過TCP/IP協議棧。BCMUSER通過調用SDK的KNET API創建虛擬網口,設置過濾規則,使協議數據經過TCP/IP協議棧分發至各協議模塊。三層協議報文收發如圖6所示。
2.2.3? 數據報文轉發
數據轉發可分為硬轉發和軟轉發,硬轉發分為二層轉發和三層轉發,由交換芯片根據L2層表和L3層表進行轉發;軟轉發由Linux Kernel實現。
3? 結果與分析
根據上述方案實現的三層以太網交換機,通過與其他品牌的交換機組網互聯,證明該設備既能夠很好地支持二層以太網數據交換(當端口切換到三層模式后,能夠學習到對端路由信息),又能夠實現三層數據包的硬轉發。在協議方面,設備支持二層模式下的VLAN、LLDP、MSTP等協議,支持三層模式下的RIP、OSPF、BGP、PIM-SM等三層路由協議及組播協議。
4? 結? 論
本文根據現實需求,提出了一種基于開源路由協議的三層以太網交換機方案。通過實物測試表明,設備能夠滿足設計要求。開源路由協議的使用,大幅降低了設備的研制成本,使設備更具有經濟性和靈活性。
參考文獻:
[1] 周潔瓊.基于交換式以太網的列車通信網絡實時通信技術研究 [D].北京:北京交通大學,2014.
[2] 王濤,王立德,周潔瓊,等.基于交換式以太網的列車通信網絡實時性研究 [J].鐵道學報,2015,37(4):39-45.
[3] 張俊俊,陳慶華,喬廬峰,等.高性能星載IP交換機路由查找算法的研究與實現 [J].通信技術,2015,48(12):1395-1399.
[4] 梅立春,喬廬峰,陳慶華,等.星載IP交換機中負載平衡CIOQ交換結構的設計 [J].通信技術,2017,50(4):720-728.
[5] 吳振華,胡鵬.VANET中路由協議分析 [J].通信學報,2015,36(S1):75-84.
[6] 李娜,王桐.VANET中基于動態傳輸范圍的可靠性路由協議 [J].哈爾濱商業大學學報(自然科學版),2019,35(6):677-682+688.
[7] 李達,楊禎,劉輝席,等.嵌入式Linux的LoRaWAN集成網關系統設計 [J].單片機與嵌入式系統應用,2019,19(7):10-14.
[8] 鄭紅黨,劉燦斌,孫彥景,等.基于Linux的遠程控制系統綜合實驗設計 [J].實驗技術與管理,2019,36(2):137-140.
作者簡介:吳曉晶(1984—),女,漢族,廣東揭陽人,講師,本科,研究方向:電子與通信;周利黔(1972—),女,漢族,江蘇無錫人,副教授,本科,研究方向:計算機網絡;鄭江玥(1990—),女,漢族,浙江麗水人,講師,大學本科,研究方向:信息技術。