美文网首页
基于主机的跨网段IP多播技术

基于主机的跨网段IP多播技术

作者: isgiker | 来源:发表于2016-07-31 21:35 被阅读753次

    一、多播技术简介和问题的提出

    多播(Multicasting)也叫做组播或多址广播,是当前网络技术中的一个热门话题,它所提供的一对多和多对多的数据传输技术在很多领域有着越来越广泛的应用,例如多媒体网络教学、视频会议、网络游戏等。

    尽管目前多播技术在局域网中已经得到了很好的应用,但是在Internet上,多播的使用受到一定的限制。跨越不同网段的多播应用牵涉到比较复杂的问题,其中最重要的一点是多播数据的转发取决于路由器,路由器利用IGMP协议以及与其他路由器之间的通信来决定是否向它的下游路由器或与它直接相连的网段转发多播数据包,同时数据的转发还要取决于路由器接口上配置的TTL阈值。而目前的情况是仍然有很多路由器上面的配置并不支持转发多播数据包,这就使得多播数据无法通过该路由器在不同网段之间传输,多播程序也就无法正常的工作。造成这种状况的原因有技术上的(例如多播路由协议还不成熟,还处于不断的改进中),也有其他方面的。

    要从根本上解决这一问题,只有依赖于多播技术的进一步发展以及ISP改变路由器的配置。但是在当前情况下可以采取一些较为简便的替代方案临时的解决这个问题,其中的一种方案就是基于主机的跨网段多播(Host-BasedMulticast Solution),也称为应用程序级的多播。简单的说,就是在主机端的应用程序中计算所有多播成员的位置信息并按照一定的方法构造和优化网络拓扑结构,当发送多播数据时,对于那些无法直接接收多播数据的成员使用单播代替多播来进行发送,以避开路由器的影响。这种方法实际上就是以多播和单播的混和使用来模拟原来纯粹的多播应用

    二、系统的总体设计基本思路

    在整个多播组中的所有节点(成员)可分为三类:一个特殊的成员,称之为中心节点,对应于应用中主要的数据源节点;多个的中继节点,与中心节点之间采用单播进行数据转送,再通过多播转发给其他节点;除了中心节点和中继节点以外的其余节点就是普通节点,它们通过多播从中心节点或中继节点接收数据。

    为了降低控制的复杂程度,系统采用了集中控制方式,也就是只在中心结点上构造和管理整个拓扑结构,在其他成员上并不保存拓扑信息。每个成员在登录时连接到中心节点上,并报告各自的相关信息,供中心节点计算和构造拓扑结构。这种控制方式可以避免在各成员之间传递拓扑信息以及信息的同步的问题,从而降低系统的复杂程度。

    在传输数据时最大限度的利用多播,将所有节点分成多个多播小组,组内的任一个成员发送的多播数据是可以被组里其他成员接收到的。一般情况下,一个多播小组是由处于同一子网下的成员构成的。每个多播小组都使用相同的一个多播地址。由于每个小组处于不同的多播传播域,因此使用相同的地址并不会引起冲突。从这样的每个多播小组中按一定的规则(到中心节点的延时最短)选出一个成员作为中继节点。中继节点使用单播接收从中心节点传送过来的数据,然后再使用多播转发给它所在的小组的每一个成员,也就是说中继节点肩负着转发数据的任务。

    由于在中心结点和各个中继节点之间是使用单播方式进行数据传输,为了提高传输性能,对中心节点和所有中继节点之间的拓扑结构进行优化。

    有关优化的设计思路如下:设置一个延时阈值(该阈值可以根据所传输数据的要求动态改变),当一个中继节点到中心节点的延时小于该阈值时就直接从中心节点接收单播数据。若是一个中继节点到中心节点的延时超过了该阈值,那么它就要检测它到其他标准中继节点(指那些到中心节点的延时没超过阈值的中继节点)的延时,选取其中延时最小的一个中继节点来作为它和中心节点之间的中转站。

    中继节点必须负责数据的转发,因此有比较重要的地位。基于系统的可靠性考虑,中心结点要保持与中继节点的控制通信。中心节点及时的了解中继节点的状态,在一个中继节点崩溃后迅速的作出反应,用另外的节点来代替它,从而确保系统能继续正常工作。

    实际数据传输时,并不是每个中继节点都需要使用多播转发数据,而是根据整个组的拓扑情况来决定。只有当一个中继节点所在的多播小组中还有其他普通节点时,这个中继节点才进行数据转发,这样可以避免不必要的数据发送造成网络性能下降。

    当成员分布较为集中,也就是每个多播组中含有较多成员的情况下,可以比较好的利用多播的优势,这时系统的数据传输效率也就比较好。若是成员分布较为分散,就需要比较多的使用单播传送,这样就会降低系统的数据传输效率。在最坏的情况下,即任何两个节点都不处在同一个多播组中,这时整个系统就退化成完全的单播传送。

    三、系统总体结构

    系统主要分为运行在中心结点和非中心节点(包括中继节点和普通节点)上的两个部分。由于中心节点还负责整个拓扑结构的建立和维护,因此它上面运行的部分较为复杂,而非中心节点上需要进行的处理较少,因此也就相对较为简单。中心节点部分主要可以分为四个模块:数据通信模块,控制通信模块,组成员管理模块和拓扑结构管理模块。由于非中心节点不需要了解和管理拓扑信息,因此非中心节点部分只包括三个模块:管理模块,数据通信模块和控制通信模块。

    来源:http://doc.qkzz.net/article/81e82117-9ee7-42a1-bda1-d8adc28b3a34.htm

    相关文章

      网友评论

          本文标题:基于主机的跨网段IP多播技术

          本文链接:https://www.haomeiwen.com/subject/vwhxsttx.html