Volterra Site

Definition of a Site

Site is a physical or cloud location where Volterra Nodes are deployed. Site can be a public cloud location like AWS VPC, Azure VNET, GCP VPC, physical datacenter, or an edge location like manufacturing site, factory, retail store, restaurant, charging stations, robots, etc. Even though Volterra’s Regional Edges are available as sites for VoltMesh or VoltStack services, they are not marked in Volterra Console or APIs as “customer sites”. Volterra SaaS can manage many sites for the customer and provide a common set of APIs to consume infrastructure, allowing developers and devops teams to focus on their tooling and applications.

Cluster of Volterra Nodes

Site is made up of a cluster of one or more Volterra Nodes and the cluster can be scaled up or down based on load by addition or deletion of nodes. Each node is a linux-based software appliance (appliance is delivered as ISO or deployment spec on k8s) that is deployed in a virtual machine, in a k8s cluster, commodity hardware, or our edge hardware. Kubernetes is used as clustering technology and all our software services run as k8s workloads on these clusters. In addition, customer workloads also run on this k8s if VoltStack services are enabled on these Volterra nodes. This managed k8s on volterra node is referred to as “physical k8s” from now on.

A physical location may be deployed with multiple clusters of Volterra nodes, each individual cluster is considered as its own individual site to ease manageability. As a result, an individual site is a combination of location and cluster. If a physical site has two clusters then there are two Volterra sites in that location. Henceforward, Volterra site may be referred to as site or location in the rest of the documentation. If the location is expected to have multiple sites, it will be made explicit in the documentation when we differ in this assumption.

Network Topology of a Site

A customer site can be deployed in two modes, from network point of view. Even though a site supports more than two interfaces, it will be covered in later sections.

  1. On a stick (single interface) - In this case, the ingress and egress traffic from the node is handled on a single network interface as shown in the diagram. Inter-site traffic goes over the ipsec tunnels (using the REs or optionally site-to-site). In this mode, the network functionality delivered will be either load balancer, gateway for Kubernetes, API gateway, a generic proxy, and application security functionality. Local network here refers to local data center network, VPC subnet in AWS, or VNET in Azure, or back-to-back network connection on a cluster of volterra hardware.

image3
Figure: Site with Single Interface

  1. Default Gateway (two interfaces) - In this case, there are two interfaces and the inter-site traffic goes over ipsec tunnels that are connected over the local-network (outside). In this mode, as default gateway, the network functionality like routing and firewall between inside and outside networks can be enabled in addition to other application connectivity and security functionality. Local network here refers to local data center network, VPC subnet in AWS, or VNET in Azure, or back-to-back network connection on a cluster of volterra hardware.

image6
Figure: Site with Two Interfaces

Logical view of the site

A volterra node consists of many software components that provide computing, storage, network, and security services. Cluster comprising of multiple nodes, with its own physical k8s act as a super-converged infrastructure in use cases to run applications without the need for additional external components/software typically required by other systems.

image5
Figure: Logical View of Site

As each volterra node comes up, it calls home to the Volterra’s centralized control and management plane. Once authenticated and approved by the user, it brings up Infrastructure Control Plane and forms a cluster of nodes (this includes the physical k8s). Once the control plane service is up and the cluster is formed, it starts deploying volterra microservices.

The infrastructure control plane, primarily composed of volterra managed physical k8s, within the site is responsible for the functioning and health of the nodes, volterra microservices, and customer workloads running within the cluster. Once the registration is complete and the cluster is admitted into the Volterra service, the distributed control plane running in Volterra regional edge sites become responsible for launching and managing the workloads in the site. This distributed control plane is also responsible for aggregating status, logs, metrics from individual site and propagate it to the Volterra Console.

One of the microservice in the Site is the networking service that is responsible for all the VoltMesh services. It gets bootstrap config from a distributed control plane running in regional edges within the Volterra global infrastructure. This service creates ipsec/ssl tunnels to regional edges (and/or inter-site) that are configured during bootstrap of the volterra node.

