12.5.3 RPF

RPF(Reverse Path Forwarding, 反向路径转发)为组播路由协议的一个防环机制,防环原理是保证组播报文从正确的接口到达。运作过程:当RPF接口收到组播报文时,会利用单播路由对组播报文的源IP地址进行检查,查询本地到达此IP地址的单播路由,如果单播路由的出接口和组播报文到达的接口不一致,那就意味着RPF检查不通过,组播报文会被丢弃。

在SPT中,路由器在进行SPT检查时,使用的是组播报文的源IP地址,也就是组播源的IP地址;在RPT中,使用的是RP的地址,因为在RPT中RP是RPT的树根。

12.5.4 PIM概述

PiM(Protocol Independent Multicast, 协议无关组播)是目前使用最广泛的域内组播路由协议。目前PIM有两个版本,PIMv1几乎已经不用了,主要使用的是PIMv2版本,以下介绍的也都是PIMv2。

PIMv2依赖设备的单播路由表,之所以叫“协议无关”,是因为PIMv2并不关注设备运行的是哪些单播路由协议,OSPF、ISIS、RIP、BGP甚至静态路由都能为PIM提供服务。

PIM主要存在两种工作模式:密集模式(Dense Mode)以及稀疏模式(Sparse Mode)。

12.6 PIM-DM

密集模式适用于组播接受者比较密集的紧凑型网络,PIM-DM开始用作后,初始情况下会将形成的组播分发树覆盖全网(PIM-DM使用的是SPT),这样会造成并没有组播接收者的分支也收到了组播流量,此时不需要这些组播流量的网络设备采用一种剪枝(Prune)的方式将自己从组播分发树上剪除。如果后来

上图中,全网的路由器都激活了PIM-DM,当组播源开始向239.1.1.56发送组播流量时,R1收到组播流量后,在完成RPF检查后,会将组播流量从除过上游的接口之外的所有存在PIM邻居的接口发出,R2、R3、R4的行为也和R1的 行为一致。但R3并不需要这些组播流量,所以会发起一个剪枝过程,将自己从SPT上剪除。但如果R3下联的网络中出现了239.1.1.56的组播接受者,R3会立即发起嫁接(Graft)动作,将自己所在的分支嫁接到SPT上,从而获取对应的组播流量。

由此可以看出,PIM-DM更适用于网络规模小、组播接收者分布比较密集的网络。

12.6.1 协议报文

12.6.2 邻居关系

激活PIM后,接口会周期性的发送PIM Hello报文,Hello报文的的源IP地址为本接口的IP地址,目的IP地址为PIMv2路由器的组播IP地址(224.0.0.13)。缺省间隔为30s,可以通过pim timer hello命令修改。PIM Hello报文的作用包括邻居关系建立和维护、DR的选举。

路由器发现PIM邻居后,会启动一个计时器,计时器的值为对方PIM Hello报文中携带的Holdtime,缺省为105s,计时器会在收到该邻居发送的PIM Hello报文时刷新,计时器超时后,该邻居会被立即删除。Holdtime可通过pim hello-option holdtime命令修改。

12.6.3 扩散过程

在上图中,网络中所有的路由器运行着OSPF,R2和R4在其连接PC 的接口上激活了IGMPv2,最后在路由器的相关接口上激活了PIM-DM。

这时组播源10.1.1.1以239.1.1.15发送组播报文,R1收到后,首先会进行RPF检查,检查通过后会在PIM表项中创建一个(10.1.1.1,239.1.1.15)表项,并将GE2/0/0设指定为上游接口,将除过GE2/0/0以外的连接PIM邻居的接口指定为下游接口。随后对组播报文进行拷贝,发往所有的下游接口。需要注意的是,R1并不会在每次组播报文到达时都进行RPF检查,而是在创建(10.1.1.1,239.1.1.15)表项后,在该表项中标记上游接口GE2/0/0,后续(10.1.1.1,239.1.1.15)的组播报文到达后,R1会先查询组播转发表,如果查到的对应接口和实际到达接口一致,组播报文就会被继续向下游转发出去。

R2收到组播报文后,也会和R1一样首先会进行RPF检查,然后为其创建(10.1.1.1,239.1.1.15)表项,在表项中标记GE0/0/0接口,指定上游接口和下游接口。在指定下游接口过程中,除了R1以外R2并没有发现其他的PIM邻居,但在本地的IGMP路由表中存在一条(*, 239.1.1.15)的表项,并且该表项的对应接口是GE0/0/1。于是R2将GE0/0/1接口添加到组播路由(10.1.1.1,239.1.1.15)的下游接口列表中,至此PC1就可以接收到239.1.1.15的组播流量了。

