linux ipsec 数据包处理流程

本文详细介绍了IPSec数据流处理的过程,包括数据流输入处理和输出处理两个方面。输入处理涉及IP包接收、协议判断、序列号检查等多个步骤;输出处理则包括策略数据库查询、SA状态判断及AH/ESP模块处理等关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IPSec数据流处理
  数据流输入处理:
  1)模块接收一个IP包;
  2)如果IP包下一下协议proto=UDP&&port=500,绕过不处理,传给上层协议;
  3)判断下一个协议proto是否AH或ESP,如果不是,根据其地址查SPD,如果有对应策略则丢弃该包否则绕过;(IPSec只负责IPSec包的处理)
  4)查三元组,得said指针;
  5)根据said查询SAD
  if SA为空
  〔查询策略;(根据selector,查找相应的SPD,取SPD中的action)
  if统过 不处理;
  if丢弃 丢包;
  if应用 丢包;
  if无策略 不处理〕
  if SA期满 丢包;
  if SA状态异常 丢包;
  6)检查序列号seq,抗重播捡查;
  7)根据下一个协议为AH或ESP,分别送交AH/ESP处理模块进行验证解密,并剥去AH头或ESP头和尾;
  8)从策略(或SA)中获知是采用传输模式,还是隧道模式;
  9)If tunnel mode,移走外部IP头;
  10)对这个处理后的新的IP包进行策略检查(如果没有策略则宣告失效);
  11)检查新的内部IP头的“nextproto”字段,如果不是IPSec头,处理结束、返回。
  12)如果IP头的目的地址不是自己,则转发。
  13)如果仍为IPSec包,转4)。
  数据流输出处理:
  1)模块取出一个IP包;
  2)根据selector查询策略数据库SPD,根据action判断是否应用或丢弃,若没有SPD,则绕过;
  3)查询SPD对应的SA或SA束(真正的目的地址所有的)
  if 没有SA
  手工建立;或IKE动态建立;或绕过;
  if 有SA
  SA生命期、状态的判断;
  4)将策略,SA和原始IP包送给AH/ESP模块处理(负责根据传输模式和通道模式,插入AH头(ESP头和尾)和外部IP头(此时可将外部IP头源、目的地址设为和内部头一样));
  5) if策略中有网关应用且到该网关有策略;
  6)根据策略查找相应的SA
  if 没有SA
  手工建立;或IKE动态建立;或绕过;
  if 有SA
  SA生命期、状态的判断;
  7)将策略,SA(束)和处理后的IPSec包送结AH/ESP模块处理。(此时IP头目的地址为网关);
  8)IPSec处理完毕

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值