dpdk nedir / DPDK (Data Plane Development Kit) Nedir? - Hasan Eren Keskin

Dpdk Nedir

dpdk nedir

Linux sanal makinesinde DPDK'yı ayarlama

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şlemede işlem kesme temellidir. Ağ arabirimi gelen paketleri aldığında, paketi işlemek için bir çekirdek kesintisi ve çekirdek alanından kullanıcı alanına bir bağlam anahtarı vardır. DPDK, hızlı paket işleme için yoklama modu sürücülerini kullanan bir kullanıcı alanı uygulamasına yönelik 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ğ arabirim 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.

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ı da artırır.

Desteklenen işletim sistemleri en düşük sürümleri

Azure Market aşağıdaki dağıtımlar desteklenir:

LinuxÇekirdek sürümü
Ubuntu azure+
SLES 15 SP1azure+
RHEL el7.x86_64+
CentOS el7.x86_64+
Debian 10cloud+

Belirtilen sürümler en düşük gereksinimlerdir. Daha yeni sürümler de desteklenir.

Özel çekirdek desteği

Listelenmeyen herhangi bir Linux çekirdek sürümü için bkz. Azure tarafından ayarlanmış Linux çekirdeği oluşturmaya yönelik düzeltme ekleri. Daha fazla bilgi için ile de iletişime geçebilirsiniz [email protected]

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 makinenin yönetim için bir arabirimi olan 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)

Derleme bağımlılıklarını yükleme

RHEL/CentOS

SLES 15 SP1

Azure çekirdeği

Varsayılan çekirdek

Ubuntu

Ubuntu /Debian 10 ve daha yenisi

DPDK'yi el ile derleme ve yükleme

  1. En son DPDK'yi indirin. Azure için sürüm LTS veya üzeri önerilir.

  2. ile varsayılan yapılandırmayı oluşturun.

  3. ile derleyin.

  4. ile yükleyin.

Çalışma zamanı ortamını yapılandırma

Yeniden başlattıktan sonra aşağıdaki komutları bir kez çalıştırın:

  1. Büyük Sayfalar

    • Her numa düğümü için bir kez aşağıdaki komutu çalıştırarak büyük sayfayı yapılandırın:
    • ile bağlamak için bir dizin oluşturun.

    • ile büyük sayfaları bağlayın.

    • Büyük sayfaların ile ayrılmış olup olmadığını denetleyin.

    • Yukarıdaki örnek 2M büyük sayfalara yöneliktir. 1G büyük sayfalar da kullanılabilir.

    Not

    Grub dosyasını değiştirmenin bir yolu vardır, böylece DPDK yönergelerini izleyerek önyüklemede büyük sayfalar ayrılır. 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.

  2. MAC & IP adresleri: Ağ arabirimlerinin MAC ve IP adresini görüntülemek için kullanın . 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.

  3. PCI adresleri

    • VF için hangi PCI adresinin 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.

  4. ile her yeniden başlatmada ibuverbs yükleyin. Yalnızca SLES 15 için ile mlx4_ib de yükleyin.

Ana PMD

DPDK uygulamaları, Azure'da kullanıma sunulan ana PMD üzerinde ç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, konak hizmetlendirilirken VF iptal edilse bile 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. (monash.pw).

Failsafe PMD

Not: Azure'da güvenli pmd ile çalıştırma önerilmez. DPDK sürümünüz LTS veya daha yeniyse NetVSC PMD kullanmanız önerilir.

Alternatif olarak, güvenli PMD üzerinden bir DPDK uygulaması çalıştırabilirsiniz. Yük devretmeye karşı güvenli PMD hakkında daha fazla bilgi için bkz . Güvenli yoklama modu sürücü kitaplığı.

testpmd çalıştırma

Testpmd'yi kök modda çalıştırmak için testpmd komutundan önce kullanın.

Temel: Sanity denetimi, hataya karşı güvenli bağdaştırıcı başlatma

  1. Tek bir bağlantı noktası testpmd uygulamasını başlatmak için aşağıdaki komutları çalıştırın:

  2. Çift bağlantı noktası testpmd uygulamasını başlatmak için aşağıdaki komutları çalıştırın:

Başlatıldıktan sonra bağlantı noktası bilgilerini denetlemek için komutunu çalıştırın . net_netvsc bir veya iki DPDK bağlantı noktası görmeniz gerekir.

  1. Trafiği başlatmak için kullanın .

