digraph G { node [ shape=box ] rankdir=LR; label="Anycasting\nAll locations announce same IPs\nRouting based traffic shaping" internet [ label="The internet" shape=oval ] internet->upstreamrouter1 [ label="Forward traffic for A.B.C.D/24" ] internet->upstreamrouter2 [ label="Forward traffic for A.B.C.D/24" ] internet->upstreamrouter3 [ label="Forward traffic for A.B.C.D/24" ] subgraph cluster_pop1 { label="PoP 1" router1 [ label="Our router" ]; upstreamrouter1 [ label="Upstream router" ]; router1->upstreamrouter1 [ label="Announces A.B.C.D/24" ] } clients1 [ label="Client set 1" ] clients1->internet [ label="Access via Internet" ] clients1->router1 [ label="Using PoP 1\nGeographic location not guaranteed to be nearest" style=dashed ] subgraph cluster_pop2 { label="PoP 2" router2 [ label="Our router" ]; upstreamrouter2 [ label="Upstream router" ]; router2->upstreamrouter2 [ label="Announces A.B.C.D/24" ] } clients2 [ label="Client set 2" ] clients2->internet [ label="Access via Internet" ] clients2->router2 [ label="Using PoP 2\nGeographic location not guaranteed to be nearest" style=dashed ] subgraph cluster_pop3 { label="PoP 3" router3 [ label="Our router" ]; upstreamrouter3 [ label="Upstream router" ]; router3->upstreamrouter3 [ label="Announces A.B.C.D/24" ] } clients3 [ label="Client set 3" ] clients3->internet [ label="Access via Internet" ] clients3->router3 [ label="Using PoP 3\nGeographic location not guaranteed to be nearest" style=dashed ] }