Neutron – Network
Neutron provides “network connectivity as a service” between interface devices (e.g., vNICs) managed by other OpenStack services (e.g., Nova). The service works by allowing users to create their own networks and then attach interfaces to them. Neutron has a pluggable architecture to support many popular networking vendors and technologies.
- neutron-server accept API requests and routes them to the correct neutron plugin
- plugins and agents perform actual actions, like plug/unplug ports, creating networks, subnets and IP addressing
- it also has a message queue to route info between neutron-server and various agents
- it has a neutron database to store networking state for particular plugins
Neutron will interact mainly with Nova, where it will provide networks and connectivity for its instances.
Cinder – Block Storage
Cinder allows block devices to be exposed and connected to compute instances for expanded storage & better performance.
- cinder-api accepts requests and routes them to cinder-volumes for action
- cinder-volume reports reading or writing to the cinder database to maintain state, interacts with other processes (like cinder-scheduler, see below) through a message queue and directly on block storage providing hardware or software
- cinder-scheduler picks the optimal block storage node to create the volume on
- the messages queue routes information between Cinder processes
- a cinder database stores volumes state
Like Neutron, Cinder will mainly interact with Nova, providing volumes for its instances.