Giter VIP home page Giter VIP logo

autonetkit's Introduction

AutoNetkit

AutoNetkit is a configuration engine to quickly and easily build large-scale network configurations.

Update: the code has been rewritten for Python3 compatibility. This is a ground-up rewrite for performance and ease of use, with a cleaner API and many of the complexities and quirks of the previous research-based code removed. This update is being finalised and is in the process of being tested and pushed to PyPi.

The code is usable, and can be used for end-to-end configuration generation.

For an example of using the API, please see the tutorial, and for an end-to-end use-case please see the tests, in particular test_core which will build a series of configurations from the provided example .graphml topology.

Features

High-level syntax

Visualization

Visualization

Extending

Users

Users from industry, academia, and university teaching.

Further information

More information on AutoNetkit:

Contact

autonetkit's People

Contributors

iainwp avatar oliviertilmans avatar sk2 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

autonetkit's Issues

Redefine ANM/NIDB JSON format

We need a better defined format for serializing the ANM and NIDB modules into JSON format.

Currently JSON is used both to serialize each of the ANM and NIDB, and for pushing the updated network topologies to the webserver.

The latter is the problem - currently each of the overlay graphs are individually converted to JSON format, pushed into a dictionary, and then JSON-ified a second time.

Additionally, this dictionary assumes each key is an overlay graph, limiting the ability to pass network-wide data, which applies to all overlay graphs (such as the Network Name). This causes issues for gh-84.

The description format should:

  • Allow serialization of each of the ANM and NIDB seperately
  • Only have a single JSON step, to serialise all of the overlays, such that the data structure can be extracted cleanly in a single parse in any language
  • Allow network-wide data

One solution could take the form of:

{
'data': {
    'name': 'mynetwork'
    },
'anm': {
    'phy': {(graph)}
    'ospf': {(graph)},
    ...
    },
'nidb': {
    (graph)
},
}

Add BGP Policy

Have support for parsing into Syntax Tree.
Need:

  • appropriate flattening into different device formats
  • handling of selection syntax for Origin() and Transit()
  • Allocation of prefix and community lists

Add Olive support

Basic Junos, with appropriate interfaces.
Initially will NOT handle creating and starting up (ie no deployment step)

NIDB Access Refactoring

Redo nidb as isistance wrapper to allow set and get attributes

stackoverflow.com/questions/1305532/convert-python-dict-to-object

d3 hull error if three nodes in a line

d3 hull throws an error if there are three nodes in a straight line. this can occur if two routers, and the created collision domain between them.

Need checking code to handle this. One solution is to add an epsilon (eg 0.01) to the intermediate node, so they're not in a perfect line.

Interface naming

Need a more general approach to interface naming, than using edge_ids

(This is a large piece of work)

Support Dynagen

Already generate IOS.
Need to create the dynagen topology file.

Future work can look at automatic deployment and measurement.

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.