[BGPCEP-892] Controller fails to parse RRO object in PCRpt message Created: 17/Jan/20  Updated: 04/Feb/20  Resolved: 04/Feb/20

Status: Resolved
Project: bgpcep
Component/s: PCEP
Affects Version/s: Fluorine SR1
Fix Version/s: Magnesium, Sodium SR2

Type: Bug Priority: Medium
Reporter: Ajay Lele Assignee: Ajay Lele
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Attachments: PNG File image-2020-01-16-18-18-16-783.png    

 Description   

Controller fails to decode label subobject within RRO object in PCRpt message. Exception is logged at debug level making it difficult to detect

2019-12-10T04:44:31,400 | DEBUG | epollEventLoopGroup-8-2 | PCEPByteToMessageDecoder         | 261 - org.opendaylight.bgpcep.pcep-impl - 0.10.1 | Failed to decode protocol message
org.opendaylight.protocol.pcep.spi.PCEPDeserializerException: Unknown C-TYPE for ero label subobject. Passed: 10
    at org.opendaylight.protocol.pcep.parser.subobject.RROLabelSubobjectParser.parseSubobject(RROLabelSubobjectParser.java:63) [259:org.opendaylight.bgpcep.pcep-base-parser:0.10.1]
    at org.opendaylight.protocol.pcep.spi.pojo.SimpleRROSubobjectRegistry.parseSubobject(SimpleRROSubobjectRegistry.java:44) [263:org.opendaylight.bgpcep.pcep-spi:0.10.1]
    at org.opendaylight.protocol.pcep.parser.object.AbstractRROWithSubobjectsParser.parseSubobjects(AbstractRROWithSubobjectsParser.java:48) [259:org.opendaylight.bgpcep.pcep-base-parser:0.10.1]
    at org.opendaylight.protocol.pcep.parser.object.PCEPReportedRouteObjectParser.parseObject(PCEPReportedRouteObjectParser.java:42) [259:org.opendaylight.bgpcep.pcep-base-parser:0.10.1]
    at org.opendaylight.protocol.pcep.parser.object.PCEPReportedRouteObjectParser.parseObject(PCEPReportedRouteObjectParser.java:26) [259:org.opendaylight.bgpcep.pcep-base-parser:0.10.1]
    at org.opendaylight.protocol.pcep.spi.pojo.SimpleObjectRegistry.parseObject(SimpleObjectRegistry.java:78) [263:org.opendaylight.bgpcep.pcep-spi:0.10.1]
    at org.opendaylight.protocol.pcep.spi.AbstractMessageParser.parseObjects(AbstractMessageParser.java:100) [263:org.opendaylight.bgpcep.pcep-spi:0.10.1]
    at org.opendaylight.protocol.pcep.spi.AbstractMessageParser.parseMessage(AbstractMessageParser.java:129) [263:org.opendaylight.bgpcep.pcep-spi:0.10.1]
    at org.opendaylight.protocol.pcep.spi.pojo.SimpleMessageRegistry.parseMessage(SimpleMessageRegistry.java:50) [263:org.opendaylight.bgpcep.pcep-spi:0.10.1]
    at org.opendaylight.protocol.pcep.impl.PCEPByteToMessageDecoder.parse(PCEPByteToMessageDecoder.java:82) [261:org.opendaylight.bgpcep.pcep-impl:0.10.1]
    at org.opendaylight.protocol.pcep.impl.PCEPByteToMessageDecoder.decode(PCEPByteToMessageDecoder.java:51) [261:org.opendaylight.bgpcep.pcep-impl:0.10.1]
    at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:502) [77:io.netty.codec:4.1.30.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:441) [77:io.netty.codec:4.1.30.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:278) [77:io.netty.codec:4.1.30.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [82:io.netty.transport:4.1.30.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [82:io.netty.transport:4.1.30.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [82:io.netty.transport:4.1.30.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323) [77:io.netty.codec:4.1.30.Final]
    at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297) [77:io.netty.codec:4.1.30.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [82:io.netty.transport:4.1.30.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [82:io.netty.transport:4.1.30.Final]
    at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340) [82:io.netty.transport:4.1.30.Final]
    at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1434) [82:io.netty.transport:4.1.30.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362) [82:io.netty.transport:4.1.30.Final]
    at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348) [82:io.netty.transport:4.1.30.Final]
    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:965) [82:io.netty.transport:4.1.30.Final]
    at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799) [83:io.netty.transport-native-epoll:4.1.30.Final]
    at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe$1.run(AbstractEpollChannel.java:382) [83:io.netty.transport-native-epoll:4.1.30.Final]
    at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) [79:io.netty.common:4.1.30.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404) [79:io.netty.common:4.1.30.Final]
    at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:326) [83:io.netty.transport-native-epoll:4.1.30.Final]
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:897) [79:io.netty.common:4.1.30.Final]
    at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [79:io.netty.common:4.1.30.Final]
    at java.lang.Thread.run(Thread.java:748) [?:?]  

 



 Comments   
Comment by Ajay Lele [ 17/Jan/20 ]

Wireshark decode of PCRpt packet in question is below. C-Type value in RRO label subobject is 10, where as ODL PCEP code currently supports values 1, 2 and 3 only.

References:

https://tools.ietf.org/html/rfc3209#section-4.4.1.3

https://tools.ietf.org/html/rfc3473#page-3

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