林晓园,严 琼,林灵燕
(福建江夏学院 电子信息科学学院,福建 福州 350108)
当前各大交换机设备厂商自行开发的数据中心接入盒式交换机系统的软件和硬件完全封闭,而随着OCP(Open Compute Project)组织的形成[1],参与交换机软件和硬件开发设计的公司越来越多,使得硬件设计越来越标准化和模块化。但现在各个厂商通过OCP开放出来的数据中心接入盒式交换机的硬件整体(架构)设计方案并没有形成统一的接口定义,各个厂家的设备不能互用,无法满足新功能快速开发部署的需求,且各自研发成本高昂,研发进度受各大设备厂商的研发能力和资源的限制,不能满足数据中心接入盒式交换机技术的快速迭代。为解决以上问题,需要将交换机的架构进行分层开放并推动标准化进程。本设计通过定义一系列硬件标准接口,以便更多的数据中心接入盒式交换机设备供应商采用标准接口设计[2],更快更好地推动不同厂商间设备的兼容互用和交换机的更新换代。
以数据中心接入盒式交换机为例说明现有接入交换机的硬件设计架构,如图1所示。
图1 现有数据中心接入盒式交换机架构
交换机硬件系统一般由以下几大部分构成[3-6]:
(1)CPU部分。
CPU部分进行系统的管理和配置。CPU由各大设备厂商选定,有ARM,PowerPC,MIPS,X86等系统架构的IC,然后各大厂商根据设备运行需求配置不同的片上存储器如SSD,DDR内存条。CPU包含PCIE,I2C,RGMII,URAT,SGMII等接口。CPU的URAT接口用于CPU控制台信息输出和控制信息输入。CPU的RGMII或SGMII接口通过PHY芯片后连接到RJ45网口(101001 000 M),与外部管理网互联,用于信息传输和管理。
(2)Switch IC。
Switch IC负责网络数据交换,Switch IC由各大设备厂商采购Broadcom等公司的IC,Switch IC 包含PCIE、高速serdes等接口。
(3)PHY IC。
PHY IC主要进行接口转换、速率变换、增强信号等应用,根据实际运用需求选配,如果实际应用中不需要PHY IC的功能,可去掉此部分。
以上交换机的设计各个接口由厂家定义,各个厂家之间无法实现互通,必须成套购买整机设备,造成设备成本居高不下,也不便于设备应用商根据业务需求进行灵活配置。
鉴于以上问题,本文提出数据中心接入盒式模块化交换机架构设计方案,如图2所示。
图2 数据中心接入盒式模块化交换机架构
此设计分为交换模块、管理模块、监控模块、电源模块、风扇模块。
交换模块包含Switch IC、PHY IC(根据需求配置)、光模块等主要功能芯片。交换机的光模块接口排布可根据芯片资源和应用场景的需求进行端口的均匀分布。交换模块与其他模块互连的接口定义如下:3个PCIE接口和1个电源口。1个PCIE接口直连到Switch IC。另2个PCIE接口连接到FPGA,2个FPGA的PCIE接口可根据需求选择连接到CPU或BMC。FPGA通过可编程逻辑实现PCIE转I2C的功能,可根据需求编写FPGA驱动,实现交换模块的其他器件的管理,如管理光口的I2C和其他具有I2C接口的器件,也可通过编写FPGA逻辑实现PCIE转其他接口,比如SPI接口等。
管理模块包含CPU系统、串口和网口,其接口定义如下:3个PCIE接口、1个串口、1个网口、1个USB接口、1个电源接口。3个PCIE接口内部模块互连,串口、网口、USB接口与外部互连。
监控模块包含BMC系统、串口和网口,其接口定义如下:3PCIE接口、1个串口、1个网口、1个电源接口。3个PCIE接口内部模块互连,串口、网口与外部互连。监控模块可根据需求选配,此部分功能也可以在管理模块实现。
电源可采用220 V转12 V电源模块,输出可采用统一的接口设计。共有5个相同电源接口,接口定义如下:+12V,GND,PS_ON,Power Good信号。
风扇模块包含可拔插的风扇和风扇控制板部分。风扇控制板提供3个温度传感器接口,3个温度传感器分布在入风口、最热点、出风口位置。整个风扇模块提供PCIE接口,与管理模块或监控模块通信。接口定义如下:1个PCIE接口,3个I2C接口,2个电源接口。
PCIE的管理接口设计:
(1)交换模块的PCIE接口由1个PCIE x4、GEN3,2个PCIE x1、GEN2构成。
(2)管理模块的PCIE接口由2个PCIE x4、GEN3,1个PCIE x1、GEN2构成。
(3)监控模块的PCIE接口由1个PCIE x4、GEN3,2个PCIE x1、GEN2构成。
(4)风扇模块的PCIE接口由1个PCIE x1、GEN2构成。
交换模块的Switch IC的1个PCIE x4、GEN3接口与管理模块CPU的1个PCIE x4、GEN3接口互连,驱动由Switch IC厂家提供的SDK进行配置,CPU通过PCIE接口实现对Switch IC以及Switch IC外围器件的管理。另外一个1个PCIE x1、GEN2接口由交换模块上的FPGA芯片提供(或者其他PCIE转I2C器件),通过FPGA实现PCIE转I2C接口,可以与CPU模块互连。
管理模块的2个PCIE x4、GEN3分别与交换模块Switch IC和监控模块BMC互连,1个PCIE x1、GEN2与交换模块的FPGA互连。
监控模块的3个PCIE接口,1个PCIE x4、GEN3与管理模块CPU互连,另外2个PCIE x1、GEN2分别与交换模块FPGA和风扇模块互连。
风扇模块的PCIE接口与监控模块互连(没有监控模块的情况下直接与管理模块互连)。
CPU或BMC的PCIE通信协议与交换模块FPGA之间的接口为例定义如下:
(1)FPGA主动轮询各个I2C通路(只要模块在位,就主动轮询),FPGA将主动轮询各个器件数据定时收到FPGA内部RAM中,软件根据需要发起读取操作,FPGA将存放在FPGA内部的信息通过DMA的方式送给CPU[7]。如此设计的优势在于:①CPU不用参与读取模块操作,释放CPU资源。②CPU不需要对FPGA内部每个寄存器进行读取操作,增加CPU处理效率。
(2)软硬件交互流程。
①寄存器说明(未使用到的bit保留)。
dma_buf_base(32 bit):CPU内存BUF基地址,用于存放FPGA上传的数据(64 KB)。
dma_ctl(1bit):DMA操作控制寄存器,控制发起DMA读操作,复位值为0。
②读操作流程。
a. CPU检测dma_ctl寄存器值为0后可发起DMA读操作,将准备好的内存空间(连续64 KB)基地址写入dma_buf_base寄存器。
b. CPU完成dma_buf_base寄存器值写入后,CPU将dma_ctl寄存器置1,触发FPGA发起DMA操作。
c. FPGA发现dma_ctl寄存器被置1后,将缓存在内部RAM中的所有信息通过DMA的方式传送到CPU内存空间(空间的基地址为dma_buf_base寄存器中的值),发送的长度固定为64 KB,DMA操作完成后将dma_ctl寄存器清0。
d. CPU轮询到dma_ctl控制寄存器的值被清0后,从dma_buf_base基地址的内存空间中取回读回的值。同时可发起下一次的读操作。
驱动操作流程如图3所示。
图3 驱动操作流程
本文提出数据中心接入盒式交换机模块化和标准接口的硬件架构设计,将交换机划分为管理模块、监控模块、交换模块、风扇模块、电源模块5大模块。各个模块采用统一的接口,其中通信接口采用高速、简洁、常用的PCIE接口,同时对PCIE接口协议进行定义。通过将数据中心接入盒式交换机进行模块化和接口的标准化定义,实现统一数据中心接入盒式交换机的设计标准,解决了当前各个厂家之间的设备不能模块化互用的问题。这样既加速交换机的开发与迭代,还能通过规模生产降低成本,具有很好的行业应用价值。