技术领域
[0001] 本发明涉及一种路由方法,尤其涉及在复杂网络拓扑结构下实现的自适应路由方法。
相关背景技术
[0002] 路由选择协议使路由器可以找到一条从源端到目的端的路径。所有的IP路由选择协议都有方法发现IP地址前缀的可达性,记忆对于每个可达前缀发往该前缀的业务流所要经过的下一跳路由器。当网络发生变化时,路由选择协议持续不断地重新计算前缀的可达性以及通往可达前缀的可用的下一跳路由器,该过程称为收敛。对任何路由选择协议来说,随着网络规模与复杂性的不断增长,其收敛时间也会不断增长。
[0003] 当今正使用的两类路由选择技术为距离矢量路由选择算法和链路状态路由选择算法。
[0004] 在距离矢量协议中,路由器协作完成分布式计算任务。距离矢量路由选择算法分别计算达到每个目的前缀的最佳路径,通常采用一个简单的度量值来衡量路径的优劣,尽量寻找度量值最小的路径。该算法的主要优势是简单,适合于路由聚集。
[0005] 与距离矢量路由选择算法所采用的递增额的分布式计算不同,链路状态路由选择算法采用了一种冗余分布式数据库方法。按照链路状态路由选择算法,数据库提供关于每个路由器的局部环境信息:该路由器与局部网段和邻居路由器之间的链路,以及每条链路被赋予的代价。链路状态路由选择算法不用通告每个目的端的路径的代价,而是通过链路状态路由选择算法通告局部的网络链路和状态。这些链路状态通告被发送给其他所有的路由器。最后的结果是所有的路由器都能获得相同的由收集到的通告所组成的数据库,这个数据库描述了当前的网络地图。根据网络地图,每个路由器可运行最短路径算法,生成到达每个目的前缀的最短路径。
[0006] 目前Internet上有很多动态路由协议,包括OSPF、RIP、BGP等,但这些协议目前都应用在Internet上,在一些带宽有限的专用网络中,并不适用。路由算法要求正确、简单、健壮、稳定、公平、最优等,在专用网络带宽有限,信道情况复杂,数据流不均的情况下,并没有一种适用性高的路由算法。
具体实施方式
[0033] 下面结合附图和实施例对本发明作进一步的描述。
[0034] 请参见图1,在无线网络中使用距离矢量路由选择算法,在有线网络中使用链路状态路由选择算法。本发明的自适应动态路由方法的实质就是:在网络带宽限制严格(一般传输速率低于128kbit/s,比如无线网络信道)的情况下实行距离矢量路由选择算法,同时在这种算法中维护统一的路由信息表。在网络带宽限制宽松(一般传输速率高于128kbit/s,比如有线网络信道)的情况下实行链路状态路由选择算法,同时在这种算法中和距离矢量路由选择算法一起维护统一的路由信息表。
[0035] 在带宽限制严格的场合(例如无线链路状态下)使用距离矢量路由选择算法,这一算法中采用的协议参考了IP网络上通用的RIP协议(路由选择信息协议)第二版(RFC1723,以下简称为RIPv2协议)。为了适应专用网络的特点,对RIPv2协议进行了大规模的改良,删除了RIP报文中大量的无用字段和保留字段,以节省带宽。并且,不同于RIP固定了最大跳数为16,本协议的最大跳数的限制是可以根据要求人为设置的,缺省为10(即默认10跳即定义为路由不可达),最大为15。
[0036] 图2示出了距离矢量协议状态机,状态机共有4个状态:启动、静默、查询、正常。以下分别对这4个状态进行说明。
[0037] 启动:当设备的某个端口启动了协议,首先进入的就是启动状态,在启动状态下协议对这一端口进行相关的配置,准备在这一端口上接收或发送协议报文,并判断这一端口是否应进入静默状态,否则进入查询状态。
[0038] 静默:如果端口已经配置了静默,该端口进入静默状态。在这一状态下,设备不通过这一端口发送任何协议报文,但是接收来自这一端口的协议报文并更新自己的路由信息表。
[0039] 如果用户对一个处于静默状态下的端口进行配置,关闭其静默,则这一端口进入查询状态。
[0040] 查询:如果这一端口没有配置静默,则进入查询状态。设备通过这一端口发送查询报文。查询报文有两个作用:一是通知所有接收到该查询报文的设备,发送一条反馈报文来汇报那台设备的路由信息表;二是通过该端口向外界通告查询报文发送者本身的路由信息表。
[0041] 当该端口处在查询状态时,如果收到来自其他设备的查询报文或反馈报文时,也要更新路由信息表,并视情况给出相应反馈。该状态在发送完查询报文之后,无条件进入正常状态
[0042] 正常:查询状态之后,该端口进入正常状态。在该状态下,设备在一个(T+/-t)的时间间隔内,通过该端口向外界通告自身的路由信息表。其中T是一个用户可以配置的基准时间间隔,默认配置是30秒。t是一个随机生成时间间隔,正负范围控制在T/10内,即缺省为3秒。例如,如果用户配置了基准时间间隔为20秒,即T=20,t=2,那么设备会在(18s~22s)内,每次随机挑选一个时间作为定期发送反馈报文的定时器,当定时器超时,就会发送一个反馈报文来通告自己的路由信息表。
[0043] 当该端口在正常状态下收到一个查询报文时,设备要更新自己的路由信息表,并且向外界发送反馈报文。
[0044] 本协议支持触发更新。不同于一般的定时更新,当设备中的某一条路由条目的度量值被更新了,设备在t(即T/10)时间内发送一条反馈报文。但是该报文仅通告更新的路由条目,而不是所有的路由条目。之所以不是立即更新,而是等待t时间后进行更新,是考虑到了路由可能由于包括链路状态不稳定在内等多种原因,在短时间内被不正常的快速反转。
[0045] 图3示出了本发明的自适应动态路由方法的细化步骤,距离矢量路由选择算法和链路状态路由选择算法在进行一系列的操作之后会形成统一的路由表,然后再从统一的路由表中提取信息,继续扩散,形成新的路由信息。请参见图3,下面是对应用在本发明的自适应动态路由方法中的距离矢量路由选择算法的进一步描述。
[0046] 步骤S100:初始化。
[0047] 步骤S 101:获取节点的窄带路由报文,精简报文内容。
[0048] 步骤S102:将路由跳数与传输时延结合,合并宽带窄带路由信息,形成统一报文。
[0049] 步骤S103:将从步骤S108获得的路由信息与自身路由表进行比对,采用不带毒性逆转(poison reverse)的水平分隔(split horizon)无效报文。
[0050] 步骤S104:搜寻邻居,在邻居超时时及时删除。
[0051] 步骤S105:整合报文,将整合后的报文扩散至各个窄带节点,在收到其余节点扩散过来的信息后,选择最优路由。
[0052] 步骤S106:在多信道的情况下,除了选择最优路由之外,还保存一条备用路由,以防止信道故障。
[0053] 步骤S107:形成距离矢量路由表,存入统一的路由信息表中。
[0054] 步骤S108:从统一的路由信息表中提取宽带路由信息。
[0055] 在网络带宽限制不严格的场合(例如有线链路状态下)使用链路状态路由选择算法。系统网络中各节点每一接口主动测试所有邻接节点的状态(即发送hello报文),同时每一节点定期将链路状态(LSA)传播给所有其它的路由选择节点,根据接收到的链路状态报文,路由节点定时更新网络拓扑图,利用最短路径算法之一的Dijkstra算法计算最短路由。
[0056] 路由启动后,各接口主动发送hello报文请求(该报文信息中包括本节点地址),同时接收邻居节点hello报文请求及应答,记录该邻居节点地址,形成邻接关系,并得出接口代价。
[0057] 各节点根据邻接关系组装本地的LSA分组,同时接收其它邻居节点发至的LSA分组,加入链路状态数据库;将各分组扩散至各邻居节点,最后在全网络形成统一的链路状态数据库即网络拓扑图。邻居关系表及链路状态数据库都需要定时更新维护。
[0058] 系统采用Dijkstra算法计算最佳路由。即在网络中,两个节点之间一条路由的代价是它所经过的链路权值之和,因此这两点间的最佳路由为两点间所有可能路由中具有最小代价的那条路由。所谓权值也称代价,可考虑以距离、信道带宽、平均通信量、通信开销、队列平均长度、时延等因素的函数计算得出。
[0059] 根据链路状态数据库利用Dijkstra算法得出下一跳路由表,结合本地邻居表得出出接口号,形成最终路由信息表,一旦数据库或邻居节点表更新,则整个路由信息表同步更新。
[0060] 距离矢量路由选择算法和链路状态路由选择算法都可以完成路由信息表的学习,在路由信息表中会同时存在由两种算法学习得到的路由信息。因此,距离矢量路由协议通告中的跳数将同链路状态路由协议的权值结合成为一致的路由权值,使两者共同维护路由信息表,以保证在无线/有线网络中路由信息表的完整性。
[0061] 距离矢量协议中通告的路由信息表信息为完整信息(即包括根据链路状态协议学习到的路由信息),而链路状态协议中增加了一条LSA通告,将距离矢量协议学习到的路由信息扩散至整个协议网络,实现两者结合。
[0062] 请参见图3,下面对应用在本发明的自适应动态路由方法中的链路状态路由选择算法进行进一步的说明。
[0063] 步骤S200:创建初始链路状态数据库。
[0064] 步骤S201:发送查询报文,获取邻居结构,形成宽带链路状态通告。
[0065] 步骤S202:根据从步骤S206获取到的窄带路由信息形成窄带链路状态通告并将窄带路由信息与自身路由表进行比对,合并宽带链路状态通告后生成链路状态通告,并形成统一报文。
[0066] 步骤S203:将合并后的链路状态通告泛洪到各个邻居节点。
[0067] 步骤S204:运用最短路径路由选择算法计算出最优路径。
[0068] 步骤S205:形成链路状态路由表,存入统一的路由信息表中。
[0069] 步骤S206:从统一的路由信息表中提取并形成窄带链路状态通告。
[0070] 上述实施例是提供给本领域普通技术人员来实现或使用本发明的,本领域普通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书提到的创新性特征的最大范围。