Escolar Documentos
Profissional Documentos
Cultura Documentos
4 Prototype Implementation,
Validation and Selected Application
Socially-aware Management of
New Overlay Application Traffic with
Energy Efficiency in the Internet
European Seventh Framework Project FP7-2012-ICT- 317846-STREP
Deliverable D3.4
Prototype Implementation, Validation and
Selected Application
Version 1.0
Page 1 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Document Control
Title:
Type:
Public
Editor:
George Petropoulos
E-mail:
geopet@intracom-telecom.com
Author(s):
Doc ID:
D3.4-v1.0.doc
Amendment History
Version
Date
Author
Description/Comments
v0.1
George
Table of contents
v0.2
George
v0.3
v0.4
v0.5
Internal review
v1.0
Final version
Legal Notices
The information in this document is subject to change without notice.
The Members of the SmartenIT Consortium make no warranty of any kind with regard to this document,
including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The
Members of the SmatenIT Consortium shall not be held liable for errors contained herein or direct, indirect,
special, incidental or consequential damages in connection with the furnishing, performance, or use of this
material.
Page 2 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Table of Contents
1 Executive Summary
2 Introduction
2.1
2.2
6
7
3 Architecture Overview
3.1
3.2
3.3
Overview
Entities/Components/Interfaces
System Deployment
8
9
11
4 Implementation Framework
4.1
4.2
4.3
4.4
4.5
14
Tools
4.1.1 Specification Language
4.1.2 Programming Languages
4.1.3 Libraries
4.1.4 Tool chain
4.1.5 Testbed
4.1.6 Version Control
4.1.7 Issue Tracking
4.1.8 Continuous Integration Server
Procedures
4.2.1 System Release Process
4.2.2 Development Process
4.2.3 Roles
4.2.4 Meetings
System tree layout
Open-Source releases
Deployment Instructions
14
14
14
15
16
16
16
16
17
17
17
18
18
19
19
22
22
5.2
24
SBox
5.1.1 Quality of Service Analyzer
5.1.2 Network Traffic Manager
5.1.3 Economic Analyzer
5.1.4 Inter-SBox Communication Service
5.1.5 SBox-SDN Communication Service
5.1.6 Database
5.1.7 User Interface
SDN Controller
5.2.1 Interfaces
5.2.2 Floodlight
24
24
37
57
64
64
64
69
78
78
80
6 The Replicating Balanced Tracker - Home Router Sharing based on Trust (RBHORST) mechanism
90
6.1
6.2
uNaDa
6.1.1 Cloud Traffic Manager
6.1.2 Overlay Manager
6.1.3 Topology Proximity Monitor
6.1.4 Social Monitor
6.1.5 Social Analyzer
6.1.6 uNaDa-End-User Interface
6.1.7 Database
6.1.8 User Interface
End-User
90
90
99
103
106
107
109
111
119
128
134
Page 3 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
7.1
7.2
134
135
136
137
137
140
145
147
147
148
151
151
152
155
155
157
157
158
11 System Releases
162
163
163
163
163
163
163
164
165
166
166
167
172
172
172
173
174
174
175
175
176
177
177
177
179
12 Summary
180
182
14 References
184
15 Abbreviations
186
16 Acknowledgements
188
Page 4 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
1 Executive Summary
The aim of Deliverable 3.4 Prototype Implementation, Validation and Selected
Application is to document the final release of the SmartenIT prototype, with respect to
the implementation framework, the design and the implementation of the SmartenIT
system. Moreover, D3.4 also documents any standalone implementations that were made
by SmartenIT partners but were not integrated to the core system.
D3.4 is the outcome of four WP3 tasks, namely T3.2 Technology Scouting and Definition
of Implementation Framework, T3.3 Development of Prototype Components, T3.4
Implementation of Selected Application and T3.5 Integration of Prototype and
Validation. Hence, this deliverable covers all SmartenIT prototype implementation
aspects. Additionally, D3.4 provides an overview of the standalone implementations
carried out throughout the duration of the project.
D3.4 is the last deliverable of WP3 Architecture Design and Engineering and with its
submission, the activities of WP3 are concluded. Thus, this deliverable provides the final
documentation of the SmartenIT prototype and can be used by third parties to extend the
software. For this reason, the SmartenIT consortium has already published the source
code of the prototype as Open Source, under the Apache License v2, available at [39].
The objectives and outcomes of D3.4 are summarized below:
A detailed description of the technologies and libraries used in the SmartenIT
prototype, along with the implementation framework (i.e., processes, tools, roles).
Detailed instructions on how to build the source code and deploy the artifacts on
the recommended hardware.
Detailed documentation of the two main mechanisms implemented by the
SmartenIT prototype, namely the Dynamic Traffic Management (DTM) and the
Replicating Balanced tracker & Home Router Sharing based on Trust (RBHORST) mechanisms. The documentation includes a per-component breakdown of
all the involved classes and interfaces, thus providing a full explanation of the
structure of the code, the functionality implemented, as well as the accompanying
tests for the validation of the components.
Documentation of the standalone implementation of certain SmartenIT
mechanisms which were not however integrated to the core prototype, due to either
their low maturity or the different direction decided to be taken by the SmartenIT
consortium. The documentation includes a description of the functionality
implemented, a mapping to the SmartenIT architecture and details of the
implementation and deployment. The mechanisms that fall under this category are
MUlti-Criteria Application endPoint Selection (MUCAPS), the Virtual Incentive
(vINCENT), the Mobile Network Assistant (MoNA) and the SDN-based DC
selection mechanisms.
A complete list of all the SmartenIT prototype releases, with the implemented
functionality in each of them, along with the respective integration tests.
To summarize, this deliverable stands as the engineering and implementation
documentation of the final release of the SmartenIT prototype and standalone
implementations and concludes the works of WP3.
Version 1.0
Page 5 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
2 Introduction
The focus of the SmartenIT project is to devise management mechanisms for traffic
generated by applications running on the Cloud and/or forming overlays. The main axes
around which such solutions evolve are: i) social awareness, ii) incentive compatibility, iii)
energy efficiency, and iv) QoE awareness. In this context, WP2 Theory and Modeling
has described a number of traffic management mechanisms that deal with certain
aspects. In the most recent deliverable of WP2, D2.4 Report on Final Specification of
Traffic Management Mechanisms and Evaluation Results [26], the final list of those
mechanisms is included, where each one of them is specified and evaluated. In
collaboration with WP3, WP2 has selected some of those mechanisms to be implemented
into a SmartenIT prototype according to the procedure described in [26]. The selected
mechanisms are specified in full details in [26] and comprise the core Dynamic Traffic
Management (DTM) mechanism, along with certain extensions so as to be combined with
the Inter-Cloud Communication (ICC) mechanism, as well as the Replicating Balanced
tracker & Home Router Sharing based on Trust (RB-HORST) mechanism. For more
details on these mechanisms, please consult [26].
WP3 on the other hand, has defined a modular architecture that can encompass any of
the functionality required for the SmartenIT prototype. In this sense, in the context of Task
3.1, Deliverable D3.3 Final Report on System Architecture [3] has documented all the
details of the SmartenIT architecture and has provided a mapping of all the identified
mechanisms to it. In the meantime, WP3 (through Tasks 3.3, 3.4 and 3.5) has started
implementing the first release of the SmartenIT prototype, which mainly involved the
implementation of the DTM mechanism. The details of this first release were documented
in D3.2 Technologies, Implementation Framework, and Initial Prototype [2].
With the next releases, WP3 started incorporating additional functionality and
mechanisms into the prototype system. In parallel, certain standalone implementations
were pursued by partners with focus on specific aspects of functionality that were not
addressed by the core system.
2.1
The purpose of this deliverable is to fully document all the implementation work performed
by the consortium, by describing the final status of the SmartenIT prototype. More
specifically, D3.4 aims at:
describing in full detail the technologies and libraries used in the SmartenIT
prototype, along with the implementation framework (i.e., processes, tools, roles).
providing detailed instructions on how to build the source code and deploy the
artifacts on the recommended hardware.
documenting the mechanisms implemented by the SmartenIT prototype, including
a per-component breakdown of all the involved classes and interfaces, along with
the respective class and sequence diagrams, as well as the accompanying tests for
the validation of the components.
providing documentation of any standalone implementations of certain SmartenIT
mechanisms, not however integrated to the core prototype.
Page 6 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
providing a complete list of all the SmartenIT prototype releases, with the
implemented functionality in each one of them, along with the respective integration
tests.
2.2
Document Outline
Chapter 3 briefly reminds to the reader the entire SmartenIT architecture, as documented
in D3.3 [3], including the entities, components and interfaces required to encompass the
envisioned functionality.
Chapter 4 is the outcome of Task 3.2, which includes all the technologies and tools used
to support the development and deployment of the selected traffic management
mechanisms. The generated system tree and build instructions are also included.
Chapter 5 presents the implementation details of the DTM mechanism and its extensions,
describe per entity and per component, and including description of the functionality, the
interfaces, the design and the related tests.
Chapter 6 provides the same details for the RB-HORST mechanism.
Chapter 7 documents the standalone implementation of the MUlti-Criteria Application
endPoint Selection (MUCAPS) mechanism, by describing the functionality implemented,
a mapping to the SmartenIT architecture and details of the implementation and
deployment.
Chapter 8 provides the same information for the Virtual Incentive (vINCENT)
mechanism.
Chapter 9 does the same for the Mobile Network Assistant (MoNA) mechanism, and so
does Chapter 10 for the SDN-based DC selection (SDNDC) mechanism.
Chapter 11 provides the list of the different system releases for the DTM and RB-HORST
mechanisms, by identifying the functionality implemented in each release (in the form of
features addressed), the respective integration tests and the remaining issues to be
addressed by next releases.
Chapter 12 provides a brief summary of the deliverables conclusions, including the final
implementation framework, the implemented components of the DTM and RB-HORST
mechanisms and the list of standalone implementations.
Finally, the SMART objectives, which are defined in the Description of Work [31], are
addressed in Chapter 13.
Version 1.0
Page 7 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
3 Architecture Overview
The SmartenIT architecture was finalized in D3.3 [3], hence this chapter presents a
synopsis of the most relevant aspects of the SmartenIT architecture that is necessary to
understand D3.4. Initially, a brief overview of the final SmartenIT architecture is given in
Section 3.1, presenting all components and interfaces, as well as their grouping to entities.
Sections 3.2 and 3.3 illustrate the mapping of the two integrated mechanisms to the
generic SmartenIT architecture and their deployment diagrams, respectively.
3.1
Overview
The component diagram in Figure 1 shows all the components of the SmartenIT
architecture together with an overview of main interfaces. The color-coding of the
components denotes whether a component already exists in external systems (white
components) or is already implemented by SmartenIT (blue components).
Datacenter/NaDa/Cloud Manager
Traffic
Redirector
Load
Balancer
Workflow
Manager
Hypervisor
Overlay
Manager
Inter DC/Cloud/NaDa
communication
E.g. ALTO
Billing/
Accounting
E.g. inter-ALTO
Economics
Analyzer
Traffic Manager
Cloud Traffic Manager
Social Monitor
E.g. Facebook
API
Inter-domain
communication
Fixed/Mobile
Network Traffic Manager
Social Analyzer
SDN Controller
E.g. REST
E.g. Vimeo API
Online
Social Networks
(e.g. Facebook)
Content
Portals (e.g.
Vimeo)
QoS/QoE
Analyzer
Network
Analyzer
Energy
Analyzer
E.g. SNMP,
BGP, Netflow
QoE Monitor
QoS Monitor
E.g. OpenFlow
Topology/
Proximity
Monitor
Energy Monitor
Switching/
Forwarding
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Datacenter
ove1
Datacenter
Overlay
Manager
Traffic
Redirector
Load
Balancer
Workflow
Manager
Hypervisor
S-Box
iscs1
Inter-Sbox
Communication Service
ALTO
Energy
Monitor
eco1
Economics
Analyzer
Traffic Manager
Cloud Traffic Manager
UI
Social Analyzer
ntm1
Fixed/Mobile
Network Traffic Manager
DB
SDN Controller
soc2
Network
Analyzer
QoS/QoE Analyzer
uNaDa
ALTO
DB
UI
Energy
Analyzer
qos1
ove1
qoe1
top2
ene1
top1
ove2
Cloud Traffic
Manager
Overlay Manager
Topology/
Proximity Monitor
QoS/QoE
Analyzer
Network Entity
qoe1
soc3
soc2
ene1
soc1
Energy
Analyzer
Topology/
Proximity
Monitor
Switching/
Forwarding
Energy Monitor
ene1
Switching/
Forwarding
Traffic Manager
Vimeo
QoS Monitor
Topology/
Proximity
Monitor
Social Monitor
Energy Monitor
Energy Monitor
QoE Monitor
QoS Monitor
Social Analyzer
Social Monitor
ntm2
Facebook
ALTO
DB
UI
3.2
Entities/Components/Interfaces
Figure 3 and Table 3-1 present the instantiation of the SmartenIT architecture for the DTM
mechanism. This diagram includes both the architectural components, and the
implementation-specific ones, used to provide support functionalities. In addition, the
implemented interfaces are also defined. The white colored components were not
implemented, but used, as well as the grey colored Network Entity interfaces.
Table 3-1: List of Entities for DTM implementation
Entity
Components
Reference
SBox
Section 5.1
Version 1.0
Page 9 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Section 5.2
ui
sdn1
S-Box
SDN Controller
Interfaces
ssdn
iscs1
ISCS
UI
Sbox-SDN
sdn2
iscs2
ntm3
SDN
Controller
ui
db
DB
Fixed/Mobile Network
Traffic Manager
openflow
netconf
ntm1
ntm2
Economics
Analyzer
Network Entity
Switching/
Forwarding
QoS Analyzer
eca1
snmp
QoS Monitor
Components
Reference
uNaDa
Section 6.1
Section 6.2
Page 10 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
uNaDa
End-User Entity
ctm2
ctm1
Mobile Network
Traffic Manager
Proxy
sa1
om1
db1
om2
Overlay
Manager
Social Analyzer
DB
Social Monitor
UI
UI
DB
om3
Topology
Proximity
Monitor
ui1
vimeo
Vimeo
3.3
System Deployment
In this section, the deployment diagrams of the two integrated and released prototypes,
DTM and RB-HORST, are presented, including the required hardware, processes,
artifacts and protocols.
Diagram in Figure 5 presents the devices, processes and artifacts used, to deploy an
instantiation of the final version of the DTM mechanism.
More specifically, the SBox is deployed on an x64 server with Ubuntu 14.04 [32] installed,
and requires the installation of Java [6] and the Jetty Web server [13], in which the
sbox.war artifact is deployed. The sbox.war contains all the required components (UI and
DB) for the SBox Web application, exposing an HTTP/HTTPS Web interface, accessible
by any Web browser from the administrators PC. In addition, the sbox.jar is the main
executable of the SBox, including all components implementing DTM mechanisms
functionalities. It uses the JBoss Netty NIO framework [33] to expose the ISCS (Inter-SBox
Communication Service) interfaces using a custom SmartenIT-protocol over TCP, and
access the SDN Controllers REST API over HTTP. The Sqlite [14] is also used as the
SBoxs database.
The SDN Controller also requires an x64 server, with Ubuntu 14.04 [32] as its operating
system, requiring Java [6] to be installed. The sdn.jar executes all the Floodlight [23] SDN
Controllers processes, extended with DTM functionalities, and the Interfaces component,
which provides the SBox-SDN communication over HTTP.
Finally, the DTM mechanism requires also network devices, which, depending on the
localization in the network, must be Openflow-compatible [35], support SNMP [34] and
Version 1.0
Page 11 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
NETCONF [19]. QoS Analyzer of SBox retrieves SNMP measurements via SNMP.
NETCONF is used by the Network Traffic Manager to enforce configuration related with
delay tolerant traffic management. The network device also interacts with the exposed
Floodlight SDN Controllers interface using the OpenFlow protocol.
SBox (Server)
Jetty Container
sqlite
HTTP
sbox.war
HTTP
(JSON)
sdn.jar
Floodlight
0.90
jdbc
sbox.jar
TCP
Inter-SBox
Communication
Service
OpenFlow
DB
NETCONF
Traffic Manager
Economic
Analyzer
QoS
Analyzer
Network Device
SNMP
Page 12 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 13 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
4 Implementation Framework
The implementation framework of the SmartenIT project includes all required tools to
design, develop, test and deploy the created software, and the necessary methods and
support platforms to organize and support the implementation process. These tools are
used by the SmartenIT implementation team to implement their respective components,
as well as by prototype integrators to produce a coherent, integrated system. The initial
implementation framework was briefly described in D3.2 [2], mainly involving all the
required tools and technologies used in the DTM prototype development and release. This
chapter presents the final implementation framework for the two integrated and released
prototypes, DTM and RB-HORST, including the tools used, and the final system tree
layout and deployment instructions. Standalone mechanisms implementation framework
will be presented in their respective chapters.
4.1
Tools
The implementation framework tools consist of a specification language for designing the
SmartenIT system, programming languages used to develop components, the libraries
used to support the software development, the tool chain for compiling and building the
source code, the version control platform for archiving source code, the issue tracking
system for organizing and planning the implementation work, as well as tracking and
resolving found bugs and issues, the continuous integration server for automatically
building systems components and the validation testbed created to validate each
releases features and functionalities.
4.1.1 Specification Language
The SmartenIT system is designed and modeled using UML specification language. As
also indicated in D3.2 [2], Microsoft Visio [5] is the key tool for the sequence, class,
architecture and deployment diagrams presented throughout this document.
4.1.2 Programming Languages
The selected programming languages for the SmartenIT entities are presented in Table
4-1.
Table 4-1: Entities programming languages.
Entity
Programming
Language(s)
Development Kit
SBox
Java
SDN Controller
Java
uNaDa
Java
End-User
Java
Page 14 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
4.1.3 Libraries
The external dependencies of each component are presented in Table 4-2.
Table 4-2: Components libraries.
Entity
Component
Libraries
sqlite-jdbc-3.7.2
Database
jdbi 2.53
jackson-annotations 2.3.3
Interfaces
(Inter-SBox and SBox-SDN)
User Interface
SBox
netty 4.0.21.Final
jackson-databind 2.2.3
wiremock 1.46
javax.servlet 3.0
jsf-api, jsf-impl 2.2.6
QoS Analyzer
snmp4j 2.2.5
Economic Analyzer
commons-math3 3.0
netconf-java 1.0.1
slf4j 1.7.7
Commons
logback 1.1.2
commons-configuration 1.10
commons-logging 1.1.3
org.restlet, org.restlet.ext.jackson, org.restlet.ext.simple,
org.restlet.ext.slf4j 2.1-RC1
org.simpleframework 4.1.21
netty 3.2.6.Final
args4j 2.0.16
concurrentlinkedhashmap-lru 1.2
Floodlight
SDN
Controller
jython-standalone 2.5.2
libthrift 0.7.0
easymock 3.1
jsonassert 1.2.3
logback 1.0.0
slf4j 1.6.4
Interfaces
Database
uNaDa
User Interface
jackson-databind 2.2.3
jsonassert 1.2.3
h2 1.4.184
jdbi 2.53
javax.servlet 3.0
jsf-api, jsf-impl 2.2.6
Version 1.0
Page 15 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
restfb 1.6.16
Social Monitor
httpclient 4.3.5
simplelatlng RELEASE
tomp2p-all 5.0-Alpha24
Overlay Manager
jackson-databind 2.2.3
com.maxmind.geoip2 2.1.0
netty 4.0.21.Final
Cache Manager
vget 1.1.23
uNaDa-end-user inteface
Commons
logback 1.1.2
commons-configuration 1.10
commons-logging 1.1.3
gson 2.3.1
End-User
App
android 4.1.1.4
facebook-sdk
support-v4 r7
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
4.2
Procedures
A set of common software prototype development procedures was defined and agreed on
by the involved partners in order to assure a smooth and efficient prototype development
process and successful delivery of software in incremental releases.
This section includes information about the system release and development processes
(both represented in form of cycles) implemented in the project. Project partners played
specific roles in these processes. Specific types of meetings where organized throughout
the development process.
4.2.1 System Release Process
The SmartenIT system release process followed the agile development model and was
divided into (approximately) 2 month release cycles. Each release cycle (Figure 7)
consisted of:
Feature planning, where the consortium identified and prioritized features and tasks
for next release;
Development of the required features by the responsible partners;
Integration of the developed components and basic sanity tests;
System validation, where the developed system was tested in the testbed for the
required release features;
System release and preparation of system release report.
Version 1.0
Page 17 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Responsibilities
Responsible
Partner
Responsible
Person
ICOM
Spiros Spirou
Tools
Administrator
PSNC
(&ICOM)
Jakub Gutkowski
Page 18 of 191
ukasz opatowski
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Release Master
George Petropoulos
George Petropoulos
ukasz opatowski
UZH, TUD,
AGH, ICOM,
ALBLF,
PSNC
As appointed by
each Partner.
4.2.4 Meetings
In each release cycle defined in Section 4.2.1, three types of the meetings took place:
feature planning meeting, weekly meeting and release review meeting. For more details
please see Section 5.2.4 in D3.2 [2].
4.3
D3.2 [2] presented the initial system tree layout of the SmartenIT source code, including
only the DTM entities and components. This section will define the final system tree
layout, including the RB-HORST entities and components.
The SmartenIT source code is organized as a Maven [8] multi-module project. Each entity
(sbox, sdn, unada, enduser, network, dist) is also a Maven multi-module project,
which can be packaged as a single jar with the use of a certain maven plug-in (mavenassembly-plugin). Each entitys component (e.g. main, interfaces) is a Maven module,
which may be divided into further maven modules or packages, based on component
owners preferences. In the defined system tree, certain components were divided into
sub-modules to isolate developers work, as well as avoid possible dependencies
conflicts.
The final SmartenIT system tree is presented below. Parentheses define the type of
packaging, indicating whether a module either consists of other sub-modules (pom
packaging), or is packaged as a (a) Java archive (jar), which aggregates all classes and
configuration files into one single executable, (b) a Web application archive (war) which
compresses all classes, Web pages, and resources into one executable which can be
deployed to any Web server, (c) an Android library (aar), (d) an Android archive (apk),
which compresses all classes, resources and files, which can be installed in an Android
device.
smartenit (pom)
o sbox (pom)
main (jar)
interfaces (pom)
inter-sbox (pom)
Version 1.0
Page 19 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
o client (jar)
o server (jar)
sbox-sdn (jar)
db (pom)
dao (jar)
dto (jar)
web (war)
ntm (jar)
qoa (jar)
eca (jar)
commons (jar)
o sdn (pom)
floodlight-0.90 (jar)
interfaces (pom)
sbox-sdn (jar)
o unada (pom)
interfaces (pom)
unada-enduser (jar)
db
dao (jar)
dto (jar)
ctm (pom)
cache (jar)
tpm (jar)
om (jar)
sa (jar)
web (war)
sm (jar)
commons (jar)
o enduser (pom)
app (pom)
facebook (aar)
SIT (apk)
Page 20 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
SIT-TEST (apk)
o network (pom)
o dist (pom)
The system can be built with the use of the following command at the smartenit base
directory:
mvn clean install
The aforementioned command, cleans all previously generated artifacts, compiles,
packages and installs all modules, as well as runs all test cases. To avoid executing all
test cases, the user may execute the following command:
mvn clean install -DskipTests
All the aforementioned commands also generate the SmartenIT software release artifact,
which is the smartenit-${project.version}.zip, created at the dist/target
directory.
The final release which implements the two integrated and released prototypes, DTM and
RB-HORST, the zip file contains the following executables and configuration files per
entity:
sbox
o main.jar: The main executable of the SBox application, which initializes all
modules, and executes the DTM mechanism.
o web.war: Its the war file, deployed to the Jetty Web server.
o sbox.properties: It includes all the required SBox configuration
parameters.
o logback.xml: It defines the logging level of the SBox application.
o realm.properties, jetty.xml: Configuration files that override default
Jetty configuration.
sdn
o floodlight-0.90.jar: The executable of the Floodlight SDN controller,
extended with SmartenIT functionality.
unada
o unada.war: The executable of the uNaDa software, which is deployed in
the Jetty Web server and executes the RB-HORST mechanism.
o unada.sh: A script that automatically starts the uNaDa processes.
o vimeo_proxy.py: A script used during initialization of mitmproxy software
for proxying and filtering end-user requests.
enduser:
o sit-app.apk: The HORST Android application, which will be deployed in
an Android smartphone or tablet.
Version 1.0
Page 21 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
4.4
Open-Source releases
The SmartenIT consortium has decided to release its major releases as open-source, in
order to be accessible by academic and research communities. For that purpose, a Github
[10] account and a repository were created (see Figure 9), available at [39]. The source
code is available under Apache v2 license [18].
4.5
Deployment Instructions
This section will provide the instructions to deploy the DTM and RB-HORST executables
to the targeted hardware.
The prerequisites to deploy and run the DTM executables are:
Oracle JDK 7 update 51 (Configure JAVA_HOME and PATH) [6],
Jetty 9.2.3.v20140905 (Configure JETTY_HOME and PATH) [13],
Sqlite 3 [14].
To deploy and run the SBox entity, check the following instructions:
Page 22 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
1. Copy (and replace) the jetty.xml and realm.properties included in jetty-conf folder to
the $JETTY_HOME/etc directory: cp sbox/web/jetty-conf/jetty.xml
$JETTY_HOME/etc/jetty.xml;
cp
sbox/web/jettyconf/realm.properties $JETTY_HOME/etc/realm.properties
2. Copy the provided sbox.war file to the $JETTY_HOME/webapps directory: cp
sbox/web/sbox.war $JETTY_HOME/webapps/sbox.war
3. Initialize jetty ($JETTY_HOME/
module=https
directory):
java
-jar
start.jar
--
to
$HOME
directory:
cp
vimeo_proxy.py
cp
unada.war
4. Add a relevant iptables rule to proxy all HTTPs requests to the mitmproxy: sudo
iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 443 -j
REDIRECT --to-port 8080
5. Initialize Jetty ($JETTY_HOME/ directory):
etc/jetty.xml -Djetty.port=8181
java
-jar
start.jar
Page 23 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
5.1
SBox
SBox main functionalities comprise retrieving and aggregating SNMP measurements from
the network entities, calculating and distributing compensation and reference vectors,
delay-tolerant traffic management and finally, configuring the remote SDN Controller.
It includes certain components that are required to store and access DTM parameters
(Database and User Interface), retrieve and aggregate monitoring data from the network
devices (Quality of Service Analyzer), perform necessary calculations (Network Traffic
Manager, Economic Analyzer) and also interact with remote SBoxes and the SDN
Controller (Inter-SBox and SBox-SDN Communication Services).
Each components functionality, interfaces, design and finally unit tests are further
described in the following sections.
5.1.1 Quality of Service Analyzer
The Quality of Service (QoS) Analyzer component is responsible for periodical execution
of the following actions:
collection of incoming traffic counter values from all inter-domain links from a set of
configured BG routers;
collection of incoming traffic counter values from all tunnels from a set of configured
DA or BG routers (depending on which router given tunnel is terminated);
calculation of link traffic vector (X vector) and a list of tunnel traffic vectors (Z
vector) for each local AS;
distribution of information about new traffic vectors to Economic Analyzer and
Network Traffic Manager components;
Page 24 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 25 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
vector and a list of tunnel traffic vectors calculated after reporting period (or
EA reporting period).
SNMPTrafficCollector: Class used to schedule traffic counter collection tasks
and calculating traffic vectors once all counters are read after each reporting period
(or DTM reporting period). Calculated vectors are provided to DTMQosAnalyzer for
further distribution.
o public SNMPTrafficCollector(DTMQosAnalyzer analyzer): The
constructor with argument: instance of the DTMQosAnalyzer which should
be updated with calculated traffic vectors;
o public
void
configure(List<AS>
systems,
List<DC2DCCommunication> communications): Populates helper
data structures with links and tunnels that will be monitored. Triggers
collection of SNMP OID numbers for links and tunnels counters;
o public void scheduleMonitoringTasks(): Schedules counters
values collection tasks according to configured time schedule parameters;
o public
void
notifyNewCounterValues(int
asNumber,
CounterValues counterValues): Calls MonitoringDataProcessor to
calculate new link traffic vectors with data fetched from counters. Updates
DTMQosAnalyzer with the new link and tunnel traffic vectors;
o public MonitoredLinksInventory getMonitoredLinks(): Getter
method for monitored links inventory;
o public MonitoredTunnelsInventory getMonitoredTunnels():
Getter method for monitored tunnels inventory.
TrafficCollectorTask: Task class responsible for collecting counter values
from BG and DA routers. Implements Runnable interface.
o public
TrafficCollectorTask(SNMPTrafficCollector
trafficCollector, int asNumber): The constructor with arguments:
instance of the SNMPTrafficCollector from which information about
monitored links and tunnels will be read and which will be notified once all
counters are read; and number of the AS for which this task is launched
(relevant if SBox manages more than one AS);
o public void run(): Method launched when thread is started.
Responsible for fetching data from router counters and updating
SNMPTrafficCollector with collected data.
CounterCollectorThread: Thread class responsible for collecting counter
values from specific interfaces of a given router. Implements Callable interface.
o public
CounterCollectorThread(List<Link>
links,
List<Tunnel> tunnels,
BGRouter bgRouter): The constructor
with arguments to be used when monitoring a BG router;
o public
CounterCollectorThread(List<Tunnel>
tunnels,
DARouter daRouter): The constructor with arguments to be used when
monitoring a DA router;
Page 26 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Page 27 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
o public
List<ZVector>
calculateZVectors(int
asNumber,
CounterValues
lastValues,
CounterValues
newValues):
Calculates a list of tunnel traffic vectors by means of ZVectorCalculator class
based on counter values for tunnels in given AS.
o public ZVector aggregateZVectors(List<ZVector> zVectors):
Aggregates vector values from given tunnel traffic vectors and returns a
single Z vector.
VectorCalculator: Base abstract class for traffic vector calculators comprising
data structure used to store counter values from previous reporting periods.
o protected
CounterValues
getOrCreateLatestVectorValues
(int asNumber): Returns stored instance of CounterValues for given AS if
exists. If not, creates and returns new instance.
XVectorCalculator: Implements link traffic vector calculation based on current
counter values collected from links in given AS and previous values of those
counters. Extends VectorCalculator class.
o public
XVector
calculateXVector(int
asNumber,
CounterValues lastValues, CounterValues newValues): Method
calculates new link traffic vector for given AS. It should be launched after
each reporting period.
ZVectorCalculator: Implements tunnel traffic vector calculation based on
current counter values collected from tunnels in given AS and previous values of
those counters. Extends VectorCalculator class.
o public
ZVectorCalculator(MonitoredTunnelsInventory
monitoredTunnels): The constructor with all monitored tunnels as an
argument;
o public
List<ZVector>
calculateZVectors(int
asNumber,
CounterValues lastValues, CounterValues newValues): Method
calculates new set of tunnel traffic vectors for given AS. Each ZVector class
object corresponds to a single DC2DCCommunication. It should be launched
after each reporting period.
CounterValues: Data container class used to store counter values (as 64bit
numbers) on per LinkID and per TunnelID basis.
o public
void
storeCounterValue(LinkID
linkID,
counterValue): Stores counter value for given link in the structure;
long
Page 28 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 29 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
daRouter):
o public
List<Tunnel>
getTunnels(BGRouter
Retrieves all monitored tunnels from given BG router;
bgRouter):
Page 30 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 31 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
o public
ExtendedSNMPTrafficCollector(DTMQosAnalyzer
analyzer): The constructor with arguments;
o public
boolean
configure(List<AS>
systems,
List<DC2DCCommunication> communications): Populates helper
data structures with links and tunnels that will be monitored. Triggers
collection of SNMP OID numbers for links and tunnels counters;
o public void scheduleMonitoringTasks(): Schedules counters
values collection task according to configured time schedule parameters;
o public
void
notifyNewCounterValues(int
asNumber,
CounterValues counterValues): Calls MonitoringDataProcessor class
to calculate new link traffic vectors with data fetched from counters. Updates
DTMQosAnalyzer class with the new link and tunnel traffic vectors. Extended
to enable writing traffic details to file.
ExtendedTrafficCollectorTask:
enable writing traffic details to file.
Extends
TrafficCollectorTask
class
to
o public void run(): Scheduled task responsible for fetching data from
router counters and updating SNMPTrafficCollector class with collected data.
ExtendedCounterCollectorThread: Extends CounterCollectorThread class to
enable writing traffic details to file.
o public ExtendedCounterCollectorThread(List<Link> links,
List<Tunnel> tunnels, BGRouter bgRouter): The constructor with
arguments to be used when monitoring BG router;
o public
ExtendedCounterCollectorThread(List<Tunnel>
tunnelsByDARouter, DARouter daRouter): The constructor with
arguments to be used when monitoring DA router.
ExtendedCounterValues: Extends CounterValues class to enable writing traffic
details to file.
o public
void
storeReceivedPackets(LinkID
linkID,
ReceivedPackets packetsInfo): Method used to store the number of
received packets on link;
o public
void
storeReceivedPackets(TunnelID
tunnelID,
ReceivedPackets packetsInfo): Method used to store the number of
received packets on tunnel;
o public
ExtendedCounterValues
calculateDifference
(ExtendedCounterValues
toBeSubtracted): Method used to
calculate difference between stored and provided values for all links and
tunnels;
o p Map<LinkID, ReceivedPackets> getLinkReceivedPackets():
Returns map with number of packets for all links;
o public
Map<TunnelID,
ReceivedPackets>
getTunnelReceivedPackets(): Returns map with number of packets for
all tunnels.
Page 32 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
multicast,
Page 33 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Sequence diagram in Figure 12 presents how the Quality of Service Analyzer interacts
with other SBox components, i.e. the Economic Analyzer and Network Traffic Manager.
After the TrafficCollectorTask finishes its execution, meaning that all counter values
are read from monitored routers, it passes new counter values to the
SNMPTrafficCollector which in turn instructs MonitoringDataProcessor to
calculate new X and Z vectors. Later on the QoSAnalyzer is used to pass information
about those new vectors to proper EconomicAnalyzer and DTMTrafficManager
instances.
contains
following
test
methods
for
o shouldCalculatXVextor()
Page 34 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
o shouldCalculaZXVextors()
o shouldUpdateXVector()
o shouldUpdateZVectors()
o shouldTriggerFiveScheduledTasks()
o shouldPrepareLogForScheduleMonitoringTasks()
o shouldPrepareErrorForAsNumbersValidation()
o shouldCalculateInitialDelay()
TrafficCollectorTaskTest
TrafficCollectorTask class:
contains
following
test
method
for
o shouldNotifyNewCounterValues()
TrafficCollectorTaskFailureScenarioTest contains following test method
for TrafficCollectorTask class:
o shouldMaxFetchingTimeExpire()
BGRouterCounterCollectorThreadTest contains following test methods for
collecting counter values from specific interfaces of BG routers:
o shouldParseCounter()
o shouldThrowExceptionForParseCounter()
o shouldThrowExceptionBecauseOfLackOfBGRouter()
o shouldThrowExceptionBecauseOfLackOfLinks()
o shouldCalculateCounterValues()
DARouterCounterCollectorThreadTest contains following test methods for
collecting counter values from specific interfaces of DA routers:
o shouldParseCounter()
o shouldThrowExceptionForParseCounter()
o shouldThrowExceptionBecauseOfLackOfDARouter()
o shouldThrowExceptionBecauseOfLackOfTunnels()
o shouldCalculateCounterValues()
SNMPWrapperTest contains following test methods for SNMP4J library wrapper
class named SNMPWrapper:
o shouldThrowExceptionForTimedOutForSnmpget()
o shouldThrowExceptionForNullResonseForSnmpget()
o shouldThrowExceptionBecauseOfErrorForSnmpget()
o shouldStarClient()
o shouldStopClient()
o shouldNotStopClient()
o shouldPrepareTargetForTheAddressWithPort()
o shouldThrowExceptionBecauseOfSnmpSendException()
Version 1.0
Page 35 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
o shouldThrowExceptionBecauseOfLackOfSnmpClient()
SNMPOIDCollectorTest contains following test methods for SNMPOIDCollector
class:
o shouldParseInterfaceNumber()
o shouldSetOutboundInterfaceCounterOID()
o shouldSetInboundInterfaceCounterOID()
o shouldCollectOIDsForLinks()
o shouldCollectOIDsForTunnels()
o shouldThrowExceptionBecauseOfLackOfSnmpWalkResponse()
o shouldThrowExceptionBecauseOfLackOfPhysicalInterfaceName
()
XVectorCalculationTest contains following test methods for link traffic vector
calculation logic implemented by XVectorCalculator class and triggered by
MonitoringDataProcessor class:
o shouldCalculateFirstXVector()
o shouldCalculateSecondXVector()
o shouldCalculateLaterXVector()
o shouldCalculateXVectorEvenIfCounterValueIsLessThanZero()
o shouldCalculateXVectorWithLastXVector()
ZVectorCalculationTest contains following test methods for tunnel traffic
vector calculation logic implemented by ZVectorCalculator class and triggered by
MonitoringDataProcessor class:
o shouldCalculateFirstZVectors()
o shouldCalculateSecondRoundOfZVectors()
o shouldCalculateZVectorsWithLastZVectors()
ZVectorsAggregationTest
aggregation:
o shouldAggregateZVectors()
CounterValuesTest contains following test methods for store and get methods
of CounterValue class:
o shouldStoreOneLinkAndTunnelEntry()
o shouldStoreTwoEntries()
o shouldReplaceOneOfTwoEntries()
o shouldValidateTwoCounterValueInstancesAsEqual()
o shouldAddCounterValueToExistingEntry()
o shouldCreateNewEntryWhenAddingCounterValue()
o shouldConverToListOfLocalVectorValues()
Page 36 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
shouldFetchDataForTunnels()
contains
o shoulNotifyNewCounterValuesFor95thPercentile()
ExtendedCounterValuesTest
ExtendedCounterValues class:
contains
following
test
methods
for
o shouldStoreOneLinkAndTunnelEntry()
o shouldReplaceOneOfTwoEntries()
o shouldCalculateDifference()
FileManagerTest contains following test method for operations allowing file
updates:
o shouldCreateFile()
LogToFileTest contains following test method for traffic details log generation
and storage to file:
o shouldLogToFile()
LogToFileWithBGRouterTunnelsTest contains following test method for
traffic details log generation in case when tunnels are terminated at BG routers:
o shouldLogToFile()
TrafficDetailsWriteToFileTest contains following test method for traffic
details log generation:
o shouldWriteTrafficDetailsToFile()
5.1.2 Network Traffic Manager
The main functionalities provided by the Network Traffic Manager (NTM) can be grouped
into two sets. When NTM is running on SBox deployed in AS that receives data traffic
Version 1.0
Page 37 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Page 38 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
o Thrown exceptions:
public
void
updateRVector(LocalRVector
rVector)
throws
IllegalArgumentException: Method called by Economic Analyzer to update
information about reference vector calculated every accounting period.
o Input parameters:
o Thrown exceptions:
public
void
updateLinksWithRVectorAchieved(int
asNumber,
List<LinkID> links) throws IllegalArgumentException: Method
called by Economic Analyzer to update information about inter-domain links in
given AS for which the reference vector has been already achieved in the current
accounting period.
o Input parameters:
o Thrown exceptions:
The
remaining
two
interface
methods
are
implemented
by
DTMRemoteVectorsReceiver class and are called by Inter-SBox Communication
Service server component.
public
void
receive(CVector
cVector)
throws
IllegalArgumentException: Method called to update information about
compensation vector calculated every reporting period in remote SBox.
o Input parameters:
o Thrown exceptions:
o Thrown exceptions:
Version 1.0
Page 39 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
5.1.2.2 Design
The NTM component implementation consists of 25 classes. Its main functionalities fall
into two areas related with reacting on incoming traffic volumes by providing compensation
and reference vectors to remote SBoxes and adapting BG routers configuration for delay
tolerant traffic handling as well as outgoing traffic distribution by means of SDN based on
received compensation and reference vectors. These functionalities are implemented by
disjoint sets of classes depicted in Figure 14 and Figure 19, respectively.
In Figure 13 a top level view on the NTM design is presented with classes that are used by
other components of the SBox:
NetworkTrafficManager: Main class of the Network Traffic Manager
component. Represents an entry point for the NTM component common for all the
implemented traffic management mechanisms. Manages the lifecycle of the major
NTM internal objects that implement traffic management mechanisms interfaces
and logic.
o public void initialize(): Method that should be called in order to
initialize the NTM component (e.g. read required data from data base) in
default DTM mode.
o public
void
initialize(NetworkTrafficManagerDTMMode
mode): Method that should be called in order to initialize the component in
provided NetworkTrafficManagerDTMMode mode.
o public DTMTrafficManager getDtmTrafficManager(): Returns an
instance of DTMTrafficManager class that should be used by QoS Analyzer
and Economic Analyzer to provide updated vectors to DTM logic
implemented as part of the Network Traffic Manager.
o public DTMRemoteVectorsReceiver getDtmVectorsReceiver():
Returns an instance of DTMRemoteVectorsReceiver class that should be
used by Inter-SBox Communication Service server to provide received
remote vectors to DTM logic implemented as part of the Network Traffic
Manager.
NetworkTrafficManagerDTMMode: Enumeration class that represents three
DTM running modes:
o TRAFFIC_SENDER: DTM instance is run on SBox that manages AS(s) that
only sends traffic to remote ASs. In this case some of the modules do not
need to be initialized.
o TRAFFIC_RECEIVER: DTM instance is run on SBox that manages AS(s)
that only receives traffic from remote ASs. In this case some of the modules
do not need to be initialized.
o TRAFFIC_SENDER_AND_RECEIVER: General case enabled by default.
DTMTrafficManager: Implements DTM external interface methods that are used
by QoS Analyzer and Economic Analyzer to update information about link traffic
Page 40 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 41 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Implements
compensation
vector
values
o public
CVectorValuesCalculator(XVector
xVector,
LocalRVector rVector): The constructor with arguments: link traffic
vector and reference vector to be used during calculation.
o public
List<LocalVectorValue>
compensation vector values.
calculate():
Calculates
Version 1.0
Page 43 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Page 44 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
o public
boolean
isCVectorPreparedByController(int
asNumber): Checks if there are already some links in given AS for which
the R vector is already achieved. This would mean that the compensation
vector for given AS should be calculated by the CVectorUpdateController.
o public CVector prepareCVector(int asNumber, LocalRVector
rVector): Calculates and returns proper compensation vector to be used
for given AS. This method should be called if at least one link in given AS
has the reference vector already achieved.
o public void updateLinksWithRVectorAchieved(int asNumber,
List<LinkID> links): Updates the list of links with R vector achieved in
given AS.
DelayTolerantTrafficManager: Uses NetConfWrapper class to execute
operations related with delay tolerant traffic management requested by the
DTMTrafficManager.
o public
void
updatePolicerLimitsOnLinks(LocalRVector
rVector): Sets bandwidth limits for hierarchical policer to be used during
next accounting period. Target router and interface details with new
bandwidth limit values are retrieved from the given reference vector.
o public void deactivateFiltersOnGivenLinks(List<LinkID>
links): Updates locally stored list of links for which filters should be
deactivated and triggers proper operations on routers using
NetConfWrapper.
o public void activateFiltersOnAllLinks(): Activates filters on all
links on which they have been previously deactivated.
NetConfWrapper: Implements router configuration operations by means of
NETCONF protocol.
o public static NetConfWrapper build(BGRouter bgRouter):
Returns an instance of NetConfWrapper configured based on the provided
BGRouter class instance.
o public boolean updatePolicerConfig(String interfaceName,
long bandwidthLimit): Redirects the operation execution to another
method providing default value of burst size limit.
o public boolean updatePolicerConfig(String interfaceName,
long
bandwidthLimit,
long
burstSizeLimit):
Updates
hierarchical policer configuration on an interface with given values of
bandwidth limit and burst size limit.
o public
boolean
activateHierarchicalFilter(String
interfaceName): Activates hierarchical filter on given router interface.
o public
boolean
deactivateHierarchicalFilter(String
interfaceName): Deactivates hierarchical filter on given router interface.
RemoteSBoxContainer: Data container class used to store SBox objects
representing SBoxes in remote ASs from which traffic is sent to the local AS. Those
SBoxes are grouped on per local AS number basis.
Version 1.0
Page 45 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Page 46 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 47 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Figure 15: NTM sequence diagram after reporting period: traffic receiver side.
Figure 16: NTM sequence diagram after reporting period: traffic receiver side (R vector
achieved on a link).
After
accounting
period
elapses
(as
presented
in
Figure
17)
the
EconomicAnalyzerInternal updates DTMTrafficManager with a new R vector
value. In turn DTMTrafficManager requests DelayTolerantTrafficManager to
update policer limits on BG router interfaces corresponding to the inter-domain links with
new values calculated from the reference vector that will be used during next accounting
period. Moreover hierarchical filters on all those interfaces should be activated since they
Page 48 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
may have been deactivated during the last accounting period. The NetConfWrapper is
used to execute these requests on the routers using the NETCONF protocol [19]. This
also triggers the execution of CRVectorProcessingThread which calculates a new C
vector and sends both newly calculated C vector and received R vector to a remote SBox.
Figure 17: NTM sequence diagram after accounting period: traffic receiver side
During the accounting period the EconomicAnalyzerInternal may also update the
DTMTrafficManager with a list of inter-domain links on which the reference vector is
already achieved. This triggers appropriate actions presented in Figure 18.
DTMTrafficManager requests DelayTolerantTrafficManager to deactivate
hierarchical filter for specific links what is later on executed by the NetConfWrapper.
Information about the links is also sent to the CVectorUpdateController.
Figure 18: NTM sequence diagram: update of list of links with R vector achieved.
In Figure 19, a partial NTM class diagram is presented with the following classes
(DTMRemoteVectorsReceiver class was already described in the previous paragraph):
SDNControllerConfigBuilder: Prepares ConfigData class object specific for
given SDN controller based on DC2DCCommunication objects stored in the data
base.
Version 1.0
Page 49 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
o public
static
ConfigData
prepareConfig(SDNController
controller): Method prepares configuration data for given SDN
controller.
SDNConfigPusher: Implements methods that forward requests for SDN controller
vector information update or configuration to the SboxSdnClient component.
o public SDNConfigPusher(Set<SDNController> controllers):
The constructor with arguments: set of SDN controllers to which subsequent
requests called on this object will be directed.
o public void updateVectorInfo(CVector cVector): Method uses
SboxSdnClient to update compensation vector information in selected SDN
controllers.
o public void updateVectorInfo(CVector cVector, RVector
rVector): Method uses SboxSdnClient to update compensation and
reference vectors information in selected SDN controllers.
o public void initializeSDNController(ConfigData data):
Method uses SboxSdnClient to initialize selected SDN controllers with
configuration data.
SDNClientFactory: Static factory class used by the SDNConfigPusher to obtain
instances of SboxSdnClient to be used for communication with remote SDN
controllers.
o public static SboxSdnClient getInstance(): Method returns an
instance of the SboxSdnClient according to currently enabled client creation
mode. By default the so called unique client creation mode is disabled.
ThetaCoefficientHandler: Implements logic for manipulating compensation
vector values based on theta coefficients.
o public CVector normalizeCVector(CVector cVector, RVector
rVector): Method normalizes compensation vector values based on theta
coefficients provided as part of reference vector for given AS.
SDNControllerContainer: Data container class used to store information about
SDN controllers that manage DA routers on which tunnels were configured towards
AS with given AS number.
o public void populateControllersFromDB(): Used to initialize
internal structures based on data stored in data base.
o pub List<SDNController> getControllersByRemoteASNumber
(int asNumber): Returns a list of SDN controllers that manage DA
routers with tunnels towards given remote AS.
o public List<SDNController> getAllControllers(): Returns a list
of all SDN controllers in local ASs.
DAOFactory: Static factory class used to obtain an instance of specific DAO class.
Contains a set of static methods that return locally stored instances of DAO
classes. Following DAO classes are supported: DC2DCCommunicationDAO,
Page 50 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
SystemControlParametersDAO,
LinkDAO.
TimeScheduleParametersDAO,
ASDAO
and
Version 1.0
Page 51 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Following is the first, primary compenstation vector calculation algorithm presented in form
of a pseudocode. This algorithm uses as input information about current, aggregated link
traffic vector and reference vector. It is used in the case when on none of the links in a
given AS the reference vector is yet achieved.
factor=(xVector(1)+xVector(2))/(rVector(1)+rVector(2));
for(each link) {
cVector(k)=factor*rVector(k)xVector(k);
}
5.1.2.2.2
The second algorithm presented below is used only in specific situation in which at some
time during the accounting period the reference vector is already achieved on one or both
links as indicated by the Economic Analyzer. This algorithm is used only in the case when
95th percentile based traffic charging rule is enabled. It uses information about either
reference vector or previous compensation vector to direct all the traffic to a single link on
which the reference vector is already achieved or to distribute the traffic equally if vector is
already achieved on both links.
// flagSamplesBelowR information received from Economic Analyzer; if equal to
1 for given link (link ids: 0 or 1) indicates that on this link the R vector is
achieved;
// flagSamplesBelowRActivated information stored locally; if equal to 1 for
given link (link ids: 0 or 1) indicates that information about the R vector
Page 52 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
achieved on this links was already received and this link is already treated
accordingly;
if(flagSamplesBelowRActivated[1]==0 && flagSamplesBelowR[1]==1) {
cVector(1)=100*(rVector(1)+rVector(2));
cVector(2)=-100*(rVector(1)+rVector(2));
flagSamplesBelowRActivated[1]=1;
}
else if (flagSamplesBelowRActivated[2]==0 && flagSamplesBelowR[2]==1) {
cVector(1)=-100*(rVector(1)+rVector(2));
cVector(2)=100*(rVector(1)-rVector(2));
flagSamplesBelowRActivated[2]=1;
}
else if(flagSamplesBelowRActivated[1]==1 && flagSamplesBelowRActivated[2]==1) {
cVector[1]=-previousCVector[1];
cVector[2]=-previousCVector[2];
}
5.1.2.3 Tests
In order to test the DTM features provided by the NTM component a set of 18 test classes
was implemented comprising JUnit [19] tests for not only particular single methods or
group of methods but also simple workflows internal to NTM component. Mockito library
[21] was used in several cases to mock components external to NTM, e.g. Database,
SBox-SDN Communication Service and Inter-SBox Communication Service.
The implemented test classes with test methods are listed below (please note that all
provided names of test methods are preceded with public void in the source code).
Test classes are grouped in three packages.
There is one class in the eu.smartenit.sbox.ntm package.
NetworkTrafficManagerDTMTest contains following test methods for
NetworkTrafficManager class initialization of DTM modules in three modes as
specified in NetworkTrafficManagerDTMMode enum class:
o shouldCreateAndInitializeNTMInSenderOnlyMode()
o shouldCreateAndInitializeNTMInReceiverOnlyMode()
o shouldCreateAndInitializeNTMInGeneralMode()
o shouldCreateAndInitializeNTMInDefaultMode()
There are 13 test classes in eu.smartenit.sbox.ntm.dtm.receiver package.
These classes include tests of DTM features running in the NTM in the SBox deployed in
the traffic receiving domain.
Version 1.0
Page 53 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
contains following
calculation
logic
test methods
implemented
for
in
o shouldCalculateFromTwoDimentionVectors()
o shouldCalculateWithOneXVectorValueZero()
Page 54 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
o shouldCalculateWithEqualRAndXVectorValuesRatio()
o shouldCalculateWithAllXVectorValuesZero()
o shouldCalculateWithXVectorEqualRVector()
o shouldCalculateFromFiveDimentionVectors()
CVectorConstructorTest contains following test methods for compensation
vector construction from values calculated by the CVectorValuesCalculator class:
o shouldConstructCVector()
o shouldThrowIAESinceXVectorNull()
o shouldThrowIAESinceRVectorNull()
o shouldThrowIAESinceBothVectorsNull()
o shouldThrowIAESinceInvalidVectorSize()
o shouldThrowIAESinceVectorSizeBelowTwo()
o shouldThrowIAESinceInvalidLinkIDs()
CVectorUpdateControllerTest
compensation
vector
updates
CVectorUpdateController class:
for
in
o shouldUpdateAfterCompensationPeriod()
o shouldUpdateFirstCVector()
o shouldUpdateOnThresholdExceeded()
o shouldNotUpdateThresholdNotExceeded()
o shouldUpdateControllerNotActivated()
DelayTolerantTrafficManagementTest contains following test methods for
functionalities related with delay tolerant traffic management:
o shouldTriggerPolicerConfUpdates()
o shouldNotTriggerPolicerConfUpdates()
o shouldThrowExceptionOnNullListOfLinks()
o shouldDeactivateAndActivateFiltersOnGivenLinks()
LinksWithRVectorAchievedHandlingTest contains following test methods
for functionalities related with handling links with reference vector achieved:
o shouldReturnProperStatusOfCVectorPreparation()
o shouldReturnPreparedCVector()
o shouldThrowExceptionOnInvalidASNumber()
o shouldThrowExceptionOnRVectorNull()
o shouldThrowExceptionOnInvalidRVector()
o shouldThrowExceptionOnInvalidASNotFound()
o shouldThrowExceptionOnInvalidASWithZeroLinks()
Version 1.0
Page 55 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Page 56 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
o shouldThrowExceptionOnInvalidCRVectorASNumberArgument()
o shouldThrowExceptionOnInvalidCVectorValuesListArgument()
o shouldThrowExceptionOnInvalidCRVectorValuesListArgument(
)
SDNControllerContainerTest contains following test method for store and
load methods of SDNControllerContainer class:
o shouldPopulateContainerStructures()
SDNControllersConfigTest contains following test methods for the SDN
Controllers configuration process launched during DTMRemoteVectorsReceiver
class initialization:
o shouldInitControllers()
o shouldConstructProperConfigData()
ThetaCoefficientHandlerTest contains following test methods for the logic
implemented in ThetaCoefficientHandler class:
o shouldReturnTheSameCVectorIfThetaNull()
o shouldReturnTheSameCVectorIfThetaNotNull()
5.1.3 Economic Analyzer
The Economic Analyzer (EA) component works out the strategy for inbound traffic
distribution between inter-domain links for the next accounting period. This distribution is
represented in a compact form of the reference vector. EA creates a cost map for traffic at
the end of the accounting period and predicts the possible optimal traffic pattern (the
expected traffic amount on each inter-domain link which minimizes the total cost of
transfer via these links). This information forms the basis for the reference vector
calculation. Each reference vector component represents expected traffic amount on a
particular inter-domain link. Each time a new reference vector is calculated it is sent to the
NTM for calculation of compensation vectors and distribution to remote domains in which
sources of traffic are located.
The EA receives information about the amount of traffic transmitted through each interdomain link during the accounting period from the QoS Analyzer (which collects values of
appropriate traffic counters from BG and DA routers) in the form of link traffic and tunnel
traffic vectors.
The EA component supports two traffic charging rules defined in the system, namely the
total traffic volume based rule and the 95th percentile rule. Depending on the charging
rule, the traffic samples are received from QoS Analyzer at different intervals. Typically
when total traffic volume based rule is enabled traffic vectors are received every 30
seconds. On the other hand, in the case of 95 th percentile rule, traffic updates are
received every 5 minutes what corresponds to the 95 th traffic sample collection time. Also
according to the currently enabled charging rule traffic samples are processed,
accumulated and stored differently.
If the 95th percentile charging rule is enabled, during accounting period EA counts for
each link traffic samples with values less than the value of reference vector component for
Version 1.0
Page 57 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
that link. If the number of such samples reaches 95% of all samples collected during an
accounting period it is certain that the reference vector for given link will be achieved in
current period. This information is sent to the NTM so that compensation vectors are
calculated differently since the whole traffic can from now on be sent to the given link.
5.1.3.1 Interfaces
The Economic Analyzer provides one interface method to be called by other SBox
component. The following method is implemented by the EconomicAnalyzer class.
public void updateXZVectors(XVector xVector, List<ZVector>
zVectors): Method called by QoS Analyzer to update information about link traffic
vector and tunnel traffic vectors.
o Input parameters:
5.1.3.2 Design
The Economic Analyzer consists of 10 top level classes. Figure 21 presents all the
involved classes with selected relationships between them.
Following is the description of those classes:
EconomicAnalyzer: Main class of the Economic Analyzer. Implements external
interface method used by the QoS Analyzer to update traffic information. Uses
EconomicAnalyzerInternal to handle traffic samples and trigger actions within a
single Autonomous System.
o EconomicAnalyzer(DTMTrafficManager
dtmTrafficManager):
The constructor with arguments. Takes in the DTM Traffic manager instance
as the input variable in order to proceed to the following methods eventually.
o void
updateXZVectors(XVector
X_in,
List
<ZVector>
Z_in_list): Economic Analyzer external interface method used to update
information about link traffic vector and tunnel traffic vectors.
EconomicAnalyzerInternal: Class that implements Economic Analyzer
operations within a single Autonomous System.
o EconomicAnalyzerInternal(DTMTrafficManager
dtmTrafficManager,
SimpleLinkID
link1,
SimpleLinkID
link2): The constructor with arguments: instance of DTMTrafficManager
(that should be updated once new reference vector is calculated or on some
link the reference vector is achieved) and identifiers of two considered interdomain links.
o void
updateXZVectors(XVector
xVector,
List<ZVector>
zVectors): Updates link and tunnel traffic data. If accounting period
elapsed, calculates new reference vector and sends is to configured NTM
instance. Updates NTM with a list of links on which the R vector has been
already achieved in the current accounting period.
Page 58 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 59 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Page 60 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 61 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Sequence diagram in Figure 22 presents Economic Analyzer interactions with other SBox
components, namely QoS Analyzer and Network Traffic Manager.
Periodically the QoS Analyzer updates EA with new link and tunnel traffic vectors
calculated from traffic counters values collected over some period of time (e.g. 5 minutes).
For this purpose an interface method of EconomicAnalyzer class is used. New vectors
are passed to an instance of EconomicAnalyzerInternal corresponding to the AS for
which traffic vectors were prepared. EconomicAnalyzerInternal uses one of two
container classes to store traffic samples depending on the charging rule enabled in the
system. Sequence diagram depicts the workflows assuming that the 95th percentile based
rule is used. Please note that only a subset of presented messages is exchanged in the
case when total traffic volume charging rule is in use. During the accounting period,
EconomicAnalyzerInternal
stores
received
traffic
data
in
The95thPercentileSamplesContainer and checks whether there are some new
links on which the reference vector has been already achieved. If yes, new list of
identifiers of such links is sent to an instance of DTMTrafficManager. After the
accounting period, EconomicAnalyzerInternal retrieves the 95th percentile traffic
samples from the container and passes them to ReferenceVectorCalculator for
reference vector calculation. Finally new reference vector is sent to
DTMTrafficManager.
Page 62 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
5.1.3.2.1
The main responsibility of the Economic Analyzer component is the periodical calculation
of reference vector after each accounting period. The detailed description of the algorithm
is available in section 6.1.3.3.1 of Deliverable 3.2 [2].
5.1.3.3 Tests
In order to test the DTM features provided by the Economic Analyzer component a set of
6 test classes was implemented.
Those classes with their test methods are listed below (please note that all provided
names of test methods are preceded with public void in the source code):
ReferenceVectorCalculationTest contains following test methods for
reference vector calculation logic implemented by the ReferenceVectorCalculator
class.
o firstTestData()
o secondTestData()
o thirdTestData()
o fourthTestData()
o fifthTestData()
o sixthTestData()
o seventhTestData()
o eightTestData()
o ninthTestData()
o tenthTestData()
o eleventhTestData()
The95thPercentileWorkflowTest contains a test method for workflow
triggered by the EconomicAnalyzer after receiving updated link and tunnel traffic
vectors in the case the ChargingRule.the95thPercentile is enabled.
o shouldCalculateRefVectorAfterAccountingPeriod()
TotalVolumeWorkflowTest contains a test method for workflow triggered by the
EconomicAnalyzer after receiving updated link and tunnel traffic vectors in the case
the ChargingRule.volume is enabled.
o shouldCalculateRefVectorAfterAccountingPeriod()
TotalVolumeReportsAggregationTest contains test methods for handling
traffic updates when ChargingRule.volume is enabled. Traffic values are
aggregated during an accounting period and then reset.
o prepareTotalVolumeXVBeforeAccountingPeriod()
o prepareTotalVolumeZVBeforeAccountingPeriod()
o prepareTotalVolumeXVAfterAccountingPeriod()
o prepareTotalVolumeZVAfterAccountingPeriod()
Version 1.0
Page 63 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
o asNumberMatch()
o linkIDConsistence()
The95thPercentileSamplesContainerTest tests methods for handling 95th
percentile samples implemented by the The95PercentileSamplesContainer class.
o shouldStoreXAndZVectorTrafficSamples()
o shouldStoreManyXAndZVectorTrafficSamples()
o shouldThrowExceptionOnInvalidInput()
HandlingSamplesBelowRVectorTest contains following test methods for
handling of 95th percentile samples by the The95PercentileSamplesContainer with
the focus on samples with values less than corresponding reference vector
component value.
o shouldStoreSamplesAndHandleSamplesBelowRVector()
o shouldStoreAndHandleDifferentNumberOfSamples()
5.1.4 Inter-SBox Communication Service
The Inter-SBox Communication Service component functionality and design have been
documented in Section 6.1.5 of D3.2 [2] and have not changed since then.
5.1.5 SBox-SDN Communication Service
The SBox-SDN Communication Service component functionality and design have been
documented in Section 6.1.5 of D3.2 [2] and have not changed since then.
5.1.6 Database
The Database (DB) component is responsible both for relational tables creation and the
application connection to the actual database. It is partitioned into the following packages:
dto: Contains all the Data Transfer Objects (DTO) of the database, namely all the
Java classes that correspond to the relational tables of the DB, and some additional
helper entities, which are used by certain components, but are not stored into the
database.
dao: Contains all the Data Access Objects (DAO) one for each table. Each of them
contains the methods provided to external components for reading from or writing
to the corresponding table. The dao package also includes the five subpackages
that follow.
o binders: Contains the binder classes.
o mappers: Contains the mapper classes.
o gen: Contains for each table an abstract class, behaving as interface, with
the actual necessary SQL commands wrapped each from a Java method
which is the one called by the above mentioned DAO method.
o util: Contains auxiliary, utility classes. For the moment it has only the
Tables class which creates and deletes all tables.
Page 64 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
test: Includes the JUnit tests one for each DAO class.
The DB contains the SQL tables described in the Design Subsection 5.1.6.2.
5.1.6.1
Interfaces
The DB component provides its services by exposing for each table a number of methods.
These methods, which reside for each table-entity in the corresponding DAO class,
named <entity-name>DAO, constitute the DB interface to the other components. Each of
these methods wraps up one or more SQL commands, located in the corresponding
Abstract<entity-name>DAO. In the case of multiple SQL commands, these may reside in
more than one Abstract<entity-name>DAO.
There is a set of methods which are implemented by almost all DAOs, while few others
are more specific, more complicated therefore implemented usually by a single (or more
cooperating) DAO. The common methods are briefly described as follows.
public void createTable(): The method that creates the corresponding
table.
public void deleteTable(): The method that deletes the corresponding
table.
public void insert(<entity type> e): The method that inserts an entity
to the corresponding table.
o Input parameter: The entity to be inserted.
public List<entity type> findAll(): The method that finds all the
stored entities from the respective table.
o Returns: The list of stored entities.
public <entity type> findById(<primary-key-type> pk): The
method that finds a stored entity by the corresponding tables primary key.
o Input parameter: The primary key.
o Returns: the entity indexed by the primary key.
public <entity type> findLast(): The method that finds the last stored
entity.
o Returns: The most recent stored entity.
public void update(<entity type> e):The method that updates a stored
entity into its table.
o Input parameter: The entity to be updated.
public void deleteById(<primary-key-type> pk): The method that
deletes a stored entity by its table primary key.
o Input parameter: The primary key.
public void deleteAll(): The method that deletes all the stored entities
from the respective table.
Version 1.0
Page 65 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
The DAO-specific methods were described in Section 6.1.4.2 of Deliverable 3.2 [2], and
have been enhanced with new fields, which will be presented in the following section.
5.1.6.2
Design
The DB schema contains the following SQL tables depicted in Figure 23:
BGROUTER: The table where the Border Gateway Is stored. The prefix of the router
management IP address is the tables primary key.
CLOUDDC: The table where all the different clouds are stored. The cloud name is
the primary key.
COSTFUNCTION: The table where all the different cost functions are stored. The
pair <local link id, ISP name> is the primary key.
DAROUTER: The table where all the different Datacenter Attached Routers are
stored. The router IP address is the primary key.
ISP: The table where all the different ISPs are stored. The ISP name is the primary
key.
LINK: The table where all the different links are stored. The pair <local link id, ISP
name> is the primary key.
PREFIX: The table where all the different address prefixes we use are stored. An
auto incremented numerical identifier is the primary key.
SDNCONTROLLER: The table where all the different SDN controllers are stored. The
controller address is the primary key.
SEGMENT: The table where all the different segments are stored. An auto
incremented numerical identifier is the primary key.
TUNNEL: The table where all the different tunnels are stored. The pair <local link id,
ISP name> is the primary key.
Page 66 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 67 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
AbstractASDAO
o Belongs to the gen package, contains all SQL queries, each one defines a
java method. These methods only get called from the ASDAO methods. The
ASDAO methods are the ones exposed to any application requesting to read
or write to the database.
BindAS
o Translator from application-entity to the database-table when commands
issued to the DB.
o It is an interface that includes a static class ASBinderFactory which
implements BinderFactory interface i.e a build() method that
instantiate a Binder object for the AS type using the bind() method
whose description follows
ASMapper
o Translator from the database-table to application-entity dialect, when the DB
responds to an issued command, using the below described map method.
ASMapper:
AS
map(int
index,
ResultSet
r,
StatementContext ctx): The method that translates a received
resultset into an AS object.
Input parameter: index The index.
Input parameter: r The received result set.
Input parameter: ctx The statement context.
Returns: The AS object.
Page 68 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 69 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Remote clouds,
Inter-cloud communications, and,
System and general DTM settings.
5.1.7.1
Interfaces
The User Interface pages were presented in Section 6.1.7 of D3.2 [2] and only a few fields
in certain pages have changed since then.
In the BG and DA routers page (Figure 25), the intra-domain routers can be configured.
BG routers insertion requires the number of the AS they belong, and their username and
password to access them, while both types of routers require their SNMP community.
Besides, DA routers require the OpenFlow switch identifier, as well as their list of ports.
All inter-domain links are configured in the Links page (Figure 26). Link parameters
include: ID, ISP name, IP address, physical interface name, VLAN number, the BG router
it belongs, the tunnel end prefix and a list of Segments (left border, right border, a and b
constants) that comprise its cost function.
In the Tunnels page (Figure 27), the administrator may insert, modify and delete traversing
tunnels. More specifically, information about tunnels name, number, source and
destination end addresses, physical interface name, the local router address and the interdomain link they traverse are expected.
Finally, in the Settings page (Figure 28), required DTM execution parameters are set: the
start date of the DTM execution, and the duration of the accounting, reporting, sampling
and compensation periods. In addition, certain system control parameters can be
configured: the charging rule (95th percentile or volume-based), the operation mode of
SDN controller (proactive or reactive, with or without compensation vector), the
compensation threshold and a Boolean value defining whether the SBox operates with
delay-tolerant traffic management.
Page 70 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 71 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Page 72 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 73 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Page 74 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
the data access objects to query and update those tables. The database component was
described with details in Section 5.1.6.
The controller layer is implemented by several *Bean classes, one for each page, which
include all the required functions that:
a) receive users requests and input from the Web application pages,
b) interact with the database and,
c) return output and/or navigate to other pages.
The list of controlling bean classes and their mapping to their controlling page is presented
below:
DashboardBean: Its the session controlling bean, which is initialized on
successful login and terminated when the administrator logs off.
InterDatacenterBean: inter-datacenter communications page
IspBean: autonomous systems page.
LinksBean: links page (Figure 26).
LocalCloudsBean: local clouds page.
RemoteCloudsBean: remote clouds page.
RoutersBean: BG and DA routers page (Figure 25).
SdnControllersBean: SDN controllers page.
SettingsBean: system control DTM parameters page (Figure 28).
TunnelsBean: tunnel page (Figure 27).
Additional classes are also implemented, either providing support and converting functions
used in pages (WebUtils, IntegerListConverter), or managing certain required
functionalities (DB connection handling), when the Web application context is initialized or
terminated (SBoxWebAppListener).
Each *Bean class implements all the required functions to manage its respective page.
Specifically, the Web interface pages are used to insert, edit or remove specific entries
from the respective database tables, e.g. the IspBean manages the ISP and AS tables,
calling the respective DAO methods. Figure 29 presents such an example and is similar to
all *Bean classes.
Figure 30 presents a simple sequence diagram of an AS insertion through the User
Interface, which is triggered when the updateAS function is called. DashboardBean
calls the insert(AS) function of DB components ASDAO class, which subsequently
calls the related method from the AbstractASDAO, which executes the AS table update.
Afterwards, the findAll() is executed, to get all the AS entries and populate the table
presented in the page. The same action applies for all pages and methods defined above.
Version 1.0
Page 75 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
o links.xhtml: The links page (Figure 26). The SBox administrator can
insert new links (updateLink), as well as update (editLink) or delete
(deleteLink) existing ones. The addSegment and deleteSegment
support functions are also used to add and delete, respectively, a Segment
for a selected Link.
o localclouds.xhtml: The local clouds page. The existing local clouds are
presented, and the user may insert (updateCloud) a local cloud, edit
(editCloud) or delete (deleteCloud) a stored one.
o remoteclouds.xhtml: The remote clouds page. The existing remote
clouds are presented, and the user may insert (updateRemoteCloud) a
remote cloud, edit (editRemoteCloud) or delete (deleteRemoteCloud) a
stored one.
o routers.xhtml: The BG and DA routers page (Figure 25). In this page,
the SBox administrator can insert (updateBGRouter, updateDARouter)
new BG and DA Routers, as well as delete (deleteBGRouter,
deleteDARouter) stored ones.
o sdncontrollers.xhtml: The SDN Controllers page. The SBox
administrator may check stored SDN Controllers, add new ones
(updateSDNController), update (editSDNController) or delete
(deleteSDNController) them.
o settings.xhtml: The DTM settings page (Figure 28). In this page, the
DTM execution and system parameters are configured and stored in the
database (updateTimeParams, updateSystemParams).
o tunnels.xhtml: The Tunnels page (Figure 27). The SBox administrator
can insert new tunnels (updateTunnel), as well as update (editTunnel)
or delete (deleteTunnel) existing ones.
css/: This directory includes all the css files used to format and style the Web
application pages. Besides, the 2 files (sbox-main.css and sbox-signin.css)
that describe the SBox UI style and format, the directory includes all the Twitter
Bootstrap css and theme files.
fonts/: It includes all Twitter Bootstrap fonts.
js/: This directory includes all the javascript files. These files are used to support
certain
Twitter
Bootstrap
components
(bootstrap.js,
bootstrapdropdown.js, bootstrap-modal.js, bootstrap-datetimepicker.js,
jquery.js, moment.js), and support the validation of the user input. In the
second case, the bootstrapValidator.js acts as the key element of forms validation,
highlighting correct/incorrect fields and enabling/disabling Submit button, while
additional javascript files (between.js, integer.js, ip.js, notEmpty.js)
provide individual fields validation, providing relevant error messages.
WEB-INF/: This directory includes the web.xml file, including Web applications
configuration. The Web application supports FORM authorization method, which
means that a new or session-expired request will be always redirected to a sign-in
Version 1.0
Page 77 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
page to provide its username and password. Currently, access is limited only to
administrators, with credentials encrypted in Web servers configuration files.
signin.jsp: The sign-in page of the Web application. In case of incorrect
credentials it redirects user to signinError.jsp page, otherwise to
index.xhtml.
signinError.jsp: The error page, when the user inserts incorrect credentials.
5.1.7.3
Tests
No automated tests were implemented for the User interface. The Web application was
tested during integration and system tests.
5.2
SDN Controller
The main purpose of SDN Controller is the selection of proper output interface of
OpenFlow-based switch in order to ensure traffic forwarding continuity in accordance with
current traffic statistics and the value of the Reference and Compensation vectors
received from SBox. Code of DTM module of SDN controller was updated since version
1.1 presented in D3.2 [2] in order to meet requirements of extended mechanism (DTM++).
Additionally, new working modes were introduced: reactiveWithReferenceVector,
reactiveWithoutReferenceVector,
proactiveWithReferenceVector
and
proactiveWithoutReferenceVector.
5.2.1 Interfaces
The SDN controller exposes the SBox-SDN Server Interface containing constants and
helper methods used commonly by the SBox and by the SDN controller.
5.2.1.1 Interfaces
The SBox-SDN Server exposes following constant URLs on which the SDN controller
listens:
public static final String BASE_PATH Base path URL.
public static final String DTM_R_C_VECTORS_PATH Path used by
server-side resource used for editing and retrieving RCVectors, i.e., RVector and
CVector.
public static final String DTM_CONFIG_DATA_PATH Path used by
server-side resource used for editing and retrieving ConfigData.
Moreover, the helper methods for serialization, deserialization, and conversion from tunnel
id to OpenFlow switch port id are exposed:
public static <T extends
object) Generic serializator.
Serializable>
String
serialize(T
Page 78 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 79 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Page 80 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
5.2.2.2 Design
The SDN controller is designed as an extension to the Floodlight 0.90 controller [23]. The
functionality
has
been
implemented
in
packages
eu.smartenit.sdn.floodlight090.dtm
and
eu.smartenit.sdn.floodlight090.dtm.restlet. The former consists of six
classes, and the latter of three classes. They are presented in the Figure 32.
public class DTM (singleton) main DTM class; holds information on current
compensation vector, reference vector, and traffic transmitted; it contains following
methods:
o public static DTM getInstance() returns DTM singleton; creates
one if necessary;
o public static void resetInstance() sets DTM instance to null.
When the instance will be requested next time it will be created. This method
is mainly meant to be using in tests;
o public
IFloodlightProviderService
getFloodlightProvider()/public
void
setFloodlightProvider(IFloodlightProviderService
floodlightProvider) returns/set FloodlightProvider;
o public
synchronized
void
setConfigData(ConfigData
configData)/public ConfigData getConfigData() update/return
configuration;
o public
synchronized
void
setReferenceVector(RVector
referenceVector)/public RVector getReferenceVector()
update/return reference vector;
o private
Set<Short>
getAllDARouterPorts(ConfigData
configData) returns all switch OF port numbers;
o public synchronized void setCompensationVector(CVector
compensationVector)/public
CVector
getCompensationVector() update/return compensation vector;
o public synchronized void setSwitch(IOFSwitch sw)/public
IOFSwitch getSwitch() update/return switch on which DTM operates;
currently, only one switch is supported;
o private synchronized void transmittedBytesMapUpdated()
modifies flow rule for proactiveWithReferenceVector controller mode;
o public long getTransmittedBytes() returns traffic counter on
selected switchs port;
o public Map<Short, Long> getTransmittedBytesOnAllPorts()
returns statistics of transmitted bytes on all switch ports
o private
synchronized
void
resetTransmittedBytesStart(short daRouterOfPortNumber)
resets traffic start counter on selected switch's port;
Version 1.0
Page 81 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Page 82 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
context)
context)
Version 1.0
Page 83 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
adds flow for given switch, outgoing port, and incoming packet; constructs
OFMatch from the incoming packet and instructs switch to send all packets
from the flow to be sent to given outgoing port; the received packet is sent
do switch for forwarding; the controller sends the switch two OpenFlow
messages:
ofp_flow_mod
(with
OFPFC_ADD
action)
and
ofp_packet_out;
o public
static
void
del(IOFSwitch
sw,
IFloodlightProviderService
floodlightProvider,
FloodlightContext cntx, String dcIP, int dcMask) deletes
flow for given switch and destination DC IP; constructs OFMatch and
instructs switch to delete particular flow from its flow table; the controller
sends the switch a OpenFlow message: ofp_flow_mod (with
OFPFC_DELETE action);
o public
static
void
mod(IOFSwitch
sw,
IFloodlightProviderService
floodlightProvider,
FloodlightContext cntx, String dcIP, int dcMask, short
outPort) modifies particular flow rule in switch; ; the controller sends the
switch
a
OpenFlow
message:
ofp_flow_mod
(with
OFPFC_MODIFY_STRICT action);
public class DTMRestletRoutable implements RestletRoutable
Configures RESTlet resources; contains two methods:
o public Restlet getRestlet(Context context) returns the restlet
that will map to the resources; two resources are mapped:
RCVectorsResource ConfigDataResource;
o public String basePath() returns the base path URL where the
router should be registered;
public class ConfigDataResource extends ServerResource Serverside resource used for editing and retrieving ConfigData; contains two mehods:
o public String
configuration data;
handleGet()
returns
JSON-serialized
DTM
Page 84 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 85 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
5.2.2.2.1
r_inv[1] = r[2];
r_inv[2] = r[1];
counter_start[1]=read_counter(1);
counter_start[2]=read_counter(2);
for(each new flow packet){
tunnel=1;
compensate=false;
If(C[1]>0){
tunnel=1;
compensate=true;
}
If(C[2]>0){
tunnel=2;
compensate=true;
}
if(compensate){
for(each timer=1sec) if(read_counter(tunnel)-counter_start[tunnel]>
C[tunnel]/r_inv[tunnel]){
for(k=1 to 2) counter_start[k]=read_counter(k);
tunnel=(tunnel mod 2) +1;
compensate=false;
}
send_SDN_rule(tunnel);
}
else {
for(each timer=1sec){
traffic_1=read_counter(1) - counter_start[1];
traffic_DA-B=traffic_1 + read_counter(2) - counter_start[2];
if(traffic_1/ traffic_DA-B < = r[1])
tunnel=1;
else
tunnel=2;
send_SDN_rule(tunnel);
}
}
}
5.2.2.2.2
Page 86 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
If(C[1]==0) tunnel=1;
If(C[1]>0) tunnel=1;
If(C[2]>0) tunnel=2;
send_SDN_rule(tunnel);
}
5.2.2.2.3
r_inv[1] = r[2];
r_inv[2] = r[1];
counter_start[1]=read_counter(1);
counter_start[2]=read_counter(2);
for(each new C){
tunnel=1;
compensate=false;
if(C[1]>0){
tunnel=1;
send_mod_SDN_rule(tunnel, wildcard);
compensate=true;
}
if(C[2]>0){
tunnel=2;
send_mod_SDN_rule(tunnel, wildcard);
compensate=true;
}
}
if(compensate){
for(each timer=1sec)
if(read_counter(tunnel)-counter_start[tunnel]>
C[tunnel]/r_inv[tunnel]){
for(k=1 to 2) counter_start[k]=read_counter(k);
compensate=false;
tunnel=(tunnel mod 2) +1;
send_SDN_remove_rule(all);
break;
}
else {
for(each new flow packet){
send_SDN_rule(tunnel);
for(each timer=1sec){
Version 1.0
Page 87 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
traffic_1=read_counter(1) - counter_start[1];
traffic_DA-B = traffic_1 + read_counter(2)
- counter_start[2];
if(traffic_1/ traffic_DA-B < = r[1])
tunnel=1;
else
tunnel=2;
}
}
5.2.2.2.4
5.2.2.3 Tests
Eight JUnit [19] classes were developed to test the implementation:
public class DTMConfigProcessingTest tests configuration processing
by DTM module; contains following tests:
o public void testGetInstance() tests if DTM.getInstance() returns
the same value in subsequent calls;
o public void testSetConfigData() tests the configuration data
setter;
o public void testSetSwitch() tests OpenFlow switch setter;
public class DTMFlowDistributorTest main DTM test class for single-tosingle DTM setup; contains following tests:
o public
testGetReactiveWithReferenceOutOfPortNumber()
algorithm for reactiveWithReference mode;
o public
testGetReactiveWithoutReferenceOutOfPortNumber()
algorithm for reactiveWithoutReference mode;
o public
testGetProactiveWithoutReferenceOutOfPortNumber()
algorithm for proactiveWithReference mode;
Page 88 of 191
void
tests
void
tests
void
tests
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
void
tests
o public
testGetReactiveWithoutReferenceOutOfPortNumber()
algorithm for reactiveWithoutReference mode;
o public
testGetProactiveWithoutReferenceOutOfPortNumber()
algorithm for proactiveWithReference mode;
void
tests
void
tests
public class DTMTestCase contains test cases for the purpose of flow
distribution tests;
public class DTMVectorsProcessingTest tests vector processing by
SDN controller; contains following tests:
o public void testSetReferenceVector() tests setup of single
Reference Vector;
o public void testSetMultipleReferenceVectors() tests setup
of multiple Reference Vectors;
o public void testSetCompensationVector() tests setup of single
Compensation Vector;
o public void testSetMultipleCompensationVector() tests
setup of multiple Compensation Vector;
public final class FakeStatisticsProviderOFSwitch class providing
fake OpenFlow-enabled switch for reactive mode tests;
public class FlowDistributorSetUpHelper helper class with constant
values of Compensation Vector for DTMFlowDistributorTest
and
DTMFlowDistributorTwoDCsTest classes;
public class TestSetUpHelper helper class with constant values of
ConfigData and fake OpenFlow PacketIn message;
Version 1.0
Page 89 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
6.1
uNaDa
The uNaDa entity includes all the required components to execute the RB-HORST
mechanism. The following sections will provide a brief description for each component,
and document their exposed interfaces, design details, and local tests executed to
validate their correctness.
6.1.1 Cloud Traffic Manager
The Cloud Traffic Manager (CTM) component is the coordinating element of the uNaDa. It
is responsible for:
initializing the social monitoring function,
periodically querying the Overlay Manager and Social Analyzer components for the
ranked list of predicted contents,
managing the uNaDas cache, either by checking the ranked content list deriving by
the social and overlay prediction, or periodically cleaning the least accessed
contents,
implementing the content prefetching functions, either from the Vimeo servers or
other overlay peers.
6.1.1.1 Interfaces
The Cloud Traffic Manager exposes 4 interfaces:
CacheManager: The cache management interface. It includes methods to update
the cache based on the received sorted lists of content from the social and overlay
prediction and periodically delete the expired contents. This interface is called
internally upon uNaDa initialization.
o void
updateCache(List<Content>
socialContentList,
List<Content> overlayContentList): The method that updates the
cache based on the received sorted lists of content from the social and
overlay prediction. It receives the following input parameters:
Page 90 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
o void
deleteContents(List<Content>
contents,
long
threshold): The method that deletes a list of contents from both the local
cache and the database, that were not accessed since the given time
threshold. It receives as input
The time threshold, after which contents which were not accessed
should be deleted.
Version 1.0
Page 91 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
internal interfaces, or when a content download request is received in the uNaDaend-user REST interface (Section 6.1.6.1) through the proxy component.
o void downloadVideo(): The method that downloads a video and stores
it in local cache.
The implementation and internal functionality of each interface will be presented in the
following section.
6.1.1.2 Design
Figure 33 presents the class diagram of the CTM component. It includes all the interfaces,
classes and their associations and dependencies, as well as their parameters and
implemented methods. The key classes and methods are described below:
CacheManagerImpl implements CacheManager: It includes methods to
update the cache, based on the received sorted lists of content from the social and
overlay prediction.
o public void updateCache(List<Content> socialContentList,
List<Content> overlayContentList): The method that updates the
cache based on the received sorted lists of content from the social and
overlay prediction.
o public void deleteExpired():The method that deletes the expired
contents from the local cache and database.
o private int contentExistsInList(List<Content> list, long
contentID): The method that checks whether a content belongs a content
list.
o public
void
updateSocialContentListWithSizes(List<Content>
contentList): The method that updates the social content list with their
sizes, as retrieved from Vimeo.
ContentAccessLoggerImpl
Runnable:
implements
ContentAccessLogger,
Page 92 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
The
method
that
executes
the
Version 1.0
Page 93 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Page 94 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Page 95 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
The simplified pseudocode for the handling of the ranked content lists, provided by the
social and overlay prediction algorithms, and the basic cache management is presented
below. In principle, the contents predicted by the overlay prediction have a slight
advantage, since they can be downloaded by close peers and save unnecessary interdomain traffic. Close peers are considered the uNaDas that belong to ASes up to 1 hop
away. In this sense, if a content item belongs to both the overlay and social ranked lists,
then it will be downloaded from the overlay, unless the closest peer is more than 1 hop
away. Otherwise, it will be downloaded from Vimeo servers. Of course, the projected size
of the cache (sum of current cache size and content size) is always taken into account,
before adding the content to the ones that can be prefetched. The deleteIgnored()
function will either delete a content if it exists in the cache, or ignore it.
Page 96 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
updateCache(socialContentList, overlayContentList):
foreach content in socialContentList:
if content does not exists in overlayContentList:
if socialScore > socialThreshold AND (currentCacheSize +
contentSize < cacheSize):
VimeoDownloader.download(content)
else:
ignoreList.add(content)
foreach content in overlayContentList:
if (overlayScore > overlayThreshold) AND (currentCacheSize +
contentSize < cacheSize):
if overlayHops <= 1:
OverlayDownloader.download(content)
else:
VimeoDownloader.download(content)
else:
ignoreList.add (content)
deleteIgnored(ignoreList)
6.1.1.3 Tests
The JUnit [19] tests that validate the correctness of the aforementioned functions and
algorithms are presented below:
CacheManagerTest
o public void testDeleteContents(): Tests the deleteContents()
function.
o public void testUpdateCacheFetchOneIgnoreOne(): Tests the
updateCache function, for one content above and one content below
threshold
o public void testUpdateCacheFetchAll(): Tests the updateCache
for multiple contents above threshold.
o public void testUpdateCacheIgnoreAll():Tests the updateCache
for multiple contents below threshold.
o public
void
testUpdateCacheFullCacheAboveThresholdIgnoreAll():Tests the
updateCache for multiple contents above threshold, but for full cache.
o public
void
testUpdateCacheFullCacheBelowThresholdIgnoreAll():Tests the
updateCache for multiple contents below threshold and full cache.
Version 1.0
Page 97 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
o public
void
testUpdateCacheNearFullCacheAboveThresholdIgnoreSecond():
Tests the updateCache for multiple contents above threshold, but with
cache near to full, hence the second is ignored.
o public void testUpdateCacheFetchAllSocialOverlay(): Tests
the updateCache for multiple contents above threshold.
o public void testUpdateCacheContentInBothListsLowScore():
Tests the updateCache for contents belonging in both social and overlay
list, but with low score.
o public void testUpdateCacheContentInBothListsGoodScore():
Tests the updateCache for contents belonging in both social and overlay
list, with good score.
ContentManagerTest
o public
void
testDeleteNullContent():
deleteContent() for a null one.
Tests
the
Tests
Tests
the
the
Tests
the
o public
void
testPrefetchSocialContent():
prefetchContent() for one belonging to the social list.
Tests
the
o public
void
testPrefetchOverlayContent():
prefetchContent() for one belonging to the overlay list.
Tests
the
o public
void
testPrefetchContents():
Tests
the
prefetchContents() for multiple ones belonging to social and overlay
lists.
FileUtilsTest
o public void testDeleteFile(): Tests the deleteFile() function.
o public void testGetRootPath(): Tests a method which finds its root
directory.
OverlayDownloaderTest
o public
void
testDownloadVideoNotCached():
Tests
the
downloadVideo() for a non-cached video, hence the video is
downloaded.
Page 98 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
o public
void
testDownloadVideoCached():
downloadVideo() for a cached video.
Tests
the
o public
void
testUpdateAccessLogNoMAC():
Tests
updateAccessLog() method when no MAC address is provided.
the
VimeoAccessLoggerTest
Tests
Tests
the
the
Tests
the
o public
void
testRetrieveVideoInfo2():
retrieveVideoInfo() method.
Tests
the
o public
void
testRetrieveFalseVideoInfo():
retrieveVideoInfo() method for a false video URL.
Tests
the
VimeoPatternsTest
o public void testPatterns(): Tests the Vimeo patterns.
6.1.2 Overlay Manager
The Overlay Manager (OM) component is the communicating component of the uNaDa. It
is responsible for:
initializing and maintaining the overlay network,
calculating the overlay prediction,
Version 1.0
Page 99 of 191
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Commercial in Confidence
6.1.2.2 Design
Internally the OM is much more complex than the interface offered to other components.
Figure 37 depicts the classes of OM excluding messages which shall be explained later.
The OverlayManager is the main class of the component orchestrating the three
functional areas of overlay, downloading, and neighbor relations. These functional areas
are covered by three delegate classes shortly explained:
The Overlay class is responsible for all overlay related functionality like joining, leaving,
or creating a network as well as DHT lookups and sending messages.
The ContentDownloadHandler class manages the downloading process from other
uNaDas. It uses methods from OverlayManager to find providers for a given content.
Furthermore, it handles chunking an error checking of transferred data.
The NeighborDatabase mainly acts as a storage facility for known uNaDas. It keeps
them sorted according to as hops and acts as a cache for discovered AS paths. It makes
sure no traceroutes for discovered uNaDas are executed.
Figure 38 shows all messages used in the OM component. There is one abstract super
type called BaseMessage from which all messages inherit and which is used by OM to
send and execute messages.
The concept of the execute()method helps reduce boilerplate code like if instance of
XY then . since every message contains the logic it has to trigger in the receiving
uNaDa. This pattern also avoids casting deserialized messages. Typically, messages are
pairs of request and replies and therefore a request messages execute method will
somehow trigger the response message being sent back to the sender.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
6.1.2.3 Tests
OverlayManagerMessagingTest
o public void basicMesagingTest() tests if a message can be sent
from one OM to another.
o public void requestProviderTest()tests the queryProviders()
method of OM
o public
void
requestContentInfoTest()tests
request and reply messages.
getContentInfo
OverlayManagerPredictionTest
o testPrediction()tests the getPrediction() method of OM with a
mocked network.
OverlayManagerTest
o public void testJoinOverlay() tests if a uNaDa can successfully
join the DHT and retrieve its own uNaDa information.
o public void testUpdateOverlay() tests if a uNaDa can update its
uNaDa information
6.1.3 Topology Proximity Monitor
6.1.3.1 Functionality
The Topology Proximity Monitor is an entity responsible for determining the distance
between the local uNaDa and a number of remote ones. The distance is measured as a
number of AS hops on the path from a remote uNaDa and the local one. The list of AS
hops is determined by perfoming a traceroute and converting IPd to ASNs.
6.1.3.2 Interfaces
TPM provides other components with a TopologyProximityMonitor interface
containing two methods:
public
List<ASVector>
sortClosest(Collection<UnadaInfo>)
throws InterruptedException returns a list of unique uNaDa identifiers
sorted from the nearest to the furthest as well as the list of AS hops on the path
from each uNaDa on the list and the local one.
public
List<Integer>
getASVector(UnadaInfo)
throws
UnknownHostException, IOException, InterruptedException returns
a list of AS hops from on the path from the local uNaDa to the remote one.
6.1.3.3 Design
The component consists of five classes:
Version 1.0
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
if
the
Version 1.0
Commercial in Confidence
sf):
Stops
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
The Social Monitor class wraps the MonitorRunner class which contains the actual data
retrieval logic. The run method described below encapsulates the complete retrieval logic:
public void run(): Method that invokes the MonitorRunner
A UML diagram of the MonitorRunner is shown in Figure 41.
Version 1.0
Commercial in Confidence
age, the geographic distance from its download location, the number of accesses in the
local database, the number of views, and the number of Facebook friends who reposted
the content item, a prediction score is calculated. This prediction score is calculated to
determine the probability whether some particular Facebook user will use the content item
in question.
6.1.5.1 Interfaces
The Social Analyzer does not expose any interfaces but it does provide public methods.
The Social Analyzer consists of a single class exposing a single public method, named
predicting(). The prediction algorithm is invoked by calling the predicting() method of the
Social Analyzer class.
public List<Content> predicting(): Invokes the prediction algorithm and
returns a List of Content items, sorted by their score (ascending)
6.1.5.2 Design
The UML diagram of the Social Analyzer class is shown in Figure 42. The class holds the
complete logic for the prediction algorithm. A complete description of the individual
methods is omitted at this point because its complexity is tremendous. The design of
these methods can be summarized though.
private List<FeedItem> getFeedItems(): Retrieves FeedItems from the
database
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Once the feed data required for the calculation is retrieved from the database, the
calculation phase starts. It consists of a well-defined sequence of get* methods which
retrieve necessary data from the database and calculate* methods which are responsible
for calculating separate parts of the prediction score. Finally, the feed items are sorted by
their prediction score and returned in a list.
6.1.5.3 Tests
SocialAnalyzerTest
o
public void predictionTest(): Tests the correctness of the
prediction algorithm.
6.1.6 uNaDa-End-User Interface
The uNaDa-End-User interface module exposes the uNaDas interfaces towards the enduser device, as well the proxy component deployed within the uNaDa. It specifically
implements the login interface, which is accessed by the End-User application to provide
the remote users credentials and connect to the uNaDas private SSID, as well as the
download and access interfaces, which are used by the proxy component to download a
specific content and log a content access respectively.
6.1.6.1 Interfaces
The uNaDa-End-user interface component exposes 3 REST interfaces, each one
implemented by the respective *Service class:
LoginService: The login REST API of the uNaDa towards the end-user device.
It listens for GET end-user application login requests to the following URL:
http://<unada-ip-address>:<unada-port>/unada/rest/login/<facebookID> for the
specific facebookID:
o public RemoteLoginReply login(@PathParam("facebookID")
String facebookID, @Context HttpServletRequest request):
The login method. It checks whether the user is a trusted one. If yes, then it
executes an ARP request and updates its entry with his MAC address and
finally returns the private SSID parameters (SSID name and password) in
JSON format. Otherwise, it returns a negative reply.
It receives as input the users Facebook identifier.
DownloadContentService: The download REST API of uNaDa. It listens for
GET requests at the following URL: http://<unada-ip-address>:<unadaport>/unada/rest/download/<contentID> to download a specific video with the
specified contentID:
o public boolean download(@PathParam("contentID") String
contentID): The download method. It downloads a Vimeo video with
contentID.
It receives as input the content identifier to be downloaded.
Version 1.0
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
6.1.6.3 Tests
One class implements the JUnit [19] tests for the login service:
LoginServiceTest: The LoginServiceTest class implementing tests for the login
REST API.
o public void testNonExistingTrustedUser(): The test case for a
non-existing trusted user.
o public void
trusted user.
6.1.7 Database
The Database (DB) component is responsible both for relational tables creation and the
application connection to the uNaDa database. It includes the following modules:
dto: Contains all the Data Transfer Objects (DTO) of the database, namely all the
Java classes that correspond to the relational tables of the DB, and some additional
helper entities, which are used by certain components, but are not stored into the
database.
dao: Contains all the Data Access Objects (DAO) one for each table. Each of them
contains the methods provided to external components for reading from or writing
to the corresponding table. The dao module also includes the 4 following
packages:
o binders: Contains the binder classes.
o mappers: Contains the mapper classes.
o impl: Contains the implementation of each abstract class defined in the
root directory.
o util: Contains helper classes.
The DB contains the SQL tables described in the Design Subsection 6.1.7.2.
6.1.7.1
Interfaces
The DB component provides its services by exposing for each table a number of methods.
These methods, which reside for each table-entity in the corresponding DAO class,
named <entity-name>DAO, constitute the DB interface to the other components. Each of
these methods wraps up one or more SQL commands, located in the corresponding
Abstract<entity-name>DAO. In the case of multiple SQL commands, these may reside in
more than one Abstract<entity-name>DAO.
There is a set of methods which are implemented by almost all DAOs, while few others
are more specific, more complicated therefore implemented usually by a single (or more
cooperating) DAO. The common methods are briefly described as follows.
public void createTable(): The method that creates the corresponding
table.
Version 1.0
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
VIDEOINFO: The table that stores metadata for posted videos in the users
Facebook News Feed. Metadata include the publication date of the video, and its
views number.
TRUSTEDUSER: It includes the list of the uNaDas trusted users, providing the
Facebook identifier of the user, his MAC address and the last access timestamp.
FRIEND: It includes the list of uNaDa owners Facebook friends.
OWNER: It provides information about the uNaDas owner.
FEEDITEM: It stores the list of Facebook feed items, as these are published in
uNaDa owners Facebook News Feed. This table includes the content identifier, the
user Facebook identifier, the posts type and timestamp.
Version 1.0
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
ContentMapper
o The class which translates the SQL arguments and results of a query into
the respective DTO class. It uses the following method:
public
Content
map(int
index,
ResultSet
r,
StatementContext ctx): The method that translates a received
resultset into an Content object.
Input parameter: index The index.
Input parameter: r The received result set.
Input parameter: ctx The statement context.
Returns: The Content object.
Version 1.0
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
o public
synchronized
List<ContentAccess>
findByContentID(long contentID): The method that finds all
accesses of the specified content id.
o public
synchronized
ContentAccess
findLatestByContentIDFacebookID(long contentID, String
facebookID): The method that finds the latest access of a specific content
id, by the user with the specified facebook id.
o public
synchronized
ContentAccess
findLatestByContentID(long contentID): The method that finds
the latest access of a specific content id.
o public
synchronized
void
deleteByContentID(long
contentID): The method that deletes all accesses of a specific content id.
ContentDAO
o public synchronized Content findByPath(String path): The
method that finds the content with the specified cache path.
o public synchronized List<Content> findByCacheType(String
cachetype): The method that finds and returns the list of contents for the
given cache type.
o public synchronized List<Content> findAllNotPrefetched():
The method that returns all contents which were not prefetched by social or
overlay prediction.
o public synchronized List<Content> findAllWithAccesses():
The method that returns all the contents that were accessed in the past.
o public synchronized long findTotalSize(): The method that
returns the total size of the cached contents, meaning the sum of the sizes.
o public synchronized List<Content> findAllOutDated(long
cacheThreshold): The method that returns the list of contents that were
cached before the given cache threshold.
o public synchronized List<Long> findAllIDs(): The method that
returns the list of stored content ids.
o public synchronized void deleteBatch(Iterator<Content>
contents): The method that deletes a list of contents.
o public
synchronized
boolean
deleteNotAccessedContent(Content
content,
long
threshold): The method that deletes a content if it was not accessed
before the provided threshold.
FeedItemDAO
o public List<FeedItem> findAllByContentID(long contentID):
The method that finds all FeedItem entries which have the content id.
FriendDAO:
o No additional methods were implemented.
Version 1.0
Commercial in Confidence
OwnerDAO:
o No additional methods were implemented.
SocialPredictionParametersDAO:
o No additional methods were implemented.
TrustedUserDAO
o public TrustedUser findByMacAddress(String macAddress):
The method that finds a TrustedUser entry by its MAC address.
UNaDaConfigurationDAO
o No additional methods were implemented.
VideoInfoDAO
o No additional methods were implemented.
6.1.7.3
Tests
The list of JUnit [19] tests, which validate the correctness of the DAO functions, is
presented below:
CacheDAOTest
o public void testFunctions(): It tests all the basic functions of the
CacheDAO.
ContentAccessDAOTest
o public void testFunctions(): It tests all the basic functions of the
ContentAccessDAO.
o public void testThreads():It tests how the functions perform under
multiple threads.
ContentDAOTest
o public void testFunctions():It tests all the basic functions of the
ContentDAO.
o public void testBatchFunction(): It tests all the batch functions of
the ContentDAO.
o public void testThreads(): It tests how the functions perform under
multiple threads.
FeedItemDAOTest
o public void testFunctions(): It tests all the basic functions of the
FeedItemDAO.
FriendDAOTest
o public void testFunctions(): It tests all the basic functions of the
FriendDAO.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
OwnerDAOTest
o public void testFunctions(): It tests all the basic functions of the
OwnerDAO.
SocialPredictionParametersDAOTest
o public void testFunctions(): It tests all the basic functions of the
SocialPredictionParametersDAO.
TrustedUserDAOTest
o public void testFunctions(): It tests all the basic functions of the
TrustedUserDAO.
VideoInfoDAOTest:
o public void testFunctions(): It tests all the basic functions of the
VideoInfoDAO.
UNaDaConfigurationDAOTest
o public void testFunctions(): It tests all the basic functions of the
UNaDaConfigurationDAO.
6.1.8 User Interface
The User Interface of the uNaDa exposes the graphic interface towards the end-users to
configure the access point, monitor their cache and administrate their device. It specifically
provides the following pages and functions:
The login page, in which the user logins to the HORST Facebook application with
his Facebook credentials, and acquires administration of his device.
The settings page, where the private and public SSIDs information are configured,
The overlay page, including the overlay-related information,
The social page, where the social prediction parameters can be manually defined,
The cache page, where the cache parameters can be configured, and the list of
prefetched contents is presented, and,
The administration page, where the uNaDa administrator can monitor all the tables
and block access to external users.
6.1.8.1 Interfaces
The login page, presented in Figure 48, provides the initial page of the uNaDa towards the
end-user. The end-user logins with his Facebook credentials, and gains ownership of the
uNaDa, and initializes the social and overlay monitoring functionalities.
If the user has not registered with his Facebook credentials before, he is redirected to the
permissions page presented in Figure 49, where he must accept the HORST Facebook
application permissions.
Version 1.0
Commercial in Confidence
Upon successful login, the user is redirected to the uNaDa configuration page (Figure 50),
where he may change the private and public SSIDs and passwords, as well as configure
the monitoring and predictions intervals.
Additional configuration pages include the overlay page (Figure 51), where the overlayrelated parameters (bootstrap node IP address, port, chunk size, uNaDa location) are set,
the social page (Figure 52) where the social prediction parameters can be manually
configured, and the cache page (Figure 53), where the administrator can manage the
uNaDas local cache parameters (cache size, threshold size, social and overlay prediction
score thresholds) and contents.
Finally, the administration page, presented in Figure 54, provides all the necessary tables
and functions, so that the uNaDa administrator can modify and delete trusted users, video
information and feed items.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
6.1.8.2 Design
The uNaDa User Interface is a Web application designed and implemented based on the
Model-View-Controller (MVC) pattern, which was already described in the description of
SBox User Interface (Section 5.1.7).
The controller layer of the uNaDa Web application is implemented by the list of controlling
bean classes presented below, also providing their mapping to the respective pages:
AdministrationBean: administration page (Figure 54).
CacheBean: cache management page (Figure 53)
DemoBean: demo page.
LoginBean: login page (Figure 48).
SocialBean: social parameters page (Figure 52).
UnadaConfigurationBean: uNaDa configuration pages (Figure 50, Figure 51).
UnadaSessionBean: The user that handles the session of the Web application
and also the response from the Facebook server, upon permissions page (Figure
49).
Each *Bean class implements all the required functions to manage its respective page.
Specifically, the Web interface pages are used to insert, edit or remove specific entries
from the respective database tables, e.g. the UnadaConfigurationBean manages the
UnadaConfiguration table, calling the respective DAO methods. Figure 55 presents
such an example and is similar to all *Bean classes.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
the
the
the
the
Version 1.0
Commercial in Confidence
o admin.xhtml: The administration page (Figure 54) where the user can
monitor all the uNaDa database tables entries and delete all or specific
ones. The AdministrationBean provides the following functions:
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
6.2
End-User
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
The FacebookAccount package (cf. Figure 61) draws the Facebook login window on top
of the current activity when called. It also handles the communication with the uNaDa to
request the network configuration of the configured private network. Further, the network
configuration is stored in the CredentialManager.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
7.1
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
Therefore MUCAPS has a footprint in the following entities where it involves the following
SmartenIT components, as illustrated in Figure 67.
The SBox: hosts the MACAO Client block and its MARS Interface to the MARC.
Note that MUCAPS is a super set including the ALTO Server and Client. Physically,
the ALTO Server and the MACAO Client block may be located on different
machines,
The Overlay Manager in the uNaDa and DC: includes an AEPG invoking the
MARC,
The AEPG in the End User Entity (EUE): in cases where an application gets a set of
candidate AEPs via an AEPG located in the end user entity. A MARC is hooked to the
AEPG that calls it to get the AEP ranking service from MUCAPS.
Thus the MARC is not in the SBox but linked to the Overlay Manager and EUEs
associated to the SBox. All decision burden is offloaded from these entities to the SBox in
the network.
7.1.2 Embedding MUCAPS on the SmartenIT architecture
The impact of MUCAPS on the architecture is shown in Figure 67 with following
modifications:
The ALTO component in the SBox is replaced by the set {MACAO block, MARS
interface and ALTO Server}. The ALTO Client is now in the MACAO block.
There is no more need to have an ALTO Client in end systems involved in overlay,
that is: Data Centers, uNaDas and End User Entities. Instead, the ALTO Client
there is replaced by the MARC that sends to the MARS in the SBox, MUCAPS
requests, that is requests to re-order the candidate AEP list w.r.t. ALTO based
network information.
The MARC is invoked by the Overlay Manager or the application of EUEs and
communicates with the MARS located in the SBox via a simple IP socket.
An alternative mapping of MUCAPS to the SmartenIT architecture is also described in
deliverable D3.3. It consists in replacing the ALTO (Client) component in the Overlay end
systems by the MARC, thus keeping the current interfaces established with
MUCAPS/ALTO replacing ALTO. This setting must however assume that the MARC can
be hooked with an AEPG function located in the Overlay Manager of the Data Center and
the uNaDa or in some appropriate place in the End User Entity.
The following SmartenIT architecture extensions are needed:
A placeholder is needed in the EUE for an AEPG that could call the MARC.
Interfaces should now be established between the MUCAPS/ALTO block and the
MARCs.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
7.2
In the sections that follow, the implementation and deployment details of the MUCAPS
mechanism will be presented.
7.2.1 Description of the MACAO related functional blocks
Figure 68 shows details on the functions involved in MUCAPS, while the operations
sequencing will be explained in a further section.
Version 1.0
Commercial in Confidence
Figure 68: Details on the functions involved in MUCAPS and operations sequencing.
The MACAO Request handling Server (MARS) InterFace (IF), bridges the MUCAPS block
with the MARC requesting evaluation and/or ranking of (S,D) pairs or application paths
and providing the initial selection of (S,D) pairs or application paths together with the ID of
the MACAO Service to request: typically Endpoint Ranking and/or Evaluation or Path
Ranking or Evaluation. The MARS IF returns the new evaluation and/or ranking of (S, D)
pairs or application paths done by MUCAPS. The MUCAPS block communicates with the
ALTO Server via its embedded ALTO Client.
The MARS receives and services requests issued, via an IP Socket, by a MARC that is
hooked to an AEPG function. For requests issued by un-trusted MARCs located in
public devices, the services include at least EP ranking and e2e Path ranking. These
services map respectively to the ALTO EP Cost Service and the ALTO Cost Map Service.
The evaluation services providing real-values are preferably restricted to trusted
MARCs since they provide numerical ISP scores or costs and are less transparent. It
returns to the MARC, via the MARS IF, the list of (S,D) EPs with requested evaluation
information: generically the rank of (S,D) pairs or e2e paths.
The MACAO Request handling Server (MARC) communicates with the MARS IF through
an IP socket, and exchanges a light data structure containing at least: the MACAO Service
ID, typically a Multi-Cost ranking or Evaluation Service, the list of application paths or
(S,D) endpoint pairs to evaluate, and fields for their values and/or rank. The MARC is
typically hooked to the function providing the initial selection of application endpoints or
paths, called AEPG for Application Endpoints Gathering Function, that can itself be
located in various places such as end user devices, the application network or its ISP
managed part. The MARC may customize its response to the calling AEPG function so as
to mimic the format of the values returned by the AEPG function so as to make the MARS
operations transparent to the applications.
The AMWS functionselects the ALTO metrics w.r.t. the application type and possibly time.
It also sets the weight associated to the metrics, w.r.t. application needs or context
Page 138 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
information related to the UEP such as access type. The AMWM can optionally fine-tune
the metric weights w.r.t. the network access type and possibly time. The AMWM maps
metric ID and weight values to the application and other information contained in the
MARC currently by using a Look Up Table. The values of this LUT are periodically
updated from an ISP managed AMWM configuration setting function.
The AMWS Config Settings function is a Graphical User Interface (GUI) integrated in an
end system also able to access the AMWS Function. This function is to be managed by
the ISP. Via the GUI, the ALTO ON the ALTO auto metric and the ALTO auto weight
modes are activated. As an option, it updates the values associated to the configurations
mapped to groups of AEPs. For example: a group of AEP identified by their IP addresses
is identified as Video Servers. AEPs of this group must therefore be selected w.r.t. a set of
metrics including typically routing cost and bandwidth score. However, in some
circumstances as low peak hours, the ISP may consider that bandwidth score does not
need to be involved in the selection, or with a lower weight. Thus, the LUT always points
to the same file but the latter may have a varying content. A simplifying option is however
to set the values of the configuration files of the AMWS function as constant and avoid
thus implementing complex interactions.
The Multi-Criteria AEP evaluation function (MCEVAL) ranks the EPs w.r.t. the metric
values and their weights. It uses a vector-based multi-objective ranking method, based on
the proximity of a candidate solution to some ideal solution.
The ALTO Server The ALTO Server serves requests received by ALTO Clients according
to the capabilities exposed in its Information Resources Directory and specified by the
ALTO protocol (RFC7285)
The ALTO Client The ALTO Client then sends a request to the ALTO Server to get cost
values among the source and destination (S,D) endpoints (or among end to end paths for
the Path Ranking MARS Service). Its behavior complies with the specifications of
RFC7285.
The ALTO optimization information base (AOIB) This function stores, according to their
freshness, Multi-Cost ALTO responses as well as the evaluation and ranking results on
paths and endpoints pairs, so as to faster serve frequently repeated queries on the same
set of (S,D) pairs or paths.
The ALTO agent (AoA) The AoA is a central function that is hooked with all the other
functions for the sake of modularity and robustness: it knows the semantics of ALTO and
the functions using the ALTO information, passes information and requests among the
entities it is hooked with. The AoA:
Receives a Service request via the MARS Interface (IF) along with the MARS
Service ID, the list of candidate paths or source and destination endpoints (S,D)
EPs,
Checks its ALTO optimization information base to see if the needed ranking is
already available and therefore still valid,
If no stored response is available, the AoA prepares the arguments for the MultiCost ALTO request to be sent by the ALTO Client: (ALTO Service ID, list of (S, D)
EPs, cost metrics, cost mode by default numerical).
o To identify the cost metrics, the AoA calls the AMWS function,
Version 1.0
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Figure 69: MUCAPS entities and interfaces: MARC integrated in a network located
AEPG, here a DNS server.
Figure 70 shows the sequence diagram between the entities involved in the MACAO AEP
ranking. The acronym MSR stands for MUCAPS Service Request and represents a simple
object structure named alto_service, exchanged between the MARC and the MARS and
specified as follows:
struct _alto_service
{
int service_type;
char* source_endpoint;
char** application_endpoint;
int num_of_application_endpoint;
};
int service_type: is the identifier of the service requested to the MACAO
block. For the MUCAPS implementation, it corresponds to the ranking service that
re-orders the set of AEPs.
char source_endpoint[1][]: is the list of IP addresses of User Endpoints
receiving the application resources. By default, this list contains 1 element which is
the User EP
char application_endpoint[][]: is the list of IP addresses of the AEPs.
o When sent from the MARC to the MARS, this list is ordered following the
DNS transaction
o When sent from the MARS to the MARC, this list is re-ordered by the
MACAO block, in decreasing order of performance level, so that the best
AEP is listed first.
Version 1.0
Commercial in Confidence
Figure 70: Interaction between entities involved in the MACAO AEP ranking.
The ALTO Client and ALTO Server communicate according to RFC 7285 [24]. The
requested ALTO Service is the Endpoint Cost Service as specified in RFC 7285 [24].
The communication between the DNS Server AEPG, the MARC, the MARS and the
MACAO Block is depicted in Figure 71.
The MARS has received the MSR structure _alto_service described above. It then
initiates a structure called struct _altoa_endpoint_evaluate_service_t specified
below.
struct _altoa_endpoint_evaluate_service_t
{
struct _altoa_alto_config_t* config;
struct _altoa_endpoint_evaluate_request_t* request;
struct _altoa_endpoint_evaluate_reply_t* reply;
struct _altoa_endpoint_evaluate_result* result;
int (*request_set)(struct _altoa_endpoint_evaluate_service_t* ep_eval_serv,
int service_byte,
endpoint_address* eps_src,
int num_of_eps,
endpoint_address* eps,
int num_of_metrics,
int* metrics,
double* metric_weights,
int topN);
int (*perform)(struct _altoa_endpoint_evaluate_service_t* ep_eval_serv);
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
the
Perform():
o Gets the performance values for the AEPs on the set of metrics int*
metrics from the ALTO Server via the ALTO Client.
o Calls the MCEVAL module to order the set of (eps_src, eps) w.r.t. their
metric value and weight.
Result-get(): shapes the resulting ranking for the MARS and MARC
communication semantics.
Version 1.0
Figure 71: Interaction between the DNS Server AEPG, the MARC, the MARS and the MACAO Block.
Page 144 of 191
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
The DNS Server code is the open source djbDNS suite implemented by D.J.
Bernstein, that allowed thus to integrate the MARC and its interaction with it,
The ALTO Server is a reference implementation in Java.
The functional behavior of MUCAPS is assessed by computing the numerical performance
of the selected EPs in different scenarios, mainly with or without MUCAPS. When
MUCAPS is activated, cases are further refined to evaluate performances when one or
more metrics are selected.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
8.1
Datacenter
Traffic
Redirector
Load
Balancer
Workflow
Manager
Hypervisor
Overlay
Manager
S-Box
iscs1
Inter-Sbox
Communication Service
ALTO
Energy
Monitor
eco1
Economics
Analyzer
Traffic Manager
Cloud Traffic Manager
UI
Social Analyzer
ntm1
Fixed/Mobile
Network Traffic Manager
DB
SDN Controller
soc2
Network
Analyzer
QoS/QoE Analyzer
uNaDa
DB
UI
Energy
Analyzer
ALTO
qos1
ove1
qoe1
top2
top1
Overlay Manager
Topology/
Proximity Monitor
QoS/QoE
Analyzer
Network Entity
qoe1
End User Entity
qos1
soc2
soc2
ene1
soc1
Energy
Analyzer
Topology/
Proximity
Monitor
Switching/
Forwarding
Energy Monitor
ene1
Switching/
Forwarding
Traffic Manager
Vimeo
QoS Monitor
Topology/
Proximity
Monitor
Social Monitor
Energy Monitor
Energy Monitor
QoE Monitor
QoS Monitor
Social Analyzer
Social Monitor
ene1
ove2
Cloud Traffic
Manager
soc3
ntm2
Facebook
ALTO
DB
UI
Commercial in Confidence
SBox
uNaDa
Overlay Manager
Offloading History,
Regression Model
Calculation
WiFi Access
Provisioning
Social Analyzer
and Monitor
Friendship Relation
Analysis
Fixed/Mobile
Traffic Manager
WiFi Mgmt on
Laptop
The basic logic is defined by the SBox, which is an entity providing a complete view of the
offloading acitivies in the network and serves as secure endpoint for terminating offloaded
connection via VPN. This endpoint can be provided by a Telco provider to extend the base
of hotspots or a social data provider such. The Overlay Manager component, the
offloading history of all access points is recorded and the regression model calculation as
defined in D2.2 [25] /D2.4 [26] is performed to calculate offloading scores for all users of
the system based on their provided service. Moreover, the SBox can analyze the social
relations between users and can also grant unlimited access to users based on direct
relationships, which is essentially the offloading as initially defined by the pure RB-HORST
mechanism. On the uNaDa, the Overlay Manager manages the provisioning of the WiFi
networks, while the Fixed/Mobile Traffic Manager handles the accessing of WiFi networks
to be used for offloading.
8.2
The interfaces are illustrated in Figure 74 and are described as follows: The abstract class
IOffloadingStrategy provides basic features for saving histories and manages the uNaDato-owner relationships. It owns an object of the type IOffloadingDataType allowing to
define different data types that can be used to estimate an access points performance
using a regression model as described in D2.2 [25] / D2.4 [26]. In particular, an accounting
for provided Volume, Bandwidth, and Session count, i.e., the number of offloaded WiFi
sessions at a certain uNaDa is implemented.
IOffloadingStrategy is implemented by IWithGracePeriodStrategy. This subclass of
IOffloadingStrategy performs a preparation of history data. Th class IncentiveStrategy
implements the regression model calculation using the GNU Scientific Library and
provides means to determine the service that should be provided for a given uNaDa and
mobile user relation.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
9.1
Datacenter
Traffic
Redirector
Load
Balancer
Workflow
Manager
Hypervisor
Overlay
Manager
S-Box
iscs1
Inter-Sbox
Communication Service
ALTO
Energy
Monitor
eco1
Economics
Analyzer
Traffic Manager
Cloud Traffic Manager
UI
Social Analyzer
ntm1
Fixed/Mobile
Network Traffic Manager
DB
SDN Controller
soc2
Network
Analyzer
QoS/QoE Analyzer
uNaDa
ALTO
DB
UI
Energy
Analyzer
qos1
ove1
qoe1
top2
top1
Overlay Manager
Topology/
Proximity Monitor
QoS/QoE
Analyzer
Network Entity
qoe1
End User Entity
qos1
soc2
soc2
QoS Monitor
Topology/
Proximity
Monitor
Switching/
Forwarding
Topology/
Proximity
Monitor
Social Monitor
ene1
Energy Monitor
Energy Monitor
QoE Monitor
QoS Monitor
Social Analyzer
Social Monitor
ene1
ove2
Cloud Traffic
Manager
soc3
ntm2
soc1
Energy
Analyzer
Energy Monitor
ene1
Switching/
Forwarding
Traffic Manager
Vimeo
Facebook
ALTO
DB
UI
Energy
End-User Entity
uNaDa
Measurement of
Measurement of
Version 1.0
Commercial in Confidence
Monitor/Energy
Analyzer
smartphone energy
efficiency
uNaDa energy
efficiency
The basic logic is implemented in the Energy Monitor/Energy Analyzer component of the
respective entity. In particular, a number of classes were implemented to record and store
system utilization data. Moreover, a set of hardware-validated power models were
implemented to convert the system utilization data into energy measurements.
9.2
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Datacenter
Traffic
Redirector
Load
Balancer
Workflow
Manager
Hypervisor
Overlay
Manager
S-Box
iscs1
Inter-Sbox
Communication Service
ALTO
Energy
Monitor
eco1
Economics
Analyzer
Traffic Manager
Cloud Traffic Manager
UI
Social Analyzer
ntm1
Fixed/Mobile
Network Traffic Manager
DB
SDN Controller
soc2
Network
Analyzer
QoS/QoE Analyzer
uNaDa
DB
UI
Energy
Analyzer
ALTO
qos1
ove1
qoe1
top2
top1
Overlay Manager
Topology/
Proximity Monitor
QoS/QoE
Analyzer
Network Entity
qoe1
End User Entity
qos1
soc2
soc2
ene1
soc1
Energy
Analyzer
Topology/
Proximity
Monitor
Switching/
Forwarding
Energy Monitor
ene1
Switching/
Forwarding
Traffic Manager
Vimeo
QoS Monitor
Topology/
Proximity
Monitor
Social Monitor
Energy Monitor
Energy Monitor
QoE Monitor
QoS Monitor
Social Analyzer
Social Monitor
ene1
ove2
Cloud Traffic
Manager
soc3
ntm2
Facebook
ALTO
DB
UI
Version 1.0
Commercial in Confidence
The implementation of the SDNDC mechanism affects the Overlay Manager in the
Datacenter and the Cloud Traffic Manager and SDN Controller in the SBox, which is
owned and operated by the ISP. Moreover, the network entities of the ISP are affected for
redirecting flows (Switching/Forwarding), as well as the QoE Monitor running on the End
User Entity.
Data Center
SBox
Network Entity
End-User Entity
Decides on
redirection of traffic
(jointly with Cloud
Traffic Manager)
Cloud Traffic
Manager
Decides on
redirection of traffic
(jointly with Overlay
Traffic Manager)
SDN/Contoller,
Switching,
Forwarding
Dynamic redirection
of traffic by
rewriting flows
Dynamic redirection
of traffic by
rewriting flows
Overlay Manager
QoE Monitor
The basic meachnisms of the implementation work as depicted in the Figure shown
below.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
redirection the DNS-record points to the next ISP owned OM. From this point on,
the request is handled within the ISPs network, only.
2) The OM terminates the TCP session of the user as if the OM would deliver the
actual content. In parallel the optimal Data Center (DC) surrogate capable of
delivering the content is calculated and selected by the OM.
3) Without requiring another HTTP redirect, the complete state of the TCP and HTTP
session representing the connection to the client is migrated from the OM to a
suitable DC surrogate. In order to ensure a seamless migration, the OM takes care
of signaling the edge Broadband Remote Server (BRAS) close to the client.
Extended with an OpenFlow switch the ows from and to the client are redirected to
ensure a working migration of the TCP ow.
4) Finally, the content is delivered to the client from the selected DC surrogate. The
process itself is transparent for the client only involving the resolving of a content
URL without any HTTP redirects. If necessary, the OM can reassign the flow to
another DC surrogate whenever necessary.
Version 1.0
Commercial in Confidence
The interaction and tasks of the VMs is depicted in Figure 84. The ISPs topology is
running on a dedicated VM (Mininet VM) using the Mininet tool. For experiments, this VM
can easily be substituted by a real network. Mininet allows for the emulation of OpenFlow
switch topologies. Core switches are emulated by means of the Open vSwitch software
switch (version 1.9) supporting OpenFlow 1.1.
In order to assess whether the approach is applicable in ISP networks, it is necessary to
evaluate it using realistic ISP topologies. A number of scripts running inside the Mininet
Test Environment VM sets up topologies parsed from well known ISP databases such as
TopologyZoo. An additional set of scripts (Topology/Route/Latency Setup) sets up the
topology, the routes based on shortest path calculation, and allows varying latency
between switches during the experiments. The setup relies on an OpenFlow controller
built on top of the Ryu controller software.
Moreover, the Mininet VM is dynamically congured to provide a number of virtual
interfaces, thus enabling access from the other VMs to an edge node of the topology. The
connection of edge nodes and virtual interfaces can be randomized between the
experiments to measure the variance caused by the topology. Furthermore, it is possible
to emulate congestion by dening ne grained parameters along a specic path.
A Python-based Ryu controller app communicates through a REST interface with the OM
application and pushes rules to the edge switches. The other VMs (OM, Surrogates and
End-User Entity VM) are connected to the virtual interfaces of the Mininet VM using a
software switch running on the hypervisor.
10.2.2 Implementation
Since the implementation is built aut of several distinct components Figure 85 provides an
overview. The complete system is a collaboration of distinct software parts which mainly
communicate via HTTP. Experiments are loaded via a shell script which then starts
automatically a predefined testing environment.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
REST interface enabling the remote conguration of the controller. Switch lookup by name
in the topology is provided by the switches application.
OpenFlow events are distributed through events like explained in the previous paragraph.
The topology application is responsible to emulate the nearly static routing behaviour in
ISP topologies and for the proposed dynamic rerouting. Based on the Mininet topology
and knowledge of the location of IP subnets the controller pushes OpenFlow rules to the
switches. Topology and changes can be dynamically submitted to the controller by using
the REST interface. The REST interface is shown in Figure 86 and only uses HTTP GET
operations for the sake of simplicity. Requests are used by the experiment to enable
routing for a new topology or set the migration rule for a number of clients. If, for example,
a Type of Service rewrite is deployed, a new Open Flow rule is submitted to the edge
switches.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
11 System Releases
As indicated in Section 4.2.1, the agile development model was adopted and the
development work for the two prototypes, DTM and RB-HORST was divided into small
release cycles. Each release cycle either introduced new features, or resolved issues from
previous releases.
The complete list of SmartenIT system releases, their changelog and release dates are
presented in Table 11-1.
Table 11-1: Summary of SmartenIT system releases
Version
Changelog
implementing
Release Date
Notes
1.0
Initial version,
mechanism.
DTM 15/07/2014
1.1
Open-source
1.2
Open-source
2.0
2.1
Open-source
3.0
Open-source
3.1
Will be released
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
as open-source.
The following sections will present the full list of features, issues and tests for each of the
aforementioned versions, excluding version 1.0, which was described in D3.2 [2].
Commercial in Confidence
Components
Environment
Configuration/Execution
Expected Outcome
Complete
chain
with
total traffic
volume
based
charging
rule and one
receiving
DC.
QOA,
NTM,
SBox
JUnit
test
case
with
mocked: DB,
SNMP
readouts and
SBox-SDN
client
ECA,
inter-
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
QOA,
NTM,
SBox
Basic Sanity
testing
for
release v1.2
ALL
ECA,
inter-
JUnit
test
case
with
mocked: DB,
SNMP
readouts and
SBox-SDN
client
Initialization of components
is performed as in previous
test but in this case there
are two receiving domains.
WP4 testbed
at PSNC.
SDN
controller
should
initially
receive
the
configuration data.
11.2.3 Issues
No major issues were identified during the integration testing. After issues were fixed v1.2
was released successfully.
Version 1.0
Commercial in Confidence
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
Version 2.0 integration tests included both tests performed in 2 uNaDas, specifically
Sergios uNaDa B and Georges uNaDa C, as well as JUnit tests, which integrate and test
certain components. Table 11-3 presents the description, involved components,
configuration and outcome of v2.0 integration tests.
Table 11-3: v2.0 integration tests.
Description
Components
Environment
Configuration/Execution
Expected Outcome
uNaDa Web
interface
UI,
DB,
Facebook
Application
uNaDas
A
and B of RBHORST
testbed
uNaDa
REST API
DB, uNaDaEnduser
interface
uNaDas
A
and B of RBHORST
testbed
HORST
Android
Application
+
uNaDa
REST API
Enduser
application,
DB, uNaDaEnduser
interface
uNaDas
A
and B of RBHORST
testbed
Social
Monitoring
SM,
DB,
Facebook
application,
Vimeo
Junit tests
Social
Analyzer
Junit tests
Prediction
application,
Vimeo
Cache
managemen
t
CTM,
Vimeo
DB,
Junit tests
Proxy
requests
CTM,
Vimeo
DB,
Junit tests
URI
rewriting
CTM, DB
uNaDa
SM,
Junit tests
DB,
uNaDas
Version 1.0
Commercial in Confidence
social
monitoring
Facebook
application,
Vimeo
and B of RBHORST
testbed
in both RPis.
Social Monitors in both of
them should retrieve and
fetch all required
information from Facebook
and Vimeo.
uNaDa
social
prediction
uNaDas
A
and B of RBHORST
testbed
Vimeo
proxying and
rewriting
CTM,
SM,
SA,
DB,
Facebook
application,
Vimeo
uNaDas
A
and B of RBHORST
testbed
Overlay
creation,
join,
advertiseme
nt,
prediction
OM,
CTM
uNaDas
A
and B of RBHORST
testbed
DB,
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Full
prototype
working
ALL
uNaDas
A
and B of RBHORST
testbed
Version 1.0
Commercial in Confidence
11.3.3 Issues
Integration tests identified certain issues, which are presented in Figure 92.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Components
Environment
Configuration/Execution
Expected Outcome
Social
Prediction
ALL
Full
HORST
testbed
RB-
Overlay
prediction
(content
does
not
exist in the
overlay
nodes)
ALL
Full
HORST
testbed
RB-
Version 1.0
Commercial in Confidence
uNaDas.
Modify
the
overlay
prediction threshold each
time.
Overlay
prediction
(content
exists in the
overlay
nodes)
ALL
Full
HORST
testbed
RB-
Social and
overlay
prediction
(content
does
not
exist in the
overlay
nodes)
ALL
Full
HORST
testbed
RB-
Social and
overlay
prediction
(content
exists in the
overlay
nodes)
ALL
Full
HORST
testbed
RB-
11.4.3 Issues
No issues were found during v2.1 integration tests and v2.1 was released successfully.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
11.5.1 Features
Based on the updated version of DTM specification a set of JIRA issues was identified.
These are presented in Figure 94.
The major changes introduced in this version are the following:
support for 95th percentile billing rule;
added new system control variables and time schedule parameters;
added SDN Controller operation modes (proactive vs reactive);
compensation vector handling in Network Traffic Manager to reduce the number of
updates sent towards remote domains.
Components
Environment
Configuration/Execution
Expected Outcome
Complete
chain
with
95th
percentile
based
charging
rule and one
receiving
DC.
QOA,
NTM,
SBox
JUnit
test
case
with
mocked: DB,
SNMP
readouts and
SBox-SDN
client
ECA,
inter-
Version 1.0
Commercial in Confidence
ALL
WP4 testbed
at PSNC.
11.5.3 Issues
No major issues were identified during the integration testing. After issues were fixed v3.0
was released successfully.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Components
Environment
Configuration/Execution
Expected Outcome
Complete
chain
with
95th
percentile
based
charging
rule,
advanced
operations
when
R
vector
QOA,
NTM,
SBox
JUnit
test
case
with
mocked: DB,
SNMP
readouts and
SBox-SDN
client
ECA,
inter-
Version 1.0
Commercial in Confidence
achieved on
link and one
receiving
DC.
Basic Sanity
testing
for
release v3.1
ALL
WP4 testbed
at PSNC.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
11.6.3 Issues
No major issues were identified during the integration testing. After issues were fixed v3.1
was released successfully.
Version 1.0
Commercial in Confidence
12 Summary
In this deliverable, we reported the final outcomes of WP3: the final system architecture,
the final implementation framework, the two integrated and released prototypes, DTM and
RB-HORST and the complete list of their system releases, as well as the standalone
implementations, MUCAPS, vINCENT, MoNA, and SDNDC.
The final SmartenIT architecture was finalized and documented in D3.3 [3]. The two
released prototypes, as well as the presented standalone implementations deploy a
subset of the defined architectural entities, components and interfaces, in order to fulfil
their goals and functionalities.
A common implementation framework has been agreed and set up since the beginning of
WP3 and has been documented in D3.2 [2]. The agile development and continuous
integration concepts were adopted, aiming at 2-month release cycles and rapid code
development, and issue resolution. In addition, certain tools were deployed to support
these concepts: a Subversion source code repository, a JIRA issue management
platform and a Jenkins continuous integration server were deployed in PSNCs premises.
The first integrated SmartenIT prototype is the DTM, which maps to two architecture
entities: the SBox and the SDN Controller. SBox includes the following components: The
QoS Analyzer retrieves the required SNMP measurements from the network entities, the
Economic Analyzer calculates the reference vector based on links costs and the Network
Traffic Manager calculates the compensation vector and also coordinates the interaction
with the other entities (remote SBox, local SDN Controller). The inter-SBox
Communication Service is responsible for sending and receiving the calculated reference
and compensation vector to/from other SBoxes. The SBox-SDN executes the same
functionality towards the local SDN controller, and finally, UI and DB provide the
necessary interfaces to save and access required configuration. The SDN Controller is
built on top of Floodlight controller source code to implement DTM functionality, which
translates received compensation and reference vectors into flow rules. It also exposes
interfaces towards the SBox to receive these vectors and additional configuration
parameters.
The second integrated prototype is the RB-HORST, which implements two architecture
entities: uNaDa and End-user application. The uNaDa is a Java Web application which
consists of the following components: The Social Manager monitors the OSNs for useful
social information, while the Social Analyzer aggregates this information to perform the
social prediction algorithm and return the ranked list of contents, likely to be watched.
uNaDas AS hops are calculated by the Topology Proximity Monitor and are given as input
to the Overlay Manager, which sets up the peers overlay network, advertises and
prefetches content from other uNaDas and executes the overlay prediction algorithm. The
Cloud Traffic Manager is the coordinating component of the uNaDa, which receives the
results of social and overlay prediction algorithms, prefetches the most-likely to be
watched, and also manages the uNaDas cache. DB and UI are components which
support the other components basic functionalities, while the uNaDa-End-User interface
exposes an interface towards end-user applications, to authenticate and receive SSID
credentials. The End-user application is an Android application which is used by the endusers to connect to a remote uNaDas private SSID, using their Facebook credentials. The
RB-HORST Android application has been released in the Google Play Store [40].
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
All the aforementioned tools and procedures aimed at and ensured a commercially
developed and integrated prototype, following industry standards. Three major (1.0, 2.0
and 3.0) and four minor (1.1, 1.2, 2.1 and 3.1) versions of the SmartenIT software were
released by the WP3 integration team, implementing new features and fixing bugs of the
DTM and RB-HORST mechanisms. For every released version, certain test cases were
designed and finally performed in the integration testbeds, validating the prototypes
functionalities and operation. Version 3.1 concluded the implementation work of WP3,
including the final DTM and RB-HORST prototypes.
The consortium aimed at making the source code of the project available to the general
public. Therefore, key releases of the SmartenIT project (1.1, 1.2, 2.1, 3.0 and 3.1) were
released as open-source to Github [39], under Apache v2 license.
Additional prototypes have been developed to address further goals of the SmartenIT
project, but were not integrated to the DTM or RB-HORST prototypes. MUCAPS optimizes
the overlay application traffic by involving awareness on the underlying network topology
and on transport costs, proposing ALTO protocol extensions. VINCENT proposes and
implements an incentive scheme for users to open their access points to other users,
while MoNA focuses on reducing the energy consumption of end-users mobile devices.
Finally, the SDNDC mechanism complements standard DNS based redirection used by
many cloud service providers and CDNs by allowing the migration of high-volume flows
between surrogates in the backend.
Version 1.0
Commercial in Confidence
Objective
No.
O3
Specific
Deliverable
Number
Timely
Achievable
Relevant
Mile Stone Number
Framework and
mechanism engineering
D3.2
Implementation
Advanced
MS3.4, MS3.5
Architectural integration
D3.2
Implementation
Complex
MS3.4, MS3.5
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Finally, this document addresses the prototyping SMART objective O3.4, with the
implementation of the MoNA mechanism, which monitors and reduces energy
consumption in end-users mobile devices.
Table 13-3: Prototyping SmartenIT SMART objectives addressed.
Objective
ID
O3.4
Measurable
Specific
Timely
Achievable
Relevant
Prototyping
Highly relevant
output of
relevance for
users
Metric
Number of options
identified to monitor
energy consumption on
networking elements and
end users mobile devices,
investigation on which
options perform best
(yes/no)
Version 1.0
Project
Month
M36
Commercial in Confidence
14 References
[1]
The SmartenIT project: Deliverable D3.1 - Report on Initial System Architecture; April
2013
[2]
[3]
[4]
[5]
[6]
[7]
Android - a mobile operating system based on the Linux kernel that is currently
developed by Google, online. Available at: http://www.android.com/
[8]
[9]
[10] GitHub, a web-based Git repository hosting service. Available at: https://github.com/
[11] Atlassian JIRA, online. Available at: https://www.atlassian.com/software/jira
[12] Jenkins open source continuous integration server, online. Available at: http://jenkinsci.org/
[13] Eclipse Jetty, online. Available at: http://www.eclipse.org/jetty/
[14] SQLite - SQL database engine, online. Available at: http://www.sqlite.org/
[15] The
H2
Database
Engine,
http://www.h2database.com/html/main.html
online.
Available
at:
framework,
online.
Available
at:
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
[24] Alimi, R., Penno, R., Yang, Y., Kiesel, S., Previdi, S., Roome, W., Shalunov, S., and
R. Woundy, "Application-Layer Traffic Optimization (ALTO) Protocol", RFC 7285,
September 2014.
[25] The SmartenIT project: Deliverable D2.2 - Report on Definitions of Traffic
Management Mechanisms and Initial Evaluation Results; October 2013
[26] The SmartenIT project: Deliverable D2.4 - Report on Final Specifications of Traffic
Management Mechanisms and Evaluation Results; October 2014
[27] Facebook, online. Available at: https://www.facebook.com/
[28] Vimeo, online. Available at: https://vimeo.com/
[29] TomP2P, a distributed hash table which provides a decentralized key-value
infrastructure for distributed applications. Available at: http://tomp2p.net
[30] Raspberry Pi - a low cost, credit-card sized computer, online. Available at:
http://www.raspberrypi.org/
[31] The SmartenIT Consortium: Grant Agreement for STREP: Annex I Description of
Work (DoW). 2012.
[32] Ubuntu - a Debian-based
http://www.ubuntu.com/
Linux
operating
system,
online.
Available
at:
at:
[36] N. Gautam, H. Petander, and J. Noel, A comparison of the cost and energy
efficiency of prefetching and streaming of mobile video, in Proc. MoVid, 2013.
[37] M. Wichtlhuber, R. Reinecke, and D. Hausheer, An SDN based CDN/ISP
Collaboration Architecture for Managing High-Volume Flows, IEEE TNSM Special
Issue on Efficient Managementof SDN and NFV-based Systems, vol. 12, no. 1, pp.
406409, 2015.
[38] Global Internet Phenomena Report, Sandvine Inc., Tech. Rep., 2013.
[39] The SmartenIT project, The source code of the SmartenIT software. Available at:
https://github.com/smartenit-eu/smartenit
[40]
Version 1.0
at:
Commercial in Confidence
15 Abbreviations
ALTO
API
Application Interface
AS
Autonomous System
BG
Border Gateway
BGP
CTM
DA
Datacenter Attachment
DAO
DB
Database
DC
Datacenter
DHCP
DNS
DTM
DTO
ECA
Economic Analyzer
HTTP
ICC
Inter-Cloud Communication
ISCS
ISP
JDK
JSF
JSON
MIB
MoNA
MPLS
MUCAPS
NaDa
NanoDatacenter
NSP
NTM
OM
Overlay Manager
OSN
PC
Personal Computer
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
PoP
Point of Presence
QOA
QoS/QoE Analyzer
QoE
Quality of Experience
QoS
Quality of Service
RAM
RFC
SA
Social Analyzer
SBox
SmartenIT Box
SDN
SDNDC
SDN-based DC selection
SM
Social Monitor
SmartenIT
SNMP
SSID
STREP
TCP
TPM
UDP
UI
User Interface
UML
uNaDa
user NanoDatacenter
URL
VINCENT
Virtual Incentives
VM
Virtual Machine
WP
Work Package
Version 1.0
Commercial in Confidence
16 Acknowledgements
This deliverable was made possible due to the large and open help of the WP3 team of
the SmartenIT team within this STREP, which includes the deliverable authors presented
in the document control, and the internal reviewers Ioanna Papafili, Paolo Cruschelli and
Burkhard Stiller for their valuable feedback. Many thanks to all of them.
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0
Commercial in Confidence
http://www.juniper.net/us/en/products-services/routing/mx-series/
Version 1.0
Copyright 2015, the Members of the SmartenIT Consortium
Version 1.0