[BGPCEP-263] BGP FlowSpec not advertising route Created: 29/Jul/15  Updated: 03/Mar/19  Due: 28/Sep/15  Resolved: 29/Sep/15

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

Type: Bug
Reporter: Giles Heron Assignee: Iveta Halanova
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Attachments: Zip Archive karaf.zip    
External issue ID: 4066

 Description   

I've enabled BGP FlowSpec to an IOS XR peer but I'm not seeing any FlowSpec routes being advertised.

I've used the APP RIB to add a flow-spec route:

<flowspec-route xmlns="urn:opendaylight:params:xml:ns:yang:bgp-flowspec">
<route-key>foo</route-key>
<flowspec>
<component-type>destination-port</component-type>
<destination-ports>
<op>equals</op>
<value>8080</value>
</destination-ports>
</flowspec>
<attributes>
<origin>
<value>igp</value>
</origin>
<as-path/>
<local-pref>
<pref>100</pref>
</local-pref>
<extended-communities>
<comm-type>128</comm-type>
<comm-sub-type>7</comm-sub-type>
</extended-communities>
</attributes>
</flowspec-route>

The route appears in the LocRib and in the peer's AdjRibOut but is never advertised to the peer.

Of course the route may be incorrect

The peer runs eBGP and is in AS65504. ODL is in 64496.

Giles



 Comments   
Comment by Giles Heron [ 29/Jul/15 ]

Attachment karaf.zip has been added with description: zipped logs

Comment by Dana Kutenicsova [ 31/Jul/15 ]

java.lang.IllegalStateException: Optional.get() cannot be called on an absent value
at com.google.common.base.Absent.get(Absent.java:47)[39:com.google.guava:18.0.0]
at org.opendaylight.protocol.bgp.flowspec.FSNlriParser.extractFlowspec(FSNlriParser.java:661)[260:org.opendaylight.bgpcep.bgp-flowspec:0.4.0.Lithium]
at org.opendaylight.protocol.bgp.flowspec.FlowspecRIBSupport.buildReach(FlowspecRIBSupport.java:177)[260:org.opendaylight.bgpcep.bgp-flowspec:0.4.0.Lithium]
at org.opendaylight.protocol.bgp.rib.spi.AbstractRIBSupport.buildUpdate(AbstractRIBSupport.java:253)[253:org.opendaylight.bgpcep.bgp-rib-spi:0.4.0.Lithium]
at org.opendaylight.protocol.bgp.rib.impl.AdjRibOutListener.advertise(AdjRibOutListener.java:113)[259:org.opendaylight.bgpcep.bgp-rib-impl:0.4.0.Lithium]
at org.opendaylight.protocol.bgp.rib.impl.AdjRibOutListener.onDataTreeChanged(AdjRibOutListener.java:84)[259:org.opendaylight.bgpcep.bgp-rib-impl:0.4.0.Lithium]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.dataChanged(DataTreeChangeListenerActor.java:53)[191:org.opendaylight.controller.sal-distributed-datastore:1.2.0.Lithium]
at org.opendaylight.controller.cluster.datastore.DataTreeChangeListenerActor.handleReceive(DataTreeChangeListenerActor.java:37)[191:org.opendaylight.controller.sal-distributed-datastore:1.2.0.Lithium]
at org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor.onReceive(AbstractUntypedActor.java:34)[183:org.opendaylight.controller.sal-clustering-commons:1.2.0.Lithium]
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:167)[176:com.typesafe.akka.actor:2.3.10]
at akka.actor.Actor$class.aroundReceive(Actor.scala:467)[176:com.typesafe.akka.actor:2.3.10]
at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:97)[176:com.typesafe.akka.actor:2.3.10]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:516)[176:com.typesafe.akka.actor:2.3.10]
at akka.actor.ActorCell.invoke(ActorCell.scala:487)[176:com.typesafe.akka.actor:2.3.10]
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:254)[176:com.typesafe.akka.actor:2.3.10]
at akka.dispatch.Mailbox.run(Mailbox.scala:221)[176:com.typesafe.akka.actor:2.3.10]
at akka.dispatch.Mailbox.exec(Mailbox.scala:231)[176:com.typesafe.akka.actor:2.3.10]
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)[173:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)[173:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)[173:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)[173:org.scala-lang.scala-library:2.10.4.v20140209-180020-VFINAL-b66a39653b]

