The main component of the probe are the server and the client. The probe can do RTT, TCP and UDP measures to verify the SLA. mSLAcert uses ICMP to measure the two way delay between server and client. The server sends 10 pings and calculates the RTT of the connection between server and client as the mean of the 10 samples.
mSLAcert measures TCP and UDP throughput using IPERF [http://iperf.fr], a tool that does active measurements, it supports customization of various parameters like timing, buffers and protocols. Iperf can measure the maximum achievable bandwidth on a network and it reports the bandwidth, time, jitter loss and other parameters [http://iperf.fr]. The TCP throughput it is measured as the min, mean and the maximum bps between Server and client. The same is for UDP throughput, the probe measures the min, mean and the maximum bps in the transfer between server and client. In the UDP measure the probe also measures the mean throughput that the client has received also the mean jitter and percentage of datagram loss.
Metrics and Capabilities
Metrics
mSLAcert offers a few measurement metrics, we can identify the following metrics:
time: duration of measurement
start: start time of a measure that may have a non-zero duration
end: end time of a measure that may have a non-zero duration
source.ip4: source IPv4 address from which an active measurement was taken
destination.ip4: the destination IPv4 address of the target of an active measurement
Capabilities
mSLAcert has 8 capabilities, for the measurement of RTT, TCP and UDP throughput:
ping-average-ip4: This capability enables the probe to measure the RTT and to report back the min, mean and maximum value of RTT.
ping-detail-ip4: This capability enables the probe to measure the RTT and to report back the value of the RTT for every sample/ second.
tcpsla-average-ip4: This capability enables the probe to measure the TCP throughput and to report back the min, mean and maximum value of throughput.
tcpsla-detail-ip4: This capability enables the probe to measure the TCP throughput and to report back the value of the TCP throughput for every sample/ second.
udpsla-average-ip4: This capability enables the probe to measure the UDP throughput and to report back the min, mean and maximum value of throughput, additionally it will report back the mean value of throughput that the client has received the percentage of datagram loss and jitter, in this case it cannot retrieve this information it will display -1 for this measurements. The UDP test will last 2 seconds less than the assigned time, to give time to the server to get the report from the client.
udpsla-detail-ip4: This capability enables the probe to measure the UDP throughput and to report back the value of the UDP throughput for every sample/ second, additionally it will report back the mean value of throughput that the client has received the percentage of datagram loss and jitter, in this case it cannot retrieve this information it will display -1 for this measurements. The UDP test will last 2 seconds less than the assigned time, to give time to the server to get the report from the client.
msla-average-ip4: This capability will enable the probe to launch RTT, TCP and UDP test one after another. It will report back the min, mean and maximum value of RTT, TCP and UDP throughput, additionally it will report back the mean value of UDP throughput that the client has received the percentage of UDP datagram loss and jitter. This capability will do three consecutive tests, and the time assigned to this capability will be divided by three, so every test will have 1/3 of the total time.
msla-detail-ip4: This capability will enable the probe to launch RTT, TCP and UDP test one after another. It will report back the value of RTT, TCP and UDP throughput for every sample/ second, additionally it will report back the mean value of UDP throughput that the client has received the percentage of datagram loss and jitter. This capability will do three consecutive tests, and the time assigned to this capability will be divided by three, so every test will have 1/3 of the total time.
msla-AGENT-Probe-ip4: The presence of this capability shows that the client is available.
Capabilities
Probe execution environment
mSLAcert runs on Linux (tested on Ubuntu 12.04 and 14.04), it is written in python. It is requires Iperf to be installed on both server and client machines.
Installation of standalone probe
mSLAcert is integrated with mPlane supervisor, the frozen version now runs only with mplane protocol.
The probe is really simple to install, just needs to have its requirement full filled:
Install, Yalm, Iperf and Tornado
1. sudo apt-get install iperf
2. sudo apt-get install python3-yaml
3. sudo apt-get install python3-tornado
4. Download mSLAcert files [https://github.com/etego/msla]
5. Configure the configuration file for the certificates .conf/component-certs.conf and ./conf/supervisor- certs.conf, also .conf/client-certs.conf, if you will be using the client.
There are needed two PCs, one for the server and one for the client, with linux installed on them.
Usage of standalone probe
mSLAcert runs only as an integrated probe with mPlane protocol, in cannot run as a standalone probe. For all the instruction on how to run it please see HOWTO-MSLAcert.md on [https://github.com/etego/msla] or [ https://github.com/fp7mplane/components/tree/master/mSLAcert%20-%20Probe].
Integration into an MPlane environment
The probe is fully integrated with the mPlane environment, if you want a ready to test environment with the probe you can download [https://github.com/etego/msla]. To configure it on your own, here is a short guide on how to configure the .conf files of mPlane RI.
For the sake of simplicity we suppouse the sequent scenario:
PC2-Supervisor.py: 192.168.2.1
|
|
|
|
|
_______|_________
| |
| |
PC1 - 192.168.1.1 <<<------- Network ------------>>>> PC4 - 192.168.4.1
mSLAcert_main.py | | mSLAcert_Agent.py
|_________________|
|
|
|
|
|
|
PC3-mPlane Clinet.py: 192.168.3.1
In base of you network configuration you have to change the seguent files, for the Ip and certificates:
./conf/client.conf
[TLS]
cert = PKI/ca/certs/"client-certicate".crt
key = PKI/ca/certs/"plaintext certificate.key
ca-chain = PKI/ca/root-ca/root-ca.crt
[client]
# leave registry_uri blank to use the default registry.json in the mplane/ folder
registry_uri =
# http://ict-mplane.eu/registry/demo
# workflow may be 'component-initiated' or 'client-initiated'
workflow = component-initiated
# for component-initiated:
listen-host = "IP of the machine where is launched the client" (exmp:192.168.3.1)
listen-port = 8891
listen-spec-link = https://127.0.0.1:8891/
registration-path = register/capability
specification-path = show/specification
result-path = register/result
# for client-initiated:
capability-url: "IP supervisor":8890/ (exmp:192.168.2.1:8890/)
./conf/component*.conf
[TLS]
cert = PKI/ca/certs/"Components-certicate".crt
key = PKI/ca/certs/"plaintext certificate".key
ca-chain = PKI/ca/root-ca/root-ca.crt
[Roles]
org.mplane.FUB.Clients.CI-Client_FUB = guest,admin
"add also the roles for all the other components, client, supervisor ect"
[Authorizations]
msla-AGENT-Probe-ip4 = guest,admin
"add the capability of your probe"
[module_mSLA_main]
module = mplane.components."name of python file"
ip4addr = 1.2.3.4
[component]
scheduler_max_results = 20
# leave registry_uri blank to use the default registry.json in the mplane/ folder
registry_uri =
# http://ict-mplane.eu/registry/demo
# workflow may be 'component-initiated' or 'client-initiated'
workflow = component-initiated
# for component-initiated
client_host = "IP of the supervisor" (exmp: 192.168.2.1)
client_port = 8889
registration_path = register/capability
specification_path = show/specification
result_path = register/result
# for client-initiated
listen-port = 8888
listen-cap-link = https://127.0.0.1:8888/
./conf/supervisor.conf
[TLS]
cert= PKI/ca/certs/CI-Supervisor-FUB.crt
key= PKI/ca/certs/CI-Supervisor-FUB-plaintext.key
ca-chain = PKI/ca/root-ca/root-ca.crt
[Roles]
org.mplane.FUB.Components.mSLAcert_server = guest,admin
org.mplane.FUB.Agent.mSLAcert_Agent = guest,admin
org.mplane.FUB.Supervisors.CI_Supervisor_FUB = admin
Supervisor-1.FUB.mplane.org = admin
org.mplane.FUB.Clients.CI-Client_FUB = guest,admin
[Authorizations]
ping-average-ip4 = guest,admin
ping-detail-ip4 = guest,admin
tcpsla-average-ip4 = guest,admin
tcpsla-detail-ip4 = guest,admin
udpsla-average-ip4 = guest,admin
udpsla-detail-ip4 = guest,admin
msla-average-ip4 = guest,admin
msla-detail-ip4 = guest,admin
msla-AGENT-Probe-ip4 = guest,admin
[client]
# workflow may be 'component-initiated' or 'client-initiated'
workflow = component-initiated
# for component-initiated:
listen-host = "IP of the machine where is launched the supervisor" (exmp: 192.168.2.1)
listen-port = 8889
listen-spec-link =
# https://127.0.0.1:8889/
registration-path = register/capability
specification-path = show/specification
result-path = register/result
# for client-initiated:
component-urls: "IP of component 1":8888/,"IP of component 2":8888/ (exmp: 192.168.1.1:8888/,192.168.4.1:8888/)
[component]
scheduler_max_results = 20
# leave registry_uri blank to use the default registry.json in the mplane/ folder
registry_uri =
# http://ict-mplane.eu/registry/demo
# workflow may be 'component-initiated' or 'client-initiated'
workflow = component-initiated
# for component-initiated:
client_host = "IP of the machine where is launched the client" (exmp: 192.168.2.1)
client_port = 8891 / 9911
registration_path = register/capability
specification_path = show/specification
result_path = register/result
# for client-initiated:
listen-port = 8890
listen-cap-link =
# https://127.0.0.1:8890/
New features supported by the mPlane project
mSLAcert was entirely developed within mPlane project.
Changes since D2.2
There have been small changes since 2.2:
1. The agent registers to the supervisor
2. Added msla-*-ip4 capabilities.
References
mPlane proxy interface: https://github.com/etego/msla
Iperf: https://github.com/esnet/iperf
mPlane repo: https://github.com/fp7mplane/components/tree/master/mSLAcert%20-%20Probe