927 Commits

Author SHA1 Message Date
Jian Li
654204c089 Support GENEVE tunnel type in OVSDB southbound
Change-Id: I9b93c14d93645ac40525c23bff368e0f81a8189d
2018-12-17 08:27:36 +00:00
Ray Milkey
fa066ed2b0 Revert "Adding support for TLS connections for gRPC clients"
This reverts commit 47a3aa697049bf53e8dd4cb76cf9ca262762a175.

Change-Id: I457594c3f423f276b9c49dbbaf068284a36ba9f1
2018-12-14 22:39:18 +00:00
Carmelo Cascone
6d57f32873 Fixed gRPC exception because of channel not terminated
Change-Id: I7a138938a1daa50ab65b6622a372c0275a351535
2018-12-13 23:20:35 -08:00
Brian O'Connor
47a3aa6970 Adding support for TLS connections for gRPC clients
This patch uses BoringSSL to negotiate TLS sessions under the hood.

Change-Id: I45b6871eb341bd67a230035a930f6a016d105e97
2018-12-14 03:41:04 +00:00
Carmelo Cascone
a46f554fb1 Fix runtime of P4-related stuff with new karaf
Change-Id: I139575d5b038224ca8ccce4ec71ec8a84b35dfeb
2018-12-12 23:41:01 -08:00
Carmelo Cascone
4277d4f553 Silently ignore devices without gNMI client
It is an indication that the device is not gNMI-enabled

Change-Id: Iede116cb839cb58c533dc709a50cc0f469f0997a
2018-12-12 22:19:38 -08:00
Yi Tseng
59d5f3efdf Add OpenConfig based port statistics discovery
Change-Id: I3e7d5683f8a51d06db18b644963044d204911346
2018-12-13 01:05:05 +00:00
Yi Tseng
e616d7553e Add gNMI device state subscriber
Change-Id: I20cb5e130f4e416bf8678aab2e5268faf24ad06b
2018-12-13 01:05:05 +00:00
Yi Tseng
d771648025 Cherry pick gNMI and Stratum related changes to this branch
Cherry picked commits:
20211 Update gNMI version and build script
20247 [ONOS-7829] Implement AbstractGrpcClient and AbstractGrpcClientControl
20233 [ONOS-7141][ONOS-7142] Add GnmiClient and GnmiController
20234 Refactor OpenConfig gNMI device description descovery
20260 [ONOS-7831] Implement GnmiHandshaker
20270 Add Stratum driver

Change-Id: I81ad8bce45251af5909cfcac0edbcfd11c8ebf1d
2018-12-13 01:05:05 +00:00
Carmelo Cascone
cb83181281 Reconcile the pipeline the old way if cookie is not available
Change-Id: If39490874cfb1738358ddf4fbbbee1a89010579e
2018-12-11 14:48:06 -08:00
Carmelo Cascone
b5324e7168 Improve fabric.p4 to reduce pipeline resources and refactor pipeconf impl
This patch affects both the P4 pipeline implementation and the
Java pipeconf.

P4 PIPELINE
- Less tables and smarter use of metadata to reduce inter-tables
dependencies and favor parallel execution of tables.
- Removed unused actions / renamed existing ones to make forwarding
behavior clearer (e.g. ingress_port_vlan table)
- Remove co-existence of simple and hansed table. Hashed should be the
default one, but implementations that do not support action profiles
might compile fabric.p4 to use the simple one.
- Use @name annotations for match fields to make control plane
independent of table implementation.
- Use @hidden to avoid showing actions and table on the p4info that
cannot be controlled at runtime.
- First attempt to support double VLAN cross-connect (xconnect table).
- New design has been tested with "fabric-refactoring" branch of
fabric-p4test:
github.com/opennetworkinglab/fabric-p4test/tree/fabric-refactoring

JAVA PIPECONF
This patch brings a major refactoring that reflects the experience
gathered in the past months of working on fabric.p4 and reasoning on its
pipeconf implementation. Indeed, the FlowObjective API is
under-specified and sometimes ambiguous which makes the process of
creating and maintaining a pipeliner implementation tedious. This
refactoring brings a simplified implementation by removing unused/
unnecessary functionalities and by recognizing commonality when possible
(e.g. by means of abstract and utility classes). It also makes design
patterns more explicit and consistent. Overall, the goal is to reduce
technical debt and to make it easier to support new features as we
evolve fabric.p4

