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\"" ] } }