[BGPCEP-1001] Interoperability issue with cisco IOS XR when XR advertice a default route to ODL Created: 08/Feb/22  Updated: 24/Jan/24

Status: Open
Project: bgpcep
Component/s: BGP
Affects Version/s: None
Fix Version/s: 0.21.0, 0.19.9, 0.20.7

Type: Bug Priority: High
Reporter: antonio esposito Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: pick-next, pt
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

log:tail

...............

11:42:39.336 ERROR [epollEventLoopGroup-5-2] Error = MALFORMED_ATTR_LIST
org.opendaylight.protocol.bgp.parser.BGPDocumentedException: Could not parse BGP attributes.
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseAttributes(BGPUpdateMessageParser.java:205) [bundleFile:?]
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:155) [bundleFile:?]
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:66) [bundleFile:?]
at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleMessageRegistry.parseBody(SimpleMessageRegistry.java:32) [bundleFile:?]
at org.opendaylight.protocol.bgp.parser.spi.AbstractMessageRegistry.parseMessage(AbstractMessageRegistry.java:66) [bundleFile:?]
at org.opendaylight.protocol.bgp.rib.impl.BGPByteToMessageDecoder.decode(BGPByteToMessageDecoder.java:47) [bundleFile:?]
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:507) [bundleFile:4.1.69.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:446) [bundleFile:4.1.69.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [bundleFile:4.1.69.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) [bundleFile:4.1.69.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:311) [bundleFile:4.1.69.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:432) [bundleFile:4.1.69.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [bundleFile:4.1.69.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [bundleFile:4.1.69.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [bundleFile:4.1.69.Final]
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:795) [bundleFile:4.1.69.Final]
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:480) [bundleFile:4.1.69.Final]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) [bundleFile:4.1.69.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [bundleFile:4.1.69.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [bundleFile:4.1.69.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [bundleFile:4.1.69.Final]
at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: java.lang.IllegalStateException: A valid VPN IP prefix is required.
at com.google.common.base.Preconditions.checkState(Preconditions.java:510) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.l3vpn.unicast.VpnDestinationUtil.parseNlri(VpnDestinationUtil.java:54) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.l3vpn.unicast.AbstractVpnNlriParser.parseNlri(AbstractVpnNlriParser.java:119) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleNlriRegistry.parseMpReach(SimpleNlriRegistry.java:232) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.impl.message.update.MPReachAttributeParser.parseAttribute(MPReachAttributeParser.java:42) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleAttributeRegistry.parseAttributes(SimpleAttributeRegistry.java:172) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseAttributes(BGPUpdateMessageParser.java:202) ~[bundleFile:?]
... 29 more
11:42:39.342 WARN [epollEventLoopGroup-5-2] BGP session encountered error
io.netty.handler.codec.DecoderException: org.opendaylight.protocol.bgp.parser.BGPDocumentedException: Could not parse BGP attributes.
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:477) ~[bundleFile:4.1.69.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) ~[bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [bundleFile:4.1.69.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) [bundleFile:4.1.69.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:311) [bundleFile:4.1.69.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:432) [bundleFile:4.1.69.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) [bundleFile:4.1.69.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) [bundleFile:4.1.69.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) [bundleFile:4.1.69.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) [bundleFile:4.1.69.Final]
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:795) [bundleFile:4.1.69.Final]
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:480) [bundleFile:4.1.69.Final]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378) [bundleFile:4.1.69.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [bundleFile:4.1.69.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [bundleFile:4.1.69.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [bundleFile:4.1.69.Final]
at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: org.opendaylight.protocol.bgp.parser.BGPDocumentedException: Could not parse BGP attributes.
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseAttributes(BGPUpdateMessageParser.java:205) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:155) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:66) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleMessageRegistry.parseBody(SimpleMessageRegistry.java:32) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.spi.AbstractMessageRegistry.parseMessage(AbstractMessageRegistry.java:66) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.rib.impl.BGPByteToMessageDecoder.decode(BGPByteToMessageDecoder.java:47) ~[bundleFile:?]
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:507) ~[bundleFile:4.1.69.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:446) ~[bundleFile:4.1.69.Final]
... 22 more
Caused by: java.lang.IllegalStateException: A valid VPN IP prefix is required.
at com.google.common.base.Preconditions.checkState(Preconditions.java:510) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.l3vpn.unicast.VpnDestinationUtil.parseNlri(VpnDestinationUtil.java:54) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.l3vpn.unicast.AbstractVpnNlriParser.parseNlri(AbstractVpnNlriParser.java:119) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleNlriRegistry.parseMpReach(SimpleNlriRegistry.java:232) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.impl.message.update.MPReachAttributeParser.parseAttribute(MPReachAttributeParser.java:42) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleAttributeRegistry.parseAttributes(SimpleAttributeRegistry.java:172) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseAttributes(BGPUpdateMessageParser.java:202) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:155) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:66) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleMessageRegistry.parseBody(SimpleMessageRegistry.java:32) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.parser.spi.AbstractMessageRegistry.parseMessage(AbstractMessageRegistry.java:66) ~[bundleFile:?]
at org.opendaylight.protocol.bgp.rib.impl.BGPByteToMessageDecoder.decode(BGPByteToMessageDecoder.java:47) ~[bundleFile:?]
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:507) ~[bundleFile:4.1.69.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:446) ~[bundleFile:4.1.69.Final]
... 22 more
11:42:39.349 DEBUG [epollEventLoopGroup-5-2] Message sent to output: Notify{errorCode=3, errorSubcode=1}
11:42:39.349 INFO [epollEventLoopGroup-5-2] Closing session: BGPSessionImpl{channel=[id: 0x161f4589, L:/100.100.100.241:57492 - R:100.100.100.89/100.100.100.89:179], state=UP}
11:42:39.350 DEBUG [epollEventLoopGroup-5-2] Channel [id: 0x161f4589, L:/100.100.100.241:57492 ! R:100.100.100.89/100.100.100.89:179] closed successfully
11:42:39.350 DEBUG [epollEventLoopGroup-5-2] Callback for session removal with peer IpAddressNoZone{_ipv4AddressNoZone=Ipv4Address{_value=100.100.100.89}} received
11:42:39.350 INFO [epollEventLoopGroup-5-2] Session with peer 100.100.100.89 terminated: BGPTerminationReason{error=MALFORMED_ATTR_LIST}
11:42:39.350 INFO [epollEventLoopGroup-5-2] Closing session with peer
11:42:39.352 INFO [epollEventLoopGroup-5-2] Closing peer chain Uri{_value=bgp://10.176.1.40}
11:42:39.352 DEBUG [epollEventLoopGroup-5-2] RibOut transaction chain org.opendaylight.mdsal.dom.spi.PingPongTransactionChain@3f948e6 successful.
11:42:39.352 DEBUG [epollEventLoopGroup-5-2] Parsing attribute type 1
11:42:39.352 DEBUG [epollEventLoopGroup-5-2] Parsing attribute type 2
11:42:39.353 DEBUG [epollEventLoopGroup-5-2] Parsing attribute type 5
11:42:39.353 DEBUG [epollEventLoopGroup-5-2] Parsing attribute type 14
11:42:39.353 DEBUG [epollEventLoopGroup-5-2] Parsing attribute type 16

 

 


Attachments: File om1l241.cap.pcap    

 Description   

Hello,

I am experiencing an issue on the bgp session from cisco IOS XR and ODL.

XR has address 100.100.100.89

ODL address 100.100.100.241

initially the bgp session remain up without issue

RP/0/RP0/CPU0:mivpe016#show bgp vpnv4 unicast summary
Tue Feb 8 09:52:11.688 UTC
BGP router identifier 10.176.1.40, local AS number 30722
BGP generic scan interval 60 secs
Non-stop routing is enabled
BGP table state: Active
Table ID: 0x0 RD version: 0
BGP main routing table version 23
BGP NSR Initial initsync version 7 (Reached)
BGP NSR/ISSU Sync-Group versions 0/0
BGP scan interval 60 secs

BGP is operating in STANDALONE mode.

Process RcvTblVer bRIB/RIB LabelVer ImportVer SendTblVer StandbyVer
Speaker 23 23 23 23 23 0

Neighbor Spk AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down St/PfxRcd
100.100.100.241 0 30722 66 65 23 0 0 01:01:01 0

RP/0/RP0/CPU0:mivpe016#

but as soon as start to advertise a default-route 0.0.0.0 the bgp session start flapping indefinitaly.

IOS XR receive the message malformed update from ODL and ODL reset the session.

everything repeats itself over and over again.

I think I have identified the problem but I don't know the solution

IOS XR send an update message with the default route but whitou the byte string "00 00 00 00" in the packet. That is, it appears that the default is somehow implied in the package.

this for Cisco seems to what completely legal is supported but ODL doesn't like.

i am using releases

Phosphorus/opendaylight-15.1.0/

can you tell me if this is a known problem?

Regards

Antonio.

 


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