Using the secure tunnels, this service becomes part of the Volterra Fabric, an isolated ip network, that helps it to connect to local control plane in regional edges or other sites in the location. This Fabric is also used for dataplane traffic as underlay fabric. None of the physical interfaces can talk directly to this isolated fabric. Traffic on the fabric is going through a network firewall at every site and only certain applications are allowed to communicate. It also has protections like reverse path forwarding checks to prevent any kind of spoofing, tenant level checks so that only sites of same tenant can talk to each other.

VoltMesh network connectivity and security services includes following functions:

  • IP switching/routing
  • Isolated Networks for physical interfaces
  • Isolated Networks for physical k8s namespace
  • Connect networks directly or through source NAT (SNAT)
  • Local internet breakout when used in default gateway mode
  • Firewall policy - network (TCP, IP) security policy
  • BGP routing to advertise VIPs within site

VoltMesh application connectivity and security services includes the following functions:

  • Application and API security policy
  • Forward Proxy
  • Load Balancer
  • Application policy (based on HTTP, APIs, etc)
  • API gateway
  • Web Application firewall

Additionally, Regional Edge sites can provide functionality for customer sites and applications:

  • Expose applications on public Internet and use our global network for services like anycast, global load balancing, application security, volumetric DDoS etc
  • Offload network and application connectivity and security services on regional edges
  • Tunnel the customer site to regional edge and use our global network as customer backbone network with complete DMZ functionality

Configuring a Site

Certified Hardware

One of our objectives is to help customers to easily deploy and manage infrastructure in cloud or edge and make it part of their own “logical cloud” spanning multiple cloud providers and/or edge locations.

The initial deployment and admission control is done using zero touch provisioning (ZTP) to make the bring-up process easy and secure. As volterra nodes can be deployed in multiple configurations across multiple platforms, it requires ZTP with multiple flavours of bootstrap configuration. Initial boot of the device needs to have enough configuration so that device can call home to centralized control plane. As a result, we bundle different bootstrap configurations in the Volterra node software image.

Certified hardware object represents physical hardware or a cloud instance that will be used to instantiate the Volterra node in a given configuration for the site. It has the following information for bootstrap:

  • Type
  • List of Vendor model
  • List of devices supported (eg. network interfaces)
  • Image name

Certified hardware objects are only available in the Volterra shared namespace. These are created and managed by Volterra and users are not allowed to configure this object. It lets users know of various hardware and cloud images that are supported, how they can be used, configured at boot strap, and image name that needs to be downloaded to make the config work.

Details on all the parameters that can be configured for this object is covered in the API specification.

Site Registration

In order to register a site, the Tenant needs to allocate a token as part of the ZTP process. This token can be part of the ISO image that is downloaded for physical node or inserted into the VM as part of cloud init or given as part of deployment spec on launching on k8s. In the case of ISO, user can request token to be part of the image when downloading it from the Volterra Console.

When a Volterra node’s software boots up, it is expected to call home to register. In order for the call home to succeed, there has to be at least one interface up with connectivity to the centralized control and management service - this interface is defined in certified hardware and needs to be appropriately configured at bootstrap. During call home, node sends a registration request with the token to identify the tenant and any additional information about the node e.g. certified hardware, hardware info, etc.

This new site will then show up as a new registration request in the Volterra Console. User can approve or deny the registration request and optionally assign various parameters like site name, geographic location, and labels.

When new nodes show up for registration, if they have the same site name, then they will automatically become part of the cluster after approval. An individual site supports 2n+1 configuration for cluster’s master nodes - with a minimum of 1 master node. After 3 nodes, one can add any number of nodes and the rest will become worker nodes. In a cloud environment, worker nodes can be automatically scaled without requiring additional registration. This can be based on load or manually changing the number in site configuration.

This whole registration process can be automated with bulk registration and use of the TPM on physical hardware node to store crypto certificates and keys that will identify node, tenant etc. This needs custom integration with customer backend and new certified hardware instance and can be requested through your support channel to Volterra.

On-a-stick Deployment (Single Interface)

