105 Commits

Author SHA1 Message Date
Carmelo Cascone
58136816ab ONOS-7739 Support for P4Runtime multicast programming
Design doc: https://docs.google.com/document/d/13rkQlwr49M-uxQQEuxCMP7BFEPY2gtQ850Hn3gUfesU/edit#heading=h.lzdayib259sq

Change-Id: Ief00bec89fe5a9784b0ee13fdaafa3ae58ab654f
2018-07-20 18:16:17 +00:00
Carmelo Cascone
f645e8406c Bump P4 tools to latest version
With support for P4Runtime multicast API

Change-Id: I6982c32187204b656a927d0f3d7f3a4b1b877e75
2018-07-16 20:31:32 +00:00
Carmelo Cascone
7044efd07e More bugfixes in P4Runtime subsystem
- NPE when removing agent listeners
- Don't block netcfg event dispatch thread on GDP
- Avoid unnecessary warn logs during disconnection in GDP

Change-Id: I612f7f7914579eea9ba393e952377a3933d92e8d
2018-07-06 13:01:36 +02:00
Carmelo Cascone
158b8c4f6b More improvements and bugfixes in P4Runtime subsystem
Most notably, we fix a bug in which some nodes were not able to find
pipeconf-specific behaviors for a given device. The problem is not
completelly solved but it's mitigated.

There's a race condition caused by the fact that the GDP updates the cfg
with the merged driver name before advertising the device to the core.
Some nodes might receive the cfg update after the device has been
advertised. We mitigate the problem by performing the pipeline deploy
(slow operation) after the cfg update, giving more time for nodes
to catch up. Perhaps we should listen for cfg update events before
advertising the device to the core?

Also:
- NPE when getting P4Runtime client
- Detect if a base driver is already merged in pipeconf manager
- Longer timeouts in P4Runtime driver and protocol (for slow networks)
- Configurable timeout in P4Runtime driver and GDP
- NPE when adding/removing device agent listeners in P4Rtunime handshaker
- Various exceptions due to race conditions in GDP when disconnecting
devices (by serializing disconnect tasks per device)
- NPE when cancelling polling tasks in GDP
- Refactored PipeconfService to distinguish between driver merge,
pipeconf map update, and cfg update (now performed in the GDP)
- Fixed PipeconfManagerTest, not testing driver behaviours
- Use Guava striped locks when possible (more memory-efficient than maps,
and with strict atomicity guarantees w.r.t. to caches).

Change-Id: I30f3887541ba0fd44439a86885e9821ac565b64c
2018-07-06 08:13:44 +00:00
Ray Milkey
dbd3821cf0 Checkstyle rule to prevent throwing the generic RuntimeException
This is a frequent cause of sonar breakage.

Change-Id: I54e0044447633a61bab560b020b57ed0a6875ebe
2018-07-02 18:03:00 +00:00
Carmelo Cascone
e5b2872eb6 Improve scalability of P4Runtime subsystem
The P4Runtime client was hanging (deadlock) on a master arbitration
request. As such, all other requests (e.g. table write) were waiting
for the client's request lock to become available.

Apart from fixing those deadlocks, this patch brings a number of
improvements that all together allow to run networks of 100+ P4Runtime
devices on a single ONOS instance (before only ~20 devices)

Includes:
- Asynchrounous mastership handling in DevicHandshaker (as defined in
the P4Runtime and OpenFlow spec)
- Refactored arbitration handling in the P4RuntimeClient
to be consistent with the P4Runtime spec
- Report suspect deadlocks in P4RuntimeClientImpl
- Exploit write errors in P4RuntimeClient to quickly report
channel/mastership errors to upper layers
- Complete all futures with deadlines in P4Runtime driver
- Dump all tables in one request
- Re-purposed ChannelEvent to DeviceAgentEvent to carry also mastership
response events
- Fixed IntelliJ warnings
- Various code and log clean-ups

Change-Id: I9376793a9fe69d8eddf7e8ac2ef0ee4c14fbd198
2018-06-29 13:59:27 +00:00
Carmelo Cascone
44448a52cc Allow re-creating clients for the same P4Runtime addr-port
Change-Id: Ib3de10d047f52dd28511e71385773d4b4a9ad74f
2018-06-26 12:23:29 +00:00
Ray Milkey
1f9e7dc1fe Fix maven build of P4 models
Change-Id: If7ed98261a1f3a18ea752e7ce401d155085650f3
2018-06-15 13:37:33 -07:00
Carmelo Cascone
6af4e17c53 Bumped supported revisions of P4 tools
Includes:
- Use new P4Runtime "v1" package names
- Removed VALID match
- New table entry priority spec (1 is min priority, not 0)
- Fixed p4c-bm2-ss to include arch flag
- Re-compiled P4 programs with more recent p4c (with updated p4info)

