• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 基于IXP2400的安全网关实现研究

基于IXP2400的安全网关实现研究

录入:edatop.com     点击:

通常,将快速通道处理任务按逻辑划分为若干功能块,在可编程的微引擎中,每一块实现称为一个微功能块(microblock)。而将运行在XScale中的微功能块对应的慢速通道处理部分称为核心组件(Core Component),完成相应微功能块的配置、初试化及维护共享数据结构,并处理微功能块发送的异常包或信息。此外,各种路由协议也运行在XScale中,处理各种协议信息。这样实现了数据层面和控制层面的分离,两层面间可用标准API通信。

将所有任务放在一个IXP2400中实现,可能满足不了线速要求,因而通常将任务分配到2个IXP2400来实现。这样对于需要较多指令的微功能块,可指定多个微引擎并行运行,适当增加每个微引擎的执行时间。

3.2 系统功能

综上述分析,实现方案的系统框图如图2所示。

其中,接收微功能模块(Receive Microblock)和发送微功能模块(Transmit Microblock)用于数据包的接收和发送,发送队列(Transmit Queues )用于数据包的队列管理、调度,IP转发微功能模块(Forwarding Microblock)用于一般IP包的简单转发(包括路由通告等),核心组件是相关微功能块的慢速通道处理部分,如异常处理等;XScale中还运行嵌入式OS、各种协议及高层处理程序等。

IPSec处理微功能模块(Processing Microblock)是系统的主要部分,包括以下主要功能:协议核心、AH/ESP处理模块、SPD、SAD。其中,AH/ESP处理程序负责根据SA中定义的安全服务按照AH/ESP协议对数据包进行处理;SPD和SAD以适当的查找表结构存放在片外的SRAM中,但该微功能块中有各自的快速访问接口,供其查询数据使用(在XScale中也有访问这2个数据库的接口,以便维护其中的数据);协议核心主要是协调以上各部分的工作,解释获取的IP包等。

3.3 数据处理过程

IPSec模块是整个IPSec系统的核心,处理包的过程如下:

(1)线程摘取1个IP包,判断是否是经分段的,若是,该线程进入等待状态,下一线程开始运行。在所有分段到达并重组后,进入下一步处理。

(2)使用选择符检索SPD,若查找失败,抛弃包;若返回的动作是"抛弃",抛弃该包。对于不包含IPSec头的包,若返回的是"绕过",将包交给IP转发模块处理(若目的IP是本机,将其交到XScale中,由相应程序处理,否则转发到下一节点);若返回的是"应用",进入(4)处理。对于包含IPSec头的包,若返回的是"应用",且包的目的地是本机,则进入(3)处理;若目的地不是本机,则进入(4)处理。

(3)用检索SPD返回的三元组搜索SAD,若没有匹配的SA,则丢弃该包;否则,按SA中的定义进行处理,主要包括:

①重发检查:用序列号及溢出标志、重发窗口大小检查包是否有效。

②数据包验证:用指定的认证算法及密钥,验证数据包。若ESP没选择认证,则不做。

③解密:若是ESP协议包,则用指定的加密算法及密钥,解密数据包。

以上处理失败,则丢弃该数据包;若包中还有IPSec头,需选择新的选择符,重复(2)、(3)。

④重构IP包交给IP转发模块处理。

(4)用检索SPD返回的三元组搜索SAD,若没有匹配的SA,线程向XScale发出IKE的服务请求,由IKE服务程序与通信对等体协商建立相应的SA,并记入SAD。具备SA后,有序进行如下处理:

①根据SA中指定的安全协议及操作模式,调用对应的处理模块,为数据包生成协议头。

②若采用传输模式,只需将原IP头中的协议类型改为上一步中所用协议;若是隧道模式,则需要以隧道两端的IP作源、目的IP和上一步中所用协议,生成新的IP头,封装原IP包.

③对ESP协议,按SA中指定的加密算法和密钥,对包的相应部分加密。

④按SA中指定的认证算法,对包的相应部分进行认证。

⑤修改有关数据,重新计算校验和;若需要分段处理,将包交给XScale中处理。

(5)经以上处理后,将包安排到对应端口的队列中,经调度后由传送模块经重新添加MAC帧头后发送。

值得一提的是,在以上过程中,由于是多线程处理,因而在1个微引擎中,一个线程进入等待状态,另一个线程立刻运行,这一过程由编程者控制完成的。下面的程序段是数据处理过程的主要控制部分:

while(1){
  dl_source();                    //从接收线程取下包描述符
  if(dlBufHandle= =0){ continue; }
  Ethernet_validate();            // 验证这个包是一个有效的以太网头
  Ethernet_strip_header();                   //去掉以太网头
  IPSec_process();                          //IPSec处理
  IPv4_five_tuple_class();           //进行IPv4 classifier的转发
  If(dlNextBlock= =IX_DROP){                 //clNextBlock全局变量,
                                   //表示下一个
  Goto drop;                     //跳转到丢弃包的处理模块
  }
  Ethernet_add_header();                    //添加新的以太网头
  D1_sink();                   //将处理后的包描述符放入发送缓冲区中
  Drop:
  Dl_BufDrop(dlBufHandle);                    //丢弃包的处理
  }

IPSec被认为是目前实现VPN的技术标准,在Internet的安全通信中发挥着重要作用。当前对网络通信不断提出了速度和安全的更高要求,以兼备通用CPU的灵活性和ASIC芯片执行速度的网络处理器为核心实现高速安全网络设备,是当前网络新技术的应用研究重点。

来源:电子技术应用

上一篇:以太网的ATA传输协议(AoE)
下一篇:视频同步分离电路大全

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图