Multi-tenant cloud native control plane system

- Netskope, Inc.

A control plane system for providing data exchange between a plurality of gateway endpoints using a secure tunnel between the gateway endpoints. The system includes an end-user device, a cloud control plane, and a cloud provider. The end-user device includes a client endpoint providing a request for accessing data using a gateway device by sending data packets. The cloud control plane uses a data plane and a control plane for provisioning the request. The control plane is isolated from the data plane. Routing information of network traffic is received, a tenant associated with the request is identified and isolated. A network policy associated with the access to the data is identified based on the network patterns. The network policy specifies routing for access to the data and the secure tunnel. The access to the data is provided from the cloud provider to the client endpoint on the gateway device.

Skip to: Description  ·  Claims  ·  References Cited  · Patent History  ·  Patent History
Description
CLAIM FOR PRIORITY

This application claims the benefit of and priority to IN Provisional Patent Application No. 202311006913, filed on Feb. 2, 2023, titled “MULTI-TENANT CLOUD NATIVE CONTROL PLANE SYSTEM,” which is incorporated by reference in its entirety.

BACKGROUND

This disclosure relates in general to multi-tenant cloud native control plane systems and, but not by way of limitation, to a cloud native control plane and implementation of a tag-based VPN, among other things.

The classic routing model has a control plane and a data plane. The control plane determines the routing table for data packets from a request used by the data plane to forward the data packets. If one of the control plane or the data plane fails, the other of the control or data plane goes down. This leads to quality and latency-related problems in the network. To solve the problems, the control plane and the data plane were separated into different processes, then they were separated into two different hardware units. If the control plane had a bottleneck, a bigger control plane or a larger number of control plane units were used. However, managing two separate boxes right from an operation standpoint and from a network administration standpoint, two different hardware units are used to manage two different technologies. Rack space and power requisites also increased. The solution became inefficient in terms of management and operations of the separate control and data plane structures.

Moreover, a network engineer is often entailed to solve network issues during a team or conference call. Prioritizing a call over others is another problem that entails human intervention. Heavy network congestion further requires prediction and monitoring of the network. Network optimization including the establishment of direct tunnels between gateway endpoints is desired.

SUMMARY

In one embodiment, the present disclosure provides a multi-tenant cloud native control plane system for providing data exchange between a plurality of gateway endpoints using a secure tunnel between the gateway endpoints. The system includes an end-user device, a cloud control plane, and a cloud provider. The end-user device includes a client endpoint providing a request for accessing data using a gateway device by sending data packets. The cloud control plane uses a data plane and a control plane for provisioning the request. The control plane is isolated from the data plane. Routing information of network traffic is received, a tenant associated with the request is identified and isolated. A network policy associated with the access to the data is identified based on the network patterns. The network policy specifies routing for access to the data and the secure tunnel. The access to the data is provided from the cloud provider to the client endpoint on the gateway device.

In an embodiment, a multi-tenant cloud native control plane system for providing data exchange between a plurality of gateway endpoints using a secure tunnel between the gateway endpoints. The multi-tenant cloud native control plane system includes an end-user device including a client endpoint, a cloud control plane, and a cloud provider. The client endpoint is configured to provide a request for accessing data from the client endpoint using a gateway device. The request is provided by sending data packets. The cloud control plane is coupled to the end-user device. The cloud provider is configured to provide the access to the data. The cloud control plane provisions a connection from the gateway device to a control plane in the cloud control plane. The cloud control plane provisions the connection to a service endpoint at the cloud provider for providing the access to the data using a data plane and the control plane. The control plane is isolated from the data plane. The control plane identifies routing information of network traffic from a plurality of devices corresponding to a plurality of tenants. A tenant associated with the request is identified and isolated from the plurality of tenants. Network patterns are identified from the routing information. The network patterns include connections between devices, the gateway endpoints, user locations and/or device addresses. A network policy is determined associated with the access to the data based on the network patterns. The network policy specifies routing for access to the data. The network policy is based on tenant specific rules, applications, user locations, network, preferences, and/or priorities. The secure tunnel is determined from a plurality of tunnels for providing access to the data based on the network policy and the network patterns from the routing information. The secure tunnel connects the client endpoint and the service endpoint. The data packets are forwarded by the data plane for access to the data on the secure tunnel using the routing information. The access to the data is provided from the cloud provider to the client endpoint on the gateway device using the secure tunnel.

In another embodiment, a data exchange method for operating a multi-tenant cloud native control plane system that provides communication between a plurality of gateway endpoints and cloud services. In one step, a request is received for accessing data from a client endpoint using a gateway device. The request is provided by sending data packets. A cloud control plane is coupled to the end-user device. A cloud provider is configured to provide the access to the data. The cloud control plane provisions a connection from the gateway device to a control plane in the cloud control plane. The cloud control plane provisions the connection to a service endpoint at the cloud provider for providing the access to the data using a data plane and the control plane. The control plane is isolated from the data plane. The control plane identifies routing information of network traffic from a plurality of devices corresponding to a plurality of tenants. A tenant associated with the request is identified and isolated from the plurality of tenants. Network patterns are identified from the routing information. The network patterns include connections between devices, the gateway endpoints, user locations and/or device addresses. A network policy is determined associated with the access to the data based on the network patterns. The network policy specifies routing for access to the data. The network policy is based on tenant specific rules, applications, user locations, network, preferences, and/or priorities. The secure tunnel is determined from a plurality of tunnels for providing access to the data based on the network policy and the network patterns from the routing information. The secure tunnel connects the client endpoint and the service endpoint. The data packets are forwarded by the data plane for access to the data on the secure tunnel using the routing information. The access to the data is provided from the cloud provider to the client endpoint on the gateway device using the secure tunnel.

In yet another embodiment, cloud native control plane system for providing communication between a plurality of gateway endpoints for cloud services, the cloud native control plane system comprising a plurality of servers, collectively having code for:

    • receiving a request for accessing data from a client endpoint using a gateway device, wherein the request is provided by sending data packets;
    • provisioning a connection from the gateway device to a control plane in a cloud control plane, wherein: the cloud control plane provisions the connection to a service endpoint at a cloud provider for providing the access to the data using a data plane and the control plane, and the control plane is isolated from the data plane;
    • identifying by the control plane, routing information of network traffic from a plurality of devices corresponding to a plurality of tenants;
    • identifying a tenant associated with the request and isolating the tenant from the plurality of tenants;
    • identifying network patterns from the routing information, wherein the network patterns include connections between devices, the gateway endpoints, user locations, and/or device addresses;
    • determining a network policy associated with the access to the data based on the network patterns, wherein the network policy specifies routing for access to the data, and the network policy is based on tenant specific rules, applications, user locations, network, preferences, and/or priorities;
    • determining a secure tunnel from a plurality of tunnels for providing access to the data based on the network policy and the network patterns from the routing information, wherein the secure tunnel connects the client endpoint and the service endpoint;
    • forwarding the data packets by the data plane for access to the data on the secure tunnel using the routing information; and
    • providing the access to the data from the cloud provider to the client endpoint on the gateway device using the secure tunnel.

