2493 Commits

Author SHA1 Message Date
HelloONOS
0854c0427e Add bridge Config at Arista Driver
Change-Id: Iaea2a0641c8d05bfa1d2caca66dc81698650d995
2019-03-12 20:23:17 +00:00
Sean Condon
ee54576967 GUI2 Handle node additions and removals in Topology view
Change-Id: Ic16fc1325fe338e2136f1cc70febc621342be4f2
2019-03-11 09:44:10 +00:00
Jordan Halterman
b81fdc1168 Optimize filtering flow rule counts by state
Change-Id: I1e1d80b8e618743ee449162a081cf42e71c99abf
2019-03-06 17:59:20 -08: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
Andrea Campanella
b65d99dc84 Reverting change to print for OCHSignal
Change-Id: Ia3c5bc20d0b139837323e9b37010bc803e9fad2f
2019-03-05 20:09:52 +00:00
Jordan Halterman
2ef1cf725e Support DNS storage discovery via cluster metadata
Change-Id: I62499cb8d6bff57d780e7aaaf07eaa84ec332192
2019-03-05 00:08:10 +00:00
Thiago Santos
a4a17cb0b0 OutboundPacket: add inPort method
Allows to provide a different input port to be considered when emitting
the packet. It is useful on OpenFlow devices so one can use ALL or FLOOD
actions as output and not have the packet sent back on the input port.

Default is controller port, as it was before.

The required changes were also implemented in OpenFlowPacketProvider

Change-Id: I0a050b983b5de9935254599e8093dc59ad7a4ccf
2019-03-04 18:37:00 +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
Thiago Santos
4a69ef82e2 TrafficTreatment: add support for IP DSCP modifications
Allow modifying IP DSCP field in the headers.

Change-Id: Idd765f40f1baec810273536adcd56bf0e480217f
2019-03-04 18:00:15 +00:00
Ray Milkey
17801b4fca remove deprecated removeRulesById() method
Change-Id: I9aef85eb8a9146e11e800cb3e524fb2b4e19d4f9
2019-02-26 21:26:02 +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
Ray Milkey
312221c3b5 Removal of deprecated UI methods
- removed deprecated addProp() methods from property panel
- removed deprecated DateTimeZone based withZone() method

Change-Id: I251ca70e49f37714e60cb5312a444baa0ef88bd8
2019-02-20 20:53:46 +00:00
Ray Milkey
f632826bc2 Remove deprecated Node APIs
Change-Id: I3e235ff213fc376c02ac01eb43f72d72ab4d17f4
2019-02-20 20:53:18 +00:00
Ray Milkey
e1077f8ed7 Remove calls to deprecated public intent data constructor
Change-Id: Ic77c1d2cfb3e954bc0b7ee6a8a66d9c4b8167872
2019-02-20 20:52:38 +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
Ray Milkey
8efe27882c Remove deprecated APIs
- Storage Admin Service getPartitionInfo()
- org.onosproject.codec.ExtensionSelectorCodec
- org.onosproject.codec.ExtensionTreatmentCodec
- DefaultPortDescription builder withPortNumer()
- DefaultTableStatisticsEntry public constructors
- IntentData public constructors and copy constructors
- DistributedPrimitiveOptions withMeteringDisbled()
- PartitionService getActiveMembersMembers(), getDistributedPrimitiveCreator()
- DistributedPrimitive DEFAULT_OPERTATION_TIMEOU_MILLIS
- MapEvent.value()
- PartitionClientInfo.sessionId(), session()
- org.onosproject.store.flow.impl.DistributedFlowRuleStore

Change-Id: Id89870e6facf1e7fca24dd180bbd095139d001f3
2019-02-14 17:42:43 +00:00
Ray Milkey
47f09c5674 Remove deprecated FlowRuleExtPayLoad API
Change-Id: Id20e1e296670f8cc94b23c3fd2272a1c2de3990e
2019-02-13 23:17:40 +00:00
Ray Milkey
48ea5a09cc Fix bug where an ancillary provider was allowed to be created even if there was no primary
Change-Id: I910269240582a0eccc6e2d8e4de0c9c3f5e4ad65
2019-02-07 09:50:17 -08: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
Carmelo Cascone
e45902b280 Bumped P4Runtime to v1.0.0
Change-Id: Ie6419e45980a0394ce1e0439831f4b011a4d7487
2019-02-05 00:44:37 +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
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
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
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
Andrea Campanella
fa0f6cc700 Adding OLS device Type for ODTN project
Change-Id: Ia3472b47ea12d2f2f44de9cb88f20774881530ee
2018-12-19 16:26:38 +00:00
Charles Chan
a724c513ea Address StackOverflow by offloading cache listener to a separate thread
In addition,
- Address Thomas' comment in gerrit #20442
- Clean up redundant code

