{"id":29374973,"url":"https://github.com/maniam/gns-bench","last_synced_at":"2025-07-09T20:32:18.615Z","repository":{"id":302951260,"uuid":"977905054","full_name":"ManiAm/GNS-Bench","owner":"ManiAm","description":"GNS-Bench is a setup guide for using GNS3 to simulate network topologies with appliances like Cisco and SONiC NOS.","archived":false,"fork":false,"pushed_at":"2025-07-04T23:26:18.000Z","size":1154,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-05T00:29:58.599Z","etag":null,"topics":["cisco-8102","gns3","network-simulation","proxmox-ve","sonic"],"latest_commit_sha":null,"homepage":"https://blog.homelabtech.dev/content","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ManiAm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-05T06:51:15.000Z","updated_at":"2025-07-04T23:26:22.000Z","dependencies_parsed_at":"2025-07-05T00:40:19.491Z","dependency_job_id":null,"html_url":"https://github.com/ManiAm/GNS-Bench","commit_stats":null,"previous_names":["maniam/gns-bench"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ManiAm/GNS-Bench","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManiAm%2FGNS-Bench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManiAm%2FGNS-Bench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManiAm%2FGNS-Bench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManiAm%2FGNS-Bench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ManiAm","download_url":"https://codeload.github.com/ManiAm/GNS-Bench/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ManiAm%2FGNS-Bench/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264502644,"owners_count":23618663,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cisco-8102","gns3","network-simulation","proxmox-ve","sonic"],"created_at":"2025-07-09T20:30:56.841Z","updated_at":"2025-07-09T20:32:18.606Z","avatar_url":"https://github.com/ManiAm.png","language":"Shell","readme":"\n# GNS-Bench\n\nGNS-Bench is a structured setup guide designed to help users build and simulate complex network topologies using GNS3. It focuses on integrating a variety of network operating systems, including Cisco IOS, SONiC NOS, and other virtual appliances, within a unified virtual lab environment. The primary goal is to assist users in preparing GNS3 to run diverse network devices by walking through image setup, appliance configuration, and topology creation. This project is ideal for engineers, researchers, and home lab enthusiasts interested in learning and testing real-world NOS behavior in a virtualized, non-production setting.\n\nThe following documentation provides a step-by-step introduction to setting up and using GNS3:\n\n- [Overview of GNS3 and its capabilities](docs/01_GNS3_Intro.md)\n- [Installation instructions for GNS3 and GNS3 VM](docs/02_GNS3_Install.md)\n- [How to import and configure appliances](docs/03_GNS3_Appliance.md)\n- [Setup and usage of SONiC virtual switches](docs/04_GNS3_Sonic_VS.md)\n- [Configuration for Cisco 8102 devices in GNS3](docs/05_GNS3_Cisco_8102.md)\n\n## Getting Started\n\nOnce you've completed the setup guides, you should have GNS3 running on your system, with the GUI connected to either a local or remote GNS3 VM. In this project, GNS3 was installed on a Windows machine and connected to a GNS3 VM hosted on a Proxmox server. To verify server connections, Go to \"Edit → Preferences → Server\". You should see your main server (local) and any configured remote servers, such as the GNS3 VM.\n\n\u003cimg src=\"pics/gns3_server_setting.jpg\" alt=\"segment\" width=\"550\"\u003e\n\nYou can also view active servers in the \"Servers Summary\" panel within the GNS3 main window:\n\n\u003cimg src=\"pics/gns3_server_summary.jpg\" alt=\"segment\" width=\"300\"\u003e\n\nGNS3 supports multiple emulator backends. To view available templates navigate to \"Edit → Preferences\". Under each emulator type (Dynamips, IOU, QEMU, Docker), review the registered templates.\n\n**Dynamips**\n\n\u003cimg src=\"pics/gns3_emulator_dynamips.jpg\" alt=\"segment\" width=\"600\"\u003e\n\n**IOU**\n\n\u003cimg src=\"pics/gns3_emulator_iou.jpg\" alt=\"segment\" width=\"600\"\u003e\n\n**QEMU**\n\n\u003cimg src=\"pics/gns3_emulator_qemu.jpg\" alt=\"segment\" width=\"600\"\u003e\n\n**Docker**\n\n\u003cimg src=\"pics/gns3_emulator_docker.jpg\" alt=\"segment\" width=\"600\"\u003e\n\nSome appliances (such as QEMU-based images) may already be bound to a specific server. Others, like \"Ethernet Switch\" or \"Cloud\", will prompt you to select which server to use when dragged into a topology.\n\nBelow is a sample topology built with:\n\n- Two SONiC routers\n- One Cisco 8102 router\n- One Cisco 7200 router\n- One Ubuntu Docker acting as a management host\n- An Ethernet switch connecting all devices\n- A NAT node providing external internet access\n\n\u003cimg src=\"pics/gns3_topology.jpg\" alt=\"segment\" width=\"600\"\u003e\n\nThis setup enables testing of both data and control plane behavior, along with external connectivity for software updates or telemetry. This project serves as a foundation for future work, where we will build more advanced network scenarios and automation workflows on top of this GNS3 setup.\n\n## Management Host\n\nThe management-host is a Docker container that is built on Ubuntu 20.04.2 LTS.\n\nConnect to GNS3 VM and open a shell.\n\nClone this repository:\n\n    git clone https://github.com/ManiAm/GNS-Bench\n    cd GNS-Bench/\n\nChange to management_host directory and build the docker image:\n\n    cd management_host\n    docker build -t management-host-ubuntu .\n\nNow we can use our container in GNS3. Click \"Edit-\u003e Preferences-\u003e Docker Containers-\u003e New\". Select \"Existing image\", and then pick the one you just created from the dropdown list, and click \"Next\" to continue. Follow the instructions. Refer to [this guide](docs/Management_host.md) to configure the management host.\n\n## SSH Access to GNS3 Devices\n\nTo access network devices inside GNS3 topology from your local machine, you must traverse two intermediate hosts:\n\n    My PC\n    │\n    ├──\u003e Jump Host #1: GNS3 VM  (gns3@192.168.2.107)\n    │       │\n    │       └──\u003e Jump Host #2: Management Host  (root@192.168.122.213)\n    │                 │\n    │                 └──\u003e Target: SONiC VM (admin@10.10.10.102)\n\nTo simplify access, you can define a chain of jump hosts using an SSH configuration file (`~/.ssh/config`):\n\n    Host gns3-vm\n        HostName 192.168.2.107\n        User gns3\n\n    Host mgmt-host\n        HostName 192.168.122.213\n        User root\n        ProxyJump gns3-vm\n\n    Host sonic-vm\n        HostName 10.10.10.102\n        User admin\n        ProxyJump mgmt-host\n\nOnce this configuration is in place, you can access the SONiC VM using a single command:\n\n    ssh sonic-vm\n\nThis setup eliminates the need to manually SSH through each intermediate host, making access more efficient and user-friendly. You may optionally configure SSH keys to avoid repeated password prompts.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaniam%2Fgns-bench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaniam%2Fgns-bench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaniam%2Fgns-bench/lists"}