152 Commits

Author SHA1 Message Date
Luca Prete
86ac7d158d Moving IntentUtils to intent package
Change-Id: I258c1d988e4bea4b79bdb0c2235e02fe5404ea52
2015-12-03 18:56:40 +00:00
Pingping Lin
92ca4915ba [ONOS-3410] Let sdn-ip support default route
Default route is an important and frequntly used feature in BGP.
For example, network operators want to reduce the size of the route table.

The current sdn-ip does not support this feature. So this patch is to
let sdn-ip support this feature.

Change-Id: Ibb5afe3711522468e4902da2e090370db71b29da
2015-11-25 13:33:49 -08:00
Luca Prete
3401a3fe14 Making the IntentSynchronizer constructor public, so that an executor service can be passed from outside.
Change-Id: If96bd4dfa90222db36061d3f493338217d82c2de
2015-11-19 11:43:37 -08:00
Brian O'Connor
e1fb43b0fc Changing equals in IntentUtils to return false if
intents are different classes.

This replaces the behavior where we throw a runtime exception.

Change-Id: I063621b683af186611b18f87c24e852e80c31977
2015-11-19 19:00:21 +00:00
Luca Prete
6a4b39d514 Adding support to compare mp2p intents in intentUtils.
Change-Id: I7e8404f093e105379de0b55076a03723ba678fe9
2015-11-18 17:05:22 -08:00
Pingping Lin
c07781f50f when deactivate sdn-ip, also delete all relative intents
Change-Id: I7a6bd64b5a9525dc49ca2b9353fcc45dc9a16288
2015-11-13 19:03:05 +00:00
Pier Luigi Ventre
b38243fa41 - Fix the SDNIP IPv6 flows installation in the switches
Change-Id: Ida3653a06e6f452c7a185fd3ead92d036abc32d8
2015-11-13 18:44:25 +00:00
papazois
7d39a74a13 [GEANT] Add/remove-bgp-speaker/peer commands.
Change-Id: Iad8001095cc81be0c34c976adfa32ef9c7eff685
2015-11-12 02:22:43 +00:00
Luca Prete
00043dbbf3 Making IntentSynchronizer more generic to be used with other classes. Deleting SDN-IP nomenclature.
Change-Id: I779a8dab82fea00fb0d261d63b598d863693e332
2015-11-04 15:55:16 +00:00
Jonathan Hart
08105be3e6 PeerConnectivityManager: recalculate peering intents on configuration change
Change-Id: I05944f995342b2351115a613e02ad3e2ed830eb4
2015-10-27 18:49:41 +00:00
Jonathan Hart
9a426f8ade Generalize IntentSynchronizer and separate reactive routing code
* IntentSynchronizer can now handle any intent rather than having use
   case specific APIs
 * IntentSynchronizer does not generate or store intents anymore, it only
   perform synchronization
 * SdnIpFib generates and manages the procative route-based intents
 * ReactiveRoutingFib generates and manages the reactive intents
 * Unit tests have been tightned up to only test single components, rather
   than multiple components together
 * PeerConnectivityManager uses meaningful keys when creating intents

Change-Id: I4bb036ec8d056f43ece46f7dfc71d5e5a136b77d
2015-10-05 16:06:56 +00:00
Sho SHIMIZU
6cfc02d953 Use dianmond operator
Change-Id: I551dd9443b10ef17832f74a554486b7605e9866a
2015-09-11 18:53:17 +00:00
Ray Milkey
9b36d81ce3 Javadoc fixes
Change-Id: Id23ed2d576b2222194153be9d043ca5acafe67ae
2015-09-09 23:54:01 +00:00
Jonathan Hart
a86254889a Add optional 'name' field in BGP speaker config
Change-Id: If6f4567cd1a7c29b0424cc84bef050efe392544c
2015-09-08 23:55:25 +00:00
Jonathan Hart
4cb3988138 Moved ProxyArp, SDN-IP and BgpRouter to use new config format.
The new config format is based on the new network configuration subsystem.

Includes a few config fixes to NetworkConfigLoader and InterfaceManager.

