two/docs/schemas/architecture-cluster.svg
2026-10-04 17:49:09 +02:00

155 lines
10 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 xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 736" width="1000" height="736" role="img" aria-label="Architecture du cluster : routeurs, route reflector, hyperviseurs, plans de données et de contrôle">
<style>
.lbl { font-family: -apple-system, "Segoe UI", Roboto, sans-serif; font-size: 14px; fill: #1f2328; }
.sub { font-family: -apple-system, "Segoe UI", Roboto, sans-serif; font-size: 11px; fill: #57606a; }
.grp { font-family: -apple-system, "Segoe UI", Roboto, sans-serif; font-size: 12px; font-weight: 600; fill: #57606a; letter-spacing: .04em; }
.ctrlt { font-family: -apple-system, "Segoe UI", Roboto, sans-serif; font-size: 11px; fill: #8250df; }
.datat { font-family: -apple-system, "Segoe UI", Roboto, sans-serif; font-size: 11px; font-weight: 600; fill: #0969da; }
.box { fill: #ffffff; stroke: #8c959f; stroke-width: 1.5; }
.group { fill: #f6f8fa; stroke: #d0d7de; stroke-width: 1.5; }
.pill { fill: #ffffff; stroke: #57606a; stroke-width: 1.5; }
.bus { stroke: #57606a; stroke-width: 4; fill: none; stroke-linecap: round; }
.link { stroke: #57606a; stroke-width: 1.8; fill: none; }
.ctrl { stroke: #8250df; stroke-width: 1.6; fill: none; stroke-dasharray: 5 4; }
.data { stroke: #0969da; stroke-width: 3; fill: none; }
.made { stroke: #8c959f; stroke-width: 1.5; fill: none; stroke-dasharray: 2 3; }
.head-ctrl { fill: #8250df; }
.head-data { fill: #0969da; }
.head-made { fill: #8c959f; }
</style>
<defs>
<marker id="a-ctrl" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="head-ctrl" d="M0 0 L10 5 L0 10 z"/></marker>
<marker id="a-data" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="5" markerHeight="5" orient="auto-start-reverse"><path class="head-data" d="M0 0 L10 5 L0 10 z"/></marker>
<marker id="a-made" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse"><path class="head-made" d="M0 0 L10 5 L0 10 z"/></marker>
</defs>
<rect class="group" x="40" y="20" width="400" height="144" rx="8"/>
<text class="grp" x="60" y="44">ROUTEURS DE CLUSTER · AS 65100</text>
<rect class="box" x="60" y="66" width="170" height="60" rx="6"/>
<text class="lbl" x="145" y="92" text-anchor="middle">routeur 1</text>
<text class="sub" x="145" y="111" text-anchor="middle">169.254.0.1/28</text>
<rect class="box" x="250" y="66" width="170" height="60" rx="6"/>
<text class="lbl" x="335" y="92" text-anchor="middle">routeur 2</text>
<text class="sub" x="335" y="111" text-anchor="middle">169.254.0.2/28</text>
<text class="sub" x="240" y="150" text-anchor="middle">passerelle 192.168.14.1/24</text>
<rect class="group" x="560" y="20" width="400" height="144" rx="8"/>
<text class="grp" x="580" y="44">VM ROUTE REFLECTOR · AS 65000</text>
<text class="lbl" x="580" y="70">lo1 · 10.255.255.1/32</text>
<text class="sub" x="580" y="87">router-id, cluster-id, source des sessions EVPN</text>
<text class="lbl" x="580" y="111">192.168.14.2/24 · 169.254.0.3/28</text>
<text class="sub" x="580" y="128">principale, et secondaire pour le lien avec les routeurs</text>
<text class="sub" x="580" y="150">hébergée par le cluster lui-même</text>
<path class="ctrl" d="M440 92 L560 92"/>
<text class="ctrlt" x="500" y="84" text-anchor="middle">eBGP · BFD (×2)</text>
<text class="ctrlt" x="500" y="108" text-anchor="middle">annonce lo1 seule</text>
<text class="ctrlt" x="500" y="122" text-anchor="middle">n'accepte rien</text>
<path class="link" d="M145 126 L145 196"/>
<path class="link" d="M335 126 L335 196"/>
<path class="link" d="M760 164 L760 196"/>
<path class="bus" d="M40 196 L960 196"/>
<rect class="pill" x="376" y="177" width="216" height="38" rx="19"/>
<text class="lbl" x="484" y="194" text-anchor="middle">segment underlay · L2</text>
<text class="sub" x="484" y="209" text-anchor="middle">192.168.14.0/24 · 169.254.0.0/28</text>
<rect class="group" x="40" y="262" width="430" height="306" rx="8"/>
<text class="grp" x="60" y="284">HYPERVISEUR 1</text>
<rect class="box" x="274" y="298" width="180" height="46" rx="6"/>
<text class="lbl" x="364" y="317" text-anchor="middle">br-000000</text>
<text class="sub" x="364" y="334" text-anchor="middle">uplink · 192.168.14.11</text>
<rect class="box" x="274" y="366" width="180" height="46" rx="6"/>
<text class="lbl" x="364" y="385" text-anchor="middle">vxlan-&lt;vni&gt;</text>
<text class="sub" x="364" y="402" text-anchor="middle">dans br-&lt;subnet&gt;, sans learning</text>
<rect class="box" x="274" y="434" width="180" height="46" rx="6"/>
<text class="lbl" x="364" y="453" text-anchor="middle">netns du VPC</text>
<text class="sub" x="364" y="470" text-anchor="middle">passerelle, DHCP</text>
<rect class="box" x="274" y="502" width="180" height="46" rx="6"/>
<text class="lbl" x="364" y="521" text-anchor="middle">VM</text>
<text class="sub" x="364" y="538" text-anchor="middle">QEMU / KVM</text>
<path class="link" d="M364 344 L364 366"/>
<text class="sub" x="372" y="359">VTEP</text>
<path class="link" d="M364 412 L364 434"/>
<text class="sub" x="372" y="427">veth</text>
<path class="link" d="M364 480 L364 502"/>
<text class="sub" x="372" y="495">tap</text>
<rect class="box" x="56" y="298" width="180" height="70" rx="6"/>
<text class="lbl" x="146" y="321" text-anchor="middle">FRR</text>
<text class="sub" x="146" y="340" text-anchor="middle">bgpd · AS 64600</text>
<text class="sub" x="146" y="356" text-anchor="middle">advertise-all-vni</text>
<rect class="box" x="56" y="434" width="180" height="46" rx="6"/>
<text class="lbl" x="146" y="453" text-anchor="middle">agent</text>
<text class="sub" x="146" y="470" text-anchor="middle">API REST · Badger</text>
<path class="ctrl" d="M236 352 L255 352 L255 389 L272 389" marker-end="url(#a-ctrl)"/>
<text class="ctrlt" x="255" y="345" text-anchor="middle">FDB</text>
<path class="made" d="M236 457 L272 457" marker-end="url(#a-made)"/>
<text class="sub" x="255" y="450" text-anchor="middle">crée</text>
<rect class="group" x="530" y="262" width="430" height="306" rx="8"/>
<text class="grp" x="656" y="284">HYPERVISEUR 2</text>
<rect class="box" x="546" y="298" width="180" height="46" rx="6"/>
<text class="lbl" x="636" y="317" text-anchor="middle">br-000000</text>
<text class="sub" x="636" y="334" text-anchor="middle">uplink · 192.168.14.12</text>
<rect class="box" x="546" y="366" width="180" height="46" rx="6"/>
<text class="lbl" x="636" y="385" text-anchor="middle">vxlan-&lt;vni&gt;</text>
<text class="sub" x="636" y="402" text-anchor="middle">dans br-&lt;subnet&gt;, sans learning</text>
<rect class="box" x="546" y="434" width="180" height="46" rx="6"/>
<text class="lbl" x="636" y="453" text-anchor="middle">netns du VPC</text>
<text class="sub" x="636" y="470" text-anchor="middle">passerelle, DHCP</text>
<rect class="box" x="546" y="502" width="180" height="46" rx="6"/>
<text class="lbl" x="636" y="521" text-anchor="middle">VM</text>
<text class="sub" x="636" y="538" text-anchor="middle">QEMU / KVM</text>
<path class="link" d="M636 344 L636 366"/>
<text class="sub" x="628" y="359" text-anchor="end">VTEP</text>
<path class="link" d="M636 412 L636 434"/>
<text class="sub" x="628" y="427" text-anchor="end">veth</text>
<path class="link" d="M636 480 L636 502"/>
<text class="sub" x="628" y="495" text-anchor="end">tap</text>
<rect class="box" x="764" y="298" width="180" height="70" rx="6"/>
<text class="lbl" x="854" y="321" text-anchor="middle">FRR</text>
<text class="sub" x="854" y="340" text-anchor="middle">bgpd · AS 64600</text>
<text class="sub" x="854" y="356" text-anchor="middle">advertise-all-vni</text>
<rect class="box" x="764" y="434" width="180" height="46" rx="6"/>
<text class="lbl" x="854" y="453" text-anchor="middle">agent</text>
<text class="sub" x="854" y="470" text-anchor="middle">API REST · Badger</text>
<path class="ctrl" d="M764 352 L745 352 L745 389 L728 389" marker-end="url(#a-ctrl)"/>
<text class="ctrlt" x="745" y="345" text-anchor="middle">FDB</text>
<path class="made" d="M764 457 L728 457" marker-end="url(#a-made)"/>
<text class="sub" x="745" y="450" text-anchor="middle">crée</text>
<path class="link" d="M364 298 L364 196"/>
<path class="link" d="M636 298 L636 196"/>
<path class="ctrl" d="M210 298 L210 246 L357 246"/>
<path class="ctrl" d="M371 246 L612 246 L612 164"/>
<path class="ctrl" d="M854 298 L854 164"/>
<text class="ctrlt" x="384" y="240">iBGP l2vpn evpn · AS 64600</text>
<text class="ctrlt" x="862" y="240">iBGP</text>
<path class="data" d="M458 389 L542 389" marker-start="url(#a-data)" marker-end="url(#a-data)"/>
<text class="datat" x="500" y="378" text-anchor="middle">VXLAN</text>
<text class="datat" x="500" y="406" text-anchor="middle">UDP 4789</text>
<path class="link" d="M40 604 L76 604"/>
<text class="sub" x="84" y="608">lien L2 / interface</text>
<path class="data" d="M220 604 L256 604"/>
<text class="sub" x="264" y="608">plan de données : tunnels VXLAN</text>
<path class="ctrl" d="M470 604 L506 604"/>
<text class="sub" x="514" y="608">plan de contrôle : sessions BGP</text>
<path class="made" d="M716 604 L752 604"/>
<text class="sub" x="760" y="608">créé par l'agent</text>
<text class="sub" x="40" y="640">Les hyperviseurs joignent 10.255.255.1 par leur passerelle 192.168.14.1 : les routeurs l'ont apprise du route reflector en eBGP, sans rien lui renvoyer.</text>
<text class="sub" x="40" y="658">Le route reflector accepte toute session venant de 192.168.14.0/24 (bgp listen range) et réfléchit les routes EVPN entre hyperviseurs.</text>
<text class="sub" x="40" y="676">Chaque FRR en peuple la FDB des VXLAN locaux — intégration de FRR avec les interfaces créées par two : à qualifier (#50, E5).</text>
<text class="sub" x="40" y="694">MTU du segment : 1550 au moins (VXLAN figé à 1500 par l'agent, + 50 octets d'encapsulation) ; 9000 dans le lab.</text>
<text class="sub" x="40" y="712">ASN, loopback et plages : valeurs de production (#50). Adresses en 192.168.14.0/24 : celles du lab. Placement de la VM route reflector : à rédiger.</text>
</svg>