组播协议学习.docx
- 文档编号:2239426
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:13
- 大小:439.27KB
组播协议学习.docx
《组播协议学习.docx》由会员分享,可在线阅读,更多相关《组播协议学习.docx(13页珍藏版)》请在冰豆网上搜索。
组播协议学习
组播相关:
一、组播协议体系:
1)组成员关系协议包括IGMP(互连网组管理协议);
2)组播路由协议分为域内组播路由协议及域间组播路由协议;
3)域内组播路由协议包括MOSPF,CBT,PIM-SM、PIM-DM、DVMRP等协议;
4)域内的组播协议又分为密集,与稀疏模式的协议。
DVMRP,PIM-DM,MOSPF属于密集模式,CBT,PIM-SM属于稀疏模式。
5)针对域间组播路由有两类解决方案:
短期方案和长期方案。
短期方案包括三个协议MBGP/MSDP/PIM-SM:
MBGP(组播边缘网关协议),用于在自治域间交换组播路由信息;MSDP(组播信源发现协议),用于在ISP之间交换组播信源信息;以及域内组播路由协议PIM-SM
长期方案目前讨论最多的是MASC/MBGP/BGMP,它建立在现有的组播业务模型上,其中MASC实现域间组播地址的分配、MBGP在域间传递组播路由信息、BGMP完成域间路由树的构造。
此外还有一些组播路由策略,如PIM-SSM(特定信源协议无关组播)等,建立在其它的组播业务模型上。
目前仅短期方案MBGP/MSDP/PIM-SM是成熟的,并在许多的运营商中广泛使用。
6)同时为了有效抑制组播数据在链路层的扩散,引入了IGMPSnooping、HGMP,HMVR,RGMP,GMRP等二层组播协议。
名词解释:
组播路由协议有距离矢量组播路由协议(DVMRP)、协议无关组播-密集模式(PIM-DM)、协议无关组播-稀疏模式(PIM-SM)、开放式组播最短路径优先(MOSPF)、有核树组播路由协议(CBT)
IGMP协议简介:
IGMP(InternetGroupManagementProtocol,因特网组管理协议)是TCP/IP协议族中负责IP组播成员管理的协议。
它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
IGMP不包括组播路由器之间的组成员关系信息的传播与维护,这部分工作由各组播路由协议完成。
所有参与组播的主机必须实现IGMP协议。
IGMP有三个版本:
IGMP版本1(由RFC1112定义)、IGMP版本2(由RFC2236定义)和IGMP版本3。
目前应用最多的是版本2。
IGMP版本2对版本1所做的改进主要有:
1.共享网段上组播路由器的选举机制
共享网段即一个网段上有多个组播路由器的情况。
在这种情况下,由于此网段下运行IGMP的路由器都能从主机那里收到成员资格报告消息,因此,只需要一个路由器发送成员资格查询消息,这就需要一个路由器选举机制来确定一个路由器作为查询器。
在IGMP版本1中,查询器的选择由组播路由协议决定;IGMP版本2对此做了改进,规定同一网段上有多个组播路由器时,具有最低IP地址的组播路由器被选举出来充当查询器。
2.IGMP版本2增加了离开组机制
在IGMP版本1中,主机悄然离开组播组,不会给任何组播路由器发出任何通知。
造成组播路由器只能依靠组播组响应超时来确定组播成员的离开。
而在版本2中,当一个主机决定离开一个组播组时,如果它是对最近一条成员资格查询消息作出响应的主机,那么它就会发送一条离开组的消息。
3.IGMP版本2增加了对特定组的查询
在IGMP版本1中,组播路由器的一次查询,是针对该网段下的所有组播组。
这种查询称为普遍组查询。
在IGMP版本2中,在普遍组查询之外增加了特定组的查询,这种查询报文的目的IP地址为该组播组的IP地址,报文中的组地址域部分也为该组播组的IP地址。
这样就避免了属于其它组播组成员的主机发送响应报文。
4.IGMP版本2增加了最大响应时间字段
IGMP版本2增加最大响应时间字段,以动态地调整主机对组查询报文的响应时间。
二、组播原理:
1)组播地址:
IANA预留了两个地址范围:
224.0.0.0~224.0.0.255和239.0.0.0~239.255.255.255。
前一个地址范围的所有地址都有特殊用途,如:
224.0.0.1表示所有组播成员(包括路由器),224.0.0.2表示所有组播路由器。
可以向IANA就某个特殊用途申请专用IP组播地址,如:
224.0.0.13表示所有PIM路由器。
后一个地址范围作为用于私人组播领域的管理权限地址,犹如单播的10.x.x.x/8等私有地址网段。
组播MAC地址:
以0x01005Exx.xxxx的24位前缀开始的MAC层地址都是组播地址。
2)组播地址映射关系:
在以太网中,第3层的IP组播地址信息的全部28位不能映射进入只有23位的第2层MAC地址空间,所以在映射过程中丢失5位地址信息,导致32:
1的地址不明确。
这意味着一个IEEEMAC地址能表示32个IP组播地址。
主机必须考察每一个收到帧的IP部分才能确定是不是需要的组播信息。
3)组播数据转发:
RPF(ReversePathForward检查):
组播数据包中的目的地址是组地址而不是一个明确的主机地址;并且在与路由器相连的每条路径上或者说每个接口都可能有组成员。
因此,组播数据转发将采用逆向数据转发.即:
对到达的组播数据包作逆向检查(ReversePathForward检查),判断数据包是否是从指向源站点的接口(指向源的接口是根据单播路由获得的,亦即单播路由的目的网络)上到达;如果是,逆向检查成功,数据包被转发;否则,数据包就被丢弃。
4)组播2层交换:
网桥或二层交换机(以下统称二层交换机)是工作在二层的网络设备。
当它们收到组播数据包后如何处理?
最简单的处理方式就是当网桥从一个接口收到组播数据报后向所有其它接口都转发出去。
一般的没有组播功能的二层交换机都是这么处理的,所以这样的网桥也最便宜。
但是这样处理就偏离的组播的初衷。
二层交换机将在转发表中添加一项:
MAC地址是组播地址,端口包含与希望接收到组播数据的主机相连所有的端口。
以后当二层交换机接收到组播数据报后,将向除接收端口外的所有转发表项的其它希望接收组播数据的端口转发组播数据。
三、组播路由协议:
1)PIM:
PIM(协议无关组播)表示它不依赖于某种具体的IP路由选择协议。
PIM协议报文基于UDP协议,其端口号是103。
PIM还有专门的组播地址224.0.0.13,表示所有的PIM路由器。
在组播应用环境中大致可分为两类:
一类是密集环境。
即:
在某一个范围内组成员众多。
比如:
股票交易大厅信息的发布,学校的网上教学等。
路由器的几乎每一个接口都有组成员正在接收组播信息。
对于这种环境将采用密集模式协议如:
PIM_DM(协议无关组播_密集模式)来解决。
PIM_DM转发
在运行PIM-DM协议的网络中,路由器默认所有接口上都有接收者。
当组播数据到达路由器后,路由器立即建立起转发项。
转发项的入接口是路由器依据单播到数据源的接口;出接口则包括除入接口外的所有接口。
如果数据RPF检查成功,它将根据转发项向所有接口(除入接口外)溢流。
PIM_DM剪枝
如果路由器所有出接口上都没有接收者,它将清空转发项的出接口列表,并向其RPF上游发送剪枝消息,以使组播数据不再流向本路由器。
上游路由器收到剪枝消息后,从转发项出接口列表中删除接收到剪枝消息的接口。
组播数据就不再从该接口转发出去。
但是这种状况只能维持一段时间。
在经过一段时间后,上游路由器重新将该出口添加到转发项出接口列表中。
组播数据又能流向先前被剪枝的下游路由器。
然后,下游路由器再发起剪枝。
周而复始,这个过程被称之为扩散-剪枝。
PIM_DM嫁接和嫁接应答
当剪枝期间,路由器需要接收组播数据(比如:
收到IGMP加入),怎么办?
这时,路由器并不需要等到下一个扩散-剪枝周期,而是立即向RPF上游路由器发送嫁接消息,要求将自己添加到出接口列表中。
上游路由器收到嫁接消息后,立即回送一个嫁接应答,告知下游路由器已收到嫁接消息;然后,上游路由器将收到嫁接消息的接口添加到出接口列表中。
组播数据就能够到达希望接收数据的路由器和组成员
PIM_DM状态维护
PIM_DM如何维护转发项而不必总是重复创建过程?
PIM_DM是依靠组播数据流来维护的。
只要路由器收到某个组的组播数据包,路由器就刷新该转发项。
路由器如果长时间未收到这个组的组播数据包,将删除该转发项。
断言(assert)机制
在共享网段上,当有多个路由器向网络上发送组播数据包时,共享网段上将收到重复的数据包。
怎么办?
Assert断言机制能够解决这个问题。
当路由器从出接口接收到其它路由器发来的重复组播数据时,路由器将向该出接口发送断言消息。
断言消息中带有本路由器的优先级、到源S的路由开销等信息。
网段上的其它路由器收到断言消息后,将对端路由器的优先级、路由开销以及IP地址与自身相比较(先比较优先级,优先级低者获胜;若二者相同,则比较路由开销,开销小者获胜;若二者还相等,则比较IP地址,大者获胜)。
若自己失败,则剪枝该接口,不再向该共享网段转发组播数据包。
若自己获胜,则发送断言消息,申明组播数据流应该从本出接口转发,其它路由器重复上面的动作。
PIM邻居发现与PIMHELLO消息
路由器周期性的发送Hello消息到所有PIM路由器(224.0.0.13),并借此来发现邻居,建立邻居关系。
PIM路由器可以借邻接关系判断自己是否为叶路由器。
PIMHello消息除了用于建立邻接外,它还被用来为共享网段上选择指定路由器(DR)。
PIM路由器都被配有优先级。
这个优先级被包含在PIMHello消息中。
当路由器收到PIMHello消息时,先比较自己的优先级。
如果自己的优先级高,路由器将默认消息源为DR,自己变成非DR。
当优先级相同时,IP地址最大的获胜,被选举为DR。
DR主要应用在SM中,将在SM中由DR负责向上游发起加入/剪枝过程,或是将直连组播源的数据发向组播分发树。
这在PIM-SM一节会有讲述。
如果路由器是工作在IGMPv1下,DR同时也是IGMP查询器。
2)PIM-SM:
BSR即“BootStrapRouter”,自举路由器,负责在PIM-SM网络启动后,收集网络内的RP信息,为每个组选举出RP,然后将RP集(即组-RP映射数据库)发布到整个PIM-SM网络。
一个网络内部只有一个BSR,可以配置多个候选BSR(C-BSR),一旦某个BSRDown掉,可以切换到另外一个。
候选RP(C-RP)将声明发送到BSR,C-RP通告通过单播发送。
BSR在RP集存储所有的C-RP通告;BSR周期性地向所有路由器发送BSR消息,BSR消息包含整个RP-set和BSR地址,消息一跳一跳地自BSR向整个网络泛滥(flood)。
所有的路由器使用收到的RP集来确定RP,所有路由器都使用相同的RP选择算法,选择的RP也是一致的。
同时实现RP负载分担(不同组映射到不同RP)。
PIM-SM转发、加入
前面讲到,PIM-SM适合于接收成员较少的环境。
那么它与DM有何显著的区别?
先看看PIM-SM转发机制。
转发
当组播数据到达路由器时,路由器也会去创建转发项。
转发项的入接口也依据单播路由指向源(请注意这里的源不再一定是数据源S,它是网络中某一个作为核心的路由器RP。
所有数据源向组发送数据时都由源DR先将数据发向RP。
RP再将数据向网络转发);但出接口列表却为空。
因此,路由器并不向网络转发组播数据。
为什么会这样?
因为,SM默认为其所有接口上并无谁需要组播数据。
加入
但是,当网络中有主机想加入组,接收组数据时怎么办?
这时主机先向DR发送IGMP加入。
DR接收到IGMP加入后,就在该组转发项出接口列表中添加接收到IGMP加入的接口。
如果DR出接口列表从空变成非空,则向其RP发送加入消息。
沿途所有路由器就会将收到加入消息的接口添加到出接口列表中。
如果路由器的转发项出接口也从空变为非空,则路由器向RP转发该加入消息。
如果路由器的转发项不为空,则路由器只
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 协议 学习
![提示](https://static.bdocx.com/images/bang_tan.gif)