Skip to content

Commit 67c20fd

Browse files
committed
Update standard to only apply to public IP allocation
Signed-off-by: Konrad Gube <[email protected]>
1 parent 0c418f3 commit 67c20fd

File tree

1 file changed

+20
-22
lines changed

1 file changed

+20
-22
lines changed

Standards/scs-xxxx-v1-provider-network-standard.md

+20-22
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ track: IaaS
1010
Many use-cases of IaaS require virtual servers to be able to connect to network resources outside of the cloud environment, often to the internet.
1111
Openstack supports this by allowing CSPs to map non-virtualized networks onto specific virtual networks, such that virtual routers and servers can connect to them.
1212

13-
Such networks will usually be created in a CSP-managed project and then shared to user projects using the network API's role-based access control feature.
14-
Because they have to be set up by the cloud provider, networks of this type are generally referred to as _provider networks_, though that term can also be used to refer to other types of CSP-managed virtual networks.
13+
Such networks will usually be created in a provider-managed project and then shared to user projects using the RBAC-feature of the network API.
14+
Because they have to be set up by the cloud provider, networks of this type are generally referred to as _provider networks_, though that term can also be used in a broader senseto refer to other types of CSP-managed virtual networks.
1515

1616
When setting up provider networks for external access, CSPs have a number of different options regarding usage restrictions and the allocation of IP addresses.
17-
This document defines a standardized setup for provider networks that offers external access in a way that is portable across SCS clouds.
17+
This document defines a standardized approach for using provider networks to allocate public IP addresses and provide external access in a way that is portable across SCS clouds.
1818

1919
### Glossary
2020

@@ -28,7 +28,7 @@ The following terms are used throughout this document:
2828
| Virtual Router | OpenStack resource that can be used to route and bridge between virtual networks and provide other features such as NAT |
2929
| Subnet | Subdivision of available IP address space using address prefixes. In OpenStack also an abstraction for controlling IP address allocation in a virtual network. |
3030
| DHCP | Dynamic Host Configuration Protocol: Used to automatically configure hosts in a network with IP addresses, default routes, and other information such as DNS servers. |
31-
| Prefix | IP address prefix of a given bit-length N, written as _<ADDRESS>/<N>_. Divides addresses into a network and a host part, a shorter prefix allows more hosts but takes up more address space. |
31+
| Prefix | IP address prefix of a given bit-length N, written as _ADDRESS/N_. Divides addresses into a network and a host part, a shorter prefix allows more hosts but takes up more address space. |
3232
| NAT | Network Address Translation: mapping (usually public) IPv4 addresses onto a different (usually private) address space. May allows multiple hosts to share a public address by multiplexing TCP/UDP ports. |
3333
| RBAC | Role-based Access Control: A mechanism in the Network API to give projects limited access to resources owned by other projects. Typically used by CSPs to create provider networks. |
3434
| Shared Network | Virtual network that is shared between projects in a way that allows direct attachment of servers. |
@@ -93,17 +93,17 @@ This seems to be more of a niche use-case, however, and may warrant the creation
9393

9494
### Options considered
9595

96-
#### Internet Access
96+
#### Public IP Address Allocation
9797

9898
For public clouds, external access generally means access to (and from) the internet, with allocation of public IP addresses.
99-
Providing a standardized approach for internet access is the main motivation for this standard.
99+
Providing a standardized approach for the allocation of public IP addresses is the main motivation for this standard.
100100

101101
However, the SCS Standards are intended to be applicable not just to public clouds, but also to private or even air-gaped cloud environments.
102-
One way to reconcile these requirements would be to mandate internet access, but limit the scope of this standard to only cover public clouds.
102+
One way to reconcile these requirements would be to find a common basis between public and private clouds, and then build the standard around that, scoping individual rules where necessary.
103103