Ö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:

  1. TX tarafında aşağıdaki komutu çalıştırın:

  2. RX tarafında aşağıdaki komutu çalıştırın:

Bir sanal makinede önceki komutları çalıştırırken, derlemeden önce sanal makinelerin gerçek IP adresiyle eşleşecek şekilde IP_SRC_ADDR ve IP_DST_ADDR değiştirin. 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:

  1. TX tarafında aşağıdaki komutu çalıştırın:

  2. FWD tarafında aşağıdaki komutu çalıştırın:

Bir sanal makinede önceki komutları çalıştırırken, derlemeden önce sanal makinelerin gerçek IP adresiyle eşleşecek şekilde IP_SRC_ADDR ve IP_DST_ADDR değiştirin. Aksi takdirde, paketler ileticiye ulaşmadan önce bırakılır. Bazı kod değişiklikleri yapmazsanız testpmd ileticisi katman 3 adreslerini değiştirmediğinden üçüncü bir makinenin iletilen trafiği almasını sağlayamazsınız.

DpDK'yi sistem paketi aracılığıyla yükleme (önerilmez)

Ubuntu

Ubuntu /Debian 10 ve daha yenisi

Başvurular

Microsoft Docs

Veri düzlemi geliştirme seti 'nin (DPDK) avantajlarını ve bir Linux sanal makinesinde DPDK 'yi ayarlamayı öğrenin.

virtual-network

na

laxmanrb

gedegrac

virtual-network

NA

how-to

na

infrastructure-services

05/12/

labattul

3b4dec52efdfbe97bce35b31fb

cb1b7a1f3a1f0bcdd0ca4f81f

MT

tr-TR

03/20/

Azure 'da veri düzlemi geliştirme seti (DPDK), performansı yoğun uygulamalar için daha hızlı bir kullanıcı alanı paket işleme çerçevesi sunmaktadır. Bu çerçeve, sanal makinenin çekirdek ağ yığınını atlar.

Çekirdek ağ yığınını kullanan tipik paket işlemede, işlem kesme temelli olur. Ağ arabirimi gelen paketleri aldığında, paketi işlemek için bir çekirdek kesmesi ve çekirdek alanından Kullanıcı alanına bir bağlam anahtarı vardır. DPDK, hızlı paket işleme için yoklama modu sürücüleri kullanan bir kullanıcı alanı uygulamasının tercih edilen bağlam geçişini ve kesme temelli yöntemi ortadan kaldırır.

DPDK, alt düzey kaynaklara erişim sağlayan Kullanıcı-alan kitaplıklarının kümelerinden oluşur. Bu kaynaklar, ağ arabirimi kartları için donanım, mantıksal çekirdek, bellek yönetimi ve yoklama modu sürücüleri içerebilir.

DPDK, birden çok işletim sistemi dağıtımlarını destekleyen Azure sanal makinelerinde çalıştırılabilir. DPDK, ağ işlevi sanallaştırma uygulamalarını yönlendiren önemli performans farklılaşmasını sağlar. Bu uygulamalar, sanal yönlendiriciler, güvenlik duvarları, VPN 'Ler, yük dengeleyiciler, paket çekirdekleri ve hizmet reddi (DDoS) uygulamaları gibi ağ sanal gereçlerinin (NVA 'lar) biçimini alabilir.

Avantaj

Saniye başına daha yüksek paket (PPS): çekirdek atlama ve Kullanıcı alanındaki paketlerin denetimini ele alma, bağlam anahtarlarını ortadan kaldırarak geçiş sayısını azaltır. Ayrıca, Azure Linux sanal makinelerinde saniye başına işlenen paketlerin hızını artırır.

Desteklenen işletim sistemleri

Azure Marketi 'nden aşağıdaki dağıtımlar desteklenir:

Linux işletim sistemiÇekirdek sürümü
Ubuntu Azure +
Ubuntu Azure +
SLES 15 SP1Azure +
RHEL el7.x86_64 +
CentOS el7.x86_64 +

Özel çekirdek desteği

Listelenmeyen tüm Linux çekirdek sürümleri için bkz. Azure 'da ayarlanmış bir Linux çekirdeği oluşturmaya yönelik düzeltme ekleri. Daha fazla bilgi için, ile de iletişim sağlayabilirsiniz [email protected] .

