当前位置:文档之家› 组播基础

组播基础

一、什么是组播1.什么是组播?组播是一种数据包传输方式,当有多台主机同时成为一个数据包的接受者时,出于对带宽和CPU负担的考虑,组播成为了一种最佳选择。

2.组播如何进行工作?组播通过把224.0.0.0-239.255.255.255的D类地址作为目的地址,有一台源主机发出目的地址是以上范围组播地址的报文,在网络中,如果有其他主机对于这个组的报文有兴趣的,可以申请加入这个组,并可以接受这个组,而其他不是这个组的成员是无法接受到这个组的报文的。

3.组播和单播的区别?为了让网络中的多个主机可以同时接受到相同的报文,如果采用单播的方式,那么源主机必须不停的产生多个相同的报文来进行发送,对于一些对时延很敏感的数据,在源主机要产生多个相同的数据报文后,在产生第二个数据报文,这通常是无法容忍的。

而且对于一台主机来说,同时不停的产生一个报文来说也是一个很大的负担。

如果采用组播的方式,源主机可以只需要发送一个报文就可以到达每个需要接受的主机上,这中间还要取决于路由器对组员和组关系的维护和选择。

4.组播和广播的区别?如同上个例子,当有多台主机想要接收相同的报文,广播采用的方式是把报文传送到局域网内每个主机上,不管这个主机是否对报文感兴趣。

这样做就会造成了带宽的浪费和主机的资源浪费。

而组播有一套对组员和组之间关系维护的机制,可以明确的知道在某个子网中,是否有主机对这类组播报文感兴趣,如果没有就不会把报文进行转发,并会通知上游路由器不要再转发这类报文到下游路由器上。

众所周知的D类IP地址D类地址用途224.0.0.1 在一个子网上的所有主机224.0.0.2 在一个子网上的所有路由器224.0.0.4 所有DVMRP协议的路由器224.0.0.5 所有开放最短路径优先(OSPF)路由器224.0.0.6 所有OSPF指定路由器224.0.0.9 所有RIPv2路由器224.0.0.13 所有PIM协议路由器224.0.0.0-224.0.0.255 保留作本地使用,做管理和维护任务239.0.0.0-239.255.255.255 留用做管理使用二、组播协议的要素通过和广播,单播的数据传输方式的比较,我们可以发现组播中最关键的两个部分:1.组的管理和维护在组播这套协议中,在网络设备和所连接的子网需要有一套协议或机制来保证网络设备知道所连接的子网中,有多少台主机属于一个特定的组。

组播地址的分配组播地址的动态分配:SDR (Session Directory Tool)技术允许应用程序在建立新的会话时随意选用组播地址,通过冲突检测技术避免地址的重复使用,这种方法适用于初期应用较少的MBONEMASC(Multicast Address Set-Claim)是 IETF 设计的新的组播分配方案,首先将组播地址段静态分配到不同的地区,在每个地区内仍然采用动态租用的方案使用组播地址,想法是好的,实现起来的难度较大,周期较长。

MADCAP(Multicast Address Dyna)与DHCP相似组播地址的静态分配目前的解决方案多采用静态组地址分配技术SGAA(Static Group Address Assignment)是在 MASC 方案得以实现之前的应急之道。

采用 233/8 地址段用于静态地址分配,中间两节包含网络自治系统号,最后一节用于组分配。

2.组播报文的路由*指定源组播地址可以用于跨域组播应用,简化源组播地址维护,接收者需要指明要接收的源(S,G)加入*不指定源组播地址支持(*,G)加入方式主播分发树:最短路径树(基于源的分发树):是发现上游接口,离源最近的接口。

因为组播路由协议只关心到源的最短路径。

通过(S,G)对来决定真正的下游接口,当所有的路由器都知道了他们的上下游接口,那么一颗多播树就已经建立完成。

根是源主机直连的路由器,而树枝是通过IGMP发现有组员的子网直连的路由器(3)管理多播树单播路由只需要知道下一跳的地址,就可以进行报文得转发。

而组播,是把从一个由源产生得报文发送给一组目的。

在一个特定的路由器上,一个包要多个备份可能从多个接口上发出。

如果有环路得存在,那么一个或多个包会返回到其输入的接口,而且这个包也会经复制发到其他的端口上。

这一结果可能导致多播风暴,这个包不断在路由器与交换机间复制,直到TTL减为0。

由于这是个复制过程,它的危害会比单播环路严重的多,所以所有的多播路由器必须知道多播包的源,并且需要保证多播包不能从源接口发出。

所以他必须知道哪些是上游接口和下游接口,可以分辨出数据包的流向。

如果在不是在源的上游接口收到数据包,就会把它丢弃掉。

而多播路由协议必须关心到源的最短路径,或者说它关心到源的上游接口。

同时,除了关心上游接口,但是在转发的时候,不能把数据包从除了上游接口的其他接口发送出去。

所以,另外,他还要关心(S,G)下游接口。

当关于一个(S,G)的上下游接口都被判断出来了,那么一颗多播树就形成了。

共享分发树(*,G):组员可以在多播会话存活的时候,加入或退出一个组,而其相连的路由器必须动态的根据直连子网内组员的存在或退出来决定要加入或剪除多播树的树枝。

这就是通过显式或隐式加入两种方式来完成。

