X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=docs%2Fdeveloper-guide%2Fbgp-developer-guide.rst;h=0e5df8030a53fc22aeb044982758f362271d91b3;hb=65a2e18246a32cc50fac93d6860eaa27d0d2bbf1;hp=df2df2a73512221ca2aad9bac843d2320571c5d8;hpb=b3085a49de6863f5881e006b141b09840ee6f965;p=docs.git diff --git a/docs/developer-guide/bgp-developer-guide.rst b/docs/developer-guide/bgp-developer-guide.rst index df2df2a73..0e5df8030 100644 --- a/docs/developer-guide/bgp-developer-guide.rst +++ b/docs/developer-guide/bgp-developer-guide.rst @@ -1,3 +1,4 @@ +.. _bgp-developer-guide: BGP Developer Guide =================== @@ -35,10 +36,10 @@ This module contains the base BGP concepts contained in `RFC 4360 `__. All the concepts are described in one yang model: -`bgp-types.yang `__. +`bgp-types.yang `__. Outside generated classes, there is just one class -`NextHopUtil `__ +`NextHopUtil `__ that contains methods for serializing and parsing NextHop. BGP parser @@ -54,7 +55,7 @@ Base BGP parser includes messages and attributes from `RFC *IMPL* module contains actual parsers and serializers for BGP messages and -`Activator `__ +`Activator `__ class *SPI* module contains helper classes needed for registering parsers into @@ -93,9 +94,9 @@ The bgp-linkstate module is a good example of a BGP parser extension. The configuration of bgp-parser-spi specifies one implementation of *Extension provider* that will take care of registering mentioned parser extensions: -`SimpleBGPExtensionProviderContext `__. +`SimpleBGPExtensionProviderContext `__. All registries are implemented in package -`bgp-parser-spi `__. +`bgp-parser-spi `__. Serializing ^^^^^^^^^^^ @@ -194,22 +195,22 @@ are sent by the BGP speaker and are redirected to RIB, where the specific AFI/SAFI table is set to *true*. Without graceful restart, the messages are generated by OpenDaylight itself and sent after second keepalive for each AFI/SAFI. This is done in -`BGPSynchronization `__. +`BGPSynchronization `__. **Peers** -`BGPPeer `__ +`BGPPeer `__ has various meanings. If you configure BGP listener, *BGPPeer* represents the BGP listener itself. If you are configuring BGP speaker, you need to provide a list of peers, that are allowed to connect to this speaker. Unknown peer represents, in this case, a peer that is allowed to be refused. *BGPPeer* represents in this case peer, that is supposed to connect to your speaker. *BGPPeer* is stored in -`BGPPeerRegistry `__. +`BGPPeerRegistry `__. This registry controls the number of sessions. Our strict implementation limits sessions to one per peer. -`ApplicationPeer `__ +`ApplicationPeer `__ is a special case of peer, that has it’s own RIB. This RIB is populated from RESTCONF. The RIB is synchronized with default BGP RIB. Incoming routes to the default RIB are treated in the same way as they were from @@ -225,7 +226,7 @@ are stored in the MD-SAL datastore. There are four supported routes - *Ipv4Routes*, *Ipv6Routes*, *LinkstateRoutes* and *FlowspecRoutes*. Each route type needs to provide a -`RIBSupport.java `__ +`RIBSupport.java `__ implementation. *RIBSupport* tells RIB how to parse binding-aware data (BGP Update message) to binding-independent (datastore format). @@ -237,24 +238,24 @@ to *BGPPeer* to datastore and various types of RIB. RIB -**`AdjRibInWriter `__** +`AdjRibInWriter `__ - represents the first step in putting data to datastore. This writer is notified whenever a peer receives an Update message. The message is transformed into binding-independent format and pushed into datastore to *adj-rib-in*. This RIB is associated with a peer. -**`EffectiveRibInWriter `__** +`EffectiveRibInWriter `__ - this writer is notified whenever *adj-rib-in* is updated. It applies all configured import policies to the routes and stores them in *effective-rib-in*. This RIB is also associated with a peer. -**`LocRibWriter `__** +`LocRibWriter `__ - this writer is notified whenever **any** *effective-rib-in* is updated (in any peer). Performs best path selection filtering and stores the routes in *loc-rib*. It also determines which routes need to be advertised and fills in *adj-rib-out* that is per peer as well. -**`AdjRibOutListener `__** +`AdjRibOutListener `__ - listens for changes in *adj-rib-out*, transforms the routes into BGPUpdate messages and sends them to its associated peer. @@ -262,7 +263,7 @@ BGP inet -------- This module contains only one YANG model -`bgp-inet.yang `__ +`bgp-inet.yang `__ that summarizes the ipv4 and ipv6 extensions to RIB routes and BGP messages. @@ -275,7 +276,7 @@ BGP flowspec is a module that implements `RFC for IPv6 AFI. The RFC defines an extension to BGP in form of a new subsequent address family, NLRI and extended communities. All of those are defined in the -`bgp-flowspec.yang `__ +`bgp-flowspec.yang `__ model. In addition to generated sources, the module contains parsers for newly defined elements and RIBSupport for flowspec-routes. The route key of flowspec routes is a string representing human-readable flowspec @@ -289,10 +290,10 @@ BGP linkstate is a module that implements version 04. The draft defines an extension to BGP in form of a new address family, subsequent address family, NLRI and path attribute. All of those are defined in the -`bgp-linkstate.yang `__ +`bgp-linkstate.yang `__ model. In addition to generated sources, the module contains -`LinkstateAttributeParser `__, -`LinkstateNlriParser `__, +`LinkstateAttributeParser `__, +`LinkstateNlriParser `__, activators for both, parser and RIB, and RIBSupport handler for linkstate address family. As each route needs a key, in case of linkstate, the route key is defined as a binary string, containing all @@ -313,7 +314,7 @@ extension to the BGP MP to carry Label Mapping Information as a part of the NLRI. The AFI indicates, as usual, the address family of the associated route. The fact that the NLRI contains a label is indicated by using SAFI value 4. All of those are defined in -`bgp-labeled-unicast.yang `__ +`bgp-labeled-unicast.yang `__ model. In addition to the generated sources, the module contains new NLRI codec and RIBSupport. The route key is defined as a binary, where whole NLRI information is encoded.