Linux内核之XFRM框架

XFRM框架是Linux内核实现IPsec安全协议的基础,它支持IPv4和IPv6。框架包含了XFRM策略和状态,分别用于定义处理流量的规则和维护安全关联信息。XFRM通过netlink套接字与用户空间通信,管理策略和状态的创建与删除。XFRM选择器用于匹配流量,而xfrm_state结构则存储加密密钥、统计信息等关键数据。
摘要由CSDN通过智能技术生成

概述:什么是XFRM框架

XFRM的正确读音是transform(转换), 这表示内核协议栈收到的IPsec报文需要经过转换才能还原为原始报文;

同样地,要发送的原始报文也需要转换为IPsec报文才能发送出去。

IPsec(Internet协议安全)应该很多人都听过,IPsec是一组协议,他们通过对通信会话中的每个数据包进行身份验证和加密,以确保IP流量的安全。

XFRM框架是IPsec的“基础设施”,IPsec通过XFRM框架实现的。XFRM源自USAGI项目,该项目旨在提供适用于生产环境的IPv6和IPsec协议栈。自内核2.5之后引入了XFRM框架,这个“基础设施”独立于协议簇,包含可同时应用于IPv4和IPv6的通用部分,位于源代码的net/xfrm/目录下。

XFRM框架支持网络命名空间。这是一种轻型的进程虚拟化,它可以使得一个或者一组进程有属于自己的网络栈。每个网络命名空间都含有一个名为xfrm的成员——一个netns_xfrm结构实例。这个对象包含着许多的数据结构和变量,例如:XFRM策略散列表、XFRM状态散列表、sysctl参数、XFRM状态垃圾收集器、计数器等。

netns_xfrm结构体定义,文件路径include/net/netns/xfrm.h

struct netns_xfrm {
        struct hlist_head       *state_bydst;
        struct hlist_head       *state_bysrc;
        struct hlist_head       *state_byspi;
        . . .
        unsigned int            state_num;
        . . .
 
        struct work_struct      state_gc_work;
 
        . . .
 
        u32                     sysctl_aevent_etime;
        u32                     sysctl_aevent_rseqth;
        int                     sysctl_larval_drop;
        u32                     sysctl_acq_expires;
};

XFRM初始:XFRM Init

在IPv4中,XFRM初始化是通过在ip_rt_init()函数(位于net/ipv4/route.c文件)调用相关函数完成,函数调用结构为:ip_rt_init()->xfrm4_init()->xfrm_init()。

而在IPv6中,在ipv6_route_init()函数中调用xfrm6_init()方法实现了XFRM的初始化。

用户空间和内核之间的通信创建NETLINK_XFRM类型netlink套接字(socket)以及发送和接收netlink消息来完成。内核NE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值