37 Commits

Author SHA1 Message Date
Ray Milkey
a218d43062 Merge branch 'master' into merge
Change-Id: Id77bb2de77dd288404c83e331b076aaf9aafacc5
2018-10-30 12:44:55 -07:00
Georgios Katsikas
db14847c2d Correctly set test URL in server device driver
Also, the parent DefaultRestSBDevice had a faulty testUrl toString.

Change-Id: I15d9432402aa00d453c3b09cbf5e5c05e82549eb
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-10-29 14:03:43 +00:00
Thomas Vachuska
22ea6126e4 Removing BUCK files and other Buck-related auxiliaries.
Change-Id: I23691380efcd9bce4906695605214ed59ada0e87
2018-10-24 20:02:31 +00:00
Ray Milkey
0b18b72872 Merge branch 'master' into merge
Change-Id: I163ecf699b554e33f4db938c66b73c9911e51135
2018-10-16 13:19:15 -07:00
Georgios Katsikas
43ec470873 Flow monitoring as default NIC rule action
This patch enables per-rule byte and packet counters
on server NICs. A bug fix is also applied related to
IP protocol matches.

Change-Id: I96ba16d84ecffbde181fb58bf33c43aabbd98612
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-10-12 08:49:40 +02:00
Ray Milkey
df521294ce Merge remote-tracking branch 'origin/master' into merge-master
Change-Id: I4608093c4400a313b253508ac6bc8a84ecba5c7e
2018-10-04 15:13:33 -07:00
Georgios Katsikas
da37cc84a8 NIC flow rules match IP prefixes
The server device driver's flow installer allows to
devise NIC flow rules on entire src/dst IP subnets.

Change-Id: Ia7683c7bc131788ecf3465b08588d0c9bf81b6e6
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-10-02 01:01:30 +02:00
Ray Milkey
86ad7bb5e7 [WIP] apps CLI changes for karaf upgrade
Change-Id: I283efc39c7d4f4b31344f1d2d0cdd2b98a60932d
2018-09-28 11:21:43 -07:00
Ray Milkey
d84f89ba3d [WIP] Upgrade ONOS to karaf version 4.2.1
Change-Id: I7cd40c995bdf1c80f94b1895fb3344e32404c7fa
2018-09-28 11:20:57 -07:00
Georgios Katsikas
973a265729 UI for server device driver
This patch introduces a graphical user interface
that visualizes the CPU utilization of server devices
using bar charts.

Code optimizations and a bug fix is applied after first
code review.

Additional bar plots are implemented, visualizing
average throughput and latency per core,
when these statistics are present.

Added external library in Bazel's BUILD file.

Fixed scaling and font issues in the UIs after getting
feedback from ONOS reviewers.

Change-Id: I92972ef871e6a91dd70cdffd8cd650f498ffca26
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-09-26 07:28:49 +00:00
Georgios Katsikas
042a0fc72f Optimized NIC rule deletion
Rather than sending one REST delete command per rule
the server driver batches multiple rule IDs into a
single delete command.

Also performed some memory optimizations and refactoring.

Smarter batching to avoid exceeding the memory constraints of
webservers.
Lowered the rule deletion batch size due to the message:
"Your HTTP header was too big for the memory constraints of
this webserver".

Batch size for rule deletion has become a configurable
property.

Change-Id: I3ff7a2a85bfa0c100d25da1ced3c83fad61edaf7
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-08-24 12:33:44 +00:00
Georgios Katsikas
36c3b49890 Small fixes in server driver
After pom deletion features.xml seems redundant too

Change-Id: Ieb24e0c17ac9851264332ecde03f88b8709fa6db
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-08-23 08:08:44 +00:00
Georgios Katsikas
fda6674230 Additional monitoring stats in server driver
This patch also performs some refactoring to make the
JSON parameters exchanged between the driver and the device
homogeneous (i.e., following the [a-z][A-Z]* pattern).

Code reviewed and minor refactoring.
Avoid exception when timing statistics are not present.
Handle device re-connections.
Server also reports a hardware queue index per core.

Addressed code reviewer's comments.

