You are here

mSLACert Active probe

Description:

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

|mplane| showcap ping-average-ip4
capability: measure
    label       : ping-average-ip4
    link        : /
    token       : a74fabd15ef8bbaaf68eb106a6c1c54e
    when        : now ... future / 1s
    parameters  ( 2):
                              source.ip4: 1.2.3.4
                         destination.ip4: *
    results     ( 4):
        delay.twoway.icmp.us.min
        delay.twoway.icmp.us.mean
        delay.twoway.icmp.us.max
        delay.twoway.icmp.count
None
 
|mplane| showcap ping-detail-ip4
capability: measure
    label       : ping-detail-ip4
    link        : /
    token       : 75cd8c844dce30a09c579d9fc89caa3d
    when        : now ... future / 1s
    parameters  ( 2):
                              source.ip4: 1.2.3.4
                         destination.ip4: *
    results     ( 2):
        time
        delay.twoway.icmp.us
None
 
|mplane| showcap tcpsla-average-ip4
capability: measure
    label       : tcpsla-average-ip4
    link        : /
    token       : 915d4e930eb023e3f422f56753593947
    when        : now ... future / 1s
    parameters  ( 2):
                              source.ip4: 1.2.3.4
                         destination.ip4: *
    results     ( 4):
        mSLA.tcpBandwidth.download.iperf.min
        mSLA.tcpBandwidth.download.iperf.mean
        mSLA.tcpBandwidth.download.iperf.max
        mSLA.tcpBandwidth.download.iperf.timecountseconds
None
 
|mplane| showcap tcpsla-detail-ip4
capability: measure
    label       : tcpsla-detail-ip4
    link        : /
    token       : daa89cba4700ad4c665ae814a1de8ca8
    when        : now ... future / 1s
    parameters  ( 2):
                              source.ip4: 1.2.3.4
                         destination.ip4: *
    results     ( 2):
        time
        mSLA.tcpBandwidth.download.iperf
None
 
|mplane| showcap udpsla-average-ip4
capability: measure
    label       : udpsla-average-ip4
    link        : /
    token       : 397ec41d3c1f81adeb7b7602fec6e632
    when        : now ... future / 1s
    parameters  ( 2):
                              source.ip4: 1.2.3.4
                         destination.ip4: *
    results     ( 7):
        mSLA.udpCapacity.download.iperf.min
        mSLA.udpCapacity.download.iperf.mean
        mSLA.udpCapacity.download.iperf.max
        mSLA.udpCapacity.download.iperf.jitter
        mSLA.udpCapacity.download.iperf.error
        mSLA-Bandwidth_mean_Mbps-Correct-UDP
        mSLA.udpCapacity.download.iperf.timecountseconds
None
 
|mplane| showcap udpsla-detail-ip4
capability: measure
    label       : udpsla-detail-ip4
    link        : /
    token       : 5c8c07f06c41c0fd144adfaa9c5a4ff7
    when        : now ... future / 1s
    parameters  ( 2):
                              source.ip4: 1.2.3.4
                         destination.ip4: *
    results     ( 5):
        time
        mSLA.udpCapacity.download.iperf
        mSLA.udpCapacity.download.iperf.jitter
        mSLA.udpCapacity.download.iperf.error
        mSLA-Bandwidth_mean_Mbps-Correct-UDP
None
 
|mplane| showcap msla-average-ip4
capability: measure
    label       : msla-average-ip4
    link        : /
    token       : 824f3777947371bee6192e222123f53f
    when        : now ... future / 1s
    parameters  ( 2):
                              source.ip4: 1.2.3.4
                         destination.ip4: *
    results     (15):
        delay.twoway.icmp.us.min
        delay.twoway.icmp.us.mean
        delay.twoway.icmp.us.max
        delay.twoway.icmp.count
        mSLA.tcpBandwidth.download.iperf.min
        mSLA.tcpBandwidth.download.iperf.mean
        mSLA.tcpBandwidth.download.iperf.max
        mSLA.tcpBandwidth.download.iperf.timecountseconds
        mSLA.udpCapacity.download.iperf.min
        mSLA.udpCapacity.download.iperf.mean
        mSLA.udpCapacity.download.iperf.max
        mSLA.udpCapacity.download.iperf.timecountseconds
        mSLA.udpCapacity.download.iperf.jitter
        mSLA.udpCapacity.download.iperf.error
        mSLA-Bandwidth_mean_Mbps-Correct-UDP
None
 
|mplane| showcap msla-detail-ip4
capability: measure
    label       : msla-detail-ip4
    link        : /
    token       : ea19803847ef4189974870e557d6eab1
    when        : now ... future / 1s
    parameters  ( 2):
                              source.ip4: 1.2.3.4
                         destination.ip4: *
    results     ( 7):
        time
        delay.twoway.icmp.us
        mSLA.tcpBandwidth.download.iperf
        mSLA.udpCapacity.download.iperf
        mSLA.udpCapacity.download.iperf.jitter
        mSLA.udpCapacity.download.iperf.error
        mSLA-Bandwidth_mean_Mbps-Correct-UDP
None
 

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