Ad-hoc网络中的多播路由的制作方法

文档序号:7665097阅读:178来源:国知局
专利名称:Ad-hoc网络中的多播路由的制作方法
技术领域
本发明涉及ad hoc网络中到多目的地址的包传输,其中ad hoc网络中路由器和主机均可移动,路由器有与之相连的主机和网络。
背景技术
多跳包无线网络,即ad hoc网络,由可移动的路由器连接的可移动主机组成。因为主机和路由器的可移动性、信号的损耗和干扰以及电源传输的损耗,这种路由器的配置是特别的,网络的拓扑是动态变化的。此外,ad hoc网络中可用的通道带宽与有线网络相比比较有限,并且解析路由器操作受电池寿命的限制。这些网络中,为保护用户数据的通道带宽和解析节点的电池寿命,路由的实现必须用尽可能少的控制信息,尽可能避免相邻节点的握手。因为ad hoc网络中的拓扑是动态的,优选采用广播无线链路来互连路由,而不必设计拓扑。
目前在计算机网络中有效地支持多对多通信(多播)所用的方法是建立多播路由树,很少有例外。其基本方法包括建立一组路由节点(路由器)的路由树。一旦为一组路由器建立路由树,到树中所有路由器的包或消息对树中的每台路由器和每条链路就只经过一次。
目前为互联网开发的多播路由协议基本分为两大类,是由S.Deering在1989年8月在互联网工程任务要点(IETF)请求注释-112中的“IP多播的主机延伸”中首先描述的基于完全拓扑信息的协议,也称为链路状态多播协议,以及基于距离信息的协议。多播OSPF(MOSPF)是基于拓扑方法的一个例子。MOSPF中,每台路由器与多播组中其余各台网络路由器进行通信,到多播组中每台路由器的每条给定链路还属于开放最短路径优先(OSPF)协议中所用的链路特征。根据该信息,每台路由器可计算出从给定多播路由器的每个源到报告属于多播组的链路的其余路由器的最短路径多播路由树。该方法的限制是网络中每条链路的组成员信息变化的传播所致的传输开销,以及计算从多播组的每个源到其他组成员的最短路径树的处理开销。
基于距离信息的协议的例子是距离向量多播路由协议(DVMRP),核心树(CBT)协议,有序核心树(OCBT)协议,以及协议独立多播(PIM)协议。这些协议都是基于反向路径转发的概念。DVMRP中,多播组的源向整个网络扩散多播包,如果包是从单播路由表中列出的到包源的下一跳的邻居节点接收的,接收到该包的每台路由器将其转发到其他接口。对一个给定的多播组,在相连的任意网络中没有组成员的路由器向其路由表中列为到多播组源的邻居节点发送一个修剪控制包。DVMRP的最主要限制是在没有与之相连的多播组成员的路由器修剪生成树之前,需要向整个网络扩散多播包。
CBT通过用一种称为核心的特别路由作为连接给定多播组的路由参考点而不再需要扩散和修剪网络。具有到网络接口的路由器沿到多播组的核心的最短路径向核心发出连接请求,其中该网络中具有一台或多台要求连接多播组的主机。已成为组中多播路由树的一部分并且接收连接请求的路由器向发出请求的路由器发回一个应答消息,从而沿从接收器到多播组核心的最短路径建立多播树分支。与DVMRP不同,CBT中每个多播组只有一棵多播路由树。为给定多播组所建的共享树是双向的,这意味着多播树中多播包可沿连接两台路由器的链路双向流动。
PIM有两种运行模式密集模式和稀疏模式。在PIM密集模式(PIM-DM)中,采用DVMRP中所用的扩散和修剪方法,唯一的区别是PIM-DM依靠路由器处的单播路由表,而不是象DVMRP那样要求路由器维持到多播源的距离的单独路由表。PIM稀疏模式(PIM-SM)采用与CBT中相同的策略建立共享树,但是用PIM-SM所建的共享树是单向的,多播树中链路的方向是远离称为集合点(RP)的多播树的树根的。因此,源向RP发送包,然后这些包通过多播树分发到所有的接收器。
对无线多跳网络也提出了多播路由树。这些方法通过扩散搜索多播组成员的控制包建立多播路由树。
由于多播树提供了树中任两台路由器间的唯一路径,每个包的最小复制数用于将包扩散到多播组的所有接收器。对于有N台路由器的树,点对点链路网络中只有N-1条链路用于将相同信息传输到多播树的所有路由器。在采用单通道广播链路的无线网络中,多播树的每个成员只需传输包一次。采用路由树当然比将相同信息N-1次从源单独发送到其余节点的强力方法有效得多。采用树进行多播路由的另外一个优点是多播树中每台路由器的路由决策变得非常简单多播树中通过树内接口接收组的多播包的路由器通过其余的树内接口转发包。
然而,多播树通过强制路由器对间的单条路径,实现上述的效率和简化。因此,如果多个源必须向同一组目的地发送信息,采用路由器树或者需要所有源都用共享多播组,或者需要为每个源建立单独的多播树。采用共享多播树的缺点是包沿比从源到接收器的最短路径长得多的路径发送到多播组。对每个多播组的源采用一个单独的多播树强制加入多个多播组的路由器在每个多播组中为每个源维持一条记录,不会随组和组中源数目的增加而增加。此外,因为树提供多播组成员间的最小连接,树中任何链路的故障会使组分裂,重新配置树还需要路由器。
虽然由于简单基于树的多播路由对有线网络和互联网非常具有吸引力,当基础拓扑频繁改变时维持多播路由会导致不期望的控制传输量。而且,在路由表不稳定阶段,当路由器等待多播树重建时会被强制停止转发包。
最近,对多播网眼而不是多播树的建立提出了两种方法。多播网眼是包括给定多播组的所有成员和多播组中从每个源到每个接收器至少有一条路径的网络的一个相连子网。
为创建能够建立多播网眼的多播树,由Garcia-Luna Aceves和MadrugaJ.J.Garcia-Luna-Aceves和E.L.Madruga在IEEE Journal on Selected Areas inCommunications,Special Issue on Ad-Hoc Networks,Vol.17,No.18,pp.1380-1394,August 1999中的“核心辅助网眼协议”一文中提出的核心辅助网眼协议,扩展了核心树中介绍的基本的接收器触发方法。核心用于限制接收器连接多播组所需的控制流量。与CBT相比,每个网眼可定义一个或多个核心,核心不必是组中网眼的一部分,即使所有相连的核心都不能达到,路由器也可连接组。如果路由器的邻居都不是组的成员,它向核心发送连接请求;否则他只简单地利用可靠的或持续的更新声明其成员资格。如果从需要连接组的路由器不可到达核心,路由器采用最终到达某些组成员的扩展环搜索(ERS)广播其连接请求。当一个或多个响应发回路由器时,选择其中一个响应作为到网眼的路径。
转发组多播协议(FGMP)和随需应变多播路由协议(ODMRP)也建立网眼的一种变形。然而,为建立组网眼,FGMP和ODMRP要求控制包以与ODMRP和PIM-DM要求多播数据包首先扩散的相同方式在ad hoc网络中扩散。两个协议间的区别在于是谁启动了扩散过程-前者是接收器,后者是发送器。这种方法只在小网络中可以接受。相反,如果从一个连接元件不是所有的核心都不可达,CAMP中核心的应用消除了扩散的必要。
实质上,ODMRP要求所有活跃的传输数据包的发送器周期性地向网络扩散发送器通告包。所有与想加入多播组的主机直接相连的路由器处理这些通告包,并更新成员表。该表列出了收到其通告的所有发送器和到这些发送器的下一跳的邻居路由器。成员表也周期性地被广播,成员表中所列的作为到发送器的下一跳的中间路由器将置位数据转发标志,成为组成员并保持/广播成员表,就象CAMP,ODMRP保持数据包缓存一样。如果转发标志被置位且数据包不在包缓存中,数据包就被转发。FGMP跟这种方法类似,除了上面提到的接收器是扩散成员通信包的实体、发送器跟踪成员表中的接收器的事实。
因为扩散控制包的设计决策,ODMRP和FGMP均有扩展性问题,特别是FGMP,因为发送器必须跟踪多播组中所有接收器。
CAMP的限制是需要定义路由器子组作为服务特别组的核心,因为这要求由系统管理员配置核心。而且,在多播组的核心不可达或者故障的情况下,路由器必须依靠向网络扩散搜索消息来连接多播组。
现有技术中所有多播路由协议都假定以下情况之一每个路由器可得到完全的拓扑信息(如MOSPF),或者可得到到目的地的距离信息(如CBT,CAMP,PIM-SM),或者可通过先扩散后修剪的方法建立多播路由树(如DVRMP,FGMP,ODMRP),或者搜索消息的扩散可用于连接多播组(如AODV和基于随需应变的多播路由协议)。
现有技术中许多单播路由协议是基于我们称为源树路由方法的方法。该方法中路由器通告最短路由树的链路状态(如成本或长度)或树中每个节点从树根到倒数第二跳的距离。第一种这种类型的协议是由Riddle在美国专利4,466,060中提出的。在Riddle的协议中,路由器向不同的邻居通告不同的最短路径树;这些树被Riddle称为“排他树”,他们规定到目的地的优化路径,这些路径不包括与设计更新被发送到的路由器相关的路径。更新包或消息规定完全的排他树。基于源树路由方法的第二种协议是由Garcia-Luna-Aceves在Proc.IEEE Infocom 86,Miami,FL,April 1986中的“多跳包无线网络的自动防故障路由算法”中报告的,它不同于Riddle的协议,因为路由器把相同的最短路径路由树发送到所有的邻居。Humblet在IEEETrans.Comm.,Vol.39,No.6,June 1991,pp.224-236中的“另一种自适应最短路径算法”,Cheng et al在Proc.ACM SIGCOMM 89 pp.224-236中的“无反弹效果的无环扩展的Bellman-Ford路由协议”,Rajagopalan和Faiman在Journal of Internet workingResearch and Experience,Vol.2,No.1,March 1991,pp.51-69中的“自治系统中响应分布最短路径路由算法”,Murthy和Garcia-Luna-Aceves在ACM Mobile Networks and Application Journal,SpecialIssue on Routing in Mobile Networks Communication Networks,1996中的“无线网络的高效路由协议”中都提出了基于源路由树的协议,其中路由器向其邻居通告相同的最短路径,并且在路由器得到由其邻居所报告的树的最短路径路由树的方式与Garcia-Luna-Aceves的协议不同。
令人惊讶的是,迄今提出或实现的多播路由协议都不具有前面提到的单播路由协议所提供的最短路径路由树的优点。而且,现有技术中的多播协议不采用特别的路由(核心或集合点)都不能防止控制包或多播数据包的扩散。
1998年12月23日申请的美国专利申请号09/221,228中公开的自适应互联网路由(AIR)协议,也是基于源路由树方法。它使链路状态信息和节点状态信息以标记路由树(LRT)的形式传播。采用AIR,路由器向其邻居发送关于到目的地的最优路径中链路和节点的更新信息。沿从源到每个期望目的地的优化路径的链路和节点构成一个LRT,它隐含规定从源到每个目的地的完全路径和路径中所用的每个链路和节点的特性。由邻居报告的相连链路和节点的集合构成了路由器已知的部分拓扑。本发明利用AIR使ad hoc网络中多播路由不需要扩散控制或多播数据包或将特别路由(如核心)赋给每个多播组。

