2
Performance Report [email protected] | WWW.CODAVEL.COM Packet Loss Ratio: 0% Packet Loss Ratio: 0.1% Packet Loss Ratio: 0.5% Bolina HTTPS (cURL)

Performance Report - Codavel€¦ · (co-located in the same docker environment). Client dockers and servers dockers are deployed in separate cloud server instances (Digital Ocean

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Performance Report - Codavel€¦ · (co-located in the same docker environment). Client dockers and servers dockers are deployed in separate cloud server instances (Digital Ocean

Performance Report

[email protected] | WWW.CODAVEL.COM

Packet Loss Ratio: 0%

Packet Loss Ratio: 0.1%

Packet Loss Ratio: 0.5%

BolinaHTTPS (cURL)

Page 2: Performance Report - Codavel€¦ · (co-located in the same docker environment). Client dockers and servers dockers are deployed in separate cloud server instances (Digital Ocean

Performance Report

[email protected] | WWW.CODAVEL.COM

On the client side, a docker compose with a single Dockerfile is used to act as the client. The client docker loops

through all the test parameters (packet loss rate, latency and file size). Packet loss and latency are induced via a

call to the network emulator API to apply the new rules. For each trial, transfer time is measured from the call to

the client until the client returns (exit). On the server side, a docker compose orchestrates three dockers:

the content server, the network emulator and the bolina server.

All the traffic that is destined to the content server goes through the network emulator, where latency and packet

loss rules are applied. HTTP clients communicate via network emulator with the content server. Bolina clients

communicate via network emulator with the bolina server, which then communicates to the content server

(co-located in the same docker environment).

Client dockers and servers dockers are deployed in separate cloud server instances (Digital Ocean droplets -

with 2 CPUs, 4GB of RAM and a 25GB SSD disk). All client and server instances are deployed in the same region.

The latency between the instances in ~0.5ms and bandwidth around 2Gbps.

The Network Emulator used is a c++ library developed by Codavel that relies on Linux's netem* module and its

command line tool tc to apply the intended network rules. The Rules are applied by creating a Hierarchical

Token Bucket (HTB) root handle for the interface and by adding a htb class for the rate limiting and using netem

for the latency and packet loss. Given that netem by default only applies rules to outgoing traffic, and since that

when using the emulator on a docker we don’t have access to the Intermediate Functional Block (IFB) module,

the emulator container is composed by two network interfaces, one that handles the traffic from the outside and

other that handles the traffic to the other containers (bolina and content server).

* https://wiki.linuxfoundation.org/networking/netem

Setup