この製品のドキュメントセットは、偏向のない言語を使用するように配慮されています。このドキュメントセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブ ランゲージの取り組みの詳細は、こちらをご覧ください。
シスコは世界中のユーザにそれぞれの言語でサポート コンテンツを提供するために、機械と人による翻訳を組み合わせて、本ドキュメントを翻訳しています。ただし、最高度の機械翻訳であっても、専門家による翻訳のような正確性は確保されません。シスコは、これら翻訳の正確性について法的責任を負いません。原典である英語版(リンクからアクセス可能)もあわせて参照することを推奨します。
このドキュメントでは、SR-IOVとアクティブバックアップボンディングを使用して、OpenStack Cisco Virtualized Infrastructure Manager(CVIM)にCPNRを段階的に導入する方法について説明します。
次の項目に関する知識があることが推奨されます。
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。稼働中のネットワークで作業を行う場合、コマンドの影響について十分に理解したうえで作業してください
現在のネットワーキング環境では、仮想ネットワーク機能(VNF)は、俊敏でスケーラブルな効率的なネットワークサービスを実現するうえで重要な役割を果たします。高性能なネットワーク接続を必要とするVNFでは、SR-IOVがよく使用されるテクノロジーです。SR-IOVにより、VNFはハイパーバイザ仮想スイッチをバイパスし、物理ネットワークインターフェイスコントローラ(NIC)リソースに直接アクセスできるため、遅延が減少し、スループットが向上します。
導入を進める前に、次の前提条件が満たされていることを確認してください。
インテルXL710およびE810CQDA2 NICカードは、高パフォーマンスのSR-IOVネットワーキングに広く使用されています。ホストのNICカードモデルを確認するには、次の手順を参照してください。
ネットワークコントローラに関連するPeripheral Component Interconnect(PCI)デバイスをリストするには、次のコマンドを実行します。
lspci | grep -i ethernet
出力例:
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)
NICがIntel XL710の場合は、出力にイーサネットコントローラXL710と表示されます。
NICがIntel E810CQDA2の場合は、出力に「Ethernet Controller E810-Cin」と表示されます。
使用中のNICドライバを確認するには、次のコマンドを実行します。
ethtool -i
XL710の出力例:
driver: i40e
version: 2.13.10
E810CQDA2の出力例:
driver: ice
version: 1.7.12
ドライバのバージョンがOpenStackおよびLinuxディストリビューションの互換性マトリックスと一致していることを確認します。
サーバのBIOS/UEFIでSR-IOVが有効になっていることを確認します。
PCIパススルーおよびSR-IOV機能を使用するには、Intel VT-dまたはAMD-Viを有効にする必要があります。
Nova、Neutron、Glance、KeystoneなどのOpenStackサービスがインストールされ、設定されていることを確認します。
Neutronは、オーケストレーション/管理ネットワーク用のOpenvswitch(OVS)と、アプリケーション/サービスネットワーク用のSR-IOVの両方をサポートする必要があります。
コンピューティングノードは、SR-IOVをサポートし、NIC上に仮想機能(VF)を作成するように設定する必要があります。
CPNR VNFイメージはSR-IOVインターフェイスをサポートし、必要なドライバを含む必要があります。
CPNR VNFイメージがOpenStack Glanceで使用できることを確認します。
ネットワークの作成、フレーバー、およびVNFの起動を行うために、OpenStack CLIにアクセスできることを確認します。
Linuxホスト上およびVNF内でネットワークを設定するためのルートまたは管理アクセス。
スリオフ
次に示すのはCisco Elastic Services Controller(ESC)XMLのサンプルです。test-tenantという名前のテナントとsriov-vm-1という名前のVMに対して、SR-IOVネットワーキング(type>direct</type>)を使用した仮想マシン(VM)の導入を示しています。これには、SR-IOV(直接)インターフェイスを含む複数のインターフェイスが含まれます。
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
<interface>の下のtype>direct</type>を使用して、そのNICのSR-IOV(PCIパススルー)をイネーブルにします。
各SR-IOVインターフェイスには、独自のネットワークとサブネットがあります。
必要に応じて、IPv4/IPv6を<addresses>で関連付けることができます。
Cisco ESC XMLで渡すDay0ファイルの例:
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は、企業およびサービスプロバイダーのネットワークにIPアドレス管理(IPAM)、DHCP、およびドメインネームサーバ(DNS)サービスを提供する重要な仮想ネットワーク機能(VNF)です。OpenStackでVNFとしてCPNRを展開する場合、特に冗長性とパフォーマンスを確保するためにSR-IOVポート、クロスNUMA構成、およびアクティブバックアップボンドインターフェイスを活用する場合、慎重な計画が必要です。
この記事では、OpenStackにCPNR VNFを導入する手順を説明します。内容は以下を含みます。
NUMA間の認識:
アクティブ/バックアップボンディング:
OpenStackネットワーキング:
NUMAは、各CPU(およびそのローカルメモリとデバイス)がNUMAノードにグループ化されるメモリアーキテクチャです。OpenStackでは、NUMAに対応した配置により、遅延を最小限に抑え、パフォーマンスを最大化するために、VNFが同じNUMAノード上のリソースに最適に割り当てられます。
SR-IOV NICはNUMAローカルです。
シングルNUMAモードの制限:
CPNR VNFでは、次の機能にアクセスする必要があります。
この導入では、冗長性とハイアベイラビリティを提供するために、CPNR VNFはNUMA 0(sriov0)およびNUMA 1(sriov1)の両方からSR-IOV NICにアクセスする必要があります。これを実現するには、次の手順を実行します。
Conntrackは、特にネットワークアドレス変換(NAT)とファイアウォールルールのネットワーク接続を追跡するために使用されるLinuxカーネル機能です。OpenStackのOVSベースのポートでは、接続状態の管理とセキュリティグループルールの適用にconntrackが使用されます。
Conntrackテーブル:
デフォルトの制限:
OVSポートへの影響:
Conntrackテーブルのサイズを増やす:
sysctl net.netfilter.nf_conntrack_max
sysctl -w net.netfilter.nf_conntrack_max=262144
echo "net.netfilter.nf_conntrack_max=262144" >> /etc/sysctl.conf
Monitor Conntrack Usage(コントローラの使用状況の監視):
conntrackの統計情報を確認します。cat /proc/sys/net/netfilter/nf_conntrack_count
セキュリティグループルールの最適化:
OVSポートに適用されるルールの数を減らして、conntrackのオーバーヘッドを最小限に抑える。SR-IOVポートは、OVSデータパスおよびconntrackなどのLinuxカーネル機能をバイパスします。これにより、接続トラッキングのオーバーヘッドが完全に排除されます。
conntrackテーブルサイズ(nf_conntrack_max)に制限されるOVSポートとは異なり、SR-IOVポートは実質的に無制限の数の接続を処理できます。
パケット処理をNICハードウェアにオフロードすることで、SR-IOVポートはソフトウェアベースのconntrack処理による遅延を解消します。
アクティブバックアップボンディングモードは、その単純さ、耐障害性、およびSR-IOVインターフェイスとの互換性により、この導入に特に適しています。その理由は次のとおりです。
アクティブ – バックアップモードは、基盤となる物理スイッチやハードウェアとは独立して動作します。フェールオーバーロジックは完全にLinuxカーネル内に存在し、移植性と汎用性が高くなっています。
SR-IOV VFは特定の物理NICとNUMAノードに関連付けられます。アクティブバックアップモードを使用すると、異なるNUMAノードからのVFを単一の論理ボンドインターフェイス(bond0)に結合できます。 これにより、NUMAリソースを効率的に使用しながら、高可用性を確保できます。
Active-Backupモードは、Linuxボンディングで最も簡単で広く使用されているモードの1つです。これは、結合インターフェイスの1つに障害が発生しても、トラフィックがシームレスに流れ続けることを保証することによって、ハイアベイラビリティを提供するように設計されています。 ここでは、アクティブ – バックアップモードの仕組み、主な特性、および利点について詳しく説明します。
Linuxのbond interfaceは2つ以上のネットワークインターフェイスを組み合わせて1つの論理インターフェイスにします。この論理インターフェイスはbond(bond0など)と呼ばれ、次の機能を提供するために使用されます。
アクティブバックアップモードでは、トラフィックの送受信に常に1つのインターフェイス(アクティブインターフェイスと呼ばれる)だけが使用されます。他のインターフェイスはスタンバイモードのままです。アクティブインターフェイスに障害が発生すると、スタンバイインターフェイスの1つがactiveステータスに格上げされ、トラフィックは自動的に新しいアクティブインターフェイスに再ルーティングされます。
単一のアクティブインターフェイス:
自動フェールオーバー:
フェールバックサポート:
障害が発生したインターフェイスが復旧すると、自動的に再びアクティブになるか(そのように設定されている場合)、またはボンディングの設定に応じてスタンバイモードのままになります。スイッチ側の要件なし:
モニタリング:
semimon
(Media Independent Interface Monitor)パラメータを使って、すべてのメンバーのインターフェースの状態を継続的に監視します。アクティブなインターフェイス:
モニタリング:
アクティブインターフェイスのリンク障害:
アクティブなインターフェイス(eth2)に障害が発生した場合(たとえば、ケーブルが抜けた、NICハードウェアに障害が発生した、またはリンクダウンした場合)、bondはmiimonor ARPモニタリングを使用して障害を即座に検出します。自動フェールオーバー:
フェールオーバーの適時性:
フェールオーバープロセスはほぼ瞬時に実行されます(時間間隔によっては、通常は数ミリ秒以内)。障害が発生したインターフェイスの復元:
トラフィック継続性:
フェールバックはシームレスで、継続的なトラフィックフローの中断を回避します。アクティブバックアップモードは、次の理由から、SR-IOVインターフェイスに特に適しています。
例:
CPNR VNFには、次の4つのネットワークが必要です。
ステップバイステップの導入:
オーケストレーションネットワーク:
openstack network create --provider-network-type vxlan orchestration-network
管理ネットワーク:
openstack network create --provider-network-type vxlan management-network
オーケストレーションサブネット:
openstack subnet create --network orchestration-network \
--subnet-range 192.168.100.0/24 orchestration-subnet
管理サブネット:
openstack subnet create --network management-network \
--subnet-range 10.10.10.0/24 management-subnet
SR-IOVネットワーク1:
openstack network create --provider-network-type vlan \
--provider-physical-network sriov0 --provider-segment 101 sriov-network-1
SR-IOVネットワーク2:
openstack network create --provider-network-type vlan \
--provider-physical-network sriov1 --provider-segment 102 sriov-network-2
VNFが両方のNUMAノードからSR-IOV NICにアクセスできるようにするには、クロスNUMAをサポートするフレーバーを作成します。
openstack flavor create --ram 8192 --vcpus 4 --disk 40 cross-numa-flavor
NUMA固有のプロパティを設定する:
openstack flavor set cross-numa-flavor \
--property hw:numa_nodes=2 \
--property hw:cpu_policy=dedicated \
--property hw:mem_page_size=large
VNFを起動した後、VNF上のSR-IOVポート(eth2およびeth3)のbondインターフェイスを設定します。
アクティブバックアップモードでbondインターフェイス(bond0)を作成します。
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
設定を適用するには、ネットワークサービスを再起動します。
systemctl restart network
VNFを導入した後、次の手順を使用してその機能を確認します。
VNFインスタンスがアクティブであることを確認します。
openstack server show cpnr-instance
ステータスがACTIVEであることを確認します。
pingテスト:VNFがすべてのネットワークで通信できることを確認します。
ping
ping
結合インタフェース:
bond0がアクティブであることを確認します。
cat /proc/net/bonding/bond0
チェック ポイント:
VNFが両方のNUMAノードのリソースを使用していることを確認します。
nova show --human | grep numa
モニタリングとトラブルシューティング:SR-IOVインターフェイスを監視するには、ツールliketcpdumpandethtooltoolを使用します。
セキュリティ:物理ネットワークへのアクセスを慎重に管理し、テナント間の厳密な分離を実施します。
スケーリング:使用可能なVFの数はNICハードウェアによって制限されるため、SR-IOV導入をスケーリングする場合は物理NIC容量を計画します。
展開が期待どおりに動作しない場合は、次のトラブルシューティング手順を参照してください。
dmesg | grep -i "SR-IOV"
lspci | grep Ethernet
VNFが両方のNICにアクセスできない場合は、NUMA間モードが有効になっていることを確認します。
openstack flavor show cross-numa-flavor
cat /proc/net/bonding/bond0
systemctl restart network
openstack port list --server cpnr-instance
ip addr show
SR-IOVポートを使用してOpenStackにCPNR VNFを導入する場合、VNFが両方のNUMAノードからNICに接続できるように、NUMAをまたぐモードにする必要があります。OpenStackでは、VNFが起動されるNUMAノード内のリソース(NIC、CPU、メモリ)にのみアクセスするようにシングルNUMAモードでVNFが制限されるため、これが不可欠です。NUMA間モードとアクティブバックアップボンディングを組み合わせることで、高可用性、耐障害性、および効率的なリソース使用率が保証され、この導入の耐障害性とパフォーマンスが向上します。
改定 | 発行日 | コメント |
---|---|---|
1.0 |
10-Jul-2025 |
初版 |