浅谈GPON-AES的FPGA优化实现

时间:2011-08-27

  1. 概述

  随着通信技术迅猛发展,电信业务向综合化、数字化、智能化、宽带化和个人化方向发展,人们对电信业务多样化的需求也不断提高,同时由于主干网上SDH、ATM、无源光网络(PON)及DWDM技术的日益成熟和使用,为实现话音、数据、图象“三线合一,一线入户”奠定了基础。如何充分利用现有的网络资源增加业务类型,提高服务质量,已成为电信和运营商日益关注研究的课题,“一公里”解决方案是大家关心的焦点。因此,接入网成为网络应用和建设的热点。

  所谓接入网是指骨干网络到用户终端之间的所有设备。其长度一般为几百米到几公里,因而被形象地称为"一公里"。由于骨干网一般采用光纤结构,传输速度快,因此,接入网便成为了整个网络系统的瓶颈。接入网的接入方式包括铜线(普通电话线)接入、光纤接入、光纤同轴电缆(有线电视电缆)混合接入、无线接入和以太网接入等几种方式。

  2. GPON-AES算法

  中国普天推出的CP EPON01/OLT系列是业界款同时具备L2/L3交换功能的高集成度的GEPON系统设备,利用FTTH/FTTB/FTTC光纤网络为各种用户,如家庭用户、企业用户等,提供带宽达到1Gbps的传输平台。同时,又由于无源光网络系统的天然优势,利用CP EPON01/OLT的新特性,运营商可以经济的造价和极少的光缆线路投资,方便地实现高速上网、实现高带宽IP数据包以及IPTV组播业务的传送。该系统主要由OLT(Optical Line Terminal,光纤线路终端)和ONU(Optical Network Unit,光纤网络单元)以及分离器(Splitter)构成,OLT提供到IP网的上行接口,连接IP城域网、IPTV网络以及NGN网络,同时提供8个PON下行端口,每个端口在单根光纤上支持32个光分路,因此单台OLT设备即可支持256个ONU用户,传输距离可达20km。其高度仅1U,安装方便灵活。

  2.1 AES算法

  AES算法是美国标准技术研究所(NIST)于2001年11月正式发布的,密码学中的加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,加密标准已然成为对称密钥加密中的算法之一。该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael之命名之,投稿加密标准的甄选流程。(Rijdael的发音近于 "Rhinedoll"。)

  AES算法定义了加密过程和解密过程,对应的流程如图1所示。加密过程和解密过程都是一个周期迭代的过程,对于AES-128迭代次数为10。由于采用了迭代过程,而且每次迭代所需要的密钥也不同,AES算法定义了密钥扩展过程。密钥扩展过程也是一个迭代过程,通过10个周期产生10个不同的密钥供加密和解密使用。

  图1 AES的加密框图

  由于介绍AES原理的文章很多,本文就不展开介绍AES的各个部分,并且重点介绍加密过程。

  2.2 GPON中AES加密过程

  GPON采用的是适合高速网络的计数器模式,通过这种方式可以很容易的产生随机密码流,更加难以被破译,本文将主要讨论计数器工作模式下AES-128算法的实现。

  图2是计数器模式下的AES算法的实现步骤。其中 是密钥, 是计数器值; 是加密前的明文; 是加密后的密文,它们都是128bit。值得注意的是,计数器模式下,进行AES加密的并不是明文,而是计数器的值,密文由计数器加密结果与明文相异或产生。

  图2计数器模式下的AES算法计算步骤

  GPON中,加密计数器与整个GTC下行帧有关,而AES密码分组仅与数据的有效载荷有关。这两个序列的关系如图3所示,其中H表示GEM帧头,P表示GEM帧静荷。当一个数据包在OLT段发送或被ONU接受,包头的个字节位置将被记录,该字节位置的加密计数器的值将作为此帧静荷的密码分组计数器的起始值。

  图3加密计数器与加密块的关系图

  3. GPON-AES的具体实现

  由图3可知,由于GEM帧的分组的一块的长度会在1字节-16字节之间。对于大多数情况的16字节分组块,要求AES在16个字节的传输时间内给出加密结果,而严重的情况是分组块只有一个字节加上后面跟着的5字节GEM帧头,要求AES在6个字节的传输时间内给出加密结果。

  3.1. 整体优化思路

  OLT的下行支持2.488G的数据带宽,考虑到FPGA设计的安全性,我们将FPGA系统工作在155. 52MHz的时钟上。这样整个系统的处理数据位宽为16bit,每个时钟发送2个字节的数据,16字节的分组用8个时钟就可以发送完。对于GEM分组16字节长度净荷的情况,其对AES的加密带宽要求是2.488G。严重的情况(一个分组的长度是1个字节,加上后面得5字节GEM帧头),对AES的加密带宽要求约是6.635G。

  我们实际应用中,GPON走的是以太网业务。以65字节的以太网帧帧长(以太网的帧长为64字节)为例进行分析,总共要进行4次16字节的分组和1字节的分组。这样带宽的需求为: 。而硬件设计AES的处理带宽为W,需要满足公式:即 ;因此在不影响电路的性能基础上,考虑资源优先,我们将AES的处理带宽设计为4G左右,通过在AES的前后加上缓存Ram来平滑瞬时带宽的影响。

  图4 GPON-AES的硬件结构框图

  如图4所示,AES的加密带宽为4G,则在155.52MHz的时钟上,每隔5个时钟输入AES加密。在GPON中,短的密码块分组是1个字节,那么加上5字节的GEM帧头,总共6个字节,下行3个时钟就能传送完,因此Cntfifo缓存加密块的密钥和计数器信息。AES会将加密结果128bit花5个时钟写入ShaperFifo中,而Datafifo的数据位宽是16bit,因此Shaperfifo设计为两级fifo,其中前是32位宽,后的写端口是8bit、16bit、32bit的可变位宽,读端口是8bit、16bit可变位宽fifo。而Datafifo只是起到一个延时的作用。而Cntfifo和Shaperfifo互相作用,用来平滑瞬时带宽。

  3.2. AES优化实现

  传统实现方法包括基本迭代方法和流水线方法。基本迭代方法10轮函数共用同一块电路,消耗的资源,但AES加密至少要耗时10个时钟节拍,并且每次加密完成之前,下一组的明文无法进入加密电路。流水线方法又分为轮内流水和轮间流水,而轮内流水的增加虽然可以提高整个电路的工作频率,也导致每轮计算对时钟节拍的需求增加。因此,加密带宽也并没有大幅度提高。轮间流水级别的增加,会提高吞吐率,相应的会直接导致了电路资源的成倍增加。

  根据GPON-AES的电路需求,我们使用了一个轮间、轮内流水复用的方法。这种方法结合了轮间流水和轮内流水两种方法的优点,整个电路控制方便,电路的使用效率接近100%。首先AES加密,要经过10轮,每一轮的处理又包括查表和一大堆的组合逻辑,我们将每一轮进行轮内二级流水设计,并且每一轮都复用这个二级流水电路,这样整个AES加密会消耗20个时钟节拍,电路会安全的工作在155MHz的时钟上。显然这种方法达不到加密带宽支持4G的设计目标。我们将10轮AES进行两级轮间流水设计,前5轮共用一块二级流水电路,后5轮共用另一块二级流水电路。这样AES加密每隔10个时钟节拍,会输出加密结果,可支持2G的处理带宽,还是达不到系统的要求。考虑到每一轮使用两个时钟节拍,一个时钟节拍分配给查找表,一个时钟节拍分配给组合逻辑。查找电路和组合电路的利用率都是50%。因此每隔5个时钟节拍,新的AES加密启动进入电路,它们占用另外的时钟进行查表和组合电路的执行。

  图5两级流水的轮操作电路结构

  图6 AES的五轮操作关键时序图

  图5是一块两级轮内流水的电路结构,对应的时序图为图6。具体实现时,我们使用两块这样的电路,前一块电路的结果直接输出给后一块电路的输入端。这种方法充分利用流水和复用,时序紧凑,控制简单,电路得到百分之百的利用。

  4. 综合结果比较

  我们使用优化方案对AES加密电路进行综合,AES中的S-box查找表使用LUT搭建。使用Xillinx公司的Virtex5的器件,时钟可以跑到为161MHz,综合结果如下:

  表1与参考文献的综合结果进行比较

  如表1,综合结果与参考文献结果进行了比较。由于Xilinx器件的更新,其Slices的单元大小也发生了变化。我们这里统一Slices的大小为包含两个LUT和两个DF。可以看出与传统方法相比,本文使用的轮内流水轮间流水复用的方法具有很高的“加密带宽资源比”。经仿真验证,此种方案完够达到GPON实际系统的要求。


  

参考文献:

[1]. NIST datasheet https://www.dzsc.com/datasheet/NIST_2562226.html.


上一篇:基于软件无线电数字的变频技术研究和FPGA实现
下一篇:一种电子产品仿真设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料