第24章 三层组播技术.docx
- 文档编号:14557567
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:39
- 大小:446.07KB
第24章 三层组播技术.docx
《第24章 三层组播技术.docx》由会员分享,可在线阅读,更多相关《第24章 三层组播技术.docx(39页珍藏版)》请在冰点文库上搜索。
第24章三层组播技术
第24章三层组播技术
本章主要讲述IP组播的原理和相关的组播协议。
IGMP(InternetGroupManagementProtocol,Internet组管理协议)主要用于主机和路由交换设备之间组成员关系的管理。
动态组播路由协议用于维护全网一致的组播路由表。
组播公共部分则维护一张根据组播路由表计算得到的组播转发表。
当接收到组播业务报文时,路由交换设备查询组播转发表,确定是否转发以及如何转发这些报文。
注:
本章使用的名词“路由交换设备”指路由器或具有路由功能的三层交换机。
本章主要内容:
●组播介绍
●IGMP协议相关术语解析
●IGMP协议介绍
●PIM-SM协议相关术语解析
●PIM-SM协议介绍
●PIM-DM协议介绍
●DVMRP协议介绍
●MVPN协议介绍
●MSDP协议介绍
24.1组播介绍
当信息(包括数据、语音和视频)传送的目的地址是网络中的一组用户时,可以采用多种传送方式。
例如,可以采用单播(Unicast)方式,为每个用户单独建立一条数据传送通路;又如采用广播(Broadcast)方式,把信息传送给网络中的所有用户,不管他们是否需要,都会接收到广播来的信息。
以上两种方式都浪费了大量宝贵的带宽资源,而且广播方式也不利于信息的安全和保密。
IP组播技术有效地解决了这个问题。
组播源仅发送一次信息,信息在网络关键节点处被复制和分发,因此信息能被准确高效地传送到每个需要它的用户。
简单地说,IP组播是一种保存带宽的技术,它把一个单独的信息流同时传送到多个接收者那里,减少了网络流量。
如果网络中有不支持组播的路由交换设备,组播路由交换设备可以采用隧道方式将组播包封装在单播IP包中发送给相邻路由交换设备,相邻的组播路由交换设备再将单播IP头剥掉,然后继续进行组播传输,直至到达目的地。
24.1.1IP组播相关术语解释
ipmulticasting――IP组播。
在RFC1112和RFC2236中定义了IP组播概念,即如何向一个主机组发送报文。
一个主机组是指共享单独一个IP地址的多个设备。
IP组播传送与IP单播相同,都使用“尽力(best-effort)”传输机制发送报文。
这意味着对于该组中的所有主机,都不能保证数据包能够正确无误地、按顺序地接收。
multicastaddress――组播地址。
目前,保留给IP组播的地址空间是D类地址,范围从224.0.0.0到239.255.255.255。
这些地址的高位比特都被定义为“1110”。
multicastdistributiontree――组播分布树。
在组播模型中,源主机可以向任一加入组播组的主机传送信息。
IP组播业务报文在网络中经过的路径成为组播分布树。
它可以分为有源树和共享树两种类型。
sourcetree――有源树。
树的根是组播信息源,分枝形成了通过网络到达接收站点的分布树。
有源树以最短的路径贯穿网络,因此它也常被称为最短路径树(SPT)。
sharedtree――共享树。
不使用信息源作为树根,而是使用位于网络中的某些可选择点作为公用根。
此根称为汇聚点(RP)。
reversepathforwarding――逆向路径转发。
当组播业务包到达路由交换设备时,路由交换设备对报文执行RPF(检查组播包是否在可返回源站点接口上到达)检查。
如果检查通过,转发该数据包,否则丢弃该包。
multicastcache――组播转发缓存。
又称为组播路由表项。
它包含了组播业务报文的合法输入、输出接口信息,是RPF检查的依据。
组播转发缓存由组播路由协议生成并更新。
24.1.2IP组播地址
IP组播地址用于标识一个IP组播组。
IANA把D类地址空间分配给组播使用,范围从224.0.0.0到239.255.255.255。
IP组播地址的前四个比特均为“1110”。
24.1.2.1IP组播地址的空间划分
整个IP组播地址的空间是这样划分的:
224.0.0.0到224.0.0.255地址范围被IANA预留,地址224.0.0.0保留不做分配。
其他地址供路由协议及拓扑查找和维护协议使用。
该范围内的地址属于局部范畴,不论生存时间字段TTL值是多少,都不会被路由交换设备转发,也就是只能在局域网里传送。
224.0.1.0到238.255.255.255地址范围作为用户组播地址,在全网范围内有效。
组播地址239.0.0.0到239.255.255.255地址范围为本地管理组播地址(administrativelyscopedaddresses),仅在特定的本地范围内有效。
24.1.2.2IP组播地址到MAC地址的映射
IANA将MAC地址范围01:
00:
5E:
00:
00:
00~01:
00:
5E:
7F:
FF:
FF分配给组播使用,这就要求将28位的IP组播地址空间映射到23位的MAC地址空间中。
具体的映射方法是将组播地址中的低23位放入MAC地址的低23位如下图所示:
图241组播地址到MAC地址的映射
由于IP组播地址的后28位中只有23位被映射到MAC地址,这样会有32个IP组播地址映射到同一MAC地址上。
24.1.3IP组播特性
在一般的TCP/IP路由中,一个数据包传输的路径是从源地址路由到目的地址,利用Hop-by-Hop的原理在IP网络中传输。
然而在IP组播环境中,数据包的目的地址不是一个而是一组,形成组地址。
所有的信息接收者都加入到一个组内,并且一旦加入之后,流向该组地址的数据立即开始向接收者传输。
组中的所有成员都能接收到该数据包,因此为了接收数据包,必须首先成为组播组的成员,而数据包的发送者并不需要是组中的成员。
在组播环境中,数据发送给组中的所有成员,不是组中成员的用户不会收到这些数据。
总的来说:
IP组播具有如下特性:
(1)对组成员所处的位置和成员的数量没有限制。
也就是说:
独立的主机可以在任意时间自由地加入或离开组播组;这些成员可以处在Internet的任何地方;一台主机在同一时刻也可以是一个以上组播组的成员。
(2)一台主机可发送数据包到一个组播组,即使该主机不是这个组中的成员。
向一个组播组内的所有主机传送组播报文如同单播一样,只需要向组地址发送一份报文即可。
(3)路由交换设备不需要保存所有主机的成员关系,它只需知道物理接口所在的网段上是否已经有主机属于某个组播组;主机需要保存已经加入的各个组播组信息。
24.1.4IP组播路由协议
组播协议包括两个部分:
一部分作为IP组播基本信令协议的因特网组播管理协议(IGMP);另一部分是实现IP组播选路的组播路由协议(例如:
DVMRP、PIM-SM、PIM-DM)。
24.1.4.1因特网组播管理协议
IGMP定义了主机与路由交换设备(也适用于路由交换设备与路由交换设备之间)之间组播成员关系的建立和维护机制,是整个IP组播的基础。
IGMP通知路由交换设备组成员信息,路由交换设备使用IGMP来获知与路由交换设备相连的子网上是否存在组播组的成员。
特定的应用程序能知道是来自哪个数据源的信息发送到了哪个组播组中:
如果一个局域网中有一个用户通过IGMP宣布加入某个组播组,则局域网中的组播路由交换设备就将该信息通过组播路由协议进行传播,最终将该局域网作为一个分枝加入组播树。
当主机作为某个组的成员开始收到信息后,路由交换设备就会周期性地对该组进行查询,检查组内的成员是否还参与其中,只要还有一个主机仍在参与,路由交换设备就继续转发数据。
当局域网中的所有用户退出该组播组后,相关的分枝就从组播树中删掉。
24.1.4.2组播路由协议
因为组播中的组地址是虚拟的,所以不可能像单播那样,直接从数据源一端路由到特定的目的地址。
组播应用程序将数据包发送给一组希望接收数据的接收者(组播地址),而不是仅仅传送给一个接收者(单播地址)。
组播路由协议建立了一个从数据源端到多个接收端的无环数据传输路径。
组播路由协议的任务就是构建组播分发树。
组播路由交换设备能采用多种方法来建立数据传输的路径,即分发树。
根据网络的实际情况,组播路由协议可以分成两大类:
密集模式和稀疏模式。
(1)密集模式组播
密集模式组播路由协议适用于小型网络。
它假设网络中的每个子网都存在至少一个对组播组感兴趣的接收站点。
因此,组播数据包被扩散(“推”)到网络中的所有点。
与此伴随着相关资源(带宽和路由交换设备的CPU等)的消耗。
为了减少这种宝贵网络资源的消耗,密集模式组播路由协议对没有组播数据转发的分枝进行剪枝操作,只保留包含接收站点的分枝。
为了使剪掉的分枝中有组播数据转发需求的接收站点可以接收组播数据流,剪掉的分枝可以周期性地恢复成转发状态。
为了减少等待剪枝分枝恢复转发状态的延时时间,密集模式组播路由协议使用嫁接机制主动加入组播分布树。
这种周期性的扩散和剪枝现象是密集模式协议的特征。
一般说来,密集模式下数据包的转发路径是“有源树”――以“源”为根、组员为枝叶的一棵树。
典型的密集模式组播路由协议有:
PIM-DM(协议无关组播的密集模式)、DVMRP(距离向量组播路由协议)。
(2)稀疏模式组播
稀疏模式组播假定所有机器都不需要接收组播包,只有明确指定需要的才转发。
接收站点为接收到特定组的数据流,必须向该组对应的“汇聚点”发送加入消息(“拉”),加入消息所经过的路径就变成了共享树的分枝。
发送组播报文时,组播报文发送到汇聚点,再沿着以汇聚点为根、组员为枝叶的“共享树”转发。
为避免共享树的分枝由于不被更新而被删除,稀疏模式组播路由协议通过周期性地向分枝发送加入消息来维护组播分布树。
发送端如果想要给特定的地址发送数据,首先要在汇聚点进行注册,之后把数据发向汇聚点。
当数据到达了汇聚点后,组播数据包被复制并沿着分发树路径把数据传给对其感兴趣的接收者。
复制仅仅发生在分发树的分枝处,这个过程能自动重复直到数据包最终到达目的地。
稀疏模式下的典型组播路由协议是稀疏模式下的协议无关组播(PIM-SM)。
24.1.4.3IP组播报文转发
在转发单播报文的过程中,路由交换设备并不关心单播源地址,只关心报文中的目的地址。
路由交换设备通过目的地址决定向哪个接口转发单播报文。
在组播中,报文是发送给一组接收者的。
这些接收者用一个逻辑地址标识。
在接收到组播业务报文后,路由交换设备必须根据源和目的地址确定出上游(指向组播源)和下游方向(把报文沿着远离组播源的方向进行转发),这个过程称作RPF(ReversePathForwarding)逆向路径转发。
RPF执行过程中会用到原有的单播路由表以确定上游和下游的邻接结点。
只有当报文是从上游邻接结点对应的接口(称作RPF接口)到达时才向下游转发。
RPF的作用除了可以正确地按照组播路由的配置转发报文外,还能避免由于各种原因造成的环路。
环路避免在组播路由中是一个非常重要的问题。
RPF的主体是RPF检查。
路由交换设备收到组播报文后先对报文进行RPF检查,只有检查通过才转发,否则丢弃。
RPF检查过程如下:
(1)路由交换设备在单播路由表中查找组播源或RP对应的RPF接口。
当使用有源树时查找组播源对应的RPF接口,使用共享树时查找RP对应的RPF接口。
某个地址对应的RPF接口是指从路由交换设备向该地址发送IP单播报文时的输出接口。
(2)如果组播报文是从RPF接口上收到的,则RPF检查通过。
如果组播报文通过RPF检查,路由交换设备向下游接口转发该报文,否则丢弃该报文。
下图所示是在使用有源树的情况下的RPF检查过程。
图242RPF检查过程
路由交换设备E从S0接口接收到一个组播报文,其中的源地址属于SourceSegment网段。
路由交换设备E检查路由表,发现到达SourceSegment的输出接口是S1,因此将此报文丢弃。
如果组播报文是从S1接口到达,则到达接口与查表得到的接口一致,路由交换设备转发该报文。
从RPF检查过程可以看出,RPF检查中使用的是从路由交换设备到达组播源或RP的最短路径所对应的接口,因此称作逆向路径转发。
24.1.5IP组播应用
24.1.5.1信息分配
IP组播使得公司内部的数据可以分配给大量用户,如一个有若干连锁店的公司可以使用组播将其定价信息传递给各连锁店的收银机,或者由媒体通过Internet提供现场实时信息给支持组播的用户,如目前十分流行的远程雇员管理与远程教育。
24.1.5.2数据广播
传统的数据广播基于广播形式发送,需要占用大量的Internet带宽。
通过使用组播技术,电视和无线电台不仅可以多点广播节目给Internet上真正需要这些数据的用户,还能大大减少网络的维护费用。
24.2IGMP协议相关术语解析
InternetGroupManagementProtocol――Internet组管理协议IGMP。
IGMP使IP主机能够向邻接的组播路由交换设备报告它们属于哪个主机组。
IGMP是Internet协议栈的一部分,所以IGMP消息也是封装在IP数据包中的。
IGMPquerier――IGMP查询者。
IGMP查询者能够定时发出IGMP查询报文,查询当前该路由交换设备所在的局域网中是否存在申请加入组播组的主机成员,在版本2中还会针对某个组成员的IGMP离开消息发出特定组查询。
在版本3中,还可以针对具体的组播源,发送指定源的查询报文。
通常主机不生成查询报文,它只是在接收到查询报文时根据需要响应一个组成员资格报告报文。
24.3IGMP协议介绍
IGMP协议的目的是实现主机和路由交换设备之间组成员关系的建立与维护。
IGMP协议运行于主机和与主机直接相连的组播路由交换设备之间。
IGMP实现的功能是双向的:
一方面,通过IGMP协议,主机通知本地路由交换设备希望加入并接收某个特定组播组的信息;另一方面,路由交换设备通过IGMP协议周期性地查询局域网内某个已知组的成员是否处于活动状态,即该网段是否仍有属于某个组播组的成员,实现所连网络组成员关系的收集与维护。
通过IGMP在路由交换设备中记录的信息可以知道某个组播组是否在本地有组成员,而不是组播组与主机之间的对应关系。
到目前为止IGMP有三个版本:
IGMPv1(RFC1112)中定义了基本的组成员查询和报告过程;目前通用的是IGMPv2,由RFC2236定义,在IGMPv1的基础上添加了组成员快速离开的机制。
IGMPv3,由RFC3376定义,增加的主要功能是,成员可以指定接收或指定不接收某些组播源的报文。
24.1.1IGMP协议原理
以下以IGMPv2为例来说明,如下图所示:
图241IGMPv2的工作原理
当同一个网段内有多个组播路由交换设备时,IGMPv2通过查询者选举机制从中选举出唯一的查询者。
查询者周期性地发送通用组查询消息进行成员关系查询;主机发送报告消息来响应查询。
主机发送报告消息的时间有随机性,当检测到同一网段内有其他成员发送同样的消息时,则抑制自己的响应报文。
如果有新的主机要加入组播组,不必等待查询器的查询消息,而是主动发送报告消息。
当要离开组播组时,主机发送离开组消息;收到离开组消息后,查询者发送特定组查询消息来确定是否所有组成员都已离开。
对于作为组成员的路由交换设备而言,其行为和普通的主机一样,响应其他路由交换设备的查询。
通过上述机制,在组播路由交换设备里建立起一张表,其中记录了路由交换设备的各个接口所对应的子网上都有哪些存在活动成员的组播组,和一个针对每个组播组的定时器。
同时记录该组播组的一个成员(最后作出成员关系报告的),而不需要记录所有成员。
当路由交换设备接收到某个组G的数据报文后,只向那些有G的成员的接口上转发数据报文。
至于数据报文在路由交换设备之间如何转发则由组播路由协议决定,不是IGMP协议的功能。
24.1.2IGMP版本1
24.3.1.1报文格式
IGMP是IP的一个组成部分。
IGMP报文封装在IP报文中,其IP的协议号为2。
IGMP报文均使用TTL为1进行传递,并在IP头中包括了IP路由检测选项。
version
type
unused
checksum
groupaddress
版本号version:
1
类型type:
为1时是成员关系查询报文,为2时是成员关系报告报文
未用unused:
发送时设为0,接收时忽略
校验和checksum:
对8字节的IGMP消息补码之和进行求16位补码运算
组地址groupaddress:
对成员关系查询报文为0;对成员关系报告报文等于所报告的组的IP组播地址。
24.3.1.2查询-响应过程
路由交换设备向224.0.0.1(网内所有主机)发查询报文;
接收到该报文的主机将自己加入的组播地址填入报告报文,向该组播地址多播;
其他加入该组播组的主机收到该组播报文后,抑制自己报告报文的发送;
由此,IGMP查询者路由交换设备只记录本机某接口加入了哪些组播组,它无须记录具体哪些主机加入了组播组。
24.3.1.3响应报文抑制
主机收到查询报文后,并不立刻响应,而是延迟0到10秒的一个随机时间后才响应。
这样,一方面可以避免响应风暴,另一方面又可以有机会收到别的主机通告的响应报文从而抑制本报文的发送。
24.3.1.4主动加入过程
主机第一次加入某组播组时,可以在未被查询的情况下,主动通告一个IGMP成员关系报告报文,以及时加入组播组。
24.3.1.5离开组播组过程
IGMP版本1没有专门的离开组播组报文。
路由交换设备在查询间隔的3倍时间内仍未收到响应报文时,才将该组播组删除。
针对这一问题的改进是IGMP版本2的一个重要内容。
24.1.3IGMP版本2
24.3.1.6与版本1相比的改进
●查询选择过程
●最大响应时间字段
●指定组查询消息
●离开组消息
24.3.1.7报文格式
如图:
type
MaxRespTime
checksum
groupaddress
type:
类型
有3种IGMP消息和主机与路由交换设备的交互有关:
(1)0x11=成员关系查询(MembershipQuery)
有两个成员关系查询的子类型:
-常规查询,用于了解一个组中是否有成员在相邻的网络中。
-特定组查询,用于了解在相邻的网络中特定的组是否有成员。
这两个消息由组地址进行区分,对常规查询,组地址为0;而对于特定组查询来说,组地址中包含了欲查询的组播组地址。
(2)0x16=版本2成员关系报告(Version2MembershipReport)
(3)0x17=离开组(LeaveGroup)
为了和IGMPv1兼容,还有另外的一个附加的消息类别:
0x12=版本1成员报告。
MaxRespTime:
最大响应时间
最大的响应时间域仅在成员关系查询中有效。
规定了在响应成员关系查询之前,最多能够等待的时间,(其单位为1/10秒)。
在所有其他的消息中,会由发送者置为0,而接收者则忽略该域。
24.3.1.8查询-响应过程
当主机接收到查询报文后,它会给每个组设一个延时定时器,定时器值从0到查询报文中所定义的最大响应时间内随机选取。
当组的定时器到时后,主机组播一个版本2的成员报告到该组中,TTL值为1。
如果主机收到了另一个主机的报告(版本为1或2),而其本身的定时器还没有到时,则它会停止该定时器,且不发送报告,这样就减少了重复的报告。
当路由交换设备接收到成员关系报告,它就会把该组加入到组播组成员列表中,并且为其设一个值为组成员生存周期(GroupMembershipInterval,GMI)的定时器。
收到该组的报告会导致对应定时器的刷新。
如果定时器超时,路由交换设备则认为没有本地组成员,它也不再需要在邻接的网络上为该组转发组播报文了。
当主机加入组播组,应该立即发送一个版本2的成员关系报告,以防它是网络上该组的第一个成员。
因为报告可能丢失,主机在主动报告间隔(UnsolicitedReportInterval,URI)后,至少还要重发一次成员关系报告。
24.3.1.9IGMPv2离开组信息
IGMP版本2新增一个特性是离开组信息。
在IGMP版本1中,主机是悄悄的离开,没有发出任何消息。
在版本2中,当主机离开一个组播组,向所有路由交换设备组播组地址(224.0.0.2)发送一条离开组消息。
当查询者接收到组成员离开组消息之后,向正要离开的组发送指定组查询,以确认子网中是否有其他活动的组成员。
其他活动的组成员将响应成员关系报告。
如果在最后的成员查询期间,都没有任何报告消息,路由交换设备就会认为该组没有本地成员。
24.1.4版本1和版本2的互操作
24.3.1.10路由交换设备充当组播主机
如果支持版本2的路由交换设备收到一条版本1的IGMP成员关系查询,则路由交换设备转入到当前查询路由交换设备为版本1的状态,并设定一个定时器,该定时器只要收到版本1的成员关系查询就复位。
如果该定时器超时,则路由交换设备回到版本2的状态。
24.3.1.11设备是组播路由交换设备
如果子网中存在版本1的组成员,因为版本1的主机无法识别指定组查询,所以必须忽略版本2主机的离开消息,不进行离开过程的处理。
如果子网中存在版本1的路由交换设备,那么必须把子网中所有路由交换设备配置为版本1以便正常使用。
24.1.5IGMP版本3
24.3.1.12与版本1和2相比的改进
●增加了版本3专用的成员报告报文。
一个报文可以报告多个组记录,每条组记录可以指明是要接收或者要拒绝哪些源
●成员报告发送到所有IGMP版本3路由交换设备组(224.0.0.22)
●增加了指定源查询
●查询报文中源数目为0时,查询报文长度比版本2的报文多了4个字节
●MaxRespCode字段,当数字大于128时可以进行浮点换算得出MaxRespTime
●通过INCLUDE和EXCLUDE的过滤模式,统一了成员报告报文和离开报文的格式
24.3.1.13报文格式
IGMPv3协议相关的报文类型有两种:
0x11成员查询报文
0x22版本3成员报告报文
格式如图:
(1)IGMP版本3查询报文:
Type=0x11
MaxRespCode
Checksum
GroupAddress
Resv
S
QRV
QQIC
NumberofSources(N)
SourceAddress[1]
SourceAddress[2]
……
SourceAddress[N]
其中:
Type:
类型
MaxRespCode:
最大响应时间。
实际使用的是MaxRespTime(单位1/10秒)。
MaxRespTime和MaxRespCode的关系为:
如果MaxRespCode<128,那么MaxRespTime=MaxRespCode
如果MaxRespCode>=128,那么MaxRespCode代表如下格式的一个浮点值:
01234567
+-+-+-+-+-+-+-+-+
|1|exp|mant|
+-+-+-+-+-+-+-+-+
所以:
MaxRespTime=(mant|0x10)<<(exp+3)
Checksum:
IGMP报文部分的奇偶校验和
GroupAddress:
组地址。
发送一般查询时,组地址为0;发送指定组和指定源查询的时候为组地址。
Resv:
保留域。
发送时填入0,接收时忽略。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第24章 三层组播技术 24 三层 技术