数据报文的转发方法、装置及设备与流程

文档序号:18161218发布日期:2019-07-13 09:20阅读:167来源:国知局
数据报文的转发方法、装置及设备与流程
本发明涉及移动通信领域,尤其涉及一种数据报文的转发方法、装置及设备。
背景技术
:软件定义网络(SoftwareDefinedNetworking,SDN)的核心思想是将原本完全由交换机/路由器控制的数据报文转发过程,转化为由开放流交换机(OpenFlowSwitch)和控制服务器(Controller)分别完成的独立过程。转化之后,控制服务器决定了所有数据报文在网路中的传输路径,OpenFlow交换机会在本地维护一个与转发表不同的流表(FlowTable),如果要转发的数据报文在流表中有对应项,则直接进行快速转发;若流表中没有此项,数据报文会被发送到控制服务器进行传输路径的确认,再根据下发结果进行转发。然而,在虚拟可扩展局域网(VirtualExtensibleLAN,VxLAN)中,会存在众多的虚拟机,且虚拟机会在不同的数据中心(如,虚拟通道终端(VirtualTunnelEndPoint,VTEP))之间迁移,由此,虚拟机的数据请求在对应的物理位置的OpenFlow交换机上往往没有对应项,此时,控制服务器就需要处理大量的数据请求包,且大量的数据请求包会占用管理通道资源,从而导致控制服务器处理数据报文的负担比较大,且大量占用管理通道资源的问题。技术实现要素:本发明实施例提供了一种数据报文的转发方法、装置及设备,可以解决现有技术中控制服务器处理数据报文负担重的问题。第一方面,提供了一种数据报文的转发方法,该方法包括:源交换机接收源虚拟机发送的第一数据报文,所述第一数据报文包括:目标虚拟机信息和所述源虚拟机的特征标识信息;所述源交换机在本地保存的转发表中未查找到所述目标虚拟机信息对应的目标虚拟机所属的目标交换机的目标交换机信息时,根据所述源虚拟机的特征标识信息,在从控制服务器接收的通配流表中获取与所述源虚拟机的特征标识信息对应的动作指令集;所述源交换机从与所述源虚拟机的特征标识信息对应的动作指令集中提取多播组地址信息;所述源交换机根据所述多播组地址信息,分别向多个交换机发送所述第一数据报文;所述源交换机接收目标交换机返回的响应报文,所述目标交换机为所述多个交换机中的任一交换机,所述响应报文包括所述目标交换机的目标交换机信息;所述源交换机生成交换机流表项信息,所述交换机流表项信息包括所述目标交换机信息与所述目标虚拟机信息的对应关系。结合第一方面,在第一方面的第一种实现方式中,所述源交换机生成所述交换机流表项信息之后,所述方法还包括:所述源交换机接收第二数据报文,所述第二数据报文包括所述目标虚拟机信息;所述源交换机根据所述目标虚拟机信息,从所述交换机流表项信息中获取所述目标交换机信息;所述源交换机根据所述目标交换机信息向所述目标交换机发送所述第二数据报文。结合第一方面,在第一方面的第二种实现方式中,所述源虚拟机的特征标识信息包括所述源虚拟机的虚拟局域网标识VLANID或者所述源虚拟机与子网内其它虚拟机共同的MAC地址开头信息。结合第一方面,在第一方面的第三种实现方式中,所述目标交换机信息包括所述目标交换机的虚拟可扩展局域网标识VNI、所述目标交换机的IP地址和下一跳交换机的MAC地址。结合第一方面,在第一方面的第四种实现方式中,所述源交换机根据所述多播组地址信息,分别向多个交换机发送所述第一数据报文包括:为所述第一数据报文添加第一报文头,得到第三数据报文,所述第一报文头包括:所述源交换机的源交换机信息和所述多播组地址信息;根据所述多播组地址信息,分别向加入所述多播组地址信息对应的多播组的多个交换机发送所述第三数据报文。结合第一方面的第四种实现方式,在第一方面的第五种实现方式中,所述源交换机接收目标交换机返回的响应报文包括:所述目标交换机在接收到所述第三数据报文后,去掉所述第三数据报文的第一报文头,得到第四数据报文,向所述目标交换机下属的虚拟机发送所述第四数据报文,并接收所述虚拟机在将所述目标虚拟机信息与所述虚拟机的虚拟机信息比对一致时返回的原始响应报文;所述目标交换机对所述原始响应报文添加第二报文头,得到所述响应报文,所述源交换机接收所述目标交换机返回的所述响应报文,所述第二报文头包括:所述目标交换机信息和所述源交换机信息。结合第一方面,在第一方面的第六种实现方式中,所述交换机流表项信息的优先级高于所述通配流表的优先级。结合第一方面或者第一方面的上述六种实现方式中任一种实现方式,在第一方面的第七种实现方式中,所述方法还包括:当所述目标虚拟机从所述目标交换机迁移至其它交换机时,所述源交换机接收所述目标虚拟机发送的广播数据报文,所述广播数据报文包括其它交换机信息;所述源交换机将所述交换机流表项信息中的所述目标交换机信息更新为所述其它交换机信息。第二方面,提供了一种数据报文的转发装置,该装置包括:接收单元、获取单元、提取单元、发送单元和生成单元;所述接收单元,用于接收源虚拟机发送的第一数据报文,所述第一数据报文包括:目标虚拟机信息和所述源虚拟机的特征标识信息;所述获取单元,用于在本地保存的转发表中未查找到所述接收单元接收的所述目标虚拟机信息对应的目标虚拟机所属的目标交换机的目标交换机信息时,根据所述源虚拟机的特征标识信息,在从控制服务器接收的通配流表中获取与所述源虚拟机的特征标识信息对应的动作指令集;所述提取单元,用于从与所述获取单元获取的所述源虚拟机的特征标识信息对应的动作指令集中提取多播组地址信息;所述发送单元,用于根据所述提取单元提取的所述多播组地址信息,分别向多个交换机发送所述第一数据报文;所述接收单元,还用于接收目标交换机返回的响应报文,所述目标交换机为所述多个交换机中的任一交换机,所述响应报文包括所述目标交换机的目标交换机信息;所述生成单元,用于生成交换机流表项信息,所述交换机流表项信息包括所述目标交换机信息与所述目标虚拟机信息的对应关系。结合第二方面,第二方面的第一种实现方式中,所述接收单元,还用于接收第二数据报文,所述第二数据报文包括所述目标虚拟机信息;所述获取单元,还用于根据所述目标虚拟机信息,从所述交换机流表项信息中获取所述目标交换机信息;所述发送单元,还用于根据所述获取单元获取的所述目标交换机信息向所述目标交换机发送所述第二数据报文。结合第二方面,在第二方面的第二种实现方式中,所述源虚拟机的特征标识信息包括所述源虚拟机的虚拟局域网标识VLANID或者所述源虚拟机与子网内其它虚拟机共同的MAC地址开头信息。结合第二方面,在第二方面的第三种实现方式中,所述目标交换机信息包括所述目标交换机的虚拟可扩展局域网标识VNI、所述目标交换机的IP地址和下一跳交换机的MAC地址。结合第二方面,在第二方面的第四种实现方式中,所述发送单元具体用于:为所述第一数据报文添加第一报文头,得到第三数据报文,所述第一报文头包括:所述源交换机的源交换机信息和所述多播组地址信息;根据所述多播组地址信息,分别向加入所述多播组地址信息对应的多播组的多个交换机发送所述第三数据报文。结合第二方面的第四种实现方式,在第二方面的第五种实现方式中,所述接收单元具体用于:所述目标交换机在接收到所述第三数据报文后,去掉所述第三数据报文的第一报文头,得到第四数据报文,向所述目标交换机下属的虚拟机发送所述第四数据报文,并接收所述虚拟机在将所述目标虚拟机信息与所述虚拟机的虚拟机信息比对一致时返回的原始响应报文;所述目标交换机对所述原始响应报文添加第二报文头,得到所述响应报文,接收所述目标交换机返回的所述响应报文,所述第二报文头包括:所述目标交换机信息和所述源交换机信息。结合第二方面,在第二方面的第六种实现方式中,所述交换机流表项信息的优先级高于所述通配流表的优先级。结合第二方面或第二方面的上述六种实现方式中任一种实现方式,在第二方面的第七种实现方式中,所述装置还包括:更新单元;所述接收单元还用于:当所述目标虚拟机从所述目标交换机迁移至其它交换机时,接收所述目标虚拟机发送的广播数据报文,所述广播数据报文包括其它交换机信息;所述更新单元,用于将所述交换机流表项信息中的所述目标交换机信息更新为所述其它交换机信息。第三方面,提供了一种数据报文的转发设备,该设备包括:处理器,存储器,通信接口和总线,其中,所述处理器、所述存储器和所述通信接口通过所述总线通信;所述通信接口用于与交换机或控制服务器通信;所述存储器用于存放程序;当所述转发设备运行时,所述处理器用于执行所述存储器存储的所述程序,以执行上述第一方面所述的数据报文的转发方法。本发明实施例提供的数据报文的转发方法、装置及设备,交换机根据已接收的源虚拟机向目标虚拟机发送的第一数据报文自动生成交换机流表项信息,该交换机流表项信息用于指示该交换机在接收到向目标虚拟机发送的第二数据报文时,根据目标虚拟机信息,确定源虚拟机与目标虚拟机之间的单播通道,并通过该单播通道向目标虚拟机发送上述第二数据报文,可以减轻控制服务器处理数据报文的负担。附图说明图1为SDN网络结构示意图之一;图2为本发明方法实施例提供的数据报文的转发方法流程图;图3为SDN网络结构示意图之二;图4为本发明装置实施例提供的数据报文的转发装置示意图;图5为本发明设备实施例提供的数据报文的转发设备示意图。具体实施方式下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。贯穿本说明书“源交换机”,可以指示SDN网络中任一OpenFlow交换设备,例如图1中的第一交换机、第二交换机或第三交换机。贯穿本说明书“源虚拟机”,可以指示SDN网络中任一虚拟机,例如图1中的VM1、VM2、VM3或VM4。本发明实施例提供的数据报文的转发方法应用于图1所示的SDN网络中,第一交换机、第二交换机和第三交换机分别为OpenFlow交换机,它们下属的虚拟机VM1、VM2、VM3和VM4共同被控制服务器划分为一个子网(也即属于同一租户);当该子网使用VxLAN来划分时,上述第一交换机、第二交换机和第三交换机可以分别为VTEP1、VTEP2和VTEP3,且在VTEP1、VTEP2和VTEP3上相同租户的VM具有共同的VxLAN网络标识符(VxLANNetworkIdentifier,VNI),也即属于一个VxLAN段(Segment),如表1所示:表1其中,VLANID表示VM在本地交换机上的虚拟局域网标识,第一交换机中VLANID为100的虚拟机,第二交换机中VLANID为200的虚拟机,第三交换机中VLANID为300的虚拟机,都共同包含在一个VNI值为8的VxLAN段中,也即三个不同的VLAN域在VxLAN中的混合起来了。此外,属于同一个子网的虚拟机还可以具有相同的MAC地址开头信息,如,将图1中的四个虚拟机(VM1、VM2、VM3和VM4)的MAC地址分别与ff:ff:ff:00:00:00相与,即可得到相同的MAC地址开头信息:11:22:33。方法实施例图2为本发明方法实施例提供的数据报文的转发方法流程图。如图2所示,所述方法具体包括:S210,源交换机接收源虚拟机发送的第一数据报文,所述第一数据报文包括:目标虚拟机信息和所述源虚拟机的特征标识信息。在此说明,目标虚拟机信息可以但不限定为目标虚拟机的媒体访问控制(MediaAccessControl,MAC)地址。所述源虚拟机的特征标识信息为所述源虚拟机的虚拟局域网标识VLANID或者所述源虚拟机与子网内其它虚拟机共同的MAC地址开头信息。以图1为例,当源虚拟机为VM1,目标虚拟机为VM3时,则源虚拟机的源虚拟机信息可以为VM1的MAC地址:11:22:33:00:00:01,目标虚拟机信息可以为VM3的MAC地址:11:22:33:00:00:03;源虚拟机的特征标识信息可以为VM1的VLANID:100,也可以为VM1与子网内其它虚拟机共同的MAC地址开头信息:11:22:33。S220,所述源交换机在本地保存的转发表中未查找到所述目标虚拟机信息对应的目标虚拟机所属的目标交换机的目标交换机信息时,根据所述源虚拟机的特征标识信息,在从控制服务器接收的通配流表中获取与所述源虚拟机的特征标识信息对应的动作指令集。所述目标交换机信息包括所述目标交换机的虚拟可扩展局域网标识VNI、所述目标交换机的互联网协议(InternetProtocol,IP)地址和下一跳交换机的MAC地址。如图1中,第一交换机的交换机信息为VNI=8,IP地址为10.0.0.1。控制服务器侧会维护通配流表,当交换机启动时,交换机会自动从控制服务器上下载上述通配流表。通配流表中主要包括两项内容:匹配域和动作指令集,其中,匹配域可以为虚拟机的VLANID,也可以为同一个子网内虚拟机共同的MAC地址开头信息。当匹配域可以为虚拟机的VLANID时,通配流表可以如表2所示:表2匹配域动作指令集VLANID=100Group1上述表格内容表示,如果S210中接收的第一数据报文中包括的源虚拟机的VLANID为100,则该第一数据报文可以匹配到上述表2中VLANID=100的内容,然后执行动作指令集(Group1),其中,Group1的内容可以对应表3中ID=1,Type=select的动作指令。表3在表3中,VTEP2和VTEP3分别为第二交换机和第三交换机;Type表示动作指令的执行类型,当Type为select时,表示交换机执行动作指令列表Actionlists中三条动作指令中的一条指令,其中,指令“Pushvxlanvtep2header,outputport2(vtep2)”表示为当前数据报文添加第二交换机的交换机信息,并向端口(port)2发送添加交换机信息后的数据报文,指令“Pushvxlanvtep3header,outputport3(vtep3)”表示为当前数据报文添加第三交换机的交换机信息,并向端口3发送添加交换机信息后的数据报文;当Type为all时,表示交换机执行Actionlists中全部的两组动作指令,其中,指令“Pushvxlanmcastheader,outputport2(vtep2)”表示为当前数据报文添加多播组地址,并向端口2发送添加多播组地址后的数据报文,指令“Pushvxlanmcastheader,outputport3(vtep3)”表示为当前数据报文添加多播组地址,并向端口3发送添加多播组地址后的数据报文。需要说明的是,上述两组动作指令是由交换机在现有的动作指令集中新扩展的一类动作指令,即压入(push)指令。在VxLAN中,未知单播或者多播会匹配到表格3的内容,当交换机(如,VTEP)在执行上述push指令时,交换机会将VxLAN相关信息打包到原数据报文的报文头,且产生指向多个VTEP的VxLAN多播,交换机在向上述多个VTEP发送打包了报文头的原数据报文时,通过该交换机接收数据的入端口作为本地输出(output)端口,其中,每个VTEP的IP地址和用户数据包协议(UserDatagramProtocol,UDP)端口都包含在上述push指令的动作参数中。在此说明,VxLAN相关信息可以如表4所示:表4序号参数说明1DMAC下一跳的MAC地址,或者多播MAC地址。2SMAC本地VTEPMAC地址。3DIP远端VTEP的IP地址,或者多播地址。4SIP本地的VTEP的IP地址。5VNIVxLAN段ID。此外,交换机还扩展另一类动作指令,即弹出(pop)指令。当交换机在执行上述pop指令时,交换机会将数据报文的VxLAN相关信息去掉。如前述提到的,通配流表中的匹配域也可以为同一个子网内虚拟机共同的MAC地址开头信息。当匹配域为共同的MAC地址开头信息时,通配流表可以如表5所示:表5其中,SMAC地址为源虚拟机的MAC地址,SMAC&ff:ff:ff:00:00:00表示取同一个子网内虚拟机共同的MAC地址开头信息。Group1与表2中的Group1相同,在此不作赘述。如前述例子中,当第一交换机(即源交换机)接收到源虚拟机VM1向目标虚拟机VM3发送的第一数据报文时,第一交换机检查自己是否收到过源虚拟机VM1的数据,如果没有,则记录第一交换机的VNI、第一交换机的IP地址和源虚拟机VM1的MAC地址等基本信息。具体地,第一交换机可以通过转发表记录上述基本信息。在完成上述检查过程之后,第一交换机在本地保存的转发表中查找目标虚拟机信息(如:目标虚拟机VM3的MAC地址:11:22:33:00:00:03)对应的VM3所属的第二交换机的目标交换机信息(如:第二交换机的IP地址:10.0.0.2和端口:port2),因为第一交换机之前并未接收到过目标虚拟机VM3的数据,所以转发表中并未记录目标虚拟机VM3与第二交换机之间的对应关系,也即查找不到目标交换机信息。因此需要根据S210中接收的第一数据报文中的源虚拟机VM1的VLANID=100或者同一个子网内虚拟机共同的MAC地址开头信息:11:22:33,从通配流表中获取相应的动作指令集,如可以获取到表2中的Group1或者表5中的Group。S230,所述源交换机从与所述源虚拟机的特征标识信息对应的动作指令集中提取多播组地址信息。此处,还可以从与所述源虚拟机的特征标识信息对应的动作指令集中提取多个单播地址。如前述例子中,根据VM1的特征标识信息VLANID=100,获取到的动作指令集为Group1,根据Group1可以得到如表6所示的多播组地址信息。表6如表6可知,push指令中指向的两个VTEP分别为:VTEP2和VTEP3(即第二交换机和第三交换机),其中,第二交换机的IP地址为:10.0.0.2,UDP端口为:1234;第三交换机的IP地址为:10.0.0.3,UDP端口为:1234。S240,所述源交换机根据所述多播组地址信息,分别向多个交换机发送所述第一数据报文。进一步地,S240还可以包括:为所述第一数据报文添加第一报文头,得到第三数据报文,所述第一报文头包括:所述源交换机的源交换机信息和所述多播组地址信息;根据所述多播组地址信息,分别向加入所述多播组地址信息对应的多播组的多个交换机发送所述第三数据报文。具体地,如前述例子,第一交换机为S210中接收的第一数据报文添加第一报文头。因为,上述获取到的多播组地址信息包括两个交换机(第二交换机和第三交换机)的交换机信息,当向第二交换机发送第一数据报文时,添加的第一报文头包括:第一交换机的VNI=8、第一交换机的IP地址=10.0.0.1、第一交换机的MAC地址、第二交换机的IP地址=10.0.0.2和下一跳交换机的MAC地址,该例中,下一跳交换机即为第二交换机;当向第三交换机发送第一数据报文时,添加的第一报文头包括:第一交换机的VNI=8、第一交换机的IP地址=10.0.0.1、第一交换机的MAC地址、第三交换机的IP地址=10.0.0.3和下一跳交换机的MAC地址,该例中,下一跳交换机即为第三交换机。为上述第一数据报文添加第一报文头之后,得到两个不同的第三数据报文,第一交换机分别向第二交换机和第三交换机发送上述两个不同的第三数据报文。S250,所述源交换机接收目标交换机返回的响应报文,所述目标交换机为所述多个交换机中的任一交换机,所述响应报文包括所述目标交换机的目标交换机信息。进一步地,S250还可以包括:所述目标交换机在接收到所述第三数据报文后,去掉所述第三数据报文的第一报文头,得到第四数据报文,向所述目标交换机下属的虚拟机发送所述第四数据报文,并接收所述虚拟机在将所述目标虚拟机信息与所述虚拟机的虚拟机信息比对一致时返回的原始响应报文;所述目标交换机对所述原始响应报文添加第二报文头,得到所述响应报文,所述源交换机接收所述目标交换机返回的所述响应报文,所述第二报文头包括:所述目标交换机信息和所述源交换机信息。如前述例子中,第二交换机在接收到上述第三数据报文后,对该第三数据报文执行pop指令,也即去掉上述第一报文头,得到第四数据报文;并根据第三数据报文中包括的源虚拟机VM1的MAC地址,检查自己是否收到过源虚拟机VM1的数据,如果没有,则记录第一交换机的VNI、第一交换机的IP地址和源虚拟机VM1的MAC地址等基本信息。具体地,源虚拟机VM1可以通过转发表记录上述基本信息。在完成上述检查过程之后,第二交换机向第二交换机下属的虚拟机VM3发送上述第四数据报文,虚拟机VM3在接收到上述第四数据报文之后,将第四数据报文中的目标虚拟机信息(如:目标虚拟机VM3的MAC地址:11:22:33:00:00:03)与虚拟机VM3的MAC地址(即11:22:33:00:00:03)进行比对,因为比对一致,也即虚拟机VM3即为目标虚拟机,因此,目标虚拟机VM3向第二交换机返回原始响应报文,该原始响应报文中包括目标虚拟机VM3的目标虚拟机信息(如,VM3的MAC地址)和源虚拟机VM1的源虚拟机信息(如,VM1的MAC地址)。第二交换机在接收到上述原始响应报文之后,因为转发表中已经记录了第一交换机的VNI、第一交换机的IP地址和源虚拟机VM1的MAC地址等基本信息,所以根据源虚拟机VM1的MAC地址,可以直接获取到第一交换机的VNI、第一交换机的IP地址等信息,也即第二交换机可以直接获取到单播地址,该单播地址中只包括第一交换机的交换机信息。为上述原始响应报文添加第二报文头,得到响应报文,添加的第二报文头包括:第二交换机的VNI=8、第二交换机的IP地址=10.0.0.2、第二交换机的MAC地址、第一交换机的IP地址=10.0.0.1和第一交换机的MAC地址;第二交换机向第一交换机返回上述响应报文。因为第二交换机向第一交换机返回了响应报文,所以第一交换机将第二交换机确定为目标交换机,也即上述响应报文中包括目标交换机的目标交换机信息。需要说明的是,当第三交换机接收到上述第三数据报文后,同样对该第三数据报文执行pop指令,也即去掉上述第一报文头,得到第四数据报文;并根据第三数据报文中包括的源虚拟机VM1的MAC地址,检查自己是否收到过源虚拟机VM1的数据,如果没有,则记录第一交换机的VNI、第一交换机的IP地址和源虚拟机VM1的MAC地址等基本信息。具体地,源虚拟机VM1可以通过转发表记录上述基本信息。在完成上述检查过程之后,第三交换机向第三交换机下属的虚拟机VM4发送上述第四数据报文,虚拟机VM4在接收到上述第四数据报文之后,将第四数据报文中的目标虚拟机信息(如:目标虚拟机VM3的MAC地址:11:22:33:00:00:03)与虚拟机VM4的MAC地址(即11:22:33:00:00:04)进行比对,因为比对不一致,所以虚拟机VM4不是目标虚拟机,因此,不向第三交换机返回响应报文。S260,生成交换机流表项信息,所述交换机流表项信息包括所述目标交换机信息与所述目标虚拟机信息的对应关系。此处,新生成的交换机流表项信息的优先级高于所述通配流表的优先级。也即源交换机在接收到新的数据报文时,优先根据交换机流表项信息的内容对该新的数据报文进行转发。如前述例子中,第一交换机在接收到第二交换机返回的响应报文时,则生成交换机流表项信息,其中,生成的交换机流表项信息可参见表7所示:表7可选地,所述源交换机生成所述交换机流表项信息之后,所述方法还可以包括:所述源交换机接收第二数据报文,所述第二数据报文包括所述目标虚拟机信息;所述源交换机根据所述目标虚拟机信息,从所述交换机流表项信息中获取所述目标交换机信息;所述源交换机根据所述目标交换机信息向所述目标交换机发送所述第二数据报文。举例来说,在上述交换机流表项信息中,DMAC为目标虚拟机VM3的MAC地址,根据动作指令集中的动作参数,可以获取到目标交换机为第二交换机,且第二交换机将port2作为向源虚拟机发送单播数据报文的出端口。也即上述交换机流表项信息包括了目标交换机信息与目标虚拟机信息的对应关系。当第一交换机接收到源虚拟机VM1向目标虚拟机VM3发送的第二数据报文时,优先根据上述交换机流表项信息,判断是否可以确定该第二数据报文的单播通道,因为该交换机流表项信息中已经记录了第二交换机的交换机信息,因此为上述第二数据报文添加第一交换机和第二交换机的信息之后,通过port2向第二交换机发送上述添加信息之后的第二数据报文,也即第二交换机可以直接将VM1与VM3之间的数据流重定向到单播通道。需要说明的是,上述第二数据报文可以是源虚拟机VM1向目标虚拟机VM3发送的除第一数据报文之外的数据报文。此处,第一交换机可以直接根据上述交换机流表项信息的内容,确定源虚拟机与目标虚拟机之间的单播通道(tunnel)。在另一个例子中,第一交换机根据表5给出的通配流表(即匹配域为同一个子网内虚拟机共同的MAC地址开头信息)生成的交换机流表项信息可以如表8所示:表8表7与表8不同的是匹配域,表7的匹配域为虚拟机的VLANID,表8的匹配域为同一个子网内虚拟机共同的MAC地址开头信息。第一交换机根据表5给出的通配流表生成交换机流表项信息的过程同生成表7的过程类似,在此不作赘述。可选地,所述方法还可以包括:当所述目标虚拟机从所述目标交换机迁移至其它交换机时,所述源交换机接收所述目标虚拟机发送的广播数据报文,所述广播数据报文包括所述其它交换机信息;所述源交换机将所述交换机流表项信息中的所述目标交换机信息更新为其它交换机信息。参见图3所示的SDN网络结构示意图之二,目标虚拟机VM3从第二交换机迁移到第三交换机,在目标虚拟机VM3发生迁移后,目标虚拟机VM3会向第三交换机发送广播数据报文,第三交换机在接收到上述广播数据报文之后,通过子网内交换机向所有虚拟机发送上述广播数据报文,该广播数据报文中包括第三交换机信息(如,第三交换机的IP地址:10.0.0.3和端口:port3),交换机在接收到上述广播数据报文之后,根据目标虚拟机VM3的MAC地址:11:22:33:00:00:03,从第一交换机的交换机流表项信息中查询到的目标虚拟机VM3所属的交换机IP地址为:10.0.0.2,端口为:port2,与接收的第三交换机的IP地址:10.0.0.3和端口:port3相冲突,所以,第一交换机更新本地的交换机流表项信息,更新后的交换机流表项信息如表9所示:表9综上,本发明实施例提供的数据报文的转发方法,交换机根据已接收的源虚拟机向目标虚拟机发送的第一数据报文自动生成交换机流表项信息,该交换机流表项信息用于指示该交换机在接收到源虚拟机向目标虚拟机发送的第二数据报文时,根据目标虚拟机信息,确定源虚拟机与目标虚拟机之间的单播通道,并通过该单播通道向目标虚拟机发送上述第二数据报文,从而减轻控制服务器处理数据报文的负担。装置实施例图4为本发明装置实施例提供的数据报文的转发装置示意图。所述装置可以用于执行图2所述的方法。图4中,该装置包括:接收单元401、获取单元402、提取单元403、发送单元404和生成单元405。接收单元401,用于接收源虚拟机发送的第一数据报文,所述第一数据报文包括:目标虚拟机信息和所述源虚拟机的特征标识信息。在此说明,目标虚拟机信息可以但不限定为目标虚拟机的媒体访问控制(MediaAccessControl,MAC)地址。所述源虚拟机的特征标识信息包括但限于所述源虚拟机的虚拟局域网标识VLANID或者所述源虚拟机与子网内其它虚拟机共同的MAC地址开头信息。获取单元402,用于在本地保存的转发表中未查找到接收单元401接收的所述目标虚拟机信息对应的目标虚拟机所属的目标交换机的目标交换机信息时,根据所述源虚拟机的特征标识信息,在从控制服务器接收的通配流表中获取与所述源虚拟机的特征标识信息对应的动作指令集。所述目标交换机信息包括所述目标交换机的虚拟可扩展局域网标识VNI、所述目标交换机的互联网协议(InternetProtocol,IP)地址和下一跳交换机的MAC地址。控制服务器侧会维护通配流表,当交换机启动时,交换机会自动从控制服务器上下载上述通配流表。通配流表中主要包括两项内容:匹配域和动作指令集,其中,匹配域可以为虚拟机的VLANID,也可以为同一个子网内虚拟机共同的MAC地址开头信息。动作指令集中新扩展两类动作指令:压入(push)指令和弹出(pop)指令。当交换机(如,VTEP)在执行上述push指令时,交换机会将VxLAN相关信息打包到原数据报文的报文头,且产生指向多个VTEP的VxLAN多播,入端口为本地输出(output)端口,其中,每个VTEP的IP地址和用户数据包协议(UserDatagramProtocol,UDP)端口都包含在上述push指令的动作参数中。当交换机在执行上述pop指令时,交换机会将数据报文的VxLAN相关信息去掉。提取单元403,用于从与获取单元402获取的所述源虚拟机的特征标识信息对应的动作指令集中提取多播组地址信息。发送单元404,用于根据提取单元403提取的所述多播组地址信息,分别向多个交换机发送所述第一数据报文。接收单元401,还用于接收目标交换机返回的响应报文,所述目标交换机为所述多个交换机中的任一交换机,所述响应报文包括所述目标交换机的目标交换机信息。生成单元405,用于生成交换机流表项信息,所述交换机流表项信息包括所述目标交换机信息与所述目标虚拟机信息的对应关系。此处,所述交换机流表项信息的优先级高于所述通配流表的优先级。可选地,接收单元401,还用于接收第二数据报文,所述第二数据报文包括所述目标虚拟机信息。获取单元402,还用于根据所述目标虚拟机信息,从所述交换机流表项信息中获取所述目标交换机信息。发送单元403,还用于根据获取单元402获取的所述目标交换机信息向所述目标交换机发送所述第二数据报文。可选地,发送单元404具体用于:为所述第一数据报文添加第一报文头,得到第三数据报文,所述第一报文头包括:所述源交换机的源交换机信息和所述多播组地址信息;根据所述多播组地址信息,分别向加入所述多播组地址信息对应的多播组的多个交换机发送所述第三数据报文。可选地,接收单元401具体用于:在接收到所述第三数据报文后,去掉所述第三数据报文的第一报文头,得到第四数据报文,向所述目标交换机下属的虚拟机发送所述第四数据报文,并接收所述虚拟机在将所述目标虚拟机信息与所述虚拟机的虚拟机信息比对一致时返回的原始响应报文;对所述原始响应报文添加第二报文头,得到所述响应报文,接收所述目标交换机返回的所述响应报文,所述第二报文头包括:所述目标交换机信息和所述源交换机信息。可选地,所述装置还包括:更新单元。接收单元401还用于:当所述目标虚拟机从所述目标交换机迁移至其它交换机时,接收所述目标虚拟机发送的广播数据报文,所述广播数据报文包括其它交换机信息;更新单元,用于将所述交换机流表项信息中的所述目标交换机信息更新为所述其它交换机信息。综上,本发明实施例提供的数据报文的转发装置,交换机根据已接收的源虚拟机向目标虚拟机发送的第一数据报文自动生成交换机流表项信息,该交换机流表项信息用于指示该交换机在接收到源虚拟机向目标虚拟机发送的第二数据报文时,根据目标虚拟机信息,确定源虚拟机与目标虚拟机之间的单播通道,并通过该单播通道向目标虚拟机发送上述第二数据报文,从而减轻控制服务器处理数据报文的负担。设备实施例图5为本发明设备实施例提供的数据报文的转发设备示意图。如图5所示,所述转发设备500包括:处理器502、存储器504、通信接口506和总线508。其中,处理器502、存储器504和通信接口506通过总线508实现彼此之间的通信连接。处理器502可以采用通用的中央处理器(CentralProcessingUnit,CPU),微处理器,应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现前述本发明方法实施例所提供的技术方案。存储器504可以是只读存储器(ReadOnlyMemory,ROM),静态存储设备,动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)。存储器504可以存储操作系统和其他应用程序。在通过软件或者固件来实现本发明实施例提供的技术方案时,用于实现本发明前述方法实施例提供的任一可选技术方案的程序代码保存在存储器504中,并由处理器502来执行。通信接口506用以与SDN网络中其他交换机或控制服务器通信。总线508可包括一通路,在转发设备500各个部件(例如处理器502、存储器504和通信接口506)之间传送信息。综上,本发明实施例提供的数据报文的转发方法、装置及设备,交换机根据已接收的源虚拟机向目标虚拟机发送的第一数据报文自动生成交换机流表项信息,该交换机流表项信息用于指示该交换机在接收到向目标虚拟机发送的第二数据报文时,根据目标虚拟机信息,确定源虚拟机与目标虚拟机之间的单播通道,并通过该单播通道向目标虚拟机发送上述第二数据报文,可以减轻控制服务器处理数据报文的负担。专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或
技术领域
内所公知的任意其它形式的存储介质中。以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1