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