<mxfile host="thecodeclouds.com" agent="hand-built" version="24.0.0" type="device">
<diagram id="hybrid" name="LLD 2: hybrid connectivity and routing"><mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1500" pageHeight="960" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="c1" value="Low-level design 2: 99.99% Interconnect topology, HA VPN backup and what BGP advertises" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=17;fontColor=#232F3E;fontStyle=1;spacing=0;" vertex="1" parent="1"><mxGeometry x="20" y="16" width="1460" height="23" as="geometry"/></mxCell>
<mxCell id="rvpc" value="&lt;b&gt;Routing VPC (net-hub)  ·  global dynamic routing  ·  hybrid spokes in the NCC center group&lt;/b&gt;" style="rounded=1;absoluteArcSize=1;arcSize=6;html=1;whiteSpace=wrap;strokeColor=#4285F4;fillColor=#F1F6FE;strokeWidth=1;dashed=0;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=34;spacingTop=-2;" vertex="1" parent="1"><mxGeometry x="340" y="60" width="640" height="880" as="geometry"/></mxCell>
<mxCell id="c3" value="" style="sketch=0;html=1;aspect=fixed;strokeColor=none;fillColor=#5184F3;shape=mxgraph.gcp2.virtual_private_cloud;" vertex="1" parent="1"><mxGeometry x="348" y="65" width="22" height="20" as="geometry"/></mxCell>
<mxCell id="c4" value="&lt;b&gt;europe-west2&lt;/b&gt;" style="rounded=1;absoluteArcSize=1;arcSize=6;html=1;whiteSpace=wrap;strokeColor=#9AA0A6;fillColor=none;strokeWidth=1;dashed=1;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=8;spacingTop=-2;" vertex="1" parent="1"><mxGeometry x="360" y="105" width="600" height="330" as="geometry"/></mxCell>
<mxCell id="c5" value="&lt;b&gt;europe-west3&lt;/b&gt;" style="rounded=1;absoluteArcSize=1;arcSize=6;html=1;whiteSpace=wrap;strokeColor=#9AA0A6;fillColor=none;strokeWidth=1;dashed=1;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=8;spacingTop=-2;" vertex="1" parent="1"><mxGeometry x="360" y="455" width="600" height="330" as="geometry"/></mxCell>
<mxCell id="c6" value="&lt;b&gt;Colocation metro A (London)&lt;/b&gt;" style="points=[];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_corporate_data_center;strokeColor=#7D8998;fillColor=#F7F8FA;verticalAlign=top;align=left;spacingLeft=30;fontColor=#5A6C86;dashed=0;" vertex="1" parent="1"><mxGeometry x="20" y="105" width="270" height="300" as="geometry"/></mxCell>
<mxCell id="crA" value='&lt;b&gt;cr-ew2&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;ASN 64514&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.cloud_router;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="820" y="228.5" width="60" height="53.15" as="geometry"/></mxCell>
<mxCell id="rA0" value='&lt;b&gt;edge router A1&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;ASN 65010&lt;/font&gt;' style="sketch=0;points=[];outlineConnect=0;fontColor=#232F3E;fillColor=#5A6C86;strokeColor=#ffffff;dashed=0;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.router;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="100" y="173" width="44" height="44" as="geometry"/></mxCell>
<mxCell id="aA0" value='&lt;b&gt;VLAN attachment&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;edge domain 1 · 10G · MTU 1500&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.dedicated_interconnect;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;" vertex="1" parent="1"><mxGeometry x="470" y="174.7" width="46" height="40.75" as="geometry"/></mxCell>
<mxCell id="c7" style="edgeStyle=none;html=1;rounded=0;strokeColor=#5A6C86;strokeWidth=3;dashed=0;startArrow=block;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="rA0" target="aA0"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="c8" style="edgeStyle=none;html=1;rounded=0;strokeColor=#4285F4;strokeWidth=2;dashed=0;startArrow=block;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="aA0" target="crA"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="720" y="195"/><mxPoint x="720" y="255"/></Array></mxGeometry></mxCell>
<mxCell id="rA1" value='&lt;b&gt;edge router A2&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;ASN 65010&lt;/font&gt;' style="sketch=0;points=[];outlineConnect=0;fontColor=#232F3E;fillColor=#5A6C86;strokeColor=#ffffff;dashed=0;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.router;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="100" y="293" width="44" height="44" as="geometry"/></mxCell>
<mxCell id="aA1" value='&lt;b&gt;VLAN attachment&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;edge domain 2 · 10G · MTU 1500&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.dedicated_interconnect;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;" vertex="1" parent="1"><mxGeometry x="470" y="294.7" width="46" height="40.75" as="geometry"/></mxCell>
<mxCell id="c9" style="edgeStyle=none;html=1;rounded=0;strokeColor=#5A6C86;strokeWidth=3;dashed=0;startArrow=block;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="rA1" target="aA1"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="c10" style="edgeStyle=none;html=1;rounded=0;strokeColor=#4285F4;strokeWidth=2;dashed=0;startArrow=block;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="aA1" target="crA"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="720" y="315"/><mxPoint x="720" y="255"/></Array></mxGeometry></mxCell>
<mxCell id="c11" value="&lt;b&gt;Colocation metro B (Frankfurt)&lt;/b&gt;" style="points=[];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_corporate_data_center;strokeColor=#7D8998;fillColor=#F7F8FA;verticalAlign=top;align=left;spacingLeft=30;fontColor=#5A6C86;dashed=0;" vertex="1" parent="1"><mxGeometry x="20" y="455" width="270" height="300" as="geometry"/></mxCell>
<mxCell id="crB" value='&lt;b&gt;cr-ew3&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;ASN 64514&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.cloud_router;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="820" y="578.5" width="60" height="53.15" as="geometry"/></mxCell>
<mxCell id="rB0" value='&lt;b&gt;edge router B1&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;ASN 65010&lt;/font&gt;' style="sketch=0;points=[];outlineConnect=0;fontColor=#232F3E;fillColor=#5A6C86;strokeColor=#ffffff;dashed=0;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.router;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="100" y="523" width="44" height="44" as="geometry"/></mxCell>
<mxCell id="aB0" value='&lt;b&gt;VLAN attachment&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;edge domain 1 · 10G · MTU 1500&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.dedicated_interconnect;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;" vertex="1" parent="1"><mxGeometry x="470" y="524.7" width="46" height="40.75" as="geometry"/></mxCell>
<mxCell id="c12" style="edgeStyle=none;html=1;rounded=0;strokeColor=#5A6C86;strokeWidth=3;dashed=0;startArrow=block;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="rB0" target="aB0"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="c13" style="edgeStyle=none;html=1;rounded=0;strokeColor=#4285F4;strokeWidth=2;dashed=0;startArrow=block;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="aB0" target="crB"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="720" y="545"/><mxPoint x="720" y="605"/></Array></mxGeometry></mxCell>
<mxCell id="rB1" value='&lt;b&gt;edge router B2&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;ASN 65010&lt;/font&gt;' style="sketch=0;points=[];outlineConnect=0;fontColor=#232F3E;fillColor=#5A6C86;strokeColor=#ffffff;dashed=0;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.router;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="100" y="643" width="44" height="44" as="geometry"/></mxCell>
<mxCell id="aB1" value='&lt;b&gt;VLAN attachment&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;edge domain 2 · 10G · MTU 1500&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.dedicated_interconnect;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;" vertex="1" parent="1"><mxGeometry x="470" y="644.7" width="46" height="40.75" as="geometry"/></mxCell>
<mxCell id="c14" style="edgeStyle=none;html=1;rounded=0;strokeColor=#5A6C86;strokeWidth=3;dashed=0;startArrow=block;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="rB1" target="aB1"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="c15" style="edgeStyle=none;html=1;rounded=0;strokeColor=#4285F4;strokeWidth=2;dashed=0;startArrow=block;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="aB1" target="crB"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="720" y="665"/><mxPoint x="720" y="605"/></Array></mxGeometry></mxCell>
<mxCell id="c16" value="&lt;b&gt;Branch / DR site&lt;/b&gt;" style="points=[];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_corporate_data_center;strokeColor=#7D8998;fillColor=#F7F8FA;verticalAlign=top;align=left;spacingLeft=30;fontColor=#5A6C86;dashed=0;" vertex="1" parent="1"><mxGeometry x="20" y="800" width="270" height="140" as="geometry"/></mxCell>
<mxCell id="vpndev" value='&lt;b&gt;VPN device&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;public IP&lt;/font&gt;' style="sketch=0;points=[];outlineConnect=0;fontColor=#232F3E;fillColor=#5A6C86;strokeColor=#ffffff;dashed=0;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.router;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="100" y="845" width="44" height="44" as="geometry"/></mxCell>
<mxCell id="havpn" value='&lt;b&gt;HA VPN  ·  2 tunnels, BGP&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;advertised priority 10000&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.cloud_vpn;labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;" vertex="1" parent="1"><mxGeometry x="470" y="846.7" width="46" height="40.75" as="geometry"/></mxCell>
<mxCell id="c17" style="edgeStyle=none;html=1;rounded=0;strokeColor=#E8710A;strokeWidth=2;dashed=1;startArrow=block;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="vpndev" target="havpn"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="c18" style="edgeStyle=none;html=1;rounded=0;strokeColor=#E8710A;strokeWidth=2;dashed=1;startArrow=none;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="havpn" target="crA"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="930" y="867"/><mxPoint x="930" y="255"/></Array></mxGeometry></mxCell>
<mxCell id="c19" value="backup over the internet" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=10;fontColor=#E8710A;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="300" y="878" width="160" height="16" as="geometry"/></mxCell>
<mxCell id="hub" value="&lt;b&gt;NCC hub&lt;/b&gt;" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.cloud_network;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="1030" y="455" width="56" height="49.61" as="geometry"/></mxCell>
<mxCell id="c20" style="edgeStyle=none;html=1;rounded=0;strokeColor=#4285F4;strokeWidth=2;dashed=0;startArrow=block;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=1;exitY=0.53;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="rvpc" target="hub"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="sp" value='&lt;b&gt;VPC spokes learn on-prem routes&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;through dynamic route exchange&lt;/font&gt;' style="rounded=1;absoluteArcSize=1;arcSize=6;html=1;whiteSpace=wrap;strokeColor=#9AA0A6;fillColor=#F8F9FA;strokeWidth=1;dashed=0;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=8;spacingTop=-2;" vertex="1" parent="1"><mxGeometry x="1150" y="400" width="330" height="190" as="geometry"/></mxCell>
<mxCell id="c22" value="prod, non-prod, dev, data:&lt;br&gt;10.0.0.0/12 via hybrid spokes&lt;br&gt;region-wide or global, per the&lt;br&gt;routing VPC dynamic routing mode" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=11;fontColor=#3C4043;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="1165" y="455" width="310" height="62" as="geometry"/></mxCell>
<mxCell id="c23" style="edgeStyle=none;html=1;rounded=0;strokeColor=#4285F4;strokeWidth=2;dashed=0;startArrow=none;startFill=1;endArrow=block;endFill=1;endSize=4;startSize=4;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="hub" target="sp"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="c24" value="&lt;b&gt;BGP policy on every Cloud Router&lt;/b&gt;" style="rounded=1;absoluteArcSize=1;arcSize=6;html=1;whiteSpace=wrap;strokeColor=#9AA0A6;fillColor=#F8F9FA;strokeWidth=1;dashed=0;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=8;spacingTop=-2;" vertex="1" parent="1"><mxGeometry x="1030" y="60" width="450" height="310" as="geometry"/></mxCell>
<mxCell id="c25" value="Advertise (custom mode, summaries only):&lt;br&gt;  10.32.0.0/11      every Google Cloud VPC&lt;br&gt;  35.199.192.0/19   Cloud DNS forwarding source&lt;br&gt;  199.36.153.8/30   private.googleapis.com&lt;br&gt;&lt;br&gt;Learn from on-prem: 10.0.0.0/12 only&lt;br&gt;(prefix filter on the on-prem side too)&lt;br&gt;&lt;br&gt;Prefer Interconnect: advertised priority (MED)&lt;br&gt;  100 on VLAN attachments, 10000 on HA VPN" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=11;fontColor=#3C4043;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="1045" y="100" width="430" height="152" as="geometry"/></mxCell>
<mxCell id="c26" value="&lt;b&gt;Why four attachments&lt;/b&gt;" style="rounded=1;absoluteArcSize=1;arcSize=6;html=1;whiteSpace=wrap;strokeColor=#9AA0A6;fillColor=#F8F9FA;strokeWidth=1;dashed=0;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=8;spacingTop=-2;" vertex="1" parent="1"><mxGeometry x="1030" y="630" width="450" height="310" as="geometry"/></mxCell>
<mxCell id="c27" value="99.99% needs two metros, two regions,&lt;br&gt;and two edge availability domains in each.&lt;br&gt;Lose one router, one attachment or a whole&lt;br&gt;metro, and BGP still has a path.&lt;br&gt;&lt;br&gt;Check after every change:&lt;br&gt;  gcloud compute routers get-status cr-ew2 \&lt;br&gt;    --region europe-west2&lt;br&gt;  (bestRoutes, BGP peer status per session)" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=11;fontColor=#3C4043;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="1045" y="670" width="430" height="137" as="geometry"/></mxCell></root></mxGraphModel></diagram>
</mxfile>
