亚威岁末大优惠——所有Cisco培训课程7折
 
23.1.2  组播的缺点
组播的缺点源于它是基于UDP技术的。
  Best Effort Delivery    
这就意味着组播不能保证每个数据包都被正确传送到目的地。中间可能会被丢弃。
  No Congestion Avoidance    
组播技术本身不提供流控机制。
  Duplicates    
组播可能导致重复数据包的产生,应用程序应该有能力处理这一情况。
  Out-of-Sequence Packets    
数据包的顺序可能会被打乱。接收方要有重新排序的能力。
23.1.3  组播的应用
  基于远程网络的组播传送技术目前主要依赖于  MBONE。有很多基于  MBONE  的组播传送应用程序
可以免费下载,很多程序的源代码也是公开的。  目前由于国内互联网骨干带宽有限,使用成本较高,
加之信息化、数字化水平较低等原因,  基于远程组播传送技术的应用并不多,但是随着互联网应用水
平的不断提高,在远程实时数  据传送、远程教学、远程等领域中的组播应用会越来越普遍。  这个我就
不多说了,目前在国内大规模应用组播传送技术的案例真的是不多。
23.1.4  组播服务模型
  RFC 1112  即  IGMP(Internet Group Management Protocol)中定义了主机可以动态加入和退出组播组。
组播组成员可以分布于Internet的任何地点。(当然了,前提是网络互联设备支持组播信息的传递)组播信
息的传递依赖于分布树,有很多组播路由协议,如  MOSPF(Multicast Extension to Open Shortest Path First)、
CBT(Core Based Tree)、
 
23.1.5  组播IP地址
  组播的地址是保留的D类地址从224.0.0.0—239.255.255.255,
  224.0.0.0—244.0.0.255
只能用于局域网中 路由器是不会转发的,并且224.0.0.1是所有主机的地址,224.0.0.2所有 路由器
的地址,224.0.0.5所有ospf 路由器的地址,224.0.13是PIMv2 路由器的地址;
  239.0.0.0—239.255.255.255
私有地址(和192.168.x..x这类地址类似);
  224.0.1.0—238.255.255.255
用与Internet上的。  
  组播地址可以动态分配,SDR  技术允许应用程序在建立新的会话时随意选用组播地址,通过冲突检
测技术避免地址的重复使用,这种方法适用于初期应用较少的MBONE,MASC(Multicast    Address  
Set-Claim)是  IETF  设计的新的组播分配方案,首先将组播地址段静态分配到不同的地区,在每个地区内
仍然采用动态租用的方案使用组播地址,想法是好的,实现起来的难度较大,周期较长。
  
目前的解决方案多采用静态组地址分配技术, SGAA(Static Group Address Assignment)是在  MASC  方案
得以实现之前的应急之道。采用  233/8  地址段用于静态地址分配,中间两节包含网络自治系统号,最后
一节用于组分配。
 
23.1.6  组播MAC地址
2层的MAC地址是如何与3层的IP地址进行映射的呢
通过将MAC地址的前25位强行规定位0100.5e,而后23位
应IP地址的后23位,而组播IP地址的前4位均相同如:  
IP地址:
1110yyyy.yxxxxxxx.xxxxxxx.xxxxxxxx  
MAC地址:  
01.00.5E.0xxxxxxx.xxxxxxx.xxxxxxxx  
 
显然有32个IP地址(有5个y可以不一样)对应一个MAC地址,
例如:224.1.1.1  ,224.128.1.1,  225.1.1,  225.128.1.1  „  238.1.1.1,  238.128.1.1,  239.1.1.1,
239.128.1.1均对应一个组播MAC 0100。5E01。0101
所以要避免在同一网络中使用的多个组播IP地址对应一个MAC地址。
令牌环网中,三层组播地址被简单映射为功能地址 C0-00-00-04-00-00(在令牌环网中因为二进制
位是反序的,实际是  03-00-00-20-00-00)或全  1 地址  FF-FF-FF-FF-FF-FF。缺省使用全  1地址,可以用接
口命令  ip multicast use-functional 更改为使用功能地址。
23.1.7  组播树
有源树SPT(Shortest Path Trees)
采用最短路径优先算法,  中间的
转发设备采用  Notation(S,G)的方法记
录转发表, S  表示多播源  IP  地址, G  表
示多播组地址。
 
 
SDT(Shared Distribution Tree  共享分布树)
需要先指定  RP(Rendezvous  Point  会聚点),  所有的多播源先把信息送到  RP,再由  RP  分
发到各接收点,SP相当于树根,到达R之后
的多播信息转发时与源无关,故采用
Notation(*,G)的方式记录转发表,*表示
一个通配符。
 
共享树分两种:
1.双向共享树
    源发出的组播流可以不去RP而直接发往接收端
 
 
 
23.1.8  组播转发
基于发送源的  IP  地址(数据包中的源地址)而非接收者的  IP(数据包中的多播地址不代表单个接收者)
来转发。路径的选择依靠  RPF(Reverse Path Forwarding  反向路径转发)技术。包括三个过程:Broadcast(广
播)洪泛传递,假定网络上的每个主机都是多播组成员;Prune(修剪)停止向那些没有组成员存在的网络转
发多播信息;Selective  Forwarding(选择性转发)如果有多条转发路  径可用,则依靠单播路由表来帮助选
择最佳路径。
 
逆向路径转发RPF
路由器只转发从可达源的上游 路由器的接口(依靠单播路由表判断)收到的多播数据包。
RPF  检验成功则转发,RPF  检验失败则  Silently Dropped(静悄悄的丢弃)。这项技术主要防止多
次转发多播数据包。在右图中, 路由器从  S0  口收到了一个来自  151.10.3.21  的多播包,可是
检查路由表后发现,  由它到网络  151.10.0.0  网络的数据包应由  S1  口发出,RPF  检验失败。
 
 
TTL Thresholds(TTL  阈值)
组播传送中的  TTL  类似于单播,但是它更灵活,可用于限制多播信息转发的范围。  一个
多播包进入 路由器后,它的   TTL   值首先减   1,在从出口送出去之前,如果出口上所设置的  TTL
阈值非  0, 则要进行  TTL  阈值检验, 所有  TTL  值小于接口阈值的多播包将不会被发送。用接口
命令  ip multicast ttl-threshold ttl    来实现。
 
 
23.1.9  组播路由协议简介
如何构建分布树
PIM基于单播路由表来构建树, 路由器用  Join(加入)、Prune(修剪)和  Graft(嫁接)三种消息通
知上游 路由器是否需要向其转发某一多播组的消息。
DVMRP很像RIP,是一种距离向量型协议,采用Poison-Reverse(毒性反转)、Prune(修剪)和
Graft(嫁接)三种消息通知上游 路由器是否需要向其转发某一多播组的消息。
MOSPF    利用单播  OSPF  协议的  LSP  来传递通告,构建(S,G)转发条目。
CBT    基于原理与  PIM  疏模式相同, 路由器用  Join(加入)、Prune(修剪)和  Graft(嫁接)三种
消息通知上游 路由器是否需要向其转发某一多播组的消息。
DVMRP
DVMRP(Distance Vector Multicast Routing Protocol)主要特点距离向量型协议,建立分布树时
按照到达源的Metric(基于跳数-hop count)来选路。最大支持32跳,需要接收到达某个组播组的数
据包的 路由器向其上游发送毒性反转消息,Metric  为原  Metric+32,收到这一毒性反转消息的上
路由器会将收到该消息的接口加入多播消息转发列表。当下游 路由器不再需要到达某个组播组
的数据包时,它发送  Prune  消息通知上游  路由器停止向其转发到达该组播组的数据包。
TBT(Truncated Broadcast Tree)是  DVMRP  协议形成的多播转发树,基本到达源有最小Metric
原则构建,当多条链路有相同的  Metric  时, 路由器选择  IP  地址最小的上游邻居 路由器。在下
图中,C  同时收到A和B发来的  Metric  相同的路由信息,它选择了B,因为B的IP地址小于A的IP地
址。
 
 
相似的情况也出现在下面的多路访问网络中,B  和  C  都有关于网络  S1  的路由,有最小
Metric的 路由器会被选为  Designated Forwarder, Metric  相同的情况下同样根据最小  IP  地址原则
选定DF。本例中是C 路由器
 
TBT  的优点是保证在有环路的网络中也不会有重复的组播数据包出现,缺点是需要在整个
网络中交换DVMRP  路由信息,而且由于它被设计成与  RIP  相似的距离向量型路由协议,和  RIP
等DV协议一样,存在计数到最大,保持时间和周期更新等问题。跟其它密模式多播协议一样,它
适用于大量的组播接收者离组播源较近的情况。因为它是较早的多播路由协议,所以在   MBONE
之上应用广泛,但扩展性较差,逐渐被淘汰出局。
Multicast OSPF
基于单播  OSPF路由协议,使用一种新的OSPF链路状态数据包,我们称之为Group-
Membership LSA  来通告网络中组成员的存在情况。
根据  OSPF  路由协议的基本原则,GMLSA  只能在OSPF区域内传递,这将导致多播信息不能
跨越  OSPF  区域传递。解决的办法是  MABR(MOSPF Area Border Router)向区域内其它 路由器发送
带有“Wildcard Receiver”标志的  GMLSA,通知内部 路由器它可以到达任何多播组。  所有的多播转
发树都应有指向  MABR  的分支,所有多播组的多播信息都应被转发给  MABR。  MABR  会向
Backbone  区域发送汇总的组成员关系  LSA。通知  Backbone  区域它需要接收发  往哪些多播组的
信息。
在下图中,因为区域  1  中有源  S2  的接收者,所以源  S2  发出的多播信息经骨干区域传入
了区域  1。而源  S1  所发出的多播信息则不需要传入区域  2,只在区域  1  内传递。
 
 
Evaluation to MOSPF:
使用链路状态数据包来传递多播路由信息,保证多播信息传递的正确性。协议相关,只能用
于采用OSPF  路由协议的网络。  也存在可扩展性问题,在大的网络中使用可能存在过多的
路由表条目,并可能由于组成员关系和链路状态的经常性变化而引发频繁的  SPF  计算。不
适用于多播信息源较多的网络。
 
PIM-DM  
协议无关多播密模式(Protocol Independent Multicast Dense-Mode)
PIM  分为两种模式,密模式和疏模式
 
密模式:
它最大的特点当然是它的协议无关性,可以与静态路由及各种动态路由协议很好的共存。 
它使用RPF(Reverse Path Forwarding 反向路径转发)技术构建转发树,密模式的 PIM最开
始采用Flooding的方式向全网传送多播信息,然后再修剪掉不必要的和冗余的流量。这种
Flood&Prune 的行为每 3 分钟进行一次。适用于小型网络和实验性网络。
 
Assert机制
看下面的图,两条路径都将通过 RPF 检验,为了防止多播信息复制,必须加以处理。
 
下图中显示的是由于 Assert 机制引起的另一问题,中间的两台 路由器进行 Assert 比
较的结 果是下面一台 路由器胜出,当它的左侧接口断掉时,最左边的接收者将暂时收不到
来自下面 多播源的信息,直到上面的 Loser 左侧接口的 Prune 超时。
 
Evaluation to PIM-DM
在小型实验性网络中效果很好。  优点是容易配置(只需两条命令)洪泛和修剪的机制简单。 
缺点是洪泛和修剪行为影响较大(3 分钟一次),Assert 机制复杂。
 
PIM-SM
协议无关多播稀疏模式(Protocol Independent Multicast Sparse-Mode)
采用RP(rendezvous  point)作为中继节点,组播源通过到达RP的最短路径向RP发送组播数据,
RP  再通过到达每个接收者的最短路径向接收者转发多播数据。从RP到接收者的转发路径信息与
组播源的位置和数量无关。  适用于企业级大型网络环境,接收者稀疏或密集的情况均适用。最
优路径的选择与网络尺寸  和成员密度无关。
组播接收者需知道RP的存在,通过向RP及途经 路由器发送(*,G)的消息加入组播组。该消息
一跳一跳传至  RP  后,形成了一条从  RP  到接收者的  ST(Shared  Tree)。  组播发送者同样需知道
RP  的存在。组播源将多播数据封装成专用的  PIM SM  注册消息包,  并以单播的形式向RP发送注
册消息,RP收到注册消息后,解封装这个注册包,将多播消  息发往接收者。同时也向通往组播
源的各个 路由器发送(S,G)的消息,构建从组播源到RP  的  SPT(Shortest  Path  Tree+)当  RP检测到
从组播源发出的多播数据包经由  SPT  到达时,(表明  SPT  稳定,沿途各 路由器均已有正确转发条
目)RP  向组播发送“Register    Stop(注册停止)”消息,至此,从组播源  到接收者的转发路径形成。
下图显示全部处理过程节束后的多播转发路径。由组播源到  RP  的源树和  RP  到接收者的共享树
两部分构成。
问题:接收者虽然收到了发自源的组播信息,但是经由 RP 转发的传送路径不是从源到
接收者的最佳路径,接下来介绍这个次佳路径是如何修正的。
 
