La documentazione per questo prodotto è stata redatta cercando di utilizzare un linguaggio senza pregiudizi. Ai fini di questa documentazione, per linguaggio senza di pregiudizi si intende un linguaggio che non implica discriminazioni basate su età, disabilità, genere, identità razziale, identità etnica, orientamento sessuale, status socioeconomico e intersezionalità. Le eventuali eccezioni possono dipendere dal linguaggio codificato nelle interfacce utente del software del prodotto, dal linguaggio utilizzato nella documentazione RFP o dal linguaggio utilizzato in prodotti di terze parti a cui si fa riferimento. Scopri di più sul modo in cui Cisco utilizza il linguaggio inclusivo.
Cisco ha tradotto questo documento utilizzando una combinazione di tecnologie automatiche e umane per offrire ai nostri utenti in tutto il mondo contenuti di supporto nella propria lingua. Si noti che anche la migliore traduzione automatica non sarà mai accurata come quella fornita da un traduttore professionista. Cisco Systems, Inc. non si assume alcuna responsabilità per l’accuratezza di queste traduzioni e consiglia di consultare sempre il documento originale in inglese (disponibile al link fornito).
In questo documento viene descritta l'implementazione dettagliata del protocollo CPNR su OpenStack Cisco Virtualized Infrastructure Manager (CVIM) utilizzando SR-IOV e il collegamento di Active-Backup.
Cisco raccomanda la conoscenza dei seguenti argomenti:
Il documento può essere consultato per tutte le versioni software o hardware.
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi
Nell'attuale scenario di rete, le funzioni di rete virtuali (VNF) svolgono un ruolo critico nel consentire servizi di rete agili, scalabili ed efficienti. Per le VNF che richiedono una connettività di rete ad alte prestazioni, SR-IOV è una tecnologia comunemente utilizzata. SR-IOV consente alle VNF di ignorare lo switch virtuale dell'hypervisor e di accedere direttamente alle risorse fisiche del controller di interfaccia di rete (NIC), riducendo in tal modo la latenza e aumentando il throughput.
Prima di procedere con la distribuzione, verificare che i prerequisiti siano soddisfatti.
Le schede NIC Intel XL710 e E810CQDA2 sono comunemente utilizzate per il networking SR-IOV ad alte prestazioni. Per verificare il modello della scheda NIC sull'host, attenersi alla seguente procedura:
Eseguire questo comando per elencare le periferiche PCI (Peripheral Component Interconnect) correlate ai controller di rete:
lspci | grep -i ethernet
Esempio:
81:00.0 Ethernet controller: Intel Corporation Ethernet Controller XL710 for 40GbE QSFP+ (rev 02)
82:00.0 Ethernet controller: Intel Corporation Ethernet Controller E810-C for QSFP (rev 03)
Se la scheda NIC è Intel XL710, è possibile visualizzare il controller Ethernet XL710 nell'output.
Se la scheda NIC è Intel E810CQDA2, è possibile visualizzare l'output del controller Ethernet E810-Cin.
Per controllare il driver della scheda NIC in uso, eseguire:
ethtool -i
Esempio di output per XL710:
driver: i40e
version: 2.13.10
Esempio di output per E810CQDA2:
driver: ice
version: 1.7.12
Verificare che la versione del driver corrisponda alla matrice di compatibilità per la distribuzione OpenStack e Linux.
Verificare che SR-IOV sia abilitato nel BIOS/UEFI dei server.
Intel VT-d o AMD-Vi devono essere abilitati per le funzionalità PCI passthrough e SR-IOV.
Accertarsi che i servizi OpenStack come Nova, Neutron, Glance e Keystone siano installati e configurati.
Neutron deve supportare sia Openvswitch (OVS) per le reti di orchestrazione/gestione che SR-IOV per le reti di applicazioni/servizi.
I nodi di elaborazione devono essere configurati in modo da supportare SR-IOV, con le funzioni virtuali (VF) create sulle schede di interfaccia di rete.
L'immagine VNF CPNR deve supportare le interfacce SR-IOV e includere i driver necessari.
Assicurarsi che l'immagine VNF CPNR sia disponibile in OpenStack Glance.
Garantire l'accesso all'interfaccia CLI di OpenStack per la creazione di reti, versioni e l'avvio di VNF.
Accesso root o amministrativo per configurare la rete sull'host Linux e all'interno del VNF.
SRIOV
Di seguito è riportato un esempio di codice XML di Cisco Elastic Services Controller (ESC), che dimostra la distribuzione di una macchina virtuale (VM) tramite la rete SR-IOV (con tipo>diretto</tipo>) per un tenant denominato test-tenant e una macchina virtuale denominata sriov-vm-1. Sono incluse più interfacce, incluse le interfacce SR-IOV (dirette):
test-tenant
true
false
sriov-vm-deployment
sriov-vm-1-group
vim1
default
sriov-image
custom-flavor
300
30
REBOOT_ONLY
0
mgmt-net
192.168.10.101
1
direct
sriov-net-1
0
sriov-subnet-1
10.10.10.10
2
direct
sriov-net-2
0
sriov-subnet-2
10.10.20.10
1
1
false
--user-data
file://tmp/init/sriov-vm-1.cfg
type>direct</type> in <interface> abilita SR-IOV (PCI passthrough) per la scheda NIC.
Ogni interfaccia SR-IOV ha la propria rete e subnet.
È possibile associare IPv4/IPv6 in <address> in base alle esigenze.
File Day0 di esempio da passare a Cisco ESC XML:
Content-Type: multipart/mixed; boundary="===============2678395050260980330=="
MIME-Version: 1.0`
--===============2678395050260980330==
MIME-Version: 1.0
Content-Type: text/cloud-boothook; charset="us-ascii"
#cloud-boothook
#!/bin/bash
if [ ! -f /etc/cloud/cloud.cfg.orig ]; then
cp /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg.orig
cp /etc/cloud/cloud.cfg.norootpasswd /etc/cloud/cloud.cfg
fi
--===============2678395050260980330==
MIME-Version: 1.0
Content-Type: text/cloud-config; charset="us-ascii"
#cloud-config
hostname: cpnr
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC7pf8gvOWH/Zv8iAlTv6LWEiPGA3B6t96G6LwTHF6iXOqQxyIUkg8IkqZ6wNwxsDV8DYESOzFGp//aXO6wZDtoawMExe9sNEx0qVOt/ueP3IYQ8731fNJwFtWQsCQTM7VQjpcg5/d6eMxQ8zvmiIYo2huwfclE+zLdihjL/Y6v4HK760u/DQ+OaEIgqTgrwePJK5Db/gMDf+oXI9KvNxDb2vtxzroX0APEnZ9JX+Ic0JGWTkD4smMkTdWsjaqDYXqW6SUsyCc4Bf9tHL5Irr1AgUR4hEbLnbk6NlIqWrgVeI5CQVMMFpWqV0o2hyDz2rMA7tbBeYzD/ynslQAerU7DmBRb1FDVh79+JeaCNIM8EpwbCUKHT6CQAjPK8cYBieO1yEHKjHyFTsZgpvdi4rVMP+Qsvab+J5RPPcJeKj7o8KIrtyyESXbLNcZv1uGwZ8nLZKfZQSJP04HUkRKoQJ/JoMvMurEKG/cJ1VtocV4AJiRHj+367D3uzrKd6eHYlM9oD+zpPeJ1P1J2TDPUp2K7GcKCrItn9blSGo/n/+gYBO793QjSdkmc/Ag4TEVhUfG17l0WlSvAw4L0csMlYBAGGqKAUEEx3BJGYNJ851bj23m6JBe83OVWGRWrDIIE+G14/tx8qYXDaFxFUFPb2zj+gmDXq80hYpv++/yFtTocbw== cpnr@INVITN14SLM1BULD01CO
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDAmkQGCZUrYqkZ0C0J9t7mF9La9zYOqfzzFkk1wWtPga+aANOaFgjqbjj+VlBdd3zJy1p6BMWZhaZIcOh0+knCisJArcHM3HlurQZXO45zHtBcm7tB1FQ0W1HI9GbvJ+IPIe7kpPme/socd5ytTx0ZkYtlcRDDZuxTwYY4P4/vpnzXuwPS2dfcfQscubj6MkSlx4JHhc/hkDsmtJUipkWEungE/UsldjQzkj8oJorymYHQXE/czNxwzCGizK1YinhebeHFcmHd6Jcqd5oZZWnmkGKGeW6o0ddSFI5NmwzHd5RzwjztU2nqmiyOA8mu7YkCm6X82uhACwQlfY0pGRpTVkIhlf+tKDwKQRuwpcbR1ZUHmli0zi5QZtbzc31aLNlUPpR21BptS4GSfbKJaMOaDUClfe8rGk+9GCgm6wnZiT+SMa4/wEA9NILlwobrwHxVsb/kFlFKXg0aPkdvmqWPNcd09vF50enrs0aXFsqCyl6CPMJpZtGAgckvX8iU2bCJkxzD9F4rAu2D/FNb8KG5cbw7uptiwB4yoek6Q36NyxHYYJyOGiV4oQJ02T9MRPkvjLf7ASx9HA25nG+J4CZXWkuV7XYX1N5DFvOg/kwA7xMPyNgTEkblTRpIcfXU2PCWYSZcn1vYmsazf2uVCY+mjfLcvi85c/1mLnUGikiovQ== admin@invitn14slm1escx01co
runcmd:
- /usr/sbin/useradd FMLVL1 -d /home/FMLVL1 -s /bin/bash -g users; (/bin/echo changeme; /bin/echo changeme) | /usr/bin/passwd FMLVL1
- nmcli con add type ethernet con-name eth0 ifname eth0 ip4 10.xx.xx.xx/24
- nmcli con add type ethernet con-name eth1 ifname eth1 ip4 172.xx.xx.xx/23
- nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup,miimon=1000,fail_over_mac=1" ipv4.addresses 'xx.xx.xx.xx/29' ipv4.gateway 'xx.xx.xx.xx' ipv4.method manual ipv6.addresses '2402:xxxx:xx:0025::5/64' ipv6.gateway '2402:xxxx:xx:0025::1' ipv6.method manual
- nmcli connection add type ethernet ifname ens6 master bond0
- nmcli connection add type ethernet ifname ens7 master bond0
- nmcli con up eth0
- nmcli con up eth1
- nmcli con up bond-slave-ens6
- nmcli con up bond-slave-ens7
- nmcli con down bond0
- nmcli con up bond0
- nmcli connection reload
- hostnamectl set-hostname CPNRDNS01CO
--===============2678395050260980330==
Il CPNR è una funzione di rete virtuale (VNF, Virtual Network Function) essenziale che fornisce i servizi di gestione degli indirizzi IP (IPAM), DHCP e DNS (Domain Name Server) per le reti aziendali e di provider di servizi. L'implementazione di CPNR come VNF in OpenStack richiede un'attenta pianificazione, in particolare quando si utilizzano porte SR-IOV, configurazioni NUMA incrociate e un'interfaccia di collegamento Active-Backup per ridondanza e prestazioni.
In questo articolo viene illustrato il processo dettagliato per l'implementazione del file VNF CPNR su OpenStack. Esso comprende:
Riconoscimento inter-NUMA:
Collegamento Active-Backup:
Reti OpenStack:
NUMA è un'architettura di memoria in cui ciascuna CPU (e la relativa memoria locale e i dispositivi) sono raggruppati in un nodo NUMA. In OpenStack, il posizionamento con riconoscimento NUMA assicura che le VNF siano assegnate in modo ottimale alle risorse sullo stesso nodo NUMA per ridurre al minimo la latenza e ottimizzare le prestazioni.
Le schede di interfaccia di rete SR-IOV sono locali NUMA:
Limitazione modalità NUMA singola:
Il CPNR VNF richiede l'accesso a:
In questa implementazione, la VNF CPNR richiede l'accesso alle schede NIC SR-IOV sia da NUMA 0 (sriov0) che da NUMA 1 (sriov1) per fornire ridondanza ed elevata disponibilità. A tal fine:
Conntrack è una funzionalità del kernel Linux utilizzata per tenere traccia delle connessioni di rete, in particolare per le regole NAT (Network Address Translation) e firewall. Per le porte basate su OVS in OpenStack, la funzione conntrack viene utilizzata per gestire lo stato della connessione e applicare le regole dei gruppi di sicurezza.
Tabella Conntrack:
Limite predefinito:
Impatto sulle porte OVS:
Aumenta dimensioni tabella di controllo:
sysctl net.netfilter.nf_conntrack_max
sysctl -w net.netfilter.nf_conntrack_max=262144
echo "net.netfilter.nf_conntrack_max=262144" >> /etc/sysctl.conf
Monitoraggio utilizzo di Conntrack:
Controllare le statistiche di traccia:cat /proc/sys/net/netfilter/nf_conntrack_count
Ottimizza regole gruppo di sicurezza:
Ridurre il numero di regole applicate alle porte OVS per ridurre al minimo il sovraccarico di traccia.Le porte SR-IOV ignorano il datapath OVS e le funzionalità del kernel Linux come conntrack. In questo modo si rimuove completamente il sovraccarico di verifica delle connessioni.
A differenza delle porte OVS, che sono limitate dalle dimensioni della tabella di connessione (nf_conntrack_max), le porte SR-IOV possono gestire un numero virtualmente illimitato di connessioni.
Scaricando l'elaborazione dei pacchetti sull'hardware NIC, le porte SR-IOV eliminano la latenza introdotta dall'elaborazione basata su software della connessione.
La modalità di collegamento Active-Backup è particolarmente adatta per questa implementazione, grazie alla semplicità, alla tolleranza di errore e alla compatibilità con le interfacce SR-IOV. Ecco perché:
La modalità Active-Backup funziona indipendentemente dagli switch fisici o dall'hardware sottostanti. La logica di failover risiede interamente nel kernel Linux, rendendolo estremamente versatile e portatile.
Le VF SR-IOV sono legate a NIC e nodi NUMA fisici specifici. Utilizzando la modalità Active-Backup, è possibile combinare VF di nodi NUMA diversi in un'unica interfaccia di collegamento logico (bond0). Ciò garantisce un'elevata disponibilità e un uso efficiente delle risorse NUMA.
La modalità Active-Backup è una delle modalità più semplici e più utilizzate nel collegamento Linux. È stato progettato per fornire elevata disponibilità garantendo che il traffico continui a scorrere senza problemi anche in caso di errore di una delle interfacce collegate. Si tratta di una spiegazione dettagliata del funzionamento della modalità Active-Backup, delle caratteristiche principali e dei vantaggi.
Un'interfaccia di collegamento in Linux combina due o più interfacce di rete in un'unica interfaccia logica. Questa interfaccia logica, nota come legame (ad esempio, bond0), viene utilizzata per fornire:
Nella modalità Active-Backup, per trasmettere e ricevere il traffico viene usata una sola interfaccia (chiamata interfaccia attiva) alla volta. Le altre interfacce rimangono in modalità standby. Se l'interfaccia attiva non funziona, una delle interfacce in standby viene promossa allo stato attivo e il traffico viene automaticamente reindirizzato alla nuova interfaccia attiva.
Interfaccia attiva singola:
Failover automatico:
Supporto failback:
Una volta ripristinata, l'interfaccia guasta può riattivarsi automaticamente (se è stata configurata per farlo) o rimanere in modalità standby, a seconda della configurazione di legame.Nessun requisito per il lato switch:
Monitoraggio
imon
(Media Independent Interface Monitor).Interfaccia attiva:
Monitoraggio
Errore di collegamento su interfaccia attiva:
Se l'interfaccia attiva (eth2) non funziona (ad esempio, il cavo non è collegato, si è verificato un errore hardware della scheda NIC o il collegamento non funziona), il collegamento rileva immediatamente il problema utilizzando il monitoraggio miimonon o ARP.Failover automatico:
Tempestività del failover:
Il processo di failover è quasi istantaneo (in genere entro pochi millisecondi, a seconda di temiimoninterval).Ripristino dell'interfaccia non riuscita:
Continuità del traffico:
Il failback è senza interruzioni e garantisce l'assenza di interruzioni per i flussi di traffico in corso.La modalità Active-Backup è particolarmente indicata per le interfacce SR-IOV in quanto:
Ad esempio:
Il CPNR VNF richiede le quattro reti seguenti:
Installazione dettagliata:
Rete di orchestrazione:
openstack network create --provider-network-type vxlan orchestration-network
Rete di gestione:
openstack network create --provider-network-type vxlan management-network
Subnet orchestrazione:
openstack subnet create --network orchestration-network \
--subnet-range 192.168.100.0/24 orchestration-subnet
Subnet di gestione:
openstack subnet create --network management-network \
--subnet-range 10.10.10.0/24 management-subnet
Rete SR-IOV 1:
openstack network create --provider-network-type vlan \
--provider-physical-network sriov0 --provider-segment 101 sriov-network-1
Rete SR-IOV 2:
openstack network create --provider-network-type vlan \
--provider-physical-network sriov1 --provider-segment 102 sriov-network-2
Per garantire che il VNF sia in grado di accedere alle schede di interfaccia di rete SR-IOV da entrambi i nodi NUMA, creare una configurazione con supporto cross-NUMA:
openstack flavor create --ram 8192 --vcpus 4 --disk 40 cross-numa-flavor
Impostare le proprietà specifiche di NUMA:
openstack flavor set cross-numa-flavor \
--property hw:numa_nodes=2 \
--property hw:cpu_policy=dedicated \
--property hw:mem_page_size=large
Dopo aver avviato il VNF, configurare l'interfaccia di collegamento per le porte SR-IOV (eth2 e eth3) sul VNF.
Creare un'interfaccia di collegamento (bond0) in modalità Active-Backup:
vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
ONBOOT=yes
BONDING_OPTS="mode=active-backup miimon=100"
IPADDR=172.16.1.10
NETMASK=255.255.255.0
GATEWAY=172.16.1.1
eth2:
vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
ONBOOT=yes
MASTER=bond0
SLAVE=yes
eth3:
vi /etc/sysconfig/network-scripts/ifcfg-eth3
DEVICE=eth3
ONBOOT=yes
MASTER=bond0
SLAVE=yes
Riavviare il servizio di rete per applicare la configurazione:
systemctl restart network
Dopo aver distribuito il file VNF, verificarne la funzionalità attenendosi alla seguente procedura:
Verificare che l'istanza VNF sia attiva:
openstack server show cpnr-instance
Assicurarsi che lo stato sia ACTIVE.
Test Ping: Verificare che il VNF sia in grado di comunicare su tutte le reti:
ping
ping
Interfaccia bond:
Confermare che bond0 sia attivo:
cat /proc/net/bonding/bond0
Cerca:
Verificare che il VNF utilizzi le risorse di entrambi i nodi NUMA:
nova show --human | grep numa
Monitoraggio e risoluzione dei problemi: Utilizzare strumenti quali cpdumpandethtoolper monitorare le interfacce SR-IOV.
Security: Gestire con attenzione l'accesso alla rete fisica e applicare un rigoroso isolamento tra i tenant.
Proporzioni: Pianificare la capacità della scheda NIC fisica durante la scalabilità delle installazioni SR-IOV, in quanto il numero di VF disponibili è limitato dall'hardware della scheda NIC.
Se la distribuzione non funziona come previsto, fare riferimento alla procedura di risoluzione dei problemi seguente:
dmesg | grep -i "SR-IOV"
lspci | grep Ethernet
Se il VNF non è in grado di accedere a entrambe le schede NIC, verificare che sia abilitata la modalità cross-NUMA:
openstack flavor show cross-numa-flavor
cat /proc/net/bonding/bond0
systemctl restart network
openstack port list --server cpnr-instance
ip addr show
La distribuzione di VNF CPNR su OpenStack con porte SR-IOV richiede la modalità cross-NUMA per consentire al VNF di connettersi alle schede NIC da entrambi i nodi NUMA. Questo è essenziale perché OpenStack limita le VNF in modalità Single-NUMA ad accedere solo alle risorse (NIC, CPU, memoria) all'interno del nodo NUMA in cui viene avviato il VNF. La combinazione della modalità inter-NUMA con il collegamento Active-Backup garantisce elevata disponibilità, tolleranza di errore e utilizzo efficiente delle risorse, rendendo questa implementazione estremamente resiliente e performante.
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
10-Jul-2025 |
Versione iniziale |