当前位置: 首页> 科技> 名企 > Linux 内核源码分析---组播/策略路由选择

Linux 内核源码分析---组播/策略路由选择

时间:2025/7/14 5:25:42来源:https://blog.csdn.net/FDS99999/article/details/141501165 浏览次数:4次

在 Linux 实现中,组播路由选择不像单播路由选择那样可以由内核单独处理,组播守护程序种类繁多,如 mrouted 和 pimd,它们分别基于距离矢量组播路由选择协议(Distance Vector Multicast Routing Protocol,DVMRP)和协议无关组播选择协议(Protocol-Independent,PIM)。

PIM协议有两个版本:CONFIG_IP_PIMSM_V1和CONFIG_IP_PIMSM_V2,内核对这两
个版本都支持。

IGMP,就是Internet Group Management Protocol的意思。该协议用来在ip主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系,但不包括组播路由器之间的组成员关系信息的传播与维护,这部分工作由各组播路由协议完成。所有参与组播的主机必须实现IGMP。

IGMP 作为 TCP/IP 第三层的协议,被封装在IP数据包中进行传输。IGMP 的报文格式是固定的,共 8 个字节,

一个典型的组播过程是这样的:
(1)IP主机的一个进程可随时加入和离开主机接口的一个组播组,该主机需要维护接口的一张表,该表包含了有那些组以及这些组中的进程数量。此时主机需要发送一个IGMP报告;
(2)路由器会定时发送IGMP查询报文,此时报文中的组地址为0;
(3)IP主机回应路由器的IGMP查询报文,对于一个主机,如果它加入了多个组,则需要为每个组返回一个IGMP报告;
(4)路由器根据这些信息,会对每个接口维护一张表,表中说明了该接口的组。

1.组播路由选择表
组播路由选择表由结构 mr_table 表示,其内核结构源码如下:
在这里插入图片描述

2.组播转发缓存
(Multicast Forwarding Cache,MFC)MFC 是组播路由选择表中最重要的数据结构,它实际上是一个缓存条目(mfc_cache对象)数组。这个数组名为mfc_cache_array,嵌入在组播路由选择表对象(mr_table)中。它包含 64(MFC_LINES)个元素,索引为散列值。

在这里插入图片描述

3.组播路由器
要将机器配置为组播路由器,必须设置内核配置选项CONFIG_IP_MROUTE,还必须运行路由选择守护进程,为与内核通信,这些路由选择守护程序会创建一个套接字。

在这里插入图片描述

4.vif 设备(vif_device 表示网络接口)
组播路由选择支持两模式,即:a.直接组播;b.将组播封装在单播数据包中,并通过隧道传输。
在这两种情况下,都使用相同的对象(结构vif_device的实例)来表示网络接口。

在这里插入图片描述

关键字:Linux 内核源码分析---组播/策略路由选择

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: