Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1757719
  • 博文数量: 413
  • 博客积分: 8399
  • 博客等级: 中将
  • 技术积分: 4325
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-09 10:44
文章分类

全部博文(413)

文章存档

2015年(1)

2014年(18)

2013年(39)

2012年(163)

2011年(192)

分类: LINUX

2012-01-09 21:08:44

十六章——IP多播/组播(3)组播路由与转发

1. 前面描述的IGMP多播编址方法指定了主机怎样和本地路由器交互,以及怎样通过单个网络传送多播数据报,但是没有说明路由器之间怎样交换群组成员信息,或者怎样确保每个数据报的副本能够到达所有群组成员。更重要的是,尽管已经提出了许多协议,但仍没有形成单一的标准来传播多播路由选择信息。实际上,虽然已经做了很多努力,但业界还未就整体计划达成一致,现有的协议在目标和基本方法上存在着差异。 

2. 多播路由选择困难的原因
1)对动态路由选择的需求:在单播路由选择中,只有当拓扑结构改变或设备出故障时才会发生路由改变,而多播路由选择
                         则不同,一个应用程序加入或退出多播群组就会造成多播路由的变化
2)目的地址转发的不足之处:多播路由器的转发,仅仅依靠目的地址是不行。多播转发时要求路由器要检查的不只是
                           目的地址。
3)任意的发送方:多播数据报可以从非多播群组成员的计算机上发起,并且可能转发经过没有任何群组
                 成员的网络。 

3. RPF
最先出现的多播转发的思路是以前描述过的一种广播形式。这种方法称为反向路径转发(Reverse Path Forwarding,简称RPF),这种机制用数据报的源地址来避免数据报反复通过一个环路

为了使用RPF,多播路由器必须有一个常规路由选择表,其中有到每个目的站的最短路径。当数据报到达时,路由器提取出源地址,并在本地路由选择表中进行查找,找到 I,也就是通往源的接口。如果数据报是通过接口I到达的,路由器就给其他接口转发一份副本,否则就丢弃这个副本。
如上图所示:路由器对每一个要转发的网络地址,都有一个路由表项(网络地址,下一跳,端口)。所以我们可以取出一个数据包的源地址,然后在路由列表中查找它的“端口1”:
1)如果找到的“端口1”和该数据包达到时的“端口2”是相同的,则说明这个数据包是正常的,然后
   转发这个数据包;
2)如果“端口1”和“端口2”不相同,则说明这个数据包是不正常的,丢弃这个数据包。 
上图中:数据包达到时的端口是S0,而查找路由列表找到的端口是S1,所以应该讲这个数据包丢弃。

RPF分成了两种:

RPF :(reverse path forwarding用于多播) 反向路径查找 ,就是为了防止网络中大量的多播包重复转发, 

            在中属于重要的一种技术。

URPF:(unicast reverse path forwarding) 反向路径查找,反向路由转发在防止恶意伪造源地址

            以及DDoS攻击方面颇有成效,管理员可以加以采用。


4. TRPF
为了避免传播不需要的多播数据报,引入了RPF的修改版本,称为截尾反向路径转发(Truncated Reverse Path Forwarding,简称TRPF)或截尾反向路径广播(Truncated Reverse Path Broadcasting,简称 TRPB)。

这一方法遵循 RPF 算法,但是通过避免通向没有群组成员的路径进一步对传播进行限制。为了使用 TRPF,多播路由器需要两项信息:常规路由选择表和通过每个网络接口可达的多播群组列表。当多播数据报到达时,路由器首先应用RPF 规则。如果 RPF 指定丢弃该副本,路由器就这样做。然而,如果 RPF 要求通过特定接口传输该数据报,路由器首先会进行额外的检查,以便验证数据报目的地址中指定的一个或多个群组成员通过该接口是可达的。 如果通过该接口没有群组成员可达,路由器就会跳过该接口并继续检查下一个接口。实际上,现在就可以理解截尾的来源了:某路径上不再有群组成员时路由器就会使转发截止

5. 多播树
研究人员使用图论术语来描述从特定源站到多播群组的所有成员的一组路径,他们认为这些路径定义了图论中的树(tree),有时也称为转发树(forwarding tree)或交付树(delivery tree)。每个多播路由器对应于树中的一个节点(node),连接两个路由器的网络则对应于树中的一条(edge)。数据报的源站是树的(root)或根节点(root  node)。最后,从源站出发沿一条路径到达的最后一个路由器称为叶路由器。这种术语表示方法有时也应用于网络,研究人员把连接在叶路由器上的网络称为叶网络。 

多播转发树被定义为一组通过多播路由器的路径, 通过这些路径可以从源站到达多播群组的所有成员。对于某个多播群组,每个可能的数据报源都能确定一个不同的转发树。

