In dem Dokumentationssatz für dieses Produkt wird die Verwendung inklusiver Sprache angestrebt. Für die Zwecke dieses Dokumentationssatzes wird Sprache als „inklusiv“ verstanden, wenn sie keine Diskriminierung aufgrund von Alter, körperlicher und/oder geistiger Behinderung, Geschlechtszugehörigkeit und -identität, ethnischer Identität, sexueller Orientierung, sozioökonomischem Status und Intersektionalität impliziert. Dennoch können in der Dokumentation stilistische Abweichungen von diesem Bemühen auftreten, wenn Text verwendet wird, der in Benutzeroberflächen der Produktsoftware fest codiert ist, auf RFP-Dokumentation basiert oder von einem genannten Drittanbieterprodukt verwendet wird. Hier erfahren Sie mehr darüber, wie Cisco inklusive Sprache verwendet.
Cisco hat dieses Dokument maschinell übersetzen und von einem menschlichen Übersetzer editieren und korrigieren lassen, um unseren Benutzern auf der ganzen Welt Support-Inhalte in ihrer eigenen Sprache zu bieten. Bitte beachten Sie, dass selbst die beste maschinelle Übersetzung nicht so genau ist wie eine von einem professionellen Übersetzer angefertigte. Cisco Systems, Inc. übernimmt keine Haftung für die Richtigkeit dieser Übersetzungen und empfiehlt, immer das englische Originaldokument (siehe bereitgestellter Link) heranzuziehen.
Dieses Dokument beschreibt die schrittweise Bereitstellung von CPNR auf OpenStack Cisco Virtualized Infrastructure Manager (CVIM) mithilfe von SR-IOV und Active-Backup-Bonding.
Cisco empfiehlt, dass Sie über Kenntnisse in folgenden Bereichen verfügen:
Dieses Dokument ist nicht auf bestimmte Software- und Hardware-Versionen beschränkt.
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen
In der aktuellen Netzwerklandschaft spielen virtuelle Netzwerkfunktionen (Virtual Network Functions, VNFs) eine entscheidende Rolle bei der Bereitstellung flexibler, skalierbarer und effizienter Netzwerkservices. SR-IOV ist eine weit verbreitete Technologie für VNFs, die Hochleistungs-Netzwerkverbindungen benötigen. Mit SR-IOV können VNFs den virtuellen Hypervisor-Switch umgehen und direkt auf physische NIC-Ressourcen (Network Interface Controller) zugreifen. Dies reduziert die Latenz und erhöht den Durchsatz.
Bevor Sie mit der Bereitstellung fortfahren, stellen Sie sicher, dass diese Voraussetzungen erfüllt sind.
Intel XL710 und E810CQDA2 NIC-Karten werden häufig für Hochleistungs-SR-IOV-Netzwerke verwendet. Um das NIC-Kartenmodell auf dem Host zu überprüfen, gehen Sie wie folgt vor:
Führen Sie diesen Befehl aus, um Peripheral Component Interconnect (PCI)-Geräte für Netzwerk-Controller aufzulisten:
lspci | grep -i ethernet
Ausgabebeispiel:
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)
Wenn die Netzwerkkarte Intel XL710 ist, wird der Ethernet-Controller XL710 in der Ausgabe angezeigt.
Wenn die Netzwerkkarte Intel E810CQDA2 ist, sehen Sie die Ausgabe des Ethernet-Controllers E810-Cin.
Um den verwendeten Netzwerkkartentreiber zu überprüfen, führen Sie Folgendes aus:
ethtool -i
Ausgabe Beispiel für XL710:
driver: i40e
version: 2.13.10
Ausgabebeispiel für E810CQDA2:
driver: ice
version: 1.7.12
Stellen Sie sicher, dass die Treiberversion mit der Kompatibilitätsmatrix für Ihre OpenStack- und Linux-Distribution übereinstimmt.
Stellen Sie sicher, dass SR-IOV auf den Servern BIOS/UEFI aktiviert ist.
Intel VT-d oder AMD-Vi müssen für PCI-Passthrough und SR-IOV-Funktionalität aktiviert sein.
Stellen Sie sicher, dass OpenStack-Services wie Nova, Neutron, Glance und Keystone installiert und konfiguriert sind.
Neutron muss sowohl OpenSwitch (OVS) für Orchestrierungs-/Management-Netzwerke als auch SR-IOV für Anwendungs-/Service-Netzwerke unterstützen.
Die Rechenknoten müssen so konfiguriert werden, dass sie SR-IOV unterstützen, wobei auf den NICs virtuelle Funktionen (VFs) erstellt werden.
Das CPNR-VNF-Image muss SR-IOV-Schnittstellen unterstützen und die erforderlichen Treiber enthalten.
Stellen Sie sicher, dass das CPNR-VNF-Image auf OpenStack Glance verfügbar ist.
Stellen Sie den Zugriff auf die OpenStack-CLI sicher, um Netzwerke und Varianten zu erstellen und die VNF zu starten.
Root- oder Administratorzugriff zur Konfiguration des Netzwerks auf dem Linux-Host und innerhalb des VNF.
SRIOV
Im Folgenden finden Sie ein Beispiel für Cisco Elastic Services Controller (ESC)-XML, das die Bereitstellung virtueller Systeme mithilfe von SR-IOV-Netzwerken (mit type>direct</type>) für einen Tenant mit dem Namen test-tenant und einen VM mit dem Namen sriov-vm-1 veranschaulicht. Dies umfasst mehrere Schnittstellen, einschließlich SR-IOV-Schnittstellen (direct):
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> unter <interface> aktiviert SR-IOV (PCI-Passthrough) für diese Netzwerkkarte.
Jede SR-IOV-Schnittstelle verfügt über ein eigenes Netzwerk und Subnetz.
Sie können IPv4/IPv6 nach Bedarf in <Adressen> zuordnen.
Beispiel einer Day0-Datei für die Weiterleitung von 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==
CPNR ist eine wichtige virtuelle Netzwerkfunktion (Virtual Network Function, VNF), die IP Address Management (IPAM)-, DHCP- und Domain Name Server (DNS)-Dienste für Unternehmens- und Service Provider-Netzwerke bereitstellt. Die Bereitstellung von CPNR als VNF in OpenStack erfordert eine sorgfältige Planung, insbesondere bei der Nutzung von SR-IOV-Ports, NUMA-übergreifenden Konfigurationen und einer Active-Backup-Bond-Schnittstelle für Redundanz und Leistung.
In diesem Artikel wird der schrittweise Prozess für die Bereitstellung von CPNR VNF auf OpenStack beschrieben. Sie umfasst:
NUMA-übergreifende Erkennung:
Aktiv-Backup-Bonding:
OpenStack-Netzwerke:
NUMA ist eine Speicherarchitektur, in der jede CPU (und ihr lokaler Speicher und ihre Geräte) in einem NUMA-Knoten gruppiert ist. Bei OpenStack wird durch die NUMA-sensitive Platzierung sichergestellt, dass VNFs optimal Ressourcen auf demselben NUMA-Knoten zugewiesen werden, um die Latenz zu minimieren und die Leistung zu maximieren.
SR-IOV-NICs sind NUMA-lokal:
Einschränkung des Single-NUMA-Modus:
CPNR VNF benötigt Zugang zu:
Bei dieser Bereitstellung benötigt der CPNR-VNF Zugriff auf SR-IOV NICs von NUMA 0 (sriov0) und NUMA 1 (sriov1), um Redundanz und hohe Verfügbarkeit zu gewährleisten. Um dies zu erreichen:
Contrack ist eine Linux-Kernelfunktion, die zum Verfolgen von Netzwerkverbindungen verwendet wird, insbesondere für Network Address Translation (NAT) und Firewall-Regeln. Für OVS-basierte Ports in OpenStack wird contrack verwendet, um den Verbindungsstatus zu verwalten und Sicherheitsgruppenregeln durchzusetzen.
ConnTrack-Tabelle:
Standardlimit:
Auswirkungen auf OVS-Ports:
Größe der Kontrolltabelle erhöhen:
sysctl net.netfilter.nf_conntrack_max
sysctl -w net.netfilter.nf_conntrack_max=262144
echo "net.netfilter.nf_conntrack_max=262144" >> /etc/sysctl.conf
Überwachung der ConnTrack-Nutzung:
Kontrahierungsstatistiken überprüfen:cat /proc/sys/net/netfilter/nf_conntrack_count
Sicherheitsgruppenregeln optimieren:
Reduzieren Sie die Anzahl der Regeln, die auf OVS-Ports angewendet werden, um den Overhead für die Zugriffe zu minimieren.SR-IOV-Ports umgehen den OVS-Datenpfad und Linux-Kernel-Funktionen wie conntrack. Dadurch wird der Aufwand für die Verbindungsnachverfolgung vollständig beseitigt.
Im Gegensatz zu OVS-Ports, die durch die Größe der conntrack-Tabelle (nf_conntrack_max) begrenzt sind, können SR-IOV-Ports eine nahezu unbegrenzte Anzahl von Verbindungen verarbeiten.
Durch die Auslagerung der Paketverarbeitung an die NIC-Hardware eliminieren die SR-IOV-Ports die Latenz, die durch die softwarebasierte Parallelverarbeitung entsteht.
Der Active-Backup-Bonding-Modus eignet sich aufgrund seiner Einfachheit, Fehlertoleranz und Kompatibilität mit SR-IOV-Schnittstellen besonders gut für diese Bereitstellung. Hier die Gründe:
Der Active-Backup-Modus funktioniert unabhängig von den zugrunde liegenden physischen Switches oder der Hardware. Die Failover-Logik befindet sich vollständig im Linux-Kernel und ist daher äußerst mobil und vielseitig.
SR-IOV-VFs sind mit bestimmten physischen NICs und NUMA-Knoten verknüpft. Mit dem Active-Backup-Modus können Sie VFs von verschiedenen NUMA-Knoten zu einer einzigen logischen Bindungsschnittstelle (bond0) kombinieren. So wird eine hohe Verfügbarkeit sichergestellt und gleichzeitig die NUMA-Ressourcen effizient genutzt.
Der Active-Backup-Modus ist einer der einfachsten und am weitesten verbreiteten Modi beim Linux-Bonding. Es wurde für hohe Verfügbarkeit entwickelt, indem sichergestellt wird, dass der Datenverkehr auch dann nahtlos weiterfließt, wenn eine der verbundenen Schnittstellen ausfällt. Dies ist eine ausführliche Erläuterung der Funktionsweise des Active-Backup-Modus, seiner Hauptmerkmale und Vorteile.
Eine Bond-Schnittstelle in Linux kombiniert zwei oder mehr Netzwerkschnittstellen zu einer einzigen logischen Schnittstelle. Diese logische Schnittstelle, die als Bindung (z. B. bond0) bezeichnet wird, dient zur Bereitstellung von:
Im Aktiv-Backup-Modus wird jeweils nur eine Schnittstelle (die aktive Schnittstelle) zum Senden und Empfangen von Datenverkehr verwendet. Die anderen Schnittstellen verbleiben im Standby-Modus. Wenn die aktive Schnittstelle ausfällt, wird eine der Standby-Schnittstellen in den aktiven Status hochgestuft, und der Datenverkehr wird automatisch auf die neue aktive Schnittstelle umgeleitet.
Eine aktive Schnittstelle:
Automatisches Failover:
Failback-Unterstützung:
Sobald die ausgefallene Schnittstelle wiederhergestellt ist, kann sie je nach Bonding-Konfiguration automatisch wieder aktiviert werden (sofern konfiguriert) oder im Standby-Modus verbleiben.Keine Switch-seitigen Anforderungen:
Überwachung:
miimon
(Media Independent Interface Monitor).Aktive Schnittstelle:
Überwachung:
Verbindungsfehler auf aktiver Schnittstelle:
Wenn die aktive Schnittstelle (eth2) ausfällt (z. B. Kabel abgezogen, NIC-Hardwarefehler oder Verbindungsunterbrechung), erkennt die Verbindung den Fehler sofort mithilfe der Mini- oder ARP-Überwachung.Automatisches Failover:
Failover-Aktualität:
Der Failover-Prozess läuft nahezu unmittelbar ab (in der Regel innerhalb weniger Millisekunden, je nach Minimumintervall).Wiederherstellung einer fehlerhaften Schnittstelle:
Kontinuität des Datenverkehrs:
Failback ist nahtlos und stellt keine Unterbrechung des laufenden Datenverkehrs sicher.Der Active-Backup-Modus eignet sich aus folgenden Gründen besonders für SR-IOV-Schnittstellen:
Beispiele:
Für die CPNR-VNF sind die folgenden vier Netzwerke erforderlich:
Schrittweise Bereitstellung:
Orchestrierungs-Netzwerk:
openstack network create --provider-network-type vxlan orchestration-network
Managementnetzwerk:
openstack network create --provider-network-type vxlan management-network
Orchestrierungs-Subnetz:
openstack subnet create --network orchestration-network \
--subnet-range 192.168.100.0/24 orchestration-subnet
Management-Subnetz:
openstack subnet create --network management-network \
--subnet-range 10.10.10.0/24 management-subnet
SR-IOV-Netzwerk 1:
openstack network create --provider-network-type vlan \
--provider-physical-network sriov0 --provider-segment 101 sriov-network-1
SR-IOV-Netzwerk 2:
openstack network create --provider-network-type vlan \
--provider-physical-network sriov1 --provider-segment 102 sriov-network-2
Um sicherzustellen, dass die VNF auf SR-IOV NICs von beiden NUMA-Knoten zugreifen kann, erstellen Sie eine Variante mit NUMA-übergreifender Unterstützung:
openstack flavor create --ram 8192 --vcpus 4 --disk 40 cross-numa-flavor
NUMA-spezifische Eigenschaften festlegen:
openstack flavor set cross-numa-flavor \
--property hw:numa_nodes=2 \
--property hw:cpu_policy=dedicated \
--property hw:mem_page_size=large
Konfigurieren Sie nach dem Starten der VNF die Bond-Schnittstelle für SR-IOV-Ports (eth2 und eth3) auf der VNF.
Erstellen Sie eine Bond-Schnittstelle (bond0) im Active-Backup-Modus:
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
Starten Sie den Netzwerkdienst neu, um die Konfiguration anzuwenden:
systemctl restart network
Überprüfen Sie nach der Bereitstellung des VNF dessen Funktionalität mithilfe der folgenden Schritte:
Überprüfen Sie, ob die VNF-Instanz aktiv ist:
openstack server show cpnr-instance
Stellen Sie sicher, dass der Status AKTIV lautet.
Ping-Test: Vergewissern Sie sich, dass die VNF über alle Netzwerke kommunizieren kann:
ping
ping
Bindungsschnittstelle:
Bestätigen Sie, dass bond0 aktiv ist:
cat /proc/net/bonding/bond0
Suchen nach:
Vergewissern Sie sich, dass die VNF Ressourcen von beiden NUMA-Knoten verwendet:
nova show --human | grep numa
Überwachung und Fehlerbehebung: Verwenden Sie Tools wie likepdumpandethtool, um die SR-IOV-Schnittstellen zu überwachen.
Sicherheit: Sorgfältige Verwaltung des Zugriffs auf das physische Netzwerk und Durchsetzung strikter Isolierung zwischen Tenants
Skalierung: Planen Sie die physische NIC-Kapazität bei der Skalierung von SR-IOV-Bereitstellungen, da die Anzahl der verfügbaren VFs durch die NIC-Hardware begrenzt ist.
Wenn die Bereitstellung nicht wie erwartet funktioniert, führen Sie die folgenden Schritte zur Fehlerbehebung durch:
dmesg | grep -i "SR-IOV"
lspci | grep Ethernet
Wenn das VNF nicht auf beide NICs zugreifen kann, stellen Sie sicher, dass der NUMA-übergreifende Modus aktiviert ist:
openstack flavor show cross-numa-flavor
cat /proc/net/bonding/bond0
systemctl restart network
openstack port list --server cpnr-instance
ip addr show
Für die Bereitstellung von CPNR-VNF auf OpenStack mit SR-IOV-Ports ist der NUMA-übergreifende Modus erforderlich, damit die VNF eine Verbindung zu NICs beider NUMA-Knoten herstellen kann. Dies ist wichtig, da OpenStack VNFs im Single-NUMA-Modus auf den Zugriff auf Ressourcen (NICs, CPUs, Speicher) innerhalb des NUMA-Knotens beschränkt, in dem die VNF gestartet wird. Durch die Kombination des NUMA-übergreifenden Modus mit dem Active-Backup-Bonding werden eine hohe Verfügbarkeit, Fehlertoleranz und eine effiziente Ressourcennutzung sichergestellt, sodass diese Bereitstellung äußerst ausfallsicher und leistungsfähig ist.
Überarbeitung | Veröffentlichungsdatum | Kommentare |
---|---|---|
1.0 |
10-Jul-2025 |
Erstveröffentlichung |