基于可靠数据传输协议的高速数据交换节点设计*

2015-09-21 01:30乐,武
网络安全与数据管理 2015年17期
关键词:功耗以太网命令

张 乐,武 杰

(中国科学技术大学 近代物理系 核探测与核电子学国家重点实验室,安徽 合肥 230026)

0 引言

在一些工业应用领域,如大规模数据采集系统,由于数据采集节点分布范围广、数据率高,从而需要在不同数据信道间进行数据交换[1],在数据传输过程中不可避免地需要数据交换节点进行数据的接收、发送和管理。

传统传输协议(如 TCP/IP、TFTP、SCTP等)的实现方法为在底层传输介质基础上依靠复杂的CPU运算来保证数据的可靠性,在不同的CPU主频下TCP性能测试如表1所示。

表1 不同CPU千兆[2-3]及百兆[4]以太网TCP数据率

可见传统的TCP实现方案对CPU主频依赖性强,随之带来的高功耗无法满足系统低功耗的设计要求。本文在可靠数据传输协议基础上,设计了一种高速数据交换节点,在100 Mb/s和1 000 Mb/s信道之间进行数据交换和管理,在更低CPU主频(168 MHz)情况下具有信道利用率高(百兆97%以上,千兆 98%以上)、可靠、可控、低功耗等特点。

1 节点所处网络的拓扑结构

在大规模数据采集系统中数据采集节点数量大、分布范围广,在有线数字传感网络中将采集节点采集到的数据通过百兆以太网链路回传,并通过数据交换节点进行汇总通过千兆以太网链路向更高级进行传输[5],此方向为数据通道(上行通道)。

另一方面需要对各采集节点进行控制和管理,在大规模采集系统中,为减轻中心节点的运算压力,采用分布式管理对采集节点进行控制。接收千兆以太网链路命令利用本地低功耗MCU进行分析处理,通过百兆以太网链路向下级发送,此方向为命令通道(下行通道)。其拓扑结构如图1所示。

图1 节点所处网络拓扑结构

2 可靠数据传输协议

传统的通信协议(TCP/IP)需要复杂的路由协议,高层协议还需要大量的应用服务,对于嵌入式系统来说过于复杂,且对CPU运算能力有较高要求。在相对较低的主频及功耗条件下无法满足高速、可靠数据传输的要求。

可靠数据传输协议在传统通信协议的基础上进行精心裁剪,对于一些工业领域应用系统,如大规模地震数据采集系统,本协议针对性强、结构简单、适应底层硬件。上层软件根据系统需要设计,减少不必要的开销以适合高效率数据封装,满足高速、可控、可靠的数据传输需求[1]。

可靠数据传输协议包括:ACK回应与超时重发机制;转发优先及本地缓存机制;命令、回应、确认机制等。相比传统的通信协议更适应数据采集系统,效率更高。

3 数据交换节点设计与实现

本数据交换节点利用FPGA逻辑实现专用硬件接口,实现硬件ACK响应和判断、硬件重发、硬件转发和硬件发送仲裁等功能,并利用低功耗MCU进行命令响应和数据处理。基于可靠数据传输协议在百兆以太网链路和千兆以太网链路之间进行数据交换和命令响应。

3.1 硬件平台及节点结构

节点结构如图2所示,主要由三部分组成:

图2 数据节点结构图

(1)低功耗MCU,主要用于命令响应和数据处理。硬件接口将数据及命令通过MII高速数据接口及低速命令接口将信息传送至中央处理单元,经过处理的数据、需要向上级返回的命令响应及向下级分发的命令通过对应的接口发送至硬件接口进行数据传输。作为原型机硬件,MCU采用 ST公司 STM32F407,其基于 CortexTMM4架构,主频168 MHz。在原型机平台上实现了命令处理、高数据率(>97 Mb/s)数据传输等功能。

(2)千兆以太网硬件接口部分,主要由 Xilinx Spartan 6 FPGA和Broadcom千兆以太网芯片组成。在FPGA内编写专用通信硬件接口,硬件实现转发、接收、本地数据发送。其内部的可拓展RDT(Reliable Data Transmission)模块根据帧类型及地址进行自动ACK确认、本地发送与转发仲裁、超时等待及重发等,通过拓展RDT模块增加发送缓存区数目可以有效地增加信道的利用率。FPGA使用Xilinx TriMode Ethernet Logic Core[6]通过RGMII接口与以太网芯片进行数据交换,通过以太网物理层与其他数据节点及主机进行数据交换。测试100 m CAT6类网线传输正确。