Comment by Dana Kutenicsova [ 31/Jul/15 ]

Giles: could you post how the route looks like in AdjRibOut?

And I'm pretty sure that you don't need to put route-key/component-type yourself, that is generated from the content of the route.https://wiki.opendaylight.org/view/BGP_LS_PCEP:BGP#BGP_flowspec

ImmutableMapEntryNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:bgp-flowspec?revision=2015-01-14)flowspec-route[

{(urn:opendaylight:params:xml:ns:yang:bgp-flowspec?revision=2015-01-14)route-key=foo}

], value=[ImmutableUnkeyedListNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:bgp-flowspec?revision=2015-01-14)flowspec, value=[ImmutableUnkeyedListEntryNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:bgp-flowspec?revision=2015-01-14)flowspec, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:bgp-flowspec?revision=2015-01-14)component-type, value=destination-port, attributes={}},
ImmutableChoiceNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:bgp-flowspec?revision=2015-01-14)flowspec-type, value=[ImmutableUnkeyedListNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:bgp-flowspec?revision=2015-01-14)destination-ports, value=[ImmutableUnkeyedListEntryNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:bgp-flowspec?revision=2015-01-14)destination-ports, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:bgp-flowspec?revision=2015-01-14)op, value=[equals], attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:params:xml:ns:yang:bgp-flowspec?revision=2015-01-14)value, value=8080, attributes={}}], attributes={}}]}]}], attributes={}}]},

Comment by Iveta Halanova [ 03/Aug/15 ]

shouldn't it be like this?

<flowspec>
<component-type>destination-port</component-type>
<flowspec-type>
<destination-ports>
<op>equals</op>
<value>8080</value>
</destination-ports>
</flowspec-type>
</flowspec>

on level of component-type is flowspec-type, then destination-ports (or others) are read. (from what is in code, and also tree structure in comment above)

Comment by Giles Heron [ 27/Aug/15 ]

