一种负载分担方法和设备的制作方法

文档序号:7656171阅读:121来源:国知局

专利名称::一种负载分担方法和设备的制作方法
技术领域
:本发明涉及通信报文的路由
技术领域
,特别涉及一种负载分担方法和设备。
背景技术
:目前实现路有负载分担的主要有等价路由技术和非等价路由技术。其中,非等价路由技术为到一个目的地存在通过几个不同链路的路径,这些路径具有不同的开销,IP报文在这几个链路间按照链路的开销,按比例轮流发送。非等价路由技术实现的负载分担,其优点是进一步提高链路利用率,缺点是协议及厂商支持相当少,容易引起路由环路,不推荐使用。等价路由技术为去往目的地有多条开销相同的路径,报文可以被分发到不同路径上,以便实现对于流量的负载分担。其中利用等价路由技术实现负载分担有两种基本方式,分别是逐包转发和逐流转发。逐包转发是指每个包单独的选择传送路径。图1即为逐包转发进行负载分担的示意图。如图1所示,系统中设置有A、B、C、D四个交换机,存在两条数据流到达交换机B,每条数据流各有三个数据包,其中,由数据包1、数据包2和数据包3组成的数据流为第一数据流,由数据包4、数据包5和数据包6组成的数据流为第二数据流。在采用逐包转发时,属于一个数据流的不同数据包可能通过不同的路径转发,当它们到达目的节点时,可能会导致报文的乱序。例如,交换机B将l,4,6转发给A,将2,3,5转发给C,那么假设交换机C转发的速度快,那么D就会先收到数据包2,3,5,对于两条流来说都是乱序而且是不完整的,需要等经过A的数据包到达后重新组合。逐流转发是指每条流选用单独的传送路径。图2即为逐流转发进行负载分担的示意图。如图2所示,系统中交换机的配置与图1所示的相同,同样有两条数据流到达交换机B,分别为由数据包l、数据包2和数据包3组成的第一数据流,以及由数据包4、数据包5和数据包6组成的第二数据流。在采用逐流转发时,一般是根据每条流的源IP进行哈西(HASH),找到与该数据流对应的出接口,然后将报文从找到的出接口转发出去。这种方式下,有可能存在多条流同时哈西(HASH)到一个出接口,而其它的路径空闲,没有报文可以传输。例如,有可能像图2所示,将第一和第二数据流都哈西到B-C之间的路径上,而B-A-C这段路径,虽然和B-C之间的路径是等价的,但是对于第一和第二数据流的转发来说,B-A-C这段路径并没有起到负载分担的作用。由上述对逐包转发和逐流转发的描述可见,对于逐包方式进行负载分担,能够实现精确的负载分担,但是报文容易乱序;对于逐流方式进行负载分担,能够保证报文顺序,但不能根据网络的状况作出调整,有可能使多条流同时占用一条路径,不能有效地进行负载分担。
发明内容有鉴于此,本发明提供一种负载分担方法和设备,能够既保证报文的有序传输,又保证精确的负载分担。为实现上述目的,本发明采用如下的技术方案一种负载分担方法,预先为指向报文转发出接口的报文转发信息设置对应的加纟又^直,该方法包4舌获取数据流转发的统计信息;根据获取的统计信息,更新报文转发信息对应的加权值;在进行数据流转发时,若确定进行负载分担,则确定能够进行负载分担的各个出接口,并根据指向所述各个出接口的报文转发信息所对应的加权值,在所述各个出接口中选择进行数据流转发的出接口,将数据流从该出接口转发。较佳地,所述获取数据流转发的统计信息为接收按照统计流上报机制上报的统计信息。较佳地,所述获取数据流转发的统计信息为按照预设的机制查询数据流转发的统计信息。较佳地,在确定所述各个出接口后,选择进行数据流转发的出接口前,该方法进一步包括查询当前数据流的统计信息,并更新报文转发信息对应的力口才又^f直;所述根据指向各个出接口的报文转发信息所对应的加权值选择出接口为根据更新后指向所述各个出接口的报文转发信息所对应的加权值选择出接口。较佳地,所述根据获取的统计信息更新报文转发信息对应的加权值为根据获取的统计信息中包括的报文转发信息和该报文转发信息对应的报文转发量,更新相应报文转发信息对应的加权值。较佳地,所述报文转发信息包括报文转发的目的IP地址和出接口。较佳地,所述为指向报文转发出接口的报文转发信息设置对应的加权值为当创建任意等价路由时,为该等价路由的报文转发信息设置对应的加权值,并将该加权值置为初始值。较佳地,所述报文转发信息包括报文转发的出接口。较佳地,所述为指向报文转发出接口的报文转发信息设置对应的加权值为当创建路由时,为该报文转发信息设置对应的加权值,并将该加权值置为初始^f直。较佳地,所述加权值为累计转发报文量;所述更新报文转发信息对应的加权值为提取统计信息中包括的报文转发信息和报文转发信息对应的报文转发量,将该报文转发量累加到相应出接口对应的加权值中。较佳地,所述根据指向所述各个出接口的报文转发信息所对应的加权值选择进行数据流转发的出接口为按照负载分担比例,在所述报文转发信息对应的加权值中选择一个加权值,并将该加权值对应报文转发信息所指向的出接口作为进行数据流转发的出接口。较佳地,当所述负载分担比例为等比例分担时,所述选择一个加权值为,选择加权值中最小的一个。较佳地,当报文转发信息包括报文转发的目的IP地址和出接口时,该方法进一步包括当加权转发表中的任意加权值超出最高门限时,确定与该加权值对应的报文转发信息所指向出接口到达同一目的地的所有出接口,将指向确定的所有出接口的报文转发信息对应的加权值置为初始值;或者,定时将加权转发表中的所有加权值置为初始值;或者,当增加或修改任意一条等价路由的信息时,确定与该等价路由相关的所有报文转发信息,将确定的所有报文转发信息对应的加权值置为初始值;或者,当删除任意一条等价路由的信息时,在加权转发表中删除该等价路由的对应的表项;当报文转发信息包括报文转发的出接口时,该方法进一步包括当加权转发表中的任意加权值超出最高门限或者到达定时时间时,将加权转发表中的所有加权值置为初始值;或者,当路由表中对应一出接口的所有路由项均删除后,在加权转发表中删除该出接口对应的表项。较佳地,所述确定到达数据流目的地的各个出接口为将以数据流目的地为索引查找到的对应的出接口,确定为所述到达报文目的地的各个出接口。较佳地,所述将数据流从该出接口转发包括在对任意数据流的首个到达报文进行转发时,将该报文从所述选择的出接口转发,并进一步将数据流信息和选择的出接口信息对应保存在快速转发表中;在对数据流后续报文进行转发时,利用快速转发表进行转发。一种网络中的交换设备,包括管理单元、出接口选择单元和数据流转发单元,管理单元,用于为指向报文转发出接口的报文转发信息设置并保存对应的加权值,获取数据流转发的统计信息;并根据获取的统计信息,更新保存的报文转发信息对应的加权值;数据流转发单元,用于在进行数据流转发时,确定是否进行负载分担,并确定能够进行负载分担的各个出接口,通知所述出接口选择单元在确定的各个出接口中选择一个,接收所述出接口选择单元返回的出接口,将数据流从该出接口转发;出接口选择单元,用于接收数据流转发单元的选择出接口通知,根据所述管理单元保存的指向所述各个出接口的报文转发信息所对应的加权值选择进行数据流转发的出接口,返回给所述数据流转发单元。较佳地,所述管理单元包括统计信息接收子单元和加权值管理子单元;所述统计信息接收子单元,用于接收按照统计流上报机制上报的统计信息,并提供给所述加权值管理子单元;所述加权值管理子单元,用于设置并保存报文转发信息对应的加权值,并根据统计信息接收子单元提供的统计信息,更新报文转发信息对应的加权值。较佳地,所述管理单元包括统计信息查询子单元和加权值管理子单元;所述统计信息查询子单元,用于预设的机制查询数据流转发的统计信息,并将统计信息提供给所述加权值管理子单元;所述加权值管理子单元,用于设置并保存报文转发信息对应的加权值,并根据统计信息接收子单元提供的统计信息,更新报文转发信息对应的加权值。由上述技术方案可见,在本发明中,预先为指向报文转发出接口的报文转发信息设置对应的加权值。获取数据流转发的统计信息,根据该统计信息更新报文转发信息对应的加权值。从而使报文转发信息的加权值能够反映数据流转发的统计状况。在进行报文转发时,若确定进行负载分担,则确定到达数据流目的地的各个出接口,并根据指向各个出接口的报文转发信息所对应的加权值,在所述各个出接口中选择进行数据流转发的出接口,将数据流从该出接口转发。由于加权值反映了数据流转发的统计状况,也就是负载状况,因此,根据加权值选择的出接口能够更准确地平衡负载。同时,由于在进行转发时,将整条数据流从选择的出接口转发,因此保证了报文传输的有序性。图1为逐包转发进行负载分担的示意图。图2为逐流转发进行负载分担的示意图。图3为本发明提供的负载分担方法的总体流程图。图4为本发明提供的交换设备总体结构图。图5为本发明实施例一中负载分担方法的具体流程图。图6为本发明实施例一中交换设备的具体结构图。图7为本发明实施例二中负载分担方法的具体流程图。图8为本发明实施例二中交换设备的具体流程图。具体实施例方式为使本发明的目的、技术手段和优点更加清楚明白,以下结合附图对本发明做进一步详细描述。本发明的基本思想是借助网络中的流统计的反馈信息,来动态调整每条流的出接口,以达到平衡负载的目的。目前,流统计技术可以统计出网络中的各种流量,并每条活跃的流建立一个表项,存放到緩存(Cache)中,Cache中一般会包括如表1所示的内容。通过该表格中的前五项(即源IP、目的IP、协议号、源端口和目的端口)就可以区分唯——个流,当然,为进一步细化流的特征,在区分流时还可以进一步通过该表冲各中的其它表项的内容。Cache中记录的信息,应该包括这个表格中的字段,但不只局限于这些字段。<table>tableseeoriginaldocumentpage12</column></row><table>表1Cache中这些表项,并不会被永久存储,会根据某种机制定期上报,上报的同时删除表项。具体上报的机制包括长连接超时上报、非活跃流上报、緩存满上报和流终止上报。通过上述上报机制,便能够获取各个流转发的统计信息,即报文转发量信息。具体在本发明中,为报文转发信息设置对应的加权值,其中,报文转发信息指向特定的出接口,加权值根据流统计信息进行设置和更新;当进行数据流转发时,根据指向出接口的报文转发信息所对应的加权值,选择合适的出接口进行转发,从而实现逐流转发、并平衡负载的目的。具体在实施时,报文转发信息和相应的加权值的对应关系可以利用表格的形式存储,将存储该对应关系的表格称为加权转发表。图3为本发明提供的负载分担方法的总体流程图。如图3所示,该方法包括步骤301,预先为指向报文转发出接口的报文转发信息设置对应的加权值。步骤302,获取数据流转发的统计信息,并根据该统计信息,更新报文转发信息对应的加权值。步骤303,在进行数据流转发时,若确定进行负载分担,则确定能够进行负载分担的各个出接口,并根据指向所述各个出接口的报文转发信息所对应的加权值,选择进行数据流转发的出接口并转发数据流。至此,本发明提供的负载分担方法流程结束。由上述流程可见,整个本发明的负载分担方法包括两个过程报文转发信息和其对应加权值的建立和维护过程,该过程包括步骤301和步骤302;以及,根据报文转发信息和其对应加权值进行数据流转发的过程,包括步骤303。其中,步骤301代表的报文转发信息和其对应加4又值建立过程在步骤302和步骤303之前执行,而步骤302代表的报文转发信息和其对应加权值维护和更新过程与步骤303代表的根据报文转发信息和其对应加权值进行数据流转发过程,二者的执行顺序并非固定,可以互相穿插。图4为本发明提供的交换设备总体结构图。如图4所示,该交换设备包括管理单元、出接口选择单元和数据流转发单元。在该交换设备中,管理单元,用于为指向报文转发出接口的报文转发信息设置并保存对应的加权值,获取数据流转发的统计信息;并根据获取的统计信息,更新保存的报文转发信息对应的加权值。数据流转发单元,用于在进行数据流转发时,确定是否进行负载分担,并确定能够进行负载分担的各个出接口,通知所述出接口选择单元在确定的各个出接口中选择一个,接收出接口选择单元返回的出接口,将数据流从该出接口转发。出接口选择单元,用于接收数据流转发单元的选择出接口通知,并根据所述管理单元保存的指向所述各个出接口的报文转发信息所对应的加权值选择进行数据流转发的出接口,返回给数据流转发单元。上述即为本发明提供的负载分担方法和交换设备的总体描述。在上述本发明的方法流程中,进行数据流转发时,获取数据流转发的统计信息的方式可以有两种,一种是被动接收流统计后上报的统计信息,另一种是主动查询流统计后的统计信息。对于第一种被动接收的方式,由前述关于现有流统计技术的描述可见,流统计结果的上报是一种条件驱动的上报,并不是在统计结果变化后进行完全实时上报,这样就会造成加权值不能完全实时地反映流统计状况。对于第二种主动查询的方式,也是在某种查询条件满足(例如,定时时间到或流统计信息更新消息到时)时,进行查询,其加权值也可能不能实时反映流统计状况。因此,优选地,还可以在进行数据转发时,进一步通过实时查询的方式获取实时流统计结果,以更准确地进行负载分担。具体实现方式将在后面的实施方式中进行描述。另外,在上述本发明的流程中,按照负载分担的范围可以分为物理链路分担和物理链路内的每目的地分担。具体地,所谓物理链路是指某出接口对应的一条真实的物理承载路径,例如,图1的交换机B中,到达交换机A的出接口所对应的3各径是一条物理链路,到达交换才几C的出接口所对应的路径是另一条物理链路,物理链路与出接口——对应。物理链路分担是指根据流统计结果中每条物理链路上所承载的总的报文转发量,选择一个出接口;物理链路内的每目的地分担是指,根据数据流的目的地和流统计结果中每条物理链路上承载到该目的地的报文转发量,选择合适的出接口。相应地,对于物理链路分担,报文转发信息包括报文转发的出接口,也就是根据任意物理链路上的总报文转发量设置相应出接口对应的加权值;对于物理链路内的每目的地分担,报文转发信息包括目的IP地址和出接口,也就是根据任意物理链路上到达指定目的地的报文转发量设置到达相应目的地的出接口对应的加权值。在接下来的具体实施例中,分别对物理链路内的每目的地分担和物理链路分担下,本发明的具体实施方式做进一步详细描述。在下面的实施例中,报文转发信息和相应加权值保存在建立的加权转发表中。实施例一本实施例中采用物理链路内的每目的地分担方式。整个负载分担过程包括加权转发表的建立和维护过程以及利用加权转发表进行数据流转发的过程。获取报文统计信息的方式为接收上报的统计信息。图5为本发明实施例一中负载分担方法的具体流程图。如图5所示,该流程包括步骤501,预先建立加权转发表,用于保存报文转发信息和该报文转发信息对应的加权值。在本实施例的每目的地分担方式中,加权转发表如表2所示,其中,报文转发信息包括目的IP地址和出接口,本实施例中加权值为计数值(Counter)。报文转发信息计数值(counter)目的IPi也址(dest)输出接口(outputinterface)1.2.3.0/24ethernet0歸Oethernet11100serial012008.2.3.4/24ethernet01100serial1川Oethernet21210ethernet31410表2步骤502,当等价路由创建时,在加权转发表中加入该等价路由对应出接口的报文转发信息,并将对应的加权值置0。具体判断创建的路由是否为等价路由的方式为以创建路由的目的IP地址为索引,在路由表中查找到达该目的IP地址是否存在其它路由信息,若存在,则确定创建的路由是等价路由。将该等价路由对应出接口的报文转发信息加入加权转发表中,具体地,若在路由表中加入一个表项为目的IP地址1.2.3.0/24和出接口serial1,则以该目的IP地址1.2.3.0/24为索引,在路由表中查找到达该目的IP地址是否存在其他路由信息,查找结果为存在其他的路由信息,则表明增加的这一条路由是等价路由,那么在表l所示的路由表中加入报文转发信息,包括目的IP地址1.2.3.0/24、出接口serial1,并将该报文转发信息所对应的Counter设置为0。步骤503,当有流统计结果上报时,接收该流统计结果。本步骤中,如前所述,流统计结果上报有四种机制,当达到任意一个条件时,上报流统计结果。上报的流统计结果可以采用表1所示的结构,即由九元组构成。当然,也可以将流统计时记录的该流其他统计信息也一同上才艮。其中,可以包括一个或多个流的统计信息。易知,在该上报的流统计结果中包括前述的报文转发信息,即包括目的IP地址和出接口,并且包括该流在相应出接口上的报文转发量。步骤504,根据接收的流统计结果中包括的报文转发信息和报文转发量,更新加权转发表中相应4艮文转发信息对应的加权值。本步骤是对加权转发表中的加权值进行更新的步骤。在每次接收到上报的流统计结果后,确定该结果中包括的流信息的数量,并针对每个数据流,以该数据流的目的IP地址和出接口为索引,在加权转发表中查找该目的IP地址和出接口对应的Counter,将该数据流中包括的板文转发量累加到查找到的Counter值上。这样,就可以根据上报的流统计结果更新加权转发表了。步骤505,当满足预设的老化条件时,将加权转发表中相应报文转发信息对应的加;k值置0。本步骤是对加权转发表中的加权值进行老化的步骤。具体预设的老化条件和具体老化方式可以为当加权转发表中的任意加权值超出最高门限时,该最高门限可以是预先设置的,确定与该加权值对应的"l艮文转发信息所指向的出接口到达同一目的地的所有出接口,将指向确定的所有出接口的报文转发信息对应的加权值置0,例如在表2中,当第三行的Counter值溢出时,冲艮据该加权值对应报文转发信息中的目的IP地址,在加权转发表中找到到达该目的IP地址的其他报文转发信息,也就是第二行和第一行,则将前三行的报文转发信息对应的加权值置0;和/或,定时将加权转发表中的所有加权值置0;和/或,当增加或修改任意一条等价路由的信息时,确定与该等价^各由相关的所有报文转发信息,并将这些报文转发信息对应的加权值置0,例如在表2中,增加到达目的IP地址为8.2.3.4/24的一条等价路由信息,则根据该等价路由的目的IP地址,在加权转发表中找到到达该目的IP地址的其他报文转发信息,也就是第四、五、六、七行,则将这四行的加权值置0;当删除任意一条等价路由的信息时,在加权转发表中确定该等价路由对应的表项,并将该表项删除,例如,目的IP地址8.2.3.4/24、出接口ethernet3的路由信息由路由表中删除,于是在表2中找到该转发信息的表项,即表2中的最后一项,将该项删除。上述步骤501~502为加权转发表中表项的建立过程,步骤503~504为加权转发表中表项的更新和维护过程,步骤505为加权转发表中表项的老化过程。在上述三个过程中,相互间可以穿插进行,不一定按照步骤501~505的顺序执行。下面对本实施例中根据加权转发表进行数据流转发的过程进行详细描述。本发明是基于逐流转发的机制,从而实现报文按序转发的,因此进行数据流转发时,是将整条数据流的所有报文由一个出接口转发。根据现有的实现方式可知,通常这种逐流转发的机制,在接收到某报文时,首先判断是否为新的数据流,若是,则根据该数据流的目的IP地址在路由表中确定出接口,然后会在快速转发表中相应保存该数据流的相应信息和转发的出接口,在对该数据流中后续报文进行转发时,可以直接在快速转发表中查询该数据流被转发的出接口,从而使后续报文也从相同的出接口转发出去,进而实现提高转发效率的目的。本发明中对整条数据流的转发机制与上述方式类似,接下来进行详细描述,包括步骤506,接收待转发的报文。步骤507,判断是否为新的数据流,若是,则执行步骤509,否则执行步骤508。本步骤中,判断是否为新数据流的方式为依据报文中的七元组进行判断,七元组中只要有一个字段不同,则判定该数据流为新的数据流。其中,报文的七元组包括<源IP地址,目的IP地址,源端口,目的端口,IP层协议类型,ToS服务类型,输入物理端口>。步骤508,查快速转发表进行转发,并结束本流程。在快速转发表中保存有已存在数据流的报文转发信息,当确定转发的报文属于已存在的翁:据流时,可以不通过加权转发表或^各由表查询出接口,而直接到快速转发表中进行查找,能够大大提高转发效率。步骤509,根据待转发报文的目的IP地址判断是否进行负载分担,如果是,则执行步骤511,否则^丸行步骤510。本步骤中,首先判断是否能够进行负载分担,也就是判断是否存在等价路由的方式,具体可以为以待转发报文的目的IP地址(也就是数据流的目的地)为索引,在路由表或加权转发表中查找对应的出接口是否为多个,若是多个,则确定存在等价路由,否则确定不存在等价路由。当确定能够进行负载分担后,再根据预先设定的策略确定是否进行负载分担。例如,可以通过指令的方式设定进行负载分担或不进行负载分担。步骤510,查找路由表转发。对于不存在等价路由的数据流,查找路由表转发,,并结束本流程。步骤511,根据目的IP地址查找加权转发表,比较到该目的IP地址所有出接口的Counter值,选择一个出接口。本步骤中,根据待转发报文的目的IP地址,查找加权转发表,其中,到报文目的IP地址的所有报文转发信息对应的Counter值的大小,也就反应根据上报的流统计结果确定的目前转发报文量的大小。在选择出接口时,按照负载分担比例,根据Counter值的大小,选择一个Counter值,并将该值对应报文转发信息所指向的出接口作为本数据流的转发出接口。例如,当负载分担比例为等比例分担时,也就是,各个等价路由上分担的报文量相等时,选择最小的一个Counter值;当根据应用需要将负载分担比例设为1:2,且当前两个等价路由报文转发信息对应的Counter值分别为58和100时,选择Counter值为100的报文转发信息所对应的出接口作为报文转发的出接口。步骤512,将步骤511中选择出接口的报文转发信息,下发到快速转发表中,以便对于该流的后续报文可以直接通过快速转发表转发。步骤513,从步骤511中选择的出接口转发报文。至此,本实施例中基于逐流转发的负载分担方法流程结束。其中,步骤502~505的加权转发表更新维护过程与步骤506~513的报文转发过程可以相互穿插进行。图6为本发明实施例一中交换设备的具体流程图,该交换设备为图4所示交换设备的一种具体实施方式。如图6所示,该交换设备包括加权转发表管理单元、出接口选择单元和数据流转发单元。其中,加权转发表管理单元包括统计信息接收子单元和加权值管理子单元。在该交换设备中,加权转发表管理单元中的统计信息接收子单元,用于接收按照统计流上报机制上报的统计信息,并提供给加权值管理子单元。加权值管理子单元,用于设置并保存报文转发信息对应的加权值,并根据统计信息接收子单元提供的统计信息,更新报文转发信息对应的加权值。.数据流转发单元,用于在进行数据流转发时,确定是否进行负载分担,并确定能够进行负载分担的各个出接口,通知出接口选择单元在确定的各个出接口中选择一个,接收所述出接口选择单元返回的出接口,将数据流从该出接口转发。出接口选择单元,用于接收数据流转发单元的选择出接口通知,并根据加权值管理子单元保存的指向所述各个出接口的报X转发信息所对应的加权值选择进行数据流转发的出接口,返回给数据流转发单元。在上述方法流程和交换设备的具体实现中,通过在加权转发表中,根据上报的流统计结果,利用加权值记录出接口的报文转发量,从而实现根据流统计结果选择合适出接口进行负载分担的目的。在本实施例中,分担方式采用的是物理链路内的每目的地分担方式,也就是说,在统计出接口的报文转发量时,对出接口上到达同一目的IP地址的报文转发量进行统计,并根据该到达同一目的IP地址的报文转发量,确定到达该目的IP地址的合适出接口。另外,在更新和维护加权转发表时,是根据上报的流统计结果进行,这种方式下,加权转发表中的加权值并不能完全实时地反映流统计的实时结果,而反映的是最近一次上报的流统计的结果,但是该方式的实施较简单,对硬件的要求也比较低,因此适用于硬件处理能力有限的系统环境中。实施例二为进一步提高负载分担的准确性,本实施例采用精确负载分担的方式。具体地,可以在确定进行负载分担后,主动在緩存中针对能够进行负载分担的各个出接口,查询当前的净艮文转发量,并更新加4又转发表中相应出接口的加权值,然后根据更新后的加权值选择合适的出接口进行数据流的转发。通过此种方式,能够保证在进行负载分担时,所依据的出接口对应的加权值反映实时的流统计结果,从而更加准确地进行负载分担。另外,在本实施例中负载分担采用物理链路的分担方式,也就是说,在统计出接口的报文转发量时,对出接口上所有报文量进行统计,并根据该总的报文量,确定合适的出接口。下面就本实施例做进一步详述。图7为本发明实施例二中负载分担方法的具体流程图。如图7所示,该流程包括步骤701,预先建立加权转发表,用于保存报文转发信息和对应的加权值。在本实施例的物理链路分担方式中,加权转发表如表3所示,其中,报文转发信息包括报文转发的出接口,本实施例中加权值为计数值(Counter)。输出接口计数值<table>tableseeoriginaldocumentpage20</column></row><table>表3步骤702,当创建路由时,在加权转发表中加入该路由的报文转发信息,并将对应的加权值置0。由于本实施例是每链路物理分担的方式,因此创建的加权转发表中对每条物理链路进行总的流量的统计,既包括在该链路上的等价路由所承载的流量,也包括非等价路由所承载的流量。于是,在加权转发表中加入路由的报文转发信息的条件为,当创建一条新的路由,也就是一个新的物理链路时,即将该路由的报文转发信息加入加权转发表中,以记录该条物理链路上的总流量,并将对应的加权值设为0。步骤703,当满足流统计查询条件时,主动查询流统计信息。通过本步骤可以获取数据流转发的统计信息。具体地,流统计查询的条20件可以为定时查询,或者,接收到上层下发到流统计更新消息后进行查询等。查询的流统计结果可以采用表1所示的结构,即由九元组构成。当然,也可以将流统计时记录的该流其他统计信息也一同上寺艮。其中,可以包括一个或多个流的统计信息。易知,在流统计信息中包括前述的报文转发信息,即包括报文转发的出接口,并且包括该流在相应出接口上的报文转发量。步骤704,根据查询的流统计信息中包括的出接口以及该出接口上的报文转发量,更新加权转发表中相应才艮文转发信息对应的加4又值。.本步骤是对加权转发表中的加权值进行更新的步骤。在每次查询到上报的流统计信息后,确定该统计信息中包括的流信息的数量,并针对每个数据流,以该数据流信息中的目的IP地址和出接口为索引,在加权转发表中查找该报文转发信息对应的Counter,将该数据流中包括的报文转发量累加到查找到的Counter值上。这样,就可以根据查询的流统计信息更新加权转发表了。步骤705,当满足预设的老化条件时,将加权转发表中相应报文转发信息对应的加权值置0。本步骤是对加权转发表中的加权值进行老化的步骤。具体预设的老化条件和具体老化方式可以为当加权转发表中的任意加权值超出最高门限时,该最高门限可以是预设的,将指向所有出接口的报文转发信息对应的加权值置0,例如在表3中,当第三行的Counter值溢出时,则将加权转发表中所有加权值置0;和/或,定时将加权转发表中的所有加权值置0;当路由表中对应某出接口的所有路由项均删除后,则在加权转发表中,将该出接口对应的表项删除。上述步骤701~702为加权转发表中表项的建立过程,步骤703~704为根据流统计上报结果进行加权转发表中表项的更新和维护过程,步骤705为加权转发表中表项的老化过程。在上述三个过程中,和互间可以穿插进行,不一定按照步骤701~705的顺序执行。另外,在上述步骤703中,利用查询的方式获取数据流转发的统计信息,而在实施例一中是通过接收上报统计结果的方式获取数据流转发的统计信息。事实上,可以将上述两种方式综合应用,即通过同时采用查询和接收上报的方式获取数据流转发的统计信息。下面对本实施例中根据加权转发表进行数据流转发的过程进行详细描述,包括步骤706,接收待转发的报文。步骤707,判断是否为新的数据流,若是,则执行步骤709,否则执行步骤708。本步骤中,判断是否为新数据流的方式为依据报文中的七元组进行判断,七元组中只要有一个字段不同,则判定该数据流为新的数据流。其中,报文的七元组包^l舌〈源IP地址,目的IP地址,源端口,目的端口,IP层协议类型,ToS服务类型,输入物理端口>。步骤708,查快速转发表进行转发。在快速转发表中保存有已存在数据流的出接口信息,当确定转发的报文属于已存在的数据流时,可以不通过加权转发表或路由表查询出接口信息,而直接到快速转发表中进行查找,能够大大提高转发效率。步骤709,根据待转发报文的目的IP地址判断是否进行负载分担,如果是,则执行步骤711,否则执行步骤710。本步骤中,判断是否进行负载分担的方式也就是判断是否存在等价路由的方式,具体可以为以待转发报文的目的IP地址(也就是数据流的目的地)为索引,在路由表中查找对应的出接口是否为多个,若是多个,则确定存在等价路由,否则确定不存在等价路由。步骤710,查找路由表转发。对于不存在等价路由的数据流,查找路由表转发,并结束本流程。步骤711,遍历流的緩存表,获取所有与待转发报文的出接口相同的数据流的统计结果,并根据该统计结果更新相应报文转发信息对应的加权值。本步骤中,对保存流统计结果的緩存表进行遍历,确定对应出接口与待转发报文的出接口相同的数据流,获取这些数据流的统计结果,根据获取的各个流的统计信息更新相应报文转发信息对应的加权值。具体更新方式与步骤704中相同,这里就不再赘述。在上述过程中确定的数据流中所涉及到的出接口,也就是转发本次转发的数据流时,可供选择的等价路由。步骤712,在步骤711中更新后的加权转发表中,选择加权值,并将该加权值对应报文转发信息所指向的出接口作为数据流转发的出接口。本步骤中,在步骤611中更新后的加权转发表中,按照负载分担比例,根据Counter值的大小,选择一个Counter值,并将该值对应报文转发信息所指向的出接口作为本数据流的转发出接口。例如,当负载分担比例为等比例分担时,也就是,各个物理链路上分担的报文量相等时,选择最小的一个Counter值;当根据应用需要将负载分担比例设为1:2,且当前两条物理链路报文转发信息对应的Counter值分别为58和100时,选择Counter值为100的报文转发信息所对应的出接口作为报文转发的出接口。步骤713,将步骤712中选择出接口的报文转发信息,下发到快速转发表中,以便对于该流的后续报文可以直接通过快速转发表转发。步骤714,从步骤712中选择的出接口转发报文。至此,本实施例中基于逐流转发的负载^^担方法流程结束。其中,步骤702~705的加权转发表更新维护过程与步骤706~714的报文转发过程可以相互穿插进行。图8为本发明实施例二中交换设备的具体流程图,该交换设备为图4所示交换设备的一种具体实施方式。如图8所示,该交换设备包括加权转发表管理单元、出接口选择单元和数据流转发单元。其中,加权转发表管理单元包括统计信息查询子单元和加权值管理子单元。在该交换设备中,加权转发表管理单元中的统计信息查询子单元,用于预设的机制查询数据流转发的统计信息,并将统计信息提供给加权值管理子单元。加权值管理子单元,用于设置并保存报文转发信息对应的加权值,并根据统计信息接收子单元提供的统计信息,更新报文转发信息对应的加权值。数据流转发单元,用于在进行数据流转发时,确定是否进行负载分担,并确定能够进行负载分担的各个出接口,通知所述出接口选择单元在确定的各个出接口中选择一个;并通知流统计结果统计单元进行流统计结果的查询。还用于接收出接口选择单元返回的出接口,将数据流乂人该出接口转发。出接口选择单元,用于接收数据流转发单元的选择出接口通知,并根据加权值管理子单元保存的指向所述各个出接口的报文转发信息所对应的加权值选择进行数据流转发的出接口,返回给数据流转发单元。在上述方法和设备具体实施方式中,通过在加权转发表中,根据在报文转发时,实时查询的流统计信息,利用加权值记录等价路由的各报文转发信息对应的报文转发量,从而实现根据实时的流统计结果选择合适出接口进行负载分担的目的。当然,本实施例中增加的实时查询流统计信息的操作也可以在实施例一中进行,具体可以在实施例一的步骤509确定进行负载分担后,执行步骤511前进一步包括步骤511':遍历流的緩存表,获取所有对应目的IP地址与待转发报文目的IP地址相同的数据流的统计结果,并根据该统计结果更新相应报文转发信息对应的加权值。更详细地,对保存流统计结果的緩存表进行遍历,确定对应目的IP地址与待转发报文目的IP地址(也就是待转发数据流目的地)相同的数据流,获取这些数据流的统计结果,根据获取的各个流的统计信息更新相应报文转发信息对应的加权值。通过加入该步骤,能够使实施例一也能够实现更准确的负载分扭。同时,本实施例中利用物理链路的负载分担方式,使每个出接口对在该出接口上的所有转发报文进行统计,进而使得出接口的选择能够根据该出接口上的所有转发报文统计量进行,提高了负载分担的准确性。另外,本实施例中采用的精确流反馈方式,即选择出接口时主动查询当前的流统计结果,由于能够根据实时的报文统计状况选择出接口,也提高了负载分担的准确性。但同时,精确流反馈的方式,相比于实施例一中单纯根据上报的流统计结果的方式,增大了处理的开销,对硬件处理能力要求也较高。因此,在实际应用中,可以根据硬件处理能力和负载分担的准确性需求,合理地选择实施例一或实施例二的方式进行。上述实施例一和实施例二中,对于报文转发信息示例性地描述了两种情况,一种是每目的地分担时包括目的IP地址和出接口,另一种是每物理链路分担时包括出接口。事实上,为在加权转发表中提供更多的信息,可以在报文转发信息中进一步包括其它与报文转发相关的信息,例如,可以加入下一跳信息指示报文转发的下一跳地址等,这里就不再——赘述。此外,上述本发明的具体实现方式中,以建立一张加权转发表的方式保存报文转发信息和相应加权值的对应关系。事实上,在现有的交换设备中,存在多种多样的用于记录报文转发信息的表格,可以通过在这些表格中增加表示加权值的项,从而实现报文转发信息与相应加权值间对应关系的保存。例如,可以在路由表中增加一个保存加权值的项。具体地,每个路由转发项中进一步包括一个加权值,用于记录与该路由转发项对应的加权值。当进行每目的地负载分担时,报文转发信息包括目的IP地址和出接口,与该目的IP地址和出接口对应的加权值即是报文转发信息对应的加权值;当进行每物理链路负载分担时,报文转发信息包括出接口,则将路由表中与一出接口对应的所有加权值求和作为该报文转发信息(即出接口)对应的加权值,根据该加权值选择报文转发的出接口。其它加权值创建、更新和老化的方式与前述实施例中的方式相同,这里就不再——赘述。以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求1、一种负载分担方法,其特征在于,预先为指向报文转发出接口的报文转发信息设置对应的加权值,该方法包括获取数据流转发的统计信息;根据获取的统计信息,更新报文转发信息对应的加权值;在进行数据流转发时,若确定进行负载分担,则确定能够进行负载分担的各个出接口,并根据指向所述各个出接口的报文转发信息所对应的加权值,在所述各个出接口中选择进行数据流转发的出接口,将数据流从该出接口转发。2、根据权利要求1所述的方法,其特征在于,所述获取数据流转发的统计信息为接收按照统计流上才艮机制上报的统计信息。3、根据权利要求1所述的方法,其特征在于,所述获取数据流转发的统计信息为按照预设的机制查询数据流转发的统计信息。4、根据权利要求2或3所述的方法,其特征在于,在确定所述各个出接口后,选择进行数据流转发的出接口前,该方法进一步包括查询当前数据流的统计信息,并更新报文转发信息对应的加权值;所述根据指向各个出接口的报文转发信息所对应的加权值选择出接口为根据更新后指向所述各个出接口的报文转发信息所对应的加权值选择出接口。5、才艮据权利要求1所述的方法,其特征在于,所述根据获取的统计信息更新报文转发信息对应的加权值为根据获取的统计信息中包括的报文转发信息和该报文转发信息对应的报文转发量,更新相应才艮文转发信息对应的加权值。6、根据权利要求1所述的方法,其特征在于,所述报文转发信息包括报文转发的目的IP地址和出接口。7、根据权利要求6所述的方法,其特征在于,所述为指向报文转发出接口的报文转发信息设置对应的加权值为当创建任意等价路由时,为该等价路由的报文转发信息设置对应的加权值,并将该加权值置为初始值。8、根据权利要求l所述的方法,其特征在于,所述报文转发信息包括报文转发的出接口。9.根据权利要求8所述的方法,其特征在于,所述为指向报文转发出接口的报文转发信息设置对应的加权值为当创建路由时,为该报文转发信息设置对应的加权值,并将该加权值置为初始值。10、根据权利要求1所述的方法,其特征在于,所述加权值为累计转发报文量;所述更新报文转发信息对应的加权值为提取统计信息中包括的报文转发信息和报文转发信息对应的报文转发量,将该报文转发量累加到相应出接口对应的加权j直中。11、根据权利要求1所述的方法,其特征在于,所述根据指向所述各个出接口的报文转发信息所对应的加权值选择进行数据流转发的出接口为按照负载分担比例,在所述才良文转发信息对应的加权值中选择一个加权值,并将该加权值对应报文转发信息所指向的出接口作为进行数据流转发的出接口。12、根据权利要求11所述的方法,其特征在于,当所述负载分担比例为等比例分担时,所述选择一个加权值为,选择加权值中最小的一个。13、根据权利要求1所述的方法,其特征在于,当报文转发信息包括报文转发的目的IP地址和出接口时,该方法进一步包括当加权转发表中的任意加权值超出最高门限时,确定与该加权值对应的报文转发信息所指向出接口到达同一目的地的所有出接口,将指向确定的所有出接口的报文转发信息对应的加权值置为初始值;或者,定时将加权转发表中的所有加权值置为初始值;或者,当增加或修改任意一条等价路由的信息时,确定与该等价路由相关的所有报文转发信息,将确定的所有报文转发信息对应的加权值置为初始值;或者,当删除任意一条等价路由的信息时,在加权转发表中删除该等价路由的对应的表项;当报文转发信息包括报文转发的出接口时,该方法进一步包括当加权转发表中的任意加权值超出最高门限或者到达定时时间时,将加权转发表中的所有加权值置为初始值;或者,当路由表中对应一出接口的所有路由项均删除后,在加权转发表中删除该出接口对应的表项。14、根据权利要求1所述的方法,其特征在于,所述确定到达数据流目的地的各个出接口为将以数据流目的地为索引查找到的对应的出接口,确定为所述到达报文目的地的各个出接口。15、根据权利要求1所述的方法,其特征在于,所述将数据流从该出接口转发包括在对任意数据流的首个到达报文进行转发时,将该报文从所述选择的出接口转发,并进一步将数据流信息和选择的出接口信息对应保存在快速转发表中;在对数据流后续报文进行转发时,利用快速转发表进行转发。16、一种网络中的交换设备,其特征在于,该设备包括管理单元、出接口选择单元和数据流转发单元,管理单元,用于为指向报文转发出接口的报文转发信息设置并保存对应的加权值,获取数据流转发的统计信息;并根据获取的统计信息,更新保存的报文转发信息对应的加4又值;数据流转发单元,用于在进行数据流转发时,确定是否进行负载分担,并确定能够进行负载分担的各个出接口,通知所述出接口选择单元在确定的各个出接口中选择一个,接收所述出接口选择单元返回的出接口,将数据流从该出接口转发;出接口选择单元,用于接收数据流转发单元的选择出接口通知,根据所述管理单元保存的指向所述各个出接口的报文转发信息所对应的加权值选择进行数据流转发的出接口,返回给所述数据流转发单元。17、根据权利要求16所述的交换设备,其特征在于,所述管理单元包括统计信息接收子单元和加权值管理子单元;所述统计信息接收子单元,用于接收按照统计流上报机制上报的统计信息,并提供给所述加权值管理子单元;所述加权值管理子单元,用于设置并保存报文转发信息对应的加权值,并根据统计信息接收子单元提供的统计信息,更新报文转发信息对应的加权值。18、根据权利要求16所述的交换设备,其特征在于,所述管理单元包括统计信息查询子单元和加权值管理子单元;所述统计信息查询子单元,用于预设的机制查询数据流转发的统计信息,并将统计信息提供给所述加权值管理子单元;所述加权值管理子单元,用于设置并保存报文转发信息对应的加权值,并根据统计信息接收子单元提供的统计信息,更新报文转发信息对应的加权值。全文摘要本发明公开了一种负载分担方法,预先为指向报文转发出接口的报文转发信息设置对应的加权值,该方法包括获取数据流转发的统计信息;根据获取的统计信息,更新报文转发信息对应的加权值;在进行数据流转发时,若确定进行负载分担,则确定能够进行负载分担的各个出接口,并根据指向所述各个出接口的报文转发信息所对应的加权值,在所述各个出接口中选择进行数据流转发的出接口,将数据流从该出接口转发。本发明还公开了一种网络中的交换设备,包括加权转发表管理单元、出接口选择单元和数据流转发单元。应用本发明,能够既保证报文的有序传输,又保证精确的负载分担。文档编号H04L12/56GK101119313SQ200710121820公开日2008年2月6日申请日期2007年9月14日优先权日2007年9月14日发明者刘刀桂,娜尹,祁正林,聪薛,赵里遥申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1