发明内容
本发明的目的是提供一种隧道协同方法、装置、设备及可读存储介质,解决混合overlay中,对接不同产商产品的问题。
为解决上述技术问题,本发明提供如下技术方案:
一种隧道协同方法,包括:
利用隧道协同插件,获取主机隧道端点的主机端点信息,并将主机端点信息发送给交换机端点;
利用隧道协同驱动,获取交换机端点的交换机端点信息,并将交换机端点信息发送给主机隧道端点;
利用主机端点信息和交换机端点信息,在主机隧道端点与交换机端点之间建立隧道连接,以便主机隧道端点与交换机端点通过隧道连接进行隧道通信。
优选地,所述利用隧道协同插件,获取主机隧道端点的主机端点信息,并将主机端点信息发送给交换机端点,包括:
利用所述隧道协同插件,定期获取所有主机隧道端点的全量主机端点信息;
调用所有隧道协同驱动的隧道同步端口,并将全量主机端点信息发送给软件定义网络控制器,以便软件定义网络将全量主机端点信息转发给交换机端点。
优选地,所述利用隧道协同驱动,获取交换机端点的交换机端点信息,并将交换机端点信息发送给主机隧道端点,包括:
利用所述隧道协同驱动,获取所有交换机端点的全量交换机端点信息;
将全量交换机端点信息与上次获取的历史全量交换机端点信息进行比对,得到差异交换机端点信息;
将差异交换机端点信息发送给主机隧道端点。
优选地,所述利用所述隧道协同驱动,获取所有交换机端点的全量交换机端点信息,包括:
调用所述隧道协同驱动中的隧道端点属性,得到各个返回列表;列表元数为字典,字典内包括交换机端点信息,交换机端点信息包括:隧道类型、隧道端点IP、隧道端点主机名、隧道端点端口。
优选地,还包括:
对主机隧道端点中的主机终端代理进行监控;
在监听到更新行为、创建行为、移除行为中的至少一种行为时,调用隧道协同驱动,并将主机隧道端点的更新、移除、创建消息发送给交换机端点。
优选地,还包括:
将隧道协同驱动注册到软件定义网络;
将隧道协同插件注册到云计算平台管理平台。
优选地,还包括:
在修改云计算平台管理平台的网络服务插件对应配置文件后,加载隧道协同插件。
一种隧道协同装置,包括:
主机信息感知模块,用于利用隧道协同插件,获取主机隧道端点的主机端点信息,并将主机端点信息发送给交换机端点;
交换机信息感知模块,用于利用隧道协同驱动,获取交换机端点的交换机端点信息,并将交换机端点信息发送给主机隧道端点;
隧道协同模块,用于利用主机端点信息和交换机端点信息,在主机隧道端点与交换机端点之间建立隧道连接,以便主机隧道端点与交换机端点通过隧道连接进行隧道通信。
一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现上述隧道协同方法的步骤。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述隧道协同方法的步骤。
应用本发明实施例所提供的方法,利用隧道协同插件,获取主机隧道端点的主机端点信息,并将主机端点信息发送给交换机端点;利用隧道协同驱动,获取交换机端点的交换机端点信息,并将交换机端点信息发送给主机隧道端点;利用主机端点信息和交换机端点信息,在主机隧道端点与交换机端点之间建立隧道连接,以便主机隧道端点与交换机端点通过隧道连接进行隧道通信。
在本申请中,为了使得主机隧道端点可以对接不同产商的交换机端点,提出了隧道协同插件和隧道协同驱动来实现主机隧道端点与交换机端点之间的相互感知与隧道连接建立。具体的,该隧道驱动插件可以获取主机隧道端点的主机端点信息,并将主机端点信息发送给交换机端点,使得交换机端点可以感知主机隧道端点;隧道协同驱动获取交换机端点的交换机端点信息,并将交换机端点信息发送给主机隧道端点,使得主机隧道端点能够感知到交换机端点。基于主机端点信息和交换机端点信息,便可在主机隧道端点和交换机端点之间建立隧道连接,如此,主机隧道端点便可与交换机端点通过隧道连接进行隧道通信。即,本申请实现混合overlay时,不再局限于同一产商的设备,可以对接不同产商的设备,可提升混合overlay的灵活性。
相应地,本发明实施例还提供了与上述隧道协同方法相对应的隧道协同装置、设备和可读存储介质,具有上述技术效果,在此不再赘述。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1和图2,图1为本发明实施例中一种隧道协同方法的流程图,图2为本申请实施例中一种混合overlay的***架构示意图,该方法可应用于如图2所示的***中,该方法包括以下步骤:
S101、利用隧道协同插件,获取主机隧道端点的主机端点信息,并将主机端点信息发送给交换机端点。
隧道协同插件,可具体指openstack neutron的插件。其中,openstack指开源云计算平台管理平台项目。其中,Neutron指一种网络结构,包括一个外部网络、一个内部网络和一个路由器。该外部网络负责连接OpenStack项目之外的网络环境,又称公共网络,与其他网络不同,它不仅仅是一个虚拟网络,更重要的是,它表示OpenStack网络能被外部物理网络接入并访问,外部网络可能是企业的局域(Intranet),也可能是互联网(Internet),这类网络并不是由Neutron直接管理,内部网络完全由软件定义,又称私有网络。它是虚拟机实例所在的网络,能够直接连接到虚拟机。项目用户可以创建自己的内部网络。默认情况下,项目之间的内部网络是相互隔离的,不能共享。该网络由Neutron直接配置与管理。该路由器用于将内部网络与外部网络连接起来。Neutron需要实现的主要是内部网络和路由器。内部网络是对二层(L2)网络的抽象,模拟物理网络的二层局域网,对于项目来说,它是私有的。路由器则是对三层(L3)网络的抽象,模拟物理路由器,为用户提供路由、NAT等服务。
其中,主机隧道端点(在本文中简称主机端点),可具体指受openstack管理的具备创建隧道能力的节点。例如,openvswitch-agent节点。
交换机端点(硬件实现的,能够实现隧道封装),也叫SDN交换机隧道端点,可以具体指第三方硬件SDN,不受Openstack管理,但具备创建隧道能力,需要与主机端点通过隧道通信的节点。例如SDN管理的交换机等。其中,SDN(Software Defined Network)即软件定义网络,是Emulex网络一种新型网络创新架构,是网络虚拟化的一种实现方式,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能。
该隧道驱动插件可以获取到主机隧道端点的主机端点信息,并将主机端点信息发送给交换机端点。其中,主机端点信息可以具体包括:隧道类型(例如vxlan),隧道端点IP,隧道端点主机名,当然根据隧道类型的不同,还可包括隧道端点端口。具体的,在向交换机端点发送主机端点信息时,可以通过调用隧道驱动驱动来实现。
在本申请中的一种具体实施方式中,上述步骤S101利用隧道协同插件,获取主机隧道端点的主机端点信息,并将主机端点信息发送给交换机端点,包括:
步骤一、利用隧道协同插件,定期获取所有主机隧道端点的全量主机端点信息;
步骤二、调用所有隧道协同驱动的隧道同步端口,并将全量主机端点信息发送给软件定义网络控制器,以便软件定义网络将全量主机端点信息转发给交换机端点。
也就是说,隧道协同插件,能定期将全量主机端点信息,下发给隧道协同驱动,以应对一些未知或复杂情况发生数据不一致时,进行信息校验。具体的实现方式:在隧道协同插件启动时,注册周期任务,同步端点信息;隧道协同插件查询数据感知到所有主机端点对于的全量主机端点信息;依次调用所有隧道协同驱动的tunnel_sysnc接口;协同驱动插件接收全量主机端点信息,通知SDN控制器。SDN控制器对重复端点信息进行多退少补。
交换机端点接收到主机端点信息,即可达到感知主机隧道端点的目的。
需要注意的是,在首次实现隧道协同方法时,在执行步骤S101之前,可完成隧道驱动插件和隧道驱动驱动的注册和加载,即完成如图2所示***的搭建,图2中,VTEP指虚拟隧道端点;ovs是openvswitch的简写,一个开源的虚拟交换机软件;br-tun是一个ovs的网桥名字,是在openstack neutron中默认约定的名字;OVS Agent ovs代理,是openstackneutron一个组件的名字;ml2是一种二层管理架构,Driver为驱动。对于控制节点已有的插件/驱动可参照现有插件/驱动的具体定义和作用,在此不再一一赘述。
具体的实现过程:
步骤一、将隧道协同驱动注册到软件定义网络;
步骤二、将隧道协同插件注册到云计算平台管理平台。
需要注意的是,当交换机端点具体为第三方硬件SDN时,在修改云计算平台管理平台的网络服务插件对应配置文件后,加载隧道协同插件。
即,Openstack负责实现隧道协同插件。将插件注册到neutron.service_pluginsentry_point(为实现以名称形式加载的注册点)。需要该功能时,通过修改neutron-server(网络服务的插件)的配置文件加载该插件。
SDN负责实现隧道协同驱动。将隧道协同驱动注册到neutron.tc_drivers entry_point(为了实现以名称形式加载的注册点)。隧道协同插件根据配置,选择加载驱动。协同驱动,需要按照属性和接口设计实现,可为独立的代码库。
S102、利用隧道协同驱动,获取交换机端点的交换机端点信息,并将交换机端点信息发送给主机隧道端点。
可以通过调用隧道协同驱动的方式,来获取交换机端点的交换机端点信息,并将该交换机端点信息发送给主机隧道端点。其中,交换机端点信息与主机端点信息类似,在此不再一一赘述。
在本申请中的一种具体实施方式中,步骤S102利用隧道协同驱动,获取交换机端点的交换机端点信息,并将交换机端点信息发送给主机隧道端点,包括:
步骤一、利用隧道协同驱动,获取所有交换机端点的全量交换机端点信息;
步骤二、将全量交换机端点信息与上次获取的历史全量交换机端点信息进行比对,得到差异交换机端点信息;
步骤三、将差异交换机端点信息发送给主机隧道端点。
即,可定期同步交换机端点对应的交换机端点信息到主机端点。具体的,隧道协同插件,定期拉取全量交换机端点信息,并对比差异,通知主机端点。具体的实现方式:隧道协同插件启动时,注册周期任务,以拉取交换机端点信息,并依次调用所有隧道协同驱动,获取交换机端点信息;对比差异,下发变化。
其中,步骤一利用隧道协同驱动,获取所有交换机端点的全量交换机端点信息,可具体包括:调用隧道协同驱动中的隧道端点属性,得到各个返回列表;列表元数为字典,字典内包括交换机端点信息,交换机端点信息包括:隧道类型、隧道端点IP、隧道端点主机名、隧道端点端口。即,协同驱动支持,被调用该隧道端点属性(tunnel_endpoints)。并返回列表,列表元素为字典,字典内为端点信息。该端点信息包括:隧道类型:tunnel_type=vxlan;隧道端点IP:ip_address;隧道端点主机名:host(保证唯一);隧道端点端口:port(根据隧道类型,可无)。其中:隧道类型可在support_tunnel_types列表内。
主机隧道端点接收到交换机端点信息,即可达到感知交换机端点的目的。
S103、利用主机端点信息和交换机端点信息,在主机隧道端点与交换机端点之间建立隧道连接,以便主机隧道端点与交换机端点通过隧道连接进行隧道通信。
在交换机端点与主机隧道端点完成相互感知之后,便可利用主机端点信息和交换机端点信息,在主机隧道端点与交换机端点之间建立起隧道连接。在隧道连接完成建立之后,主机隧道端点与交换机端点之间便可通过该隧道连接进行隧道通信。即可在跨产商设备之间,实现混合overlay。
在本申请中的一种具体实施方式中,还可对主机隧道端点的更新、创建和溢出进行有效感知,并完成相关通知。具体的实现过程包括:
步骤一、对主机隧道端点中的主机终端代理进行监控;
步骤二、在监听到更新行为、创建行为、移除行为中的至少一种行为时,调用隧道协同驱动,并将主机隧道端点的更新、移除、创建消息发送给交换机端点。
即,隧道协同插件,能检测到新的主机隧道端点加入,并下发给协同驱动。具体的实现方式:隧道协同插件,监听Agent创建行为;收到创建通知,依次调用所有协同驱动的create_tunnel(创建隧道)接口,协同驱动插件接收端点信息,通知SDN控制器。
隧道协同插件,能检测到主机隧道端点更新,并下发给协同驱动。具体的实现方式:隧道协同插件,监听Agent更新行为;收到更新通知,依次调用所有协同驱动的update_tunnel(更新隧道)接口;协同驱动插件接收端点信息,通知SDN控制器。
隧道协同插件,能检测到,主机隧道端点移除,并下发给协同驱动。具体的实现方式:隧道协同插件,监听Agent移除行为;收到移除通知,依次调用所有协同驱动的delete_tunnel(删除隧道)接口;协同驱动插件接收端点信息,通知SDN控制器。
其中,SDN控制器可以处理重复端点信息。
应用本发明实施例所提供的方法,利用隧道协同插件,获取主机隧道端点的主机端点信息,并将主机端点信息发送给交换机端点;利用隧道协同驱动,获取交换机端点的交换机端点信息,并将交换机端点信息发送给主机隧道端点;利用主机端点信息和交换机端点信息,在主机隧道端点与交换机端点之间建立隧道连接,以便主机隧道端点与交换机端点通过隧道连接进行隧道通信。
在本申请中,为了使得主机隧道端点可以对接不同产商的交换机端点,提出了隧道协同插件和隧道协同驱动来实现主机隧道端点与交换机端点之间的相互感知与隧道连接建立。具体的,该隧道驱动插件可以获取主机隧道端点的主机端点信息,并将主机端点信息发送给交换机端点,使得交换机端点可以感知主机隧道端点;隧道协同驱动获取交换机端点的交换机端点信息,并将交换机端点信息发送给主机隧道端点,使得主机隧道端点能够感知到交换机端点。基于主机端点信息和交换机端点信息,便可在主机隧道端点和交换机端点之间建立隧道连接,如此,主机隧道端点便可与交换机端点通过隧道连接进行隧道通信。即,本申请实现混合overlay时,不再局限于同一产商的设备,可以对接不同产商的设备,可提升混合overlay的灵活性。
为便于本领域技术人员更好地理解本申请实施例所提供的隧道协同方法的具体实现和技术效果,下面结合图3对隧道协同方法进行详细说明。
图3为本申请实施例中一种隧道协同方法的具体实施流程示意图。其中,rpc通知指通过消息中间件发送消息给对方。
在该方法中,可以定期同步主机隧道端点到交换机端点。具体的,隧道协同插件,能定期将全量主机端点信息,下发给协同驱动。应对一些未知或复杂情况发生数据不一致时,进行信息校验。具体实现过程如下:
0、隧道协同插件启动时,注册周期任务,同步端点信息。
1、隧道协同插件查询数据获取所有主机端点。
2、依次调用所有协同驱动的tunnel_sysnc(隧道同步)接口
3、协同驱动插件接收端点信息,通知SDN控制器。
在该方法中,定期同步交换机端点到主机端点。
隧道协同插件,能定期拉取全量交换机端点信息,并对比差异,通知主机端点。具体实现过程如下:
0、隧道协同插件启动时,注册周期任务,拉取交换机端点信息
1、依次调用所有协同驱动,获取交换机端点信息。
2、对比差异,下发变化。
在该方法中,可以感知主机端点创建通知交换机端点。
隧道协同插件,能检测到,新的主机隧道端点加入,并下发给协同驱动。
具体实现过程如下:
1、隧道协同插件,监听Agent创建行为。
2、收到创建通知。
3、依次调用所有协同驱动的create_tunnel接口。
4、协同驱动插件接收端点信息,通知SDN控制器。
在该方法中,可以感知主机端点更新通知交换机端点。
隧道协同插件,能检测到主机隧道端点更新,并下发给协同驱动。具体实现过程如下:
1、隧道协同插件,监听Agent更新行为。
2、收到更新通知。
3、依次调用所有协同驱动的update_tunnel接口。
4、协同驱动插件接收端点信息,通知SDN控制器。。
在该方法中,可以感知主机端点移除通知交换机端点。
隧道协同插件,能检测到,主机隧道端点移除,并下发给协同驱动。具体实现过程如下:
1、隧道协同插件,监听Agent移除行为。
2、收到移除通知。
3、依次调用所有协同驱动的delete_tunnel接口。
4、协同驱动插件接收端点信息,通知SDN控制器。
该方法可以提供协同驱动属性及接口(support_tunnel_types和tunnel_endpoints),具体的,协同驱动属性即support_tunnel_types。协同驱动支持被调用该属性。并返回列表。列表元素为字符串(可统一为小写字母)。例如:[“vxlan”]。列表元素为字典。字典内为端点信息。
端点信息包括:
隧道类型tunnel_type=vxlan;
隧道端点IP:ip_address;
隧道端点主机名:host(需保证唯一);
隧道端点端口:port;
注意:隧道类型应该在support_tunnel_types(支持隧道类型)列表内。
该方法中的隧道协同驱动支持,被调用create_tunnel方法。调用该方法时,会传入tunnel_type(隧道类型),host(主机名),ip_address(IP地址),port(端口号)。应该支持接收参数。
如隧道协议不支持端口号,将会传入None。
该方法中的隧道协同驱动支持,被调用delete_tunnel方法。调用该方法时,会传入tunnel_type,host,ip_address,port。应该支持接收参数。如隧道协议不支持端口号,将会传入None。
该方法中的隧道协同驱动支持,被调用update_tunnel方法。调用该方法时,会传入tunnel_type,host,old_ip,old_port,new_ip,new_port给update_tunnel方法。该方法中的隧道协同驱动支持,被调用update_tunnel方法,即隧道协同驱动这个部件支持接收参数。如隧道协议不支持端口号,将会传入None(python语言中的一个特殊值)。
该方法中的隧道协同驱动支持,被调用tunnel_sync(隧道同步)方法,会传入tunnel_endpoints(tunnel_sync方法的的参数名,图3tunnel_endpoints是指隧道协同驱动的属性值)。参数tunnel_endpoints数据结构同隧道协同驱动属性值tunnel_endpoints的数据结构。
该方法还支持多架构,即不依赖于底层CPU架构,支持的多种架构:x86(一种常见的cpu架构),arm(一种常见的cpu架构)。
相应于上面的方法实施例,本发明实施例还提供了一种隧道协同装置,下文描述的隧道协同装置与上文描述的隧道协同方法可相互对应参照。
参见图4所示,该装置包括以下模块:
主机信息感知模块101,用于利用隧道协同插件,获取主机隧道端点的主机端点信息,并将主机端点信息发送给交换机端点;
交换机信息感知模块102,用于利用隧道协同驱动,获取交换机端点的交换机端点信息,并将交换机端点信息发送给主机隧道端点;
隧道协同模块103,用于利用主机端点信息和交换机端点信息,在主机隧道端点与交换机端点之间建立隧道连接,以便主机隧道端点与交换机端点通过隧道连接进行隧道通信。
应用本发明实施例所提供的装置,利用隧道协同插件,获取主机隧道端点的主机端点信息,并将主机端点信息发送给交换机端点;利用隧道协同驱动,获取交换机端点的交换机端点信息,并将交换机端点信息发送给主机隧道端点;利用主机端点信息和交换机端点信息,在主机隧道端点与交换机端点之间建立隧道连接,以便主机隧道端点与交换机端点通过隧道连接进行隧道通信。
在本申请中,为了使得主机隧道端点可以对接不同产商的交换机端点,提出了隧道协同插件和隧道协同驱动来实现主机隧道端点与交换机端点之间的相互感知与隧道连接建立。具体的,该隧道驱动插件可以获取主机隧道端点的主机端点信息,并将主机端点信息发送给交换机端点,使得交换机端点可以感知主机隧道端点;隧道协同驱动获取交换机端点的交换机端点信息,并将交换机端点信息发送给主机隧道端点,使得主机隧道端点能够感知到交换机端点。基于主机端点信息和交换机端点信息,便可在主机隧道端点和交换机端点之间建立隧道连接,如此,主机隧道端点便可与交换机端点通过隧道连接进行隧道通信。即,本申请实现混合overlay时,不再局限于同一产商的设备,可以对接不同产商的设备,可提升混合overlay的灵活性。
在本发明的一种具体实施方式中,主机信息感知模块101,具体用于利用隧道协同插件,定期获取所有主机隧道端点的全量主机端点信息;
调用所有隧道协同驱动的隧道同步端口,并将全量主机端点信息发送给软件定义网络控制器,以便软件定义网络将全量主机端点信息转发给交换机端点。
在本发明的一种具体实施方式中,交换机信息感知模块102,具体用于利用隧道协同驱动,获取所有交换机端点的全量交换机端点信息;
将全量交换机端点信息与上次获取的历史全量交换机端点信息进行比对,得到差异交换机端点信息;
将差异交换机端点信息发送给主机隧道端点。
在本发明的一种具体实施方式中,交换机信息感知模块102,具体用于调用隧道协同驱动中的隧道端点属性,得到各个返回列表;列表元数为字典,字典内包括交换机端点信息,交换机端点信息包括:隧道类型、隧道端点IP、隧道端点主机名、隧道端点端口。
在本发明的一种具体实施方式中,还包括:
监控模块,用于对主机隧道端点中的主机终端代理进行监控;
在监听到更新行为、创建行为、移除行为中的至少一种行为时,调用隧道协同驱动,并将主机隧道端点的更新、移除、创建消息发送给交换机端点。
在本发明的一种具体实施方式中,还包括:
注册模块,用于将隧道协同驱动注册到软件定义网络;
将隧道协同插件注册到云计算平台管理平台。
在本发明的一种具体实施方式中,加载模块,用于在修改云计算平台管理平台的网络服务插件对应配置文件后,加载隧道协同插件。
相应于上面的方法实施例,本发明实施例还提供了一种电子设备,下文描述的一种电子设备与上文描述的一种隧道协同方法可相互对应参照。
参见图5所示,该电子设备包括:
存储器332,用于存储计算机程序;
处理器322,用于执行计算机程序时实现上述方法实施例的隧道协同方法的步骤。
具体的,请参考图6,图6为本实施例提供的一种电子设备的具体结构示意图,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在电子设备301上执行存储器332中的一系列指令操作。
电子设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作***341。
上文所描述的隧道协同方法中的步骤可以由电子设备的结构实现。
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种隧道协同方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的隧道协同方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。