发明内容
本发明包括ad hoc网络中建立和维护多播网眼的方法。这里所公开的方法依靠扩展基于邻居路由器中用标记机制进行路由树交换的单播路由协议,该标记机制用于传播多播组成员信息而不必扩散控制包或数据包去发现组的多播路由树或者到达多播组的所有接收器。因为本发明中所用的路由树的根是通告这些信息的路由器,我们称这些树为源树。而且,我们把本发明称为源树多播(MOST)协议。
在本发明的一个优选实施例中,1998年12月23日申请的美国专利申请号09/221,228的“Ad-Hoc互联网中的统一路由机制”中所公开的自适应互联网路由(AIR)协议,在此结合进本发明作为参考,作为MOST的一个组成部分,用于分发从路由器到网络已知目的地的最优路径中的每个链路和路由器状态信息。在AIR中,路由器的源树对该源树的每个节点指明到节点的链路的头地址、链路的状态参数和节点的状态参数。MOST中路由器源树的每个节点的信息增加,以包括节点的多播组成员资格信息。因为每个组成员资格至少有一个和多播组中要求成员资格的主机的接口,所以每个组成员资格包括路由器需要加入的多播组的地址。
MOST的两个主要组成部分是用于传播路由器所属的多播组的信息的方法,以及在ad hoc网络中转发多播数据包的方法。
采用MOST的路由器通过下层的链路层服务得知与其相连的每个出口链路的链路状态,并接收邻居的源树不断更新的信息。这些更新说明了形成邻居源树一部分的链路和节点状态。基于该部分拓扑信息,路由器采用本地路径选择算法,选择其最优路径进行单播路由,从而得到自身的源树。
MOST中,路由器向所有邻居通告其所有的多播组成员资格。为加入adhoc网络中的多播组,路由器只简单地向其直连的邻居声明其组中的成员资格。
路由器简单地通过向其直连的邻居声明自己不再是组成员而离开组。MOST采用一种新的简单的机制来避免象MOSPF中那样扩散组成员资格信息。路由器只有当其可用的源树信息表明至少一个邻居必须接收组成员资格的更新以维持ad hoc网络中所有组成员相连时才转发组成员资格的更新。因此,在一个新多播组中只有最初几个声明成员资格的路由器把组成员资格更新,作为路由表更新的一部分,传播到其他所有路由器。
MOST中,路由器可采用计算密度比MOSPF中所采用的链路状态多播方法中所用方法低得多的方法确定是否转发它所收到的多播数据包。MOSPF中,路由器采用Dijkstra的本地最短路径算法来计算从多播包的源到多播组所有已知接收器的多播路由树。因此,虽然因为它在本地计算从多播组的每个源的多播路由树,路由器知道什么时候转发多播数据包,但是这种方法当网络变大、组数和每组的源数增加时会导致太多的开销。相反,当(a)多播数据包是从作为到多播包源的最短路径的下一跳的邻居收到的,以及(b)由转发多播包的邻居节点报告的源树在至少具有一台报告为多播组的成员的子树中有路由器时,路由器采用MOST转发多播数据包。
附图的简要说明与附图相结合,在随后的本发明的详细描述中,本发明的上述和其他优点更为显然,其中

