1135 Commits

Author SHA1 Message Date
Ruchi Sahota
ef0761c211 Route reprogamming using group substitution during next hop movement
Change-Id: Idf8362dac522722ca67747e245bfd836e6ee6292
2019-04-10 14:53:49 -07:00
Carmelo Cascone
c32976e7d5 Various fixes in preparation of Stratum demo at ONS 2019
- Do not read counters with table entries for Barefoot drivers
- If driver behavior setup fails, log which operation we are aborting
- Remove unnecessary setup steps in Stratum-related drivers
- Always get clients by their key in gRPC-based drivers
- Log when P4Runtime group operation fails because of missing group in
store
- Fix polling of table entry counters for P4Runtime driver

Change-Id: Ic9bf19b76d8cb5a191aec24852af4410fea8b998
2019-04-08 23:00:54 +00:00
pier
0023ca98b3 Fixes npe during l2 flood creation
Includes an initial implementation of fobj context handling

Change-Id: Ic6e17ba2dc8a6ac97b4b0fda91470355d2216ef3
2019-03-31 17:08:26 -07:00
pier
cd2a3ef178 Implements buckets editing for l2 hash groups
Change-Id: I7247d59fcf230ecea5746e530dd2fc6bfeec08e5
2019-03-31 17:08:26 -07:00
Charles Chan
367c1c1e89 Implement L2 load balancing group in OFDPA driver
Also fix confusing comments and variable names
Note: suppress line number checkstyle for Ofdpa2GroupHandler

Change-Id: I00e56b679da1247a7c0ffba838c9df329ab54f11
2019-03-31 17:08:26 -07:00
oleksandr.yashchuk@plvision.eu
3dbcaafa0c Initial gNOI implementation added. Introduced system Time and Reboot RPC
Change-Id: I8accdcc6c1ff247408ce54490ceff3972fdf850f
2019-03-26 21:35:33 +00:00
Carmelo Cascone
a7e60c65c8 Various fixes for P4Runtime group handling
- Workaround for PI bug that ignores max_group_size
- Use max_group_size and not buckets size when translating groups

Change-Id: Id12a12311b20ca8fb4e785e1c5a4f0f4215d1bbf
2019-03-23 01:04:10 +00:00
Andrea Campanella
0169520552 Change in pattern for port recognition in Cassini Driver
Change-Id: I7651856e0fdf60db9e335ccff98d6f9f04b7613f
2019-03-19 20:42:05 +00:00
Carmelo Cascone
a1cabe50a5 Do not clear the P4Runtime device mirror when devices go offline
Implementations of P4Runtime like Stratum are expected to persist table
entries and other data plane state across reboots.

Change-Id: I4395e9e60b395bfca85c71c9d3bc604a2269a3ce
2019-03-19 19:51:43 +00:00
Andrea Campanella
c4953eb918 Minor fixes derived from OFC ODTN demo
Change-Id: I62afed0000e1a71df7cb0eee0f44b527aef62e4d
2019-03-19 19:00:10 +00:00
Andrea Campanella
70d1e1c924 Fix for NPE in arista Drivers
Change-Id: I460ac6d39636972b39d55e9796efe9f9a5928de9
2019-03-15 05:38:13 +00:00
Carmelo Cascone
b4863b3f40 Fix missing P4Runtime groups because of infinite delete/insert cycle
The fix is simple: when cleaning up inconsistent entries from device,
we update the mirror when the response is received, and not before
sending the request. Otherwise, if delete goes wrong, writes happening
right after reconciliation cycle might find an inconsistent mirror state.

When writing entries (e.g. apply group/flow rule) we keep updating the
mirror before sending the request to handled the case of back-to-back
writes.

Change-Id: I9e1cc5cac3f8746c67e93e2cee17aff78d3f1d7e
2019-03-14 06:10:59 +00:00
Andrea Campanella
b9e491b553 Fix for ADVA ols with TAPI
Change-Id: I91d0002dc67697d394f6a97ed7f97089054f4837
2019-03-13 00:44:42 +00:00
HelloONOS
0854c0427e Add bridge Config at Arista Driver
Change-Id: Iaea2a0641c8d05bfa1d2caca66dc81698650d995
2019-03-12 20:23:17 +00:00
Carmelo Cascone
95dcaa0eb7 Add new gnmi-standalone driver with fake mastership handling
gNMI does not support mastership. This driver allows controlling gNMI
devices without the need of other mastership-oriented protocols (e.g.
P4Runtime).

Change-Id: I300607fbcc99d3f066904a96e55c9cd954d5d0a5
2019-03-08 19:20:51 +00:00
Carmelo Cascone
1ae25061fb Add stratum-tofino driver
This patch also introduces a new driver property flag to indicate
whether a P4Runtime target supports default table entries or not.
Stratum targets built against the current version of p4lang/PI do not.

