Jupiter is a high-performance 4-layer network load balance service based on DPDK.
Jupiter is a high-performance 4-layer network load balance service based on DPDK. It supports TCP and UDP packet forwarding in FULLNAT mode. The load balancing algorithms supported by jupiter include consistent hashing, rr, lc.
Required OS release: Centos-7.2 or Centos-7.4
tar -xf jupiter.tar.gz
cd jupiter
make rpm-pkg
rpm -i rpmbuild/RPMS/x86_64/jupiter-0.1-1.x86_64.rpm
The default configuration path for jupiter-service is /etc/jupiter/jupiter.cfg. An example for jupiter.cfg as follows :
EAL configuration reference DPDK document.
[DPDK]
argv = -c 0xf -n 4
[DEVICE0]
name = jupiter0
ipv4 = 1.1.1.2
netmask = 255.255.0.0
gw = 1.1.1.254
rxqsize = 256
txqsize = 512
local-ipv4 = 10.0.2.1/32, 10.0.2.2/32
pci = 00:00.0
Reserve huge pages memory:
mkdir -p /mnt/huge
mount -t hugetlbfs nodev /mnt/huge
echo 4096 > /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
Load igb_uio module:
modprobe uio
insmod /usr/share/jupiter/kmod/igb_uio.ko
/usr/share/jupiter/tools/dpdk-devbind.py --bind=igb_uio eth1
Load rte_kni module:
insmod /usr/share/jupiter/kmod/rte_kni.ko
Start up jupier-service:
jupiter-service --daemon
ifconfig eth0 1.1.1.1/24 up
route add -net 10.0.1.0 netmask 255.255.255.0 gw 1.1.1.2
ifconfig eth0 1.1.1.3/24 up
route add -net 10.0.2.0 netmask 255.255.255.0 gw 1.1.1.2
Add a TCP virtual service 10.0.1.1:8888 and two nginx service 1.1.1.3:80, 1.1.1.4:80. More information about command details.
ifconfig jupiter0 1.1.1.2/24 up
jupiter-ctl vs/add 10.0.1.1:8888 tcp rr
jupiter-ctl rs/add 10.0.1.1:8888 tcp 1.1.1.3:80
jupiter-ctl rs/add 10.0.1.1:8888 tcp 1.1.1.4:80
ab http://10.0.1.1:8888/
CPU model: Intel(R) Xeon(R) CPU E5-2698 v4 @ 2.20GHz
NIC model: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection
Jmeter version: apache-jmeter-3.1
Nginx version: nginx-1.10.2
Bind version: bind-9.9.4
Jupiter-service configuration: 8 lcore and 4G memory
protocol | schedule | TPS | ERROR | jupiter rx-pps | jupiter rx-bps |
---|---|---|---|---|---|
TCP | ipport | 2064789.7 | 0 | 4.78M | 8.41G |
TCP | rr | 2060283.5 | 0 | 4.78M | 8.41G |
TCP | lc | 777078.5 | 0 | - | - |
UDP | ipport | 4212952 | 0 | 8.28M | 7.75G |
UDP | rr | 4272837.6 | 0 | 8.28M | 7.75G |
UDP | lc | 812356.2 | 0 | - | - |