Skip to content

bupt-narc/rinp

Repository files navigation

RINP: RINP Is Not a Proxy

RINP (RINP Is Not a Proxy) is a feasible DDoS defense solution, which can be seamlessly integrated with existing applications through its overlay-based wrap mechanism and isolated sidecar implementation.

Architecture

rinp-figure

Quick Start

Make sure you Docker, and GNU-Make installed and running on a Linux machine.

You can simply run the init script:

./init.sh

In fact, the script will automatically finish step 1 to step 4 in following:

  1. Build a base container image which is useful for testing purposes: cd examples && make && cd -
  2. Build RINP components using the base container that we just built: BASE_IMAGE=netutils make container
  3. Prepar a test user: cp examples/demo.db examples/pb_data/data.db. You can also change it in Auth module.
  4. Start RINP: cd examples && docker compose up. Check for any errors.
  5. (In a separate terminal) Run a iperf server to test with: docker exec -it service iperf3 -s
  6. (In a separate terminal) Run a iperf client to test: docker exec -it user iperf3 -c 11.22.33.44

Notice the client used an IP that is virtual (meaning RINP is functioning). If nothing goes wrong, you should see the test going. Feel free to raise an issue if you have questions.

Evaluation

Environment

Evaluation is conducted between Bejing, China and Guangzhou, China with a fixed bandwidth of 10Mbps.

We deploy an Authenticator, 2 proxies, a scheduler, and a database on host machines with 2 cores of AMD EPYC 7K62 and 4 GB RAM in Guangzhou. We deploy some Accessors in Linux virtual machines in Beijing, each of which has 2 CPUs from a Xeon Silver 4216 CPU. As is known, Beijing and Guangzhou are more than 2100 kilometers apart, which can represent the real network status.

Using TCP:

iperf3-tcp.mp4

Using UDP:

iperf3-udp.mp4

Result

PProf

pprof

Latency

latency

Throughput

throughput

Jitter

jitter