Further areas of applicability of the present disclosure will become apparent from the detailed description provided hereinafter. It should be understood that the detailed description and specific examples, while indicating various embodiments, are intended for purposes of illustration only and are not intended to necessarily limit the scope of the disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure is described in conjunction with the appended figures:

FIG. 1 illustrates a block diagram of an embodiment of a cloud native control plane system;

FIG. 2 illustrates a block diagram of an embodiment of a single-tenant cloud native control plane system where an end-user device communicates with a cloud provider;

FIG. 3 illustrates a block diagram of an embodiment of an end-user device that includes a client for enabling enhanced routing control;

FIG. 4 illustrates a block diagram of an embodiment of a client;

FIG. 5 illustrates an overview of a block diagram of an embodiment of a tag allocation by a cloud control plane;

FIG. 6 illustrates an overview of a block diagram of a cloud control plane;

FIG. 7 illustrates an overview of a block diagram of a tag manager;

FIG. 8 illustrates a block diagram of an embodiment of a cloud OSI model for cloud computing environments;

FIG. 9 illustrates a structural diagram of a multi-tenant cloud native control plane system;

FIG. 10 illustrates a flowchart of an embodiment of a data exchange process for operating a multi-tenant cloud native control plane system that provides communication between a plurality of gateway endpoints and cloud services; and

FIG. 11 illustrates a networking process for implementing a tag-based network configuration for a tenant in a network based on tags.

In the appended figures, similar components and/or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.

DETAILED DESCRIPTION

The ensuing description provides preferred exemplary embodiment(s) only, and is not intended to limit the scope, applicability or configuration of the disclosure. Rather, the ensuing description of the preferred exemplary embodiment(s) will provide those skilled in the art with an enabling description for implementing a preferred exemplary embodiment. It is understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope as set forth in the appended claims.

Referring first to FIG. 1, a block diagram of an embodiment of a cloud native control plane system 100 allowing multiple-tenants in different domains to communicate with various cloud providers over the public internet is shown. The cloud native control plane system 100 may be a multi-tenant cloud native control plane system or a single-tenant cloud native control plane system. The cloud native control plane system 100 includes a plurality of servers. The cloud native control plane system 100 allows multiple tenants/multi-tenant systems or enterprises to use the same network separated by domain or some other logical separation. Encryption, leased/encrypted tunnels, firewalls, and/or gateways can be used to keep the data from one enterprise 198 separate from other enterprise(s) 198. Individual end-user device 195 of an end-user 122 can communicate with a gateway device 104 and a cloud control plane 102 for services and storage using a public internet (not shown). The cloud control plane 102 provides multi-tenancy control, policies, and routing for individual domain. The cloud native control plane system 100 may include a plurality of servers. Sites 106, client devices 108, and Internet of Things (IoT) devices 110 are connected to the gateway device 104.

The cloud native control plane system 100 may include a first computing environment 150-1 having end-user devices 195-1 for a first domain, a second computing environment 150-2 having end-user devices 195-2 for a second domain, and a third computing environment 150-3 having end-user devices 195-3 for a third domain. Individual domain communicates with its respective enterprise 198 using a virtual private network (VPN) 112 over local area networks (LANs), wide area networks (WANs), and/or the public Internet. Instead of a VPN 112 as an end-to-end path, tunneling (e.g., Internet Protocol in Internet Protocol (IP-in-IP), Generic Routing Encapsulation (GRE)), policy-based routing (PBR), Border Gateway Protocol (BGP)/Interior Gateway Protocol (IGP) route injection, or proxies could be used. In one embodiment, the gateway device 104 may be a Secure access service edge (SASE) gateway spoke and the cloud control plane 102 may be a SASE gateway hub in a hub-spoke network. The gateway device 104 selects the closest data center (the cloud control plane 102), establishes tunnels, and performs intelligent app-aware traffic steering. The cloud control plane 102 or the data center provides site-to-site optimized connectivity for critical apps and traffic (especially voice/video). The gateway device 104 is connected to the cloud control plane via VPN 112-1. Cloud providers 140 for providing remote services may include public or private clouds including Web/Software as a service (SaaS) 116, SASE gateway public/private datacenter 118, and voice/video 120 connected to the cloud control plane 102 via VPN 112-4, VPN 112-2, and VPN 112-3 respectively. Enterprises 198 are connected to the cloud control plane 102 using the VPN 112-5. Some examples of cloud provider(s) 140 include Amazon Web Services (AWS)®, Google Cloud Platform (GCP)®, and Microsoft Azure®. Some or all of the cloud provider(s) 140 may be different from each other, for example, the first cloud provider 140-1 may run Amazon Web Services (AWS)®, the second cloud provider 140-2 may run Google Cloud Platform (GCP)®, and the third cloud provider 140-3 may run Microsoft Azure®. Although three cloud provider(s) 140 are shown, any suitable number of cloud provider(s) 140 may be provided with some captive to a particular enterprise or otherwise not accessible to multiple domains.

Each of the cloud providers 140 may communicate with the public Internet using a secure connection. For example, the first cloud provider 140-1 may communicate with the public Internet via a virtual private network (VPN) 112, the second cloud provider 140-2 may communicate with the public Internet via a different VPN 112, and the third cloud provider 140-3 may communicate with the public Internet via yet another VPN 112. Some embodiments could use leased connections or physically separated connections to segregate traffic. Although one VPN 112 is shown, it is to be understood that there are many VPNs to support different end-user devices, tenants, domains, etc.

A plurality of enterprises 198 may also communicate with the public Internet and the end-user devices 195 for their domain via VPNs 112. Some examples of the enterprises 198 may include corporations, educational facilities, governmental entities, and private consumers. Each enterprise may support one or more domains to logically separate their networks. The end-user devices 195 for each domain may include individual computers, tablets, servers, handhelds, and network infrastructure that are authorized to use computing resources of their respective enterprise 198.

Further, the cloud control plane 102 may communicate with the public Internet via a VPN 112. The cloud control plane 102 also provides cloud access security broker (CASB) functionality for cloud security to the enterprises 198 with data flows of the CASB being regulated with a global cloud traffic controller (GCTC). Communication between the cloud control plane 102 and the cloud provider(s) 140 for a given enterprise 198 can be either a VPN connection or tunnel depending on the preference of the enterprise 198. The cloud control plane 102 may configure, test, and enforce user and/or group policies and routing across the cloud native control plane system 100. For example, the cloud control plane 102 may ensure that the policies are consistent across the cloud providers 140, enterprises 198 and computing environments 150. The cloud control plane 102 provides proxies to cloud providers and may apply various policies. The connection between end-user devices 195 and the cloud control plane 102 is over an encrypted VPN 112 or tunnel. SASE Orchestrator and SASE Controller 114 is cloud native management and controller which is SaaS and multi-tenant compliant.