Bölge desteği

Tüm Azure bölgeleri DPDK 'yi destekler.

Önkoşullar

Bir Linux sanal makinesinde hızlandırılmış ağ etkin olmalıdır. Sanal makine, yönetim için bir arabirim ile en az iki ağ arabirimine sahip olmalıdır. Yönetim arabiriminde hızlandırılmış ağ özelliğinin etkinleştirilmesi önerilmez. Hızlandırılmış ağ etkin bir Linux sanal makinesi oluşturmayıöğrenin.

DPDK bağımlılıklarını yükler

Ubuntu

sudo add-apt-repository ppa:canonical-server/dpdk-azure -y sudo apt-get update sudo apt-get install -y librdmacm-dev librdmacm1 build-essential libnuma-dev libmnl-dev

Ubuntu

sudo add-apt-repository ppa:canonical-server/dpdk-azure -y sudo apt-get update sudo apt-get install -y librdmacm-dev librdmacm1 build-essential libnuma-dev libmnl-dev

RHEL /CentOS 7,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

SLES 15 SP1

Azure çekirdeği

zypper \ --no-gpg-checks \ --non-interactive \ --gpg-auto-import-keys install kernel-azure kernel-devel-azure gcc make libnuma-devel numactl librdmacm1 rdma-core-devel

Varsayılan Çekirdek

zypper \ --no-gpg-checks \ --non-interactive \ --gpg-auto-import-keys install kernel-default-devel gcc make libnuma-devel numactl librdmacm1 rdma-core-devel

Sanal makine ortamını ayarlama (bir kez)

  1. En son DPDK 'Yi indirin. Azure için sürüm 18,11 LTS veya 19,11 LTS gerekir.
  2. İle varsayılan yapılandırmayı oluşturun .
  3. İle oluşturulan yapılandırmada Mellanox PMDs 'yi etkinleştirin .
  4. İle derleyin .
  5. İle uygulamasını .

Çalışma zamanı ortamını yapılandırma

