सारांश
मैंने कुछ छोटे पैकेटों के लोड परीक्षण करने के लिए Pktgen-DPDK का उपयोग करने का निर्णय लिया।
इसके लिए आपको पहले IOMMU को सक्षम करना आवश्यक है। IOMMU को सक्षम करने के मेमो
वातावरण
लक्षित वातावरण | संस्करण |
---|---|
उबंटू | 22.04 |
DPDK | 23.11.1 |
Pktgen-DPDK | मुख्य शाखा |
NIC | इंटेल X520 DA2 |
आवश्यक पैकेजों का इंस्टॉलेशन
निर्भरताओं का इंस्टॉलेशन
sudo apt-get update sudo apt-get install -y git build-essential libnuma-dev python3-pyelftools linux-headers-$(uname -r) meson ninja-build
DPDK का निर्माण और इंस्टॉलेशन
DPDK पुस्तकालय का डाउनलोड
- DPDK डाउनलोड वर्तमान में नवीनतम LTS, 23.11.1 का उपयोग करने का निर्णय लिया है।
wget https://fast.dpdk.org/rel/dpdk-23.11.1.tar.xz tar xf dpdk-23.11.1.tar.xz cd dpdk-stable-23.11.1
DPDK का निर्माण
meson setup build ninja -C build
इंस्टॉलेशन
ninja -C build install ldconfig
Hugepages की सेटिंग
Hugepages की सेटिंग DPDK उच्च प्रदर्शन सुनिश्चित करने के लिए बड़े मेमोरी पृष्ठों (Hugepages) का उपयोग करता है।
echo "vm.nr_hugepages=1024" > /etc/sysctl.d/90-hugapage.conf sysctl --system
Pktgen-DPDK का निर्माण और इंस्टॉलेशन
git clone https://github.com/pktgen/Pktgen-DPDK.git cd Pktgen-DPDK
निर्माण
meson setup build ninja -C build
इंस्टॉलेशन
ninja -C build install
नेटवर्क इंटरफेस को बाइंड करना
नेटवर्क इंटरफेस की जांच
dpdk-devbind.py --status Network devices using kernel driver =================================== 0000:07:00.0 'RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller 8168' if=enp7s0 drv=r8169 unused= 0000:09:00.0 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' if=enp9s0f0 drv=ixgbe unused= 0000:09:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' if=enp9s0f1 drv=ixgbe unused=
vfio-pci को बाइंड करना
dpdk-devbind.py --bind=vfio-pci 0000:09:00.1
यदि
Error: Driver 'vfio-pci' is not loaded.
है vfio-pci ड्राइवर को लोड करेंmodprobe vfio-pci
बाइंडिंग की स्थिति की पुष्टि करें
dpdk-devbind.py --status Network devices using DPDK-compatible driver ============================================ 0000:09:00.1 '82599ES 10-Gigabit SFI/SFP+ Network Connection 10fb' drv=vfio-pci unused=ixgbe
drv=vfio-pci होना चाहिए, इसलिए सब ठीक है।
Pktgen-DPDK का उपयोग करना
Pktgen-DPDK को चालू करना
pktgen -l 0-1 -n 2 --proc-type auto --socket-mem 512 -- -P -m "[1-2].0"
DPDK के विकल्प
- -l 0-1
- लॉजिकल कोर 0-1 का DPDK द्वारा उपयोग करना
- -n 2
- 2 मेमोरी चैनलों का उपयोग करना
- –proc-type auto
- प्रोसेस प्रकार को स्वचालित रूप से निर्धारित करना
- –socket-mem 512
- सॉकेट 0 के लिए 512MB आवंटित करना
- -l 0-1
pktgen के विकल्प
- -P
- प्रोमिस्कस मोड सक्रिय करें
- -m “[1-2].0”
- प्रत्येक पोर्ट के कोर आवंटन को निर्दिष्ट करें। इस मामले में, पोर्ट 1 और 2 को कोर 0 में आवंटित करें।
- -P
वास्तविकता में डेटा पैकेट भेजना
reset 0
set 0 dst mac XX:XX:XX:XX:XX:XX // लक्ष्य MAC पता
set 0 dst ip 192.168.3.2 // लक्ष्य IP पता
set 0 src ip 192.168.3.1/24 // स्रोत IP पता
set 0 size 64 // पेलोड आकार
start 0
अंत में
इससे, NIC से लगभग 10Mpps के शॉर्ट पैकेट निकलने चाहिए।
इससे DDoS जैसे हालात का पुन निर्माण किया जा सकता है! इसलिए, मैंने Pktgen-DPDK का उपयोग किया।