一种基于OpenStack云平台转发报文的方法和系统与流程

文档序号:16899885发布日期:2019-02-19 17:52阅读:277来源:国知局
一种基于OpenStack云平台转发报文的方法和系统与流程

本发明涉及虚拟机技术领域,特别涉及一种基于openstack云平台转发报文的方法和系统。



背景技术:

lvs(linux虚拟服务器,linuxvirtualserver)技术是运用在openstack云平台中,将多台低性能的服务器合成为一台高性能的虚拟服务器的技术,lvs由负载均衡器、rs(真实服务器,realserver)组和共享存储组成。其中,负载均衡器是lvs的接入点,可以采用ip负载均衡技术和请求分发技术将到达lvs的请求报文均衡地分发给rs组中的每台rs。

在lvs的nat(网络地址转换,networkaddresstranslation)模式下,lvs虚拟出一个用于对外访问的ip(即vip),客户端可以通过vip向lvs发送请求报文,处理完成后然后返回给客户端数据。当用户请求到达lvs时,负载均衡器可以根据预设的调度规则选择一个rs,并将请求报文中的目的ip地址(即vip)改成rs的ip地址,同时将请求报文中的目的端口也改成rs的端口,然后可以将请求报文发给rs进行处理。rs处理完用户请求生成响应报文,可以将响应报文发送给负载均衡器,之后负载均衡器可以将响应报文中的源ip地址和源端口改成负载均衡器的ip地址和端口,再把响应报文发送给客户端,上述报文转发机制可以参考图1所示。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:

nat模式下,后端的rs需要将默认网关修改为负载均衡器的vip,而在修改之后,一方面,如图2所示,当客户端不通过负载均衡器直接访问rs时,rs的响应报文会发送给负载均衡器,负载均衡器接收后会丢弃该响应报文,另一方面,如图3所示,当客户端与rs处于相同网段时,客户端通过负载均衡器访问rs,rs的响应报文会直接发送给客户端,客户端接收后也会丢弃该响应报文,故而,响应报文无法有效传输,openstack云平台服务因此无法正常实现。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种基于openstack云平台转发报文的方法和系统。所述技术方案如下:

第一方面,提供了一种基于openstack云平台转发报文的方法,所述方法运用于openstack云平台,所述openstack云平台包括至少一个计算节点和网络节点,所述计算节点包括计算集成网桥和至少一台rs,所述网络节点包括负载均衡器,所述方法包括:

所述计算集成网桥在转发指向与其连接的目标rs的请求报文时,根据对应所述目标rs的输入流记录规则,将非所述负载均衡器转发的请求报文的报文信息记录在预设的请求报文记录表中;

所述计算集成网桥在转发所述目标rs发出的数据报文时,根据对应所述目标rs的输出流配置规则,将所述请求报文记录表中不存在对应的报文信息的数据报文转发至所述负载均衡器。

可选的,所述openstack云平台还包括控制节点,所述方法还包括:

所述控制节点接收目标rs的添加/删除请求,确定所述目标rs的导流配置数据;

所述控制节点基于所述目标rs的导流配置数据,通过neutronml2插件调用计算节点上的neutron-openvswitch-agent,在所述计算集成网桥上添加/删除对应所述目标rs的输入流记录规则和输出流配置规则。

可选的,所述计算集成网桥在转发指向与其连接的目标rs的请求报文时,根据对应所述目标rs的输入流记录规则,将非所述负载均衡器转发的请求报文的报文信息记录在预设的请求报文记录表中,包括:

所述计算集成网桥接收指向与其连接的目标rs的请求报文,确定所述请求报文的源mac地址;

如果所述源mac地址不是所述负载均衡器的mac地址,所述计算集成网桥则在预设的请求报文记录表中记录所述请求报文的五元组信息;

所述计算集成网桥向所述目标rs发送所述请求报文。

可选的,所述如果所述源mac地址不是所述负载均衡器的mac地址,所述计算集成网桥则在预设的请求报文记录表中记录所述请求报文的五元组信息,包括:

