Table of Contents

APPUNTI SCRITTI NEL MODO MIGLIORE

Da rivedere a più passate

OpenStack con routing Nord/Sud in modalità DVR

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

Architettura OSA

Abbiamo optato per una configurazione DVR ibrida (DVR Hybrid Mode) dove:

In particolare /etc/neutron/neutron.conf:

# Distributed virtual routing
router_distributed = True
enable_dvr = True

Network Node

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 | :-) | 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 /etc/neutron/l3agent.ini

[DEFAULT]
# Drivers
interface_driver = openvswitch
agent_mode = dvr

Comandi esplorativi

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