R4在接收到组播报文后,与R2的行为类似。

R3在接收到组播报文后,与R1的行为类似,在进行RPF检查,路由表项创建,指定上游接口和下游接口后,会将组播报文继续向下游接口转发。

12.6.4 剪枝过程

在上图中,R5的(10.1.1.1,239.1.1.15)的路由表项中并没有下游接口,所以它会向上游PIM邻居发送PIM剪枝报文,将自己从SPT上剪除。

上图是R5发送的剪枝报文,报文的源IP为连接上游PIM邻居接口的IP地址10.1.35.5,目的IP地址为224.0.0.13(PIM协议侦听地址)。R3收到剪枝报文后,会立即将这个下游接口从(10.1.1.1,239.1.1.15)表项中移除,并启动一个计时器,然后会继续向这个下游接口发送(10.1.1.1,239.1.1.15)组播流量。如果在计时器超时之前,R3再次收到了剪枝报文,那么计时器会被重置,此接口会保持移除状态。如果计时器在任何时候超时,剪枝状态会被取消,这个下游接口会被重新添加到(10.1.1.1,239.1.1.15)路由表项中。

对于R3而言,连接R5的接口被剪枝后,本地的(10.1.1.1,239.1.1.15)路由表项也没有下游接口,于是R3也会向上游PIM邻居R1发起剪枝动作,最终R1只会将(10.1.1.1,239.1.1.15)的组播流量发给R2和R4。

12.6.5 嫁接过程

由剪枝过程可以得知,当剪枝动作完成后,如果组播路由器又需要这个组播流量,会停止发送剪枝报文,计时器超时后剪枝状态会被取消,但时依靠这个机制是不现实的。在组播路由器在剪枝动作后,又需要这个组播流量,它将会主动发起嫁接动作。

嫁接过程:组播路由器会向上游PIM邻居发送PIM嫁接报文,目的IP地址为邻居的接口IP,报文中填充着组播路由表项(10.1.1.1,239.1.1.15),同时在本地接口启动一个嫁接计时器,缺省3s,在超时后如果没有收到PIM嫁接确认报文,会继续发送嫁接报文。

对于上游PIM路由器而言,在收到PIM嫁接报文后,根据报文中的路由表项,将这个下游接口添加到对应的组播路由表项中。

12.6.6 断言机制

上图中,路由器都运行PIM-DM,R2、R3、R4接入同一个二层交换机,PC为239.1.1.37的组播接收者。

在这个组播网络中,R4会收到分别来自R2和R3的两份相同的组播流量,断言机制可以避免这种问题的出现,断言机制被使用在PIM-DM和PIM-SM中,当路由器(S,G)的下游接口收到了(S,G)的组播流量时,断言机制会被触发,此时重复发送组播流量路由器之间会进行选举,胜出者继续发送对应的组播报文,选举失败的会停止转发对应组播的报文。

断言机制运行过程:R2在接口GE0/0/1收到了(10.1.1.1,239.1.1.37)报文,对其进行SPF检查,未通过,同时触发断言机制,R3同理。R2和R3都在本地的GE0/0/1发送断言报文进行比较,目的IP地址为224.1.1.13,报文中的PIM载荷有四部分:组播组地址、组播源地址、优先级、度量值。(优先级为到达组播源的单播路由优先级、度量值为2)。

比较依据:

优先级小优 —> 度量值小优 —> 接口IP地址小优

