第4章组播路由本章主要讲述IP组播报文转发原理及相关协议。
组播报文到达路由器后,查询路由器中的组播转发表,确定是否能够转发以及如何转发;IGMP协议主要用于主机与路由器之间成员关系的管理;动态组播路由协议用于维护全网一致的组播转发表。
本章主要内容:组播介绍IGMP协议相关术语解析IGMP协议介绍PIM-SM协议相关术语解析PIM-SM协议介绍PIM-SM调试命令及调试信息PIM-DM协议介绍DVMRP协议介绍4.1IP组播相关术语解释ip multicasting――ip组播。
在RFC 1112和RFC 2236中定义了I P组播概念,即如何向一个主机组发送报文。
一个主机组是指共享单独一个IP地址的多个设备。
I P组播传送与I P单播相同,都使用“尽力(best-effort)”传输机制发送报文。
这意味着对于该组中的所有主机,都不能保证数据包能够正确无误地、按顺序地接收。
multicast address――组播地址。
目前,保留给IP组播的地址空间是D类地址,范围从224.0.0.0到239.255.255.255。
这些地址的高位比特都被定义为“1110”。
multicast distribution tree――组播分布树。
在组播模型中,源主机可以向任一加入组播组的主机传送信息。
IP组播业务报文在网络中经过的路径成为组播分布树。
它可以分为有源树和共享树两种类型。
source tree――有源树。
树的根是组播信息源,分支形成了通过网络到达接收站点的分布树。
有源树以最短的路径贯穿网络,因此它也常被称为最短路径树(SPT)。
shared tree――共享树。
不使用信息源作为树根,而是使用位于网络中的某些可选择点作为公用根。
此根称为汇聚点(RP)。
reverse path forwarding――逆向路径转发。
组播业务包到达路由器时,路由器对报文执行RPF(检查组播包是否在可返回源站点接口上到达)检查。
检查成功时转发该包,否则丢弃该包。
multicast cache――组播转发缓存。
又称为组播路由表项。
它包含了组播业务报文的合法输入、输出接口信息,是RPF检查的依据。
组播转发缓存由组播路由协议生成并更新。
4.2组播介绍当信息(包括数据、语音和视频)传送的目的地址是网络中的一组用户时,可以采用多种传送方式。
例如可以采用单播(Unicast)方式,为每个用户单独建立一条数据传送通路;又如采用广播(Broadcast)方式,把信息传送给网络中的所有用户,不管他们是否需要,都会接收到广播来的信息。
以上两种方式都浪费了大量宝贵的带宽资源,而且广播方式也不利于信息的安全和保密。
IP组播技术有效地解决了这个问题。
组播源仅发送一次信息,信息在网络关键节点处被复制和分发,因此信息能被准确高效地传送到每个需要它的用户。
简单地说,IP组播是一种保存带宽的技术,它把一个单独的信息流同时传送到多个接收者那里,减少了网络流量。
若网络中有不支持组播的路由器,组播路由器可以采用隧道方式将组播包封装在单播IP包中发送给相邻路由器,相邻的组播路由器再将单播IP头剥掉,然后继续进行组播传输,直至到达目的地。
4.2.1IP组播地址IP组播地址用于标识一个IP组播组。
IANA把D类地址空间分配给组播使用,范围从224.0.0.0 到239.255.255.255。
组播地址前四位均为“1110”。
4.2.1.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 地址范围为本地管理组播地址administratively scoped addresses,仅在特定的本地范围内有效。
4.2.1.2IP 组播地址到MAC 地址的映射IANA 将MAC 地址范围01:00:5E:00:00:00 ~ 01:00:5E:7F:FF:FF 分配给组播使用,这就要求将28位的IP 组播地址空间映射到23 位的MAC 地址空间中。
具体的映射方法是将组播地址中的低23 位放入MAC 地址的低23 位如图4-1所示:图4-1 组播地址到MAC地址的映射由于IP 组播地址的后28 位中只有23 位被映射到MAC 地址,这样会有32个IP 组播地址映射到同一MAC 地址上。
4.2.2IP组播特性在一般的TCP/IP路由中,一个数据包传输的路径是从源地址路由到目的地址,利用Hop-by-Hop的原理在IP网络中传输。
然而在IP组播环境中,数据包的目的地址不是一个而是一组,形成组地址.。
所有的信息接收者都加入到一个组内,并且一旦加入之后,流向该组地址的数据立即开始向接收者传输。
组中的所有成员都能接收到该数据包,因此为了接收数据包,必须首先成为组的成员,而数据包的发送者并不需要是组中的成员。
组播环境中,数据传向组中的所有成员,不是组中成员的用户不会收到这些数据。
总的来说:IP组播具有如下特性:对组成员所处的位置和成员的数量没有限制。
也就是说:独立的主机可以在任意时间自由地加入或离开组播组;这些成员可以处在Internet的任何地方;一台主机在同一时刻也可以是一个以上组播组的成员。
一台主机可发送数据包到一个组播组,即使该主机不是这个组中的成员。
向一个组播组内的所有IP主机传送报文如同单播一样,只向组地址发送一份报文即可。
路由器不需要保存所有主机的成员关系,它只需知道物理接口所在的网段上是否已经有主机属于某个组播组;主机只需保存自己加入了哪些组播组。
4.2.3IP组播路由协议组播协议包括两个部分:一部分作为IP组播基本信令协议的因特网组播管理协议(IGMP);另一部分是实现IP组播流寻径的组播路由协议(例如:DVMRP、PIM-SM、PIM-DM)。
4.2.3.1因特网组播管理协议IGMP定义了主机与路由器(也适用于路由器与路由器之间)之间组播成员关系的建立和维护机制,是整个IP组播的基础。
IGMP通知路由器有关组成员的信息,路由器使用IGMP来获知与路由器相连的子网上是否存在组播组的成员。
特定的应用程序能知道是来自哪个数据源的信息发送到了哪个组中:如果一个局域网中有一个用户通过IGMP宣布加入某组播组,则局域网中的组播路由器就将该信息通过组播路由协议进行传播,最终将该局域网作为一个分枝加入组播树。
当主机作为某个组的成员开始收到信息后,路由器就会周期性地对该组进行查询,检查组内的成员是否还参与其中,只要还有一个主机仍在参与,路由器就继续转发数据。
当局域网中的所有用户退出该组播组后,相关的分枝就从组播树中删掉。
4.2.3.2组播路由协议因为组播中的组地址是虚拟的,所以不可能如同单播那样,直接从数据源一端路由到特定的目的地址。
组播应用程序将数据包发送给一组希望接收数据的接收者(组播地址),而不是仅仅传送给一个接收者(单播地址)。
组播路由建立了一个从数据源端到多个接收端的无环数据传输路径。
组播路由协议的任务就是构建分发树结构。
组播路由器能采用多种方法来建立数据传输的路径,即分发树。
根据网络的实际情况,组播路由协议可以分成两大类:密集模式和稀疏模式。
(1)密集模式组播密集模式组播路由协议适用于小型网络。
它假设网络中的每个子网都存在至少一个对组播组感兴趣的接收站点。
因此,组播数据包被扩散(“推”)到网络中的所有点。
与此伴随着相关资源(带宽和路由器的CPU等)的消耗。
为了减少这种宝贵网络资源的消耗,密集模式组播路由协议对没有组播数据转发的分枝进行剪枝操作,只保留包含接收站点的分支。
为了使剪掉的分支中有组播数据转发需求的接收站点可以接收组播数据流,剪掉的分支可以周期性地恢复成转发状态。
为了减少等待剪枝分支恢复转发状态的延时时间,密集模式组播路由协议使用嫁接机制主动加入组播分布树。
这种周期性的扩散和剪枝现象是密集模式协议的特征。
一般说来,密集模式下数据包的转发路径是“有源树”――以“源”为根、组员为枝叶的一棵树。
典型的密集模式组播路由协议有:PIM-DM(协议无关组播的密集模式)、DVMRP(距离向量组播路由协议)。
(2)稀疏模式组播稀疏模式默认所有机器都不需要接收组播包,只有明确指定需要的才转发。
接收站点为接收到特定组的数据流,必须向该组对应的“汇聚点”发送加入消息(“拉”),加入消息所经过的路径就变成了共享树的分枝。
发送组播时,组播报文发送到汇聚点,再沿以汇聚点为根、组员为枝叶的“共享树”转发。
为避免共享树的分支由于不被更新而被删除,稀疏模式组播路由协议通过向分支周期性地发送加入消息来维护组播分布树。
发送端如果想要给特定的地址发送数据,首先要在汇聚点进行注册,之后把数据发向汇聚点。
当数据到达了汇聚点后,组播数据包被复制并沿着分发树路径把数据传给对其感兴趣的接收者。
复制仅仅发生在分发树的分支处,这个过程能自动重复直到数据包最终到达目的地。
稀疏模式下的典型组播路由协议是稀疏模式下的协议无关组播(PIM-SM)。
4.2.3.3 IP 组播报文转发单播报文的转发过程中,路由器并不关心单播源地址,只关心报文中的目的地址,通过目的地址决定向哪个接口转发。
在组播中,报文是发送给一组接收者的。
这些接收者用一个逻辑地址标识。
路由器在接收到报文后必须根据源和目的地址确定出上游(指向组播源)和下游方向(把报文沿着远离组播源的方向进行转发),这个过程称作RPF(Reverse Path Forwarding)逆向路径转发。
RPF 执行过程中会用到原有的单播路由表以确定上游和下游的邻接结点。
只有当报文是从上游邻接结点对应的接口(称作RPF 接口)到达时才向下游转发。
RPF 的作用除了可以正确地按照组播路由的配置转发报文外,还能避免由于各种原因造成的环路。
环路避免在组播路由中是一个非常重要的问题。
RPF 的主体是RPF 检查。
路由器收到组播报文后先对报文进行RPF 检查,只有检查通过才转发,否则丢弃。
RPF 检查过程如下:(1) 路由器在单播路由表中查找组播源或RP 对应的RPF 接口。
当使用有源树时查找组播源对应的RPF 接口,使用共享树时查找RP 对应的RPF 接口。
某个地址对应的RPF 接口是指从路由器向该地址发送报文时的出接口。
(2) 如果组播报文是从RPF 接口接收下来的,则RPF 检查通过。
报文向下游接口转发,否则丢弃该报文。
图4-2所示是在使用有源树的情况下的RPF 检查过程。