Change-Id: Id7f766736decb7afb6b63c2731d3baba9fc7c764
2015-08-28 21:23:22 +00:00
Hyunsun Moon
cf732fb688 ONOS-2711 Replaced short to TpPort for tcp/udp ports
Change-Id: Ibf0474b5369d11d377fd33cf5ab48083cbca3308
2015-08-25 16:10:35 +00:00
Jonathan Hart
96c5a4ab2f ONOS-2513 Fix entire MP2SP intent failing on partial connectivity loss
* Added PartialFailureContraint to MP2SP intent to allow partial connectivity.
   This means the intent remains installed as long as at least one ingress point
   can reach the egress point.
 * Intents with this constraint are recompiled on ObjectiveTracker triggers
   even if not in FAILED state
 * MP2SP intent compiler can compute a partial tree if constraint is set
 * ObjectiveTracker recompiles intents on any link event
 * SDN-IP MP2SP intents now use PartialFailureConstraint

Ported from onos-1.2 branch.

Change-Id: I32eaa198fae1dfba021d9251c8f855573f0e1d7d
2015-08-13 17:38:55 +00:00
Jonathan Hart
e30fcda4cf Fix for SDN-IP installing wrong point-to-point intents.
Fixes ONOS-2514.

Ported from onos-1.2 branch.

Change-Id: I0d3d6012daa8dd2a45707a58cf6e745314f6dc24
(cherry picked from commit 0c763e9b064eac86d866b8fdfea25baec104324e)
2015-08-11 17:48:16 +00:00
Jonathan Hart
2a9ea49521 Fix bug where SDN-IP installs more intents than needed
Ported from onos-1.2 branch.

Change-Id: Ic085d5033105e0c688369a71de077c7541d26dbf
(cherry picked from commit 1258f86b564be76771c5cd6e1f807c4bc529168a)
2015-07-30 23:29:37 +00:00
Sho SHIMIZU
fe89d3ac3a Simplify the statement
Change-Id: Ie9b46c6c3f04322751109adc5896bb51c848a18a
2015-07-01 02:16:43 +00:00
Pingping Lin
8a524718cb paths should from bgp peer connect points for Internet-to-local traffic
Change-Id: I04c7f5b8efc9279ee3e15fb27435a2201cccb5f1
2015-06-25 20:32:46 +00:00
Jonathan Hart
75c470a9f4 Fix for logic error in SDN-IP.
Change-Id: Idf1f8713a3d61972f5585dcf307db44a6677aa46
2015-05-22 17:55:27 +00:00
Jonathan Hart
3cc2330018 Fix for NPE in SDNIP
Change-Id: I368db30e40b2081e92901e413f8c87e9db98e086
2015-05-14 23:24:32 +00:00
Sho SHIMIZU
3310a34163 Remove "public" to follow our convention
Change-Id: Ic5fa8744cbcb4c704780c8467ae0f31fce3327ce
2015-05-13 23:44:57 +00:00
Sho SHIMIZU
fbc80e5348 Pull out inner-classes from Criteria to be independent classes
Make constructors of sub-types of Criterion package private for
limiting instantiation only from static factory methods in Criteria

Change-Id: I1fb1e9d003288a778a49e758549a92b66bf3cfdf
2015-04-29 00:44:59 +00:00
Ray Milkey
34c959066d ONOS-533 Fix copyrights
- Any files created in 2014 and modified in 2015 got a copyright of
  2014-2015
- Used canonical form of 2014-2015 to be inclusive of extra years.
  Some files had 2014,2015

Change-Id: If9a133618873e4000b8f10299bde7c870eb1fbd5
2015-04-15 17:41:07 +00:00
Pingping Lin
c9e16bfa1d add a virtual gateway for reactive routing
There is no physical gateway in SDN network.
  However a host needs a gateway when it tries to communicate with a remote host.
  So we designed a virtual gateway for SDN network.
  The virtual gateway can have multiple IP addresses.
  Each IP address is used as the default gateway address of an IP prefix.
  We only configure one MAC address to the virtual gateway.
  You can choose any MAC address from the BGP speakers as the virtual gateway MAC address.
  We configure this MAC address staticly in the sdnip.json configuration file.

Change-Id: I2a72bef797fc55d25bb5473e8fca624ad659e1d1
2015-04-15 16:31:14 +00:00
Pingping Lin
e28ae4c801 sdn-ip reactive routing
This module can handle 3 cases:
   (1) one host wants to talk to another host, both two hosts are in SDN network.
   (2) one host in SDN network wants to talk to another host in Internet.
   (3) one host from Internet wants to talk to another host in SDN network.
   In all cases, we use MultiPointToSinglePointIntent.

Change-Id: I80dd954bd608e52b45b993f3c27e67636a7105d9
2015-04-07 12:31:07 -07:00
Ray Milkey
ebc5d22159 Refactor connectivity intent creation to use builders
- Each connectivity intent now has only one constructor
- Intent constructors are now private for leaf classes and
  protected for classes that can be derived from