如果所述源mac地址不是所述负载均衡器的mac地址,且所述请求报文的传输层协议为tcp协议,所述计算集成网桥则在预设的请求报文记录表中记录所述请求报文的五元组信息。

可选的,所述计算集成网桥在转发所述目标rs发出的数据报文时,根据对应所述目标rs的输出流配置规则,将所述请求数据流记录表中不存在对应的报文信息的数据报文转发至所述负载均衡器,包括:

所述计算集成网桥接收所述目标rs发出的数据报文,获取所述请求报文记录表;

如果所述数据报文不是所述请求报文记录表中任一报文信息对应的响应报文,所述计算集成网桥则将所述数据报文的目的mac地址设置为负载均衡器的mac地址;

所述计算集成网桥根据所述数据报文的目的mac地址继续发送所述数据报文。

可选的,所述如果所述数据报文不是所述请求报文记录表中任一报文信息对应的响应报文,所述计算集成网桥则将所述数据报文的目的mac地址设置为负载均衡器的mac地址,包括:

如果所述数据报文不是所述请求报文记录表中任一报文信息对应的响应报文,且所述数据报文的源端口为预设的待监听端口,所述计算集成网桥则将所述数据报文的目的mac地址设置为负载均衡器的mac地址。

可选的,所述计算集成网桥接收所述目标rs发出的数据报文之后,还包括:

如果所述数据报文的目的mac地址为所述负载均衡器的mac地址,所述计算集成网桥直接向所述负载均衡器发送所述数据报文。

第二方面,提供了一种基于openstack云平台转发报文的系统,所述系统包括至少一个计算节点和网络节点,所述计算节点包括计算集成网桥和至少一台rs,所述网络节点包括负载均衡器,其中,所述计算集成网桥,用于:

在转发指向与其连接的目标rs的请求报文时,根据对应所述目标rs的输入流记录规则,将非所述负载均衡器转发的请求报文的报文信息记录在预设的请求报文记录表中;

在转发所述目标rs发出的数据报文时,根据对应所述目标rs的输出流配置规则,将所述请求报文记录表中不存在对应的报文信息的数据报文转发至所述负载均衡器。

可选的,所述系统还包括控制节点,所述控制节点,用于:

接收目标rs的添加/删除请求,确定所述目标rs的导流配置数据;

基于所述目标rs的导流配置数据,通过neutronml2插件调用计算节点上的neutron-openvswitch-agent,在所述计算集成网桥上添加/删除对应所述目标rs的输入流记录规则和输出流配置规则。

可选的,所述计算集成网桥,具体用于:

接收指向与其连接的目标rs的请求报文,确定所述请求报文的源mac地址;

如果所述源mac地址不是所述负载均衡器的mac地址,则在预设的请求报文记录表中记录所述请求报文的五元组信息;

向所述目标rs发送所述请求报文。

可选的,所述计算集成网桥,具体用于:

如果所述源mac地址不是所述负载均衡器的mac地址,且所述请求报文的传输层协议为tcp协议,则在预设的请求报文记录表中记录所述请求报文的五元组信息。

可选的,所述计算集成网桥,具体用于:

接收所述目标rs发出的数据报文,获取所述请求报文记录表;

如果所述数据报文不是所述请求报文记录表中任一报文信息对应的响应报文,则将所述数据报文的目的mac地址设置为负载均衡器的mac地址;

根据所述数据报文的目的mac地址继续发送所述数据报文。

可选的,所述计算集成网桥,具体用于:

如果所述数据报文不是所述请求报文记录表中任一报文信息对应的响应报文,且所述数据报文的源端口为预设的待监听端口,则将所述数据报文的目的mac地址设置为负载均衡器的mac地址。

可选的,所述计算集成网桥,还用于:

在接收所述目标rs发出的数据报文之后,如果所述数据报文的目的mac地址为所述负载均衡器的mac地址,直接向所述负载均衡器发送所述数据报文。

本发明实施例提供的技术方案带来的有益效果是:

本发明实施例中,计算集成网桥在转发指向与其连接的目标rs的请求报文时,根据对应目标rs的输入流记录规则,将非负载均衡器转发的请求报文的报文信息记录在预设的请求报文记录表中;计算集成网桥在转发目标rs发出的数据报文时,根据对应目标rs的输出流配置规则,将请求报文记录表中不存在对应的报文信息的数据报文转发至负载均衡器。这样,nat模式下,如果客户端不通过负载均衡器直接访问rs,请求报文的报文信息将会记录请求报文记录表中,rs的响应报文则会依据记录的报文信息,不经负载均衡器直接反馈给客户端,而如果客户端与rs处于同网段,客户端通过负载均衡器访问rs,rs的响应报文经过计算集成网桥时会被引导至负载均衡器进行转发,从而可以自动识别来自负载均衡器的报文和非负载均衡器的报文,精准的控制出入后端rs的流量转发路径,有效传输响应报文,保证了openstack云平台服务的正常实现。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种lvs的nat模式下报文转发机制的示意图;

图2是本发明实施例提供的一种lvs的nat模式下报文转发机制的示意图;

图3是本发明实施例提供的一种lvs的nat模式下报文转发机制的示意图;

图4是本发明实施例提供的一种openstack云平台的局部架构示意图;

图5是本发明实施例提供的一种基于openstack云平台转发报文的方法流程示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

本发明实施例提供了一种基于openstack云平台转发报文的方法,该方法可以运用在openstack云平台中,并主要由openstack云平台中计算节点的集成网桥实现。其中,openstack云平台包括至少一个计算节点和网络节点,如图4所示,一个计算节点中可以包含多个rs,每台rs的虚拟网卡可以经tap设备与linux网桥qbr相连,linux网桥qbr经qvb设备和qvo设备构成的连接通道与集成网桥(br-int)相连,集成网桥可以实现虚拟交换机的功能,同一计算节点中的不同rs间可以通过集成网桥相互传输数据报文;之后,集成网桥通过端口patch-tun和patch-int与通道网桥(br-tun)相连,计算节点的通道网桥可以与其它计算节点或者网络节点的通道网桥之间建立gre通道,构成一个统一的通信层,进而数据报文可以通过gre通道在计算节点之间、计算节点和网络节点之间进行传输。在网络节点内,通道网桥(br-tun)通过端口patch-tun和patch-int与集成网桥(br-int)相连,集成网桥再通过tap设备与负载均衡器连接,之后,负载均衡器根据需求经路由(router)或者直接与外部网桥(br-ex)相连,外部网桥连接物理网卡,从而可以实现数据报文的传输。为了区分计算节点和网络节点中的设备,后续说明时将在设备名称前添加前缀“计算”或“网络”,如计算节点的集成网桥将命名为“计算集成网桥”,“网络通道网桥”即为网络节点的通道网桥。

下面将结合具体实施方式,对图5所示的处理流程进行详细的说明,内容可以如下:

步骤501,计算集成网桥在转发指向与其连接的目标rs的请求报文时,根据对应目标rs的输入流记录规则,将非负载均衡器转发的请求报文的报文信息记录在预设的请求报文记录表中。

在实施中,openstack云平台在提供云服务时,网络节点中的负载均衡器可以接收客户端发来的请求报文,然后根据预设的ip负载均衡技术和请求分发技术,在后端的rs组中选择一台用于处理该请求报文的rs(如目标rs),再向目标rs转发该请求报文。故而,该请求报文可以经网络集成网桥和网络通道网桥传输至目标rs所在的计算节点的计算通道网桥,并由计算通道网桥传输至同节点的计算集成网桥。在计算集成网桥中,可以预先配置有目标rs的输入流记录规则,根据具体的输入流记录规则,计算集成网桥可以有选择地记录指向目标rs的请求报文的报文信息。这样,计算集成网桥接收到指向与其连接的目标rs的请求报文,并向目标rs转发请求报文的过程中,可以根据对应目标rs的输入流记录规则,筛选出非负载均衡器转发的请求报文,并将该请求报文的报文信息记录在预设的请求报文记录表中。

