Add cdn traffic routing/shaping information

This commit is contained in:
Nico Schottelius 2021-07-21 09:54:28 +02:00
parent d58e4eebc9
commit 5058891211
3 changed files with 119 additions and 0 deletions

44
cdn-anycast.dot Normal file
View File

@ -0,0 +1,44 @@
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 ]
}

44
cdn-geodns.dot Normal file
View File

@ -0,0 +1,44 @@
digraph G {
node [ shape=box ]
rankdir=LR;
label="GeoDNS\nAnswering DNS based on Source IP of the clients\nUsually different IPs per Pop"
geodns [ label="DNS server with GeoDNS policies enabled" shape=oval ]
subgraph cluster_pop1 {
label="Pop 1"
router1 [ label="Our router" ];
upstreamrouter1 [ label="Upstream router" ];
router1->upstreamrouter1 [ label="Announces A.B.1.D/24" ]
}
clients1 [ label="Client set 1" ]
clients1->geodns [ label="Q: Where is domain example.com?" ]
geodns->clients1 [ label="A: On an IP of Pop 1" ]
clients1->router1 [ label="Using Pop 1 via pop specific IPs" ]
subgraph cluster_pop2 {
label="Pop 2"
router2 [ label="Our router" ];
upstreamrouter2 [ label="Upstream router" ];
router2->upstreamrouter2 [ label="Announces A.B.2.D/24" ]
}
clients2 [ label="Client set 2" ]
clients2->geodns [ label="Q: Where is domain example.com?" ]
geodns->clients2 [ label="A: On an IP of Pop 2" ]
clients2->router2 [ label="Using Pop 2 via pop specific IPs" ]
subgraph cluster_pop3 {
label="Pop 3"
router3 [ label="Our router" ];
upstreamrouter3 [ label="Upstream router" ];
router3->upstreamrouter3 [ label="Announces A.B.3.D/24" ]
}
clients3 [ label="Client set 3" ]
clients3->geodns [ label="Q: Where is domain example.com?" ]
geodns->clients3 [ label="A: On an IP of Pop 3" ]
clients3->router3 [ label="Using Pop 3 via pop specific IPs" ]
}

31
cdn-geoip.dot Normal file
View File

@ -0,0 +1,31 @@
digraph G {
node [ shape=box ]
rankdir=LR;
label="GeoIP\nThe CDN decides what to do based on the source IP\nAn inside CDN decision"
clients1 [ label="Client set 1" ]
clients1->edgenode1 [ label="Access content served by CDN" ]
clients2 [ label="Client set 2" ]
clients2->edgenode2 [ label="Access content served by CDN" ]
clients3 [ label="Client set 3" ]
clients3->edgenode3 [ label="Access content served by CDN" ]
subgraph cluster_pop1 {
label="Any Pop"
edgenode1 [ label="Edge Node" ]
rules1 [ label="Tenant/Domain specific rules" shape=oval ]
edgenode1->rules1 [ label="Q: What to do with IP of client set 1?" ]
rules1->edgenode1 [ label="A: (f.i.) Display \"Not available in this country\"" ]
edgenode2 [ label="Edge Node" ]
edgenode2->rules1 [ label="Q: What to do with IP of client set 2?" ]
rules1->edgenode2 [ label="A: (f.i.) Display \"Server from a particular origin\"" ]
edgenode3 [ label="Edge Node" ]
edgenode3->rules1 [ label="Q: What to do with IP of client set 3?" ]
rules1->edgenode3 [ label="A: (f.i.) Display \"Server content as usual\"" ]
}
}