Changes include:
- Changes in pipeliner/interpreter to reflect new pipeline design.
- By default translate objective treatment to PiAction. This favors
debuggability of flow rules in ONOS.
- Support new NextObjective’s NextTreatment class.
- Remove lots of unused/unnecessary code (e.g. async callback handling
for pending objective install status in pipeliner as current
implementation was always returning success)
- Gather commonality in abstract classes and simplify implementation
for objective translator (filtering, forwarding, next)
- New implementation of ForwardingFunctionTypes (FFT) that looks at
criterion instance values along with their types (to avoid relying on
case-specific if-else conditions to recognize variants of an FFT)
- Adaptive translation of NextObjective based on presence of simple or
hashed table.
- Support DENY FilteringObjective

Also:
- Fix onos-p4-gen-constants to avoid generating conflicting
PiMatchFieldId variable names.
- Install Graphviz tools in p4vm to generate p4c graphs
- Generate p4c graphs by default when compiling fabric.p4
- Use more compact Hex string when printing PI values

Change-Id: Ife79e44054dc5bc48833f95d0551a7370150eac5
2018-12-11 14:48:06 -08:00
Ray Milkey
fe6afd8c38 Sonar suggestions
Change-Id: I68d400185ffc885bf92b558a2565a49af149ef0c
2018-11-26 23:15:53 +00:00
Thomas Vachuska
d8e77950de Minor fixes in BUILD files.
Change-Id: I47eefbb9514fd89c7ac19c78659e98ab7e6cc7f9
2018-11-19 12:26:43 -08:00
Thomas Vachuska
52f2cd1520 Detangling incubator: virtual nets, tunnels, resource labels, oh my
- virtual networking moved to /apps/virtual; with CLI & REST API
- tunnels and labels moved to /apps/tunnel; with CLI & REST API; UI disabled for now
- protobuf/models moved to /core/protobuf/models
- defunct grpc/rpc registry stuff left under /graveyard
- compile dependencies on /incubator moved to respective modules for compilation
- run-time dependencies will need to be re-tested for dependent apps

- /graveyard will be removed in not-too-distant future

Change-Id: I0a0b995c635487edcf95a352f50dd162186b0b39
2018-11-13 22:14:50 +00:00
Jian Li
a05efc35ae Fix: configure the ovsdb to run as server mode by default
Change-Id: Iff3609a1ad9a51e478dcd7739c05c99682ff17ff
2018-11-13 14:08:18 +09:00
Ray Milkey
a349da9d6b Merge branch 'master' into dev-karaf-4.2.1
Change-Id: I3c87139d15508e16a15df62fe73590b2a2ef7a04
2018-11-07 16:20:46 -08:00
Yi Tseng
5f7fef58a2 [ONOS-7831] Implement GnmiHandshaker
Change-Id: I2232a724a86955483321f9fda571907aa2cb615a
(cherry picked from commit a884274c5796e6d8e6a58743d2d7f5ef47124b78)
2018-11-07 22:42:49 +00:00
DongRyeol Cha
c29f9077cf Fix starvation of file descriptors due to netconf memory leak
If there are some errors during start the netconf session, SshClient is not freed so that sockets or file descriptors that made by SshClient are not freed as well.
It leads to starvation of file descriptors for onos so that onos cannot make network connections, spawn the threads so on.

This fix does not permit reusing of already closed NetconfSessionMinaImpl.

ONOS-7833

Change-Id: I1c8799cbbf8b28d23629123ad5d31ccca4a1fb3d
(cherry picked from commit 8f4c1e2ac5ed0033a472a4eb44fdfcba12145134)
2018-11-07 08:22:18 +00:00
DongRyeol Cha
8f4c1e2ac5 Fix starvation of file descriptors due to netconf memory leak
If there are some errors during start the netconf session, SshClient is not freed so that sockets or file descriptors that made by SshClient are not freed as well.
It leads to starvation of file descriptors for onos so that onos cannot make network connections, spawn the threads so on.