Change-Id: I05908f40eda0f0c755009268fd261fb8bcc9be35
2018-06-15 19:04:30 +00:00
FrankWang
2674e45220 Introduce Pi Register model to PI Framework
Change-Id: I7fae87d5b5ed5fff34b3addfc148cee6fc98137c
2018-06-13 13:00:50 +00:00
Yuta HIGUCHI
08392f45ec Fix gRPC dependency
Change-Id: Iddebec60218b555d8ffe39fcabd3daad0b776218
2018-06-09 07:15:37 +00:00
FrankWang
ea70de3094 [ONOS-7602]Implement support for P4Data in PI framework and P4Runtime southbound
Change-Id: I9c0c76fb29b8c3aa36f39bde62e825f0f0094253
2018-06-08 09:04:50 +00:00
Andrea Campanella
1e5734480f [ONOS-7584] Adding Capability of re-connecting to a P4Runtime Device.
Also addresses ONOS-7359

Change-Id: I47ec4ed429af82feb225ab5ac180b94c91366a53
2018-06-08 02:14:33 +00:00
Ray Milkey
a8cf59e03a move osgi_feature() and wrapped_osgi_jar() out of the bazel prelude
Change-Id: I0266ab4dbf0d0845ccbd940f2d0d3b230bd55260
2018-06-07 16:35:10 +00:00
Ray Milkey
32ea35cd0c Refactor of the OSGI bazel rules
- renamed the .bzl file to match the accepted snake case naming standard
- removed an uneccesary veneer method inside the rule implementation

Change-Id: I1e0f5aecf1d4b7b73e7376c1bb4c296960aaa5fc
2018-06-06 15:28:07 -07:00
Ray Milkey
3275ae800b Implement OSGI wrappers for proto jar files
Change-Id: Ic30d162093c383edc4abf5e9e9b96df669d804c8
2018-06-04 17:46:51 +00:00
Ray Milkey
816db1086a Add modules to Bazel build
cli
core
incubator/rpc
pipelines/basic
protocols/netconf
protocols/openflow
protocols/rest

Change-Id: I165b94a04ba893d97d944e5deb2746f54566503b
2018-05-31 15:44:36 +00:00
Ray Milkey
472d839809 Start bazel support for protobuf models and p4runtime build
Change-Id: Ib3beb70c1b401854444b106b4af3723cd40635e4
2018-05-29 21:26:37 +00:00
Ray Milkey
0bcdfd1e59 reformat bazel files to use Google coding standards
Change-Id: I320f0ca7ccb1b2247ccdd9fa58fefca7dad8a16f
2018-05-23 14:07:19 -07:00
Ray Milkey
7dac7dadf5 Initial builds using bazel
Change-Id: I38123b396a2ffda5f36cdca43f3ad1fa67a7ab52
2018-05-23 20:38:54 +00:00
Yi Tseng
8d355132da [ONOS-7605] Unable to modify groups on BMV2
Change-Id: I797366ac152dccac75f8ed82b62abe6e5da6dd3e
2018-05-22 18:57:19 +00:00
Andrea Campanella
a74bdba108 Bug Fixes and improvements to P4Runtime subsystem
Change-Id: Ib18b08e5e4b4d552949b119d7b1201dd4ca616f6
2018-05-16 17:05:41 +00:00
FrankWang
9ea7276ed9 minor fix for P4Runtime meter
Change-Id: Ieaf843f0fb86e9ea42c906940d4733c8733f399a
2018-04-17 15:36:49 +08:00
Ray Milkey
bca9049101 Starting snapshot 1.14.0-SNAPSHOT
Change-Id: I97bab4e31d2b701f015289eae29d0c58a4937685
2018-04-13 12:47:31 -07:00
Carmelo Cascone
384a93aada Updated pom.xml for P4Runtime proto build
Change-Id: I07a7c84c7b39be0c3777293cb3fd307e9f2f634e
2018-04-12 17:52:38 +00:00
Carmelo Cascone
81929aa0cf Bumped supported commit of P4Runtime and BMv2
Includes fixes for:
- ONOS-7593: Support for indirect resource Index type
- ONOS-7595: Removed ID from direct resources
- P4Runtime requires unset bits to be 0 in ternary field matches
- Incorrect parsing of flow rule byte counters
- Full entity names in P4Info with top-level control block (fixed only
	for basic.p4, other programs need to be re-compiled and PI IDs in
	respective pipeconf changed)

Change-Id: Ia19aa949c02e363a550e692915c6d6516a2d13d7
2018-04-11 19:04:45 +00:00
Carmelo Cascone
8a571af574 Support for bitwise AND/OR/XOR in ImmutableByteSequence
Also, minor refactoring of the fit() method to improve code readability

Change-Id: I826650c3fc45573c723d9d2dd8692da174d9ae08
2018-04-09 16:56:49 +00:00
Ray Milkey
76e33c6a84 Fix string format bug found by error prone
Change-Id: I2ede9a739be18bafd3c70c2d0e8023ae8209e57d
2018-04-05 15:08:23 -07:00
Yi Tseng
d28936e79d [ONOS-7500] Supports PiTableEntry with no action
Change-Id: I92a38b184d4ded539297f1d99e1405eea014bda0
2018-04-05 20:33:15 +00:00
Frank Wang
d7e3b4bc9d [ONOS-7051] Support for P4Runtime meters
Change-Id: Id71374af65aeb84b71636b4ec230dc6001a77a8b
2018-04-04 00:35:08 +00:00
Carmelo Cascone
5bc7e10bea [ONOS-7474] Fixed P4Runtime detailed error logging on write requests
Change-Id: I055a158a42508c0c7a72aa178aa12f9710c8a63d
2018-04-02 20:46:55 +00:00
Carmelo Cascone
4256bded84 Support for PI table entry with default action
Equivalent to a flow rule with empty selector

Change-Id: I5dcbc234e59e3d8647476ffa54d80f5861bad077
2018-04-02 20:37:59 +00:00
Yuta HIGUCHI
165afdd619 pom fix around gNMI
Change-Id: I6cd5190e7a9daa3d9050893d7b6195a01e549090
2018-03-06 20:28:45 -08:00
Ray Milkey
5c7d488269 SONAR suggestion - proper handling of InterruptedException
Change-Id: I67a93c064708c207d9ce83fac319682c2d17db60
2018-02-07 00:59:07 +00:00
Yuta HIGUCHI
e46f09365b Workaround to make mis work
- workaround to make rebuilt without cleaning

Change-Id: I74d444cc73e7304c3ca499d4a01964f28a7d8925
2018-02-06 18:47:33 +00:00
Yi Tseng
e67e14195a [ONOS-7437] Logs more detail from P4Runtime error message
Change-Id: Ia2cc2db332148313c9834cde8bb16484550e18f8
2018-02-01 23:57:05 +00:00
Yi Tseng
9539082d93 [ONOS-7393] Allows TableEntryEncoder decode action profile group and member id
Change-Id: Iffac08f2d0929144d438dcb61d381fbc2f6393ea
2018-01-24 09:48:29 -08:00
Yi Tseng
02c4c579f4 [ONOS-7392] Fix P4Runtime priority bug
Change-Id: I97aabb25ebf4f2d16c3c7f17f369a7744ef03994
2018-01-23 07:50:31 +00:00
Manjunath Vanaraj
59ad65730a [ONOS-7334] Using Cache Loader to remove stale entries in p4runtime
Change-Id: Ieead6e199faf23f5fa316516adab659d3e192950
2018-01-13 02:05:59 +00:00
ONOS Jenkins User
45d340c839 Starting snapshot 1.13.0-SNAPSHOT 2018-01-09 01:56:13 +00:00
ONOS Jenkins User
32ebb5add8 Tagging 1.13.0-b8 2018-01-09 01:54:28 +00:00
Mehmed Mustafa
3e269df520 Initial P4Runtime unit tests
Change-Id: I167fdd005f20ac8df00dd6e252f928896a4809c4
2017-12-17 10:59:23 -08:00
Ekber Aziz
123ad5d560 P4Runtime unit tests for api, ctl, model modules
Change-Id: Iac1b1ef6e274c355ce3a26cffbd8adcb39694f69
2017-12-17 08:09:22 -08:00
Ray Milkey
06e51b3e22 Fix protobuf compiler commit number dependency
Change-Id: I35c500a8d3a25496a1898b39fe21836da27feeff
2017-12-13 11:30:13 -08:00
Carmelo Cascone
b1936bd93f Bumped version of gRPC to 1.3.1
Change-Id: I7798476bd443a796e0e6a6e149ab8f66435ba4fa
2017-12-13 03:24:50 +00:00
Andrea Campanella
8bcd5863ff [ONOS-7311] and [ONOS-7197] Update ONOS to support most recent version of BMv2 and PI
Change-Id: Ie69cfe1946f3c9241dc7f59a64bd40005a063931
2017-12-12 14:03:36 -08:00
ONOS Jenkins User
61881df1ee Starting snapshot 1.13.0-SNAPSHOT 2017-12-12 21:19:45 +00:00
ONOS Jenkins User
d22dccc27f Tagging 1.13.0-b7 2017-12-12 21:18:01 +00:00
ONOS Jenkins User
4bf9e3a520 Starting snapshot 1.13.0-SNAPSHOT 2017-12-12 18:46:22 +00:00
ONOS Jenkins User
168ac92b8d Tagging 1.13.0-b6 2017-12-12 18:44:15 +00:00