(3)百兆以太网硬件接口部分主要由Xilinx Spartan 6 FPGA和TI TLK100百兆以太芯片组成。在FPGA内由硬件实现接收、自动ACK生成和发送。其内部可拓展RDT模块自动完成ACK确认、发送仲裁、超时等待及重发。测试200 m CAT6类网线传输正确。

3.2 可靠数据传输及可控数据管理协议的实现

为保证数据在对称的信道之间进行可靠、可控的交换,结合硬件平台和可靠数据传输协议,实现数据交换节点的设计,设计要点如下。

(1)ACK回应及超时重发

发送方发出数据帧后等待ACK回应,收到正确的ACK回应后表明本次发送正确完成,进行下一帧的发送;若超时后未收到ACK回应或回应错误则进行重发并在重发帧内重发次数位段进行加一(区别重发次数不同的帧),进入下一次的等待回应过程。

对于ACK回应在链路发生偶然性误码的情况下,通过重发可以排除可恢复性错误,发生不可恢复故障时向高层应用报告错误,由上层应用判断并进行动态路由,寻找其他可靠的数据链路完成发送或是进入低功耗待机模式以节约能源。ACK机制同时可以实现流量控制,可根据需要停止ACK回应终止本地接收,或有计划地控制ACK帧的回应频度对链路数据率进行调节,以保证数据传输的可控性,借此排除整个数据传输中数据率的随机性,通过ACK回应保证数据均匀。

ACK等待和重发由硬件接口内部的RDT模块实现,在实现协议的同时减轻了CPU的运算压力。如图3所示,本地数据先由RDT模块缓存,多发送缓存可提高信道的利用率,根据帧信息确定是否需要重发,发送完成后等待ACK,若收到回应则进行下一次发送,否则重发 (重发次数+1),若重发次数达到上限 (本文设定为4),则认为本次发送失败,通知上层应用,以硬件实现的方式使得低CPU主频、高数据率的实现成为可能。

图3 RDT模块的设计及可靠数据传输的硬件实现

(2)转发优先及本地缓存

节点间级联的拓扑结构如图4所示,需要将下游节点的数据向主机转发及转发主机向下游发送的命令,同时需要进行本地的接收和发送。转发优先和本地缓存可以保证整个链路的通畅和链路数据可靠不丢。

图4 转发优先与本地缓存机制

①转发优先:在千兆链路通信建立伊始通过上层应用判断链接方向确定上行(靠近主机)与下行(连接其他数据交换节点),在通信过程中当节点收到来自上游的命令时判断是否为本地命令,若为本地命令则通过硬件通道传至本地处理单元进行命令解析和处理,若非本地命令则向下游转发;收到下游发来的数据帧时则向上游主机转发。当节点收到转发数据或命令,即转发缓存非空时,无论本地发送缓存内是否有数据或命令需要发送,优先转发,待链路空闲时进行本地发送。在数据传输过程中千兆链路数据率高,多级节点级联对于实时性要求高,缓存压力大,优先转发可以避免本地转发缓存的压力。

②本地缓存:在千兆链路进行数据传输过程中,数据交换节点必须同时接收下级采集节点接收的数据进行统计、汇总及相应的处理后存入本地缓存,当千兆以太网空闲时将本地数据通过千兆以太网发送到数据中心。本地数据和来自其他节点的数据共享千兆以太网链路,如果整个系统的平均数据率高于千兆链路的最大数据率则数据可靠性一定无法满足,需要对系统数据节点及链路进行重新设计。在系统设计正确恰当的条件下,整体数据率低于(或等于)千兆的最大数据率,通过本地缓存的机制可以保证在转发的同时各节点的本地数据可靠有序地发送。根据数据量及分布可以推算出合理的缓存大小,保证本地接收数据不丢在转发空闲时而发送至主机。

其硬件实现如图3所示,本地发送数据缓存在RDT模块内经过ACK确认及重发处理后与转发数据或ACK一起送至发送仲裁模块,通过硬件接口进行判断并依照转发优先进行数据传输。

(3)命令、回应、确认机制

为保证命令执行的正确性,TCP/IP协议内的三次握手用于建立链接及四次握手关闭连接。对于数据采集系统,命令随机性高、命令短暂(64 B)及间隔不可控,采用类似RUDP协议[7]将判断链路可靠性和命令执行(信息传达)过程合二为一,保证命令执行可靠,同时相比TCP基于链接的机制,效率和功耗方面更适合数据采集系统。具体过程如图5所示。

图5 命令响应机制对比

①命令发起方发送一个含有信息的命令至接收方,等待对方响应,若对方无响应则进行固定次数重发,判断发生故障后通知上层应用进行处理;