SPT切换
当 last-hop 路由器(即离接收者最近的 路由器)收到经由(*,G)共享树由 RP 转发来的
组播消息时,它就向 SPT 路径中的上游 路由器发送(S,G)加入消息(延迟由 SPT-Threshold
值决定,这个值缺省等于 0,表示立刻切换成经 SPT 的转发),这个加入过程一跳一跳的进
行直至 first-hop 路由器(即离组播源最近的 路由器),从而形成另一条从源直接到达接收
者的 SPT 转发路径最后,向 RP 发送修剪消息,通知它停止通过共享树向接收者转发特定
源组(S,G)的消息, 在这一步完成之前,接收者可能收到重复组播数据。
另外,如果 RP 在所有属于共享树的接口上(注意:本例中只有一条共享树)均收到了关
于(S,G)的修剪消息,它也会向组播源发送(S,G)修剪消息,取消(S,G)源组向它的不必要
转发。通过这种机制, PIM SM 实现也与 PIM DM 一样的转发路径,因为没有最初的 Flood 过
程, 对无关网络及设备影响较小。
下图是最终形成的从源到接收者的 SPT。
 
 
对 PIM-SM 的评价,对于稀疏和或密集的接收者分布同样有效。 
优点:
流量只会沿必要的分支路径转发,可动态切换到最优路径,与单播路由协议无关。
可与DVMRP互操作。 
缺点:需要配置稳定的RP 路由器
 
CBT:  Core-Based Trees
CBT的基本目标是减少网络中 路由器组播状态,以提供组播的可扩展性。为此,CBT被设计
成稀疏模式(与PIM-SM相似)。CBT使用双向共享树,双向共享树以某个核心 路由器为根,允许组
播信息在两个方向流动。这一点与PIM-SM不同(PIM-SM中共享树是单向的,在RP与组播源之间使
用SPT将组播数据转发到RP),所以CBT不能使用RPF检查,而使用IP包头的目标组地址作检查转发
缓存。这就要求对CBT共享树的维护就需非常小心,以确保不会产生组播路由循环。  
路由器创建的组播状态的数量来看,  CBT比支持SPT的协议效率高,在具有大量组播源和
组的网络中,CBT能把组播状态优化到组的数量级。  
CBT为每个组播组建立一个生成树,所有组播源使用同一棵组播树。 CBT工作过程大体如下:  
1、  首先选择一个核,即网络中组播组的固定中心,来构造一棵CBT;  
2、  主机向这个核发送join命令; 
3、  所有中间 路由器都接收到该命令,并把接收该命令的接口标记为属于这个组的树;  
4、  如果接收到命令的 路由器已是树中一个成员,那么只要再标记一次该接口属于该组;
如果 路由器第一次收到join命令,那么它就向核的方向进一步转发该命令, 路由器
就需要为每个组保留一份状态信息;  
5、  当组播数据到达一个在CBT树上的组播 路由器时, 路由器组播数据到树的核。以保
证数据能够发送到组的所有成员
CBT将组播扩张限制在接收者范围内,即使第一个数据包也无需在全网扩散,但CBT导致核
周围的流量集中,网络性能下降。所以某些版本的CBT支持多个核心以平衡负载。  
目前CBTv3草案已公布。该方案通过使用CBT边界 路由器(BR)更好地处理域间组播的转发。
CBTv3还引入新的状态及单向分支CBT概念。尽管CBT很有代表性,但至今却几乎没有已实现的CBT
网络。