From 51f21f16c9e9495c73f704de727a1c3f8e3089d5 Mon Sep 17 00:00:00 2001 From: Damien Date: Thu, 4 Dec 2025 10:11:03 +0000 Subject: [PATCH] Add topology visualization and annotations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add SVG topology diagram and containerlab annotations file with AS number labels and node positioning for the EVPN VXLAN lab environment. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- assets/topology.svg | 491 +++++++++++++++++++++++++++++ evpn-lab.clab.yml.annotations.json | 371 ++++++++++++++++++++++ 2 files changed, 862 insertions(+) create mode 100644 assets/topology.svg create mode 100644 evpn-lab.clab.yml.annotations.json diff --git a/assets/topology.svg b/assets/topology.svg new file mode 100644 index 0000000..d9c1455 --- /dev/null +++ b/assets/topology.svg @@ -0,0 +1,491 @@ +eth1eth1eth11eth11eth2eth2eth11eth11eth3eth3eth11eth11eth4eth4eth11eth11eth5eth5eth11eth11eth6eth6eth11eth11eth7eth7eth11eth11eth8eth8eth11eth11eth1eth1eth12eth12eth2eth2eth12eth12eth3eth3eth12eth12eth4eth4eth12eth12eth5eth5eth12eth12eth6eth6eth12eth12eth7eth7eth12eth12eth8eth8eth12eth12eth10eth10eth10eth10eth10eth10eth10eth10eth10eth10eth10eth10eth10eth10eth10eth10eth1eth1eth1eth1eth1eth1eth2eth2eth1eth1eth1eth1eth1eth1eth2eth2eth1eth1eth1eth1eth1eth1eth2eth2eth1eth1eth1eth1eth1eth1eth2eth2 + + + + + + + + + + + + + + + + + + + + + + spine1spine1 + + + + + + + + + + + + + + + + + + + + + + spine2spine2 + + + + + + + + + + + + + + + + + + + + + + leaf1leaf1 + + + + + + + + + + + + + + + + + + + + + + leaf2leaf2 + + + + + + + + + + + + + + + + + + + + + + leaf3leaf3 + + + + + + + + + + + + + + + + + + + + + + leaf4leaf4 + + + + + + + + + + + + + + + + + + + + + + leaf5leaf5 + + + + + + + + + + + + + + + + + + + + + + leaf6leaf6 + + + + + + + + + + + + + + + + + + + + + + leaf7leaf7 + + + + + + + + + + + + + + + + + + + + + + leaf8leaf8 + + + + + + + + + + + + + + + + + + + + + + host1host1 + + + + + + + + + + + + + + + + + + + + + + host2host2 + + + + + + + + + + + + + + + + + + + + + + host3host3 + + + + + + + + + + + + + + + + + + + + + + host4host4 \ No newline at end of file diff --git a/evpn-lab.clab.yml.annotations.json b/evpn-lab.clab.yml.annotations.json new file mode 100644 index 0000000..13dfccb --- /dev/null +++ b/evpn-lab.clab.yml.annotations.json @@ -0,0 +1,371 @@ +{ + "freeTextAnnotations": [ + { + "id": "freeText_1764841883236_2", + "text": "AS 60001", + "position": { + "x": -35, + "y": 218 + }, + "fontSize": 8, + "fontColor": "#ffffff", + "backgroundColor": "transparent", + "fontWeight": "normal", + "fontStyle": "normal", + "textDecoration": "none", + "fontFamily": "monospace", + "textAlign": "left", + "rotation": 0, + "roundedBackground": false + }, + { + "id": "freeText_1764842048180_3", + "text": "AS60002", + "position": { + "x": 91, + "y": 218 + }, + "fontSize": 8, + "fontColor": "#ffffff", + "backgroundColor": "transparent", + "fontWeight": "normal", + "fontStyle": "normal", + "textDecoration": "none", + "fontFamily": "monospace", + "textAlign": "left", + "rotation": 0, + "roundedBackground": false + }, + { + "id": "freeText_1764842063537_4", + "text": "AS60003", + "position": { + "x": 217, + "y": 219 + }, + "fontSize": 8, + "fontColor": "#ffffff", + "backgroundColor": "transparent", + "fontWeight": "normal", + "fontStyle": "normal", + "textDecoration": "none", + "fontFamily": "monospace", + "textAlign": "left", + "rotation": 0, + "roundedBackground": false + }, + { + "id": "freeText_1764842074248_5", + "text": "AS60004", + "position": { + "x": 344, + "y": 218 + }, + "fontSize": 8, + "fontColor": "#ffffff", + "backgroundColor": "transparent", + "fontWeight": "normal", + "fontStyle": "normal", + "textDecoration": "none", + "fontFamily": "monospace", + "textAlign": "left", + "rotation": 0, + "roundedBackground": false + }, + { + "id": "freeText_1764842138314_6", + "text": "AS60000", + "position": { + "x": 154, + "y": 109 + }, + "fontSize": 8, + "fontColor": "#ffffff", + "backgroundColor": "transparent", + "fontWeight": "normal", + "fontStyle": "normal", + "textDecoration": "none", + "fontFamily": "monospace", + "textAlign": "left", + "rotation": 0, + "roundedBackground": false + } + ], + "freeShapeAnnotations": [ + { + "id": "freeShape_1764841793539_3", + "shapeType": "rectangle", + "position": { + "x": -35, + "y": 206 + }, + "fillColor": "#ffffff", + "fillOpacity": 0, + "borderColor": "#646464", + "borderWidth": 1, + "borderStyle": "dashed", + "rotation": 0, + "width": 84, + "height": 50, + "cornerRadius": 0, + "lineStartArrow": false, + "lineEndArrow": false, + "lineArrowSize": 10 + }, + { + "id": "freeShape_1764841972637_4", + "shapeType": "rectangle", + "position": { + "x": 92, + "y": 206 + }, + "fillColor": "#ffffff", + "fillOpacity": 0, + "borderColor": "#646464", + "borderWidth": 1, + "borderStyle": "dashed", + "rotation": 0, + "width": 84, + "height": 50, + "cornerRadius": 0, + "lineStartArrow": false, + "lineEndArrow": false, + "lineArrowSize": 10 + }, + { + "id": "freeShape_1764842019973_5", + "shapeType": "rectangle", + "position": { + "x": 341, + "y": 206 + }, + "fillColor": "#ffffff", + "fillOpacity": 0, + "borderColor": "#646464", + "borderWidth": 1, + "borderStyle": "dashed", + "rotation": 0, + "width": 84, + "height": 50, + "cornerRadius": 0, + "lineStartArrow": false, + "lineEndArrow": false, + "lineArrowSize": 10 + }, + { + "id": "freeShape_1764842019973_6", + "shapeType": "rectangle", + "position": { + "x": 216, + "y": 206 + }, + "fillColor": "#ffffff", + "fillOpacity": 0, + "borderColor": "#646464", + "borderWidth": 1, + "borderStyle": "dashed", + "rotation": 0, + "width": 84, + "height": 50, + "cornerRadius": 0, + "lineStartArrow": false, + "lineEndArrow": false, + "lineArrowSize": 10 + }, + { + "id": "freeShape_1764842118754_8", + "shapeType": "rectangle", + "position": { + "x": 155, + "y": 111 + }, + "fillColor": "#ffffff", + "fillOpacity": 0, + "borderColor": "#646464", + "borderWidth": 1, + "borderStyle": "dashed", + "rotation": 0, + "width": 181, + "height": 54, + "cornerRadius": 0, + "lineStartArrow": false, + "lineEndArrow": false, + "lineArrowSize": 10 + } + ], + "groupStyleAnnotations": [], + "cloudNodeAnnotations": [], + "nodeAnnotations": [ + { + "id": "spine1", + "icon": "router", + "position": { + "x": 91, + "y": 105 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + }, + { + "id": "spine2", + "icon": "router", + "position": { + "x": 217, + "y": 105 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + }, + { + "id": "leaf1", + "icon": "router", + "position": { + "x": -63, + "y": 203 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + }, + { + "id": "leaf2", + "icon": "router", + "position": { + "x": -7, + "y": 203 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + }, + { + "id": "leaf3", + "icon": "router", + "position": { + "x": 63, + "y": 203 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + }, + { + "id": "leaf4", + "icon": "router", + "position": { + "x": 119, + "y": 203 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + }, + { + "id": "leaf5", + "icon": "router", + "position": { + "x": 189, + "y": 203 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + }, + { + "id": "leaf6", + "icon": "router", + "position": { + "x": 245, + "y": 203 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + }, + { + "id": "leaf7", + "icon": "router", + "position": { + "x": 315, + "y": 203 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + }, + { + "id": "leaf8", + "icon": "router", + "position": { + "x": 371, + "y": 203 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + }, + { + "id": "host1", + "icon": "router", + "position": { + "x": -35, + "y": 259 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + }, + { + "id": "host2", + "icon": "router", + "position": { + "x": 91, + "y": 259 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + }, + { + "id": "host3", + "icon": "router", + "position": { + "x": 217, + "y": 259 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + }, + { + "id": "host4", + "icon": "router", + "position": { + "x": 343, + "y": 259 + }, + "geoCoordinates": { + "lat": 48.684826888402256, + "lng": 9.007895390625677 + } + } + ], + "viewerSettings": { + "gridLineWidth": 1.95001 + } +} \ No newline at end of file