...
Route policy distribution: Distribute route to modify the routes based on routing policy.
Proposed work
- Add BGP LS South Bound plugin to learn the Linkstate topology of the network and update ONOS core’s Node and Link subsystem along with the TE information.
...
- Implement BGP protocol handler, which acts as a BGP speaker to listen on BGP port 179 if user run ONOS as root user in linux otherwise listen on port 1790 to establish and manage session with BGP peers of the network. A channel handler will be created for each BGP session to maintain the state machine and state of each Peer.
...
- Implement BGP message handler, which will encode and decode BGP messages between ONOS BGP SBI and BGP peer on network. Currently the messages supported are open, KeepAlive, update, Notification and BGP Multiprotocol message with Link state descriptions and its attributes.
...
- Implement BGP LS topology provider to update Node and Link subsystem of ONOS core when any node or link gets added/deleted or modified. All communication between BGP Linkstate provider and ONOS Core uses Provider Service interface.
Usage:
Pre configurations required to learn network topology using BGP-LS in ONOS
1. Enable BGP app:
| Code Block |
|---|
app activate org.onosproject.bgp |
2. Configure remote BGP peer in ONOS using below JSON, it uses network config service
| Code Block | ||
|---|---|---|
| ||
{ "apps": |
...
{ "org.onosproject.provider.bgp.cfg": |
...
{ "bgpapp": |
...
{ "routerId": "1.1.1.1", |
...
"localAs": |
...
100, "maxSession": |
...
20, "lsCapability": |
...
true, "holdTime": |
...
180, "largeAsCapability": |
...
false, "flowSpecCapability": "IPV4", |
...
"bgpPeer":[ {"peerIp": "2.2.2.2", "remoteAs": 100, "peerHoldTime": 120, "connectMode":"active"}] |
...
} } } } |
Parameters:
routerId Local IP address.
localAs Local AS number
maxSession Max number of session BGP ONOS can maintain.
lsCapability BGP-LS capability
holdTime Hold Time
largeAsCapability 4-octet AS capability
flowSpecCapability flowspec capability
bgpPeer Remote BGP peer information
peerIp Remote BGP peer IP
remoteAs Remote BGP AS number
peerHoldTime Remote peer hold time (Depricated)
connectMode Session initiation, active or passive. In case of passive mode BGP is in listen mode.
...
Initially, BGP LS South Bound only supported IPv4 addresses. Support for IPv6 has been added and is available since ONOS-2.3 release. For this, a new parameter has been added in the configuration:
| Code Block |
|---|
{ |
...
"apps": |
...
{ "org.onosproject.provider.bgp.cfg": |
...
{ "bgpapp": |
...
{ "routerId": "192.168.251.240", |
...
"localAs": |
...
200, "maxSession": |
...
20, "lsCapability": |
...
true, "holdTime": |
...
180, "largeAsCapability": |
...
true, "flowSpecCapability": "IPV4", |
...
"connectionType": "IPV4_IPV6" |
...
, "bgpPeer":[ {"peerIp": "2.2.2.2", "remoteAs": 100, "peerHoldTime": 120, "connectMode":"active"}] |
...
} } } } |
Parameter added:
connectionType : Specifies the connection type to be used for connecting to the BGP peer. It takes three values:
...
The new config json is of the form :{
| Code Block | ||
|---|---|---|
| ||
{ "apps": |
...
{ "org.onosproject.provider.bgp.cfg": |
...
{ "bgpapp": |
...
{ "routerId": "192.168.251.240", |
...
"localAs": |
...
200, "maxSession": |
...
20, "lsCapability": |
...
true, "holdTime": |
...
180, "largeAsCapability": |
...
true, "flowSpecCapability": "IPV4", |
...
"connectionType": "IPV6", |
...
"routeRefreshEnabled": |
...
true, "rrPeriodicTimer": |
...
300, "rrWarmupTimer": |
...
10, "rrCooldownTimer":30, |
...
"bgpPeer":[ {"peerIp": "2001:db7:1:3:5054:ff:fe99:2e65", "remoteAs": 200, "peerHoldTime": 120, "connectMode":"active"}] |
...
} } } } |
Parameters added:
- routeRefreshEnabled : Depics if route refresh messages are to be sent or not. Boolean, can take values "true"/"false". Default is "false"
- rrPeriodicTimer : Periodic timer value in seconds. Integer. Default value is 300.
- rrWarmupTimer : Warmuptimer value in seconds. Integer. Default value is 10.
- rrCooldownTimer : Cooldownvalue in seconds. Integer. Default value is 30.
...