Da rivedere a più passate
La chiave del DVR è che il traffico Nord/Sud con floating IP viene gestito direttamente dai compute nodes, mentre il traffico SNAT (senza floating IP) passa ancora attraverso il network node centralizzato.
Questa è una lista di servizi da configurare
Abbiamo optato per una configurazione DVR ibrida (DVR Hybrid Mode) dove:
Il controller node in realtà è un container LXC e ospita in esecuzione i servizi API/RPC di Neutron:
In particolare /etc/neutron/neutron.conf:
# Distributed virtual routing router_distributed = True enable_dvr = True
Il network node corrisponde all'host fisico dei controller. Qui sono in esecuzione:
# openstack network agent list --host os-ctrl-1 +--------------------------------------+--------------------+-----------+-------------------+-------+-------+---------------------------+ | ID | Agent Type | Host | Availability Zone | Alive | State | Binary | +--------------------------------------+--------------------+-----------+-------------------+-------+-------+---------------------------+ | 129d1377-eb08-4472-ae78-8963238a3adf | L3 agent | os-ctrl-1 | nova | :-) | UP | neutron-l3-agent | | 6a7d3928-83e4-4733-b8f1-51f6941ab0e3 | DHCP agent | os-ctrl-1 | nova | :-) | UP | neutron-dhcp-agent | | 6f3b6b48-0ac6-406f-98fc-577549256c3b | Open vSwitch agent | os-ctrl-1 | None | :-) | UP | neutron-openvswitch-agent | | da35d0e0-f84f-4c81-bad8-db8e2e2cd6f5 | Metadata agent | os-ctrl-1 | None | :-) | UP | neutron-metadata-agent | | f323441d-e8bb-4229-baa7-cecfce0eb94c | Metering agent | os-ctrl-1 | None | :-) | UP | neutron-metering-agent | +--------------------------------------+--------------------+-----------+-------------------+-------+-------+---------------------------+
Ovvero:
in /etc/neutron/l3agent.ini
<code>
[DEFAULT]
debug = False
# Drivers
interfacedriver = openvswitch
agentmode = dvr_snat
</code>
==== Compute Node ====
Sul compute node abbiamo:
<code>
# openstack network agent list –host os-worker-3
+————————————–+——————–+————-+——————-+——-+——-+—————————+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+————————————–+——————–+————-+——————-+——-+——-+—————————+
| 603eaa61-dfb3-4a57-b292-1e8b36359e2d | Metadata agent | os-worker-3 | None | /etc/neutron/l3agent.ini
| UP | neutron-metadata-agent |
| a70773c1-9cc0-462c-8510-a284ee17c197 | Open vSwitch agent | os-worker-3 | None |
| UP | neutron-openvswitch-agent |
| ed466f61-b3e8-45a2-b0bc-6549d7255449 | L3 agent | os-worker-3 | nova |
| UP | neutron-l3-agent |
+————————————–+——————–+————-+——————-+——-+——-+—————————+
</code>
* L'agente di routing (L3 Agent) è distribuito su ogni compute node e gestisce il routing Est/Ovest e Nord/Sud per le istanze locali (DVR mode)
* L'agente dei metadati fornisce servizi metadata alle istanze in modalità distribuita
* L'agente Open vSwitch gestisce la configurazione dei virtual switch
[DEFAULT] # Drivers interface_driver = openvswitch agent_mode = dvr
Per visualizzare lo stato degli agenti registrati:
# openstack network agent list +--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+ | ID | Agent Type | Host | Availability Zone | Alive | State | Binary | +--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+ | 129d1377-eb08-4472-ae78-8963238a3adf | L3 agent | os-ctrl-1 | nova | :-) | UP | neutron-l3-agent | | 402cb26e-3362-49bc-850b-65e06c49aa62 | Metadata agent | os-worker-2 | None | :-) | UP | neutron-metadata-agent | | 5f73dbcc-0dd5-425b-b387-f1836e78e9aa | Open vSwitch agent | os-ctrl-3 | None | :-) | UP | neutron-openvswitch-agent | | 603eaa61-dfb3-4a57-b292-1e8b36359e2d | Metadata agent | os-worker-3 | None | :-) | UP | neutron-metadata-agent | | 65456e04-bb6f-4602-8fe6-7e8dac37d2f7 | DHCP agent | os-ctrl-2 | nova | :-) | UP | neutron-dhcp-agent | | 6681d4d4-b1fa-469e-8565-fb61836a8161 | Open vSwitch agent | os-worker-4 | None | :-) | UP | neutron-openvswitch-agent | | 6a7d3928-83e4-4733-b8f1-51f6941ab0e3 | DHCP agent | os-ctrl-1 | nova | :-) | UP | neutron-dhcp-agent | | 6b49877c-8dad-46df-a125-230ccda418ea | Metadata agent | os-worker-4 | None | :-) | UP | neutron-metadata-agent | | 6f3b6b48-0ac6-406f-98fc-577549256c3b | Open vSwitch agent | os-ctrl-1 | None | :-) | UP | neutron-openvswitch-agent | | 80063729-2025-4d3a-9d0c-963731dc8e8c | L3 agent | os-worker-2 | nova | :-) | UP | neutron-l3-agent | | 82deda29-d3f8-43de-a243-0d116425d52a | L3 agent | os-ctrl-2 | nova | :-) | UP | neutron-l3-agent | | 90768cba-1bda-459f-9350-5a0603e53c45 | DHCP agent | os-ctrl-3 | nova | :-) | UP | neutron-dhcp-agent | | 94c16b8a-3e0e-41eb-b592-4c10e7e2c50a | Metadata agent | os-ctrl-2 | None | :-) | UP | neutron-metadata-agent | | 98d4da56-1046-4be8-829e-f6afa0bc9c90 | Open vSwitch agent | os-worker-2 | None | :-) | UP | neutron-openvswitch-agent | | 9c3c0c49-6a86-4d65-aa9f-8c7c374dc5f0 | Metering agent | os-ctrl-2 | None | :-) | UP | neutron-metering-agent | | a70773c1-9cc0-462c-8510-a284ee17c197 | Open vSwitch agent | os-worker-3 | None | :-) | UP | neutron-openvswitch-agent | | b4f7b4c4-ee50-47fb-89f5-361571ff846c | Metadata agent | os-ctrl-3 | None | :-) | UP | neutron-metadata-agent | | b5e0d5e9-78fc-4480-bf57-3d6e2e7ea04b | Metering agent | os-ctrl-3 | None | :-) | UP | neutron-metering-agent | | d4c6f8a0-f7fb-41e2-b6da-35e85c9fff60 | L3 agent | os-ctrl-3 | nova | :-) | UP | neutron-l3-agent | | d7210303-2c7d-4418-9b49-62ede9fa20f5 | L3 agent | os-worker-4 | nova | :-) | UP | neutron-l3-agent | | da35d0e0-f84f-4c81-bad8-db8e2e2cd6f5 | Metadata agent | os-ctrl-1 | None | :-) | UP | neutron-metadata-agent | | ed466f61-b3e8-45a2-b0bc-6549d7255449 | L3 agent | os-worker-3 | nova | :-) | UP | neutron-l3-agent | | f323441d-e8bb-4229-baa7-cecfce0eb94c | Metering agent | os-ctrl-1 | None | :-) | UP | neutron-metering-agent | | f9d5b41b-41f1-4454-b33f-ac928e9636b8 | Open vSwitch agent | os-ctrl-2 | None | :-) | UP | neutron-openvswitch-agent | +--------------------------------------+--------------------+-------------+-------------------+-------+-------+---------------------------+
filtri utili sono nel caso del DVR: 'dhcp', 'open-vswitch', 'l3', 'metadata', 'metering'
openstack network agent list --agent-type l3
oppure –host, per esempio:
openstack network agent list --host os-ctrl-2
Per eseminari i dettagli di un agente (qui richiediamo il formato yaml, opzionale):
# openstack network agent show 129d1377-eb08-4472-ae78-8963238a3adf -f yaml admin_state_up: true agent_type: L3 agent alive: true availability_zone: nova binary: neutron-l3-agent configuration: agent_mode: dvr_snat ex_gw_ports: 1 extensions: [] floating_ips: 0 handle_internal_only_routers: true interface_driver: openvswitch interfaces: 1 log_agent_heartbeats: false routers: 2 created_at: '2025-10-07 11:59:17' description: null ha_state: null host: os-ctrl-1 id: 129d1377-eb08-4472-ae78-8963238a3adf last_heartbeat_at: '2025-10-14 14:48:08' resources_synced: null started_at: '2025-10-14 09:13:07' topic: l3_agent
dove troviamo conferma del modo DVR: agentmode: dvrsnat