netfishers-onl / BLT

BLT The BGP Linkstate Topographer
24 stars 8 forks source link

Error when receiving Link State DB (v0.4.3 iBGP to Junos) #2

Closed gl closed 8 years ago

gl commented 8 years ago

Hello,

I'm trying to send the link state DB from a Juniper router. I have done the proper configuration for BGP and it works fine from a BGP point of view.

However, on reception of the updates, BLT crashes. Here's the log dump with DEBUG enabled:

2016-03-13 21:02:06,039 INFO [New I/O worker #154] InternalFSM: FSM for peer Backbone moved to Established 21:02:06.039 [QuartzScheduler_QuartzSchedulerThread] DEBUG o.quartz.core.QuartzSchedulerThread - batch acquisition of 1 triggers 2016-03-13 21:02:06,039 DEBUG [QuartzScheduler_QuartzSchedulerThread] QuartzSchedulerThread: batch acquisition of 1 triggers 21:02:06.072 [New I/O worker #154] INFO o.n.b.bgp.netty.handlers.BGPv4Codec - received packet onl.netfishers.blt.bgp.netty.protocol.KeepalivePacket@5f22eb6[type=4] 2016-03-13 21:02:06,072 INFO [New I/O worker #154] BGPv4Codec: received packet onl.netfishers.blt.bgp.netty.protocol.KeepalivePacket@5f22eb6[type=4] 21:02:06.073 [New I/O worker #154] INFO o.n.blt.bgp.netty.fsm.BGPv4FSM - received message onl.netfishers.blt.bgp.netty.protocol.KeepalivePacket@5f22eb6[type=4] 2016-03-13 21:02:06,073 INFO [New I/O worker #154] BGPv4FSM: received message onl.netfishers.blt.bgp.netty.protocol.KeepalivePacket@5f22eb6[type=4] 21:02:06.073 [QuartzScheduler_QuartzSchedulerThread] DEBUG o.quartz.core.QuartzSchedulerThread - batch acquisition of 1 triggers 2016-03-13 21:02:06,073 DEBUG [QuartzScheduler_QuartzSchedulerThread] QuartzSchedulerThread: batch acquisition of 1 triggers 21:02:06.073 [New I/O worker #154] ERROR o.n.b.b.n.p.u.UpdatePacketDecoder - Invalid length (4) for teDefaultMetric 2016-03-13 21:02:06,073 ERROR [New I/O worker #154] UpdatePacketDecoder: Invalid length (4) for teDefaultMetric 21:02:06.074 [New I/O worker #154] ERROR o.n.b.b.n.p.u.UpdatePacketDecoder - failed to decode TE default metric LINK_STATE attribute onl.netfishers.blt.bgp.netty.protocol.update.OptionalAttributeErrorException: null at onl.netfishers.blt.bgp.netty.protocol.update.LinkStateAttributeCodec.decodeTEDefaultMetric(LinkStateAttributeCodec.java:393) [blt.jar:na] at onl.netfishers.blt.bgp.netty.protocol.update.LinkStateAttributeCodec.decodeAttr(LinkStateAttributeCodec.java:82) [blt.jar:na] at onl.netfishers.blt.bgp.netty.protocol.update.UpdatePacketDecoder.decodeLinkStateAttribute(UpdatePacketDecoder.java:461) [blt.jar:na] at onl.netfishers.blt.bgp.netty.protocol.update.UpdatePacketDecoder.decodePathAttributes(UpdatePacketDecoder.java:542) [blt.jar:na] at onl.netfishers.blt.bgp.netty.protocol.update.UpdatePacketDecoder.decodeUpdatePacket(UpdatePacketDecoder.java:136) [blt.jar:na] at onl.netfishers.blt.bgp.netty.protocol.BGPv4PacketDecoder.decodePacket(BGPv4PacketDecoder.java:55) [blt.jar:na] at onl.netfishers.blt.bgp.netty.handlers.BGPv4Codec.messageReceived(BGPv4Codec.java:59) [blt.jar:na] at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:88) [blt.jar:na] at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:560) [blt.jar:na] at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:787) [blt.jar:na] at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296) [blt.jar:na] at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462) [blt.jar:na] at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443) [blt.jar:na] at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303) [blt.jar:na] at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) [blt.jar:na] at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:560) [blt.jar:na] at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:555) [blt.jar:na] at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) [blt.jar:na] at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) [blt.jar:na] at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) [blt.jar:na] at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:107) [blt.jar:na] at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) [blt.jar:na] at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:88) [blt.jar:na] at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) [blt.jar:na] at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) [blt.jar:na] at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) [blt.jar:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_74] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_74] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_74] 2016-03-13 21:02:06,074 ERROR [New I/O worker #154] UpdatePacketDecoder: failed to decode TE default metric LINK_STATE attribute

AlainMoretti commented 8 years ago

Hi Guillaume, to be honest, I have never done any testing with a JunOS router, so it is an interesting use case !

I have an idea regarding the way we can fix this but I would like to have a closer look at some BGP LS update coming from a JunOS router.

Could you send me a pcap capture containing the"killing" update ?

Thanks a bunch

AlainMoretti commented 8 years ago

TE Default metric TLV must be 4 bytes long.
I have just committed a fix and updated binary package as well.
Could you please give it a try and let me know ?

gl commented 8 years ago

I'm sorry but you'll have to guide me into the jar generation process, I'm not best friend with all things java :)

AlainMoretti commented 8 years ago

Binary package already contains the fix, just download the zip file again here and let me know.

gl commented 8 years ago

Oh, thanks. Well, that's working now. The BGP is stable, the topology renders, but all routers are shown as "unknown".