Yeniden başlattıktan sonra, aşağıdaki komutları bir kez çalıştırın:

  1. Kugepages

    • Her NUMA düğümü için bir kez aşağıdaki komutu çalıştırarak kugepage 'i yapılandırın:

      echo

      DPDK ile ilgili hazırlamış olduğum bir sunum sırasında Türkçe içerik eksikliğini görerek, aldığım notları derlediğim bir içerik oluşturmak istedim. Benim de içerisine yeni dahil olduğum bir yapı olduğu için vereceğim bilgiler tecrübelerden daha çok araştırdığım yabancı kaynakların derlenmesi sonucu ortaya çıkmış oldu. Bazı terimlerin Türkçe karşılığı anlamsız kaldığı için ve bu alanla ilgilenen insanların halihazırda bu terimleri bildiğini varsaydığım için İngilizce olarak kullandım. Kısaca DPDK&#;nın tarihinden bahsederek başlamak istiyorum.

      Data Plane Development Kit yani DPDK, 17 Eylül &#;da BSD (Berkeley Software Distribution) lisansı ile yayınlandı. Nisan&#;dan itibaren monash.pw üzerinde tamamen bağımsız ve kendi topluluğu olan bir hal aldı. Mikroişlemci üreticileri ve mimari geliştiriciler tarafından da desteklenerek projenin büyümesi hızlandırıldı. Günümüzde ise Linux Foundation tarafından destekleniyor.

      DPDK&#;nın amaçladığı ana iş data plane uygulamalarında daha hızlı paket işleme için bir framework (altyapı, sistem) sağlamaktır. Geliştiriciler bu framework&#;ü protokol stacklerini oluşturmak için veya prototip ortaya çıkartmak için kullanabiliyorlar. Bunu yaparken de bize donanımdan bağımsız bir geliştirme ortamı sunduğu için donanıma dokunmamız gereken yerlerden çok uzakta işlem yapabiliyoruz. En basit örnekle bir timer ayarı yaparken donanımdaki register&#;lardan bağımsız olarak yazdığımız tek bir kod çerçevesinde derlediğimiz ortamın getirdiği parametrelere bağlı olarak timer ayarlamamızı yapmış oluyoruz. Burada kullandığımız işlemci mimarisinin bizim için bir önemi kalmamış oluyor. Aynı zamanda kullanılan hugepage yapısı sayesinde performans yönünde çok büyük avantaj sağlıyor.

      Tercih edilme sebeplerine bakacak olursak:

      • Çoklu CPU mimarileri tarafından desteklenir
      • Linux üzerinden 25 kat daha fazla performans artışı sağlar
      • Ücretsizdir
      • Açık kaynak kodludur
      • BSD lisansına sahiptir

      Kurulum

      DPDK&#;yı kendi ortamınıza dahil etmek için monash.pw adresine giderek kullanmak istediğiniz versiyonu indirebilirsiniz. Ardından dosyayı bir dizine çıkarttıktan sonra usertools/monash.pw dosyasını çalıştırarak uygun mimari ve derleyici seçeneği ile DPDK&#;nın derlemesini tamamlayabilirsiniz. Bu işlemi otomatik olarak yapmak istiyorsanız aşağıdaki scripti kullanabilirsiniz.

      wget monash.pw tar xf monash.pw cd dpdk-stable make config T=x86_native-linuxapp-gcc make

      Yukarıda script sayesinde DPDK versiyonunu indirdikten sonra GCC derleyicisi ile 64 bit destekleyen Linux uygulaması olacak şekilde derlemiş olduk. Eğer siz farklı bir mimari ile veya derleyici ile derlemek istiyorsanız tüm listeye usertools/monash.pw içerisinden ulaşabilirsiniz. (Aynı şekilde derlemek için o dosya içerisinde 38 komutunu kullanmanız yeterli olacaktır.)

      Geliştirme Ortamı

      DPDK, bize sunduğu geliştirici araçları ve komponentler sayesinde soyutlama ve optimizasyon yapmamızı sağlamayı hedefliyor. İlk olarak soyutlama işlemi için Environment Abstract Layer (EAL) ile başlayacağım.

      EAL &#; Environment Abstract Layer

      İsminden de anlaşılacağı üzere, EAL bizi mimariden soyutlayarak üst katman &#; alt katman arası bir bağlantı oluşmasını sağlar. Bu katman sayesinde kurulum esnasında derlediğimiz ortam koşullarına bağlı olarak donanımla aramızda fiziksel bir bağ kalmamış olur. Zaten kodun çalışması için ilk olarak rte_eal_init() fonksiyonu ile bu katmanı ayağa kaldırmamız gerekmektedir. İçerisinde aşağıda bahsedilen komponentlerin ve daha birçoğunun kullanılması için gerekli olan altyapının oluşturulmasını sağlıyor.

      • Multi-process ve Multi-thread yapıları oluşturuyor
      • Hafızadan ayrılacak ve geri bırakılacak alanları ayarlarıyor (Hugepage ile)
      • Atomic/lock işlemlerini ayarlıyor.
      • Timer işlemlerini ayarlıyor.
      • Gerekli bağlantı ayarlarını yapıyor.
      • Kesme (interrupt) kontrollerini sağlıyor.

      Mempool

      Mempool ile hafızada yapılacak işlemler için yer ayırma ve geri bırakma (allocate/deallocate) işlemleri gerçekleştiriliyor. Hafıza havuzumuzdan sabit boyutlarda yer ayırıp o yerlerle etkileşime girmemize izin veriyor. Bize ayırdığı hafıza ring buffer konseptine sahip olarak çalışıyor ve cache işlemine imkan veriyor.

      Mbuf

      Mbuf yani Message Buffers adından da anlaşıldığı üzere, alıp verdiğimiz mesajları tuttuğumuz ve onlar üzerinde işlemler yaptığımız buffer&#;lar oluşturmamıza yarıyor. Bunu yaparken de mempool ile hafızadan yer ayırma işleminden faydalanıyor.

      Ring

      Ring, circular buffer olarak da bilinen bir döngüsel buffer konseptidir aslında. Sabit boyutlu bir alan içerisine girip çıkan veriler üzerinde gösterilen noktalar üzerinde gezerek bir çok mesaj işlemini gerçekleştirmeye yarıyor. Bu sayede normalde byte&#;lık bir dizi oluşturmak yerine byte&#;lık bir dizi oluşturarak içerisini 4 kez doldurup boşaltarak daha küçük boyutlu bir dizi ile kayıpsız bir işlem sağlayabiliriz.

      Timer

      Timer, zamana bağlı olarak işlemler gerçekleştirilmesi için kullanılan bir komponenttir. Gerekli ayarları yapıldıktan sonra bizim belirlemiş olduğumuz süreler içerisinde periyodik olarak veya dışarıdan tetiklenebilir olarak çalışacak şekilde kullanılabilir. Normalde donanım seviyesinde çok ince hesaplar yapılması ile gerçekleştirilebilecek işlemler DPDK sayesinde kolayca gerçekleştirilebiliyor.

      Hugepage

      Yukarılarda hugepage&#;den bahsetmiştik, hugepage Linux üzerinde sanal hafıza yönetimi için kullanılıyor. Normalde sistemin 2kb/4kb olan pagesize&#;ını artırarak işlem yapabiliyoruz.

      Peki neden hugepage&#;e ihtiyaç duyuyoruz? Çünkü sayfalar büyük olduğunda sayfa tabloları da büyük oluyor ve bir süreç için verileri bellekten çıkarma/getirme miktarı azalıyor. Aynı zamanda kernel ile yapılan swap işlemlerinde her bir page için gerçekleşecek olan transaction sayısı azaldığı için hız olarak da daha hızlı oluyor. Yani ana amaçlarından bir tanesinin performansı artışı olduğunu söyleyebiliriz.

      Hugepage ayarlamasını kurulum sonrasında (yani usertools/monash.pw içerisinde) yapabilirsiniz. Bu ayarı yaparken karşınıza iki kavram çıkacak; UMA ve NUMA. Bunların arasındaki fark UMA(Uniform Memory Access) tek hafıza bloğuna sahip kontrolörlerle birlikte genel amaçlı uygulamalar için kullanılır. NUMA (Non-Uniform Memory Access) ise çoklu hafıza bloklarına sahip kontrolörlerle birlikte zamanın kritik olduğu işler için -genelde- real-time uygulamalarda tercih edilir.

      DPDK, genel hatları ile bu kavramları içeriyor ancak bunun yanında daha birçok komponenti de (Crypto, Hash vb.) içerisinde barındırıyor. Daha detaylı kullanımları için kaynaklarda yer alan dokümanlarını inceleyebilirsiniz. İçerisinde yer alan örnek uygulamalarla da kullanımına dair fikir edinebilirsiniz.

      Kaynaklar

      monash.pw

      monash.pw?v=ewsrzoKwwz0&ab_channel=monash.pw

      monash.pw

      monash.pw

      monash.pw

      Bunu beğen:

      BeğenYükleniyor

      sudo tee /sys/devices/system/node/node*/hugepages/hugepageskB/nr_hugepages
    • İle bağlama için bir dizin oluşturun .

    • İle kugesayfalarý bağlayın .

    • Kugepages 'in ile ayrılmadığından emin olun .

      NOTUN Grub dosyasını değiştirmek için bir yol vardır. bu sayede, DPDK yönergelerini izleyerek kugepages 'in önyükleme üzerinde ayrılması sağlanır. Yönergeler sayfanın en altında bulunur. Bir Azure Linux sanal makinesi kullanırken, yeniden başlatmalar genelinde kugepages ayırmak için bunun yerine /etc/config/grub.d altındaki dosyaları değiştirin.

  2. MAC & IP adresleri: ağ ARABIRIMLERININ Mac ve IP adresini görüntülemek Için kullanın. VF ağ arabirimi ve netvsc ağ arabirimi aynı MAC adresine sahip, ancak yalnızca netvsc ağ arabiriminin bir IP adresi vardır. VF arabirimleri, netvsc arabirimlerinin alt arabirimleri olarak çalışır.

  3. PCI adresleri

    • VF için hangi PCI adresinin kullanılacağını bulmak için kullanın.
    • Eth0 hızlandırılmış ağ etkinse, testpmd 'nin eth0 için VF PCI cihazını yanlışlıkla devralmadığınızdan emin olun. DPDK uygulaması yanlışlıkla yönetim ağ arabirimini ele alırsa ve SSH bağlantınızı kaybetmenize neden oluyorsa, DPDK uygulamasını durdurmak için seri konsolu 'nu kullanın. Ayrıca, sanal makineyi durdurmak veya başlatmak için seri konsolunu da kullanabilirsiniz.
  4. Her yeniden başlatmada ıbuverbs 'ı yükleyin . Yalnızca SLES 15 için ile mlx4_ib de yükleyin .

