APP下载

基于FPGA的多应用任务流量管理算法

2022-12-21张锋印冀亚玮

电子科技 2022年12期
关键词:接收端数据包传输

张锋印,高 博,冀亚玮

(战略支援部队信息工程大学 信息系统工程学院,河南 郑州 450000)

随着无线通信技术的高速发展,数据量也呈指数级增长,对信号处理平台计算处理能力以及数据传输能力的要求也越来越高,单一的信号处理平台已无法满足海量数据的处理需求,异构信号处理平台已成为一种趋势[1-3]。FPGA(Field Programmable Gate Array)灵活性强、体积小,能够并发协调多任务处理,进而完成大数据量交互,在异构信号处理平台中占据重要的位置[4-7]。平台中的部分策略处理、数据包的解析封包以及信号的处理分发等过程都逐渐转移至FPGA进行执行[8-10]。在多应用任务场景下,大量数据突发会导致拥塞丢包,该问题的存在也对通信传输质量提出了更高的要求[11-12]。在对几种经典流量管理算法分析的基础上,本文结合FPGA多应用任务场景的工作需求,提出了一种适用于FPGA流量管理的RFCF(Reputation Flow Control based on FPGA)算法。此外,结合FPGA的灵活性、并行性和集成性等[13-14]特点,本文将典型应用任务进行抽象,构建FPGA多应用任务数据传输系统,并在FPGA上对RFCF算法进行硬件化实现。

1 RFCF算法原理

经典的流量管理算法主要有基于以太网暂停帧的流量管理、基于速率的流量管理以及基于滑窗的流量管理等[15-18]。文献[15]采用以太网暂停帧的流量管理,通过发送暂停帧来告知发送端停止发送数据,暂停发送的时长由堵塞状态决定,传输效率较低。文献[16]采用基于速率的流量管理,通过改变发送端的发送速率来提高数据传输效率,当发送端收到包拒绝或者超时信号时降低发送速率;收到包接收确认信号时提高发送速率。该方法中,接收端只向发送端反馈确认或拒绝字符来响应发送端的数据传输,没有向发送端提供有关缓冲区数量的信息,因此尽管此算法易于实现,但传输速率波动较大。文献[17]采用自适应流量管理算法,采用变常数加减改变发送速率,缓解接收端数据处理的压力。但当面对突发数据流时,该方法会降低整个系统的传输效率。文献[18]采用基于滑窗的流量管理,通过窗口的大小来决定发送数据的数据量,即在大窗口下可以连续发送接收多个数据包,在小窗口下只能发送接收少量数据包。此算法实现简单,但其没有考虑各个数据包的优先级属性。

针对FPGA多应用任务需求,本文提出RFCF算法对经典的速率流量管理算法进行优化:将接收端反馈的确认或拒绝信号进行具体化,然后将接收端的剩余缓冲空间值反馈至发送端,实时调整发送端发送数据。针对多应用场景,RFCF算法可将不同的应用任务划分为不同的优先级来进行仲裁传输。

RFCF流量管理算法的核心思想是将接收端的剩余缓冲空间值反馈到发送端,而发送端利用反馈信息来调整数据的发送策略。当剩余缓冲空间值较大时,接收端接收所有的数据。随着数据量的增大,当剩余缓冲空间值低于不同阈值时,将选择不同的发送策略,例如随着剩余缓冲空间值不断变化,数据包被分为若干优先级区间,处于最高优先级区间内的所有数据包都可以发送接收,而低优先级区间内的数据会被拒绝发送接收,从而避免中断高优先级应用。

2 RFCF算法设计

2.1 数据传输系统总体结构

在异构信号处理平台中,FPGA通常会部署多个应用任务。本文将典型应用任务进行抽象,构建了FPGA多应用任务数据传输系统,其总体框架如图1所示。该结构主要包括:(1)高速串行收发器。其接收端与发送端均由高速以太网PCS(Physical Coding Sublayer)、PMA(Physical Media Additional)组成。PCS提供丰富的物理编码层特性,PMA部分为模拟电路,提供高性能的串行接口特性,例如预加载与均衡;(2)ARP(Address Resolution Protocol)模块即地址解析协议,其通过目标设备的IP地址查询目标设备的MAC地址以保证通信顺利进行;(3)IP(Internet Protocol)模块。IP模块是TCP/IP协议簇中最为核心的协议,所有的TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)、ICMP(Internet Control Message Protocol)等协议都是以IP数据报格式传输。文献[9]是TCP/IP协议卸载引擎的硬件设计与实现。相比于TCP协议,UDP协议复杂度较低,传输延迟小,传输效率高。本文采用UDP协议进行数据传输。RFCF算法模块对接收到的数据先进行组包,然后根据应用任务的不同分配不同的优先级,并结合接收端反馈的有效信息对数据发送进行仲裁。

图1 数据传输系统总体框架

RFCF算法将接收端的剩余缓冲空间值反馈至发送端,通过反馈的有效信息来实时调整发送端发送数据。该算法设定了基于缓存空间大小的多级阈值,根据剩余缓冲空间值选择不同的优先级发送策略。根据算法基本原理,对RFCF算法模块进行设计实现。算法模块主要包括组包、输出仲裁、发送管理和接收管理,其基本结构如图2所示。

