<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Aji Arya</title>
    <subtitle>Cloud engineer and architect building reliable platforms with OpenStack, Ceph, and Kubernetes.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://ajiarya.id/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://ajiarya.id"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-11-07T00:00:00+00:00</updated>
    <id>https://ajiarya.id/atom.xml</id>
    <entry xml:lang="en">
        <title>Everything a post can render</title>
        <published>2026-11-07T00:00:00+00:00</published>
        <updated>2026-11-07T00:00:00+00:00</updated>
        
        <author>
          <name>Aji Arya</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://ajiarya.id/blog/everything-a-post-can-render/"/>
        <id>https://ajiarya.id/blog/everything-a-post-can-render/</id>
        
        <content type="html" xml:base="https://ajiarya.id/blog/everything-a-post-can-render/">&lt;p&gt;This post exercises everything the site can generate. Use it as a reference when you write, and as a visual test when you change the styles.&lt;/p&gt;
&lt;h2 id=&quot;headings&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#headings&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Headings&lt;/h2&gt;
&lt;p&gt;The post title at the top of this page is the only heading level 1. Each page keeps one &lt;code&gt;h1&lt;/code&gt;, so a post body starts at level 2. The table of contents lists level 2 headings only.&lt;/p&gt;
&lt;h3 id=&quot;heading-level-3&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#heading-level-3&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Heading level 3&lt;/h3&gt;
&lt;p&gt;Level 3 starts a subsection.&lt;/p&gt;
&lt;h4 id=&quot;heading-level-4&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#heading-level-4&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Heading level 4&lt;/h4&gt;
&lt;p&gt;Level 4 divides a subsection.&lt;/p&gt;
&lt;h5 id=&quot;heading-level-5&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#heading-level-5&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Heading level 5&lt;/h5&gt;
&lt;p&gt;Level 5 is for short labelled groups.&lt;/p&gt;
&lt;h6 id=&quot;heading-level-6&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#heading-level-6&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Heading level 6&lt;/h6&gt;
&lt;p&gt;Level 6 is the smallest heading.&lt;/p&gt;
&lt;h2 id=&quot;text-formats&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#text-formats&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Text formats&lt;/h2&gt;
&lt;p&gt;A paragraph can mix &lt;strong&gt;bold&lt;/strong&gt;, &lt;em&gt;italic&lt;/em&gt;, &lt;em&gt;&lt;strong&gt;bold italic&lt;/strong&gt;&lt;/em&gt;, &lt;del&gt;strikethrough&lt;/del&gt;, &lt;u&gt;underline&lt;/u&gt;, &lt;code&gt;inline code&lt;/code&gt;, and a &lt;a href=&quot;https://ajiarya.id/blog/&quot;&gt;link to the writing page&lt;/a&gt;. External links, such as &lt;a rel=&quot;noopener noreferrer external&quot; target=&quot;_blank&quot; href=&quot;https://www.getzola.org/&quot;&gt;Zola&lt;/a&gt;, open in a new tab.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Format&lt;/th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Source&lt;/th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Result&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Bold&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;**text**&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;text&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Italic&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;*text*&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;em&gt;text&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Bold italic&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;***text***&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;em&gt;&lt;strong&gt;text&lt;/strong&gt;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Strikethrough&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;~~text~~&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;del&gt;text&lt;/del&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Underline&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&amp;lt;u&amp;gt;text&amp;lt;/u&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;u&gt;text&lt;/u&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Superscript&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;x&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;x&lt;sup&gt;2&lt;/sup&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Subscript&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;H&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;O&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;H&lt;sub&gt;2&lt;/sub&gt;O&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Highlight&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&amp;lt;mark&amp;gt;text&amp;lt;/mark&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;mark&gt;text&lt;/mark&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Small&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&amp;lt;small&amp;gt;text&amp;lt;/small&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;small&gt;text&lt;/small&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Keyboard&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&amp;lt;kbd&amp;gt;Ctrl&amp;lt;/kbd&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;kbd&gt;Ctrl&lt;/kbd&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Abbreviation&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;&amp;lt;abbr title=&quot;Object Storage Daemon&quot;&amp;gt;OSD&amp;lt;/abbr&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;abbr title=&quot;Object Storage Daemon&quot;&gt;OSD&lt;/abbr&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;Inline code&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;`code`&lt;/code&gt;&lt;/td&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;code&gt;code&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Smart punctuation converts “straight quotes”, dashes – like this – and ellipses… as you type.&lt;/p&gt;
&lt;p&gt;A footnote keeps a side comment out of the sentence.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;https://ajiarya.id/blog/everything-a-post-can-render/#fn-1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt; It also works with a named label.&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-named-1&quot;&gt;&lt;a href=&quot;https://ajiarya.id/blog/everything-a-post-can-render/#fn-named&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h2 id=&quot;lists&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#lists&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Lists&lt;/h2&gt;
&lt;p&gt;An unordered list can nest:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux hosts&lt;/li&gt;
&lt;li&gt;OpenStack control planes
&lt;ul&gt;
&lt;li&gt;Nova&lt;/li&gt;
&lt;li&gt;Neutron&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ceph storage clusters&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;An ordered list is a numbered checklist:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Map the system.&lt;/li&gt;
&lt;li&gt;Define done.&lt;/li&gt;
&lt;li&gt;Keep a rollback path.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A task list tracks state:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;/&gt;
Write the post&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot; checked=&quot;&quot;/&gt;
Render the diagrams&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&quot;&quot; type=&quot;checkbox&quot;/&gt;
Replace the demo content&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A definition list pairs a term with its meaning:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;Failure domain&lt;/dt&gt;
&lt;dd&gt;A set of components that can fail together.&lt;/dd&gt;
&lt;dt&gt;Placement group&lt;/dt&gt;
&lt;dd&gt;A Ceph unit that maps objects to OSDs.&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id=&quot;special-blocks&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#special-blocks&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Special blocks&lt;/h2&gt;
&lt;h3 id=&quot;markdown-alerts&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#markdown-alerts&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Markdown alerts&lt;/h3&gt;
&lt;p&gt;Five alert types use standard Markdown syntax, for example &lt;code&gt;&amp;gt; [!NOTE]&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote class=&quot;markdown-alert-note&quot;&gt;
&lt;p&gt;A note adds useful context that a reader can skip.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;markdown-alert-tip&quot;&gt;
&lt;p&gt;A tip shows an easier way to do something.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;markdown-alert-important&quot;&gt;
&lt;p&gt;An important block states what a reader must know to succeed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;markdown-alert-warning&quot;&gt;
&lt;p&gt;A warning flags a risk that needs attention now.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote class=&quot;markdown-alert-caution&quot;&gt;
&lt;p&gt;A caution flags an action with negative consequences.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;notice-blocks&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#notice-blocks&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Notice blocks&lt;/h3&gt;
&lt;p&gt;Four more types use the &lt;code&gt;notice&lt;/code&gt; component. Their body accepts &lt;strong&gt;Markdown&lt;/strong&gt;.&lt;/p&gt;
&lt;aside class=&quot;notice notice--info&quot;&gt;
  &lt;p class=&quot;notice__label&quot;&gt;[info]&lt;/p&gt;
  &lt;div class=&quot;notice__body&quot;&gt;&lt;p&gt;An info block gives neutral background, such as a &lt;code&gt;version&lt;/code&gt; requirement.&lt;/p&gt;
&lt;/div&gt;
&lt;/aside&gt;
&lt;aside class=&quot;notice notice--suggestion&quot;&gt;
  &lt;p class=&quot;notice__label&quot;&gt;[suggestion]&lt;/p&gt;
  &lt;div class=&quot;notice__body&quot;&gt;&lt;p&gt;A suggestion offers an option that a reader can take or leave.&lt;/p&gt;
&lt;/div&gt;
&lt;/aside&gt;
&lt;aside class=&quot;notice notice--recommendation&quot;&gt;
  &lt;p class=&quot;notice__label&quot;&gt;[recommendation]&lt;/p&gt;
  &lt;div class=&quot;notice__body&quot;&gt;&lt;p&gt;A recommendation states the option that the author prefers, and why.&lt;/p&gt;
&lt;/div&gt;
&lt;/aside&gt;
&lt;aside class=&quot;notice notice--disclaimer&quot;&gt;
  &lt;p class=&quot;notice__label&quot;&gt;[disclaimer]&lt;/p&gt;
  &lt;div class=&quot;notice__body&quot;&gt;&lt;p&gt;A disclaimer limits the scope of the content. This post uses demo content only.&lt;/p&gt;