可选的,可以通过请求报文的源mac地址来判断是否记录请求报文的报文信息,相应的,步骤501的处理具体可以如下:计算集成网桥接收指向与其连接的目标rs的请求报文,确定请求报文的源mac地址;如果源mac地址不是负载均衡器的mac地址,计算集成网桥则在预设的请求报文记录表中记录请求报文的五元组信息;计算集成网桥向目标rs发送请求报文。

在实施中,计算集成网桥在接收到指向与其连接的目标rs的请求报文之后,可以先确定该请求报文的源mac地址,然后判断该源mac地址是否为预先存储的负载均衡器的mac地址。如果是,表示该请求报文是由负载均衡器转发来的,计算集成网桥则可以直接向目标rs发送该请求报文,如果不是,表示该请求报文非负载均衡器转发来的,计算集成网桥则可以在预设的请求报文记录表中记录该请求报文的五元组信息,其中,五元组信息可以包括请求报文的源ip地址、源端口号、目的ip地址、目的端口号和传输层协议。记录之后,计算集成网桥可以同样将请求报文发送给目标rs。

可选的,可以仅记录tcp协议下的请求报文的五元组信息,相应的,选择性记录五元组信息的处理可以如下:如果源mac地址不是负载均衡器的mac地址,且请求报文的传输层协议为tcp协议,计算集成网桥则在预设的请求报文记录表中记录请求报文的五元组信息。

在实施中,计算集成网桥在确定了指向目标rs的请求报文的源mac地址之后,如果判断出该请求报文的源mac地址不是预先存储的负载均衡器的mac地址,则可以进一步判断请求报文的传输层协议是否为tcp协议。如果是,计算集成网桥则可以在预设的请求报文记录表中记录请求报文的五元组信息,如果不是,计算集成网桥则可以不记录请求报文的报文信息,而直接向目标rs正常发送上述请求报文。

步骤502,计算集成网桥在转发目标rs发出的数据报文时,根据对应目标rs的输出流配置规则,将请求报文记录表中不存在对应的报文信息的数据报文转发至负载均衡器。

在实施中,openstack云平台在提供云服务时,后端的rs可以基于业务逻辑主动生成待发送的数据报文,或者基于接收到的客户端的请求报文,生成响应该请求报文的待发送的数据报文。以目标rs为例,目标rs在生成待发送的数据报文后,可以将数据报文发送至与其相连的计算集成网桥。在计算集成网桥中,可以预先配置有目标rs的输出流配置规则,根据具体的输出流配置规则,计算集成网桥可以有选择地对目标rs发出的数据报文进行导流配置。这样,计算集成网桥在接收到与其连接的目标rs发出的数据报文,并向外界(相对于当前计算节点而言的其它节点或设备)转发该数据报文的过程中,可以根据对应目标rs的输出流配置规则,筛选出将请求报文记录表中不存在对应的报文信息的数据报文(即除针对请求报文的响应报文之外的数据报文),将这些数据报文转发至负载均衡器。

可选的,可以通过调整数据报文的目的mac地址将数据报文引导至负载均衡器,相应的,步骤502的处理具体可以如下:计算集成网桥接收目标rs发出的数据报文,获取请求报文记录表;如果数据报文不是请求报文记录表中任一报文信息对应的响应报文,计算集成网桥则将数据报文的目的mac地址设置为负载均衡器的mac地址;计算集成网桥根据数据报文的目的mac地址继续发送数据报文。

在实施中,计算集成网桥在接收到目标rs发出的数据报文之后,可以先获取本地存储的请求报文记录表,由步骤501的处理可知,该请求报文记录表中可以记录有非负载均衡器发来的请求报文的报文信息。接下来,计算集成网桥可以依据接收到的数据报文的报文信息,在请求报文记录表中查找是否存在一个请求报文的报文信息,以使通过该请求报文的报文信息和数据报文的报文信息,能够确定数据报文为该请求报文的响应报文。如果存在,计算集成网桥则可以按照该数据报文的报文信息正常发送数据报文,如果不存在,计算集成网桥则可以先将数据报文的目的mac地址设置为负载均衡器的mac地址,然后根据修改后的目的mac地址,继续发送上述数据报文。