图2 RFCF算法模块结构示意图

2.2 组包

组包模块接收到数据时会先进行字段添加。RFCF算法模块包结构字段如图3所示,其中可选添加项(op)为44 bit,字段信息的优先级(prio)为4 bit,playload长度为16 bit。可选添加项是为协议拓展预留的字段空间。字段信息的优先级根据接收端反馈的剩余缓冲空间值(free_buf_cnt)区间范围实时变化。playload为数据部分,最小为64 Byte,最大为1 500 Byte,组成一个新的包fifo_0_rx_tdata_in,发送给下一模块管理。组包逻辑实现如下:

图3 RFCF算法模块包结构字段

(1)复位信号到来时,当前状态(state_c)为STATE_IDLE,等待包首部有效信号(header_vaild)到来,否则一直处于等待状态;

(2)当header_vaild信号到来,state_c状态跳转至STATE_STORE_HEADER,添加包首部指示信号(store_header)拉高,state_c状态跳转至STATE_STORE_PAYLOAD;

(3)当store_header为高时,开始添加包首部信息,包括优先级和数据长度;

(4)在首部添加完成后,等待添加数据指示信号(store_payload),随即进行数据填充;

(5)等待数据最后一个字节的指示信号(axis_tlast)为高电平时,数据填充完成,组包部分完成,state_c状态跳转至STATE_STORE_FINISH。

2.3 发送管理

当发送管理接收到新的数据包fifo_0_rx_tdata_in后,读取包首部信息,并根据包首部信息进行判断。本文设置了4个参数来定义传输的优先级区间,即P0、P1、P2、P3,且P0>P1>P2>P3>0。当信号fifo_tready的位宽为4 bit时,每个bit代表一个任务数据请求使能,当为高电平时代表允许此任务优先级数据输出的请求;为低电平时表示禁止请求输出。图4为流控状态转移流程,其中free_buf_cnt是实时变化的,会根据所在区间转移到相应的状态,其状态转移步骤如下:

图4 流控状态转移图

步骤1当复位信号到来,当前状态(state_c)为P0,此时对剩余缓冲空间值进行判断,若free_buf_cnt≥P0,则可以传输所有的优先级事务流包fifo_tready≤4′b1111;

步骤2state_c状态为P1,判断剩余缓冲空间值,若P0>free_buf_cnt≥P1,state_c状态转移为P1,则可以传输优先级为1、2、3的事务流包fifo_tready≤4′b0111;

步骤3state_c状态为P2,判断剩余缓冲空间值,若P1>free_buf_cnt≥P2,state_c状态转移为P2,则可以传输优先级为2、3的事务流包fifo_tready≤ 4′b0011;

步骤4state_c状态为P3,判断剩余缓冲空间值,若P2>free_buf_cnt≥P3,state_c状态转移为P3,则只可以传输优先级为3的事务流包fifo_tready≤4′b0001;

步骤5state_c状态为P3,判断剩余缓冲空间值,若P3>free_buf_cnt>0,则只可以传输最高优先级数据fifo_tready ≤ 4′d0。

2.4 输出仲裁

将发送管理模块中的fifo_tready信号送入输出仲裁模块,包括信号线request(判决单元模块内的请求信号)、acknowledge(确认指示信号)、grant(输出信号,为高电平时即可以输出数据)、grant_vaild(grant输出的有效指示信号)。通过对数据输出请求信号fifo_tready进行仲裁判断,实时调整发送数据。通过输出grant和acknowledge信号进行回复确认。逻辑实现顺序如下:

(1)复位信号到来,当前状态(state_c)为IDLE,当请求信号(request)为高时,state_c状态跳转至REQUEST,将fifo_tready信号分别压缩为单个有效位和编码位输出mask_next= {PORTS{1′b1}}<< (fifo_tready_index + 1);

(2)当收到仲裁响应1信号(acknowledge_1)时,表示当前任务已经输出完成,此时state_c状态跳转至ACKNOWLEDGE_1,进行下一任务输出请求;

(3)当收到仲裁响应2信号(acknowledge_2)时,表示当前任务已经输出完成,则state_c状态跳转至ACKNOWLEDGE_2,进行下一任务输出请求;

(4)当收到仲裁响应3信号(acknowledge_3)时,表示当前任务已经输出完成,则state_c状态跳转至ACKNOWLEDGE_3,进行下一任务输出请求;

(5)当收到确认指示信号(acknowledge),state_c状态跳转至FINISH。

2.5 接收管理

在接收管理模块中,当发送端发出数据后,接收端会反馈给发送端一个有关缓冲区现状的信息,通过free_buf_cnt进行传递,代表当前可用于接收的事务流包的最大长度。如果一个端口的可用缓冲区的大小超过了free_buf_cnt的最大值,则重置free_buf_cnt值。缓冲区大小不能大于实际可利用的区域大小,以避免数据溢出或数据接收错误。

