# Rethinking Networking Abstractions for Cloud Tenants

* 88% use two or more cloud providers&#x20;
* 92% use both public / private cloud deployment&#x20;
* **Architecture: workloads span multiple regions within the cloud, multiple clouds**&#x20;
  * Individual virtual networks&#x20;
    * Addresses? ACLs? routes?&#x20;
  * Connectivity in / out&#x20;
    * Internet? NAT? VPN?
  * Connect multiple virtual networks
    * Across clouds or across cloud regions&#x20;
    * Virtual network peering, ...
  * Dedicated connections&#x20;
    * Availability and consistent performance: reserve a link between cloud data center and an internet exchange point&#x20;
  * Appliances&#x20;
    * Load balancers, firewalls&#x20;
* Private data centers&#x20;
  * Physical network boxes: routers, firewalls, and load balancers&#x20;
    * Managing this is difficult --> move to the cloud&#x20;
  * Azure (similar abstraction): user-define router, firewall, load balancer&#x20;
  * Aws: learned ins and outs of these kinds of boxes&#x20;

![](/files/6SpZpfiiEtwYB3ZX51k6)

* We are not seeing higher-level abstractions (still dealing with low-level components when we manage our own infra)&#x20;

![](/files/mTRTHYTaDSnO68Jp7pRb)

* Complex planning&#x20;
* Complex configuration&#x20;

Current solutions:

* Multi-cloud solutions: seek to give on management plane to this mess&#x20;
  * But it doesn't solve the underlying complexity, but handle it to shim layer instead&#x20;

Proposal:&#x20;

* Eliminating tenant networking layer all together!&#x20;

![](/files/fVn0455MpLJ7DDQHE0rw)

* Tenant goals: connectivity, availability, security, QoS
  * Provide a declarative API which allows tenants to specify these goals on a per endpoint basis abstracting away the networking details&#x20;
* Key idea: "publicly routable but default-off"
  * Routability vs. Reachability&#x20;
  * Endpoint: publicly routable, default-off (traffic destined for that address will be dropped by cloud provider unless specified otherwise) --> per end-point permit list&#x20;
* Proposed API&#x20;

![](/files/pvHDqJPXuUfDNkzuYvib)

![](/files/4UO4DiJFtyVoev1JTC31)

#### Open questions&#x20;

* Simple or simplistic?&#x20;
  * Feasibility?&#x20;
    * Is it scalable for cloud provider to keep consistent and dynamic per endpoint permit list to each tenant&#x20;
    * Security?&#x20;
  * Adoption?&#x20;
    * Proposal can exist in parallel to today's abstraction&#x20;
    * Simpler, low-risk deployment&#x20;
      * What tenants and workloads are the most likely early adopters for a new architecture such as we propose?&#x20;
  * Other question: is it the right one, what alternative solutions we should be considering&#x20;
    * Sufficiently high level that abstract details entirely?&#x20;

Paper: <https://sigops.org/s/conferences/hotos/2021/papers/hotos21-s02-mcclure.pdf>&#x20;

Main contribution:

* Right now the network virtualization as experienced by cloud tenants is overly complex&#x20;
* Propose: free cloud tenants entirely from having to build and operate virtual networks&#x20;
* Cloud networking exposed to tenants in a declarative and endpoint-centric manner&#x20;
  * Associated SLOs with endjoints&#x20;
  * Natural extension to what cloud providers already offer in compute and storage, and cloud providers can innovate below this interface without developing tenant-layer abstractions for every possible feature&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sliu583.gitbook.io/blog/networking/index/reading-list/rethinking-networking-abstractions-for-cloud-tenants.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