6. 反向路径多播(Reverse  Path Multicast,简称 RPM
多播路由选择的一种最早形式是从 TRPF 派生而来的,称为反向路径多播,该方法对 TRPF 进行了扩展,使其更具动态性

开始时,RPM使用 RPF广播方法通过互联网中的所有网络发送每个数据报的副本。这样做可以确保所有群组成员都接收到一个副本。同时,通过 RPM 让多播路由器互相通知关于不能通往群组成员的路径的情况。一旦了解到某路径上没有群组成员,路由器就会停止沿该路径的转发。

RPM 自底向上传播成员信息。信息先从选择加入或退出群组的主机开始。主机使用 IGMP与本地路由器之间传递成员信息,这样,虽然多播路由器不知道远端群组成员的情况,但能知道所有本地成员的情况。因此,连到叶网络上的路由器可以决定是否向叶网络转发。叶路由器除了要采取本地行动之外,还要通知回溯到源站的路径上的下一个路由器。一旦这个路由器了解到某个网络接口之后不存在群组成员,它就会停止通过该网络转发群组的数据报。当一个路由器发现其后不存在群组或员时,就会通知通往根的路径上的下一个路由器。 

用图论的术语来讲,当路由器了解到沿某条路径没有成员并停止转发时,就从转发树中剪除(即去掉)这条路径。实际上,RPM可称为广播并剪除(broadcast and prune)策略,因为路由器在收到允许剪除路径的信息之前,会使用RPF进行广播。对于 RPM算法,研究人员还使用了另一个术语,他们把系统称为数据驱动(data-driven)的,因为路由器不会向其他任何路由器发送群组成员信息,除非有该群组的数据报到达。

7. 多播路由选择协议
IETF 已经调查了不少多播协议,包括距离向量多播路由选择协议(Distance Vector Multicast Routing Protocol, 简称DVMRP)、核心基干树(Core Based Trees,简称CBT)、协议无关多播(Protocol Independent Multicast,简称PIM)以及OSPF多播扩展(Multicast extensions to OSPF,简称MOSPF)。这些协议的形式略有不同。虽然这些协议都已经实现,并且其中的几个协议也有运营商的支持,但还没有哪一种是必备的标准。

1)距离向量多播路由选择协议 
在多播协议中,最早的是距离向量多播路由选择协议(DVMRP),该协议允许多播路由器在相互之间传递群组成员关系和路由选择信息。DVMRP类似于RIP协议,但为多播进行了扩展。实质上,该协议传递的信息既包括当前的多播群组成员关系,也包括路由器之间传送数据报的费用。对于每个可能的(群组,源站)序偶,路由器在物理互连基础上拼接了一个转发树。当路由器收到发往一个IP多播群组的数据报时,通过相应于转发树中各分支的网络链路,发送数据报的副本。DVMRP 由一个称为 mrouted 的 UNIX 程序实现,它使用了特殊的多播核(multicast kernel)。

2)核心基干树
核心基干树CBT,Core Base Tree)避免进行广播,并允许所有源站尽可能地共享同一个转发树。为了避免进行广播,除非某条路径上有一台或多台主机加入到多播群组中,CBT才会沿路径转发多播数据报。因此说,CBT与DVMRP使用的洪泛并剪除(flood and prune)方法是相反的,它不是先转发数据报,直到传播了否定信息才停止转发,而是直到收到肯定信息后才沿该路径转发。这种方法不是数据驱动的,而是使用了需求驱动(demand-driven)形式。 

CBT将静态算法和动态算法结合起来构建多播转发树。为了使该方法具有规模可伸缩性,CBT把互联网划分成区段(region),每个区段的大小由网络管理员确定。在每个区段内,有一个路由器被指定为核心路由器(core router),区段内的其他路由器或者必须通过配置掌握自己所在区段的核心,或者必须使用动态的发现机制(discovery mechanism)来查找这个核心。 

因为 CBT 使用了需求驱动形式,所以它把互联网划分成区段,并为每个区段指定了一个核心路由器,区段中的其他路由器通过给核心发送加入请求,动态地建立转发树。 

3)协议无关多播(Protcol Independence Multicast,简称PIM) 
协议无关多播PIM)由两个独立的协议组成:PIM-密集模式(PIM-Dense Mode,简称PIM-DM)和 PIM-稀疏模式(PIM-Sparse Mode,简称PIM-SM),除了名称和基本报文首部格式之外,这两个协议没有什么类似之处 。

由于没有哪一种协议可独自适用于所有的可能情况。所以实际上,PIM密集模式设计用于局域网环境,在这种环境下,几乎所有网络中都有主机在监听每个多播群组。而PIM稀疏模式设计用于适应广域网环境,在这种环境下,某多播群组的成员只占所有可能网络的很小一个子集。

协议无关(protocol independence),是因为 PIM 仅仅假定有一个包含到达每个目地站的最短路径的传统单播路由选择表。既然 PIM 没有指明应当如何建立这个表,那么可以使用任意的路由选择协议。因此,PLM的操作与路由器采用的单播路由选择协议“无关” 。

为了适应为数众多的监听方,PIM-DM 使用广播并剪除方法,首先使用RPF把每个数据报都转发到所有路由器,直到收到明确的剪除请求时才停止发送。相反,PIM稀疏模式可看成是对CBT基本概念的扩展。稀疏模式指定了一个称为汇聚点(Rendezvous Point,简称RP)的路由器,其功能等价于一个CBT核心路由器

4)OSPF 的多播扩展
类似 PIM 这样的多播路由选择协议使用的是单播路由选择表中的信息,除此之外,研究人员已经在研究这样一个更广范围的问题:“多播路由选择如何从常规路由选择协议收集到的额外信息获益?”

实际上,OSPF 之类的链路状态协议给每个路由器提供了互联网拓扑结构的一个副本。更具体地说,OSPF给路由器提供了它自己的 OSPF区域(area)的拓扑结构。提供了这样的信息之后,多播协议就可以利用该信息计算转发树了。这一思路体现在 OSPF多播扩展协议MOSPF)中,该协议使用 OSPF 的拓扑数据库为每个源站形成一个转发树。

MOSPF具有需求驱动形式的优点,也就是说,特定群组的通信量直到需要时(例如,由于主机加入或退出群组)才进行传播。需求驱动方法的缺点在于传播路由选择信息的费用:一个区域中的所有路由器必须维护关于每个群组的成员信息。而且,这些信息必须是同步的,以确保每个路由器的数据库完全一致。最后的结果是,MOSPF 发送的通信量较少,但比数据驱动的协议发送了更多的路由选择信息。 


阅读(4662) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~