CN113950816B - 使用边车代理机构提供多云微服务网关的系统和方法 - Google Patents
使用边车代理机构提供多云微服务网关的系统和方法 Download PDFInfo
- Publication number
- CN113950816B CN113950816B CN202080043348.2A CN202080043348A CN113950816B CN 113950816 B CN113950816 B CN 113950816B CN 202080043348 A CN202080043348 A CN 202080043348A CN 113950816 B CN113950816 B CN 113950816B
- Authority
- CN
- China
- Prior art keywords
- client
- service
- micro
- server
- tunnel
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0272—Virtual private networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2567—NAT traversal for reachability, e.g. inquiring the address of a correspondent behind a NAT server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45541—Bare-metal, i.e. hypervisor runs directly on hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/04—Network management architectures or arrangements
- H04L41/046—Network management architectures or arrangements comprising network management agents or mobile agents therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5058—Service discovery by the service manager
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/251—Translation of Internet protocol [IP] addresses between different IP versions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2575—NAT traversal using address mapping retrieval, e.g. simple traversal of user datagram protocol through session traversal utilities for NAT [STUN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
- H04L61/2589—NAT traversal over a relay server, e.g. traversal using relay for network address translation [TURN]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2592—Translation of Internet protocol [IP] addresses using tunnelling or encapsulation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0281—Proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/029—Firewall traversal, e.g. tunnelling or, creating pinholes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/12—Discovery or management of network topologies
- H04L41/122—Discovery or management of network topologies of virtualised topologies, e.g. software-defined networks [SDN] or network function virtualisation [NFV]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/508—Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement
- H04L41/5096—Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement wherein the managed service relates to distributed or central networked applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/2514—Translation of Internet protocol [IP] addresses between local and global IP addresses
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种方法,包括:在包括第一客户端和第二客户端的客户端星座中,在该第一客户端处接收来自该第二客户端的连接请求,检索与该第二客户端相关联的端点可达性数据,以及基于该端点可达性数据向服务器发送连接请求。该第一客户端基于该连接请求从该服务器接收与该第二客户端相关联的端点可达性信息,并与该第二客户端开始双向连接。在该第一客户端和该第二客户端之间建立直接或间接隧道。该隧道是基于如下的表来建立的,该表将与该第一客户端相关联的第一连接性选项映射到与该第二客户端相关联的第二连接性选项,以确定在该第一客户端和该第二客户端之间是建立该直接隧道还是该间接隧道。
Description
相关申请交叉引用
本申请请求2019年6月12日提交的标题为“SYSTEMS AND METHODS PROVIDING AMULTI-CLOUD MICROSERVICES GATEWAY USING A SIDECAR PROXY(使用边车代理机构提供多云微服务网关的系统和方法)”的美国非临时专利申请第16/439,441号的权益和优先权,该申请的全部内容通过引用明确并入本文。
技术领域
本公开的主题总体涉及云计算领域,并且更具体地涉及在作为服务功能运行的各种微服务之间、在容器内、在虚拟机内或者甚至在裸机上提供端到端的安全连接性和全局可达性。
背景技术
生产级容器编排平台的出现使得基于微服务的应用越来越受欢迎。基于微服务的应用可以帮助减少开发时间,同时提高应用的可扩展性。基于微服务的应用当部署在云中时,可以利用云提供商的特定API,从而加快开发时间。然而,尽管这些平台对开发人员和运营团队有帮助,但当涉及到多云时或当应用使用异构技术时,这些平台可能会成为一种限制。当在AWS(亚马逊网络服务)、Azure(微软的网络服务)或GCP(谷歌云提供商)等数据中心运行时,连接工作负载可能会很复杂。此外,工作负载可以具有多种形状因子,包括裸机、虚拟机、容器或无服务器。
这种限制的一个实际示例是由以下微服务组成的应用:在Kubernetes中运行的容器,其中AWS利用了AWS DynamoDB PI;使用Azure机器学习服务在Azure中运行的虚拟机;以及在私有数据中心中运行的具有快速GPU(图形处理器)的物理服务器。在这些不同的示例中连接工作负载可能很复杂。
附图说明
为了描述可以获得本公开的上述和其他优点和特征的方式,将通过参考在附图中示出的本公开的具体实施例来呈现对以上简要描述的原理的更具体描述。应当理解,这些附图仅描述了本公开的示例性实施例,因此不应被认为是对其范围的限制,通过使用附图,以附加的特性和细节来描述并解释本文的原理,在附图中:
图1示出了根据一些示例的企业网络的拓扑;
图2示出了根据一些示例的企业网络的逻辑架构;
图3示出了根据一些示例的与用于获得关于软件漏洞的信息的外部馈送相协调的服务网格;
图4示出了具有星座服务器和各自与客户端连接的各种代理/边车代理机构的示例网络配置;
图5A示出了设置连接性过程;
图5B示出了部署期间的各种连接性选项;
图5C示出了可以表示数据库的表,该数据库示出了用于一个接入上的第一端点和另一接入上的第二端点的各种连接性参数的映射,以确定两个端点之间的隧道配置;
图5D示出了详细描述代理或边车代理机构的注册过程的方法示例;
图5E示出了关注于初始注册和部署之后的连接过程的另一方法示例;
图6示出了根据各种示例的示例网络设备;并且
图7示出了根据一些示例的示例计算设备体系结构。
具体实施方式
下面详细讨论本公开的各种实施例。虽然讨论了具体的实施方式,但是应当理解,这仅仅是为了说明的目的。相关领域的技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以使用其他组件和配置。
概述
本公开的附加特征和优点将在下面的描述中阐述,并且部分地将从描述中变得显而易见,或者可以通过实践本文公开的原理来学习。本公开的特征和优点可以通过在所附权利要求中特别指出的工具和组合来实现和获得。本公开的这些和其他特征将从下面的描述和所附权利要求中变得更加明显,或者可以通过本文所述原理的实践来学习。
有可能利用云服务提供商提供的虚拟专用网络(VPN)网关,但在异构环境中连接微服务工作负载的任务无法由常规开发人员轻松完成。该任务通常需要基础架构团队的参与。一旦安全连接性到位,如果没有支持多云的服务发现平台的支持,开发人员将很难找到在多个云上运行的服务。微服务可能具有不同类型的连接性:公有IPv4、利用NAT的私有IPv4、全局可达的IPv6等。因此,开发人员不得不做出妥协,限制使用CSP提供的同类最佳API。
为了解决由异构环境中的微服务工作负载难以连接所引起的问题,本公开关注这样的解决方案:其中代理或边车代理机构与微服务工作负载部署在一起、部署在微服务工作负载中或靠近微服务工作负载部署。建立能够被所有代理访问的服务器。根据微服务部署类型(例如是容器、虚拟机还是裸机),代理可以具有不同的形状因子。通过代理的操作,可以建立经由直接或间接隧道进行的微服务之间的通信,以使数据能够在相应的微服务之间流动。
本文公开了系统、方法和计算机可读介质。一种示例方法包括:在第一云计算环境中部署与第一微服务关联的第一代理,所述第一微服务是第一类型的;由第一代理收集可达性候选信息,以产生第一可达性候选信息,该可达性候选信息包括与第一代理不同且第一微服务所需的其他微服务的端点相关信息;基于第一可达性候选信息,在服务器处接收对第一微服务的注册;以及由服务器认证第一微服务。接下来,该方法包括在第二云计算环境中部署与第二微服务有关的第二代理,第二微服务是第二类型的。第一云计算环境可以不同于第二云计算环境。
该方法还包括:由第二代理收集可达性候选信息,以产生第二可达性候选信息,该可达性候选信息包括与第二代理不同且第二微服务所需要的其他微服务的端点相关信息;基于第二可达性候选信息,在服务器处接收对第二微服务的注册;以及由服务器认证第二微服务。该方法可包括:从第一代理向服务器传输第一能够验证的身份文档;在第一代理处基于第一能够验证的身份文档从服务器接收第一有效证书,以产生第一认证;从第二代理向服务器传输第二能够验证的身份文档;在第二代理处基于第二能够验证的身份文档从服务器接收第二有效证书,以产生第二认证;基于第一认证,在第一代理处接收用于第一微服务的第一星座IP地址;以及基于第二认证,在第二代理处接收用于第二微服务的第二星座IP地址。服务器使能微服务发现并将星座IP地址分配给授权代理,使得在第一类型的第一微服务和第二类型的第二微服务之间具有端到端安全连接性和全局可达性。
在另一方面,一种方法可以在配置在具有第一客户端和第二客户端的客户端星座中的客户端处执行。第一客户端包括第一类型的第一微服务和相关联的第一代理,第二客户端包括第二类型的第二微服务和相关联的第二代理。该方法包括:在第一客户端处接收来自第二客户端的连接请求;检索与第二客户端相关联的端点可达性数据;基于端点可达性数据,向服务器传输连接请求;基于连接请求,从服务器接收与第二客户端相关联的端点可达性信息;在第一客户端处,与第二客户端开始双向连接;以及基于双向连接,在第一客户端和所述第二客户端之间建立隧道。隧道可以被配置为第一客户端和第二客户端之间的直接隧道或间接隧道中的一者。
隧道的建立可以是如下的表,该表将与第一客户端相关联的第一连接性选项映射到与第二客户端相关联的第二连接性选项,以确定在第一客户端和第二客户端之间是建立直接隧道还是间接隧道。该方法可以包括经由隧道在第一客户端和第二客户端之间传送应用数据。
示例实施例的描述
本文公开了用于如下方案的系统、方法和计算机可读介质:根据这些方案,可以选择性地在源节点和目的地节点之间传输的实时流量流和原始流量流之间做出选择,截短(truncate)流量流的报头,并将流量流传输到网络控制器以进行网络分析,而不干扰被转发到其目的地的实时和原始流量流。使用实时和原始流量流的一些示例优点是减少了控制平面和数据平面中的负载,以及显著降低了执行网络监视、性能测量和检测网络损伤的复杂性。
云原生环境(Cloud-native environment)可以包括采用容器的云计算系统。容器是用于应用在不同环境(例如,本地部署(on-premise)站点、远程站点等)之间移动并独立运行的轻量级、高效且标准的方式。在一些实施方式中,容器可以保存运行应用所需的所有信息和数据。例如,应用的代码、运行时间、系统工具、库和设定可以打包在容器中。容器的使用使得为云原生环境构建分布式应用成为可能。
云原生应用可以支持不同的软件服务。术语“微服务”是指可以用于使用容器构建分布式应用的软件服务。微服务架构将云原生应用的不同功能(例如,安全、流量管理等)当作独立的服务,这些独立的服务可以在不影响云原生环境中的其他应用的情况下被更改、更新或关闭。在一些示例中,微服务可以围绕利用云原生环境的公司的业务能力来构建,并且微服务能使用完全自动化的部署机制来独立地部署。
基于云原生应用的基础设施,云原生应用可以利用各种软件服务来实现诸如负载均衡、流量管理、路由、健康监控、安全策略、服务和用户认证、针对入侵的保护、分布式拒绝服务(DDoS)攻击等功能。在云原生应用中,这些软件服务可以使用微服务构造来实现,这可能涉及提供大量(例如,数百或数千)容器。用于管理这些大量容器的分立的硬件设备是不实际的,因此,例如,采用“服务网格”来管理和递送可集成在云原生环境的计算群集中的微服务。服务网格利用应用编程接口(API),这些接口的实现不需要硬件设备。在一些实施例中,服务网格可以在所有的对应用进行容器化和微服务可以连接到的环境中递送到处渗透的服务层。
因此,服务网格可以用于直接在计算群集内向基于容器的微服务应用递送诸如流量管理、安全性和可观察性之类的服务。由于服务网格通过由API控制的软件组件而不是使用分立的硬件设备来提供监视、可扩展性和高可用性服务,因此服务网格的灵活框架降低了与现代分布式应用相关联的操作复杂性。例如,服务网格递送应用服务,例如负载均衡,而不需要昂贵且具有挑战性的替代方案,例如在每个位置和/或由云基础设施利用的每个服务器处的物理硬件设备负载均衡器。
可以使用容器旁边的网络代理阵列来实现服务网格。每个代理机构或代理被称为“边车代理机构”,用作容器之间进行的交互的网关。边车代理机构协助将计算负载分散到服务网格上,并将请求定向到可以为该请求提供服务的适当下游容器。中央控制器可以编排服务网格中的连接,并且控制平面可以被配置为监视在边车代理机构之间流动的服务流量。控制平面可以递送访问控制策略并收集要提供给编排器的性能度量。编排器还可以与诸如开放源代码系统的平台集成,用于自动化进行容器化应用的部署和管理。
如上所述,在服务网格基础设施中,可以独立地开发、部署和管理每个微服务。例如,可以将微服务的新功能和更新递送到服务网格,有时是以快速和增量的方式递送,使得新版本的微服务可以不断地集成到云原生平台中。以这种方式开发的基于微服务的应用是非常动态的,例如,可以每天更新和部署这些应用数百次。然而,考虑到开发和部署众多微服务及其版本的独立方式,这些微服务中的一个或多个可能存在漏洞。一些漏洞可能很严重,会导致整个服务网格的大范围的中断,而另一些漏洞可能不太严重且能得到控制。识别漏洞、辨别可能受影响的潜在容器并基于这些漏洞的严重性采取行动是一项挑战。以下部分描述了用于保护示例服务网格不受软件漏洞影响的系统和方法。
图1示出了可以根据本公开的各方面来配置的企业网络100的拓扑的示例。虽然在图1至图3的讨论中不必展开对星座服务器和结合客户端部署的代理的特定讨论,但是所描述的网络环境可以对图4中引入的框架具有一些适用性。
图1所示的企业网络100可以包括有线网络,可以根据本文的示例技术来监视该有线网络的流量。在一个示例中,企业网络100可以提供基于意图的联网(intent-basednetworking)。应当理解,对于企业网络100和本文所讨论的任何网络,可以有更多或更少的节点、设备、链路、网络或者类似或替代配置的组件。此处还预期具有不同数量和/或类型的端点、节点、云组件、服务器、软件组件、设备、虚拟或物理资源、配置、拓扑、服务、装置或部署的示例实施例。此外,企业网络100可以包括可以由端点或网络设备访问和利用的任何数量或类型的资源。本文提供的说明和示例是出于清楚和简洁的目的。本文公开的关于使用边车代理机构的原理可以应用于网络100的任何资源。
企业网络100包括管理云102和网络结构(fabric)120。尽管在该示例中将管理云102示为网络结构120的外部网络或云,但是该管理云可以替代地或附加地驻留在组织的场所或托管中心中(除了由云提供商或类似环境托管之外)。管理云102可以提供用于构建和操作网络结构120的中央管理平面。管理云102可以负责转发配置和策略分发以及设备管理和分析。管理云102可以包括一个或多个网络控制器设备104、一个或多个认证、授权和计费(AAA)设备106、一个或多个无线局域网控制器(WLC)108、以及一个或多个结构控制平面节点110。在其他实施例中,管理云102的一个或多个元件可以与网络结构120共处一地。在一个方面,管理云102可以执行图4中引入的星座服务器410的操作。
(一个或多个)网络控制器设备104可以用作一个或多个网络结构的命令和控制系统,并且可以容纳用于部署和管理(一个或多个)网络结构的自动化工作流。(一个或多个)网络控制器设备104可以包括自动化、设计、策略、供应和保证能力等,如下面参考图2进一步讨论的。在一些示例中,一个或多个思科数字网络架构(Cisco DNATM)设备可以作为网络控制器设备104来操作。
(一个或多个)AAA设备106可以控制对计算资源的访问,促进网络策略的实施,审核使用情况,并提供对服务计费所必需的信息。AAA设备可以与网络控制器设备104交互,并与包含用户、设备、事物、策略、计费的信息和类似信息的数据库和目录交互,以提供认证、授权和计费服务。在一些实施例中,(一个或多个)AAA设备106可以利用远程认证拨入用户服务(RADIUS)或Diameter来与设备和应用进行通信。在一些实施例中,一个或多个身份服务引擎(ISE)设备可以作为(一个或多个)AAA设备106操作。
(一个或多个)WLC 108可以支持附接到网络结构120的结构使能接入点,处理与WLC相关联的传统任务以及与结构控制平面的交互以用于无线端点注册和漫游。在一些实施例中,网络架构120可以实施无线部署,该无线部署将数据平面终端(例如,虚拟可扩展局域网或“VXLAN”)从集中式位置(例如,具有无线接入点的先前覆盖控制和供应(CAPWAP)部署)移动到接入点/结构边缘节点。这可以实现无线流量的分布式转发和分布式策略应用,同时保留集中式供应和管理的优势。在一些实施例中,一个或多个无线控制器、无线LAN和/或其他支持Cisco DNATM的无线控制器可以作为WLC 108操作。
网络结构120可以包括结构边界节点122A和122B(统称为122)、结构中间节点124A-D(统称为124)和结构边缘节点126A-F(统称为126)。虽然在该示例中,(一个或多个)结构控制平面节点110被示为在网络结构120的外部,但是在其他实施例中,(一个或多个)结构控制平面节点110可以与网络结构120共处一地。在(一个或多个)结构控制平面节点110与网络结构120共处一地的实施例中,(一个或多个)结构控制平面节点110可以包括专用节点或节点集,或者(一个或多个)结构控制节点110的功能可以由结构边界节点122来实现。
(一个或多个)结构控制平面节点110可以用作中央数据库,用于在所有用户、设备和事物附连到网络结构120时以及在它们漫游时跟踪它们。(一个或多个)结构控制平面节点110可以允许网络基础设施(例如,交换机、路由器、WLC等)查询数据库以确定连接到结构的用户、设备和事物的位置,而不是使用泛洪和学习机制。以这种方式,(一个或多个)结构控制平面节点110可以作为关于附接到网络结构120的每个端点在任何时间点所处位置的单个真实源来操作。除了跟踪特定端点(例如,IPv4的/32地址、IPv6的/128地址等)之外,(一个或多个)结构控制平面节点110还可以跟踪较大的汇总路由器(例如,IP/掩码)。这种灵活性有助于跨结构站点进行汇总,并提高整体可扩展性。
结构边界节点122可以将网络结构120连接到传统的第3层网络(例如非结构网络)或连接到不同的结构站点。结构边界节点122还可以将上下文(例如,用户、设备或事物映射和身份)从一个结构站点转换到另一个结构站点或传统网络。当跨不同结构站点的封装相同时,结构上下文的转换通常是1:1映射。结构边界节点122还可以与不同结构站点的结构控制平面节点交换可达性和策略信息。结构边界节点122还为内部网络和外部网络提供边界功能。内部边界可以通告一组定义的已知子网,例如通向一组分支站点或数据中心的子网。另一方面,外部边界可以通告未知目的地(例如,向互联网进行通告,在操作上类似于默认路由的功能)。
结构中间节点124可以作为纯粹的第3层转发器来操作,该转发器将结构边界节点122连接到结构边缘节点126,并为结构覆盖(overlay)流量提供第3层底层(underlay)。
结构边缘节点126可以将端点连接到网络结构120,并且可以对来自这些端点的去往网络结构和来自网络结构的流量进行封装/解封装以及进行转发。结构边缘节点126可以在网络结构120的外围操作,并且可以是用于用户、设备和事物的附接以及策略的实现的第一点。在一些实施例中,网络结构120还可以包括结构扩展节点(未示出),用于将下游非结构层2网络设备附接到网络结构120,从而扩展网络结构。例如,扩展节点可以是经由第2层连接到结构边缘节点的小型交换机(例如,紧凑型交换机、工业以太网交换机、楼宇自动化交换机等)。连接到结构扩展节点的设备或事物可以使用结构边缘节点126来与外部子网通信。
在该示例中,网络结构可以表示可以与多站点结构部署相区别的单个结构站点部署。
在一些示例中,在结构站点中托管的所有子网可以跨该结构站点中的每个结构边缘节点126来提供。例如,如果子网10.10.10.0/24在给定结构站点中提供,则该子网可被定义为跨该结构站点中的所有结构边缘节点126,并且位于该子网中的端点可以放置在该结构中的任何结构边缘节点126上。这可以简化IP地址管理,并允许部署更少但更大的子网。在一些实施例中,一个或多个交换机、Cisco />交换机、Cisco交换机、/>集成服务路由器(ISR)、/>聚合服务路由器(ASR)、企业网络计算系统(ENCS)、/>云服务虚拟路由器(CSRvs)、Cisco集成服务虚拟路由器(ISRvs)、Cisco />设备和/或其他Cisco DNA-readyTM设备可以作为结构节点122、124和126操作。
企业网络100还可以包括有线端点130A、130C、130D和130F以及无线端点130B和130E(统称为130)。有线端点130A、130C、130D和130F可以通过线缆分别连接到结构边缘节点126A、126C、126D和126F,并且无线端点130B和130E可以分别无线地连接到无线接入点128B和128E(统称为128),无线接入点128B和128E又可以通过线缆分别连接到结构边缘节点126B和126E。在一些实施例中,Cisco 接入点、Cisco />接入点和/或其他支持Cisco DNATM的接入点可以作为无线接入点128操作。
端点130可以包括通用计算设备(例如,服务器、工作站、台式计算机等)、移动计算设备(例如,膝上型计算机、平板计算机、移动电话等)、可穿戴设备(例如手表、眼镜或其他头戴式显示器(HMD)、耳戴式设备等)等。端点130还可以包括物联网(Iot)设备或装备,例如农业装备(例如,牲畜跟踪和管理系统、浇水设备、无人飞行器(UAV)等);联网汽车和其他车辆;智能家居传感器和设备(例如,警报系统、安全摄像机、照明、电器、媒体播放器、HVAC装备、公用事业仪表、窗户、自动门、门铃、锁等);办公装备(如台式电话、复印机、传真机等);保健设备(例如,起搏器、生物传感器、医疗装备等);工业装备(例如,机器人、工厂机制、建筑装备、工业传感器等);零售装备(例如,自动售货机、销售点(POS)设备、射频识别(RFID)标签等);智能城市设备(例如,路灯、停车计时器、废物管理传感器等);运输和后勤装备(例如,十字转门、租车跟踪器、导航设备、库存监控器等);等等。如下面结合图4所讨论的,任何端点都可以配置有代理或边车代理机构。
在一些示例中,网络结构120可以支持作为单个集成基础设施的一部分的有线和无线接入,使得有线和无线端点的连接性、移动性和策略实施行为都是相似或相同的。这可以为用户、设备和事物带来独立于访问介质的统一体验。
在集成的有线和无线部署中,控制平面集成可以通过(一个或多个)WLC 108向(一个或多个)结构控制平面节点110通知无线端点130的加入、漫游和断开来实现,使得(一个或多个)结构控制平面节点可以具有关于网络结构120中的有线和无线端点的连接性信息,并且可以用作端点连接到网络结构的单一事实来源。对于数据平面集成,(一个或多个)WLC108可以指示结构无线接入点128形成到其相邻结构边缘节点126的VXLAN覆盖隧道。APVXLAN隧道可以承载去往和来自结构边缘节点126的分段和策略信息,从而允许与有线端点的连接和功能相同或相似的连接和功能。当无线端点130经由结构无线接入点128加入网络结构120时,(一个或多个)WLC 108可以将端点装载到网络结构120中,并向结构控制平面节点110通知端点的媒体访问控制(MAC)地址。WLC 108然后可以指示结构无线接入点128形成到相邻结构边缘节点126的VXLAN覆盖隧道。接下来,无线端点130可以经由动态主机配置协议(DHCP)来获得它们自己的IP地址。一旦完成,结构边缘节点126可以将无线端点130的IP地址注册到(一个或多个)结构控制平面节点110,以形成端点的MAC和IP地址之间的映射,并且去往无线端点130的流量和来自无线端点130的流量可以开始流动。
图2示出了企业网络(例如企业网络100)的逻辑体系结构200的示例,其中可以应用本文所公开的原理。本领域普通技术人员将理解,对于本公开中讨论的逻辑体系结构200和任何系统,在类似或替代配置中可以有附加或更少的组件。本公开中提供的说明和示例是为了简明和清楚。其他示例可以包括不同数量和/或类型的元件,但是本领域普通技术人员将理解,这样的变化不脱离本公开的范围。在该示例中,逻辑体系结构200包括管理层202、控制器层220、网络层230(例如由网络结构120实现)、物理层240(例如由图1的各种元件实现)和共享服务层250。
管理层202可以抽象其他层的复杂性和依赖性,并向用户提供用于管理企业网络(例如企业网络100)的工具和工作流。管理层202可以包括用户接口204、设计功能206、策略功能208、供应功能210、保证功能212、平台功能214和基础自动化功能216。用户接口204可以向用户提供单个点来管理和自动化网络。用户接口204可以在可由web浏览器访问的web应用/web服务器和/或可由桌面应用、移动应用、外壳程序或其他命令行接口(CLI)、应用编程接口(例如,RESTful状态传递(REST)、简单对象访问协议(SOAP)、面向服务的体系结构(SOA)等)访问的应用/应用服务器和/或其他合适的接口内实现,其中用户可以配置云管理的网络基础设施、设备和事物;提供用户偏好;指定策略;输入数据;审查统计数据;配置交互或操作;等等。用户接口204还可以提供可见性信息,诸如网络、网络基础设施、计算设备和事物的视图。例如,用户接口204可以提供网络的状态或条件、发生的操作、服务、性能、拓扑或布局、实现的协议、运行的过程、错误、通知、警报、网络结构、正在进行的通信、数据分析等的视图。
设计功能206可以包括用于管理站点配置文件、映射和平面图、网络设置和IP地址管理等的工具和工作流。策略功能208可以包括用于定义和管理网络策略的工具和工作流。供应功能210可以包括用于部署网络的工具和工作流。保证功能212可以使用机器学习和分析来通过从网络基础设施、端点和信息的其他上下文源学习来提供网络的端到端可见性。平台功能214可以包括用于将网络管理系统与其他技术集成的工具和工作流。基础自动化功能216可以包括支持策略功能208、供应功能210、保证功能212和平台功能214的工具和工作流。
在一些示例中,设计功能206、策略功能208、供应功能210、保证功能212、平台功能214和基础自动化功能216可以被实现为微服务,其中相应的软件功能被实现在彼此通信的多个容器中,而不是将所有工具和工作流合并到单个软件二进制文件中。设计功能206、策略功能208、供应功能210、保证功能212和平台功能214中的每一个可以被视为一组相关的自动化微服务,以覆盖网络生命周期的设计、策略创作、供应、保证和跨平台集成阶段。基础自动化功能214可以通过允许用户执行某些网络范围的任务来支持顶层功能。
星座服务器410的操作可以由管理层202、控制器层220、网络层230和/或物理层240中的一个或多个来执行。
图3示出了被配置以实现本公开的各个方面的网络300的示例拓扑。网络300可以是用于支持云原生应用的企业网络。在一些方面,网络300可以包括图1的企业网络100的示例实现,该企业网络100的逻辑体系结构200在上面参考图2进行了描述。
例如,网络300示出了服务网格302,该服务网格302可以配备有诸如图1的网络结构120之类的网络结构。服务网格302可以是软件定义网络(SDN),并且包括配置服务网格302的数据平面的集中式控制平面310。服务网格302提供用于控制服务到服务通信的基础设施层。服务网格302包括网络代理机构的阵列322。在阵列322可以包括的各种网络代理机构中,示出了边车代理机构324a-c,并且将在下面更详细地解释这些边车代理机构。接下来描述的边车代理机构可以应用为图4中讨论的代理或边车代理机构。
如本领域技术人员将理解的,企业网络可以使用代理机构来实现安全措施和管理对服务的访问。例如,如果公司的办公室环境中的用户从办公室中的计算机请求网页,则请求可以首先由公司的web代理机构接收,该web代理机构可以检查该请求的安全性问题。一旦由web代理机构实施的安全措施被清除,则请求可以被发送到托管该网页的外部服务器。当响应于该请求将网页返回到计算机时,web代理机构可以再次检查被返回的网页中的内容的安全性问题,然后代理机构将网页及其网页内容返回给用户。在服务网格302中,请求通过微服务自身基础设施层中的代理机构在微服务之间路由。由于这个原因,组成服务网格的单独代理机构被称为边车或边车代理机构,因为这些代理机构与每个服务一起运行,而不是在服务中运行。边车代理机构324a-c是可以存在于服务网格302中的这种边车代理机构的示例。
边车代理机构可以处置与之配对的一个或多个服务实例的访问和安全措施。例如,服务实例328a-c在图3中示出,与相应的边车代理机构324a-c配对。此外,服务实例及其配对的边车代理机构可以共享容器。例如,示出了容器330a-c,其中每个容器330a-c可以由相应的服务实例328a-c和边车代理机构324a-c共享。边车代理机构324a-c可以处理与其他容器的服务实例的通信。例如,容器330a的边车代理机构324a可以处理服务实例328a与容器330b的服务实例328b的通信。边车代理机构324a-c还可以支持诸如服务网格302中的服务实例的发现、负载均衡、认证和授权、安全通信等的能力。服务实例328a-c可以是微服务。如前所述,微服务可以是用于构建灵活、可独立部署的软件系统的面向服务体系结构(SOA)的实现方法的专门化。
如前所述,控制平面310可以处理服务网格302的控制功能。例如,控制平面310可以在服务实例328a-c上安装和维护策略和配置(例如,通过相应的边车代理机构324a-c)。在一些示例中,控制平面310可以指示边车代理机构324a-c对这些策略和配置进行动态更新。因此,控制平面310可以包括用于执行这些功能的不同模块。例如,控制平面310可以包括用于定义和管理网络策略、流量策略等的策略模块312。控制平面310还可以包括用于实现平衡服务网格302中的流量和工作负载的负载均衡方案的负载均衡器314。可以存在于控制平面310中的一个或多个其他模块一般被示为模块316,用于执行例如参考图2中的控制层220所讨论的一个或多个控制功能。
在示例方面,控制平面310可以包括软件漏洞处理器(SVP)318,用于处理与例如识别、隔离和校正软件漏洞有关的各种功能。在一个或多个示例中,SVP 318(或更一般地,控制平面310)可以与服务目录320通信。例如,服务目录320可以维护在服务网格302的各种服务实例328a-c中运行的软件的各种细节的目录,诸如软件版本、来源、发布日期等。因此,在一些示例中,服务目录320可以包含软件(及其版本)和服务实例328a-c的最新映射。服务目录320用一种或多种方式更新,这将在下面描述。
如图3所示,服务网格302的控制平面310可以与一个或多个外部实体通信。其中,编排系统304可以与服务网格302协同工作,用于例如服务网格302的容器330a-c中的容器化应用的部署、缩放和管理。例如,用于自动管理或容器化应用的开源编排系统在本领域中是已知的。除了其他功能之外,编排系统304还可以维护工作负载/应用、容器图像、网络资源等的状态。
例如,服务网格302还可以与各种其他外部馈送307、309等通信,以获得关于在服务网格的容器330a-c中执行的软件中的潜在漏洞的信息。本文讨论的软件漏洞可以涉及在服务实例中识别的任何暴露,这些暴露可以危害服务实例的隐私、安全性、效率、准确性、性能等。在一些示例中,漏洞可以是程序错误、服务和用户认证中的漏洞、针对入侵的保护中的缺口、对分布式拒绝服务(DDoS)攻击的暴露等。潜在的软件漏洞可能有也可能没有现成的修复程序。软件漏洞数据库云联盟306可以从诸如国家漏洞数据库(NVD)、产品安全事件响应小组(PSIRT)等各种储存库和标准获取漏洞信息,并将关于外部馈送307的该信息提供给服务网格302。例如,软件漏洞分类帐区块链308可以向服务网格302提供具有从区块链分类帐和其他分布式分类帐获得的漏洞的另一外部馈送309。尽管没有详尽地示出和描述,但是各种其他这样的外部馈送可以向服务网格302提供关于任何软件漏洞的信息,这些软件漏洞已经在行业中被识别、为公众所知或者来源于私人实体。
在一个或多个示例中,控制平面310,或者更具体地,SYP 318可以与这些外部馈送307、309等交互,并且收集软件漏洞和补救信息。在一些示例中,SVP 318可以实现检测可能影响服务网格302的漏洞的以下过程。SVP 318可以监控外部馈送307、309并且咨询服务目录320以确定是否在外部馈送307、309上报告了可能影响服务目录320中的一个或多个服务的任何漏洞。此外,当在服务网格302中添加任何新服务或者服务发现功能识别服务网格302中的新服务时,SVP 318可以更新服务目录320并监控外部馈送307、309以确定添加到服务目录320的任何新的或更新的信息是否可能具有由外部馈送307、309报告的漏洞。
本公开已经在图1至图3中介绍了一些网络配置,这些网络配置可以适用于以下概念。接下来,本公开介绍了关注于不同微服务之间的端到端安全性和连接性的创新。图4示出了具有星座服务器410和各种代理或边车代理机构的示例网络配置,每个代理或边车代理机构与客户端412、414、418、420、422连接部署。为了在异构环境中提供到微服务工作负载的连接性,本公开关注一种解决方案,其中代理或边车代理机构与微服务工作负载一起部署、部署在微服务工作负载中或靠近微服务工作负载部署。建立所有代理412、414、418、420、422可到达的星座服务器410。根据微服务部署类型(诸如是容器、虚拟机还是裸机),代理可以具有不同的形状因子。
如图4所示,异构环境400包括多个不同的组件。第一公共云402包括具有多个不同模块或组件的星座服务器410。例如,可达性控制器可以被引入作为星座服务器410的一部分,并且可以包括域名系统(DNS)组件,该组件可以向各个客户端412、414、418、420、422指派星座IP地址。可以包括ISTIO组件,该组件解决了开发者和运营商在网络从单片式应用向分布式微服务体系结构(如图4所示)过渡时所面临的挑战。“ISTIO”一词在希腊语中是“sail”的意思,被用作独立于开放平台的服务网格的名称,该服务网格提供流量管理、策略执行和遥测收集。ISTIO服务网格可以为微服务应用的网络提供服务,并实现网络和服务之间的交互。ISTIO组件可以提供对整个服务网格的洞察和操作控制,并提供完整的解决方案来满足微服务应用的各种不同需求。
传统的ISTIO服务网格可以包括多个控制平面拓扑,其中每个群集具有相同的控制平面安装,并且每个控制平面管理其自己的端点。在这种情况下,向ISTIO网关提供服务条目,以便可以配置由参与群集组成的单个逻辑服务网格。本解决方案引入了与先前的ISTIO解决方案不同的方法,但是还可以利用或协调与ISTIO服务网格的通信。
TURN中继也可以包括在星座服务器410内,该星座服务器410可以用于在例如客户端420和客户端422之间提供间接隧道424。TURN代表“通过Relay方式穿越NAT(traversalusing relays around NAT)”。“NAT”是一种网络地址转换方法,该方法通过当封包在路由设备上传输时,修改封包之IP标头中的网络地址信息,而将一个IP地址空间重新映射至另一IP地址空间。如果主机位于NAT之后,则在某些情况下,该主机可能无法直接与其他对等主机通信。在这些情况下,主机必须使用充当通信中继的中间节点的服务。TURN协议允许主机控制中继的操作,并使用中继与其对等体交换分组。TURN与其他一些中继控制协议的不同之处在于,TURN允许客户端使用单个中继地址与多个对等体进行通信。
TURN协议被设计为用作NAT遍历的ICE(交互式连接性建立)方法的一部分,但TURN协议也可以在没有ICE的情况下使用。关于TURN协议的更多细节,参见通过引用结合于此的IETF RFC 5766、8155和8553。在本文所述的一些情况下,可以在两个对等体420、422之间建立间接隧道424。
客户端412被部署在公共云402内。客户端414被部署在公共云404内。客户端418被配置在K8s群集416内。客户端420被配置在私有云406中。客户端422被配置在家庭408或其他建筑物中。与每个客户端412、414、418、420、422有关的参考是相应的覆盖地址(例如,2001:db8),并且示出了加密隧道以及控制平面连接。
服务器410用作公共微服务发现服务。服务器负责微服务认证、星座IP地址分配和微服务发现的DNS。代理或边车代理机构还维持与服务器410的控制平面连接,以帮助设置与其对等体的安全网格隧道。与微服务工作负载部署在一起、部署在微服务工作负载内或靠近微服务工作负载部署的代理负责向星座服务器410注册这些微服务,以便加入星座应用。代理还负责在隧道设置期间执行策略。
如上所述,服务器410包括多个组件并执行多个功能。服务器410执行代理注册认证。服务负责验证代理身份并递送签名证书。这些服务还负责向代理分配访问策略。在一个示例中,ISTIO是这种服务的实际实现的示例方法或候选。
与服务器410相关联的DNS服务实现微服务发现。在一个方面,DNS服务可以被认为是常规DNS服务器,但是仅为一组星座应用和特定域操作。服务器410中所示的可达性控制器组件负责维护代理可达性信息候选的数据库、代理的分布式星座IP地址以及过程的同步连接性集合。
图5A示出了与注册过程中的启动相关的方法示例。第一客户端启动(502)。如上所述,客户端512由一个或多个微服务工作负载及其相关联的代理或边车代理机构组成。本文描述的步骤可以由构成客户端的这些组件中的任何组件来执行。在客户端启动之后,客户端或客户端的代理收集可达性候选信息(504)并联系星座服务器(506)。可达性信息可以包括公有和私有IPv4地址、公有和私有IPv6地址、网关IPv6地址(可以使用UPNP、STU或云API来收集)以及IETF RFC 8445中定义的ICE协议所需的任何端点相关信息。客户端向星座服务器(514)发出可达性信息SPIFEE证书请求(506)。步骤(506)可以涉及代理联系服务器410/514以进行认证。可以根据SPIFEE规范执行认证。SPIFEE规范是指第一每个人的安全生产身份框架(secure production identity framework for everyone)。这些规范在一些标准中定义了一个框架,用于识别和保护基于web的服务之间的通信。认证也可以通过其他协议来执行,并且本公开不限于特定的SPIFEE标准。
相应代理将其能够验证SPIFEE的身份文档(SPIFEE Verifiable identitydocument SVID)发送到服务器410/514。如果认证成功,则代理512接收稍后将用于与其他对等微服务进行认证的有效证书。星座服务器处理SPIFEE请求,指定IPv6地址,并记录相应的客户端可达性(508)。一旦被认证,服务器410就向代理分配相应微服务的星座地址(508)。IPv6地址将用于任何微服务到微服务的通信。
然后,星座服务器514将签名证书、IPv6地址和前缀传输到星座客户端512。星座客户端然后创建TAP接口,并且可以绘制用于不同客户端之间的通信的路由数据(510)。TAP接口是纯软件接口,因为该TAP接口只存在于内核中,没有物理硬件组件。
可以将TAP接口(或TUN接口)视为常规网络接口,当内核决定“在线路上”发送数据的时刻到来时,该常规网络接口会替代性地使用特定过程将数据发送到附接到该接口的某个用户空间程序。当程序附接到TAP接口时,该TAP接口会获得特殊的文件描述符,从中读取接口发出的数据。以类似的方式,程序可以对该特殊描述符进行写入,并且数据(必须正确格式化)将显示为TAP接口的输入。对于内核来说,这看起来就像是TAP接口正在“从线路”接收数据。
TAP接口和TUN接口之间的区别在于,TAP接口输出(并且必须给予)完整的以太网帧,而TUN接口输出(并且必须给予)原始IP分组(并且内核不添加以太网报头)。在创建接口时,使用标志指定接口的功能是像TUN接口还是像TAP接口。本文所公开的原理将适用于任一类型的接口。
TAP/TUN接口可以是瞬态的,这意味着该接口是由同一个程序创建、使用和销毁的。当程序终止时,即使该程序没有显式地销毁接口,接口也不再存在。另一个选项是使接口持久。在这种情况下,可以使用专用实用程序(如tunctl或openvpn-mktun)创建接口,然后普通程序可以附接到该接口。当程序附接时,这些程序必须使用与最初创建接口时使用的相同类型(TUN或TAP)进行连接,否则它们将无法附接。
一旦TUN/TAP接口就位,该接口就可以像任何其他接口一样使用,这意味着可以分派IP地址,可以分析其流量,可以创建防火墙规则,可以建立指向该接口的路由等。
用于创建全新接口和(重新)附接到持久接口的代码本质上是相同的。不同之处在于,前者必须由root(具有CAP_NET_ADMIN功能的用户)运行,而后者在满足特定条件的情况下可以由普通用户运行。接下来讨论新接口的创建。
首先,设备/dev/net/tun必须以读/写方式打开。该设备也称为克隆设备,因为该设备用作创建任何TUN/TAP虚拟接口的起点。该操作(与任何open()调用一样)返回文件描述符。但这还不足以开始使用它与接口进行通信。
创建接口的下一步骤是发出特殊的ioctl()系统调用,该系统调用的参数是在上一步骤中获得的描述符、TUNSETIFF常量和指向数据结构的指针,该数据结构包含描述虚拟接口的参数(基本上是虚拟接口的名称和所需的操作模式-TUN或TAP)。作为一种变体,虚拟接口的名称可以不指定,在这种情况下,内核将通过尝试指定该类型的“下一个”设备来选择名称(例如,如果tap2已经存在,则内核将尝试指定tap3,依此类推)。所有这些都必须由root用户(或具有CAPNETADMIN功能的用户)完成。如果ioctl()成功,则创建虚拟接口,并且以前具有的文件描述符现在与该虚拟接口关联,并且可以用于通信。
在这一点上,可能会发生两件事。程序可以立即开始使用接口(可能之前至少为该接口配置了一个IP地址),并在完成后终止和销毁接口。另一种选择是发出其他特殊的ioctl()调用,以使接口持久,并终止使该接口留在适当的位置,以便其他程序附加到该接口。例如,这就是像tunctl或openvpn--mktun这样的程序所做的事情。这些程序通常还可以选择性地将虚拟接口的所有权设置为非根用户和/或组,因此以非根用户身份运行但具有适当权限的程序可以在以后附接到该接口。用于创建虚拟接口的基本代码显示在内核源代码树中的Documentation/networking/tuntap.txt文件中。该文献在此引入作为参考。
图5B示出了在对等客户端之间设置连接性。代理或边车代理机构通常将执行此操作。在图5B中,一些步骤由客户端538执行,一些由服务器540执行,而一些由另一客户端或端点542执行。该过程开始于检测连接请求,例如与DNS或初始分组相关联的请求(520)。然后,客户端538需要检索端点可达性数据522。从客户端538向服务器540发送连接请求。服务器540通知目标端点并向客户端538和端点542发送可达性信息(524)。以下步骤发生在客户端538上。在接收到端点可达性信息后,客户端开始双向ICE连接过程(526)。在连接被建立后,客户端538与端点建立加密隧道(528),一旦建立了隧道,客户端538就可以处理可以在客户端538和端点542之间流动(530)的应用流量。如本文所述,隧道可以是直接的或间接的。
端点542处的处理包括,在接收到连接通知之后,与客户端538开始双向ICE连接(532)。一旦建立了连接,端点542就参与跟客户端538建立加密隧道(534)。一旦建立了隧道,端点542就可以处理端点542和客户端538之间的应用流量(536)。
可以使用不同的协议来建立对等体之间的连接性。当需要时,使用ICE协议,并且图5C示出或总结了不同对等体之间的选项的不同连接性。在表550中,一个端点的连接性选项可以在列552中示出,而另一个端点的连接性选项可以在行554中示出。各种选项包括,例如,无防火墙的全局IPv6、入口阻塞的全局IPv6、无防火墙的全局IPv4、入口阻塞的全局IPv4、能够穿透的NAT(pierceable NAT)的私有IPv4(UPnP、STUN)以及不能够穿透NAT(unpierceable NAT)的私有IPv4。这些表示连接性选项的示例,并且也考虑了其他选项。该表示出了如何基于相应的连接性特性来确定将在或可在相应的端点之间发生的隧道传输的类型的示例。这些特性可以是微不足道的并且因此隧道传输可以是直接的(参见图4中的特征426),或者这些特性可能需要中继556。
图4示出了间接隧道424,该间接隧道使用TURN中继作为星座服务器410的一部分。当在单独端点之间建立连接性时,可以访问图5C中所示的表,以确定两个相应端点之间的每个单独隧道应该是直接的还是间接的。例如,特征556表示间接隧道,其中,当一个端点具有私有IPv4、不能够穿透的NAT的连接性配置文件,而另一个端点具有没有防火墙的全局IPv6的连接性配置文件时,需要中继。在所示的示例中,中继是使用Teredo的IP4到IP6,Teredo是过渡技术,可为IPv4互联网上支持IPv6但与IPv6网络没有原生连接性的客户端提供完整的IPv6连接。Teredo在IPv4互联网上通过NAT设备路由数据报。其他转换服务可以包括MAP-T、UPNP+Map-T或其他。UPNP代表“通用即插即用”,是一组网络协议,这些网络协议允许诸如个人计算机、打印机、互联网网关、WiFi接入点等的网络设备发现彼此在网络上的存在,并建立用于数据共享的功能性网络服务。Map-T协议是使用转换的地址和端口的映射,该映射提供跨IPv6域到IPv4主机的连接性。每个客户端422、412、414、416、420可以具有其自己的到服务器410的控制平面连接428。
图5C的位置558中的“*”表示该过程应在防火墙上打开允许打开的端口,并使另一个节点连接到该端口。位置560中的“**”符号指示该连接应在NAT中打开允许打开的端口,并使另一个节点连接到该端口。
一旦在两个代理之间建立了连接,就会设置加密隧道,并使用证书对对等体进行授权。相应的代理可以基于应用或本地策略来授权或拒绝与另一微服务的连接性。由服务器410递送的应用IPv6地址被分派给隧道的两端。本地代理可以基于在X.509远程证书中通告的远程方的身份来实施细粒度组安全策略以及更高级的策略。如上所述,代理将需要与CAP网络管理功能一起运行,以便能够创建如上所述的TAP接口并分派星座IP地址。
遵循本文所述的过程,系统可以在作为服务功能运行的微服务之间、在容器内、在虚拟机内或甚至在裸机上提供端到端安全连接性和全局可达性。该方法将与所有现有的云技术兼容,云技术诸如但不限于Kubernetes、OpenStack、虚拟机和裸机服务器。该方法可以在公共云和私有云中工作。
图5D示出了一种方法示例,该方法示例涵盖了客户端星座的初始注册和设置过程,以便能够按需在相应的微服务之间建立直接或间接隧道,即使这些微服务是不同类型的。一种示例方法包括:在第一云计算环境中部署与第一微服务关联的第一代理,第一微服务是第一类型的(570);由第一代理收集可达性候选信息,以产生第一可达性候选信息(572),该可达性候选信息包括与第一代理不同且第一微服务所需的其他微服务的端点相关信息;基于第一可达性候选信息,在服务器处接收对第一微服务的注册;由服务器认证第一微服务;以及在第二云计算环境中部署与第二微服务关联的第二代理,第二微服务是第二类型的(574)。在一个方面,第一云计算环境不同于第二云计算环境。这些环境也可以是相同类型的,或者共享多个特征。
该方法还包括:由第二代理收集可达性候选信息,以产生第二可达性候选信息(576),该可达性候选信息包括与第二代理不同且第二微服务所需要的其他微服务的端点相关信息;基于第二可达性候选信息,在服务器处接收对第二微服务的注册;以及由服务器认证第二微服务(578)。该方法还可以包括:从第一代理向服务器传输第一能够验证的身份文档(580);在第一代理处基于第一能够验证的身份文档从服务器接收第一有效证书,以产生第一认证(582);从第二代理向服务器传输第二能够验证的身份文档(584);以及在第二代理处基于第二能够验证的身份文档从服务器接收第二有效证书,以产生第二认证(586)。
附加步骤可以包括基于第一认证并且在第一代理处接收第一微服务的第一星座IP地址(588);以及基于第二认证并且在第二代理处接收第二微服务的第二星座IP地址(590)。服务器使能微服务发现并将星座IP地址分配给授权代理,使得在第一类型的第一微服务和第二类型的第二微服务之间具有端到端安全连接性和全局可达性。
在一个方面,第一类型不同于第二类型。例如,第一类型和第二类型各自可以包括容器、虚拟机、无服务器类型或裸机类型中的一者。第一类型可以是虚拟机,而第二类型可以是裸机类型。
在另一示例中,该方法还可以包括:基于第一认证和第二认证,在第一微服务和第二微服务之间建立直接隧道或间接隧道。确定是建立直接隧道还是间接隧道的步骤可以基于参考如图5C所示的相应连接性选项的表或数据库,并且该表可以包括针对第一微服务的第一连接性选项和针对第二微服务的第二活动选项。
当表550指示第一微服务利用IPv4协议而第二微服务利用IPv6协议时,建立还可以包括在第一微服务和第二微服务之间建立间接隧道。这是应用图5C所示表的结果。当表指示第一微服务利用IPv4协议并且是不能够穿透的NAT,并且第二微服务利用IPv4协议并且是不能够穿透的NAT时,建立还可以包括使用TURN中继562在第一微服务和第二微服务之间建立间接隧道。图5C中所示的各种选择也可以改变。何时使通信相关或何时使隧道是直接隧道的特定指派是示例性的,并且任何选择可以被指派给端点特性的任何组合。
用于在微服务星座中实现端到端安全连接性和全局可达性的服务器或系统,可以包括至少一个处理器和计算机可读存储设备。存储设备可以存储指令,这些指令在由至少一个处理器执行时,使该至少一个处理器执行操作,以产生根据本文公开的算法或步骤编程的专用计算机。指令可以包括以下中的一个或多个:从微服务星座中的第一客户端接收可达性信息和SPIFEE证书请求;处理SPIFEE证书请求以生成第一签名证书;将第一IPv6地址分配给第一客户端;在数据库中记录第一客户端可达性;将第一签名证书和第一IPv6地址传输到第一客户端;基于第一客户端的连接到第二客户端的连接请求,向第二客户端通知连接请求;向第一客户端和第二客户端发送可达性信息,以使得能够在第一客户端和第二客户端之间建立直接隧道或间接隧道,从而使得应用流量能够在第一客户端和第二客户端之间流动。本文公开的任何算法或一系列步骤,当在计算机系统上实现时,引起或导致该计算机系统成为专用计算机。
在另一方面,计算机可读存储设备存储附加指令,这些附加指令在由至少一个处理器执行时使至少一个处理器执行进一步包括以下操作中的一个或多个的操作:从微服务星座中的第二客户端接收可达性信息和第二SPIFEE证书请求;处理第二SPIFEE证书请求,以生成第二签名证书;将第二IPv6地址分派给第二客户端;在数据库中记录第二客户端可达性;以及将第二签名证书和第二IPv6地址传输到第二客户端,以使得应用流量能够通过直接隧道或间接隧道在第一客户端和第二客户端之间流动。
微服务星座可以包括第一类型的第一客户端和第二类型的第二客户端。第一客户端可以包括第一微服务和第一代理,该第一代理被配置为与第一微服务在一起、在第一微服务内或靠近第一微服务,并且其中第二客户端可以包括第二微服务和第二代理,该第二代理被配置为与第二微服务在一起、在第二微服务内或靠近第二微服务。在一个方面,第一类型和第二类型可以是相同类型的客户端,但是预期它们将是不同类型的。
图5E示出了从客户端和由客户端星座中的每个客户端执行的过程的立场来看的另一示例方法。一种方法,包括:在具有第一客户端和第二客户端的客户端星座中,其中第一客户端包括第一类型的第一微服务和相关联的第一代理,第二客户端包括第二类型的第二微服务和相关联的第二代理,在第一客户端处接收来自第二客户端的连接请求(592);检索与第二客户端相关联的端点可达性数据(594);以及基于端点可达性数据向服务器传输连接请求(595)。
该方法还包括:基于连接请求,从服务器接收与第二客户端相关联的端点可达性信息(596);在第一客户端处并且与第二客户端开始双向连接(597);以及基于双向连接,在第一客户端和第二客户端之间建立隧道(598)。隧道可以包括第一客户端和第二客户端之间的直接隧道或间接隧道中的一者。隧道的建立还可以基于类似于图5C中所示的表的表,该表将与第一客户端相关联的第一连接性选项映射到与第二客户端相关联的第二连接性选项,以确定在第一客户端和第二客户端之间是建立直接隧道还是间接隧道。该方法可以包括经由隧道在第一客户端和第二客户端之间传送应用数据(599)。
第一连接性选项和第二连接性选项各自都可以包括无防火墙的全局IPv6、入口阻塞的全局IPv6、无防火墙的全局IPv4、入口阻塞的全局IPv4、利用能够穿透的NAT的私有IPv4和利用不能够穿透的NAT的私有IPv4中的一者。当表(表的示例如图5C所示)指示第一微服务利用IPv4协议而第二微服务利用IPv6协议时,隧道的建立还包括在第一微服务和第二微服务之间建立间接隧道。在另一示例中,当表指示第一微服务利用IPv4协议并且是不能够穿透的NAT,并且第二微服务利用IPv4协议并且是不能够穿透的NAT时,隧道的建立还包括使用TURN中继在第一微服务和第二微服务之间建立间接隧道。服务器将第一星座IP地址分派给第一客户端,并将第二星座IP地址分派给第二客户端。在另一方面,相关联的第一代理和相关联的第二代理各自在隧道的建立期间实施策略。策略可以涉及安全性、效率、用户身份、微服务身份、能源使用、地理策略等。
图6示出了适合于实现本公开的方面的示例网络设备600。在一些示例中,可以根据网络设备600的配置来实现控制平面310和/或SVP 318。网络设备600包括中央处理器(CPU)604、接口602和连接610(例如,PCI总线)。当在适当的软件或固件的控制下工作时,CPU 604负责执行分组管理、错误检测和/或路由功能。CPU 604优选地在包括操作系统和任何适当的应用软件的软件的控制下完成所有这些功能。CPU 604可以包括一个或多个处理器608,诸如来自微处理器的INTEL X86系列的处理器。在一些情况下,处理器608可以是专门设计的用于控制网络设备600的操作的硬件。在一些情况下,存储器606(例如,非易失性RAM、ROM等)也形成CPU 604的一部分。然而,有许多不同的方式可以将存储器耦合到系统。
接口602通常提供为模块化接口卡(有时称为“线路卡”)。通常,接口控制通过网络发送和接收数据分组,并且有时支持与网络设备600一起使用的其他外围设备。在可以提供的接口中有以太网接口、帧中继接口、电缆接口、DSL接口、令牌环接口等。此外,可以提供各种超高速接口,诸如快速令牌环接口、无线接口、以太网接口、千兆比特以太网接口、ATM接口、HSSI接口、POS接口、FDDI接口、WiFi接口、3G/4G/5G蜂窝接口、CAN总线、LoRA等。通常,这些接口可以包括适于与适当介质通信的端口。在一些情况下,这些接口还可以包括独立的处理器,并且在一些情况下,易失性RAM。独立处理器可以控制诸如分组交换、媒体控制、信号处理、密码处理和管理的通信密集型任务。通过为通信密集型任务提供单独的处理器,这些接口允许CPU 604有效地执行路由计算、网络诊断、安全功能等。
尽管图6中所示的系统是本技术的一个特定网络设备,但该系统绝不是可以在其上实现本技术的唯一网络设备体系结构。例如,经常使用具有处理通信以及路由计算等的单个处理器的体系结构。此外,其他类型的接口和介质也可以与网络设备600一起使用。
无论网络设备的配置如何,该网络设备都可以采用一个或多个存储器或存储器模块(包括存储器606),这些存储器或存储器模块被配置为存储用于通用网络操作的程序指令以及用于本文所述的漫游、路由优化和路由功能的机制。例如,程序指令可以控制操作系统和/或一个或多个应用的操作。一个或多个存储器还可以被配置为存储表,诸如移动性绑定、注册和关联表等。存储器606还可以保存各种软件容器和虚拟化的执行环境和数据。
网络设备600还可以包括专用集成电路(ASIC),该专用集成电路可以被配置为执行路由和/或交换操作。ASIC可以经由连接610与网络设备600中的其他组件通信,以交换数据和信号并协调网络设备600的各种类型的操作,诸如路由、交换和/或数据存储操作。
图7示出了可以实现本文所描述的各种技术的示例计算设备的示例计算设备体系结构700。计算设备体系结构700的组件被示为使用诸如总线的连接705彼此电通信。示例计算设备体系结构700包括处理单元(CPU或处理器)710和计算设备连接705,该计算设备连接将包括诸如只读存储器(ROM)720和随机存取存储器(RAM)725的计算设备存储器715的各种计算设备组件耦合到处理器710。
计算设备体系结构700可以包括高速存储器的高速缓存,该高速缓存直接与处理器710连接、与处理器710非常接近或集成为处理器710的一部分。计算设备体系结构700可以将数据从存储器715和/或存储设备730复制到高速缓存712,以供处理器710快速访问。这样,高速缓存可以提供性能提升,避免处理器710在等待数据时的延迟。这些和其他模块可以控制或被配置为控制处理器710以执行各种动作。其他计算设备存储器715也可供使用。存储器715可以包括具有不同性能特性的多种不同类型的存储器。处理器710可以包括任何通用处理器和硬件或软件服务,诸如存储在存储设备730中的服务1 732、服务2 734和服务3 736,这些服务被配置为控制处理器710以及专用处理器,其中软件指令被结合到处理器设计中。处理器710可以是包含多个核或处理器、总线、存储器控制器、高速缓存等的自含式系统。多核处理器可以是对称或非对称的。
为了使用户能够与计算设备体系结构700交互,输入设备745可以表示任何数量的输入机制,诸如用于语音的麦克风、用于手势或图形输入的触敏屏幕、键盘、鼠标、运动输入、语音等等。输出设备735还可以是本领域技术人员已知的多个输出机制中的一个或多个,诸如显示器、投影仪、电视、扬声器设备等。在一些实例中,多模态计算设备可使用户能够提供多种类型的输入以与计算设备体系结构700通信。通信接口740通常可以控制和管理用户输入和计算设备输出。对在任何特定硬件布置上的操作没有限制,并且因此当改进的硬件或固件布置被开发时,本文的基本特征可以容易地被替换。
存储设备730是非易失性存储器,并且可以是硬盘或可以存储可由计算机访问的数据的其他类型的计算机可读介质,诸如磁带盒、闪存卡、固态存储器设备、数字多功能盘、盒式磁带、随机存取存储器(RAM)725、只读存储器(ROM)720及其混合。存储设备730可以包括用于控制处理器710的服务732、734、736。可以考虑其他硬件或软件模块。存储设备730可以连接到计算设备连接705。在一个方面,执行特定功能的硬件模块可以包括存储在计算机可读介质中的软件组件,该软件组件与诸如处理器710、连接705、输出设备735等的必要硬件组件相结合以执行该功能。
为了解释清楚,在一些情况下,本技术可以被呈现为包括单独的功能块,该功能块包括以软件或硬件和软件的组合体现的方法中的设备、设备组件、步骤或例程。
在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的有线或无线信号。然而,当提及时,非瞬态计算机可读存储介质明确地排除诸如能量、载波信号、电磁波和信号本身的介质。
根据上述示例的方法可以使用计算机可执行指令来实现,该计算机可执行指令被存储或可从计算机可读介质获得。这样的指令可以包括例如使得或以其他方式配置通用计算机、专用计算机或专用处理设备执行特定功能或功能组的指令和数据。可以通过网络访问所使用的计算机资源的部分。计算机可执行指令可以是例如二进制、诸如汇编语言的中间格式指令、固件或源代码。可用于存储在根据所描述的示例的方法期间使用的指令、信息和/或创建的信息的计算机可读介质的示例包括磁盘或光盘、闪存、配备有非易失性存储器的USB设备、联网存储设备等。
实现根据这些公开的方法的设备可以包括硬件、固件和/或软件,并且可以采用各种形状因子中的任何一种。这种形状因子的一些示例包括诸如服务器、机架安装设备、台式计算机、膝上型计算机等的通用计算设备,或者诸如平板计算机、智能电话、个人数字助理、可穿戴设备等的通用移动计算设备。本文描述的功能也可以体现在外围设备或附加卡中。作为进一步的示例,这样的功能也可以在不同芯片之间的电路板上实现,或者在单个设备中执行的不同过程中实现。
指令、用于输送这些指令的介质、用于执行这些指令的计算资源以及用于支持这些计算资源的其他结构是用于提供这些公开中所描述的功能的手段。
尽管使用了各种示例和其他信息来解释在所附权利要求的范围内的方面,但是基于这些示例中的特定特征或布置,不应暗示对权利要求的限制,因为本领域技术人员将能够使用这些示例来导出各种各样的实现。例如,可以从一个客户端、代理或边车代理机构、服务器410、传输客户端或接收客户端等的立场来起草声明。可以是传输、接收数据、建立隧道等的所有数据通信可以从整个网络内的这些节点或组件中的任何节点或组件的立场来定义。此外并且尽管一些主题可能已经用特定于结构特征和/或方法步骤的示例的语言进行了描述,应当理解,在所附权利要求中定义的主题不必限于这些所描述的特征或动作。例如,这样的功能可以不同地分布或在不同于本文所识别的组件中执行。相反,所描述的特征和步骤被公开为在所附权利要求的范围内的系统和方法的组件的示例。
引用集合“中的至少一个”的权利要求语言指示该集合的一个成员或该集合的多个成员满足该权利要求。例如,引用“A和B中的至少一个”的权利要求语言表示A、B或A和B。
Claims (23)
1.一种用于在微服务之间实现连接性的方法,所述方法包括:
在第一云计算环境中部署与第一微服务关联的第一代理,所述第一微服务是第一类型的;
由所述第一代理收集可达性候选信息,以产生第一可达性候选信息,所述可达性候选信息包括与所述第一代理不同且所述第一微服务所需的其他微服务的端点相关信息;
基于所述第一可达性候选信息在服务器处接收对所述第一微服务的注册,并且由所述服务器认证所述第一微服务;
在第二云计算环境中部署与第二微服务关联的第二代理,所述第二微服务是第二类型的,其中,所述第一云计算环境不同于所述第二云计算环境;
由所述第二代理收集可达性候选信息,以产生第二可达性候选信息,所述可达性候选信息包括与所述第二代理不同且所述第二微服务所需的其他微服务的端点相关信息;
基于所述第二可达性候选信息在所述服务器处接收对所述第二微服务的注册,并且由所述服务器认证所述第二微服务;
从所述第一代理向所述服务器传输第一能够验证的身份文档;
基于所述第一能够验证的身份文档,在所述第一代理处从所述服务器接收第一有效证书,以产生第一认证;
从所述第二代理向所述服务器传输第二能够验证的身份文档;
基于所述第二能够验证的身份文档,在所述第二代理处从所述服务器接收第二有效证书,以产生第二认证;
基于所述第一认证,在所述第一代理处接收用于所述第一微服务的第一星座互联网协议IP地址;
基于所述第二认证,在所述第二代理处接收用于所述第二微服务的第二星座IP地址。
2.根据权利要求1所述的方法,其中,所述第一类型不同于所述第二类型。
3.根据权利要求2所述的方法,其中,所述第一类型和所述第二类型各自包括容器、虚拟机、无服务器类型或裸机类型中的一者。
4.根据权利要求1至3中任一项所述的方法,还包括:
基于所述第一认证和所述第二认证,在所述第一微服务和所述第二微服务之间建立直接隧道或间接隧道。
5.根据权利要求4所述的方法,其中,确定是建立所述直接隧道还是所述间接隧道是基于参考相应连接性选项的表来进行的,所述表包括针对所述第一微服务的第一连接性选项和针对所述第二微服务的第二连接性选项。
6.根据权利要求5所述的方法,其中,当所述相应连接性选项的表指示所述第一微服务利用IPv4协议并且所述第二微服务利用IPv6协议时,所述建立还包括在所述第一微服务和所述第二微服务之间建立间接隧道。
7.根据权利要求5所述的方法,其中,当所述相应连接性选项的表指示所述第一微服务利用IPv4协议并且是不能够穿透的网络地址转换NAT,并且所述第二微服务利用IPv4协议并且是不能够穿透的NAT时,则所述建立还包括使用通过Relay方式穿越NAT(TURN)中继来在所述第一微服务和所述第二微服务之间建立间接隧道。
8.根据权利要求1至3中任一项所述的方法,其中,所述服务器使能微服务发现并将星座IP地址分配给经授权代理,使得在所述第一类型的所述第一微服务和所述第二类型的所述第二微服务之间具有端到端安全连接性和全局可达性。
9.一种用于在微服务星座中实现端到端安全连接性和全局可达性的服务器,所述服务器被配置为执行包括以下项的操作:
从微服务星座中的第一客户端接收可达性候选信息和第一每个人的安全生产身份框架SPIFEE证书请求;
处理所述第一SPIFEE证书请求,以生成第一签名证书;
将第一互联网协议第6版IPv6地址分派给所述第一客户端;
在数据库中记录第一客户端可达性;
将所述第一签名证书和所述第一IPv6地址传输到所述第一客户端;以及
基于所述第一客户端的连接到第二客户端的连接请求,向所述第二客户端通知所述连接请求,向所述第一客户端和所述第二客户端发送可达性候选信息,以使得能够在所述第一客户端和所述第二客户端之间建立直接隧道或间接隧道,从而使得应用流量能够在所述第一客户端和所述第二客户端之间流动。
10.根据权利要求9所述的服务器,所述操作还包括:
从所述微服务星座中的所述第二客户端接收可达性候选信息和第二SPIFEE证书请求;
处理所述第二SPIFEE证书请求,以生成第二签名证书;
将第二IPv6地址分派给所述第二客户端;
在所述数据库中记录第二客户端可达性;以及
将所述第二签名证书和所述第二IPv6地址传输到所述第二客户端,以使得所述应用流量能够通过所述直接隧道或所述间接隧道在所述第一客户端和所述第二客户端之间流动。
11.根据权利要求9至10中任一项所述的服务器,其中,所述微服务星座包括第一类型的所述第一客户端和第二类型的所述第二客户端。
12.根据权利要求11所述的服务器,其中,所述第一类型和所述第二类型是不同的,并且其中,所述第一类型和所述第二类型各自包括容器、无服务器组件、虚拟机和裸机中的一者。
13.根据权利要求12所述的服务器,其中,所述第一客户端包括第一微服务和第一代理,所述第一代理被配置为与所述第一微服务在一起、在所述第一微服务内或靠近所述第一微服务,并且其中,所述第二客户端包括第二微服务和第二代理,所述第二代理被配置为与所述第二微服务在一起、在所述第二微服务内或靠近所述第二微服务。
14.一种用于在微服务之间实现连接性的方法,所述方法包括:
在包括第一客户端和第二客户端的客户端星座中,在所述第一客户端处接收来自所述第二客户端的连接请求,其中,所述第一客户端包括第一类型的第一微服务和相关联的第一代理,并且所述第二客户端包括第二类型的第二微服务和相关联的第二代理;
检索与所述第二客户端相关联的端点可达性数据;
基于所述端点可达性数据,向服务器传输连接请求;
基于所述连接请求,从所述服务器接收与所述第二客户端相关联的端点可达性候选信息;
在所述第一客户端处,与所述第二客户端开始双向连接;
基于所述双向连接,在所述第一客户端和所述第二客户端之间建立隧道,其中,所述隧道包括所述第一客户端和所述第二客户端之间的直接隧道或间接隧道中的一者,其中,建立所述隧道是基于如下的表来进行的,该表将与所述第一客户端相关联的第一连接性选项映射到与所述第二客户端相关联的第二连接性选项,以确定在所述第一客户端和所述第二客户端之间是建立所述直接隧道还是所述间接隧道;以及
经由所述隧道在所述第一客户端和所述第二客户端之间传送应用数据。
15.根据权利要求14所述的方法,其中,所述第一连接性选项和所述第二连接性选项各自包括以下项中的一者:无防火墙的全局IPv6、入口阻塞的全局IPv6、无防火墙的全局IPv4、入口阻塞的全局IPv4、利用能够穿透的NAT的私有IPv4和利用不能够穿透的NAT的私有IPv4。
16.根据权利要求14至15中任一项所述的方法,其中,当所述表指示所述第一微服务利用IPv4协议并且所述第二微服务利用IPv6协议时,所述隧道的建立还包括在所述第一微服务和所述第二微服务之间建立间接隧道。
17.根据权利要求14所述的方法,其中,当所述表指示所述第一微服务利用IPv4协议并且是不能够穿透的NAT,并且所述第二微服务利用IPv4协议并且是不能够穿透的NAT时,所述隧道的建立还包括:通过Relay方式穿越NAT(TURN)中继来在所述第一微服务和所述第二微服务之间建立间接隧道。
18.根据权利要求14至15中任一项所述的方法,其中,所述第一类型和所述第二类型是不同的类型。
19.根据权利要求18所述的方法,其中,所述第一类型和所述第二类型各自是无服务器类型、虚拟机、容器和裸机中的一者。
20.根据权利要求14至15中任一项所述的方法,其中,所述服务器将第一星座IP地址分派给所述第一客户端,并且将第二星座IP地址分派给所述第二客户端。
21.根据权利要求14至15中任一项所述的方法,其中,所述相关联的第一代理和所述相关联的第二代理各自在所述隧道的建立期间实施策略。
22.一种用于在微服务之间实现连接性的方法,所述方法包括:
从微服务星座中的第一客户端接收可达性候选信息和每个人的安全生产身份框架SPIFEE证书请求;
处理所述SPIFEE证书请求,以生成第一签名证书;
将第一IPv6地址分派给所述第一客户端;
在数据库中记录第一客户端可达性;
将所述第一签名证书和所述第一IPv6地址传输到所述第一客户端;以及
基于所述第一客户端的连接到第二客户端的连接请求,向所述第二客户端通知所述连接请求,向所述第一客户端和所述第二客户端发送可达性候选信息,以使得能够在所述第一客户端和所述第二客户端之间建立直接隧道或间接隧道,从而使得应用流量能够在所述第一客户端和所述第二客户端之间流动。
23.一种包括计算机可执行指令的计算机可读介质,所述计算机可执行指令当被计算机或处理设备执行时,使所述计算机或所述处理设备执行根据权利要求1至8、14至21或22中的任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/439,441 US10764244B1 (en) | 2019-06-12 | 2019-06-12 | Systems and methods providing a multi-cloud microservices gateway using a sidecar proxy |
US16/439,441 | 2019-06-12 | ||
PCT/US2020/036072 WO2020251828A1 (en) | 2019-06-12 | 2020-06-04 | Systems and methods providing a multi-cloud microservices gateway using a sidecar proxy |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113950816A CN113950816A (zh) | 2022-01-18 |
CN113950816B true CN113950816B (zh) | 2023-08-18 |
Family
ID=71846446
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080043348.2A Active CN113950816B (zh) | 2019-06-12 | 2020-06-04 | 使用边车代理机构提供多云微服务网关的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10764244B1 (zh) |
EP (1) | EP3984201A1 (zh) |
CN (1) | CN113950816B (zh) |
CA (1) | CA3143107C (zh) |
WO (1) | WO2020251828A1 (zh) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210092103A1 (en) * | 2018-10-02 | 2021-03-25 | Arista Networks, Inc. | In-line encryption of network data |
US10771435B2 (en) | 2018-11-20 | 2020-09-08 | Netskope, Inc. | Zero trust and zero knowledge application access system |
CN110401696B (zh) * | 2019-06-18 | 2020-11-06 | 华为技术有限公司 | 一种去中心化处理的方法、通信代理、主机以及存储介质 |
US11082526B2 (en) * | 2019-08-19 | 2021-08-03 | International Business Machines Corporation | Optimizing large parameter passing in a service mesh |
US11301562B2 (en) * | 2019-10-23 | 2022-04-12 | Sap Se | Function execution based on data locality and securing integration flows |
US11973749B2 (en) * | 2020-03-31 | 2024-04-30 | Strata Identity Inc. | Systems, methods, and storage media for administration of identity management systems within an identity infrastructure |
US11399013B2 (en) * | 2020-04-20 | 2022-07-26 | Fortanix, Inc. | Secure service mesh |
US11349909B2 (en) * | 2020-07-06 | 2022-05-31 | Cisco Technology, Inc. | Microservice manager and optimizer |
US11375042B2 (en) * | 2020-07-10 | 2022-06-28 | Kyndryl, Inc. | Symphonizing serverless functions of hybrid services |
US11627117B2 (en) * | 2020-08-18 | 2023-04-11 | Fortanix, Inc. | Secure search service |
CN112019444B (zh) * | 2020-09-02 | 2023-04-18 | 广东省新一代通信与网络创新研究院 | 一种基于Istio技术的5G核心网系统 |
US11601471B2 (en) * | 2020-10-02 | 2023-03-07 | Cisco Technology, Inc. | Integrated service mesh control plane management |
CN112492060B (zh) * | 2020-11-18 | 2023-05-09 | 中国人寿保险股份有限公司 | 一种服务资源处理方法及系统、代理设备、请求设备 |
CN112689013A (zh) * | 2020-12-24 | 2021-04-20 | 中国农业银行股份有限公司 | 一种服务发现的系统、方法及装置 |
CN114697065B (zh) * | 2020-12-31 | 2024-04-30 | 中国联合网络通信集团有限公司 | 安全认证方法和安全认证装置 |
CN112910692B (zh) * | 2021-01-19 | 2022-08-02 | 中原银行股份有限公司 | 基于微服务网关的服务网格流量控制方法、系统和介质 |
US12047351B2 (en) * | 2021-02-03 | 2024-07-23 | Unisys Corporation | Network system architecture using a virtual private network (VPN) as a sidecar for containerized devices supporting containers |
CN113055465B (zh) * | 2021-03-11 | 2022-04-22 | 南京大学 | 一种支持事务一致性的微服务动态更新方法 |
WO2022219375A1 (en) * | 2021-04-15 | 2022-10-20 | Telefonaktiebolaget Lm Ericsson (Publ) | Secure multicloud connectivity for cloud-native applications |
CN113301116B (zh) * | 2021-04-15 | 2024-08-09 | 阿里巴巴创新公司 | 微服务应用跨网络通信方法、装置、系统及设备 |
US11968231B2 (en) * | 2021-08-04 | 2024-04-23 | International Business Machines Corporation | Intelligent request routing within service mesh |
US20230093868A1 (en) * | 2021-09-22 | 2023-03-30 | Ridgeline, Inc. | Mechanism for real-time identity resolution in a distributed system |
US11601393B1 (en) * | 2021-10-04 | 2023-03-07 | Cisco Technology, Inc. | Microservice visibility and control |
US12047440B2 (en) * | 2021-10-05 | 2024-07-23 | International Business Machines Corporation | Managing workload in a service mesh |
CN113709707B (zh) * | 2021-10-29 | 2022-03-15 | 中兴通讯股份有限公司 | 服务网格中边车部署的方法、装置、电子设备和存储介质 |
US11880727B2 (en) * | 2021-12-20 | 2024-01-23 | Intel Corporation | Dynamic application programming interface (API) contract generation and conversion through microservice sidecars |
CN114301919B (zh) * | 2021-12-30 | 2024-04-05 | 百融云创科技股份有限公司 | 一种基于Kubernetes的ICE框架改进方法 |
CN114363378B (zh) * | 2022-01-14 | 2022-10-11 | 上海交通大学 | 一种面向工业异构网络管理的微服务系统架构和管理方法 |
CN114117401B (zh) * | 2022-01-22 | 2022-05-27 | 深圳竹云科技股份有限公司 | Api安全调用方法、装置、设备以及计算机存储介质 |
CN114615321B (zh) * | 2022-03-25 | 2024-03-12 | 度小满科技(北京)有限公司 | 流量处理方法和装置 |
US20220224637A1 (en) * | 2022-04-01 | 2022-07-14 | Deepak S | Methods and apparatus for traffic control for application-independent service mesh |
CN114465827B (zh) * | 2022-04-11 | 2022-06-24 | 南京智人云信息技术有限公司 | 基于零信任网络的数据机密信息保护系统 |
GB202205485D0 (en) * | 2022-04-13 | 2022-05-25 | Enclave Networks Ltd | Computer-implemented methods and systems |
CN114900550B (zh) * | 2022-04-13 | 2024-05-07 | 度小满科技(北京)有限公司 | 一种通信方法以及相关装置 |
CN114945031B (zh) * | 2022-04-16 | 2024-06-07 | 深圳市爱为物联科技有限公司 | 一种支持海量设备多通讯协议及消息协议接入的云原生物联网平台 |
WO2023211537A1 (en) * | 2022-04-28 | 2023-11-02 | Microsoft Technology Licensing, Llc | Mutual authentication between clusters |
US20240028005A1 (en) * | 2022-07-18 | 2024-01-25 | Fisher-Rosemount Systems, Inc. | Securing Connections of a Process Control or Automation System |
US12033010B2 (en) | 2022-10-25 | 2024-07-09 | Cisco Technology, Inc. | Systems and methods for embedding service meshes into applications |
CN117240838B (zh) * | 2023-11-14 | 2024-01-26 | 富钛字节车载软件(长春)有限公司 | 一种基于云原生can调试系统 |
CN118175202B (zh) * | 2024-05-10 | 2024-09-03 | 中移(苏州)软件技术有限公司 | 代理连接方法、装置及相关设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108322472A (zh) * | 2016-05-11 | 2018-07-24 | 甲骨文国际公司 | 多租户身份和数据安全性管理云服务 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10892942B2 (en) * | 2016-01-22 | 2021-01-12 | Equinix, Inc. | Container-based cloud exchange disaster recovery |
US10255413B2 (en) * | 2016-02-04 | 2019-04-09 | International Business Machines Corporation | Microservices inter-operational trust management |
US9838376B1 (en) * | 2016-05-11 | 2017-12-05 | Oracle International Corporation | Microservices based multi-tenant identity and data security management cloud service |
US10404680B2 (en) * | 2016-08-11 | 2019-09-03 | Motorola Solutions, Inc. | Method for obtaining vetted certificates by microservices in elastic cloud environments |
US10846390B2 (en) * | 2016-09-14 | 2020-11-24 | Oracle International Corporation | Single sign-on functionality for a multi-tenant identity and data security management cloud service |
DE112017006994T5 (de) * | 2017-02-05 | 2019-10-17 | Intel Corporation | Bereitstellung und verwaltung von microservices |
US10382257B2 (en) * | 2017-03-16 | 2019-08-13 | International Business Machines Corporation | Microservices communication pattern for fault detection in end-to-end flows |
US10791105B2 (en) * | 2017-04-07 | 2020-09-29 | Microsoft Technology Licensing, Llc | Credential-based proactive discovery of remote micro-services by spreadsheet applications |
US10511651B2 (en) * | 2017-04-25 | 2019-12-17 | General Electric Company | Infinite micro-services architecture |
US20190034617A1 (en) * | 2017-07-31 | 2019-01-31 | Intel Corporation | Flexible container attestation |
US20190080062A1 (en) * | 2017-09-13 | 2019-03-14 | Coursera Inc. | Client call validity enforcement for microservices |
US10341841B2 (en) * | 2017-10-02 | 2019-07-02 | Servicenow, Inc. | Operation of device and application discovery for a managed network |
WO2019113308A1 (en) * | 2017-12-05 | 2019-06-13 | Franchitti Jean Claude | Active adaptation of networked compute devices using vetted reusable software components |
US20190235979A1 (en) * | 2018-01-31 | 2019-08-01 | Symantec Corporation | Systems and methods for performing computing cluster node switchover |
US11057393B2 (en) * | 2018-03-02 | 2021-07-06 | Cloudentity, Inc. | Microservice architecture for identity and access management |
US10798157B2 (en) * | 2018-12-28 | 2020-10-06 | Intel Corporation | Technologies for transparent function as a service arbitration for edge systems |
US10848974B2 (en) * | 2018-12-28 | 2020-11-24 | Intel Corporation | Multi-domain trust establishment in edge cloud architectures |
-
2019
- 2019-06-12 US US16/439,441 patent/US10764244B1/en active Active
-
2020
- 2020-06-04 CN CN202080043348.2A patent/CN113950816B/zh active Active
- 2020-06-04 CA CA3143107A patent/CA3143107C/en active Active
- 2020-06-04 WO PCT/US2020/036072 patent/WO2020251828A1/en unknown
- 2020-06-04 EP EP20747500.5A patent/EP3984201A1/en active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108322472A (zh) * | 2016-05-11 | 2018-07-24 | 甲骨文国际公司 | 多租户身份和数据安全性管理云服务 |
Also Published As
Publication number | Publication date |
---|---|
US10764244B1 (en) | 2020-09-01 |
CA3143107C (en) | 2024-05-14 |
CA3143107A1 (en) | 2020-12-17 |
WO2020251828A1 (en) | 2020-12-17 |
CN113950816A (zh) | 2022-01-18 |
EP3984201A1 (en) | 2022-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113950816B (zh) | 使用边车代理机构提供多云微服务网关的系统和方法 | |
US11516080B2 (en) | Using virtual networking devices and routing information to associate network addresses with computing nodes | |
CN112470436B (zh) | 用于提供多云连通性的系统、方法、以及计算机可读介质 | |
CN114374581B (zh) | 企业虚拟专用网络(vpn)与虚拟私有云(vpc)粘连 | |
US10225146B2 (en) | Using virtual networking devices to manage routing information | |
US10735217B2 (en) | Distributed internet access in an overlay fabric using combined local and remote extranet policies | |
US9467398B2 (en) | Using virtual networking devices to connect managed computer networks | |
US9577876B2 (en) | Using virtual networking devices to manage routing communications between connected computer networks | |
US8380819B2 (en) | Method to allow seamless connectivity for wireless devices in DHCP snooping/dynamic ARP inspection/IP source guard enabled unified network | |
US20160080213A1 (en) | Emulating virtual router device functionality in virtual computer networks | |
US11032369B1 (en) | System and method for non-disruptive migration of software components to a public cloud system | |
CN114365454B (zh) | 无状态安全功能的分布 | |
US20240039897A1 (en) | Technique for eliminating ingress-proxy in the multi-relay approach for privacy | |
CN116783580A (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 |