(In reply to Iveta Halanova from comment #3)
> shouldn't it be like this?
>
> <flowspec>
> <component-type>destination-port</component-type>
> <flowspec-type>
> <destination-ports>
> <op>equals</op>
> <value>8080</value>
> </destination-ports>
> </flowspec-type>
> </flowspec>
>
> on level of component-type is flowspec-type, then destination-ports (or
> others) are read. (from what is in code, and also tree structure in comment
> above)

Hi Iveta,

the choice and case don't appear in the instance data.

So I'd expect (with the new model):

<flowspec-route xmlns="urn:opendaylight:params:xml:ns:yang:bgp-flowspec">
<route-key>foo</route-key>
<flowspec>
<destination-ports>
<op>equals</op>
<value>8080</value>
</destination-ports>
</flowspec>
<attributes>
<origin>
<value>igp</value>
</origin>
<ipv4-next-hop>
<global>172.23.29.110</global>
</ipv4-next-hop>
<as-path/>
<local-pref>
<pref>100</pref>
</local-pref>
<extended-communities>
<comm-type>128</comm-type>
<comm-sub-type>7</comm-sub-type>
</extended-communities>
</attributes>
</flowspec-route>

having done that it seems to work now - at least inasmuch as it advertises the route to XR. But XR doesn't much like the route it gets:

RP/0/RSP0/CPU0:i2ss-asr9k1#RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: UPDATE from 172.23.29.110 contains nh 172.23.29.110/32, gw_afi 0, flags 0x20000, nlri_afi 18
RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: NH-Validate-Create: addr=172.23.29.110/32, len=4, nlriafi=18, nbr=172.23.29.110, gwafi=0, gwlen=4, gwaddrlen=32::: nhout=0x5113dfec, validity=1, attrwdrflags=0x00000000
RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: UPDATE from 172.23.29.110 contains EXTCOMMUNITY attribute with wrong length 2
RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: !!!!!!!!!!!!!:: ERROR_HANDLING<<172.23.29.110>> :: errfl=0x00000080, attrfl=0xc0, attrcode=16, attrlen=2:: errhenabled=1, action=4:: MSG=513e9854 (fl=0x00000080, finalaction=4, elemcount=1):: msglindex=4, msgcount=5
RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: UPDATE from 172.23.29.110 contains EXTCOMMUNITY attribute with wrong length 2
RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: !!!!!!!!!!!!!:: ERROR_HANDLING<<172.23.29.110>> :: errfl=0x00000080, attrfl=0xc0, attrcode=16, attrlen=2:: errhenabled=1, action=4:: MSG=513e9854 (fl=0x00000080, finalaction=4, elemcount=2):: msglindex=4, msgcount=5
RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: -bgp4_rcv_attributes-: END: nbr=172.23.29.110:: msg=0x5060fdcc/59, updlen=40, attrbl=0x5060fde3/36, ipv4reachlen=0, msginpath=0x3fbf0b00, asloopcheck=1, attrwdrfl=0x00000000:: samecluster=0, local_as_prepended=0, attr_wdr_flags 0x00000000, myascount=0:: rcvdata=0x5060fe07/0, errptr=0x5060fe02/5
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr] (ip4fs): Received unreachables from 172.23.29.110: attrcode=14, attrwdrflags=0x00000000
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr] (ip4fs): Martian network 0/ (path ID: none) in update from 172.23.29.110
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr] (ip4fs): UPDATE from 172.23.29.110 with attributes:
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr] (ip4fs): nexthop 172.23.29.110/32, origin i, path 64496
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr] (ip4fs): UPDATE from 172.23.29.110, prefix 0/ (path ID: none) DENIED due to:
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr] (ip4fs): malformed update 'treat-as-withdraw';
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: %ROUTING-BGP-3-MALFORM_UPDATE : Malformed UPDATE message received from neighbor 172.23.29.110 (VRF: default) - message length 59 bytes, error flags 0x00000080, action taken "TreatAsWdr". Error details: "Error 0x00000080, Field "Attr-length", Attribute 16 (Flags 0xc0, Length 2), Data [c0100280]". NLRIs: [IPv4 Flowspec] 0/
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: !!!#!#-!!:: Received Malformed UPDATE from nbr 172.23.29.110:: msglen=59, errflags=0x00000080, finalaction=TreatAsWdr:: elemcount=2, lastelem=

{"Error 0x00000080, Field "Attr-length", Attribute 16 (Flags 0xc0, Length 2), Data [c0100280]"}

:: ERRCTX=msglindex=4, malformcount=5, memfailcount=0
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: Received UPDATE from 172.23.29.110 (length incl. header = 59)
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: Receive message dump for 172.23.29.110:
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: ffff ffff ffff ffff ffff ffff ffff ffff
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: 003b 0200 0000 2440 0101 0040 0206 0201
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: 0000 fbf0 800e 0a00 0185 04ac 171d 6e00
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: 00c0 1002 8007 c010 0280 07

From the dump you can see that there's a zero NLRI length so no flowspec has been passed in at all.

also you can see we've sent two copies of the extended community (c010028007). But neither copy has 6 bytes of data that are supposed to follow the 0x8007.

Comment by Giles Heron [ 27/Aug/15 ]