Change-Id: I1fbb57521516bee99057319ed1695cb05b68ee7c
2019-03-08 06:15:07 +00:00
Carmelo Cascone
ab5d41e8ab Add support for enabling/disabling ports for gNMI devices
This change also includes:
- Refactoring of gNMI protocol+driver to take advantage of the recent
changes to the gRPC protocol subsystem (e.g. no more locking, start RPC
with timeouts, etc.).
- Fixed Stratum driver to work after GeneralDeviceProvider refactoring
- Updated bmv2.py to generate ChassisConfig for stratum_bmv2
- Fixed portstate command to use the same port name as in the store

Change-Id: I0dad3bc73e4b6d907b5cf6b7b9a2852943226be7
2019-03-07 07:45:32 +00:00
Carmelo Cascone
6146946e16 Fix inconsistent update type during concurrent P4Runtime writes
This is achieved by optimistically updating the P4Runtime mirror using
the write request (instead of waiting for a response) and by serializing
building write requests for the same device.

This change requires updating the P4Runtime protocol classes to expose
the content of the write request.

It also includes:
- force member weight to 1 when reading groups (some server
implementation still fails to be compliant to the spec)
- remove unused operation timeout handling in GDP (now all RPCz have a
timeout)

Change-Id: Ib4f99a6085c1283f46a2797e0c883d96954e02e9
2019-03-06 19:28:42 +00:00
Carmelo Cascone
3977ea4d9e Refactor channel and mastership handling in P4Runtime
This (big) change aims at solving the issue observed with mastership flapping
and device connection/disconnection with P4Runtime.

Channel handling is now based on the underlying gRPC channel state. Before,
channel events (open/close/error) were generated as a consequence of P4Runtime
StreamChannel events, making device availability dependent on mastership. Now
Stream Channel events only affect mastership (MASTER/STANDBY or NONE when the
SteamChannel RPC is not active).

Mastership handling has been refactored to generate P4Runtime election IDs that
are compatible with the mastership preference decided by the MastershipService.