With reference to FIG. 2, a block diagram of an embodiment of a single-tenant cloud native control plane system 200 where an end-user device 195 communicates with a cloud provider 140 is shown. The end-user device 195 is operated by an end-user 122. The cloud provider 140 is accessible directly or through the cloud control plane 102 depending on the route chosen, services, policies, etc. Included in the cloud provider 140 are services 216 such as storage 212 that enable applications and functionality on the end-user devices 195.

Service endpoints 214 are provided in the cloud provider 140 to enable communication with the cloud control plane 102 and end-user devices 195. The service endpoints 214 may include VPN terminations and proxies that provide for secure tunnels with the cloud control plane 102 and/or the end-user devices 195. The cloud control plane 102 can optionally connect directly with the services 216 and the storage 212 of the cloud provider 140 without using the service endpoints 214. In some cases, the end-user device 195 communicates with the services 216 and the storage 212 through the cloud control plane 102 depending on route preference and policies.

Referring next to FIG. 3, a block diagram of an embodiment of an end-user device 195 that includes a client 304 for enabling enhanced routing control is shown. The end-user device 195 includes applications (apps) 302 and a browser 308 that use the client 304 for communication over the LAN 306 and ultimately to the cloud provider(s) 140 (not shown). The browser 308 and the app( ) 302 can be redirected using domain name services (DNS) to use the client 304. Alternatively, the browser 308 and the app(s) 302 may natively support the client 304 to utilize Application Programming Interfaces (APIs) or other communication to select policies and receive the corresponding user groups and/or user profiles.

Referring next to FIG. 4, a block diagram of an embodiment of a client 304 is shown that can specify by the policies and provide information which specifies grant to cloud services under the management of a client controller 404. The client controller 404 configures a DNS 408, fulfills API requests, populates routes, specifies the user and/or group policies, acquires the user directory information from a user interface 416, and a policy cache 412 for the selection of the policies. In operation, the client controller 404 configures data and service requests over the cloud native control plane system 100.

The user interface 416 acts as a a portal for the end-user(s) 122 to enter data and view information displays. The user interface 416 leverages the program module 410.

The client 304 can be specified for use with a DNS 408 which redirects traffic from browsers 308 and the app(s) 302 to go through the client 304. Without changing any apps 302 or the browser 308, the client 304 can process traffic for the single-tenant cloud native control plane system 100. The client 304 can operate as a proxy using service proxy 402 or a VPN using the client endpoint 406. An API 414 is provided for the app(s) 302 to configure the client 304 if they have that capability. The cloud control plane 102 may also configure the client 304.

The cloud control plane 102 sends relevant policies to the policy cache 412 to provide functionality to the client 304. The policies allow specifying tunnels or connections for providing a service requested by the end-user device 195 to use. The policies include network policies and tag policies. The network policies specify routing information based on the tenant specific rules, applications, user locations, network, preferences, and/or priorities associated with the end-user device 195. The tenant specific rules include restrictions on data access, connection, and network imposed by the tenant on the end-user(s) 122. For example, use Voice over Internet Protocol (VoIP) over wired network connections. The tag policies specify tags for endpoints (or endpoint gateways) of a network. The tag policies are based on tenant specific rules, a user location, a network connection, and/or a priority associated with the plurality of gateway endpoints, and the policy specifies connectivity between the tags.

Table 1 gives examples of network policies along with examples as deployed by the cloud control plane 102.

TABLE 1 Routing Tunnel Tenant Network Policies Routes A, B Tunnel 1 Enterprise 1 Printer access in the office from home Routes A, D Tunnel 2 Enterprise 2 Access social media using VPN 1 Routes C, D, Tunnel 5 Enterprise 3 Direct connection on team B calls Route A Tunnel 2 Enterprise 4 Fastest route on a secure network Route B Tunnel 2 Enterprise 5 Remote access on tunnel 2

A request for service is sent by the end-user 122 from the end-user device 195. The request is initiated through the gateway device 104 for access to the service in terms of data or content site, application, or browser, the request is forwarded by the gateway device 104 to the cloud control plane 102 by sending data packets. The network policies define the routing for access to the data. The network policies define routes and corresponding tunnels based on the enterprise 198 or the tenant of the end-user(s) 122 for establishing the connection with the cloud provider 140 for the service. From examples in table 1, a policy for accessing a printer in the office of enterprise 1 from home defines routes A and route B using tunnel 1 for providing the printout. Another policy for accessing social media using VPN 1 may be specified for routes A, D, using tunnel 2 and enterprise 2. Similarly, the network policies for direct connection for team calls, taking the fastest route on a secure network for important meetings, and remote work-from-home access on tunnel 2 for corresponding routes, tunnels, and enterprises as mentioned in table 1.

Table 2 gives examples of tag policies along with examples as deployed by the cloud control plane 102.

TABLE 2 Tag Tunnel Tenant Tag Policies Blue Tags Tunnel 1 Enterprise 1 Select blue tag, prioritize (Tag 1, Tag 4) VPN connection for team call Green Tags Tunnel 2 Enterprise 2 Select green tag, prioritize (Tag 2, Tag 4) VPN connection for Manager Yellow Tags Tunnel 5 Enterprise 3 Select yellow tag, (Tag 3, Tag 1) prioritize yellow tag over green tag Red Tags (Tag Tunnel 2 Enterprise 4 Select green tag, prioritize 2, Tag 5) blue, green, and yellow tags over red tag White Tags Tunnel 6 Enterprise 1, 2, 3 Select white tag when all (tag 1 and tag other tags are busy 2)

For setting up tag based VPN connection, tags are assigned for each gateway endpoint in a network such as the cloud native control plane system 100 based on a policy as shown in table 2. The policy specifies connectivity between the tags via tunnels. The tags specify a direct tunnel between the endpoints of the tags in order to establish a direct connection between the endpoints. The connection may be a VPN connection. For example, a tag policy specifies blue tags between tag 1 and tag 4 using tunnel 1 based on enterprise 1 requisites. Blue tag will be selected for establishing VPN connection for team call. Green tag between tag 2 and tag 4 will specify green tags for VPN connection for manager of enterprise 2 using tunnel 2. Yellow tag between tag 3 and tag 1 will specify tunnel 5 for enterprise 3. Yellow tags will be prioritized over green tag based on the tag policy. Red tags between tag 2 and tag 5 will specify tunnel 2 for enterprise 4. The blue, green, and yellow tags will be prioritized over the red tags for connection. Similarly, white tags between tag 1 and tag 2 will specify tunnel 6 for enterprise 1, enterprise 2, and enterprise 3. The white tags will be selected when all other tags are busy.

The program module 410 includes a software logic that helps in integration with external or third-party solutions for the domain and the enterprise 198 by the cloud control plane 102.

An Information Technology (IT) module 418 provides the administrators of enterprise 198 to enable and/or disable the user policies and/or group policies. Access to particular websites, the cloud provider(s) 140, and/or access to certain features within software of the enterprise 198. Alerts related to threats are indicated to the end-user(s) 122 via the user interface 416 by the administrators using the IT module 418.