(In reply to Iveta Halanova from comment #3)
> shouldn't it be like this?
>
> <flowspec>
> <component-type>destination-port</component-type>
> <flowspec-type>
> <destination-ports>
> <op>equals</op>
> <value>8080</value>
> </destination-ports>
> </flowspec-type>
> </flowspec>
>
> on level of component-type is flowspec-type, then destination-ports (or
> others) are read. (from what is in code, and also tree structure in comment
> above)

Hi Iveta,

the choice and case don't appear in the instance data.

So I'd expect (with the new model):

<flowspec-route xmlns="urn:opendaylight:params:xml:ns:yang:bgp-flowspec">
<route-key>foo</route-key>
<flowspec>
<destination-ports>
<op>equals</op>
<value>8080</value>
</destination-ports>
</flowspec>
<attributes>
<origin>
<value>igp</value>
</origin>
<ipv4-next-hop>
<global>172.23.29.110</global>
</ipv4-next-hop>
<as-path/>
<local-pref>
<pref>100</pref>
</local-pref>
<extended-communities>
<comm-type>128</comm-type>
<comm-sub-type>7</comm-sub-type>
</extended-communities>
</attributes>
</flowspec-route>

having done that it seems to work now - at least inasmuch as it advertises the route to XR. But XR doesn't much like the route it gets:

RP/0/RSP0/CPU0:i2ss-asr9k1#RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: UPDATE from 172.23.29.110 contains nh 172.23.29.110/32, gw_afi 0, flags 0x20000, nlri_afi 18
RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: NH-Validate-Create: addr=172.23.29.110/32, len=4, nlriafi=18, nbr=172.23.29.110, gwafi=0, gwlen=4, gwaddrlen=32::: nhout=0x5113dfec, validity=1, attrwdrflags=0x00000000
RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: UPDATE from 172.23.29.110 contains EXTCOMMUNITY attribute with wrong length 2
RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: !!!!!!!!!!!!!:: ERROR_HANDLING<<172.23.29.110>> :: errfl=0x00000080, attrfl=0xc0, attrcode=16, attrlen=2:: errhenabled=1, action=4:: MSG=513e9854 (fl=0x00000080, finalaction=4, elemcount=1):: msglindex=4, msgcount=5
RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: UPDATE from 172.23.29.110 contains EXTCOMMUNITY attribute with wrong length 2
RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: !!!!!!!!!!!!!:: ERROR_HANDLING<<172.23.29.110>> :: errfl=0x00000080, attrfl=0xc0, attrcode=16, attrlen=2:: errhenabled=1, action=4:: MSG=513e9854 (fl=0x00000080, finalaction=4, elemcount=2):: msglindex=4, msgcount=5
RP/0/RSP0/CPU0:Aug 27 18:31:40.333 : bgp[1050]: [default-rtr]: -bgp4_rcv_attributes-: END: nbr=172.23.29.110:: msg=0x5060fdcc/59, updlen=40, attrbl=0x5060fde3/36, ipv4reachlen=0, msginpath=0x3fbf0b00, asloopcheck=1, attrwdrfl=0x00000000:: samecluster=0, local_as_prepended=0, attr_wdr_flags 0x00000000, myascount=0:: rcvdata=0x5060fe07/0, errptr=0x5060fe02/5
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr] (ip4fs): Received unreachables from 172.23.29.110: attrcode=14, attrwdrflags=0x00000000
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr] (ip4fs): Martian network 0/ (path ID: none) in update from 172.23.29.110
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr] (ip4fs): UPDATE from 172.23.29.110 with attributes:
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr] (ip4fs): nexthop 172.23.29.110/32, origin i, path 64496
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr] (ip4fs): UPDATE from 172.23.29.110, prefix 0/ (path ID: none) DENIED due to:
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr] (ip4fs): malformed update 'treat-as-withdraw';
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: %ROUTING-BGP-3-MALFORM_UPDATE : Malformed UPDATE message received from neighbor 172.23.29.110 (VRF: default) - message length 59 bytes, error flags 0x00000080, action taken "TreatAsWdr". Error details: "Error 0x00000080, Field "Attr-length", Attribute 16 (Flags 0xc0, Length 2), Data [c0100280]". NLRIs: [IPv4 Flowspec] 0/
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: !!!#!#-!!:: Received Malformed UPDATE from nbr 172.23.29.110:: msglen=59, errflags=0x00000080, finalaction=TreatAsWdr:: elemcount=2, lastelem=

{"Error 0x00000080, Field "Attr-length", Attribute 16 (Flags 0xc0, Length 2), Data [c0100280]"}

