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

## 2. Software Requirements:


## 3. Platform BIOS Settings:



## 4. Intel Select Solution Platform Technology Requirements:


## 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

## 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
```

### vBNG Dataplane Application Environment Set-up
```javascript=
Waiting from Intel
```
## 2. HWSW Test

## 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
```



## 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
```






### Testing cyclictest (The testing need to validate with intel)
```java=
# ./cyclictest --mlockall --smp --priority=80 --interval=200 --distance=0
```

## 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
```

## 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
```

### Jitter Test results



## 7: PMC Memory Test

## 8: PMC Power Test

## 9: Redhat.sh Test
## 10: rfc2544