The client endpoint 406 is used to establish the connection with the service endpoint 214 using the gateway device 104 for initiating the request for data from the cloud providers 140 via the cloud control plane 102.

Referring next to FIG. 5, an overview of an example of an embodiment 500 of tag allocation by a cloud control plane 102 is shown. The cloud control plane 102 assigns tags to each gateway endpoint 514, 516, 518, and 520 in a network of the cloud native control plane system 100. A SASE gateway (physical/hub) 500 in the cloud control plane 102 controls the implementation of the tags. The cloud control plane 102 assigns tags to the endpoints based on tag policies. The tag policies are based on tenant specific rules, an end-user location, a network connection of the end-user(s) 122, and/or a priority associated with the gateway endpoints. The tag policies specify connectivity between the tags. A data plane 502 is responsible for forwarding data packets based on the incoming request from the end-user device 195 and a control plane provides routing information to the data plane which defines the forwarding of the data packets by the data plane 502. The control plane is in the cloud control plane 102. The SASE gateway 500 identifies dynamic zones or regions from the incoming request.

The SASE gateway 500 identifies west region 504 and east region 506 with corresponding gateway endpoints 514, 516, 518, and 520 as zones. Tag 508 is assigned to the gateway endpoint 514 and the gateway endpoint 516 for communication between the gateway endpoint 514, and the gateway endpoint 516 in the west region. Similarly, tag 510 is assigned to the gateway endpoint 518 and the gateway endpoint 520 for communication between the gateway endpoint 518, and the gateway endpoint 520 in the east region. Tag 512 is assigned to the gateway endpoint 516 and the gateway endpoint 520 for communication between the gateway endpoint 516 in the west region and the gateway endpoint 520 in the east region. SASE Orchestrator 522 and SASE Controller 524 in the SasS control plane assist the SASE gateway 500 in controlling and implementing the tags in the network for communication in the east and west regions. In the example, east and west regions have been identified for communication. However, other regions, locations, and/or zones may be identified for communication.

Referring next to FIG. 6, an overview of a block diagram of the cloud control plane 102 is shown. The cloud control plane 102 provides the incoming requests from the end-user(s) 122 via the gateway device 104 to the cloud provider(s) 140. The cloud control plane 102 includes the control plane responsible for providing routing information for the data plane. The data plane forwards the data packets corresponding to the incoming requests. The cloud control plane 102 includes an orchestrator 602, a resiliency engine 604, a control plane 606, an input processor 608, a policy store 610, a tag manager 612, routes 614, a learning engine 616, a multi-tenant controller 618, a data plane 620, and a tunnel selector 622.

The orchestrator 602 provides the data exchange and tag control based on respective network and tag policies. The orchestrator 602 receives the incoming requests from the end-user(s) 122 using their end-user device 195. The request is provided via the gateway device 104. The request is for accessing data, content, browsing, accessing websites, applications, etc. The request is provided to the cloud provider 140. The orchestrator 602 receives the request from the input processor 608. The gateway device 104 provides data packets corresponding to the incoming request to the orchestrator 602. The orchestrator 602 provides the data packets to the control plane 606. The orchestrator 602 provides the network policies from the policy store 610 corresponding to the request to the control plane 606 along with the data packets. The orchestrator 602 further identifies region, zone or location associated with the request. The orchestrator 602 provides the request to the tag manager 612 for managing communication with the tags assigned to the gateway endpoints.

The policy store 610 includes the network policies and the tag policies. The policies are predefined either by an administrator, an enterprise 198, and/or the end-user 122. The network policies are based on tenant specific rules, applications, user locations, networks, preferences, and/or priorities. The tag policies are based on tenant specific rules, a user location, a network connection, and/or a priority associated with the plurality of gateway endpoints, and the policy specifies connectivity between the tags.

The multi-tenant controller 618 identifies the tenant from the request. The tenant identification and tenant isolation are performed by the multi-tenant controller 618. The request includes a tenant identifier or tenant ID which is used to identify the tenant of the end-user(s) 122 sending the request. The tenant identified is provided to the orchestrator 602 for policy identification.

The tag manager 612 identifies, assigns, and manages tags using the tag policies from the policy store 610. The control plane 606 uses the network policies from the orchestrator 602 to identify routing information for the data plane 620 that will process the data packets forwarding the data packets based on the routing information. The control plane 606 uses the network policies to identify the routing information specifically routing tables for the data plane 620. The network policies are based on network patterns from the network traffic received from the input processor 608. The control plane 606 identifies routes 614 including the routing information or the routing tables using the network policies and provides to the data plane 620 for forwarding the data packets to meet the requests. The routes 614 are provided to the learning engine 616 for analyzing the patterns of the requests and the corresponding routes that are identified.

The learning engine 616 identifies network patterns from the routing information of network traffic from a number of end-user devices 195 associated with a number of tenants. Machine learning algorithms, fuzzy logic, or the network patterns include connections between the end-user devices 195, the gateway endpoints, user locations, and/or device addresses. The network patterns are provided to the orchestrator 602 which is used to identify the network policies from the policy store 610. The learning engine 616 also provides the network patterns to the resiliency engine 604. The resiliency engine 604 identifies the status of the control plane 606 and the data plane 620 from the network patterns and the network traffic from the input processor 608 and signals from the data plane 620 and the control plane 606. The status includes a working condition of the control plane and the data plane. When either the data plane 620 or the control plane 606 fails, the status is identified by the resiliency engine 604 and indicated to the orchestrator 602 which initiates the data communication using the other one which is in a good health. The network does not go down and the request is fulfilled using the orchestrator 602.

In case the data plane 620 fails, the control plane 606 forwards the routing information to the orchestrator 602 that forwards the data packets to the cloud provider 140 on the routes 614 via a secure tunnel in order to meet the request. In case the control plane 606 fails, the data plane 620 forwards the data packets using the routing information from the orchestrator 602 in order to meet the request. The routes 614 and the secure tunnel are learned by the learning engine 616 from the past and current network patterns and network policies and provide the routes to the orchestrator 602 for selecting the secure tunnel and providing it to the data plane 620 for processing the request by forwarding the data packets on the secure tunnel.

The tunnel selector 622 identifies the secure tunnel from a number of tunnels for providing access to the data based on the policy using the network patterns from the routing information. The data packets are forwarded by the data plane 620 for providing the access to the data. The data packets are forwarded to the cloud provider(s) 140 on the secure tunnel using the routing information from the control plane 606. The access to the requested data is provided by the cloud provider(s) 140 which is pushed back to the end-user device 195 using the secure tunnel and displayed to the end-user(s) 122.

An example, a printer access initiated from an end-user(s) 122 at a home location to an office is requested which is met based on the tenant policies for remote work access. The printer access is provided using a secure tunnel and the printer access is provided using the secure tunnel.

