基于开源协议的三层以太网交换设备

2020-06-28 05:39吴晓晶周利黔郑江玥
现代信息科技 2020年24期

吴晓晶 周利黔 郑江玥

摘  要:文章提出了一种采用开源路由协议结合传统硬件平台三层以太网交换机的方案。该方案上层路由协议采用开源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—),女,汉族,浙江丽水人,讲师,大学本科,研究方向:信息技术。