1734 Commits

Author SHA1 Message Date
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
Thomas Vachuska
afac1c61b8 Resizing a unit test that intermittently exceeds the default small size time limit.
Change-Id: I89775fc3520c925987a43127cc5c442e7be6214b
2018-08-13 17:03:00 +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
Jordan Halterman
19c123a77b [ONOS-7757] Support onos-local and embedded cluster configurations
- Refactor cluster.json to support internal/external nodes ('controller' and 'storage')
- Bootstrap embedded partitions when 'storage' nodes not present
- Update onos-gen-config script to generate cluster.json based on environment variables
- Update setup scenario to ignore missing $OCC# environment variables

Change-Id: Ia93b64e13d7a7c35ed712da4c681425e3ccf9fe9
2018-07-31 00:03:48 +00:00
Jordan Halterman
00e92da455 Upgrade to Atomix 3.0-rc5
* Upgrade Raft primitives to Atomix 3.0
* Replace cluster store and messaging implementations with Atomix cluster management/messaging
* Add test scripts for installing/starting Atomix cluster
* Replace core primitives with Atomix primitives.

Change-Id: I7623653c81292a34f21b01f5f38ca11b5ef15cad
2018-07-27 15:40:26 +00:00
Youngbo Sim
3c933ec287 bugfix: ONOS-7741
Change-Id: I0971ff4eac5517621071f20e87631740a32b1f7f
2018-07-25 16:43:34 +00:00
Carmelo Cascone
1e8843f8e3 ONOS-7251 ONOS-7264 Support for clone to CPU action in fabric.p4
Clone to CPU is available only for packets processed via multicast
groups. Can be changed in the future when implementation for clone
session APIs is available in PI and P4 targets.

Also:
- compile "fabric-full" profile and generate constants from it
- use interpreter to map logical ports to data plane port IDs

Change-Id: I7db30c08dcf69ed9c870748cce8a797bbd5d6f78
2018-07-25 14:44:32 +00:00
Charles Chan
b928b3ff42 Correct a log message in HostManager
Change-Id: I64897b85cd5aefe4b4a865c5cb2d52c191846b06
2018-07-24 17:10:59 +00:00
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
a73f1065a9 Translate only certain groups to PI
Change-Id: I71417e43ec456bce21a9abcc0609dc05a82b264c
2018-07-16 23:11:15 +00:00
jaegonkim
cbe1c5ed4b [ONOS-7681] IntentCleanup.resubmitPendingRequest() can not generate pendingMap PUT event, and IntentData processing does not happen.
Change-Id: I4bcaf21581d72e9715443f9089a2940bffdc6df0
2018-07-10 23:09:22 +00:00
jaegonkim
b914fcb0da [ONOS-7682] IntentManager.buildAndSubmitBatches overwrites intent operation of pending map with the intent opeation of current map
Change-Id: If5fd87f8caf14b4a668c78db2cd3999aa917cc54
2018-07-10 23:08:51 +00:00
Jordan Halterman
d04e344cd5 Implement service for mastership-based remote Java proxies
Change-Id: I36228fcc79b73550fbf5d6cbbc8b24e01d869957
2018-07-09 18:27:10 +00:00
Jordan Halterman
b8cace7ec9 Implement service for registering, managing, and operating on remote Java proxies over the cluster communication service
Change-Id: I4576e3554cfad08747eed847b73fe695e219f3b8
2018-07-09 17:25:11 +00:00
Charles Chan
eded688740 Set R-bit in neighbor advertisement if replying as a router
Change-Id: Ic51140cf7ab88064df0bc87fb4d1fbc976ce7bc7
2018-07-06 11:19:50 -07: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
Jordan Halterman
0a2bd45ad2 Add atomic mastership/term/backups method to MastershipService
Change-Id: I18c3aeaa5101c9ce08ff38fffd70eaec903a0f3e
2018-06-29 19:45:22 +00:00
Carmelo Cascone
96beb6fdd0 Refactored GDP and PipeconfManager to fix multi-node tests
Issue was caused by race condition in GDP between the first connection
task, and the periodic one (checking reachability of devices in the cfg).
The issue is fixed by serializing such tasks for the same device.

Moreover, this patch brings better error reporting and handling of
completable futures.

Change-Id: I8c3a685c368541d33395945159b45a5740a5a0c3
2018-06-29 15:30:25 +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
1da7a4d3cd Fixed UnsupportedOperationException in DeviceManager
Change-Id: Iaebbce0d86fce0d01899740d1708a4a573b78206
2018-06-27 23:01:16 +00:00
Carmelo Cascone
b37bddeea0 Fixed not relinquishing mastership on role response
Change-Id: I9dc1ad094df3e6ef624a5153f24bf977f7b35841
2018-06-22 17:25:46 +02:00
Yi Tseng
667538d4ea
[ONOS-7724] Incorrect priority check in PiFlowRuleTranslator
Change-Id: Ib927bd52959b3d128060960c5e048ea5afc7a52a
2018-06-22 02:19:23 +08:00
Carmelo Cascone
e6a9754787 Better logging when configuring the FlowRuleManager
Change-Id: I7da22b1bf796a7199acc5a55c21f6a5334f312d4
2018-06-20 20:44:46 +00: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
Charles Chan
ff79dd9169 Implement host probing retry with major refactoring
- Implement probe retry
- Switch to typical core/provider design pattern for HostProbingService
  and as a result decoupling the dependency between SR and HostLocationProvider