Referring next to FIG. 7, an overview of a block diagram of the tag manager 612 is shown. The tag manager 612 assigns tags to the gateway endpoints in the cloud native control plane system 100 and manages the tags using the tag policies from the policy store 610. The tags are identified by the tag manager 612 based on the tag policies set by the enterprise 198, administrator, and/or the end-user(s) 122. The tag manager 612 includes a tag controller 702, a tag assignor 704, a prioritize engine 706, a configuration portal 708, a zone identifier 710, and a device database 712. An end-user(s) 122 uses the end-user device 195 on one gateway endpoint to request a connection to another gateway endpoint. The locations of the gateway endpoints may be different. For example, an end-user(s) 122 in the California office may request a connection for a meeting with another office in India. The data centers and the gateway endpoint are based in the corresponding locations. The locations of connection are different and in different zones a gateway endpoint in California in the west zone communicates to a gateway endpoint in India in the east zone. The gateway endpoints connect the corresponding end-users 122 in the zones for communication. The request is received from the input processor 608 by the tag controller 702 for processing the request.

The tag controller 702 manages the tag assignment and allows communication between the gateway endpoints using the tags. The tag controller 702 assigns the tags to each gateway endpoint in the cloud native control plane system 100 based on the tag policies from the policy store 610. The tag policies are based on tenant specific rules, a user location, a network connection, and/or a priority associated with setting a priority of access to the gateway endpoints. The tag policies specify connectivity between the tags.

The zone identifier 710 uses the request from the input processor 608 to identify a location or zone from where the request is initiated. The zone identifier 710 uses location identifiers in the request to identify the location of the request. The location is used to identify a zone associated with the request based on the location of the request. An example of the zone is California, Los Angeles, etc. The identified zone and location are provided to the tag assignor 704 for processing the tags for the gateway endpoints.

The tag assignor 704 uses the tag policies from the policy store 610 to assign the tags to each gateway endpoint in a network of the cloud native control plane system 100. The assigned tags may be referred to as blue tags, green tags, red tags, or yellow tags based on the tag policies associated with the request. For example, blue tags connect the east and west zones for tenant A for meetings, calls, or applications. Green tags connect offices in the east zone only, red tags connect enterprises 198 in the west zone only, and yellow tags connect calls in the west zone with those in the east zones.

The tag policies further specify tunnels corresponding to the enterprises 198 connections and the end-user(s) 122 activities. The network policies, the tag policies, and priorities of the tags for connection may be set by the administrator, the end-user(s) 122, or the enterprise 198 using the configuration portal 708. The configuration portal 708 is accessed by the administrator to set the network and tag policies.

The prioritize engine 706 analyzes the different tags for facilitating the connection request. The connection may be a VPN connection. A priority of the tags may be predefined by enterprises 198 and/or based on the tag policies. For example, the green tag may be preferred over the yellow tag or red tag. The tunnels via the green tags are preferred over the tunnels with yellow and red tags. An order of priority like green, yellow, red, and blue may be set in order of priority. The priority of the tags is provided to the tag controller 702 for managing the tags based on the priority.

The learning engine 616 identifies patterns from the connectivity of the tags. The patterns include connections between the devices, the gateway endpoints, user locations, and/or device addresses. The learning engine 616 provides the patterns to the tag controller 702 for specifying a number of tunnels between the tags based on the patterns and the connectivity of the tags. The device database 712 includes a database of devices of the gateway endpoints with corresponding device addresses. The database of devices is exchanged between the gateway endpoints using a protocol to establish the connection using the routes 614 between the gateway endpoints. The device addresses are used to connect the end-user device(s) 122.

The tunnel selector 622 identifies a secure tunnel from a number of tunnels based on the tags. The connection between the gateway endpoints is established via the secure tunnel using the routes 614.

Referring next to FIG. 8, a block diagram of an embodiment of a cloud OSI model for cloud computing environments is shown. The cloud OSI model 800 for cloud computing environments partitions the flow of data in a communication system into six layers of abstraction. The cloud OSI model 800 for cloud computing environments may include, in order, an application layer 810, a service layer 815, an image layer 820, a software-defined data center layer 825, a hypervisor layer 830, and an infrastructure layer 835. Each layer serves a class of functionality to the layer above it and is served by the layer below it. Classes of functionality may be realized in software by various communication protocols.

The infrastructure layer 835 may include hardware, such as physical devices in a data center, that provides the foundation for the rest of the layers. The infrastructure layer 835 may transmit and receive unstructured raw data between a device and a physical transmission medium. For example, the infrastructure layer 835 may convert the digital bits into electrical, radio, or optical signals.

The hypervisor layer 830 may perform virtualization, which may allow the physical devices to be divided into virtual machines that can be bin packed onto physical machines for greater efficiency. The hypervisor layer 830 may provide virtualized compute, storage, and networking. For example, OpenStack® software that is installed on bare metal servers in a data center may provide virtualization cloud capabilities. The OpenStack® software may provide various infrastructure management capabilities to cloud operators and administrators and may utilize the Infrastructure-as-Code concept for deployment and lifecycle management of a cloud data center. In the Infrastructure-as-Code concept, the infrastructure elements are described in definition files. Changes in the files are reflected in the configuration of data center hosts and cloud services.

The software-defined data center layer 825 may provide resource pooling, usage tracking, and governance on top of the hypervisor layer 830. The software-defined data center layer 825 may enable the creation of virtualization for the Infrastructure-as-Code concept by using representational state transfer (REST) Application Programming Interfaces (APIs). The management of block storage devices may be virtualized, and end users may be provided with a self-service API to request and consume those resources without requiring any knowledge of where the storage is deployed or on what type of device. Various compute nodes may be balanced for storage.

The image layer 820 may use various operating systems and other pre-installed software components. Patch management may be used to identify, acquire, install, and verify patches for products and systems. Patches may be used to correct security and functionality problems in software. Patches may also be used to add new features to operating systems, including security capabilities. The image layer 820 may focus on the compute instead of storage and networking. The instances within the cloud computing environments may be provided at the image layer 820.

The service layer 815 may provide middleware, such as functional components that applications use in tiers. In some examples, the middleware components may include databases, load balancers, web servers, message queues, email services, or other notification methods. The middleware components may be defined at the service layer 815 on top of particular images from the image layer 820. Different cloud computing environment providers may have different middleware components.

The application layer 810 may interact with software applications that implement a communicating component. The application layer 810 is the layer that is closest to the end-user(s) 122 and allows the identification of the routing information of the network traffic and the determination of the secure tunnel for providing the access to the data. The application layer 810 allows the determination of the tunnel for establishing the network connection. Functions of the application layer 810 may include identifying communication partners, determining resource availability, and synchronizing communication. Applications within the application layer 810 may include custom code that makes use of middleware defined in the service layer 815.

Various features discussed above may be performed at one or more layers of the cloud OSI model 800 for cloud computing environments. For example, translating the general policies into specific policies for different cloud computing environments may be performed at the service layer 815 and the software-defined data center layer 825. The policies and the tokens operate at application layer 810. Various scripts may be updated across the service layer 815, the image layer 820, and the software-defined data center layer 825. Further, APIs and policies may operate at the application layer 810 which is at a web browser.