图1表示根据本发明实施例的ad hoc网络。
具体实施例方式
这里公开了ad hoc网络中多播路由的方法。虽然公开了关于特定单播路由协议和某些实施例,MOST的下述实施例描述只是示例性的,不应视为限于该范围。本领域技术人员会承认本发明可以用多种变形实现,并应用于多种系统。I、基本服务和体系本发明非常适于提供IP互联网向ad hoc无线环境无缝扩展的ad hoc网络。根据互联网无线或IR中MOST的运行来描述MOST,其中互联网无线或IR是无线路由器。然而,MOST也适用于路由器互连不一定是基于无线链路的计算机网络和互联网络,这一点对本领域技术人员是显然的。
图1表示一个示例性的ad hoc网络的概貌,帮助理解下面的讨论。图中描述的ad hoc网络包括许多子网20,30,40,50,他们提供了通过许多互联网无线(IR)100a-100i的互连扩展。每个IR 100a-100i是具有IP地址和MAC地址的无线路由。Ad hoc网络10通过一个称为“空降场(AirHead)”的接入点连接互联网。接入点包括通过局域网40互连到互联网路由器200的IR 100h。通常,采用本领域公知的扩频无线通信技术,IR 100a-100i在一个或多个无线通道1-3中运行。例如,IR 100a-100i可运行于不管制的UHF频带中的任一段,从而消除运行许可的需要。路由器200可由互联网服务提供商(ISP)运行。如图示,单独的ISP可运行连接IR的LAN 40。这种方案中,IR 100h作为“空降场”提供到互联网900的网关服务。一些可以与主机相连,互联网用户可以通过ad hoc网络访问这些主机。象任何路由器一样,每个IR100a-100i处理所有的消息、相连链路成本的变化、相连链路的故障、新邻居的通告,按照检测到的顺序每次处理一个事件。
如果图1的IR 100a-100i中两个IR之间有无线连接,并且一个IR(如IR100a)可以接收和应答另一个IR(如IR 100d)的包,则其中一个IR可把另一个IR作为是相连的(我们称这样一个IR为“邻居”)。因此,连接多个IR的物理广播链路映射为这些IR的多个点对点双向链路。每对相连的IR定义他们之间的两条点对点双向链路,每个方向一条。每条点对点双向链路有一个链路头节点和一个链路尾节点。
本发明的描述假定IR所传输的多播数据包或控制包由该IR的所有邻居侦听。
本发明可与任何通道接入协议一起应用。然而,具体实施例的细节是为如下情况提供的通道接入协议支持从一个IR到其所有邻居IR的无冲突广播,即使存在隐藏的IR;以及我们称为邻居协议的下层协议保证每个IR100a-100i在有限的时间内检测到邻居IR的存在以及和邻居IR的连接损耗。1999年10月15日申请的美国专利申请09/418,899和1999年2月10日申请的09/248,738所公开的通道接入协议,在此结合进本发明作为参考,是本发明用于实践的实施例的例子。本发明采用的邻居协议可用本领域公知的链路层重传策略付诸实践。
MOST采用与IP多播相同的基本体系。假定存在向ad hoc网络的IR提供用域名标识的组地址的映射服务。例如,互联网中用域名系统提供这种服务。希望加入多播组的主机必须首先查询该映射服务以得到组地址,然后通过主机-IR协议与本地IR交互以请求多播组的成员资格。这样的主机-IR协议的一个例子是IP版本4中的互联网组管理协议(IGMP)。
除主机获得多播组地址所用的命名服务外,MOST还假定从单播路由协议可以获得源树信息。如前所述,在本发明的一个实施例中,自适应互联网路由(AIR)协议用作MOST的一个组成部分,用于分布从IR到ad hoc网络中已知目的地的优选路径中每个链路和IR状态的信息。AIR在1998年12月23日申请的美国专利申请09/221,228“Ad-Hoc互连统一路由方案”中公开,该申请转让于本发明的受让人并在此结合进本发明作为参考。
AIR中,IR的源树对源树中的每个节点指明到该节点的链路的头地址、链路的状态参数以及节点的状态参数。
MOST所提供的基本服务是以分布方式维护多播组成员资格信息,使基于这些信息和用作MOST组成部分的单播路由协议所提供的源树信息能进行数据包转发。多播数据包根据Dalal最先引入的反向路径转发机制转发,该机制中只有当多播数据包是根据IR所维护的单播路由表从作为到包源的后继的邻居IR接收时IR才转发该数据包。II、MOST中所交换和维护的信息IR采用多播状态更新(MSU)向组成员通告更新。在本发明的一个优选实施例中,MSU是与作为ad hoc网络中所用的单播路由协议的一部分发送的更新相独立地进行交换。这种情况下,MSU包括下列元件a)发起MSU的IR的网络地址;b)确认MSU的时间戳;c)多播网络的标识符(如组的多播地址);d)如果IR变成或继续作为多播组的成员,成员标志置为1;如IR不再是多播组的成员则置为0。
在本发明的另一个优选实施例中,MSU作为由AIR协议发送的更新消息的一部分被发送。这种情况下,MSU包括组成员资格元组列表,作为AIR的路由状态更新(RSU)中所报告链路的尾的状态参数。
加入MOST的每个IR维护如下信息,作为与MOST一起使用的单播路由协议的一部分1、单播路由表(URT)在IR i,MOST可用的RT对每个目的地j指明后继者和到目的地的距离。
2、拓扑图(TG)TG是用每个邻居IR所报告的源树(ST)及出口相连链路的信息建立的。
3、源树(ST)从运行本地路径选择算法如Dijkstra最短路径优先算法的TG得到。
IR i的TG中从u到v的链路的记录包括元组(u,v,ts,{m},{l},{n}),其中u,v分别是链路的头和尾的网络地址,ts是接收的链路(u,v)的最近时间戳,{m}是报告链路的邻居IR列表,{l}是说明链路参数的类型-值对序列,{n}是说明节点参数的类型-值对序列。
本发明的本地路径选择算法的唯一要求是节点在计算到目的地的单播后继者时必须产生源树。例如,这意味着,如果IR 100a-100i中的IR A选择IR 100a-100i中的IR B作为到目的地D的后继者,他也为从IR A到目的地D的优选路径中的每个中间IR选择IR B。所有IR采用相同的成本量度计算源树,也用相同的解系规则选择到目的地的后继者。
对任何路由类型认为故障链路的成本是无限的。成本分配到链路或者参数的具体类型分配到单播路由的链路和节点的方式不在本说明书讨论范围内。
除从和MOST一起使用的单播路由协议得到的前述信息外,本发明要求ad hoc网络中每个IR维护所有IR的成员资格信息。
IR维护的组成员资格信息存储在组成员表(GMT)中。IR的GMT包括0条或多条记录,每条记录说明如下信息a)IR所属于的多播组的标识符;b)IR通告组联属关系变化所用的最近时间戳。
IR 100a-100i中的IR X对ad hoc网络中其他IR所维护的组成员信息包括有0条或多条记录,每条记录包括如下信息c)IR所属于的多播组的标识符;d)IR通告组联属关系变化所用的最近时间戳。
IR X对与邻居IR或远程IR相联系的GMT中的多播组成员不存在的记录相关时间戳赋缺省值0。
因为与MOST一起使用的单播路由协议要求采用包含ad hoc网络中所有可达节点的拓扑图,IR可维护其他IR的组成员表(GMT),作为自己TG的组成部分,然后GTM变成TG中的另一个节点参数。
IR X处对相连或远程IR Y所维护的组成员表指明已知IR Y所属的多播组的地址和IR Y所发起的MSU所侦听的最近时间戳。III、散布组成员信息MOST对IR采用接收器触发方法来加入多播组,比以前提出的不依赖完全拓扑信息的方案简单的多。主机首先确定它需要作为接收器加入的多播组的地址,然后主机利用该地址请求相连的IR加入该多播组。主机用于发现多播组地址和与相连IR交互的机制不在本发明的范围内。
在本发明的一个实施例中,在接收到加入组的主机请求后,IR通过查找其组成员表(GMT)确定是否在多播组中已具有所声明的成员资格。如果在GMT中未发现记录,IR向其邻居发送MSU,MSU指明成员标志置为1,以便多播组指示IR现在成为组成员。类似地,当没有相连的主机要求成为IR声明其所属的多播组成员时,IR发出MSU,其中MSU的成员标志复位为0,指示IR现在不再是多播组的成员。
如果IR 100a-100i中的IR X依次从邻居IR Y接收MSU,并且MSU的成员标志为1,那么如果满足下述条件,IR X通过重传MSU向其邻居转发MSUa)MSU有效;b)IR X不是由IR Y转发的MSU元组指明的同一个多播组成员;c)邻居节点IR Y报告的源数据有IR X作为子树的树根以便(1)子树不包括IR Y;(2)子树中IR X的至少一个邻居不是MSU所报告的多播组的成员。
如果IR X从邻居IR Y接收MSU,并且MSU成员标志值为0,那么如果满足下述条件,IR X通过重传MSU向其邻居转发MSUa)MSU有效;b)IR X是邻居节点IR Y所转发的MSU元组中所指明的多播组的成员;c)邻居IR Y所报告的源树有IR X作为子树的树根以便(1)子树不包括IR Y;(2)子树中IR X的至少一个邻居是MSU所报告的多播组的成员。
如果MSU中的时间戳比IR X对MSU和发起MSU的IR中所指明组的时间戳更新,IRX确定IRY所发起的MSU是有效的。
下述伪代码表示IR确定是否转发从邻居收到的MSU的方法的一个示范性实施例。
<pre listing-type="program-listing">Procedure Process_MSUSIRMSU从之收到的IR的节点标识符SNS过程中所用的邻居集合MSU从邻居接收的MSUMSU.tsMSU中的时间戳MSU.groupMSU中声明的多播组MSU.source发起MSU的IRMSU.flagMSU中的成员标志ST(x)邻居IR X所报告的源树GMT(x)IRX的GMTGMT(x).tsGMT中IR X的时间戳self执行过程的IR1.if(MSU.ts<GMT(SOURCE).ts or(MSU.ts>GMT(MSU.source).ts and MSU.source=self))  then call Procedure Correct_MSU(MSU.source,MSU.group,MSU.ts)2.if(MSU.flag=1)  2.1.then begin   i. if(selfin MSU.group)then return   ii.set SNS=empty set   iii.for each neighbor n of self&lt;dp n="d14"/&gt;  do begin   if(link(self,n)in ST(SIR))then set SNS=SNS U n  end  iv. get a node p in SNS  v. if(p not in,oup)   then call Procedure Forward_MSU   else set SNS=SNS-p  vi. if(SNS=empty set)   then return   else repeat Step2.1.iv  end  2.2.else begin  i. if(selfnot in MSU.group)then return  ii. set SNS=empty set  iii. for each neighbor n of self   do begin   if(link(self,n)in ST(SIR))then set SNS=SNS U n   end  iv. get a node p in SNS  v. if(p in group)  then call Procedure Forward_MSU  else set SNS=SNS-p  vi.if(SNS=empty set)   then return   else repeat Step2.2.iv  endend Process_MSU</pre>过程Correct_MSU简单地改正了给定多播组的邻居IR的时间戳,或强迫接收MSU的IR使给定组的时间戳更新。本发明的另一个优选实施例可以采用现有技术中链路状态路由协议中常见的顺序号和老化机制处理MSU的有效性验证。
本发明中链路或IR的故障对组成员信息的散布没有影响,因为IR只简单地向邻居声明成员资格并且只有在确定其中一些邻居需要组成员信息时才转发给他们。相反,在基于接收触发连接(如CBT和PIM-SM)的树多播路由协议中,核心或组集合点的故障会使多播树断裂,阻止新成员的加入,直到选择一个新的核心或组集合点并使所有IR知道。而且,在象CAMP的基于网眼的多播路由协议中,核心故障会促使扩散,以便从所有的核心故障中存活下来。IV、多播包转发MOST中基本的包转发机制包括沿从包源的反向最短路径转发多播数据包。
多播包的主要控制信息为多播组的地址、包源地址、用于控制功能的序列号和用于限制每个包在网络中允许停留时间的存活时间。
与包的源主机相连的IR简单地向其邻居传输包。
当IR 100a-100i的IR X无差错地从IR 100a-100i中的邻居IR Y接收多播包时,如果满足下述条件,IR X转发该包1、根据IR X的单播路由表,IR Y是包源的后继者(下一跳);2、由排除IR Y和所有IR以及Y是后继者的目的地所产生的子树包含至少一个包所传向的多播组的成员的IR。
下述伪代码表示IR如何通过Dijkstra最短路径优先算法的新修改实现该目的的示范性实施例,由于IR维护源树,采用这种算法是可行的。执行该过程的IR简单地搜索源树,试图发现最近的IR,该IR是目标组的成员,且在源树中可通过不包括转发多播数据包的IR的路径可达。
<pre listing-type="program-listing">Procedure Multicast_Forwarding{当多播数据包被正确接收时调用}URT单播路由表SIR从之接收多播包的IR的标识符SOURCE多播包的源DEST多播包的目标组URT(x)用X指明的URT行URT(x).s到目的地X的后继者(下一跳)if(SIR=URT(SOURCE).s)  then call Find_Members(SIR,DEST)  If(member_found=TRUE)then call Send_PacketEnd Multicast_ForwardingProcedure Find_Members(root,group){当IR需要在源树中确定多播组的后代时调用}root搜索中被修剪的子树的根group搜索中感兴趣的多播组ST执行过程的IR的源树ST.nST中的节点self执行过程的节点D(self,n)ST中从节点self到节点n的距离P(self,n)沿ST从self到n的路径I(x,y)从x到y的链路成本CMF过程中最先设置的最近成员 /*初始化&lt;dp n="d17"/&gt;1.Set member_found=FALSE2.set CMF={self}3.For each node n in ST Do beginIf(n is a neighbor of self) Then D(self,n)=I(self,n) Else D(self,n)=infinity If(root in P(self,n)) Then set CMF U nEnd /*在ST中循环搜索第一个组成员4.find n not in CMF such that D(self,n)is a minimum5.if(n in group)then begin set member_found=TRUE returnend6.set CMF=CMF U n7.for each node m adjacent to n and not in CMF do begin set D(self,m)=Min{D(self,m),D(self,n)+I(n,m)}end8.if(all nodes in ST are in CMF)then returnelse repeat Step 4End Find_Members&lt;br/&gt;</pre>过程Send_Packet简单地处理额外的包头信息,如存活时间,以确定是否传输包。
MOST中多播包转发比现有技术(如MOSPF)中描述的链路状态多播方法有效得多。这是由于过程Find_Members比现有技术中链路状态多播方法所用的方法快得多。首先,过程Find_Members中的搜索在树拓扑(执行搜索的IR的源树)中执行,而不是象现有技术中链路状态多播方法那样在整个网络拓扑中进行。其次,在过程Find_Members中实现的搜索当第一次出现IR是多播组成员时就中止,而不是象现有技术中链路状态多播方法那样,为建立多播路由树,必须对拓扑中所有节点进行穷尽搜索。
而且,在本发明的另一个优选实施例中,IR可维护一个多播转发缓存(MFC)。IR X的MFC中的记录指明多播组的地址和多播组中源地址。当IRX确定包从给定的源S和对给定的多播组G应该被转发,因为子树包含至少一个是包所要到达的多播组的成员的IR时,IR X在缓存中添加一条记录,其中所述子树是排除从之接收到包的IR Y和所有IR以及Y是后继者的目的地而得到的。因此如果数据包的源和组与MFC中记录匹配时IR X可用较小的处理开销转发多播数据包。
<pre listing-type="program-listing">Procedure CACHE_Forwarding{当多播数据包被正确接收时调用}URT单播路由表SIR从之接收多播包的IR的标识符SOURCE多播包的源DEST多播包的目标组URT(x)用X指明的URT行URT(x).s到目的地X的后继者(下一跳)MFC多播转发缓存MFC(X,Y)MFC中源X和组YX.Y标识符X和Y的连接&lt;dp n="d19"/&gt;1.if(SIR=URT(SOURCE).s)  then if(SOURCE.DEST=MFC(SOURCE.DEST))call Send_Packet  else call Find_Members(SIR,DEST)2.if(members=TRUE)  then call Send_PacketEnd CACHE_Forwarding</pre>在本发明的一个优选实施例中,IR也维护多播包转发缓存(MPC)来避免多次转发多播数据包。IR i的MPC对它最近转发的每个多播数据包维护一条记录。该数据结构中保存的信息是从多播数据包的头中得到的,并且对区分任意两个不同的多播数据包是足够的。对多播IP包用于ad hoc网络的情况,这些信息包括源地址、目的地址(组地址)、包标识和段偏移。也存储转播该包的邻居的地址。包转发缓存的主要作用是通过跟踪IR已接收到的包避免包复制。缓存包只适用于低带宽通道且当ad hoc网络的拓扑是动态的,路由表非常不稳定时只用作预防。
虽然结合具体实施例描述了本发明,应该认识到对本领域技术人员来说可以对这些教导有多种改进。这样,虽然和本发明的具体实施例一起展示和描述了本发明,应该理解在不偏离本发明的范围和精神的情况下可以作形式和范围上的变化。
权利要求
1.一种在多播组的多台路由器间传递网络中多播组成员信息的方法,其中所述多台路由器中的每一台向所述多台路由器中的其他路由器报告路由树信息,所述方法包括下列步骤在网络中第二路由器处接收更新信息,所述的更新信息从第一路由器传输并包括多播组的更新信息;至少部分根据所述的更新信息和所述第一路由器所报告的路由树信息,确定所述的第二路由器是否必须向所述第二路由器的至少一台邻居路由器传输所述的更新信息,以便所述多播组的所有成员保持连接;以及响应于肯定的确定从所述的第二路由器向所述第二路由器的至少一台邻居路由器传输所述的更新信息。
2.根据权利要求1所述的方法,其中所述的更新信息包括所述多播组的标识符。
3.根据权利要求1所述的方法,其中所述的更新信息包括所述第一路由器的网络地址。
4.根据权利要求1所述的方法,其中所述的更新信息包括所述第一路由器成为所述多播组的成员的标识。
5.根据权利要求4所述的方法,其中路由树信息包括单播路由协议的源树,所述的确定步骤包括确定所述第一路由器所报告的源树是否具有所述的第二路由器作为所述第一路由器被排除的子树的根,是否所述子树中所述第二路由器的至少一台邻居路由器不是所述多播组的成员。
6.根据权利要求5所述的方法,其中所述的确定步骤还包括确定所述第一路由器是否不是所述多播组的成员。
7.根据权利要求6所述的方法,其中所述的更新信息包括时间戳,所述的确定步骤还包括确定所述的时间戳是否有效。
8.根据权利要求7所述的方法,其中所述的时间戳包括第一时间戳,所述的确定所述时间戳是否有效的步骤包括确定所述的第一时间戳是否比存储在所述第二路由器中的第二时间戳更新,所述的第二时间戳是与所述的多播组和所述的第一路由器相联系的。
9.根据权利要求1所述的方法,其中所述的更新信息包括所述第一路由器不再是所述多播组的成员的标识。
10.根据权利要求9所述的方法,其中路由树信息包括单播路由协议的源树,所述确定步骤包括确定所述第一路由器所报告的所述源树是否具有所述的第二路由器作为所述第一路由器被排除的子树的根,所述子树中所述第二路由器的至少一台邻居路由器是否是所述多播组的成员。
11.根据权利要求10所述的方法,其中所述的确定步骤还包括确定所述的第一路由器是否不是所述多播组的成员。
12.根据权利要求11所述的方法,其中所述的更新信息包括时间戳,所述的确定步骤还包括确定所述的时间戳是否有效。
13.根据权利要求12所述的方法,其中所述的时间戳包括第一时间戳,所述的确定所述时间戳是否有效的步骤包括确定所述的第一时间戳是否比存储在所述第二路由器中的第二时间戳更新,所述的第二时间戳是与所述的多播组和所述的第一路由器相联系的。
14.一种在包括有多台路由器的多播组的网络中转发多播包的方法,其中所述多台路由器中的每一台向所述多台路由器中的其他路由器报告路由树信息,所述方法包括下列步骤在第二路由器处接收多播包,所述的多播包从第一路由器传输并包括控制信息;至少部分根据所述的控制信息和所述第一路由器所报告的路由树信息,确定所述的多播包是否由所述的第二路由器转发;以及响应于在所述的确定步骤中所述的多播包被转发的肯定的确定从所述的第二路由器向至少一台第三路由器转发所述多播包。
15.根据权利要求14所述的方法,其中所述的多播包包括多播组的地址。
16.根据权利要求14所述的方法,其中所述的多播包包括所述多播包的源的地址。
17.根据权利要求14所述的方法,其中所述的多播包包括一个时间值,其中所述的时间值用于限制所述的多播包在网络中允许停留的时间。
18.根据权利要求14所述的方法,其中所述的第二路由器维护一个多播转发缓存,所述的多播转发缓存包括标识来自选定的源和选定的多播组的多播包是否应从所述的第二路由器转发的记录,所述的方法还包括如果所述的多播包是来自所述的选定的源并用于所述的选定的多播组,在进行了所述多播包被转发的肯定判断后创建所述的记录。
19.根据权利要求14所述的方法,其中所述的第二路由器维护一个多播包转发缓存,所述的多播包转发缓存包括标识每个多播包最近被所述第二路由器转发过的记录。
20.根据权利要求14所述的方法,其中所述的第一路由器所报告的路由树信息包括单播路由协议的源树,所述的确定步骤包括根据所述的源树确定所述的第一路由器是否是从所述的第二路由器到多播包的源的最短路径的下一跳,以及确定所述的源树是否在子树中有所述的第二路由器,所述子树中至少有一台路由器是多播组的成员。
21.一种在多播组的多台路由器间传达网络中多播组成员信息的装置,其中所述多台路由器中的每一台向所述多台路由器中的其他路由器报告路由树信息,所述的装置包括第一路由器,所述的第一路由器用于接收从第二路由器传输的更新信息并包括多播组的更新信息,其中所述的第一路由器至少部分根据所述的更新信息和所述第二路由器所报告的路由树信息,确定所述的第一路由器是否必须向所述第一路由器的至少一台邻居路由器传输所述的更新信息,以便所述多播组的所有成员保持连接,所述第一路由器响应所述第一路由器必须传输所述的更新信息的肯定确定,向所述至少一台邻居路由器传输所述的更新信息。
22.根据权利要求21所述的装置,其中所述的更新信息包括所述多播组的标识符。
23.根据权利要求21所述的装置,其中所述的更新信息包括所述第一路由器的网络地址。
24.根据权利要求21所述的装置,其中所述的更新信息包括所述的第二路由器成为所述多播组成员的标识。
25.根据权利要求24所述的装置,其中路由树信息包括单播路由协议的源树,所述的第一路由器通过确定由所述第二路由器所报告的源树是否具有所述的第一路由器作为所述第二路由器被排除的子树的根,以及所述子树中所述第一路由器的至少一台邻居路由器是否不是所述多播组的成员,来确定所述的第一路由器是否必须传输所述的更新信息。
26.根据权利要求25所述的装置,其中所述的第一路由器还通过确定所述的第二路由器是否不是所述多播组的成员,来确定所述的第一路由器是否必须传输所述的更新信息。
27.根据权利要求26所述的装置,其中所述的更新信息包括时间戳,所述的第一路由器还通过确定所述的时间戳是否有效来确定所述的第一路由器是否必须传输所述的更新信息。
28.根据权利要求27所述的装置,其中所述的第一路由器还存储与所述多播组和所述第二路由器相联系的时间戳,其中所述的时间戳包括第一时间戳,所述的第一路由器通过确定所述的第一时间戳是否比所述的第二时间戳更新来确定所述的时间戳是否有效。
29.根据权利要求21所述的装置,其中所述的更新信息包括所述的第二路由器不再是所述多播组成员的标识。
30.根据权利要求29所述的装置,其中路由树信息包括单播路由协议的源树,所述的第一路由器通过确定由所述第二路由器所报告的所述源树是否具有所述的第一路由器作为所述第二路由器被排除的子树的根,以及所述子树中所述第一路由器的至少一台邻居路由器是否是所述多播组的成员,来确定所述的第一路由器是否必须传输所述的更新信息。
31.根据权利要求30所述的装置,其中所述的第一路由器还通过确定所述的第二路由器是否不是所述多播组的成员,来确定所述第一路由器是否必须传输所述的更新信息。
32.根据权利要求31所述的装置,其中所述的更新信息包括时间戳,所述的第一路由器还通过确定所述的时间戳是否有效来确定所述的第一路由器是否必须传输所述的更新信息。
33.根据权利要求32所述的装置,其中所述的第一路由器还存储与所述多播组和所述第二路由器相联系的时间戳,所述的时间戳包括第一时间戳,所述的第一路由器通过确定所述的第一时间戳是否比所述的第二时间戳更新来确定所述的时间戳是否有效。
34.一种在包括有多台路由器的多播组的网络中转发多播包的装置,其中所述多台路由器中的每一台向所述多台路由器中的其他路由器报告路由树信息,所述的装置包括第一路由器,所述的第一路由器用于接收来自网络中第二路由器的多播包,至少部分根据所述的控制信息和所述第二路由器报告的路由树信息,确定所述的多播包是否被所述的第一路由器转发,其中所述的第一路由器响应所述多播包被转发的肯定确定,向至少一台第三路由器转发所述的多播包。
35.根据权利要求34所述的装置,其中所述的多播包包括多播组的地址。
36.根据权利要求34所述的装置,其中所述的多播包包括所述多播包的源的地址。
37.根据权利要求34所述的装置,其中所述的多播包包括一个时间值,其中所述的时间值用于限制所述多播包在系统中允许停留的时间。
38.根据权利要求34所述的装置,其中所述的第一路由器还包括一个多播转发缓存,所述的多播转发缓存包括标识来自选定的源和选定的多播组的多播包是否应从所述的第一路由器转发的记录,如果所述的多播包是来自所述的选定的源并用于所述的选定的多播组,在进行了所述多播包被转发的肯定判断后,所述的第一路由器创建所述的记录。
39.根据权利要求34所述的装置,其中所述的第一路由器包括一个多播包转发缓存,所述的多播包转发缓存包括标识每个多播包最近被所述的第一路由器转发过的记录。
40.根据权利要求34所述的装置,其中所述第二路由器所报告的路由树信息包括单播路由协议的源树,所述的确定步骤包括根据所述的源树确定所述的第二路由器是否是从所述的第一路由器到多播包的源的最短路径中的下一跳,以及确定所述的源树是否在子树中有所述的第一路由器,所述子树中至少有一台路由器是多播组的成员。
全文摘要
公开了AD-HOC网络中通过在邻居路由器(100a-100i)间交换多播组更新信息和路由树信息的多播路由。路由器(100a-100i)根据更新信息和路由树信息传播多播组更新信息。路由器(100a-100i)也根据多播数据包中的控制信息以及路由树信息确定是否转发多播数据包。
文档编号H04L12/18GK1483266SQ01817022
公开日2004年3月17日 申请日期2001年8月31日 优先权日2000年9月6日
发明者J·J·加西亚-卢纳-阿塞韦斯, M·斯庞, J J 加西亚-卢纳-阿塞韦斯 申请人:诺基亚网络公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1