Change-Id: I6c9d0bbd5884267ee2fdb69bf50809694994c56d
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-08-22 16:44:31 +00:00
Ray Milkey
761e80a427 Remove pom files from ONOS
Change-Id: I53e2395466cba10222d638736635b11380421d98
2018-08-21 18:11:58 +00:00
Ray Milkey
312d987732 Starting snapshot 1.15.0-SNAPSHOT
Change-Id: I9239c7695f7faf6dc184a0ff54a34dedf4761b2d
2018-08-20 16:09:54 -07:00
ONOS Jenkins User
03e5521fba Starting snapshot 1.14.0-SNAPSHOT 2018-08-14 22:13:58 +00:00
ONOS Jenkins User
3594c24cb2 Tagging 1.14.0-rc2 2018-08-14 22:13:02 +00:00
ONOS Jenkins User
4e5f2d67ac Starting snapshot 1.14.0-SNAPSHOT 2018-08-13 23:16:37 +00:00
ONOS Jenkins User
cff0bd8922 Tagging 1.14.0-rc1 2018-08-13 23:15:43 +00:00
Ray Milkey
4867af2f9c Revert "Tagging 1.14.0-b1"
This reverts commit 78ce40093ac008fd6d169ab83d2d5961f91f6e31.

Change-Id: I8482f550c30f75d65333f6be9c9115a930abc56f
2018-08-10 16:53:10 -07:00
Ray Milkey
78ce40093a Tagging 1.14.0-b1 2018-08-10 11:16:44 -07:00
Sean Condon
5548ce618d Adding ServerSentEvents to Rest Southbound interface
Change-Id: I77411df608be8a1cab9d828db17202f88b969a0f
2018-08-10 08:56:58 +01:00
Georgios Katsikas
30bede5a8b Proper device state management in server driver
This patch complements Change 19229 to fix the issues
caused by multi-server deployments. Previously, only one
server device could be detected by ONOS due to the proxy field.
Also, when that device went offline, the driver did not notify the
RestController.
With this patch, the server device driver cooperates with the
RestController to provide a consistent server activity state for
multiple servers.

Addressed comments made by ONOS reviewers

Change-Id: Ifc0c556a2a5322fd2ee8b02065a2a507cf6b92fc
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-07-31 18:55:26 +00:00
Georgios Katsikas
3e6d0f04c3 Fixed address translation and rule removal bugs
This patch fixes two bugs in the flow rule programmable
module of the server device driver. The first bug was related
to the translation of IP addresses and masks into NIC flow
rule commands. The second bug was related to the command used
to explicitly remove a flow rule.
The first bug was detected after testing the server device driver
with large ACL configurations from Internet Service Providers.

Code review fixes applied.

Change-Id: I8f509e675e19aa05ca058b20cc5e53690c902693
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-07-26 17:19:07 +00:00
Georgios Katsikas
80e0b9fed4 Fixed NIC name to port number inconsistencies in server driver
This patch fixes some weak assumptions regarding the way the
server device driver maps NIC names and port numbers.
Also, some necessary refactoring and stdout message fixes are
committed.

Addressed comments from ONOS developers

Change-Id: I6730d971ddf8d4fe97c2d3bef75f1432e7a4592e
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-07-25 16:55:37 +00:00
Thomas Vachuska
98f4e2c7df Fixing DefaultNicFlowRule
Change-Id: If553999e36f9d82287851517dd83809d69c6c48b
2018-07-09 20:10:26 +00:00
Georgios Katsikas
70671b3253 Server driver implements FlowRuleProgrammable
This patch extends the server device driver with the
ability to manage FlowRule objects on the network interface
cards (NICs) of commodity servers.
With a minimal modification in an existing ONOS class (i.e.,
DefaultFlowRule.java), the server device driver re-uses the
FlowRule and FlowEntry concepts to implement a sub-class
translator that converts FlowRule objects into NicFlowRule
objects.
Currently this new feature supports a handful of possible
NIC rule actions but it can be easily extended in the future.

Addressed comment made by ONOS reviewers and fixed two bugs.
One bug was related to rule installation (ability to send
an array of rules at the same time), while the other bug was
related to the hash code of a NicFlowRule.

Refactoring of this driver according to ONOS reviewers's
comments.

Change-Id: Ie76947df120d6e0df86acf9e5917e237653a8cea
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-07-09 08:13:45 +00:00
Georgios Katsikas
d472a32e08 Refactoring and fixes in server driver
The fixes are related to the return values when
a device is not present. After this commit, empty
lists are returned instead of NULL to prevent exceptions.

Change-Id: I6ad03126a49dc6fe0f7afd55a860a9dba41d1cb0
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-07-09 08:10:55 +00:00
Georgios Katsikas
40ecef3be0 New Device type for commodity servers
This device type is now advertized by the server
device driver. Also, the ONOS UI maps this new device
type to a glyph.

