<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.17 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.17">
  <diagram name="Page-1" id="c7488fd3-1785-93aa-aadb-54a6760d102a">
    <mxGraphModel dx="1728" dy="998" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" background="none" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="ARffzCTJVVxupl663M9X-6" value="" style="shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;" vertex="1" parent="1">
          <mxGeometry x="200" y="90" width="160" height="160" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-7" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-6">
          <mxGeometry width="160" height="30" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-9" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;Determine Prefix Length&amp;nbsp;&lt;/font&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-7">
          <mxGeometry width="160" height="30" as="geometry">
            <mxRectangle width="160" height="30" as="alternateBounds" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-11" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-6">
          <mxGeometry y="30" width="160" height="60" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-13" value="&lt;p style=&quot;text-align: left; line-height: 90%; font-size: 10px;&quot;&gt;&lt;font style=&quot;font-size: 10px;&quot;&gt;Input: IP address with CIDR prefix length (e.g., &lt;code style=&quot;&quot;&gt;/24&lt;/code&gt;, &lt;code style=&quot;&quot;&gt;/16&lt;/code&gt;)&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; line-height: 90%; font-size: 10px;&quot;&gt;&lt;font style=&quot;font-size: 10px;&quot;&gt;output: Prefix length&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-11">
          <mxGeometry width="160" height="60" as="geometry">
            <mxRectangle width="160" height="60" as="alternateBounds" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-15" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-6">
          <mxGeometry y="90" width="160" height="70" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-17" value="&lt;p style=&quot;line-height: 90%; font-size: 10px;&quot;&gt;&lt;font face=&quot;Helvetica&quot;&gt;Parse the CIDR prefix to understand the network range. For instance, &lt;code&gt;192.168.1.0/24&lt;/code&gt; has a prefix length of 24 bits.&lt;/font&gt;&lt;/p&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;align=left;" vertex="1" parent="ARffzCTJVVxupl663M9X-15">
          <mxGeometry width="160" height="70" as="geometry">
            <mxRectangle width="160" height="70" as="alternateBounds" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-19" value="" style="shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;" vertex="1" parent="1">
          <mxGeometry x="460" y="90" width="160" height="160" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-20" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-19">
          <mxGeometry width="160" height="30" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-21" value="&lt;font style=&quot;font-size: 10px;&quot;&gt; Read Network ID&lt;/font&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-20">
          <mxGeometry width="160" height="30" as="geometry">
            <mxRectangle width="160" height="30" as="alternateBounds" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-22" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-19">
          <mxGeometry y="30" width="160" height="60" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-23" value="&lt;p style=&quot;text-align: left; line-height: 90%; font-size: 10px;&quot;&gt;&lt;font style=&quot;font-size: 10px;&quot;&gt;Input: IP address and CIDR prefix length&lt;/font&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left; line-height: 90%; font-size: 10px;&quot;&gt;&lt;font style=&quot;font-size: 10px;&quot;&gt;output:  Network ID&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-22">
          <mxGeometry width="160" height="60" as="geometry">
            <mxRectangle width="160" height="60" as="alternateBounds" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-24" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-19">
          <mxGeometry y="90" width="160" height="70" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-25" value="&lt;p style=&quot;line-height: 90%; font-size: 10px;&quot;&gt;Extract the network ID from the IP address based on the prefix length.&amp;nbsp;&lt;br&gt;&lt;/p&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;align=left;" vertex="1" parent="ARffzCTJVVxupl663M9X-24">
          <mxGeometry width="160" height="70" as="geometry">
            <mxRectangle width="160" height="70" as="alternateBounds" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-26" value="" style="shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;" vertex="1" parent="1">
          <mxGeometry x="200" y="310" width="160" height="160" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-27" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-26">
          <mxGeometry width="160" height="30" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-28" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;Longest Prefix Matching&lt;/font&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-27">
          <mxGeometry width="160" height="30" as="geometry">
            <mxRectangle width="160" height="30" as="alternateBounds" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-29" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-26">
          <mxGeometry y="30" width="160" height="60" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-30" value="&lt;p style=&quot;line-height: 90%;&quot;&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;font style=&quot;background-color: initial; font-size: 10px;&quot;&gt;Input:&amp;nbsp;&lt;/font&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;&lt;font style=&quot;font-size: 10px;&quot;&gt;Network ID&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 10px; background-color: initial;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;output: Matching route entry&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-29">
          <mxGeometry width="160" height="60" as="geometry">
            <mxRectangle width="160" height="60" as="alternateBounds" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-31" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-26">
          <mxGeometry y="90" width="160" height="70" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-32" value="&lt;p style=&quot;line-height: 90%; font-size: 10px;&quot;&gt;&amp;nbsp;Search the routing table for all matching entries, and select the entry with the longest prefix, ensuring that the CIDR router picks the most specific route.&lt;br&gt;&lt;/p&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;align=left;" vertex="1" parent="ARffzCTJVVxupl663M9X-31">
          <mxGeometry width="160" height="70" as="geometry">
            <mxRectangle width="160" height="70" as="alternateBounds" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-33" value="" style="shape=table;startSize=0;container=1;collapsible=0;childLayout=tableLayout;fontSize=16;" vertex="1" parent="1">
          <mxGeometry x="460" y="310" width="160" height="160" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-34" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-33">
          <mxGeometry width="160" height="30" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-35" value="&lt;font style=&quot;font-size: 10px;&quot;&gt;Determine Next-Hop&lt;/font&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-34">
          <mxGeometry width="160" height="30" as="geometry">
            <mxRectangle width="160" height="30" as="alternateBounds" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-36" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-33">
          <mxGeometry y="30" width="160" height="60" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-37" value="&lt;p style=&quot;line-height: 90%;&quot;&gt;&lt;/p&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;font style=&quot;background-color: initial; font-size: 10px;&quot;&gt;Input:&amp;nbsp;&lt;/font&gt;&lt;span style=&quot;background-color: initial; text-align: center;&quot;&gt;&lt;font style=&quot;font-size: 10px;&quot;&gt;Matching route entry&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-size: 10px; background-color: initial;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;output:&amp;nbsp;&lt;/span&gt;Next-hop&lt;/div&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-36">
          <mxGeometry width="160" height="60" as="geometry">
            <mxRectangle width="160" height="60" as="alternateBounds" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-38" value="" style="shape=tableRow;horizontal=0;startSize=0;swimlaneHead=0;swimlaneBody=0;strokeColor=inherit;top=0;left=0;bottom=0;right=0;collapsible=0;dropTarget=0;fillColor=none;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=16;" vertex="1" parent="ARffzCTJVVxupl663M9X-33">
          <mxGeometry y="90" width="160" height="70" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-39" value="&lt;p style=&quot;line-height: 90%; font-size: 10px;&quot;&gt;Based on the longest prefix match, find the next-hop in the routing table to forward the packet&lt;br&gt;&lt;/p&gt;" style="shape=partialRectangle;html=1;whiteSpace=wrap;connectable=0;strokeColor=inherit;overflow=hidden;fillColor=none;top=0;left=0;bottom=0;right=0;pointerEvents=1;fontSize=16;align=left;" vertex="1" parent="ARffzCTJVVxupl663M9X-38">
          <mxGeometry width="160" height="70" as="geometry">
            <mxRectangle width="160" height="70" as="alternateBounds" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ARffzCTJVVxupl663M9X-7" target="ARffzCTJVVxupl663M9X-20">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-41" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.64;entryY=0.438;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="80" y="160" as="sourcePoint" />
            <mxPoint x="80" y="160" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-42" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ARffzCTJVVxupl663M9X-51" target="ARffzCTJVVxupl663M9X-7">
          <mxGeometry width="50" height="50" relative="1" as="geometry">
            <mxPoint x="80" y="160" as="sourcePoint" />
            <mxPoint x="130" y="100" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-43" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1.013;entryY=-0.01;entryDx=0;entryDy=0;entryPerimeter=0;exitX=-0.015;exitY=1.01;exitDx=0;exitDy=0;exitPerimeter=0;" edge="1" parent="1" source="ARffzCTJVVxupl663M9X-24" target="ARffzCTJVVxupl663M9X-27">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="430" y="290" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ARffzCTJVVxupl663M9X-29" target="ARffzCTJVVxupl663M9X-36">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-46" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="ARffzCTJVVxupl663M9X-36" target="ARffzCTJVVxupl663M9X-48">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="715.29" y="369.69999999999993" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-50" value="" style="group" vertex="1" connectable="0" parent="1">
          <mxGeometry x="720" y="350" width="40" height="40" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-48" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="ARffzCTJVVxupl663M9X-50">
          <mxGeometry width="40" height="40" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-49" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="ARffzCTJVVxupl663M9X-50">
          <mxGeometry x="10" y="10" width="20" height="20" as="geometry" />
        </mxCell>
        <mxCell id="ARffzCTJVVxupl663M9X-51" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;" vertex="1" parent="1">
          <mxGeometry x="80" y="130" width="20" height="20" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