Individual cloud computing environments may have different service layers 815, image layers 820, software-defined data center layers 825, hypervisor layers 830, and infrastructure layers 835. Further, each of the different cloud computing environments may have an application layer 810 that can make calls to the specific policies in the service layer 815 and the software-defined data center layer 825. The application layer 810 may have substantially the same format and operation for individual cloud computing environments. Accordingly, developers for the application layer 810 may not need to understand the peculiarities of how each of the cloud computing environments operates in the other layers.

Referring next to FIG. 9, a structural diagram of a multi-tenant cloud native control plane system 900 is shown. The multi-tenant cloud native control plane system 900 is the cloud native control plane system 100 with multiple tenants and multiple clouds. The multi-tenant cloud native control plane system 900 includes a cloud native control and data plane 902, a cloud native management plane 904, client devices 906, tenants 908 (including tenant 908-1 and tenant 908-2), a monitoring and analytics system 910, and a gateway device 912. The separation of the control plane cloud fabric and the data plane control fabric provides enhanced resiliency to the system.

The cloud native control and data plane 902 includes the control plane cloud fabric for performing the functions of the cloud plane including identifying routing information for data packets of request and providing the routing information to the data plane cloud fabric. The data plane cloud fabric includes the data plane for forwarding the data packets to a service provider (not shown) based on the routing information received from the control plane. The control plane cloud fabric includes control plane tenants corresponding to the different tenants 908. Similarly, the data plane cloud fabric includes data plane tenants corresponding to the different tenants 908.

An orchestrator service performs operational and functional processes involved in providing the service in the control plane cloud fabric and the data plane cloud fabric. The Border Gateway Protocol (BGP) is a protocol used to exchange the routing information and the device addresses for the service plane. Forwarding (FWDING) is a feature that enables forwarding the data packets and Application Proxy (App proxy) is a feature that enables end-user(s) 122 to access on-premises web applications from a remote client.

The client devices 906 includes clientless Zero Trust Network Access (ZTNA) that uses a browser plug-in on the client device 906 to create a secure tunnel and perform the device authentication and application access.

The cloud native management plane 904 includes various components for cloud management including an authentication service for authenticating the request from the end-user(s) 122, a management service to manage the requests from multiple end-users 122, and an identity service for performing the identification of the end-users 122 and the end-user devices 195 making the requests. A telemetry service for recording and transmitting data from the end-user devices 195 to the monitoring and analysis system 910 for monitoring and analysis of the acquired data. An Application Programming Interface (API) service facilitates Representational state transfer (REST)/API/JavaScript object notation (JASON) interactions of the cloud native management plane 904 with the monitoring and analytics system 910. A Big Query component allows data analytics for the cloud native management plane 904. The monitoring and analytics system 910 includes DevOps for data testing, Application Programming Interface (API)/Workflow allows running workflows, and the monitoring and analytics unit performs data monitoring and analytics on the data exchanged with the gateway endpoints.

Configuration/telemetry is used by the gateway device 912 to communicate with the cloud native management plane 904. The gateway device 912 is an inline device connected to the end-user device 195 using the Internet and used to route the requests of the end-user device 195 to the service provider. The service provider may be the cloud provider 140. Based on the configuration of the gateway device 912, the end-user device 195 communicates to the cloud native management plane 904. The cloud native management plane 904 responds to the gateway device 195 and the request is processed to the control plane in the cloud native control and data plane 902. The control plane provides the routing information to the data plane for forwarding the data packets corresponding to the request to the service provider for processing the request. The service provider responds to the request by providing access to the data on a secure tunnel.

Referring next to FIG. 10, a flowchart of an embodiment of a data exchange process 1000 for operating a multi-tenant cloud native control plane system that provides communication between a plurality of gateway endpoints and cloud services is shown. The depicted portion of the process begins at block 1002 where the end-user(s) 122 of the end-user device 195 requests for access to a service or data from the cloud provider(s) 140. The request is received by the cloud control plane 102 from the client endpoint 406 of the end-user device 195 via the gateway device 104. The request is provided by sending data packets to the cloud control plane 102. The cloud control plane 102 provisions the connection to a service endpoint 214 at the cloud provider(s) 140 for providing the access to the data using a data plane and a control plane.

At block 1004, a tenant of the request is identified by the cloud control plane 102. The tenant is an enterprise 198 of the end-user(s) 122. At block 1006, the tenant is isolated from the other tenants in a network of the multi-tenant cloud native control plane system. Tenant identification and tenant isolation are important for processing the request because access to the data will depend on the tenancy associated with the end-user(s) 122.

At block 1008, resiliency of the network is identified based on whether the control plane or the data plane has failed to work. That is, the working condition of the control plane and the data plane is identified. During a bottleneck situation and network congestion, either the control plane or data plane might fail to work which results in connection failure. In order to maintain the network/network connection and meet the request of the end-user(s) 122, the failure of the control plane or the data plane is checked by the resiliency engine 604 of the cloud control plane 102. Since the components including the control plane and the data plane are separated and isolated from each other, the failure of one component does not affect the working of the other component. If the control plane fails then at block 1010, the data plane is used to maintain the network. Similarly, if the data plane fails then at block 1010, the control plane is used to maintain the network. If both the control plane and the data plane are working and have not failed, then at block 1012, routing information is identified to establish the network connection for the request.

The cloud control plane 102 identifies network patterns from the traffic coming from the end-user devices 122 of the tenants. The control plane had provided routing information corresponding to the traffic coming from the end-user device(s) 122 in the past. The network patterns include connections between the end-user device(s) 122, the gateway endpoints, user locations, and/or device addresses. The network patterns are used by the cloud control plane 102 to determine a network policy associated with access to the data.

At block 1014, the network policy specifies routing for access to the data, and the network policy is based on tenant specific rules, applications, user locations, network, preferences, and/or priorities. The network policies are stored in the policy store 610.

At block 1016, a secure tunnel from a number of tunnels is selected for providing access to the data based on the network policy. The secure tunnel is the best route or tunnel for access to the data. The secure tunnel is used by the cloud provider(s) 140 for providing the access to the data requested by the end-user(s) 122. The data plane forwards the data packets on the secure tunnel for providing access to the data using the routing information from the control plane.

At block 1018, the data is accessed by the end-user(s) 122 via the secure tunnel. The secure tunnel connects the client endpoint 406 and the service endpoint 214 for providing the data to the end-user(s) 122 on the end-user device 195. For example, the request for accessing a social media page is provided to the end-user(s) 122 for a specific time limit based on the network policies of the tenant of the end-user(s) 122.

