[BGPCEP-800] l3vpn-multicast bit length missing from update message Created: 11/Jun/18 Updated: 21/Jun/18 Resolved: 21/Jun/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: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
| Description |
|
Overview: We add route into application peer, then we connect peer. And check for update message on wireshark from odl. 20 00 01 ac 10 00 2c 00 65 0a 02 22 00 18 00 00 00 Where first number represents length 32 but there are 16 bytes after it. Then route-distinguisher 172.16.0.44:101 than prefix 10.2.34.0/24 Steps for sending this route from Play.py to ODL Steps to reproduce:
at this point odl send update message to play.py When I try to send this route to odl from play.py I get this error: 2018-06-18T13:19:26,914 | ERROR | epollEventLoopGroup-5-2 | BGPDocumentedException | 218 - org.opendaylight.bgpcep.bgp-parser-api - 0.10.0.SNAPSHOT | 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:155) [219:org.opendaylight.bgpcep.bgp-parser-impl:0.10.0.SNAPSHOT] at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:53) [219:org.opendaylight.bgpcep.bgp-parser-impl:0.10.0.SNAPSHOT] at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleMessageRegistry.parseBody(SimpleMessageRegistry.java:31) [220:org.opendaylight.bgpcep.bgp-parser-spi:0.10.0.SNAPSHOT] at org.opendaylight.protocol.bgp.parser.spi.AbstractMessageRegistry.parseMessage(AbstractMessageRegistry.java:63) [220:org.opendaylight.bgpcep.bgp-parser-spi:0.10.0.SNAPSHOT] at org.opendaylight.protocol.bgp.rib.impl.BGPByteToMessageDecoder.decode(BGPByteToMessageDecoder.java:50) [224:org.opendaylight.bgpcep.bgp-rib-impl:0.10.0.SNAPSHOT] at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:489) [94:io.netty.codec:4.1.22.Final] at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:428) [94:io.netty.codec:4.1.22.Final] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:265) [94:io.netty.codec:4.1.22.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [99:io.netty.transport:4.1.22.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [99:io.netty.transport:4.1.22.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [99:io.netty.transport:4.1.22.Final] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310) [94:io.netty.codec:4.1.22.Final] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:284) [94:io.netty.codec:4.1.22.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [99:io.netty.transport:4.1.22.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [99:io.netty.transport:4.1.22.Final] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [99:io.netty.transport:4.1.22.Final] at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1414) [99:io.netty.transport:4.1.22.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [99:io.netty.transport:4.1.22.Final] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [99:io.netty.transport:4.1.22.Final] at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:945) [99:io.netty.transport:4.1.22.Final] at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:806) [100:io.netty.transport-native-epoll:4.1.22.Final] at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:404) [100:io.netty.transport-native-epoll:4.1.22.Final] at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:304) [100:io.netty.transport-native-epoll:4.1.22.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:886) [96:io.netty.common:4.1.22.Final] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [96:io.netty.common:4.1.22.Final] at java.lang.Thread.run(Thread.java:748) [?:?] Caused by: java.lang.IllegalStateException: Cannot read Route Distinguisher from provided buffer. at com.google.common.base.Preconditions.checkState(Preconditions.java:504) ~[?:?] at org.opendaylight.bgp.concepts.RouteDistinguisherUtil.parseRouteDistinguisher(RouteDistinguisherUtil.java:77) ~[?:?] at org.opendaylight.protocol.bgp.l3vpn.mcast.nlri.L3vpnMcastNlriSerializer.extractDest(L3vpnMcastNlriSerializer.java:38) ~[?:?] at org.opendaylight.protocol.bgp.l3vpn.mcast.nlri.L3vpnMcastIpv4NlriHandler.parseNlri(L3vpnMcastIpv4NlriHandler.java:52) ~[?:?] at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleNlriRegistry.parseMpReach(SimpleNlriRegistry.java:228) ~[?:?] at org.opendaylight.protocol.bgp.parser.impl.message.update.MPReachAttributeParser.parseAttribute(MPReachAttributeParser.java:44) ~[?:?] at org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleAttributeRegistry.parseAttributes(SimpleAttributeRegistry.java:136) ~[?:?] at org.opendaylight.protocol.bgp.parser.impl.message.BGPUpdateMessageParser.parseMessageBody(BGPUpdateMessageParser.java:151) ~[?:?] ... 25 more |
| Comments |
| Comment by Tomas Markovic [ 18/Jun/18 ] |
|
Ext community works now. Length is present but it is 20, and that doesn't correspond with real length neither in bits not bytes. 20 00 01 ac 10 00 2c 00 65 0a 02 22 00 18 00 00 00 As I understand it from rfc, the length here should be 60 00 01 ac 10 00 2c 00 65 0a 02 22 00 18 since 12*8=96 |