This fix does not permit reusing of already closed NetconfSessionMinaImpl.

ONOS-7833

Change-Id: I1c8799cbbf8b28d23629123ad5d31ccca4a1fb3d
2018-11-07 08:21:55 +00:00
Ray Milkey
5739b2cc0c Merge branch 'master' into dev-karaf-4.2.1
Change-Id: I260f0ee72fa87f1547fa790f031c4980176992ac
2018-11-06 14:11:34 -08:00
Yi Tseng
890dc3f03a
[ONOS-7141][ONOS-7142] Add GnmiClient and GnmiController
Change-Id: I6347da378d9e4b59a38e2efacc27599b96dc1515
2018-11-05 12:01:35 -08:00
Yi Tseng
2a340f7cc6 [ONOS-7829] Implement AbstractGrpcClient and AbstractGrpcClientControl
Change-Id: I39cba6834e7fe8d1b60b576b9934c0b3cfa7104b
2018-11-05 19:05:35 +00:00
Ray Milkey
e52652ced3 Merge branch 'master' into dev-karaf-4.2.1
Change-Id: I059c6a95489ff5cdc51dd7e98ba44a8415238bc2
2018-11-02 17:12:33 -07:00
Yi Tseng
e671fc9624 Update gNMI version and build script
Change-Id: I0f2d3c84a7a13111dc5da966b21836338d327929
2018-11-02 03:59:16 +00:00
Thomas Vachuska
07782d262b Eliminated old features.xml and app.xml files required by no-longer supported Maven build.
Change-Id: I060af47c85c1b83d35f6cc8e462d6d609872b15a
2018-11-01 20:41:00 +00:00
Ray Milkey
68032db277 Remove blueprint files for 3.0 karaf CLI
Change-Id: I017db2a3c66cea8f0f7c568e5d4f3f302170936d
2018-11-01 20:39:23 +00:00
Thomas Vachuska
00b5d4fee0 Removing commented out @Property annotations from the drivers, protocols, pipelines and providers.
Change-Id: I4cabc5a53c93b778824c72cebbce0ec49700eade
2018-10-30 23:43:55 +00:00
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
ghj0504520
ed7340c7c2 ONOS-7797 Support adding an arbitrary number of members to an existing P4Runtime group
Change-Id: I7b9ed589ca15957ee1b2780934a6da8e998bace3
2018-10-27 00:25:03 +00:00
Ray Milkey
956bb1691a Merge remote-tracking branch 'origin/master' into dev-karaf-4.2.1
Change-Id: If611105632e508cb17352c6f5b1cbcfd85f716d1
2018-10-26 10:53:44 -07:00
steven30801
7632e150e1 [ONOS-7596] Support reading table entries with counter data in P4Runtime
Change-Id: I85bacb1697a6c881dd69ba74a2162c73ec0b8aee
2018-10-26 17:25:13 +00:00
Thomas Vachuska
22ea6126e4 Removing BUCK files and other Buck-related auxiliaries.
Change-Id: I23691380efcd9bce4906695605214ed59ada0e87
2018-10-24 20:02:31 +00:00
ghj0504520
ec1a420030 ONOS-7810 calculate cookie field when pipeconf registered
Change-Id: Iea29fc447b34c49d4e8fcc831812385459c1ccbb
2018-10-24 19:59:22 +00:00
ghj0504520
92a48bfe9e ONOS-7810 use cookie field when checking the pipeline in P4Runtime
Change-Id: I777af9536889eb525f78493e2cbf43ff637b1a1f
2018-10-23 18:04:36 +00:00
Ray Milkey
d542568b21 Merge branch 'master' into dev-karaf-4.2.1
Change-Id: Iec1b8947c898b0bf10db8caece0c3a064d1c63ae
2018-10-23 10:50:43 -07:00
Andrea Campanella
9d5066b521 Fixing login issues on restconf web resource
Change-Id: I33677d1de5f8bd00b35dc7a7786ea190f1bed606
2018-10-23 16:20:24 +00:00
Ray Milkey
28b15ae6e0 Fixes to allow ONOS to build using built in bazel Java 9 JDK
Change-Id: I57b7b3b9a8a28a824b196a72a24c42cd9d04cc59
2018-10-19 17:08:37 +00:00
柯志勇10068695
55f80b6a23 The result of dis.getMessageDigest().digest() must be returned here. Otherwise, this method will lose its meaning.
Change-Id: I356a47386bde4c39eb5e1e95a3f7036a38137acd
2018-10-19 05:54:58 +00:00
Carmelo Cascone
03ae0acdd8 Bump version of P4Runtime to 1.0.0rc3 and P4 tools
Change-Id: I3082b4bd772d692830bd5af8e326a0fd5fb2f167
2018-10-18 22:30:46 +00:00
Ray Milkey
2d7bca1540 Move type specifiers from property name constants to the corresponding component annotations
Change-Id: Id5e3b669721ecf076a010cc4783b9e6b33e6fca0
2018-10-17 22:41:15 +00:00
Ray Milkey
0b18b72872 Merge branch 'master' into merge
Change-Id: I163ecf699b554e33f4db938c66b73c9911e51135
2018-10-16 13:19:15 -07:00
Ray Milkey
b5646e6f7a Use property constants for OSGi components for stores
Change-Id: I5d21075abb453d5bc54e02653d5a96746e6a074e
2018-10-16 18:52:22 +00:00
Ray Milkey
309f9a0944 Implement OSGi properties for openflow protocol
Change-Id: I1abee2716909c8d102fcfd53f10515d7e0439a9f
2018-10-16 17:24:58 +00:00
Ray Milkey
ec20a291b5 netconf protocol changes for karaf 4.2.1 CLI
Change-Id: Ica9b614c4ef4f8264df13bd119531bb7806c290b
2018-10-11 15:55:42 -07:00
柯志勇10068695
d7e3b6f5ad If FileInputStream is not close(), there will be a risk of memory leaks.
Change-Id: I9a0d6100ec26a83fd0e7cb4312246bdd8df28082
2018-10-11 14:30:56 +08:00
Ray Milkey
db57f1c326 Merge branch 'master' into dev-karaf-4.2.1
Change-Id: I86b9d80581cd76a7c20e05201023090f9692d1ab
2018-10-09 11:26:45 -07:00
Carmelo Cascone
e44592f246 More robust P4Runtime group handling
This patch solves the PENDING_UPDATE and PENDING_ADD_RETRY issue
observed on the ONS EU topology.

