All Projects → tiglabs → Jupiter

tiglabs / Jupiter

Licence: mit
Jupiter is a high-performance 4-layer network load balance service based on DPDK.

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Jupiter

Haproxy
HAProxy Load Balancer's development branch (mirror of git.haproxy.org)
Stars: ✭ 2,463 (+743.49%)
Mutual labels:  ipv6, high-performance
The router
TheRouter is a software packet router based on DPDK an NPF libraries.
Stars: ✭ 123 (-57.88%)
Mutual labels:  ipv6, dpdk
Dpvs
DPVS is a high performance Layer-4 load balancer based on DPDK.
Stars: ✭ 2,168 (+642.47%)
Mutual labels:  ipv6, dpdk
mydpdkdns
dns server with high performance, based on dpdk.
Stars: ✭ 41 (-85.96%)
Mutual labels:  dpdk, high-performance
yastack
YAStack: User-space network-stack based on DPDK, FreeBSD TCP/IP Stack, EnvoyProxy
Stars: ✭ 90 (-69.18%)
Mutual labels:  dpdk, high-performance
BeLibnids
It is a platform to use multiprocess to combine dpdk and libnids together to support analyse packets in 10G port.
Stars: ✭ 36 (-87.67%)
Mutual labels:  dpdk, high-performance
dperf
dperf is a DPDK based 100Gbps network performance and load testing software.
Stars: ✭ 1,320 (+352.05%)
Mutual labels:  ipv6, dpdk
sriov-cni
DPDK & SR-IOV CNI plugin
Stars: ✭ 209 (-28.42%)
Mutual labels:  dpdk, high-performance
Tarsgo
Tarsgo is high performance RPC framework in Golang programing language using the tars protocol. Go has become popular for programming with the rise of containerization technology such as docker, k8s, and etcd. Go's goroutine concurrency mechanism means Go is very suitable for large-scale high-concurrency back-end server program development. The Go language has nearly C/C++ performance and near Python productivity. In Tencent, part of the existing C++ development team has gradually turned into Go developers. Tars, a widely used RPC framework, supports C++, Java, NodeJS, and PHP, and now Go. The combination with Go language has become a general trend. Therefore, in the voice of users, we launched Tarsgo, and we have applied to Tencent map application, YingYongbao application, Internet plus and other projects. Learn more about the whole Tars architecture and design at Introduction.
Stars: ✭ 2,931 (+903.77%)
Mutual labels:  high-performance
Stormpot
A fast object pool for the JVM
Stars: ✭ 267 (-8.56%)
Mutual labels:  high-performance
gumble
Collection of high-performance, thread-safe, lock-free data structures for go
Stars: ✭ 12 (-95.89%)
Mutual labels:  high-performance
Blitz
Blitz++ Multi-Dimensional Array Library for C++
Stars: ✭ 257 (-11.99%)
Mutual labels:  high-performance
Bgp Dashboard
BGP Dashboard and Monitoring Web Application
Stars: ✭ 268 (-8.22%)
Mutual labels:  ipv6
anchor
High-Performance Erlang Memcached Client
Stars: ✭ 15 (-94.86%)
Mutual labels:  high-performance
Object threadsafe
We make any object thread-safe and std::shared_mutex 10 times faster to achieve the speed of lock-free algorithms on >85% reads
Stars: ✭ 280 (-4.11%)
Mutual labels:  high-performance
LuisaRender
High-Performance Multiple-Backend Renderer Based on LuisaCompute
Stars: ✭ 47 (-83.9%)
Mutual labels:  high-performance
bcnn
A minimalist Deep Learning framework for embedded Computer Vision
Stars: ✭ 39 (-86.64%)
Mutual labels:  high-performance
Reveno
⚡ High performance and low latency Event Sourcing/CQRS framework
Stars: ✭ 283 (-3.08%)
Mutual labels:  high-performance
Firefly
Firefly is an asynchronous web framework for rapid development of high-performance web application.
Stars: ✭ 277 (-5.14%)
Mutual labels:  high-performance
Emitter
High performance, distributed and low latency publish-subscribe platform.
Stars: ✭ 3,130 (+971.92%)
Mutual labels:  high-performance

Chinese

Jupiter

Introduction

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.

  • Support TCP, UDP protocol
  • Support session maintenance for application
  • Support load balance service scale out
  • Support million QPS for visitors

How to use

1. Compilation

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

2. Startup

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

Simple Test

1. Test network diagram

Test network diagram

2. ab-client configuration

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

3. nginx-server configuration

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

4. jupiter-service configuration

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

5. ab-client request VIP service

ab http://10.0.1.1:8888/

Scale out

Scale out

Performance

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 - -
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].