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

2024-08-25 06:52

本文主要是介绍Linux 内核源码分析---组播/策略路由选择,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在 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 内核源码分析---组播/策略路由选择的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104859

相关文章

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

Linux Mint Xia 22.1重磅发布: 重要更新一览

《LinuxMintXia22.1重磅发布:重要更新一览》Beta版LinuxMint“Xia”22.1发布,新版本基于Ubuntu24.04,内核版本为Linux6.8,这... linux Mint 22.1「Xia」正式发布啦!这次更新带来了诸多优化和改进,进一步巩固了 Mint 在 Linux 桌面

LinuxMint怎么安装? Linux Mint22下载安装图文教程

《LinuxMint怎么安装?LinuxMint22下载安装图文教程》LinuxMint22发布以后,有很多新功能,很多朋友想要下载并安装,该怎么操作呢?下面我们就来看看详细安装指南... linux Mint 是一款基于 Ubuntu 的流行发行版,凭借其现代、精致、易于使用的特性,深受小伙伴们所喜爱。对

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

什么是 Linux Mint? 适合初学者体验的桌面操作系统

《什么是LinuxMint?适合初学者体验的桌面操作系统》今天带你全面了解LinuxMint,包括它的历史、功能、版本以及独特亮点,话不多说,马上开始吧... linux Mint 是一款基于 Ubuntu 和 Debian 的知名发行版,它的用户体验非常友好,深受广大 Linux 爱好者和日常用户的青睐,

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略