digraph G { graph [bgcolor=black]; /* set background */ edge [color=white]; graph[page="8.5,11",size="7.5,7",ratio=fill,center=1]; node[style=filled,label=""]; subgraph ds3CTP { rank = same; node[shape=box,color=green]; ds3CTP_1_1; ds3CTP_1_2; ds3CTP_5_1; ds3CTP_5_2; } subgraph t3TTP { rank = same; node[shape=invtriangle,color=red]; t3TTP_1_1; t3TTP_5_2; } subgraph vc3TTP { rank = same; node[shape=invtriangle,color=red]; vc3TTP_1_2; vc3TTP_5_1; } subgraph fabric { rank = same; node[shape=hexagon,color=blue]; fabric_1_2; fabric_4_1; fabric_5_1; } subgraph xp { rank = same; node[shape=diamond,color=blue]; xp_1_2; xp_4_1; xp_5_1; } subgraph au3CTP { rank = same; node[shape=box,color=green]; au3CTP_1_2; au3CTP_4_1; au3CTP_4_2; au3CTP_5_1; } subgraph aug { rank = same; node[shape=invtrapezium,color=pink]; aug_1_2; aug_4_1; aug_4_2; aug_5_1; } subgraph protectionTTP { rank = same; node[shape=invtriangle,color=red]; prTTP_1_2; prTTP_4_1; prTTP_4_2; prTTP_5_1; } subgraph protectionGroup { rank = same; node[shape=hexagon,color=blue]; pg_1_2; pg_4_1; pg_4_2; pg_5_1; } subgraph protectionUnit { rank = same; node[shape=diamond,color=blue]; pu_1_2; pu_4_1; pu_4_2; pu_5_1; } subgraph protectionCTP { node[shape=box,color=green]; prCTP_1_2; prCTP_4_1; prCTP_4_2; prCTP_5_1; } subgraph msTTP { rank = same; node[shape=invtriangle,color=red]; msTTP_1_2; msTTP_4_1; msTTP_4_2; msTTP_5_1; } subgraph msCTP { rank = same; node[shape=box,color=green]; msCTP_1_2; msCTP_3_1; msCTP_3_2; msCTP_4_1; msCTP_4_2; msCTP_5_1; } subgraph rsTTP { rank = same; node[shape=invtriangle,color=red]; rsTTP_1_2; rsTTP_3_1; rsTTP_3_2; rsTTP_4_1; rsTTP_4_2; rsTTP_5_1; } subgraph rsCTP { rank = same; node[shape=box,color=green]; rsCTP_1_2; rsCTP_2_1; rsCTP_2_2; rsCTP_3_1; rsCTP_3_2; rsCTP_4_1; rsCTP_4_2; rsCTP_5_1; } subgraph spiTTP { rank = same; node[shape=invtriangle,color=red]; spiTTP_1_2; spiTTP_2_1; spiTTP_2_2; spiTTP_3_1; spiTTP_3_2; spiTTP_4_1; spiTTP_4_2; spiTTP_5_1; } subgraph me { rank = same; node[shape=box,peripheries=2]; me_1; me_2; me_3; me_4; me_5; } subgraph client_server { edge[style=dotted,dir=none,weight=100]; ds3CTP_1_1->t3TTP_1_1; ds3CTP_1_2->vc3TTP_1_2; au3CTP_1_2->aug_1_2->prTTP_1_2; prCTP_1_2->msTTP_1_2; msCTP_1_2->rsTTP_1_2; rsCTP_1_2->spiTTP_1_2; rsCTP_2_1->spiTTP_2_1; rsCTP_2_2->spiTTP_2_2; msCTP_3_1->rsTTP_3_1; rsCTP_3_1->spiTTP_3_1; msCTP_3_2->rsTTP_3_2; rsCTP_3_2->spiTTP_3_2; au3CTP_4_1->aug_4_1->prTTP_4_1; prCTP_4_1->msTTP_4_1; msCTP_4_1->rsTTP_4_1; rsCTP_4_1->spiTTP_4_1; au3CTP_4_2->aug_4_2->prTTP_4_2; prCTP_4_2->msTTP_4_2; msCTP_4_2->rsTTP_4_2; rsCTP_4_2->spiTTP_4_2; ds3CTP_5_1->vc3TTP_5_1; au3CTP_5_1->aug_5_1->prTTP_5_1; prCTP_5_1->msTTP_5_1; msCTP_5_1->rsTTP_5_1; rsCTP_5_1->spiTTP_5_1; ds3CTP_5_2->t3TTP_5_2; } subgraph trail { edge[style=dashed,dir=none]; vc3TTP_1_2->vc3TTP_5_1; prTTP_1_2->prTTP_4_1; prTTP_4_2->prTTP_5_1; msTTP_1_2->msTTP_4_1; msTTP_4_2->msTTP_5_1; rsTTP_1_2->rsTTP_3_1; rsTTP_3_2->rsTTP_4_1; rsTTP_4_2->rsTTP_5_1; spiTTP_1_2->spiTTP_2_1; spiTTP_2_2->spiTTP_3_1; spiTTP_3_2->spiTTP_4_1; spiTTP_4_2->spiTTP_5_1; } subgraph contain { pu_1_2->pg_1_2; pu_4_1->pg_4_1; pu_4_2->pg_4_2; pu_5_1->pg_5_1; xp_1_2->fabric_1_2; xp_4_1->fabric_4_1; xp_5_1->fabric_5_1; fabric_1_2->me_1; fabric_4_1->me_4; fabric_5_1->me_5; pg_1_2->me_1; pg_4_1->me_4; pg_4_2->me_4; pg_5_1->me_5; t3TTP_1_1->me_1; t3TTP_5_2->me_5; vc3TTP_1_2->me_1; vc3TTP_5_1->me_5; prTTP_1_2->me_1; prTTP_4_1->me_4; prTTP_4_2->me_4; prTTP_5_1->me_5; msTTP_1_2->me_1; msTTP_4_1->me_4; msTTP_4_2->me_4; msTTP_5_1->me_5; rsTTP_1_2->me_1; rsTTP_3_1->me_3; rsTTP_3_2->me_3; rsTTP_4_1->me_4; rsTTP_4_2->me_4; rsTTP_5_1->me_5; spiTTP_1_2->me_1; spiTTP_2_1->me_2; spiTTP_2_2->me_2; spiTTP_3_1->me_3; spiTTP_3_2->me_3; spiTTP_4_1->me_4; spiTTP_4_2->me_4; spiTTP_5_1->me_5; } subgraph connectedBy { vc3TTP_1_2->fabric_1_2; au3CTP_1_2->fabric_1_2; au3CTP_4_1->fabric_4_1; au3CTP_4_2->fabric_4_1; vc3TTP_5_1->fabric_5_1; au3CTP_5_1->fabric_5_1; prTTP_1_2->pg_1_2; prTTP_4_1->pg_4_1; prTTP_4_2->pg_4_2; prTTP_5_1->pg_5_1; prCTP_1_2->pg_1_2; prCTP_4_1->pg_4_1; prCTP_4_2->pg_4_2; prCTP_5_1->pg_5_1; } subgraph crossConnection { edge[style=dotted,dir=none]; vc3TTP_1_2->xp_1_2->au3CTP_1_2; prTTP_1_2->pu_1_2->prCTP_1_2; prTTP_4_1->pu_4_1->prCTP_4_1; au3CTP_4_1->xp_4_1->au3CTP_4_2; prTTP_4_2->pu_4_2->prCTP_4_2; prTTP_5_1->pu_5_1->prCTP_5_1; vc3TTP_5_1->xp_5_1->au3CTP_5_1; } subgraph bindingConnection { edge[style=bold,dir=none,weight=100]; ds3CTP_1_1->ds3CTP_1_2; vc3TTP_1_2->au3CTP_1_2; prTTP_1_2->prCTP_1_2; msTTP_1_2->msCTP_1_2; rsTTP_1_2->rsCTP_1_2; rsCTP_2_1->rsCTP_2_2; rsTTP_3_1->rsCTP_3_1; msCTP_3_1->msCTP_3_2; rsTTP_3_2->rsCTP_3_2; prTTP_4_1->prCTP_4_1; msTTP_4_1->msCTP_4_1; rsTTP_4_1->rsCTP_4_1; au3CTP_4_1->au3CTP_4_2; prTTP_4_2->prCTP_4_2; msTTP_4_2->msCTP_4_2; rsTTP_4_2->rsCTP_4_2; prTTP_5_1->prCTP_5_1; msTTP_5_1->msCTP_5_1; rsTTP_5_1->rsCTP_5_1; ds3CTP_5_1->ds3CTP_5_2; vc3TTP_5_1->au3CTP_5_1; } }