在接收管理模块中,以控制字符的方式将剩余缓冲空间值反馈给发送端,然后发送端根据剩余缓冲空间值调整,选择不同的发送策略。发送端将剩余缓冲空间值作为参数之一,对发送数据进行调整,优先发送高优先级的事务。如果发送数据是响应信号,则优先级在原有的基础上加1,以保证发送端发出的数据不会因为接收端缓冲区不足等因素导致传输失败,并且保证了高优先级数据能够得到实时处理,避免了丢包重传,提高了传输效率。

3 实验结果分析

本文的结果对比分析主要分为两部分:(1)丢包率检测。将RFCF算法和基于速率的流量管理算法在FPGA上进行实现,通过在相同时间内不间断发送相同数量的数据包进行丢包率测试;(2)RFCF算法和同类型算法在FPGA上进行实现的资源占用对比。

3.1 丢包率对比

RFCF算法模块测试环境为一台PC机、VIVADO 2017.4开发环境。系统的工作频率为156.25 MHz,数据位宽64 bit。通过在一定时间内不间断的发送4类数据包(100 μs内突发数据包1 331个,其中b包333个,c包333个,d包333个,e包332个)来仿真测试多应用任务的发送情况。包首部为十六进制0x10028,其中0x0001代表优先级,0x0028代表数据长度。当信号线s_axis_tvaild和s_axis_tready均为高电平时,传输数据有效;当信号线s_axis_tlast为高电平时,代表传输最后一个字节的数据。

基于速率的流量管理算法仿真时序如图5所示,当传输完d数据包后,e数据包丢失,在实际传输过程中不仅会丢失e包,其他包也有丢失的可能。

图5 基于速率的流量管理算法仿真时序图

RFCF算法仿真时序如图6所示,随着free_buf_cnt不断变化,prio分为4个区间,当prio=4时,m_tready_1、m_tready_2、m_tready_3和m_tready_4都为高电平,即允许所有的优先级数据发送;当prio=3时,m_tready_1、m_tready_2和m_tready_3都为高电平,m_tready_4为低电平,即允许1、2、3优先级数据发送;当prio=2时,m_tready_1和m_tready_2都为高电平,m_tready_3和m_tready_4为低电平,即允许1、2优先级数据发送;当prio=1时,m_tready_1都为高电平,m_tready_2、m_tready_3和m_tready_4为低电平,即允许1优先级数据发送。

图6 RFCF算法仿真时序图

本文在100 μs内不间断发送1 331个数据包,b、c、d、e数据包优先级递减。基于速率的流量管理算法和基于本文的RFCF算法的每种数据包的丢包率如图7所示。由图7可知,在相同的测试条件下,同基于速率的流量管理算法相比,采用RFCF算法后,b丢包减少4个,c丢包减少6个,d丢包减少1个,而e丢包增加4个。该结果表明本文算法通过牺牲低优先级数据的发送,来保证对高优先级数据的及时处理,避免高优先级应用被中断。测试结果中,采用本文算法后,总的丢包数减少7个,即RFCF算法丢包率比基于速率的流量管理算法丢包率降低了14.9%。

图7 两种算法各应用丢包比例

3.2 FPGA资源占用对比

本文将提出的算法在Xilinx的UltraScale+系列板卡上进行硬件实现,芯片型号为XCZU9EG- 2FFVB1156E,整块板卡有查找表599 550个,可编程逻辑触发器548 160个,DSP Slices为2 520个。表1给出了在相同的板卡资源下,基于速率的流量管理算法、文献[9]算法以及RFCF算法在FPGA上实现时的资源占用对比情况。如表1所示,相比于文献[9]算法,RFCF算法占用了更少的逻辑单元,优化了14%的面积;相比于基于速率的流量管理算法,RFCF算法的资源占用虽然有所增加,但在面积和时序满足工程需求的基础上,丢包率降低了14%。通过综合、布局布线等,本文所构建整个系统的最差负时序裕量WNS为1.919 ns,最差保持时序裕量WHS为0.015 ns,没有出现时序违例现象,触发器保持时间以及建立时间的最差值也在可容纳的范围之内,从整体性能来考虑,改进后系统的整体性能得到了进一步提高。

表1 FPGA资源占用分布情况对比

4 结束语

针对FPGA多应用任务数据突发传输的丢包问题,本文设计并实现了基于FPGA的多应用任务流量管理RFCF算法。实现过程包含处理多应用任务的逻辑仲裁、解包封包、解帧封帧等功能。通过功能仿真、综合、布局布线以及生成比特流下载至FPGA进行实际运行等测试,验证了本文所构建系统的可行性。未来的改进目标是在数据传输系统的高吞吐量和低丢包率的基础上,降低系统对硬件资源的占用情况,并优化资源面积。

猜你喜欢

接收端数据包传输
二维隐蔽时间信道构建的研究*
基于扰动观察法的光通信接收端优化策略
基于多接收线圈的无线电能传输系统优化研究
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
牵引8K超高清传输时代 FIBBR Pure38K
手机无线充电收发设计
基于同轴传输的网络传输设备及应用
C#串口高效可靠的接收方案设计
关于无线电力传输的探究
支持长距离4K HDR传输 AudioQuest Pearl、 Forest、 Cinnamon HDMI线