Advertisement

基于Linux的NetLink机制研究

阅读量:

在Linux系统中存在多种机制用于实现用户态与内核态之间的通信,在这一过程中涉及到了诸如系统调用、proc文件系统的等多方面的应用。其中一种重要方式是netlink_socket作为一种标准化的socket接口,在网络层面上能够支持双向通信连接,并且其使用的协议类型包括AF_NETLINK等特定配置选项以实现功能目标。

NETLINK_ROUTE; 包括BGP、OSPF、RIP等协议以及核心数据转发组件和用户态的路由保护程序通过此实现对核心路由表的信息更新。

NETLINK_FIREWALL:接收IPV4防火墙代码发送的数据包

NETLINK_NFLOG: 在用户态下的iptables管理工具与内核中的netfilter模块之间的通信通道。

NETLINK_ARPD:用户空间管理内核中的ARP表

总结一下,Netlink的优点

为此新特性需增添一个新系统调用。然而,在使用ioctl或proc文件时均较为复杂且存在诸多挑战——它们都存在潜在的内核污染风险以及可能导致系统不稳定的风险——而相比而言, NetLink则只需在netlink.h中定义一个标志位即可标识其协议类型即可实现

Netlink实现了异步通信机制,并通过缓冲队列机制实现消息的平滑传输。在用户态发起系统调用将消息推送到内核后会触发接收器的处理函数。当消息从用户态迁移到内核态时若处理时间过长会导致内核调度粒

全部评论 (0)

还没有任何评论哟~