-
Notifications
You must be signed in to change notification settings - Fork 21
PF_RING
Jack Wampler edited this page May 11, 2020
·
6 revisions
cd PF_RING/kernel
make
sudo make install
See the docs for more options.
# sudo insmod ./pf_ring.ko [min_num_slots=N] [enable_tx_capture=1|0] [ enable_ip_defrag=1|0]
sudo insmod pf_ring.ko min_num_slots=65536
min_num_slots Minimum number of packets the kernel module should be able to enqueue (default – 4096).
# Determine the driver family
ethtool -i eth1 | grep driver
> e1000e
# Compile and load the corresponding driver
cd PF_RING/drivers/intel
make
cd e1000e/e1000e-*-zc/src
sudo ./load_driver.sh
cd PF_RING/userland/lib
./configure && make
sudo make install
cd ../libpcap
./configure && make
sudo make install
Start the ZC load balancer establishing cluster and queues to interface with.
See the docs for more options
cd PF_R/userland/examples_zc
# sudo zbalance_ipc -i zc:eth1 -n $CORES -c $CLUSTER_NUM -g 1
sudo ./zbalance_ipc -i zc:eth1 -n 2 -c 10 -g 1 -m 1
# comma separate when load balancing from more than one interface
sudo ./zbalance_ipc -i zc:eth1,zc:eth0 -n 2 -c 10 -g 1 -m 1
-g is the core affinity for the capture/distribution thread
-c declares the ZC cluster ID
-n specifies the number of egress queues
-m selects the hash function (there are a few options available, or it is possible to write a custom one)
0: Round-Robin (default)
1: IP hash
...
NOTE: If listening on more than one interface with zbalance_ipc they MUST be comma separated. Using other methods can lead to transparent failure and packet loss.
See PF_RING Documentation for the latest information on how to run PF_RING ZC correctly.