协议无关组播--稀疏模式 PIM-SM
一、
1)PIM-SM
1.PIM-SM转发、加入

PIM-SM适合于接收成员较少的环境。它与DM有何显著的区别?先看PIM-SM转发机制。
转发:
当组播数据到达路由器时,路由器也会去创建转发项。转发项的入接口也依据单播路由指向源(请注意这里的源不再一定是数据源S,它是网络中某一个作为核心的路由器RP。所有数据源向组发送数据时都由源DR先将数据发向RP。RP再将数据向网络转发);但出接口列表却为空。因此,路由器并不向网络转发组播数据。为什么?因为,SM默认为其所有接口上并无谁需要组播数据。
加入:
但是,当网络中有主机想加入组,接收组数据时怎么办?这时主机先向DR发送IGMP加入。DR接收到IGMP加入后,就在该组转发项出接口列表中添加接收到IGMP加入的接口。
如果DR出接口列表从空变成非空,则向其RP发送加入消息。沿途所有路由器就会将收到加入消息的接口添加到出接口列表中。如果路由器的转发项出接口也从空变为非空,则路由器向RP转发该加入消息。如果路由器的转发项不为空,则路由器只是在出接口列表中添加收到消息的接口。这样路由器就建立起了转发项。组播数据就能够流到加入到组的所有组成员。
由此可以看出,SM转发项的建立是依靠主机和RPF下游显式发送加入消息建立起来的。
2.PIM-SM剪枝

当主机不再希望收到组数据时,主机就向DR发送IGMP离开消息。DR收到IGMP离开后就将接收到该消息的接口从出接口列表中删除;如果出接口列表从非空变为空,DR将向RP发送剪枝消息。
上游路由器收到剪枝消息后,也将收到该消息的接口从出接口列表中删除。当其出接口列表从非空变为空时,上游路由器也向RP发送剪枝消息。这样组播数据就不再流向该分支了。
值得提醒的是:SM转发项是通过加入消息显式建立的。所以,剪枝后的接口不会象DM那样经过一段时间后会恢复。SM要恢复向剪枝接口转发数据必须等待下游或主机发送加入消息。
3.PIM-SM状态维护

PIM-SM如何维护转发项?在PIM-SM是依靠下游路由器周期性的发送加入消息来维护转发项。当路由器收到加入消息,路由器就刷新转发项和出接口。路由器如果长时间未收到加入消息,将删除该出接口;如果出接口列表为空,路由器就删除该转发项。
4.PIM-SM注册

在网络中某个作为核心的路由器RP。所有组播数据都被DR先发向RP。那么,DR是如何将组播数据发向RP的呢?这就依靠注册消息。
当源的DR收到组播数据后,将整个IP包封装注册消息中,并以单播的方式将注册消息发向RP。RP收到注册消息后,取出里面的组播数据包。如果RP有该组的转发项并且其出接口列表不为空,则转发该数据包;如果RP没有该转发项或者出接口列表为空,则向源的DR单播注册停止消息。
DR收到注册停止消息后,停止向RP发送注册消息。但经过一段时间后DR重新发起一次注册过程。
2)最短路径书切换

组播数据流在网络中分发途径可以用“树”模型来描述。组播分发树分为最短路径树(Shortest Path Tree)和汇接点树(RPT:Rezendous Point Tree, 也称共享树)。
最短路径树的树根就在源S。网络中所有组成员都根据到源的单播最短路径获得组播数据。按照这种分发树模型,组成员可以更快的接收到组播数据,同时还能避免在网络中某些点出形成拥塞。PIM_DM分发树就是这种模型。
共享树的树根是网络中某一个作核心的路由器RP。源的DR首先将组播数据发到RP。组成员再根据到RP的单播路径获得组播数据。PIM-SM分发树就是这种模型。
共享树的树根是网络中某一个作核心的路由器RP。源的DR首先将组播数据发到RP。组成员再根据到RP的单播路径获得组播数据。PIM-SM分发树就是这种模型。
为什么PIM-SM要采用这种模型?还得从PIM-SM假设说起:PIM-SM首先假定网络中没有组成员,并不需要组播数据流。因此,主机起初并不知道源是谁(当然知道组,因为这是一个前提,就如知道某个频道是某个电视台电视节目一样)。因此,DR在收到某组的IGMP加入后,只能向RP发起加入消息。通过RP获得组播数据,知道源S后才能直接从源获得组播数据。这个切换过程就是最短路径树切换(SPT Switch)。
PIM-SM中还涉及到其根节点RP的选择机制。PIM-SM域内配置了一个或多个候选自举路由器(Candidate-BSR)。应用一定的规则从中选出自举路由器(BSR)。PIM-SM域中还配置了候选 RP路由器(Candidate-RP),这些候选 RP将包含了它们地址及可以服务的组播组等信息的包单播至自举路由器。BSR 定期生成包括一系列候选 RP以及相应的组地址的“自举”消息。“自举"消息在整个域中逐跳发送。路由器接收并保存这些“自举"消息。若 DR 从直连主机收到了某组的成员关系报告后,如果它没有这个组的路由项,DR 将使用一个hash算法将组地址映射至一个可以为该组服务的候选 RP。然后 DR 将朝RP方向逐跳组播“加入/剪枝”消息。若 DR从直连主机收到组播数据包,如果它没有这个组的路由项,DR 将使用hash算法将组地址映射至一个可以为该组服务的候选 RP。然后 DR将组播数据封装在注册消息中单播到RP。
最短路径书切换

