-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Welcome to the dot2net documentation. dot2net implements topology-driven configuration: you describe the network as a graph (DOT) and configure it with reusable classes and templates (YAML), and dot2net works out the addresses and writes every device's configuration — and the files the emulation platform needs to deploy it.
The pair you write, taken together, is what this documentation calls a topology. See Basic Concepts.
- Upgrading to 0.8.0 - What changes for a topology written for 0.7.x
- Tutorial - Installation, basic usage, and first steps with dot2net
- Basic Concepts - Topology-driven configuration principles and architecture
- DOT File Syntax - The network structure (the graph), written in DOT language
- YAML Configuration - Configuration templates and class system
- Template System - Writing one config block: syntax, what it can read, and one block per neighbor or class member
- Template Assembly - Putting the blocks together into a file, and getting the file written
- Parameter Generation - IP assignment, param_rule, and Value class
- File Output - File generation and output location control
- Command Reference - Complete CLI reference
- Module System - How modules integrate with user configurations
- Module: Containerlab - Containerlab topo.yaml generation
- Module: TiNET - TiNET spec.yaml generation
- Module: Kathara - Kathara lab.conf generation
- Module: FRR - FRR FormatStyle and file logging
- Best Practices - How to design a topology, what multi-host asks of it, and what to do when something is wrong
The repository ships 20 working topologies, and reading the one nearest to what you want is usually faster than assembling it from the pages above. Each is a pair of input files with the output dot2net should produce for it, checked on every build.
-
topologies/— 13 networks worth deploying: the FRR topotests, the TiNET examples, and dot2net's own. Start withospf_simple;ospf_multihostis the one to copy for a lab spanning machines -
example/— 7 small topologies, each showing what one piece of the notation does
Each directory's readme says what every topology is for, and which platforms it generates for.
- Architecture Overview - Packages, the path from DOT to generated files, and the module system's place in it
- NetworkModel Design - The objects the model is built from, and the interfaces they implement
- FormatStyle Design - The two-phase formatting that keeps control syntax out of templates
- Module Development - Writing a module: the interfaces, when each runs, and what a module may say to a topology
- Development Guide - Building, testing, releasing, and how to contribute
- GitHub: https://github.com/cpflat/dot2net
- Issues: Report bugs and request features
- Discussions: Ask questions and share experiences
dot2net has been published and demonstrated in peer-reviewed academic venues:
"Topology-Driven Configuration of Emulation Networks With Deterministic Templating" Satoru Kobayashi, Ryusei Shiiba, Shinsuke Miwa, Toshiyuki Miyachi, Kensuke Fukuda DOI: 10.1109/TNSM.2025.3582212
"dot2net: A Labeled Graph Approach for Template-Based Configuration of Emulation Networks" Satoru Kobayashi, Ryusei Shiiba, Ryosuke Miura, Shinsuke Miwa, Toshiyuki Miyachi, Kensuke Fukuda DOI: 10.23919/CNSM59352.2023.10327865
If you use dot2net in your research, please consider citing our work:
@article{Kobayashi_dot2net2025,
author={Kobayashi, Satoru and Shiiba, Ryusei and Miwa, Shinsuke and Miyachi, Toshiyuki and Fukuda, Kensuke},
journal={IEEE Transactions on Network and Service Management},
title={Topology-Driven Configuration of Emulation Networks With Deterministic Templating},
volume={22},
number={5},
pages={3933-3946},
year={2025},
doi={10.1109/TNSM.2025.3582212}
}
@inproceedings{Kobayashi_dot2net2023,
author={Kobayashi, Satoru and Shiiba, Ryusei and Miura, Ryosuke and Miwa, Shinsuke and Miyachi, Toshiyuki and Fukuda, Kensuke},
booktitle={19th International Conference on Network and Service Management (CNSM)},
title={dot2net: A Labeled Graph Approach for Template-Based Configuration of Emulation Networks},
pages={1-9},
year={2023},
doi={10.23919/CNSM59352.2023.10327865}
}This wiki documentation has been primarily generated using AI assistance (Claude Code) to provide comprehensive and up-to-date information about dot2net. The content is continuously being updated and improved. If you find missing information or have suggestions, please feel free to contribute!
This documentation is part of the dot2net project and is licensed under the Apache License 2.0.
Copyright 2022 Satoru Kobayashi
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.