分组交换网络流媒体数据转换方法及实现研究
2016-09-25杨敏华
何 波,杨敏华
(中兴通讯股份有限公司,江苏 南京 210012)
分组交换网络流媒体数据转换方法及实现研究
何波,杨敏华
(中兴通讯股份有限公司,江苏南京210012)
流媒体就是指采用流式传输技术在网络上连续实时播放的媒体格式,如音频、视频或多媒体文件。文章基于FPGA实现线路和系统接口的转换,线路接口由适配以太网ASSP芯片输出,系统接口与业务处理单元相连。FPGA在数据流上完成包缓存、包分类、优先级调度以及总线转换,并根据缓存状态生成相应流控信号进行流量平滑。该实现方法旨在为使用实现流媒体技术的分组交换工程设计提供有益的帮助。
分组交换;现场可编程逻辑器件;数据传输;流控
随着现代技术的发展,网络带给人们形式多样的信息,从第一张图片出现在网络上到如今各种形式的网络视频和三维动画,网络让人们的视觉和听觉得到了很大的满足。流媒体就是指采用流式传输技术在网络上连续实时播放的媒体格式,如音频、视频或多媒体文件。流媒体技术也称流式媒体技术。所谓流媒体技术就是把连续的影像和声音信息经过压缩处理后放上网站服务器,由视频服务器向用户计算机顺序或实时地传送各个压缩包,让用户一边下载一边观看、收听,而不需要等整个压缩文件下载到自己的计算机上才可以观看的网络传输技术。
1 概述
传统下载方式的时延很大,因为音视频文件一般都较大,需要的存储容量也较大,同时受到网络带宽的限制,下载一个文件很耗时。根据文件的大小,可能往往需要几分钟甚至几个小时。因为internet是以包为单位进行异步传输的,因此多媒体数据在传输中要被分解成许多包,由于网络传输的不稳定性,各个包选择的路由不同,所以到达客户端的时间次序可能发生改变,甚至产生丢包的现象。为此,必须采用缓存技术来纠正由于数据到达次序发生改变而产生的混乱状况,利用缓存对到达的数据包进行正确排序,从而使视音频数据能连续正确地播放。缓存中存储的是某一段时间内的数据,数据在缓存中存放的时间是暂时的,缓存中的数据也是动态的,不断更新的。流媒体在播放时不断读取缓存中的数据进行播放,播放完后该数据便被立即清除,新的数据将存入到缓存中。
本文主要介绍流媒体传输过程中的分组交换内容,并通过万兆以太接口卡可编程器件(Field-Programmable Gate Array,FPGA)的设计,说明数据包在物理层和链路层的传输转换方式。
2 设计思路
本设计为分组通信设备的接口卡,在系统中通过系统总线与业务处理单元相连,对外提供万兆以太网光口。接口卡专用标准产品(Application Specifc Standard Parts,ASSP)主要实现以太格式物理层(Physical Layer ,PHY)和媒介访问控制(Media Access Control,MAC)功能,可编程逻辑器件FPGA实现流媒体传输报文的QOS功能,线路和系统接口转换。本设计的主要芯片连接关系如图1所示。
图 1 流媒体接口板框
在系统的上行侧(ASSP业务处理单元),FPGA完成包缓存、包分类、优先级调度,以及line bus到system bus总线的转换;在系统的下行侧(业务处理单元ASSP),FPGA完成包缓存以及system bus总线到line bus的转换。
本设计FPGA的上行要求线路控制模块能以整包的形式接收ASSP发送的数据,存入FPGA内部缓冲区,并能够正确按照缓冲区的存储状态向ASSP反馈流控信息。由于响应流控的问题,要求上行缓冲区在生成流控的门限基础上有足够的容量继续接收一个最大包长的整包。在系统发送侧,要求能够按照网络处理器的要求发送数据Burst并正确响应网络处理器的流控。下行要求系统接收侧能够正确接收网络处理器发送的Burst并存在缓冲区内,而且能够根据缓冲区的状态准确地向网络处理器反馈流控信息。下行线路接口控制模块能够在缓冲区存有整包的情况下向ASSP发送整包数据,并能够正确响应ASSP送来的流控信号。
FPGA在单板上和ASSP连接,并通过接插件和业务处理单元连接。FPGA主要实现线路与系统总线的转换以及状态、统计信息的读取等。功能结构主要包括线路侧接口的控制、系统侧接口的控制、线路和系统的桥接逻辑,流控逻辑等。FPGA还需要提供了FPGA内部寄存器的配置与状态读取、时钟复位管理功能、时钟检测、包统计、包校验等功能。
3 关键模块实现方案
3.1线路接口控制逻辑
此模块提供线路接口的视频逻辑,在万兆以太网接口卡中,FPGA和ASSP的线路接口通常是以太网连接单元接口(Ethernet Attachment Unit Interface,XAUI)接口。FPGA需要实现以太PCS和MAC功能。在接收用户端完成MAC功能,识别二层报文发送给下级模块。在发送用户端连接,按照MAC的要求发出申请并接收应答,向MAC的用户接口发送数据。
3.2报文分类接口控制
此模块按照万兆MAC的用户接口时序正确接收数据,数据的接收以整包模式接收完整的XAUI frame。对于接收的数据,FPGA根据报文的类型进行二层报文的提取,并区分高低两个优先级将数据及一些控制信息写入上行两个FIFO中。
具体的报文提取方法为:提供n个可配置的比较寄存器供驱动配置高优先级报文类型,同时提供一个协议类型偏移配置寄存器。FPGA根据地址偏移从报文某处提取报文类型,然后与驱动配置的类型相匹配。如果匹配,则为高优先级报文,进高优先级队列,否则为低优先级报文,进低优先级队列。
3.3缓存和调度模块
此模块提供数据及控制信息的缓存,根据两侧数据接口的位宽以及所选器件Block Ram的资源情况,设定每套转换的缓存由低优先级数据先进先出队列(First Input First Output,FIFO)和高优先级二层报文FIFO构成。在这个模块中存在一个计数子模块,计算缓存中存储的数据包个数。当缓存中至少存储了一个完整的数据包后再开始缓存侧的读取,将报文发送到接口。
高低优先级buffer调度采用严格优先级调度方式,高优先级队列有完整报文就优先调度出队列,在流媒体中往往语音和视频等实时业务都配置为高优先级队列;低优先级队列在高优先级没有完整报文时才允许调度,低优先级队列在流媒体中往往缓存高带宽的下载业务。高低优先级缓存需要响应发送侧流控模块的流控,流控Xoff时停止对缓存的调度,流控Xon时开始对缓存进行调度。同时根据缓存设置的高低水线,分别作为流控信号的生成和解除条件。
3.4系统用户接口控制模块
此模块的功能是实现和业务处理单元互连的系统接口,上行完成报文到系统接口的报文格式转换,下行根据下行缓存的空满状态,将数据和控制信息写入下行缓存中。除此之外,下行接口模块还提供错误处理及报文统计计数,所有的错误包均由FPGA丢弃。
图2 XAUI Core的仿真波形
4 结语
线路接口与ASSP连接的XAUI接口,接口仿真波形如图2所示。
系统接口与业务处理单元连接的并行总线SPI4.2接口。图3是对该接口的仿真波形示意。
本设计基于FPGA实现了ASSP到业务处理单元接口转换,并完成报文检测和优先级调度的设计,是视频数据包在物理层、链路层传输转换的可行方法,为使用实现流媒体技术的分组交换的工程设计提供了有益的帮助。
图3 系统侧并行总线仿真波形
[1]周梦然. CLPD/FPGA的开发与应用[M].徐州:中国矿业大学出版社,2007.
[2]王金明. Verilog HDL程序设计教程[M].北京:人民邮电出版社,2004.
[3]孙航. Xilinx可编程逻辑器件的高级应用与设计技巧[M].北京:电子工业出版社,2004.
Research on the conversion method and implementation of streaming media data in packet-switched network
He Bo, Yang Minhua
(ZTE Corporation, Nanjing 210012, China)
Streaming media is a format which plays continuously and immediately in the network such as audio, video or multimedia fle. This paper describes the conversion between system interface and line interface based on FPGA. The line interface is output by ASSP chip,and system interface is connected with service processing unit. FPGA completes packet caching, packet classifcation, priority scheduling and bus conversion in the data stream, and generates the corresponding fow control signals according to the buffer state. It provides useful help for the design of the engineering design packet-switched streaming media technology projects.
packet-switched; FPGA; data transmission; fow control
何波(1981— ),男,四川蓬溪,硕士,工程师;研究方向:数据通信。