Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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
languagejs
{
    "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
languagejs
{
    "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.

...