[BGPCEP-787] Local-address connection failed Created: 13/Apr/18  Updated: 12/Jul/18  Resolved: 16/Apr/18

Status: Verified
Project: bgpcep
Component/s: BGP
Affects Version/s: Fluorine
Fix Version/s: Fluorine

Type: Bug Priority: Medium
Reporter: Tomas Markovic Assignee: Claudio David Gasparini
Resolution: Cannot Reproduce Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: File conf1.py     File default1.cfg    

 Description   

Overview: Configure talking internal peer with local-address set.
Connect exabgp with it's local address equal to the local-addres of the peer.
Expected: connects with local-address.

Log

2018-04-13T15:06:42,347 | ERROR | epollEventLoopGroup-5-6 | BGPDocumentedException           | 204 - org.opendaylight.bgpcep.bgp-parser-api - 0.10.0.SNAPSHOT | Error = CONNECTION_REJECTED
org.opendaylight.protocol.bgp.parser.BGPDocumentedException: BGP peer with ip: IpAddress{_ipv4Address=Ipv4Address{_value=127.0.0.3}} not configured, check configured peers in : StrictBGPPeerRegistry{peers=[IpAddress{_ipv4Address=Ipv4Address{_value=192.0.2.1}}, IpAddress{_ipv4Address=Ipv4Address{_value=192.0.2.5}}, IpAddress{_ipv4Address=Ipv4Address{_value=127.0.0.2}}]}
	at org.opendaylight.protocol.bgp.rib.impl.AbstractBGPSessionNegotiator.startNegotiation(AbstractBGPSessionNegotiator.java:104) [210:org.opendaylight.bgpcep.bgp-rib-impl:0.10.0.SNAPSHOT]
	at org.opendaylight.protocol.bgp.rib.impl.AbstractBGPSessionNegotiator.channelActive(AbstractBGPSessionNegotiator.java:279) [210:org.opendaylight.bgpcep.bgp-rib-impl:0.10.0.SNAPSHOT]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:213) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:199) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:192) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.ChannelInboundHandlerAdapter.channelActive(ChannelInboundHandlerAdapter.java:64) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:213) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:199) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:192) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.ChannelInboundHandlerAdapter.channelActive(ChannelInboundHandlerAdapter.java:64) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:213) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:199) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:192) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelActive(DefaultChannelPipeline.java:1347) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:213) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:199) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.DefaultChannelPipeline.fireChannelActive(DefaultChannelPipeline.java:911) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:518) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:423) [103:io.netty.transport:4.1.16.Final]
	at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:482) [103:io.netty.transport:4.1.16.Final]
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [100:io.netty.common:4.1.16.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:403) [100:io.netty.common:4.1.16.Final]
	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:309) [104:io.netty.transport-native-epoll:4.1.16.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858) [100:io.netty.common:4.1.16.Final]
	at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:138) [100:io.netty.common:4.1.16.Final]
	at java.lang.Thread.run(Thread.java:748) [?:?]

Steps to reproduce:

  • fluorine karaf with ( tested on version 4.11.2018 )
    feature:install odl-restconf odl-bgpcep-bgp odl-bgpcep-bgp-config-example
    
  • configure peer
    ./conf1.py
    
  • start exabgp
    env exabgp.tcp.port=1790 exabgp --debug default1.cfg
    

I think it is getting stopped way before we even get to the local-address functionality. Or I am missing something.



 Comments   
Comment by Tomas Markovic [ 13/Apr/18 ]

Also possible to test on sandbox with PATCHREFSPEC: refs/changes/37/70837/5 and SUITES: bgpcep/bgpuser/basic.robot

TC4 does everything related to local-address, and has basically these configs, just uses play.py instead of exagp. Also tests that we shouldn't be able to connect with 127.0.0.2 from this issue.

Comment by Claudio David Gasparini [ 16/Apr/18 ]

Missconfiguration

 

First of all, as doc state 

@line 12: Wait for peers to issue requests to open a BGP session, rather than initiating sessions from the local router. Default value is false.

Therefore to be a correct test, we should make exabgp act as passive. Otherwise exabgp is trying to connect to ODL. Here we are testing ODL connecting to exabgp using specific local address.

you should use on exabgp

  • passive true;

but this is not the issue, indeed it will work with the actual config ( it's just to get cleaner logs).

The actual missconfig is here

 

neighbor 127.0.0.1 { 

 

ODL Ip but we want to use the specific ODL local-address 127.0.0.3 set-up on ODL config

just change it to

 

neighbor 127.0.0.3 {

Regards, 

Generated at Wed Feb 07 19:14:07 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.