[BGPCEP-479] no bgp update sent when evpn route configured with <arbitrary> Created: 10/Jun/16  Updated: 03/Mar/19  Resolved: 13/Jun/16

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

Type: Bug
Reporter: Peter Gubka Assignee: Claudio David Gasparini
Resolution: Cannot Reproduce 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: 6047

 Description   

odl: distribution-karaf-0.5.0-20160610.063034-2786.tar.gz

steps to reproduce:
1) connect a peer supporting evpv

2) POST http://controller-ip:8181/restconf/config/bgp-rib:application-rib/example-app-rib/tables/odl-bgp-evpn:l2vpn-address-family/odl-bgp-evpn:evpn-subsequent-address-family/odl-bgp-evpn:evpn-routes/

<?xml version="1.0" ?>
<evpn-route xmlns="urn:opendaylight:params:xml:ns:yang:bgp-evpn">
<route-key>evpn1</route-key>
<route-distinguisher>429496729:1</route-distinguisher>
<es-route>
<orig-route-ip>43.43.43.43</orig-route-ip>
<arbitrary>
<arbitrary>ABCD</arbitrary>
</arbitrary>
</es-route>
<attributes>
<ipv4-next-hop>
<global>199.20.166.41</global>
</ipv4-next-hop>
<as-path/>
<origin>
<value>igp</value>
</origin>
</attributes>
</evpn-route>

3) no update message seen in wireshark and log contains:
2016-06-10 06:42:23,849 | ERROR | n-dispatcher-366 | DataTreeChangeListenerActor | 167 - org.opendaylight.controller.sal-distributed-datastore - 1.4.0.SNAPSHOT | Error notifying listener org.opendaylight.protocol.bgp.rib.impl.AdjRibOutListener@47a83fef
java.lang.IllegalArgumentException: Invalid length: [0, 16, -125], expected: [[9‥9]].
at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev160321.esi.esi.arbitrary._case.ArbitraryBuilder.check_arbitraryLength(ArbitraryBuilder.java:63)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev160321.esi.esi.arbitrary._case.ArbitraryBuilder.setArbitrary(ArbitraryBuilder.java:68)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.impl.esi.types.EsiModelUtil.extractArbitrary(EsiModelUtil.java:42)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.impl.esi.types.ArbitraryParser.serializeEsi(ArbitraryParser.java:39)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.spi.pojo.SimpleEsiTypeRegistry.parseEsiModel(SimpleEsiTypeRegistry.java:74)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.impl.nlri.AbstractEvpnNlri.serializeEsi(AbstractEvpnNlri.java:45)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.impl.nlri.EthSegRParser.createRouteKey(EthSegRParser.java:67)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.impl.nlri.EthSegRParser.serializeEvpnModel(EthSegRParser.java:61)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.spi.pojo.SimpleEvpnNlriRegistry.lambda$serializeEvpnModel$0(SimpleEvpnNlriRegistry.java:77)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.spi.pojo.SimpleEvpnNlriRegistry$$Lambda$84/1731325330.check(Unknown Source)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.spi.pojo.SimpleEvpnNlriRegistry.getEvpnCase(SimpleEvpnNlriRegistry.java:92)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.spi.pojo.SimpleEvpnNlriRegistry.serializeEvpnModel(SimpleEvpnNlriRegistry.java:77)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.impl.nlri.EvpnNlriParser$$Lambda$83/1265637445.check(Unknown Source)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.impl.nlri.EvpnNlriParser.extractDestination(EvpnNlriParser.java:66)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.impl.nlri.EvpnNlriParser.extractEvpnDestination(EvpnNlriParser.java:60)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.impl.EvpnRibSupport$$Lambda$82/1779398168.apply(Unknown Source)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)[:1.8.0_51]
at java.util.Collections$2.tryAdvance(Collections.java:4717)[:1.8.0_51]
at java.util.Collections$2.forEachRemaining(Collections.java:4725)[:1.8.0_51]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512)[:1.8.0_51]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502)[:1.8.0_51]
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)[:1.8.0_51]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)[:1.8.0_51]
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)[:1.8.0_51]
at org.opendaylight.protocol.bgp.evpn.impl.EvpnRibSupport.extractRoutes(EvpnRibSupport.java:95)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.evpn.impl.EvpnRibSupport.buildDestination(EvpnRibSupport.java:85)[186:org.opendaylight.bgpcep.bgp-evpn:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.rib.spi.AbstractRIBSupport.buildReach(AbstractRIBSupport.java:156)[169:org.opendaylight.bgpcep.bgp-rib-spi:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.rib.spi.AbstractRIBSupport.buildUpdate(AbstractRIBSupport.java:315)[169:org.opendaylight.bgpcep.bgp-rib-spi:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.rib.impl.AdjRibOutListener.advertise(AdjRibOutListener.java:144)[182:org.opendaylight.bgpcep.bgp-rib-impl:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.rib.impl.AdjRibOutListener.processRouteChange(AdjRibOutListener.java:115)[182:org.opendaylight.bgpcep.bgp-rib-impl:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.rib.impl.AdjRibOutListener.processSupportedFamilyRoutes(AdjRibOutListener.java:96)[182:org.opendaylight.bgpcep.bgp-rib-impl:0.6.0.SNAPSHOT]
at org.opendaylight.protocol.bgp.rib.impl.AdjRibOutListener.onDataTreeChanged(AdjRibOutListener.java:88)[182:org.opendaylight.bgpcep.bgp-rib-impl:0.6.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.dataChanged(DataTreeChangeListenerActor.java:55)[167:org.opendaylight.controller.sal-distributed-datastore:1.4.0.SNAPSHOT]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.handleReceive(DataTreeChangeListenerActor.java:37)[167:org.opendaylight.controller.sal-distributed-datastore:1.4.0.SNAPSHOT]
at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:25)[162:org.opendaylight.controller.sal-clustering-commons:1.4.0.SNAPSHOT]
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:165)[150:com.typesafe.akka.actor:2.4.4]
at akka.actor.Actor$class.aroundReceive(Actor.scala:482)[150:com.typesafe.akka.actor:2.4.4]
at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:95)[150:com.typesafe.akka.actor:2.4.4]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526)[150:com.typesafe.akka.actor:2.4.4]
at akka.actor.ActorCell.invoke(ActorCell.scala:495)[150:com.typesafe.akka.actor:2.4.4]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257)[150:com.typesafe.akka.actor:2.4.4]
at akka.dispatch.Mailbox.run(Mailbox.scala:224)[150:com.typesafe.akka.actor:2.4.4]
at akka.dispatch.Mailbox.exec(Mailbox.scala:234)[150:com.typesafe.akka.actor:2.4.4]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[146:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[146:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[146:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[146:org.scala-lang.scala-library:2.11.8.v20160304-115712-1706a37eb8]



 Comments   
Comment by Peter Gubka [ 10/Jun/16 ]

it looks like it is a problem of <es-route>, because using any of Evpn ESI makes the same (not sending update message)

Comment by Claudio David Gasparini [ 13/Jun/16 ]

Tested against distribution-karaf-0.5.0-20160610.112226-2793.zip, and everything went correctly.

Please use
<arbitrary>
<arbitrary>AAAAAAAAAAAA</arbitrary>
</arbitrary>

as the Exception said the problem was the length and in wiki was a shorter example.
Arbitrary needs to represent an 9 octets array length. I'll improve logs anyway so it can see better.

Regarding the others cases I didn't suffer any problem when testing them.

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