Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure'da Veri Düzlemi Geliştirme Seti (DPDK), yoğun performans gerektiren uygulamalar için daha hızlı bir kullanıcı alanı paket işleme çerçevesi sunar. Bu çerçeve, sanal makinenin çekirdek ağ yığınını atlar.
Çekirdek ağ yığınını kullanan tipik paket işlemlerinde işlem kesmeye dayalıdır. Ağ arabirimi gelen paketleri aldığında, paketin işlenmesi için bir çekirdek kesintisi oluşur ve çekirdek alanından kullanıcı alanına bir bağlam değişikliği gerçekleşir. DPDK, hızlı paket işleme için polling mod sürücülerini kullanan bir kullanıcı alanı uygulamasını tercih ederek bağlam değiştirme ve kesme temelli yöntemi ortadan kaldırır.
DPDK, alt düzey kaynaklara erişim sağlayan kullanıcı alanı kitaplıklarından oluşur. Bu kaynaklar ağ arabirimi kartları için donanım, mantıksal çekirdek, bellek yönetimi ve yoklama modu sürücülerini içerebilir.
DPDK, birden çok işletim sistemi dağıtımlarını destekleyen Azure sanal makinelerinde çalışabilir. DPDK, ağ işlevi sanallaştırma uygulamalarının yönlendirilmesinde önemli performans farklılaştırması sağlar. Bu uygulamalar sanal yönlendiriciler, güvenlik duvarları, VPN'ler, yük dengeleyiciler, gelişmiş paket çekirdekleri ve hizmet reddi (DDoS) uygulamaları gibi ağ sanal gereçleri (NVA) biçimini alabilir.
MANA VM'lerinde DPDK için kurulum yönergelerinin listesini burada bulabilirsiniz: Linux üzerinde Microsoft Azure Ağ Bağdaştırıcısı (MANA) ve DPDK
Avantaj
Saniye başına daha yüksek paketler (PPS): Çekirdeği atlamak ve kullanıcı alanında paketlerin denetimini almak, bağlam anahtarlarını ortadan kaldırarak döngü sayısını azaltır. Ayrıca Azure Linux sanal makinelerinde saniye başına işlenen paketlerin oranını artırır.
Desteklenen işletim sistemleri en düşük sürümleri
Azure Marketplace'tan aşağıdaki dağıtımlar desteklenir:
| Linux İşletim Sistemi | Çekirdek sürümü |
|---|---|
| Ubuntu 18.04 | 4.15.0-1014-azure+ |
| SLES 15 SP1 | 4.12.14-8.19-azure+ |
| RHEL 7.5 | 3.10.0-862.11.6.el7.x86_64+ |
| Debian 10 | 4.19.0-1-cloud+ |
Belirtilen sürümler en düşük gereksinimlerdir. Daha yeni sürümler de desteklenir.
MANA VM'lerinde DPDK gereksinimlerinin listesini burada bulabilirsiniz: Linux üzerinde Microsoft Azure Ağ Bağdaştırıcısı (MANA) ve DPDK
Özel çekirdek desteği
Listelenmeyen tüm Linux çekirdek sürümleri için bkz: Azure'a göre ayarlanmış Linux çekirdeği oluşturma için düzeltme ekleri. Daha fazla bilgi için ile de iletişime geçebilirsiniz aznetdpdk@microsoft.com.
Bölge desteği
Tüm Azure bölgeleri DPDK'i destekler.
Önkoşullar
Linux sanal makinesinde hızlandırılmış ağ etkinleştirilmelidir. Sanal makinede yönetim için bir arabirim içeren en az iki ağ arabirimi olmalıdır. Yönetim arabiriminde Hızlandırılmış ağın etkinleştirilmesi önerilmez. Hızlandırılmış ağ etkinleştirilmiş bir Linux sanal makinesi oluşturmayı öğrenin.
Ayrıca DPDK, Ağ Bağdaştırıcısı'nda veri kuyrukları oluşturmak için RDMA fiillerini kullanır. VM'de doğru RDMA çekirdek sürücülerinin yüklendiğinden emin olun. Vm boyutlarına bağlı olarak mlx4_ib, mlx5_ib veya mana_ib olabilir.
DPDK'yi el ile yükleme (önerilir)
MANA VM'leri için DPDK yükleme yönergelerine buradan ulaşabilirsiniz: Linux üzerinde Microsoft Azure Ağ Bağdaştırıcısı (MANA) ve DPDK
Derleme bağımlılıklarını yükle
RHEL7.5
yum -y groupinstall "Infiniband Support"
sudo dracut --add-drivers "mlx4_en mlx4_ib mlx5_ib" -f
yum install -y gcc kernel-devel-`uname -r` numactl-devel.x86_64 librdmacm-devel libmnl-devel meson
DPDK'yi el ile derleme ve yükleme
En son DPDK'yi indirin. Azure için sürüm 22.11 LTS veya üzeri önerilir.
ile
meson builddirvarsayılan yapılandırmayı oluşturun.Derleyin
ninja -C builddirile.Yükleyin
DESTDIR=<output folder> ninja -C builddir installile.
Çalışma zamanı ortamını yapılandırma
Yeniden başlattıktan sonra aşağıdaki komutları bir kez çalıştırın:
Huge Pages
- Her numa düğümü için bir kez aşağıdaki komutu çalıştırarak hugepage'i yapılandırın:
echo 1024 | sudo tee /sys/devices/system/node/node*/hugepages/hugepages-2048kB/nr_hugepagesmkdir /mnt/hugeile bağlamak için bir dizin oluşturun.mount -t hugetlbfs nodev /mnt/hugeile hugepages'leri bağlayın.Büyük sayfaların
grep Huge /proc/meminfokullanılarak ayrılmış olduğundan emin olun.Yukarıdaki örnek 2M büyük sayfalara yöneliktir. 1 GB büyük sayfalar da kullanılabilir.
Not
Grub dosyasını değiştirmenin bir yolu vardır; DPDK talimatlarını izleyerek, önyükleme sırasında büyük sayfaların ayrılması sağlanabilir. Yönergeler sayfanın en altındadır. Azure Linux sanal makinesi kullanırken, yeniden başlatmalar arasında büyük sayfaları ayırmak için /etc/config/grub.d altındaki dosyaları değiştirin.
MAC ve IP adresleri: Ağ arabirimlerinin MAC ve IP adresini görüntülemek için kullanın
ifconfig –a. VF ağ arabirimi ve NETVSC ağ arabirimi aynı MAC adresine sahiptir, ancak yalnızca NETVSC ağ arabiriminin IP adresi vardır. VF arabirimleri, NETVSC arabirimlerinin alt arabirimleri olarak çalışır.PCI adresleri
ethtool -i <vf interface name>hangi PCI adresinin VF için kullanılacağını öğrenmek için kullanın.eth0 hızlandırılmış ağ etkinleştirilmişse, testpmd'nin yanlışlıkla eth0 için VF pci cihazını devralmadığından emin olun. DPDK uygulaması yanlışlıkla yönetim ağ arabirimini devralıyorsa ve SSH bağlantınızı kaybetmenize neden oluyorsa, DPDK uygulamasını durdurmak için seri konsolunu kullanın. Sanal makineyi durdurmak veya başlatmak için seri konsolunu da kullanabilirsiniz.
Her yeniden başlatmada ibuverbs
modprobe -a ib_uverbs. Yalnızca SLES 15 için, mlx4_ib ile birliktemodprobe -a mlx4_ibde yükleyin.
Usta PMD
DPDK uygulamaları, Azure'da kullanıma sunulan ana PMD üzerinden çalıştırılmalıdır. Uygulama doğrudan VF PMD üzerinden çalışıyorsa, bazı paketler yapay arabirim üzerinde gösterildiğinden VM'ye hedeflenen tüm paketleri almaz. DPDK iki ana PMD türünü destekler: NetVSC PMD ve Failsafe PMD. Ana PMD, uygulamanın hedeflenen tüm paketleri almasını garanti eder. Ayrıca ana bilgisayar hizmetlendirilirken VF iptal edilse bile uygulamanın ana PMD üzerinden DPDK modunda çalışmaya devam ettiğinden emin olur.
NetVSC PMD
NetVSC, Azure'da ana PMD olarak çalıştırılması önerilen PMD'dir. Uygulamanın, hedeflenen tüm paketleri almasını garanti eder. Ayrıca, ana bilgisayara bakım yapılırken VF iptal edilse dahi uygulamanın DPDK modunda çalışmaya devam ettiğinden emin olur. NetVSC PMD'yi kullanma ve yapılandırma hakkında daha fazla bilgi için bkz. (https://doc.dpdk.org/guides/nics/netvsc.html).
Failsafe PMD
Not: Azure'da güvenli PMD ile çalışma önerilmez. DPDK sürümünüz 22.11 LTS veya daha yeniyse NetVSC PMD kullanılması önerilir.
Alternatif olarak, bir DPDK uygulamasını emniyetli PMD üzerinden çalıştırabilirsiniz. Hatasız PMD hakkında daha fazla bilgi için bkz Hatasız yoklama modu sürücü kitaplığı.
Testpmd çalıştırma
testpmd'yi root modunda çalıştırmak için sudo testpmd komutundan önce kullanın.
Temel: Sanity denetimi, emniyetli bağdaştırıcı başlatma
Tek bir bağlantı noktası testpmd uygulamasını başlatmak için aşağıdaki komutları çalıştırın:
testpmd -w <pci address from previous step> \ -- -i \ --port-topology=chainedÇift bağlantı noktası testpmd uygulamasını başlatmak için aşağıdaki komutları çalıştırın:
testpmd -w <pci address nic1> \ -w <pci address nic2> \ -- -i
Başlatıldıktan sonra bağlantı noktası bilgilerini denetlemek için komutunu çalıştırın show port info all . net_netvsc bir veya iki DPDK bağlantı noktası görmeniz gerekir.
- Trafiği başlatmak için kullanın
start <port> /stop <port>.
Önceki komutlar testpmd'yi etkileşimli modda başlatır ve testpmd komutlarını denemek için önerilir.
Temel: Tek gönderen/tek alıcı
Aşağıdaki komutlar, saniye başına paket istatistiklerini düzenli aralıklarla yazdırır:
TX tarafında aşağıdaki komutu çalıştırın:
testpmd \ -l <core-list> \ -n <num of mem channels> \ -w <pci address of the device you plan to use> \ -- --port-topology=chained \ --nb-cores <number of cores to use for test pmd> \ --forward-mode=txonly \ --eth-peer=<port id>,<receiver peer MAC address> \ --stats-period <display interval in seconds>RX tarafında aşağıdaki komutu çalıştırın:
testpmd \ -l <core-list> \ -n <num of mem channels> \ -w <pci address of the device you plan to use> \ -- --port-topology=chained \ --nb-cores <number of cores to use for test pmd> \ --forward-mode=rxonly \ --eth-peer=<port id>,<sender peer MAC address> \ --stats-period <display interval in seconds>
Bir sanal makinede önceki komutları çalıştırırken, derlemeden önce sanal makinelerin gerçek IP adresiyle eşleşecek şekilde IP_SRC_ADDRapp/test-pmd/txonly.c. Aksi takdirde paketler alıcıya ulaşmadan önce bırakılır.
Gelişmiş: Tek gönderen/tek iletici
Aşağıdaki komutlar, saniye başına paket istatistiklerini düzenli aralıklarla yazdırır:
TX tarafında aşağıdaki komutu çalıştırın:
testpmd \ -l <core-list> \ -n <num of mem channels> \ -w <pci address of the device you plan to use> \ -- --port-topology=chained \ --nb-cores <number of cores to use for test pmd> \ --forward-mode=txonly \ --eth-peer=<port id>,<receiver peer MAC address> \ --stats-period <display interval in seconds>FWD tarafında aşağıdaki komutu çalıştırın:
testpmd \ -l <core-list> \ -n <num of mem channels> \ -w <pci address NIC1> \ -w <pci address NIC2> \ -- --nb-cores <number of cores to use for test pmd> \ --forward-mode=io \ --eth-peer=<recv port id>,<sender peer MAC address> \ --stats-period <display interval in seconds>
Bir sanal makinede önceki komutları çalıştırırken, derlemeden önce sanal makinelerin gerçek IP adresiyle eşleşecek şekilde IP_SRC_ADDRapp/test-pmd/txonly.c. Aksi takdirde, paketler ileticiye ulaşmadan önce bırakılır. Bazı kod değişiklikleri yapmadığınız sürece, testpmd ileticisi katman 3 adreslerini değiştirmediğinden, üçüncü bir makineye iletilen trafiği alamazsınız.
DPDK'yi sistem paketi aracılığıyla yükleme (önerilmez)
sudo yum install -y dpdk