软件定义网络SDN中的报文转发的方法和装置与流程

文档序号:12829042阅读:362来源:国知局
本发明涉及信息
技术领域
:,并且更具体地,涉及软件定义网络sdn中的报文转发的方法和装置。
背景技术
::随着大规模互联网在线应用、企业级基础服务和对云计算应用的需求的日益增长,十万量级、甚至百万量级服务器的数据中心诞生了。这种数据中心大多采用胖树网络(fat-tree)拓扑结构,交换机的数量巨大,而且更有大量的ovs软交换机需要管理。随着软件定义网络(softwaredefinednetwork,简称为“sdn”)技术在数据中心的应用,提高了大规模数据中心的配置管理工作效率、网络扩展性和业务部署的灵活性。sdn是开放网络基金会(opennetworkfoundation,onf)定义的一种新的网络架构,旨在以个人计算机(personalcomputer,pc)计算领域的架构和方法来重新定义网络计算,将转发面看成一个执行指令的中央处理器(centralprocessingunit,cpu),控制面看成集中的网络操作系统,网络计算通过在网络操作系统上编程来实现。但是由于sdn架构中南向协议即开放流(openflow)协议发展的缓慢,对于电信传送网中业务的负载均衡功能支持不够,无法实现业务流在传输过程中的负载均衡。为了实现业务流在传输过程中的负载均衡,目前的现有技术主要有通过大量的人工配置ip地址,或者通过hash算法计算负载均衡,这些方法主要存在的缺点是:运维的复杂度较高,负载均衡数据的转发效率很低。技术实现要素:本发明实施例提供了一种软件定义网络sdn中的报文转发的方法和装置,能够提高负载均衡数据的转发效率。第一方面,提供了一种软件定义网络sdn中的报文转发的方法,该sdn包括至少一个控制器和多个服务器,该方法由该至少一个控制器执行,包括:获取该sdn中的链路状态信息;根据该链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表的负载分担表项;将该负载分担表及所述负载分担表项发送至该第一服务器,以便于该第一服务器根据该负载分担表进行报文转发。本发明实施例的软件定义网络sdn中的数据报文转发的方法,能够动态生成负载分担表,进行报文的转发,提高了负载均衡数据的转发效率,降低了负载均衡的运维复杂度。这里,链路状态信息包括核心交换机和汇聚交换机之间的故障链路信息,汇聚交换机与接入交换机之间的故障链路信息,接入交换机与服务器之间的故障链路信息。控制器根据故障链路信息,生成该负载分担表中的表项。在一些可能的实现方式中,该sdn还包括多个核心交换机和多个汇聚交换机,该多个核心交换机是该多个汇聚交换机的上层交换机,该链路状态信息包括无故障链路信息,根据该链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表,包括:根据该无故障链路信息和该目的服务器的地址生成该负载分担表中的负载分担表项,其中,该负载分担表项的核心交换机地址列表为该多个核心交换机地址列表,该负载分担表项的汇聚交换机地址列表为该第一服务器所处的节点集合中的多个汇聚交换机地址列表。结合第一方面,在第一种可能的实现方式中,该sdn还包括多个核心交换机和多个汇聚交换机,该多个核心交换机是该多个汇聚交换机的上层交换机,该链路状态信息包括第一故障链路信息,该第一故障链路信息为该多个核心交换机中的第一核心交换机和该多个汇聚交换机中的第一汇聚交换机之间链路故障的信息;其中,根据该链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表,包括:根据该第一故障链路信息和该目的服务器的地址生成该负载分担表中的负载分担表项。结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在所述第一服务器为所述第一汇聚交换机的子孙服务器,所述第一汇聚交换机与所述目的服务器处于不同的节点集合时,所述负载分担表中表项的核心 交换机地址列表为所述多个核心交换机地址去除所述第一核心交换机地址后的地址列表,其中,所述不同的节点集合间仅能通过核心交换机进行通信。结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,在所述第一服务器不是所述第一汇聚交换机的子孙服务器,所述目的服务器是所述第一汇聚交换机的子孙服务器时,若所述目的服务器的地址的第一部分与所述第一核心交换机地址的第一部分相同,且所述目的服务器的地址的第二部分与所述第一核心交换机地址的第三部分相同,则所述负载分担表中的核心交换机地址列表为所述多个核心交换机地址去除所述第一核心交换机地址后的地址列表;或,所述目的服务器的地址的第一部分与所述第一核心交换机地址的第一部分不同,或所述目的服务器的地址的第二部分与所述第一核心交换机地址的第三部分不同,则所述负载分担表中的核心交换机地址列表为所述多个核心交换机地址。结合第一方面的第一种可能的实现方式,在第四种可能的实现方式中,在所述第一服务器为所述第一汇聚交换机的子孙服务器,所述第一汇聚交换机与所述目的服务器同处于第一节点集合,所述第一汇聚交换机与第一接入交换机相连,所述目的服务器与第二接入交换机相连,所述第一接入交换机与所述第二接入交换机不同时,该负载分担表项的汇聚交换机地址列表部分为所述第一节点集合中的多个汇聚交换机地址列表。结合第一方面,在第五种可能的实现方式中,该sdn还包括多个核心交换机、多个汇聚交换机和多个接入交换机,该多个核心交换机是该多个汇聚交换机的上层交换机,该多个汇聚交换机是该多个接入交换机的上层交换机,该链路状态信息包括第二故障链路信息,该第二故障链路信息为该多个汇聚交换机中的第二汇聚交换机和该多个接入交换机中的第三接入交换机之间链路故障的信息;其中,该根据该链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表,包括:根据该第二故障链路信息和该目的服务器的地址生成该负载分担表中的负载分担表项。结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,在该第一服务器为该第三接入交换机的子孙服务器,该第三接入交换机与该 目的服务器同处于第二节点集合,该目的服务器与该多个接入交换机中的第四接入交换机相连,该第三接入交换机与该第四接入交换机不同时,则该负载分担表中负载分担表项的汇聚交换机地址列表为该第二节点集合中的多个汇聚交换机地址去除该第二汇聚交换机地址后的地址列表。结合第一方面的第五种可能的实现方式,在第七种可能的实现方式中,在该第一服务器为该第三接入交换机的子孙服务器,该第三接入交换机与该目的服务器处于不同的节点集合,该负载分担表中的负载分担表项中的核心交换机地址列表为该多个核心交换机地址去除该第二汇聚交换机对应的祖先核心交换机地址后的地址列表,其中,该不同的节点集合间仅能通过核心交换机进行通信。结合第一方面的第五种可能的实现方式,在第八种可能的实现方式中,在所述第一服务器不是所述第三接入交换机的子孙服务器,所述第一服务器与所述第三接入交换机同处于第三节点集合,所述目的服务器为所述第三接入交换机的子孙服务器时,若所述目的服务器的地址的第一部分与所述第二汇聚交换机地址的第一部分相同,且所述目的服务器的地址的第二部分与所述第二汇聚交换机地址的第三部分相同,则所述负载分担表中的汇聚交换机地址列表为所述第三节点集合中的多个汇聚交换机地址去除所述第二汇聚交换机地址后的地址列表;或,若所述目的服务器的地址的第一部分与所述第二汇聚交换机地址的第一部分不同,或所述目的服务器地址的第二部分与所述第二汇聚交换机地址的第三部分不同,则所述负载分担表项的汇聚交换机地址列表为所述第三点集合中的多个汇聚交换机地址列表。结合第一方面的第五种可能的实现方式,在第九种可能的实现方式中,在所述第一服务器与所述第三接入交换机处于不同的节点集合,所述目的服务器为所述第三接入交换机的子孙服务器时,若所述目的服务器的地址的第一部分与所述第二汇聚交换机的祖先核心交换机地址的第二部分相同,且所述目的服务器的地址的第二部分与所述第二汇聚交换机的祖先核心交换机地址的第三部分相同,则所述第一服务器上的软件交换机的负载均衡表中负载分担表项的核心交换机地址列表为所述多个核心交换机地址去除所述第二汇聚交换机对应的祖先核心交换机地 址后的地址列表,其中,所述不同的节点集合间仅能通过核心交换机进行通信;或,若所述目的服务器的地址的第一部分与所述第二汇聚交换机的祖先核心交换机地址的第二部分不同,或所述目的服务器的地址的第二部分与所述第二汇聚交换机的祖先核心交换机地址的第三部分不同,则所述负载分担表项的核心交换机地址列表为所述多个核心交换机地址列表,其中,所述不同的节点集合间仅能通过核心交换机进行通信。结合第一方面,在第十种可能的实现方式中,该sdn还包括多个接入交换机,该多个接入交换机为该多个服务器的上层交换机,该链路状态信息包括第三故障链路信息,该第三故障链路信息为该多个接入交换机中的第五接入交换机和该多个服务器中的第二服务器之间链路故障的信息;其中,该根据该链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表,包括:根据该第三故障链路信息和该目的服务器的地址生成该负载分担表中的负载分担表项。结合第一方面的第十种可能的实现方式,在第十一种可能的实现方式中,在该第一服务器是该第二服务器时,该负载分担表中负载分担表项的汇聚交换机地址列表和核心交换机地址列表均为空。结合第一方面的第十种可能的实现方式,在第十二种可能的实现方式中,在所述第一服务器不是所述第二服务器,所述目的服务器是所述第二服务器,所述目的服务器与所述第二服务器同处于第四节点集合,若所述目的服务器的地址与所述第二服务器的地址相同,则所述负载分担表中负载分担表项的汇聚交换机地址列表和核心交换机地址列表为空;或,若所述目的服务器的地址与所述第二服务器的地址不同,则所述负载分担表中负载分担表项的核心交换机地址为所述多个核心交换机地址,所述负载分担表中的汇聚交换机地址为所述第四节点集合内的多个汇聚交换机地址。第二方面,提供了一种软件定义网络sdn中的报文转发的方法,该sdn包括至少一个控制器和多个服务器,该方法由该多个服务器中的第一服务器上的软件交换机执行,包括:接收该至少一个控制器发送的负载分担表,该负载分担表是该至少一个 控制器根据该sdn的链路状态信息和该第一服务器的目的服务器的地址生成的;根据该负载分担表进行报文转发。本发明实施例的软件定义网络sdn中的数据报文转发的方法,能够动态生成负载分担表,进行报文的转发,提高了负载均衡数据的转发效率,降低了负载均衡的运维复杂度。结合第二方面,在第一种可能的实现方式中,该根据该负载分担表进行报文转发包括:根据该负载分担表选择下一跳交换机地址作为外层ip封装该报文,并转发该报文。第三方面,提供了一种软件定义网络sdn中的控制器,用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面或第一方面的任意可能的实现方式中的方法的单元。第四方面,提供了一种软件定义网络sdn中的第一服务器上的软件交换机,用于执行上述第二方面或第二方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第二方面或第二方面的任意可能的实现方式中的方法的单元。第五方面,提供了一种软件定义网络sdn中的报文转发的装置,该装置包括:接收器、发送器、存储器、处理器和总线系统。其中,该接收器、该发送器、该存储器和该处理器通过该总线系统相连,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制接收器接收信号,并控制发送器发送信号,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第一方面或第一方面的任意可能的实现方式中的方法。第六方面,提供了一种软件定义网络sdn中的报文转发的装置,该装置包括:接收器、发送器、存储器、处理器和总线系统。其中,该接收器、该发送器、该存储器和该处理器通过该总线系统相连,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,以控制接收器接收信号,并控制发送器发送信号,并且当该处理器执行该存储器存储的指令时,该执行使得该处理器执行第二方面或第二方面的任意可能的实现方式中的方法。第七方面,提供了一种系统,包括第三方面的控制器、第四方面的第一服务器。第八方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例的网络规划的一个示意图。图2是根据本发明实施例的软件定义网络sdn中的报文转发的方法的示意性流程图。图3是根据本发明实施例的软件定义网络sdn中的报文转发的方法的另一示意性流程图。图4是根据本发明实施例的控制器的示意性框图。图5是根据本发明实施例的第一服务器上的软件交换机示意性框图。图6是根据本发明实施例的控制器的结构示意图。图7是根据本发明是实例是的第一服务器上的软件交换机结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明的技术方案,可以应用于各种通信系统,例如:全球移动通讯系统(gsm,globalsystemofmobilecommunication),码分多址(cdma,codedivisionmultipleaccess)系统,宽带码分多址(wcdma,widebandcodedivisionmultipleaccesswireless),通用分组无线业务(gprs,generalpacketradioservice),长期演进(lte,longtermevolution)等。大规模数据中心通常采用胖树网络拓扑结构,对于此类网络环境,往往采用同构的交换机作为服务器之间的硬件连接。为了描述方便,结合图1为 例进行说明。图1是本发明实施例的网络规划的一个示意图。在数据中心或企业的网络规划里,网络可以划分为接入层、汇聚层和核心层,处于这三层里的交换机分别对应为接入交换机、汇聚交换机和核心交换机。其中,接入交换机用于接入终端,汇聚交换机用于汇聚其下层的接入交换机,核心交换机用于汇聚其下层的汇聚交换机,同时也负责连接到互联网上。接入交换机下端可以与软交换机相连,即与开放虚拟交换机(openvirtualswitch,简称为“ovs”)相连,每个ovs下端可以对应多个虚拟机(virtualmachine,简称为“vm”)。不同的vm之间进行通信时,需要根据转发流表或者负载分担表进行报文转发,从而实现不同的vm之间即源vm和目的vm之间处于同节点组合或跨节点组合时的通信。而转发流表或者负载分担表均需要控制器生成并下发,才能实现不同vm之间的通信例如,图1中第一节点组合中ovs1下的vm1要与第二节点组合中的ovs5下的vm1通信,需要根据负载分担表完成报文的转发。一般来说,接入交换机都是盒式设备(比如tor),也有框式的(比如eor)。盒式交换机体积小,接口少,也不可扩展。汇聚交换机和核心交换机都是框式的,体积大、接口数量多,可以插不同的单板,以满足不同的需求,扩展性好一些。对于性能方面,从核心交换机、汇聚交换机、接入交换机依次递减,核心交换机性能最好。这三种交换机均为硬件交换机,且支持开放流openflow协议,软件交换机为开放虚拟交换机(openvirtualswitch,简称为“ovs”)。其中,一个ovs可以对应一个物理服务器,一个物理服务器可以创建多个vm。在本发明实施例中,以core交换机作为核心交换机、agg(aggregate)交换机为汇聚交换机和tor交换机为接入交换机为例进行说明。例如,core交换机、agg交换机和tor交换机都是同构交换机,这些硬件交换机的端口数量为k个。对于交换机的地址采用如下方式进行规划:软件交换机的编址方式为area.pod.pos.port,硬件交换机编址方式为area.level.pod.pos,其中,pod表示交换机与服务器的逻辑分组,port表示端口号;pod一个具有特殊位置关系的节点的集合,进一步分两类:atopod和corepod;pos:节点在pod内的位置编号,ovs/tor/agg/core节点各有独立的pos号空间。在图1中,第一节点集合、第二节点集合和第三节点集合分别对应不同的pod。如果硬件交换机采用96口交换机,即k=96,则aggpod分别为1和 2,即对应图1中的第一节点集合和第二节点集合;corepod值为3即对应图1中的第三节点集合,area=10,硬件交换机以及软件交换机的编址实例如下:核心交换机即core交换机(地址为area.253.pod.pos,即10.253.1.1),该交换机的下端口i(i∈[1,k])所连的agg交换机的地址为area.252.pod.pos,即10.252.96.1.。汇聚交换机即agg交换机(地址为area.252.pod.pos,即10.252.1.47),该交换机的上端口i所连的core交换机的地址为area.253.pos.i-k/2,即10.253.1.1;该交换机的下端口i所连的tor交换机的地址为area.251.pod.i,即10.251.1.1。接入交换机即tor交换机(地址为area.251.pod.pos),该交换机的上端口i所连的agg交换机的地址为area.252.pod.i-k/2,即10.252.1.1;该交换机的下端口i所连的ovs交换机的地址为area.pod.pos.i,即10.1.1.1。在图1中,控制器1对应的ip地址为191.4.3.108,控制器2对应的ip地址为191.4.3.109,控制器3对应的ip地址为191.4.3.110,控制器分别控制不同的pod,实线为主用控制连接,虚线为备用控制连接。控制器可以基于上述网络地址规划方法和网络假设,进行执行相应的操作,实现业务流在传输过程中的负载均衡,其中,负载均衡即分摊到多个操作单元上进行执行。具体地,控制器在获取到网络拓扑信息(拓扑信息、网元信息)后,按照上述地址规划方法为硬交换机和软交换机配置ip地址或相关信息,包括目的虚拟机的ip地址、租户信息和/或目的交换机的ip地址,根据获取到的ip地址信息可以生成本地转发流表或者负载均衡负载分担表,并将该本地转发流表或者负载均衡负载分担表发送给目的交换机。例如,控制器可以通过telnet方式登录ovs,发送配置命令,为ovs配置虚拟局域网(virtuallocalareanetwork,简称为“vlan”)和扩展虚拟局域网(virtualextensiblelan,简称为“vxlan”)的相关信息。一般来说,由于4096个vlan远不能满足大规模云计算数据中心的需求,因此需要引入vxlan。进一步地,vlan的相关配置可以为:ovs-vsctladd-portbrnameportnamevlan_mode=accesstag=vlanidvm1port;vxlan的相关配置可以为:ovs-vsctlsetport<port_name>vni_tag=<vxlan_idovs-vsctladd-portbrnamevxlan0--setinterfacevxlan0type=vxlanoptions:remote_ip=flowoptions:key=flow。上述ovs的vlan和vxlan的配置信息对应ovs上的本地转发流表,包括vlan转发表和vxlan转发表。例如,vlan的转发表t0如下表1所示:表1例如,vxlan的转发表t1如下表2所示:表2在表2中,流表项1针对同ovs同租户同vlan的场景;流表项2针对同ovs同租户不同vlan的场景;流表项3针对同ovs不同租户不同vlan的场景;流表项4针对不同ovs同租户同vlan的场景;流表项5针对不同ovs同租户不同vlan的场景;流表项6针对不同ovs不同租户不同vlan的场景。上述流表项可以不同时存在,控制器在获取租户信息和vm信息后,可以生成和下发上述流表项1、2、3,其中,租户可以是访问同一数据或交换机的用户的集合,一个用户可以访问多个交换机,租户可以对应表中的网络标识符(vxlannetworkidentifier,简称为“vni”)。控制器通过上述方式生成本地负载分担表,并将本地负载分担表下发给ovs应理解,本发明仅以上述的网络地址规划进行举例说明,也可以是其他地址规划,可以人为设定,并不对本发明构成限制。还应理解,图1仅是一个实例,对于图中出现的vm的数目以及各种交换机的数目并不作限制。本发明实施例的软件定义网络sdn中的报文转发的方法可以应用到图1中的网络系统,网络系统仅以图1为例,并不限于此。图2示出了根据本发明实施例的软件定义网络sdn中的报文转发的方法200。下面将结合图2对本发明实施例的软件定义网络sdn中的报文转发的方法进行描述。该sdn包括至少一个控制器和多个服务器,该方法由该至少一个控制器执行,该方法200包括:s210,获取该sdn中的链路状态信息;s220,根据该链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表;s230,将该负载分担表发送至该第一服务器上的软件交换机,以便于该第一服务器上的软件交换机根据该负载分担表进行报文转发。具体而言,在sdn网络中,控制器可以获取到链路状态信息,例如,在某个链路出现故障时,控制器会收到来自交换机的链路故障状态的通知报文,根据这些链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表包括负载分担表项,例如,控制器可以根据源服务器的网络标识符信息、目的服务器的ip地址和目的虚拟机的ip地址生成负载分担表,第一服务器的负载分担表为负载分担表,并将该负载分担表下发至源服务器上的软件交换机,例如,第一服务器为源服务器,以便于源服务器上的软件交换机根据该负载分担表进行报文转发。其中,软件交换机可以理解为ovs。在上述表2中,表项1、2、3是针对相同的ovs而言的,控制器只要获取到目的虚拟机的ip地址和租户信息即可生成本地转发流表。而对于不同的ovs的情况,控制器还需要获取到目的ovs的地址,才能生成和下发表项4、5、6。而对于表项4、5、6,控制器按照本发明实施例的sdn中的报文转发的方法生成负载分担表。在本发明实施例中,控制器获取到的链路状态信息可以包括无故障链路信息,即没有失效链路的状态,对于无失效链路的负载分担表中,仅包含一 条默认路由转发表项,负载分担表的实例可以如下表3和表4所示,表3是匹配项为默认路由时的汇聚交换机地址列表即汇聚交换机列表aggrlblisttable,表4是匹配项是默认路由时的核心交换机地址列表即核心交换机列表corelblisttable:表3matchfieldsactions0.0.0.0aggloclist表4matchfieldsactions0.0.0.0coreloclist对于下文的出现故障链路的情况,负载分担表均是基于上述表3和表4进行修改,比如,对于相应的负载分担表增加新的路由表项,去除与故障链路相连的地址。本发明实施例的软件定义网络sdn中的报文转发的方法,通过动态生成负载分担表,能够提高数据中心中负载均衡数据的转发效率,降低了负载均衡的运维复杂度。在sdn中,控制器获取到的链路状态信息可以包括三种故障链路的情况,分别为:核心交换机与汇聚交换机的链路缺失、汇聚交换机与接入交换机之间的链路缺失、接入交换机与服务器之间的链路缺失。下面将对这三种情况下的负载分担表分别进行详细的描述。在第一种情况中,可选地,该sdn还包括多个核心交换机和多个汇聚交换机,该多个核心交换机是该多个汇聚交换机的上层交换机,该链路状态信息包括第一故障链路信息,该第一故障链路信息为该多个核心交换机中的第一核心交换机和该多个汇聚交换机中的第一汇聚交换机之间链路故障的信息;其中,该根据该链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表,包括:根据该第一故障链路信息和该目的服务器的地址生成该负载分担表。这里,故障链路即为第一核心交换机和第一汇聚交换机之间的链路。对于与该故障链路相连的服务器,可以细分三种:1)可选地,在该第一服务器为该第一汇聚交换机的子孙服务器,该第 一汇聚交换机与该目的服务器处于不同的节点集合时,该负载分担表项的核心交换机地址列表为该多个核心交换机地址去除该第一核心交换机地址后的地址列表,其中,该不同的节点集合间仅能通过核心交换机进行通信。具体而言,目的服务器与故障链路上的第一汇聚交换机处于不同的节点集合,该不同的节点集合间仅能通过核心交换机进行通信。这里的负载分担表,需要修改默认路由中的核心交换机地址列表,即去除与故障链路相连的核心交换机地址列表。修改后的负载分担表可以如下表5所示:表5表5中的目的服务器地址段对应匹配项(matchfields),可用下一跳交换机地址列表对应执行动作(actions),即目的服务器会在actions的地址列表中选出一个匹配项,进行执行。下文的表中出现的目的服务器地址段和可用下一跳交换机地址列表与这里的含义相同,为了简洁,下文出现时将不再赘述。这里,对于与故障链路相连的汇聚交换机上的子孙服务器上的负载分担表aggrlblisttable,不管是目的服务器与故障链路处于相同的节点集合还是不同的节点结合都没有影响。2)可选地,在该第一服务器不是该第一汇聚交换机的子孙服务器,该目的服务器是该第一汇聚交换机的子孙服务器时,若该目的服务器的地址的第一部分与该第一核心交换机地址的第一部分相同,且该目的服务器的地址的第二部分与该第一核心交换机地址的第三部分相同,则该负载分担表项的核心交换机地址列表为该多个核心交换机地址去除该第一核心交换机地址后的地址列表;或,该目的服务器的地址的第一部分与该第一核心交换机地址的第一部分不同,或该目的服务器的地址的第二部分与该第一核心交换机地址的第三部分不同,则该负载分担表项的核心交换机地址列表为该多个核心交换机地址。具体而言,与1)的不同之处在于,源服务器不与故障链路相连,例如,第一服务器不是该第一汇聚交换机的子孙服务器。同时,目的服务器是故障 链路下汇聚交换机的子孙服务器,例如,目的服务器是该第一汇聚交换机的子孙服务器。这里对应的负载分担表需要在核心交换机地址列表中增加一条路由,修改后的负载分担表可以如下表6所示:表6表6中包括了两种情况:当目的服务器地址段的第一部分与故障链路上第一核心交换机的第一部分相同,且目的服务器地址段的第二部分与故障链路上第一核心汇聚交换机的第三部分相同时,对应的可用下一跳交换机地址列表;或当目的服务器地址段的第一部分与故障链路上第一核心交换机的第一部分不同,或目的服务器地址段的第二部分与故障链路上第一核心交换机的第三部分不同时,对应的可用下一跳交换机地址列表。这里,目的服务器地址、核心交换机地址即按照前文中网络地址规划方法确定,即目的服务器地址area.pod.pos.i,核心交换机地址为area.252.pod.pos,目的服务器地址的area与该故障链路相连的核心交换机地址的area相同,目的服务器地址的pod与该故障链路相连的核心交换机地址的pod相同。例如,对于目的服务器的地址的第一部分为area,第二部分为pod,对于故障链路上的核心交换机地址的第一部分为area,第三部分为pod。例如,在匹配项部分子网掩码为16位,需要在负载分担表中增加一条表项,即负载分担表项中可用下一跳交换机地址列表为所有的核心交换机地址去除故障核心交换机地址后的地址列表,例如去除第一核心交换机地址。另外,若目的服务器地址的area与该故障链路相连的核心交换机地址的area不同,或目的服务器地址的pod与该故障链路相连的核心交换机地址的pod不同,则可用下一跳交换机地址列表为所有的核心交换机地址。应理解,这里将地址段的area描述为第一部分,pod描述为第二部分或 第三部分,并没有其他引起歧义的含义,仅是为了描述方便,并不对本发明构成限制,并且,下文出现的第一部分、第二部分或第三部分亦如此。还应理解,这里仅以子网掩码为16位为例进行说明,也可以是其他合理方式,本发明对此不作限制。对于故障链路外的其它节点集合内的服务器上的负载分担表而言,如果目的服务器是与故障链路位于不同的节点集合且非与故障链路相连的汇聚交换机的子孙服务器,则负载均衡表没有任何影响。3)可选地,在该第一服务器为该第一汇聚交换机的子孙服务器,该第一汇聚交换机与该目的服务器同处于第一节点集合,该第一汇聚交换机与第一接入交换机相连,该目的服务器与第二接入交换机相连,该第一接入交换机与该第二接入交换机不同时,则该负载分担表项的汇聚交换机地址列表为该第一节点集合中的多个汇聚交换机地址列表。具体而言,源服务器与故障链路相连,例如,第一服务器为第一汇聚交换机的子孙服务器。同时,目的服务器与第一汇聚交换机处于相同的节点集合,但是分别与不同的接入交换机相连。在这种情况下,负载分担表不受影响。在第二种情况中,可选地,该sdn还包括多个核心交换机、多个汇聚交换机和多个接入交换机,该多个核心交换机是该多个汇聚交换机的上层交换机,该多个汇聚交换机是该多个接入交换机的上层交换机,该链路状态信息包括第二故障链路信息,该第二故障链路信息为该多个汇聚交换机中的第二汇聚交换机和该多个接入交换机中的第三接入交换机之间链路故障的信息;其中,该根据该链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表,包括:根据该第二故障链路信息和该目的服务器的地址生成该负载分担表中的负载分担表项。这里,故障链路即为第二汇聚交换机和第三接入交换机之间的链路。对于与该故障链路相连的服务器器,可以细分为四种:1)可选地,在该第一服务器为该第三接入交换机的子孙服务器,该第三接入交换机与该目的服务器同处于第二节点集合,该目的服务器与该多个接入交换机中的第四接入交换机相连,该第三接入交换机与该第四接入交换 机不同时,该负载分担表项的汇聚交换机地址列表为该第二节点集合中的多个汇聚交换机地址去除该第二汇聚交换机地址后的地址列表。具体而言,源服务器与故障链路相连,例如,第一服务器为第三接入交换机的子孙服务器。同时,目的服务器与第三接入交换机处于同一节点集合,但目的服务器与第四接入交换机相连,第三接入交换机与第四接入交换机不同。也就是说目的服务器与故障链路处于相同的节点集合但连接不同的接入交换机。这里的负载分担表需要修改负载分担中的aggrlblisttable默认路由,下一跳交换机的地址列表需要去除与故障链路相连的汇聚交换机地址。具体的负载分担表实例如下表7所示:表72)可选地,在该第一服务器为该第三接入交换机的子孙服务器,该第三接入交换机与该目的服务器处于不同的节点集合,该负载分担表项的核心交换机地址列表为该多个核心交换机地址去除该第二汇聚交换机对应的祖先核心交换机地址后的地址列表,其中,该不同的节点集合间仅能通过核心交换机进行通信。具体而言,与1)的不同之处在于,目的服务器与故障链路处于不同的节点集合,例如,目的服务器与第三接入交换机处于不同的节点集合。这里的负载分担表需要修改负载分担表corelblisttable中的默认路由表项,下一跳交换机的地址列表需要去除与故障链路相连的汇聚交换机的祖先核心交换机地址。具体的负载分担表实例如下表8所示:表83)可选地,在该第一服务器不是该第三接入交换机的子孙服务器,该第一服务器与该第三接入交换机同处于第三节点集合,该目的服务器为该第三接入交换机的子孙服务器时,若该目的服务器的地址的第一部分与该第二汇聚交换机地址的第一部分相同,且该目的服务器的地址的第二部分与该第二汇聚交换机地址的第三部分相同,则该负载分担表项的汇聚交换机地址列表为该第三节点集合中的多个汇聚交换机地址去除该第二汇聚交换机地址后的地址列表;或,若该目的服务器的地址的第一部分与该第二汇聚交换机地址的第一部分不同,或该目的服务器的地址的第二部分与该第二汇聚交换机地址的第三部分不同,则该负载分担表项的汇聚交换机地址列表为该第三节点集合中的多个汇聚交换机地址列表。具体而言,与1)和2)的不同在于,源服务器不与故障链路相连,例如,该第一服务器不是该第三接入交换机的子孙服务器。并且,该第一服务器与该第三接入交换机处于同一pod,例如同处于第三节点集合。同时,目的服务器故障链路上的子孙服务器,例如为第三接入交换机的子孙服务器。这里,负载分担表需要在aggrlblisttable上增加一条路由表项,对于故障链路上的地址段,需要去除与故障链路相连的汇聚交换机地址。具体的负载分担表实例如下表9所示,其中,表中的f表示failure,即代表故障链路上的第二汇聚交换机地址:表9表9中包括了两种情况:当目的服务器地址段的第一部分与故障链路上第二汇聚交换机的第一部分相同,且目的服务器地址段的第二部分与故障链路上第二汇聚交换机的第三部分相同时,对应的可用下一跳交换机地址列表;或当目的服务器地址段的第一部分与故障链路上第二汇聚交换机的第一部分不同,或目的服务器地址段的第二部分与故障链路上第二汇聚交换机的第三部分不同时,对应的可用下一跳交换机地址列表。这里,目的服务器地址、汇聚交换机地址即按照前文中网络地址规划方法确定,即目的服务器地址area.pod.pos.i,汇聚交换机地址为area.252.pod.pos,目的服务器地址的area与该故障链路相连的汇聚交换机 地址的area相同,目的服务器地址的pod与该故障链路相连的汇聚交换机地址的pod相同。例如,对于目的服务器的地址的第一部分为area,第二部分为pod,对于故障链路上的汇聚交换机地址的第一部分为area,第三部分为pod。在这种情况下,当子网掩码为24位,需要在负载分担表中增加一条表项,即负载分担表项中可用下一跳交换机地址列表为本pod内所有的汇聚交换机地址去除故障汇聚交换机地址后的地址列表,例如去除第二汇聚交换机地址。另外,若目的服务器地址的area与该故障链路相连的汇聚交换机地址的area不同,或目的服务器地址的pod与该故障链路相连的汇聚交换机地址的pod不同,则可用下一跳交换机地址列表为本pod内所有的汇聚交换机地址。4)可选地,在该第一服务器与该第三接入交换机处于不同的节点集合,该目的服务器为该第三接入交换机的子孙服务器时,若该目的服务器的地址的第一部分与该第二汇聚交换机的祖先核心交换机地址的第二部分相同,且该目的服务器的地址的第二部分与该第二汇聚交换机的祖先核心交换机地址的第三部分相同,则该负载分担表项的核心交换机地址列表为该多个核心交换机地址去除该第二汇聚交换机对应的祖先核心交换机地址后的地址列表,其中,该不同的节点集合间仅能通过核心交换机进行通信;或,若该目的服务器的地址的第一部分与该第二汇聚交换机的祖先核心交换机地址的第二部分不同,或该目的服务器的地址的第二部分与该第二汇聚交换机的祖先核心交换机地址的第三部分不同,则该负载分担表项的核心交换机地址列表为该多个核心交换机地址列表,其中,该不同的节点集合间仅能通过核心交换机进行通信。具体而言,与3)的不同在于,源服务器与故障链路不相连处于不同的节点集合,其中,不同的节点集合间仅能通过核心交换机进行通信。这里,负载分担表需要在corelblisttable上增加一条路由表项,对于故障链路上的地址段,需要去除与故障链路相连的核心交换机地址。具体的负载分担表实例如下表10所示,其中,表中的f代表故障链路上的第二汇聚交换机的祖先核心交换机地址:表10表10中包括了两种情况:当目的服务器地址段的第一部分与故障链路上第二汇聚交换机的第一部分相同,且目的服务器地址段的第二部分与故障链路上第二汇聚交换机的祖先核心交换机的第三部分相同时,对应的可用下一跳交换机地址列表;或当目的服务器地址段的第一部分与故障链路上第二汇聚交换机的祖先核心交换机的第一部分不同,或目的服务器地址段的第二部分与故障链路上第二汇聚交换机的祖先核心交换机的第三部分不同时,对应的可用下一跳交换机地址列表。这里,目的服务器地址、核心交换机地址即按照前文中网络地址规划方法确定,即目的服务器地址area.pod.pos.i,核心交换机地址为area.252.pod.pos,目的服务器地址的area与该故障链路相连的汇聚交换机的祖先核心交换机地址的area相同,目的服务器地址的pod与该故障链路相连的汇聚交换机的祖先核心交换机地址的pod相同。例如,对于目的服务器的地址的第一部分为area,第二部分为pod,对于故障链路上汇聚交换机的祖先核心交换机地址的第一部分为area,第三部分为pod。例如,在匹配项部分子网掩码为24位,需要在负载分担表中增加一条表项,即负载分担表项中可用下一跳交换机地址列表为所有的核心交换机地址去除故障汇聚交换机的祖先核心交换机地址后的地址列表,例如去除第二汇聚交换机的祖先核心交换机地址。另外,若目的服务器地址的area与该故障链路相连的汇聚交换机的祖先核心交换机地址的area不同,或目的服务器地址的pod与该故障链路相连的汇聚交换机的祖先核心交换机地址的pod不同,则可用下一跳交换机地址列表为所有核心交换机地址。在第三种情况中,可选地,该sdn还包括多个接入交换机,该多个接入交换机为该多个服务器的上层交换机,该链路状态信息包括第三故障链路信息,该第三故障链路信息为该多个接入交换机中的第五接入交换机和该多个服务器中的第二服务器之间链路故障的信息;其中,该根据该链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表,包括:根据该第三故障链路信息和该目的服务器的地址生成该负载分担表中的负载分担表项。这里,故障链路即为第五接入交换机和第二服务器之间的链路。对于与该故障链路相连的服务器,可以细分为两种:1)可选地,在该第一服务器是该第二服务器时,该负载分担表项的汇聚交换机地址列表和核心交换机地址列表均为空。具体而言,源服务器与故障链路直接相连,例如,该第一服务器就是第二服务器。这里,目的服务器的可用下一跳交换机的地址列表变为空,即为“null”值。负载分担表的具体实例如下表11和表12所示,其中,表11为agglblisttable路由负载分担表,表12为corelblisttable路由负载分担表:表11目的服务器地址段可用下一跳交换机地址列表0.0.0.0/0null表12目的服务器地址段可用下一跳交换机地址列表0.0.0.0/0null2)可选地,在该第一服务器不是该第二服务器,该目的服务器是该第二服务器,该目的服务器与该第二服务器同处于第四节点集合,若该目的服务器的地址与该第二服务器的地址相同,则该负载分担表项的汇聚交换机地址列表和核心交换机地址列表为空;或,若该目的服务器的地址与该第二服务器的地址不同,则该负载分担表中的核心交换机地址为该多个核心交换机地址,该负载分担表中的汇聚交换机地址为该第四节点集合内的多个汇聚交换机地址。具体而言,源服务器不与故障链路相连,目的服务器为故障链路相连,即目的服务器是第二服务器。这里,负载分担表需要增加一条路由,负载分担表的具体实例如下表13和表14所示,其中,表13为agglblisttable路由负载分担表,表14为corelblisttable路由负载分担表:表13表14目的服务器地址段可用下一跳交换机地址列表0.0.0.0/0{所有核心交换机地址}与故障链路相连的服务器的地址null表13和表14中分别包括了两种情况:当目的服务器的地址段与第二服务器的地址段相同时,对应的可用下一跳交换机地址列表;或,当目的服务器的地址段与第二服务器的地址段不同时,,对应的可用下一跳交换机地址列表。可选地,在该类失效链路中还可以有两种特殊处理方法,以降低表资源的消耗,包括:不修改源路由的负载分担表,此时断开的服务器仍被源服务器认为可达,数据包在目的接入交换机处被丢弃;或者在本地地址解析时,通知源服务器端来的目的服务器不可达。应理解,在本发明实施例中,编号“第一”、“第二”…仅仅为了区分不同的对象,比如为了区分不同的交换机,或为了区分不同的服务器,或为了区分不同的节点集合,并不对本发明实施例的范围构成限制。因此,本发明实施例的软件定义网络sdn中的报文转发的方法,通过动态生成负载分担表,能够提高数据中心中负载均衡数据的转发效率,降低了负载均衡的运维复杂度。下面将结合图3对本发明实施例的软件定义网络sdn中的报文转发的方法进行描述,该sdn包括至少一个控制器和多个服务器,该方法300由该多个服务器中的第一服务器上的软件交换机执行,例如,该软件交换机为ovs,该方法300包括:s310,接收该至少一个控制器发送的负载分担表,该负载分担表是该至少一个控制器根据该sdn的链路状态信息和该第一服务器的目的服务器的地址生成的;s320,根据该负载分担表进行报文转发。具体而言,第一服务器上的软件交换机在接收到控制器发送的负载分担表后,可以根据该负载分担表进行报文转发。第一服务器即为源服务器。其中,该负载分担表由控制器根据该sdn的链路状态信息和该第一服务器的目的服务器的地址生成的,在前文已经详细描述,为了简洁,不再赘述。可选地,第一服务器上的软件交换机在根据该负载分担表进行报文转发可以包括:根据该负载分担表选择下一跳交换机地址作为外层ip封装该报文,并转发该报文。这里,报文实际采用的转发形式是ipinip封装,即采用的是ip隧道tunnel。目前的openflow协议无法支持ip隧道的外层ip头封装处理,因此为了支持后续的隧道终点处理,本发明对openflow协议也作了如下扩展:push_ip_tunnel在选定了上述负载均衡的外层封装的地址后,根据此动作的指示,第一服务器(可以为ovs交换机)用选定的外层封装地址对报文进行ipinip的封装,此动作的类型为0x34,长度为4个字节;strip_ip_tunnel,此动作在ipinip隧道的终点指示ovs交换机剥掉外层ip头,此动作的类型为0x35。应理解,这里报文转发的形式仅以ipinip封装为例进行说明,也可以是别的转发形式,对此不作限制。因此,本发明实施例的软件定义网络sdn中的数据报文转发的方法,通过动态生成负载分担表,能够提高数据中心中负载均衡数据的转发效率,降低了负载均衡的运维复杂度。上文结合图1至图3详细描述了根据本发明实施例的软件定义网络sdn中的数据报文转发的方法,下面将结合图4和图5描述根据本发明实施例的软件定义网络sdn中的数据报文转发的装置。图4示出了根据本发明实施例的软件定义网络sdn中的控制器600的示意性框图。如图4所示,该控制器600包括:获取模块610,用于获取该sdn中的链路状态信息;生成模块620,用于根据该获取模块610获取的该链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表;发送模块630,用于将该生成模块620生成的该负载分担表发送至该第一服务器上的软件交换机,以便于该第一服务器上的软件交换机根据该负载分担表进行报文转发。本发明实施例的软件定义网络sdn中的报文转发的方法,通过动态生成负载分担表,能够提高数据中心中负载均衡数据的转发效率,降低了负载均衡的运维复杂度。在获取模块610中,链路状态信息可以包括无故障链路和三种故障链路的情形。下面将对这些情形下的负载分担表进行描述。在一种情形中,可选地,该sdn还包括多个核心交换机和多个汇聚交换机,该多个核心交换机是该多个汇聚交换机的上层交换机,该链路状态信息包括无故障链路信息,该生成模块620具体用于:根据该无故障链路信息和该目的服务器的地址生成该负载分担表中的负载分担表项,其中,该负载分担表项的核心交换机地址列表为该多个核心交换机地址列表,该负载分担表项的汇聚交换机地址列表为该第一服务器所处的节点集合中的多个汇聚交换机地址列表。在一种情形中,可选地,该sdn还包括多个核心交换机和多个汇聚交换机,该多个核心交换机是该多个汇聚交换机的上层交换机,该获取模块获取的该链路状态信息包括第一故障链路信息,该第一故障链路信息为该多个核心交换机中的第一核心交换机和该多个汇聚交换机中的第一汇聚交换机之间链路故障的信息;其中,该生成模块620具体用于:根据该第一故障链路信息和该目的服务器的地址生成该负载分担表中的负载分担表项。可选地,在该第一服务器为该第一汇聚交换机的子孙服务器,该第一汇聚交换机与该目的服务器处于不同的节点集合时,该生成模块620生成的该负载分担表项的核心交换机地址列表为该多个核心交换机地址去除该第一核心交换机地址后的地址列表,其中,该不同的节点集合间仅能通过核心交换机进行通信。可选地,在该第一服务器不是该第一汇聚交换机的子孙服务器,该目的服务器是该第一汇聚交换机的子孙服务器时,若该目的服务器的地址的第一部分与该第一核心交换机地址的第一部分相同,且该目的服务器的地址的第二部分与该第一核心交换机地址的第三部分相同,则该负载分担表项的核心交换机地址列表为该多个核心交换机地址去除该第一核心交换机地址后的地址列表;或,该目的服务器的地址的第一部分与该第一核心交换机地址的第一部分不同,或该目的服务器的地址的第二部分与该第一核心交换机地址的第三部分不同,则该生成模块620生成的该负载分担表项的核心交换机地址列表为该多个核心交换机地址。可选地,在该第一服务器为该第一汇聚交换机的子孙服务器,该第一汇聚交换机与该目的服务器同处于第一节点集合,该第一汇聚交换机与第一接入交换机相连,该目的服务器与第二接入交换机相连,该第一接入交换机与该第二接入交换机不同时,则该生成模块620生成的该负载分担表项的汇聚交换机地址列表为该第一节点集合中的多个汇聚交换机地址列表。在一种情形中,可选地,该sdn还包括多个核心交换机、多个汇聚交换机和多个接入交换机,该多个核心交换机是该多个汇聚交换机的上层交换机,该多个汇聚交换机是该多个接入交换机的上层交换机,该获取模块获取的该链路状态信息包括第二故障链路信息,该第二故障链路信息为该多个汇聚交换机中的第二汇聚交换机和该多个接入交换机中的第三接入交换机之间链路故障的信息;其中,该生成模块620具体用于:根据该第二故障链路信息和该目的服务器的地址生成该负载分担表中的负载分担表项。可选地,在该第一服务器为该第三接入交换机的子孙服务器,该第三接入交换机与该目的服务器同处于第二节点集合,该目的服务器与该多个接入交换机中的第四接入交换机相连,该第三接入交换机与该第四接入交换机不同时,该生成模块620生成的该负载分担表项的汇聚交换机地址列表为该第三节点集合中的多个汇聚交换机地址去除该第二汇聚交换机地址后的地址列表。可选地,在该第一服务器为该第三接入交换机的子孙服务器,该第三接入交换机与该目的服务器处于不同的节点集合,该生成模块620生成的该负载分担表项的核心交换机地址列表为该多个核心交换机地址去除该第二汇聚交换机对应的祖先核心交换机地址后的地址列表,其中,该不同的节点集合间仅能通过核心交换机进行通信。可选地,在该第一服务器不是该第三接入交换机的子孙服务器,该第一服务器与该第三接入交换机同处于第三节点集合,该目的服务器为该第三接入交换机的子孙服务器时,若该目的服务器的地址的第一部分与该第二汇聚交换机地址的第一部分相同,且该目的服务器的地址的第二部分与该第二汇聚交换机地址的第三部分相同,则该负载分担表项的汇聚交换机地址列表为该第三节点集合中的多个汇聚交换机地址去除该第二汇聚交换机地址后的地址列表;或,若该目的服务器的地址的第一部分与该第二汇聚交换机地址的第一部分不同,或该目的服务器的地址的第二部分与该第二汇聚交换机地址的第三部分不同,则该生成模块620生成的该负载分担表项的汇聚交换机地址列表为该第三节点集合中的多个汇聚交换机地址列表。可选地,在该第一服务器与该第三接入交换机处于不同的节点集合,该目的服务器为该第三接入交换机的子孙服务器时,若该目的服务器的地址的第一部分与该第二汇聚交换机的祖先核心交换机地址的第二部分相同,且该目的服务器的地址的第二部分与该第二汇聚交换机的祖先核心交换机地址的第三部分相同,则该生成模块620生成的该负载分担表项的核心交换机地址列表为该多个核心交换机地址去除该第二汇聚交换机对应的祖先核心交换机地址后的地址列表,其中,该不同的节点集合间仅能通过核心交换机进行通信;或,若该目的服务器的地址的第一部分与该第二汇聚交换机的祖先核心 交换机地址的第二部分不同,或该目的服务器的地址的第二部分与该第二汇聚交换机的祖先核心交换机地址的第三部分不同,则该生成模块620生成的该负载分担表项的核心交换机地址列表为该多个核心交换机地址列表,其中,该不同的节点集合间仅能通过核心交换机进行通信。在一种情形中,可选地,该sdn还包括多个接入交换机,该多个接入交换机为该多个服务器的上层交换机,该获取模块获取的该链路状态信息包括第三故障链路信息,该第三故障链路信息为该多个接入交换机中的第五接入交换机和该多个服务器中的第二服务器之间链路故障的信息;其中,该生成模块620具体用于:根据该第三故障链路信息和该目的服务器的地址生成该负载分担表中的负载分担表项。可选地,在该第一服务器是该第二服务器时,该生成模块620生成的该负载分担表项的汇聚交换机地址列表和核心交换机地址列表均为空。可选地,在该第一服务器不是该第二服务器,该目的服务器是该第二服务器,该目的服务器与该第二服务器同处于第四节点集合,若该目的服务器的地址与该第二服务器的地址相同,则该负载分担表项的汇聚交换机地址列表和核心交换机地址列表为空;或,若该目的服务器的地址与该第二服务器的地址不同,则该负载分担表中的核心交换机地址为该多个核心交换机地址,该生成模块620生成的该负载分担表中的汇聚交换机地址为该第四节点集合内的多个汇聚交换机地址。根据本发明实施例的装置600可对应于根据本发明实施例的方法200的执行主体,并且装置600中各个模块的上述和其他操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。因此,本发明实施例的软件定义网络sdn中的报文转发的控制器,通过动态生成负载分担表,能够提高数据中心中负载均衡数据的转发效率,降低了负载均衡的运维复杂度。图5示出了根据本发明实施例的软件定义网络sdn中的第一服务器上的软件交换机700的示意性框图。该sdn包括至少一个控制器和多个服务器,如图5所示,该多个服务器中的第一服务器上的软件交换机700包括:接收模块710,用于接收该至少一个控制器发送的负载分担表,该负载 分担表是该至少一个控制器根据该sdn的链路状态信息和该第一服务器的目的服务器的地址生成的;转发模块720,用于根据该接收模块710接收的该负载分担表进行报文转发。可选地,该转发模块720具体用于:根据该负载分担表选择下一跳交换机地址作为外层ip封装该报文,并转发该报文。因此,本发明实施例的软件定义网络sdn中的报文转发的第一服务器上的软件交换机,通过根据控制器动态生成的负载分担表进行报文转发,能够提高数据中心中负载均衡数据的转发效率,降低了负载均衡的运维复杂度。根据本发明实施例的装置700可对应于根据本发明实施例的方法300的执行主体,并且装置700中各个模块的上述和其他操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。图6示出了本发明另一个实施例提供的软件定义网络sdn中的控制器的结构,包括至少一个处理器702(例如cpu),至少一个网络接口705或者其他通信接口,存储器706,和至少一个通信总线703,用于实现这些装置之间的连接通信。处理器702用于执行存储器706中存储的可执行模块,例如计算机程序。存储器706可能包含高速随机存取存储器(ram:randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个网络接口705(可以是有线或者无线)实现与至少一个其他网元之间的通信连接。在一些实施方式中,存储器706存储了程序7061,程序7061可以被处理器702执行,这个程序包括:获取该sdn中的链路状态信息;根据该链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表;将该负载分担表发送至该第一服务器上的软件交换机,以便于该第一服务器上的软件交换机根据该负载分担表进行报文转发。可选地,该sdn还包括多个核心交换机和多个汇聚交换机,该多个核心交换机是该多个汇聚交换机的上层交换机,该链路状态信息包括第一故障 链路信息,该第一故障链路信息为该多个核心交换机中的第一核心交换机和该多个汇聚交换机中的第一汇聚交换机之间链路故障的信息;其中,该根据该链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表,包括:根据该第一故障链路信息和该目的服务器的地址生成该负载分担表中的负载分担表项。可选地,在该第一服务器为该第一汇聚交换机的子孙服务器,该第一汇聚交换机与该目的服务器处于不同的节点集合时,该负载分担表项的核心交换机地址列表为该多个核心交换机地址去除该第一核心交换机地址后的地址列表,其中,该不同的节点集合间仅能通过核心交换机进行通信。可选地,在该第一服务器不是该第一汇聚交换机的子孙服务器,该目的服务器是该第一汇聚交换机的子孙服务器时,若该目的服务器的地址的第一部分与该第一核心交换机地址的第一部分相同,且该目的服务器的地址的第二部分与该第一核心交换机地址的第三部分相同,则该负载分担表项的核心交换机地址列表为该多个核心交换机地址去除该第一核心交换机地址后的地址列表;或,该目的服务器的地址的第一部分与该第一核心交换机地址的第一部分不同,或该目的服务器的地址的第二部分与该第一核心交换机地址的第三部分不同,则该负载分担表项的核心交换机地址列表为该多个核心交换机地址。可选地,在该第一服务器为该第一汇聚交换机的子孙服务器,该第一汇聚交换机与该目的服务器同处于第一节点集合,该第一汇聚交换机与第一接入交换机相连,该目的服务器与第二接入交换机相连,该第一接入交换机与该第二接入交换机不同时,则该负载分担表项的汇聚交换机地址列表为该第一节点集合中的多个汇聚交换机地址列表。可选地,该sdn还包括多个核心交换机、多个汇聚交换机和多个接入交换机,该多个核心交换机是该多个汇聚交换机的上层交换机,该多个汇聚交换机是该多个接入交换机的上层交换机,该链路状态信息包括第二故障链路信息,该第二故障链路信息为该多个汇聚交换机中的第二汇聚交换机和该多个接入交换机中的第三接入交换机之间链路故障的信息;其中,该根据该链路状态信息和该多个服务器中的第一服务器的目的服 务器的地址生成该第一服务器的负载分担表,包括:根据该第二故障链路信息和该目的服务器的地址生成该负载分担表中的负载分担表项。可选地,在该第一服务器为该第三接入交换机的子孙服务器,该第三接入交换机与该目的服务器同处于第二节点集合,该目的服务器与该多个接入交换机中的第四接入交换机相连,该第三接入交换机与该第四接入交换机不同时,该负载分担表项的汇聚交换机地址列表为该第二节点集合中的多个汇聚交换机地址去除该第二汇聚交换机地址后的地址列表。可选地,在该第一服务器为该第三接入交换机的子孙服务器,该第三接入交换机与该目的服务器处于不同的节点集合,该负载分担表项的核心交换机地址列表为该多个核心交换机地址去除该第二汇聚交换机对应的祖先核心交换机地址后的地址列表,其中,该不同的节点集合间仅能通过核心交换机进行通信。可选地,在该第一服务器不是该第三接入交换机的子孙服务器,该第一服务器与该第三接入交换机同处于第三节点集合,该目的服务器为该第三接入交换机的子孙服务器时,若该目的服务器的地址的第一部分与该第二汇聚交换机地址的第一部分相同,且该目的服务器的地址的第二部分与该第二汇聚交换机地址的第三部分相同,则该负载分担表项的汇聚交换机地址列表为该第三节点集合中的多个汇聚交换机地址去除该第二汇聚交换机地址后的地址列表;或,若该目的服务器的地址的第一部分与该第二汇聚交换机地址的第一部分不同,或该目的服务器的地址的第二部分与该第二汇聚交换机地址的第三部分不同,则该负载分担表项的汇聚交换机地址列表为该第三节点集合中的多个汇聚交换机地址列表。可选地,在该第一服务器与该第三接入交换机处于不同的节点集合,该目的服务器为该第三接入交换机的子孙服务器时,若该目的服务器的地址的第一部分与该第二汇聚交换机的祖先核心交换机地址的第二部分相同,且该目的服务器的地址的第二部分与该第二汇聚交换机的祖先核心交换机地址的第三部分相同,则该生成模块620生成的该负载分担表项的核心交换机地址列表为该多个核心交换机地址去除该第二汇聚交换机对应的祖先核心交换机地址后的地址列表,其中,该不同的节点 集合间仅能通过核心交换机进行通信;或,若该目的服务器的地址的第一部分与该第二汇聚交换机的祖先核心交换机地址的第二部分不同,或该目的服务器的地址的第二部分与该第二汇聚交换机的祖先核心交换机地址的第三部分不同,则该生成模块620生成的该负载分担表项的核心交换机地址列表为该多个核心交换机地址列表,其中,该不同的节点集合间仅能通过核心交换机进行通信。可选地,该sdn还包括多个接入交换机,该多个接入交换机为该多个服务器的上层交换机,该链路状态信息包括第三故障链路信息,该第三故障链路信息为该多个接入交换机中的第五接入交换机和该多个服务器中的第二服务器之间链路故障的信息;其中,该根据该链路状态信息和该多个服务器中的第一服务器的目的服务器的地址生成该第一服务器的负载分担表,包括:根据该第三故障链路信息和该目的服务器的地址生成该负载分担表中的负载分担表项。可选地,在该第一服务器是该第二服务器时,该负载分担表项的汇聚交换机地址列表和核心交换机地址列表均为空。可选地,在该第一服务器不是该第二服务器,该目的服务器是该第二服务器,该目的服务器与该第二服务器同处于第四节点集合,若该目的服务器的地址与该第二服务器的地址相同,则该负载分担表项的汇聚交换机地址列表和核心交换机地址列表为空;或,若该目的服务器的地址与该第二服务器的地址不同,则该负载分担表中的核心交换机地址为该多个核心交换机地址,该生成模块620生成的该负载分担表中的汇聚交换机地址为该第四节点集合内的多个汇聚交换机地址。可选地,在该类失效链路中还可以有两种特殊处理方法,以降低表资源的消耗,包括:不修改源路由的负载分担表,此时断开的服务器仍被源服务器认为可达,数据包在目的接入交换机处被丢弃;或者在本地地址解析时,通知源服务器端来的目的服务器不可达。应理解,在本发明实施例中,编号“第一”、“第二”…仅仅为了区分不同的对象,比如为了区分不同的交换机,或为了区分不同的服务器,或为了区分不同的节点集合,并不对本发明实施例的范围构成限制。因此,本发明实施例的软件定义网络sdn中的数据报文转发的控制器,通过动态生成负载分担表,能够提高数据中心中负载均衡数据的转发效率,降低了负载均衡的运维复杂度。图7示出了本发明另一个实施例提供的软件定义网络sdn中的第一服务器上的软件交换机的结构,包括至少一个处理器802(例如cpu),至少一个网络接口805或者其他通信接口,存储器806,和至少一个通信总线803,用于实现这些装置之间的连接通信。处理器802用于执行存储器806中存储的可执行模块,例如计算机程序。存储器806可能包含高速随机存取存储器(ram:randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个网络接口805(可以是有线或者无线)实现与至少一个其他网元之间的通信连接。在一些实施方式中,存储器806存储了程序8061,程序8061可以被处理器802执行,这个程序包括:接收该至少一个控制器发送的负载分担表,该负载分担表是该至少一个控制器根据该sdn的链路状态信息和该第一服务器的目的服务器的地址生成的;根据该负载分担表进行报文转发。可选地,第一服务器上的软件交换机在根据该负载分担表进行报文转发可以包括:根据该负载分担表选择下一跳交换机地址作为外层ip封装该报文,并转发该报文。因此,本发明实施例的软件定义网络sdn中的第一服务器上的软件交换机,通过根据控制器动态生成的负载分担表进行报文转发,能够提高数据中心中负载均衡数据的转发效率,降低了负载均衡的运维复杂度。应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1