- Each intent class has a Builder class that accumulates
  parameters for intent creation
- Each intent class has a public static builder() method
  to create a builder
- Each Builder class has a build() method to create the
  intent from the accumulated parameters
- Added keys to a few intent types that were missing them
- Tightened up usage of checkNotNull(), taking advantage of
  the return value to save some lines of code
- Modified callers to use the builders instead of directly
  calling the constructors

Change-Id: I713185d5ecbadbf51f87ef7f68fec41102106c78
2015-03-23 21:12:14 +00:00
Ray Milkey
3e3ec5f786 [Cardinal] Add builders for Intents and remove extra constructors.
Starting with PointToPoint intent to see how it looks

Change-Id: I5366a05d657ceaad18c03b95cd71f5d1107200e2
2015-03-18 22:17:54 +00:00
Pavlin Radoslavov
2aa1f32c84 Fixes related to SDN-IP intents:
* Use intent priority when installing multipoint-to-singlepoint intents:
   the loinger the routing prefix match, the higher the intent priority.
   This is needed to perform correctly the equivalent of longest prefix
   match in the switch.
 * Use intent priority for the point-to-point intents: the priority for
   this BGP-related control traffic is higher than the
   multipoint-to-singlepoint intents.

 * Use the appropriate Key when installing multipoint-to-singlepoint intents.
   The key is the network (destination routing) prefix address represented
   as a string.

Change-Id: Ic489a1e5f31adceb4c9d1dcea52293a2b3db0b79
2015-03-11 17:59:44 -07:00
Brian O'Connor
6b5281356b Adding emptyTreatment() and emptySelector()
Note: There was a change that adds a DROP action to
a traffic treatment if there are no other actions present.
To get a traffic treatment without the drop rule, use
emptyTreatment()

Change-Id: I1f23ed5e1fa7519eb94fcafa85facbad815d5e9c
2015-03-10 16:48:45 -07:00
Pavlin Radoslavov
87dd930f2e Use a cleaner mechanism to test whether an IP address or prefix
is IPv4 or IPv6.

Change-Id: Ia88f76be87a30573a50eeeedb78d98713ac1ae27
2015-03-10 13:53:24 -07:00
Pavlin Radoslavov
a853709a6b Fix IPv6-related bug in SDN-IP.
- Use the correct API to set an IPv6 prefix in the matching condition

Change-Id: I7911a7e886024bff5442821816e4481570ec8172
2015-02-23 20:06:24 +00:00
Jonathan Hart
2da1e603a9 Renamed routing packages to foo & foo.impl pattern.
Plus added some package-info.java files.

Change-Id: I0b68a7f4cea7a5f089b37b1a1c016d1c3b7a8702
2015-02-18 19:10:19 -08:00
Jonathan Hart
90a02c2539 Moved routing/bgp config into common routing bundle.
This allows the configuration to be used from multiple applications.

 * The class that reads the configuration file is now a service so that
   config can be consumed by components in other bundles.
 * Name of config reader classes has been generalized to RoutingConfigService
 * All config has been added to RoutingConfigService, instead of having
   two service interfaces like we did previously

Change-Id: Iaec9daf0f5b72abe2d6709fb75188d6d81947478
2015-02-18 18:52:35 +00:00
Jonathan Hart
cb726fc789 Fixed SDN-IP tests after ONOS-874 merge.
Change-Id: Ie14f64ecf7f9bc72120f837ef9cd2b8904cc4bd2
2015-02-17 11:01:33 -08:00
Brian O'Connor
532d91ccaf fixing import in IntentSyncTest
Change-Id: I7e7a87f9e012c96b1b64c02f6ec2fe1ec6c0215c
2015-02-13 14:23:56 -08:00
Jonathan Hart
b3b8a0aa7d Make SDN-IP submit route intents.
Change-Id: If0c7be8472fed46e48bfd22f9de4b15b8a8cf2ce
2015-02-13 14:16:21 -08:00
Ray Milkey
5ad3966707 Fix bug where the values of keys could change
Change-Id: I34993c413c3f928690701a055ec38c1e7029b473
2015-02-13 14:13:19 -08:00
Jonathan Hart
4fd4ebb9d0 Continue updating GossipIntentStore to new API.
Includes changes to ECMap to support generating timestamps based on values.

Change-Id: Ide55979aaa4f7757e67a6b3efed6e51d45ee318c
2015-02-13 14:12:30 -08:00
Ray Milkey
f9af43c2ea Refactoring of IntentId based APIs
- getIntent
- getIntentState
- getInstallableIntents

