Giter Site home page Giter Site logo

blt's Introduction

BLT

The BGP Linkstate Topographer
BLT 0.4.3 google maps view boxes BLT 0.4.3 google maps view dijkstra BLT 0.4.3 google maps view dijkstra BLT 0.4.3 google maps view dijkstra

Features

  • Retrieves BGP link state information and produces a graph
  • Supports OSPF and ISIS
  • Map options
    • jsPlumb map customizable layout
    • Google Maps with GPS nodes coordinates retrieved from SNMP or DNS
  • Real Time Monitoring
    • BGP session provides real time update when a change occurs in IGP domain
    • routers and links are automatically updated (green/orange/red) on topology graphs, either jsPlumb or Google Maps
  • Backup and storage of IGP database in XML format
  • Northbound Rest API
  • User authentication
  • Dijkstra tree computation and visibility towards one or several nodes
  • Free

How to start

Go to http://www.netfishers.onl/blt
Basic installation instructions are included in the distribution files
You can also consult the blog posts

Binary package and
Source code available from Netfishers GitHub space

If you want to contribute to the code, pull it from GitHub and contact us to publish updates.

Contact

[email protected]

blt's People

Contributors

alainmoretti avatar scadilhac avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blt's Issues

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

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

All devices show as "unknown"

After importing the Link state db the topology renders but all devices are "unknown".
Router-ids are there, and snmp communities are configured for the appropriate ranges.
However, no snmp requests are sent out from the blt server.

BGP: keepalive interval bigger than hold time

BGP Hold Time in BLT is 30 seconds, but keepalive message are only sent every 60 seconds. This causes the BGP session to keep going down.

As per RFC4271 section 4.4, the keepalive interval should be one third of the Hold Time interval.

If the keepalive interval is bigger than hold time, the BGP session cannot possibly be stable.

It would probably best to bump the hold time to 180 seconds.

Negative impact of SNMP polling on BLT behaviour

When IGP nodes have a huge amount of interfaces (mainly subinterfaces), most of SNMP polling tasks fail and this causes BLT to miss BGP keepalives, and peering to go up and down.

FIx to be evaluated: restrict SNMP polling to interfaces belonging to IGP only.

Dijkstra shortest path calculation uses inactive link

Hello,

if a link is down, BLT correctly shows a red, interupted link and allows to remove the link (since it is no longer present in the IGP topology).

However, it still considers this link, when calculating the shortest path from A to B (left click on the destination node, right click on the source node).

Best path calculation should ignore links that are not present in IGP anymore.

node infos always shown at the top

Node infos (when clicking on a node) are always shown at the top of the document.

However, when the map is bigger than the screen, there are scrollbars and when we are not at the top of the document, the node info box is basically hidden and we have to scroll to the top to see it.

It would be better to show it close to the actual node, or within the current focus.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.