Giter VIP home page Giter VIP logo

afourmy / pynms Goto Github PK

View Code? Open in Web Editor NEW
81.0 81.0 15.0 51.11 MB

A vendor-agnostic NMS for carrier-grade network simulation and automation

License: GNU General Public License v3.0

Python 100.00%
automation cisco graph-visualization jinja2 juniper linear-programming napalm netmiko network network-automation network-engineering network-gis-visualization network-programming network-visualization networking pyqt yaml

pynms's People

Contributors

afourmy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar

pynms's Issues

Prim's algorithm

Implement Prim's algorithm to find the minimum spanning tree.
Add a unit test for both prim and kruskal.

SDN part 1: Mininet

Interface NetDim with Mininet:

  • add a new entry in the main menu "SDN"
  • allow the user to drag and drop Open vSwitch and controller
  • add a start button to emulate everything with Mininet

Tabu search implementation

Implement Tabu search algorithm to solve the link-weight optimization problem in IP networks:

  • RIP
  • OSPF
  • IS-IS

when it runs, print the network congestion ratio
Congestion = max( link_traffic / link_capacity) for both directions for all links

Error when deactivating the selection of links in internal view mode

In the internal view of a node (shelf/card inside a network device), deactivating the selection of link triggers the following error:

Traceback (most recent call last):
File "C:\Users\minto\Desktop\pyNMS\pyNMS\main_menus\selection_panel.py", line 33, in
checkbox.clicked.connect(lambda _, m=mode: self.change_selection(m))
File "C:\Users\minto\Desktop\pyNMS\pyNMS\miscellaneous\decorators.py", line 38, in wrapper
function(self, *args, **kwargs)
File "C:\Users\minto\Desktop\pyNMS\pyNMS\main_menus\selection_panel.py", line 44, in change_selection
}mode:
File "C:\Users\minto\Desktop\pyNMS\pyNMS\networks\graph.py", line 200, in all_links
yield from self.pn[type].values()
KeyError: 'plink'
Traceback (most recent call last):
File "C:\Users\minto\Desktop\pyNMS\pyNMS\main_menus\selection_panel.py", line 33, in
checkbox.clicked.connect(lambda _, m=mode: self.change_selection(m))
File "C:\Users\minto\Desktop\pyNMS\pyNMS\miscellaneous\decorators.py", line 38, in wrapper
function(self, *args, **kwargs)
File "C:\Users\minto\Desktop\pyNMS\pyNMS\main_menus\selection_panel.py", line 44, in change_selection
}mode:
File "C:\Users\minto\Desktop\pyNMS\pyNMS\networks\graph.py", line 200, in all_links
yield from self.pn[type].values()
KeyError: 'plink'

Center view on the network

Implement a new "Center view" feature that computes the coordinates of the smallest rectangle that contains all nodes displayed on the canvas, and focus the view on that rectangle.
Should work for a selection as well.

Shapefiles issue

Start fails with shapefile error - File "/usr/local/lib/python3.5/dist-packages/shapefile.py", line 291, in load
raise ShapefileException("Unable to open %s.dbf or %s.shp." % (shapeName, shapeName) )
shapefile.ShapefileException: Unable to open /home/e069390/Projects/pyNMS/Shapefiles/World countries (low resolution).dbf or /home/e069390/Projects/pyNMS/Shapefiles/World countries (low resolution).shp

Shapefiles dir contains no .dbf files, only .shp

Edited pyNMS/views/geographical_view.py to use a different shapefile set & it works fine, so definitely an issue with either missing or corrupt files

Route summarization and binary-based routing decision

Right now, I build the routing table for each router as a dictionnary that binds an IP address (destination) to the next hop. I need to summarize the routes to reduce the number of entries in the routing table when the network is big.
During the routing process, I need to find the summarized address that contains the IP address of the destination: the fastest way to do so could be to look for the longest prefix match in binary, like in real-life networks.
Perhaps it would be best to store the IP address in both binary and decimal formats right after I create it, so that I don't have to convert back and forth every time I need one of them.

Details here:
http://www.ciscopress.com/articles/article.asp?p=174107&seqNum=3
and more details in the checkio task I created:
https://checkio.org/mission/ip-network-route-summarization/

Flow algorithms improvements

As of now, four algorithms are implemented to find the maximum flow. All four of them compute the maximum flow from a source node to a destination node (aka sink node).

Allow the user to define not just one source / sink node, but a set of sources / sinks, and update the algorithm so that it adds a virtual (dummy) source (resp sink) when there is more than one source (resp sink).

Same with minimum-cost flow.

add labels

Add labels for

  • nodes (at the bottom of a node)
  • link (both sides: A -> Z and Z -> A)
  • interfaces (both sides of a link as well)

save project in YAML instead of xls

the model is to complex to be stored in an excel (per-AS node properties, etc)
it must remain possible to import object and object properties with excel, but the saving of a project must be done in .yml format

global_delay_factor

For Netmiko and NAPALM, add a way for the user to change the global_delay_factor from the GUI.
This is useful when a device is under heavy load: the standard SSH connection fails because of that delay being too low.

Improved bhandari / suurbale algorithm

Right now, I use bhandari / suurbale to find the shortest link-disjoint pair.
The following improvements can be implemented:

  • find the K edge-disjoint paths, K > 2.
  • instead of edge-disjoint paths, find the node-and-edge-disjoint paths (which ensures the recovery path is available in case of node failure too)
  • when no path is available, find the K maximally edge-disjoint paths (i.e the paths with the least number of edges in common)

dynamic creation of properties

When a property that does not exist in the model is imported via XLS or YAML, it must be automatically created and added for the associated subtype

Internal site graph drawing algorithms

When a graph drawing algorithm is triggered from within a site (internal site view), all links between site nodes are considered as spring even if they do know belong to the site.
Ideally, they should be filtered and a mechanism should be implemented to automatically add all links that connect two site nodes to the site.

shapefile drawing: small countries like vatica, san marin, etc are not properly drawn

There's an issue when drawing a map by importing a shapefile: very small countries like Vatican, San Marin, Monaco, etc are not drawn properly on the QGraphicScene.
There must be something wrong with the drawing of complex multipolygons in the algorithm.

This happens only with shapefiles that contain such countries, i.e with a high precision.

Fix link selection

Even when the selection of links is activated, some links have the isSelectable flag set to False because of the bindings used for link creation.

drag and drop

Add drag and drop support for the user to creates nodes, to avoid creating node by mistake.

Add arrows on links

For the user to quickly identify the source and destination of a link, add arrow(s ?) from the source to the destination.
The easiest way would be to create an arrow right in the middle (the other option, more complex, would be to have two arrows at 1/4 and 3/4 of the link)

What's difficult is that links are not straights when there are multiple links between two nodes.
A "fake" invisible (with a lower "z" position on the canvas, or a null width) link must be created: it terminates with an arrow at a position which is the middle of the real link (the middle being the middle position of the straight line between two nodes, with an offset that depends on the number of links)

IP FRR LFA

In IP networks (OSPF and IS-IS), whenever a link (or node) fails, a Fast Reroute (FRR) protection can be activated for the router to precompute a next-hop to reroute the traffic (within < 50ms usually before the protocol reconvergence).
The next-hop must be chosen to avoid loops (Loop-Free Alternate).

  • Implement the Fast Reroute protection algorithm based of RFC 5286 (https://tools.ietf.org/html/rfc5286)
  • Update the configuration window with the FRR activation command in Cisco routers

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.