:: ERRCTX=msglindex=4, malformcount=5, memfailcount=0
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: Received UPDATE from 172.23.29.110 (length incl. header = 59)
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: Receive message dump for 172.23.29.110:
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: ffff ffff ffff ffff ffff ffff ffff ffff
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: 003b 0200 0000 2440 0101 0040 0206 0201
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: 0000 fbf0 800e 0a00 0185 04ac 171d 6e00
RP/0/RSP0/CPU0:Aug 27 18:31:40.334 : bgp[1050]: [default-rtr]: 00c0 1002 8007 c010 0280 07

From the dump you can see that there's a zero NLRI length so no flowspec has been passed in at all.

also you can see we've sent two copies of the extended community (c010028007). But neither copy has 6 bytes of data that are supposed to follow the 0x8007.

Comment by Giles Heron [ 27/Aug/15 ]

The <flowspec-type> shouldn't be in the data (YANG choice and case statements are only in the model, not in the instance data).

I've got the route in now:

So the POST was:

<flowspec-route xmlns="urn:opendaylight:params:xml:ns:yang:bgp-flowspec">
<route-key>foo</route-key>
<flowspec>
<destination-ports>
<op>equals</op>
<value>8080</value>
</destination-ports>
</flowspec>
<attributes>
<origin>
<value>igp</value>
</origin>
<ipv4-next-hop>
<global>172.23.29.110</global>
</ipv4-next-hop>
<as-path/>
<local-pref>
<pref>100</pref>
</local-pref>
<extended-communities>
<comm-type>128</comm-type>
<comm-sub-type>7</comm-sub-type>
</extended-communities>
</attributes>
</flowspec-route>

the route was advertised to XR, but XR didn't much like it:

