Skip to content

Latest commit

 

History

History
93 lines (69 loc) · 3.15 KB

README.md

File metadata and controls

93 lines (69 loc) · 3.15 KB

No Maintenance Intended

kipketer

A bandwidth testing platform with a strong templating engine

Kipketer was originally developed for Nianet A/S with the purpose of facilitating line testing on a larger scale. It is now released under the MIT license excluding certain assets, but in an entirely functional state.

It facilitates the configuration of a loop on a remote CPE, and using this loop initiates and reports on throughput and latency tests.

Installation

This guide is written for a debian-based linux and requires Ruby 2.3 to be installed through external repositories.

Architecture

The system requires two servers: A test-initiating server, and a test-receiving server. The test-initiating server also runs the web service.

The system is designed based around a number test pair addresses that are looped on the back of a device under test (DUT). In production, this was designed using two VRFs, each containing unique addresses routed via the DUT.

routing:

Here the 198.18.0.0/15 network is used for testing. 198.18.0.0/16 belongs to the first vrf and 198.19.0.0/16 belongs to the second. A number of test-pairs are configured in the following way:

transmit-server

ip addr add 198.18.0.2/26 dev eth0
ip addr add 198.18.0.3/26 dev eth0
ip route add 198.19.0.2/32 via 198.18.0.1 dev eth0 source 198.18.0.2
ip route add 198.19.0.3/32 via 198.18.0.1 dev eth0 source 198.18.0.3

etc.

receive-server

ip route add 198.19.0.2/26 dev eth0
ip route add 198.19.0.3/26 dev eth0
ip route add 198.18.0.2/32 via 198.19.0.1 dev eth0 source 198.19.0.2
ip route add 198.18.0.3/32 via 198.19.0.1 dev eth0 source 198.19.0.3
etc.

Required software

Thrulay-ng

This system requires thrulay-ng, available on sourceforge. Compile it locally and add it to your path

Ruby

Ruby dependencies are handled through bundler, so make sure it's installed through the ruby gem system

gem install bundler

Owamp

OWAMP, as part of the perfsonar suite is also required. Compile it from source also

The required file is available here: http://software.internet2.edu/sources/owamp/owamp-3.3.tar.gz

NTP

OWAMP requires good time service on both servers, as the difference in clock accuracy will be source of error in the measurements. Therefore it is recommended to use proper low-stratum NTP-servers and to use physical servers, not virtual, to these servers.

Web service

The system runs using the micro-webserver Puma. It's configured in config/puma.rb to bind to a UNIX socket, and designed to be proxied through nginx. Refer to the nginx documentation on how to proxy to a unix socket.

Running through docker

Docker is recommended for local development. It runs with a development environment that allows local testing.

To run the docker, compile the dockerfile and run the docker.sh file.

The docker.sh file leaves you in a shell, and you must run the following manually:

# thrulayd
# owampd -c /etc/owamp
# service ntp start
# cd /opt/app
# bundle install
# puma -C "-" -p 5000

Then you can connect to the docker container ip port 5000