# tamilore-dev/gns-kvm-lab architecture

> Architecture diagram of the GitHub repository tamilore-dev/gns-kvm-lab, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tamilore-dev/gns-kvm-lab
- Repository: https://github.com/tamilore-dev/gns-kvm-lab

## Overview

This repository documents a small virtual networking lab: two VMs connect through separate libvirt bridges, which GNS3 Cloud nodes attach to a shared Ethernet switch. The main workflow is to configure the bridges, connect the topology, and verify VM-to-VM traffic; ping, interface capture, and a cable-cut test demonstrate connectivity and isolation. The XML files define the libvirt networks. GNS3 components and VM interfaces are documented capabilities, not repository source files. Relationships shown here come from the README; no source excerpts were available.

Main entry points: [`gnsA.xml`](https://github.com/tamilore-dev/gns-kvm-lab/blob/main/gnsA.xml) (virbr10), [`gnsB.xml`](https://github.com/tamilore-dev/gns-kvm-lab/blob/main/gnsB.xml) (virbr11)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_virtualization["Libvirt Networks"]
  node_bridge_a["virbr10<br/>[gnsA.xml]"]
  node_bridge_b["virbr11<br/>[gnsB.xml]"]
end

subgraph group_gns3["GNS3 Topology"]
  node_cloud_a["Ubuntu Cloud"]
  node_switch["Ethernet Switch"]
  node_cloud_b["Rocky Cloud"]
end

subgraph group_verification["Traffic Verification"]
  node_ping(("Ping Probe"))
  node_capture(("Packet Capture"))
  node_cable_test(("Cable-Cut Test"))
end

node_ubuntu["Ubuntu VM"]
node_rocky["Rocky VM"]

node_ubuntu -->|"attaches to"| node_bridge_a
node_bridge_a -->|"connects to"| node_cloud_a
node_cloud_a -->|"cables to"| node_switch
node_rocky -->|"attaches to"| node_bridge_b
node_bridge_b -->|"connects to"| node_cloud_b
node_cloud_b -->|"cables to"| node_switch
node_ping -->|"runs on"| node_ubuntu
node_ubuntu -->|"pings through lab"| node_rocky
node_capture -->|"captures on enp7s0"| node_ubuntu
node_cable_test -->|"removes cable"| node_cloud_b

click node_bridge_a "https://github.com/tamilore-dev/gns-kvm-lab/blob/main/gnsA.xml"
click node_bridge_b "https://github.com/tamilore-dev/gns-kvm-lab/blob/main/gnsB.xml"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_bridge_a,node_bridge_b toneBlue
class node_cloud_a,node_switch,node_cloud_b toneAmber
class node_ping,node_capture,node_cable_test toneMint
class node_ubuntu,node_rocky toneIndigo
```

## Components

### Libvirt Networks

- [virbr10](https://github.com/tamilore-dev/gns-kvm-lab/blob/main/gnsA.xml): `gnsA.xml`
- [virbr11](https://github.com/tamilore-dev/gns-kvm-lab/blob/main/gnsB.xml): `gnsB.xml`

### GNS3 Topology

- **Ubuntu Cloud**
- **Ethernet Switch**
- **Rocky Cloud**

### Traffic Verification

- **Ping Probe**
- **Packet Capture**
- **Cable-Cut Test**

### Other components

- **Ubuntu VM**
- **Rocky VM**

## Connections

- Ubuntu VM → virbr10: attaches to (evidence: `README.md`)
- virbr10 → Ubuntu Cloud: connects to (evidence: `README.md`)
- Ubuntu Cloud → Ethernet Switch: cables to (evidence: `README.md`)
- Rocky VM → virbr11: attaches to (evidence: `README.md`)
- virbr11 → Rocky Cloud: connects to (evidence: `README.md`)
- Rocky Cloud → Ethernet Switch: cables to (evidence: `README.md`)
- Ping Probe → Ubuntu VM: runs on (evidence: `README.md`)
- Ubuntu VM → Rocky VM: pings through lab (evidence: `README.md`)
- Packet Capture → Ubuntu VM: captures on enp7s0 (evidence: `README.md`)
- Cable-Cut Test → Rocky Cloud: removes cable (evidence: `README.md`)
