All Implemented Interfaces:
EventListener, org.opendaylight.mdsal.dom.api.DOMTransactionChainListener, BGPMessagesListener, PeerTransactionChain, RibReference, BGPSessionListener, Peer, PeerRPCs, PeerTrackerInformation, BGPRouteEntryImportParameters, RouteTargetMembershipConsumer, BGPAfiSafiState, BGPErrorHandlingState, BGPGracelfulRestartState, BGPLlGracelfulRestartState, BGPPeerMessagesState, BGPPeerState, BGPPeerStateProvider, InstanceReference<Rib>

public class BGPPeer extends BGPPeerStateImpl implements BGPSessionListener
Class representing a peer. We have a single instance for each peer, which provides translation from BGP events into RIB actions.
  • Constructor Details

    • BGPPeer

      public BGPPeer(BGPTableTypeRegistryConsumer tableTypeRegistry, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressNoZone neighborAddress, String peerGroupName, RIB rib, PeerRole role, ClusterIdentifier clusterId, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber localAs, org.opendaylight.mdsal.binding.api.RpcProviderService rpcRegistry, Set<TablesKey> afiSafisAdvertized, Set<TablesKey> afiSafisGracefulAdvertized, Map<TablesKey,Integer> llGracefulTablesAdvertised, BgpPeer bgpPeer)
  • Method Details

    • instantiateServiceInstance

      public void instantiateServiceInstance()
    • close

      public com.google.common.util.concurrent.FluentFuture<? extends org.opendaylight.mdsal.common.api.CommitInfo> close()
      Description copied from interface: Peer
      Close Peers and performs asynchronously DS clean up.
      Specified by:
      close in interface Peer
      Returns:
      future
    • onMessage

      public void onMessage(BGPSession session, org.opendaylight.yangtools.yang.binding.Notification<?> msg) throws BGPDocumentedException
      Description copied from interface: BGPSessionListener
      Fired when a normal protocol message is received.
      Specified by:
      onMessage in interface BGPSessionListener
      msg - Protocol message
      Throws:
      BGPDocumentedException
    • onSessionUp

      public void onSessionUp(BGPSession session)
      Description copied from interface: BGPSessionListener
      Fired when the session was established successfully.
      Specified by:
      onSessionUp in interface BGPSessionListener
      Parameters:
      session - Peer address families which we accepted
    • onSessionDown

      public void onSessionDown(BGPSession session, Exception exc)
      Description copied from interface: BGPSessionListener
      Fired when the session went down because of an IO error. Implementation should take care of closing underlying session.
      Specified by:
      onSessionDown in interface BGPSessionListener
      Parameters:
      session - that went down
      exc - Exception that was thrown as the cause of session being down
    • onSessionTerminated

      public void onSessionTerminated(BGPSession session, BGPTerminationReason cause)
      Description copied from interface: BGPSessionListener
      Fired when the session is terminated locally. The session has already been closed and transitioned to IDLE state. Any outstanding queued messages were not sent. The user should not attempt to make any use of the session.
      Specified by:
      onSessionTerminated in interface BGPSessionListener
      cause - the cause why the session went down
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • releaseConnection

      public com.google.common.util.concurrent.FluentFuture<? extends org.opendaylight.mdsal.common.api.CommitInfo> releaseConnection()
      Description copied from interface: PeerRPCs
      Release Peer session.
      Specified by:
      releaseConnection in interface PeerRPCs
    • getSupportedAddPathTables

      public SendReceive getSupportedAddPathTables(TablesKey tableKey)
      Description copied from interface: PeerTrackerInformation
      Returns AddPath support configuration if supported, otherwise null.
      Specified by:
      getSupportedAddPathTables in interface PeerTrackerInformation
      Parameters:
      tableKey - table
      Returns:
      AddPath support configuration if supported, otherwise null
    • supportsTable

      public boolean supportsTable(TablesKey tableKey)
      Description copied from interface: PeerTrackerInformation
      Returns true if we have advertized support for a table, i.e. any prefix from this table should be subject to export towards the peer.
      Specified by:
      supportsTable in interface PeerTrackerInformation
      Parameters:
      tableKey - table
      Returns:
      true if the table is being advertized to the peer.
    • getRibOutIId

      public org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier getRibOutIId(org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates tablekey)
      Description copied from interface: PeerTrackerInformation
      Creates Table Adj Rib Out Instance identifier.
      Specified by:
      getRibOutIId in interface PeerTrackerInformation
      Parameters:
      tablekey - table key
      Returns:
      instance identifier.
    • onTransactionChainFailed

      public void onTransactionChainFailed(org.opendaylight.mdsal.dom.api.DOMTransactionChain chain, org.opendaylight.mdsal.dom.api.DOMDataTreeTransaction transaction, Throwable cause)
      Specified by:
      onTransactionChainFailed in interface org.opendaylight.mdsal.dom.api.DOMTransactionChainListener
    • markUptodate

      public void markUptodate(TablesKey tablesKey)
      Description copied from interface: BGPSessionListener
      Marks synchronization finished for given Table key.
      Specified by:
      markUptodate in interface BGPSessionListener
      Parameters:
      tablesKey - of the table where synchronization finished
    • getBGPSessionState

      public BGPSessionState getBGPSessionState()
      Description copied from interface: BGPPeerState
      BGP Session Operational State.
      Specified by:
      getBGPSessionState in interface BGPPeerState
      Returns:
      BGPSessionState
    • getBGPTimersState

      public BGPTimersState getBGPTimersState()
      Description copied from interface: BGPPeerState
      BGP Operation Timers State.
      Specified by:
      getBGPTimersState in interface BGPPeerState
      Returns:
      BGPTimersState
    • getBGPTransportState

      public BGPTransportState getBGPTransportState()
      Description copied from interface: BGPPeerState
      BGP Operational Transport State.
      Specified by:
      getBGPTransportState in interface BGPPeerState
      Returns:
      BGPTransportState
    • getMemberships

      public List<RouteTarget> getMemberships()
      Description copied from interface: RouteTargetMembershipConsumer
      Returns list of Route target advertized per Peer.
      Specified by:
      getMemberships in interface RouteTargetMembershipConsumer
    • restartGracefully

      public com.google.common.util.concurrent.ListenableFuture<?> restartGracefully(long selectionDeferralTimerSeconds)
      Description copied from interface: PeerRPCs
      Perform graceful restart. Wait with route selection until EOR is received or selection-deferral-timer expires.
      Specified by:
      restartGracefully in interface PeerRPCs
      Parameters:
      selectionDeferralTimerSeconds - time to wait in seconds
    • getPeerId

      public final PeerId getPeerId()
      Description copied from interface: PeerTrackerInformation
      Returns Peer id.
      Specified by:
      getPeerId in interface PeerTrackerInformation
      Returns:
      PeerID
    • getRole

      public final PeerRole getRole()
      Description copied from interface: PeerTrackerInformation
      Returns Peer Role.
      Specified by:
      getRole in interface PeerTrackerInformation
      Returns:
      PeerRole
    • getFromPeerRole

      public final PeerRole getFromPeerRole()
      Description copied from interface: BGPRouteEntryImportParameters
      Peer id of Peer route entry announcer.
      Specified by:
      getFromPeerRole in interface BGPRouteEntryImportParameters
      Returns:
      peer Role of announcer Peer
    • getFromPeerId

      public final PeerId getFromPeerId()
      Description copied from interface: BGPRouteEntryImportParameters
      Peer id of Peer route entry announcer.
      Specified by:
      getFromPeerId in interface BGPRouteEntryImportParameters
      Returns:
      peer Id of announcer Peer
    • getFromClusterId

      public final ClusterIdentifier getFromClusterId()
      Description copied from interface: BGPRouteEntryImportParameters
      Peer id of Peer route entry announcer.
      Specified by:
      getFromClusterId in interface BGPRouteEntryImportParameters
      Returns:
      peer Id of announcer Peer
    • onTransactionChainSuccessful

      public final void onTransactionChainSuccessful(org.opendaylight.mdsal.dom.api.DOMTransactionChain chain)
      Specified by:
      onTransactionChainSuccessful in interface org.opendaylight.mdsal.dom.api.DOMTransactionChainListener
    • getBGPErrorHandlingState

      public final BGPErrorHandlingState getBGPErrorHandlingState()
      Description copied from interface: BGPPeerState
      Error Handling State.
      Specified by:
      getBGPErrorHandlingState in interface BGPPeerState
      Returns:
      ErrorHandlingState
    • getBGPAfiSafiState

      public final BGPAfiSafiState getBGPAfiSafiState()
      Description copied from interface: BGPPeerState
      Afi Safi Operational State.
      Specified by:
      getBGPAfiSafiState in interface BGPPeerState
      Returns:
      AfiSafiState
    • getFromPeerLocalAs

      public final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber getFromPeerLocalAs()
      Description copied from interface: BGPRouteEntryImportParameters
      Peer local AS of route entry announcer.
      Specified by:
      getFromPeerLocalAs in interface BGPRouteEntryImportParameters
      Returns:
      peer Local AS
    • getName

      public final String getName()
      Description copied from interface: Peer
      Return peer's symbolic name.
      Specified by:
      getName in interface Peer
      Returns:
      symbolic name.
    • getClusterId

      public final ClusterIdentifier getClusterId()
      Description copied from interface: PeerTrackerInformation
      Returns Cluster Id.
      Specified by:
      getClusterId in interface PeerTrackerInformation
      Returns:
      Cluster Id
    • getLocalAs

      public final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber getLocalAs()
      Description copied from interface: PeerTrackerInformation
      Returns Local AS.
      Specified by:
      getLocalAs in interface PeerTrackerInformation
      Returns:
      AS
    • getDomChain

      public org.opendaylight.mdsal.dom.api.DOMTransactionChain getDomChain()
      Description copied from interface: PeerTransactionChain
      Returns Peer DOMTransactionChain.
      Specified by:
      getDomChain in interface PeerTransactionChain
      Returns:
      DOMTransactionChain
    • initializeRibOut

      public final <C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>, S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>> void initializeRibOut(RouteEntryDependenciesContainer entryDep, List<ActualBestPathRoutes<C,S>> routesToStore)
      Description copied from interface: Peer
      Stores under peers rib Out already present routes, before proceed to process any new route advertizement.
      Specified by:
      initializeRibOut in interface Peer
      Parameters:
      entryDep - RouteEntryDependenciesContainer
      routesToStore - routes to be advertized.
    • refreshRibOut

      public final <C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>, S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>> void refreshRibOut(RouteEntryDependenciesContainer entryDep, List<StaleBestPathRoute> staleRoutes, List<AdvertizedRoute<C,S>> newRoutes)
      Description copied from interface: Peer
      Update peers ribout after path selection processing.
      Specified by:
      refreshRibOut in interface Peer
      Parameters:
      entryDep - RouteEntryDependenciesContainer
      staleRoutes - routes to be removed.
      newRoutes - routes to be advertized.
    • reEvaluateAdvertizement

      public final <C extends Routes & org.opendaylight.yangtools.yang.binding.DataObject & org.opendaylight.yangtools.yang.binding.ChoiceIn<Tables>, S extends org.opendaylight.yangtools.yang.binding.ChildOf<? super C>> void reEvaluateAdvertizement(RouteEntryDependenciesContainer entryDep, List<ActualBestPathRoutes<C,S>> routesToStore)
      Description copied from interface: Peer
      Applies all policies through all present routes, and advertize/withdraws based on new results. Scenario would be for example a removal of RT membership. And reprocess VPN routes.
      Specified by:
      reEvaluateAdvertizement in interface Peer
      Parameters:
      entryDep - RouteEntryDependenciesContainer
      routesToStore - routes to be updated.