Change-Id: I33a15af580677ea376b421ac3e26f9821dcca844
2018-06-06 16:57:33 -07: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
95c9e0fdea Upgrage EasyMock to version 3.6
Change-Id: Ib87cf414ca849cb19dc68a416de1e236d917aa8c
2018-05-30 15:37:37 -07:00
Keesjan Karsten
2336889e82 Make the Basic pipeline more portable
This change makes the Basic pipeline compile better with different
compilers. One change is this: the type parameter for a v1model meter
instance cannot be a programmer-defined enum. This is because in P4_16,
enums don't necessarily have underlying bitstring types and the
language doesn't specify that enum members should be assigned a
numerical value in any given way.

Change-Id: Id2b758eb2b6e76aa708c2e03e7a001667efddb3d
2018-05-25 17:19:21 +00:00
Ray Milkey
fb1c762c71 Fix concurrent modification exception due to unlocked access to collection
Change-Id: I8af0759c37f87e958984afe5879747ee7aa385eb
2018-05-22 01:26:04 +00:00
Pier
68c025bda8 Fix testUninstallAndInstallNonDisruptive test
Change-Id: Id5f8cd5a3b270231ccadfcde5ad4934c5ee407e0
(cherry picked from commit 9f832343ebd760246928e54c86080227a1ebfdf4)
2018-05-16 06:02:15 +00:00
Thomas Vachuska
5b38dc079c Extending DeviceProvider interface to include triggerDisconnect method.
- extended interface with default method implementation
- modified DeviceManager to exploit the new provider feature
- refactored a number of device providers to use the new method
    instead of relying on indirect DEVICE_REMOVED events

Change-Id: Ib315357ef06463012fcf26bbe937c8cdccbf3a94
2018-05-15 16:03:05 +00:00
Ray Milkey
4ef245e8ea Fix NPE in DeviceManager for an offline device
Change-Id: Ib105b029efd0519c6ed54abf8e89c7be6c905987
2018-05-10 16:30:16 -07:00
jaegonkim
ab7e59f3e8 [ONOS-7646] IntentCleanup.cleanup() overwrites intent operation of pending map with the intent opeation of current map
Change-Id: I98825dc790bee845c4afcf795af13e81d685da1a
2018-05-10 16:53:22 +00:00
Charles Chan
07f15f2cad Fix ConsistentMapException.Interrupted and NullPointerException
- Moving time-consuming packet processing to a separate thread
- Re-use the group information when dealing groupMissing instead of query again

Change-Id: I01f1b43260f22dcb969a105f16d04d79c722146e
2018-05-09 13:28:13 -07:00
Thomas Vachuska
164ecf6019 Adding mechanism for device subsystem & providers to trigger device
reconnect in support of ONOS-7645 (device driver change)

- added device listener to OpenFlowDeviceProvider to properly disconnect switch
- removed device listener from OpenFlowControllerImpl
- augmented DriverManager to consult NetworkConfigService as a primary source

Change-Id: I1aa8e9cc7e81ff3af7a72145f4e51f3e32022806
2018-05-09 17:51:20 +00:00
Thomas Vachuska
f131e590f0 Partial fix for ONOS-6767.
- pruning removed annotation tombstones
- processing netcfg only on master node
- swapping priority of processing of geo/grid coordinates

Change-Id: Icade1032f94ea774136d863d388402c79094c5a7
2018-05-07 22:01:58 +00:00
Charles Chan
35b589c104 Increase flow obj timeout and remove pendingForwards and pendingNexts when the next failed
Change-Id: I6a1fde50db9184d87af20e3c605ff5b697e082b6
2018-05-02 20:00:44 +00:00
Charles Chan
0d4b8b3ab5 Add missing @Override tag
Change-Id: Ieaed0e44370efaec995fc19e3b333b5aefe87749
2018-05-01 16:29:07 -07:00
Saurav Das
9a55429ae1 Adding a component config to take down single homed host ports when all uplinks are lost.
In addition:
   - handle port updates that may be lost if mastership changes at same time
   - fix javadoc in DeviceService

Change-Id: I032909e8ab9564cf9c978b1d66abd3ab32c814d7
2018-05-01 15:49:55 -07:00
Charles Chan
971d7ba29e Move some functions from segment routing manager to interface service/manager
Change-Id: I7185cf70f7e5d723a63ac35296b8916558560c35
2018-05-01 15:41:49 -07:00
Charles Chan
320c6a502e Print flow objective error message
Change-Id: Ic4959fc86714b7e6ee7419d05d51bf6ce90fd221
2018-04-26 20:56:18 +00:00
Charles Chan
33f4a91efa Implement flow objective queue command
- View flow objecitve queus and caches
- Refactor flow objecitve service and remove deprecated method

Change-Id: I6bbd209a351e0d87c5ee518038b33f72dcb3058a
2018-04-23 14:29:13 -07:00
Charles Chan
45c19d734a Avoid head of queue blocking in InOrderFlowObjecitveManager
Change-Id: Ifec6f861634a0a7c335d0591861391b03c36f854
2018-04-23 14:29:13 -07:00
Thomas Vachuska
c616e17aff Fixing GUI to respond to server-side layout changes.
Change-Id: Ida1052d6bec4a92d29774ede47942410db189732
2018-04-18 15:56:17 +00:00
Ray Milkey
bca9049101 Starting snapshot 1.14.0-SNAPSHOT
Change-Id: I97bab4e31d2b701f015289eae29d0c58a4937685
2018-04-13 12:47:31 -07:00
Carmelo Cascone
181f3f46cc Fixed wrong LPM mask in PI flow rule translator
Change-Id: I5c8c67ae4b989ed326c6e17c0fe1e5745defd900
2018-04-12 01:05:00 +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
Jordan Halterman
3065ba35b5 Validate that cluster configuration intersects with existing nodes when forming cluster
Change-Id: I200b25f2e9ae3380ccd90a6b58cd697f1e3029b4
(cherry picked from commit 9a93304b03dfdd34d3679da1dd52fcc676307af2)
2018-04-10 22:49:17 +00:00