第十二章:组播 — RPF和PIM-DM相关推荐

  1. matlab矩阵最大无关组,MATLAB 第十二章 矩阵的秩与向量组的最大无关组.ppt

    MATLAB 第十二章 矩阵的秩与向量组的最大无关组 MATLAB 高等数学实验 实验十二矩阵的秩与向量组的最大无关组 实验目的 学习利用MATLAB命令求矩阵的秩, 对矩阵进行初等行变换, 求向量组 ...

  2. Linux云计算【第一阶段】第十二章:网络管理、进制及SSH管理与攻防

    第十二章:网络管理及SSH管理与攻防 [重难点] 一.网络发展概述 局域网 城域网 广域网 基本网络协议 客户端与服务器的概念 从客户端到服务器的经过 No.1 客户端与服务器的概念 客户端: 即表示 ...

  3. 「第十二章」Web框架安全

    「第三篇」服务器端应用安全批注[--] 表示他人.自己.网络批注参考资料来源于* 书中批注* CSDN* GitHub* Google* 维基百科* YouTube* MDN Web Docs由于编写 ...

  4. 鸟哥的Linux私房菜(服务器)- 第十二章、网络参数控管者: DHCP 服务器

    第十二章.网络参数控管者: DHCP 服务器 最近更新日期:2011/07/27 想象两种情况:(1)如果你在工作单位使用的是笔记本电脑,而且常常要带着你的笔记本电脑到处跑, 那么由第四章.连上 In ...

  5. CoreJava 笔记总结-第十二章 并发-1

    第十二章 并发 线程 package chapter12_concurrent.threads;public class ThreadsTest {public static final int DE ...

  6. linux i2c adapter 增加设备_「正点原子Linux连载」第六十二章Linux SPI驱动实验(一)...

    1)实验平台:正点原子Linux开发板 2)摘自<正点原子I.MX6U嵌入式Linux驱动开发指南>关注官方微信号公众号,获取更多资料:正点原子 第六十二章Linux SPI驱动实验 上一 ...

  7. 第十二章_网络搭建及训练

    文章目录 第十二章 网络搭建及训练 CNN训练注意事项 第十二章 TensorFlow.pytorch和caffe介绍 12.1 TensorFlow 12.1.1 TensorFlow是什么? 12 ...

  8. 20190825 On Java8 第十二章 集合

    第十二章 集合 java.util 库提供了一套相当完整的集合类(collection classes)来解决这个问题,其中基本的类型有 List . Set . Queue 和 Map. 不要在新代 ...

  9. 《Kotlin 程序设计》第十二章 Kotlin的多线程:协程(Coroutines)

    第十二章 Kotlin的多线程:协程(Coroutines) Kotlin 1.1 introduced coroutines, a new way of writing asynchronous, ...

  10. MLAPP————第十二章 隐线性模型

    第十二章 隐线性模型 12.1 要素分析(factor analysis) 在我们之前提到的混合模型中,数据的生成都是由某个隐状态控制的,然后是那个隐状态控制的分布生成的,但是这样的模型在表示上还是具 ...

最新文章

  1. 利用OpenCV实现旋转文本图像矫正的原理及OpenCV代码
  2. Linux和Windows路由配置
  3. 学习Python必须具备的五大技能!
  4. django新建utils文件夹与导入方法
  5. SpringMVC_day1_常用注解
  6. freemarker和thymeleaf的使用样例
  7. HBase安装phoenix实战shell操作
  8. opencv +opencv_contrib+CMake+VS2015
  9. Python处理僵尸进程
  10. 【深度学习】NLP|用GRU模型给周董写首歌
  11. 网络创业理论与实践(网络通识)
  12. 如何向投资人委婉的表达:我们什么都不缺,只缺钱?
  13. 图片轮换-jQuery
  14. 网页游戏是如何快速推广,寻找真实玩家。提高充值消费的。这里都有教程
  15. c语言.jpg图片转成数组_jpg图片不仅能转成PDF文档格式,还可以一键合并!
  16. miui11升级鸿蒙,这就是MIUI 11的升级机型名单?还挺给力!
  17. (超详细、适合新手)QQ三国实现24小时挂机摆摊卡键喊话
  18. 折纸 瓦力机器人_一张纸成千种形态机器人:折纸机器人,神奇的创造
  19. 新学:DES加密 小知识点(S盒,初始置换)
  20. x²-dy²=-1有多少整数解?近30年无人解开的数学难题有答案了

热门文章

  1. Centos中mysql修改密码策略并修改密码
  2. js二十五道面试题(含答案)
  3. 2023火锅食材展/江西火锅展/火锅底料蘸料展/酒水饮料展
  4. 【DeepSketch2Face论文阅读】A Deep Learning Based Sketching System for 3D Face and Caricature Modeling
  5. U盘装机大师实现gpt转mbr分区表格式图文教程
  6. 实例-拟合正弦函数、预测房价、乳腺癌检测
  7. pyinstaller打包exe文件太大解决方法
  8. 一周爆肝上线百万高并发系统!你给我解释解释什么叫牛逼?
  9. 8年美团经验之谈 —— 自动化测试成长之路
  10. OpenCV-基于自定义色条实现灰度图上色