Change-Id: Ib4147676474b43202bbdff595a0fa0520b70fe91
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-07-06 17:38:42 +00:00
Georgios Katsikas
9a5ed3abee RemoveControllers for server device driver
This method was not properly implemented but now
the driver can remove a list of designated controllers.

Refactoring was done according to received comments

Change-Id: I3f4c58d47da52305de491227ab44bd5add14041d
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-07-04 16:15:38 +00:00
Georgios Katsikas
2ebd8a0de2 Structural changes in Server Device Driver
This patch groups together Network Interface Card (NIC)-related
functionality in devices/nic folder because a subsequent patch
will further extend the functionality of NIC devices with the
ability to implement programmable FlowRules
(i.e, by implementing FlowRuleProgrammable).

Also, some common functionality is moved to BasicServerDriver,
thus removing redundancy from ServerDevicesDiscovery.

Removed forgotten dead code

Change-Id: Ic9088ad5a577608a628d5f62fbc1d08326801f3b
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-06-28 09:26:26 +00:00
Ray Milkey
5c9e2838e4 Build drivers with bazel
Change-Id: I033ac32b3ef8119fc65e046c821ff17f12709261
2018-06-27 23:34:20 +00:00
Ray Milkey
bca9049101 Starting snapshot 1.14.0-SNAPSHOT
Change-Id: I97bab4e31d2b701f015289eae29d0c58a4937685
2018-04-13 12:47:31 -07:00
Yuta HIGUCHI
53e4796d55 Deprecate potentially error prone constructor methods
Change-Id: I82d95c27dc7c4b1a6dcf5cc48a1c7583b5e30e2c
2018-03-05 20:43:39 +00:00
Ray Milkey
067c44bcba Fix SONAR problems
Change-Id: Id79866971b7b2c894babe45a69f22f44cf3584db
2018-02-26 22:04:06 +00:00
Ray Milkey
c6c9b17b7b Fix some small SONAR issues
Change-Id: I5accbeb3895e5a5e679146c9eb688232fbf0a6b6
2018-02-26 09:36:31 -08:00
Georgios Katsikas
8360098862 New SB driver for commodity servers
Monitoring enhanced with timing stats

Copy constructors for Rx filter values

Driver is updated to provide port statistics to the REST SB controller

Drastic changes to make the driver ONOS compliant. NIC statistics have become 100% compliant with PortStatistics

CPU statistics also compatible with the ONOS approach

Separated timing statistics

Style fix

NIC is included

Proper representation of a CPU. Also some refactoring

Removed unused import and added important comment

CPU vendor has become a class and the servers are now reporting more detailed CPU info

Fixed port statistics' counters for servers

Various fixes that lead to more stable behavior

Additional checks to avoid null pointer exception

Fixed potential casting issues

Updated pom with affiliation information

Updated pom with URL

Bumped rivers to version 1.12

Updated BUCK for version 1.12

NIC speed has become long and NICs are retrieved in a sorted fashion

Fixed warning

Timing statistics contain autoscale measurements

Fixed CPU vendor ID for Intel

Bumped Metron's drivers to version 1.13. Fixed origin and URL in pom.xml

Updated RestServerSBDevice to comply with the extended ONOS RestSBDevice

Total refactoring of the driver to become more generic (NFV -> Server).
Also properly separated the statistics API from implementation.

Refactored server driver and bug fix that occured when port statistics
were called before a device is properly discovered.
Statistics API and implementation are grouped again.

Removed unnecessary stuff from pom and BUCK files

Fixed checkstyle warning

Added short readme to pom.xml

New ControllerConfig behavior added

This patch adds an new ControllerConfig behavior to the server
driver, allowing external applications to get, set, and remove
a server's controller configuration.
Common functions and variables are also shared between the
two basic modules of the driver.

Fixed checkstyle warnings

Refactored controller configuration module

Consistent values returned by the methods of the driver

Unit tests for ServerControllerConfig behavior

Fixed preconditions for NULL and arguments

Improved documentation

Updated pom and BUCK

Addressed comments about sharing some more methods

Refactored the Common.java to become a base class
that extends AbstractHandlerBehaviour and can share
a unique instance of the RestSBController with child
classes. Also, after the removal of some deprecated
methods of the HTTP SB controller, I had to perform
some compatibility changes in the respective methods
of this driver.
The only problem is that my tests are now broken(??)
and I had to remove their code for now until I fix
the issues.

Expose some members and methods of BasicDriver

Renamed BasicDriver to BasicServerDriver

Change-Id: I0126adcb714f7e32695d546cf40a9de342722083
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-02-22 17:50:09 +00:00