Failsafe PMD

DPDK uygulamalarının Azure 'da kullanıma sunulan Failsafe PMD üzerinde çalışması gerekir. Uygulama doğrudan VF PMD üzerinde çalışıyorsa, bazı paketler yapay arabirim üzerinde GÖSTERILDIĞINDEN VM 'ye giden Tüm paketleri almaz.

Failsafe PMD üzerinde bir DPDK uygulaması çalıştırırsanız, uygulamanın kendisine gidecek tüm paketleri almasını güvence altına alır. Ayrıca, ana bilgisayara bakım yapıldığında VF iptal edilse bile uygulamanın DPDK modunda çalışmaya devam ettiği de emin olur. Failsafe PMD hakkında daha fazla bilgi için bkz. başarısız-güvenli yoklama modu sürücü kitaplığı.

Testpmd çalıştırma

Testpmd 'yi kök modda çalıştırmak için testpmd komutundan önce kullanın.

Temel: Sanity denetimi, Failsafe bağdaştırıcısı başlatma

  1. 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> \ --vdev="net_vdev_netvsc0,iface=eth1" \ -- -i \ --port-topology=chained
  2. Bir ç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> \ --vdev="net_vdev_netvsc0,iface=eth1" \ --vdev="net_vdev_netvsc1,iface=eth2" \ -- -i

    Testpmd 'yi ikiden fazla NIC ile çalıştırıyorsanız, bağımsız değişken şu düzene uyar: .

  3. Başlatıldıktan sonra bağlantı noktası bilgilerini denetlemek için öğesini çalıştırın. Net_failsafe ( net_mlx4 değil) bir veya iki DPDK bağlantı noktası görmeniz gerekir.

  4. Trafiği başlatmak için kullanın.

