Files
neutron/doc/source/contributor/figures/neutron-metadata-l3-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

116 lines
2.9 KiB
Plaintext

/*
neutron-metadata-l3-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_l3_agent [
label = "neutron-l3-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-Router-ID"
]
subgraph cluster_neutron_router_namespace {
label = "neutron router namespace\n(for tenant router)"
neutron_l3_ns_metadata_proxy [
label = "neutron ns-metadata-proxy\n\nadds HTTP headers:\nX-Forwarded-For: instance-IP\nX-Neutron-Router-ID: router-UUID"
]
neutron_iptables [
label = "iptables\nnat table, PREROUTING chain\nrule dst=169.254.169.254:80\ntarget REDIRECT to=127.0.0.1:9697"
]
neutron_router [
label = "neutron router"
]
}
}
subgraph cluster_tenant_net_with_gateway {
label = "tenant net with gateway"
instance [
label = "openstack instance\nno 169.254 IP configured locally\nroute: 169.254.169.254 via subnet-gw-IP"
]
}
response_omitted [
label = "the response is omitted for brevity..."
shape = plaintext
]
traffic_omitted [
label = "omitted..."
shape = plaintext
]
traffic_omitted -> neutron_router [
dir = back
label = "normal traffic"
]
neutron_router -> instance [
dir = back
label = "normal\ntraffic"
]
neutron_iptables -> instance [
label = "HTTP GET\n169.254.169.254:80"
dir = back
align = left
]
neutron_l3_ns_metadata_proxy -> neutron_iptables [
dir = back
label = "metadata\ntraffic"
]
neutron_metadata_agent -> neutron_l3_ns_metadata_proxy [
label = "unix socket"
dir = back
]
neutron_l3_agent -> neutron_router [
label = "configures\nroutes"
]
neutron_l3_agent -> neutron_l3_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
]
}