1a9643ea8Slogwang# F-Stack Quick Start Guide 2a9643ea8Slogwang 3a9643ea8Slogwang F-Stack is an open source high performance network framework based on DPDK. 4a9643ea8Slogwang 5a9643ea8Slogwang 6a9643ea8Slogwang## System Requirements 7a9643ea8Slogwang 8a9643ea8SlogwangSee Intel DPDK [linux_gsg](http://dpdk.org/doc/guides/linux_gsg/index.html) 9a9643ea8Slogwang 102abe29f7Sunknown## clone F-Stack 11a9643ea8Slogwang 12a9643ea8Slogwang mkdir /data/f-stack 13a9643ea8Slogwang git clone https://github.com/F-Stack/f-stack.git /data/f-stack 14a9643ea8Slogwang 15a9643ea8Slogwang## Compile DPDK 16a9643ea8Slogwang 17a9643ea8SlogwangRead DPDK Quick Started Guide or run the command below 18a9643ea8Slogwang 198d76b62eSfengbojiang cd /data/f-stack/dpdk 20*6b8a3e40Sjfb8856606 meson -Denable_kmods=true build 218d76b62eSfengbojiang ninja -C build 228d76b62eSfengbojiang ninja -C build install 23a9643ea8Slogwang 24a9643ea8Slogwang## Set hugepage 25a9643ea8Slogwang 26a9643ea8SlogwangFor a single-node system, the command to use is as follows (assuming that 1024 pages are required): 27a9643ea8Slogwang 28a9643ea8Slogwang echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages 29a9643ea8Slogwang 30a9643ea8SlogwangOn a NUMA machine, pages should be allocated explicitly on separate nodes: 31a9643ea8Slogwang 32a9643ea8Slogwang echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages 33a9643ea8Slogwang echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages 34a9643ea8Slogwang 35a9643ea8SlogwangOnce the hugepage memory is reserved, to make the memory available for DPDK use, perform the following steps: 36a9643ea8Slogwang 37a9643ea8Slogwang mkdir /mnt/huge 38a9643ea8Slogwang mount -t hugetlbfs nodev /mnt/huge 39a9643ea8Slogwang 40a9643ea8SlogwangThe mount point can be made permanent across reboots, by adding the following line to the `/etc/fstab` file: 41a9643ea8Slogwang 42a9643ea8Slogwang nodev /mnt/huge hugetlbfs defaults 0 0 43a9643ea8Slogwang 44a9643ea8Slogwang## offload NIC 45a9643ea8Slogwang 46a9643ea8Slogwang modprobe uio 47*6b8a3e40Sjfb8856606 insmod /data/f-stack/dpdk/build/kernel/linux/igb_uio/igb_uio.ko 48*6b8a3e40Sjfb8856606 insmod /data/f-stack/dpdk/build/kernel/linux/kni/rte_kni.ko carrier=on 49a9643ea8Slogwang python dpdk-devbind.py --status 50a9643ea8Slogwang ifconfig eth0 down 51a9643ea8Slogwang python dpdk-devbind.py --bind=igb_uio eth0 # assuming that use 10GE NIC and eth0 52a9643ea8Slogwang 53a9643ea8Slogwang## Compile lib 54a9643ea8Slogwang 558d76b62eSfengbojiang # Upgrade pkg-config while version < 0.28 568d76b62eSfengbojiang cd /data/ 578d76b62eSfengbojiang wget https://pkg-config.freedesktop.org/releases/pkg-config-0.29.2.tar.gz 588d76b62eSfengbojiang tar xzvf pkg-config-0.29.2.tar.gz 598d76b62eSfengbojiang cd pkg-config-0.29.2 608d76b62eSfengbojiang ./configure --with-internal-glib 618d76b62eSfengbojiang make 628d76b62eSfengbojiang make install 638d76b62eSfengbojiang mv /usr/bin/pkg-config /usr/bin/pkg-config.bak 648d76b62eSfengbojiang ln -s /usr/local/bin/pkg-config /usr/bin/pkg-config 658d76b62eSfengbojiang 663377ed76Slogwang export FF_PATH=/data/f-stack 678d76b62eSfengbojiang export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/local/lib64/pkgconfig:/usr/lib/pkgconfig 688d76b62eSfengbojiang cd /data/f-stack 69a9643ea8Slogwang cd lib 70a9643ea8Slogwang make 71a9643ea8Slogwang 72a9643ea8Slogwang### Compile Nginx 73a9643ea8Slogwang 74a9643ea8Slogwang cd ../ 7528e10b57Sfengbojiang(姜凤波) cd app/nginx-1.16.1 76a9643ea8Slogwang ./configure --prefix=/usr/local/nginx_fstack --with-ff_module 77a9643ea8Slogwang make 78a9643ea8Slogwang make install 79a9643ea8Slogwang cd ../../ 8040600211Slogwang /usr/local/nginx_fstack/sbin/nginx 81a9643ea8Slogwang 82a9643ea8Slogwang### Compile Redis 83a9643ea8Slogwang 8414cef497Sfengbojiang cd app/redis-5.0.5/ 85a9643ea8Slogwang make 862abe29f7Sunknown # run with start.sh 872abe29f7Sunknown ./start.sh -b ./redis-server -o /path/to/redis.conf 882abe29f7Sunknown # or run like this: 8922a4ca44Sjohnjiang #./redis-server --conf config.ini --proc-type=primary --proc-id=0 /path/to/redis.conf 90a9643ea8Slogwang 91