AutoNetkit
  • Home
  • Features
  • Screencasts
  • Installation
  • Using
  • Publications
  • About
  • Contact

Features


Explore the features of AutoNetkit.

Visual Capture

Draw your network in a visual tool such as yEd. AutoNetkit supports the GraphML input format.


Built on Abstract Model

AutoNetkit builds on our research work into abstract network representations, providing a formal and flexible approach to network design.


Design Network Services

Design your network using Python syntax.

for asn, devices in G_phy.groupby("asn").items():
  routers = [d for d in devices if d.is_router]
  ibgp_edges = [ (s, t) for s in routers for t in routers if s!=t]
  G_bgp.add_edges_from(ibgp_edges, type = 'ibgp')
G_bgp = anm.add_overlay("bgp", directed = True)
G_bgp.add_nodes_from(G_in.nodes("is_router"))

ebgp_edges = [edge for edge in G_in.edges() if edge.src.asn != edge.dst.asn]
G_bgp.add_edges_from(ebgp_edges, bidirectional = True, type = 'ebgp')


Plain-Text Templates

Generate configuration files with plain-text templates: easy to add new features and extend to new device types, and no complex XSLT to learn.

OSPF Template
hostname ${node}
password ${node.zebra.password}   
banner motd file /etc/quagga/motd.txt
!
% for interface in node.interfaces:  
  interface ${interface.id}
  #Link ${interface.description}
  ip ospf cost ${interface.ospf_cost}
  !
%endfor
!
% if node.ospf: 
router ospf
% for ospf_link in node.ospf.ospf_links:
  network ${ospf_link.network.cidr} area ${ospf_link.area} 
% endfor    
% endif
Template Output
hostname 1a.1
password 1234   
banner motd file /etc/quagga/motd.txt
!
  interface eth0
  #Link to 1a.1 to 1b.1
  ip ospf cost 1
  !
  interface eth1
  #Link to 1a.1 to 1c.1
  ip ospf cost 1
  !
!
router ospf
  network 10.0.0.0/30 area 0 
  network 10.0.0.4/30 area 0 
!

Directory-Based templates

Use complex directory structures as template patterns. Plain-text templates can be placed in directory trees, ideal for Linux service configuration.

Template Directory Structure
quagga/
└── etc
    ├── hostname
    ├── hostname.mako
    ├── ssh
    │   └── sshd_config
    └── zebra
        ├── bgp.conf.mako
        ├── motd.txt.mako
        ├── ospf.conf.mako
        ├── zebra.conf.mako
        └── zebra_daemons.conf.mako
Rendered Directory Output
├── 1a.1
│   └── etc
│       ├── hostname
│       ├── ssh
│       │   └── sshd_config
│       └── zebra
│           ├── bgp.conf
│           ├── motd.txt
│           ├── ospf.conf
│           ├── zebra.conf
│           └── zebra_daemons.conf
├── 1a_1.startup


Automated Resource Allocation

Automatically allocate network resources such as IP addresses.


Visual Feedback

Real-time feedback of network designs using the D3 visualization library, requiring only a web browser.


Automated Deployment

Automated deployment using Exscript.


Topology Zoo Integration

AutoNetkit works with network topologies from our Internet Topology Zoo Project. Simply download a network in GraphML format and run AutoNetkit.

        $ autonetkit -f Geant2012.graphml


Open Source

AutoNetkit is available on Github under a BSD licence, and builds on Python projects including NetworkX, Mako, Netaddr, Exscript and TextFSM.


Installation Install AutoNetkit →

Participate

Participate in the AutoNetkit project

© 2009—2013 autonetkit.org