If the site is being deployed in the single interface (on a stick) mode, determined by the image selected and its configuration, the following things will happen during the deployment process:

  • The single “physical” interface is assigned to be of type SITE_LOCAL_OUTSIDE by the system automatically and it will have DHCP enabled. Using DHCP, the node will get its IP address, subnet, default gateway, and DNS server configuration. Static IP configuration will be supported in the future, as part of our roadmap.
  • This Interface is also configured to be part of a virtual network which is of type SITE_LOCAL_NETWORK. This information will be relevant later for configuring additional features for the site, for example - network firewall, etc.
  • IP address of this interface will be called HOST_IP in SITE_LOCAL_NETWORK - this address is the one that is assigned to the interface. This information will be relevant later when the system automatically selects VIP for this site.

Default Gateway Deployment (Two or more Interfaces)

If the site is being deployed in the default gateway (two interface) mode, determined by the image selected and its configuration, the following things will happen during the deployment process:

  • The first interface is assigned to be of type SITE_LOCAL_OUTSIDE by the system automatically and it will have DHCP enabled. Using DHCP, the node gets its IP address, subnet, default gateway and DNS server configuration. Static IP configuration will be supported in the future, as part of our roadmap.
  • This Interface is also configured to be part of a virtual network which is assigned to be of type SITE_LOCAL_NETWORK. This information will be relevant later for configuring additional features for the site, for example - network firewall, etc.
  • Second interface is assigned to be of type SITE_LOCAL_INSIDE and usually does not have any configuration. User can enable DHCP or assign a static IP address to this interface.
  • This second interface is also configured to be part of a virtual network, which is assigned to be of type SITE_LOCAL_NETWORK_INSIDE. If DHCP server is configured for this network, this site becomes default gateway for SITE_LOCAL_NETWORK_INSIDE network and assigns IP addresses to any client on the network.
  • IP address of both interfaces will be called HOST_IP in their respective networks - SITE_LOCAL_NETWORK, and SITE_LOCAL_NETWORK_INSIDE.

VIP for a Cluster of Multiple Nodes

As discussed earlier, the VIP is chosen from the interface HOST_IP. However, in the case of multiple nodes, there are multiple interface IPs. This may not be desired in many cases and to solve this problem, one can configure a common VIP on the inside and outside network in the site object. Whenever there is a need to select VIPs automatically, this VIP will be preferred over HOST_IP.

Details on all the parameters that can be configured for this object is covered in the API specification.

Site Connectivity to Volterra Regional Edge

When a site is approved, the system will automatically select two volterra regional edge sites based on public ip address with which site registration was received by the centralized control plane. In some scenarios, Geo-IP database may not be accurate and users can override the selected regional edges and provide “ves.io/ves-io-region” label to explicitly provide RE preference. System will connect to two regional edges from this label and if they are not available, it will connect to other nearby sites in the region.

Once these REs are selected, the list of two selected regional edges is passed down to the site as part of the registration approval. Also, the following additional information is sent as part of this approval:

  1. Site identity and PKI certificates - these certificates are regularly rotated by the system
  2. Initial configuration to create and negotiated secure tunnels for the volterra fabric.

The site will try to negotiate both ipsec and ssl tunnels to the selected regional edge sites. If ipsec is able to establish connectivity, it will prefer to use ipsec, otherwise it will resort to ssl tunnel. Once the connectivity is established, the Volterra Fabric will come up and distributed control plane in the regional edge site will take over the control of the site. These tunnels are used for both management, control, and data traffic. Site to site traffic and site to public traffic goes over these tunnels.

Site to Site Connectivity

In many cases, tenants may need to connect Volterra “sites” that are located within the same location using their existing networks or “sites” across locations using their own backbone network and not use the Volterra global network for the connectivity of sites. Tenants that prefer to utilize their backbone should be able to send data traffic between sites using their own network instead of ours - this is achieved by creating site to site tunnels using Site Mesh Group.

image4
Figure: Connectivity Using Site Mesh Group

Site Mesh Group is configuration object that defines a group of arbitrary sites, sets up tunnels between those sites using ipsec or ssl (clear/unencrypted tunnels are also possible). If the site mesh group is HUB, then all sites within this group will form a full mesh connectivity. If site mesh group is SPOKE, then it has corresponding HUB site mesh group. Each site in SPOKE group sets up tunnel with all sites in corresponding HUB group.