&lt;/div&gt;
&lt;/aside&gt;
&lt;h3 id=&quot;blockquote&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#blockquote&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Blockquote&lt;/h3&gt;
&lt;p&gt;A plain blockquote carries a key statement:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A boring upgrade is built in advance: map the system, write down what success means, and rehearse the failures.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;code&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#code&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Code&lt;/h2&gt;
&lt;p&gt;A code block sets its language for syntax highlighting:&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;rust&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-10&quot;&gt;fn&lt;/span&gt;&lt;span class=&quot;z-7&quot;&gt; main&lt;/span&gt;&lt;span&gt;() {&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;    println!&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt;&amp;quot;Calm infrastructure is designed.&amp;quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-5&quot;&gt;nodes&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;  -&lt;/span&gt;&lt;span class=&quot;z-5&quot;&gt; id&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; client&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-5&quot;&gt;    label&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; Client&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-5&quot;&gt;    tone&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; blue&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;cargo&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; run&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; --&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; diagrams check&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A code block can also show line numbers and highlight lines:&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;toml&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot;&gt;1&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;z-7&quot;&gt;extra&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l z-hl&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot;&gt;2&lt;/span&gt;&lt;span&gt;demo =&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; true&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span aria-hidden=&quot;true&quot; class=&quot;giallo-ln&quot;&gt;3&lt;/span&gt;&lt;span&gt;highlight =&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; &amp;quot;a post&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A long line scrolls inside the code box, and the language label and Copy button stay in place:&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;openstack&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; --os-cloud&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; production-region-one compute service set&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; --disable --disable-reason&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; &amp;quot;planned-maintenance-window&amp;quot; compute-node-0042.example.internal nova-compute&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&quot;tables-and-media&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#tables-and-media&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Tables and media&lt;/h2&gt;
&lt;p&gt;Table columns can align left, centre, or right. Wide tables scroll inside their own box.&lt;/p&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Component&lt;/th&gt;&lt;th style=&quot;text-align: center&quot;&gt;Role&lt;/th&gt;&lt;th style=&quot;text-align: right&quot;&gt;Replicas&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;MON&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Quorum&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;3&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;OSD&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Data&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;6&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;RGW&lt;/td&gt;&lt;td style=&quot;text-align: center&quot;&gt;Gateway&lt;/td&gt;&lt;td style=&quot;text-align: right&quot;&gt;2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;An image can sit on its own or in a figure with a caption:&lt;/p&gt;
&lt;figure&gt;
  &lt;img src=&quot;../../images/footer-art.png&quot; alt=&quot;Pixel-art scene: a figure and a campfire on the dunes under shooting stars&quot; width=&quot;2880&quot; height=&quot;1200&quot; loading=&quot;lazy&quot;&gt;
  &lt;figcaption&gt;A figure with a caption, using the site footer art.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;A horizontal rule separates two parts of a post:&lt;/p&gt;
&lt;hr /&gt;
&lt;h2 id=&quot;diagrams&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#diagrams&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Diagrams&lt;/h2&gt;
&lt;p&gt;Each diagram compiles from a YAML file in &lt;code&gt;diagrams/&lt;/code&gt;. Every diagram has a toolbar to zoom, fit, reset, and copy as PNG. Animated diagrams also have play, speed, and direction controls.&lt;/p&gt;
&lt;h3 id=&quot;detailed-style&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#detailed-style&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Detailed style&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;detailed&lt;/code&gt; style is the default. This is the smallest useful diagram:&lt;/p&gt;
&lt;figure class=&quot;diagram&quot; data-diagram data-diagram-name=&quot;showcase-minimal&quot; data-dg-source=&quot;@ajiarya&quot;&gt;
  &lt;div class=&quot;diagram__toolbar&quot; data-dg-toolbar role=&quot;toolbar&quot; aria-label=&quot;Diagram controls&quot; hidden&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Animation&quot; data-dg-animation-group&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-animation-control&gt;
        &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-animation aria-label=&quot;Animation: playing&quot; title=&quot;Animation options&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-minimal-animation-panel&quot;&gt;&lt;span class=&quot;diagram__icon&quot; data-dg-animation-icon aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span class=&quot;diagram__button-label&quot; data-dg-animation-label&gt;Pause&lt;/span&gt;&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-animation-panel id=&quot;dg-showcase-minimal-animation-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;play&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;▶&lt;/span&gt;&lt;span&gt;Start&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;pause&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span&gt;Pause&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;disable&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;■&lt;/span&gt;&lt;span&gt;Disable&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-speed-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-speed aria-label=&quot;Animation speed: 1x&quot; title=&quot;Animation speed&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-minimal-speed-panel&quot;&gt;1×&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel&quot; data-dg-speed-panel id=&quot;dg-showcase-minimal-speed-panel&quot;&gt;
          &lt;input class=&quot;diagram__range&quot; type=&quot;range&quot; min=&quot;0&quot; max=&quot;4&quot; step=&quot;1&quot; value=&quot;2&quot; data-dg-speed-range aria-label=&quot;Animation speed&quot;&gt;
          &lt;div class=&quot;diagram__ticks&quot; aria-hidden=&quot;true&quot;&gt;
            &lt;span data-dg-speed-tick&gt;0.25×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;0.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;2×&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover diagram__popover--end&quot; data-dg-direction-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value diagram__button--direction&quot; type=&quot;button&quot; data-dg-direction aria-label=&quot;Animation direction: alternating&quot; title=&quot;Animation direction&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-minimal-direction-panel&quot;&gt;↔&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-direction-panel id=&quot;dg-showcase-minimal-direction-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;forward&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;→&lt;/span&gt;&lt;span&gt;Forward&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;reverse&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;←&lt;/span&gt;&lt;span&gt;Reverse&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;alternate&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;↔&lt;/span&gt;&lt;span&gt;Alternating&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Zoom&quot;&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-out aria-label=&quot;Zoom out&quot; title=&quot;Zoom out&quot;&gt;−&lt;/button&gt;
      &lt;span class=&quot;diagram__zoom-label&quot; data-dg-zoom-label aria-live=&quot;polite&quot;&gt;100%&lt;/span&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-in aria-label=&quot;Zoom in&quot; title=&quot;Zoom in&quot;&gt;+&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-fit aria-label=&quot;Fit diagram to view&quot; title=&quot;Fit diagram&quot;&gt;Fit&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-reset aria-label=&quot;Reset diagram and view&quot; title=&quot;Reset diagram&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-png aria-label=&quot;Copy diagram as PNG&quot; title=&quot;Copy diagram as PNG&quot;&gt;PNG&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;diagram__canvas&quot; data-dg-canvas tabindex=&quot;0&quot; role=&quot;group&quot; aria-label=&quot;Diagram; left-drag to select, right-drag to pan, scroll to zoom, drag a node to move it, pinch to zoom&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 404 180&quot; role=&quot;img&quot; aria-labelledby=&quot;showcase-minimal-title showcase-minimal-desc&quot; class=&quot;dg-svg&quot; data-dg-draw-ms=&quot;1200&quot; data-dg-flow-ms=&quot;2600&quot; data-dg-stagger-ms=&quot;80&quot; data-dg-direction=&quot;alternate&quot; data-dg-autoplay=&quot;true&quot; data-dg-static=&quot;true&quot; data-dg-no-drag=&quot;false&quot; data-dg-fit-mobile=&quot;false&quot; style=&quot;--dg-draw-duration:1200ms;--dg-flow-duration:2600ms;--dg-pulse-duration:2000ms&quot;&gt;&lt;title id=&quot;showcase-minimal-title&quot;&gt;Minimal diagram&lt;/title&gt;&lt;desc id=&quot;showcase-minimal-desc&quot;&gt;The smallest useful diagram, two nodes and one labelled edge, laid out left to right.&lt;/desc&gt;&lt;defs&gt;&lt;marker id=&quot;showcase-minimal-arrow-blue&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-blue&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;g class=&quot;dg-edges&quot;&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 152.0 58.0 L 252.0 58.0&quot; pathLength=&quot;1&quot; data-from=&quot;client&quot; data-to=&quot;api&quot; data-dg-edge=&quot;0&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; marker-end=&quot;url(#showcase-minimal-arrow-blue)&quot; /&gt;&lt;/g&gt;&lt;g class=&quot;dg-nodes&quot;&gt;&lt;g class=&quot;dg-node dg-tone-blue&quot; data-node=&quot;client&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;32.0&quot; y=&quot;32.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;32.0&quot; y=&quot;32.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(48.0,47.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M8 7a4 4 0 1 0 8 0a4 4 0 0 0-8 0M6 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;76.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;76.0&quot; y=&quot;63.0&quot;&gt;Client&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-green&quot; data-node=&quot;api&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;252.0&quot; y=&quot;32.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;252.0&quot; y=&quot;32.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(268.0,47.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M4 13h5m3 3V8h3a2 2 0 0 1 2 2v1a2 2 0 0 1-2 2h-3m8-5v8M9 16v-5.5a2.5 2.5 0 0 0-5 0V16&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;296.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;296.0&quot; y=&quot;63.0&quot;&gt;API&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;dg-edge-labels&quot;&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;0&quot; x=&quot;202.0&quot; y=&quot;51.0&quot; text-anchor=&quot;middle&quot;&gt;HTTPS&lt;/text&gt;&lt;/g&gt;&lt;/svg&gt;&lt;div class=&quot;diagram__marquee&quot; data-dg-marquee hidden&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;diagram__hint&quot; data-dg-hint hidden&gt;Right-drag to pan · Scroll to zoom · Drag a node to move&lt;/p&gt;
  &lt;figcaption&gt;Minimal diagram: two nodes and one labelled edge, with automatic left-to-right layout.&lt;/figcaption&gt;
  &lt;p class=&quot;diagram__source&quot;&gt;Source: &lt;a href=&quot;https://github.com/AjiArya/website/blob/main/diagrams/showcase-minimal.yaml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;diagrams/showcase-minimal.yaml&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;p&gt;Edges have three line styles, three routes, and three arrow options:&lt;/p&gt;
&lt;figure class=&quot;diagram&quot; data-diagram data-diagram-name=&quot;showcase-edges&quot; data-dg-source=&quot;@ajiarya&quot;&gt;
  &lt;div class=&quot;diagram__toolbar&quot; data-dg-toolbar role=&quot;toolbar&quot; aria-label=&quot;Diagram controls&quot; hidden&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Animation&quot; data-dg-animation-group&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-animation-control&gt;
        &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-animation aria-label=&quot;Animation: playing&quot; title=&quot;Animation options&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-edges-animation-panel&quot;&gt;&lt;span class=&quot;diagram__icon&quot; data-dg-animation-icon aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span class=&quot;diagram__button-label&quot; data-dg-animation-label&gt;Pause&lt;/span&gt;&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-animation-panel id=&quot;dg-showcase-edges-animation-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;play&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;▶&lt;/span&gt;&lt;span&gt;Start&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;pause&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span&gt;Pause&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;disable&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;■&lt;/span&gt;&lt;span&gt;Disable&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-speed-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-speed aria-label=&quot;Animation speed: 1x&quot; title=&quot;Animation speed&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-edges-speed-panel&quot;&gt;1×&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel&quot; data-dg-speed-panel id=&quot;dg-showcase-edges-speed-panel&quot;&gt;
          &lt;input class=&quot;diagram__range&quot; type=&quot;range&quot; min=&quot;0&quot; max=&quot;4&quot; step=&quot;1&quot; value=&quot;2&quot; data-dg-speed-range aria-label=&quot;Animation speed&quot;&gt;
          &lt;div class=&quot;diagram__ticks&quot; aria-hidden=&quot;true&quot;&gt;
            &lt;span data-dg-speed-tick&gt;0.25×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;0.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;2×&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover diagram__popover--end&quot; data-dg-direction-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value diagram__button--direction&quot; type=&quot;button&quot; data-dg-direction aria-label=&quot;Animation direction: alternating&quot; title=&quot;Animation direction&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-edges-direction-panel&quot;&gt;↔&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-direction-panel id=&quot;dg-showcase-edges-direction-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;forward&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;→&lt;/span&gt;&lt;span&gt;Forward&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;reverse&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;←&lt;/span&gt;&lt;span&gt;Reverse&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;alternate&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;↔&lt;/span&gt;&lt;span&gt;Alternating&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Zoom&quot;&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-out aria-label=&quot;Zoom out&quot; title=&quot;Zoom out&quot;&gt;−&lt;/button&gt;
      &lt;span class=&quot;diagram__zoom-label&quot; data-dg-zoom-label aria-live=&quot;polite&quot;&gt;100%&lt;/span&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-in aria-label=&quot;Zoom in&quot; title=&quot;Zoom in&quot;&gt;+&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-fit aria-label=&quot;Fit diagram to view&quot; title=&quot;Fit diagram&quot;&gt;Fit&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-reset aria-label=&quot;Reset diagram and view&quot; title=&quot;Reset diagram&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-png aria-label=&quot;Copy diagram as PNG&quot; title=&quot;Copy diagram as PNG&quot;&gt;PNG&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;diagram__canvas&quot; data-dg-canvas tabindex=&quot;0&quot; role=&quot;group&quot; aria-label=&quot;Diagram; left-drag to select, right-drag to pan, scroll to zoom, drag a node to move it, pinch to zoom&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 544 846&quot; role=&quot;img&quot; aria-labelledby=&quot;showcase-edges-title showcase-edges-desc&quot; class=&quot;dg-svg&quot; data-dg-draw-ms=&quot;1200&quot; data-dg-flow-ms=&quot;2600&quot; data-dg-stagger-ms=&quot;80&quot; data-dg-direction=&quot;alternate&quot; data-dg-autoplay=&quot;true&quot; data-dg-static=&quot;true&quot; data-dg-no-drag=&quot;false&quot; data-dg-fit-mobile=&quot;false&quot; style=&quot;--dg-draw-duration:1200ms;--dg-flow-duration:2600ms;--dg-pulse-duration:2000ms&quot;&gt;&lt;title id=&quot;showcase-edges-title&quot;&gt;Edge styles, routes and arrows&lt;/title&gt;&lt;desc id=&quot;showcase-edges-desc&quot;&gt;Eight node pairs, each joined by an edge that shows a different line style, route, or arrow option. Route targets sit lower than their sources so the path shape is visible.&lt;/desc&gt;&lt;defs&gt;&lt;marker id=&quot;showcase-edges-arrow-amber&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-amber&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;showcase-edges-arrow-blue&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-blue&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;showcase-edges-arrow-cyan&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-cyan&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;showcase-edges-arrow-green&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-green&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;showcase-edges-arrow-red&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-red&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;showcase-edges-arrow-violet&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-violet&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;g class=&quot;dg-edges&quot;&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 155.6 58.0 L 392.0 58.0&quot; pathLength=&quot;1&quot; data-from=&quot;solid&quot; data-to=&quot;solid_to&quot; data-dg-edge=&quot;0&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; marker-end=&quot;url(#showcase-edges-arrow-blue)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-violet dg-style-dashed&quot; d=&quot;M 163.4 128.0 L 392.0 128.0&quot; pathLength=&quot;1&quot; data-from=&quot;dashed&quot; data-to=&quot;dashed_to&quot; data-dg-edge=&quot;1&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:80ms&quot; marker-end=&quot;url(#showcase-edges-arrow-violet)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-cyan dg-style-dotted&quot; d=&quot;M 163.4 198.0 L 392.0 198.0&quot; pathLength=&quot;1&quot; data-from=&quot;dotted&quot; data-to=&quot;dotted_to&quot; data-dg-edge=&quot;2&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:160ms&quot; marker-end=&quot;url(#showcase-edges-arrow-cyan)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-green dg-style-solid&quot; d=&quot;M 155.6 288.0 L 273.8 288.0 L 273.8 348.0 L 392.0 348.0&quot; pathLength=&quot;1&quot; data-from=&quot;elbow&quot; data-to=&quot;elbow_to&quot; data-dg-edge=&quot;3&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:240ms&quot; marker-end=&quot;url(#showcase-edges-arrow-green)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-green dg-style-solid&quot; d=&quot;M 179.0 428.0 L 392.0 488.0&quot; pathLength=&quot;1&quot; data-from=&quot;straight&quot; data-to=&quot;straight_to&quot; data-dg-edge=&quot;4&quot; data-dg-route=&quot;straight&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:320ms&quot; marker-end=&quot;url(#showcase-edges-arrow-green)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 155.6 568.0 C 273.8 568.0, 273.8 628.0, 392.0 628.0&quot; pathLength=&quot;1&quot; data-from=&quot;curve&quot; data-to=&quot;curve_to&quot; data-dg-edge=&quot;5&quot; data-dg-route=&quot;curve&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:400ms&quot; marker-end=&quot;url(#showcase-edges-arrow-amber)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-red dg-style-solid&quot; d=&quot;M 152.0 718.0 L 392.0 718.0&quot; pathLength=&quot;1&quot; data-from=&quot;both&quot; data-to=&quot;both_to&quot; data-dg-edge=&quot;6&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:480ms&quot; marker-start=&quot;url(#showcase-edges-arrow-red)&quot; marker-end=&quot;url(#showcase-edges-arrow-red)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-pink dg-style-solid&quot; d=&quot;M 152.0 788.0 L 392.0 788.0&quot; pathLength=&quot;1&quot; data-from=&quot;none&quot; data-to=&quot;none_to&quot; data-dg-edge=&quot;7&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:560ms&quot; /&gt;&lt;/g&gt;&lt;g class=&quot;dg-nodes&quot;&gt;&lt;g class=&quot;dg-node dg-tone-blue&quot; data-node=&quot;solid&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;32.0&quot; y=&quot;32.0&quot; width=&quot;123.6&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;32.0&quot; y=&quot;32.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;93.8&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;93.8&quot; y=&quot;63.0&quot;&gt;style: solid&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;solid_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;392.0&quot; y=&quot;32.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;392.0&quot; y=&quot;32.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;452.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;452.0&quot; y=&quot;63.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet&quot; data-node=&quot;dashed&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;32.0&quot; y=&quot;102.0&quot; width=&quot;131.4&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;32.0&quot; y=&quot;102.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;97.7&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;97.7&quot; y=&quot;133.0&quot;&gt;style: dashed&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;dashed_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;392.0&quot; y=&quot;102.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;392.0&quot; y=&quot;102.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;452.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;452.0&quot; y=&quot;133.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-cyan&quot; data-node=&quot;dotted&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;32.0&quot; y=&quot;172.0&quot; width=&quot;131.4&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;32.0&quot; y=&quot;172.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;97.7&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;97.7&quot; y=&quot;203.0&quot;&gt;style: dotted&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;dotted_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;392.0&quot; y=&quot;172.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;392.0&quot; y=&quot;172.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;452.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;452.0&quot; y=&quot;203.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-green&quot; data-node=&quot;elbow&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;32.0&quot; y=&quot;262.0&quot; width=&quot;123.6&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;32.0&quot; y=&quot;262.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;93.8&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;93.8&quot; y=&quot;293.0&quot;&gt;route: elbow&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;elbow_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;392.0&quot; y=&quot;322.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;392.0&quot; y=&quot;322.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;452.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;452.0&quot; y=&quot;353.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-green&quot; data-node=&quot;straight&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;32.0&quot; y=&quot;402.0&quot; width=&quot;147.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;32.0&quot; y=&quot;402.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;105.5&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;105.5&quot; y=&quot;433.0&quot;&gt;route: straight&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;straight_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;392.0&quot; y=&quot;462.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;392.0&quot; y=&quot;462.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;452.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;452.0&quot; y=&quot;493.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;curve&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;32.0&quot; y=&quot;542.0&quot; width=&quot;123.6&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;32.0&quot; y=&quot;542.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;93.8&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;93.8&quot; y=&quot;573.0&quot;&gt;route: curve&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;curve_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;392.0&quot; y=&quot;602.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;392.0&quot; y=&quot;602.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;452.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;452.0&quot; y=&quot;633.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-red&quot; data-node=&quot;both&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;32.0&quot; y=&quot;692.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;32.0&quot; y=&quot;692.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;723.0&quot;&gt;arrow: both&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;both_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;392.0&quot; y=&quot;692.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;392.0&quot; y=&quot;692.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;452.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;452.0&quot; y=&quot;723.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-pink&quot; data-node=&quot;none&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;32.0&quot; y=&quot;762.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;32.0&quot; y=&quot;762.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;793.0&quot;&gt;arrow: none&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;none_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;392.0&quot; y=&quot;762.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;392.0&quot; y=&quot;762.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;452.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;452.0&quot; y=&quot;793.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;div class=&quot;diagram__marquee&quot; data-dg-marquee hidden&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;diagram__hint&quot; data-dg-hint hidden&gt;Right-drag to pan · Scroll to zoom · Drag a node to move&lt;/p&gt;
  &lt;figcaption&gt;Edge options: solid, dashed, and dotted lines; elbow, straight, and curved routes; arrows on both ends or none. The default arrow is on the end only.&lt;/figcaption&gt;
  &lt;p class=&quot;diagram__source&quot;&gt;Source: &lt;a href=&quot;https://github.com/AjiArya/website/blob/main/diagrams/showcase-edges.yaml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;diagrams/showcase-edges.yaml&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;p&gt;Edges have four animation types, and flow has three directions:&lt;/p&gt;
&lt;figure class=&quot;diagram&quot; data-diagram data-diagram-name=&quot;showcase-animation&quot; data-dg-source=&quot;@ajiarya&quot;&gt;
  &lt;div class=&quot;diagram__toolbar&quot; data-dg-toolbar role=&quot;toolbar&quot; aria-label=&quot;Diagram controls&quot; hidden&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Animation&quot; data-dg-animation-group&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-animation-control&gt;
        &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-animation aria-label=&quot;Animation: playing&quot; title=&quot;Animation options&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-animation-animation-panel&quot;&gt;&lt;span class=&quot;diagram__icon&quot; data-dg-animation-icon aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span class=&quot;diagram__button-label&quot; data-dg-animation-label&gt;Pause&lt;/span&gt;&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-animation-panel id=&quot;dg-showcase-animation-animation-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;play&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;▶&lt;/span&gt;&lt;span&gt;Start&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;pause&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span&gt;Pause&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;disable&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;■&lt;/span&gt;&lt;span&gt;Disable&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-speed-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-speed aria-label=&quot;Animation speed: 1x&quot; title=&quot;Animation speed&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-animation-speed-panel&quot;&gt;1×&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel&quot; data-dg-speed-panel id=&quot;dg-showcase-animation-speed-panel&quot;&gt;
          &lt;input class=&quot;diagram__range&quot; type=&quot;range&quot; min=&quot;0&quot; max=&quot;4&quot; step=&quot;1&quot; value=&quot;2&quot; data-dg-speed-range aria-label=&quot;Animation speed&quot;&gt;
          &lt;div class=&quot;diagram__ticks&quot; aria-hidden=&quot;true&quot;&gt;
            &lt;span data-dg-speed-tick&gt;0.25×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;0.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;2×&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover diagram__popover--end&quot; data-dg-direction-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value diagram__button--direction&quot; type=&quot;button&quot; data-dg-direction aria-label=&quot;Animation direction: alternating&quot; title=&quot;Animation direction&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-animation-direction-panel&quot;&gt;↔&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-direction-panel id=&quot;dg-showcase-animation-direction-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;forward&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;→&lt;/span&gt;&lt;span&gt;Forward&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;reverse&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;←&lt;/span&gt;&lt;span&gt;Reverse&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;alternate&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;↔&lt;/span&gt;&lt;span&gt;Alternating&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Zoom&quot;&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-out aria-label=&quot;Zoom out&quot; title=&quot;Zoom out&quot;&gt;−&lt;/button&gt;
      &lt;span class=&quot;diagram__zoom-label&quot; data-dg-zoom-label aria-live=&quot;polite&quot;&gt;100%&lt;/span&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-in aria-label=&quot;Zoom in&quot; title=&quot;Zoom in&quot;&gt;+&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-fit aria-label=&quot;Fit diagram to view&quot; title=&quot;Fit diagram&quot;&gt;Fit&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-reset aria-label=&quot;Reset diagram and view&quot; title=&quot;Reset diagram&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-png aria-label=&quot;Copy diagram as PNG&quot; title=&quot;Copy diagram as PNG&quot;&gt;PNG&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;diagram__canvas&quot; data-dg-canvas tabindex=&quot;0&quot; role=&quot;group&quot; aria-label=&quot;Diagram; left-drag to select, right-drag to pan, scroll to zoom, drag a node to move it, pinch to zoom&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 439 556&quot; role=&quot;img&quot; aria-labelledby=&quot;showcase-animation-title showcase-animation-desc&quot; class=&quot;dg-svg&quot; data-dg-draw-ms=&quot;1200&quot; data-dg-flow-ms=&quot;2600&quot; data-dg-stagger-ms=&quot;80&quot; data-dg-direction=&quot;alternate&quot; data-dg-autoplay=&quot;true&quot; data-dg-static=&quot;false&quot; data-dg-no-drag=&quot;false&quot; data-dg-fit-mobile=&quot;false&quot; style=&quot;--dg-draw-duration:1200ms;--dg-flow-duration:2600ms;--dg-pulse-duration:2000ms&quot;&gt;&lt;title id=&quot;showcase-animation-title&quot;&gt;Edge animations&lt;/title&gt;&lt;desc id=&quot;showcase-animation-desc&quot;&gt;Six node pairs, each joined by an edge that shows a different animation type or packet direction.&lt;/desc&gt;&lt;defs&gt;&lt;marker id=&quot;showcase-animation-arrow-amber&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-amber&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;showcase-animation-arrow-blue&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-blue&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;showcase-animation-arrow-cyan&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-cyan&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;showcase-animation-arrow-green&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-green&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;showcase-animation-arrow-neutral&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-neutral&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;showcase-animation-arrow-violet&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-violet&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;g class=&quot;dg-edges&quot;&gt;&lt;path class=&quot;dg-edge dg-tone-neutral dg-style-solid&quot; d=&quot;M 182.9 58.0 L 286.8 58.0&quot; pathLength=&quot;1&quot; data-from=&quot;none&quot; data-to=&quot;none_to&quot; data-dg-edge=&quot;0&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; marker-end=&quot;url(#showcase-animation-arrow-neutral)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid dg-edge--draw&quot; d=&quot;M 182.9 146.0 L 286.8 146.0&quot; pathLength=&quot;1&quot; data-from=&quot;draw&quot; data-to=&quot;draw_to&quot; data-dg-edge=&quot;1&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;draw&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:80ms&quot; marker-end=&quot;url(#showcase-animation-arrow-blue)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-violet dg-style-solid dg-edge--pulse&quot; d=&quot;M 186.8 234.0 L 286.8 234.0&quot; pathLength=&quot;1&quot; data-from=&quot;pulse&quot; data-to=&quot;pulse_to&quot; data-dg-edge=&quot;2&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;pulse&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:160ms&quot; marker-end=&quot;url(#showcase-animation-arrow-violet)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-green dg-style-solid dg-edge--flow&quot; d=&quot;M 182.9 322.0 L 286.8 322.0&quot; pathLength=&quot;1&quot; data-from=&quot;alternate&quot; data-to=&quot;alternate_to&quot; data-dg-edge=&quot;3&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;flow&quot; data-dg-direction=&quot;alternate&quot; style=&quot;--dg-delay:240ms&quot; marker-end=&quot;url(#showcase-animation-arrow-green)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-cyan dg-style-solid dg-edge--flow&quot; d=&quot;M 175.1 410.0 L 286.8 410.0&quot; pathLength=&quot;1&quot; data-from=&quot;forward&quot; data-to=&quot;forward_to&quot; data-dg-edge=&quot;4&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;flow&quot; data-dg-direction=&quot;forward&quot; style=&quot;--dg-delay:320ms&quot; marker-end=&quot;url(#showcase-animation-arrow-cyan)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid dg-edge--flow&quot; d=&quot;M 175.1 498.0 L 286.8 498.0&quot; pathLength=&quot;1&quot; data-from=&quot;reverse&quot; data-to=&quot;reverse_to&quot; data-dg-edge=&quot;5&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;flow&quot; data-dg-direction=&quot;reverse&quot; style=&quot;--dg-delay:400ms&quot; marker-end=&quot;url(#showcase-animation-arrow-amber)&quot; /&gt;&lt;/g&gt;&lt;g class=&quot;dg-packets&quot; aria-hidden=&quot;true&quot;&gt;&lt;circle class=&quot;dg-packet dg-tone-green&quot; data-dg-edge=&quot;3&quot; r=&quot;4.5&quot; cx=&quot;0&quot; cy=&quot;0&quot; opacity=&quot;0&quot;/&gt;&lt;circle class=&quot;dg-packet dg-tone-cyan&quot; data-dg-edge=&quot;4&quot; r=&quot;4.5&quot; cx=&quot;0&quot; cy=&quot;0&quot; opacity=&quot;0&quot;/&gt;&lt;circle class=&quot;dg-packet dg-tone-amber&quot; data-dg-edge=&quot;5&quot; r=&quot;4.5&quot; cx=&quot;0&quot; cy=&quot;0&quot; opacity=&quot;0&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;dg-nodes&quot;&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;none&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;35.9&quot; y=&quot;32.0&quot; width=&quot;147.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;35.9&quot; y=&quot;32.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;109.4&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;109.4&quot; y=&quot;63.0&quot;&gt;animation: none&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;none_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;286.8&quot; y=&quot;32.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;286.8&quot; y=&quot;32.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;346.8&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;346.8&quot; y=&quot;63.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-blue&quot; data-node=&quot;draw&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;35.9&quot; y=&quot;120.0&quot; width=&quot;147.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;35.9&quot; y=&quot;120.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;109.4&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;109.4&quot; y=&quot;151.0&quot;&gt;animation: draw&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;draw_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;286.8&quot; y=&quot;120.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;286.8&quot; y=&quot;120.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;346.8&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;346.8&quot; y=&quot;151.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet&quot; data-node=&quot;pulse&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;32.0&quot; y=&quot;208.0&quot; width=&quot;154.8&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;32.0&quot; y=&quot;208.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;109.4&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;109.4&quot; y=&quot;239.0&quot;&gt;animation: pulse&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;pulse_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;286.8&quot; y=&quot;208.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;286.8&quot; y=&quot;208.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;346.8&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;346.8&quot; y=&quot;239.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-green&quot; data-node=&quot;alternate&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;35.9&quot; y=&quot;296.0&quot; width=&quot;147.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;35.9&quot; y=&quot;296.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;109.4&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;109.4&quot; y=&quot;327.0&quot;&gt;flow: alternate&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;alternate_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;286.8&quot; y=&quot;296.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;286.8&quot; y=&quot;296.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;346.8&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;346.8&quot; y=&quot;327.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-cyan&quot; data-node=&quot;forward&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;43.7&quot; y=&quot;384.0&quot; width=&quot;131.4&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;43.7&quot; y=&quot;384.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;109.4&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;109.4&quot; y=&quot;415.0&quot;&gt;flow: forward&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;forward_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;286.8&quot; y=&quot;384.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;286.8&quot; y=&quot;384.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;346.8&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;346.8&quot; y=&quot;415.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;reverse&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;43.7&quot; y=&quot;472.0&quot; width=&quot;131.4&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;43.7&quot; y=&quot;472.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;109.4&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;109.4&quot; y=&quot;503.0&quot;&gt;flow: reverse&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;reverse_to&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;286.8&quot; y=&quot;472.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;286.8&quot; y=&quot;472.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;346.8&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;346.8&quot; y=&quot;503.0&quot;&gt;target&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;div class=&quot;diagram__marquee&quot; data-dg-marquee hidden&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;diagram__hint&quot; data-dg-hint hidden&gt;Right-drag to pan · Scroll to zoom · Drag a node to move&lt;/p&gt;
  &lt;figcaption&gt;Animation options: none, draw, pulse, and flow in alternating, forward, and reverse directions.&lt;/figcaption&gt;
  &lt;p class=&quot;diagram__source&quot;&gt;Source: &lt;a href=&quot;https://github.com/AjiArya/website/blob/main/diagrams/showcase-animation.yaml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;diagrams/showcase-animation.yaml&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;p&gt;Manual layout places each node at explicit coordinates. This diagram also shows all eight tones and both node shapes:&lt;/p&gt;
&lt;figure class=&quot;diagram&quot; data-diagram data-diagram-name=&quot;showcase-manual&quot; data-dg-source=&quot;@ajiarya&quot;&gt;
  &lt;div class=&quot;diagram__toolbar&quot; data-dg-toolbar role=&quot;toolbar&quot; aria-label=&quot;Diagram controls&quot; hidden&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Animation&quot; data-dg-animation-group&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-animation-control&gt;
        &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-animation aria-label=&quot;Animation: playing&quot; title=&quot;Animation options&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-manual-animation-panel&quot;&gt;&lt;span class=&quot;diagram__icon&quot; data-dg-animation-icon aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span class=&quot;diagram__button-label&quot; data-dg-animation-label&gt;Pause&lt;/span&gt;&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-animation-panel id=&quot;dg-showcase-manual-animation-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;play&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;▶&lt;/span&gt;&lt;span&gt;Start&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;pause&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span&gt;Pause&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;disable&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;■&lt;/span&gt;&lt;span&gt;Disable&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-speed-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-speed aria-label=&quot;Animation speed: 1x&quot; title=&quot;Animation speed&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-manual-speed-panel&quot;&gt;1×&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel&quot; data-dg-speed-panel id=&quot;dg-showcase-manual-speed-panel&quot;&gt;
          &lt;input class=&quot;diagram__range&quot; type=&quot;range&quot; min=&quot;0&quot; max=&quot;4&quot; step=&quot;1&quot; value=&quot;2&quot; data-dg-speed-range aria-label=&quot;Animation speed&quot;&gt;
          &lt;div class=&quot;diagram__ticks&quot; aria-hidden=&quot;true&quot;&gt;
            &lt;span data-dg-speed-tick&gt;0.25×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;0.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;2×&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover diagram__popover--end&quot; data-dg-direction-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value diagram__button--direction&quot; type=&quot;button&quot; data-dg-direction aria-label=&quot;Animation direction: alternating&quot; title=&quot;Animation direction&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-manual-direction-panel&quot;&gt;↔&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-direction-panel id=&quot;dg-showcase-manual-direction-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;forward&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;→&lt;/span&gt;&lt;span&gt;Forward&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;reverse&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;←&lt;/span&gt;&lt;span&gt;Reverse&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;alternate&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;↔&lt;/span&gt;&lt;span&gt;Alternating&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Zoom&quot;&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-out aria-label=&quot;Zoom out&quot; title=&quot;Zoom out&quot;&gt;−&lt;/button&gt;
      &lt;span class=&quot;diagram__zoom-label&quot; data-dg-zoom-label aria-live=&quot;polite&quot;&gt;100%&lt;/span&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-in aria-label=&quot;Zoom in&quot; title=&quot;Zoom in&quot;&gt;+&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-fit aria-label=&quot;Fit diagram to view&quot; title=&quot;Fit diagram&quot;&gt;Fit&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-reset aria-label=&quot;Reset diagram and view&quot; title=&quot;Reset diagram&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-png aria-label=&quot;Copy diagram as PNG&quot; title=&quot;Copy diagram as PNG&quot;&gt;PNG&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;diagram__canvas&quot; data-dg-canvas tabindex=&quot;0&quot; role=&quot;group&quot; aria-label=&quot;Diagram; left-drag to select, right-drag to pan, scroll to zoom, drag a node to move it, pinch to zoom&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 816 354&quot; role=&quot;img&quot; aria-labelledby=&quot;showcase-manual-title showcase-manual-desc&quot; class=&quot;dg-svg&quot; data-dg-draw-ms=&quot;1200&quot; data-dg-flow-ms=&quot;2600&quot; data-dg-stagger-ms=&quot;80&quot; data-dg-direction=&quot;alternate&quot; data-dg-autoplay=&quot;true&quot; data-dg-static=&quot;true&quot; data-dg-no-drag=&quot;false&quot; data-dg-fit-mobile=&quot;false&quot; style=&quot;--dg-draw-duration:1200ms;--dg-flow-duration:2600ms;--dg-pulse-duration:2000ms&quot;&gt;&lt;title id=&quot;showcase-manual-title&quot;&gt;Manual layout, tones, shapes and groups&lt;/title&gt;&lt;desc id=&quot;showcase-manual-desc&quot;&gt;Eight nodes placed at explicit coordinates, one per colour tone, in two groups. The top row uses boxes and the bottom row uses pills.&lt;/desc&gt;&lt;defs&gt;&lt;marker id=&quot;showcase-manual-arrow-blue&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-blue&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;showcase-manual-arrow-green&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-green&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;showcase-manual-arrow-violet&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-violet&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;g class=&quot;dg-groups&quot;&gt;&lt;g class=&quot;dg-group dg-tone-blue&quot; data-group=&quot;boxes&quot;&gt;&lt;rect class=&quot;dg-group-box&quot; x=&quot;32.0&quot; y=&quot;32.0&quot; width=&quot;752.0&quot; height=&quot;110.0&quot; rx=&quot;10&quot;/&gt;&lt;text class=&quot;dg-group-label&quot; x=&quot;46.0&quot; y=&quot;53.0&quot;&gt;shape box&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-group dg-tone-amber&quot; data-group=&quot;pills&quot;&gt;&lt;rect class=&quot;dg-group-box&quot; x=&quot;32.0&quot; y=&quot;212.0&quot; width=&quot;752.0&quot; height=&quot;110.0&quot; rx=&quot;10&quot;/&gt;&lt;text class=&quot;dg-group-label&quot; x=&quot;46.0&quot; y=&quot;233.0&quot;&gt;shape pill&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;dg-edges&quot;&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 308.0 126.0 L 308.0 254.0&quot; pathLength=&quot;1&quot; data-from=&quot;blue&quot; data-to=&quot;red&quot; data-dg-edge=&quot;0&quot; data-dg-route=&quot;straight&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; marker-end=&quot;url(#showcase-manual-arrow-blue)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-violet dg-style-solid&quot; d=&quot;M 508.0 126.0 L 508.0 254.0&quot; pathLength=&quot;1&quot; data-from=&quot;violet&quot; data-to=&quot;cyan&quot; data-dg-edge=&quot;1&quot; data-dg-route=&quot;straight&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:80ms&quot; marker-end=&quot;url(#showcase-manual-arrow-violet)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-green dg-style-solid&quot; d=&quot;M 708.0 126.0 L 708.0 254.0&quot; pathLength=&quot;1&quot; data-from=&quot;green&quot; data-to=&quot;pink&quot; data-dg-edge=&quot;2&quot; data-dg-route=&quot;straight&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:160ms&quot; marker-end=&quot;url(#showcase-manual-arrow-green)&quot; /&gt;&lt;/g&gt;&lt;g class=&quot;dg-nodes&quot;&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;neutral&quot; data-group=&quot;boxes&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;74.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;74.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,89.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37c1 .608 2.296.07 2.572-1.065&quot;/&gt;&lt;path d=&quot;M9 12a3 3 0 1 0 6 0a3 3 0 0 0-6 0&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;105.0&quot;&gt;neutral&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-blue&quot; data-node=&quot;blue&quot; data-group=&quot;boxes&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;248.0&quot; y=&quot;74.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;248.0&quot; y=&quot;74.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(264.0,89.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M8 7a4 4 0 1 0 8 0a4 4 0 0 0-8 0M6 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;292.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;292.0&quot; y=&quot;105.0&quot;&gt;blue&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet&quot; data-node=&quot;violet&quot; data-group=&quot;boxes&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;448.0&quot; y=&quot;74.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;448.0&quot; y=&quot;74.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(464.0,89.0) scale(0.8333)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m10.204 14.35l.007.01l-.999 2.413a5.17 5.17 0 0 1-2.075-2.597l2.578-.437l.004.005a.44.44 0 0 1 .484.606zm-.833-2.129a.44.44 0 0 0 .173-.756l.002-.011L7.585 9.7a5.14 5.14 0 0 0-.73 3.255l2.514-.725zm1.145-1.98a.44.44 0 0 0 .699-.337l.01-.005l.15-2.62a5.14 5.14 0 0 0-3.01 1.442l2.147 1.523zm.76 2.75l.723.349l.722-.347l.18-.78l-.5-.623h-.804l-.5.623l.179.779zm1.5-3.095a.44.44 0 0 0 .7.336l.008.003l2.134-1.513a5.2 5.2 0 0 0-2.992-1.442l.148 2.615zm10.876 5.97l-5.773 7.181a1.6 1.6 0 0 1-1.248.594l-9.261.003a1.6 1.6 0 0 1-1.247-.596l-5.776-7.18a1.58 1.58 0 0 1-.307-1.34L2.1 5.573c.108-.47.425-.864.863-1.073L11.305.513a1.6 1.6 0 0 1 1.385 0l8.345 3.985c.438.209.755.604.863 1.073l2.062 8.955c.108.47-.005.963-.308 1.34m-3.289-2.057c-.042-.01-.103-.026-.145-.034c-.174-.033-.315-.025-.479-.038c-.35-.037-.638-.067-.895-.148c-.105-.04-.18-.165-.216-.216l-.201-.059a6.5 6.5 0 0 0-.105-2.332a6.5 6.5 0 0 0-.936-2.163c.052-.047.15-.133.177-.159c.008-.09.001-.183.094-.282c.197-.185.444-.338.743-.522c.142-.084.273-.137.415-.242c.032-.024.076-.062.11-.089c.24-.191.295-.52.123-.736s-.506-.236-.745-.045c-.034.027-.08.062-.111.088c-.134.116-.217.23-.33.35c-.246.25-.45.458-.673.609c-.097.056-.239.037-.303.033l-.19.135a6.55 6.55 0 0 0-4.146-2.003l-.012-.223c-.065-.062-.143-.115-.163-.25c-.022-.268.015-.557.057-.905c.023-.163.061-.298.068-.475c.001-.04-.001-.099-.001-.142c0-.306-.224-.555-.5-.555c-.275 0-.499.249-.499.555l.001.014c0 .041-.002.092 0 .128c.006.177.044.312.067.475c.042.348.078.637.056.906a.55.55 0 0 1-.162.258l-.012.211a6.42 6.42 0 0 0-4.166 2.003l-.18-.128c-.09.012-.18.04-.297-.029c-.223-.15-.427-.358-.673-.608c-.113-.12-.195-.234-.329-.349l-.111-.088a.6.6 0 0 0-.348-.132a.48.48 0 0 0-.398.176c-.172.216-.117.546.123.737l.007.005l.104.083c.142.105.272.159.414.242c.299.185.546.338.743.522c.076.082.09.226.1.288l.16.143a6.46 6.46 0 0 0-1.02 4.506l-.208.06c-.055.072-.133.184-.215.217c-.257.081-.546.11-.895.147c-.164.014-.305.006-.48.039c-.037.007-.09.02-.133.03l-.004.002l-.007.002c-.295.071-.484.342-.423.608c.061.267.349.429.645.365l.007-.001l.01-.003l.129-.029c.17-.046.294-.113.448-.172c.33-.118.604-.217.87-.256c.112-.009.23.069.288.101l.217-.037a6.5 6.5 0 0 0 2.88 3.596l-.09.218c.033.084.069.199.044.282c-.097.252-.263.517-.452.813c-.091.136-.185.242-.268.399c-.02.037-.045.095-.064.134c-.128.275-.034.591.213.71c.248.12.556-.007.69-.282v-.002c.02-.039.046-.09.062-.127c.07-.162.094-.301.144-.458c.132-.332.205-.68.387-.897c.05-.06.13-.082.215-.105l.113-.205a6.45 6.45 0 0 0 4.609.012l.106.192c.086.028.18.042.256.155c.136.232.229.507.342.84c.05.156.074.295.145.457c.016.037.043.09.062.129c.133.276.442.402.69.282c.247-.118.341-.435.213-.71c-.02-.039-.045-.096-.065-.134c-.083-.156-.177-.261-.268-.398c-.19-.296-.346-.541-.443-.793c-.04-.13.007-.21.038-.294c-.018-.022-.059-.144-.083-.202a6.5 6.5 0 0 0 2.88-3.622c.064.01.176.03.213.038c.075-.05.144-.114.28-.104c.266.039.54.138.87.256c.154.06.277.128.448.173c.036.01.088.019.13.028l.009.003l.007.001c.297.064.584-.098.645-.365c.06-.266-.128-.537-.423-.608M16.4 9.701l-1.95 1.746v.005a.44.44 0 0 0 .173.757l.003.01l2.526.728a5.2 5.2 0 0 0-.108-1.674A5.2 5.2 0 0 0 16.4 9.7zm-4.013 5.325a.44.44 0 0 0-.404-.232a.44.44 0 0 0-.372.233h-.002l-1.268 2.292a5.16 5.16 0 0 0 3.326.003l-1.27-2.296zm1.888-1.293a.44.44 0 0 0-.27.036a.44.44 0 0 0-.214.572l-.003.004l1.01 2.438a5.15 5.15 0 0 0 2.081-2.615l-2.6-.44z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;492.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;492.0&quot; y=&quot;105.0&quot;&gt;violet&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-green&quot; data-node=&quot;green&quot; data-group=&quot;boxes&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;648.0&quot; y=&quot;74.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;648.0&quot; y=&quot;74.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(664.0,89.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M4 13h5m3 3V8h3a2 2 0 0 1 2 2v1a2 2 0 0 1-2 2h-3m8-5v8M9 16v-5.5a2.5 2.5 0 0 0-5 0V16&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;692.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;692.0&quot; y=&quot;105.0&quot;&gt;green&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;amber&quot; data-group=&quot;pills&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;254.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;26.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;254.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,269.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M6 4h10l4 4v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2&quot;/&gt;&lt;path d=&quot;M10 14a2 2 0 1 0 4 0a2 2 0 1 0-4 0m4-10v4H8V4&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;285.0&quot;&gt;amber&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-red&quot; data-node=&quot;red&quot; data-group=&quot;pills&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;248.0&quot; y=&quot;254.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;26.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;248.0&quot; y=&quot;254.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(264.0,269.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M3 5a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1zm4 15h10m-8-4v4m6-4v4&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;292.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;292.0&quot; y=&quot;285.0&quot;&gt;red&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-cyan&quot; data-node=&quot;cyan&quot; data-group=&quot;pills&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;448.0&quot; y=&quot;254.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;26.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;448.0&quot; y=&quot;254.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(464.0,269.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0m.6-3h16.8M3.6 15h16.8&quot;/&gt;&lt;path d=&quot;M11.5 3a17 17 0 0 0 0 18m1-18a17 17 0 0 1 0 18&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;492.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;492.0&quot; y=&quot;285.0&quot;&gt;cyan&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-pink&quot; data-node=&quot;pink&quot; data-group=&quot;pills&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;648.0&quot; y=&quot;254.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;26.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;648.0&quot; y=&quot;254.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(664.0,269.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M3 6a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2m2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8m-9 4h4&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;692.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;692.0&quot; y=&quot;285.0&quot;&gt;pink&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;div class=&quot;diagram__marquee&quot; data-dg-marquee hidden&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;diagram__hint&quot; data-dg-hint hidden&gt;Right-drag to pan · Scroll to zoom · Drag a node to move&lt;/p&gt;
  &lt;figcaption&gt;Manual layout: the eight tones, box and pill shapes, and two groups.&lt;/figcaption&gt;
  &lt;p class=&quot;diagram__source&quot;&gt;Source: &lt;a href=&quot;https://github.com/AjiArya/website/blob/main/diagrams/showcase-manual.yaml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;diagrams/showcase-manual.yaml&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;p&gt;Automatic layout can also run top to bottom, with rank overrides and groups:&lt;/p&gt;
&lt;figure class=&quot;diagram&quot; data-diagram data-diagram-name=&quot;ceph-data-path&quot; data-dg-source=&quot;@ajiarya&quot;&gt;
  &lt;div class=&quot;diagram__toolbar&quot; data-dg-toolbar role=&quot;toolbar&quot; aria-label=&quot;Diagram controls&quot; hidden&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Animation&quot; data-dg-animation-group&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-animation-control&gt;
        &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-animation aria-label=&quot;Animation: playing&quot; title=&quot;Animation options&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-ceph-data-path-animation-panel&quot;&gt;&lt;span class=&quot;diagram__icon&quot; data-dg-animation-icon aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span class=&quot;diagram__button-label&quot; data-dg-animation-label&gt;Pause&lt;/span&gt;&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-animation-panel id=&quot;dg-ceph-data-path-animation-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;play&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;▶&lt;/span&gt;&lt;span&gt;Start&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;pause&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span&gt;Pause&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;disable&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;■&lt;/span&gt;&lt;span&gt;Disable&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-speed-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-speed aria-label=&quot;Animation speed: 1x&quot; title=&quot;Animation speed&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-ceph-data-path-speed-panel&quot;&gt;1×&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel&quot; data-dg-speed-panel id=&quot;dg-ceph-data-path-speed-panel&quot;&gt;
          &lt;input class=&quot;diagram__range&quot; type=&quot;range&quot; min=&quot;0&quot; max=&quot;4&quot; step=&quot;1&quot; value=&quot;2&quot; data-dg-speed-range aria-label=&quot;Animation speed&quot;&gt;
          &lt;div class=&quot;diagram__ticks&quot; aria-hidden=&quot;true&quot;&gt;
            &lt;span data-dg-speed-tick&gt;0.25×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;0.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;2×&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover diagram__popover--end&quot; data-dg-direction-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value diagram__button--direction&quot; type=&quot;button&quot; data-dg-direction aria-label=&quot;Animation direction: alternating&quot; title=&quot;Animation direction&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-ceph-data-path-direction-panel&quot;&gt;↔&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-direction-panel id=&quot;dg-ceph-data-path-direction-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;forward&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;→&lt;/span&gt;&lt;span&gt;Forward&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;reverse&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;←&lt;/span&gt;&lt;span&gt;Reverse&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;alternate&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;↔&lt;/span&gt;&lt;span&gt;Alternating&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Zoom&quot;&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-out aria-label=&quot;Zoom out&quot; title=&quot;Zoom out&quot;&gt;−&lt;/button&gt;
      &lt;span class=&quot;diagram__zoom-label&quot; data-dg-zoom-label aria-live=&quot;polite&quot;&gt;100%&lt;/span&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-in aria-label=&quot;Zoom in&quot; title=&quot;Zoom in&quot;&gt;+&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-fit aria-label=&quot;Fit diagram to view&quot; title=&quot;Fit diagram&quot;&gt;Fit&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-reset aria-label=&quot;Reset diagram and view&quot; title=&quot;Reset diagram&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-png aria-label=&quot;Copy diagram as PNG&quot; title=&quot;Copy diagram as PNG&quot;&gt;PNG&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;diagram__canvas&quot; data-dg-canvas tabindex=&quot;0&quot; role=&quot;group&quot; aria-label=&quot;Diagram; left-drag to select, right-drag to pan, scroll to zoom, drag a node to move it, pinch to zoom&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 547 506&quot; role=&quot;img&quot; aria-labelledby=&quot;ceph-data-path-title ceph-data-path-desc&quot; class=&quot;dg-svg&quot; data-dg-draw-ms=&quot;1200&quot; data-dg-flow-ms=&quot;2800&quot; data-dg-stagger-ms=&quot;80&quot; data-dg-direction=&quot;alternate&quot; data-dg-autoplay=&quot;true&quot; data-dg-static=&quot;false&quot; data-dg-no-drag=&quot;false&quot; data-dg-fit-mobile=&quot;false&quot; style=&quot;--dg-draw-duration:1200ms;--dg-flow-duration:2800ms;--dg-pulse-duration:2000ms&quot;&gt;&lt;title id=&quot;ceph-data-path-title&quot;&gt;Ceph data path&lt;/title&gt;&lt;desc id=&quot;ceph-data-path-desc&quot;&gt;Object clients authenticate against the monitor quorum, receive a cluster map, and read or write objects directly through RADOS to the OSDs.&lt;/desc&gt;&lt;defs&gt;&lt;marker id=&quot;ceph-data-path-arrow-amber&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-amber&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;ceph-data-path-arrow-blue&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-blue&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;ceph-data-path-arrow-cyan&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-cyan&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;ceph-data-path-arrow-violet&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-violet&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;g class=&quot;dg-groups&quot;&gt;&lt;g class=&quot;dg-group dg-tone-violet&quot; data-group=&quot;quorum&quot;&gt;&lt;rect class=&quot;dg-group-box&quot; x=&quot;32.0&quot; y=&quot;118.0&quot; width=&quot;328.8&quot; height=&quot;110.0&quot; rx=&quot;10&quot;/&gt;&lt;text class=&quot;dg-group-label&quot; x=&quot;46.0&quot; y=&quot;139.0&quot;&gt;MON / MGR quorum&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-group dg-tone-amber&quot; data-group=&quot;osds&quot;&gt;&lt;rect class=&quot;dg-group-box&quot; x=&quot;32.0&quot; y=&quot;246.0&quot; width=&quot;480.0&quot; height=&quot;110.0&quot; rx=&quot;10&quot;/&gt;&lt;text class=&quot;dg-group-label&quot; x=&quot;46.0&quot; y=&quot;267.0&quot;&gt;OSD nodes&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;dg-edges&quot;&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 146.3 84.0 L 146.3 122.0 L 452.0 122.0 L 452.0 160.0&quot; pathLength=&quot;1&quot; data-from=&quot;client&quot; data-to=&quot;rgw&quot; data-dg-edge=&quot;0&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-blue)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-cyan dg-style-solid&quot; d=&quot;M 388.8 186.0 L 344.8 186.0&quot; pathLength=&quot;1&quot; data-from=&quot;rgw&quot; data-to=&quot;mon&quot; data-dg-edge=&quot;1&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:80ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-cyan)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-cyan dg-style-solid dg-edge--flow&quot; d=&quot;M 425.4 212.0 L 425.4 232.0 L 136.0 232.0 L 136.0 256.0 L 108.0 256.0 L 108.0 288.0&quot; pathLength=&quot;1&quot; data-from=&quot;rgw&quot; data-to=&quot;osd1&quot; data-dg-edge=&quot;2&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;flow&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:160ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-cyan)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-cyan dg-style-solid dg-edge--flow&quot; d=&quot;M 452.0 212.0 L 452.0 256.0 L 288.7 256.0 L 288.7 288.0&quot; pathLength=&quot;1&quot; data-from=&quot;rgw&quot; data-to=&quot;osd2&quot; data-dg-edge=&quot;3&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;flow&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:240ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-cyan)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-cyan dg-style-solid dg-edge--flow&quot; d=&quot;M 478.6 212.0 L 478.6 262.0 L 436.0 262.0 L 436.0 288.0&quot; pathLength=&quot;1&quot; data-from=&quot;rgw&quot; data-to=&quot;osd3&quot; data-dg-edge=&quot;4&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;flow&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:320ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-cyan)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-violet dg-style-solid&quot; d=&quot;M 111.2 212.0 L 111.2 244.0 L 255.3 244.0 L 255.3 288.0&quot; pathLength=&quot;1&quot; data-from=&quot;mgr&quot; data-to=&quot;osd2&quot; data-dg-edge=&quot;5&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:400ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-violet)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 108.0 340.0 L 108.0 366.0 L 90.5 366.0 L 90.5 416.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd1&quot; data-to=&quot;disk&quot; data-dg-edge=&quot;6&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:480ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-amber)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 272.0 340.0 L 272.0 378.0 L 122.9 378.0 L 122.9 416.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd2&quot; data-to=&quot;disk&quot; data-dg-edge=&quot;7&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:560ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-amber)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 436.0 340.0 L 436.0 390.0 L 155.4 390.0 L 155.4 416.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd3&quot; data-to=&quot;disk&quot; data-dg-edge=&quot;8&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:640ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-amber)&quot; /&gt;&lt;/g&gt;&lt;g class=&quot;dg-packets&quot; aria-hidden=&quot;true&quot;&gt;&lt;circle class=&quot;dg-packet dg-tone-cyan&quot; data-dg-edge=&quot;2&quot; r=&quot;4.5&quot; cx=&quot;0&quot; cy=&quot;0&quot; opacity=&quot;0&quot;/&gt;&lt;circle class=&quot;dg-packet dg-tone-cyan&quot; data-dg-edge=&quot;3&quot; r=&quot;4.5&quot; cx=&quot;0&quot; cy=&quot;0&quot; opacity=&quot;0&quot;/&gt;&lt;circle class=&quot;dg-packet dg-tone-cyan&quot; data-dg-edge=&quot;4&quot; r=&quot;4.5&quot; cx=&quot;0&quot; cy=&quot;0&quot; opacity=&quot;0&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;dg-nodes&quot;&gt;&lt;g class=&quot;dg-node dg-tone-blue&quot; data-node=&quot;client&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;32.0&quot; width=&quot;196.6&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;32.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,47.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M8 7a4 4 0 1 0 8 0a4 4 0 0 0-8 0M6 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;63.0&quot;&gt;S3 / Swift client&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-cyan&quot; data-node=&quot;rgw&quot; data-group=&quot;&quot; data-dg-lb=&quot;true&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;388.8&quot; y=&quot;160.0&quot; width=&quot;126.4&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;388.8&quot; y=&quot;160.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(404.8,175.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0m.6-3h16.8M3.6 15h16.8&quot;/&gt;&lt;path d=&quot;M11.5 3a17 17 0 0 0 0 18m1-18a17 17 0 0 1 0 18&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;432.8&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;432.8&quot; y=&quot;191.0&quot;&gt;Ceph RGW&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet&quot; data-node=&quot;mgr&quot; data-group=&quot;quorum&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;160.0&quot; width=&quot;126.4&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;160.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,175.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37c1 .608 2.296.07 2.572-1.065&quot;/&gt;&lt;path d=&quot;M9 12a3 3 0 1 0 6 0a3 3 0 0 0-6 0&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;191.0&quot;&gt;Ceph MGR&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet&quot; data-node=&quot;mon&quot; data-group=&quot;quorum&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;218.4&quot; y=&quot;160.0&quot; width=&quot;126.4&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;218.4&quot; y=&quot;160.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(234.4,175.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M3 5a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1zm4 15h10m-8-4v4m6-4v4&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;262.4&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;262.4&quot; y=&quot;191.0&quot;&gt;Ceph MON&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;osd1&quot; data-group=&quot;osds&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;288.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;288.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,303.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M6 4h10l4 4v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2&quot;/&gt;&lt;path d=&quot;M10 14a2 2 0 1 0 4 0a2 2 0 1 0-4 0m4-10v4H8V4&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;319.0&quot;&gt;OSD 1&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;osd2&quot; data-group=&quot;osds&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;212.0&quot; y=&quot;288.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;212.0&quot; y=&quot;288.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(228.0,303.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M6 4h10l4 4v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2&quot;/&gt;&lt;path d=&quot;M10 14a2 2 0 1 0 4 0a2 2 0 1 0-4 0m4-10v4H8V4&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;256.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;256.0&quot; y=&quot;319.0&quot;&gt;OSD 2&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;osd3&quot; data-group=&quot;osds&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;376.0&quot; y=&quot;288.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;376.0&quot; y=&quot;288.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(392.0,303.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M6 4h10l4 4v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2&quot;/&gt;&lt;path d=&quot;M10 14a2 2 0 1 0 4 0a2 2 0 1 0-4 0m4-10v4H8V4&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;420.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;420.0&quot; y=&quot;319.0&quot;&gt;OSD 3&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;disk&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;416.0&quot; width=&quot;149.8&quot; height=&quot;58.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;416.0&quot; width=&quot;3&quot; height=&quot;58.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,434.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M3 6a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2m2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8m-9 4h4&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;441.0&quot;&gt;NVMe / HDD&lt;/tspan&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;459.0&quot;&gt;(BlueStore)&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;dg-edge-labels&quot;&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;0&quot; x=&quot;299.1&quot; y=&quot;115.0&quot; text-anchor=&quot;middle&quot;&gt;S3 / Swift&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;1&quot; x=&quot;366.8&quot; y=&quot;179.0&quot; text-anchor=&quot;middle&quot;&gt;auth / map&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;2&quot; x=&quot;280.7&quot; y=&quot;225.0&quot; text-anchor=&quot;middle&quot;&gt;RADOS&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;5&quot; x=&quot;183.3&quot; y=&quot;237.0&quot; text-anchor=&quot;middle&quot;&gt;telemetry&lt;/text&gt;&lt;/g&gt;&lt;/svg&gt;&lt;div class=&quot;diagram__marquee&quot; data-dg-marquee hidden&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;diagram__hint&quot; data-dg-hint hidden&gt;Right-drag to pan · Scroll to zoom · Drag a node to move&lt;/p&gt;
  &lt;figcaption&gt;Top-to-bottom layout: groups and rank overrides in a real diagram.&lt;/figcaption&gt;
  &lt;p class=&quot;diagram__source&quot;&gt;Source: &lt;a href=&quot;https://github.com/AjiArya/website/blob/main/diagrams/ceph-data-path.yaml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;diagrams/ceph-data-path.yaml&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;h3 id=&quot;architecture-detailed-style&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#architecture-detailed-style&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Architecture detailed style&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;architecture-detailed&lt;/code&gt; style draws physical infrastructure with switch, server, and VM nodes, NIC and switch port grids, port-to-port links, and named bonds. Hover a node to trace its links.&lt;/p&gt;
&lt;figure class=&quot;diagram&quot; data-diagram data-diagram-name=&quot;showcase-arch-detailed&quot; data-dg-source=&quot;@ajiarya&quot;&gt;
  &lt;div class=&quot;diagram__toolbar&quot; data-dg-toolbar role=&quot;toolbar&quot; aria-label=&quot;Diagram controls&quot; hidden&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Animation&quot; data-dg-animation-group&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-animation-control&gt;
        &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-animation aria-label=&quot;Animation: playing&quot; title=&quot;Animation options&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-arch-detailed-animation-panel&quot;&gt;&lt;span class=&quot;diagram__icon&quot; data-dg-animation-icon aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span class=&quot;diagram__button-label&quot; data-dg-animation-label&gt;Pause&lt;/span&gt;&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-animation-panel id=&quot;dg-showcase-arch-detailed-animation-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;play&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;▶&lt;/span&gt;&lt;span&gt;Start&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;pause&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span&gt;Pause&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;disable&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;■&lt;/span&gt;&lt;span&gt;Disable&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-speed-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-speed aria-label=&quot;Animation speed: 1x&quot; title=&quot;Animation speed&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-arch-detailed-speed-panel&quot;&gt;1×&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel&quot; data-dg-speed-panel id=&quot;dg-showcase-arch-detailed-speed-panel&quot;&gt;
          &lt;input class=&quot;diagram__range&quot; type=&quot;range&quot; min=&quot;0&quot; max=&quot;4&quot; step=&quot;1&quot; value=&quot;2&quot; data-dg-speed-range aria-label=&quot;Animation speed&quot;&gt;
          &lt;div class=&quot;diagram__ticks&quot; aria-hidden=&quot;true&quot;&gt;
            &lt;span data-dg-speed-tick&gt;0.25×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;0.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;2×&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover diagram__popover--end&quot; data-dg-direction-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value diagram__button--direction&quot; type=&quot;button&quot; data-dg-direction aria-label=&quot;Animation direction: alternating&quot; title=&quot;Animation direction&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-arch-detailed-direction-panel&quot;&gt;↔&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-direction-panel id=&quot;dg-showcase-arch-detailed-direction-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;forward&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;→&lt;/span&gt;&lt;span&gt;Forward&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;reverse&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;←&lt;/span&gt;&lt;span&gt;Reverse&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;alternate&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;↔&lt;/span&gt;&lt;span&gt;Alternating&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Zoom&quot;&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-out aria-label=&quot;Zoom out&quot; title=&quot;Zoom out&quot;&gt;−&lt;/button&gt;
      &lt;span class=&quot;diagram__zoom-label&quot; data-dg-zoom-label aria-live=&quot;polite&quot;&gt;100%&lt;/span&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-in aria-label=&quot;Zoom in&quot; title=&quot;Zoom in&quot;&gt;+&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-fit aria-label=&quot;Fit diagram to view&quot; title=&quot;Fit diagram&quot;&gt;Fit&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-reset aria-label=&quot;Reset diagram and view&quot; title=&quot;Reset diagram&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-png aria-label=&quot;Copy diagram as PNG&quot; title=&quot;Copy diagram as PNG&quot;&gt;PNG&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;diagram__canvas&quot; data-dg-canvas tabindex=&quot;0&quot; role=&quot;group&quot; aria-label=&quot;Diagram; left-drag to select, right-drag to pan, scroll to zoom, drag a node to move it, pinch to zoom&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 472 436&quot; role=&quot;img&quot; aria-labelledby=&quot;showcase-arch-detailed-title showcase-arch-detailed-desc&quot; class=&quot;dg-svg&quot; data-dg-draw-ms=&quot;1200&quot; data-dg-flow-ms=&quot;2600&quot; data-dg-stagger-ms=&quot;80&quot; data-dg-direction=&quot;alternate&quot; data-dg-autoplay=&quot;true&quot; data-dg-static=&quot;true&quot; data-dg-no-drag=&quot;false&quot; data-dg-fit-mobile=&quot;true&quot; style=&quot;--dg-draw-duration:1200ms;--dg-flow-duration:2600ms;--dg-pulse-duration:2000ms&quot;&gt;&lt;title id=&quot;showcase-arch-detailed-title&quot;&gt;Physical view with ports and bonds&lt;/title&gt;&lt;desc id=&quot;showcase-arch-detailed-desc&quot;&gt;A server and a virtual machine, each with two NICs, connected port to port to a pair of switches through named bonds.&lt;/desc&gt;&lt;g class=&quot;dg-edges&quot;&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 103.2 343.5 L 103.2 148.9 L 72.6 148.9 L 72.6 91.0&quot; pathLength=&quot;1&quot; data-from=&quot;server&quot; data-to=&quot;sw1&quot; data-dg-edge=&quot;0&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 117.2 343.5 L 117.2 253.2 L 300.8 253.2 L 300.8 91.0&quot; pathLength=&quot;1&quot; data-from=&quot;server&quot; data-to=&quot;sw2&quot; data-dg-edge=&quot;1&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 157.2 343.5 L 157.2 151.9 L 81.6 151.9 L 81.6 91.0&quot; pathLength=&quot;1&quot; data-from=&quot;server&quot; data-to=&quot;sw1&quot; data-dg-edge=&quot;2&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 171.2 343.5 L 171.2 256.2 L 309.8 256.2 L 309.8 91.0&quot; pathLength=&quot;1&quot; data-from=&quot;server&quot; data-to=&quot;sw2&quot; data-dg-edge=&quot;3&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-neutral dg-style-solid&quot; d=&quot;M 328.2 343.5 L 328.2 179.8 L 90.6 179.8 L 90.6 91.0&quot; pathLength=&quot;1&quot; data-from=&quot;vm&quot; data-to=&quot;sw1&quot; data-dg-edge=&quot;4&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-neutral dg-style-solid&quot; d=&quot;M 342.2 343.5 L 342.2 284.1 L 318.8 284.1 L 318.8 91.0&quot; pathLength=&quot;1&quot; data-from=&quot;vm&quot; data-to=&quot;sw2&quot; data-dg-edge=&quot;5&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;/g&gt;&lt;g class=&quot;dg-bonds&quot;&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-blue&quot; data-node=&quot;server&quot; data-dg-bond=&quot;bond0&quot; cx=&quot;86.2&quot; cy=&quot;421.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-blue&quot; data-node=&quot;server&quot; data-dg-bond=&quot;bond0&quot; x=&quot;86.2&quot; y=&quot;421.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond0&lt;/text&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-amber&quot; data-node=&quot;server&quot; data-dg-bond=&quot;bond1&quot; cx=&quot;188.2&quot; cy=&quot;421.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-amber&quot; data-node=&quot;server&quot; data-dg-bond=&quot;bond1&quot; x=&quot;188.2&quot; y=&quot;421.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond1&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-nodes&quot;&gt;&lt;g class=&quot;dg-node dg-tone-neutral dg-node--switch&quot; data-node=&quot;sw1&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot; data-dg-kind=&quot;switch&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;32.0&quot; y=&quot;32.0&quot; width=&quot;180.2&quot; height=&quot;73.5&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;32.0&quot; y=&quot;32.0&quot; width=&quot;3&quot; height=&quot;73.5&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(42.0,44.0) scale(0.7)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 19a2 2 0 1 0-4 0a2 2 0 0 0 4 0m8-14a2 2 0 1 0-4 0a2 2 0 0 0 4 0m-8 0a2 2 0 1 0-4 0a2 2 0 0 0 4 0m-4 7a2 2 0 1 0-4 0a2 2 0 0 0 4 0m12 7a2 2 0 1 0-4 0a2 2 0 0 0 4 0m-4-7a2 2 0 1 0-4 0a2 2 0 0 0 4 0m8 0a2 2 0 1 0-4 0a2 2 0 0 0 4 0M6 12h4m4 0h4m-3-5l-2 3M9 7l2 3m0 4l-2 3m4-3l2 3&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;arch-node-title&quot; x=&quot;66.0&quot; y=&quot;58.0&quot;&gt;switch-01&lt;/text&gt;&lt;text class=&quot;arch-node-meta&quot; x=&quot;202.2&quot; y=&quot;58.0&quot; text-anchor=&quot;end&quot;&gt;24 ports&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;68.8&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;72.6&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;77.8&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;81.6&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral is-used&quot; x=&quot;86.8&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;90.6&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;3&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;95.8&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;99.6&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;4&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;104.8&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;108.6&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;5&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;113.8&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;117.6&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;6&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;122.8&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;126.6&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;7&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;131.8&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;135.6&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;8&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;140.8&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;144.6&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;9&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;149.8&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;153.6&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;10&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;158.8&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;162.6&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;11&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;167.8&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;171.6&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;12&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;68.8&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;72.6&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;13&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;77.8&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;81.6&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;14&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;86.8&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;90.6&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;15&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;95.8&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;99.6&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;16&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;104.8&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;108.6&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;17&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;113.8&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;117.6&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;18&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;122.8&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;126.6&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;19&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;131.8&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;135.6&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;20&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;140.8&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;144.6&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;21&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;149.8&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;153.6&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;22&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;158.8&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;162.6&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;23&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;167.8&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;171.6&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;24&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral dg-node--switch&quot; data-node=&quot;sw2&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot; data-dg-kind=&quot;switch&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;260.2&quot; y=&quot;32.0&quot; width=&quot;180.2&quot; height=&quot;73.5&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;260.2&quot; y=&quot;32.0&quot; width=&quot;3&quot; height=&quot;73.5&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(270.2,44.0) scale(0.7)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 19a2 2 0 1 0-4 0a2 2 0 0 0 4 0m8-14a2 2 0 1 0-4 0a2 2 0 0 0 4 0m-8 0a2 2 0 1 0-4 0a2 2 0 0 0 4 0m-4 7a2 2 0 1 0-4 0a2 2 0 0 0 4 0m12 7a2 2 0 1 0-4 0a2 2 0 0 0 4 0m-4-7a2 2 0 1 0-4 0a2 2 0 0 0 4 0m8 0a2 2 0 1 0-4 0a2 2 0 0 0 4 0M6 12h4m4 0h4m-3-5l-2 3M9 7l2 3m0 4l-2 3m4-3l2 3&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;arch-node-title&quot; x=&quot;294.2&quot; y=&quot;58.0&quot;&gt;switch-02&lt;/text&gt;&lt;text class=&quot;arch-node-meta&quot; x=&quot;430.4&quot; y=&quot;58.0&quot; text-anchor=&quot;end&quot;&gt;24 ports&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;297.0&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;300.8&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;306.0&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;309.8&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral is-used&quot; x=&quot;315.0&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;318.8&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;3&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;324.0&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;327.8&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;4&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;333.0&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;336.8&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;5&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;342.0&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;345.8&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;6&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;351.0&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;354.8&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;7&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;360.0&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;363.8&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;8&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;369.0&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;372.8&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;9&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;378.0&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;381.8&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;10&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;387.0&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;390.8&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;11&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;396.0&quot; y=&quot;86.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;399.8&quot; y=&quot;93.0&quot; text-anchor=&quot;middle&quot;&gt;12&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;297.0&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;300.8&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;13&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;306.0&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;309.8&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;14&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;315.0&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;318.8&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;15&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;324.0&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;327.8&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;16&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;333.0&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;336.8&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;17&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;342.0&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;345.8&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;18&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;351.0&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;354.8&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;19&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;360.0&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;363.8&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;20&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;369.0&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;372.8&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;21&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;378.0&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;381.8&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;22&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;387.0&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;390.8&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;23&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-neutral &quot; x=&quot;396.0&quot; y=&quot;76.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;399.8&quot; y=&quot;82.5&quot; text-anchor=&quot;middle&quot;&gt;24&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral dg-node--server&quot; data-node=&quot;server&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot; data-dg-kind=&quot;server&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;62.2&quot; y=&quot;325.5&quot; width=&quot;150.0&quot; height=&quot;78.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;62.2&quot; y=&quot;325.5&quot; width=&quot;3&quot; height=&quot;78.0&quot; rx=&quot;1.5&quot;/&gt;&lt;rect class=&quot;arch-nic dg-tone-blue&quot; x=&quot;87.2&quot; y=&quot;335.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;110.2&quot; y=&quot;360.0&quot; text-anchor=&quot;middle&quot;&gt;nic1&lt;/text&gt;&lt;rect class=&quot;arch-nic dg-tone-amber&quot; x=&quot;141.2&quot; y=&quot;335.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;164.2&quot; y=&quot;360.0&quot; text-anchor=&quot;middle&quot;&gt;nic2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;98.2&quot; y=&quot;337.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;103.2&quot; y=&quot;345.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;112.2&quot; y=&quot;337.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;117.2&quot; y=&quot;345.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;152.2&quot; y=&quot;337.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;157.2&quot; y=&quot;345.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;166.2&quot; y=&quot;337.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;171.2&quot; y=&quot;345.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(78.2,372.5) scale(0.7)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M3 7a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v2a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3zm0 8a3 3 0 0 1 3-3h12a3 3 0 0 1 3 3v2a3 3 0 0 1-3 3H6a3 3 0 0 1-3-3zm4-7v.01M7 16v.01&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;arch-node-title&quot; x=&quot;104.2&quot; y=&quot;381.5&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;104.2&quot; y=&quot;381.5&quot;&gt;server-01&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral dg-node--vm&quot; data-node=&quot;vm&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot; data-dg-kind=&quot;vm&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;260.2&quot; y=&quot;325.5&quot; width=&quot;150.0&quot; height=&quot;78.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;260.2&quot; y=&quot;325.5&quot; width=&quot;3&quot; height=&quot;78.0&quot; rx=&quot;1.5&quot;/&gt;&lt;rect class=&quot;arch-nic dg-tone-green&quot; x=&quot;312.2&quot; y=&quot;335.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;335.2&quot; y=&quot;360.0&quot; text-anchor=&quot;middle&quot;&gt;nic1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-green is-used&quot; x=&quot;323.2&quot; y=&quot;337.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;328.2&quot; y=&quot;345.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-green is-used&quot; x=&quot;337.2&quot; y=&quot;337.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;342.2&quot; y=&quot;345.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(276.2,372.5) scale(0.7)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M3 5a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1zm4 15h10m-8-4v4m6-4v4m-6-8V8m3 4v-1m3 1v-2m-3 2v-1&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;arch-node-title&quot; x=&quot;302.2&quot; y=&quot;381.5&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;302.2&quot; y=&quot;381.5&quot;&gt;vm-01&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;div class=&quot;diagram__marquee&quot; data-dg-marquee hidden&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;diagram__hint&quot; data-dg-hint hidden&gt;Right-drag to pan · Scroll to zoom · Drag a node to move&lt;/p&gt;
  &lt;figcaption&gt;Architecture detailed: two switches, a server with two bonds, and a VM, linked port to port.&lt;/figcaption&gt;
  &lt;p class=&quot;diagram__source&quot;&gt;Source: &lt;a href=&quot;https://github.com/AjiArya/website/blob/main/diagrams/showcase-arch-detailed.yaml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;diagrams/showcase-arch-detailed.yaml&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;h3 id=&quot;architecture-simple-style&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#architecture-simple-style&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Architecture simple style&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;architecture-simple&lt;/code&gt; style draws logical network membership. Networks are rails and nodes attach to them. Hover a legend entry to highlight its network.&lt;/p&gt;
&lt;figure class=&quot;diagram&quot; data-diagram data-diagram-name=&quot;showcase-arch-simple&quot; data-dg-source=&quot;@ajiarya&quot;&gt;
  &lt;div class=&quot;diagram__toolbar&quot; data-dg-toolbar role=&quot;toolbar&quot; aria-label=&quot;Diagram controls&quot; hidden&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Animation&quot; data-dg-animation-group&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-animation-control&gt;
        &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-animation aria-label=&quot;Animation: playing&quot; title=&quot;Animation options&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-arch-simple-animation-panel&quot;&gt;&lt;span class=&quot;diagram__icon&quot; data-dg-animation-icon aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span class=&quot;diagram__button-label&quot; data-dg-animation-label&gt;Pause&lt;/span&gt;&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-animation-panel id=&quot;dg-showcase-arch-simple-animation-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;play&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;▶&lt;/span&gt;&lt;span&gt;Start&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;pause&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span&gt;Pause&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;disable&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;■&lt;/span&gt;&lt;span&gt;Disable&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-speed-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-speed aria-label=&quot;Animation speed: 1x&quot; title=&quot;Animation speed&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-arch-simple-speed-panel&quot;&gt;1×&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel&quot; data-dg-speed-panel id=&quot;dg-showcase-arch-simple-speed-panel&quot;&gt;
          &lt;input class=&quot;diagram__range&quot; type=&quot;range&quot; min=&quot;0&quot; max=&quot;4&quot; step=&quot;1&quot; value=&quot;2&quot; data-dg-speed-range aria-label=&quot;Animation speed&quot;&gt;
          &lt;div class=&quot;diagram__ticks&quot; aria-hidden=&quot;true&quot;&gt;
            &lt;span data-dg-speed-tick&gt;0.25×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;0.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;2×&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover diagram__popover--end&quot; data-dg-direction-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value diagram__button--direction&quot; type=&quot;button&quot; data-dg-direction aria-label=&quot;Animation direction: alternating&quot; title=&quot;Animation direction&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-showcase-arch-simple-direction-panel&quot;&gt;↔&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-direction-panel id=&quot;dg-showcase-arch-simple-direction-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;forward&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;→&lt;/span&gt;&lt;span&gt;Forward&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;reverse&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;←&lt;/span&gt;&lt;span&gt;Reverse&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;alternate&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;↔&lt;/span&gt;&lt;span&gt;Alternating&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Zoom&quot;&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-out aria-label=&quot;Zoom out&quot; title=&quot;Zoom out&quot;&gt;−&lt;/button&gt;
      &lt;span class=&quot;diagram__zoom-label&quot; data-dg-zoom-label aria-live=&quot;polite&quot;&gt;100%&lt;/span&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-in aria-label=&quot;Zoom in&quot; title=&quot;Zoom in&quot;&gt;+&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-fit aria-label=&quot;Fit diagram to view&quot; title=&quot;Fit diagram&quot;&gt;Fit&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-reset aria-label=&quot;Reset diagram and view&quot; title=&quot;Reset diagram&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-png aria-label=&quot;Copy diagram as PNG&quot; title=&quot;Copy diagram as PNG&quot;&gt;PNG&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;diagram__canvas&quot; data-dg-canvas tabindex=&quot;0&quot; role=&quot;group&quot; aria-label=&quot;Diagram; left-drag to select, right-drag to pan, scroll to zoom, drag a node to move it, pinch to zoom&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 752 318&quot; role=&quot;img&quot; aria-labelledby=&quot;showcase-arch-simple-title showcase-arch-simple-desc&quot; class=&quot;dg-svg&quot; data-dg-draw-ms=&quot;1200&quot; data-dg-flow-ms=&quot;2600&quot; data-dg-stagger-ms=&quot;80&quot; data-dg-direction=&quot;alternate&quot; data-dg-autoplay=&quot;true&quot; data-dg-static=&quot;true&quot; data-dg-no-drag=&quot;true&quot; data-dg-fit-mobile=&quot;true&quot; style=&quot;--dg-draw-duration:1200ms;--dg-flow-duration:2600ms;--dg-pulse-duration:2000ms&quot;&gt;&lt;title id=&quot;showcase-arch-simple-title&quot;&gt;Logical view with network rails&lt;/title&gt;&lt;desc id=&quot;showcase-arch-simple-desc&quot;&gt;Clients, servers and a virtual machine attached to three logical networks drawn as rails.&lt;/desc&gt;&lt;g class=&quot;dg-network-legend&quot;&gt;&lt;g class=&quot;network-legend-item&quot; data-dg-network=&quot;public&quot;&gt;&lt;rect class=&quot;network-legend-hit&quot; x=&quot;28.0&quot; y=&quot;32.0&quot; width=&quot;126.0&quot; height=&quot;16&quot;/&gt;&lt;line class=&quot;network-legend-swatch dg-tone-blue&quot; x1=&quot;32.0&quot; y1=&quot;42.0&quot; x2=&quot;50.0&quot; y2=&quot;42.0&quot;/&gt;&lt;text class=&quot;network-legend-label dg-tone-blue&quot; x=&quot;58.0&quot; y=&quot;45.0&quot;&gt;Public network&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;network-legend-item&quot; data-dg-network=&quot;internal&quot;&gt;&lt;rect class=&quot;network-legend-hit&quot; x=&quot;28.0&quot; y=&quot;48.0&quot; width=&quot;138.0&quot; height=&quot;16&quot;/&gt;&lt;line class=&quot;network-legend-swatch dg-tone-amber&quot; x1=&quot;32.0&quot; y1=&quot;58.0&quot; x2=&quot;50.0&quot; y2=&quot;58.0&quot;/&gt;&lt;text class=&quot;network-legend-label dg-tone-amber&quot; x=&quot;58.0&quot; y=&quot;61.0&quot;&gt;Internal network&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;network-legend-item&quot; data-dg-network=&quot;storage&quot;&gt;&lt;rect class=&quot;network-legend-hit&quot; x=&quot;28.0&quot; y=&quot;64.0&quot; width=&quot;132.0&quot; height=&quot;16&quot;/&gt;&lt;line class=&quot;network-legend-swatch dg-tone-green&quot; x1=&quot;32.0&quot; y1=&quot;74.0&quot; x2=&quot;50.0&quot; y2=&quot;74.0&quot;/&gt;&lt;text class=&quot;network-legend-label dg-tone-green&quot; x=&quot;58.0&quot; y=&quot;77.0&quot;&gt;Storage network&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;dg-networks&quot;&gt;&lt;line class=&quot;network-rail dg-tone-blue&quot; data-dg-network=&quot;public&quot; x1=&quot;92.0&quot; y1=&quot;102.0&quot; x2=&quot;234.0&quot; y2=&quot;102.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-blue&quot; data-dg-network=&quot;public&quot; x1=&quot;92.0&quot; y1=&quot;180.0&quot; x2=&quot;92.0&quot; y2=&quot;102.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-blue&quot; data-dg-network=&quot;public&quot; x1=&quot;234.0&quot; y1=&quot;180.0&quot; x2=&quot;234.0&quot; y2=&quot;102.0&quot;/&gt;&lt;line class=&quot;network-rail dg-tone-amber&quot; data-dg-network=&quot;internal&quot; x1=&quot;234.0&quot; y1=&quot;262.0&quot; x2=&quot;518.0&quot; y2=&quot;262.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-amber&quot; data-dg-network=&quot;internal&quot; x1=&quot;234.0&quot; y1=&quot;232.0&quot; x2=&quot;234.0&quot; y2=&quot;262.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-amber&quot; data-dg-network=&quot;internal&quot; x1=&quot;376.0&quot; y1=&quot;232.0&quot; x2=&quot;376.0&quot; y2=&quot;262.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-amber&quot; data-dg-network=&quot;internal&quot; x1=&quot;518.0&quot; y1=&quot;232.0&quot; x2=&quot;518.0&quot; y2=&quot;262.0&quot;/&gt;&lt;line class=&quot;network-rail dg-tone-green&quot; data-dg-network=&quot;storage&quot; x1=&quot;376.0&quot; y1=&quot;126.0&quot; x2=&quot;660.0&quot; y2=&quot;126.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-green&quot; data-dg-network=&quot;storage&quot; x1=&quot;376.0&quot; y1=&quot;180.0&quot; x2=&quot;376.0&quot; y2=&quot;126.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-green&quot; data-dg-network=&quot;storage&quot; x1=&quot;660.0&quot; y1=&quot;180.0&quot; x2=&quot;660.0&quot; y2=&quot;126.0&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;dg-edges&quot;&gt;&lt;/g&gt;&lt;g class=&quot;dg-nodes&quot;&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;client&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;32.0&quot; y=&quot;180.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;32.0&quot; y=&quot;180.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;211.0&quot;&gt;Clients&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;web&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;174.0&quot; y=&quot;180.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;174.0&quot; y=&quot;180.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;234.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;234.0&quot; y=&quot;211.0&quot;&gt;web-01&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;app&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;316.0&quot; y=&quot;180.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;316.0&quot; y=&quot;180.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;376.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;376.0&quot; y=&quot;211.0&quot;&gt;app-01&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;vm&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;458.0&quot; y=&quot;180.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;458.0&quot; y=&quot;180.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;518.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;518.0&quot; y=&quot;211.0&quot;&gt;vm-01&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;db&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;600.0&quot; y=&quot;180.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;600.0&quot; y=&quot;180.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;660.0&quot; text-anchor=&quot;middle&quot;&gt;&lt;tspan x=&quot;660.0&quot; y=&quot;211.0&quot;&gt;db-01&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;div class=&quot;diagram__marquee&quot; data-dg-marquee hidden&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;diagram__hint&quot; data-dg-hint hidden&gt;Right-drag to pan · Scroll to zoom · Drag a node to move&lt;/p&gt;
  &lt;figcaption&gt;Architecture simple: three logical networks as rails, with no ports or physical links.&lt;/figcaption&gt;
  &lt;p class=&quot;diagram__source&quot;&gt;Source: &lt;a href=&quot;https://github.com/AjiArya/website/blob/main/diagrams/showcase-arch-simple.yaml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;diagrams/showcase-arch-simple.yaml&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Footnotes collect at the end of the post, with a link back to the reference. &lt;a href=&quot;https://ajiarya.id/blog/everything-a-post-can-render/#fr-1-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn-named&quot;&gt;
&lt;p&gt;The label in the source does not appear in the output. The site numbers footnotes in order. &lt;a href=&quot;https://ajiarya.id/blog/everything-a-post-can-render/#fr-named-1&quot;&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>A Ceph storage fabric with dual-leaf redundancy</title>
        <published>2026-10-28T00:00:00+00:00</published>
        <updated>2026-10-28T00:00:00+00:00</updated>
        
        <author>
          <name>Aji Arya</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://ajiarya.id/blog/ceph-storage-fabric/"/>
        <id>https://ajiarya.id/blog/ceph-storage-fabric/</id>
        
        <content type="html" xml:base="https://ajiarya.id/blog/ceph-storage-fabric/">&lt;p&gt;A Ceph cluster is only as reliable as the fabric underneath it. The monitor quorum needs low, predictable latency, and the OSDs need enough independent paths that losing a NIC, a cable, or a leaf switch does not turn into a storage outage.&lt;/p&gt;
&lt;p&gt;The logical view is deliberately simpler: it shows which hosts participate in the Ceph public network and which participate in the cluster network. Monitors stay on the public network; OSDs use both.&lt;/p&gt;
&lt;figure class=&quot;diagram&quot; data-diagram data-diagram-name=&quot;ceph-storage-fabric-simple&quot; data-dg-source=&quot;@ajiarya&quot;&gt;
  &lt;div class=&quot;diagram__toolbar&quot; data-dg-toolbar role=&quot;toolbar&quot; aria-label=&quot;Diagram controls&quot; hidden&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Animation&quot; data-dg-animation-group&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-animation-control&gt;
        &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-animation aria-label=&quot;Animation: playing&quot; title=&quot;Animation options&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-ceph-storage-fabric-simple-animation-panel&quot;&gt;&lt;span class=&quot;diagram__icon&quot; data-dg-animation-icon aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span class=&quot;diagram__button-label&quot; data-dg-animation-label&gt;Pause&lt;/span&gt;&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-animation-panel id=&quot;dg-ceph-storage-fabric-simple-animation-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;play&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;▶&lt;/span&gt;&lt;span&gt;Start&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;pause&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span&gt;Pause&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;disable&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;■&lt;/span&gt;&lt;span&gt;Disable&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-speed-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-speed aria-label=&quot;Animation speed: 1x&quot; title=&quot;Animation speed&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-ceph-storage-fabric-simple-speed-panel&quot;&gt;1×&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel&quot; data-dg-speed-panel id=&quot;dg-ceph-storage-fabric-simple-speed-panel&quot;&gt;
          &lt;input class=&quot;diagram__range&quot; type=&quot;range&quot; min=&quot;0&quot; max=&quot;4&quot; step=&quot;1&quot; value=&quot;2&quot; data-dg-speed-range aria-label=&quot;Animation speed&quot;&gt;
          &lt;div class=&quot;diagram__ticks&quot; aria-hidden=&quot;true&quot;&gt;
            &lt;span data-dg-speed-tick&gt;0.25×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;0.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;2×&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover diagram__popover--end&quot; data-dg-direction-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value diagram__button--direction&quot; type=&quot;button&quot; data-dg-direction aria-label=&quot;Animation direction: alternating&quot; title=&quot;Animation direction&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-ceph-storage-fabric-simple-direction-panel&quot;&gt;↔&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-direction-panel id=&quot;dg-ceph-storage-fabric-simple-direction-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;forward&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;→&lt;/span&gt;&lt;span&gt;Forward&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;reverse&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;←&lt;/span&gt;&lt;span&gt;Reverse&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;alternate&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;↔&lt;/span&gt;&lt;span&gt;Alternating&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Zoom&quot;&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-out aria-label=&quot;Zoom out&quot; title=&quot;Zoom out&quot;&gt;−&lt;/button&gt;
      &lt;span class=&quot;diagram__zoom-label&quot; data-dg-zoom-label aria-live=&quot;polite&quot;&gt;100%&lt;/span&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-in aria-label=&quot;Zoom in&quot; title=&quot;Zoom in&quot;&gt;+&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-fit aria-label=&quot;Fit diagram to view&quot; title=&quot;Fit diagram&quot;&gt;Fit&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-reset aria-label=&quot;Reset diagram and view&quot; title=&quot;Reset diagram&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-png aria-label=&quot;Copy diagram as PNG&quot; title=&quot;Copy diagram as PNG&quot;&gt;PNG&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;diagram__canvas&quot; data-dg-canvas tabindex=&quot;0&quot; role=&quot;group&quot; aria-label=&quot;Diagram; left-drag to select, right-drag to pan, scroll to zoom, drag a node to move it, pinch to zoom&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 1231 294&quot; role=&quot;img&quot; aria-labelledby=&quot;ceph-storage-fabric-simple-title ceph-storage-fabric-simple-desc&quot; class=&quot;dg-svg&quot; data-dg-draw-ms=&quot;1200&quot; data-dg-flow-ms=&quot;2600&quot; data-dg-stagger-ms=&quot;0&quot; data-dg-direction=&quot;alternate&quot; data-dg-autoplay=&quot;false&quot; data-dg-static=&quot;true&quot; data-dg-no-drag=&quot;true&quot; data-dg-fit-mobile=&quot;true&quot; style=&quot;--dg-draw-duration:1200ms;--dg-flow-duration:2600ms;--dg-pulse-duration:2000ms&quot;&gt;&lt;title id=&quot;ceph-storage-fabric-simple-title&quot;&gt;Ceph logical networks&lt;/title&gt;&lt;desc id=&quot;ceph-storage-fabric-simple-desc&quot;&gt;The Ceph public network connects clients, monitors, and OSDs; the cluster network carries monitor and OSD replication traffic.&lt;/desc&gt;&lt;g class=&quot;dg-network-legend&quot;&gt;&lt;g class=&quot;network-legend-item&quot; data-dg-network=&quot;public&quot;&gt;&lt;rect class=&quot;network-legend-hit&quot; x=&quot;36.0&quot; y=&quot;40.0&quot; width=&quot;126.0&quot; height=&quot;16&quot;/&gt;&lt;line class=&quot;network-legend-swatch dg-tone-blue&quot; x1=&quot;40.0&quot; y1=&quot;50.0&quot; x2=&quot;58.0&quot; y2=&quot;50.0&quot;/&gt;&lt;text class=&quot;network-legend-label dg-tone-blue&quot; x=&quot;66.0&quot; y=&quot;53.0&quot;&gt;Public network&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;network-legend-item&quot; data-dg-network=&quot;cluster&quot;&gt;&lt;rect class=&quot;network-legend-hit&quot; x=&quot;36.0&quot; y=&quot;56.0&quot; width=&quot;132.0&quot; height=&quot;16&quot;/&gt;&lt;line class=&quot;network-legend-swatch dg-tone-amber&quot; x1=&quot;40.0&quot; y1=&quot;66.0&quot; x2=&quot;58.0&quot; y2=&quot;66.0&quot;/&gt;&lt;text class=&quot;network-legend-label dg-tone-amber&quot; x=&quot;66.0&quot; y=&quot;69.0&quot;&gt;Cluster network&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;dg-networks&quot;&gt;&lt;line class=&quot;network-rail dg-tone-blue&quot; data-dg-network=&quot;public&quot; x1=&quot;100.0&quot; y1=&quot;94.0&quot; x2=&quot;1115.9&quot; y2=&quot;94.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-blue&quot; data-dg-network=&quot;public&quot; x1=&quot;100.0&quot; y1=&quot;148.0&quot; x2=&quot;100.0&quot; y2=&quot;94.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-blue&quot; data-dg-network=&quot;public&quot; x1=&quot;256.9&quot; y1=&quot;148.0&quot; x2=&quot;256.9&quot; y2=&quot;94.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-blue&quot; data-dg-network=&quot;public&quot; x1=&quot;428.7&quot; y1=&quot;148.0&quot; x2=&quot;428.7&quot; y2=&quot;94.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-blue&quot; data-dg-network=&quot;public&quot; x1=&quot;600.5&quot; y1=&quot;148.0&quot; x2=&quot;600.5&quot; y2=&quot;94.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-blue&quot; data-dg-network=&quot;public&quot; x1=&quot;772.3&quot; y1=&quot;148.0&quot; x2=&quot;772.3&quot; y2=&quot;94.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-blue&quot; data-dg-network=&quot;public&quot; x1=&quot;944.1&quot; y1=&quot;148.0&quot; x2=&quot;944.1&quot; y2=&quot;94.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-blue&quot; data-dg-network=&quot;public&quot; x1=&quot;1115.9&quot; y1=&quot;148.0&quot; x2=&quot;1115.9&quot; y2=&quot;94.0&quot;/&gt;&lt;line class=&quot;network-rail dg-tone-amber&quot; data-dg-network=&quot;cluster&quot; x1=&quot;772.3&quot; y1=&quot;230.0&quot; x2=&quot;1115.9&quot; y2=&quot;230.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-amber&quot; data-dg-network=&quot;cluster&quot; x1=&quot;772.3&quot; y1=&quot;200.0&quot; x2=&quot;772.3&quot; y2=&quot;230.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-amber&quot; data-dg-network=&quot;cluster&quot; x1=&quot;944.1&quot; y1=&quot;200.0&quot; x2=&quot;944.1&quot; y2=&quot;230.0&quot;/&gt;&lt;line class=&quot;network-stub dg-tone-amber&quot; data-dg-network=&quot;cluster&quot; x1=&quot;1115.9&quot; y1=&quot;200.0&quot; x2=&quot;1115.9&quot; y2=&quot;230.0&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;dg-edges&quot;&gt;&lt;/g&gt;&lt;g class=&quot;dg-nodes&quot;&gt;&lt;g class=&quot;dg-node dg-tone-blue&quot; data-node=&quot;client&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;40.0&quot; y=&quot;148.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;40.0&quot; y=&quot;148.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(56.0,163.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M8 7a4 4 0 1 0 8 0a4 4 0 0 0-8 0M6 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;84.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;84.0&quot; y=&quot;179.0&quot;&gt;Clients&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet&quot; data-node=&quot;mon1&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;182.0&quot; y=&quot;148.0&quot; width=&quot;149.8&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;182.0&quot; y=&quot;148.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(198.0,163.0) scale(0.8333)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M11.959.257A11.9 11.9 0 0 0 3.503 3.76A11.92 11.92 0 0 0 0 12.217a11.9 11.9 0 0 0 1.207 5.243c.72 1.474 1.888 2.944 3.208 4.044c.86-.47 1.35-.99 1.453-1.545c.1-.533-.134-1.107-.737-1.805a9.03 9.03 0 0 1-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 0 1-2.218 5.936c-.599.693-.84 1.292-.735 1.83c.108.556.595 1.068 1.449 1.522c1.322-1.1 2.489-2.57 3.209-4.046A11.9 11.9 0 0 0 24 12.217a11.93 11.93 0 0 0-3.503-8.457A11.92 11.92 0 0 0 12.04.257h-.041zm-.005 4.837a7.07 7.07 0 0 0-3.76 1.075A7.2 7.2 0 0 0 6.15 8.093a7.2 7.2 0 0 0-1.161 2.65a7.2 7.2 0 0 0 .04 3.125a7.1 7.1 0 0 0 1.22 2.607c.154.207.326.396.509.597l.185.202l.005.006q.012.01.026.027c.635.738.957 1.533.957 2.36a3.4 3.4 0 0 1-1.788 2.989a12 12 0 0 0 2.685 1.087c.14-.088.614-.441 1.077-1.083a4.9 4.9 0 0 0 .94-2.99a6.6 6.6 0 0 0-.49-2.37a6.7 6.7 0 0 0-1.302-2.033l-.002-.004l-.124-.142c-.21-.245-.428-.497-.602-.792a4.1 4.1 0 0 1-.462-1.135a4.3 4.3 0 0 1-.024-1.85a4.25 4.25 0 0 1 .686-1.564a4.22 4.22 0 0 1 3.432-1.773h.085a4.2 4.2 0 0 1 3.432 1.773c.33.466.568 1.007.686 1.565a4.3 4.3 0 0 1-.023 1.849a4.1 4.1 0 0 1-.463 1.135c-.173.295-.391.547-.602.792l-.123.142l-.004.004a6.7 6.7 0 0 0-1.301 2.033a6.6 6.6 0 0 0-.49 2.37a4.9 4.9 0 0 0 .94 2.99c.463.642.937.995 1.076 1.083a11.8 11.8 0 0 0 2.687-1.087a3.4 3.4 0 0 1-1.789-2.988c0-.817.313-1.59.956-2.359l.027-.03l.006-.004l.184-.204c.183-.2.355-.39.51-.596a7.1 7.1 0 0 0 1.22-2.608a7.2 7.2 0 0 0 .04-3.124a7.2 7.2 0 0 0-1.16-2.65a7.2 7.2 0 0 0-2.044-1.924a7.07 7.07 0 0 0-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 0 0-2.362 2.361A2.364 2.364 0 0 0 12 14.691a2.363 2.363 0 0 0 2.36-2.36A2.364 2.364 0 0 0 12 9.968z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;226.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;226.0&quot; y=&quot;179.0&quot;&gt;ceph-mon-01&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet&quot; data-node=&quot;mon2&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;353.8&quot; y=&quot;148.0&quot; width=&quot;149.8&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;353.8&quot; y=&quot;148.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(369.8,163.0) scale(0.8333)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M11.959.257A11.9 11.9 0 0 0 3.503 3.76A11.92 11.92 0 0 0 0 12.217a11.9 11.9 0 0 0 1.207 5.243c.72 1.474 1.888 2.944 3.208 4.044c.86-.47 1.35-.99 1.453-1.545c.1-.533-.134-1.107-.737-1.805a9.03 9.03 0 0 1-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 0 1-2.218 5.936c-.599.693-.84 1.292-.735 1.83c.108.556.595 1.068 1.449 1.522c1.322-1.1 2.489-2.57 3.209-4.046A11.9 11.9 0 0 0 24 12.217a11.93 11.93 0 0 0-3.503-8.457A11.92 11.92 0 0 0 12.04.257h-.041zm-.005 4.837a7.07 7.07 0 0 0-3.76 1.075A7.2 7.2 0 0 0 6.15 8.093a7.2 7.2 0 0 0-1.161 2.65a7.2 7.2 0 0 0 .04 3.125a7.1 7.1 0 0 0 1.22 2.607c.154.207.326.396.509.597l.185.202l.005.006q.012.01.026.027c.635.738.957 1.533.957 2.36a3.4 3.4 0 0 1-1.788 2.989a12 12 0 0 0 2.685 1.087c.14-.088.614-.441 1.077-1.083a4.9 4.9 0 0 0 .94-2.99a6.6 6.6 0 0 0-.49-2.37a6.7 6.7 0 0 0-1.302-2.033l-.002-.004l-.124-.142c-.21-.245-.428-.497-.602-.792a4.1 4.1 0 0 1-.462-1.135a4.3 4.3 0 0 1-.024-1.85a4.25 4.25 0 0 1 .686-1.564a4.22 4.22 0 0 1 3.432-1.773h.085a4.2 4.2 0 0 1 3.432 1.773c.33.466.568 1.007.686 1.565a4.3 4.3 0 0 1-.023 1.849a4.1 4.1 0 0 1-.463 1.135c-.173.295-.391.547-.602.792l-.123.142l-.004.004a6.7 6.7 0 0 0-1.301 2.033a6.6 6.6 0 0 0-.49 2.37a4.9 4.9 0 0 0 .94 2.99c.463.642.937.995 1.076 1.083a11.8 11.8 0 0 0 2.687-1.087a3.4 3.4 0 0 1-1.789-2.988c0-.817.313-1.59.956-2.359l.027-.03l.006-.004l.184-.204c.183-.2.355-.39.51-.596a7.1 7.1 0 0 0 1.22-2.608a7.2 7.2 0 0 0 .04-3.124a7.2 7.2 0 0 0-1.16-2.65a7.2 7.2 0 0 0-2.044-1.924a7.07 7.07 0 0 0-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 0 0-2.362 2.361A2.364 2.364 0 0 0 12 14.691a2.363 2.363 0 0 0 2.36-2.36A2.364 2.364 0 0 0 12 9.968z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;397.8&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;397.8&quot; y=&quot;179.0&quot;&gt;ceph-mon-02&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet&quot; data-node=&quot;mon3&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;525.6&quot; y=&quot;148.0&quot; width=&quot;149.8&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;525.6&quot; y=&quot;148.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(541.6,163.0) scale(0.8333)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M11.959.257A11.9 11.9 0 0 0 3.503 3.76A11.92 11.92 0 0 0 0 12.217a11.9 11.9 0 0 0 1.207 5.243c.72 1.474 1.888 2.944 3.208 4.044c.86-.47 1.35-.99 1.453-1.545c.1-.533-.134-1.107-.737-1.805a9.03 9.03 0 0 1-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 0 1-2.218 5.936c-.599.693-.84 1.292-.735 1.83c.108.556.595 1.068 1.449 1.522c1.322-1.1 2.489-2.57 3.209-4.046A11.9 11.9 0 0 0 24 12.217a11.93 11.93 0 0 0-3.503-8.457A11.92 11.92 0 0 0 12.04.257h-.041zm-.005 4.837a7.07 7.07 0 0 0-3.76 1.075A7.2 7.2 0 0 0 6.15 8.093a7.2 7.2 0 0 0-1.161 2.65a7.2 7.2 0 0 0 .04 3.125a7.1 7.1 0 0 0 1.22 2.607c.154.207.326.396.509.597l.185.202l.005.006q.012.01.026.027c.635.738.957 1.533.957 2.36a3.4 3.4 0 0 1-1.788 2.989a12 12 0 0 0 2.685 1.087c.14-.088.614-.441 1.077-1.083a4.9 4.9 0 0 0 .94-2.99a6.6 6.6 0 0 0-.49-2.37a6.7 6.7 0 0 0-1.302-2.033l-.002-.004l-.124-.142c-.21-.245-.428-.497-.602-.792a4.1 4.1 0 0 1-.462-1.135a4.3 4.3 0 0 1-.024-1.85a4.25 4.25 0 0 1 .686-1.564a4.22 4.22 0 0 1 3.432-1.773h.085a4.2 4.2 0 0 1 3.432 1.773c.33.466.568 1.007.686 1.565a4.3 4.3 0 0 1-.023 1.849a4.1 4.1 0 0 1-.463 1.135c-.173.295-.391.547-.602.792l-.123.142l-.004.004a6.7 6.7 0 0 0-1.301 2.033a6.6 6.6 0 0 0-.49 2.37a4.9 4.9 0 0 0 .94 2.99c.463.642.937.995 1.076 1.083a11.8 11.8 0 0 0 2.687-1.087a3.4 3.4 0 0 1-1.789-2.988c0-.817.313-1.59.956-2.359l.027-.03l.006-.004l.184-.204c.183-.2.355-.39.51-.596a7.1 7.1 0 0 0 1.22-2.608a7.2 7.2 0 0 0 .04-3.124a7.2 7.2 0 0 0-1.16-2.65a7.2 7.2 0 0 0-2.044-1.924a7.07 7.07 0 0 0-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 0 0-2.362 2.361A2.364 2.364 0 0 0 12 14.691a2.363 2.363 0 0 0 2.36-2.36A2.364 2.364 0 0 0 12 9.968z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;569.6&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;569.6&quot; y=&quot;179.0&quot;&gt;ceph-mon-03&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;osd1&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;697.4&quot; y=&quot;148.0&quot; width=&quot;149.8&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;697.4&quot; y=&quot;148.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(713.4,163.0) scale(0.8333)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M11.959.257A11.9 11.9 0 0 0 3.503 3.76A11.92 11.92 0 0 0 0 12.217a11.9 11.9 0 0 0 1.207 5.243c.72 1.474 1.888 2.944 3.208 4.044c.86-.47 1.35-.99 1.453-1.545c.1-.533-.134-1.107-.737-1.805a9.03 9.03 0 0 1-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 0 1-2.218 5.936c-.599.693-.84 1.292-.735 1.83c.108.556.595 1.068 1.449 1.522c1.322-1.1 2.489-2.57 3.209-4.046A11.9 11.9 0 0 0 24 12.217a11.93 11.93 0 0 0-3.503-8.457A11.92 11.92 0 0 0 12.04.257h-.041zm-.005 4.837a7.07 7.07 0 0 0-3.76 1.075A7.2 7.2 0 0 0 6.15 8.093a7.2 7.2 0 0 0-1.161 2.65a7.2 7.2 0 0 0 .04 3.125a7.1 7.1 0 0 0 1.22 2.607c.154.207.326.396.509.597l.185.202l.005.006q.012.01.026.027c.635.738.957 1.533.957 2.36a3.4 3.4 0 0 1-1.788 2.989a12 12 0 0 0 2.685 1.087c.14-.088.614-.441 1.077-1.083a4.9 4.9 0 0 0 .94-2.99a6.6 6.6 0 0 0-.49-2.37a6.7 6.7 0 0 0-1.302-2.033l-.002-.004l-.124-.142c-.21-.245-.428-.497-.602-.792a4.1 4.1 0 0 1-.462-1.135a4.3 4.3 0 0 1-.024-1.85a4.25 4.25 0 0 1 .686-1.564a4.22 4.22 0 0 1 3.432-1.773h.085a4.2 4.2 0 0 1 3.432 1.773c.33.466.568 1.007.686 1.565a4.3 4.3 0 0 1-.023 1.849a4.1 4.1 0 0 1-.463 1.135c-.173.295-.391.547-.602.792l-.123.142l-.004.004a6.7 6.7 0 0 0-1.301 2.033a6.6 6.6 0 0 0-.49 2.37a4.9 4.9 0 0 0 .94 2.99c.463.642.937.995 1.076 1.083a11.8 11.8 0 0 0 2.687-1.087a3.4 3.4 0 0 1-1.789-2.988c0-.817.313-1.59.956-2.359l.027-.03l.006-.004l.184-.204c.183-.2.355-.39.51-.596a7.1 7.1 0 0 0 1.22-2.608a7.2 7.2 0 0 0 .04-3.124a7.2 7.2 0 0 0-1.16-2.65a7.2 7.2 0 0 0-2.044-1.924a7.07 7.07 0 0 0-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 0 0-2.362 2.361A2.364 2.364 0 0 0 12 14.691a2.363 2.363 0 0 0 2.36-2.36A2.364 2.364 0 0 0 12 9.968z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;741.4&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;741.4&quot; y=&quot;179.0&quot;&gt;ceph-osd-01&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;osd2&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;869.2&quot; y=&quot;148.0&quot; width=&quot;149.8&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;869.2&quot; y=&quot;148.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(885.2,163.0) scale(0.8333)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M11.959.257A11.9 11.9 0 0 0 3.503 3.76A11.92 11.92 0 0 0 0 12.217a11.9 11.9 0 0 0 1.207 5.243c.72 1.474 1.888 2.944 3.208 4.044c.86-.47 1.35-.99 1.453-1.545c.1-.533-.134-1.107-.737-1.805a9.03 9.03 0 0 1-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 0 1-2.218 5.936c-.599.693-.84 1.292-.735 1.83c.108.556.595 1.068 1.449 1.522c1.322-1.1 2.489-2.57 3.209-4.046A11.9 11.9 0 0 0 24 12.217a11.93 11.93 0 0 0-3.503-8.457A11.92 11.92 0 0 0 12.04.257h-.041zm-.005 4.837a7.07 7.07 0 0 0-3.76 1.075A7.2 7.2 0 0 0 6.15 8.093a7.2 7.2 0 0 0-1.161 2.65a7.2 7.2 0 0 0 .04 3.125a7.1 7.1 0 0 0 1.22 2.607c.154.207.326.396.509.597l.185.202l.005.006q.012.01.026.027c.635.738.957 1.533.957 2.36a3.4 3.4 0 0 1-1.788 2.989a12 12 0 0 0 2.685 1.087c.14-.088.614-.441 1.077-1.083a4.9 4.9 0 0 0 .94-2.99a6.6 6.6 0 0 0-.49-2.37a6.7 6.7 0 0 0-1.302-2.033l-.002-.004l-.124-.142c-.21-.245-.428-.497-.602-.792a4.1 4.1 0 0 1-.462-1.135a4.3 4.3 0 0 1-.024-1.85a4.25 4.25 0 0 1 .686-1.564a4.22 4.22 0 0 1 3.432-1.773h.085a4.2 4.2 0 0 1 3.432 1.773c.33.466.568 1.007.686 1.565a4.3 4.3 0 0 1-.023 1.849a4.1 4.1 0 0 1-.463 1.135c-.173.295-.391.547-.602.792l-.123.142l-.004.004a6.7 6.7 0 0 0-1.301 2.033a6.6 6.6 0 0 0-.49 2.37a4.9 4.9 0 0 0 .94 2.99c.463.642.937.995 1.076 1.083a11.8 11.8 0 0 0 2.687-1.087a3.4 3.4 0 0 1-1.789-2.988c0-.817.313-1.59.956-2.359l.027-.03l.006-.004l.184-.204c.183-.2.355-.39.51-.596a7.1 7.1 0 0 0 1.22-2.608a7.2 7.2 0 0 0 .04-3.124a7.2 7.2 0 0 0-1.16-2.65a7.2 7.2 0 0 0-2.044-1.924a7.07 7.07 0 0 0-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 0 0-2.362 2.361A2.364 2.364 0 0 0 12 14.691a2.363 2.363 0 0 0 2.36-2.36A2.364 2.364 0 0 0 12 9.968z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;913.2&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;913.2&quot; y=&quot;179.0&quot;&gt;ceph-osd-02&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;osd3&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;1041.0&quot; y=&quot;148.0&quot; width=&quot;149.8&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;1041.0&quot; y=&quot;148.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(1057.0,163.0) scale(0.8333)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M11.959.257A11.9 11.9 0 0 0 3.503 3.76A11.92 11.92 0 0 0 0 12.217a11.9 11.9 0 0 0 1.207 5.243c.72 1.474 1.888 2.944 3.208 4.044c.86-.47 1.35-.99 1.453-1.545c.1-.533-.134-1.107-.737-1.805a9.03 9.03 0 0 1-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 0 1-2.218 5.936c-.599.693-.84 1.292-.735 1.83c.108.556.595 1.068 1.449 1.522c1.322-1.1 2.489-2.57 3.209-4.046A11.9 11.9 0 0 0 24 12.217a11.93 11.93 0 0 0-3.503-8.457A11.92 11.92 0 0 0 12.04.257h-.041zm-.005 4.837a7.07 7.07 0 0 0-3.76 1.075A7.2 7.2 0 0 0 6.15 8.093a7.2 7.2 0 0 0-1.161 2.65a7.2 7.2 0 0 0 .04 3.125a7.1 7.1 0 0 0 1.22 2.607c.154.207.326.396.509.597l.185.202l.005.006q.012.01.026.027c.635.738.957 1.533.957 2.36a3.4 3.4 0 0 1-1.788 2.989a12 12 0 0 0 2.685 1.087c.14-.088.614-.441 1.077-1.083a4.9 4.9 0 0 0 .94-2.99a6.6 6.6 0 0 0-.49-2.37a6.7 6.7 0 0 0-1.302-2.033l-.002-.004l-.124-.142c-.21-.245-.428-.497-.602-.792a4.1 4.1 0 0 1-.462-1.135a4.3 4.3 0 0 1-.024-1.85a4.25 4.25 0 0 1 .686-1.564a4.22 4.22 0 0 1 3.432-1.773h.085a4.2 4.2 0 0 1 3.432 1.773c.33.466.568 1.007.686 1.565a4.3 4.3 0 0 1-.023 1.849a4.1 4.1 0 0 1-.463 1.135c-.173.295-.391.547-.602.792l-.123.142l-.004.004a6.7 6.7 0 0 0-1.301 2.033a6.6 6.6 0 0 0-.49 2.37a4.9 4.9 0 0 0 .94 2.99c.463.642.937.995 1.076 1.083a11.8 11.8 0 0 0 2.687-1.087a3.4 3.4 0 0 1-1.789-2.988c0-.817.313-1.59.956-2.359l.027-.03l.006-.004l.184-.204c.183-.2.355-.39.51-.596a7.1 7.1 0 0 0 1.22-2.608a7.2 7.2 0 0 0 .04-3.124a7.2 7.2 0 0 0-1.16-2.65a7.2 7.2 0 0 0-2.044-1.924a7.07 7.07 0 0 0-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 0 0-2.362 2.361A2.364 2.364 0 0 0 12 14.691a2.363 2.363 0 0 0 2.36-2.36A2.364 2.364 0 0 0 12 9.968z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;1085.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;1085.0&quot; y=&quot;179.0&quot;&gt;ceph-osd-03&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;div class=&quot;diagram__marquee&quot; data-dg-marquee hidden&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;diagram__hint&quot; data-dg-hint hidden&gt;Right-drag to pan · Scroll to zoom · Drag a node to move&lt;/p&gt;
  &lt;figcaption&gt;Ceph logical networks: the public network connects clients, monitors, and OSDs, while the cluster network carries OSD replication and recovery traffic.&lt;/figcaption&gt;
  &lt;p class=&quot;diagram__source&quot;&gt;Source: &lt;a href=&quot;https://github.com/AjiArya/website/blob/main/diagrams/ceph-storage-fabric-simple.yaml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;diagrams/ceph-storage-fabric-simple.yaml&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;p&gt;The physical view below expands that into NICs, ports, leaf switches, and individual links.&lt;/p&gt;
&lt;figure class=&quot;diagram&quot; data-diagram data-diagram-name=&quot;ceph-storage-fabric&quot; data-dg-source=&quot;@ajiarya&quot;&gt;
  &lt;div class=&quot;diagram__toolbar&quot; data-dg-toolbar role=&quot;toolbar&quot; aria-label=&quot;Diagram controls&quot; hidden&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Animation&quot; data-dg-animation-group&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-animation-control&gt;
        &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-animation aria-label=&quot;Animation: playing&quot; title=&quot;Animation options&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-ceph-storage-fabric-animation-panel&quot;&gt;&lt;span class=&quot;diagram__icon&quot; data-dg-animation-icon aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span class=&quot;diagram__button-label&quot; data-dg-animation-label&gt;Pause&lt;/span&gt;&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-animation-panel id=&quot;dg-ceph-storage-fabric-animation-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;play&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;▶&lt;/span&gt;&lt;span&gt;Start&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;pause&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span&gt;Pause&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;disable&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;■&lt;/span&gt;&lt;span&gt;Disable&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-speed-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-speed aria-label=&quot;Animation speed: 1x&quot; title=&quot;Animation speed&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-ceph-storage-fabric-speed-panel&quot;&gt;1×&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel&quot; data-dg-speed-panel id=&quot;dg-ceph-storage-fabric-speed-panel&quot;&gt;
          &lt;input class=&quot;diagram__range&quot; type=&quot;range&quot; min=&quot;0&quot; max=&quot;4&quot; step=&quot;1&quot; value=&quot;2&quot; data-dg-speed-range aria-label=&quot;Animation speed&quot;&gt;
          &lt;div class=&quot;diagram__ticks&quot; aria-hidden=&quot;true&quot;&gt;
            &lt;span data-dg-speed-tick&gt;0.25×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;0.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;2×&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover diagram__popover--end&quot; data-dg-direction-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value diagram__button--direction&quot; type=&quot;button&quot; data-dg-direction aria-label=&quot;Animation direction: alternating&quot; title=&quot;Animation direction&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-ceph-storage-fabric-direction-panel&quot;&gt;↔&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-direction-panel id=&quot;dg-ceph-storage-fabric-direction-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;forward&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;→&lt;/span&gt;&lt;span&gt;Forward&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;reverse&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;←&lt;/span&gt;&lt;span&gt;Reverse&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;alternate&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;↔&lt;/span&gt;&lt;span&gt;Alternating&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Zoom&quot;&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-out aria-label=&quot;Zoom out&quot; title=&quot;Zoom out&quot;&gt;−&lt;/button&gt;
      &lt;span class=&quot;diagram__zoom-label&quot; data-dg-zoom-label aria-live=&quot;polite&quot;&gt;100%&lt;/span&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-in aria-label=&quot;Zoom in&quot; title=&quot;Zoom in&quot;&gt;+&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-fit aria-label=&quot;Fit diagram to view&quot; title=&quot;Fit diagram&quot;&gt;Fit&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-reset aria-label=&quot;Reset diagram and view&quot; title=&quot;Reset diagram&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-png aria-label=&quot;Copy diagram as PNG&quot; title=&quot;Copy diagram as PNG&quot;&gt;PNG&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;diagram__canvas&quot; data-dg-canvas tabindex=&quot;0&quot; role=&quot;group&quot; aria-label=&quot;Diagram; left-drag to select, right-drag to pan, scroll to zoom, drag a node to move it, pinch to zoom&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 1220 452&quot; role=&quot;img&quot; aria-labelledby=&quot;ceph-storage-fabric-title ceph-storage-fabric-desc&quot; class=&quot;dg-svg&quot; data-dg-draw-ms=&quot;1200&quot; data-dg-flow-ms=&quot;2600&quot; data-dg-stagger-ms=&quot;0&quot; data-dg-direction=&quot;alternate&quot; data-dg-autoplay=&quot;false&quot; data-dg-static=&quot;true&quot; data-dg-no-drag=&quot;false&quot; data-dg-fit-mobile=&quot;true&quot; style=&quot;--dg-draw-duration:1200ms;--dg-flow-duration:2600ms;--dg-pulse-duration:2000ms&quot;&gt;&lt;title id=&quot;ceph-storage-fabric-title&quot;&gt;Ceph storage fabric&lt;/title&gt;&lt;desc id=&quot;ceph-storage-fabric-desc&quot;&gt;Three Ceph monitor hosts and three Ceph OSD hosts dual-homed to two leaf switches, with a bond across both NICs.&lt;/desc&gt;&lt;g class=&quot;dg-edges&quot;&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 81.0 351.5 L 81.0 140.1 L 365.2 140.1 L 365.2 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;mon1&quot; data-to=&quot;leaf1&quot; data-dg-edge=&quot;0&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 135.0 351.5 L 135.0 247.4 L 647.8 247.4 L 647.8 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;mon1&quot; data-to=&quot;leaf2&quot; data-dg-edge=&quot;1&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 149.0 351.5 L 149.0 143.1 L 374.2 143.1 L 374.2 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;mon1&quot; data-to=&quot;leaf1&quot; data-dg-edge=&quot;2&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 95.0 351.5 L 95.0 244.4 L 656.8 244.4 L 656.8 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;mon1&quot; data-to=&quot;leaf2&quot; data-dg-edge=&quot;3&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 279.0 351.5 L 279.0 152.7 L 383.2 152.7 L 383.2 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;mon2&quot; data-to=&quot;leaf1&quot; data-dg-edge=&quot;4&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 333.0 351.5 L 333.0 260.0 L 665.8 260.0 L 665.8 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;mon2&quot; data-to=&quot;leaf2&quot; data-dg-edge=&quot;5&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 347.0 351.5 L 347.0 155.7 L 392.2 155.7 L 392.2 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;mon2&quot; data-to=&quot;leaf1&quot; data-dg-edge=&quot;6&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 293.0 351.5 L 293.0 257.0 L 674.8 257.0 L 674.8 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;mon2&quot; data-to=&quot;leaf2&quot; data-dg-edge=&quot;7&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 477.0 351.5 L 477.0 165.3 L 401.2 165.3 L 401.2 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;mon3&quot; data-to=&quot;leaf1&quot; data-dg-edge=&quot;8&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 531.0 351.5 L 531.0 272.6 L 683.8 272.6 L 683.8 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;mon3&quot; data-to=&quot;leaf2&quot; data-dg-edge=&quot;9&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 545.0 351.5 L 545.0 168.3 L 410.2 168.3 L 410.2 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;mon3&quot; data-to=&quot;leaf1&quot; data-dg-edge=&quot;10&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 491.0 351.5 L 491.0 269.6 L 692.8 269.6 L 692.8 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;mon3&quot; data-to=&quot;leaf2&quot; data-dg-edge=&quot;11&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 675.0 351.5 L 675.0 177.9 L 419.2 177.9 L 419.2 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd1&quot; data-to=&quot;leaf1&quot; data-dg-edge=&quot;12&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 729.0 351.5 L 729.0 285.2 L 701.8 285.2 L 701.8 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd1&quot; data-to=&quot;leaf2&quot; data-dg-edge=&quot;13&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 743.0 351.5 L 743.0 180.9 L 428.2 180.9 L 428.2 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd1&quot; data-to=&quot;leaf1&quot; data-dg-edge=&quot;14&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 689.0 351.5 L 689.0 282.2 L 710.8 282.2 L 710.8 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd1&quot; data-to=&quot;leaf2&quot; data-dg-edge=&quot;15&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 873.0 351.5 L 873.0 190.5 L 437.2 190.5 L 437.2 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd2&quot; data-to=&quot;leaf1&quot; data-dg-edge=&quot;16&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 927.0 351.5 L 927.0 297.8 L 719.8 297.8 L 719.8 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd2&quot; data-to=&quot;leaf2&quot; data-dg-edge=&quot;17&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 941.0 351.5 L 941.0 193.5 L 446.2 193.5 L 446.2 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd2&quot; data-to=&quot;leaf1&quot; data-dg-edge=&quot;18&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 887.0 351.5 L 887.0 294.8 L 728.8 294.8 L 728.8 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd2&quot; data-to=&quot;leaf2&quot; data-dg-edge=&quot;19&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 1071.0 351.5 L 1071.0 203.1 L 455.2 203.1 L 455.2 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd3&quot; data-to=&quot;leaf1&quot; data-dg-edge=&quot;20&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 1125.0 351.5 L 1125.0 310.4 L 737.8 310.4 L 737.8 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd3&quot; data-to=&quot;leaf2&quot; data-dg-edge=&quot;21&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 1139.0 351.5 L 1139.0 206.1 L 464.2 206.1 L 464.2 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd3&quot; data-to=&quot;leaf1&quot; data-dg-edge=&quot;22&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 1085.0 351.5 L 1085.0 307.4 L 746.8 307.4 L 746.8 99.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd3&quot; data-to=&quot;leaf2&quot; data-dg-edge=&quot;23&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; /&gt;&lt;/g&gt;&lt;g class=&quot;dg-bonds&quot;&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-blue&quot; data-node=&quot;mon1&quot; data-dg-bond=&quot;bond0&quot; cx=&quot;84.0&quot; cy=&quot;429.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-blue&quot; data-node=&quot;mon1&quot; data-dg-bond=&quot;bond0&quot; x=&quot;84.0&quot; y=&quot;429.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond0&lt;/text&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-amber&quot; data-node=&quot;mon1&quot; data-dg-bond=&quot;bond1&quot; cx=&quot;146.0&quot; cy=&quot;429.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-amber&quot; data-node=&quot;mon1&quot; data-dg-bond=&quot;bond1&quot; x=&quot;146.0&quot; y=&quot;429.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond1&lt;/text&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-blue&quot; data-node=&quot;mon2&quot; data-dg-bond=&quot;bond0&quot; cx=&quot;282.0&quot; cy=&quot;429.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-blue&quot; data-node=&quot;mon2&quot; data-dg-bond=&quot;bond0&quot; x=&quot;282.0&quot; y=&quot;429.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond0&lt;/text&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-amber&quot; data-node=&quot;mon2&quot; data-dg-bond=&quot;bond1&quot; cx=&quot;344.0&quot; cy=&quot;429.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-amber&quot; data-node=&quot;mon2&quot; data-dg-bond=&quot;bond1&quot; x=&quot;344.0&quot; y=&quot;429.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond1&lt;/text&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-blue&quot; data-node=&quot;mon3&quot; data-dg-bond=&quot;bond0&quot; cx=&quot;480.0&quot; cy=&quot;429.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-blue&quot; data-node=&quot;mon3&quot; data-dg-bond=&quot;bond0&quot; x=&quot;480.0&quot; y=&quot;429.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond0&lt;/text&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-amber&quot; data-node=&quot;mon3&quot; data-dg-bond=&quot;bond1&quot; cx=&quot;542.0&quot; cy=&quot;429.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-amber&quot; data-node=&quot;mon3&quot; data-dg-bond=&quot;bond1&quot; x=&quot;542.0&quot; y=&quot;429.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond1&lt;/text&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-blue&quot; data-node=&quot;osd1&quot; data-dg-bond=&quot;bond0&quot; cx=&quot;678.0&quot; cy=&quot;429.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-blue&quot; data-node=&quot;osd1&quot; data-dg-bond=&quot;bond0&quot; x=&quot;678.0&quot; y=&quot;429.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond0&lt;/text&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-amber&quot; data-node=&quot;osd1&quot; data-dg-bond=&quot;bond1&quot; cx=&quot;740.0&quot; cy=&quot;429.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-amber&quot; data-node=&quot;osd1&quot; data-dg-bond=&quot;bond1&quot; x=&quot;740.0&quot; y=&quot;429.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond1&lt;/text&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-blue&quot; data-node=&quot;osd2&quot; data-dg-bond=&quot;bond0&quot; cx=&quot;876.0&quot; cy=&quot;429.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-blue&quot; data-node=&quot;osd2&quot; data-dg-bond=&quot;bond0&quot; x=&quot;876.0&quot; y=&quot;429.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond0&lt;/text&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-amber&quot; data-node=&quot;osd2&quot; data-dg-bond=&quot;bond1&quot; cx=&quot;938.0&quot; cy=&quot;429.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-amber&quot; data-node=&quot;osd2&quot; data-dg-bond=&quot;bond1&quot; x=&quot;938.0&quot; y=&quot;429.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond1&lt;/text&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-blue&quot; data-node=&quot;osd3&quot; data-dg-bond=&quot;bond0&quot; cx=&quot;1074.0&quot; cy=&quot;429.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-blue&quot; data-node=&quot;osd3&quot; data-dg-bond=&quot;bond0&quot; x=&quot;1074.0&quot; y=&quot;429.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond0&lt;/text&gt;&lt;ellipse class=&quot;dg-bond-mark dg-tone-amber&quot; data-node=&quot;osd3&quot; data-dg-bond=&quot;bond1&quot; cx=&quot;1136.0&quot; cy=&quot;429.5&quot; rx=&quot;22.0&quot; ry=&quot;10.0&quot;/&gt;&lt;text class=&quot;dg-bond-label dg-tone-amber&quot; data-node=&quot;osd3&quot; data-dg-bond=&quot;bond1&quot; x=&quot;1136.0&quot; y=&quot;429.5&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot;&gt;bond1&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-nodes&quot;&gt;&lt;g class=&quot;dg-node dg-tone-cyan dg-node--switch&quot; data-node=&quot;leaf1&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot; data-dg-kind=&quot;switch&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;351.5&quot; y=&quot;40.0&quot; width=&quot;234.5&quot; height=&quot;73.5&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;351.5&quot; y=&quot;40.0&quot; width=&quot;3&quot; height=&quot;73.5&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(361.5,52.0) scale(0.7)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 19a2 2 0 1 0-4 0a2 2 0 0 0 4 0m8-14a2 2 0 1 0-4 0a2 2 0 0 0 4 0m-8 0a2 2 0 1 0-4 0a2 2 0 0 0 4 0m-4 7a2 2 0 1 0-4 0a2 2 0 0 0 4 0m12 7a2 2 0 1 0-4 0a2 2 0 0 0 4 0m-4-7a2 2 0 1 0-4 0a2 2 0 0 0 4 0m8 0a2 2 0 1 0-4 0a2 2 0 0 0 4 0M6 12h4m4 0h4m-3-5l-2 3M9 7l2 3m0 4l-2 3m4-3l2 3&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;arch-node-title&quot; x=&quot;385.5&quot; y=&quot;66.0&quot;&gt;leaf-01&lt;/text&gt;&lt;text class=&quot;arch-node-meta&quot; x=&quot;576.0&quot; y=&quot;66.0&quot; text-anchor=&quot;end&quot;&gt;48 ports&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;361.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;365.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;370.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;374.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;379.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;383.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;3&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;388.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;392.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;4&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;397.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;401.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;5&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;406.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;410.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;6&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;415.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;419.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;7&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;424.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;428.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;8&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;433.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;437.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;9&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;442.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;446.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;10&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;451.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;455.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;11&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;460.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;464.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;12&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;469.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;473.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;13&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;478.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;482.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;14&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;487.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;491.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;15&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;496.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;500.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;16&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;505.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;509.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;17&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;514.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;518.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;18&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;523.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;527.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;19&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;532.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;536.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;20&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;541.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;545.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;21&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;550.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;554.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;22&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;559.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;563.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;23&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;568.5&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;572.2&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;24&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;361.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;365.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;25&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;370.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;374.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;26&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;379.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;383.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;27&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;388.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;392.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;28&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;397.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;401.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;29&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;406.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;410.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;30&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;415.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;419.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;31&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;424.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;428.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;32&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;433.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;437.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;33&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;442.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;446.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;34&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;451.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;455.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;35&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;460.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;464.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;36&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;469.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;473.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;37&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;478.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;482.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;38&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;487.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;491.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;39&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;496.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;500.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;40&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;505.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;509.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;41&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;514.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;518.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;42&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;523.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;527.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;43&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;532.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;536.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;44&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;541.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;545.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;45&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;550.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;554.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;46&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;559.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;563.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;47&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;568.5&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;572.2&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;48&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-cyan dg-node--switch&quot; data-node=&quot;leaf2&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot; data-dg-kind=&quot;switch&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;634.0&quot; y=&quot;40.0&quot; width=&quot;234.5&quot; height=&quot;73.5&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;634.0&quot; y=&quot;40.0&quot; width=&quot;3&quot; height=&quot;73.5&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(644.0,52.0) scale(0.7)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M10 19a2 2 0 1 0-4 0a2 2 0 0 0 4 0m8-14a2 2 0 1 0-4 0a2 2 0 0 0 4 0m-8 0a2 2 0 1 0-4 0a2 2 0 0 0 4 0m-4 7a2 2 0 1 0-4 0a2 2 0 0 0 4 0m12 7a2 2 0 1 0-4 0a2 2 0 0 0 4 0m-4-7a2 2 0 1 0-4 0a2 2 0 0 0 4 0m8 0a2 2 0 1 0-4 0a2 2 0 0 0 4 0M6 12h4m4 0h4m-3-5l-2 3M9 7l2 3m0 4l-2 3m4-3l2 3&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;arch-node-title&quot; x=&quot;668.0&quot; y=&quot;66.0&quot;&gt;leaf-02&lt;/text&gt;&lt;text class=&quot;arch-node-meta&quot; x=&quot;858.5&quot; y=&quot;66.0&quot; text-anchor=&quot;end&quot;&gt;48 ports&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;644.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;647.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;653.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;656.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;662.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;665.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;3&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;671.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;674.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;4&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;680.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;683.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;5&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;689.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;692.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;6&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;698.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;701.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;7&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;707.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;710.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;8&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;716.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;719.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;9&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;725.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;728.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;10&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;734.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;737.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;11&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;743.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;746.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;12&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;752.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;755.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;13&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;761.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;764.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;14&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;770.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;773.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;15&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;779.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;782.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;16&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;788.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;791.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;17&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;797.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;800.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;18&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;806.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;809.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;19&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;815.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;818.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;20&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;824.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;827.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;21&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;833.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;836.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;22&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;842.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;845.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;23&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;851.0&quot; y=&quot;94.5&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;854.8&quot; y=&quot;101.0&quot; text-anchor=&quot;middle&quot;&gt;24&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;644.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;647.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;25&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;653.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;656.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;26&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;662.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;665.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;27&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;671.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;674.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;28&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;680.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;683.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;29&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;689.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;692.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;30&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;698.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;701.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;31&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;707.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;710.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;32&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;716.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;719.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;33&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;725.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;728.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;34&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;734.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;737.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;35&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;743.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;746.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;36&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;752.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;755.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;37&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;761.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;764.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;38&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;770.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;773.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;39&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;779.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;782.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;40&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;788.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;791.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;41&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;797.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;800.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;42&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;806.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;809.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;43&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;815.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;818.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;44&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;824.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;827.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;45&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;833.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;836.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;46&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;842.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;845.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;47&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-cyan &quot; x=&quot;851.0&quot; y=&quot;84.0&quot; width=&quot;7.5&quot; height=&quot;9.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label&quot; x=&quot;854.8&quot; y=&quot;90.5&quot; text-anchor=&quot;middle&quot;&gt;48&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet dg-node--server&quot; data-node=&quot;mon1&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot; data-dg-kind=&quot;server&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;40.0&quot; y=&quot;333.5&quot; width=&quot;150.0&quot; height=&quot;78.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;40.0&quot; y=&quot;333.5&quot; width=&quot;3&quot; height=&quot;78.0&quot; rx=&quot;1.5&quot;/&gt;&lt;rect class=&quot;arch-nic dg-tone-blue&quot; x=&quot;65.0&quot; y=&quot;343.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;88.0&quot; y=&quot;368.0&quot; text-anchor=&quot;middle&quot;&gt;nic1&lt;/text&gt;&lt;rect class=&quot;arch-nic dg-tone-amber&quot; x=&quot;119.0&quot; y=&quot;343.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;142.0&quot; y=&quot;368.0&quot; text-anchor=&quot;middle&quot;&gt;nic2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;76.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;81.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;90.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;95.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;130.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;135.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;144.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;149.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(56.0,380.5) scale(0.7)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M11.959.257A11.9 11.9 0 0 0 3.503 3.76A11.92 11.92 0 0 0 0 12.217a11.9 11.9 0 0 0 1.207 5.243c.72 1.474 1.888 2.944 3.208 4.044c.86-.47 1.35-.99 1.453-1.545c.1-.533-.134-1.107-.737-1.805a9.03 9.03 0 0 1-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 0 1-2.218 5.936c-.599.693-.84 1.292-.735 1.83c.108.556.595 1.068 1.449 1.522c1.322-1.1 2.489-2.57 3.209-4.046A11.9 11.9 0 0 0 24 12.217a11.93 11.93 0 0 0-3.503-8.457A11.92 11.92 0 0 0 12.04.257h-.041zm-.005 4.837a7.07 7.07 0 0 0-3.76 1.075A7.2 7.2 0 0 0 6.15 8.093a7.2 7.2 0 0 0-1.161 2.65a7.2 7.2 0 0 0 .04 3.125a7.1 7.1 0 0 0 1.22 2.607c.154.207.326.396.509.597l.185.202l.005.006q.012.01.026.027c.635.738.957 1.533.957 2.36a3.4 3.4 0 0 1-1.788 2.989a12 12 0 0 0 2.685 1.087c.14-.088.614-.441 1.077-1.083a4.9 4.9 0 0 0 .94-2.99a6.6 6.6 0 0 0-.49-2.37a6.7 6.7 0 0 0-1.302-2.033l-.002-.004l-.124-.142c-.21-.245-.428-.497-.602-.792a4.1 4.1 0 0 1-.462-1.135a4.3 4.3 0 0 1-.024-1.85a4.25 4.25 0 0 1 .686-1.564a4.22 4.22 0 0 1 3.432-1.773h.085a4.2 4.2 0 0 1 3.432 1.773c.33.466.568 1.007.686 1.565a4.3 4.3 0 0 1-.023 1.849a4.1 4.1 0 0 1-.463 1.135c-.173.295-.391.547-.602.792l-.123.142l-.004.004a6.7 6.7 0 0 0-1.301 2.033a6.6 6.6 0 0 0-.49 2.37a4.9 4.9 0 0 0 .94 2.99c.463.642.937.995 1.076 1.083a11.8 11.8 0 0 0 2.687-1.087a3.4 3.4 0 0 1-1.789-2.988c0-.817.313-1.59.956-2.359l.027-.03l.006-.004l.184-.204c.183-.2.355-.39.51-.596a7.1 7.1 0 0 0 1.22-2.608a7.2 7.2 0 0 0 .04-3.124a7.2 7.2 0 0 0-1.16-2.65a7.2 7.2 0 0 0-2.044-1.924a7.07 7.07 0 0 0-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 0 0-2.362 2.361A2.364 2.364 0 0 0 12 14.691a2.363 2.363 0 0 0 2.36-2.36A2.364 2.364 0 0 0 12 9.968z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;arch-node-title&quot; x=&quot;82.0&quot; y=&quot;389.5&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;82.0&quot; y=&quot;389.5&quot;&gt;ceph-mon-01&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet dg-node--server&quot; data-node=&quot;mon2&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot; data-dg-kind=&quot;server&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;238.0&quot; y=&quot;333.5&quot; width=&quot;150.0&quot; height=&quot;78.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;238.0&quot; y=&quot;333.5&quot; width=&quot;3&quot; height=&quot;78.0&quot; rx=&quot;1.5&quot;/&gt;&lt;rect class=&quot;arch-nic dg-tone-blue&quot; x=&quot;263.0&quot; y=&quot;343.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;286.0&quot; y=&quot;368.0&quot; text-anchor=&quot;middle&quot;&gt;nic1&lt;/text&gt;&lt;rect class=&quot;arch-nic dg-tone-amber&quot; x=&quot;317.0&quot; y=&quot;343.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;340.0&quot; y=&quot;368.0&quot; text-anchor=&quot;middle&quot;&gt;nic2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;274.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;279.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;288.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;293.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;328.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;333.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;342.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;347.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(254.0,380.5) scale(0.7)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M11.959.257A11.9 11.9 0 0 0 3.503 3.76A11.92 11.92 0 0 0 0 12.217a11.9 11.9 0 0 0 1.207 5.243c.72 1.474 1.888 2.944 3.208 4.044c.86-.47 1.35-.99 1.453-1.545c.1-.533-.134-1.107-.737-1.805a9.03 9.03 0 0 1-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 0 1-2.218 5.936c-.599.693-.84 1.292-.735 1.83c.108.556.595 1.068 1.449 1.522c1.322-1.1 2.489-2.57 3.209-4.046A11.9 11.9 0 0 0 24 12.217a11.93 11.93 0 0 0-3.503-8.457A11.92 11.92 0 0 0 12.04.257h-.041zm-.005 4.837a7.07 7.07 0 0 0-3.76 1.075A7.2 7.2 0 0 0 6.15 8.093a7.2 7.2 0 0 0-1.161 2.65a7.2 7.2 0 0 0 .04 3.125a7.1 7.1 0 0 0 1.22 2.607c.154.207.326.396.509.597l.185.202l.005.006q.012.01.026.027c.635.738.957 1.533.957 2.36a3.4 3.4 0 0 1-1.788 2.989a12 12 0 0 0 2.685 1.087c.14-.088.614-.441 1.077-1.083a4.9 4.9 0 0 0 .94-2.99a6.6 6.6 0 0 0-.49-2.37a6.7 6.7 0 0 0-1.302-2.033l-.002-.004l-.124-.142c-.21-.245-.428-.497-.602-.792a4.1 4.1 0 0 1-.462-1.135a4.3 4.3 0 0 1-.024-1.85a4.25 4.25 0 0 1 .686-1.564a4.22 4.22 0 0 1 3.432-1.773h.085a4.2 4.2 0 0 1 3.432 1.773c.33.466.568 1.007.686 1.565a4.3 4.3 0 0 1-.023 1.849a4.1 4.1 0 0 1-.463 1.135c-.173.295-.391.547-.602.792l-.123.142l-.004.004a6.7 6.7 0 0 0-1.301 2.033a6.6 6.6 0 0 0-.49 2.37a4.9 4.9 0 0 0 .94 2.99c.463.642.937.995 1.076 1.083a11.8 11.8 0 0 0 2.687-1.087a3.4 3.4 0 0 1-1.789-2.988c0-.817.313-1.59.956-2.359l.027-.03l.006-.004l.184-.204c.183-.2.355-.39.51-.596a7.1 7.1 0 0 0 1.22-2.608a7.2 7.2 0 0 0 .04-3.124a7.2 7.2 0 0 0-1.16-2.65a7.2 7.2 0 0 0-2.044-1.924a7.07 7.07 0 0 0-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 0 0-2.362 2.361A2.364 2.364 0 0 0 12 14.691a2.363 2.363 0 0 0 2.36-2.36A2.364 2.364 0 0 0 12 9.968z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;arch-node-title&quot; x=&quot;280.0&quot; y=&quot;389.5&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;280.0&quot; y=&quot;389.5&quot;&gt;ceph-mon-02&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet dg-node--server&quot; data-node=&quot;mon3&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot; data-dg-kind=&quot;server&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;436.0&quot; y=&quot;333.5&quot; width=&quot;150.0&quot; height=&quot;78.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;436.0&quot; y=&quot;333.5&quot; width=&quot;3&quot; height=&quot;78.0&quot; rx=&quot;1.5&quot;/&gt;&lt;rect class=&quot;arch-nic dg-tone-blue&quot; x=&quot;461.0&quot; y=&quot;343.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;484.0&quot; y=&quot;368.0&quot; text-anchor=&quot;middle&quot;&gt;nic1&lt;/text&gt;&lt;rect class=&quot;arch-nic dg-tone-amber&quot; x=&quot;515.0&quot; y=&quot;343.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;538.0&quot; y=&quot;368.0&quot; text-anchor=&quot;middle&quot;&gt;nic2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;472.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;477.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;486.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;491.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;526.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;531.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;540.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;545.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(452.0,380.5) scale(0.7)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M11.959.257A11.9 11.9 0 0 0 3.503 3.76A11.92 11.92 0 0 0 0 12.217a11.9 11.9 0 0 0 1.207 5.243c.72 1.474 1.888 2.944 3.208 4.044c.86-.47 1.35-.99 1.453-1.545c.1-.533-.134-1.107-.737-1.805a9.03 9.03 0 0 1-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 0 1-2.218 5.936c-.599.693-.84 1.292-.735 1.83c.108.556.595 1.068 1.449 1.522c1.322-1.1 2.489-2.57 3.209-4.046A11.9 11.9 0 0 0 24 12.217a11.93 11.93 0 0 0-3.503-8.457A11.92 11.92 0 0 0 12.04.257h-.041zm-.005 4.837a7.07 7.07 0 0 0-3.76 1.075A7.2 7.2 0 0 0 6.15 8.093a7.2 7.2 0 0 0-1.161 2.65a7.2 7.2 0 0 0 .04 3.125a7.1 7.1 0 0 0 1.22 2.607c.154.207.326.396.509.597l.185.202l.005.006q.012.01.026.027c.635.738.957 1.533.957 2.36a3.4 3.4 0 0 1-1.788 2.989a12 12 0 0 0 2.685 1.087c.14-.088.614-.441 1.077-1.083a4.9 4.9 0 0 0 .94-2.99a6.6 6.6 0 0 0-.49-2.37a6.7 6.7 0 0 0-1.302-2.033l-.002-.004l-.124-.142c-.21-.245-.428-.497-.602-.792a4.1 4.1 0 0 1-.462-1.135a4.3 4.3 0 0 1-.024-1.85a4.25 4.25 0 0 1 .686-1.564a4.22 4.22 0 0 1 3.432-1.773h.085a4.2 4.2 0 0 1 3.432 1.773c.33.466.568 1.007.686 1.565a4.3 4.3 0 0 1-.023 1.849a4.1 4.1 0 0 1-.463 1.135c-.173.295-.391.547-.602.792l-.123.142l-.004.004a6.7 6.7 0 0 0-1.301 2.033a6.6 6.6 0 0 0-.49 2.37a4.9 4.9 0 0 0 .94 2.99c.463.642.937.995 1.076 1.083a11.8 11.8 0 0 0 2.687-1.087a3.4 3.4 0 0 1-1.789-2.988c0-.817.313-1.59.956-2.359l.027-.03l.006-.004l.184-.204c.183-.2.355-.39.51-.596a7.1 7.1 0 0 0 1.22-2.608a7.2 7.2 0 0 0 .04-3.124a7.2 7.2 0 0 0-1.16-2.65a7.2 7.2 0 0 0-2.044-1.924a7.07 7.07 0 0 0-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 0 0-2.362 2.361A2.364 2.364 0 0 0 12 14.691a2.363 2.363 0 0 0 2.36-2.36A2.364 2.364 0 0 0 12 9.968z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;arch-node-title&quot; x=&quot;478.0&quot; y=&quot;389.5&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;478.0&quot; y=&quot;389.5&quot;&gt;ceph-mon-03&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber dg-node--server&quot; data-node=&quot;osd1&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot; data-dg-kind=&quot;server&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;634.0&quot; y=&quot;333.5&quot; width=&quot;150.0&quot; height=&quot;78.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;634.0&quot; y=&quot;333.5&quot; width=&quot;3&quot; height=&quot;78.0&quot; rx=&quot;1.5&quot;/&gt;&lt;rect class=&quot;arch-nic dg-tone-blue&quot; x=&quot;659.0&quot; y=&quot;343.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;682.0&quot; y=&quot;368.0&quot; text-anchor=&quot;middle&quot;&gt;nic1&lt;/text&gt;&lt;rect class=&quot;arch-nic dg-tone-amber&quot; x=&quot;713.0&quot; y=&quot;343.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;736.0&quot; y=&quot;368.0&quot; text-anchor=&quot;middle&quot;&gt;nic2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;670.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;675.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;684.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;689.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;724.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;729.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;738.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;743.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(650.0,380.5) scale(0.7)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M11.959.257A11.9 11.9 0 0 0 3.503 3.76A11.92 11.92 0 0 0 0 12.217a11.9 11.9 0 0 0 1.207 5.243c.72 1.474 1.888 2.944 3.208 4.044c.86-.47 1.35-.99 1.453-1.545c.1-.533-.134-1.107-.737-1.805a9.03 9.03 0 0 1-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 0 1-2.218 5.936c-.599.693-.84 1.292-.735 1.83c.108.556.595 1.068 1.449 1.522c1.322-1.1 2.489-2.57 3.209-4.046A11.9 11.9 0 0 0 24 12.217a11.93 11.93 0 0 0-3.503-8.457A11.92 11.92 0 0 0 12.04.257h-.041zm-.005 4.837a7.07 7.07 0 0 0-3.76 1.075A7.2 7.2 0 0 0 6.15 8.093a7.2 7.2 0 0 0-1.161 2.65a7.2 7.2 0 0 0 .04 3.125a7.1 7.1 0 0 0 1.22 2.607c.154.207.326.396.509.597l.185.202l.005.006q.012.01.026.027c.635.738.957 1.533.957 2.36a3.4 3.4 0 0 1-1.788 2.989a12 12 0 0 0 2.685 1.087c.14-.088.614-.441 1.077-1.083a4.9 4.9 0 0 0 .94-2.99a6.6 6.6 0 0 0-.49-2.37a6.7 6.7 0 0 0-1.302-2.033l-.002-.004l-.124-.142c-.21-.245-.428-.497-.602-.792a4.1 4.1 0 0 1-.462-1.135a4.3 4.3 0 0 1-.024-1.85a4.25 4.25 0 0 1 .686-1.564a4.22 4.22 0 0 1 3.432-1.773h.085a4.2 4.2 0 0 1 3.432 1.773c.33.466.568 1.007.686 1.565a4.3 4.3 0 0 1-.023 1.849a4.1 4.1 0 0 1-.463 1.135c-.173.295-.391.547-.602.792l-.123.142l-.004.004a6.7 6.7 0 0 0-1.301 2.033a6.6 6.6 0 0 0-.49 2.37a4.9 4.9 0 0 0 .94 2.99c.463.642.937.995 1.076 1.083a11.8 11.8 0 0 0 2.687-1.087a3.4 3.4 0 0 1-1.789-2.988c0-.817.313-1.59.956-2.359l.027-.03l.006-.004l.184-.204c.183-.2.355-.39.51-.596a7.1 7.1 0 0 0 1.22-2.608a7.2 7.2 0 0 0 .04-3.124a7.2 7.2 0 0 0-1.16-2.65a7.2 7.2 0 0 0-2.044-1.924a7.07 7.07 0 0 0-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 0 0-2.362 2.361A2.364 2.364 0 0 0 12 14.691a2.363 2.363 0 0 0 2.36-2.36A2.364 2.364 0 0 0 12 9.968z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;arch-node-title&quot; x=&quot;676.0&quot; y=&quot;389.5&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;676.0&quot; y=&quot;389.5&quot;&gt;ceph-osd-01&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber dg-node--server&quot; data-node=&quot;osd2&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot; data-dg-kind=&quot;server&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;832.0&quot; y=&quot;333.5&quot; width=&quot;150.0&quot; height=&quot;78.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;832.0&quot; y=&quot;333.5&quot; width=&quot;3&quot; height=&quot;78.0&quot; rx=&quot;1.5&quot;/&gt;&lt;rect class=&quot;arch-nic dg-tone-blue&quot; x=&quot;857.0&quot; y=&quot;343.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;880.0&quot; y=&quot;368.0&quot; text-anchor=&quot;middle&quot;&gt;nic1&lt;/text&gt;&lt;rect class=&quot;arch-nic dg-tone-amber&quot; x=&quot;911.0&quot; y=&quot;343.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;934.0&quot; y=&quot;368.0&quot; text-anchor=&quot;middle&quot;&gt;nic2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;868.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;873.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;882.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;887.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;922.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;927.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;936.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;941.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(848.0,380.5) scale(0.7)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M11.959.257A11.9 11.9 0 0 0 3.503 3.76A11.92 11.92 0 0 0 0 12.217a11.9 11.9 0 0 0 1.207 5.243c.72 1.474 1.888 2.944 3.208 4.044c.86-.47 1.35-.99 1.453-1.545c.1-.533-.134-1.107-.737-1.805a9.03 9.03 0 0 1-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 0 1-2.218 5.936c-.599.693-.84 1.292-.735 1.83c.108.556.595 1.068 1.449 1.522c1.322-1.1 2.489-2.57 3.209-4.046A11.9 11.9 0 0 0 24 12.217a11.93 11.93 0 0 0-3.503-8.457A11.92 11.92 0 0 0 12.04.257h-.041zm-.005 4.837a7.07 7.07 0 0 0-3.76 1.075A7.2 7.2 0 0 0 6.15 8.093a7.2 7.2 0 0 0-1.161 2.65a7.2 7.2 0 0 0 .04 3.125a7.1 7.1 0 0 0 1.22 2.607c.154.207.326.396.509.597l.185.202l.005.006q.012.01.026.027c.635.738.957 1.533.957 2.36a3.4 3.4 0 0 1-1.788 2.989a12 12 0 0 0 2.685 1.087c.14-.088.614-.441 1.077-1.083a4.9 4.9 0 0 0 .94-2.99a6.6 6.6 0 0 0-.49-2.37a6.7 6.7 0 0 0-1.302-2.033l-.002-.004l-.124-.142c-.21-.245-.428-.497-.602-.792a4.1 4.1 0 0 1-.462-1.135a4.3 4.3 0 0 1-.024-1.85a4.25 4.25 0 0 1 .686-1.564a4.22 4.22 0 0 1 3.432-1.773h.085a4.2 4.2 0 0 1 3.432 1.773c.33.466.568 1.007.686 1.565a4.3 4.3 0 0 1-.023 1.849a4.1 4.1 0 0 1-.463 1.135c-.173.295-.391.547-.602.792l-.123.142l-.004.004a6.7 6.7 0 0 0-1.301 2.033a6.6 6.6 0 0 0-.49 2.37a4.9 4.9 0 0 0 .94 2.99c.463.642.937.995 1.076 1.083a11.8 11.8 0 0 0 2.687-1.087a3.4 3.4 0 0 1-1.789-2.988c0-.817.313-1.59.956-2.359l.027-.03l.006-.004l.184-.204c.183-.2.355-.39.51-.596a7.1 7.1 0 0 0 1.22-2.608a7.2 7.2 0 0 0 .04-3.124a7.2 7.2 0 0 0-1.16-2.65a7.2 7.2 0 0 0-2.044-1.924a7.07 7.07 0 0 0-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 0 0-2.362 2.361A2.364 2.364 0 0 0 12 14.691a2.363 2.363 0 0 0 2.36-2.36A2.364 2.364 0 0 0 12 9.968z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;arch-node-title&quot; x=&quot;874.0&quot; y=&quot;389.5&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;874.0&quot; y=&quot;389.5&quot;&gt;ceph-osd-02&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber dg-node--server&quot; data-node=&quot;osd3&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot; data-dg-kind=&quot;server&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;1030.0&quot; y=&quot;333.5&quot; width=&quot;150.0&quot; height=&quot;78.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;1030.0&quot; y=&quot;333.5&quot; width=&quot;3&quot; height=&quot;78.0&quot; rx=&quot;1.5&quot;/&gt;&lt;rect class=&quot;arch-nic dg-tone-blue&quot; x=&quot;1055.0&quot; y=&quot;343.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;1078.0&quot; y=&quot;368.0&quot; text-anchor=&quot;middle&quot;&gt;nic1&lt;/text&gt;&lt;rect class=&quot;arch-nic dg-tone-amber&quot; x=&quot;1109.0&quot; y=&quot;343.5&quot; width=&quot;46.0&quot; height=&quot;28.0&quot; rx=&quot;4&quot;/&gt;&lt;text class=&quot;arch-nic-label&quot; x=&quot;1132.0&quot; y=&quot;368.0&quot; text-anchor=&quot;middle&quot;&gt;nic2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;1066.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;1071.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;1080.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;1085.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-blue is-used&quot; x=&quot;1120.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;1125.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;1&lt;/text&gt;&lt;rect class=&quot;arch-port dg-tone-amber is-used&quot; x=&quot;1134.0&quot; y=&quot;345.5&quot; width=&quot;10.0&quot; height=&quot;12.0&quot; rx=&quot;1&quot;/&gt;&lt;text class=&quot;arch-port-label is-used&quot; x=&quot;1139.0&quot; y=&quot;353.5&quot; text-anchor=&quot;middle&quot;&gt;2&lt;/text&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(1046.0,380.5) scale(0.7)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M11.959.257A11.9 11.9 0 0 0 3.503 3.76A11.92 11.92 0 0 0 0 12.217a11.9 11.9 0 0 0 1.207 5.243c.72 1.474 1.888 2.944 3.208 4.044c.86-.47 1.35-.99 1.453-1.545c.1-.533-.134-1.107-.737-1.805a9.03 9.03 0 0 1-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 0 1-2.218 5.936c-.599.693-.84 1.292-.735 1.83c.108.556.595 1.068 1.449 1.522c1.322-1.1 2.489-2.57 3.209-4.046A11.9 11.9 0 0 0 24 12.217a11.93 11.93 0 0 0-3.503-8.457A11.92 11.92 0 0 0 12.04.257h-.041zm-.005 4.837a7.07 7.07 0 0 0-3.76 1.075A7.2 7.2 0 0 0 6.15 8.093a7.2 7.2 0 0 0-1.161 2.65a7.2 7.2 0 0 0 .04 3.125a7.1 7.1 0 0 0 1.22 2.607c.154.207.326.396.509.597l.185.202l.005.006q.012.01.026.027c.635.738.957 1.533.957 2.36a3.4 3.4 0 0 1-1.788 2.989a12 12 0 0 0 2.685 1.087c.14-.088.614-.441 1.077-1.083a4.9 4.9 0 0 0 .94-2.99a6.6 6.6 0 0 0-.49-2.37a6.7 6.7 0 0 0-1.302-2.033l-.002-.004l-.124-.142c-.21-.245-.428-.497-.602-.792a4.1 4.1 0 0 1-.462-1.135a4.3 4.3 0 0 1-.024-1.85a4.25 4.25 0 0 1 .686-1.564a4.22 4.22 0 0 1 3.432-1.773h.085a4.2 4.2 0 0 1 3.432 1.773c.33.466.568 1.007.686 1.565a4.3 4.3 0 0 1-.023 1.849a4.1 4.1 0 0 1-.463 1.135c-.173.295-.391.547-.602.792l-.123.142l-.004.004a6.7 6.7 0 0 0-1.301 2.033a6.6 6.6 0 0 0-.49 2.37a4.9 4.9 0 0 0 .94 2.99c.463.642.937.995 1.076 1.083a11.8 11.8 0 0 0 2.687-1.087a3.4 3.4 0 0 1-1.789-2.988c0-.817.313-1.59.956-2.359l.027-.03l.006-.004l.184-.204c.183-.2.355-.39.51-.596a7.1 7.1 0 0 0 1.22-2.608a7.2 7.2 0 0 0 .04-3.124a7.2 7.2 0 0 0-1.16-2.65a7.2 7.2 0 0 0-2.044-1.924a7.07 7.07 0 0 0-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 0 0-2.362 2.361A2.364 2.364 0 0 0 12 14.691a2.363 2.363 0 0 0 2.36-2.36A2.364 2.364 0 0 0 12 9.968z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;arch-node-title&quot; x=&quot;1072.0&quot; y=&quot;389.5&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;1072.0&quot; y=&quot;389.5&quot;&gt;ceph-osd-03&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;/svg&gt;&lt;div class=&quot;diagram__marquee&quot; data-dg-marquee hidden&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;diagram__hint&quot; data-dg-hint hidden&gt;Right-drag to pan · Scroll to zoom · Drag a node to move&lt;/p&gt;
  &lt;figcaption&gt;Three MON hosts and three OSD hosts, each with two dual-port NICs, dual-homed to two leaf switches. bond0 and bond1 are MLAG bonds; each one has a member on leaf-01 and leaf-02.&lt;/figcaption&gt;
  &lt;p class=&quot;diagram__source&quot;&gt;Source: &lt;a href=&quot;https://github.com/AjiArya/website/blob/main/diagrams/ceph-storage-fabric.yaml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;diagrams/ceph-storage-fabric.yaml&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;h2 id=&quot;the-topology&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-topology&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
The topology&lt;/h2&gt;
&lt;p&gt;Six physical hosts sit below a pair of 48-port leaf switches. Each host has two dual-port NICs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NIC 1&lt;/strong&gt; has two ports.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NIC 2&lt;/strong&gt; has two ports.&lt;/li&gt;
&lt;li&gt;Every port is connected: one port from each NIC goes to &lt;code&gt;leaf-01&lt;/code&gt;, and one port from each NIC goes to &lt;code&gt;leaf-02&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That gives every host four independent paths to the fabric, arranged as two two-member bonds:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;bond0&lt;/strong&gt; = &lt;code&gt;nic1/p1&lt;/code&gt; → &lt;code&gt;leaf-01&lt;/code&gt; + &lt;code&gt;nic2/p1&lt;/code&gt; → &lt;code&gt;leaf-02&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;bond1&lt;/strong&gt; = &lt;code&gt;nic2/p2&lt;/code&gt; → &lt;code&gt;leaf-01&lt;/code&gt; + &lt;code&gt;nic1/p2&lt;/code&gt; → &lt;code&gt;leaf-02&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each bond has one member on each NIC and one member on each leaf. A failed NIC, cable, or leaf removes one member from each bond, not a whole bond. The dashed badges and matching colors in the physical diagram mark the two bond groups.&lt;/p&gt;
&lt;p&gt;The leaf pair must be configured as an MLAG (or a stacked pair) so both switches present one logical LAG endpoint. Without that, the two bond members on different leaves would not form a single LAG.&lt;/p&gt;
&lt;h2 id=&quot;logical-networks&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#logical-networks&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Logical networks&lt;/h2&gt;
&lt;p&gt;The public network is the client-facing path: clients reach RGW/MON services and the OSDs accept front-end traffic. The cluster network is the private back-end used by OSDs for heartbeat, object replication, and recovery. Ceph Monitors always operate on the public network, so the dedicated MON hosts are shown only on the public rail.&lt;/p&gt;
&lt;p&gt;An OSD host is normally on both networks. In the logical diagram, the two colored rails show that membership directly; hovering a legend entry highlights that network’s rail and stubs. In the physical diagram, the same host has separate NICs and ports for each path.&lt;/p&gt;
&lt;h2 id=&quot;reading-the-port-grid&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#reading-the-port-grid&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Reading the port grid&lt;/h2&gt;
&lt;p&gt;Each leaf shows its full 48-port grid. Port numbers 1–12 are in use: six hosts contribute two links each. The highlighted ports are the ones carrying links in this diagram.&lt;/p&gt;
&lt;p&gt;On a host, the two NIC blocks show the port-level wiring directly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nic1/1&lt;/code&gt; → &lt;code&gt;leaf-01&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nic1/2&lt;/code&gt; → &lt;code&gt;leaf-02&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nic2/1&lt;/code&gt; → &lt;code&gt;leaf-02&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;nic2/2&lt;/code&gt; → &lt;code&gt;leaf-01&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Port cells and links are colored by bond: bond0 is blue, bond1 is amber. Each bond gets a dashed badge below its host, labeled &lt;code&gt;bond0&lt;/code&gt; or &lt;code&gt;bond1&lt;/code&gt;, so the bond grouping is visible without hiding the individual NIC/port mapping. The NIC labels still identify &lt;code&gt;nic1&lt;/code&gt; and &lt;code&gt;nic2&lt;/code&gt;; the port numbers identify the member port. Hovering any host highlights its four links and both bond badges, and dims the rest; the diagram is also pan/zoomable for detail.&lt;/p&gt;
&lt;h2 id=&quot;what-i-check-first&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#what-i-check-first&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
What I check first&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MLAG health&lt;/strong&gt; on the leaf pair. A split MLAG is worse than a single switch.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bond member state&lt;/strong&gt; on every host. A bond that has silently lost half its members still passes traffic, but no longer has the redundancy you designed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LACP hashing and link utilization.&lt;/strong&gt; Four links do not help if one flow can only use one member.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Monitor network latency.&lt;/strong&gt; Keep the MON quorum on the lowest-latency path, and do not let bulk OSD recovery saturate it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failure-domain reality.&lt;/strong&gt; Two leaf switches are not two failure domains if they share power, management, or an upstream link.&lt;/li&gt;
&lt;/ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Operating OpenStack without fear</title>
        <published>2026-10-26T00:00:00+00:00</published>
        <updated>2026-10-26T00:00:00+00:00</updated>
        
        <author>
          <name>Aji Arya</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://ajiarya.id/blog/operating-openstack-without-fear/"/>
        <id>https://ajiarya.id/blog/operating-openstack-without-fear/</id>
        
        <content type="html" xml:base="https://ajiarya.id/blog/operating-openstack-without-fear/">&lt;p&gt;OpenStack upgrades have a reputation for drama. Most of the drama I have seen did not come from the upgrade itself; it came from the assumptions around it — undocumented local changes, untested database migrations, and a rollback plan that existed only in someone’s head.&lt;/p&gt;
&lt;h2 id=&quot;start-with-a-map&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#start-with-a-map&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Start with a map&lt;/h2&gt;
&lt;p&gt;Before touching a control-plane node, draw the system as it actually is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Which services run on which hosts?&lt;/li&gt;
&lt;li&gt;Which database and message queue do they depend on?&lt;/li&gt;
&lt;li&gt;Where does the API traffic enter, and what checks the health of each endpoint?&lt;/li&gt;
&lt;li&gt;Which tenant networks cross which physical interfaces?&lt;/li&gt;
&lt;li&gt;What is the storage path for a volume that is attached to a running instance?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The drawing does not need to be beautiful. It needs to be true. A good diagram makes the upgrade order obvious, and it exposes the components that have no obvious owner.&lt;/p&gt;
&lt;h2 id=&quot;define-done&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#define-done&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Define done&lt;/h2&gt;
&lt;p&gt;An upgrade is not done when the packages install. It is done when:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Every API endpoint reports the expected version.&lt;/li&gt;
&lt;li&gt;A new instance can boot, attach a volume, and reach the network.&lt;/li&gt;
&lt;li&gt;An existing instance survives a live migration.&lt;/li&gt;
&lt;li&gt;The control-plane services survive a restart of one node.&lt;/li&gt;
&lt;li&gt;The monitoring is quiet for the right reasons, not because it stopped collecting.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;keep-a-rollback-path&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#keep-a-rollback-path&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Keep a rollback path&lt;/h2&gt;
&lt;p&gt;A rollback is not a time machine. Database migrations, message queue schemas, and agent versions can make a clean rollback impossible. Decide in advance which parts are reversible, which parts are forward-only, and which parts need a maintenance window.&lt;/p&gt;
&lt;h2 id=&quot;the-habit&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-habit&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
The habit&lt;/h2&gt;
&lt;p&gt;The best upgrade is the one that feels boring. That does not happen by accident. It happens when the system is mapped, the success criteria are written down, and the team has practiced the failure modes before they are real.&lt;/p&gt;
&lt;p&gt;That is the work I care about: not making infrastructure look complicated, but making it legible enough to operate calmly.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Ceph’s data path is simpler than its operations</title>
        <published>2026-10-19T00:00:00+00:00</published>
        <updated>2026-10-19T00:00:00+00:00</updated>
        
        <author>
          <name>Aji Arya</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://ajiarya.id/blog/cephs-data-path/"/>
        <id>https://ajiarya.id/blog/cephs-data-path/</id>
        
        <content type="html" xml:base="https://ajiarya.id/blog/cephs-data-path/">&lt;p&gt;Ceph can feel like a system with too many daemons. The data path, though, is remarkably direct: clients authenticate, receive a cluster map, and then talk to the OSDs that own the objects.&lt;/p&gt;
&lt;figure class=&quot;diagram&quot; data-diagram data-diagram-name=&quot;ceph-data-path&quot; data-dg-source=&quot;@ajiarya&quot;&gt;
  &lt;div class=&quot;diagram__toolbar&quot; data-dg-toolbar role=&quot;toolbar&quot; aria-label=&quot;Diagram controls&quot; hidden&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Animation&quot; data-dg-animation-group&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-animation-control&gt;
        &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-animation aria-label=&quot;Animation: playing&quot; title=&quot;Animation options&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-ceph-data-path-animation-panel&quot;&gt;&lt;span class=&quot;diagram__icon&quot; data-dg-animation-icon aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span class=&quot;diagram__button-label&quot; data-dg-animation-label&gt;Pause&lt;/span&gt;&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-animation-panel id=&quot;dg-ceph-data-path-animation-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;play&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;▶&lt;/span&gt;&lt;span&gt;Start&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;pause&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span&gt;Pause&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;disable&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;■&lt;/span&gt;&lt;span&gt;Disable&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-speed-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-speed aria-label=&quot;Animation speed: 1x&quot; title=&quot;Animation speed&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-ceph-data-path-speed-panel&quot;&gt;1×&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel&quot; data-dg-speed-panel id=&quot;dg-ceph-data-path-speed-panel&quot;&gt;
          &lt;input class=&quot;diagram__range&quot; type=&quot;range&quot; min=&quot;0&quot; max=&quot;4&quot; step=&quot;1&quot; value=&quot;2&quot; data-dg-speed-range aria-label=&quot;Animation speed&quot;&gt;
          &lt;div class=&quot;diagram__ticks&quot; aria-hidden=&quot;true&quot;&gt;
            &lt;span data-dg-speed-tick&gt;0.25×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;0.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;2×&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover diagram__popover--end&quot; data-dg-direction-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value diagram__button--direction&quot; type=&quot;button&quot; data-dg-direction aria-label=&quot;Animation direction: alternating&quot; title=&quot;Animation direction&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-ceph-data-path-direction-panel&quot;&gt;↔&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-direction-panel id=&quot;dg-ceph-data-path-direction-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;forward&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;→&lt;/span&gt;&lt;span&gt;Forward&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;reverse&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;←&lt;/span&gt;&lt;span&gt;Reverse&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;alternate&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;↔&lt;/span&gt;&lt;span&gt;Alternating&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Zoom&quot;&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-out aria-label=&quot;Zoom out&quot; title=&quot;Zoom out&quot;&gt;−&lt;/button&gt;
      &lt;span class=&quot;diagram__zoom-label&quot; data-dg-zoom-label aria-live=&quot;polite&quot;&gt;100%&lt;/span&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-in aria-label=&quot;Zoom in&quot; title=&quot;Zoom in&quot;&gt;+&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-fit aria-label=&quot;Fit diagram to view&quot; title=&quot;Fit diagram&quot;&gt;Fit&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-reset aria-label=&quot;Reset diagram and view&quot; title=&quot;Reset diagram&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-png aria-label=&quot;Copy diagram as PNG&quot; title=&quot;Copy diagram as PNG&quot;&gt;PNG&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;diagram__canvas&quot; data-dg-canvas tabindex=&quot;0&quot; role=&quot;group&quot; aria-label=&quot;Diagram; left-drag to select, right-drag to pan, scroll to zoom, drag a node to move it, pinch to zoom&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 547 506&quot; role=&quot;img&quot; aria-labelledby=&quot;ceph-data-path-title ceph-data-path-desc&quot; class=&quot;dg-svg&quot; data-dg-draw-ms=&quot;1200&quot; data-dg-flow-ms=&quot;2800&quot; data-dg-stagger-ms=&quot;80&quot; data-dg-direction=&quot;alternate&quot; data-dg-autoplay=&quot;true&quot; data-dg-static=&quot;false&quot; data-dg-no-drag=&quot;false&quot; data-dg-fit-mobile=&quot;false&quot; style=&quot;--dg-draw-duration:1200ms;--dg-flow-duration:2800ms;--dg-pulse-duration:2000ms&quot;&gt;&lt;title id=&quot;ceph-data-path-title&quot;&gt;Ceph data path&lt;/title&gt;&lt;desc id=&quot;ceph-data-path-desc&quot;&gt;Object clients authenticate against the monitor quorum, receive a cluster map, and read or write objects directly through RADOS to the OSDs.&lt;/desc&gt;&lt;defs&gt;&lt;marker id=&quot;ceph-data-path-arrow-amber&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-amber&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;ceph-data-path-arrow-blue&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-blue&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;ceph-data-path-arrow-cyan&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-cyan&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;ceph-data-path-arrow-violet&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-violet&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;g class=&quot;dg-groups&quot;&gt;&lt;g class=&quot;dg-group dg-tone-violet&quot; data-group=&quot;quorum&quot;&gt;&lt;rect class=&quot;dg-group-box&quot; x=&quot;32.0&quot; y=&quot;118.0&quot; width=&quot;328.8&quot; height=&quot;110.0&quot; rx=&quot;10&quot;/&gt;&lt;text class=&quot;dg-group-label&quot; x=&quot;46.0&quot; y=&quot;139.0&quot;&gt;MON / MGR quorum&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-group dg-tone-amber&quot; data-group=&quot;osds&quot;&gt;&lt;rect class=&quot;dg-group-box&quot; x=&quot;32.0&quot; y=&quot;246.0&quot; width=&quot;480.0&quot; height=&quot;110.0&quot; rx=&quot;10&quot;/&gt;&lt;text class=&quot;dg-group-label&quot; x=&quot;46.0&quot; y=&quot;267.0&quot;&gt;OSD nodes&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;dg-edges&quot;&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 146.3 84.0 L 146.3 122.0 L 452.0 122.0 L 452.0 160.0&quot; pathLength=&quot;1&quot; data-from=&quot;client&quot; data-to=&quot;rgw&quot; data-dg-edge=&quot;0&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-blue)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-cyan dg-style-solid&quot; d=&quot;M 388.8 186.0 L 344.8 186.0&quot; pathLength=&quot;1&quot; data-from=&quot;rgw&quot; data-to=&quot;mon&quot; data-dg-edge=&quot;1&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:80ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-cyan)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-cyan dg-style-solid dg-edge--flow&quot; d=&quot;M 425.4 212.0 L 425.4 232.0 L 136.0 232.0 L 136.0 256.0 L 108.0 256.0 L 108.0 288.0&quot; pathLength=&quot;1&quot; data-from=&quot;rgw&quot; data-to=&quot;osd1&quot; data-dg-edge=&quot;2&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;flow&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:160ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-cyan)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-cyan dg-style-solid dg-edge--flow&quot; d=&quot;M 452.0 212.0 L 452.0 256.0 L 288.7 256.0 L 288.7 288.0&quot; pathLength=&quot;1&quot; data-from=&quot;rgw&quot; data-to=&quot;osd2&quot; data-dg-edge=&quot;3&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;flow&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:240ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-cyan)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-cyan dg-style-solid dg-edge--flow&quot; d=&quot;M 478.6 212.0 L 478.6 262.0 L 436.0 262.0 L 436.0 288.0&quot; pathLength=&quot;1&quot; data-from=&quot;rgw&quot; data-to=&quot;osd3&quot; data-dg-edge=&quot;4&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;flow&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:320ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-cyan)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-violet dg-style-solid&quot; d=&quot;M 111.2 212.0 L 111.2 244.0 L 255.3 244.0 L 255.3 288.0&quot; pathLength=&quot;1&quot; data-from=&quot;mgr&quot; data-to=&quot;osd2&quot; data-dg-edge=&quot;5&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:400ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-violet)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 108.0 340.0 L 108.0 366.0 L 90.5 366.0 L 90.5 416.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd1&quot; data-to=&quot;disk&quot; data-dg-edge=&quot;6&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:480ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-amber)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 272.0 340.0 L 272.0 378.0 L 122.9 378.0 L 122.9 416.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd2&quot; data-to=&quot;disk&quot; data-dg-edge=&quot;7&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:560ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-amber)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 436.0 340.0 L 436.0 390.0 L 155.4 390.0 L 155.4 416.0&quot; pathLength=&quot;1&quot; data-from=&quot;osd3&quot; data-to=&quot;disk&quot; data-dg-edge=&quot;8&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:640ms&quot; marker-end=&quot;url(#ceph-data-path-arrow-amber)&quot; /&gt;&lt;/g&gt;&lt;g class=&quot;dg-packets&quot; aria-hidden=&quot;true&quot;&gt;&lt;circle class=&quot;dg-packet dg-tone-cyan&quot; data-dg-edge=&quot;2&quot; r=&quot;4.5&quot; cx=&quot;0&quot; cy=&quot;0&quot; opacity=&quot;0&quot;/&gt;&lt;circle class=&quot;dg-packet dg-tone-cyan&quot; data-dg-edge=&quot;3&quot; r=&quot;4.5&quot; cx=&quot;0&quot; cy=&quot;0&quot; opacity=&quot;0&quot;/&gt;&lt;circle class=&quot;dg-packet dg-tone-cyan&quot; data-dg-edge=&quot;4&quot; r=&quot;4.5&quot; cx=&quot;0&quot; cy=&quot;0&quot; opacity=&quot;0&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;dg-nodes&quot;&gt;&lt;g class=&quot;dg-node dg-tone-blue&quot; data-node=&quot;client&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;32.0&quot; width=&quot;196.6&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;32.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,47.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M8 7a4 4 0 1 0 8 0a4 4 0 0 0-8 0M6 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;63.0&quot;&gt;S3 / Swift client&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-cyan&quot; data-node=&quot;rgw&quot; data-group=&quot;&quot; data-dg-lb=&quot;true&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;388.8&quot; y=&quot;160.0&quot; width=&quot;126.4&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;388.8&quot; y=&quot;160.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(404.8,175.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0m.6-3h16.8M3.6 15h16.8&quot;/&gt;&lt;path d=&quot;M11.5 3a17 17 0 0 0 0 18m1-18a17 17 0 0 1 0 18&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;432.8&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;432.8&quot; y=&quot;191.0&quot;&gt;Ceph RGW&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet&quot; data-node=&quot;mgr&quot; data-group=&quot;quorum&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;160.0&quot; width=&quot;126.4&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;160.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,175.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37c1 .608 2.296.07 2.572-1.065&quot;/&gt;&lt;path d=&quot;M9 12a3 3 0 1 0 6 0a3 3 0 0 0-6 0&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;191.0&quot;&gt;Ceph MGR&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet&quot; data-node=&quot;mon&quot; data-group=&quot;quorum&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;218.4&quot; y=&quot;160.0&quot; width=&quot;126.4&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;218.4&quot; y=&quot;160.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(234.4,175.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M3 5a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v10a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1zm4 15h10m-8-4v4m6-4v4&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;262.4&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;262.4&quot; y=&quot;191.0&quot;&gt;Ceph MON&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;osd1&quot; data-group=&quot;osds&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;288.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;288.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,303.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M6 4h10l4 4v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2&quot;/&gt;&lt;path d=&quot;M10 14a2 2 0 1 0 4 0a2 2 0 1 0-4 0m4-10v4H8V4&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;319.0&quot;&gt;OSD 1&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;osd2&quot; data-group=&quot;osds&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;212.0&quot; y=&quot;288.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;212.0&quot; y=&quot;288.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(228.0,303.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M6 4h10l4 4v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2&quot;/&gt;&lt;path d=&quot;M10 14a2 2 0 1 0 4 0a2 2 0 1 0-4 0m4-10v4H8V4&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;256.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;256.0&quot; y=&quot;319.0&quot;&gt;OSD 2&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;osd3&quot; data-group=&quot;osds&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;376.0&quot; y=&quot;288.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;376.0&quot; y=&quot;288.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(392.0,303.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M6 4h10l4 4v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2&quot;/&gt;&lt;path d=&quot;M10 14a2 2 0 1 0 4 0a2 2 0 1 0-4 0m4-10v4H8V4&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;420.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;420.0&quot; y=&quot;319.0&quot;&gt;OSD 3&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-neutral&quot; data-node=&quot;disk&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;416.0&quot; width=&quot;149.8&quot; height=&quot;58.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;416.0&quot; width=&quot;3&quot; height=&quot;58.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,434.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M3 6a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2m2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8m-9 4h4&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;441.0&quot;&gt;NVMe / HDD&lt;/tspan&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;459.0&quot;&gt;(BlueStore)&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;dg-edge-labels&quot;&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;0&quot; x=&quot;299.1&quot; y=&quot;115.0&quot; text-anchor=&quot;middle&quot;&gt;S3 / Swift&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;1&quot; x=&quot;366.8&quot; y=&quot;179.0&quot; text-anchor=&quot;middle&quot;&gt;auth / map&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;2&quot; x=&quot;280.7&quot; y=&quot;225.0&quot; text-anchor=&quot;middle&quot;&gt;RADOS&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;5&quot; x=&quot;183.3&quot; y=&quot;237.0&quot; text-anchor=&quot;middle&quot;&gt;telemetry&lt;/text&gt;&lt;/g&gt;&lt;/svg&gt;&lt;div class=&quot;diagram__marquee&quot; data-dg-marquee hidden&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;diagram__hint&quot; data-dg-hint hidden&gt;Right-drag to pan · Scroll to zoom · Drag a node to move&lt;/p&gt;
  &lt;figcaption&gt;The Ceph object data path: authentication through MON, placement through the cluster map, and I/O directly to OSDs.&lt;/figcaption&gt;
  &lt;p class=&quot;diagram__source&quot;&gt;Source: &lt;a href=&quot;https://github.com/AjiArya/website/blob/main/diagrams/ceph-data-path.yaml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;diagrams/ceph-data-path.yaml&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;h2 id=&quot;the-parts-that-matter&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-parts-that-matter&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
The parts that matter&lt;/h2&gt;
&lt;p&gt;The monitor quorum is the source of truth for cluster membership and the cluster map. If the monitors cannot agree, clients cannot get a current view of the cluster. That is why monitor latency and quorum health deserve attention before the first OSD fills up.&lt;/p&gt;
&lt;p&gt;The manager is not in the I/O path. It collects telemetry, exposes the dashboard, and runs modules. Losing it should not stop writes; losing the monitor quorum will.&lt;/p&gt;
&lt;p&gt;RGW is the object gateway. It authenticates S3 and Swift requests and translates them into RADOS operations. Once a client has a map, reads and writes go to OSDs, not through the gateway again.&lt;/p&gt;
&lt;h2 id=&quot;the-operational-surface&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-operational-surface&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
The operational surface&lt;/h2&gt;
&lt;p&gt;The complexity is in placement, recovery, and failure domains:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Placement groups&lt;/strong&gt; decide how objects map to OSDs. A poorly planned pool can make recovery slow or impossible to reason about.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Failure domains&lt;/strong&gt; are only useful if they match reality. A “rack” that shares a power feed is not a failure domain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recovery&lt;/strong&gt; is a first-class workload. A cluster that is healthy at steady state can still be unusable during a rebuild.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BlueStore&lt;/strong&gt; puts data and metadata on the same device. That is simpler to operate, but capacity planning still needs headroom.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;what-i-check-first&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#what-i-check-first&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
What I check first&lt;/h2&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;ceph&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; -s&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;ceph&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; osd df tree&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;ceph&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; pg stat&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;ceph&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; health detail&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first command tells me whether the cluster is healthy. The second tells me whether the capacity headroom is real. The third tells me whether recovery is making progress. The fourth tells me whether the health is a warning I can ignore or a symptom of the next outage.&lt;/p&gt;
&lt;p&gt;The diagram does not make Ceph simple. It makes the conversation honest: the data path is short, and the operational work is everything around it.&lt;/p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>The Kubernetes control plane, as it actually runs on OpenStack</title>
        <published>2026-10-12T00:00:00+00:00</published>
        <updated>2026-10-12T00:00:00+00:00</updated>
        
        <author>
          <name>Aji Arya</name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://ajiarya.id/blog/kubernetes-control-plane-on-openstack/"/>
        <id>https://ajiarya.id/blog/kubernetes-control-plane-on-openstack/</id>
        
        <content type="html" xml:base="https://ajiarya.id/blog/kubernetes-control-plane-on-openstack/">&lt;p&gt;Most Kubernetes diagrams start at the API server. That is a reasonable place to start reading, but it is not where a request starts, and it is not where the interesting failures live.&lt;/p&gt;
&lt;p&gt;Here is the path I use when I need to explain a cluster to someone who will operate it:&lt;/p&gt;
&lt;figure class=&quot;diagram&quot; data-diagram data-diagram-name=&quot;k8s-control-plane&quot; data-dg-source=&quot;@ajiarya&quot;&gt;
  &lt;div class=&quot;diagram__toolbar&quot; data-dg-toolbar role=&quot;toolbar&quot; aria-label=&quot;Diagram controls&quot; hidden&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Animation&quot; data-dg-animation-group&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-animation-control&gt;
        &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-animation aria-label=&quot;Animation: playing&quot; title=&quot;Animation options&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-k8s-control-plane-animation-panel&quot;&gt;&lt;span class=&quot;diagram__icon&quot; data-dg-animation-icon aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span class=&quot;diagram__button-label&quot; data-dg-animation-label&gt;Pause&lt;/span&gt;&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-animation-panel id=&quot;dg-k8s-control-plane-animation-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;play&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;▶&lt;/span&gt;&lt;span&gt;Start&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;pause&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;❚❚&lt;/span&gt;&lt;span&gt;Pause&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-anim-action=&quot;disable&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;■&lt;/span&gt;&lt;span&gt;Disable&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover&quot; data-dg-speed-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-speed aria-label=&quot;Animation speed: 1x&quot; title=&quot;Animation speed&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-k8s-control-plane-speed-panel&quot;&gt;1×&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel&quot; data-dg-speed-panel id=&quot;dg-k8s-control-plane-speed-panel&quot;&gt;
          &lt;input class=&quot;diagram__range&quot; type=&quot;range&quot; min=&quot;0&quot; max=&quot;4&quot; step=&quot;1&quot; value=&quot;2&quot; data-dg-speed-range aria-label=&quot;Animation speed&quot;&gt;
          &lt;div class=&quot;diagram__ticks&quot; aria-hidden=&quot;true&quot;&gt;
            &lt;span data-dg-speed-tick&gt;0.25×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;0.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;1.5×&lt;/span&gt;
            &lt;span data-dg-speed-tick&gt;2×&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;diagram__popover diagram__popover--end&quot; data-dg-direction-control&gt;
        &lt;button class=&quot;diagram__button diagram__button--value diagram__button--direction&quot; type=&quot;button&quot; data-dg-direction aria-label=&quot;Animation direction: alternating&quot; title=&quot;Animation direction&quot; aria-haspopup=&quot;true&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;dg-k8s-control-plane-direction-panel&quot;&gt;↔&lt;/button&gt;
        &lt;div class=&quot;diagram__popover-panel diagram__options-panel&quot; data-dg-direction-panel id=&quot;dg-k8s-control-plane-direction-panel&quot;&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;forward&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;→&lt;/span&gt;&lt;span&gt;Forward&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;reverse&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;←&lt;/span&gt;&lt;span&gt;Reverse&lt;/span&gt;&lt;/button&gt;
          &lt;button class=&quot;diagram__option&quot; type=&quot;button&quot; data-dg-direction-option=&quot;alternate&quot;&gt;&lt;span class=&quot;diagram__option-icon&quot; aria-hidden=&quot;true&quot;&gt;↔&lt;/span&gt;&lt;span&gt;Alternating&lt;/span&gt;&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;diagram__controls&quot; role=&quot;group&quot; aria-label=&quot;Zoom&quot;&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-out aria-label=&quot;Zoom out&quot; title=&quot;Zoom out&quot;&gt;−&lt;/button&gt;
      &lt;span class=&quot;diagram__zoom-label&quot; data-dg-zoom-label aria-live=&quot;polite&quot;&gt;100%&lt;/span&gt;
      &lt;button class=&quot;diagram__button&quot; type=&quot;button&quot; data-dg-zoom-in aria-label=&quot;Zoom in&quot; title=&quot;Zoom in&quot;&gt;+&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-fit aria-label=&quot;Fit diagram to view&quot; title=&quot;Fit diagram&quot;&gt;Fit&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--fit&quot; type=&quot;button&quot; data-dg-reset aria-label=&quot;Reset diagram and view&quot; title=&quot;Reset diagram&quot;&gt;Reset&lt;/button&gt;
      &lt;button class=&quot;diagram__button diagram__button--value&quot; type=&quot;button&quot; data-dg-png aria-label=&quot;Copy diagram as PNG&quot; title=&quot;Copy diagram as PNG&quot;&gt;PNG&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;diagram__canvas&quot; data-dg-canvas tabindex=&quot;0&quot; role=&quot;group&quot; aria-label=&quot;Diagram; left-drag to select, right-drag to pan, scroll to zoom, drag a node to move it, pinch to zoom&quot;&gt;&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 899 656&quot; role=&quot;img&quot; aria-labelledby=&quot;k8s-control-plane-title k8s-control-plane-desc&quot; class=&quot;dg-svg&quot; data-dg-draw-ms=&quot;1200&quot; data-dg-flow-ms=&quot;2600&quot; data-dg-stagger-ms=&quot;80&quot; data-dg-direction=&quot;alternate&quot; data-dg-autoplay=&quot;true&quot; data-dg-static=&quot;false&quot; data-dg-no-drag=&quot;false&quot; data-dg-fit-mobile=&quot;false&quot; style=&quot;--dg-draw-duration:1200ms;--dg-flow-duration:2600ms;--dg-pulse-duration:2000ms&quot;&gt;&lt;title id=&quot;k8s-control-plane-title&quot;&gt;Kubernetes control plane on OpenStack&lt;/title&gt;&lt;desc id=&quot;k8s-control-plane-desc&quot;&gt;Requests enter through an ingress gateway, reach the Kubernetes API server, and are reconciled onto worker nodes backed by Ceph storage.&lt;/desc&gt;&lt;defs&gt;&lt;marker id=&quot;k8s-control-plane-arrow-amber&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-amber&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;k8s-control-plane-arrow-blue&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-blue&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;k8s-control-plane-arrow-cyan&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-cyan&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;k8s-control-plane-arrow-green&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-green&quot;/&gt;&lt;/marker&gt;&lt;marker id=&quot;k8s-control-plane-arrow-violet&quot; viewBox=&quot;0 0 10 10&quot; refX=&quot;9&quot; refY=&quot;5&quot; markerWidth=&quot;7&quot; markerHeight=&quot;7&quot; orient=&quot;auto-start-reverse&quot;&gt;&lt;path d=&quot;M 0 1 L 9 5 L 0 9 z&quot; class=&quot;dg-arrow dg-tone-violet&quot;/&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;g class=&quot;dg-groups&quot;&gt;&lt;g class=&quot;dg-group dg-tone-violet&quot; data-group=&quot;control&quot;&gt;&lt;rect class=&quot;dg-group-box&quot; x=&quot;32.0&quot; y=&quot;252.0&quot; width=&quot;834.8&quot; height=&quot;110.0&quot; rx=&quot;10&quot;/&gt;&lt;text class=&quot;dg-group-label&quot; x=&quot;46.0&quot; y=&quot;273.0&quot;&gt;Control plane&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-group dg-tone-green&quot; data-group=&quot;workers&quot;&gt;&lt;rect class=&quot;dg-group-box&quot; x=&quot;32.0&quot; y=&quot;380.0&quot; width=&quot;508.4&quot; height=&quot;116.0&quot; rx=&quot;10&quot;/&gt;&lt;text class=&quot;dg-group-label&quot; x=&quot;46.0&quot; y=&quot;401.0&quot;&gt;Worker nodes&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-group dg-tone-amber&quot; data-group=&quot;ceph&quot;&gt;&lt;rect class=&quot;dg-group-box&quot; x=&quot;32.0&quot; y=&quot;514.0&quot; width=&quot;336.6&quot; height=&quot;110.0&quot; rx=&quot;10&quot;/&gt;&lt;text class=&quot;dg-group-label&quot; x=&quot;46.0&quot; y=&quot;535.0&quot;&gt;Ceph cluster&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;dg-edges&quot;&gt;&lt;path class=&quot;dg-edge dg-tone-blue dg-style-solid&quot; d=&quot;M 108.0 84.0 L 108.0 160.0&quot; pathLength=&quot;1&quot; data-from=&quot;client&quot; data-to=&quot;ingress&quot; data-dg-edge=&quot;0&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:0ms&quot; marker-end=&quot;url(#k8s-control-plane-arrow-blue)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-cyan dg-style-solid&quot; d=&quot;M 108.0 218.0 L 108.0 240.0 L 168.0 240.0 L 168.0 256.0 L 134.6 256.0 L 134.6 294.0&quot; pathLength=&quot;1&quot; data-from=&quot;ingress&quot; data-to=&quot;api&quot; data-dg-edge=&quot;1&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:80ms&quot; marker-end=&quot;url(#k8s-control-plane-arrow-cyan)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-violet dg-style-solid&quot; d=&quot;M 221.2 312.0 L 248.0 312.0 L 248.0 280.0 L 712.0 280.0 L 712.0 320.0 L 730.8 320.0&quot; pathLength=&quot;1&quot; data-from=&quot;api&quot; data-to=&quot;etcd&quot; data-dg-edge=&quot;2&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:160ms&quot; marker-end=&quot;url(#k8s-control-plane-arrow-violet)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-violet dg-style-solid&quot; d=&quot;M 265.2 320.0 L 221.2 320.0&quot; pathLength=&quot;1&quot; data-from=&quot;scheduler&quot; data-to=&quot;api&quot; data-dg-edge=&quot;3&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:240ms&quot; marker-end=&quot;url(#k8s-control-plane-arrow-violet)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-violet dg-style-solid&quot; d=&quot;M 482.4 320.0 L 464.0 320.0 L 464.0 280.0 L 248.0 280.0 L 248.0 328.0 L 221.2 328.0&quot; pathLength=&quot;1&quot; data-from=&quot;controller&quot; data-to=&quot;api&quot; data-dg-edge=&quot;4&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:320ms&quot; marker-end=&quot;url(#k8s-control-plane-arrow-violet)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-violet dg-style-solid&quot; d=&quot;M 134.6 346.0 L 134.6 368.0 L 72.0 368.0 L 72.0 376.0 L 108.0 376.0 L 108.0 425.0&quot; pathLength=&quot;1&quot; data-from=&quot;api&quot; data-to=&quot;kubelet&quot; data-dg-edge=&quot;5&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:400ms&quot; marker-end=&quot;url(#k8s-control-plane-arrow-violet)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-green dg-style-solid dg-edge--flow&quot; d=&quot;M 168.0 445.7 L 184.0 445.7 L 184.0 451.0 L 212.0 451.0&quot; pathLength=&quot;1&quot; data-from=&quot;kubelet&quot; data-to=&quot;cri&quot; data-dg-edge=&quot;6&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;flow&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:480ms&quot; marker-end=&quot;url(#k8s-control-plane-arrow-green)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-green dg-style-solid&quot; d=&quot;M 168.0 456.3 L 192.0 456.3 L 192.0 408.0 L 384.0 408.0 L 384.0 451.0 L 398.0 451.0&quot; pathLength=&quot;1&quot; data-from=&quot;kubelet&quot; data-to=&quot;csi&quot; data-dg-edge=&quot;7&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:560ms&quot; marker-end=&quot;url(#k8s-control-plane-arrow-green)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-green dg-style-solid dg-edge--flow&quot; d=&quot;M 461.2 477.0 L 461.2 516.5 L 285.5 516.5 L 285.5 556.0&quot; pathLength=&quot;1&quot; data-from=&quot;csi&quot; data-to=&quot;osd&quot; data-dg-edge=&quot;8&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;flow&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:640ms&quot; marker-end=&quot;url(#k8s-control-plane-arrow-green)&quot; /&gt;&lt;path class=&quot;dg-edge dg-tone-amber dg-style-solid&quot; d=&quot;M 174.4 582.0 L 218.4 582.0&quot; pathLength=&quot;1&quot; data-from=&quot;mon&quot; data-to=&quot;osd&quot; data-dg-edge=&quot;9&quot; data-dg-route=&quot;elbow&quot; data-dg-animation=&quot;none&quot; data-dg-direction=&quot;&quot; style=&quot;--dg-delay:720ms&quot; marker-end=&quot;url(#k8s-control-plane-arrow-amber)&quot; /&gt;&lt;/g&gt;&lt;g class=&quot;dg-packets&quot; aria-hidden=&quot;true&quot;&gt;&lt;circle class=&quot;dg-packet dg-tone-green&quot; data-dg-edge=&quot;6&quot; r=&quot;4.5&quot; cx=&quot;0&quot; cy=&quot;0&quot; opacity=&quot;0&quot;/&gt;&lt;circle class=&quot;dg-packet dg-tone-green&quot; data-dg-edge=&quot;8&quot; r=&quot;4.5&quot; cx=&quot;0&quot; cy=&quot;0&quot; opacity=&quot;0&quot;/&gt;&lt;/g&gt;&lt;g class=&quot;dg-nodes&quot;&gt;&lt;g class=&quot;dg-node dg-tone-blue&quot; data-node=&quot;client&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;32.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;32.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,47.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M8 7a4 4 0 1 0 8 0a4 4 0 0 0-8 0M6 21v-2a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v2&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;63.0&quot;&gt;Client&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-cyan&quot; data-node=&quot;ingress&quot; data-group=&quot;&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;160.0&quot; width=&quot;120.0&quot; height=&quot;58.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;160.0&quot; width=&quot;3&quot; height=&quot;58.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,178.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M3 15a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2zm14 2v.01M13 17v.01M15 13v-2m-3.25-2.25a4 4 0 0 1 6.5 0M8.5 6.5a8 8 0 0 1 13 0&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;185.0&quot;&gt;Ingress&lt;/tspan&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;203.0&quot;&gt;gateway&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet&quot; data-node=&quot;api&quot; data-group=&quot;control&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;294.0&quot; width=&quot;173.2&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;294.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,309.0) scale(0.8333)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m10.204 14.35l.007.01l-.999 2.413a5.17 5.17 0 0 1-2.075-2.597l2.578-.437l.004.005a.44.44 0 0 1 .484.606zm-.833-2.129a.44.44 0 0 0 .173-.756l.002-.011L7.585 9.7a5.14 5.14 0 0 0-.73 3.255l2.514-.725zm1.145-1.98a.44.44 0 0 0 .699-.337l.01-.005l.15-2.62a5.14 5.14 0 0 0-3.01 1.442l2.147 1.523zm.76 2.75l.723.349l.722-.347l.18-.78l-.5-.623h-.804l-.5.623l.179.779zm1.5-3.095a.44.44 0 0 0 .7.336l.008.003l2.134-1.513a5.2 5.2 0 0 0-2.992-1.442l.148 2.615zm10.876 5.97l-5.773 7.181a1.6 1.6 0 0 1-1.248.594l-9.261.003a1.6 1.6 0 0 1-1.247-.596l-5.776-7.18a1.58 1.58 0 0 1-.307-1.34L2.1 5.573c.108-.47.425-.864.863-1.073L11.305.513a1.6 1.6 0 0 1 1.385 0l8.345 3.985c.438.209.755.604.863 1.073l2.062 8.955c.108.47-.005.963-.308 1.34m-3.289-2.057c-.042-.01-.103-.026-.145-.034c-.174-.033-.315-.025-.479-.038c-.35-.037-.638-.067-.895-.148c-.105-.04-.18-.165-.216-.216l-.201-.059a6.5 6.5 0 0 0-.105-2.332a6.5 6.5 0 0 0-.936-2.163c.052-.047.15-.133.177-.159c.008-.09.001-.183.094-.282c.197-.185.444-.338.743-.522c.142-.084.273-.137.415-.242c.032-.024.076-.062.11-.089c.24-.191.295-.52.123-.736s-.506-.236-.745-.045c-.034.027-.08.062-.111.088c-.134.116-.217.23-.33.35c-.246.25-.45.458-.673.609c-.097.056-.239.037-.303.033l-.19.135a6.55 6.55 0 0 0-4.146-2.003l-.012-.223c-.065-.062-.143-.115-.163-.25c-.022-.268.015-.557.057-.905c.023-.163.061-.298.068-.475c.001-.04-.001-.099-.001-.142c0-.306-.224-.555-.5-.555c-.275 0-.499.249-.499.555l.001.014c0 .041-.002.092 0 .128c.006.177.044.312.067.475c.042.348.078.637.056.906a.55.55 0 0 1-.162.258l-.012.211a6.42 6.42 0 0 0-4.166 2.003l-.18-.128c-.09.012-.18.04-.297-.029c-.223-.15-.427-.358-.673-.608c-.113-.12-.195-.234-.329-.349l-.111-.088a.6.6 0 0 0-.348-.132a.48.48 0 0 0-.398.176c-.172.216-.117.546.123.737l.007.005l.104.083c.142.105.272.159.414.242c.299.185.546.338.743.522c.076.082.09.226.1.288l.16.143a6.46 6.46 0 0 0-1.02 4.506l-.208.06c-.055.072-.133.184-.215.217c-.257.081-.546.11-.895.147c-.164.014-.305.006-.48.039c-.037.007-.09.02-.133.03l-.004.002l-.007.002c-.295.071-.484.342-.423.608c.061.267.349.429.645.365l.007-.001l.01-.003l.129-.029c.17-.046.294-.113.448-.172c.33-.118.604-.217.87-.256c.112-.009.23.069.288.101l.217-.037a6.5 6.5 0 0 0 2.88 3.596l-.09.218c.033.084.069.199.044.282c-.097.252-.263.517-.452.813c-.091.136-.185.242-.268.399c-.02.037-.045.095-.064.134c-.128.275-.034.591.213.71c.248.12.556-.007.69-.282v-.002c.02-.039.046-.09.062-.127c.07-.162.094-.301.144-.458c.132-.332.205-.68.387-.897c.05-.06.13-.082.215-.105l.113-.205a6.45 6.45 0 0 0 4.609.012l.106.192c.086.028.18.042.256.155c.136.232.229.507.342.84c.05.156.074.295.145.457c.016.037.043.09.062.129c.133.276.442.402.69.282c.247-.118.341-.435.213-.71c-.02-.039-.045-.096-.065-.134c-.083-.156-.177-.261-.268-.398c-.19-.296-.346-.541-.443-.793c-.04-.13.007-.21.038-.294c-.018-.022-.059-.144-.083-.202a6.5 6.5 0 0 0 2.88-3.622c.064.01.176.03.213.038c.075-.05.144-.114.28-.104c.266.039.54.138.87.256c.154.06.277.128.448.173c.036.01.088.019.13.028l.009.003l.007.001c.297.064.584-.098.645-.365c.06-.266-.128-.537-.423-.608M16.4 9.701l-1.95 1.746v.005a.44.44 0 0 0 .173.757l.003.01l2.526.728a5.2 5.2 0 0 0-.108-1.674A5.2 5.2 0 0 0 16.4 9.7zm-4.013 5.325a.44.44 0 0 0-.404-.232a.44.44 0 0 0-.372.233h-.002l-1.268 2.292a5.16 5.16 0 0 0 3.326.003l-1.27-2.296zm1.888-1.293a.44.44 0 0 0-.27.036a.44.44 0 0 0-.214.572l-.003.004l1.01 2.438a5.15 5.15 0 0 0 2.081-2.615l-2.6-.44z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;325.0&quot;&gt;kube-apiserver&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet&quot; data-node=&quot;scheduler&quot; data-group=&quot;control&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;265.2&quot; y=&quot;294.0&quot; width=&quot;173.2&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;265.2&quot; y=&quot;294.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(281.2,309.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 0 0-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 0 0-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 0 0-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 0 0-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 0 0 1.066-2.573c-.94-1.543.826-3.31 2.37-2.37c1 .608 2.296.07 2.572-1.065&quot;/&gt;&lt;path d=&quot;M9 12a3 3 0 1 0 6 0a3 3 0 0 0-6 0&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;309.2&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;309.2&quot; y=&quot;325.0&quot;&gt;kube-scheduler&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-violet&quot; data-node=&quot;controller&quot; data-group=&quot;control&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;482.4&quot; y=&quot;294.0&quot; width=&quot;204.4&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;482.4&quot; y=&quot;294.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(498.4,309.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M4 13h5m3 3V8h3a2 2 0 0 1 2 2v1a2 2 0 0 1-2 2h-3m8-5v8M9 16v-5.5a2.5 2.5 0 0 0-5 0V16&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;526.4&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;526.4&quot; y=&quot;325.0&quot;&gt;controller-manager&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;etcd&quot; data-group=&quot;control&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;730.8&quot; y=&quot;294.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;730.8&quot; y=&quot;294.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(746.8,309.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M4 6a8 3 0 1 0 16 0A8 3 0 1 0 4 6&quot;/&gt;&lt;path d=&quot;M4 6v6a8 3 0 0 0 16 0V6&quot;/&gt;&lt;path d=&quot;M4 12v6a8 3 0 0 0 16 0v-6&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;774.8&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;774.8&quot; y=&quot;325.0&quot;&gt;etcd&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-green&quot; data-node=&quot;kubelet&quot; data-group=&quot;workers&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;425.0&quot; width=&quot;120.0&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;425.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,440.0) scale(0.8333)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;m10.204 14.35l.007.01l-.999 2.413a5.17 5.17 0 0 1-2.075-2.597l2.578-.437l.004.005a.44.44 0 0 1 .484.606zm-.833-2.129a.44.44 0 0 0 .173-.756l.002-.011L7.585 9.7a5.14 5.14 0 0 0-.73 3.255l2.514-.725zm1.145-1.98a.44.44 0 0 0 .699-.337l.01-.005l.15-2.62a5.14 5.14 0 0 0-3.01 1.442l2.147 1.523zm.76 2.75l.723.349l.722-.347l.18-.78l-.5-.623h-.804l-.5.623l.179.779zm1.5-3.095a.44.44 0 0 0 .7.336l.008.003l2.134-1.513a5.2 5.2 0 0 0-2.992-1.442l.148 2.615zm10.876 5.97l-5.773 7.181a1.6 1.6 0 0 1-1.248.594l-9.261.003a1.6 1.6 0 0 1-1.247-.596l-5.776-7.18a1.58 1.58 0 0 1-.307-1.34L2.1 5.573c.108-.47.425-.864.863-1.073L11.305.513a1.6 1.6 0 0 1 1.385 0l8.345 3.985c.438.209.755.604.863 1.073l2.062 8.955c.108.47-.005.963-.308 1.34m-3.289-2.057c-.042-.01-.103-.026-.145-.034c-.174-.033-.315-.025-.479-.038c-.35-.037-.638-.067-.895-.148c-.105-.04-.18-.165-.216-.216l-.201-.059a6.5 6.5 0 0 0-.105-2.332a6.5 6.5 0 0 0-.936-2.163c.052-.047.15-.133.177-.159c.008-.09.001-.183.094-.282c.197-.185.444-.338.743-.522c.142-.084.273-.137.415-.242c.032-.024.076-.062.11-.089c.24-.191.295-.52.123-.736s-.506-.236-.745-.045c-.034.027-.08.062-.111.088c-.134.116-.217.23-.33.35c-.246.25-.45.458-.673.609c-.097.056-.239.037-.303.033l-.19.135a6.55 6.55 0 0 0-4.146-2.003l-.012-.223c-.065-.062-.143-.115-.163-.25c-.022-.268.015-.557.057-.905c.023-.163.061-.298.068-.475c.001-.04-.001-.099-.001-.142c0-.306-.224-.555-.5-.555c-.275 0-.499.249-.499.555l.001.014c0 .041-.002.092 0 .128c.006.177.044.312.067.475c.042.348.078.637.056.906a.55.55 0 0 1-.162.258l-.012.211a6.42 6.42 0 0 0-4.166 2.003l-.18-.128c-.09.012-.18.04-.297-.029c-.223-.15-.427-.358-.673-.608c-.113-.12-.195-.234-.329-.349l-.111-.088a.6.6 0 0 0-.348-.132a.48.48 0 0 0-.398.176c-.172.216-.117.546.123.737l.007.005l.104.083c.142.105.272.159.414.242c.299.185.546.338.743.522c.076.082.09.226.1.288l.16.143a6.46 6.46 0 0 0-1.02 4.506l-.208.06c-.055.072-.133.184-.215.217c-.257.081-.546.11-.895.147c-.164.014-.305.006-.48.039c-.037.007-.09.02-.133.03l-.004.002l-.007.002c-.295.071-.484.342-.423.608c.061.267.349.429.645.365l.007-.001l.01-.003l.129-.029c.17-.046.294-.113.448-.172c.33-.118.604-.217.87-.256c.112-.009.23.069.288.101l.217-.037a6.5 6.5 0 0 0 2.88 3.596l-.09.218c.033.084.069.199.044.282c-.097.252-.263.517-.452.813c-.091.136-.185.242-.268.399c-.02.037-.045.095-.064.134c-.128.275-.034.591.213.71c.248.12.556-.007.69-.282v-.002c.02-.039.046-.09.062-.127c.07-.162.094-.301.144-.458c.132-.332.205-.68.387-.897c.05-.06.13-.082.215-.105l.113-.205a6.45 6.45 0 0 0 4.609.012l.106.192c.086.028.18.042.256.155c.136.232.229.507.342.84c.05.156.074.295.145.457c.016.037.043.09.062.129c.133.276.442.402.69.282c.247-.118.341-.435.213-.71c-.02-.039-.045-.096-.065-.134c-.083-.156-.177-.261-.268-.398c-.19-.296-.346-.541-.443-.793c-.04-.13.007-.21.038-.294c-.018-.022-.059-.144-.083-.202a6.5 6.5 0 0 0 2.88-3.622c.064.01.176.03.213.038c.075-.05.144-.114.28-.104c.266.039.54.138.87.256c.154.06.277.128.448.173c.036.01.088.019.13.028l.009.003l.007.001c.297.064.584-.098.645-.365c.06-.266-.128-.537-.423-.608M16.4 9.701l-1.95 1.746v.005a.44.44 0 0 0 .173.757l.003.01l2.526.728a5.2 5.2 0 0 0-.108-1.674A5.2 5.2 0 0 0 16.4 9.7zm-4.013 5.325a.44.44 0 0 0-.404-.232a.44.44 0 0 0-.372.233h-.002l-1.268 2.292a5.16 5.16 0 0 0 3.326.003l-1.27-2.296zm1.888-1.293a.44.44 0 0 0-.27.036a.44.44 0 0 0-.214.572l-.003.004l1.01 2.438a5.15 5.15 0 0 0 2.081-2.615l-2.6-.44z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;456.0&quot;&gt;kubelet&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-green&quot; data-node=&quot;cri&quot; data-group=&quot;workers&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;212.0&quot; y=&quot;422.0&quot; width=&quot;142.0&quot; height=&quot;58.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;212.0&quot; y=&quot;422.0&quot; width=&quot;3&quot; height=&quot;58.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(228.0,440.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;m12 3l8 4.5v9L12 21l-8-4.5v-9zm0 9l8-4.5M12 12v9m0-9L4 7.5&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;256.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;256.0&quot; y=&quot;447.0&quot;&gt;containerd&lt;/tspan&gt;&lt;tspan x=&quot;256.0&quot; y=&quot;465.0&quot;&gt;(CRI)&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-green&quot; data-node=&quot;csi&quot; data-group=&quot;workers&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;398.0&quot; y=&quot;425.0&quot; width=&quot;126.4&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;398.0&quot; y=&quot;425.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(414.0,440.0) scale(0.8333)&quot;&gt;&lt;path fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot; d=&quot;M3 6a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2m2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8m-9 4h4&quot;/&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;442.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;442.0&quot; y=&quot;456.0&quot;&gt;Ceph CSI&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;mon&quot; data-group=&quot;ceph&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;48.0&quot; y=&quot;556.0&quot; width=&quot;126.4&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;48.0&quot; y=&quot;556.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(64.0,571.0) scale(0.8333)&quot;&gt;&lt;g class=&quot;dg-icon-filled&quot;&gt;&lt;path fill=&quot;currentColor&quot; d=&quot;M11.959.257A11.9 11.9 0 0 0 3.503 3.76A11.92 11.92 0 0 0 0 12.217a11.9 11.9 0 0 0 1.207 5.243c.72 1.474 1.888 2.944 3.208 4.044c.86-.47 1.35-.99 1.453-1.545c.1-.533-.134-1.107-.737-1.805a9.03 9.03 0 0 1-2.219-5.937c0-4.988 4.058-9.047 9.047-9.047h.08c4.99 0 9.048 4.059 9.048 9.047a9.03 9.03 0 0 1-2.218 5.936c-.599.693-.84 1.292-.735 1.83c.108.556.595 1.068 1.449 1.522c1.322-1.1 2.489-2.57 3.209-4.046A11.9 11.9 0 0 0 24 12.217a11.93 11.93 0 0 0-3.503-8.457A11.92 11.92 0 0 0 12.04.257h-.041zm-.005 4.837a7.07 7.07 0 0 0-3.76 1.075A7.2 7.2 0 0 0 6.15 8.093a7.2 7.2 0 0 0-1.161 2.65a7.2 7.2 0 0 0 .04 3.125a7.1 7.1 0 0 0 1.22 2.607c.154.207.326.396.509.597l.185.202l.005.006q.012.01.026.027c.635.738.957 1.533.957 2.36a3.4 3.4 0 0 1-1.788 2.989a12 12 0 0 0 2.685 1.087c.14-.088.614-.441 1.077-1.083a4.9 4.9 0 0 0 .94-2.99a6.6 6.6 0 0 0-.49-2.37a6.7 6.7 0 0 0-1.302-2.033l-.002-.004l-.124-.142c-.21-.245-.428-.497-.602-.792a4.1 4.1 0 0 1-.462-1.135a4.3 4.3 0 0 1-.024-1.85a4.25 4.25 0 0 1 .686-1.564a4.22 4.22 0 0 1 3.432-1.773h.085a4.2 4.2 0 0 1 3.432 1.773c.33.466.568 1.007.686 1.565a4.3 4.3 0 0 1-.023 1.849a4.1 4.1 0 0 1-.463 1.135c-.173.295-.391.547-.602.792l-.123.142l-.004.004a6.7 6.7 0 0 0-1.301 2.033a6.6 6.6 0 0 0-.49 2.37a4.9 4.9 0 0 0 .94 2.99c.463.642.937.995 1.076 1.083a11.8 11.8 0 0 0 2.687-1.087a3.4 3.4 0 0 1-1.789-2.988c0-.817.313-1.59.956-2.359l.027-.03l.006-.004l.184-.204c.183-.2.355-.39.51-.596a7.1 7.1 0 0 0 1.22-2.608a7.2 7.2 0 0 0 .04-3.124a7.2 7.2 0 0 0-1.16-2.65a7.2 7.2 0 0 0-2.044-1.924a7.07 7.07 0 0 0-3.762-1.075h-.09zM12 9.97a2.365 2.365 0 0 0-2.362 2.361A2.364 2.364 0 0 0 12 14.691a2.363 2.363 0 0 0 2.36-2.36A2.364 2.364 0 0 0 12 9.968z&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;92.0&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;92.0&quot; y=&quot;587.0&quot;&gt;Ceph MON&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;g class=&quot;dg-node dg-tone-amber&quot; data-node=&quot;osd&quot; data-group=&quot;ceph&quot; data-dg-lb=&quot;false&quot; data-dg-lb-algorithm=&quot;round-robin&quot;&gt;&lt;rect class=&quot;dg-node-box&quot; x=&quot;218.4&quot; y=&quot;556.0&quot; width=&quot;134.2&quot; height=&quot;52.0&quot; rx=&quot;6.0&quot;/&gt;&lt;rect class=&quot;dg-node-accent&quot; x=&quot;218.4&quot; y=&quot;556.0&quot; width=&quot;3&quot; height=&quot;52.0&quot; rx=&quot;1.5&quot;/&gt;&lt;g class=&quot;dg-node-icon&quot; transform=&quot;translate(234.4,571.0) scale(0.8333)&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; stroke-width=&quot;2&quot;&gt;&lt;path d=&quot;M6 4h10l4 4v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2&quot;/&gt;&lt;path d=&quot;M10 14a2 2 0 1 0 4 0a2 2 0 1 0-4 0m4-10v4H8V4&quot;/&gt;&lt;/g&gt;&lt;/g&gt;&lt;text class=&quot;dg-node-label&quot; x=&quot;262.4&quot; text-anchor=&quot;start&quot;&gt;&lt;tspan x=&quot;262.4&quot; y=&quot;587.0&quot;&gt;Ceph OSDs&lt;/tspan&gt;&lt;/text&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class=&quot;dg-edge-labels&quot;&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;0&quot; x=&quot;118.0&quot; y=&quot;115.0&quot; text-anchor=&quot;middle&quot;&gt;HTTPS&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;1&quot; x=&quot;138.0&quot; y=&quot;233.0&quot; text-anchor=&quot;middle&quot;&gt;authn / authz&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;2&quot; x=&quot;480.0&quot; y=&quot;273.0&quot; text-anchor=&quot;middle&quot;&gt;watch&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;3&quot; x=&quot;243.2&quot; y=&quot;313.0&quot; text-anchor=&quot;middle&quot;&gt;bind&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;4&quot; x=&quot;356.0&quot; y=&quot;273.0&quot; text-anchor=&quot;middle&quot;&gt;reconcile&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;5&quot; x=&quot;103.3&quot; y=&quot;361.0&quot; text-anchor=&quot;middle&quot;&gt;watch / exec&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;6&quot; x=&quot;198.0&quot; y=&quot;444.0&quot; text-anchor=&quot;middle&quot;&gt;CRI&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;7&quot; x=&quot;288.0&quot; y=&quot;401.0&quot; text-anchor=&quot;middle&quot;&gt;CSI&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;8&quot; x=&quot;373.4&quot; y=&quot;509.5&quot; text-anchor=&quot;middle&quot;&gt;RBD / CephFS&lt;/text&gt;&lt;text class=&quot;dg-edge-label&quot; data-dg-edge=&quot;9&quot; x=&quot;196.4&quot; y=&quot;575.0&quot; text-anchor=&quot;middle&quot;&gt;cluster map&lt;/text&gt;&lt;/g&gt;&lt;/svg&gt;&lt;div class=&quot;diagram__marquee&quot; data-dg-marquee hidden&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;p class=&quot;diagram__hint&quot; data-dg-hint hidden&gt;Right-drag to pan · Scroll to zoom · Drag a node to move&lt;/p&gt;
  &lt;figcaption&gt;A request path through Kubernetes on OpenStack, ending at Ceph-backed storage.&lt;/figcaption&gt;
  &lt;p class=&quot;diagram__source&quot;&gt;Source: &lt;a href=&quot;https://github.com/AjiArya/website/blob/main/diagrams/k8s-control-plane.yaml&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;diagrams/k8s-control-plane.yaml&lt;/a&gt;&lt;/p&gt;
&lt;/figure&gt;
&lt;h2 id=&quot;follow-the-request-path&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#follow-the-request-path&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Follow the request path&lt;/h2&gt;
&lt;p&gt;The client speaks HTTPS to an ingress gateway. The gateway terminates TLS and forwards to the API server. The API server authenticates the request, applies admission, and writes the resulting object to etcd.&lt;/p&gt;
&lt;p&gt;From there, the control plane is a set of watches and reconciliations. The scheduler binds a pod to a node. The controller manager notices that the desired state and observed state disagree. The kubelet on the chosen node sees the pod, asks the container runtime to start it, and reports status back.&lt;/p&gt;
&lt;p&gt;The storage path is separate. The Ceph CSI driver turns a persistent volume claim into a RADOS-backed volume. The kubelet mounts it. The application writes to a filesystem that is actually replicated across OSDs.&lt;/p&gt;
&lt;h2 id=&quot;what-the-diagram-leaves-out&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#what-the-diagram-leaves-out&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
What the diagram leaves out&lt;/h2&gt;
&lt;p&gt;It leaves out the parts that make production interesting:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;etcd latency.&lt;/strong&gt; A slow etcd is a slow API server. Everything upstream inherits that latency.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The network between the control plane and the workers.&lt;/strong&gt; Overlay networks, MTU, and security groups are not visible in a box-and-arrow diagram, but they decide whether the line is real.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The difference between “the API server is up” and “the cluster is healthy.”&lt;/strong&gt; A control plane can accept writes while nothing schedules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage recovery.&lt;/strong&gt; Ceph may be healthy from Kubernetes’ point of view while it is busy rebuilding.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;three-failure-modes-i-watch&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#three-failure-modes-i-watch&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
Three failure modes I watch&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;A control-plane node loses its etcd member.&lt;/strong&gt; The remaining members keep quorum, but the API server on the failed node is now a trap for load balancers that only check TCP.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The CSI driver cannot reach the Ceph monitors.&lt;/strong&gt; Pods stay pending, or worse, existing volumes fail to mount on a new node.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A worker has a full disk.&lt;/strong&gt; The kubelet evicts pods, but the container runtime and the Ceph OSD may disagree about what “full” means.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The diagram is useful because it gives us a shared vocabulary for those conversations. It is not useful if we pretend the arrows are guarantees.&lt;/p&gt;
&lt;h2 id=&quot;a-small-operational-rule&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#a-small-operational-rule&quot; aria-label=&quot;Link to this section&quot;&gt;##&lt;/a&gt;
A small operational rule&lt;/h2&gt;
&lt;p&gt;When a request is slow, walk the path once and write down the latency budget at each hop. When a request fails, walk it again and write down the failure domain at each hop. The boxes do not change; the questions do.&lt;/p&gt;
&lt;pre class=&quot;giallo z-code&quot; &gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-3&quot;&gt;# A quick sanity check from a worker node&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;curl&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; -sk&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; https://kubernetes.default.svc/healthz&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;systemctl&lt;/span&gt;&lt;span class=&quot;z-6&quot;&gt; is-active kubelet containerd&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span class=&quot;z-7&quot;&gt;ceph&lt;/span&gt;&lt;span class=&quot;z-4&quot;&gt; -s&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The next step is not another dashboard. It is a runbook that says what to check first, what to ignore, and who owns the boundary between the platform and the storage cluster.&lt;/p&gt;
</content>
        
    </entry>
</feed>