SPT切换由最后一跳路由器DR发起。发生切换的规则很多,最常用的就是流量统计:当流量超过一定阈值时,DR发起从RPT到SPT的切换。
DR首先向其RPT上游发送带有SPT标志的加入消息。上游路由器收到SPT加入后也向源方向发送SPT加入。如果本路由器的到源的出接口与到RP的出接口不是同一接口,则路由器还向RP发送带有RPT标志的剪枝消息。
这样路由器将不再从RP而是直接从源S获取组播数据。当然DR也能发起逆过程,当流量低于该阈值时从SPT切回RPT。
PIM-SM配置
+启动组播进程
multicast routing-enable
+在接口上启动PIM-SM
pim sm
禁用PIM-SM协议
undo pim sm
pim bsr-boundary
undo pim bsr-boundary
pim bsr-boundary 命令用来将以太网交换机的接口配置为PIM域边界,undo pim bsr-boundary命令用来删除配置的PIM域边界。
c-bsr vlan-interface vlan-id hash-mask length [priority]
undo c-bsr
c-bsr命令用来将以太网交换机配置成为C-BSR(Candidate Bootstrap Router),undo c-bsr命令用来删除C-BSR。
pim timer hello seconds
undo pim timer hello
pim timer hello命令用来配置接口发送Hello报文的时间间隔,undo pim timer hello命令用来恢复接口发送Hello报文时间间隔的缺省值。
c-rp vlan-interface vlan-id [accept-group-policy acl-number]
undo c-rp vlan-interface vlan-id
c-rp命令用来将以太网交换机配置成为C-RP(Candidate Rendezvous Point),undo c-rp命令用来取消以太网交换机为C-RP。
spt-switch-threshold {traffic-rate | infinity}[accept-group-policy acl-number]
undo spt-switch-threshold {traffic-rate | infinity}[accept-group-policy acl-number]
spt-switch-threshold命令用来配置从共享树切换到源最短路径树的阈值,undo spt-switch-threshold命令用来恢复配置从共享树切换到源最短路径树阈值的缺省值。
display pim bsr-info
显示当前BSR的信息。
display pim interface [interface-type interface-number]
显示当前运行PIM接口的简要信息
display pim routing0table [{{ *g [group-address [mask { mask-length | mask }]] | **rp [rp-address [maks { mask-length | mask }]]} | { group-address [mask { mask-length | mask }] | source-address [mask { mask-length | mask }]} *} | incoming-interface {interface-type interface-num | interface-name | null} | {dense-mode | sparse-mode}]*
显示dm或sm组播路由表
display pim neighbor [ interface interface-type interface-number ]
显示路由器发现的PIM邻居
display pim rp-info [group-address]
显示制定组的RP。不带参数则显示所有组的RP
例子

