[BGPCEP-623] Invalid Route Distinguisher error while processing withdraw update containing VPN route Created: 31/Jan/17  Updated: 03/Mar/19  Resolved: 08/Feb/17

Status: Resolved
Project: bgpcep
Component/s: BGP
Affects Version/s: Bugzilla Migration
Fix Version/s: Bugzilla Migration

Type: Bug
Reporter: Ajay L Assignee: Ajay L
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


External issue ID: 7708

 Description   

ODL does not correctly handle scenario where label value 0x800000 is received in withdraw message

Per https://tools.ietf.org/html/rfc3107:

A BGP speaker can withdraw a previously advertised route (as well as
the binding between this route and a label) by either (a) advertising
a new route (and a label) with the same NLRI as the previously
advertised route, or (b) listing the NLRI of the previously
advertised route in the Withdrawn Routes field of an Update message.
The label information carried (as part of NLRI) in the Withdrawn
Routes field should be set to 0x800000. (Of course, terminating the
BGP session also withdraws all the previously advertised routes.)

Error message received:

2017-01-30 23:08:01,958 | DEBUG | ntLoopGroup-17-1 | SimpleAttributeRegistry | 336 - org.opendaylight.bgpcep.bgp-parser-spi - 0.6.1.Boron-SR1 | Parsing attribute type 15
2017-01-30 23:08:01,958 | DEBUG | ntLoopGroup-17-1 | RouteDistinguisherUtil | 334 - org.opendaylight.bgpcep.bgp-concepts - 0.6.1.Boron-SR1 | Invalid Route Distinguisher: type=59392, rawRouteDistinguisherValue=0x0 0x0 0x1 0x64 0x15 0x10
2017-01-30 23:08:01,960 | ERROR | ntLoopGroup-17-1 | BGPDocumentedException | 335 - org.opendaylight.bgpcep.bgp-parser-api - 0.6.1.Boron-SR1 | Error = MALFORMED_ATTR_LIST
org.opendaylight.protocol.bgp.parser.BGPDocumentedException: Could not parse BGP attributes.
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:135)[337:org.opendaylight.bgpcep.bgp-parser-impl:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:46)[337:org.opendaylight.bgpcep.bgp-parser-impl:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleMessageRegistry.parseBody(SimpleMessageRegistry.java:31)[336:org.opendaylight.bgpcep.bgp-parser-spi:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.spi.AbstractMessageRegistry.parseMessage(AbstractMessageRegistry.java:66)[336:org.opendaylight.bgpcep.bgp-parser-spi:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.rib.impl.BGPByteToMessageDecoder.decode(BGPByteToMessageDecoder.java:49)[349:org.opendaylight.bgpcep.bgp-rib-impl:0.6.1.Boron-SR1]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411)[52:io.netty.codec:4.0.37.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)[52:io.netty.codec:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:328)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:321)[51:io.netty.transport:4.0.37.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)[52:io.netty.codec:4.0.37.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:280)[52:io.netty.codec:4.0.37.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:396)[52:io.netty.codec:4.0.37.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)[52:io.netty.codec:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:328)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:321)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1280)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:328)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:890)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:879)[55:io.netty.transport-native-epoll:4.0.37.Final]
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:387)[55:io.netty.transport-native-epoll:4.0.37.Final]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:303)[55:io.netty.transport-native-epoll:4.0.37.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)[50:io.netty.common:4.0.37.Final]
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:145)[50:io.netty.common:4.0.37.Final]
at java.lang.Thread.run(Thread.java:745)[:1.8.0_91]
Caused by: java.lang.IllegalArgumentException: Invalid Route Distinguisher type 59392
at org.opendaylight.bgp.concepts.RouteDistinguisherUtil.parseRouteDistinguisher(RouteDistinguisherUtil.java:131)[334:org.opendaylight.bgpcep.bgp-concepts:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.l3vpn.AbstractVpnNlriParser.parseNlri(AbstractVpnNlriParser.java:91)[352:org.opendaylight.bgpcep.bgp-l3vpn:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.l3vpn.AbstractVpnNlriParser.parseNlri(AbstractVpnNlriParser.java:127)[352:org.opendaylight.bgpcep.bgp-l3vpn:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.spi.NlriParser.parseNlri(NlriParser.java:63)[336:org.opendaylight.bgpcep.bgp-parser-spi:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleNlriRegistry.parseMpUnreach(SimpleNlriRegistry.java:161)[336:org.opendaylight.bgpcep.bgp-parser-spi:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.impl.message.update.MPUnreachAttributeParser.parseAttribute(MPUnreachAttributeParser.java:47)[337:org.opendaylight.bgpcep.bgp-parser-impl:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleAttributeRegistry.parseAttributes(SimpleAttributeRegistry.java:138)[336:org.opendaylight.bgpcep.bgp-parser-spi:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:131)[337:org.opendaylight.bgpcep.bgp-parser-impl:0.6.1.Boron-SR1]
... 26 more
2017-01-30 23:08:01,962 | WARN | ntLoopGroup-17-1 | BGPSessionImpl | 349 - org.opendaylight.bgpcep.bgp-rib-impl - 0.6.1.Boron-SR1 | 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:442)[52:io.netty.codec:4.0.37.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)[52:io.netty.codec:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:328)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:321)[51:io.netty.transport:4.0.37.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293)[52:io.netty.codec:4.0.37.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:280)[52:io.netty.codec:4.0.37.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:396)[52:io.netty.codec:4.0.37.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:248)[52:io.netty.codec:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:328)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:321)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1280)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:328)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:890)[51:io.netty.transport:4.0.37.Final]
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:879)[55:io.netty.transport-native-epoll:4.0.37.Final]
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:387)[55:io.netty.transport-native-epoll:4.0.37.Final]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:303)[55:io.netty.transport-native-epoll:4.0.37.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112)[50:io.netty.common:4.0.37.Final]
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:145)[50:io.netty.common:4.0.37.Final]
at java.lang.Thread.run(Thread.java:745)[:1.8.0_91]
Caused by: org.opendaylight.protocol.bgp.parser.BGPDocumentedException: Could not parse BGP attributes.
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:135)[337:org.opendaylight.bgpcep.bgp-parser-impl:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:46)[337:org.opendaylight.bgpcep.bgp-parser-impl:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleMessageRegistry.parseBody(SimpleMessageRegistry.java:31)[336:org.opendaylight.bgpcep.bgp-parser-spi:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.spi.AbstractMessageRegistry.parseMessage(AbstractMessageRegistry.java:66)[336:org.opendaylight.bgpcep.bgp-parser-spi:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.rib.impl.BGPByteToMessageDecoder.decode(BGPByteToMessageDecoder.java:49)[349:org.opendaylight.bgpcep.bgp-rib-impl:0.6.1.Boron-SR1]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:411)[52:io.netty.codec:4.0.37.Final]
... 21 more
Caused by: java.lang.IllegalArgumentException: Invalid Route Distinguisher type 59392
at org.opendaylight.bgp.concepts.RouteDistinguisherUtil.parseRouteDistinguisher(RouteDistinguisherUtil.java:131)[334:org.opendaylight.bgpcep.bgp-concepts:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.l3vpn.AbstractVpnNlriParser.parseNlri(AbstractVpnNlriParser.java:91)[352:org.opendaylight.bgpcep.bgp-l3vpn:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.l3vpn.AbstractVpnNlriParser.parseNlri(AbstractVpnNlriParser.java:127)[352:org.opendaylight.bgpcep.bgp-l3vpn:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.spi.NlriParser.parseNlri(NlriParser.java:63)[336:org.opendaylight.bgpcep.bgp-parser-spi:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleNlriRegistry.parseMpUnreach(SimpleNlriRegistry.java:161)[336:org.opendaylight.bgpcep.bgp-parser-spi:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.impl.message.update.MPUnreachAttributeParser.parseAttribute(MPUnreachAttributeParser.java:47)[337:org.opendaylight.bgpcep.bgp-parser-impl:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleAttributeRegistry.parseAttributes(SimpleAttributeRegistry.java:138)[336:org.opendaylight.bgpcep.bgp-parser-spi:0.6.1.Boron-SR1]
at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:131)[337:org.opendaylight.bgpcep.bgp-parser-impl:0.6.1.Boron-SR1]
... 26 more
2017-01-30 23:08:01,972 | DEBUG | ntLoopGroup-17-1 | BGPMessageToByteEncoder | 349 - org.opendaylight.bgpcep.bgp-rib-impl - 0.6.1.Boron-SR1 | Message sent to output: Notify [_errorCode=3, _errorSubcode=1, augmentation=[]]
2017-01-30 23:08:01,973 | INFO | ntLoopGroup-17-1 | BGPPeer | 349 - org.opendaylight.bgpcep.bgp-rib-impl - 0.6.1.Boron-SR1 | Session with peer 10.18.162.219 terminated: BGPTerminationReason

{error=MALFORMED_ATTR_LIST}

2017-01-30 23:08:01,973 | DEBUG | ntLoopGroup-17-1 | ExportPolicyPeerTrackerImpl | 349 - org.opendaylight.bgpcep.bgp-rib-impl - 0.6.1.Boron-SR1 | Removed peer Uri [_value=bgp://192.168.254.11] from supported table TablesKey [_afi=class org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily, _safi=class org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.MplsLabeledVpnSubsequentAddressFamily]
2017-01-30 23:08:01,973 | DEBUG | ntLoopGroup-17-1 | ExportPolicyPeerTrackerImpl | 349 - org.opendaylight.bgpcep.bgp-rib-impl - 0.6.1.Boron-SR1 | Removed peer Uri [_value=bgp://192.168.254.11] from supported table TablesKey [_afi=class org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv6AddressFamily, _safi=class org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.MplsLabeledVpnSubsequentAddressFamily]



 Comments   
Comment by Claudio David Gasparini [ 06/Feb/17 ]

master
https://git.opendaylight.org/gerrit/#/c/51454/
boron
https://git.opendaylight.org/gerrit/#/c/51283/

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