104-
However, private clouds may also profit from a standardized approach to external access, even when external in this context may be a private network or VPN of an organization.
105-
Even air-gaped environments may have use for standardized provider networks, e.g. to provide local network-based services such as NTP.
106-
So, rather than scope all requirements to a specific type of cloud environment, this standard will scope individual requirements where necessary.
104+
However, private and public clouds may have quite different requirements.
105+
Public IPv4 addresses, for example, are sparse and expensive, so having tight quotas and support for NAT makes a lot of sense in a public cloud, but may be completely unnecessary in a private environment without public IPs.
106+
So, rather than trying to find common ground between the networking requirements of all SCS clouds, the requirements of this standard will be scoped to only apply to cloud environment that support the allocation of public IP addresses.
107107

108108
#### IPv6
109109

@@ -154,7 +154,7 @@ Each subnet also has a broadcast and a network address, which for small subnets
154154
Source NAT, combined with selective use of floating IPs can significantly reduce the number of required addresses over a public IPv4 subnet.
155155
The floating IP quota also offers a finer granularity for distributing IPs among projects, though it is important to note that the routers external gateway IP which is used for the source NAT is not subject to any quotas.
156156

157-
IPv4 NAT can also be used in a dual stack setup alongside a routed IPv6 subnet (source?).
157+
IPv4 NAT can also be used in a dual stack setup alongside a routed IPv6 subnet.
158158

159159
#### Disable RBAC for Users
160160

@@ -183,28 +183,26 @@ So, just specifying mandatory features rather than a certain set of extensions m
183183

184184
## Standard
185185

186-
CSPs **MUST** provide a provider network to every project to access to the internet.
186+
If CSPs offer public IP addresses to projects, they **MUST** provide a provider network to every project to allocate public addresses.
187187
This provider network will in the following be referred to as the _standard provider network_.
188-
To avoid ambiguity, the standard provider network **SHOULD** be the only provider networks available to projects by default.
188+
To avoid ambiguity, the standard provider network **SHOULD** be the only provider network available to projects by default.
189189

190190
The standard provider network **MUST** be an external network, allowing it to be used as external gateway by virtual routers.
191-
The standard provider network **MAY** be a shared network, allowing direct attachment of servers.
191+
The standard provider network **MAY** be a shared network, allowing direct attachment of virtual servers.
192192
If the standard provider network is a shared network, it **MUST** enable port security to prevent projects from interfering with each other.
193193

194-
The standard provider network **MUST** have an IPv6 subnet.
195-
CSPs **MUST** provide a subnet pool for the allocation of at least one public /64 IPv6 prefix per project.
194+
If CSPs offer public IP addresses at all, they **MUST** provide a subnet pool for the allocation of at least one public /64 IPv6 prefix per project.
195+
If CSPs offer public IP addresses, they **SHOULD** also offer public IPv4 addresses.
196+
If they do offer public IPv4 addresses, they **MUST** provide at least one public Floating IP per project, but **MAY** also provide a subnet pool for the allocation of public IPv4 prefixes to project networks.
196197

197-
The standard provider network **SHOULD** have an IPv4 subnet.
198-
If CSPs provide an IPv4 subnet, then CSPs **MUST** provide at least one public Floating IP per project.
199-
They **MAY** also provide a subnet pool for the allocation of public IPv4 prefixes to project networks.
200-
201-
CSPs **MUST** provide dynamic routing for all project-allocated public IP-prefixes.
198+
CSPs **MUST** externally route any public IP addresses allocated from subnets of the standard provider network.
199+
CSPs **MUST** provide dynamic routing for all project-allocated public IP-prefixes via the standard provider network.
202200

203201
By default, users **SHOULD** be prohibited by policy from creating RBAC rules for networks in their projects, to prevent the creation of faux provider networks.
204202

205203
## Conformance Tests
206204

207-
(TBD, current requirements should all be testable by API, though dynamic routing might be a bit tricky)
205+
(TBD, current requirements should mostly be testable by API. Testing external routing is more tricky and will require external testing infrastructure of some sort)
208206

209207
## References
210208

0 commit comments

Comments
 (0)