Change-Id: I6d2073dfa165e0e5adcef46fe5908b563b481a43
2015-02-13 14:10:55 -08:00
Sho SHIMIZU
4931ee5dc6 Delete unnecessary semicolon
Change-Id: I2eaa4d900342a665f6dc4731a298b30a9ec40696
2015-02-13 14:10:41 -08:00
Brian O'Connor
03406a4702 IntentStore interface changes
Change-Id: Ifa8728fb4c7edcc6d58a5e071f7252493ab2a578
2015-02-13 14:07:52 -08:00
Jonathan Hart
d24fafbc7c Move BGP listen port configuration to BgpSessionManager component
Change-Id: I445bff180740fededacaa59441fc53332cc3d482
2015-02-11 18:48:47 -08:00
Jonathan Hart
41349e9b46 Moved BGP code and Router code into their own bundle.
The main goal of this is to allow routing code to be used by multiple
applications.

Changes include:
 * Created an onos-app-routing bundle and moved BGP code and routing code
   into it.
 * Created an onos-app-routing-api bundle as a common API bundle between
   onos-app-routing and onos-app-sdnip, to prevent circular dependencies.
 * Moved API classes into onos-app-routing-api bundle.
 * Made Router and BgpSessionManager into OSGi components. This is not quite
   clean, because there is still a chain of start() method calls from SdnIp
   through to BgpSessionManager to preserve startup order. This should be
   revisted so components can be started using activate()
 * Created BgpService and RoutingService APIs to glue different components
   together.
 * Many unit test changes. A lot of the previous unit tests spanned the
   Router and IntentSynchronizer classes, but this is not possible any more
   since these classes are in different bundles. I had to rewrite some of
   these tests so that each unit test class only tests one real class. A
   nice side-effect is that the tests are now simpler because each test
   tests less functionality.
 * Removed SdnIp test seeing as it doesn't run automatically, was already
   broken and has been largely superseded by other unit tests and the nightly
   functional tests.

Change-Id: I70ecf5391aa353e99e7cdcf7ed38a530c87571bb
2015-02-11 18:20:57 -08:00
Jonathan Hart
552e31f991 Create a formal interface between the RIB and FIB.
* IntentSynchronizer implements a more generalized FibListener interface
 * Updates to the FIB are signalled with FibUpdate to any FibListeners
 * generateRouteIntent logic has been pushed down into the IntentSynchronizer

Change-Id: I6f0ccfd52ee4e16ce9974af5ee549d4ede6c2d0e
2015-02-11 05:43:24 +00:00
Pavlin Radoslavov
f8a0f6c2e4 Fix for bug ONOS-959: BgpSessionManagerTest unit test failure
Previously, when checking the winning BGP routes, we expect-and-wait until
the size of the table with the winning routes has certain size, and
then we verify whether it contains a particular value.

This is error-prone and time-sensitive. For example, if we are testing
whether a particular route from one BGP peer is replaced with the
same route from another BGP peer, the test might fail because the
table size doesn't change.

Modified the unit test to expect-and-wait until the expected route
is received.

Also, fixed some of the paragraph tags in some of the Javadocs.

Change-Id: Ia96dc7c412e78bbc9279dd935dec6919096adeb3
2015-02-04 16:03:51 -08:00
Pavlin Radoslavov
4b5acae6c4 ONOS-734 Add unit tests for 4 Octets AS numbers in SDN-IP
* Fix a bug in the storing, handling and verification of the AS numbers
   with 4 octet AS capability is used.

 * Add an unit test to test the decoding and parsing of supported
   BGP Capabilities: Multiprotocol Extensions AFI/SAFI, and 4 octet AS.

 * Minor refactoring of the BGP unit test framework.

Change-Id: I474b356bc00369c307ac0c5c214b065c1cc0c52c
2015-01-29 17:29:37 +00:00
Pavlin Radoslavov
8a36ce35a6 ONOS-866: Refactor the storing and handling of BgpSession info.
Moved the local and remote BGP session info to a separate class BgpSessionInfo.
No functional changes.

Also, removed methods TestBgpPeerChannelHandler.prepareBgpKeepalive(),
prepareBgpNotification() and prepareBgpMessage() from the unit tests.
Instead, use the corresponding methods in the BGP implementation itself
to generate the BGP messages.

Change-Id: I7f4b6ad4f6995c242cd8a9848ea527b1fcac9c11
2015-01-29 17:26:27 +00:00