- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于IXP2400的安全网关实现研究
通常,将快速通道处理任务按逻辑划分为若干功能块,在可编程的微引擎中,每一块实现称为一个微功能块(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)
下一篇:视频同步分离电路大全