欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 快速和可扩展的数据库集群通信路径独创技术49235字

快速和可扩展的数据库集群通信路径

2021-04-02 00:48:52

快速和可扩展的数据库集群通信路径

  相关申请案交叉申请

  本申请要求于2015年09月21日递交的发明名称为“快速和可扩展的数据库集群通信路径”的第62/221,458号美国临时专利申请案的在先优先权,且要求作为申请日为2016年9月21日,申请号为CN201680051225.7的中国专利申请的分案,上述两件申请的内容以引入的方式并入本文。

  背景技术

  为了以安全的方式通过因特网在企业网络上连接和管理网络节点/设备(例如,路由器/交换机等),需要根据所述节点/设备提供的服务的类型来创建多个安全会话。当所述节点/设备位于网络地址转换(network address translation,NAT)/防火墙后面时,与所述节点/设备的连接和管理相关的问题越来越突出。企业NAT/防火墙需要打开多个端口以允许每个会话。随着会话数量增加,端口的数量也在增加。

  发明内容

  在一实施例中,提供一种用于在网络中传输应用净荷的方法,包括:接收与客户端上的一个或多个应用对应的一个或多个应用净荷,其中,所述应用净荷由包含传输层协议的客户端请求组成;终结所述传输层协议,并读取与当前会话相关联的应用净荷;为每个接收到的应用准备包含特定应用信息的头部信息,以插入到对应的一个应用净荷中;加密包含所述头部信息的应用净荷,以便在所述网络中通过单个虚拟通信链路传输。

  在另一实施例中,提供一种非瞬时性计算机可读介质,其中,在网络中用于传输应用净荷的计算机指令存储在所述非瞬时性计算机可读介质中,当其由一个或多个处理器执行时,所述计算机指令使得所述一个或多个处理器执行以下步骤:接收与客户端上的一个或多个应用对应的一个或多个应用净荷,其中,所述应用净荷由包含传输层协议的客户端请求组成;终结所述传输层协议,并读取与当前会话相关联的应用净荷;为每个接收到的应用准备包含特定应用信息的头部信息,以插入到对应的一个应用净荷中;加密包含所述头部信息的应用净荷,以便在所述网络中通过单个虚拟通信链路传输。

  在又一实施例中,提供了一种用于应用容器通过直接通信链路进行通信的方法,包括:建立一条或多条第一专用虚拟链路,用于在一个或多个第一应用容器之间进行直接应用容器级通信;通过所述对应的一条或多条第一专用虚拟链路在所述一个或多个第一应用容器之间传输数据,其中,所述一条或多条第一专用虚拟链路中的每一条链路在第一端与所述一个或多个第一应用容器中对应的一个连接并且在第二端与对应的虚拟输入/输出(virtual input/output,VIO)连接。

  在又一实施例中,提供了一种用于通过虚拟输入/输出将直接数据库提供到应用级通信的方法,包括:建立一条或多条第一专用虚拟链路,用于在一个或多个第一数据库实例之间进行直接应用级通信;通过所述对应的一条或多条第一专用虚拟链路在所述一个或多个第一数据库实例之间传输数据,其中,所述一条或多条第一专用虚拟链路中的每一条链路在第一端与所述一个或多个第一数据库实例中对应的一个连接。

  本发明内容用于简单介绍一些精选的概念,在下面的描述中将进一步详细阐述这些概念。本发明内容的目的不在于确定所要求保护的本发明的关键特征或必要特征,也不在于协助确定所要求保护的本发明的范围。所要求保护的本发明不限于用于解决背景技术中描述的任一或所有缺点的实现方式。

  附图说明

  本发明的方面通过举例的方式示出但不受附图的限制,附图中相同的附图标记表示相同的元件。

  图1示出了可以实现本发明各种实施例的示例性网络环境;

  图2示出了可以复用应用净荷的虚拟通信链路环境;

  图3示出了图2提供的应用加密复用(application crypto multiplexing,ACM)环境中的客户端和服务器代理;

  图4A和图4B示出了通过虚拟通信链路发送和接收净荷的流程图;

  图5示出了添加到应用客户端或应用服务器的净荷中的中介层;

  图6示出了图5的ACM头部的示例;

  图7示出了ACM数据会话状态机的状态图;

  图8A和图8B示出了在网络中传输应用净荷的示例性流程图;

  图9示出了可以实现本发明的示例性网络;

  图10示出了通过使用用于主机内通信的虚拟输入/输出接口进行的示例性容器分组通信;

  图11示出了通过使用用于主机间通信的虚拟输入/输出接口进行的示例性容器分组通信;

  图12和图13示出了使用VIO而不需要消耗TCP和相关套接字进行的直接数据库/应用级通信的各种实施例;

  图14A和图14B示出了建立用于容器和数据库实例的虚拟链路的示例性流程图;

  图15示出了本发明实施例提供的一种节点的实施例;

  图16示出了可以用于实现各种实施例的网络系统的方框图;

  图17示出了所公开的技术提供的方框图。

  具体实施方式

  本发明涉及一种用于在网络中传输应用净荷的技术:接收与客户端上的一个或多个应用对应的一个或多个应用净荷,其中,所述应用净荷由包含传输层协议的客户端请求组成;终结所述传输层协议,并读取与当前会话相关联的应用净荷;为每个接收到的应用准备包含特定应用信息的头部信息,以插入到对应的一个应用净荷中;加密包含所述头部信息的应用净荷,以便在所述网络中通过单个虚拟通信链路传输。

  应当理解,本发明可以以多种不同的方式实现,并且不应被解释为限于本文所阐述的实施例。相反,提供这些实施例将使得本发明是彻底和完整的,并将向本领域技术人员充分传达本发明。实际上,本发明旨在涵盖这些实施例的替代、修改和等同物,这些实施例包含在由所附权利要求限定的本发明的范围和精神内。另外,在以下本发明的详细描述中阐述了许多特定细节,以便透彻理解本发明。然而,本领域普通技术人员应认识到无需这些具体的细节即可实现本发明。

  所公开的技术通常提供“多对一”集成代理和隧道解决方案,其在应用净荷与传输控制协议(transmission control protocol,TCP)/安全套接层(secure socket layer,SSL)头部之间添加中介层,其中,状态机可以用于控制会话。

  可以基于网络节点/设备的位置使用客户端或服务器来实现这种集成代理和隧道解决方案。所述网络节点/设备示例性地包括但不限于本领域普通技术人员查看本发明所理解的路由器、交换机、WiFi设备、物联网(Internet of Things,IOT)设备或任何物理和虚拟设备。

  根据下面的讨论显而易见的是,所公开的技术可以为安全服务提供单点。例如,应用可以将加密责任委托给设备,而所述设备可以在所述设备与控制器之间建立信道并交换加密数据,从而在设备之间提供安全连接。在服务器端提供了一种加密服务器来实现所公开的技术,并且在客户端提供了一种加密客户端功能来实现所公开的技术。通信信道可以认证并提供消息完整性、用户认证以及机密性。所述通信信道还可以支持标准对称/非对称加密功能,并且能够在NAT/防火墙后面建立安全信道。

  图1示出了可以实现本发明各种实施例的示例性网络环境。所述网络环境100包括,例如客户端102、服务器104、SDN控制器112以及管理员114。通常,SDN涉及执行一组网络设备的控制功能的独立控制器的使用。作为软件定义网络的示例,在路由的情况下,不是执行个别分析的路由器通过所述网络确定路由,所述控制器可以确定所述路由并且使所述网络中的其他设备根据所述控制器的决定来运行。可以使用不同的协议来实现软件定义网络,包括OpenFlow等开放协议,以及来自网络提供商的私有协议。

  在所描绘的实施例中,所述SDN 106包括网络节点108和110以及服务设备116。网络节点108和110可以包括交换机和其他设备(未示出)。这些网络节点108和110可以是通常用于转发网络业务的物理实例化或虚拟实例化。尽管未示出,SDN 106还可以包括其他类型的设备,例如其他网络设备中的路由器、负载均衡器以及各种L4-L7网络设备。

  SDN 106可以连接如客户端102和服务器104等各种端点设备。另外,SDN 106可以向在客户端设备102与服务器设备104之间流动的网络业务提供服务。在一实施例中,管理员114可以使用SDN控制器112编程SDN 106的网络设备以将客户端102的网络业务传送到一个或多个服务设备116。

  服务设备116可以包括,例如入侵检测服务(intrusion detection service,简称IDS)设备、入侵防御系统(intrusion prevention system,IPS)设备、网页代理、网页服务器、网页应用防火墙等。在其他示例中,服务设备116可以另外或可选地包括用于提供服务的设备,如拒绝服务(denial of service,DoS)保护、分布式拒绝服务(distributeddenial of service,DDoS)保护、业务过滤、广域网(wide area network,WAN)加速或其他此类服务。

  尽管示出的是单独的设备,但是应当理解,服务设备116可以是物理设备、多租户设备或虚拟服务(例如,基于云的服务),并且可以轻易应用于除了物理设备以外的虚拟设备和基于云的应用。

  图2示出了可以复用应用净荷的虚拟通信链路环境。所述环境200,此处也称为应用加密复用(application crypto multiplexing,ACM)环境200包括,例如虚拟通信链路202、客户端代理204、应用客户端206、服务器代理208以及应用服务器210。

  虚拟通信链路(例如虚拟隧道)允许两个不能直接相互寻址的计算机程序(例如,客户端和服务器应用)运行。例如,当应用客户端206的客户端应用需要连接到远程站点处的应用服务器210的服务器应用时,所述服务器应用210可以位于客户或合作者不可寻址的本地网络(例如,在防火墙后)中的计算机上。此时,所述应用客户端206将不能直接地对所述应用服务器210进行寻址。因此,所述虚拟通信链路使得应用客户端206可以访问所述应用服务器210,反之亦然。

  在所公开的技术的实施例中,所述虚拟通信链路202允许应用客户端206和/或应用服务器210上的一个或多个应用通过复用和/或解复用应用客户端206和/或应用服务器210上的所述应用的净荷来共享单个通信信道(例如,虚拟通信链路或隧道),以处理来自同一设备的业务。

  更具体地,所述客户端代理204和服务器代理208(以下参照图3解释)与虚拟通信链路202可以在信道的每一端集成或组合,通过复用和/或解复用所述应用客户端206和应用服务器210的净荷来形成单个套接接口,以使用如加密虚拟隧道(virtual tunnel,VT)等虚拟通信链路202进行通信。

  在一实施例中,可以通过将ACM头部添加到承载特定应用信息的特定应用的净荷中来实现所述复用和/或解复用。下面参照图5和图6对头部进行更详细地的说明。

  所述应用客户端206可以包括如网络配置协议(Network ConfigurationProtocol,NETCONF)插件的第一客户端应用206A、如简单网络管理协议(Simple NetworkManagement Protocol,SNMP)插件的第二客户端应用206B和/或如无线接入点控制协议(Control and Provisioning of Wireless Access Points,CAPWAP)插件的第三客户端应用206C。这些插件可用于设备的远程配置,并允许将业务模式无缝地添加到组成所述网络的现有网络设备中。也就是说,并不是部署业务生成器来战略性地将业务模式引入到所述网络的各个点,而是封装所需的业务模式并通过插件传送到所述网络的现有网络设备中,否则,这些插件将被用来操纵所述网络设备的数据配置。

  例如,NETCONF提供用于配置网络设备的机制,并且针对配置数据采用基于可扩展标记语言(Extensible Markup Language,XML)的数据编码,其可以包括策略数据;SNMP允许设备管理系统遍历并修改管理信息库(management information base,MIB),其中,所述管理信息库在管理的元素内存储配置数据;CAPWAP是用于通过所述虚拟通信链路在任何网状节点与所述控制器之间交换消息的协议,最初针对所谓的轻量级接入点进行设计。

  所述客户端代理204包括加密客户端204A,其通过套接字(参见图3的解释)分别可操作地耦合到第一、第二和第三客户端应用206A、206B和206C。

  类似于所述应用客户端206,所述应用服务器210可以包括如NETCONF插件的第一服务器应用210A、如SNMP插件的第二服务器应用210B和/或如CAPWAP插件的第三服务器应用中的一个或多个,其通过套接字可操作地耦合到所述应用加密服务器。

  所述服务器代理208包括加密服务器208A,其通过套接字(参见图3的解释)分别可操作地耦合到第一、第二和第三客户端应用210A、210B和210C。

  相应地,所述ACM环境200允许SDN控制器,如SDN控制器112使用如公共云或因特网等网络来与诸如网络节点108和110等网络设备进行通信并管理所述网络设备。通过采用公开的所述ACM环境200,防火墙可以无需打开多个端口来支持多个应用。相反,所述ACM环境200使SDN控制器112可以轻易地管理多个应用。所述ACM环境200还可以减少TCP代理会话开销和隧道净荷开销,并且可以用于在同一设备上运行了不同应用的控制面业务。

  所述ACM环境200与其他加密技术不同。例如,因特网密钥交换(Internet keyexchange,IKE)/因特网协议安全(Internet protocol security,IPSEC)等其他技术使用基于层3的隧道技术和基于层4的SSL技术。这些技术针对每个应用采用一个会话。

  图3示出了图2提供的ACM环境中的客户端和服务器代理。所述ACM环境300包括,例如虚拟通信链路202,如与客户端代理204和服务器代理208通信耦合的加密虚拟隧道。

  所述客户端代理204包括会话管理器302A、MUX/DEMUX 306A、传输层安全(transport layer security,TLS)/数据报TLS(datagram TLS,DTLS)客户端304A、NETCONF客户端(会话1)310A以及SNMP客户端(会话2)312A。类似地,所述服务器代理208包括会话管理器302B、MUX/DEMUX 306B、传输层安全(transport layer security,TLS)/数据报(datagram TLS,DTLS)客户端304B、NETCONF客户端(会话1)310B以及SNMP客户端(会话2)312B。

  所述会话管理器302A可以实现所述应用客户端206(图2)与所述客户端代理204之间透明安全且开放的通信。在一实施例中,会话管理器302A可以执行加密会话处理,包括管理加密会话握手,并管理密钥、证书、认证、授权等。此外,会话管理器302A可以在一实施例中建立加密的会话和/或连接,终结加密的会话和/或连接,并将其自身建立为加密的会话和/或连接的中间人等。

  所述NETCONF客户端1(会话1)310A和所述SNMP客户端2(会话2)312A通过套接字通信耦合到所述会话管理器302A。类似地,所述NETCONF服务器1(会话1)310B和所述SNMP服务器2(会话2)312B通过套接字通信耦合到所述会话管理器302B。

  客户端代理204上的所述MUX/DEMUX 306A可以用于通过复用应用净荷将所述应用净荷从应用客户端206上的多个套接字路由到客户端代理204上的单个套接字。复用的所述应用净荷可以通过虚拟通信链路202传输到所述代理服务器208,然后传送到所述应用服务器210。在一实施例中,所述MUX/DEMUX 306A用于通过单个安全连接(例如,虚拟通信链路202)将应用净荷从所述客户端代理204传输到所述应用服务器210上对应的多个套接字(在所述服务器代理208处进行解复用后)。

  类似地,客户端代理204上的MUX/DEMUX 306A可以用于使用客户端代理204上的单个套接字从所述虚拟通信链路202接收应用净荷。从应用服务器210接收的所述应用净荷可以由所述MUX/DEMUX 306A解复用为离散的应用净荷,并且每个离散的应用净荷可被传输到所述应用客户端206上对应的一个或多个套接字。在一实施例中,所述MUX/DEMUX 306A用于通过从所述服务器代理204到所述应用客户端206上对应的多个套接字的单个安全连接(例如,虚拟通信链路202)接收应用净荷。

  如下所述,所述MUX/DEMUX 306A还负责准备ACM头部信息并将所述ACM头部信息添加到所述应用净荷中。

  此处所使用的术语套接字是指端口、缓冲器、逻辑节点或对象,用于通过网络连接从远程设备接收任何格式的数据,如HTTP格式。所述MUX/DEMUX 306B可以以类似的方式配置。

  为了确保所述虚拟通信链路202上的通信,可以采用TLS/DTLS客户端304A(客户端代理)和304B(服务器代理)。所述TLS/DTLS客户端304A和304B负责加密/解密所述复用/解复用的应用净荷。所述TLS协议主要旨在提供两种通信计算机应用之间的隐私和数据完整性。将TLS设计为在如TCP等传输协议之上且在如HTTP等应用层之下运行。为了建立一个加密型安全数据通道,连接对等体必须在将使用的密码集和用于加密数据的密钥上达成一致。TLS也适用于运行数据报协议,如用户数据报协议(User Datagram Protocol,UDP)。数据报TLS(datagram TLS,DTLS)是基于TLS的协议,能够保护如UDP等数据报传输,并且很适合隧道应用,例如通向网状网络中的控制器的CAPWAP隧道。

  图4A和图4B示出了通过虚拟通信链路上发送和接收净荷的流程图。此处描述的过程通过如图3所示的所述客户端代理204和服务器代理208来实现。然而,应当理解,任何网络组件或元件都可以执行这种实现方式,而所公开的实施例是非限制性示例。

  具体地,图4A示出了向服务器发送客户端数据的流程图。客户端310A和/或客户端312A创建TCP/UDP客户端请求并将应用数据(例如,净荷)发送到客户端代理204。在402A,所述客户端代理204通过会话管理器302A接收所述应用数据。此时,所述会话管理器302A终结所述TCP连接并从本地会话读取所述应用数据并获取会话信息。管理所述状态(图7)和会话,并将会话细节发送到MUX/DEMUX 306A。

  在404A,所述MUX/DEMUX 306A准备ACM头部并将所述ACM头部添加到所述应用数据(净荷)中。以下结合图5和图6详细描述所述ACM头部和应用净荷。

  在406A,所述TLS/DTLS客户端304A负责加密/解密所述数据(应用数据+ACM头部),并通过虚拟通信链路202将所述应用数据发送到所述应用服务器210。

  在412A,所述服务器代理208通过所述虚拟通信链路202接收所述加密/解密的数据(应用+ACM头部)。在410A,所述MUX/DEMUX 306B向所述净荷添加/去除所述ACM头部。

  在408A,所述服务器代理208上的会话管理器302B然后从所述MUX/DEMUX 306B读取所述应用数据,并与所述应用服务器210创建/管理本地会话。然后,所述应用数据通过所述会话的安全套接字发送到所述应用服务器210,并且客户端310B和/或312B读取所述请求并准备应用响应。

  图4B示出了向客户端发送服务器数据的流程图。响应于图4A的所述客户端请求,所述服务器1 310B和/或服务器2 312B准备应用响应。在402B,所述会话管理器302B从应用服务器210读取应用数据(例如,净荷),并为所述会话信息创建/管理记录。然后,所述会话管理器302B将所述会话信息和应用数据发送到MUX/DEMUX 306B。

  在404B,MUX/DEMUX 306读取所述会话信息和应用数据,并准备要向所述应用数据(净荷)添加/去除的ACM头部。在406B,TLS/DTLS服务304B加密所述应用数据(应用+ACM头部),并且通过客户端代理204和虚拟隧道链路202将加密的所述应用数据发送到所述应用客户端206。

  当代理客户端204的所述TLS/DTLS客户端304A接收到所述加密的应用数据时,则在408B解密所述应用数据(应用+ACM头部),且在410B,所述MUX/DEMUX 306A从所述应用数据(净荷)中去除所述ACM报头,并将解密的所述应用数据发送到会话管理器302A。然后,所述会话管理器302A从MUX/DEMUX 306A读取所述应用数据,并将所述应用数据发送到客户端1 310A和/或客户端2 312A的对应套接字,其中,所述响应是从所述应用服务器210接收到的。

  图5示出了添加到应用客户端或应用服务器的净荷中的中介层。示出的所述垫片层被添加到开放系统互连(open systems interconnection,OSI)层502的层4和层7之间。该图还示出了三个净荷,包括:NETCONF净荷502A、SNMP净荷502B以及CAPWAP净荷502C。

  如图所示,层3(IP)是构建和管理多节点网络的分组层,包括寻址、路由以及业务控制。层4(TCP/UDP)是负责在网络中的点之间传输数据段的传输层,包括分段、确认以及复用。层5和/或层6可以包括作为管理通信会话的表示层(层6)和会话层(层5)一部分的添加的中介层,如在两个节点之间以多次前后传输的形式连续交换信息。层7(NETCONF/SNMP/CAPWAP)是包含高层API的应用层,包括资源共享和远程文件访问。

  图6示出了图5的ACM头部的示例。所述ACM头部包括,例如ACM版本字段、ACM操作(Op)类型字段、安全会话控制字段、应用会话/源端口字段、应用标识符(identifier,ID)字段以及净荷长度字段。应当理解,所示出的头部是头部配置的非限制性示例,并且可以实现任何变体。

  所述ACM头部中定义的字段的大小和信息类型可以变化。作为示例,在一个非限制性实施例中,所述ACM版本字段可以是4比特并且可以指示初始版本;所述ACM Op类型字段可以是4比特并且可以指示操作类型;所述安全会话控制字段可以是2字节并且指示安全会话控制类型;所述应用会话/源端口字段可以是2字节并且可以指示会话ID或源端口;所述应用ID字段可以是2字节并且可以指示应用TCP、UDP ID或目的端口;所述净荷长度字段可以是2字节并且可以指示净荷的大小。

  净荷可以被配置为以下信息类型中的任何一种或多种:ACM hello请求、ACMhello响应、ACM确认、ACM数据或数据传输、ACM服务更新、ACM服务更新确认、ACM健康统计请求、ACM健康统计响应、ACM控制/警报/错误、ACM心跳请求和/或ACM心跳响应。

  图7示出了ACM数据会话状态机的状态图。所述ACM数据会话状态机包括初始状态702、数据写入状态704/710、数据读取状态706/712,以及会话关闭状态708。如图7所示,数据操作状态可以根据以下内容定义:会话启动事件(CE)-11、读数据/写数据事件(DRWS)-01、读数据/写数据结束事件(DRWE)-10,以及会话关闭事件(CT)-00。

  图8A和图8B示出了在网络中传输应用净荷的示例性流程图。参见图8A,在802,例如由代理客户端204接收一个或多个应用净荷502A、502B和502C,其中,所述一个或多个应用净荷502A、502B和502C分别对应于应用客户端206上的一个或多个应用206A、206B和206C,且所述应用净荷由包含如TCP或UDP等传输层协议的客户端请求组成。

  在804,例如由会话管理器302A终结在所述代理客户端204上接收到的所述应用净荷,并且针对当前会话读取所述应用净荷。

  在806,MUX/DEMUX 306A为每个接收到的应用准备包含特定应用信息的头部信息,以插入到对应的一个应用净荷中。在808,所述TLS/DTLS客户端304A加密包含所述头部信息的应用净荷,以便在所述网络中通过单个虚拟通信链路202传输。

  参见图8B,可以复用所述一个或多个应用净荷,包括插入到所述应用净荷中的头部信息,以共享单个通信信道(即,虚拟通信链路)。

  在812,通过共享的通信链路传输复用的所述应用净荷。在到达终点(例如,服务器代理208)时,解复用(并解密)所述应用净荷,使得应用服务器210可以在814响应来自所述客户端的请求。

  图9示出可以实现本发明的示例性网络。所述网络900包括云902、网络906、云提供商908以及客户端914A和914B至914N。

  云902包括一个或多个主机904至904N(统称为904N),其中,每个主机904N包括一个或多个节点904N1。在一实施例中,所述节点904N1是位于物理机上的虚拟机(virtualmachine,VM),如通过主机904N的主机904。在另一实施例中,所述主机904N可以位于数据中心。例如,所述一个或多个节点904N1位于由云提供商908提供的云902上的物理机904N上。当位于主机904N上时,用户可以与一个或多个应用(例如应用904N1-2和904N1-3)进行交互,使用如客户端914A和914B至914N等客户端计算机系统在所述一个或多个节点904N1上执行。在一实施例中,在不使用VM的情况下,所述应用904N1-2和904N1-3可以位于主机904N上。如上所述,所述一个或多个节点904N1执行可由不同用户和/或组织拥有或管理的一个或多个应用904N1-2和904N1-3。例如,客户可以部署应用904N1-2和904N1-3,其中,所述应用904N1-2和904N1-3可以与位于第一客户应用的相同或不同节点904N上的另一客户应用共存。在一实施例中,在不同节点904N上执行部分或单独的应用904N1-2和904N1-3。

  在一实施例中,如本领域技术人员所理解的,用于执行应用904N1-2和904N1-3的数据包括由预先存在的应用组件所构建的应用镜像和管理所述应用904N1-2和904N1-3的用户的源代码。在SDN和容器网络场景中的镜像是指表示可执行应用文件的数据,用于为所述应用的运行时间实例部署功能。在一个示例中,使用Docker工具构建镜像,也称为Docker镜像。如下面所解释的,尽管Docker桥不被排除使用,但在实施本发明各种实施例中将不需要使用Docker桥。

  所述一个或多个节点904N1-2和904N1-3可以通过启动应用镜像的实例作为一个或多个节点904N1-2和904N1-3中的容器904N1-2A、904N1-2B、904N1-3A和904N1-3B以执行应用。一个或多个节点904N1-2和904N1-3中的容器904N1-2A、904N1-2B、904N1-3A和904N1-3B可以实现所述应用904N1-2和904N1-3的功能。

  容器904N1-2A、904N1-2B、904N1-3A和904N1-3B可以实现操作系统级虚拟化,其中,在主计算机(未示出)上的操作系统的内核上提供抽象层。所述抽象层支持,例如多个容器,其中,每个容器包括应用及其相关内容。每个容器可以作为所述操作系统上的独立进程执行,并与其他容器共享所述内核。所述容器依靠内核功能来利用资源隔离(CPU、内存、块I/O、网络等)和单独的命名空间,并完全隔离操作环境的应用视图。通过使用容器,可以隔离资源,使得业务受限,并且进程被配置为具有含各自进程ID空间、文件系统结构以及网络接口的操作系统的私有视图。多个容器可以共享相同的内核,但是可以限制每个容器仅使用特定量的资源,例如CPU、内存和I/O。

  客户端914A和914B至914N可以通过网络906连接到云提供商908提供的云902上的主机904N,其中,所述网络906可以是私网(例如,局域网(local area network,LAN)、广域网(wide area network,WAN)、内联网或其他类似的私网)或公网(例如,因特网)。每个客户端914A和914B至914N可以是移动设备、PDA、便携式计算机、台式计算机、平板计算设备、服务器设备或任何其他计算设备。每个主机904N可以是服务器计算机系统、台式计算机或任何其他计算设备。

  虽然根据上述网络描述了各种实施例,但是本领域技术人员可以理解的是所述网络是非限制性示例,并且可以以各种其他配置来实现,包括单个整体式计算机系统,以及以各种方式连接的计算机系统或类似设备的各种其他组合。

  图10示出了通过使用用于主机内通信的虚拟输入/输出接口进行的示例性容器分组通信。在传统的SDN中,容器从例如指定的注册表收集到的应用镜像中产生。当容器被(通常由守护进程)实例化时,向所述容器分配唯一的网络地址,其将所述容器连接到虚拟以太网网桥,例如Docker网桥。所述系统中的所有容器通过将数据包传送到Docker网桥来进行通信,然后通过容器网络转发这些数据包。然而,所述容器与重型网桥端口中的每个端口通信,并且利用开放的vSwitch(OVS)和/或linux内核网桥机制。

  在其他实施例中,容器1002、1004和1006可以利用如操作系统级虚拟化的服务器虚拟化方法,其中,操作系统的内核允许实现多个隔离的用户空间实例。一些实例可以包括但不限于容器、虚拟化引擎(virtualization engine,VE)、虚拟专用服务器(virtualprivate server,VPS)、Jail或区域,和/或其任何混合式组合。容器1002、1004和1006的一些示例性可用技术包括chroot、Linux-VServer、lmctfy(“让我容纳你的程序”)、LXC(Linux容器)、OpenVZ(开放的Virtuozzo)、Parallels Virtuozzo容器、Solaris容器(和Solaris区域)、FreeBSD Jail、sysjail、WPAR(工作负载分区)、HP-UX容器(安全资源分区,SRP)、iCore虚拟帐户以及Sandboxie。

  根据所公开的技术,通过虚拟输入/输出(virtual input/output,VIO)1010A/B(或输入/输出虚拟化(input/output virtualization,IOV))实现直接容器级通信。在VIO中,单个物理适配器卡作为多个虚拟网络接口卡(network interface card,NIC)和虚拟主机总线适配器(host bus adapter,HBA)。这些VIO 1010A/B可以被加载到所述主机1008上(如图10所示),并且包括VIO软件和/或硬件,其可以用于控制通过如专用链路等所述通信链路1-6从容器1002、1004和1006输入和输出的数据包。每个VIO 1010A/B可以直接将所述数据包复用和解复用到其他容器1002、1004和1006中,从而解决主机内容器通信的限制。这种配置可以易于部署和扩展,并降低通信开销。

  参见图10,实现了直接容器层级通信,其中,容器1002、1004和1006通过与主机1008连接的VIO 1010A/B使用通信链路1-6互相通信耦合。在一实施例中,每个容器1002、1004和1006可以包括连接到对应的一个或多个VIO 1010A/B的虚拟网络接口卡(virtualnetwork interface,vNIC),而不需要使用网桥来支持其间的通信。还应当理解,所述VIO1010A/B可以使用网桥或OVS发送数据包。

  作为示例,假设容器1002、1004和1006包括专用链路1、2、3和6(为了讨论的目的,假设不存在链路4和5)。所述容器1002、1004和1006中的每一个在相应的容器与VIO之间建立专用虚拟链路。因此,容器1002在容器1002与VIO 1010A之间形成链路(1),在容器1002与VIO 1010B之间形成链路(6);容器1004在容器1004与VIO 1010A之间形成链路(2);容器1006在容器1006与VIO 1010B之间形成链路(3)。

  图11示出了通过使用用于主机间通信的虚拟输入/输出接口进行的示例性容器分组通信。主机间实例包括容器1102、1104、1106、1108、1110和1112,其与对应的主机1114和主机1116中的VIO 1122A/B通信耦合。类似于图10中的描述,所述容器通过所述VIO 1122A/B建立用于直接应用级通信的专用虚拟链路。可以直接使用输入队列等将所述专用虚拟链路复用到一条或多条物理链路1120上。

  所述物理链路1120启动每一个主机,例如主机1114和主机1116。所述物理网络接口1120可以是网络I/O设备,其为任何形式的I/O虚拟化(IOV)提供硬件、软件或其组合等方面的支持。所述IOV设备示例性包括但不限于符合PCI-SIG的SR-IOV设备和非SR-IOV设备、符合PCI-SIG的MR-IOV设备、多队列NIC、I/O适配器、聚合网卡以及聚合网络适配器(converged network adapter,CNA)。

  在一个示例性实施例中,假设在容器与VIO之间的主机1114和主机1116中的每个主机上存在三条专用虚拟链路。在主机1114中,容器1102创建链路1,容器1104创建链路2,容器1106创建链路3。在主机1116中,容器1108创建链路4,容器1110创建链路5,容器1112创建链路6。在主机1114内,可以将从容器1102、1104和1106传输到VIOS 1122A/B的信息复用到一条或多条物理链路1120上,以便传输到主机1116上。应当理解,任何一个或多个容器的信息可以被复用和/或传输到一条或多条物理链路上。在主机1116上,接收到的传输信息可以被解复用并发送到相应的一个或多个容器1108、1110和1112。

  图12和图13示出了使用VIO而不需要消耗TCP和相关套接字进行的直接数据库/应用级通信的各种实施例。可以将一个或多个实施例标准化以用于数据库(database,DB)使用的通用应用编程接口(application programming interface,API)。通过VIO的直接DB/应用级通信可以易于实施和扩展,并降低通信开销。

  根据所公开的技术,通过虚拟输入/输出(virtual input/output,VIO)1210A/B(或输入/输出虚拟化)实现直接DB实例级通信。在VIO中,单个物理适配器卡作为多个虚拟网络接口卡(network interface card,NIC)和虚拟主机总线适配器(host bus adapter,HBA)。这些VIO 1210A/B可以被加载到所述主机1208上,并且包括VIO软件和/或硬件,其可以用于控制通过如专用链路等所述通信链路1-6从DB实例1202、1204和1206输入和输出的数据包。每个VIO 1210A/B可以直接将所述数据包复用和解复用到其他DB实例1202、1204和1206中,从而解决主机内实例通信的限制。这种配置可以易于部署和扩展,并降低通信开销。

  具体地,图12示出了通过使用用于主机内通信的虚拟输入/输出接口进行的示例性数据库实例通信。可以理解的是,数据库(database,DB)实例是访问一组数据库文件的一组内存结构和后台进程。该进程可以由所有用户共享。

  实现了DB实例级通信,其中,DB实例1202、1204和1206通过与主机1208连接的VIO1210A/B使用通信链路1-6互相通信耦合。在一实施例中,每个容器1202、1204和1206可以包括连接到对应的一个或多个VIO 1210A/B的虚拟网络接口卡(virtual networkinterface,vNIC),而不需要使用网桥来支持其间的通信。还应当理解,所述VIO 1210A/B可以使用网桥或OVS发送数据包。

  作为示例,假设容器1202、1204和1206包括专用链路1、2、3和6(为了讨论的目的,假设不存在链路4和5)。所述DB实例1202、1204和1206中的每一个在相应的容器与VIO之间建立专用虚拟链路。因此,DB实例1202在DB实例1202与VIO 1210A之间形成链路(1),在DB实例1202与VIO 1210B之间形成链路(6);DB实例1204在DB实例1204与VIO 1210A之间形成链路(2);DB实例1206在DB实例1206与VIO 1210B之间形成链路(3)。

  图13示出了通过使用用于主机间通信的虚拟输入/输出接口进行的示例性DB实例分组通信。所述主机间实例包括实例1302、1304、1306、1308、1310和1312,其与对应的主机1314和主机1316中的VIO 1322A/B通信耦合。类似于图12中的描述,所述DB实例通过所述VIO1322A/B建立用于直接应用级通信的专用虚拟链路。可以无需TCP套接字而直接使用输入队列等将所述专用虚拟链路复用到一条或多条物理链路1320上。

  所述物理链路1320启动每一个主机,例如主机1314和主机1316。所述物理网络接口1320可以是网络I/O设备,其为任何形式的I/O虚拟化(IOV)提供硬件、软件或其组合等方面的支持。所述IOV设备示例性包括但不限于符合PCI-SIG的SR-IOV设备和非SR-IOV设备、符合PCI-SIG的MR-IOV设备、多队列NIC、I/O适配器、聚合网卡以及聚合网络适配器(converged network adapter,CNA)。

  在一个示例性实施例中,假设在DB实例与VIO之间的主机1314和主机1316的每个主机上存在三条专用虚拟链路。在主机1314中,DB实例1302创建链路1,DB实例1304创建链路2,DB实例1306创建链路3。在主机1316中,DB实例1308创建链路4,DB实例1310创建链路5,DB实例1312创建链路6。在主机1314内,可以将从DB实例1302、1304和1306传输到VIOS1322A/B的信息复用到一条或多条物理链路1320上,以便传输到主机1316上。应当理解,任何一个或多个DB实例的信息可以被复用和/或传输到一条或多条物理链路上。在主机1116上,接收到的传输信息可以被解复用并发送到相应的一个或多个DB实例1308、1310和1312。

  图14A和图14B示出了建立用于容器和数据库实例的虚拟链路的示例性流程图。参见图14A,该流程图涉及通过直接通信链路进行通信的应用容器。在1402,建立一条或多条第一专用虚拟链路1-6(例如,由各个容器1002、1004和1006建立),用于在一个或多个第一应用容器之间进行直接应用容器级通信。然后,在1404,可以通过所述对应的一条或多条第一专用虚拟链路1-6在所述一个或多个第一应用容器1002、1004和1006之间传输数据,其中,所述一条或多条第一专用虚拟链路1-6中的每一条链路在第一端与所述一个或多个第一应用容器1002、1004和1006中对应的一个连接并且在第二端与对应的虚拟输入/输出(virtual input/output,VIO)连接。

  参见图14B,该流程图涉及通过虚拟输入/输出(virtual input/output,VIO)将直接数据库提供到应用级通信。在1406,建立一条或多条第一专用虚拟链路1-6(例如,由各个DB实例1202、1204和1206建立),用于在一个或多个第一DB实例1202、1204和1206之间进行直接应用级通信。然后,在1408,可以通过所述对应的一条或多条第一专用虚拟链路1-6在所述一个或多个第一DB实例1202、1204和1206之间传输数据,其中,所述一条或多条第一专用虚拟链路1-6中的每一条链路在第一端与所述一个或多个第一DV实例1202、1204和1206中对应的一个连接并且在第二端与对应的虚拟输入/输出(virtual input/output,VIO)连接。

  图15示出了本发明实施例提供的一种节点的实施例。所述节点可以是,例如节点108和110(图1)或网络中所描述的任何其他节点或路由器。所述节点1500可以包括多个输入/输出端口15110/1530和/或用于从其他节点接收和发送数据的接收器(Rx)1512和发送器(Tx)1532、处理系统或处理器1520(或内容感知单元),包括存储器1522和可编程内容转发面1528,以处理数据并确定哪个节点发送所述数据。如上所述,所述节点1500还可以接收应用数据(净荷)。

  尽管示出的是单个处理器,但所述处理器1520不限于此,并且可以包括多个处理器。所述处理器1520可以实现为一个或多个中央处理单元(central processing unit,CPU)芯片、内核(例如,多核处理器)、现场可编程门阵列(field programmable gatearray,FPGA)、专用集成电路(application-specific integrated circuit,ASIC)和/或数字信号处理器(digital signal processor,DSP),和/或可以是一个或多个ASIC的一部分。所述处理器1520可以用于执行实施例中描述的任一或组合的步骤来实现本文描述的任一方案,如图4A/图4B、图8和图14所示的过程。此外,所述处理器1520可以使用硬件、软件或其组合来实现。

  所述存储器1522(或内存)可以包括缓存1524、长期存储器1526以及数据库集群通信模块1528,并且可以用于存储路由表,转发表或本文公开的其他表或信息。虽然示出的是单个存储器,所述存储器1522可以实现为只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)或辅助存储器(例如,用于非易失性数据存储的一个或多个磁盘或磁带机)。

  所述数据库集群通信模块1528的引入对节点1500的功能提供了改进。所述数据库集群通信模块1528还能将节点1500转换到不同状态。或者,所述数据库集群通信模块1528实现为存储在所述处理器1520中的指令。

  图16示出了可以用于实现各种实施例的网络系统的方框图。特定设备可以利用所示的所有组件,或者仅使用组件的子集,且集成度可以随设备而变化。此外,设备可以包含组件的多个实例,如多个处理单元、处理器、内存、发送器、接收器等。所述网络系统可以包括配备有一个或多个输入/输出设备的处理单元1601,如网络接口、存储接口等。所述处理单元1601可以包括连接到总线的中央处理单元(central processing unit,CPU)1610、内存1620、大容量存储设备1630以及I/O接口1660。所述总线可以是包括内存总线或内存控制器、外围总线等任何类型的几种总线架构中的一种或多种。

  所述CPU 1610可以包括任何类型的电子数据处理器。所述内存1620可以包括任何类型的系统内存,例如静态随机存取存储器(static random access memory,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步DRAM(synchronous DRAM,SDRAM)、只读存储器(read-only memory,ROM)或其组合等。在一实施例中,所述内存1620可以包括启动时使用的ROM,以及用于在执行程序时使用的用于存储程序和数据的DRAM。在实施例中,所述内存1620是非暂时性的。所述大容量存储设备1630可以包括任何类型的存储设备,用于存储数据、程序和其他信息并且使数据、程序和其它信息通过总线可访问。所述大容量存储设备1630可以包括,例如固态驱动器、硬盘驱动器、磁盘驱动器、光盘驱动器等中的一个或多个。

  所述处理单元1601还包括一个或多个网络接口1650,其可以包括如以太网电缆等有线链路,和/或通向接入节点或一个或多个网络1680的无线链路。所述网络接口1650允许所述处理单元1601通过所述网络1680与远程单元通信。例如,所述网络接口1650可以通过一个或多个发送器/发送天线和一个或多个接收器/接收天线提供无线通信。在一实施例中,所述处理单元1601耦合到局域网或广域网,用于数据处理以及与远程设备的通信,如其他处理单元、因特网、远程存储设施等。

  图17示出了所公开的技术提供的方框图。接收/发送模块1702接收并发送与客户端上的一个或多个应用对应的一个或多个应用净荷。终结模块1704终结传输层协议,并读取与当前会话相关联的应用净荷。准备模块1706为每个接收到的应用准备包含特定应用信息的头部信息,以插入到对应的一个应用净荷中。加密/解密模块1708加密/解密包含所述头部信息的应用净荷,以便在所述网络中通过单个虚拟通信链路传输。复用/解复用模块1710复用/解复用所述应用净荷,使得其可以通过单个通信信道(虚拟通信链路)传输。最后,虚拟I/O模块1712允许应用容器使用主机上的虚拟输入/输出(virtual input/output,VIO)互相直接通信。所公开的技术提供来自同一设备的多个安全应用,其具有复用/解复用且通过单个加密信道传输的应用净荷。该技术具有的一个或多个优点包括但不限于:不产生会话建立开销和隧道开销、减少TCP代理会话开销和隧道净荷开销、可用于并且可以用于在同一设备上运行了不同应用的控制面业务、减少安全会话建立的次数(不对称和对称)、通过公共云或因特网实现SDN控制器与网络设备的通信、通过单个加密会话复用多个应用、防火墙不需要打开多个端口来支持多个应用、通过因特网/云管理网络设备(路由器/交换机/WiFi/IOT)、可轻易管理Netconf/SNMP和Capwap等多种应用。

  所公开的技术的其他实施例有利地提供以下非限制性优点:当缩短端到端通信路径时,VIO降低了通信延迟,从而提高了数据库的整体性能;并且VIO可以减少数据库实例之间的并发连接总数,其中,通常对一个服务器可以建立并发送数据消息的TCP连接数量有一个严格的限制。这将提高数据库集群的可扩展性,也意味着可以将更多的数据库实例放入数据库集群,并且所述数据库集群可以同时处理更多的查询。这也将提高整体的数据库系统性能。

  根据本发明的各种实施例,本文所描述的方法可以通过执行软件程序的硬件计算机系统来实现。此外,在非限制性实施例中,实现可以包括分布式处理、组件/对象分布式处理以及并行处理。可以构造虚拟计算机系统处理来实现本文所述的一个或多个方法或功能,并且本文描述的处理器可以用于支持虚拟处理环境。

  此处,结合本发明实施例的方法、装置(系统)以及计算机程序产品的流程图和/或方框图描述本发明的各方面。应当理解,流程图和/或方框图的每个框以及流程图和/或方框图中的框的组合可以由计算机程序指令来实现。可以将这些计算机程序指令提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,以生成机制,使得这些通过计算机或其他可编程指令执行装置的处理器所执行的指令创建实现所述流程图和/或方框图中的一个或多个方框所指定的功能/动作的机制。

  这里所使用的术语仅用于描述特定方面,而非旨在限制本发明。除非上下文中另有明确说明,此处使用的单数形式“一个”和“所述”包括复数含义。应进一步了解,术语“包括”和/或“包含”用于说明存在所述特征、整体、步骤、操作、元件和/或部件,但并不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、部件和/或它们的组合。

  对本发明的描述只是为了说明的目的,而这些描述并不旨在穷举或限于所公开的实施例。在不偏离本发明的范围和精神的前提下,多种修改和变体对本领域技术人员而言是显而易见的。选择和描述本发明的各个方面以便更好地解释本发明的原理和实际应用,并且使本领域普通技术人员能够理解本发明和适合预期特定用途的各种修改。

  为了实现本文的目标,与所公开的技术相关联的每个过程可以连续地由一个或多个计算设备执行。过程中的每个步骤可以由与其他步骤中使用的相同或不同的计算设备执行,并且每个步骤不一定由单个计算设备执行。

  虽然已经以特定于结构特征和/或方法动作的语言描述了主题,但是应该理解的是,权利要求书定义的主题不必局限于上面描述的具体特征或动作。相反,上述具体的特征和动作被公开作为实施权利要求的示例性方式。

《快速和可扩展的数据库集群通信路径.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)