CN100527713C - Ip网络中基于虚拟分发网的多播传送方法 - Google Patents
Ip网络中基于虚拟分发网的多播传送方法 Download PDFInfo
- Publication number
- CN100527713C CN100527713C CNB2007100993654A CN200710099365A CN100527713C CN 100527713 C CN100527713 C CN 100527713C CN B2007100993654 A CNB2007100993654 A CN B2007100993654A CN 200710099365 A CN200710099365 A CN 200710099365A CN 100527713 C CN100527713 C CN 100527713C
- Authority
- CN
- China
- Prior art keywords
- packet
- empty
- neighbours
- address
- distribution networks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及IP网络中的多播传送方法,属于计算机通信技术领域。该方法包括,首先在网络中为每个多播会话建立一个虚拟分发网,该虚拟分发网由参与多播会话的用户主机及选定的节点通过虚链路连接而成,并具有唯一的IP地址标识;在虚拟分发网中,发送主机发送业务数据时,将接收主机的IP地址设置为虚拟分发网的IP地址标识;虚拟分发网上的每个节点对IP数据包进行分发,直到IP数据包被传送到虚拟分发网中的所有接收主机。本发明可支持网络层多播的逐步部署,更好地适应网络结构的动态变化,支持多播数据包的双向传送,保证多源多播时的性能并提供了一种简单有效的多播传送控制方法。
Description
技术领域
本发明属于计算机通信技术领域,特别涉及IP网络中的多播(Multicast)传送方法。
背景技术
IP网络是采用IP协议(Internet Protocol)进行通信的计算机网络。IP协议可以提供三种主机之间的通信方式:单播,广播和多播。其中,单播是两个主机之间点到点的通信方式。广播是指主机一次发送的数据包可以到达一个广播域中的所有主机。多播是指主机一次发送的数据包可以到达网络中的一组主机,与广播不同的是,多播不会将数据包传送到组外的主机。
IP网络中主要包括两种节点:主机(Host)节点和路由器(Router)节点。主机节点位于网络的边缘,不承担数据包转发的功能,如个人工作站、服务器等;路由器节点位于网络的核心,负责将数据包在各相邻节点(主机或路由器)之间转发。IP网络中的各节点之间通过通信链路连接起来。通信链路可分成两种:一种是连接两个节点的点到点链路,比如连接两个路由器的一条光纤链路;另一种是连接多个节点的广播链路或链路层网络,比如局域网链路。在IP网络中,连接到同一条链路(无论是点到点链路还是广播链路或链路层网络)的所有节点形成一个子网(Subnet),而节点则是通过一定的网络接口(如网卡)与子网相连。
目前,IP网络中提供的主要业务,如信息检索,电子邮件,即时通信等,都是建立数据包的单播传送技术之上。而许多新兴的业务,如Internet电视(即IPTV)、大型网络会议、大型分布式仿真等,涉及到大量计算机的同时交互,如果仍然采用单播,将浪费大量网络带宽资源,并且性能难以保证。而多播提供了一种有效的点到多点传送机制,是这些业务顺利开展的关键。
IP多播是最早提出的一种实现IP网络中多播的方案。在IP多播中,本发明将多播业务正常运行的一次过程称为一个多播会话,比如一次视频会议。所有参与多播会话的主机被分为两种:发送主机(源节点)和接收主机。其中,所有接收主机构成了一个主机组。可以将主机组看成是一个虚拟的节点,并给每个主机组分配一个全球唯一的IP地址,即D类多播地址。对于发送主机来说,只需要向一个主机组发送数据包,即将主机组的地址作为发送数据包的目的地址;网络将负责将该数据包传送到所有接收主机。上述从业务运行角度提出的多播模型被称为主机组模型。
为了支持上述业务模型,网络中需要有一定的多播传送方法负责将多播数据包从发送主机送往所有接收主机。在IP多播中,这一方法可以分为两个步骤:
首先为每个主机组构造一棵由多播路由器组成的分发树。该分发树可以到达所有与接收主机相邻的多播路由器,分发树的标识即为主机组的地址。为了知道网络中哪些多播路由器连接着同一个主机组的主机,每个主机需要采用IGMP协议将自己所属的主机组信息通告给相邻的多播路由器;然后,多播路由器会运行一定的多播路由协议,来建立一棵分发树。目前,这种多播路由协议已经包括很多种,比如DVMRP、MOSPF、CBT、PIM-SM、PIM-DM、MSDP、M-BGP等,目前使用得最多的是PIM-SM协议。
在建立了分发树之后,多播数据包就可以沿分发树进行转发,这种多播数据包的转发方式被称为逆向路径转发(RPF-Reverse Path Forwarding)。在分发树经过的每个多播路由器上,都设置一个多播转发表,其中每个表项包含了分发树标识(即主机组的多播地址),数据包必须的输入端口(RPF端口)和所有输出端口。多播数据包传送过程如下:源节点先将多播数据包直接递交给分发树的根节点。当每个多播路由器接收到一个多播数据包时,该路由器根据数据包的目的地址查找多播转发表,检查数据包的输入端口是否是RPF端口:如果是的话,则将该数据包复制到每个输出端口;否则,丢弃数据包。这样,数据包将由分发树的根节点传送到所有叶子节点,并进一步转发给相应的接收主机。
由于采用路由器来建立分发树,可以为一个多播会话建立一棵从源节点到所有接收节点的最短路径树,这样可以实现最佳的多播性能,同时,由于采用硬件来进行多播数据包的复制和转发,因此,IP多播可以实现很高的效率和可靠性。但是,IP多播并没有得到运营商大规模的部署,目前也几乎没有任何基于IP多播的业务得到用户的广泛使用。出现这种现状的原因在于IP多播仍存在许多问题,这些问题一方面来自于开放式的业务模型,另一方面也来源于其多播数据包的传送机制。这里,主要关注后一方面,即由多播数据包的传送机制带来的问题,主要包括:
第一,IP多播不具备渐进的部署能力。分发树上的每个节点都必须支持多播功能,即能够识别数据包的多播目的地址,并根据多播转发表进行传送。如果其中有一个节点不支持多播功能,那么分发树就无法建立。而Internet网络并不是一个统一管理的网络,每个运营商不可能同时升级自己的网络,也不可能一下子抛弃所有已有设备,这使得在所有设备都支持多播功能后才能开展全网多播业务成为一种不实际的想法。
第二,对网络动态变化的适应能力差。多播数据包是沿着分发树进行转发的,一旦分发树上的某个节点或链路出现故障,处在传送过程中的多播数据包将被丢弃。这主要是因为,如果将多播数据包传送给某个不在分发树上的路由器节点,那么该路由器节点查找不到与该数据包相对应的多播转发表项,只能将该数据包丢弃。而在单播中,由于每个路由器中都保存了到达其它所有节点的路由表信息,因此,当一个节点或链路出现故障时,数据包可以绕开出现故障的节点或链路继续传送。
第三,不支持双向传输。基于分发树的逆向路径转发只能支持多播数据包从分发树的根节点向所有叶子节点的单向传送,而无法支持数据包从叶子节点沿分发树传送到根节点或其它叶子节点。这是因为,路由器节点是根据多播转发表项中的RPF端口来判断是否转发多播数据包;对于来自其它端口的多播数据包,将直接丢弃。
第四,难以保证多源多播时的性能。目前,多播分发树是从根节点到所有叶子节点的最短路径树,对于单源多播时,可以将根节点选择为离源节点最近的路由器节点,保证从源节点可以以最短的路径到达所有接收节点。但是,对于多个源节点的业务,比如视频会议时,为了保证性能,只能建立为每一个源节点建立一棵分发树,但是这种做法将大大增加网络中需要维护的分发树状态,当用户发生变化时,所有分发树都要进行相应的更新,这也增加了多播业务管理的难度和复杂性。
第五,缺乏多播数据包传送的控制机制。在IP多播中,由于任何主机都可以声明加入任何主机组,任何主机也可以向一个主机组发送数据,这导致无法控制一个多播会话的发送主机、接收主机和发送范围。
显然,上述问题,尤其是第一个问题,极大地阻碍了IP多播的部署和应用。
近几年来,另一种新的多播方案,应用层多播,得到了更多的关注和研究。应用层多播采用的是一种对等通信(P2P)模型,所有参与多播的用户主机通过自组织的方式构造一个叠加于Internet上的虚拟网络,又称之为覆盖网络(Overlay Network)。数据包在该覆盖网络上传送,每个用户主机在发送和接收数据的同时,也承担将数据复制和转发给其它用户的功能。
相对于工作在网络层的IP多播说,应用层多播将全部功能放在主机上实现,不需要升级现有的网络,因此具有快速部署,灵活性高的特点。自2000年以来,应用层多播的研究一直是一个热点,诞生了大量的应用层多播协议,国内在这方面的研究也比较活跃。但是,应用层多播依赖用户主机进行数据包转发,这带来了以下问题:
首先,各用户主机性能有限,接入带宽有限,在线时间不稳定,这意味着多播数据包不可能实现类似于路由器硬件转发的高效可靠。其次,用户主机并不能了解底层的网络拓扑,因此,不可能形成最优的转发路径,这将占用更多网络资源,特别是宝贵的接入网带宽资源,也无法保证业务的实时性和同步性能,不利于开展交互式或直播式业务。因此,应用层组播无法提供一种电信级的业务支持,只能作为未来网络层多播的一种补充。
为了保证未来IP网络能够高效可靠地支持各种新兴业务,仍然需要研究和提出新的网络层多播传送方法,以解决现有IP多播面临的各种问题。
发明内容
本发明的目的是为克服已有技术的不足之处,提出了一种新的IP网络中的多播传送方法。该方法可支持网络层多播的逐步部署,更好地适应网络结构的动态变化,支持多播数据包的双向传送,保证多源多播时的性能并使多播传送控制更加简单。
本发明提出的IP网络中的多播传送方法,其特征在于,该方法包括以下步骤:
1)首先在网络中为每个多播会话建立一个虚拟分发网;所述的虚拟分发网由IP网络中的多个节点通过虚链路连接而成,其中,该节点包括参与多播会话的所有用户主机和其他选定的节点;由虚链路连接的两个节点互称为对方的虚邻居;该虚拟分发网具有一个唯一的IP地址标识,用来区分一个IP网络中的多个虚拟分发网;虚拟分发网上的每个节点建立并维护一个分发表,其中每个表项至少包括:虚拟分发网的标识、虚邻居列表、控制数据包在虚邻居之间的转发权限标志集合;
2)在虚拟分发网中,发送主机发送业务数据时,将接收主机的IP地址设置为虚拟分发网的IP地址标识;虚拟分发网上的每个节点对IP数据包进行分发,直到IP数据包被传送到虚拟分发网中的所有接收主机。
与现有的多播传送方法相比较,本发明的有益效果包括:
支持网络层多播的逐步部署。在新的多播传送方法中,数据包在IP网络中的多播传送过程被分解为虚拟分发网上各节点之间的单播传送过程。由于在这些传送过程中,多播数据包的目的地址使用的是各节点的单播IP地址,因此,这些多播数据包可以绕开不具备多播功能的局部网络或路由器节点。因此,网络中只需要部署部分支持多播传送的路由器节点,即可提供对多播会话的支持。
更好地适应网络结构的动态变化。在多播数据包经过的所有沿途路由器中,只有在虚拟分发网上的路由器需要建立多播状态,而其它路由器节点上不必保留转发状态。这样带来的好处是,即使数据包沿途经过的某个路由器或某段链路出现故障,只要该路由器不在虚拟分发网上或存在可替代的链路,数据包都可以绕开出现故障的节点和路径继续在虚拟分发网上传送。另一方面,虚拟分发网可以采用网状拓扑结构取代原有分发树的树状结构,这意味着即使虚拟分发网上的某个节点出现故障,也可以在不重新构造拓扑的情况下通过调整虚拟分发网上节点上的分发表来支持多播数据包的正常传送。
支持多播数据包的双向传送。对于多播会话中的任意一个用户主机来说,它既可以通过虚拟分发网将数据包发送给其它用户主机,也可以从虚拟分发网上接收其它用户主机发送的数据包。因此,这种传送是双向的。
可以保证多源多播时的性能。通过合理的构造虚拟分发网,可以实现从任意一个源节点发出的数据包都能够经过最短的路径到达其它接收主机。
提供了一种简单有效的多播传送控制方法。在虚拟分发网上,每个节点都提供了两种开关来控制多播数据包的传送,一是虚邻居列表中的发送权限标志,另一个是分发控制矩阵;其中,前者可以控制数据包是否可以发送给相应的虚邻居;后者可以控制是否可以将来自某个虚邻居的数据包分发给其它虚邻居。通过对路由器上这两种标志的设置,可以很方便地控制哪些用户主机可以向虚拟分发网发送数据包,哪些用户可以接收其它用户发出的多播数据包。
附图说明
图1为本发明方法的发送主机对IP数据包进行分发的处理流程框图。
图2为本发明方法的路由器对IP数据包进行分发的处理流程框图。
图3为本发明方法的接收主机接收IP数据包并对其分发的处理流程框图。
图4为本发明方法的一种实施方式的示例性网络示意图。
图5为本发明方法的多播会话S建立的虚拟分发网示意图。
图6为本发明方法的虚拟分发网上各节点的分发表示意图。
图7为本发明方法的数据包在虚拟分发网上的分发过程(发送主机为H1)示意图。
图8为本发明方法的数据包在虚拟分发网上的分发过程(发送主机为H2)示意图。
图9为本发明方法的数据包在虚拟分发网上的分发过程(发送主机为H4)示意图。
具体实施方式
本发明的方法结合附图及实施例详细说明如下:
本发明提出的IP网络中的多播传送方法,包括以下步骤:
1)首先在网络中为每个多播会话建立一个虚拟分发网;所述的虚拟分发网由IP网络中的多个节点通过虚链路连接而成,其中,该节点包括参与多播会话的所有用户主机和选定的路由器;由虚链路连接的两个节点互称为对方的虚邻居;该虚拟分发网具有一个唯一的IP地址标识,用来区分一个IP网络中的多个虚拟分发网;虚拟分发网上的每个节点建立并维护一个分发表,其中每个表项至少包括:虚拟分发网的标识、虚邻居列表、控制数据包在虚邻居之间的转发权限标志集合;
2)在虚拟分发网中,发送主机发送业务数据时,将接收主机的IP地址设置为虚拟分发网的IP地址标识;虚拟分发网上的每个节点对IP数据包进行分发,直到IP数据包被传送到虚拟分发网中的所有接收主机。
所述的虚邻居列表包括该节点的所有虚邻居,其中每一个表项对应着该节点的一个虚邻居,并至少包括虚邻居的以下属性:虚邻居的序号、虚邻居的IP地址标识、虚邻居的发送权限标志。
所述的转发权限标志集合为一个M行N列的二维分发控制矩阵D=[dij]MxN,其中N为虚拟分发网中该节点的虚邻居的数目,M为可以转发数据包给该节点的虚邻居的数目,M≤N;矩阵D的每个行向量对应着该节点的一个虚邻居,设第i个行向量[di1,di2,di3,…diN]对应着该节点的虚邻居A,其中,元素dij为一个转发权限标志,表示节点是否可以将从虚邻居A收到的IP数据包转发给序号为j的虚邻居。
所述虚拟分发网上节点的选定及各节点上分发表的配置由网络管理员手工完成,或根据协议完成;该配置的原则是使生成的虚拟分发网保证多播数据包的最佳传送性能并占用尽可能少的路由器数目及链路带宽。
所述步骤2)中各节点对IP数据包进行分发的方法,包括以下步骤:
21)发送主机将IP数据包分发给其在虚拟分发网上的虚邻居;
22)若虚拟分发网上接收到该IP数据包的节点为路由器,则该路由器将IP数据包继续向该路由器的其他虚邻居分发;
23)若虚拟分发网上接收到该IP数据包的节点为接收主机,则该接收主机接收该数据包并同时将IP数据包向该接收主机的其他虚邻居分发;
24)重复步骤22)23)直到所有接收主机都接收到该IP数据包。
步骤21)中的发送主机对IP数据包进行分发的方法,如图1所示,包括以下步骤:
211)将发送的业务数据封装成一个或多个IP数据包,该IP数据包的源地址为发送主机的IP地址,目的地址为接收主机的IP地址;
212)根据发送IP数据包的目的地址查找分发表;如果在分发表中存在一个表项,其虚拟分发网的标识与发送数据包的目的IP地址相同,该数据包为多播数据包,则从该表项中提取相应的虚邻居列表,转步骤213);否则,该数据包为单播数据包,直接将该数据包送往相应的网络接口;
213)检查虚邻居列表中每个虚邻居的发送权限标志,如果该标志为许可,则将发送的多播数据包复制一份给该虚邻居,并修改复制数据包的IP数据包包头:将其目的地址替换为该虚邻居的IP地址标识;同时将虚拟分发网的IP地址标识保留到IP数据包包头的其他位置;如果该虚邻居的发送权限标志为禁止,则检查下一个虚邻居;
214)将步骤213)中产生的复制数据包送往相应的网络接口。
步骤22)中虚拟分发网上的路由器对IP数据包进行分发的方法,如图2所示,包括以下步骤:
221)检查接收到的数据包的目的IP地址,如果该数据包的目的IP地址为当前路由器的IP地址标识,转步骤222);否则,按单播数据包对其进行处理和转发(即根据其目的IP地址查找路由表,将数据包送往相应的输出网络接口);
222)检查接收到的数据包的IP包头中是否存在虚拟分发网标识,如果存在,则转步骤223);否则,按单播数据包对其进行处理和转发;
223)根据接收到的数据包的虚拟分发网标识来查找分发表,如果在分发表中存在一个匹配的表项,则该接收数据包为多播数据包,从该表项中提取相应的虚邻居列表以及分发控制矩阵并转步骤224);否则,丢弃该数据包;
224)确定接收到的数据包的来源虚邻居:将接收到的数据包的源IP地址与虚邻居列表中的虚邻居的IP地址标识进行比较,确定该数据包来自哪一个虚邻居及其序号;如果没有任何一个虚邻居的IP地址标识与接收数据包的源IP地址相同,则丢弃该数据包;
225)确定接收到的数据包的目的虚邻居:同时符合以下条件的虚邻居为该数据包的目的虚邻居:该虚邻居不是该数据包的来源虚邻居;该虚邻居的发送权限标志为许可;分发控制矩阵中从来源虚邻居到该虚邻居的转发权限标志为许可;
226)将接收到的数据包向每一个目的虚邻居复制一份,并修改复制数据包的IP包头:将其源地址替换为当前路由器的IP地址标识,将其目的地址替换为目的虚邻居的IP地址标识;
227)对步骤226)中产生的复制数据包按单播数据包对其进行处理和转发。
步骤23)中接收主机接收IP数据包并对其分发的方法,如图3所示,包括以下步骤:
231)检查接收到的数据包的目的IP地址,如果该数据包的目的IP地址为当前接收主机的IP地址标识,则转步骤232);否则,丢弃将该数据包;
232)检查接收到的数据包的IP包头中是否存在虚拟分发网标识,如果存在,则转步骤233);否则,对该IP数据包逐层解封装,直到恢复出业务数据;
233)根据接收到的数据包的虚拟分发网标识来查找分发表,如果在分发表中存在一个匹配的表项,则该接收数据包为多播数据包,从该表项中提取相应的虚邻居列表以及分发控制矩阵;否则,丢弃该数据包;
234)确定接收到的数据包的来源虚邻居:将该数据包的源IP地址与虚邻居列表中的虚邻居的IP地址标识进行比较,确定该数据包来自哪一个虚邻居及其序号;如果没有任何一个虚邻居的IP地址标识与接收数据包的源IP地址相同,则丢弃该数据包;
235)确定接收数据包的目的虚邻居:同时符合以下条件的虚邻居为该数据包的目的虚邻居:该虚邻居不是该数据包的来源虚邻居;该虚邻居的发送权限标志为许可;分发控制矩阵中从来源虚邻居到该虚邻居的转发权限标志为许可;
236)将接收数据包向每一个目的虚邻居复制一份,并修改复制数据包的IP包头:将其源地址替换为当前主机的IP地址标识,将其目的地址替换为目的虚邻居的IP地址标识,并将该复制数据包送往相应的网络接口;
237)修改接收数据包的IP包头:将IP头部中保存的虚拟分发网的IP地址标识去掉,并将数据包的源地址替换为虚拟分发网的IP地址标识;将修改后的数据包逐层解封装,直到恢复出业务数据。
本发明方法的一种实施例的网络结构如图4所示。该网络由七台主机(H1~H7)和七台路由器(R1~R7)组成。在该网络中,假定四台主机(主机H1,主机H2,主机H4,主机H5)之间开展一次视频会议多播会话S。以下内容描述了在这个网络中实施本发明方法的过程。这些描述只是示意性的说明本发明,而不应被视作对本发明内容的限制。
本实施例的网络是采用IP协议的网络,目前,IP协议有两个版本,IPv4和IPv6,该多播传送方法可同时适用于IPv4网络或IPv6网络。本实施例中的网络采用IPv4协议加以说明。
本实施例的方法包括以下步骤:
1)为多播会话S建立一个虚拟分发网VDN_S,如图5所示。该虚拟分发网VDN_S中的节点包括参与多播会话S的四个主机(主机H1,主机H2,主机H4,主机H5)和选定的三个路由器(路由器R1,路由器R2,路由器R7)。其中,选定各节点的单播地址作为其在虚拟分发网上的标识,每个节点对应的单播IP地址标识分别为:主机H1(166.111.64.4),路由器R1(166.111.64.1),路由器R2(166.111.8.1),主机H2(166.111.8.8),路由器R7(166.111.30.1),主机H4(166.111.16.5),主机H5(166.111.30.6)。
虚拟分发网上的节点之间通过虚链路连接起来(如图中的虚线)。通过一条虚链路连接的两个节点互称为对方的虚邻居,例如,在虚拟分发网VDN_S上,路由器R1有三个虚邻居:主机H1,路由器R2和路由器R7;路由器R2有三个虚邻居:路由器R1,主机H2,路由器R7;路由器R7有四个虚邻居:路由器R1,路由器R2,主机H4,主机H5;每个主机都只有一个虚邻居,主机H1的虚邻居是R1,主机H2的虚邻居是R2,主机H4和主机H5的虚邻居都是R7。
虚拟分发网VDN_S具有唯一的IP地址标识,该标识可以用来区分在该示例性网络中建立的多个虚拟分发网。在现有的IP协议中,参与多播会话S的所有主机组成了一个多播组Group_S,该多播组具有唯一的IP地址,因此,可以直接采用多播组Group_S的IP地址来标识虚拟分发网VDN_S。多播组的IP地址可以是一个多播地址,也可以是一个单播地址(参见专利申请“IP网络中采用单播地址来标识多播组的方法”,申请号:200610089636.3)。在本实施例中,假定给多播组Group_S分配了一个单播地址166.111.64.2,并用该地址来标识相应的虚拟分发网VDN_S。
虚拟分发网上的每个节点都需要建立并维护一个分发表,图6给出了各个节点的分发表,图中,各子图a、b、c、d、e、f、g、分别为主机H1、主机H2、主机H4、主机H5、路由器R1、路由器R2、路由器R7的分发表。分发表的每个表项都对应着一个虚拟分发网,并包括三项内容:虚拟分发网的标识、虚邻居列表、分发控制矩阵。这里假定当前网络中只存在一个虚拟分发网VDN_S,因此每个分发表中只包含一个表项。
下面,以主机H1和路由器R1为例来说明分发表的含义:
对于主机H1来说,虚邻居列表只包含一个虚邻居166.111.64.1,即路由器R1;从主机H1发送给虚邻居R1的发送权限为“√”,含义是许可(注:在本实施例中,所有的权限标志只有两个值,许可和禁止,分别用符号“√”和“X”来表示),即数据包可以由主机H1发送给虚邻居R1。由于不存在多个虚邻居,也就不需要控制数据包从一个虚邻居转发到另一个虚邻居,因此,分发控制矩阵为空。
对于路由器R1来说,虚邻居列表中包含了三个虚邻居,序号0对应的虚邻居为166.111.64.4,即主机H1;序号1对应的虚邻居为166.111.30.1,即路由器R7;序号2对应的虚邻居为166.111.8.1,即路由器R2。所有这些虚邻居的发送权限均为许可(“√”)。分发控制矩阵有3行3列,由3个行向量(分发控制向量)组成。每个行向量都对应着虚邻居列表中的一个虚邻居,例如第一行对应着序号为0的虚邻居(主机H1),由三个转发权限标志组成,其值为(X,√,√),表示从主机H1接收的数据包不可以回送给序号为0的虚邻居H1,但可以分发给序号为1的虚邻居R7以及序号为2的虚邻居R2。第二行对应着序号为1的虚邻居(路由器R7),由三个转发权限标志组成,其值为(√,X,X),表示从路由器R7接收的数据包可以转发给序号为0的虚邻居H1,但不可分发给序号为1的虚邻居(即路由器R7)和序号为2的虚邻居R2。
在虚拟分发网VDN_S的建立过程中,可以由网络管理员来选择节点并设置各节点上的分发表,也可以由一个协议来实现上述工作。路由器节点的选择要考虑到数据包通过该虚拟分发网进行分发时能够获得较好的传送性能,并且占用尽可能少的网络带宽及路由器状态。一个可以产生上述虚拟分发网的算法是,首先产生一棵连接所有参与多播会话的主机的生成树,然后,将生成树上所有分叉路由器都作为选定的路由器,在两个相距最近的分叉路由器之间、主机和其最近的分叉路由器之间都建立虚链路,这样就可以得到一个虚拟分发网,最后再根据数据包在该虚拟分发网上的传送过程来设定各节点上的分发控制矩阵。
2)在为多播会话S建立了虚拟分发网VDN_S后,发送主机即可通过该虚拟分发网向所有接收主机发送业务数据。假定多播会话中的发送主机为H1,接收主机为H2,H4,H5,则发送主机H1只需要向虚拟分发网发送一份业务数据,即将接收主机的IP地址设置为虚拟分发网的IP地址标识;虚拟分发网上的各节点(包括H1)将对该IP数据包进行分发,直到该IP数据包传送到所有接收主机,这一分发过程如图7的箭头所示。这一分发过程又可以分为以下步骤:
21)发送主机H1将业务数据产生的IP数据包分发给虚邻居。
详细处理过程如下:
211)将发送的业务数据封装成一个或多个IP数据包。对于多播业务数据,产生的这些数据包的源地址为H1的地址,即166.111.64.4,目的地址为虚拟分发网的IP地址标识,即166.111.64.2。
212)根据待发送IP数据包的目的地址查找分发表。对于目的地址为166.111.64.2的数据包来说,可以在分发表找到一个相应的表项,其VDN标识为166.111.64.2,这意味着该数据包为一多播数据包,则提取相应的表项,转步骤213);对于目的地址为其他地址的数据包来说,在分发表中找不到相应的表项,因此,这些数据包将被看作单播数据包,直接送往发送主机相应的网络接口。
213)在对应的表项当中,虚邻居列表中只存在一个虚邻居,即路由器R1,其发送权限为许可“√”,因此,将发送的数据包向该路由器R1复制一份,并修改复制数据包的IP数据包包头:其目的地址替换为166.111.64.1(路由器R1),源地址保持为166.111.64.64(主机H1),并将虚拟分发网的IP地址标识(166.111.64.2)保存到IP头部的其他位置,作为一个IP选项(IP Option)添加到现有IP头部的后面。
214)将修改后的复制数据包送往相应的网络接口。由于发送主机H1只有一个网络接口,并且与路由器R1相连,因此,上述数据包将传送到路由器R1。
22)路由器R1收到H1发送的IP数据包,并将其分发给自己的其他虚邻居。
详细处理过程如下:
221)路由器R1检查接收到的IP数据包的目的地址,对于目的地址为166.111.64.1(路由器R1地址)的数据包,转步骤222);对于目的地址为其他地址的IP数据包,则按单播数据包进行处理和转发(即根据该目的地址查找路由表,将数据包送往路由器的相应的输出网络接口)。
222)检查接收到的IP数据包的包头中是否存在虚拟分发网标识。由于在发送主机上将虚拟分发网的标识保存在IP头部的选项当中,可以从相应的IP选项中提取虚拟分发网标识,166.111.64.2。
223)根据找到的虚拟分发网标识查找分发表(如图3中所示),存在一个表项,其VDN标识恰好是166.111.64.2,从该表项中提取虚邻居列表{166.111.64.64,166.111.30.1,166.111.8.1}以及分发控制矩阵。
224)确定接收到的IP数据包的来源虚邻居。从主机H1发送来的IP数据包的源地址为166.111.64.64,该源地址对应着虚邻居列表中序号为0的虚邻居(主机H1)。
225)确定接收到的IP数据包的目的虚邻居。虚邻居列表中还存在另外两个虚邻居(序号为1和序号为2),其发送权限标志均为许可,并且,从分发矩阵中找到来源虚邻居对应的分发控制向量,其值为(X,√,√),从中可以知道从序号为0的虚邻居(主机H1)向序号为1的虚邻居(路由器R7)的转发权限标志为许可“√”,从序号为0的虚邻居(主机H1)向序号为2的虚邻居(路由器R2)的转发权限标志为许可“√”;因此,序号为1和序号为2的虚邻居均为该IP数据包的目的虚邻居。
226)将接收到的IP数据包向每个目的虚邻居复制一份,并修改复制数据包的IP包头,这样,产生两份数据包,一份是发往序号为1的虚邻居:其源地址更改为当前节点(路由器R1)的地址166.111.64.1,目的地址为166.111.30.1(路由器R7);另一份发往序号为2的虚邻居:其源地址更改为当前节点的地址166.111.64.1,目的地址为路由器R2的地址166.111.8.1。
227)对上述修改后的复制数据包进行单播转发。根据复制数据包的目的地址,目的地址为166.111.8.1(路由器R2)的数据包的下一跳即为路由器R2,而目的地址为166.111.30.1(路由器R7)的数据包的下一跳应该为路由器R4。
对于其他的接收到该IP数据包的路由器来说,将采用与路由器R1类似的处理过程,简要叙述如下:
路由器R2上收到R1发送的IP数据包后,提取虚拟分发网标识(166.111.64.2),查询其分发表,找到对应表项,并从虚邻居列表中确定该数据包的来源虚邻居为序号为1的虚邻居,然后从分发控制矩阵中提取该来源虚邻居对应的分发控制向量,其值为(√,X,X),确定该IP数据包的目的虚邻居只包括序号为0的虚邻居,其IP地址为166.111.8.8(即主机H2)。路由器R2将接收到的IP数据包向序号为0的虚邻居复制一份,并修改复制数据包的IP头部:目的地址改为166.111.8.8(主机H2),源地址改为166.111.8.1(路由器R2)。最后,对该复制数据包进行单播转发,根据其目的地址,将数据包传送给接收主机H2。
路由器R4上收到R1发送的IP数据包后,由于其目的地址166.111.30.1并非自身的地址,因此,对该IP数据包进行单播转发,将其转发给下一跳:路由器R7。
路由器R7上收到R4发送的IP数据包后,提取虚拟分发网标识(166.111.64.2),查询其分发表,找到对应表项,并从虚邻居列表中确定该数据包的来源虚邻居(序号为0),然后从分发控制矩阵中提取来源虚邻居对应的分发控制向量,其值为(X,√,√,X),确定该IP数据包的目的虚邻居包括两个:序号为1的虚邻居(IP地址为166.111.16.5,即主机H4)和序号为2的虚邻居(IP地址为166.111.30.6,即主机H5)。路由器R7将接收到的IP数据包复制两份,并修改复制数据包的IP头部:其中一份的目的地址改为166.111.16.5(主机H4),源地址改为166.111.30.1(路由器R7);另一份的目的地址改为166.111.30.6(主机H5),源地址改为166.111.30.1(路由器R7)。最后,对复制数据包进行单播转发,根据其目的地址,将数据包分别发送给接收主机H4和接收主机H5。
23)接收主机H2上对IP数据包的接收处理过程
231)检查接收到的IP数据包的目的地址,如果该地址不为接收主机H2的IP地址,则将该数据包丢弃。
232)当确定接收到的IP数据包的目的地址为166.111.8.8时,检查该IP数据包的包头中是否存在虚拟分发网标识,由于在发送主机上将虚拟分发网的标识保存在IP头部的选项当中,可以从相应的IP选项中提取虚拟分发网标识,166.111.64.2。
233)根据提取的虚拟分发网标识来查找分发表(图3),可以找到对应的表项,表明该IP数据包为多播数据包,从该表项中提取相应的虚邻居列表和分发控制矩阵。
224)确定接收到的IP数据包的来源虚邻居。从路由器R2发送来的IP数据包的源地址为166.111.64.64,该源地址正好对应着虚邻居列表中序号为0的虚邻居;
225)~236)由于分发控制矩阵为空。不需要对该IP数据包进行分发处理。
237)修改接收到的IP数据包的包头:将IP包头中保存虚拟分发网标识的IP选项去掉,并将IP数据包的源地址改为虚拟分发网的标识,166.111.64.2,目的地址保持不变为166.111.8.8。将修改后的数据包逐层解封装,直到恢复出业务数据。
这里,由于接收主机H2上只包括一个虚邻居,因此,不涉及到对接收到的IP数据包进行分发的过程。但在有些情况下,比如网络中只有部分路由器支持多播功能时,可以构造一种虚拟分发网,其中的部分主机可以承担数据包的转发功能,那么这些主机将会有多个虚邻居,也就具有类似于路由器的转发处理过程。
对于其他的接收主机(如主机H4和主机H5),IP数据包的接收处理过程与主机H2类似。
在上述数据包的分发过程中,数据包每经过VDN上的一个路由器节点,其源地址和目的地址都要切换一下。由于数据包的<源地址,目的地址>正好标识了一条虚拟分发网上的虚链路,因此,上述地址的切换实际上意味着分组从虚拟分发网的一条虚链路交换到另一条虚链路,数据包在虚拟分发网上的分发过程实际上是一种虚链路的不断交换过程,直到分组被传送到所有接收主机,我们称上述这种数据包的分发过程为虚链路交换。
上述过程主要针对发送主机为H1来说的,当发送主机选为其他主机时,也可以通过虚拟分发网来将数据发送给参与多播会话的所有主机。图8和图9给出了发送主机为H2及H4时数据包在虚拟分发网上的分发过程。
从上述基于虚拟分发网的分发过程,可以看出,在数据包在网络的传送过程中,数据包的目的地址虽然不断发生切换,但目的地址始终是单播地址,这使得数据包可以穿越不支持多播功能的路由器或网络,实现多播的逐渐部署。此外,从上述分发过程还可以一看出,虚拟分发网支持双向传送,即每个接收者同时可以充当发送者;虚拟分发网可以非常有效的支持多源多播,即每个业务源都能够通过最佳路径将数据包传送给其他接收者。最后,通过修改分发表中的发送权限和转发权限,基于虚拟分发网的多播还可以很灵活的控制发送者、接收者和传送范围。
Claims (8)
1、一种IP网络中的多播传送方法,其特征在于,该方法包括以下步骤:
1)首先在网络中为每个多播会话建立一个虚拟分发网;所述的虚拟分发网由IP网络中的多个节点通过虚链路连接而成,其中,所述多个节点包括参与多播会话的所有用户主机和选定的其他节点;由虚链路连接的两个节点互称为对方的虚邻居;该虚拟分发网具有一个唯一的IP地址标识,用来区分一个IP网络中的多个虚拟分发网;虚拟分发网上的每个节点建立并维护一个分发表,其中每个表项至少包括:虚拟分发网的标识、虚邻居列表、控制数据包在虚邻居之间转发的转发权限标志集合;所述的转发权限标志集合为一个M行N列的二维分发控制矩阵D=[dij]MxN,其中N为虚拟分发网中本节点的虚邻居的数目,M为可以转发数据包给该节点的虚邻居的数目,M≤N;
2)在虚拟分发网中,发送主机发送业务数据时,将接收主机的IP地址设置为虚拟分发网的IP地址标识;虚拟分发网上的每个节点对IP数据包进行分发,直到IP数据包被传送到虚拟分发网中的所有接收主机。
2、如权利要求1所述的多播传送方法,其特征在于,所述的虚邻居列表包括本节点的所有虚邻居,其中每一个表项对应着该节点的一个虚邻居,并至少包括虚邻居的以下属性:虚邻居的序号、虚邻居的IP地址标识、虚邻居的发送权限标志。
3、如权利要求1所述的多播传送方法,其特征在于,所述的二维分发控制矩阵D的每个行向量对应着本节点的一个虚邻居,第i个行向量[di1,di2,di3,…diN]对应着该节点的虚邻居A,其中,元素dij为一个转发权限标志,表示节点是否可以将从虚邻居A收到的IP数据包转发给序号为j的虚邻居。
4、如权利要求1所述的多播传送方法,其特征在于,所述虚拟分发网上节点的选定及各节点上分发表的配置由网络管理员手工完成,或根据协议完成。
5、如权利要求1所述的多播传送方法,其特征在于,所述步骤2)中各节点对IP数据包进行分发的方法,包括以下步骤:
21)发送主机将IP数据包分发给其在虚拟分发网上的虚邻居;
22)若虚拟分发网上接收到该IP数据包的节点为路由器,则该路由器将IP数据包继续向该路由器的其他虚邻居分发;
23)若虚拟分发网上接收到该IP数据包的节点为接收主机,则该接收主机接收该数据包并同时将IP数据包向该接收主机的其他虚邻居分发;
24)重复步骤22)、23)直到所有接收主机都接收到该IP数据包。
6、如权利要求5所述的多播传送方法,其特征在于,步骤21)中的发送主机对IP数据包进行分发的方法,包括以下步骤:
211)将发送的业务数据封装成一个或多个IP数据包,所述一个或多个IP数据包的源地址为发送主机的IP地址,目的地址为接收主机的IP地址;
212)根据发送的IP数据包的目的地址查找分发表;如果在分发表中存在一个表项,其虚拟分发网的标识与发送数据包的目的IP地址相同,该数据包为多播数据包,则从该表项中提取相应的虚邻居列表,转步骤213);否则,该数据包为单播数据包,直接将该数据包送往相应的网络接口;
213)检查虚邻居列表中每个虚邻居的发送权限标志,如果一个虚邻居的标志为许可,则将发送的多播数据包复制一份给该虚邻居,并修改复制数据包的IP数据包包头:将其目的地址替换为该虚邻居的IP地址标识;同时将虚拟分发网的IP地址标识保留到IP数据包包头的其他位置;如果被检查的虚邻居的发送权限标志为禁止,则检查下一个虚邻居;
214)将步骤213)中产生的复制数据包送往相应的网络接口。
7、如权利要求5所述的多播传送方法,其特征在于,步骤22)中虚拟分发网上的路由器对IP数据包进行分发的方法,包括以下步骤:
221)检查接收到的数据包的目的IP地址,如果该数据包的目的IP地址为当前路由器的IP地址标识,转步骤222);否则,按单播数据包对其进行处理和转发,即根据其目的IP地址查找路由表,将数据包送往相应的输出网络接口;
222)检查接收到的数据包的IP包头中是否存在虚拟分发网标识,如果存在,则转步骤223);否则,按单播数据包对其进行处理和转发;
223)根据接收到的数据包的虚拟分发网标识来查找分发表,如果在分发表中存在一个匹配的表项,则该接收到的数据包为多播数据包,从该表项中提取相应的虚邻居列表以及分发控制矩阵并转步骤224);否则,丢弃该数据包;
224)确定接收到的数据包的来源虚邻居:将接收到的数据包的源IP地址与虚邻居列表中的虚邻居的IP地址标识进行比较,确定该数据包来自哪一个虚邻居及其序号;如果没有任何一个虚邻居的IP地址标识与接收数据包的源IP地址相同,则丢弃该数据包;
225)确定接收到的数据包的目的虚邻居:同时符合以下条件的虚邻居为该数据包的目的虚邻居:该虚邻居不是该数据包的来源虚邻居;该虚邻居的发送权限标志为许可;分发控制矩阵中从来源虚邻居到该虚邻居的转发权限标志为许可;
226)将接收到的数据包向每一个目的虚邻居复制一份,并修改复制数据包的IP包头:将其源地址替换为当前路由器的IP地址标识,将其目的地址替换为目的虚邻居的IP地址标识;
227)对步骤226)中产生的复制数据包按单播数据包对其进行处理和转发。
8、如权利要求5所述的多播传送方法,其特征在于,步骤23)中接收主机接收IP数据包并对其分发的方法,包括以下步骤:
231)检查接收到的数据包的目的IP地址,如果该数据包的目的IP地址为当前接收主机的IP地址标识,则转步骤232);否则,丢弃将该数据包;
232)检查接收到的数据包的IP包头中是否存在虚拟分发网标识,如果存在,则转步骤233);否则,对该IP数据包逐层解封装,直到恢复出业务数据;
233)根据接收到的数据包的虚拟分发网标识来查找分发表,如果在分发表中存在一个匹配的表项,则该接收到的数据包为多播数据包,从该表项中提取相应的虚邻居列表以及分发控制矩阵;否则,丢弃该数据包;
234)确定接收到的数据包的来源虚邻居:将该数据包的源IP地址与虚邻居列表中的虚邻居的IP地址标识进行比较,确定该数据包来自哪一个虚邻居及其序号;如果没有任何一个虚邻居的IP地址标识与接收数据包的源IP地址相同,则丢弃该数据包;
235)确定接收数据包的目的虚邻居:同时符合以下条件的虚邻居为该数据包的目的虚邻居:该虚邻居不是该数据包的来源虚邻居;该虚邻居的发送权限标志为许可;分发控制矩阵中从来源虚邻居到该虚邻居的转发权限标志为许可;
236)将接收数据包向每一个目的虚邻居复制一份,并修改复制数据包的IP包头:将其源地址替换为当前主机的IP地址标识,将其目的地址替换为目的虚邻居的IP地址标识,并将该复制数据包送往相应的网络接口;
237)修改接收数据包的IP包头:将IP头部中保存的虚拟分发网的IP地址标识去掉,并将数据包的源地址替换为虚拟分发网的IP地址标识;将修改后的数据包逐层解封装,直到恢复出业务数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100993654A CN100527713C (zh) | 2007-05-18 | 2007-05-18 | Ip网络中基于虚拟分发网的多播传送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100993654A CN100527713C (zh) | 2007-05-18 | 2007-05-18 | Ip网络中基于虚拟分发网的多播传送方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101052004A CN101052004A (zh) | 2007-10-10 |
CN100527713C true CN100527713C (zh) | 2009-08-12 |
Family
ID=38783202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100993654A Expired - Fee Related CN100527713C (zh) | 2007-05-18 | 2007-05-18 | Ip网络中基于虚拟分发网的多播传送方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100527713C (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101459595B (zh) * | 2007-12-14 | 2012-05-23 | 华为技术有限公司 | 识别最后一跳交换机的方法、交换机及组播设备 |
CN101247311B (zh) * | 2008-03-21 | 2010-06-16 | 清华大学 | Ip网络中为多播会话建立虚拟分发网的方法 |
CN102316006B (zh) * | 2010-07-05 | 2014-10-22 | 杭州华三通信技术有限公司 | 一种发送数据报文的方法和装置 |
US9503361B2 (en) * | 2014-06-13 | 2016-11-22 | Cisco Technology, Inc. | Active/static path redundancy |
CN106102120B (zh) * | 2016-06-06 | 2019-08-09 | 武汉宏佳启元科技有限公司 | 一种自主协议及组网方法的自组无线局域网及数据收发方法 |
CN106803810B (zh) * | 2017-02-08 | 2020-06-16 | 苏州浪潮智能科技有限公司 | 一种降低监听开销的cc-numa系统及方法 |
CN107483167B (zh) * | 2017-07-11 | 2020-06-26 | 苏州浪潮智能科技有限公司 | 一种通信方法和装置 |
CN113923722B (zh) * | 2021-10-11 | 2023-06-13 | 中国联合网络通信集团有限公司 | 数据传输方法、装置及存储介质 |
CN114461392B (zh) * | 2022-01-25 | 2023-03-31 | 西南交通大学 | 一种带宽感知的选择性数据多播方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1381971A (zh) * | 2002-05-29 | 2002-11-27 | 瑞昱半导体股份有限公司 | 多播分组的传送设定方法与装置 |
CN1384649A (zh) * | 2001-05-07 | 2002-12-11 | 株式会社Ntt都科摩 | 多播分组递送方法与系统和分组地址结构以及移动台 |
CN1909467A (zh) * | 2006-07-07 | 2007-02-07 | 清华大学 | 在ip网络中采用单播地址来标识多播组的方法 |
-
2007
- 2007-05-18 CN CNB2007100993654A patent/CN100527713C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1384649A (zh) * | 2001-05-07 | 2002-12-11 | 株式会社Ntt都科摩 | 多播分组递送方法与系统和分组地址结构以及移动台 |
CN1381971A (zh) * | 2002-05-29 | 2002-11-27 | 瑞昱半导体股份有限公司 | 多播分组的传送设定方法与装置 |
CN1909467A (zh) * | 2006-07-07 | 2007-02-07 | 清华大学 | 在ip网络中采用单播地址来标识多播组的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101052004A (zh) | 2007-10-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100527713C (zh) | Ip网络中基于虚拟分发网的多播传送方法 | |
US7835276B2 (en) | Admission control mechanism for multicast receivers | |
US7263099B1 (en) | Multicast packet replication | |
CN102075417B (zh) | 组播剪枝方法及协议无关组播路由器 | |
JP4165196B2 (ja) | パケット中継装置 | |
US7924837B1 (en) | IP multicast in VLAN environment | |
US6944135B2 (en) | Methods and arrangements for establishing a group collaboration session utilizing multiple multicast distribution trees | |
CN100542127C (zh) | 一种基于多业务传输平台的组播实现方法 | |
Jia | A scalable multicast source routing architecture for data center networks | |
US8054766B2 (en) | Method and tool for IP multicast network address translation (MNAT) | |
CN101247253A (zh) | Ip网络中基于虚拟分发网的多播传送方法 | |
CN104980355B (zh) | 一种sdn环境下的源端可控组播数据传输系统 | |
CN100477635C (zh) | 一种域间组播的传输方法及边缘设备 | |
CN100481817C (zh) | 一种基于ip/mpls/bgp的多域组播一体化数据分发结构及方法 | |
CN102598586A (zh) | 处理组播的方法和装置 | |
CN101291240A (zh) | 一种组播流传输方法和系统 | |
CN109981308A (zh) | 报文传输方法及装置 | |
CN1996956A (zh) | 实现组播流跨vlan转发的三层网络设备及方法 | |
CN101394298A (zh) | 建立组播传输路径、实现组播传输的方法及装置 | |
KR101279790B1 (ko) | Ip 멀티캐스트 루트 모니터링 시스템 및 방법 | |
CN102377639B (zh) | 组播剪枝方法及协议无关组播路由器、组管理窥探交换机 | |
Yang et al. | Protocol design for scalable and adaptive multicast for group communications | |
CN101534203A (zh) | 一种组播控制的方法、设备和系统 | |
KR100776665B1 (ko) | 가상랜에서 물리포트 데이터베이스를 이용한 멀티캐스팅장치 및 그 방법 | |
Chakeres et al. | Connecting MANET multicast |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090812 Termination date: 20120518 |