A correctness read-through of the five delivered datapath documents, plus
the two code comments that carried the same stale vocabulary.
Datapath selection: the VendorDockerVM selector is `console_type=docker_exec`
alone (`GNS3_SKIP_INIT` and friends are behavior knobs of the chosen class);
the cross-compute and anchor-less fallbacks are named for what they are; the
Ethernet-switch endpoint is the documented exception to the anchoring rule,
and the IOL runner container is called out as the Docker node that does not
anchor on a veth.
Filter vocabulary: the stateful eBPF program evaluates four modes
(nth → quota → window → flow), GNS3 exposes three of them, and window_drop
joins the kernel-only list; the correl suffixes gate on the `rate` token as
the extension-build marker.
group_fwd_mask: the 0xfffd port mask is applied inside uBridge's `brctl addif`
itself, not as a separate command — the link-creation sequences and the
operation tables no longer show an arrow the server never sends. Same class
of fix for `link set up` on the IOL anchor (addif already brought it up; the
command only pushes a suspended anchor back down) and for the QEMU carrier
replication (QMP `set_link`, gated by `replicate_network_connection_state`).
Lifecycles and stop orders re-worded around the invariant rather than the
node type: the fd holder must release before the devices are deleted, which
is QEMU's process-first order, IOU's uBridge-first order and Dynamips'
hypervisor-NIO-first order. Deferred wiring for a stopped endpoint is
documented as the common path it is, and the Dynamips "stop is not a close"
note now says what recovery from a dead hypervisor actually requires.
Dynamips specifics: a c7200 needs an adapter in slot 1 (slot 0 is the fixed
I/O slot), the tap-fd direction is stated correctly (writes inject into the
kernel, reads return what the kernel transmits), and the anchor registry is
name-keyed against the controller's port matrix by convention, not derivation.
IOL port bridge naming: `bridge{bay}` on unit 0, `bridge{bay}_{unit}`
elsewhere; the leg swap happens on link delete/re-create or a datapath
switch, while suspend is an in-place NIO update and a project reopen is a
fresh build.
Verified and Roadmap sections: the in-repo e2e suite is distinguished from
the isolated-instance development harness (IOU), assertions are stated with
their bounds and capability gates, and the roadmap entries collapse into the
one remaining project — VXLAN/GENEVE for cross-compute links.
Code comments: `flow` added to the documented mode order in the eBPF apply
path, and the `nio_bridge` module docstring corrected on which filter types
run on the kernel datapath (bpf via cls_bpf, frequency_drop/quota/window_drop
via the eBPF classifier — neither is relay-only any more).
GNS3 server repository
The GNS3 server manages emulators and other virtualization software such as Dynamips, Qemu/KVM, Docker, VPCS, VirtualBox and VMware Workstation. Clients like the GNS3 GUI and the GNS3 Web UI control the server using a HTTP REST API.
Installation
These instructions are for using GNS3, please see below for development.
Windows & macOS
Please use our Windows installer or DMG package to install the stable build along with the GNS3 VM. Note that as of GNS3 version above 3.0, you must run the server using the GNS3 VM or on a Linux system (remote, cloud or virtual machine).
Linux
Ubuntu based distributions
We build and test packages for actively supported Ubuntu versions. Other distros based on Ubuntu, like Mint, should also be supported.
Packages can be installed from our Personal Package Archives (PPA) repository:
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:gns3/ppa
sudo apt update
sudo apt install gns3-gui gns3-server
Other Linux distributions
GNS3 is often packaged for other distributions by third-parties:
PyPi
You may use PyPi in case no package is provided, or you would like to do a manual installation:
python3 -m pip install gns3-gui
python3 -m pip install gns3-server
Optional Features
GNS3 server supports optional features that can be installed as needed:
AI Features (Optional — includes AI Copilot and MCP):
python3 -m pip install gns3-server[ai-features]
AI-powered assistant for network topology design, automation, and MCP protocol support for AI agent integration.
Development (For contributors):
python3 -m pip install gns3-server[dev]
Web Wireshark (Optional):
pip install gns3-server && gns3server-web-wireshark-setup
Browser-based packet capture analysis using Wireshark in a Docker container.
Combination Installation: You can install multiple optional features together:
python3 -m pip install gns3-server[ai-features,dev]
Why optional?
- Reduces installation size for users who don't need specific features
- Supports restricted environments (government, education, corporate) where certain libraries may not be allowed
- Faster installation for basic GNS3 usage
- Allows users to choose only the features they need
Note: If you install without optional extras, the server will work normally but optional features will be disabled. You can add features later by running the appropriate install command.
Uninstalling AI Features:
To remove AI Features dependencies (AI Copilot + MCP):
gns3server-uninstall-ai-features
This will remove all AI Copilot and MCP dependencies while keeping the core functionality intact. The server will continue to work, but AI features will be disabled.
Please see our documentation for more details.
Software dependencies
In addition to Python dependencies, other software may be required, recommended or optional.
- uBridge is required, it interconnects the nodes.
- Dynamips is required for running IOS routers (using real IOS images) as well as the internal switches and hubs.
- VPCS is recommended, it is a builtin node simulating a very simple computer to perform connectivity tests using ping, traceroute etc.
- Qemu is strongly recommended as most node types are based on Qemu, for example Cisco IOSv and Arista vEOS.
- libvirt is recommended as it's needed for the NAT cloud.
- Docker is optional, some nodes are based on Docker.
- mtools is recommended to support data transfer to/from QEMU VMs using virtual disks.
- i386-libraries of libc and libcrypto are optional, they are only needed to run IOU based nodes.
Note that Docker needs the script program (bsdutils or util-linux package), when running a Docker VM and a static busybox during installation (python3 setup.py install / pip3 install / package creation).
Development
Setting up
These commands will install the server with core Python dependencies:
git clone https://github.com/GNS3/gns3-server
cd gns3-server
git checkout 3.1
python3 -m venv venv-gns3server
source venv-gns3server/bin/activate
python3 -m pip install .
python3 -m gns3server
For AI Copilot development, install with additional dependencies:
python3 -m pip install .[ai-features,dev]
For development (tests and linting):
python3 -m pip install .[dev]
You will have to manually install other software dependencies (see above), for Dynamips, VPCS and uBridge the easiest is to install from our PPA.
Docker container
Alternatively, you can run the GNS3 server in a container
bash scripts/docker_dev_server.sh
use Docker Compose
docker compose up -d
Running tests
First, install the development dependencies:
python3 -m pip install -r dev-requirements.txt
Then run the tests using pytest:
python3 -m pytest -vv tests/
API documentation
The API documentation can be accessed when running the server locally:
- On
http://IP:PORT/docsto see with Swagger UI (i.e.http://localhost:3080/docs) - On
http://IP:PORT/redocto see with ReDoc (i.e.http://localhost:3080/redoc)
The documentation can also be viewed online however it may not be the most up-to-date version since it needs manually synchronization with the current code. Also, you cannot use this to interact with a GNS3 server.
Branches
master
master is the next stable release, you can test it in your day-to -day activities. Bug fixes or small improvements pull requests go here.
3.x development brand for the next major release.
Never use this branch for production. Pull requests for major new features go here.