Our networks (data centers, service providers, enterprises) make foundation for the successful applications' delivery to customers. Therefore, they are critical infrastructure of the modern digital economics. As such, we need to have an extensive set of tools and processes, which would allow us to plan, model, build, optimise and troubleshoot networks. This is exactly the purpose of the Highly-efficient Automated Weapon Kit (HAWK). HAWK is a collection of tools to help you to build and operate the networks of any types (data centres, service providers and enterprises) at world-class level.
At the moment HAWK is being developed as a set of Python tools, which at some point may become something much bigger.
Tool name | File | Description |
---|---|---|
Analyzer | topology_analyzer.py | Visualisation of the network topology (LLDP, BFD, BGP, ISIS) and what-if analysis of the node outage |
The tools is constantly developing, so the changes may be frequent. At the current moment, the following interfaces are supported:
- SSH (in asyncrhonous mode)
- GNMI (in synchronous mode)
Name | Inventory identificator | Implementation |
---|---|---|
Cumulus Linux | cumulus-linux |
Done |
Arista EOS | arista-eos |
In progress |
Nokia SRLinux | nokia-srlinux |
Planned |
You can use one of 3 approaches:
- Provide variables in environment (
HAWK_USER
for username at network functions,HAWK_PASS
for password for network functions,NB_TOKEN
for NetBox API access,NB_URL
for NetBox URL). - Provide credentials for NetBox in
config.yaml
and username/password in local inventory file. - Provide all the credentials via cli.
Created and tested in Python 3.7 - 3.9
Watch requirements.txt
- Modify the the configuration file:
config.yaml
. If you chose local inventory, modify theinventory.yaml
file inside theinventory
directory per your topology. - Install the modules from
requirements.txt
usingpip
. - Execute the correspondin HAWK tool per the table above (e.g.,
python topology_analyzer.py
) . - Open in the
output
directory the relevant generated reports.
By using this product you accept the license agreement
Release 0.4.2
:
- Added environment variable
NB_URL
to provide the NetBox url. - Minor bug fixing.
Release 0.4.1
:
- Rebuild
show-hosts
to work with dictionary first rather that writing to file.
Release 0.4.0
:
- Added new operation to
-o show-hosts
, which collects IPv4/IPv6 addresses, MACs, port description, etc. - Minor bug fixing.
Release 0.3.6
:
- Added functionality to quantify amount of collected IP hosts to the node.
- Minor bug fixing.
Release 0.3.5
:
- Added capability to test connectivity between desired node types using key
-ct
. - Added capability to test connectivity between desired nodes using key
-cn
.
Release 0.3.4
:
- Added capability to draw peerlink BGP sessions.
Release 0.3.3
:
- Minor modificaitions.
Release 0.3.2
:
- Fixed logical error, where the non-established BGP session was pasing the the connectivity check.
- Added functionality for validating the specific node failure.
Release 0.3.1
:
- Minor bug fixing.
Release 0.3.0
:
- First public release.
Release 0.2.1
:
- A lot of rework to generalise the tool.
Release 0.2.1
:
- Changed name of the
main.py
.
Release 0.2.0
:
- Adding info polling from netbox regarding the management IPs
Release 0.1.0
:
- First release
(c) 2021, Karneliuk.com