Referring next to FIG. 11, a flowchart of an embodiment of a networking process 1100 for implementing a tag-based network configuration for a tenant in a network based on tags is shown. The depicted portion of the process 1100 begins at block 1102 where a request for a network connection is received by the cloud control plane 102 from an end-user(s) 122 using the end-user device 195 in a cloud native control plane system 100. The network connection may be a VPN connection. The cloud control plane 102 provisions the network connection to the cloud provider(s) 140 by processing the request based on the tags. The request is initiated to the cloud provider(s) 140 for access to a service or data like browsing, applications, content etc. The connection is to be established between the client endpoint 406 of the client device 195 and the service endpoint 214 of the cloud provider(s) 140. A tenant associated with the request is identified and isolated from multiple tenants by the cloud control plane 102.

At block 1104, zones are identified based on the request. The zones include locations of the client endpoint 406 and location of the service endpoint 214 of the cloud provider(s) 140. The client endpoint 406 of the end-user device 195 makes the request and the service endpoint 214 of the cloud provider(s) 140 responds to the request.

At block 1106, a tag is assigned to each gateway endpoint in the network based on a tag policy. The tag policy is based on the zones, tenant specific rules, a user location, a network connection, and/or a priority associated with the gateway endpoints. The tag policy specifies connectivity between the tags. The tag policy is stored in the policy store 610. The tags associated with the request are determined for the connection.

At block 1108, connectivity of the tags between the endpoints is identified from the network traffic coming from the gateway endpoints of the end-user devices 195. Patterns from the connectivity of the tags are identified. The patterns include connections between the end-user devices 195, the gateway endpoints, user locations, and/or device addresses. A number of tunnels between the tags is specified based on the patterns and the connectivity of the tags.

At block 1110, a database of devices with corresponding device addresses is generated. The devices are associated with the corresponding gateway endpoints in the network and are used to establish network connections. The database of devices is exchanged between the gateway endpoints using a protocol to determine routes between the gateway endpoints. The routes specify tunnels between the gateway endpoints.

At block 1112, a secure tunnel from the number of tunnels is identified based on the tags of the gateway endpoints associated with the tenant. At block 1112, the identified secure tunnel is determined to be the best route for the network connection based on the tag policies. If the secure tunnel is not available, the next best route is identified at block 1114. The database of devices is exchanged again at block 1116 to find out the next best tunnel based on the priority set by the tag policies. For example, if a tunnel between green tags is not available, a tunnel between blue tags may be selected as the best route. In another example, the green tag may be preferred over the yellow tag or red tag. The process continues until the tunnel is available to meet the request. The network connection is established between the client endpoint 406 and the service endpoint 214 via the tunnel based on the tunnel being the best route for the network connection.

Specific details are given in the above description to provide a thorough understanding of the embodiments. However, it is understood that the embodiments may be practiced without these specific details. For example, circuits may be shown in block diagrams in order not to obscure the embodiments in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments.

Implementation of the techniques, blocks, steps and means described above may be done in various ways. For example, these techniques, blocks, steps and means may be implemented in hardware, software, or a combination thereof. For a hardware implementation, the processing units may be implemented within one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), processors, controllers, micro-controllers, microprocessors, other electronic units designed to perform the functions described above, and/or a combination thereof.

Also, it is noted that the embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a swim diagram, a data flow diagram, a structure diagram, or a block diagram. Although a depiction may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed, but could have additional steps not included in the figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function.

Furthermore, embodiments may be implemented by hardware, software, scripting languages, firmware, middleware, microcode, hardware description languages, and/or any combination thereof. When implemented in software, firmware, middleware, scripting language, and/or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine readable medium such as a storage medium. A code segment or machine-executable instruction may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a script, a class, or any combination of instructions, data structures, and/or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, and/or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.

For a firmware and/or software implementation, the methodologies may be implemented with modules (e.g., procedures, functions, and so on) that perform the functions described herein. Any machine-readable medium tangibly embodying instructions may be used in implementing the methodologies described herein. For example, software codes may be stored in a memory. Memory may be implemented within the processor or external to the processor. As used herein the term “memory” refers to any type of long term, short term, volatile, nonvolatile, or other storage medium and is not to be limited to any particular type of memory or number of memories, or type of media upon which memory is stored.

Moreover, as disclosed herein, the term “storage medium” may represent one or more memories for storing data, including read only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices and/or other machine readable mediums for storing information. The term “machine-readable medium” includes, but is not limited to portable or fixed storage devices, optical storage devices, and/or various other storage mediums capable of storing that contain or carry instruction(s) and/or data.

While the principles of the disclosure have been described above in connection with specific apparatuses and methods, it is to be clearly understood that this description is made only by way of example and not as limitation on the scope of the disclosure.

Claims

1. A multi-tenant cloud native control plane system for providing data exchange between a plurality of gateway endpoints using a secure tunnel between the gateway endpoints, the multi-tenant cloud native control plane system comprises:

an end-user device including a client endpoint, the client endpoint is configured to: provide a request for accessing data from the client endpoint using a gateway device, wherein the request is provided by sending data packets; a cloud control plane coupled to the end-user device; and a cloud provider configured to provide access to the data, wherein the cloud control plane is configured to: provision a connection from the gateway device to a control plane in the cloud control plane, wherein: the cloud control plane provisions the connection to a service endpoint at the cloud provider for providing the access to the data using a data plane and the control plane, and the control plane is isolated from the data plane; identify by the control plane, routing information of network traffic from a plurality of devices corresponding to a plurality of tenants; identify a tenant associated with the request and isolate the tenant from the plurality of tenants; identify network patterns from the routing information, wherein the network patterns include connections between devices, the gateway endpoints, user locations or device addresses; determine a network policy associated with the access to the data based on the network patterns, wherein the network policy specifies routing for access to the data, and the network policy is based on tenant specific rules, applications, the user locations, network preferences, or priorities; determine the secure tunnel from a plurality of tunnels for providing access to the data based on the network policy and the network patterns from the routing information, wherein the secure tunnel connects the client endpoint and the service endpoint; forward the data packets by the data plane for access to the data on the secure tunnel using the routing information; and provide the access to the data from the cloud provider to the client endpoint on the gateway device using the secure tunnel.

2. The multi-tenant cloud native control plane system for providing data exchange between a plurality of gateway endpoints using a secure tunnel between the gateway endpoints as recited in claim 1, wherein the tenant specific rules include restrictions on data access, connection, and network imposed by the tenant on end-users.

3. The multi-tenant cloud native control plane system for providing data exchange between a plurality of gateway endpoints using a secure tunnel between the gateway endpoints as recited in claim 1, wherein the request includes a tenant identifier used to identify the tenant of the request.

4. The multi-tenant cloud native control plane system for providing data exchange between a plurality of gateway endpoints using a secure tunnel between the gateway endpoints as recited in claim 1, wherein the routing information includes routing tables.

5. The multi-tenant cloud native control plane system for providing data exchange between a plurality of gateway endpoints using a secure tunnel between the gateway endpoints as recited in claim 1, wherein an application layer allows the identification of the routing information of the network traffic and the determination of the secure tunnel for providing the access to the data.

6. The multi-tenant cloud native control plane system for providing data exchange between a plurality of gateway endpoints using a secure tunnel between the gateway endpoints as recited in claim 1, further comprising identifying a status of the control plane and the data plane, wherein the status includes a working condition of the control plane and the data plane.