Önceki komutlar testpmd ' yi etkileşimli modda başlatır, bu da testpmd komutlarının denemesi için önerilir.

Temel: tek gönderici/tek alıcı

Aşağıdaki komutlar paketleri saniyede düzenli olarak yazdırır:

  1. 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> \ --vdev="net_vdev_netvsc<id>,iface=<the iface to attach to>" \ -- --port-topology=chained \ --nb-cores <number of cores to use fortest pmd> \ --forward-mode=txonly \ --eth-peer=<port id>,<receiver peer MAC address> \ --stats-period <display interval in seconds>
  2. 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> \ --vdev="net_vdev_netvsc<id>,iface=<the iface to attach to>" \ -- --port-topology=chained \ --nb-cores <number of cores to use fortest 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 IP_SRC_ADDR değiştirin ve ' de IP_DST_ADDR , DERLEMEDEN önce sanal makinelerin gerçek IP adresiyle eşleşecek şekilde değiştirin. Aksi takdirde, paketler alıcıya ulaşmadan önce bırakılır.

Gelişmiş: tekli gönderici/tek iletici

Aşağıdaki komutlar paketleri saniyede düzenli olarak yazdırır:

  1. 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> \ --vdev="net_vdev_netvsc<id>,iface=<the iface to attach to>" \ -- --port-topology=chained \ --nb-cores <number of cores to use fortest pmd> \ --forward-mode=txonly \ --eth-peer=<port id>,<receiver peer MAC address> \ --stats-period <display interval in seconds>
  2. 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> \ --vdev="net_vdev_netvsc<id>,iface=<the iface to attach to>" \ --vdev="net_vdev_netvsc<2nd id>,iface=<2nd iface to attach to>" (you need as many --vdev arguments as the number of devices used by testpmd, in this case) \ -- --nb-cores <number of cores to use fortest 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 IP_SRC_ADDR değiştirin ve ' de IP_DST_ADDR , DERLEMEDEN önce sanal makinelerin gerçek IP adresiyle eşleşecek şekilde değiştirin. Aksi takdirde, paketler ileticiye ulaşmadan önce bırakılır. Test PMD ileticisi, bazı kod değişiklikleri yapmadığınız takdirde katman 3 adreslerini değiştirmediğinden, üçüncü bir makineye iletilen trafik alamazsınız.

Başvurular

nest...

oksabron ne için kullanılır patates yardımı başvurusu adana yüzme ihtisas spor kulübü izmit doğantepe satılık arsa bir örümceğin kaç bacağı vardır