基于openswan klips的IPsec实现分析(二)数据接收

本文详细解析了基于OpenSwanKlips的IPsec数据接收及解密流程,包括ipsec_rcv()、ipsec_rcv_decap()等关键函数的作用及内部处理逻辑,并介绍了如何通过解密后的数据查询SP并传递给上层协议栈。
部署运行你感兴趣的模型镜像

基于openswan klips的IPsec实现分析之数据接收

转载请注明出处:http://blog.youkuaiyun.com/rosetta

  接收数据解密和加密发送数据处理基本相似,无非就是逆过程。

  Klips对接收数据的处理流程如下:

  数据解密过程(以esp为例)

  ipsec_rcv()
         ->ipsec_rcv_decap()
               ->ipsec_rcv_decap_once()//proto_funcs = esp_xform_funcs(当然这里还有ah,ipcomp对应的结构体指针赋值)
                       ->proto_funcs->rcv_checks
                       ->proto_funcs->rcv_setup_auth
                       ->proto_funcs->rcv_decrypt

                  解完密后由  netif_rx(irs->skb);发送给上层协议栈处理。

  下面详细分析数据接收并解密过程。

  Ipsec_rcv()从物理网卡获取到数据包,这个处理函数是在ipsec_klips_init()中的openswan_inet_add_protocol()增加协议支持时注册的,首先判断skb是否有数据并确保skb是一份拷贝数据,然后判断是否是ESP包、AH包或者是COMP包,如果是则再判断物理网卡是否有对应的虚拟网卡绑定,然后走到ipsec_rcv_decap()。

  在ipsec_rcv_decap()里依据ESP、AH或COMP选择对应的xform_functions结构体,此结构包含认证函数指针、解密函数指针。再进入ipsec_rcv_decap_once()    proto_funcs->rcv_checks检查ESP包是否是4字节对齐(rfc24062.4节),接着判断是否存在有效的SA;proto_funcs->rcv_setup_auth设置哈希检验函数相关结构体;

proto_funcs->rcv_decrypt解密,解完密的数据再去查询SP,如果查找匹配的SP(eroute)就调用netif_rx()把数据包扔给上层协议栈处理。

您可能感兴趣的与本文相关的镜像

Wan2.2-T2V-A5B

Wan2.2-T2V-A5B

文生视频
Wan2.2

Wan2.2是由通义万相开源高效文本到视频生成模型,是有​50亿参数的轻量级视频生成模型,专为快速内容创作优化。支持480P视频生成,具备优秀的时序连贯性和运动推理能力

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值