碧波液压网 欢迎你,游客。 登录 注册

IPSEC模块中输入/输出控制单元FPGA实现

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  

  1 前言

  随着人们对网络依赖性的日益增强, 网络中传递的信息的安全性也显的愈来愈重要, 这也促使人们采用各种措施来保护网络信息的安全, 其中 IPSec 协议便是目前流行的一种网络信息安全协议。目前, IPSec协议大多由软件来实现, 由于各种认证和加密算法占用了CPU 很大一部分计算资源, 故软件实现方法会造成系统性能下降, 网络带宽减小。少数安全产品虽然用硬件实现了IPSec 功能, 但处理速度也就在几百兆,这是因为 IPSec 需实现的功能很复杂, 即时采用硬件的方式来实现, 但如果设计的方案或者策略不够科学合理, 仍然难以获得很高的速度。

  IPSec 数据传输模块中, 关键部分是输出处理控制单元和输入处理控制单元, 这部分的处理速度对整个系统的速度有重要的影响, 为了提高整个系统的处理速度, 本文提出了采用FPGA 设计实现IPSEC 模块中输入输出单元的方案, 该方案将数据包输出处理和输入处理分别放在两片 FPGA 中设计实现, 这样减少了设计实现的复杂度。同时, 在实现中引入了多级缓存机制, 加快了处理的速度。

  2 输入输出控制单元总体设计方案

  输入输出控制单元的总体结构如图1 所示。可以看出, 本单元根据功能, 分为RocketIO 高速通道模块,34 转66 模块, 加密输入模块, 加密输出模块, 66 转34模块。从前端2.5G POS 线卡进来的数据为2.5G 高速串行差分信号, 经过RocketIO 高速通道模块转化为125M 34 位并行信号, 进一步由34 转66 模块变为62.5M 66 位并行信号, 加密输入模块对66 位并行信号进行策略查询, 并将密钥, 加密指令和数据送加密芯片加密。加密后信号由加密输出模块封装为隧道模式 ESP 格式信号, 并和主控送来的协商包合路后经过66转34 模块和RocketIO 高速通道模块转变为2.5G高速串行差分信号送转发处理子系统。

  3 RocketIO 模块实现方案

  RocketIO 模块主要由两个RocketIO 通道组成, 这两个通道均由 Xilinx 公司的开发工具 ISE6.1 自带的Core IP 生成, 其并行的输入输出总线均为16 位宽。此外还包括接收合路和输出分路两个子单元。如图二所示。

  在接收方向, 以通道0 为例, 2.5G 串行差分信号进入通道0 后, 经过8B/10B 编码后, 转化为两位 K 码RK00, RK01 和16 位并行信号RXD0。当RXD0 为“BC95H”时, RK01 和 RK00 为“10”, 表示一包有效数据接收的头标志; 当 RXD0 为有效数据时, RK01 和RK00 为“00”; 当 RXD0 为“95FBH”时, RK01 和 RK00为“01”, 表示一包有效数据接收的尾标志; 当 RXD0为“3CFBH”时 , RK01 和 RK00 为“11”, 表示没有有效数据传输, 数据线处于空闲状态。然后将通道0 和通道1 的接收数据在接收合路子单元进行合路( 也称为绑定), 合路后数据RXD 为 125M 34bit 并行信号。合路时要将头周期, 尾周期和空闲周期数据滤掉, 只留下有效数据, 并将第一周期的有效数据前面加上头标志“10”, 中间数据前面加上标志“11”, 最后一周期数据前面加上尾标志“01”, RXD1 合路后为数据 RXD 的31 到16 位, RXD0 为数据 RXD 的15 到 0 位。在发送方向, 和RXD 格式一样的发送数据TXD在输出分路子单元完成数据格式的转换, 最终由通道0 和通道1 转成两路2.5G 串行差分信号输出。发送数据变换是接收数据变换的逆过程, 具体过程不再赘述。

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论