RP/0/RSP0/CPU0:i2ss-asr9k1#RP/0/RSP0/CPU0:Aug 27 22:18:06.631 : bgp[1050]: [default-rtr]: UPDATE from 172.23.29.110 contains nh 172.23.29.110/32, gw_afi 0, flags 0x20000, nlri_afi 18
RP/0/RSP0/CPU0:Aug 27 22:18:06.631 : bgp[1050]: [default-rtr]: NH-Validate-Create: addr=172.23.29.110/32, len=4, nlriafi=18, nbr=172.23.29.110, gwafi=0, gwlen=4, gwaddrlen=32::: nhout=0x5113dfec, validity=1, attrwdrflags=0x00000000
RP/0/RSP0/CPU0:Aug 27 22:18:06.631 : bgp[1050]: [default-rtr]: UPDATE from 172.23.29.110 contains EXTCOMMUNITY attribute with wrong length 2
RP/0/RSP0/CPU0:Aug 27 22:18:06.631 : bgp[1050]: [default-rtr]: !!!!!!!!!!!!!:: ERROR_HANDLING<<172.23.29.110>> :: errfl=0x00000080, attrfl=0xc0, attrcode=16, attrlen=2:: errhenabled=1, action=4:: MSG=513e93d4 (fl=0x00000080, finalaction=4, elemcount=1):: msglindex=0, msgcount=6
RP/0/RSP0/CPU0:Aug 27 22:18:06.631 : bgp[1050]: [default-rtr]: UPDATE from 172.23.29.110 contains EXTCOMMUNITY attribute with wrong length 2
RP/0/RSP0/CPU0:Aug 27 22:18:06.631 : bgp[1050]: [default-rtr]: !!!!!!!!!!!!!:: ERROR_HANDLING<<172.23.29.110>> :: errfl=0x00000080, attrfl=0xc0, attrcode=16, attrlen=2:: errhenabled=1, action=4:: MSG=513e93d4 (fl=0x00000080, finalaction=4, elemcount=2):: msglindex=0, msgcount=6
RP/0/RSP0/CPU0:Aug 27 22:18:06.631 : bgp[1050]: [default-rtr]: -bgp4_rcv_attributes-: END: nbr=172.23.29.110:: msg=0x5060fc98/59, updlen=40, attrbl=0x5060fcaf/36, ipv4reachlen=0, msginpath=0x3fbf0b00, asloopcheck=1, attrwdrfl=0x00000000:: samecluster=0, local_as_prepended=0, attr_wdr_flags 0x00000000, myascount=0:: rcvdata=0x5060fcd3/0, errptr=0x5060fcce/5
RP/0/RSP0/CPU0:Aug 27 22:18:06.631 : bgp[1050]: [default-rtr] (ip4fs): Received unreachables from 172.23.29.110: attrcode=14, attrwdrflags=0x00000000
RP/0/RSP0/CPU0:Aug 27 22:18:06.632 : bgp[1050]: [default-rtr] (ip4fs): Martian network 0/ (path ID: none) in update from 172.23.29.110
RP/0/RSP0/CPU0:Aug 27 22:18:06.632 : bgp[1050]: [default-rtr] (ip4fs): UPDATE from 172.23.29.110 with attributes:
RP/0/RSP0/CPU0:Aug 27 22:18:06.632 : bgp[1050]: [default-rtr] (ip4fs): nexthop 172.23.29.110/32, origin i, path 64496
RP/0/RSP0/CPU0:Aug 27 22:18:06.632 : bgp[1050]: [default-rtr] (ip4fs): UPDATE from 172.23.29.110, prefix 0/ (path ID: none) DENIED due to:
RP/0/RSP0/CPU0:Aug 27 22:18:06.632 : bgp[1050]: [default-rtr] (ip4fs): malformed update 'treat-as-withdraw';
RP/0/RSP0/CPU0:Aug 27 22:18:06.632 : bgp[1050]: %ROUTING-BGP-3-MALFORM_UPDATE : Malformed UPDATE message received from neighbor 172.23.29.110 (VRF: default) - message length 59 bytes, error flags 0x00000080, action taken "TreatAsWdr". Error details: "Error 0x00000080, Field "Attr-length", Attribute 16 (Flags 0xc0, Length 2), Data [c0100280]". NLRIs: [IPv4 Flowspec] 0/
RP/0/RSP0/CPU0:Aug 27 22:18:06.632 : bgp[1050]: [default-rtr]: !!!#!#-!!:: Received Malformed UPDATE from nbr 172.23.29.110:: msglen=59, errflags=0x00000080, finalaction=TreatAsWdr:: elemcount=2, lastelem=

{"Error 0x00000080, Field "Attr-length", Attribute 16 (Flags 0xc0, Length 2), Data [c0100280]"}

:: ERRCTX=msglindex=0, malformcount=6, memfailcount=0
RP/0/RSP0/CPU0:Aug 27 22:18:06.632 : bgp[1050]: [default-rtr]: Received UPDATE from 172.23.29.110 (length incl. header = 59)
RP/0/RSP0/CPU0:Aug 27 22:18:06.632 : bgp[1050]: [default-rtr]: Receive message dump for 172.23.29.110:
RP/0/RSP0/CPU0:Aug 27 22:18:06.632 : bgp[1050]: [default-rtr]: ffff ffff ffff ffff ffff ffff ffff ffff
RP/0/RSP0/CPU0:Aug 27 22:18:06.632 : bgp[1050]: [default-rtr]: 003b 0200 0000 2440 0101 0040 0206 0201
RP/0/RSP0/CPU0:Aug 27 22:18:06.632 : bgp[1050]: [default-rtr]: 0000 fbf0 800e 0a00 0185 04ac 171d 6e00
RP/0/RSP0/CPU0:Aug 27 22:18:06.632 : bgp[1050]: [default-rtr]: 00c0 1002 8007 c010 0280 07

you can see from the dump that the message incorrectly has an NLRI length of zero (so no match data is advertised)

you can also see that two copies of the action extended community (0x8007) are advertised but that neither one includes the traffic action bitmask.

Comment by Giles Heron [ 27/Aug/15 ]

argh, my bad. thought my comment hadn't gone in when in fact it went in twice!

Comment by Iveta Halanova [ 28/Sep/15 ]

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

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