7. The multi-tenant cloud native control plane system for providing data exchange between a plurality of gateway endpoints using a secure tunnel between the gateway endpoints as recited in claim 1, wherein a resiliency of the network of the multi-tenant cloud native control plane system is identified based on a working condition of the control plane and the data plane, the working condition includes a failure of the control plane or the data plane, and the network is maintained after the failure of one of the control plane or the data plane.

8. A data exchange method for operating a multi-tenant cloud native control plane system that provides communication between a plurality of gateway endpoints and cloud services, the data exchange method comprises:

receiving a request for accessing data from a client endpoint using a gateway device, wherein the request is provided by sending data packets;
provisioning a connection from the gateway device to a control plane in a cloud control plane, wherein: the cloud control plane provisions the connection to a service endpoint at a cloud provider for providing access to the data using a data plane and the control plane, and the control plane is isolated from the data plane; identifying by the control plane, routing information of network traffic from a plurality of devices corresponding to a plurality of tenants; identifying a tenant associated with the request and isolating the tenant from the plurality of tenants; identifying network patterns from the routing information, wherein the network patterns include connections between devices, the gateway endpoints, user locations, or device addresses; determining a network policy associated with the access to the data based on the network patterns, wherein the network policy specifies routing for access to the data, and the network policy is based on tenant specific rules, applications, the user locations, network preferences, or priorities; determining a secure tunnel from a plurality of tunnels for providing access to the data based on the network policy and the network patterns from the routing information, wherein the secure tunnel connects the client endpoint and the service endpoint; forwarding the data packets by the data plane for access to the data on the secure tunnel using the routing information; and providing the access to the data from the cloud provider to the client endpoint on the gateway device using the secure tunnel.

9. The data exchange method for operating a multi-tenant cloud native control plane system that provides communication between a plurality of gateway endpoints and cloud services as recited in claim 8, wherein the tenant specific rules include restrictions on data access, connection, and network imposed by the tenant on end-users.

10. The data exchange method for operating a multi-tenant cloud native control plane system that provides communication between a plurality of gateway endpoints and cloud services as recited in claim 8, wherein the request includes a tenant identifier used to identify the tenant of the request.

11. The data exchange method for operating a multi-tenant cloud native control plane system that provides communication between a plurality of gateway endpoints and cloud services as recited in claim 8, wherein the routing information includes routing tables.

12. The data exchange method for operating a multi-tenant cloud native control plane system that provides communication between a plurality of gateway endpoints and cloud services as recited in claim 8, wherein an application layer allows the identification of the routing information of the network traffic and the determination of the secure tunnel for providing the access to the data.

13. The data exchange method for operating a multi-tenant cloud native control plane system that provides communication between a plurality of gateway endpoints and cloud services as recited in claim 8, further comprising identifying a status of the control plane and the data plane, wherein the status includes a working condition of the control plane and the data plane.

14. The data exchange method for operating a multi-tenant cloud native control plane system that provides communication between a plurality of gateway endpoints and cloud services as recited in claim 8, wherein a resiliency of the network of the multi-tenant cloud native control plane system is identified based on a working condition of the control plane and the data plane, the working condition includes a failure of the control plane or the data plane, and the network is maintained after the failure of one of the control plane or the data plane.

15. A non-transitory computer-readable medium comprising computer-executable code, the computer-executable code configured for:

receiving a request for accessing data from a client endpoint using a gateway device, wherein the request is provided by sending data packets;
provisioning a connection from the gateway device to a control plane in a cloud control plane, wherein: the cloud control plane provisions the connection to a service endpoint at a cloud provider for providing access to the data using a data plane and the control plane, and the control plane is isolated from the data plane; identifying by the control plane, routing information of network traffic from a plurality of devices corresponding to a plurality of tenants; identifying a tenant associated with the request and isolating the tenant from the plurality of tenants; identifying network patterns from the routing information, wherein the network patterns include connections between devices, the gateway endpoints, user locations, or device addresses; determining a network policy associated with the access to the data based on the network patterns, wherein the network policy specifies routing for access to the data, and the network policy is based on tenant specific rules, applications, the user locations, network preferences, or priorities; determining a secure tunnel from a plurality of tunnels for providing access to the data based on the network policy and the network patterns from the routing information, wherein the secure tunnel connects the client endpoint and the service endpoint; forwarding the data packets by the data plane for access to the data on the secure tunnel using the routing information; and providing the access to the data from the cloud provider to the client endpoint on the gateway device using the secure tunnel.

16. The non-transitory computer-readable medium comprising computer-executable code as recited in claim 15, wherein the tenant specific rules include restrictions on data access, connection, and network imposed by the tenant on end-users.

17. The non-transitory computer-readable medium comprising computer-executable code as recited in claim 15, wherein the request includes a tenant identifier used to identify the tenant of the request.

18. The non-transitory computer-readable medium comprising computer-executable code as recited in claim 15, wherein the routing information includes routing tables.

19. The non-transitory computer-readable medium comprising computer-executable code as recited in claim 15, wherein an application layer allows the identification of the routing information of the network traffic and the determination of the secure tunnel for providing the access to the data.

20. The non-transitory computer-readable medium comprising computer-executable code as recited in claim 15, further comprises identifying a status of the control plane and the data plane, wherein the status includes a working condition of the control plane and the data plane.

Referenced Cited
U.S. Patent Documents
9614737 April 4, 2017 Brandwine et al.
9912582 March 6, 2018 Pourzandi
10305757 May 28, 2019 Yadav et al.
10802743 October 13, 2020 Catthoor et al.
11159419 October 26, 2021 Roersma
20030120822 June 26, 2003 Langrind et al.
20140259093 September 11, 2014 Narayanaswamy
20150317169 November 5, 2015 Sinha et al.
20170264640 September 14, 2017 Narayanaswamy
20170359247 December 14, 2017 Dixon
20180026885 January 25, 2018 Jeuk
20190280964 September 12, 2019 Michael et al.
20220045985 February 10, 2022 Bareket
20220191301 June 16, 2022 Muller et al.
20220385534 December 1, 2022 Cohen et al.
Foreign Patent Documents
106293508 January 2017 CN
107113195 August 2017 CN
108696458 January 2021 CN
109818918 January 2022 CN
106293508 November 2019 IN
2016014323 January 2016 WO
Patent History
Patent number: 11916775
Type: Grant
Filed: Mar 17, 2023
Date of Patent: Feb 27, 2024
Assignee: Netskope, Inc. (Santa Clara, CA)
Inventors: Parag Pritam Thakore (Los Gatos, CA), Sunil Mukundan (Chennai), Anupam Rai (Fremont, CA)
Primary Examiner: Alpus Hsu
Assistant Examiner: Hooman Houshmand
Application Number: 18/185,967
Classifications
Current U.S. Class: Policy (726/1)
International Classification: H04L 45/02 (20220101); H04L 12/46 (20060101);