可选的,计算集成网桥无需对目标rs上预设的端口之外发送的数据报文进行导流,相应的,步骤502中修改数据报文的目的mac地址的处理具体可以如下:如果数据报文不是请求报文记录表中任一报文信息对应的响应报文,且数据报文的源端口为预设的待监听端口,计算集成网桥则将数据报文的目的mac地址设置为负载均衡器的mac地址。

在实施中,计算集成网桥在基于请求报文记录表,判断出接收到的数据报文不是已记录的任一报文信息对应的响应报文之后,可以进一步判断数据报文的源端口是否为预设的待监听端口。需要说明的是,在配置目标rs的输入流记录规则和输出流配置规则时,需要指定rs上具体的端口,这样,计算集成网桥在后续处理中仅对指定的端口发出的数据报文进行本实施例公开的导流处理,而非指定的端口发出的数据报文不进行相应导流处理。这样,如果判断出数据报文的源端口为预设的待监听端口,计算集成网桥则将数据报文的目的mac地址设置为负载均衡器的mac地址,否则可以按照数据报文原始的报文信息继续发送该数据报文。

可选的,在接收到目标rs发出的数据报文后,计算集成网桥可以直接将目的mac地址为负载均衡器的mac地址的数据报文转发给负载均衡器,相应的处理可以如下:如果数据报文的目的mac地址为负载均衡器的mac地址,计算集成网桥直接向负载均衡器发送数据报文。

在实施中,计算集成网桥在接收到目标rs发出的数据报文之后,可以先获取该数据报文的目的mac地址,判断该目的mac地址是否为预先存储的负载均衡器的mac地址。如果是,计算集成网桥则可以直接向负载均衡器发送该数据报文,无需进行后续在请求报文表中查找请求报文的报文信息的处理。

可选的,openstack云平台还包括控制节点,控制节点可以在添加/删除rs时,在计算集成网桥上添加/删除rs的输入流记录规则和输出流配置规则,相应的处理可以如下:控制节点接收目标rs的添加/删除请求,确定目标rs的导流配置数据;控制节点基于目标rs的导流配置数据,通过neutronml2插件调用计算节点上的neutron-openvswitch-agent,在计算集成网桥上添加/删除对应目标rs的输入流记录规则和输出流配置规则。

在实施中,openstack云平台中还可以包括控制节点,该控制节点可以用于搭建openstack云平台的网络环境,并对openstack云平台中的其它节点进行管理控制,具体可以负责虚拟机建立、迁移,网络分配、存储分配等功能的实现。以目标rs为例,当需要在openstack云平台中添加/删除目标rs时,控制节点可以接收到目标rs的添加/删除请求,再确定目标rs的导流配置数据,其中,rs的导流配置数据至少可以包括目标rs的mac地址、负载均衡器的mac地址、目标rs上待监听端口的端口号等。之后,控制节点可以基于上述目标rs的导流配置数据,通过neutronml2插件生成相应的规则添加/删除代码,进而控制节点可以继续通过neutronml2插件以rpc(远程过程调用,remoteprocedurecall)协议调用计算节点上的neutron-openvswitch-agent,在该计算节点的计算集成网桥上添加/删除对应目标rs的输入流记录规则和输出流配置规则。