GeneralDeviceProvider has been re-implemented to support in-order
device event processing and to reduce implementation complexity. Stats polling
has been moved to a separate component, and netcfg handling updated to only
depend on BasicDeviceConfig, augmented with a pipeconf field, and re-using the
managementAddress field to set the gRPC server endpoints (e.g.
grpc://myswitch.local:50051). Before it was depending on 3 different config
classes, making hard to detect changes.

Finally, this change affects some core interfaces:
- Adds a method to DeviceProvider and DeviceHandshaker to check for device
availability, making the meaning of availability device-specific. This is needed
in cases where the device manager needs to change the availability state of a
device (as in change #20842)
- Support device providers not capable of reconciling mastership role responses
with requests (like P4Runtime).
- Clarify the meaning of "connection" in the DeviceConnect behavior.
- Allows driver-based providers to check devices for reachability and
availability without probing the device via the network.

Change-Id: I7ff30d29f5d02ad938e3171536e54ae2916629a2
2019-03-06 19:28:42 +00:00
Jian Li
de6eb18505 Support Nicira load extension, add L4 mod builder for group buckets
Change-Id: Ic16b4d853daed38792aeb199be732aa868c26bad
2019-03-04 18:12:06 +00:00
Jian Li
68925b1dc6 Add NiciraNAT serializer for NiciraCt to serialize/deserialize
Change-Id: I618cafa6cf2a71aa218879556ba51b2f21aa944f
2019-03-04 18:12:06 +00:00
Quan PHAM VAN
84ac18133d minor fixed on FlowRuleProgrammable for ODTN OFC demo
Change-Id: Ifb5106ce570b2615fbca1500631367a72c41f2d0
2019-03-01 13:13:40 +00:00
Ray Milkey
4f7e3631d2 Removal of deprecated APIs
- OchSignal constructor
- unfiltered connect point methods in single point to multi point intents
- useBackup() method from disjoint paths
- ChannelAdapter class
- getLastUpdatedInstant() method from cluster store
- switchWorkingPath() method from protection config behaviour
- getVersion() method from partition
- getFlowRulesById() method from flow rule service

Change-Id: I5c6c2f31725f7e7e44ac2abb18ce3fb96b09d93e
2019-02-22 18:01:45 +00:00
qphamvan
9aedb5685f adding FlowRuleProgrammable for Nokia's transponders
Change-Id: I77e80bc5746af82b737a16051b914d58fca327fc
2019-02-20 12:43:01 +00:00
Charles Chan
4a288d97da Revert "Make sure group is added before pushing punt table flow" due to the reason described in CORD-3241
This reverts commit f438bb68840b66dcee4aa4b0cc9c0056b4a544a8.

Change-Id: I710cbce0ccf76ac7c12de0a2ff1847052094bd58
2019-02-19 18:58:14 +00:00
Ray Milkey
5ec42085af Remove deprecated Port Statistics APIs
- Builder set of port number as an integer
- Query port number as an integer

Change-Id: Id4b4380c75237f293d2cc28a102748d416cf5c01
2019-02-14 17:43:07 +00:00
HelloONOS
4baf78adcb Arista Driver add log & Modification of some information
Change-Id: I37657bb906ae555ddfb59dd461bb8d659bba8f61
2019-02-14 13:30:13 +00:00
HelloONOS
cf21d99719 Modified so that all Pica8 OS can be used
Change-Id: I36ae80c3ab4b9da0f5b5093ce7af40e3e6f19a54
2019-02-14 13:30:13 +00:00
Andrea Campanella
2bdf204d41 [ONOS-7826] Adding a TAPI 2.1 Flow Rule programmable behaviour
Change-Id: I0b0070c4ca2a8c175b1fc6a4107566bb503e5b04
2019-02-12 09:27:35 +00:00
HelloONOS
275de30085 Cisco Rest Driver change class name because confusing information
Change-Id: Ibc1f5019a610fb994dc355b059eaf4d312015247
2019-02-12 16:22:29 +09:00
Carmelo Cascone
1678b0cec9 Add stratum-bmv2 driver to be used with BMv2 running with Stratum
Change-Id: I5d7d642459fecdb3ce3063557570faab5873dd40
2019-02-07 18:45:15 +00:00
Ray Milkey
6ee38b8688 Fixes for problems with starting and stopping apps in a minimal system
- Missing app dependencies
- Incorrect provider registrations
- Fatal execeptions thrown when external resources are not present

Change-Id: I3fdcf0666c88a47f399a722a9ab549d1104ff40e
2019-02-07 18:16:01 +00:00
Charles Chan
f438bb6884 Make sure group is added before pushing punt table flow
Change-Id: I5de426f0c3242e73e1da019a3a655668ed36d503
2019-02-06 00:02:14 +00:00
Charles Chan
ab591601af Deprecate CpqD pipeliners
In addition,
  - Update processVersatile to handle more selectors in ovs-ofdpa
    This also fixes the issue of XConnect ACL flow not being programmed correctly
  - Refactor the code a bit to reduce duplication

Change-Id: I190aad904d3e6625ff9f089c74e3b98077bbe4a3
2019-02-06 00:02:14 +00:00
Carmelo Cascone
4c289b731d New P4RuntimeClient implementation that supports batching and error reporting
The new client API supports batching and provides detailed response for
write requests (e.g. if entity already exists when inserting), which was
not possible with the old one.

This patch includes:
- New more efficient implementation of P4RuntimeClient (no more locking,
use native gRPC executor, use stub deadlines)
- Ported all codecs to new AbstractCodec-based implementation (needed to
implement codec cache in the future)
- Uses batching in P4RuntimeFlowRuleProgrammable and
P4RuntimeGroupActionProgrammable
- Minor changes to PI framework runtime classes

Change-Id: I3fac42057bb4e1389d761006a32600c786598683
2019-02-04 23:12:46 -08:00
Andrea Campanella
bb66e09d60 [ONOS-7892] Moving the ODTN SB cache to a distributed map.
Means to store the mapping between device config and ONOS core FR.

Change-Id: Idc5be6f3f40a142bdf5da79ce21c69ef5bfb12e7
2019-01-29 11:01:39 +00:00
hiroki
337c5526d1 ONOS-7867 FlowRuleProgrammable driver for OpenConfig Cassini
* Minor update of Transceiver and DescriptionDiscovery to support newly added Optical-Channel component
* Add OpenConfig config/state sample which can be used for initial value of emulator

Change-Id: I9497ec55965be6f3cc0f5b4b6270c77ebe50b4a8
2019-01-25 08:26:53 +00:00
Ray Milkey
0a9e0aa909 Sonar suggestions for avoiding NPEs
Change-Id: I935969ecaae590a1a1569defc5a3f143b76fa2e2
2019-01-23 23:16:40 +00:00
Georgios Katsikas
332985d141 Fixed bug on NIC wildcard identification
Also, handle the possibility that some flow rules might
not be installed.
Addressed comment made by ONOS member.

Change-Id: I7554f62b7bf10ac4a1301daca1886e1e8cb5d98a
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2019-01-22 09:11:26 +00:00
Carmelo Cascone
99c59dbb03 ONOS-7898 Action profile group/member refactoring
Also includes:
- New abstract P4Runtime codec implementation. Currently used for action
profile members/groups encoding/deconding, the plan is to handle all
other codecs via this.
- Improved read requests in P4RuntimeClientImpl
- Removed handling of max group size in P4Runtime driver. Instead, added
modified group translator to specify a max group size by using
information from the pipeline model.

Change-Id: I684bae0184d683bb448ba19863c561f9848479d2
2019-01-17 18:11:43 -08:00
Diego Garcia
aab99478e6 A new driver behavior call TapiDeviceLambdaQuery.
This new driver behavior queries the registered Open Line System (OLS) TAPI device to discover the map of available lambdas of the queried device's port.
The method queryLambdas returns a Set<OchSignal> which includes an entry for each available spectrum slot.
Currently only Dwdm 50Ghz grid spectrum type is implemented.
Additionally, the toString method of the OchSignal class has been modified to return the spectrum slot asociated to the OchSignal with it's actual ChannelSpacing value.

Change-Id: I1dfbc7fd7801f92588a5cf9b6316fa8dea01a85d
2019-01-16 12:52:17 +00:00
sdn
5d65d11a75 Modification of some information at driver related to 'Change 20742'
Change-Id: I16212ee879d579374abd14b7a2d1a73b52ec060e
2019-01-14 09:37:55 +09:00
Carmelo Cascone
cb4327a09e ONOS-7887 Rename action profile-related entities
Members can exist outside of a group. Previous naming was ambiguous
about this.

Action group -> action profile group
Action group member -> action profile member

Change-Id: I5097e92253353d355b864e689f9653df2d318230
2019-01-10 13:52:52 -08:00
Andrea Campanella
1c24fb9689 [ONOS-7885] Adding Terminal_device device Type
Change-Id: I42a8f8aeef73e1d51d4b5128b9eb7e8879d0418c
2019-01-10 08:44:26 +00:00
gyewan.an
eeb4cf559e Implementation Cisco rest driver for Nexus 900
Change-Id: Ic0eed72e4126ac2937336a6e357ca99bb445ae9a
(cherry picked from commit a7d7bd95a1cbb16311dac72b08fedc557850d2bb)
(cherry picked from commit c7d9077049a783f23f03e615bb7b517675a394a1)
(cherry picked from commit 386bd345717017b3ce66ee3c5a6222e0cd3bbc7e)
2019-01-09 12:46:48 +00:00
David K. Bainbridge
56e9023a33 ONOS-7806 - add support for path differentiator for netconf config
Change-Id: Ie4bdf4eb0348f9591b958bf89284026ed1c39074
2019-01-07 14:21:22 -08:00
Ray Milkey
f48a27494b Fix Sonar reported problem - static variable should be locked while it is updated
Change-Id: I9f5a2535d0e27633c04e1b8a534a286f06c17a23
2019-01-03 23:02:33 +00:00
Diego Garcia
09ab5e2d7d A new RestSB driver named TapiDeviceDescriptionDiscovery.java is included within onos-odtn drivers subproject. This driver accounts for the deviceDescriptionDiscovery behavior.
Removed unneeded imports and star imports, added explicit imports.
Removed logs or changed them to debug level.
Removed stalled references.
Changed pakage to org.onosproject.drivers.odtn.tapi.
Changed the class of port number to ONOS PortNumber.
Changed the store of mapping information between TAPI SIP's uuid and ONOS device port Numbers to annotations instead of a hashtable.
Removed CreatePortDescription function because it is unnecessary.
Created checkValidEndpoint fuction to identify just valid OLS SIPs.
Created getOchSignal fuction to complete the OchSignal info with the TAPI SIP information.

Change-Id: I863ea0ddb233dbcc0b82c5cc67beff1f072cb35a
2019-01-03 09:42:36 +00:00
Gamze Abaka
91a6defdcf Currently, only pmc-olt driver supports meter mod messages; other olt drivers such as voltha, nokia, celestica etc. must support meter mod. It is a requirement of bandwidth profile implementation of voltha project.
Change-Id: Id9ea369498cae2f861a83cb6b780802f0dbae19b
2019-01-02 15:34:44 -08:00
Georgios Katsikas
6dc11c1e80 Small extensions in server driver
First extension is the ability to prevent the installation
of a full wildcard rule, when only one rule is present per
NIC. Such a rule will redirect all the system's load on one
core, which is undesirable.
Second, we introduce the ability to detect the duration of
load on a core by converting the boolean field isBusy to
a timestamp busySince.

Addressed code review suggestions.

Change-Id: I631cf322ee3724d9f1f97246d4189b5b2a008a76
Signed-off-by: Georgios Katsikas <katsikas.gp@gmail.com>
2018-12-21 13:48:27 +00:00