<mxfile host="app.diagrams.net" pages="2">
  <diagram id="Ld0PZ8iOJT0iBC0hIplM" name="Page-2">
    <mxGraphModel dx="933" dy="648" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="1rsUc46_5Y9y6vJJpw89-23" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontFamily=Microsoft YaHei;" value="" vertex="1">
          <mxGeometry height="225" width="120" x="650" y="237.5" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-1" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontFamily=Microsoft YaHei;" value="" vertex="1">
          <mxGeometry height="225" width="120" x="420" y="237.5" as="geometry" />
        </mxCell>
        <mxCell id="4KGLoNyMlWUnwfG8zy26-1" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontFamily=Microsoft YaHei;" value="" vertex="1">
          <mxGeometry height="180" width="120" x="210" y="260" as="geometry" />
        </mxCell>
        <mxCell id="4KGLoNyMlWUnwfG8zy26-2" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=25;fontFamily=Microsoft YaHei;" value="Node 1" vertex="1">
          <mxGeometry height="30" width="105" x="217.5" y="270" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-5" edge="1" parent="1" source="4KGLoNyMlWUnwfG8zy26-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="4KGLoNyMlWUnwfG8zy26-4">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="4KGLoNyMlWUnwfG8zy26-3" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=20;fontFamily=Microsoft YaHei;" value="TUN" vertex="1">
          <mxGeometry height="40" width="95" x="222.5" y="310" as="geometry" />
        </mxCell>
        <mxCell id="4KGLoNyMlWUnwfG8zy26-4" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=20;fontFamily=Microsoft YaHei;" value="FEC编码" vertex="1">
          <mxGeometry height="40" width="95" x="222.5" y="390" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-7" edge="1" parent="1" source="4KGLoNyMlWUnwfG8zy26-4" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="1rsUc46_5Y9y6vJJpw89-6">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-9" connectable="0" parent="1rsUc46_5Y9y6vJJpw89-7" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontFamily=Microsoft YaHei;fontSize=20;" value="公网链路" vertex="1">
          <mxGeometry relative="1" x="-0.064" y="-3" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="4KGLoNyMlWUnwfG8zy26-6" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=20;fontFamily=Microsoft YaHei;" value="用户" vertex="1">
          <mxGeometry height="30" width="50" x="140" y="315" as="geometry" />
        </mxCell>
        <mxCell id="Brhk0VF70q9vH42PsAyj-1" edge="1" parent="1" source="4KGLoNyMlWUnwfG8zy26-6" 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;strokeWidth=2;" target="4KGLoNyMlWUnwfG8zy26-3" value="">
          <mxGeometry height="50" relative="1" width="50" as="geometry">
            <mxPoint x="510" y="460" as="sourcePoint" />
            <mxPoint x="560" y="410" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-2" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=25;fontFamily=Microsoft YaHei;" value="Node 2" vertex="1">
          <mxGeometry height="30" width="105" x="427.5" y="247.5" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-26" edge="1" parent="1" source="1rsUc46_5Y9y6vJJpw89-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="1rsUc46_5Y9y6vJJpw89-12">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-6" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=20;fontFamily=Microsoft YaHei;" value="FEC解码&lt;div&gt;丢包统计&lt;/div&gt;" vertex="1">
          <mxGeometry height="60" width="95" x="432.5" y="287.5" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-11" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=20;fontFamily=Microsoft YaHei;" value="速率控制" vertex="1">
          <mxGeometry height="40" width="95" x="432.5" y="357.5" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-12" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=20;fontFamily=Microsoft YaHei;" value="FEC编码" vertex="1">
          <mxGeometry height="40" width="95" x="432.5" y="413" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-14" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=25;fontFamily=Microsoft YaHei;" value="Node N" vertex="1">
          <mxGeometry height="30" width="105" x="657.5" y="247.5" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-27" edge="1" parent="1" source="1rsUc46_5Y9y6vJJpw89-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;" target="1rsUc46_5Y9y6vJJpw89-25">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-18" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=20;fontFamily=Microsoft YaHei;" value="FEC解码&lt;div&gt;丢包统计&lt;/div&gt;" vertex="1">
          <mxGeometry height="60" width="95" x="662.5" y="287.5" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-19" edge="1" parent="1" source="1rsUc46_5Y9y6vJJpw89-12" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="1rsUc46_5Y9y6vJJpw89-18">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="648" y="432" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-22" connectable="0" parent="1rsUc46_5Y9y6vJJpw89-19" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=20;fontFamily=Microsoft YaHei;" value="若干次转发" vertex="1">
          <mxGeometry relative="1" x="-0.0056" y="1" as="geometry">
            <mxPoint as="offset" />
          </mxGeometry>
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-24" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=20;fontFamily=Microsoft YaHei;" value="速率控制" vertex="1">
          <mxGeometry height="40" width="95" x="662.5" y="357.5" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-29" edge="1" parent="1" source="1rsUc46_5Y9y6vJJpw89-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;" target="1rsUc46_5Y9y6vJJpw89-28">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-25" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=20;fontFamily=Microsoft YaHei;" value="TUN" vertex="1">
          <mxGeometry height="40" width="95" x="662.5" y="413" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-28" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=20;fontFamily=Microsoft YaHei;" value="用户" vertex="1">
          <mxGeometry height="30" width="50" x="790" y="418" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-30" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontSize=25;fontFamily=Microsoft YaHei;" value="" vertex="1">
          <mxGeometry height="100" width="230" x="380" y="100" as="geometry" />
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-31" edge="1" parent="1" source="1rsUc46_5Y9y6vJJpw89-18" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;strokeColor=#FF9933;strokeWidth=2;dashed=1;entryX=0.75;entryY=1;entryDx=0;entryDy=0;" target="4BOI32kT3DeUbctDIWOm-3">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="510" y="100" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-32" edge="1" parent="1" source="1rsUc46_5Y9y6vJJpw89-6" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0;exitDx=0;exitDy=0;strokeColor=#FF9933;strokeWidth=2;dashed=1;entryX=0.6;entryY=0.979;entryDx=0;entryDy=0;entryPerimeter=0;" target="4BOI32kT3DeUbctDIWOm-3">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="852" y="378" as="sourcePoint" />
            <mxPoint x="440" y="100" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-34" edge="1" parent="1" source="4BOI32kT3DeUbctDIWOm-3" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.846;entryY=0.071;entryDx=0;entryDy=0;strokeColor=#FF9933;strokeWidth=2;dashed=1;entryPerimeter=0;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" target="4KGLoNyMlWUnwfG8zy26-4">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="353" y="100" as="sourcePoint" />
            <mxPoint x="540" y="230" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-35" edge="1" parent="1" source="4BOI32kT3DeUbctDIWOm-3" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.144;entryY=-0.004;entryDx=0;entryDy=0;strokeColor=#FF9933;strokeWidth=2;dashed=1;entryPerimeter=0;exitX=0.407;exitY=0.958;exitDx=0;exitDy=0;exitPerimeter=0;" target="1rsUc46_5Y9y6vJJpw89-12">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="380" y="70" as="sourcePoint" />
            <mxPoint x="540" y="220" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="4BOI32kT3DeUbctDIWOm-1" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=25;fontFamily=Microsoft YaHei;" value="控制器" vertex="1">
          <mxGeometry height="30" width="105" x="445" y="110" as="geometry" />
        </mxCell>
        <mxCell id="OVRyA5cAgbwWEsEiYZpN-1" edge="1" parent="1" source="4BOI32kT3DeUbctDIWOm-2" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;strokeWidth=2;fillColor=#a0522d;strokeColor=#6D1F00;" target="4KGLoNyMlWUnwfG8zy26-1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="4BOI32kT3DeUbctDIWOm-2" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fontSize=20;fontFamily=Microsoft YaHei;" value="连接管理" vertex="1">
          <mxGeometry height="40" width="95" x="390" y="150" as="geometry" />
        </mxCell>
        <mxCell id="4BOI32kT3DeUbctDIWOm-3" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fontSize=20;fontFamily=Microsoft YaHei;" value="编码管理" vertex="1">
          <mxGeometry height="40" width="95" x="505" y="150" as="geometry" />
        </mxCell>
        <mxCell id="OVRyA5cAgbwWEsEiYZpN-2" edge="1" parent="1" source="4BOI32kT3DeUbctDIWOm-2" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;strokeWidth=2;fillColor=#a0522d;strokeColor=#6D1F00;" target="1rsUc46_5Y9y6vJJpw89-1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="473" y="220" as="sourcePoint" />
            <mxPoint x="330" y="330" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="OVRyA5cAgbwWEsEiYZpN-3" edge="1" parent="1" source="4BOI32kT3DeUbctDIWOm-2" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;dashed=1;strokeWidth=2;fillColor=#a0522d;strokeColor=#6D1F00;" target="1rsUc46_5Y9y6vJJpw89-23">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="593" y="190" as="sourcePoint" />
            <mxPoint x="450" y="300" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="1rsUc46_5Y9y6vJJpw89-36" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=20;" value="&lt;div&gt;收取丢包率信息&lt;/div&gt;下发编码参数" vertex="1">
          <mxGeometry height="60" width="150" x="612.5" y="140" as="geometry" />
        </mxCell>
        <mxCell id="7D4wQrk56QkGn_iMHcGr-1" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontFamily=Microsoft YaHei;fontSize=20;" value="&lt;div&gt;下发转发策略&lt;/div&gt;" vertex="1">
          <mxGeometry height="30" width="126.5" x="253.5" y="155" as="geometry" />
        </mxCell>
        <mxCell id="7D4wQrk56QkGn_iMHcGr-2" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;strokeWidth=2;">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="200" y="90" as="sourcePoint" />
            <mxPoint x="270" y="90" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="7D4wQrk56QkGn_iMHcGr-3" edge="1" parent="1" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;strokeColor=#FF9933;strokeWidth=2;dashed=1;">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="200" y="120" as="sourcePoint" />
            <mxPoint x="270" y="120" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="7D4wQrk56QkGn_iMHcGr-4" edge="1" parent="1" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;strokeWidth=2;fillColor=#a0522d;strokeColor=#6D1F00;">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="200" y="130" as="sourcePoint" />
            <mxPoint x="270" y="130" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="7D4wQrk56QkGn_iMHcGr-5" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=20;fontFamily=Microsoft YaHei;" value="数据流量" vertex="1">
          <mxGeometry height="30" width="87.5" x="272.5" y="70" as="geometry" />
        </mxCell>
        <mxCell id="7D4wQrk56QkGn_iMHcGr-6" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;fontSize=20;fontFamily=Microsoft YaHei;" value="控制指令" vertex="1">
          <mxGeometry height="30" width="87.5" x="273" y="110" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
  <diagram name="GPT" id="system-overview">
    <mxGraphModel dx="1119" dy="777" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="title" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontFamily=Microsoft YaHei;fontSize=20;fontStyle=1;" value="系统总体架构" vertex="1">
          <mxGeometry height="30" width="170" x="330" y="60" as="geometry" />
        </mxCell>
        <mxCell id="coord" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontFamily=Microsoft YaHei;fontSize=14;fontStyle=1;" value="Coordinator&lt;div&gt;中心控制器&lt;/div&gt;" vertex="1">
          <mxGeometry height="70" width="210" x="310" y="110" as="geometry" />
        </mxCell>
        <mxCell id="coord_path" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#6c8ebf;fontFamily=Microsoft YaHei;fontSize=12;" value="连接管理 / 路径配置&lt;div&gt;flow_id 分配&lt;/div&gt;" vertex="1">
          <mxGeometry height="50" width="160" x="220" y="210" as="geometry" />
        </mxCell>
        <mxCell id="coord_fec" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#6c8ebf;fontFamily=Microsoft YaHei;fontSize=12;" value="FEC 参数计算&lt;div&gt;搜索 (d, k)&lt;/div&gt;" vertex="1">
          <mxGeometry height="50" width="160" x="450" y="210" as="geometry" />
        </mxCell>
        <mxCell id="coord_to_path" edge="1" parent="1" source="coord" style="endArrow=classic;html=1;rounded=0;strokeColor=#6c8ebf;" target="coord_path">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="coord_to_fec" edge="1" parent="1" source="coord" style="endArrow=classic;html=1;rounded=0;strokeColor=#6c8ebf;" target="coord_fec">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="user_a" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontFamily=Microsoft YaHei;fontSize=13;" value="用户 A" vertex="1">
          <mxGeometry height="40" width="70" x="30" y="520" as="geometry" />
        </mxCell>
        <mxCell id="tun_a" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontFamily=Microsoft YaHei;fontSize=12;" value="TUN" vertex="1">
          <mxGeometry height="40" width="55" x="125" y="520" as="geometry" />
        </mxCell>
        <mxCell id="node_a" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontFamily=Microsoft YaHei;fontSize=13;fontStyle=1;" value="Node A&lt;div&gt;转发节点&lt;/div&gt;" vertex="1">
          <mxGeometry height="170" width="130" x="210" y="430" as="geometry" />
        </mxCell>
        <mxCell id="a_thread" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#9673a6;fontFamily=Microsoft YaHei;fontSize=12;" value="per-flow 线程" vertex="1">
          <mxGeometry height="32" width="100" x="225" y="475" as="geometry" />
        </mxCell>
        <mxCell id="encoder" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fontFamily=Microsoft YaHei;fontSize=12;" value="FEC 编码器&lt;div&gt;低质量片段启用&lt;/div&gt;" vertex="1">
          <mxGeometry height="50" width="100" x="225" y="525" as="geometry" />
        </mxCell>
        <mxCell id="node_b" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontFamily=Microsoft YaHei;fontSize=13;fontStyle=1;" value="Node B&lt;div&gt;修复片段出口&lt;/div&gt;" vertex="1">
          <mxGeometry height="210" width="150" x="410" y="410" as="geometry" />
        </mxCell>
        <mxCell id="decoder" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fontFamily=Microsoft YaHei;fontSize=12;" value="FEC 解码器&lt;div&gt;丢包恢复 / 统计&lt;/div&gt;" vertex="1">
          <mxGeometry height="55" width="120" x="425" y="450" as="geometry" />
        </mxCell>
        <mxCell id="pacer" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontFamily=Microsoft YaHei;fontSize=12;" value="Pacer&lt;div&gt;PI 匀速输出&lt;/div&gt;" vertex="1">
          <mxGeometry height="55" width="120" x="425" y="535" as="geometry" />
        </mxCell>
        <mxCell id="node_c" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontFamily=Microsoft YaHei;fontSize=13;fontStyle=1;" value="Node C&lt;div&gt;转发节点&lt;/div&gt;" vertex="1">
          <mxGeometry height="100" width="110" x="630" y="450" as="geometry" />
        </mxCell>
        <mxCell id="tun_b" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontFamily=Microsoft YaHei;fontSize=12;" value="TUN" vertex="1">
          <mxGeometry height="40" width="55" x="765" y="520" as="geometry" />
        </mxCell>
        <mxCell id="user_b" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontFamily=Microsoft YaHei;fontSize=13;" value="用户 B" vertex="1">
          <mxGeometry height="40" width="70" x="845" y="520" as="geometry" />
        </mxCell>
        <mxCell id="data_label" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontFamily=Microsoft YaHei;fontSize=13;" value="数据面：TUN 虚拟网卡 + UDP 隧道转发" vertex="1">
          <mxGeometry height="30" width="290" x="320" y="650" as="geometry" />
        </mxCell>
        <mxCell id="control_label" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;fontFamily=Microsoft YaHei;fontSize=13;" value="控制面：统计上报与参数 / 转发表下发" vertex="1">
          <mxGeometry height="30" width="280" x="300" y="300" as="geometry" />
        </mxCell>
        <mxCell id="u_to_tun" edge="1" parent="1" source="user_a" style="endArrow=classic;html=1;rounded=0;" target="tun_a">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="tun_to_a" edge="1" parent="1" source="tun_a" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.65;entryDx=0;entryDy=0;" target="node_a">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="a_to_b" edge="1" parent="1" source="node_a" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#b85450;exitX=1;exitY=0.65;exitDx=0;exitDy=0;entryX=0;entryY=0.55;entryDx=0;entryDy=0;" target="node_b" value="公网 UDP 隧道&lt;div&gt;低质量链路片段&lt;/div&gt;">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="b_to_c" edge="1" parent="1" source="node_b" style="endArrow=classic;html=1;rounded=0;strokeWidth=2;strokeColor=#82b366;exitX=1;exitY=0.55;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="node_c" value="公网 UDP 隧道&lt;div&gt;普通转发&lt;/div&gt;">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="c_to_tun" edge="1" parent="1" source="node_c" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=0.7;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" target="tun_b">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="tun_to_user" edge="1" parent="1" source="tun_b" style="endArrow=classic;html=1;rounded=0;" target="user_b">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="fec_internal" edge="1" parent="1" source="decoder" style="endArrow=classic;html=1;rounded=0;strokeColor=#666666;" target="pacer">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="flow_config_a" edge="1" parent="1" source="coord_path" style="endArrow=classic;html=1;rounded=0;dashed=1;strokeColor=#6c8ebf;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="node_a" value="转发表 / flow_id / (d,k)">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="flow_config_b" edge="1" parent="1" source="coord_path" style="endArrow=classic;html=1;rounded=0;dashed=1;strokeColor=#6c8ebf;exitX=1;exitY=0.8;exitDx=0;exitDy=0;entryX=0.3;entryY=0;entryDx=0;entryDy=0;" target="node_b" value="转发表 / 解码配置">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="stats_to_coord" edge="1" parent="1" source="decoder" style="endArrow=classic;html=1;rounded=0;dashed=1;strokeColor=#b85450;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="coord_fec" value="丢包统计上报">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="param_to_encoder" edge="1" parent="1" source="coord_fec" style="endArrow=classic;html=1;rounded=0;dashed=1;strokeColor=#b85450;exitX=0;exitY=0.8;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" target="encoder" value="FEC 参数下发">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="legend_control" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#6c8ebf;dashed=1;fontFamily=Microsoft YaHei;fontSize=12;" value="虚线：控制面" vertex="1">
          <mxGeometry height="32" width="110" x="55" y="690" as="geometry" />
        </mxCell>
        <mxCell id="legend_data" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#ffffff;strokeColor=#666666;fontFamily=Microsoft YaHei;fontSize=12;" value="实线：数据面" vertex="1">
          <mxGeometry height="32" width="110" x="180" y="690" as="geometry" />
        </mxCell>
        <mxCell id="legend_fec" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fontFamily=Microsoft YaHei;fontSize=12;" value="红色：修复链路" vertex="1">
          <mxGeometry height="32" width="120" x="305" y="690" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
