泛洪法生成数据包转发表的制作方法

文档序号:7663350阅读:174来源:国知局

专利名称::泛洪法生成数据包转发表的制作方法
技术领域
:本发明涉及在因特网中向目的节点转发分组的转发表生成技术,特别涉及在层次式交换网络的节点域内转发表快速收敛和流量均衡的-种方法。
背景技术
:层次式交换网络(中国专利申请03120998.X,以下简称层次网络)是一种拓扑结构按层次构造的网络,其地址空间也按照层次结构进行分配,拓扑结构的层次与地址结构严格匹配。它通过重新规定网络拓扑结构和地址分配方法,避免路由操作,实现数据包按照层次地址快速进行交换,从而提高了网络性能,简化网络的复杂度,适合构造高性能、可扩展、可管理、安全可靠的下一代互联网。从逻辑上看,层次式交换网络的骨干结构是一个树型结构。简单的树型结构有利于建设和管理网络,但同时也存在一些缺点,需要做一些改进。虽然因两个节点之间链路唯一而简化了路由,但足一条物理信道或单个物理节点的失效会导致该信道或节点下连的子树失去连接性。因此、层次网络不能只采用简单树型结构,必须有所改进。通过对树型结构进行扩展,采用基于逻辑节点,逻辑链路等扩展结构可以避免简单树型结构的缺点。逻辑节点是由多个物理节点互联而成的网络,结构与Internet中的自治域类似。从物理实现角度分析,由于逻辑节点(简称为"节点域")是由包含多个物理节点的网络构成,保证了容量的可扩展性和可靠性。数据包经过逻辑节点"转发"的过程实际是数据包在节点域内各个物理节点多次转发的过程。物理节点在转发数据包时,需要转发表指出下一跳。节点域需要一种生成转发表的方法。目前存在的数据包转发表生成方法有RIP(RoutingInformationProtocol)、0SPF(OpenShortestPathFirst)、IS-IS(IntermediateSystemtoIntermediateSystem)等。这些方法面向大规模、松散的自治系统,能够实现大规模的信息交换和路由计算过程。然而它们也存在许多不足,过程复杂,不易实现,路由收敛时间长,负载平衡能力差。当自治域较大时,其收敛时间可能会达到分钟级,造成TCP连接,多媒体数据流中断。由于节点域本身是一个规模有限,功能相对单一的系统,可以采用高性能、快速的转发表生成方法,从而减少收敛时间。本发明针对层次网络中节点域的特点,提出快速生成转发表的方法。对其它包交换通信场合,只要存在类似于节点域的网络拓扑,也可以使用本发明所提出的方法。与之相比,RIP、0SPF和EIGRP等存在维护困难、实现复杂、收敛时间长和负载平衡能力差等缺陷,下面对此进一步论述。OSPF是IETF组织开发的基于链路状态的自治域内部路由协议。在互联网上,它是得到广泛应用的协议之一。0SPF通过收集和传递自治域内的链路状态动态地计算路由。0SPF路由器与同一层区域内的其它路由器交换链路状态信息。其内容包括接口信息、邻居信息等。这样,每台路由器都收到了自治域中所有路由器发出的LSA(包含有链路状态信息)。这些LSA的集合组成了LSDB(链路状态数据库)。由于每一台路由器都发出了LSA,也收到其它路由器的LSA,那么LSDB就能够真实反映自治域的网络拓扑。0SPF路由器利用LSDB,使用SPF算法计算到各路由器的最短路径,形成到达其它路由器的下一跳信息。SPF算法是构建一棵以自己为根的最短路径树,算出到自治域中其它各节点的下一跳。SPF算法虽然得到广泛应用,但是在实现和应用中仍存在一些问题。由于路由器要记录整个网络状况,当网络较大时,LSDB会变得庞大,占用了很多存储空间。SPF算法需要大量计算,要耗费大量CPU资源和存储器资源。为了能够在大规模网络中应用,OSPF提供了区域划分功能,即分层功能。维护人员根据需要把路由器放在不同的区域(Area)中,两个不同的区域通过区域边界路由器(ABR)相连。在区域内部的路由信息同步,在两个不同区域之间的路由信息传递,由区域边界路由器(ABR)完成。一个区域内的OSPF路由器只保留本区域内的链路状态信息,没有其他区域的链路状态信息。这样,减小了链路状态数据库,降低了生成树算法的计算量。同时,当一个区域中的拓扑结构发生变化时,其他区域中的路由器不需要重新进行计算。显然,这种变通方法增加了系统实现和维护的复杂度。0SPF能根据接口的速率、连接可靠性等信息,自动得到接口路由优先级,不过通往同一目的地的不同优先级路由,往往只会选择优先级较高的转发,不同优先级的路由,不能实现负载分担。这使OSPF流量的负载均衡能力很弱,无法根据网络拥塞状况实现有效调节。OSPF协议可能会引起自治域出现短暂环路。从SPF算法上分析,OSPF协议所生成的路由信息不存在环路,不过在路由信息切换过程中仍存在临时环路。每个0SPF路由器单独计算路由,替换旧路由信息,这个过程并不能保证所有路由器同步地进行。不同步使部分路由器使用新路由表,而部分使用旧路由表,从而生成临时环路。单纯分析旧路由信息,不存在环路;新路由信息也是如此。不过路由表切换的时间无法实现统一,自治域内新旧路由信息夹杂会导致临时性的路由环路。从总体来看,0SPF的弱点有四点1)算法复杂,对CPU、存储资源占用较多;2)区域划分功能使0SPF配置相对复杂,网络维护人员需要较高的网络知识水平才能配置和管理0SPF网络;3)只能根据固定指标如带宽、延时等信息提供负载均衡,无法根据网络实时拥塞状况自动调节路由;4)存在临时环路。RIP和EIGRP也是Internet上得到广泛应用的域内路由协议,均采用距离矢量算法。RIP是一种传统的路由协议,会产生慢收敛(slowconvergence)或无限计数(counttoinfinity)问题从而引发不一致性。RIP缺乏动态负载均衡能力。EIGRP是Cisco私有的协议,它采用了改进后的距离矢量算法——DUAL算法。这种算法实际上是将不确定的路由信息(activeroute)散播(向邻居发query报文),得到所有邻居的确认后(r印ly报文)再收敛的过程,邻居在不确定该路由信息可靠性的情况下又会重复这种散播。在理论上,DUAL算法收敛速度很快,不过在某些情况下可能会出现路由信息一直处于active状态。如果在activeroute的DUAL计算过程中,该路由的后继(successor)metric发生变化,就会进入多重计算。这些都会影响DUAL算法的收敛速度。另外DUAL算法的实现很复杂,路由器本身需要记录大量的临时数据,路由收敛过程中,路由器之间要进行大量交互。EIGRP提供了一定的多路径负载均衡能力,它可以根据接口速率、拥塞状况、可靠性等属性,自动生成路由优先级。根据这些信息自动匹配接口的流量,达到几个接口负载分担的目的。不过这些负载均衡能力需要复杂的计算。从总体上看,EIGRP有4个方面的缺点1)它是Cisco的私有协议;2)算法复杂,需要大量的CPU和存储资源;3)负载均衡需要复杂计算;4)收敛时间较长。由以上论述可知,路由协议各有优缺点,它们公共的问题包括三个方面,一、实现过程复杂,占用大量的存贮空间和计算资源;二、负载均衡能力较弱;三、收敛时间较长,难以满足实时多媒体传输要求。鉴于以上情况,研究一种计算简单、能够实时均衡负载、收敛速度快的转发表生成方法是必要的。
发明内容提供一种操作简单、实现简单、收敛快速、无环路和负载均衡的转发表生成方法是本发明的目的。在详细论述
发明内容以前,先介绍四个概念反向端口,发送端口,接收端口和反向负载。它们与双工信道的特点相关。双工信道即是节点从信道接收数据包,也从同一信道发送数据包。一条信道在逻辑上会有两个端口,一个用于接收数据包,称为接收端口;另一个用于发送数据包,称为发送端口。从接收端口到达的数据包看来,发送端口方向正好相反,也称之为反向端口。发送端口用于发送数据包,端口负载称之为反向负载
发明内容包括四个部分实现思路、数据结构、功能流程和适用说明。本发明的实现思路是利用数据包泛洪(packetflooding)传输方式生成转发表。数据包泛洪传输有两个过程,1)源节点向所有内部端口发送一份数据包拷贝;2)其它节点在没有收到重复数据包的情况下,向所有内部端口(接收端口除外)发送一份拷贝,否则丢弃。泛洪传输有两个特点,一是节点收到的第一个数据包所经过的路径一定是延时最短的路径;二是节点域中所有节点都会收到数据包,与广播类似。本发明利用这两个特点实现数据包转发表生成。当节点A以泛洪方式在节点域内部广播数据包,其它节点会得到目标地址为A的转发表项。假设B从端口P1第一次收到A发送的某个数据包,将来节点B转发目标地址为A的数据包时,就从P1端口发送。因此、任一节点只要收到节点域内其它所有节点以泛洪方式所发送的数据包,就能够得到完整的转发表。通过改变洪泛包(以泛洪方式传输的数据包)在传播过程中的延时,能够调整转发表项,实现负载均衡。转发表项生成依赖数据包在沿途传播过程中的延时,除了延时最小的包能创建转发表项外,其它包被当作重复包丢弃。延时包括四部分处理延时、队列等待延时、发送延时和链路传播延时。除了队列等待延时,其它延时都是固定的。通过把生成转发表项的数据包设置为一种特殊的控制包,以较高优先级转发,从而忽略队列等待。根据反向端口拥塞程度,设置相应的延迟时间,进而有效地均衡在各条链路上的流量,这要求节点在转发时能够等待一个预设的时间段,即存在一个等待过程。本发明所使用的数据结构有三种:泛洪包、泛洪包记录表和本节点序列号。本发明使用两种泛洪包,分别为导向包和通知包。"导向包"用于生成转发表项,"通知包"用于通知其它节点泛洪。由于在拓扑改变后要进行全网泛洪,发现拓扑改变的节点要用"通知包"通知其它节点。泛洪包结构含有三个部分包标识、源地址和序列号,如图1。包标识指明数据包类型为"导向包"或"通知包"。源地址是最初泛洪的节点ID号。序列号用于抑制重复包。在具体实现中,泛洪过程首先要解决重复包问题。由于网络中存在环路,数据包会返回源节点,引起重复泛洪。节点可以记录下已经收到过的泛洪包,如果再次收到,就直接丢弃处理。其思路是在包头设置标识序列号,节点在收到后,根据序列号判断是否收到重复包。如果收到的数据包的序列号已有记录,就直接丢弃。节点为了抑制重复包,必须存贮已经收到的泛洪包。数据结构为泛洪包记录表,包括四个部分包标识、源地址、序列号和年龄。包标识、源地址和序列号取自收到的泛洪包。记录项存储时间有一定限制。维护人员为记录设置一个最长时间。当记录项被插入泛洪包记录表时,"年龄"字段是维护员设置的最大时间。随后,每经过一段时间就自动减l,当减少到o时,记录被删除。本节点序列号,是一个全局的数据结构,从0开始,每泛洪一次,序列号自动加l。使用6bytes存贮,保证了序列号在足够长时间(几百年)内不会重复。每个节点执行四个功能泛洪"导向包"、接收并转发"导向包"、泛洪"通知包"、接收并转发"通知包"。其中接收到这两种包时必须要查询是否己经收到过,因此有一个"识别并记录新泛洪包"的子功能。节点使用两种事件"时间事件"和"拓扑改变"。节点为了能够有效均衡流量,有必要周期性发导向包。这需要一个时间事件来触发导向包泛洪,即间隔一段时间泛洪一次。当网络拓扑改变时,由通知包触发导向包泛洪。拓扑改变有多种原因,例如网络链路出现故障,增删端口等。本发明只关注转发表生成过程,其它模块在发现网络拓扑改变后,可以触发本发明的功能。一、新泛洪包识别与记录此功能有两个任务——判断和记录。判断是否是重复包或陈旧包。对于同一类型的包,陈旧包已经不再起作用,也有必要丢弃。序列号小的包要比大的陈旧。处理过程分成下面三步1)根据包标识和源地址为索引,在泛洪包记录表查询相应的包记录。如果査找到记录项,进入步骤2),否则进入步骤3)。2)比较序列号大小,当序列号小于或等于时,中止下面的过程,返回重复包标识;否则,修改记录表项,序列号改为新序列号,返回非重复包标识。3)在泛洪包记录表中插入相应的包记录,源地址和序列号取自泛洪包。返回非重复包标识。二、"导向包"泛洪当节点接收到事件——"时间事件"或者网络拓扑改变事件(收到"通知包"),节点要泛洪"导向包",所有的域内端口都要被发送一份。数据包各字段内容如下包标识标示这是一个导向包,此字段由开发人员约定(例如设为129)。源地址此字段设为本节点的ID号(在节点域内节点的唯一标识)。序列号此字段的值等于本节点序列号。用于唯一标识这个数据包,当其它节点收到这个导向包后,记录下序列号和源地址。如果再收到某个导向包,这两个字段存有记录,则直接丢掉此"导向包"。三、"导向包"接收与转发当节点收到导向包后,处理过程分成下面几步1)记录下序列号、源地址和接收端口。2)根据接收端口,设置"导向包"等待时间,计算公式为C为维护员设置的常数,一般情况下为1。B为反向端口带宽。丄为反向负载,可以认为是数据包队列平均长度。w'是维护员设置的常数。假设导向包接收端口与转发表记录相一致,则使等待时间减少w',否则w'为0。其目的在于减少转发表的震荡。当节点收到两个导向包后,如果二者延时差距很小,转发表项就能够不被修改,减少震荡。在图2中,假设节点7收到源自节点1的"导向包",是由节点5转发过来的。在节点7的转发表中,目的地为节点1的下一跳是节点5,那么w'不为0。这样能够减少等待时间,节点5转发的导向包被选择的可能性更高,从而在一定程度上减少转发表的修改。当『为负值时,等待时间为0,即无需等待。在等待时间过去后,继续下面的处理过程。3)执行"新泛洪包识别与记录"过程,如果返回结果是"非重复包",就执行下面的过程,否则中止。4)修改转发表,目标地址设为"源地址",转发端口为"接收到的端口"。5)除了"接收到的端口"外,向其它域内端口泛洪此"导向包"。四、"通知包"泛洪当节点发现节点域内网络拓扑变化,向外泛洪"通知包"。本节点的域内端口都被发送一份。数据包各字段内容如下包标识标示这是一个"通知包",此字段由开发人员约定(例如设为130)。源地址此字段设为本节点的ID号(在节点域内节点的唯一标识)。序列号本节点序列号。五、"通知包"接收与转发节点收到一个"通知包",执行如下过程1)记录下序列号、源地址和接收到的端口。2)执行新泛洪包识别与记录过程,如果返回结果是"非重复包",就进行下面的过程,否则中止。3)触发"导向包"泛洪。4)除了"接收到的端口"夕卜,向其它域内端口泛洪此"通知包"。对本方法适用情况的几点说明。1)两节点之间的网络链路要求是全双工通道,双向延迟时间相同。目前的地面骨干信道均能满足此要求。2)如果节点每隔一段时间自动触发一次导向包泛洪,在间隔时间足够短(例如20毫秒)的情况下,可以取消拓扑改变事件,取消泛洪通知包。这样既可以有效地处理网络拓扑改变事件,又能縮短转发表收敛时间。3)本发明存在很大的扩充空间。通过在导向包内增加一些字段,如MTU、带宽、经过的节点等信息,从而能够提供一定的策略路由。例如当节点A不愿意转发目的地为节点B的数据包时,当A收到B泛洪的导向包,停止泛洪即可。图1导向包结构.图2实施例节点域网络拓扑图。图3a-d节点1在节点域内泛洪"导向包"的过程。具体实施例方式在实施例中,主要描述转发表生成过程、自动负载均衡和拓扑改变后转发表收敛。所有节点周期性泛洪导向包,从而把负载状况反映在转发表上。当网络拓扑改变事件后,感知到事件的节点泛洪通知包,收到通知包的节点泛洪导向包,从而重新生成转发表,完成收敛。图2是一个包含有9个节点的节点域。每个节点的处理能力相同,任意两节点之间的带宽是1000Mbps,延时为lms。节点间隔固定周期向外泛洪"导向包"。从节点1到节点9,间隔50ms依次泛洪。节点9泛洪完,下一时间点转到节点l,如此往复循环不停。除了固定周期外,在节点域拓扑改变后,发现变化的节点泛洪"通知包"。收到通知包的节点触发以自身为源节点的"导向包"泛洪。图3a-d描述了节点l泛洪导向包的过程。在图3a中,节点1向节点4泛洪。在图3b中,由于节点4第一次收到,所以向节点2、节点3、节点5和节点6泛洪。节点2收到后,由于只有一条链路与节点3相连,停止泛洪。节点5和节点6收到后向节点7泛洪,如图3c。节点7收到了两份相同的"导向包",假设节点5泛洪的"导向包"快一点,它丢弃节点6泛洪的"导向包"。如图3d,节点7向其它端口泛洪从节点5收到的"导向包"。由于节点6已经从节点4收到导向包,因此丢弃节点7发送的导向包。图3也反映了节点1泛洪导向包所占用的带宽。由于每个节点在每条单向信道上最多发送一次导向包,占用带宽的上限能够计算出来。图3所示的网络共有9条链路,即18条单向信道。图3a-d所示的泛洪过程总共发送了IO个导向包。即使所有节点都泛洪一次,单向信道传输的数据也不会很多。由于导向包很小,一般的节点域或自治域内节点数不会太多,所以占用的带宽并不多。从图2看出,节点7和节点4之间有两条信道可供使用。转发表生成过程要尽可能使流量在两条信道上均衡流量。为了说明方便,我们假设任意两节点之间互有相同流量100kbps,当转发表为空时,则不发送流量。在一开始,节点的转发表是空的,节点1至节点9按时间段依次泛洪导向包。表1至表6描述了节点7的部分转发表。当节点7从节点5收到节点1的"导向包",生成一条转发表项,如表1所示。泛洪完成后,节点7、节点8和节点9都向节点1发送流量,那么节点7向节点5的总流量是300kbps。下一个时间点,节点2开始泛洪,节点7收到导向包。由于信道存在流量,那么根据"导向包"处理过程,节点5转发的"导向包"会等待一段时间,那么节点6转发的先处理,最后形成的转发表如表2。泛洪完成,节点7、节点8和节点9都向节点2发送流量,那么节点7向节点6的总流量是300kbps。表3、表4分别描述的是节点3和节点4泛洪导向包后,节点7的转发表。从表内容可见,节点7和节点4之间的信道能够根据负载被均衡使用。表5和表6说明随后的时间里,在负载和拓扑不变情况下,转发表项不会随意更改,路径固定。<table>tableseeoriginaldocumentpage10</column></row><table>表l交换机7在时刻1的部分转发表<table>tableseeoriginaldocumentpage10</column></row><table>表2交换机7在时刻2的部分转发表<table>tableseeoriginaldocumentpage10</column></row><table>表3交换机7在时刻3的部分转发表<table>tableseeoriginaldocumentpage10</column></row><table>表4交换机7在时刻4的部分转发表<table>tableseeoriginaldocumentpage11</column></row><table>表5交换机7在时刻10的部分转发表<table>tableseeoriginaldocumentpage11</column></row><table>表6交换机7在时刻11的部分转发表当某节点检测到拓扑变化,它在节点域内广播"通知包",其它节点收到通知包后,触发"导向包"泛洪,重新生成新的转发表项。假设在某个时刻,节点5发生故障。节点4和节点7在感受到网络拓扑改变后,触发"通知包泛洪流程"。节点收到通知包后会触发以自身为源点的"导向包泛洪",实现转发表收敛。只要网络是连通的,每个节点会收到两次通知包,相应地会泛洪两次。由于泛洪不会给网络带来太大的压力,两次泛洪不会产生严重影响。当节点5发生故障后,转发表收敛时间能够估计出来。由于各节点情况类似,不妨以节点l为例来说明。当节点4的通知包到达节点1,节点l泛洪导向包,经节点4,节点6,节点7,最后到达节点9。所经历的时间是通知包和导向包在网络中传播的时间。这个时间主要是传播时间,转发时间和导向包的等待时间。传播和转发时间是由网络带宽和地理位置等特性决定,并不会改变。由于电磁信号传播速度很快,网络带宽很高,传播和转发时间并不会很大。导向包等待时间与网络负载状况和设置相关。由于节点最大队列长度受限,即使以最大长度来计算,导向包等待时间并不会很长。因此、从总体上看,转发表收敛的时间非常短,以覆盖全中国的网络来估计,其时间不多于100毫秒。以上实施例描述了导向包生成转发表项、根据负载生成转发表和转发表收敛过程。本发明实现了易于实现,转发表收敛迅速和有效实现负载均衡的目的。权利要求1、一种采用泛洪方式生成数据包转发表的方法,该方法包括当节点域网络拓扑改变后,感知到变化的节点生成通知包和导向包,并以泛洪方式发送出去;当其它节点收到导向包后,根据反向负载、反向端口带宽和转发表原有记录三个要素计算出等待时间,在经过所述的等待时间后,查找泛洪包记录表,判断是否为新包、旧包或重复包,如果导向包是新包,根据导向包的源地址和接收端口修改转发表,如果是旧包或重复包,丢弃导向包,退出任务;当其它节点收到通知包后,查找泛洪包记录表,判断是否为新包、旧包或重复包,如果通知包是新包,以本节点为源头触发导向包泛洪,如果通知包是旧包或重复包,丢弃通知包,退出任务。2、如权利要求1所述一种采用泛洪方式生成数据包转发表的方法,其特征在于,等待时间根据反向负载、反向端口带宽和转发表原有记录等3个要素计算,公式如下,其中『为等待时间,C为维护员设置的常数,^为反向端口带宽,Z为反向负载,w'为维护员设置的常数,当『结果为负值时,无需等待。3、如权利要求2所述的一种采用泛洪方式生成数据包转发表的方法,其特征在于,当导向包接收端口与转发表记录相一致时,w'为维护员设置的常数,否则为0。4、如权利要求1所述一种采用泛洪方式生成数据包转发表的方法,其特征在于,如果导向包是新包,修改转发表,以导向包源地址为索引査询转发表,若有匹配的记录项,则修改记录项中转发端口字段值为导向包的接收端口,若没有匹配的记录项,在转发表中插入新记录项,新记录项中目的地址字段值设置为导向包的源地址,转发端口字段值设置为导向包的接收端口。全文摘要本发明涉及一种生成转发表的方法。它以数据包泛洪为基础,反向生成转发表。根据反向端口拥塞程度,调整泛洪包在节点中的等待延迟,进而实现流量均衡,减少转发表项的变动。通过泛洪网络拓扑变化事件或者缩短导向包泛洪周期,减少转发表收敛时间。总之,此方法具有实现简单、收敛迅速和均衡流量的特点。文档编号H04L12/56GK101436980SQ200710166168公开日2009年5月20日申请日期2007年11月12日优先权日2007年11月12日发明者吕红蕾,俊李,游军玲,牛广锋,葛敬国,鄂跃鹏,钱华林申请人:中国科学院计算机网络信息中心
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1