②接收方进行响应,通过命令回应帧回传信息,上级无响应则进行固定次数重发,判断发生故障后撤销本次命令,通知上层应用进行处理,并等待下次命令;

③上级收到命令回应表示命令执行过程完成,命令成功;若未收到对应的命令回应表明命令失败,撤销命令。

回应确认机制排除了链路误码的影响,同时排除了命令一方出现错误后命令继续执行,发生不可逆错误的可能。相比软件实现的RUDP机制,在相同功耗及CPU主频下,基于硬件的重发、ACK发送及确认实现,具有更高的命令执行效率。

4 测试结果

4.1 数据率测试

利用多发送缓存的硬件模拟数据源发送数据帧到数据交换节点,由节点进行数据交换后发送至主机,在保证数据正确可靠的前提下得到测试数据(表2)。根据帧协议及以太网帧传输协议,在数据传输过程中存在前导((7+1)B)、CRC(4 B)、帧间隔(12 B)共 24 B 无效数据,即:

可得,在有效长度(Payload Size)为 500 B和 1 000 B时信道的可知理论有效带宽及测试得到实际带宽利用率如表2所示。在帧长度较小情况下,通过168 MHz MCU进行数据交换,由于CPU运算能力造成瓶颈限制,无法达到更高的带宽利用率。

表2 信道最大有效带宽与实际有效带宽对比

4.2 命令响应测试

节点与下级站体以最小帧长度64 B反复进行10 000次命令、回应、确认的命令响应过程,未发生错误。对比数据利用PC基于RUDP进行模拟站体间短暂 (最小帧长)频繁(类似多个下级站分别进行)的命令交换过程,结果见表3。

表3 节点与PC命令响应效率对比

CPS(CMD Per Second)/MHz为单位主频下的每秒执行命令响应数,每条命令响应过程由命令、回应、确认三部分组成。由表3可见,对于下行通道在较低的CPU主频下,本节点依然保持较高的命令执行效率。在实际系统中可以满足对下级站体进行分布式管理的需求。

现有节点在保证千兆链路和百兆链路通信及站体命令响应下正常工作功耗约3.5 W,其中千兆以太网PHY(两个)功耗约 1.6 W,百兆以太网 PHY(两个)功耗300 mW,MCU功耗约 300 mW,FPGA (两个) 功耗约 300 mW,电源效率损失约700 mW,控制层功耗约占总功耗的10%,物理层占85%。

5 结束语

基于可靠数据传输协议实现的可靠数据传输,通过协议的硬件实现在较低的CPU主频及功耗下保证链路的高利用率。通过本地缓存和转发机制保证了不同链路的数据交换。结合MCU实现软件对系统进行控制和管理。在原型机平台上实现两个百兆以太网和两个千兆以太网接口,实现百兆链路96%、千兆链路98%以上的链路利用率,对至少200道(每道数据率400 Kb/s左右)数据采集节点进行管理和采集数据传输。作为普遍的协议及信道交换实现方法,可以做到与底层链路的速度和数目无关,具有普遍的适用性。

[1]王兵,武杰,孔阳,等.数字传感网络的高速数据传输协议设计[J].仪器仪表学报,2010,31(7):1644-1649.

[2]张文沛,彭先蓉,徐勇.基于SOPC的千兆以太网数据传输设计[J].仪器仪表用户,2010,17(3):66-68.

[3]GIBBS D.Measuring treck TCP/IP performance using the XPS locallink TEMAC in an embedded processor system[EB/OL].(2008-10-09)[2014-08-20].http://china.xilinx.com/support/documentation/application_notes/xapp1043.pdf.

[4]陈辉,陈虎,奚建清.嵌入式系统TCP/IP协议性能测试与分析[J].计算机工程,2007,33(21):99-101.

[5]刘列峰.一种可扩展的大规模地球物理勘探数据采集系统研究[D].合肥:中国科学技术大学,2014.

[6]Xilinx.LogiCORE IP Tri-Mode Ethernet MAC v4.5 User Guide[Z].2011.

[7]王继刚,顾国昌,徐立峰,等.可靠 UDP数据传输协议的研究与设计[J].计算机工程与应用,2006,42(15):113-116.

猜你喜欢
功耗以太网命令
基于任务映射的暗硅芯片功耗预算方法
只听主人的命令
基于1500以太网养猪场的智能饲喂控制系统的设计与实现
移防命令下达后
揭开GPU功耗的面纱
谈实时以太网EtherCAT技术在变电站自动化中的应用
数字电路功耗的分析及优化
这是人民的命令
浅谈EPON与工业以太网在贵遵高速公路中的应用
一种面向星载计算机的功能级功耗估计方法