论文部分内容阅读
近年来,随着Internet的迅速普及和爆炸性发展,在Internet上产生了许多新的应用,其中不少是高带宽的多媒体应用,譬如网络视频会议、网络音频/视频广播、股市行情发布、多媒体远程教育、大规模协同计算等,这就带来了带宽的急剧消耗和网络拥挤等问题。为了缓解网络瓶颈,人们提出了IP?组播技术。作为网络中主机之间通信的一种模式, IP组播是通过组播地址寻址, 向组播组成员(通过动态方式加入)发送数据包以到达目的网络或主机的技术。组播技术提供了一种有效的通信、传输手段, 它可以充分利用网络资源,优化网络性能, 使那些用单播或广播不可行的新型增值应用(如视频会议) 成为可能。本文首先介绍了组播方面的基本知识。为了实现组播,需要两种协议的支持,组播路由协议和组管理协议。组播路由协议包括两种:密集模式Dense-Mode(DM)和稀疏模式Sparse-Mode(SM)。密集模式组播路由协议依靠洪泛法(Flooding)把信息传递给每个路由器的所有网络接口,常用的密集模式组播路由协议为DVMRP、MOSPF、PIM-DM。稀疏模式组播路由在网络中构建一些虚拟的数据交换地点作为汇聚点RP,负责管理数据源和接收者之间的通信,常用的稀疏模式组播路由协议为PIM-SM和CBT协议。此外,组播路由还需要一个组管理协议IGMP,这个协议是组播路由的前提。接着详细的介绍了PIM-SM(protocol independent multicast-sparse mode)。因为它具有用户显式加入、流量洪泛控制等特点、加上它的标准比较成熟、又是域间组播路由协议的基础,所以,PIM-SM协议是现在网络中最常用的组播路由协议。通过对PIM-SM协议的详细分析,我们借助Socket提供的原始套接字实现了PIM-SM协议的基本功能。这个程序主要分为六个模块:IP包处理模块Mcast_ip,组播数据包处理模块Mcast_packet,PIM-SM 消息处理模块Mcast_pim,IGMP消息处理模块Mcast_igmp,组播路由表模块MRIB和单播路由表模块RIB。当程序收到IP包时,由Mcast_ip模块根据IP报头的协议号和目的地址触发组播数据转发,PIM-SM消息包的处理或IGMP消息包的处理。对于每一个路由器节点,工作实际就是建造路由表的过程。通过接收和发送报文,构造各组播组的路由信息。从实现的整体来看,一个域内PIM-SM路由器组成了一个网络拓扑,各路由器通过发送各种数据报文,交换各种路由信息,了解网络的组成结构来建造共享树和最短路径树,以及在这样的拓扑结构下,实现共享树和最短路径树的转化。 <WP=67>在协议的实现过程中,我们发现,作为共享树根节点的RP节点在组播转发中发挥着重要的作用,如何选择RP节点是协议实现的关键。但是现有的RP选择机制既没有考虑到网络的特性,也没有考虑到RP节点瘫痪所带来的问题。所以,针对已有的几种RP节点的选取方法,本文提出了一种新的机制——“两级RP”,对RP实行分级管理。这种机制综合了已有的几种方法的优点,考虑到了网络的拓扑结构对组播路由的影响,提出了候选RP的选择策略。一级RP定期探测网络的变化,增强了RP节点的动态性,更好的适应了组播成员频繁加入/退出的情况 。另外,一级RP还是二级RP的冗余路由器,如果二级RP发生故障,一级RP可以接管二极RP的工作,这种机制也可以有效防止由于单RP失效所带来的丢包问题。“两级RP”在具体的实现过程中,需要修改PIM-SM协议,增加一些消息包。通过在实际的网络环境中测试,发现应用“两级RP”的办法,虽然增加了网络和路由器资源的负担,但是通过分析发现,这种方法并不会占用网络和路由器的很多资源,而且可以有效的减少组播数据转发的延时。当使用多RP机制来代替单个RP时,不可避免的问题是如何进行RP切换,选择合适的切换时机可以防止丢包问题的发生。现在,多RP机制已经有了很多的研究,但是具体切换过程,讨论的较少,所以我们提出了两种RP切换机制:定时切换和逐步切换。这两种办法的主要区别是创建新的共享树的时机不同。定时切换由一个定时器来控制,在转换开始,留一定的时间。在这个时间段内,组播数据由旧RP负责转换,新RP则在这段过程中创建到组播组成员的共享树和到组播源的最短路径树,计时器终止,旧RP停止转发组播数据,由新的RP进行转发。逐步切换以收到重复的数据包作为标志,开始新RP和旧RP都转发组播数据,当下游的接收者接收到两个RP转发的数据时,就需要抑制旧的RP在相应的接口上转发组播数据。当旧RP在所有的出口上都收到抑制消息后,将停止转发组播数据,而由新的RP转发组播数据,这样就完成了组成员逐步转移到新的RP,建立了新的共享树。