新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 基于IXP2400的安全网关实现研究

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

作者:时间:2011-04-09来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/156463.htm

  其中,接收微功能模块(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芯片执行速度的网络处理器为核心实现高速安全网络设备,是当前网络新技术的应用研究重点。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