Change-Id: Iafb20895d3b338431c7faf9b810b6a6f6b055d92
2018-12-18 22:29:18 +00:00
Jian Li
654204c089 Support GENEVE tunnel type in OVSDB southbound
Change-Id: I9b93c14d93645ac40525c23bff368e0f81a8189d
2018-12-17 08:27:36 +00:00
Thomas Vachuska
bd8ddfe228 Refactoring audit subsystem to clean-up and eliminate back-dependency from core to CLI; still needs additional work.
Change-Id: I93c04c94f27b7b89c582b359eebe125458a573a7
2018-12-14 14:47:17 -08:00
Carmelo Cascone
af3a098b0c Sometimes we need to create multicast groups without replicas
Change-Id: I29dd07115efece0cc2d7d998317cfc3bfd7a1569
(cherry picked from commit 00552ba153a61e2d904e6fcf36d25330630bb8e1)
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
Charles Chan
b87d9f17b2 Allow NextObjective to refer to another NextObjective by NextId
Change-Id: I4bc5381be8241ddd765668275f02f795ba06a632
(cherry picked from commit 7fbd2b167ac2a8981255dc17aa53b2ba93073018)
(cherry picked from commit f261d5cbaf8e936b5e3b2f0c55d8e9e698922d2d)
2018-12-11 22:30:00 +00:00
alessio
3039bdbb06 [ONOS-7839] suggestedPath for optical connectivity intent with optical-rest support
Change-Id: I2b5093ac26149e450a14467c71656447233b5ce2
2018-12-06 21:37:20 +00:00
Rafał Szalecki
de5cf84e30 [ONOS-7842] Implement host annotation using netcfg
Change-Id: I2c5c516d642b34f11cae994b3fea31ebd7d76219
2018-12-04 17:56:16 +00: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
Ray Milkey
123f0e08ad Merge branch 'master' into dev-karaf-4.2.1
Change-Id: If6c7d5f1dc6434ac8ea2fd9716b8ebeee38daa50
2018-11-08 14:18:52 -08:00
Daniele Moro
3a6e1517e1 Added suggest path to PointToPointIntent
Change-Id: Ie8ae3af6bd97af3628334d37482e63196d15b094
2018-11-08 11:12:50 -08:00
DongRyeol Cha
ce65cc0055 Make a link depends on packet-in LLDP packet.
The ONOS does not process the incoming LLDP packet from switches.
The ONOS only process LLDP packets if LLDP packet has "ONOS Discovery" optional TLV.

So, this changes process incoming LLDP packet from switch and make a link information and onos can utilize it.

Also, this patch changes the requested appId of DefaultForwardingObjective generated by PacketManager.
So, AppId in result of flows cli will be printed to actual requested appId.

ONOS-7748

Change-Id: I2611b34655bec2369b8817ce0cd29fb2edbed845
2018-11-08 18:36:54 +00:00
Ray Milkey
a349da9d6b Merge branch 'master' into dev-karaf-4.2.1
Change-Id: I3c87139d15508e16a15df62fe73590b2a2ef7a04
2018-11-07 16:20:46 -08:00
Alan Lo
5e2b705713 Update spectrum pipeline config
Change-Id: I6d663e1a2851d812ab64cf6cb268c20914520570
2018-11-06 23:47:09 +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
Charles Chan
c88ebaa1e4 Save developers from wasting hours on wrong bucket type
Enforce bucket type to be consistent with group type
Update unit tests accordingly

Change-Id: Ia5f56ca4b5445268ebee09e321c34ed3f3f39827
(cherry picked from commit 5c00be8b143eb73d42b98820641da5c20e458579)
2018-11-02 23:24:02 +00:00
Thomas Vachuska
f566fa2503 Removing commented out @Property annotations from the core.
Change-Id: I336f6a21db531187b8e2fcfb51e7da315c615771
2018-10-30 23:43:48 +00:00
Ray Milkey
a218d43062 Merge branch 'master' into merge
Change-Id: Id77bb2de77dd288404c83e331b076aaf9aafacc5
2018-10-30 12:44:55 -07:00
hjtsao
1e8a1bd5ce [ONOS-7818] Implement a device behaviour to get table statistics. Make FlowRuleDriverProvider periodically call FlowRuleProviderService.pushTableStatistics().
Change-Id: Ife2b67b8c6c3582281704afe6f9a90538afbc798
2018-10-26 22:47:29 +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
hjtsao
1a4333c51c Enhance CLI command 'tablestats' to support P4 switch
Change-Id: Icb7bae93840bac1ad8d49240f61a4f5bf08dac4c
2018-10-26 17:26:35 +00: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