隐式加入试用于密集模式,它是采用广播/剪除模式来去除多播树上的没有组播成员的树枝,也就是说,它是通过先把网际网络上的所有路由器都加入到多播树上,然后由每个路由器通过IGMP来查询是否有组员在直连的子网上,如果没有,就发出一条剪除消息,来剪除多余的树枝而显示加入适用于稀疏模式,它是由每个路由器先查询子网内有无组员,然后才看是否要发加入信息给上游路由器。

基于源的树和共享树的比较?基于源的树是针对一个源就会有一颗多播树构成,也就说,如果网络中有多个可以产生组播报文的源主机,那么就会有多少颗组播树组成,在组播表里,会有组数×每组的成员数的项目条数。

这种拓扑主要适用于密集模式。

共享树是在整个网络中选一个RP,或叫集中点,所有的组播报文都需要从这个点来进行传送,所以它没有(S,G)项,只有(*,G)项,表明所有有多个源。

RP是预先设定的一个路由器,承担转发所有的多播报文的责任。

所有要发送组播报文的源主机在发送组播报文前,都需要到RP上进行注册,然后通过直连的路由器来确定到RP的最短路径,通过RP 路由器来确定到目的地的最短路径。

RP成为了多播树的根结点。

相对于基于源的树,共享树的多播表项更为精简,适合在稀疏模式下使用。

但是也有一些缺点。

共享树在RP上的选择,会导致从源主机到各个组地址的路由并非最优路径。

如果在整个局域网里同时有多条耗带宽的组播链路,会导致RP成为整个网络的瓶颈。

并且在共享树中,采用选取RP来转发组播报文,会增加产生单点故障的可能。

三、如何来维护组成员现在有IGMP和CGMP(Cisco专有的)两种协议,可以进行主机和网络设备之间的组员关系的维护。

IGMP是路由器和内部子网之间通信的方式,用于局域网中路由器或三层设备查询组播成员,也就是说它是三层设备对直连子网的组关系的维护机制。

它可以分成两个部分,主机部分和路由器部分,每个部分可以完成不同的工作。

但是它有一个限制,就是IGMP报文只能在本地子网内传送,使三层设备不能前转到其他的设备上,它的TTL总是1。

IGMP(Internet Group Management Protocol)有三个版本:v1 RFC 1112 支持Windows95v2 RFC 2236 支持Windows98后的各版本及大多数Linux系统,兼容IGMP v1((RFC 1112) v3 RFC 3376 支持Windows XP,2003即少数Linux系统-对于IGMP v1,主机离开组播组不需要发送任何报告-对于IGMP v2,主机离开组播组需要发送…leave‟的报告-对于IGMP v3,在原有的组地址上增加了Include/exxclude源地址列表IGMPv2主机部分的功能:运行IGMPv2的主机会产生以下3种信息:* Member Report消息用来指示一台主机想要加入一个组播组,这个消息在一个主机第一次加入组的时候会发出,也可以用来响应三层设备发出Membership Query消息。

由于Membership Query消息的目的地址是组地址,除了路由器,网内其他的组员主机都会收到这个报文,一旦其他主机收到报文,他们将会抑制自己的Membership Query报文,避免了内部局域网充斥了Membership Query报文。

它只需要让路由器知道网内还有一个组员。

* Version 1 Membership Report消息是为了IGMPv2主机的向后兼容性,用于检测和支持子网中IGMPv1主机和路由器* Leave Group消息主机发出的,目的地址为224.0.0.2(所有路由器),告诉路由器主机离开了一个组。

*主机也可不必等待一个查询才能加入一个组,它可主动发送224.0.0.2以加入组。

IGMPv2路由器功能:主要是查询功能,它会有两种查询报文,General Query和Group-Specific QueryGeneral Query每隔一段时间就会向局域网内发送,目的地址是224.0.0.1(网内所有主机),所以子网里的每一个主机都会收到这个报文,并且会以Member Report报文回应,如果在一定的时间间隔内设备没有收到任何Member Report,它就会认为子网内没有组员。

Group-Specific Query报文,当路由器收到一个Leave Group报文的时候,它会发送这样一个具体包含有组地址的报文来查询这个组是否有组成员存在。

当如果在一个子网上同时有两个多播路由器,他们一开始都会认为自己是组播成员的查询者,当他们发送General Query报文时,通过比较从对端收到的报文源IP地址的大小来决定谁是查询者谁不是查询者,IP地址大的成为查询者。

如果在一段时间内没有收到查询的报文,就会认为查询者down掉了,它就会充当起查询者的角色。

-二层交换机承担了IGMP的代理(Snooping)作用:保证组播数据流被正确的发送给组播成员,实现IGMP报告查询的功能以及抑制其他成员的功能。

CGMP(Cisco专有)考虑到了如果有交换机存在的情况,考虑到了在三层设备和主机中有二层设备,而IGMP 是一个三层协议,二层设备如果收到这样一个类型的报文,只会向除了源端口以外的所有端口进行转发,这样会对网络的带宽和整体性能造成影响。

解决的方法是希望交换机可以对有组播成员的端口进行组播报文的转发。

在交换式网络上,对组播流的控制有三种方法:(1)手工配置的交换式多播树在交换机的桥接表上配置静态的组播MAC地址和端口映射。

相关主题