Files
nixfiles/docs/sites/home/diagrams/home-fabric.svg
T
jackos1998 a04d11423a nixos/home: Separate router storage and uplinks
Give `river` a dedicated RDMA VF and two RSTP trunk attachments.
Keep client services on the router VIPs and carry Digiweb VLANs
over both switch paths.

Set VF trust, multicast reception, bridge MAC and ARP behavior for
local switching. Wait for Kea interface readiness and apply RSTP
costs through `mstpd` despite port-registration and rename races.

Load `palace`'s RAID module in the initrd. Record RouterOS and
RouterBOOT upgrades and validate port, carrier and switch outages.

Document the deployed architecture, interface handoffs and recovery
procedures. Add physical socket maps, NIC capacities and cable
connections alongside the logical topology and failover checks.
2026-11-15 16:23:06 +00:00

2 lines
24 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<svg id="mermaid-1794758188270" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 1357.40625px;" viewBox="0 0 1357.40625 379" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#mermaid-1794758188270{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-1794758188270 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-1794758188270 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-1794758188270 .error-icon{fill:#552222;}#mermaid-1794758188270 .error-text{fill:#552222;stroke:#552222;}#mermaid-1794758188270 .edge-thickness-normal{stroke-width:1px;}#mermaid-1794758188270 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1794758188270 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1794758188270 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-1794758188270 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1794758188270 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1794758188270 .marker{fill:#333333;stroke:#333333;}#mermaid-1794758188270 .marker.cross{stroke:#333333;}#mermaid-1794758188270 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-1794758188270 p{margin:0;}#mermaid-1794758188270 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-1794758188270 .cluster-label text{fill:#333;}#mermaid-1794758188270 .cluster-label span{color:#333;}#mermaid-1794758188270 .cluster-label span p{background-color:transparent;}#mermaid-1794758188270 .label text,#mermaid-1794758188270 span{fill:#333;color:#333;}#mermaid-1794758188270 .node rect,#mermaid-1794758188270 .node circle,#mermaid-1794758188270 .node ellipse,#mermaid-1794758188270 .node polygon,#mermaid-1794758188270 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-1794758188270 .rough-node .label text,#mermaid-1794758188270 .node .label text,#mermaid-1794758188270 .image-shape .label,#mermaid-1794758188270 .icon-shape .label{text-anchor:middle;}#mermaid-1794758188270 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-1794758188270 .rough-node .label,#mermaid-1794758188270 .node .label,#mermaid-1794758188270 .image-shape .label,#mermaid-1794758188270 .icon-shape .label{text-align:center;}#mermaid-1794758188270 .node.clickable{cursor:pointer;}#mermaid-1794758188270 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-1794758188270 .arrowheadPath{fill:#333333;}#mermaid-1794758188270 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-1794758188270 .flowchart-link{stroke:#333333;fill:none;}#mermaid-1794758188270 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-1794758188270 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-1794758188270 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-1794758188270 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-1794758188270 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-1794758188270 .cluster text{fill:#333;}#mermaid-1794758188270 .cluster span{color:#333;}#mermaid-1794758188270 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-1794758188270 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-1794758188270 rect.text{fill:none;stroke-width:0;}#mermaid-1794758188270 .icon-shape,#mermaid-1794758188270 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-1794758188270 .icon-shape p,#mermaid-1794758188270 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-1794758188270 .icon-shape rect,#mermaid-1794758188270 .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-1794758188270 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-1794758188270 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-1794758188270 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="mermaid-1794758188270_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker><marker id="mermaid-1794758188270_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></path></marker><marker id="mermaid-1794758188270_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></circle></marker><marker id="mermaid-1794758188270_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"></circle></marker><marker id="mermaid-1794758188270_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"></path></marker><marker id="mermaid-1794758188270_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"></path></marker><g class="root"><g class="clusters"></g><g class="edgePaths"><path d="M214.438,99L218.604,99C222.771,99,231.104,99,239.438,99C247.771,99,256.104,99,260.271,99L264.438,99" id="L_virgin_shytzel_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_virgin_shytzel_0" data-points="W3sieCI6MjE0LjQzNzUsInkiOjk5fSx7IngiOjIzOS40Mzc1LCJ5Ijo5OX0seyJ4IjoyNjQuNDM3NSwieSI6OTl9XQ=="></path><path d="M188.789,279L197.23,279C205.672,279,222.555,279,236.348,279C250.141,279,260.844,279,266.195,279L271.547,279" id="L_ont_brian_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_ont_brian_0" data-points="W3sieCI6MTg4Ljc4OTA2MjUsInkiOjI3OX0seyJ4IjoyMzkuNDM3NSwieSI6Mjc5fSx7IngiOjI3MS41NDY4NzUsInkiOjI3OX1d"></path><path d="M369.094,126L383.53,133.833C397.967,141.667,426.839,157.333,455.971,171.348C485.104,185.362,514.497,197.724,529.194,203.904L543.891,210.085" id="L_shytzel_jim_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_shytzel_jim_0" data-points="W3sieCI6MzY5LjA5NDM4MzQ0NTk0NTk0LCJ5IjoxMjZ9LHsieCI6NDU1LjcxMDkzNzUsInkiOjE3M30seyJ4Ijo1NDMuODkwNjI1LCJ5IjoyMTAuMDg1MzY2NTk1Njc5OTR9XQ=="></path><path d="M342.494,252L361.363,230C380.233,208,417.972,164,458.241,142C498.51,120,541.31,120,584.182,120C627.055,120,670,120,706.516,122.729C743.031,125.458,773.117,130.915,788.16,133.644L803.203,136.373" id="L_brian_dave_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_brian_dave_0" data-points="W3sieCI6MzQyLjQ5Mzk1NjM2NzkyNDUsInkiOjI1Mn0seyJ4Ijo0NTUuNzEwOTM3NSwieSI6MTIwfSx7IngiOjU4NC4xMDkzNzUsInkiOjEyMH0seyJ4Ijo3MTIuOTQ1MzEyNSwieSI6MTIwfSx7IngiOjgwMy4yMDMxMjUsInkiOjEzNi4zNzMxNTg2ODU4NDkyNn1d"></path><path d="M367.125,286.709L381.889,289.091C396.654,291.473,426.182,296.236,455.643,290.148C485.104,284.06,514.497,267.12,529.194,258.649L543.891,250.179" id="L_brian_jim_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_brian_jim_0" data-points="W3sieCI6MzY3LjEyNSwieSI6Mjg2LjcwOTMyNjMwNjE0MTJ9LHsieCI6NDU1LjcxMDkzNzUsInkiOjMwMX0seyJ4Ijo1NDMuODkwNjI1LCJ5IjoyNTAuMTc5MzEyNDQyOTU3MX1d"></path><path d="M624.328,210.455L639.098,204.379C653.867,198.303,683.406,186.152,713.219,178.339C743.031,170.527,773.117,167.054,788.16,165.317L803.203,163.581" id="L_jim_dave_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_jim_dave_0" data-points="W3sieCI6NjI0LjMyODEyNSwieSI6MjEwLjQ1NDk3NTQ0MTE0OTd9LHsieCI6NzEyLjk0NTMxMjUsInkiOjE3NH0seyJ4Ijo4MDMuMjAzMTI1LCJ5IjoxNjMuNTgwNzE3MTk5OTE0MTJ9XQ=="></path><path d="M930.99,126L951.286,110.833C971.582,95.667,1012.174,65.333,1042.121,50.167C1072.068,35,1091.37,35,1101.021,35L1110.672,35" id="L_dave_palace_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_dave_palace_0" data-points="W3sieCI6OTMwLjk5MDQ2NjEwMTY5NDksInkiOjEyNn0seyJ4IjoxMDUyLjc2NTYyNSwieSI6MzV9LHsieCI6MTExMC42NzE4NzUsInkiOjM1fV0="></path><path d="M605.85,200L623.7,177.833C641.549,155.667,677.247,111.333,725.415,89.167C773.583,67,834.221,67,890.858,67C947.495,67,1000.13,67,1036.099,65.258C1072.068,63.516,1091.37,60.031,1101.021,58.289L1110.672,56.547" id="L_jim_palace_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_jim_palace_0" data-points="W3sieCI6NjA1Ljg1MDQzOTQ1MzEyNSwieSI6MjAwfSx7IngiOjcxMi45NDUzMTI1LCJ5Ijo2N30seyJ4Ijo4OTQuODU5Mzc1LCJ5Ijo2N30seyJ4IjoxMDUyLjc2NTYyNSwieSI6Njd9LHsieCI6MTExMC42NzE4NzUsInkiOjU2LjU0NzIyMTM2NTI5OTAxNn1d"></path><path d="M986.516,153L997.557,153C1008.599,153,1030.682,153,1053.229,154.103C1075.776,155.207,1098.786,157.413,1110.292,158.517L1121.797,159.62" id="L_dave_castle_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_dave_castle_0" data-points="W3sieCI6OTg2LjUxNTYyNSwieSI6MTUzfSx7IngiOjEwNTIuNzY1NjI1LCJ5IjoxNTN9LHsieCI6MTEyMS43OTY4NzUsInkiOjE1OS42MTk4OTMzNDk3ODYyNX1d"></path><path d="M624.328,227L639.098,227C653.867,227,683.406,227,728.495,227C773.583,227,834.221,227,890.858,227C947.495,227,1000.13,227,1041.998,222C1083.866,217,1114.967,207,1130.517,202L1146.067,197" id="L_jim_castle_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_jim_castle_0" data-points="W3sieCI6NjI0LjMyODEyNSwieSI6MjI3fSx7IngiOjcxMi45NDUzMTI1LCJ5IjoyMjd9LHsieCI6ODk0Ljg1OTM3NSwieSI6MjI3fSx7IngiOjEwNTIuNzY1NjI1LCJ5IjoyMjd9LHsieCI6MTE0Ni4wNjc0MzQyMTA1MjYyLCJ5IjoxOTd9XQ=="></path><path d="M935.081,180L954.695,193.167C974.309,206.333,1013.537,232.667,1053.622,251.376C1093.706,270.085,1134.646,281.171,1155.116,286.713L1175.586,292.256" id="L_dave_stream_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_dave_stream_0" data-points="W3sieCI6OTM1LjA4MDc3ODMwMTg4NjgsInkiOjE4MH0seyJ4IjoxMDUyLjc2NTYyNSwieSI6MjU5fSx7IngiOjExNzUuNTg1OTM3NSwieSI6MjkyLjI1NTgyODMwMTk2OTl9XQ=="></path><path d="M624.328,246.979L639.098,254.316C653.867,261.653,683.406,276.326,728.495,283.663C773.583,291,834.221,291,890.858,291C947.495,291,1000.13,291,1046.918,292.848C1093.706,294.695,1134.646,298.39,1155.116,300.238L1175.586,302.085" id="L_jim_stream_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_jim_stream_0" data-points="W3sieCI6NjI0LjMyODEyNSwieSI6MjQ2Ljk3ODg5NzU4MDQ5ODQ1fSx7IngiOjcxMi45NDUzMTI1LCJ5IjoyOTF9LHsieCI6ODk0Ljg1OTM3NSwieSI6MjkxfSx7IngiOjEwNTIuNzY1NjI1LCJ5IjoyOTF9LHsieCI6MTE3NS41ODU5Mzc1LCJ5IjozMDIuMDg1Mjc2MTAwNjU2NjR9XQ=="></path><path d="M613.097,254L629.739,269.5C646.38,285,679.663,316,726.623,331.5C773.583,347,834.221,347,890.858,347C947.495,347,1000.13,347,1046.918,342.381C1093.706,337.762,1134.646,328.525,1155.116,323.906L1175.586,319.287" id="L_jim_stream_2" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_jim_stream_2" data-points="W3sieCI6NjEzLjA5NzQ2MDkzNzUsInkiOjI1NH0seyJ4Ijo3MTIuOTQ1MzEyNSwieSI6MzQ3fSx7IngiOjg5NC44NTkzNzUsInkiOjM0N30seyJ4IjoxMDUyLjc2NTYyNSwieSI6MzQ3fSx7IngiOjExNzUuNTg1OTM3NSwieSI6MzE5LjI4NjgwOTc0ODM1ODR9XQ=="></path></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_virgin_shytzel_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_ont_brian_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(455.7109375, 173)"><g class="label" data-id="L_shytzel_jim_0" transform="translate(-56.4765625, -12)"><foreignObject width="112.953125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>VLAN 130 trunk</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(584.109375, 120)"><g class="label" data-id="L_brian_dave_0" transform="translate(-46.921875, -12)"><foreignObject width="93.84375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>2 × 10G LAG</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(455.7109375, 301)"><g class="label" data-id="L_brian_jim_0" transform="translate(-38.6953125, -12)"><foreignObject width="77.390625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>1G backup</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(712.9453125, 174)"><g class="label" data-id="L_jim_dave_0" transform="translate(-56.9140625, -12)"><foreignObject width="113.828125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>10G fabric trunk</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1052.765625, 35)"><g class="label" data-id="L_dave_palace_0" transform="translate(-19.5703125, -12)"><foreignObject width="39.140625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>100G</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(894.859375, 67)"><g class="label" data-id="L_jim_palace_0" transform="translate(-100, -24)"><foreignObject width="200" height="48"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="edgeLabel"><p>1G host + separate 1G river trunk</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1052.765625, 153)"><g class="label" data-id="L_dave_castle_0" transform="translate(-19.5703125, -12)"><foreignObject width="39.140625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>100G</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(894.859375, 227)"><g class="label" data-id="L_jim_castle_0" transform="translate(-69.359375, -12)"><foreignObject width="138.71875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>1G · normally down</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1046.74664, 254.95955)"><g class="label" data-id="L_dave_stream_0" transform="translate(-32.90625, -12)"><foreignObject width="65.8125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>10G LAN</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(894.859375, 291)"><g class="label" data-id="L_jim_stream_0" transform="translate(-56.4765625, -12)"><foreignObject width="112.953125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>1G LAN backup</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(894.859375, 347)"><g class="label" data-id="L_jim_stream_2" transform="translate(-100, -24)"><foreignObject width="200" height="48"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="edgeLabel"><p>Separate VLAN 130 WAN handoff</p></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="flowchart-virgin-0" transform="translate(111.21875, 99)"><rect class="basic label-container" style="" x="-103.21875" y="-27" width="206.4375" height="54"></rect><g class="label" style="" transform="translate(-73.21875, -12)"><rect></rect><foreignObject width="146.4375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>Virgin Media modem</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-shytzel-1" transform="translate(319.3359375, 99)"><rect class="basic label-container" style="" x="-54.8984375" y="-27" width="109.796875" height="54"></rect><g class="label" style="" transform="translate(-24.8984375, -12)"><rect></rect><foreignObject width="49.796875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>shytzel</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-ont-2" transform="translate(111.21875, 279)"><rect class="basic label-container" style="" x="-77.5703125" y="-27" width="155.140625" height="54"></rect><g class="label" style="" transform="translate(-47.5703125, -12)"><rect></rect><foreignObject width="95.140625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>Digiweb ONT</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-brian-3" transform="translate(319.3359375, 279)"><rect class="basic label-container" style="" x="-47.7890625" y="-27" width="95.578125" height="54"></rect><g class="label" style="" transform="translate(-17.7890625, -12)"><rect></rect><foreignObject width="35.578125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>brian</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-jim-5" transform="translate(584.109375, 227)"><rect class="basic label-container" style="" x="-40.21875" y="-27" width="80.4375" height="54"></rect><g class="label" style="" transform="translate(-10.21875, -12)"><rect></rect><foreignObject width="20.4375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>jim</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-dave-7" transform="translate(894.859375, 153)"><rect class="basic label-container" style="" x="-91.65625" y="-27" width="183.3125" height="54"></rect><g class="label" style="" transform="translate(-61.65625, -12)"><rect></rect><foreignObject width="123.3125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>dave · RSTP root</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-palace-13" transform="translate(1230.0390625, 35)"><rect class="basic label-container" style="" x="-119.3671875" y="-27" width="238.734375" height="54"></rect><g class="label" style="" transform="translate(-89.3671875, -12)"><rect></rect><foreignObject width="178.734375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>palace · river / cellar / sfh</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-castle-17" transform="translate(1230.0390625, 170)"><rect class="basic label-container" style="" x="-108.2421875" y="-27" width="216.484375" height="54"></rect><g class="label" style="" transform="translate(-78.2421875, -12)"><rect></rect><foreignObject width="156.484375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>castle · NVMe-oF root</p></span></div></foreignObject></g></g><g class="node default" id="flowchart-stream-21" transform="translate(1230.0390625, 307)"><rect class="basic label-container" style="" x="-54.453125" y="-27" width="108.90625" height="54"></rect><g class="label" style="" transform="translate(-24.453125, -12)"><rect></rect><foreignObject width="48.90625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>stream</p></span></div></foreignObject></g></g></g></g></g></svg>