PIM-SM一般运行在接收者比较稀少的网络中。在以上网络中,全网都运行PIM-SM组播协议。则在每个三层交换设备上都要配置PIM-SM协议:
首先,配置VLAN虚接口。PIM-SM协议是应用层协议,运行在三层接口上。
其次,启动组播路由协议
multicast routing-enable
接着,在每个VLAN虚接口上配置PIM-SM
pim sm
最后,在整个PIM-SM域中要配置候选BSR和候选RP。RP一般配置在处于网络的中心,性能比较优越的交换机上。BSR一般与RP配置在一个交换机上
c-bsr vlan-interface 10 24 2
c-rp vlan-interface 10
这样,PIM-SM组播网络配置就完成了。注意:组播协议必须依赖单播路由才能工作。单播路由可以是OSPF、RIP或者是静态路由等等都可。
www.huawei.com
协议无关组播--稀疏模式 PIM-SM的更多相关文章
- 协议无关组播-密集模式 PIM-DM
一.组播路由协议 (一) 路由器依靠转发项来转发组播数据包.转发项的生成则是组播路由协议所要完成的任务.组播路由协议有距离矢量组播路由协议(DVMRP).协议无关组播-密集模式(PIM-DM).协议无 ...
- 计算机网络之网络层IP组播(IGMP、组播路由选择协议、组播地址)
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105318560 学习课程:<2019王道考研计算机网络> 学习目的 ...
- Android为TV端助力:UDP协议(接收组播和单播)
private static String MulticastHost="224.9.9.98";private static int POST=19999;private sta ...
- HCNP Routing&Switching之组播技术PIM-SM 稀疏模式
前文我们了解了组播路由协议PIM以及PIM-DM密集模式相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16084310.html:今天我们来聊一聊PI ...
- IP组播
1 IP组播基础 IP组播技术有效地解决了单点发送.多点接收的问题.组播源只发送一份数据,被传递的信息在距组播源尽可能远的网络节点才开始被复制和分发,并且只发送给需要该信息的接收者. 说明: 本章 ...
- HCNP Routing&Switching之组播技术-组播路由协议PIM
前文我们了解了组播技术中组播分发树相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16019334.html:今天我们来聊一聊组播路由协议PIM相关话题 ...
- HCNP Routing&Switching之组播技术-组播协议IGMP
前文我们了解了组播地址相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15616740.html:今天我们来聊一聊组播协议中IGMP协议相关话题: 组播 ...
- IP组播技术介绍及实现例子
引 言 近年来,随着Internet的迅速普及和爆炸性发展,在Internet上产生了许多新的应用,其中不少是高带宽的多媒体应用,譬如网 络视频会议.网络音频/视频广播.AOD/VOD.股市行情发布. ...
- 组播IP地址
组播IP地址组播IP地址用于标识一个IP组播组.IANA(internet assigned number authority)把D类地址空间分配给IP组播,其范围是从224.0.0.0到239.25 ...
随机推荐
- 【BZOJ2300】【SCOI2011】糖果
差点就忘了还有差分约束这个东西……看见了就要学习一个 原题: 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要 ...
- JAVA (1)–第一个GUI程序 添加标题 关闭窗口 屏幕位置 导入图标
import java.awt.*; // 可以改成 import javax.swing.*; public class FirstFrame { public static void main ...
- 程序设计实践 (Brian W. Kernighan Rob Pike 著)
第1章 风格 1.1 名字 1.2 表达式和语句 1.3 一致性和习惯用法 1.4 函数宏 1.5 神秘的数 1.6 注释 1.7 为何如此费心 第2章 算法与数据结构 2.1 检索 2.2 排序 2 ...
- C#窗体模拟键盘按键(组合键)产生事件 ---- 通过keybd_event()函数
如何模拟键盘按键触发产生的事件,比如模拟按下Alt + F4 关闭当前程序,Ctrl+Shift 切换输入法等 可以通过win32api 键盘事件 keybd_event() 来实现 1.定义键盘按键 ...
- Git上传空文件夹的方法
之前发现很多项目文件夹下又.gitkeep文件,不知道它的用处. 直到前段时间遇到一个问题,Git如何上传空文件夹? 默认情况下,Git不会上传本地空文件夹,如果有些特殊场合需要的话,一个简单的方法是 ...
- Revit api 创建楼梯图元
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- pycharm Process finished with exit code (0xC0000005)
pycharm Process finished with exit code (0xC0000005)解决办法 上次报过这个错误,是在安装浏览器时发现的,报过同样的错误.按当时的方法,以为切地解 ...
- 使用Jmeter创建ActiveMQ JMS POINT TO POINT请求,环境搭建、请求创建、插件安装、监听服务器资源等
转自:http://www.cnblogs.com/qianyiliushang/p/4348584.html 准备工作: 安装JDK,推荐使用1.7以上版本,并设置JAVA_HOME 下载Jmete ...
- Spring Schedule实现定时任务
applicationContext.xml 1. 增加配置 <!-- 开启定时任务 --> <task:annotation-driven /> <!-- 开启注解 - ...
- Qt 中的事件处理(二)
1. 回顾事件传递的过程 ①源头:操作系统 操作系统检测到用户的动作时,就会产生一个系统消息,系统消息就会被发送到正在运行的Qt应用程序中, ②应用程序收到系统消息后, 他会将系统消息翻译成对应的 ...