The P4Runtime action profile group handling has been re-implemented to
be robust against inconsistencies of the device mirror, which is now
periodically synchronized with the device state. Similarly, we implement
a routine in the P4RuntimeClient to cleanup unused action profile
members.

This patch includes also:
-  Refactor PI handle classes to allow creating handles without the
entity instance
- Use list instead of collections in P4RuntimeClient methods, as order
of updates sent and/or entities received from the device is important

Change-Id: I2e7964ce90f43d66680131b47ab52aca32ab55d2
2018-10-05 23:45:29 +00:00
Carmelo Cascone
50d195ffb3 Do not insert or delete default action entries in P4Runtime
Spec says:
the default entry for a table is always set. It can be set at
compile-time by the P4 programmer - or defaults to NoAction (which is a
no-op) otherwise - and assuming it is not declared as const, can be
modified by the P4Runtime client. Because the default entry is always
set, we do not allow INSERT and DELETE updates on the default entry and
the P4Runtime server must return an INVALID_ARGUMENT error code if the
client attempts one.

With this patch we convert insert or delete operations into modify ones
(unless specified by a driver property, to support non-compliant devices).
For delete, we use the interpreter to suggest a default action that is
the same as the one when the pipeline was originally deployed.

Also, we introduce the capability of synchronizing the device mirror
with the device state.

Change-Id: I3758fc11780eb0f1cf4ed5a295bd98b54b182e29
2018-10-05 23:45:18 +00:00
Carmelo Cascone
dca52babbe Increase gRPC inbound msg size for P4Runtime client
Change-Id: I51bb790a7b16c6e34066978e7044d51971f1b9d4
(cherry picked from commit b3e821d417eddc0c0345d7848a5e62ddd47ff5c3)
2018-10-05 23:39:38 +00:00