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