[BGPCEP-171] LSP Identifiers TLV is not needed for segment routing LSP Created: 24/Nov/14  Updated: 03/Mar/19  Resolved: 01/Dec/14

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

Type: Bug
Reporter: Bin Pan Assignee: Milos Fabian
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: 2423

 Description   

I double checked the draft-ietf-pce-stateful-pce-07. It saids:
“The LSP Identifiers TLV MUST be included in the LSP object in PCRpt messages for RSVP-signaled LSPs.”

So for “SR-signaled LSPs”, LSP Identifiers TLV is not needed in the LSP object of PCRqt message.

While the netork-topology-pcep.yang of Heilum stable version ODL only processes rsvp LSP. So I think it is a bug for not processing SR LSP correctly.

list reported-lsp {
leaf name

{ type string; }

key name;

list path {
leaf lsp-id

{ type rsvp:lsp-id; mandatory true; }

key lsp-id;

uses pcep:path-definition;
}
uses lsp-metadata;



 Comments   
Comment by Dana Kutenicsova [ 24/Nov/14 ]

I don't see the connection between draft statement and yang model fragment. I don't see any restriction in Pcrpt message parser for the LSP Identifiers TLV:
/pcep-segment-routing/src/main/java/org/opendaylight/protocol/pcep/segment/routing02/SrPcRptMessageParser.java

The only restriction there is the presence of LSP object.

Also topology provider does not enforce LSP Identifiers TLV:

/pcep-topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/Stateful07TopologySessionListener.java

// only put lsp identifiers tlv value, if the tlv is present
if (tlvs.getLspIdentifiers() != null)

{ pb.setLspId(tlvs.getLspIdentifiers().getLspId()); }
Comment by Bin Pan [ 28/Nov/14 ]

If I don’t set the LSP Identifiers TLV, the report message for SR-signaled LSP will fail. The missing key is getLspId which is from LSP Identifiers TLV. Please double check.

ODL Version: Heilum/stable

osgi>
osgi> 2014-11-24 05:39:09.615 PST [nettyThreadgroupModule$NioEventLoopGroupCloseable-7-2] DEBUG o.o.b.p.t.provider.PCEPRequest - Request went from UNSENT to UNACKED
2014-11-24 05:39:09.742 PST [nettyThreadgroupModule$NioEventLoopGroupCloseable-7-2] DEBUG o.o.b.p.t.p.Stateful07TopologySessionListener - Request SrpIdNumber [_value=1] resulted in LSP operational state Active
2014-11-24 05:39:09.747 PST [nettyThreadgroupModule$NioEventLoopGroupCloseable-7-2] DEBUG o.o.b.p.t.p.AbstractTopologySessionListener - Saved LSP PlspId [_value=100] with name update-tunel-sr1
2014-11-24 05:39:09.767 PST [nettyThreadgroupModule$NioEventLoopGroupCloseable-7-2] WARN i.n.channel.DefaultChannelPipeline - An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
java.lang.IllegalArgumentException: All keys must be specified for class org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.pcep.client.attributes.path.computation.client.reported.lsp.PathKey. Missing key is getLspId. Supplied key is PathKey []
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:119) ~[na:na]
at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext$ValueContext.getAndSerialize(BindingCodecContext.java:352) ~[na:na]
at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext$IdentifiableItemCodec.serialize(BindingCodecContext.java:418) ~[na:na]
at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext$IdentifiableItemCodec.serialize(BindingCodecContext.java:367) ~[na:na]
at org.opendaylight.yangtools.binding.data.codec.impl.ListNodeCodecContext.serialize(ListNodeCodecContext.java:83) ~[na:na]
at org.opendaylight.yangtools.binding.data.codec.impl.BindingToNormalizedStreamWriter.startMapEntryNode(BindingToNormalizedStreamWriter.java:161) ~[na:na]
at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.pcep.client.attributes.path.computation.client.reported.lsp.Path$StreamWriter.serialize(DataObjectSerializerPrototype.java) ~[na:na]
at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev131024.pcep.client.attributes.path.computation.client.ReportedLsp$StreamWriter.serialize(DataObjectSerializerPrototype.java) ~[na:na]
at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry$DataObjectSerializerProxy.serialize(BindingNormalizedNodeCodecRegistry.java:214) ~[na:na]
at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry.toNormalizedNode(BindingNormalizedNodeCodecRegistry.java:98) ~[na:na]
at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toNormalizedNode(BindingToNormalizedNodeCodec.java:56) ~[na:na]
at org.opendaylight.controller.md.sal.binding.impl.AbstractWriteTransaction.put(AbstractWriteTransaction.java:42) ~[na:na]
at org.opendaylight.controller.md.sal.binding.impl.BindingDataWriteTransactionImpl.put(BindingDataWriteTransactionImpl.java:40) ~[na:na]
at org.opendaylight.bgpcep.pcep.topology.provider.AbstractTopologySessionListener.updateLsp(AbstractTopologySessionListener.java:359) ~[na:na]
at org.opendaylight.bgpcep.pcep.topology.provider.Stateful07TopologySessionListener.onMessage(Stateful07TopologySessionListener.java:203) ~[na:na]
at org.opendaylight.bgpcep.pcep.topology.provider.AbstractTopologySessionListener.onMessage(AbstractTopologySessionListener.java:217) ~[na:na]
at org.opendaylight.bgpcep.pcep.topology.provider.AbstractTopologySessionListener.onMessage(AbstractTopologySessionListener.java:65) ~[na:na]
at org.opendaylight.protocol.pcep.impl.PCEPSessionImpl.handleMessage(PCEPSessionImpl.java:321) ~[na:na]
at org.opendaylight.protocol.pcep.impl.PCEPSessionImpl.handleMessage(PCEPSessionImpl.java:49) ~[na:na]
at org.opendaylight.protocol.framework.AbstractProtocolSession.channelRead0(AbstractProtocolSession.java:46) ~[na:na]
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[bundlefile:4.0.23.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [bundlefile:4.0.23.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [bundlefile:4.0.23.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [bundlefile:4.0.23.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [bundlefile:4.0.23.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [bundlefile:4.0.23.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) [bundlefile:4.0.23.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [bundlefile:4.0.23.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) [bundlefile:4.0.23.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) [bundlefile:4.0.23.Final]
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:130) [bundlefile:4.0.23.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) [bundlefile:4.0.23.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) [bundlefile:4.0.23.Final]
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) [bundlefile:4.0.23.Final]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) [bundlefile:4.0.23.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) [bundlefile:4.0.23.Final]
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) [bundlefile:4.0.23.Final]
at java.lang.Thread.run(Thread.java:744) [na:1.7.0_55]

Comment by Milos Fabian [ 28/Nov/14 ]

https://git.opendaylight.org/gerrit/#/c/13167/

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