--- tags: NFVI, Intel, Forwarding Platform --- # NFVI Fowarding Platform ###### tags: NFVI ## HW equipment Model: SCB-1932 OS: Red Hat Enterprise Linux 8.4 (Ootpa) Kernel: Linux 4.18.0-305.el8.x86_64 CPU: Intel(R) Xeon(R) Gold 5318S CPU @ 2.10GHz * 2 RAM: 32G (DDR4) * 16 = 512G SSD: Intel SSD 480 * 2 BIOS: C1932A001T07 ## 1. Hardware Requirements: ![](https://i.imgur.com/74b5i6K.png) ## 2. Software Requirements: ![](https://i.imgur.com/cbW716e.png) ![](https://i.imgur.com/OMFZj7A.png) ## 3. Platform BIOS Settings: ![](https://i.imgur.com/Zy2eVIG.png) ![](https://i.imgur.com/JutaXo7.png) ![](https://i.imgur.com/U7WL6xe.png) ## 4. Intel Select Solution Platform Technology Requirements: ![](https://i.imgur.com/FZGSCe1.png) ![](https://i.imgur.com/Hk64xA2.png) ## 5: Redhat installtion: ## 6: Subscribe the system with user name and password to use redhat. ```javascript= # subscription-manager register --username <username> --password <password> --auto-attach ``` ## 7: Linux Kernel verification ```javascript= # uname -r 4.18.0-193.28.1.el8_2.x86_64 ``` ## 7: Test Menu ![](https://i.imgur.com/21It79X.png) ## Commands: ```javascript= # sudo yum groupinstall "Development Tools" ``` ## Install Python3.7 https://tecadmin.net/install-python-3-7-on-centos/ ## Install the latest version of make (4.3) https://blog.csdn.net/qq_41054313/article/details/119455667?spm=1001.2014.3001.5502 ## Install the glibc we use to install 2.34 version https://stackoverflow.com/questions/32316707/rhel-6-how-to-install-glibc-2-14-or-glibc-2-15 # Test list ## 1: vBNG Test ### Install vBNG Dependencies Package Downloading: https://www.intel.com/content/www/us/en/download/19306/intel-ethernet-controller-x710-xxv710-xl710-adapters-dynamic-device-personalization-pppoe-package.html packages Installtion ```javascript= # subscription-manager release --set=8.2 # subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms --enable=rhel-8-for-x86_64-baseos-rpms # yum groupinstall “Development Tools” # yum install -y kernel-tools numactl numactl-devel libvirt-devel socat python38 kernel-devel-$(uname -r) # pip3 install fabric -U --force-reinstall # pip3 install paramiko -U --force-reinstall # pip3 install cryptography -U --force-reinstall # yum install elfutils-libelf-devel ``` ### Download the ICE driver from intel website and Install ```javascript= # tar -xvf ice-1.3.2.tar.gz # cd ice-1.3.2/src/ # make # make install # modprobe -r ice; modprobe ice ``` ### Download the Comms DDP package that enables the NIC to parse extra header fields such as PPPoE and GTPu. ```javascript= # unzip 634414-ice_comms-1.3.24.0.zip -d ice-ddp-comms # cd ice-ddp-comms/ # cp ice_comms-1.3.24.0.pkg /lib/firmware/updates/intel/ice/ddp/ # cp ice.pkg /lib/firmware/updates/intel/ice/ddp/ # modprobe -r ice # modprobe ice ``` To confirm that the DDP package is successfully loaded: ```javascript= # dmesg | grep -ir ddp ``` Configure the Linux Kernel settings. The following should be configured in Linux Kernel Grub settings: a. Set huge-page memory size and number of pages for DPDK app,Enable SR-IOV, Disable hardware control of P-states, Isolate vBNG dataplane cores from the Linux kernel task scheduler: ```javascript= (default_hugepagesz=2M hugepagesz=2M hugepages=30024) b. Enable SR-IOV (intel_iommu=on iommu=pt). c. Disable hardware control of P-states (intel_pstate=disable) d. Isolate vBNG dataplane cores from the Linux kernel task scheduler (for example: isolcpus=1-19,21-39,41-59,61-79). ``` ### kernel Configuration (Grub Settings) ```javascript= # sudo nano /etc/default/grub ``` update this line with: ```javascript= "GRUB_CMDLINE_LINUX="nofb splash=quiet console=tty0 ... default_hugepagesz=2M hugepagesz=2M hugepages=30024 intel_pstate=disable intel_iommu=on iommu=pt isolcpus=1 -19,21-39,41-59,61-79" ``` update grub ```javascript= grub2-mkconfig -o /boot/grub2/grub.cfg ``` ![](https://i.imgur.com/nJOQ52v.png) ### vBNG Dataplane Application Environment Set-up ```javascript= Waiting from Intel ``` ## 2. HWSW Test ![](https://i.imgur.com/LBkNIXy.png) ## 3. “Spectre” or “Meltdown” Test to check system vulnerabilities. ```javascript= # git clone https://github.com/speed47/spectre-meltdown-checker # cd spectre-meltdown-checker # ./spectre-meltdown-checker.sh ``` ![](https://i.imgur.com/CZZJnWt.png) ![](https://i.imgur.com/vKGVYxP.png) ![](https://i.imgur.com/thUFqTf.png) ## 4. Cyclictest https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/rt-tests#compile-and-install ### Installtion ```javascript= # sudo yum groupinstall 'Development Tools' # sudo yum install numactl-devel # git clone git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git # cd rt-tests # git checkout stable/v1.0 # make all # make install # make cyclictest ``` ![](https://i.imgur.com/FRdnKwI.png) ![](https://i.imgur.com/dPGoNez.png) ![](https://i.imgur.com/9b8dofL.png) ![](https://i.imgur.com/Rc5svAo.png) ![](https://i.imgur.com/qcWV58b.png) ![](https://i.imgur.com/zrhLIXa.png) ### Testing cyclictest (The testing need to validate with intel) ```java= # ./cyclictest --mlockall --smp --priority=80 --interval=200 --distance=0 ``` ![](https://i.imgur.com/rlnMmVP.png) ## 5: Memory Latency Checker (MLC) Download MLC tool from https://www.intel.com/content/www/us/en/developer/articles/tool/intelr-memory-latency-checker.html -> Download -> Right click -> exract ```javascript= # cd mlc # ./mlc ``` ![](https://i.imgur.com/DDdpv5K.png) ## 6: Jitter **Review Inst_Jitter column. This should range from 5k-100K.** ### Installtion ```javascript= # git clone https://gerrit.fd.io/r/pma_tools # cd pma_tools/jitter # make # ./jitter –c 2 –i 200 ``` ![](https://i.imgur.com/OCTTgI3.png) ### Jitter Test results ![](https://i.imgur.com/DuztL6d.png) ![](https://i.imgur.com/nE9qSKO.png) ![](https://i.imgur.com/2d7gt7V.png) ## 7: PMC Memory Test ![](https://i.imgur.com/kC7Egyk.png) ## 8: PMC Power Test ![](https://i.imgur.com/PCUWjl4.png) ## 9: Redhat.sh Test ## 10: rfc2544