本发明实施例中,计算集成网桥在转发指向与其连接的目标rs的请求报文时,根据对应目标rs的输入流记录规则,将非负载均衡器转发的请求报文的报文信息记录在预设的请求报文记录表中;计算集成网桥在转发目标rs发出的数据报文时,根据对应目标rs的输出流配置规则,将请求报文记录表中不存在对应的报文信息的数据报文转发至负载均衡器。这样,nat模式下,如果客户端不通过负载均衡器直接访问rs,请求报文的报文信息将会记录请求报文记录表中,rs的响应报文则会依据记录的报文信息,不经负载均衡器直接反馈给客户端,而如果客户端与rs处于同网段,客户端通过负载均衡器访问rs,rs的响应报文经过计算集成网桥时会被引导至负载均衡器进行转发,从而可以自动识别来自负载均衡器的报文和非负载均衡器的报文,精准的控制出入后端rs的流量转发路径,有效传输响应报文,保证了openstack云平台服务的正常实现。

基于相同的技术构思,本发明实施例还提供了一种基于openstack云平台转发报文的系统,所述系统包括至少一个计算节点和网络节点,所述计算节点包括计算集成网桥和至少一台rs,所述网络节点包括负载均衡器,其中,所述计算集成网桥,用于:

在转发指向与其连接的目标rs的请求报文时,根据对应所述目标rs的输入流记录规则,将非所述负载均衡器转发的请求报文的报文信息记录在预设的请求报文记录表中;

在转发所述目标rs发出的数据报文时,根据对应所述目标rs的输出流配置规则,将所述请求报文记录表中不存在对应的报文信息的数据报文转发至所述负载均衡器。

可选的,所述系统还包括控制节点,所述控制节点,用于:

接收目标rs的添加/删除请求,确定所述目标rs的导流配置数据;

基于所述目标rs的导流配置数据,通过neutronml2插件调用计算节点上的neutron-openvswitch-agent,在所述计算集成网桥上添加/删除对应所述目标rs的输入流记录规则和输出流配置规则。

可选的,所述计算集成网桥,具体用于:

接收指向与其连接的目标rs的请求报文,确定所述请求报文的源mac地址;

如果所述源mac地址不是所述负载均衡器的mac地址,则在预设的请求报文记录表中记录所述请求报文的五元组信息;

向所述目标rs发送所述请求报文。

可选的,所述计算集成网桥,具体用于:

如果所述源mac地址不是所述负载均衡器的mac地址,且所述请求报文的传输层协议为tcp协议,则在预设的请求报文记录表中记录所述请求报文的五元组信息。

可选的,所述计算集成网桥,具体用于:

接收所述目标rs发出的数据报文,获取所述请求报文记录表;

如果所述数据报文不是所述请求报文记录表中任一报文信息对应的响应报文,则将所述数据报文的目的mac地址设置为负载均衡器的mac地址;

根据所述数据报文的目的mac地址继续发送所述数据报文。

可选的,所述计算集成网桥,具体用于:

如果所述数据报文不是所述请求报文记录表中任一报文信息对应的响应报文,且所述数据报文的源端口为预设的待监听端口,则将所述数据报文的目的mac地址设置为负载均衡器的mac地址。

可选的,所述计算集成网桥,还用于:

在接收所述目标rs发出的数据报文之后,如果所述数据报文的目的mac地址为所述负载均衡器的mac地址,直接向所述负载均衡器发送所述数据报文。

本发明实施例提供的技术方案带来的有益效果是:

本发明实施例中,计算集成网桥在转发指向与其连接的目标rs的请求报文时,根据对应目标rs的输入流记录规则,将非负载均衡器转发的请求报文的报文信息记录在预设的请求报文记录表中;计算集成网桥在转发目标rs发出的数据报文时,根据对应目标rs的输出流配置规则,将请求报文记录表中不存在对应的报文信息的数据报文转发至负载均衡器。这样,nat模式下,如果客户端不通过负载均衡器直接访问rs,请求报文的报文信息将会记录请求报文记录表中,rs的响应报文则会依据记录的报文信息,不经负载均衡器直接反馈给客户端,而如果客户端与rs处于同网段,客户端通过负载均衡器访问rs,rs的响应报文经过计算集成网桥时会被引导至负载均衡器进行转发,从而可以自动识别来自负载均衡器的报文和非负载均衡器的报文,精准的控制出入后端rs的流量转发路径,有效传输响应报文,保证了openstack云平台服务的正常实现。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1