So what are those concepts that Neutron exposes to users?
The core of Neutron consists of three types of objects, networks,
subnets, and ports. A Neutron network represents the layer 2 aspects of networking.
In the real world, it would be a switch. It transports Ethernet
packets and forms a layer 2 broadcast domain.
Whatever is connected to a network has a MAC address.
Layer 3, that is IP addressing, belongs to the second-core concept, subnets.
It carries traffic like TCP, UDP, ICMP, and ARP.
When you create a subnet, you specify a range of IP addresses.
A layer 2 network can exist without a subnet, although protocols built
on top of IP, such as SSH, can't be used in this case.
On the other hand, a subnet without a network is impossible.
In the real world, the same network can have several IP address
ranges, and therefore Neutron allows you to create several subnets on
the same network. Apart from the IP address range, a subnet has other
properties, for example, an optional DHCP server and an optional DNS server.
The third core concept is the port. Not only servers,
but other entities like routers or DHCP servers connect to networks via ports.
A port represents a network attachment and abstracts from the specific
details of those connections. In contrast to the real world,
MAC and IP addresses are configured on ports, rather than servers,
routers, and DHCP servers.
Before we continue, let's see how those concepts are used in practice
in the GUI and on the commandline.