image1
Figure: Hub and Spoke Combinations of Site Mesh Group

Details on all the parameters that can be configured for this object is covered in the API specification.

Site - Local Internet Breakout

Even though the ideal point of egress traffic to the Internet is from the Volterra Regional Edge (RE) site, it may be required to send some of the traffic directly to the internet. Also, please note that this discussion is only valid in the two interface (default gateway) mode.

image2
Figure: Site Local Network to Internet Connectivity

The virtual network on the inside (Site Local Inside) can be connected to the outside physical network (Site Local) using a network connector that we will discuss in a later section. On this network connector, you can configure SNAT, policy based routing, forward proxy for URL filtering, and network firewall.

Details on all the parameters that can be configured for this object is covered in the API specification.


Virtual site

A virtual site is a tool for indirection. Instead of doing configuration on each site, it allows for performing a given configuration on set (or group) of sites. Virtual site is a configuration object that defines the sites that members of the set.

Set of sites in the virtual site is defined by label expression. So we can have a virtual site of all sites that have “deployment in (production) and region in (sf-bay-area)”. This expression will all production sites in sf-bay-area.

Virtual site object is used in site mesh group, virtual site is used in application deployment, advertise policy or service discovery of endpoints. These label expressions can create intersecting subsets, Hence a given site is allowed to belong many virtual sites.

Concept of “where”

Technically an endpoint (for example, DNS server, k8s API or any such name to be resolved) should resolve finally to virtual network and IP address. Since it is not always convenient or even possible to provide a virtual network and an ip address, we provide the capability of defining “where” in many API(s). This concept of “where” makes it easier to perform configuration and policy definition upfront.

Value of “where” can be any one of the following:

  • Virtual site: configuration applied “where” all sites selected by virtual site and site local network type on that site. Name will be resolved there or discovery will done be on all these sites.
  • Virtual site, network type: configuration applied to “where” all sites selected by virtual site and network type on those sites.
  • Site, network type: configuration is applied on this specific site and virtual network of given type.
  • Virtual network: configuration is applied to all sites “where” this network is present.

Fleet

Typically, when you deploy a large number of sites, it is common to perform same configuration steps on each site (using automation or manually) - for example configuration on physical constructs (on the site) like interfaces, virtual networks, network firewalls, etc. In order to remove the need for performing configuration on each site individually, we provide the capability to manage a set of sites as a group.

Since virtual-site object allows an individual site to belong to multiple virtual sites, this object is not ideal for performing configuration on physical constructs like interfaces - as it can cause ambiguation problems if two virtual site objects contain different configurations for a single physical entity.

In order to solve this disambiguation problem of configuration to physical constructs, we provide the capability to manage sites with “fleet” object. This set has to be exclusive and the same site cannot be present in two “fleet” objects.

Configuring a Fleet

In order to configure a “fleet” object, you need to define a label on the object ves.io/fleet=<fleet label value>. Every fleet in a tenant has to have unique value of <fleet label value>. If this label is attached to site, then the site becomes part of that fleet. Label can be attached at the time of registration approval to get proper configuration for physical devices. A virtual site representing this fleet is also created by the system automatically so that it can be used in other features where there is a need for virtual site.

Fleet is also tied to certified hardware to map physical devices that are supported by the hardware. It has device-level configuration for each device - for example, interface configuration for each network device, firewall configuration for these sites, USB configuration, I/O devices, storage devices, etc. Once the interfaces are defined as part of the fleet, then they become members of virtual network. Virtual networks may have connectors etc. In this way physical site configuration can be done as fleet.

Since there is a lot of configuration that is tied to a fleet, a design tradeoff was made that even one individual site should be managed as fleet. This means that one needs to always configure fleet when using features tied to fleet. This makes it easier to add additional members in the future without requiring changes to the initial site. Fleet object, by assigning fleet label to site, may be assigned to site at the time of site registration.

Details on all the parameters that can be configured for this object is covered in the API specification.