neutron/doc/source/contributor/figures/neutron-metadata-dhcp-agent.dot
Bence Romsics 2ec273cdc7 contributor docs: Architectural overview for metadata
I found some old graphs I have drawn about the workings of the
traditional metadata service. I don't know why I haven't contributed
this earlier to Neutron docs. But anyway, better late than never.

Change-Id: I7a412883c8c0d673d1617a3b212598b35e9e698f
2023-09-18 10:32:32 +02:00

106 lines
2.8 KiB
Plaintext

/*
neutron-metadata-dhcp-agent
Edit this file, instead of the corresponding png/svg.
Those can be re-generated by:
sudo apt install graphviz
dot -T svg -o out.svg in.dot
dot -T png -o out.png in.dot
*/
digraph {
compound = true
node [
shape = record
]
subgraph cluster_openstack_controller {
label = "openstack controller node"
nova_metadata [
label = "nova metadata service"
]
public_openstack_api [
label = "public openstack APIs\n(nova, neutron)"
]
}
subgraph cluster_openstack_network {
label = "openstack network node"
neutron_dhcp_agent [
label = "neutron-dhcp-agent"
]
neutron_metadata_agent [
label = "neutron-metadata-agent\n\nadds HTTP headers:\nX-Tenant-ID: project-UUID\nX-Instance-ID: instance-UUID\nX-Instance-ID-Signature: ...\n\nremoves HTTP header:\n X-Neutron-Network-ID"
]
subgraph cluster_neutron_dhcp_namespace {
label = "neutron DHCP namespace\n(for isolated tenant net)"
neutron_dhcp_ns_metadata_proxy [
label = "neutron ns-metadata-proxy\n\nadds HTTP headers:\nX-Forwarded-For: instance-IP\nX-Neutron-Network-ID: network-UUID"
]
metadata_lla [
label = "169.254.169.254/32\nconfigured in namespace"
]
neutron_dhcp_server [
label = "neutron DHCP server"
]
}
}
subgraph cluster_tenant_net_isolated {
label = "isolated tenant net\n(i.e. without gateway)"
instance [
label = "openstack instance\nno 169.254 IP configured locally"
]
}
response_omitted [
label = "the response is omitted for brevity..."
shape = plaintext
]
metadata_lla -> instance [
label = "HTTP GET\n169.254.169.254:80"
dir = back
align = left
]
neutron_dhcp_ns_metadata_proxy -> metadata_lla [
label = "metadata\ntraffic"
dir = back
align = left
]
neutron_metadata_agent -> neutron_dhcp_ns_metadata_proxy [
label = "unix socket"
dir = back
]
neutron_dhcp_server -> instance [
label = "pushes static route:\n169.254.169.254 via dhcp-port-IP"
]
neutron_dhcp_agent -> neutron_dhcp_server [
label = "configures\nstatic leases\nand dhcp options"
]
neutron_dhcp_agent -> neutron_dhcp_ns_metadata_proxy [
label = "starts"
]
nova_metadata -> neutron_metadata_agent [
dir = back
]
public_openstack_api -> neutron_metadata_agent [
label = "looks up instance UUID"
dir = back
]
nova_metadata -> response_omitted
response_omitted -> neutron_metadata_agent [
style = invis
]
}