CN107846358B - 一种数据传输方法、装置及网络系统 - Google Patents

一种数据传输方法、装置及网络系统 Download PDF

Info

Publication number
CN107846358B
CN107846358B CN201610831826.1A CN201610831826A CN107846358B CN 107846358 B CN107846358 B CN 107846358B CN 201610831826 A CN201610831826 A CN 201610831826A CN 107846358 B CN107846358 B CN 107846358B
Authority
CN
China
Prior art keywords
address
data packet
virtual router
target
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610831826.1A
Other languages
English (en)
Other versions
CN107846358A (zh
Inventor
关昆仑
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Beijing Kingsoft Cloud Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Cloud Network Technology Co Ltd, Beijing Kingsoft Cloud Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN201610831826.1A priority Critical patent/CN107846358B/zh
Publication of CN107846358A publication Critical patent/CN107846358A/zh
Application granted granted Critical
Publication of CN107846358B publication Critical patent/CN107846358B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/58Association of routers
    • H04L45/586Association of routers of virtual routers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例公开了一种数据传输方法、装置及网络系统,网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机,应用于网络系统中的交换机的方法包括:接收第一主机发送的目标数据包,目标数据包中携带第一主机的IP地址及第一目的IP地址;根据第一主机的IP地址或第一目的IP地址,从处于可用状态的虚拟路由器中确定第一虚拟路由器;向第一虚拟路由器发送目标数据包,以使第一虚拟路由器基于第一目的IP地址,将目标数据包发送给目标虚拟机,目标虚拟机为第一虚拟路由器根据第一目的IP地址确定的。应用本发明实施例,能够保证数据持续传输。

Description

一种数据传输方法、装置及网络系统
技术领域
本发明涉及通信技术领域,特别涉及一种数据传输方法、装置及网络系统。
背景技术
云计算是一个当前热门的技术名词,云计算可能会改变互联网的技术基础,甚至会影响整个产业的格局,正因为如此,使得云计算技术呈现蓬勃发展的态势,应用云计算的网络系统也在保持高速增长的趋势。应用云计算的网络系统中包括交换机、多个计算节点及多个网络节点,交换机用于提供对内网络通信及对外网络通信的数据包的传输,一个计算节点配置有至少一个虚拟机,一个网络节点配置有至少一个虚拟路由器,虚拟路由器用于为计算节点中虚拟机的对外网络通信与对内网络通信提供服务。上述网络系统中,任意两个网络节点中配置的虚拟路由器的数量相同,且针对任一网络节点中的每一虚拟路由器,其他网络节点中均存在与该虚拟路由器提供相同服务的虚拟路由器,这里所说的提供相同服务是指为相同网段对应的虚拟机的数据包提供转发服务。
在上述网络结构中,网络节点中的虚拟路由器RA在接收到计算节点中的虚拟机VMA发送的数据包后,利用NAT技术,将该数据包中的源IP地址转换为合法的IP地址,其中,虚拟路由器VRA为处于可用(active)状态的虚拟路由器,与虚拟路由器VRA提供相同服务的其他虚拟路由器均处于非可用(passive)状态,虚拟路由器VRA将转换后的数据包发送给交换机,交换机将转换后的数据包发送给目的主机,交换机接收目的主机反馈的响应数据包,由于与虚拟路由器VRA所提供的服务相同的虚拟路由器中,仅仅虚拟路由器VRA处于可用状态,所以,交换机只能将响应数据包发送给虚拟路由器VRA,该虚拟路由器VRA接收响应数据包后,利用NAT技术对将响应数据包进行IP地址转换,将转换后的数据包发送给虚拟机VMA
若虚拟路由器VRA发生网络故障,则不能利用NAT技术对响应数据包进行IP地址转换,也不能将响应数据包发送给虚拟机VMA。为保证继续进行数据传输,可以从处于非可用状态的虚拟路由器中重新确定处于可用状态的虚拟路由器VRB,但当虚拟路由器VRA发生网络故障的时候,处于非可用状态的虚拟路由器只有在虚拟路由器VRA的定时器超时后,才能感知到虚拟路由器VRA进入异常工作状态,这时才能重新确定出上述虚拟路由器VRB,可见,在虚拟路由器VRA故障后,重新确定出虚拟路由器VRB之前,交换机无法将接收到的数据包传输至相应的虚拟机,导致数据传输中断。
发明内容
本发明实施例的目的在于提供一种数据传输方法、装置及网络系统,以保证数据持续传输。
第一方面,为达到上述目的,本发明实施例公开了一种数据传输方法,应用于网络系统中的交换机,所述网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机,所述方法包括:
接收第一主机发送的目标数据包,其中,所述目标数据包中携带所述第一主机的IP地址及第一目的IP地址;
根据所述第一主机的IP地址或所述第一目的IP地址,从处于可用状态的虚拟路由器中确定第一虚拟路由器;
向所述第一虚拟路由器发送所述目标数据包,以使得所述第一虚拟路由器基于所述第一目的IP地址,将所述目标数据包发送给目标虚拟机,其中,所述目标虚拟机为所述第一虚拟路由器根据所述第一目的IP地址确定的。
第二方面,为达到上述目的,本发明实施例还公开了一种数据传输方法,应用于网络系统中的计算节点,所述网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机,所述方法包括:
接收目标虚拟机发送的第一数据包,其中,所述第一数据包中携带所述目标虚拟机的IP地址及第二目的IP地址;
根据所述目标虚拟机的IP地址或所述第二目的IP地址,从处于可用状态的虚拟路由器中确定第三虚拟路由器;
向所述第三虚拟路由器发送所述第一数据包,以使得所述第三虚拟路由器基于所述第二目的地址,将所述第一数据包发送至第一主机,其中,所述第一主机为第三虚拟路由器根据所述第二目的IP地址确定的。
第三方面,为达到上述目的,本发明实施例还公开了一种数据传输装置,应用于网络系统中的交换机,所述网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机,所述装置包括:
第一接收模块,用于接收第一主机发送的目标数据包,其中,所述目标数据包中携带所述第一主机的IP地址及第一目的IP地址;
第一确定模块,用于根据所述第一主机的IP地址或所述第一目的IP地址,从处于可用状态的虚拟路由器中确定第一虚拟路由器;
第一发送模块,用于向所述第一虚拟路由器发送所述目标数据包,以使得所述第一虚拟路由器基于所述第一目的IP地址,将所述目标数据包发送给目标虚拟机,其中,所述目标虚拟机为所述第一虚拟路由器根据所述第一目的IP地址确定的。
第四方面,为达到上述目的,本发明实施例还公开了一种数据传输装置,应用于网络系统中的计算节点,所述网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机,所述装置包括:
第二接收模块,用于接收目标虚拟机发送的第一数据包,所述第一数据包中携带所述目标虚拟机的IP地址及第二目的IP地址;
第二确定模块,用于根据所述目标虚拟机的IP地址及所述第二目的IP地址从处于可用状态的虚拟路由器中确定第三虚拟路由器;
第二发送模块,用于向所述第三虚拟路由器发送所述第一数据包,以使得所述第三虚拟路由器将所述第一数据包发送至第一主机,其中,所述第一主机为第三虚拟路由器根据所述第二目的IP地址确定的。
第五方面,为达到上述目的,本发明实施例还公开了一种网络系统,所述网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机;
所述交换机,用于接收第一主机发送的目标数据包,其中,所述目标数据包中携带所述第一主机的IP地址及第一目的IP地址;根据所述第一主机的IP地址或所述第一目的IP地址,从处于可用状态的虚拟路由器中确定第一虚拟路由器;向所述第一虚拟路由器发送所述目标数据包;
所述第一虚拟路由器,用于基于所述第一目的IP地址,将所述目标数据包发送给目标虚拟机;根据所述第一目的IP地址确定所述目标虚拟机。
由上述技术方案可见,一种数据传输方法、装置及网络系统,所述网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机,应用于网络系统中的交换机的方法包括:接收第一主机发送的目标数据包,其中,所述目标数据包中携带所述第一主机的IP地址及第一目的IP地址;根据所述第一主机的IP地址或所述第一目的IP地址,从处于可用状态的虚拟路由器中确定第一虚拟路由器;向所述第一虚拟路由器发送所述目标数据包,以使得所述第一虚拟路由器基于所述第一目的IP地址,将所述目标数据包发送给目标虚拟机,其中,所述目标虚拟机为所述第一虚拟路由器根据所述第一目的IP地址确定的。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,交换机确定虚拟路由器状态,从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不进行故障切换,因而保证了数据持续传输。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据传输方法的第一种流程示意图;
图2为交换机与提供相同服务的虚拟路由器之间的等价路径示意图;
图3为本发明实施例提供的数据传输方法的第二种流程示意图;
图4为虚拟路由器通过数据库进行连接跟踪表同步的示意图;
图5为第一虚拟路由器发送目标数据包的第一种流程示意图;
图6为第一虚拟路由器发送目标数据包的第二种流程示意图;
图7为第一虚拟路由器发送目标数据包的第三种流程示意图;
图8为第一虚拟路由器发送目标数据包的第四种流程示意图;
图9为第一虚拟路由器发送目标数据包的第五种流程示意图;
图10为本发明实施例提供的数据传输方法的第三种流程示意图;
图11为本发明实施例提供的数据传输方法的第四种流程示意图;
图12为第三虚拟路由器发送第一数据包的第一种流程示意图;
图13为本发明实施例提供的数据传输方法的第五种流程示意图;
图14为第三虚拟路由器发送第一数据包的第二种流程示意图;
图15为网络节点与计算节点同步ARP信息的原理示意图;
图16为虚拟路由器从数据库获得端口段的示意图;
图17为本发明实施例提供的数据传输装置的第一种结构示意图;
图18为本发明实施例提供的数据传输装置的第二种结构示意图;
图19为本发明实施例提供的网络系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面,首先对本申请文件中涉及到的技术术语进行简单介绍。
开放式最短路径优先路由协议,简称OSPF(Open Shortest Path First)协议,是一个内部网关协议,是由Internet工程任务组开发的开放性路由协议,即该OSPF协议的规范是开放的,这里所说的“开放”是相对于某些“私有”的路由协议而言。
等价多路径路由协议,简称ECMP(Equal-Cost Multipath Routing)协议,在存在多条不同链路到达同一目的地址的网络环境中,如果使用传统的路由技术,发往该目的地址的数据包只能利用其中的一条链路,其它链路处于备份状态或无效状态,并且在动态路由环境下相互的切换需要一定时间,而ECMP协议可以在该网络环境下同时使用多条链路,不仅增加了传输带宽,并且可以无时延无丢包地备份失效链路的数据传输。ECMP协议最大的特点是实现了等值情况下,多路径负载均衡和链路备份的目的。
Zookeeper是一个分布式的、开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用系统可以基于它实现同步服务。zookeeper的核心是原子广播,这个机制保证了虚拟路由器之间的同步。
需要说明的是,本申请中,虚拟路由器的初始状态均为可用状态,即多个虚拟路由器实例可以同时工作,同时处于可用状态且提供相同服务的虚拟路由器的IP(InternetProtocol,网络之间互连的协议)地址与MAC(Media Access Control,介质访问控制)地址是相同的,本申请中的交换机为三层交换机。
图1为本发明实施例提供的数据传输方法的第一种流程示意图,应用于网络系统中的交换机,具体的,网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机。方法包括:
S101:接收第一主机发送的目标数据包,其中,目标数据包中携带第一主机的IP地址及第一目的IP地址。
根据现有技术可知,数据包中都携带了源IP地址和目的IP地址,本发明实施例中的目标数据包也携带了上述IP地址,因为目标数据包是第一主机发送的,所以目标数据包中携带的源IP地址即为第一主机的IP地址,目标数据包携带的目的IP地址即为这里所说的第一目的IP地址。
需要说明的是,目标数据包可以是请求数据包也可以是响应数据包,交换机根据自身维护的转发表可以确定目标数据是响应数据包还是请求数据包,具体交换机怎么确定目标数据包的类型是现有技术,在这里不进行赘述。
S102:根据第一主机的IP地址或第一目的IP地址,从处于可用状态的虚拟路由器中确定第一虚拟路由器。
具体的,根据第一主机的IP地址或第一目的IP地址,从处于可用状态的虚拟路由器中确定第一虚拟路由器,可以包括:
基于交换机中配置的开放式最短路径优先路由协议以及等价多路径路由协议,以及网络节点中配置的开放式最短路径优先路由协议,获得当前处于可用状态的虚拟路由器;
根据哈希算法计算第一主机的IP地址或第一目的IP地址的第一哈希值,根据第一哈希值从处于可用状态的虚拟路由器中确定第一虚拟路由器。
在实际应用中,网络系统虽然存在多个虚拟路由器提供相同的服务,但只有一个虚拟路由器在工作,不能同时工作,是因为在同一个网络环境中,多个虚拟路由器不能有相同的IP地址,否则会造成虚拟路由器的选择问题,虚拟路由器的选择问题就是路径的选择问题。本发明实施例中,通过在交换机中配置OSPF协议与ECMP协议,在网络节点中配置OSPF协议,同时配置交换机到每一提供相同服务的虚拟路由器之间路径相等的开销,使得多个提供相同服务的虚拟路由器不仅能同时工作,还使得虚拟路由器相互之间是等价虚拟路由器,即通过上述配置能够实现等价路由。交换机根据自身及网络节点中配置的协议,可以确定处于可用状态的虚拟路由器有哪些,也就是确定同时工作的虚拟路由器有哪些,然后根据哈希算法计算第一主机的IP地址或第一目的IP地址的第一哈希值,根据第一哈希值从处于可用状态的虚拟路由器中确定第一虚拟路由器,不会造成路径选择的问题。
在本发明实施例中,在目标数据包传送到交换机时,交换机可以根据OSPF协议的功能,获知每一个网络节点与自身的连接状态,具体获知连接状态的方法是现有技术,在这里不进行赘述。交换机根据获知的连接状态,判断网络节点中部署的虚拟路由器是否处于可用状态,从而可以获得当前处于可用状态的虚拟路由器是哪些。因为在交换机的路由表中,交换机到每一提供相同服务的虚拟路由器之间路径开销都相等,根据ECMP协议,如图2所示,交换机与提供相同服务的虚拟路由器(VR1)之间形成了多个等价路径,网络节点1中部署的VR1、网络节点2中部署的VR1和网络节点3中部署的VR1相互之间是等价的关系。
在本发明实施例中,如果交换机确定目标数据包是一个请求数据包,则利用哈希算法计算第一主机的IP地址的第一哈希值,哈希(Hash)算法,即散列函数,能够将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。根据第一哈希值与处于可用状态的虚拟路由器之间的对应关系,可以确定第一虚拟路由器。
如果交换机自身确定目标数据包是一个响应数据包,则利用哈希算法计算第一目IP地址的第一哈希值。根据第一哈希值与处于可用状态的虚拟路由器之间的对应关系,可以确定第一虚拟路由器。
S103:向第一虚拟路由器发送目标数据包,以使得第一虚拟路由器基于第一目的IP地址,将目标数据包发送给目标虚拟机,其中,目标虚拟机为第一虚拟路由器根据第一目的IP地址确定的。
第一虚拟路由器基于第一目的IP地址可以确定目标虚拟机,具体的确定的过程在下文会进行进一步说明,在这里不进行详述。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,交换机可以从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不需要进行故障切换,因而保证了数据持续传输。
在本发明实施例中,在每一个网络节点中都部署了处于可用状态的虚拟路由器,交换机接收到的数据包后,可以从处于可用状态的虚拟路由器中选择一个虚拟路由器用来转发数据包,不同的数据包可以通过不同的虚拟路由器进行转发,对来自相同网段的数据包提供转发服务的虚拟路由器之间可以称之为对等的虚拟路由器,在网络系统中部署对等的虚拟路由器为数据包提供转发服务,实现了网络流量的负载均衡。
在本发明的一个优先的实施例中,参见图3,提供的数据传输方法的第二种流程示意图,与图1所示的实施例相比,本实施例中在S101之前增加了S104。
S104:接收第二虚拟路由器发送的第一数据包,并将第一数据包发送至第一主机;目标数据包为:第一主机生成的、针对第一数据包的响应数据包。
需要说明的是,只有目标数据包是第一数据包的响应数据包的时候,在S101之前才会存在S104。这里所说的第二虚拟路由器与第一虚拟路由器可以为同一个虚拟路由器,也可以是不同的虚拟路由器。
当交换机接收到第一数据包后,基于第一数据包携带的目的IP地址,将第一数据包发送给第一主机,第一主机接收到第一数据包后,基于第一数据包中包含的内容,生成第一数据包的响应数据包,即目标数据包,将目标数据包发送给交换机。如果第二虚拟路由器发生故障,则交换机选择的虚拟路由器为第一虚拟路由器,此时第二虚拟路由器和第一虚拟路由器为不同的虚拟路由器,如果第二虚拟路由器在交换机接收到目标数据包时仍处于可用状态,则第二虚拟路由器和第一虚拟路由器可能为同一个虚拟路由器。
本领域技术人员公知的是,每一虚拟路由器中配置了conntrack(连接跟踪)模块,第一虚拟路由器中的conntrack模块会拦截接收到的目标数据包,确定目标数据包的源IP地址、源端口、目的IP地址和目的端口等信息是否在自身记录的连接跟踪表存储的IP转换信息中,如果不在,建立第一主机与目标虚拟机之间的连接,对连接的产生、传输及终止进行跟踪记录,在连接跟踪表中生成一个连接项,并将记录的信息存储在该连接项中。在本申请中,第一虚拟路由器与第二虚拟路由器可能为不同的虚拟路由器,在目标数据包是第一数据包的响应数据包的情况下,为了保证第一虚拟路由器接收到目标数据包之后能够对目标数据包进行正确的处理,需要对虚拟路由器中的连接跟踪表进行的同步处理。
在本申请中,参见图4,虚拟路由器可以通过数据库对连接跟踪表进行同步,具体的,数据库中存储有连接跟踪表,每一虚拟路由器需要记录接收到的数据包的信息时,将要记录的信息写入数据库中的连接跟踪表中。需要说明的是,这里所说的数据库为高性能数据库,主要利用高性能数据库的优势,不会因为对数据库的访问量大,造成性能瓶颈。进一步地,部署了zookeeper的服务器具有了高性能数据库的功能,所以高性能数据库也可以为部署了zookeeper的服务器。当然,这里所说的高性能数据库并不仅限于部署了zookeeper的服务器,也可以是其他的高性能数据库。虚拟路由器可以监听高性能数据库中的连接跟踪表,一旦连接跟踪表中的信息发生变化,虚拟路由器会同步保存连接跟踪表的副本。因此。即使第一虚拟路由器与第二虚拟路由器为不同的虚拟路由器,第一虚拟路由器在接收到目标数据包后也能根据连接跟踪表对目标数据包进行正确地处理。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,交换机确定虚拟路由器状态,从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不进行故障切换,因而保证了数据持续传输。
在本发明实施例中,在每一个网络节点中都部署了处于可用状态的虚拟路由器,交换机接收到的数据包后,可以从处于可用状态的虚拟路由器中选择一个虚拟路由器用来转发数据包,不同的数据包可以通过不同的虚拟路由器进行转发,对来自相同网段的数据包提供转发服务的虚拟路由器之间可以称之为对等的虚拟路由器,在网络系统中部署对等的虚拟路由器为数据包提供转发服务,实现了网络流量的负载均衡。
在本发明的另一个具体实施例中,图5为第一虚拟路由器发送目标数据包的第一种流程示意图,基于目标数据包携带的目的IP地址,将目标数据包发送给目标虚拟机,可以包括:
S501:基于第一目的IP地址,获得目标虚拟机的MAC地址,其中,MAC地址为第一网络节点根据目标虚拟机的IP地址确定的,第一网络节点为配置有第一虚拟路由器的网络节点。
在实际应用中,conntrack模块拦截目标数据包,根据目标数据包所包含的第一主机的IP地址、第一主机的端口、目的IP地址和目的端口的信息,在连接跟踪表的IP转换信息中查找这些信息,如果没有找到这些信息,说明针对目标数据包第一主机与目标交换机之间没有建立连接关系,进一步地,说明目标数据包不是一个请求数据包,则可以确定第一目的IP地址为目标虚拟机的IP地址,同时conntrack模块针对目标数据包会建在连接跟踪表中生成一个新的连接项。
可以理解,第一虚拟路由器与目标虚拟机之间的数据传输依赖于MAC地址,第一虚拟路由器要正确地将目标数据包发送给目标虚拟机,则需要目标虚拟机的MAC地址,因此第一虚拟路由器需要根据目标虚拟机的IP地址,确定目标虚拟机的MAC地址,因此,第一虚拟路由器会广播ARP(Address Resolution Protocol,地址解析协议)请求,以获得目标虚拟机的MAC地址。
本发明实施例中,为了避免对应该ARP请求的响应报文回复到不同于第一网络节点的其他网络节点,同时为了避免ARP的泛洪,每个网络节点中均配置有二层广播机制(L2population)以及ARP响应机制(ARP Response),本领域技术人员公知的是,L2population用于将网络系统中的所有节点的ARP信息同步至本地,ARP信息中记录MAC地址与IP地址的对应关系,ARP Response负责响应本地的ARP请求。
因此,该第一虚拟路由器可以通过以下方式获得目的MAC地址:
根据目标虚拟机的IP地址,广播第一ARP请求。
接收第一网络节点反馈的MAC地址,其中,MAC地址为:第一网络节点根据网络节点与计算节点之间进行同步得到的ARP信息,基于第一ARP请求、二层广播机制和ARP响应机制确定的。
第一虚拟路由器广播第一ARP请求后,因第一网络节点中配置有二层广播机制和ARP响应机制,所以该第一ARP请求会被第一网络节点拦截,由第一网络节点响应第一虚拟路由器的第一ARP请求。
S502:根据MAC地址,将目标数据包发送给第一计算节点,以使第一计算节点将目标数据包发送给目标虚拟机,其中,第一计算节点为配置有目标虚拟机的计算节点。
第一虚拟路由器在确定目标虚拟机的MAC地址后,可以正确地将目标数据包发送给第一计算节点。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,交换机确定虚拟路由器状态,从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不进行故障切换,因而保证了数据持续传输。
在本发明的另一个具体实施例中,参见图6,图6为第一虚拟路由器发送目标数据包的第二种流程示意图,与图5所示实施例相比,本实施例中,根据MAC地址,将目标数据包发送给第一计算节点(S502),可以包括:
S5021:确定用于向第一计算节点发送目标数据包的第一端口。
需要说明的是,在本发明实施例中,目标数据包为请求数据包,本领域技术人员可以理解的是,第一端口是逻辑意义上的端口,该第一端口为TCP/IP(Transmission ControlProtocol/Internet Protocol,传输控制协议/因特网互联协议)中的端口。
S5022:对目标数据包进行IP地址转换,并将目标数据包转换前后IP地址之间的对应关系记录在IP地址转换信息中。
本领域技术人员公知的是,第一主不能直接访问第一计算节点中的目标虚拟机,第一虚拟路由器需要对目标数据包进行IP地址转换。
如果第一虚拟路由器分配有Floating(浮动)IP地址,第一虚拟路由器将目标数据包中携带的第一主机的IP地址替换成该Floating IP地址。
如果第一虚拟路由器没有被配置浮动IP地址,该第一虚拟路由器将目标数据包中携带的第一主机的IP地址替换成该浮动IP地址替换成第一虚拟路由器上配置的IP地址。
第一虚拟路由器将目标数据包携带的源端口替换为所确定的第一端口。
第一虚拟路由器在进行IP地址转换时,会将目标数据包转换前后IP地址之间的对应关系记录在IP地址转换信息中。IP地址转换信息记录的是包含数据包的进行IP地址转换前的源IP地址、源端口、目的IP地址和目的端口和进行IP地址转换后的源IP地址、源端口、目的IP地址和目的端口之间的对应关系。
在实际应用中,IP地址转换信息会记录连接跟踪表中针对目标数据包会建立的连接项中。
S5022:根据MAC地址,将转换后的目标数据包通过第一端口发送给第一计算节点。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,交换机确定虚拟路由器状态,从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不进行故障切换,因而保证了数据持续传输。
在本发明的另一个具体实施例中,参见图7,图7为第一虚拟路由器发送目标数据包的第三种流程示意图,与图6所示实施例相比,本实施例中,确定用于向第一计算节点发送目标数据包的第一端口(S5021),可以包括:
S50211:判断处于分配状态的端口段中是否存在处于可使用状态的端口。
本领域技术人员可以理解的是,第一虚拟路由器接收到的目标数据包是一个数据流其中的一个数据包,每一个数据流中的第一个数据包会触发对端口的申请,第一虚拟路由器在接收到数据流触发对端口的申请后,访问数据库,从数据库获得端口。第一虚拟路由器使用获得的端口发送数据流中的每一数据包。当同步对数据库的访问量很大时,对数据库造成的压力就非常大,会造成数据库的性能问题,虽然为了解决这个问题,可以采用数据库集群或者分布式数据库,但是增加了维护的成本,也没有从本质上解决这个问题。
为了解决这一问题,本发明实施例将预先数量的端口进行分段,示例性的,将1-60000的端口分成1200段,每段中有500个端口,也可以将1-60000的端口分成1000段,每一段中端口的数量并不完全相同。在实际应用中,分成的段数,每段中端口的数量可以根据实际情况而定。
将端口进行分段后,第一虚拟路由器会访问数据库,从数据库获得一个端口段,第一虚拟路由器获得的这段端口就处于分配状态,第一虚拟路由器在确定第一端口时,需要确定自身获得的端口段中是否存在处于可用状态的端口,端口段中的端口一旦被虚拟路由器确定为第一端口,则这个端口处于不可使用状态,这里所说的处于可用状态和处于不可使用状态只是说明端口的状态,在实际应用中,可以给予端口不同的标记以区分端口的状态。第一虚拟路由器在确定该数据流每一个数据包响应数据包后将第一端口的状态变更为可使用状态。需要说明的是,这里所说的数据库与上文提到的数据库是同一个数据库,是高性能数据库。
S50212:从处于可使用状态的端口中选择一个端口,将所选择的端口确定为第一端口,并将所选择的端口的状态变更为不可使用状态。
如果处于可使用状态的端口只有一个,则可以直接将这个端口确定为第一端口,将这个端口的状态变更为不可使用状态;如果处于可使用状态的端口不止一个,可以随机选择一个端口,将该端口确定为第一端口,也可以根据处于可使用状态的端口的排序,将排序最前的端口确定为第一端口,当然,并不仅限于此。
S50213:从数据库获得处于未分配状态的端口段,使得数据库中记录的所获得的端口段状态变更为分配状态,返回执行S5021,其中,数据库,用于存储端口段以及端口段的状态。
第一虚拟路由器确定保存的处于分配状态的端口段中没有处于可使用状态的数据包,可以随机从处于未分配状态的端口段中获得一个端口段,也可以根据其他的信息获得一个端口段。虚拟路由器从数据库获得端口段后,数据库会更改所获得的端口段的状态,这样可以避免不同的虚拟路由器获得的端口段之间存在冲突。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,交换机确定虚拟路由器状态,从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不进行故障切换,因而保证了数据持续传输。同时因为虚拟路由器中保存有端口段,不需要每次都访问数据库确定第一端口,降低了对数据库的访问压力。
在本发明的一个优先实施例中,参见图8,图8为第一虚拟路由器发送目标数据包的第四种流程示意图,与图7所示实施例相比,本实施例中,在S50213之后还包括S503和S504。
S503:按照预设的时间间隔,确定所获得端口段中的端口是否在时间间隔内均未被使用。
在实际应用中,第一虚拟路由器中会部署一个NAT-agent(网络地址转换代理),NAT-agent会按照预设的时间间隔确定所获取的端口段中的端口是否在该时间间隔内均未被使用。
S504:向数据库发送针对所获得端口段的状态变更请求,以使数据库将所获得端口段的状态由分配状态变更为未分配状态。
当第一虚拟路由器确定所获得端口段中的端口在预设的时间间隔内均未被使用,则向数据库发送状态变更请求,避免因所获得端口段中的端口未被使用而造成的端口资源的浪费。数据库将获得端口段的状态由分配状态变更为未分配状态,使得其他虚拟路由器可以获得该端口段。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,交换机确定虚拟路由器状态,从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不进行故障切换,因而保证了数据持续传输。
在本发明的另一个具体实施例中,图9为第一虚拟路由器发送目标数据包的第五种流程示意图,基于目标数据包携带的目的IP地址,将目标数据包发送给目标虚拟机,可以包括:
S901:根据第一目的IP地址及IP地址转换信息,确定目标虚拟机的IP地址。
具体的,目标虚拟机为:第一虚拟路由器根据目的IP地址及虚拟路由器之间进行同步的IP地址转换信息确定的,其中,IP地址转换信息用于记录:虚拟路由器对接收到的数据包进行IP地址转换前后IP地址之间的对应关系。
第一虚拟路由器在确定连接跟踪表的连接项中记录有目标数据包的信息,说明目标数据包是一个响应数据包,第一虚拟路由器可以在IP地址转换信息中查找到目标数据包携带的第一目的IP地址所在的对应关系,则该对应关系中转换前的源IP地址即为目标虚拟机的IP地址。
S902:基于目标虚拟机的IP地址,获得目标虚拟机的MAC地址,其中,MAC地址为第一网络节点根据目标虚拟机的IP地址确定的,第一网络节点为配置有第一虚拟路由器的网络节点。
需要说明的是,这里获得目标虚拟机的MAC地址的方式与S301中获得目标虚拟机的MAC地址的方式一样,在这里不进行赘述。
S903:根据MAC地址,将目标数据包发送给第一计算节点,以使第一计算节点将目标数据包发送给目标虚拟机,其中,第一计算节点为配置有目标虚拟机的计算节点。
IP转换信息中还记录了对数据包进行转换前后的端口的对应关系,第一虚拟路由器在根据目标虚拟机的MAC地址,将目标数据包发送给第一计算节点之前,第一虚拟路由器会根据IP地址转换信息确定用于发送目标数据包的端口,该端口与第二虚拟路由器向第一主机发送第一数据包所使用的端口为同一个端口,该端口为IP地址转换信息中针对第一数据包的对应关系中转换后的源端口。
第一虚拟路由器根据IP转换信息,将目标数据包中的目的IP地址转换成目标数据包所对应的对应关系中转换前的源IP地址,将目标数据包中的目的端口转换成目标数据包所对应的对应关系中转换前的源端口。。需要说明的是,在本发明实施例中,目标数据包是第一数据包的响应数据包,IP转换信息中已经记录第一数据包进行IP地址转换前后的IP及端口的对应关系,在对目标数据包进行IP地址转换,不需要再将转换前后的IP地址及端口的对应关系记录在IP转换信息中。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,交换机确定虚拟路由器状态,从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不进行故障切换,因而保证了数据持续传输。
图10为本发明实施例提供的数据传输方法的第三种流程示意图,应用于网络系统中的计算节点,具体的,网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机。方法包括:
S1001:接收目标虚拟机发送的第一数据包,其中,第一数据包中携带所述目标虚拟机的IP地址及第二目的IP地址。
根据现有技术可知,数据包中都携带了源IP地址和目的IP地址,本发明实施例中的第一数据包也携带了上述IP地址,因为第一数据包是目标虚拟机发送给计算节点的,所以第一数据包中携带的源IP地址即为目标虚拟机的IP地址,目的IP地址即为这里所说的第二目的IP地址。
需要说明的是,第一数据包可以为上述所说的目标数据包的响应数据包,也可以为请求数据包。计算节点可以根据自身记录的发送数据包的信息确定目标数据包是响应数据包还是请求数据包。
S1002:根据目标虚拟机的IP地址或第二目的IP地址,从处于可用状态的虚拟路由器中确定第三虚拟路由器。
具体的,根据目标虚拟机的IP地址或第二目的IP地址,从处于可用状态的虚拟路由器中确定第三虚拟路由器,可以包括:
基于计算节点中配置的开放式最短路径优先路由协议以及等价多路径路由协议,以及网络节点中配置的开放式最短路径优先路由协议,获得当前处于可用状态的虚拟路由器;
根据哈希算法计算目标虚拟机的IP地址的第二哈希值,根据第二哈希值从处于可用状态的虚拟路由器中确定第三虚拟路由器。
在实际应用中,网络系统虽然存在多个虚拟路由器提供相同的服务,但只有一个虚拟路由器在工作,不能同时工作,是因为在同一个网络环境中,多个虚拟路由器不能有相同的IP地址,否则会造成虚拟路由器的选择问题,虚拟路由器的选择问题就是路径的选择问题。本发明实施例中,通过在计算节点中配置OSPF协议与ECMP协议,在网络节点中配置OSPF协议,同时配置计算节点到每一提供相同服务的虚拟路由器之间路径相等的开销,使得多个提供相同服务的虚拟路由器不仅能同时工作,还使得虚拟路由器相互之间是等价虚拟路由器,即通过上述配置能够实现等价路由。计算节点根据自身及网络节点中配置的协议,可以确定处于可用状态的虚拟路由器有哪些,也就是确定同时工作的虚拟路由器有哪些,然后根据哈希算法计算目标虚拟机的IP地址或第二目的IP地址的第二哈希值,根据第二哈希值从处于可用状态的虚拟路由器中确定第三虚拟路由器,不会造成路径选择的问题。
在本发明实施例中,在第一数据包传送到计算节点时,计算节可以获知每一个网络节点与自身的连接状态,从而判断网络节点中部署的虚拟路由器是否处于可用状态,从而可以获得当前处于可用状态的虚拟路由器是哪些。因为在计算节点的路由表中,自身到每一虚拟路由器之间路径开销都相等,根据ECMP协议,自身与虚拟路由器之间形成了多个等价路径,每个网络节点中部署的提供相同服务的虚拟路由器相互之间是等价的关系。
如果计算节点根据自身所记载的数据包的信息确定第一数据包是一个请求数据包,则可以利用哈希算法计算目标虚拟机的IP地址的第二哈希值,根据第二哈希值与处于可用状态的虚拟路由器之间的对应关系,可以确定第三虚拟路由器。
如果计算节点根据自身所记载的数据包的信息确定是一个响应数据包,则利用哈希算法计算第二目IP地址的第二哈希值。根据第二哈希值与处于可用状态的虚拟路由器之间的对应关系,可以确定第三虚拟路由器。
需要说明的是,如果目标数据包是第一数据包的响应数据包,计算节点计算第二目的IP地址的第二哈希值,交换机计算第一主机的IP地址的第一哈希值,第一哈希值与第二哈希值的数值相同,因为第二目的IP地址就是第一主机的IP地址。如果第一数据包是目标数据包的响应数据包,计算节点计算目标虚拟机的IP地址的第二哈希值,交换机计算第一目的IP地址的第一哈希值的数值相同,第一哈希值与第二哈希值的数值相同,因为第一目的IP地址就是目标虚拟机的IP地址。
S1003:向第三虚拟路由器发送第一数据包,以使得第三虚拟路由器将第一数据包发送至第一主机,其中,第一主机为第三虚拟路由器根据第二目的IP地址确定的。
具体的,将第一数据包发送至第一主机,包括:
将第一数据包通过交换机发送至第一主机。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,计算节点确定虚拟路由器状态,从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不进行故障切换,因而保证了数据持续传输。
在本发明实施例中,在每一个网络节点中都部署了处于可用状态的虚拟路由器,计算节点接收到的数据包后,可以从处于可用状态的虚拟路由器中选择一个虚拟路由器用来转发数据包,不同的数据包可以通过不同的虚拟路由器进行转发,对来自相同网段的数据包提供转发服务的虚拟路由器之间可以称之为对等的虚拟路由器,在网络系统中部署对等的虚拟路由器为数据包提供转发服务,实现了网络流量的负载均衡。
在本发明的一个优先的实施例中,参见图11,提供的数据传输方法的第四种流程示意图,与图10所示的实施例相比,本实施例中在S1001之前增加了S1004、S1005和S1006。
S1004:接收目标虚拟机广播的第二ARP请求,其中,第二ARP请求携带所请求的虚拟路由器的IP地址。
本发明实施例中,为了避免ARP的泛洪,同时也为了避免因为虚拟路由器的MAC地址相同而造成的路径混乱,每个计算节点中均配置有二层广播机制(L2population)以及ARP响应机制(ARP Response),L2population用于将网络系统中的所有节点的ARP信息同步至本地,ARP Response负责响应本地的ARP请求。
目标虚拟机与第三虚拟路由器之间进行数据传输是二层转发机制,所以目标虚拟机需要确定第三虚拟路由器的MAC地址才能进行通信。在本申请的网络系统中,虚拟路由器配置有相同的IP地址和MAC地址,当目标虚拟机发送第二ARP请求时,所请求的虚拟由器可以为任意一个负责目标虚拟机所属网段的虚拟路由器。
S1005:根据网络节点与计算节点之间同步的ARP信息,确定所请求的虚拟路由器的MAC地址。
计算节点中配置有二层广播机制和ARP响应机制,所以会拦截第二ARP请求会并响应第二ARP请求,根据自身同步得到的ARP信息确定所请求的虚拟路由器的IP地址对应的MAC地址。
S1006:向目标虚拟机发送所确定的MAC地址。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,计算节点确定虚拟路由器状态,从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不进行故障切换,因而保证了数据持续传输。
在本发明实施例中,在每一个网络节点中都部署了处于可用状态的虚拟路由器,计算节点接收到的数据包后,可以从处于可用状态的虚拟路由器中选择一个虚拟路由器用来转发数据包,不同的数据包可以通过不同的虚拟路由器进行转发,对来自相同网段的数据包提供转发服务的虚拟路由器之间可以称之为对等的虚拟路由器,在网络系统中部署对等的虚拟路由器为数据包提供转发服务,实现了网络流量的负载均衡。
在本发明的另一个具体实施例中,图12为第三虚拟路由器发送第一数据包的第一种流程示意图,将所述第一数据包通过交换机发送至第一主机,可以包括:
S1201:确定用于向交换机发送第一数据包的第二端口。
本领域技术人员可以理解的是,第二端口是逻辑意义上的端口,该第二端口为TCP/IP中的端口。需要说明的是,第三虚拟路由器中配置了conntrack模块,该conntrack模块与第一虚拟路由器中的conntrack模块的原理及功能相同,在这里不进行赘述,虚拟路由器之间通过数据库同步连接跟踪表的方式与上述所说的方式一样,也不进行赘述。
第三虚拟路由器在确定连接跟踪表的连接项中没有记录第一数据包的信息,则可以确定第一数据包为请求数据包,第三虚拟路由器根据查找路由后,可以进一步确定第一数据为访问外网的请求数据包。
S1202:对第一数据包进行IP地址转换,并将第一数据包转换前后IP地址之间的对应关系记录在IP地址转换信息中。
本领域技术人员公知的是,目标虚拟机不能直接以自身的IP地址访问第一主机,第三虚拟路由器需要对第一数据包进行IP地址转换。
如果第三虚拟路由器分配有FloatingIP地址,第三虚拟路由器将第一数据包携带的目标虚拟机的IP地址替换成该Floating IP地址。
如果第三虚拟路由器没有被配置浮动IP地址,第三虚拟路由器将第一数据包中携带的目标虚拟机的IP地址替换成该浮动IP地址替换成第三虚拟路由器上配置的IP地址。
第三虚拟路由器在进行IP地址转换时,会将第一数据包转换前后IP地址之间的对应关系记录在IP地址转换信息中。IP地址转换信息记录的是包含数据包的进行IP地址转换前的源IP地址、源端口、目的IP地址和目的端口,以及进行IP地址转换后的源IP地址、源端口、目的IP地址和目的端口之间的对应关系。
在实际应用中,IP地址转换信息会记录连接跟踪表中针对目标数据包会建立的连接项中。
S1203:将转换后的第一数据包通过第二端口及交换机发送至第一主机。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,计算节点可以根据第处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不需要进行故障切换,因而保证了数据持续传输。
在本发明一个具体实施例中,确定用于向交换机发送第一数据包的第二端口,可以包括:
判断处于分配状态的端口段中是否存在处于可使用状态的端口。
在判断存在处于可使用状态的端口后,则从处于可使用状态的端口中选择一个端口,将所选择的端口确定为第二端口,并将所选择的端口的状态变更为不可使用状态。
在判断不存在处于可使用状态的端口,从数据库获得处于未分配状态的端口段,使得数据库中记录的所获得的端口段状态更新为分配状态,返回执行判断处于分配状态的端口段中是否存在处于可使用状态的端口,其中,数据库,用于存储端口段以及端口段的状态。
第三虚拟路由器确定第二端口的方法与第一虚拟路由器确定第一端口的方法相同,在这里对第三虚拟路由器确定第二端口的方法不进行详述,具体请参考图7的相关内容。
在本发明的一个优先实施例中,第三虚拟路由器在保存从数据库获得的端口段后,还可以包括:
按照预设的时间间隔,确定所获得端口段中的端口是否在时间间隔内均未被使用;
在确定在时间间隔内端口均未被使用的情况下,向数据库发送针对所获得端口段的状态变更请求,以使数据库将所获得端口段的状态由分配状态变更为未分配状态。
需要说明的是,每一虚拟路由器在对获得的端口进行保存后,均会执行上述步骤,从而避免端口资源的浪费。在这里对上述步骤不进行详述,具体的,参见图8相关内容。
在实际应用中,第一主机还可以为与目标虚拟机处于同租户网络但处于不同网段的虚拟机,配置有目标虚拟机的第一计算节点接收到目标虚拟机发送的根据虚拟路由器的IP地址生成的ARP请求,响应该ARP请求,将虚拟路由器的MAC地址发送给目标虚拟机,目标虚拟机将第一数据包发送至第一计算节点,,第二计算节点利用哈希算法计算第一主机的IP地址的哈希值,根据哈希值与处于可用状态的虚拟路由器的对应关系,确定第三虚拟路由器,向第三虚拟由器发送第一数据包,第三虚拟路由器在接收到第一数据包后,根据第一数据包携的目的IP地址生成ARP请求,配置有第三虚拟路由器的网络节点响应该ARP请求,将第一主机的MAC地址发送给第三虚拟路由器,第三虚拟路由器根据MAC地址,将第一数据包发送给配置有第一主机的第二计算节点,第二计算节点将第一数据包发送给第一主机,第一主机根据第一数据包生成第二数据包,并将第二数据包发送给第二计算节点,第二计算节点利用哈希算法计算第一主机的IP地址的哈希值,根据哈希值与处于可用状态的虚拟路由器的对应关系,确定虚拟路由器假设还是第三虚拟路由器,第三虚拟路由器将第二数据包发送至目标虚拟机所在的计算节点,目标虚拟机所在的计算节点将第二数据包发送至目标虚拟机。具体的,目标虚拟机与第一主机之间的通信方式是现有技术,在这里没有进行详细说明,只是针对计算节点选择虚拟路由器的方式进行简单说明。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,计算节点确定虚拟路由器状态,从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不进行故障切换,因而保证了数据持续传输。
在本发明的一个优先的实施例中,参见图13,提供的数据传输方法的第五种流程示意图,与图10所示的实施例相比,本实施例中在S1003之后增加了S1007和S1008。
S1007:接收第一主机通过交换机、第四虚拟路由器发送的目标数据包,其中,目标数据包为:第一主机生成的、针对第一数据包的响应数据包,第四虚拟路由器为:交换机根据第一主机的IP地址从处于可用状态的虚拟路由器中确定的。
第三虚拟路由器通过交换机将第一数据包发送至第一主机,第一主机接收到第一数据包后,根据第一数据包生成第一数据包的响应数据包即目标数据包,第一主机将目标数据包发送至交换机,交换机根据上述所说的方式选择第四虚拟路由器,通过第四虚拟路由器将目标数据包发送至计算节点。
S1008:将目标数据包发送至目标虚拟机。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,计算节点可以从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不需要进行故障切换,因而保证了数据持续传输。
在本发明实施例中,在每一个网络节点中都部署了处于可用状态的虚拟路由器,计算节点接收到的数据包后,可以从处于可用状态的虚拟路由器中选择一个虚拟路由器用来转发数据包,不同的数据包可以通过不同的虚拟路由器进行转发,对来自相同网段的数据包提供转发服务的虚拟路由器之间可以称之为对等的虚拟路由器,在网络系统中部署对等的虚拟路由器为数据包提供转发服务,实现了网络流量的负载均衡。
在本发明的另一个具体实施例中,图14为第三虚拟路由器发送第一数据包的第二种流程示意图,通过交换机将第一数据包发送至第一主机,可以包括:
S1401:根据第一目的IP地址及IP地址转换信息,对第一数据包进行IP地址转换。
具体的,第一主机为:第三虚拟路由器根据第二目的IP地址及虚拟路由器之间进行同步的IP地址转换信息确定的,其中,IP地址转换信息用于记录:虚拟路由器对接收到的数据包进行IP地址转换前后IP地址之间的对应关系。
第三虚拟路由器在确定连接跟踪表的连接项中记录有第一数据包的信息,说明第一数据包是一个响应数据包,第三虚拟路由器可以根据IP地址转换信息中查找到第一数据包携带的第二目的IP地址所在的对应关系,则基于该对应关系中,对第一数据包进行IP地址转换,将第一数据包中的目的IP地址转换成IP转换信息中针对第一数据包的对应关系中转换前的源IP地址,将第一数据包中的目的端口转换成IP转换信息中针对第一数据包对应关系中转换前的源端口。第三虚拟路由器会根据IP地址转换信息确定用于发送第一数据包的端口,该端口与第四虚拟路由器向第一主机发送第一数据包所使用的端口为同一个端口,该端口为IP地址转换信息中针对第一数据包的对应关系中转换后的源端口。
S1402:将转换后的第一数据包发送通过交换机发送至第一主机。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,计算节点确定虚拟路由器状态,从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不进行故障切换,因而保证了数据持续传输。
为了清楚起见,下面以Openstack网络系统为例,通过一个具体实例对本发明实施例进行具体说明。
OpenStack是一个开源的IaaS(基础设施及服务)云计算平台,旨在为公共及私有云的建设与管理提供软件,Openstack是由一系列相互关联的项目提供云基础设施解决方案的各个组件组成,其中Neutron是负责网络的组件,提供云计算环境下的虚拟网络功能。虚拟网络是一种包含至少部分是虚拟网络链接的计算机网络,虚拟网络链接是在两个计算设备间不包含物理连接,而是通过网络虚拟化来实现。虚拟网络分为private(私有)虚拟网络和public(公有)虚拟网络,private虚拟网络是用于虚拟机之间进行通信的网络,使用VLAN(Virtual Local Area Network,虚拟局域网)或VXLAN(Virtual eXtensible LocalArea Network,虚拟可扩展局域网)封装技术等tag(标签)技术隔离,隔离广播域,保证数据安全。Public虚拟网络用于与外部网络之间进行通信,整个OpenStack网络架构共享一个public虚拟网络。
在OpenStack的网络系统中,网络节点(net-node)上基于net namespace(网络命名空间)和linux tcp/ip(Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议)实现虚拟三层路由的基本功能。Linux是一个基于POSIX(Portable Operating System Interface,可移植操作系统接口)和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。网络节点中配置的每一个虚拟路由器都在对应各自的net namespace里面配置有转发规则,互不影响;虚拟路由器中的接口分为内部网关和外部网关两种类型,内部网关为虚拟机配置的private虚拟网络的网关设备,外部网关为配置有public虚拟网络上的一个Floating ip,主要用于实现动态NAT功能。
在具体实例中,OpenStack的网络系统中,虚拟路由器均配置相同的MAC地址与IP地址和conntrack模块;网络节点配置OSPF协议并开启L2population和ARP Response,L2population和ARP Response;交换机配置了OSPF协议,同时配置了ECMP协议;计算节点也配置了OSPF协议和ECMP协议,并开启了L2population和ARP Response。在本具体实例中,参见图15,通过计算节点中的L2agent与网络节点配置的Neutron server可以同步ARP信息进而实现L2population的功能。在图15中,VM是指虚拟机,OVS是一个高质量的,多层虚拟交换机,需要说明的是,网络节点2和网络节点3也配置了Neutron server,在这里只是以图15示意网络节点1配置的Neutron server和计算节点中的L2agent对ARP信息的同步为例进行说明。
在本具体实例中,在虚拟路由器的HA(High Availability,高可用)配置中将每个网络节点中配置的提供相同服务的虚拟路由器的IP地址和内部网关MAC地址配置成相同的。另外,同现有技术相比,还去掉了keepalived服务,虚拟路由器的初始状态均为可用状态,即不需要进行对虚拟路由器的状态进行切换和管理。在现有技术中,keepalived服务的作用是检测虚拟路由器的状态,如果有一个虚拟路由器出现故障,keepalived服务将检测到,并将有故障的虚拟路由器从网络系统中剔除,同时使用其他虚拟路由器代替该虚拟路由器的工作。
本具体实例,以第一主机为外部网络中的主机,目标虚拟机为private虚拟网络中的虚拟机,目标虚拟向第一主机发送第一数据包,第一主机向目标虚拟机反馈目标数据包为例进行说明。
目标虚拟机VM1发送根据虚拟路由器的IP地址生成的ARP请求,配置有VM1的计算节点compute1响应该ARP请求,根据同步得到的ARP信息,将虚拟路由器的MAC地址反馈给VM1。VM1发送目标数据包给compute1,compute1计算目标数据包携带的目的IP地址的第一哈希值,根据自身配置的OSPF协议和ECMP协议及网络节点中配置的OSPF协议确定处于可用状态的虚拟路由器。假设,根据第一哈希值与处于可用状态的虚拟路由器之间的对应关系,确定的第二虚拟路由器为网络节点2中的VR1,将第一数据包发送到网络节点2中的VR1。
网络节点2中的VR1在接收到第一数据包后,conntrack模块拦截第一数据包,确定数据库中保存的连接跟踪表中没有第一数据包的信息,会在连接跟踪表中建立新的连接项。参见图16,网络节点2中的VR1已经从数据库中获得的端口段为端口51-100,在确定端口51-100中没有存在处于可使用状态的端口,则从数据库中获得处于未分配状态的端口段,获得的端口段为端口301-350,数据库将分配给网络节点2中的VR1的端口段的状态从未分配状态更改为分配状态。VR1在端口301-350中处于可使用状态的端口中随机选择一个作为第二端口,确定第二端口为端口321,对第一数据包进行IP地址转换,转换前后的IP地址及端口的对应关系记录的IP地址转换信息,IP地址转换信息存储与针对第一数据包建立的连接向中,记录的信息如表1所示。
表1
转换前 转换后
源IP地址 VM1的IP地址 网络节点2中的VR1的浮动IP地址
源端口 端口1 端口321
目的IP地址 第一主机的IP地址 第一主机的IP地址
目的端口 端口2 端口2
网络节点2中的VR1按照预设的时间间隔,确定端口301-350在时间间隔内均未被使用,向数据库发送针对所获得的端口段的状态变更请求,数据库将该端口段的状态从未分配状态变更为未分配状态。
网络节点2中的VR1从public虚拟网络将转换后的是第一数据包发送给交换机,交换机将转换后的第一数据包发送给第一主机,第一主机在接收到转换后的第一数据包,将针对转换后的第一数据包生成目标数据包,将目标数据包发送给交换机,交换机利用哈希算法计算目标数据包携带的第一主机的IP地址的第一哈希值,该第一哈希值与上述compute1计算出来的第二哈希值相同,根据自身配置的OSPF协议和ECMP协议及网络节点中配置的OSPF协议确定处于可用状态的虚拟路由器。如果网络节点2发生故障,则确定的处于可用状态的虚拟路由器不包括网络节点2中的VR1。假设,根据第一哈希值与处于可用状态的虚拟路由器之间的对应关系,确定第一虚拟路由器为网络节点1中的VR1,将目标数据包发送到网络节点1中的VR1。
网络节点1中的VR1在接收到目标数据包之后,根据通过数据库同步的连接跟踪表中的IP转换信息如表1所示的内容,对目标数据包进行IP地址转换,将转换前后目标数据包IP地址及端口的对应关系如表2所示。
表2
转换前 转换后
源IP地址 第一主机的IP地址 第一主机的IP地址
源端口 端口2 端口2
目的IP地址 网络节点2中的VR1的浮动IP地址 VM1的IP地址
目的端口 端口321 端口1
网络节点2中的VR1将转换后的目标数据包发送给compute1,compute1将转换后的数据包发送给VM1。
与上述方法实施例相对应,本发明实施例还提供了一种数据传输装置。
图17为本发明实施例提供的数据传输装置的第一种结构示意图,该装置应用于网络系统中的交换机,网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机,装置可以包括第一接收模块1701、第一确定模块1702和第一发送模块1703。
第一接收模块1701,用于接收第一主机发送的目标数据包,其中,所述目标数据包中携带所述第一主机的IP地址及第一目的IP地址;
具体的,第一接收模块1701,还用于接收第二虚拟路由器发送的第一数据包,并将所述第一数据包发送至第一主机;目标数据包为:第一主机生成的、针对第一数据包的响应数据包。
第一确定模块1702,用于根据第一主机的IP地址或第一目的IP地址,从处于可用状态的虚拟路由器中确定第一虚拟路由器;
具体的,第一确定模块1702,可以用于:基于交换机中配置的开放式最短路径优先路由协议以及等价多路径路由协议,以及网络节点中配置的开放式最短路径优先路由协议,获得当前处于可用状态的虚拟路由器;根据哈希算法计算第一主机的IP地址或第一目的IP地址的第一哈希值,根据第一哈希值从处于可用状态的虚拟路由器中确定第一虚拟路由器。
第一发送模块1703,用于向第一虚拟路由器发送目标数据包,以使得第一虚拟路由器基于第一目的IP地址,将目标数据包发送给目标虚拟机,其中,目标虚拟机为第一虚拟路由器根据第一目的IP地址确定的。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,交换机确定虚拟路由器状态,从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不进行故障切换,因而保证了数据持续传输。
在本发明实施例中,在每一个网络节点中都部署了处于可用状态的虚拟路由器,交换机接收到的数据包后,可以从处于可用状态的虚拟路由器中选择一个虚拟路由器用来转发数据包,不同的数据包可以通过不同的虚拟路由器进行转发,对来自相同网段的数据包提供转发服务的虚拟路由器之间可以称之为对等的虚拟路由器,在网络系统中部署对等的虚拟路由器为数据包提供转发服务,实现了网络流量的负载均衡。
图18为本发明实施例提供的数据传输装置的第二种结构示意图,装置应用于网络系统中的计算节点,网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机,装置包括:第二接收模块1801、第二确定模块1802和第二发送模块1803。
第二接收模块1801,用于接收目标虚拟机发送的第一数据包,第一数据包中携带目标虚拟机的IP地址及第二目的IP地址;
第二确定模块1802,用于根据目标虚拟机的IP地址及第二目的IP地址从处于可用状态的虚拟路由器中确定第三虚拟路由器;
具体的,第二接收模块1802,还可以用于:
接收第一主机通过交换机、第四虚拟路由器发送的目标数据包,其中,目标数据包为:第一主机生成的、针对第一数据包的响应数据包,第四虚拟路由器为:交换机根据第一主机的IP地址从处于可用状态的虚拟路由器中确定的;
将目标数据包发送至目标虚拟机。
第二发送模块1803,用于向第三虚拟路由器发送第一数据包,以使得第三虚拟路由器将第一数据包发送至第一主机,其中,第一主机为第三虚拟路由器根据第二目的IP地址确定的。
在本发明一个优选的实施例中,每个计算节点中均部署有二层广播机制以及ARP响应机制,
装置还可以包括第三接收模块、第三确定模块和第三发送模块(图中未示出)。
第三接收模块,用于接收目标虚拟机广播的第二ARP请求,其中,第二ARP请求携带所请求的虚拟路由器的IP地址;
第三确定模块,用于根据网络节点与计算节点之间同步的ARP信息,确定所请求的虚拟路由器的MAC地址;
第三发送模块,用于向目标虚拟机发送所确定的MAC地址。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,计算节点确定虚拟路由器状态,从处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不进行故障切换,因而保证了数据持续传输。
在本发明实施例中,在每一个网络节点中都部署了处于可用状态的虚拟路由器,计算节点接收到的数据包后,可以从处于可用状态的虚拟路由器中选择一个虚拟路由器用来转发数据包,不同的数据包可以通过不同的虚拟路由器进行转发,对来自相同网段的数据包提供转发服务的虚拟路由器之间可以称之为对等的虚拟路由器,在网络系统中部署对等的虚拟路由器为数据包提供转发服务,实现了网络流量的负载均衡。
本发明实施例还提供了一种网络系统,参见图19,提供了一种网络系统的结构示意图,网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机;
交换机,用于接收第一主机发送的目标数据包,其中,目标数据包中携带第一主机的IP地址及第一目的IP地址;根据第一主机的IP地址或第一目的IP地址,从处于可用状态的虚拟路由器中确定第一虚拟路由器;向第一虚拟路由器发送目标数据包;
第一虚拟路由器,用于基于第一目的IP地址,将目标数据包发送给目标虚拟机,根据第一目的IP地址确定目标虚拟机。
在本发明的一个具体实施例中,交换机,具体用于基于交换机中配置的开放式最短路径优先路由协议以及等价多路径路由协议,以及网络节点中配置的开放式最短路径优先路由协议,获得当前处于可用状态的虚拟路由器;根据哈希算法计算第一主机的IP地址或第一目的IP地址的第一哈希值,根据第一哈希值从处于可用状态的虚拟路由器中确定第一虚拟路由器。
在本发明的一个具体实施例中,第一虚拟路由器,具体用于:
基于第一目的IP地址,获得目标虚拟机的MAC地址;
配置有第一虚拟路由器的第一网络节点,具体用于根据目标虚拟机的IP地址确定MAC地址,并将MAC地址发送给第一虚拟路由器;
第一虚拟路由器,具体用于根据MAC地址,将目标数据包发送给第一计算节点,其中,第一计算节点为配置有目标虚拟机的计算节点;
第一计算节点,用于将目标数据包发送给目标虚拟机。
在本发明的一个具体实施例中,第一虚拟路由器,具体用于根据第一目的IP地址及虚拟路由器之间进行同步的IP地址转换信息确定目标虚拟机,其中,IP地址转换信息为虚拟路由器对接收到的数据包进行IP地址转换时记录的转换前后IP地址信息的对应关系。
在本发明的一个具体实施例中,第一虚拟路由器,具体用于:
根据第一目的IP地址及IP地址转换信息,确定目标虚拟机的IP地址;基于目标虚拟机的IP地址,获得目标虚拟机的MAC地址;
配置有第一虚拟路由器的第一网络节点,具体用于根据目标虚拟机的IP地址确定MAC地址,并将MAC地址发送给第一虚拟路由器;
第一虚拟路由器,具体用于根据MAC地址,将目标数据包发送给第一计算节点,其中,第一计算节点为配置有目标虚拟机的计算节点;
第一计算节点,用于将目标数据包发送给目标虚拟机。
在本发明的一个优选实施例中,交换机还可以用于:
接收第二虚拟路由器发送的第一数据包,并将第一数据包发送至第一主机;
目标数据包为:第一主机生成的、针对第一数据包的响应数据包。
在本发明的一个优选实施例中,每个网络节点中均部署有二层广播机制以及ARP响应机制,
第一虚拟路由器,还用于根据目标虚拟机的IP地址,广播第一ARP请求;
第一网络节点,还用于接收第一ARP请求,根据网络节点与计算节点之间进行同步得到的ARP信息,基于第一ARP请求、二层广播机制和ARP响应机制,确定MAC地址;向第一虚拟路由器发送MAC地址;
所述第一虚拟路由器,还用于接收所述第一网络节点反馈的MAC地址。
在本发明的一个具体实施例中,所述是第一虚拟路由器,具体用于:
确定用于向第一计算节点发送所述目标数据包的第一端口;
对所述目标数据包进行IP地址转换,并将所述目标数据包转换前后IP地址信息的对应关系记录在IP地址转换信息中;
根据所述MAC地址,将转换后的所述目标数据包通过第一端口发送给第一计算节点。
在本发明的一个优选实施例中,网络系统还包括数据库,
数据库,用于存储端口段以及端口段的状态;
第一虚拟路由器,具体用于:判断处于分配状态的端口段中是否存在处于可使用状态的端口;若存在,从处于可使用状态的端口中选择一个端口,将所选择的端口确定为第一端口,并将所选择的端口的状态变更为不可使用状态;若不存在,从数据库获得处于未分配状态的端口段;
数据库,还用于将记录的所获得的端口段状态变更为分配状态。
在本发明的一个优选实施例中,第一虚拟路由器,还用于:按照预设的时间间隔,确定所获得端口段中的端口是否在时间间隔内均未被使用;如果是,向数据库发送针对所获得端口段的状态变更请求;
数据库,用于在接收到状态变更请求后,将所获得端口段的状态由分配状态变更为未分配状态。
在本发明的一个具体实施例中,目标虚拟机,用于向第一计算节点发送第一数据包,
第一计算节点,还用于接收目标虚拟机发送的第一数据包,其中,第一数据包中携带目标虚拟机的IP地址及第二目的IP地址;根据目标虚拟机的IP地址或第二目的IP地址,从处于可用状态的虚拟路由器中确定第三虚拟路由器;向第三虚拟路由器发送第一数据包;
第三虚拟路由器,用于将第一数据包发送至第一主机;根据第二目的IP地址确定第一主机。
在本发明的一个具体实施例中,第三虚拟路由器,具体用于:
将第一数据包通过交换机发送至第一主机。
在本发明的一个优选的实施例中,每个计算节点中均部署有二层广播机制以及ARP响应机制,
目标虚拟机,还用于根据所请求的虚拟路由器的IP地址,广播第二ARP请求;
第一计算节点,还用于接收目标虚拟机广播的第二ARP请求,其中,第二ARP请求携带所请求的虚拟路由器的IP地址;根据网络节点与计算节点之间同步的ARP信息,确定所请求的虚拟路由器的MAC地址;向目标虚拟机发送所确定的MAC地址;
目标虚拟机,还用于接收第一计算节点发送的MAC地址。
在本发明的一个优选的实施例中,第一计算节点,还用于:
接收第一主机通过交换机、第四虚拟路由器发送的目标数据包,其中,目标数据包为:第一主机生成的、针对第一数据包的响应数据包;
所述交换机,具体用于根据所述第一主机的IP地址从处于可用状态的虚拟路由器中确定所述第四虚拟路由器;
第一计算节点,还用于将目标数据包发送至目标虚拟机。
应用本发明实施例,与现有技术相比,本发明实施例中每一虚拟路由器初始状态均为可用状态,当虚拟路由器发生故障时,交换机可以处于可用状态的虚拟路由器中确定一个虚拟路由器转发数据包,不需要进行故障切换,因而保证了数据持续传输。
在本发明实施例中,在每一个网络节点中都部署了处于可用状态的虚拟路由器,交换机接收到的数据包后,可以从处于可用状态的虚拟路由器中选择一个虚拟路由器用来转发数据包,不同的数据包可以通过不同的虚拟路由器进行转发,对来自相同网段的数据包提供转发服务的虚拟路由器之间可以称之为对等的虚拟路由器,在网络系统中部署对等的虚拟路由器为数据包提供转发服务,实现了网络流量的负载均衡。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (27)

1.一种数据传输方法,其特征在于,应用于网络系统中的交换机,所述网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机,所述方法包括:
接收第一主机发送的目标数据包,其中,所述目标数据包中携带所述第一主机的IP地址及第一目的IP地址;
根据所述第一主机的IP地址或所述第一目的IP地址,从处于可用状态的虚拟路由器中确定第一虚拟路由器;
向所述第一虚拟路由器发送所述目标数据包,以使得所述第一虚拟路由器基于所述第一目的IP地址,将所述目标数据包发送给目标虚拟机,其中,所述目标虚拟机为所述第一虚拟路由器根据所述第一目的IP地址确定的;
所述基于所述第一目的IP地址,将所述目标数据包发送给目标虚拟机,包括:
基于所述第一目的IP地址,获得目标虚拟机的MAC地址,其中,所述MAC地址为第一网络节点根据所述目标虚拟机的IP地址确定的,所述第一网络节点为配置有所述第一虚拟路由器的网络节点;
根据所述MAC地址,将所述目标数据包发送给第一计算节点,以使所述第一计算节点将所述目标数据包发送给所述目标虚拟机,其中,所述第一计算节点为配置有所述目标虚拟机的计算节点;
所述根据所述MAC地址,将所述目标数据包发送给第一计算节点,包括:
确定用于向第一计算节点发送所述目标数据包的第一端口;
对所述目标数据包进行IP地址转换,并将所述目标数据包转换前后IP地址之间的对应关系记录在IP地址转换信息中;
根据所述MAC地址,将转换后的所述目标数据包通过所述第一端口发送给第一计算节点;
所述基于所述第一目的IP地址,将所述目标数据包发送给目标虚拟机,包括:
根据所述第一目的IP地址及IP地址转换信息,确定目标虚拟机的IP地址;其中,所述IP地址转换信息用于记录:虚拟路由器对接收到的数据包进行IP地址转换前后IP地址之间的对应关系;
基于所述目标虚拟机的IP地址,获得所述目标虚拟机的MAC地址;
根据所述MAC地址,将所述目标数据包发送给第一计算节点,以使所述第一计算节点将所述目标数据包发送给所述目标虚拟机。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一主机的IP地址或所述第一目的IP地址,从处于可用状态的虚拟路由器中确定第一虚拟路由器,包括:
基于所述交换机中配置的开放式最短路径优先路由协议以及等价多路径路由协议,以及网络节点中配置的开放式最短路径优先路由协议,获得当前处于可用状态的虚拟路由器;
根据哈希算法计算所述第一主机的IP地址或所述第一目的IP地址的第一哈希值,根据所述第一哈希值从处于可用状态的虚拟路由器中确定第一虚拟路由器。
3.根据权利要求2所述的方法,其特征在于,所述目标虚拟机为:
所述第一虚拟路由器根据所述第一目的IP地址及虚拟路由器之间进行同步的IP地址转换信息确定的。
4.根据权利要求3所述的方法,其特征在于,在所述接收第一主机发送的目标数据包之前,还包括:
接收第二虚拟路由器发送的第一数据包,并将所述第一数据包发送至所述第一主机;
所述目标数据包为:所述第一主机生成的、针对所述第一数据包的响应数据包。
5.根据权利要求1所述的方法,其特征在于,每个网络节点中均部署有二层广播机制以及ARP响应机制,
所述第一虚拟路由器通过以下方式获得所述MAC地址:
根据所述目标虚拟机的IP地址,广播第一ARP请求;
接收所述第一网络节点反馈的MAC地址,其中,所述MAC地址为:所述第一网络节点根据网络节点与计算节点之间进行同步得到的ARP信息,基于所述第一ARP请求、所述二层广播机制和ARP响应机制确定的。
6.根据权利要求1所述的方法,其特征在于,所述确定用于向第一计算节点发送所述目标数据包的第一端口,包括:
判断处于分配状态的端口段中是否存在处于可使用状态的端口;
若存在,从处于可使用状态的端口中选择一个端口,将所选择的端口确定为第一端口,并将所选择的端口的状态变更为不可使用状态;
若不存在,从数据库获得处于未分配状态的端口段,使得所述数据库中记录的所获得的端口段状态变更为分配状态,返回执行所述判断处于分配状态的端口段中是否存在处于可使用状态的端口的步骤,其中,所述数据库,用于存储端口段以及端口段的状态。
7.根据权利要求6所述的方法,其特征在于,所述从数据库获得处于未分配状态的端口段后,还包括:
按照预设的时间间隔,确定所获得端口段中的端口是否在所述时间间隔内均未被使用;
如果是,向所述数据库发送针对所获得端口段的状态变更请求,以使所述数据库将所获得端口段的状态由分配状态变更为未分配状态。
8.一种数据传输方法,其特征在于,应用于网络系统中的计算节点,所述网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机,所述方法包括:
接收目标虚拟机发送的第一数据包,其中,所述第一数据包中携带所述目标虚拟机的IP地址及第二目的IP地址;
根据所述目标虚拟机的IP地址或所述第二目的IP地址,从处于可用状态的虚拟路由器中确定第三虚拟路由器;
向所述第三虚拟路由器发送所述第一数据包,以使得所述第三虚拟路由器将所述第一数据包发送至第一主机,其中,所述第一主机为第三虚拟路由器根据所述第二目的IP地址确定的;
所述方法还包括:
接收所述第一主机通过所述交换机、第四虚拟路由器发送的目标数据包,其中,所述目标数据包为:所述第一主机生成的、针对所述第一数据包的响应数据包,所述第四虚拟路由器为:所述交换机根据所述第一主机的IP地址从处于可用状态的虚拟路由器中确定的;
将所述目标数据包发送至所述目标虚拟机。
9.根据权利要求8所述的方法,其特征在于,每个计算节点中均部署有二层广播机制以及ARP响应机制,
在所述从处于可用状态的虚拟路由器中确定第三虚拟路由器之前,还包括:
接收所述目标虚拟机广播的第二ARP请求,其中,所述第二ARP请求携带所请求的虚拟路由器的IP地址;
根据网络节点与计算节点之间同步的ARP信息,确定所请求的虚拟路由器的MAC地址;
向所述目标虚拟机发送所确定的MAC地址。
10.根据权利要求8或9所述的方法,其特征在于,所述将所述第一数据包发送至第一主机,包括:
将所述第一数据包通过交换机发送至第一主机。
11.一种数据传输装置,其特征在于,应用于网络系统中的交换机,所述网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机,所述装置包括:
第一接收模块,用于接收第一主机发送的目标数据包,其中,所述目标数据包中携带所述第一主机的IP地址及第一目的IP地址;
第一确定模块,用于根据所述第一主机的IP地址或所述第一目的IP地址,从处于可用状态的虚拟路由器中确定第一虚拟路由器;
第一发送模块,用于向所述第一虚拟路由器发送所述目标数据包,以使得所述第一虚拟路由器基于所述第一目的IP地址,将所述目标数据包发送给目标虚拟机,其中,所述目标虚拟机为所述第一虚拟路由器根据所述第一目的IP地址确定的;
所述第一虚拟路由器,具体用于:
基于所述第一目的IP地址,获得目标虚拟机的MAC地址;
配置有所述第一虚拟路由器的第一网络节点,具体用于根据所述目标虚拟机的IP地址确定所述MAC地址,并将所述MAC地址发送给所述第一虚拟路由器;
所述第一虚拟路由器,具体用于根据所述MAC地址,将所述目标数据包发送给第一计算节点,其中,所述第一计算节点为配置有所述目标虚拟机的计算节点;
所述第一计算节点,用于将所述目标数据包发送给所述目标虚拟机;
所述第一虚拟路由器,具体用于确定用于向第一计算节点发送所述目标数据包的第一端口;对所述目标数据包进行IP地址转换,并将所述目标数据包转换前后IP地址信息的对应关系记录在IP地址转换信息中;根据所述MAC地址,将转换后的所述目标数据包通过所述第一端口发送给第一计算节点;
所述第一虚拟路由器,具体用于:
根据所述第一目的IP地址及IP地址转换信息,确定目标虚拟机的IP地址;基于所述目标虚拟机的IP地址,获得所述目标虚拟机的MAC地址;其中,所述IP地址转换信息用于记录:虚拟路由器对接收到的数据包进行IP地址转换前后IP地址之间的对应关系;
配置有所述第一虚拟路由器的第一网络节点,具体用于根据所述目标虚拟机的IP地址确定所述MAC地址,并将所述MAC地址发送给所述第一虚拟路由器;
所述第一虚拟路由器,具体用于根据所述MAC地址,将所述目标数据包发送给第一计算节点;
所述第一计算节点,用于将所述目标数据包发送给所述目标虚拟机。
12.根据权利要求11所述的装置,其特征在于,所述第一确定模块,具体用于:基于所述交换机中配置的开放式最短路径优先路由协议以及等价多路径路由协议,以及网络节点中配置的开放式最短路径优先路由协议,获得当前处于可用状态的虚拟路由器;根据哈希算法计算所述第一主机的IP地址或所述第一目的IP地址的第一哈希值,根据所述第一哈希值从处于可用状态的虚拟路由器中确定第一虚拟路由器。
13.根据权利要求11或12所述的装置,其特征在于,所述第一接收模块,还用于接收第二虚拟路由器发送的第一数据包,并将所述第一数据包发送至所述第一主机;所述目标数据包为:所述第一主机生成的、针对所述第一数据包的响应数据包。
14.一种数据传输装置,其特征在于,应用于网络系统中的计算节点,所述网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机,所述装置包括:
第二接收模块,用于接收目标虚拟机发送的第一数据包,所述第一数据包中携带所述目标虚拟机的IP地址及第二目的IP地址;
第二确定模块,用于根据所述目标虚拟机的IP地址及所述第二目的IP地址从处于可用状态的虚拟路由器中确定第三虚拟路由器;
第二发送模块,用于向所述第三虚拟路由器发送所述第一数据包,以使得所述第三虚拟路由器将所述第一数据包发送至第一主机,其中,所述第一主机为第三虚拟路由器根据所述第二目的IP地址确定的;
所述装置还包括:
第一计算节点,用于接收所述第一主机通过所述交换机、第四虚拟路由器发送的目标数据包,其中,所述目标数据包为:所述第一主机生成的、针对所述第一数据包的响应数据包;
所述交换机,具体用于根据所述第一主机的IP地址从处于可用状态的虚拟路由器中确定所述第四虚拟路由器;
所述第一计算节点,还用于将所述目标数据包发送至所述目标虚拟机。
15.根据权利要求14所述的装置,其特征在于,每个计算节点中均部署有二层广播机制以及ARP响应机制,
所述装置还包括:
第三接收模块,用于接收所述目标虚拟机广播的第二ARP请求,其中,所述第二ARP请求携带所请求的虚拟路由器的IP地址;
第三确定模块,用于根据网络节点与计算节点之间同步的ARP信息,确定所请求的虚拟路由器的MAC地址;
第三发送模块,用于向所述目标虚拟机发送所确定的MAC地址。
16.根据权利要求14或15所述的装置,其特征在于,第二接收模块还用于:
接收所述第一主机通过所述交换机、第四虚拟路由器发送的目标数据包,其中,所述目标数据包为:所述第一主机生成的、针对所述第一数据包的响应数据包,所述第四虚拟路由器为:所述交换机根据所述第一主机的IP地址从处于可用状态的虚拟路由器中确定的;
将所述目标数据包发送至所述目标虚拟机。
17.一种网络系统,其特征在于,所述网络系统中包括交换机、至少一个计算节点和至少一个网络节点,每一网络节点中所配置的虚拟路由器的初始状态均为可用状态,每一计算节点配置有至少一个虚拟机;
所述交换机,用于接收第一主机发送的目标数据包,其中,所述目标数据包中携带所述第一主机的IP地址及第一目的IP地址;根据所述第一主机的IP地址或所述第一目的IP地址,从处于可用状态的虚拟路由器中确定第一虚拟路由器;向所述第一虚拟路由器发送所述目标数据包;
所述第一虚拟路由器,用于基于所述第一目的IP地址,将所述目标数据包发送给目标虚拟机;根据所述第一目的IP地址确定所述目标虚拟机;
所述第一虚拟路由器,具体用于:
基于所述第一目的IP地址,获得目标虚拟机的MAC地址;
配置有所述第一虚拟路由器的第一网络节点,具体用于根据所述目标虚拟机的IP地址确定所述MAC地址,并将所述MAC地址发送给所述第一虚拟路由器;
所述第一虚拟路由器,具体用于根据所述MAC地址,将所述目标数据包发送给第一计算节点,其中,所述第一计算节点为配置有所述目标虚拟机的计算节点;
所述第一计算节点,用于将所述目标数据包发送给所述目标虚拟机;
所述第一虚拟路由器,具体用于确定用于向第一计算节点发送所述目标数据包的第一端口;对所述目标数据包进行IP地址转换,并将所述目标数据包转换前后IP地址信息的对应关系记录在IP地址转换信息中;根据所述MAC地址,将转换后的所述目标数据包通过所述第一端口发送给第一计算节点;
所述第一虚拟路由器,具体用于根据所述第一目的IP地址及IP地址转换信息,确定目标虚拟机的IP地址;基于所述目标虚拟机的IP地址,获得所述目标虚拟机的MAC地址;其中,所述IP地址转换信息为虚拟路由器对接收到的数据包进行IP地址转换时记录的转换前后IP地址信息的对应关系;
配置有所述第一虚拟路由器的第一网络节点,具体用于根据所述目标虚拟机的IP地址确定所述MAC地址,并将所述MAC地址发送给所述第一虚拟路由器;
所述第一虚拟路由器,具体用于根据所述MAC地址,将所述目标数据包发送给第一计算节点;
所述第一计算节点,用于将所述目标数据包发送给所述目标虚拟机。
18.根据权利要求17所述的系统,其特征在于,所述交换机,具体用于:
基于所述交换机中配置的开放式最短路径优先路由协议以及等价多路径路由协议,以及网络节点中配置的开放式最短路径优先路由协议,获得当前处于可用状态的虚拟路由器;
根据哈希算法计算所述第一主机的IP地址或所述第一目的IP地址的第一哈希值,根据所述第一哈希值从处于可用状态的虚拟路由器中确定第一虚拟路由器。
19.根据权利要求17所述的系统,其特征在于,所述第一虚拟路由器,具体用于:
根据所述第一目的IP地址及虚拟路由器之间进行同步的IP地址转换信息确定目标虚拟机。
20.根据权利要求19所述的系统,其特征在于,所述交换机还用于:
接收第二虚拟路由器发送的第一数据包,并将所述第一数据包发送至所述第一主机;
所述目标数据包为:所述第一主机生成的、针对所述第一数据包的响应数据包。
21.根据权利要求17所述的系统,其特征在于,每个网络节点中均部署有二层广播机制以及ARP响应机制,
所述第一虚拟路由器,还用于根据所述目标虚拟机的IP地址,广播第一ARP请求;
所述第一网络节点,还用于接收所述第一ARP请求,根据网络节点与计算节点之间进行同步得到的ARP信息,基于所述第一ARP请求、所述二层广播机制和ARP响应机制,确定所述MAC地址;向所述第一虚拟路由器发送所述MAC地址;
所述第一虚拟路由器,还用于接收所述第一网络节点反馈的MAC地址。
22.根据权利要求20所述的系统,其特征在于,所述网络系统还包括数据库,
所述数据库,用于存储端口段以及端口段的状态;
所述第一虚拟路由器,具体用于判断处于分配状态的端口段中是否存在处于可使用状态的端口;若存在,从处于可使用状态的端口中选择一个端口,将所选择的端口确定为第一端口,并将所选择的端口的状态变更为不可使用状态;若不存在,从数据库获得处于未分配状态的端口段;
所述数据库,还用于将记录的所获得的端口段状态变更为分配状态。
23.根据权利要求17所述的系统,其特征在于,所述第一虚拟路由器,还用于:按照预设的时间间隔,确定所获得端口段中的端口是否在所述时间间隔内均未被使用;如果是,向所述数据库发送针对所获得端口段的状态变更请求;
所述数据库,用于在接收到所述状态变更请求后,将所获得端口段的状态由分配状态变更为未分配状态。
24.根据权利要求20所述的系统,所述目标虚拟机,用于向所述第一计算节点发送所述第一数据包;
所述第一计算节点,还用于接收目标虚拟机发送的第一数据包,其中,所述第一数据包中携带所述目标虚拟机的IP地址及第二目的IP地址;根据所述目标虚拟机的IP地址或所述第二目的IP地址,从处于可用状态的虚拟路由器中确定第三虚拟路由器;向所述第三虚拟路由器发送所述第一数据包;
所述第三虚拟路由器,用于基于所述第二目的地址,将所述第一数据包发送至第一主机;根据所述第二目的IP地址确定所述第一主机。
25.根据权利要求23所述的系统,其特征在于,每个计算节点中均部署有二层广播机制以及ARP响应机制,
所述目标虚拟机,还用于根据所请求的虚拟路由器的IP地址,广播第二ARP请求;
所述第一计算节点,还用于接收所述目标虚拟机广播的第二ARP请求,其中,所述第二ARP请求携带所请求的虚拟路由器的IP地址;根据网络节点与计算节点之间同步的ARP信息,确定所请求的虚拟路由器的MAC地址;向所述目标虚拟机发送所确定的MAC地址;
所述目标虚拟机,还用于接收所述第一计算节点发送的MAC地址。
26.根据权利要求24所述的系统,其特征在于,所述第三虚拟路由器具体用于:
将所述第一数据包通过交换机发送至第一主机。
27.根据权利要求26所述的系统,其特征在于,所述第一计算节点,还用于接收所述第一主机通过所述交换机、第四虚拟路由器发送的目标数据包,其中,所述目标数据包为:所述第一主机生成的、针对所述第一数据包的响应数据包;
所述交换机,具体用于根据所述第一主机的IP地址从处于可用状态的虚拟路由器中确定所述第四虚拟路由器;
所述第一计算节点,还用于将所述目标数据包发送至所述目标虚拟机。
CN201610831826.1A 2016-09-19 2016-09-19 一种数据传输方法、装置及网络系统 Active CN107846358B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610831826.1A CN107846358B (zh) 2016-09-19 2016-09-19 一种数据传输方法、装置及网络系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610831826.1A CN107846358B (zh) 2016-09-19 2016-09-19 一种数据传输方法、装置及网络系统

Publications (2)

Publication Number Publication Date
CN107846358A CN107846358A (zh) 2018-03-27
CN107846358B true CN107846358B (zh) 2020-07-10

Family

ID=61656642

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610831826.1A Active CN107846358B (zh) 2016-09-19 2016-09-19 一种数据传输方法、装置及网络系统

Country Status (1)

Country Link
CN (1) CN107846358B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109587083B (zh) * 2018-11-30 2022-04-29 平安科技(深圳)有限公司 数据传输方法及相关装置
CN109547349B (zh) * 2018-12-06 2021-07-06 郑州云海信息技术有限公司 基于虚拟路由的流量管理方法、装置、终端及存储介质
CN111464442B (zh) * 2019-01-22 2022-11-18 华为技术有限公司 对数据包进行路由的方法和装置
CN109996273A (zh) * 2019-03-08 2019-07-09 上海寰创通信科技股份有限公司 一种轨道交通工具的数据传输系统
CN110505149B (zh) * 2019-08-06 2021-11-02 新华三技术有限公司合肥分公司 网络拓扑收集方法及装置
CN111092770B (zh) * 2019-12-23 2021-09-14 联想(北京)有限公司 一种虚拟网络管理方法及电子设备
CN111131037B (zh) * 2019-12-27 2022-04-29 网易(杭州)网络有限公司 基于虚拟网关的数据传输方法、装置、介质与电子设备
CN111131492A (zh) * 2019-12-31 2020-05-08 中国联合网络通信集团有限公司 节点访问方法和系统
CN111181861A (zh) * 2020-01-13 2020-05-19 山东汇贸电子口岸有限公司 策略路由实现方法和装置
CN111432044B (zh) * 2020-03-17 2021-10-15 腾讯科技(深圳)有限公司 多链路设备mac地址管理方法、装置和多链路设备
CN113098954B (zh) * 2021-03-30 2022-10-25 平安科技(深圳)有限公司 报文转发方法、装置、计算机设备和存储介质
CN114285795B (zh) * 2021-12-02 2023-01-31 中国银联股份有限公司 一种虚拟设备的状态控制方法、装置、设备及存储介质
CN114827015B (zh) * 2022-04-29 2024-04-02 深圳爱捷云科技有限公司 一种数据转发方法和虚拟化云网络架构

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104170331A (zh) * 2012-04-09 2014-11-26 华为技术有限公司 用于vxlan的l3网关
CN104717081A (zh) * 2013-12-13 2015-06-17 杭州华为数字技术有限公司 一种网关功能的实现方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105656796B (zh) * 2014-11-25 2019-01-22 新华三技术有限公司 实现虚拟扩展局域网三层转发的方法和装置
CN105391771B (zh) * 2015-10-16 2018-11-02 北京云启志新科技股份有限公司 一种面向多租户的云网络系统
CN107770062A (zh) * 2016-08-16 2018-03-06 北京金山云网络技术有限公司 一种数据包发送方法、装置及网络架构

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104170331A (zh) * 2012-04-09 2014-11-26 华为技术有限公司 用于vxlan的l3网关
CN104717081A (zh) * 2013-12-13 2015-06-17 杭州华为数字技术有限公司 一种网关功能的实现方法及装置

Also Published As

Publication number Publication date
CN107846358A (zh) 2018-03-27

Similar Documents

Publication Publication Date Title
CN107846358B (zh) 一种数据传输方法、装置及网络系统
US11283707B2 (en) Segment routing with fast reroute for container networking
EP3355553B1 (en) Reliable load-balancer using segment routing and real-time application monitoring
CN107465590B (zh) 网络基础设施系统、路由网络业务的方法及计算机可读介质
EP3367638B1 (en) Load balancing method, device and system
US10887276B1 (en) DNS-based endpoint discovery of resources in cloud edge locations embedded in telecommunications networks
US11095534B1 (en) API-based endpoint discovery of resources in cloud edge locations embedded in telecommunications networks
US9385949B2 (en) Routing controlled by subnet managers
WO2018077238A1 (zh) 一种基于交换机的负载均衡系统及方法
EP2993838B1 (en) Methods for setting a member identity of gateway device and corresponding management gateway devices
EP3327994B1 (en) Virtual network management
US10594586B2 (en) Dialing test method, dialing test system, and computing node
CN111638957B (zh) 一种集群共享式公有云负载均衡的实现方法
CN109728962B (zh) 一种发送报文的方法和设备
CN103118148B (zh) 一种arp缓存更新方法和设备
CN104717081A (zh) 一种网关功能的实现方法及装置
WO2016134624A1 (zh) 路由方法、装置及系统、网关调度方法及装置
EP4016928A1 (en) Layer 2 leased line network system, configuration method, and device
CN110830574B (zh) 一种基于docker容器实现内网负载均衡的方法
US11050655B2 (en) Route information distribution through cloud controller
US11824765B2 (en) Fast redirect of traffic when pods fail
WO2021098727A1 (zh) 网络部署的方法及系统
CN113381936B (zh) 网络信息处理方法、装置及网络设备
US11743325B1 (en) Centralized load balancing of resources in cloud edge locations embedded in telecommunications networks
CN112491984A (zh) 基于虚拟网桥的容器编排引擎集群管理系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant