IPsec技术详解:XFRM框架、ESP协议及数据包处理
1. XFRM初始化
在IPsec中,XFRM(IPsec框架)的初始化过程在不同的IP版本中有不同的实现方式。在IPv4中, ip_rt_init() 方法会调用 xfrm_init() 和 xfrm4_init() 来完成XFRM的初始化;而在IPv6中, ip6_route_init() 方法会调用 xfrm6_init() 进行初始化。用户空间和内核之间的通信通过创建 NETLINK_XFRM 类型的netlink套接字并发送和接收netlink消息来实现。以下是创建 NETLINK_XFRM 内核套接字的代码:
static int __net_init xfrm_user_net_init(struct net *net)
{
struct sock *nlsk;
struct netlink_kernel_cfg cfg = {
.groups = XFRMNLGRP_MAX,
.input = xfrm_netlink_rcv,
};
nlsk = netlink_kernel_create(net, NETLINK_XFRM, &cfg);
...
return 0;
}
超级会员免费看
订阅专栏 解锁全文
238

被折叠的 条评论
为什么被折叠?



