1*a9643ea8Slogwang# F-Stack Quick Start Guide
2*a9643ea8Slogwang
3*a9643ea8Slogwang  F-Stack is an open source high performance network framework based on DPDK.
4*a9643ea8Slogwang
5*a9643ea8Slogwang
6*a9643ea8Slogwang## System Requirements
7*a9643ea8Slogwang
8*a9643ea8SlogwangSee Intel DPDK [linux_gsg](http://dpdk.org/doc/guides/linux_gsg/index.html)
9*a9643ea8Slogwang
10*a9643ea8Slogwang## clone F-Stack
11*a9643ea8Slogwang
12*a9643ea8Slogwang	mkdir /data/f-stack
13*a9643ea8Slogwang	git clone https://github.com/F-Stack/f-stack.git /data/f-stack
14*a9643ea8Slogwang
15*a9643ea8Slogwang## Compile DPDK
16*a9643ea8Slogwang
17*a9643ea8SlogwangRead DPDK Quick Started Guide or run the command below
18*a9643ea8Slogwang
19*a9643ea8Slogwang	cd /data/f-stack/dpdk/tools
20*a9643ea8Slogwang	./dpdk-setup.sh
21*a9643ea8Slogwang
22*a9643ea8SlogwangCompile with x86_64-native-linuxapp-gcc
23*a9643ea8Slogwang
24*a9643ea8Slogwang## Set hugepage
25*a9643ea8Slogwang
26*a9643ea8SlogwangFor a single-node system, the command to use is as follows (assuming that 1024 pages are required):
27*a9643ea8Slogwang
28*a9643ea8Slogwang	echo 1024 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
29*a9643ea8Slogwang
30*a9643ea8SlogwangOn a NUMA machine, pages should be allocated explicitly on separate nodes:
31*a9643ea8Slogwang
32*a9643ea8Slogwang	echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
33*a9643ea8Slogwang	echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
34*a9643ea8Slogwang
35*a9643ea8SlogwangOnce the hugepage memory is reserved, to make the memory available for DPDK use, perform the following steps:
36*a9643ea8Slogwang
37*a9643ea8Slogwang	mkdir /mnt/huge
38*a9643ea8Slogwang	mount -t hugetlbfs nodev /mnt/huge
39*a9643ea8Slogwang
40*a9643ea8SlogwangThe mount point can be made permanent across reboots, by adding the following line to the `/etc/fstab` file:
41*a9643ea8Slogwang
42*a9643ea8Slogwang	nodev /mnt/huge hugetlbfs defaults 0 0
43*a9643ea8Slogwang
44*a9643ea8Slogwang## offload NIC
45*a9643ea8Slogwang
46*a9643ea8Slogwang    modprobe uio
47*a9643ea8Slogwang    insmod /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/build/kmod/igb_uio.ko
48*a9643ea8Slogwang    insmod /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/build/kmod/rte_kni.ko
49*a9643ea8Slogwang	python dpdk-devbind.py --status
50*a9643ea8Slogwang    ifconfig eth0 down
51*a9643ea8Slogwang	python dpdk-devbind.py --bind=igb_uio eth0 # assuming that use 10GE NIC and eth0
52*a9643ea8Slogwang
53*a9643ea8Slogwang## Compile  lib
54*a9643ea8Slogwang
55*a9643ea8Slogwang	cd ../../
56*a9643ea8Slogwang    cd lib
57*a9643ea8Slogwang	make
58*a9643ea8Slogwang	export FF_PATH=/data/f-stack
59*a9643ea8Slogwang	export FF_DPDK=/data/f-stack/dpdk/x86_64-native-linuxapp-gcc
60*a9643ea8Slogwang
61*a9643ea8Slogwang### Compile Nginx
62*a9643ea8Slogwang
63*a9643ea8Slogwang	cd ../
64*a9643ea8Slogwang	cd app/nginx-1.11.10
65*a9643ea8Slogwang	./configure --prefix=/usr/local/nginx_fstack --with-ff_module
66*a9643ea8Slogwang	make
67*a9643ea8Slogwang	make install
68*a9643ea8Slogwang	cd ../../
69*a9643ea8Slogwang	./start.sh -b /usr/local/nginx_fstack/sbin/nginx -c config.ini
70*a9643ea8Slogwang
71*a9643ea8Slogwang### Compile Redis
72*a9643ea8Slogwang
73*a9643ea8Slogwang	cd app/redis-3.2.8/
74*a9643ea8Slogwang	make
75*a9643ea8Slogwang	make install
76*a9643ea8Slogwang
77